diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..5e7730a72 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,49 @@ +name: Build + +on: + push: + branches: + - develop + pull_request: + branches: + - master + - develop + - release/* + +env: + # Path to the solution file relative to the root of the project. + SOLUTION_FILE_PATH: ./SourceCode/AgOpenGPS.sln + + # Configuration type to build. + # You can convert this to a build matrix if you need coverage of multiple configuration types. + # https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + BUILD_CONFIGURATION: Release + +jobs: + build: + runs-on: windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Add MSBuild to PATH + uses: microsoft/setup-msbuild@v2 + + - name: Restore NuGet packages + run: nuget restore ${{env.SOLUTION_FILE_PATH}} -PackagesDirectory .\SourceCode\packages -source "https://api.nuget.org/v3/index.json" + + - name: Build + run: msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}} + + - name: Create AgOpenGPS.zip + shell: powershell + run: Compress-Archive -Path "AgOpenGPS" -Destination "AgOpenGPS.zip" + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: AgOpenGPS.zip + path: AgOpenGPS.zip diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 02b92d2b7..000000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,155 +0,0 @@ -name: Build and release - -on: - # Trigger the workflow on push or pull request, - # but only for the dev branch - push: - branches: - - master - # - feature/* - # - release/* - # - master - -env: - # Path to the solution file relative to the root of the project.https://github.com/farmerbriantee/AgOpenGPS/network/members - SOLUTION_FILE_PATH: ./SourceCode/AgOpenGPS.sln - - # Configuration type to build. - # You can convert this to a build matrix if you need coverage of multiple configuration types. - # https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix - BUILD_CONFIGURATION: Release - -jobs: - build: - runs-on: windows-latest - - steps: - - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v0.9.9 - with: - versionSpec: '6.x' - - - name: Install 7Zip PowerShell Module - shell: powershell - run: Install-Module 7Zip4PowerShell -Force - - - name: Checkout - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - - name: Determine Version - id: gitversion - uses: gittools/actions/gitversion/execute@v0.9.9 - - - name: Display GitVersion outputs - run: | - echo "Major: ${{ steps.gitversion.outputs.major }}" - echo "Minor: ${{ steps.gitversion.outputs.minor }}" - echo "Patch: ${{ steps.gitversion.outputs.patch }}" - echo "PreReleaseTag: ${{ steps.gitversion.outputs.preReleaseTag }}" - echo "PreReleaseTagWithDash: ${{ steps.gitversion.outputs.preReleaseTagWithDash }}" - echo "PreReleaseLabel: ${{ steps.gitversion.outputs.preReleaseLabel }}" - echo "PreReleaseNumber: ${{ steps.gitversion.outputs.preReleaseNumber }}" - echo "WeightedPreReleaseNumber: ${{ steps.gitversion.outputs.weightedPreReleaseNumber }}" - echo "BuildMetaData: ${{ steps.gitversion.outputs.buildMetaData }}" - echo "BuildMetaDataPadded: ${{ steps.gitversion.outputs.buildMetaDataPadded }}" - echo "FullBuildMetaData: ${{ steps.gitversion.outputs.fullBuildMetaData }}" - echo "MajorMinorPatch: ${{ steps.gitversion.outputs.majorMinorPatch }}" - echo "SemVer: ${{ steps.gitversion.outputs.semVer }}" - echo "LegacySemVer: ${{ steps.gitversion.outputs.legacySemVer }}" - echo "LegacySemVerPadded: ${{ steps.gitversion.outputs.legacySemVerPadded }}" - echo "AssemblySemVer: ${{ steps.gitversion.outputs.assemblySemVer }}" - echo "AssemblySemFileVer: ${{ steps.gitversion.outputs.assemblySemFileVer }}" - echo "FullSemVer: ${{ steps.gitversion.outputs.fullSemVer }}" - echo "InformationalVersion: ${{ steps.gitversion.outputs.informationalVersion }}" - echo "BranchName: ${{ steps.gitversion.outputs.branchName }}" - echo "EscapedBranchName: ${{ steps.gitversion.outputs.escapedBranchName }}" - echo "Sha: ${{ steps.gitversion.outputs.sha }}" - echo "ShortSha: ${{ steps.gitversion.outputs.shortSha }}" - echo "NuGetVersionV2: ${{ steps.gitversion.outputs.nuGetVersionV2 }}" - echo "NuGetVersion: ${{ steps.gitversion.outputs.nuGetVersion }}" - echo "NuGetPreReleaseTagV2: ${{ steps.gitversion.outputs.nuGetPreReleaseTagV2 }}" - echo "NuGetPreReleaseTag: ${{ steps.gitversion.outputs.nuGetPreReleaseTag }}" - echo "VersionSourceSha: ${{ steps.gitversion.outputs.versionSourceSha }}" - echo "CommitsSinceVersionSource: ${{ steps.gitversion.outputs.commitsSinceVersionSource }}" - echo "CommitsSinceVersionSourcePadded: ${{ steps.gitversion.outputs.commitsSinceVersionSourcePadded }}" - echo "UncommittedChanges: ${{ steps.gitversion.outputs.uncommittedChanges }}" - echo "CommitDate: ${{ steps.gitversion.outputs.commitDate }}" - - - # - uses: paulhatch/semantic-version@v4.0.1 - # id: versioning - # with: - # # The prefix to use to identify tags - # tag_prefix: "v" - # # A string which, if present in a git commit, indicates that a change represents a - # # major (breaking) change, supports regular expressions wrapped with '/' - # major_pattern: "(MAJOR)" - # # Same as above except indicating a minor change, supports regular expressions wrapped with '/' - # minor_pattern: "(MINOR)" - # # A string to determine the format of the version output - # format: "v${major}.${minor}.${patch}-prerelease.${increment}" - # # Optional path to check for changes. If any changes are detected in the path the - # # 'changed' output will true. Enter multiple paths separated by spaces. - # change_path: "./SourceCode" - # # Named version, will be used as suffix for name version tag - # #namespace: project-b - # # Indicate whether short tags like 'v1' should be supported. If false only full - # # tags like 'v1.0.0' will be recognized. - # short_tags: false - # # If this is set to true, *every* commit will be treated as a new version. - # bump_each_commit: false - - # - name: Update AssemblyVersion and AssemblyFileVersion - # run: ./SetVersion.ps1 "${{ steps.versioning.outputs.major }}.${{ steps.versioning.outputs.minor }}.${{ steps.versioning.outputs.patch }}.${{ steps.versioning.outputs.increment }}" - # shell: powershell - - - name: Update AssemblyVersion and AssemblyFileVersion - run: ./SetVersion.ps1 "${{ steps.gitversion.outputs.SemVer }}" - shell: powershell - - - name: Add MSBuild to PATH - uses: microsoft/setup-msbuild@v1 - - - name: Restore NuGet packages - working-directory: ${{env.GITHUB_WORKSPACE}} - run: nuget restore ${{env.SOLUTION_FILE_PATH}} -PackagesDirectory .\SourceCode\packages -source "https://api.nuget.org/v3/index.json" - - - name: Build - working-directory: ${{env.GITHUB_WORKSPACE}} - # Add additional options to the MSBuild command line here (like platform or verbosity level). - # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference - run: msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}} - - - name: Directory Listing - shell: cmd - run: dir - - - name: Build Artifact AgOpenGPS - shell: powershell - run: Compress-7Zip "AgOpenGPS_v64" -ArchiveFileName "AgOpenGPS_v64.zip" -Format Zip - - - name: Create Release - id: create_release - uses: actions/create-release@latest - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ steps.gitversion.outputs.semVer }} ## Was: ${{ steps.versioning.outputs.version }} - release_name: Release ${{ steps.gitversion.outputs.semVer }} # Was: ${{ steps.versioning.outputs.version }} - body: | - Automated Release by GitHub Action CI - draft: false - prerelease: true - - - name: Upload Release Asset AgOpenGPS - id: upload-release-asset-agopengps - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./AgOpenGPS_v64.zip - asset_name: AgOpenGPS_v64.zip - asset_content_type: application/zip diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..dd0b8fb88 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,63 @@ +name: Build and release + +on: + push: + branches: + - master + - release/* + workflow_dispatch: + +env: + # Path to the solution file relative to the root of the project. + SOLUTION_FILE_PATH: ./SourceCode/AgOpenGPS.sln + + # Configuration type to build. + # You can convert this to a build matrix if you need coverage of multiple configuration types. + # https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + BUILD_CONFIGURATION: Release + +jobs: + build-and-release: + runs-on: windows-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Add MSBuild to PATH + uses: microsoft/setup-msbuild@v2 + + - name: Restore NuGet packages + run: nuget restore ${{env.SOLUTION_FILE_PATH}} -PackagesDirectory .\SourceCode\packages -source "https://api.nuget.org/v3/index.json" + + - name: Build + run: msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}} + + - name: Create AgOpenGPS.zip + shell: powershell + run: Compress-Archive -Path "AgOpenGPS" -Destination "AgOpenGPS.zip" + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ env.GitVersion_SemVer }} + release_name: Release ${{ env.GitVersion_SemVer }} + body: | + Automated Release by GitHub Action CI + draft: false + prerelease: ${{ contains(github.ref_name, 'release/') }} + + - name: Upload Release Asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./AgOpenGPS.zip + asset_name: AgOpenGPS.zip + asset_content_type: application/zip diff --git a/.gitignore b/.gitignore index d49a97e82..df66a0413 100644 --- a/.gitignore +++ b/.gitignore @@ -30,9 +30,7 @@ bld/ [Oo]bj/ [Ll]og/ [Ll]ogs/ -AgOpenGPS_v5/ -AgOpenGPS_v63/ -AgOpenGPS_v64/ +/AgOpenGPS/ # Visual Studio 2015/2017 cache/options directory .vs/ diff --git a/README.md b/README.md index 6edf99937..fc11f45cb 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,14 @@ +# AgOpenGPS - Guidance software -# AgOpenGPS **** Guidance software - -Most [Stable AgOpenGPS Release](https://github.com/farmerbriantee/AgOpenGPS/releases) - -[AgOpenGPS Wiki](https://github.com/farmerbriantee/AgOpenGPS/wiki) - -Discussed in detail on the [AgOpengGPS Forum](https://discourse.agopengps.com/) - - -The [PCB and Firmware Repository](https://github.com/AgHardware) - -The [SK21 Rate Control Repository is here](https://github.com/AgHardware) - -The [Ag Hardware Wiki](https://github.com/AgHardware/Boards/wiki) +[![GitHub Release](https://img.shields.io/github/v/release/farmerbriantee/AgOpenGPS)](https://github.com/farmerbriantee/AgOpenGPS/releases/latest) Ag Precision Mapping and Section Control Software AgOpenGPS is 2 programs. AgIO is the communication hub to the outside world and AgOpenGPS is the -application. You can run either and within each, you can run the other. +application. You can run either and within each, you can run the other. You only need to run AgOpenGPS if you are using the simulator. -To install click on the "Most Stable Release" link above and download the AgOpenGPS_v5.zip. -Unzip or extract the contents to a folder (folder accessible by user not the root of C:\) -Even on your desktop, and run AgOpenGPS.exe - The software reads NMEA strings for the purpose of recording and mapping position information for Agricultural use. Also it has up to 16 sections of Section Control that can have unique widths or up to 64 same width sections to control implements application of product preventing @@ -38,7 +22,34 @@ Included in this repository is an application, and source folders. See the PCB repo for PCB layouts, firmware for steering and rate control, machine control, GPS and simulator. -*** Important **** +## Installation + +1. Download the [Most Stable AgOpenGPS Release](https://github.com/farmerbriantee/AgOpenGPS/releases) +2. Unzip or extract the contents to a folder (folder accessible by user not the root of C:\\) +Even on your desktop +3. Run AgOpenGPS.exe + +## Contributing + +The `master` branch contains the most stable version of AgOpenGPS, while the `develop` branch +is actively being worked on and may not be ready for production use. + +In order to contribute to AgOpenGPS, follow these steps: + +1. Checkout the `develop` branch +2. Create a new branch named after your feature +3. Make your changes and commit to this branch +4. Create a PR targeting the `develop` branch + +## Links + +- [AgOpenGPS Wiki](https://github.com/farmerbriantee/AgOpenGPS/wiki) +- [AgOpenGPS Forum](https://discourse.agopengps.com/) +- [PCB and Firmware Repository](https://github.com/AgHardware/Boards) +- [SK21 Rate Control Repository](https://github.com/AgHardware/Rate_Control) +- [AgHardware Wiki](https://github.com/AgHardware/Boards/wiki) + +## License If you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same @@ -49,4 +60,3 @@ know their rights as Outlined in the GPLv3 License. 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 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. - diff --git a/SetVersion.ps1 b/SetVersion.ps1 deleted file mode 100644 index 20fe4c6ac..000000000 --- a/SetVersion.ps1 +++ /dev/null @@ -1,73 +0,0 @@ -# from http://blogs.msdn.com/b/dotnetinterop/archive/2008/04/21/powershell-script-to-batch-update-assemblyinfo-cs-with-new-version.aspx -# -# SetVersion.ps1 -# -# Set the version in all the AssemblyInfo.cs or AssemblyInfo.vb files in any subdirectory. -# -# usage: -# from cmd.exe: -# powershell.exe SetVersion.ps1 2.8.3.0 -# -# from powershell.exe prompt: -# .\SetVersion.ps1 2.8.3.0 -# -# last saved Time-stamp: -# - - -function Usage -{ - echo "Usage: "; - echo " from cmd.exe: "; - echo " powershell.exe SetVersion.ps1 2.8.3.0"; - echo " "; - echo " from powershell.exe prompt: "; - echo " .\SetVersion.ps1 2.8.3.0"; - echo " "; -} - - -function Update-SourceVersion -{ - Param ([string]$Version) - $NewVersion = 'AssemblyVersion("' + $Version + '")'; - $NewFileVersion = 'AssemblyFileVersion("' + $Version + '")'; - - foreach ($o in $input) - { - Write-output $o.FullName - $TmpFile = $o.FullName + ".tmp" - - Get-Content $o.FullName -encoding utf8 | - %{$_ -replace 'AssemblyVersion\("[0-9]+(\.([0-9]+|\*)){1,3}"\)', $NewVersion } | - %{$_ -replace 'AssemblyFileVersion\("[0-9]+(\.([0-9]+|\*)){1,3}"\)', $NewFileVersion } | - Set-Content $TmpFile -encoding utf8 - - move-item $TmpFile $o.FullName -force - } -} - - -function Update-AllAssemblyInfoFiles ( $version ) -{ - foreach ($file in "AssemblyInfo.cs", "AssemblyInfo.vb" ) - { - get-childitem -recurse |? {$_.Name -eq $file} | Update-SourceVersion $version ; - } -} - - -# validate arguments -$r= [System.Text.RegularExpressions.Regex]::Match($args[0], "^[0-9]+(\.[0-9]+){1,3}$"); - -if ($r.Success) -{ - Update-AllAssemblyInfoFiles $args[0]; -} -else -{ - echo " "; - echo "Bad Input!" - echo " "; - Usage ; -} \ No newline at end of file diff --git a/SourceCode/AgIO/Source/AgIO.csproj b/SourceCode/AgIO/Source/AgIO.csproj index 2137fdf30..8947cde83 100644 --- a/SourceCode/AgIO/Source/AgIO.csproj +++ b/SourceCode/AgIO/Source/AgIO.csproj @@ -27,13 +27,15 @@ false false true + false + AnyCPU true full false - ..\..\..\AgOpenGPS_v64\ + ..\..\..\AgOpenGPS\ DEBUG;TRACE prompt 4 @@ -42,7 +44,7 @@ AnyCPU none true - ..\..\..\AgOpenGPS_v64\ + ..\..\..\AgOpenGPS\ TRACE prompt 4 @@ -69,20 +71,15 @@ + - + Form - - FormCommPicker.cs - - - Form - - - FormCommSaver.cs + + FormProfiles.cs Form @@ -90,6 +87,12 @@ FormCommSetGPS.cs + + Form + + + FormEventViewer.cs + Form @@ -197,18 +200,17 @@ - - FormCommPicker.cs - Designer - - - FormCommSaver.cs + + FormProfiles.cs Designer FormCommSetGPS.cs Designer + + FormEventViewer.cs + FormSerialMonitor.cs @@ -269,6 +271,7 @@ Designer Resources.Designer.cs + SettingsSingleFileGenerator Settings.Designer.cs @@ -332,6 +335,9 @@ + + + @@ -398,4 +404,13 @@ + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + \ No newline at end of file diff --git a/SourceCode/AgIO/Source/App.config b/SourceCode/AgIO/Source/App.config index 5140fc436..9ae210a5c 100644 --- a/SourceCode/AgIO/Source/App.config +++ b/SourceCode/AgIO/Source/App.config @@ -88,21 +88,12 @@ 0 - - en - - - Default - 0 0 - - - GPS2 diff --git a/SourceCode/AgIO/Source/Classes/CLog.cs b/SourceCode/AgIO/Source/Classes/CLog.cs new file mode 100644 index 000000000..2abba1a02 --- /dev/null +++ b/SourceCode/AgIO/Source/Classes/CLog.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AgIO +{ + public static class Log + { + public static StringBuilder sbEvent = new StringBuilder(); + + public static void EventWriter(string message) + { + sbEvent.Append(DateTime.Now.ToString("T")); + sbEvent.Append("-> "); + sbEvent.Append(message); + sbEvent.Append("\r"); + } + + public static void CheckLogSize(string logFile, int sizeLimit) + { + //system event log file + FileInfo txtfile = new FileInfo(logFile); + if (txtfile.Exists) + { + if (txtfile.Length > (sizeLimit)) // ## NOTE: 0.5MB max file size + { + StringBuilder sbF = new StringBuilder(); + long bytes = txtfile.Length - sizeLimit; + bytes = (sizeLimit * 2) / 10 + bytes; + Log.EventWriter("Log File Reduced by: " + bytes.ToString()); + + //create some extra space + int bytesSoFar = 0; + + using (StreamReader reader = new StreamReader(logFile)) + { + try + { + //Date time line + while (!reader.EndOfStream) + { + bytesSoFar += reader.ReadLine().Length; + if (bytesSoFar > bytes) + break; + } + + while (!reader.EndOfStream) + { + sbF.AppendLine(reader.ReadLine()); + } + } + catch { } + } + + using (StreamWriter writer = new StreamWriter(logFile)) + { + writer.WriteLine(sbF); + } + } + } + } + + } +} diff --git a/SourceCode/AgIO/Source/Classes/CSettings.cs b/SourceCode/AgIO/Source/Classes/CSettings.cs index 0fcfda858..77cd4b2b5 100644 --- a/SourceCode/AgIO/Source/Classes/CSettings.cs +++ b/SourceCode/AgIO/Source/Classes/CSettings.cs @@ -1,7 +1,10 @@ -using System; +using AgIO.Properties; +using Microsoft.Win32; +using System; using System.Configuration; using System.IO; using System.Linq; +using System.Threading; using System.Xml.Linq; using System.Xml.XPath; @@ -39,11 +42,12 @@ internal static void ImportSettings(string settingsFilePath) Properties.Settings.Default.Reload(); } } - catch (Exception) // Should make this more specific + catch (Exception ex) // Should make this more specific { // Could not import settings. { Properties.Settings.Default.Reload(); + Log.EventWriter("Catch -> Failed to Import Settings: " + ex.ToString()); } } } @@ -57,4 +61,190 @@ internal static void ExportSettings(string settingsFilePath) config.SaveAs(settingsFilePath); } } + + public static class RegistrySettings + { + public static string culture = "en"; + public static string profileDirectory = + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "AgOpenGPS", "AgIO"); + public static string logsDirectory = + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "AgOpenGPS", "Logs"); + public static string profileName = "Default Profile"; + + public static void Load() + { + try + { + try + { + //create Logs directory if not exist + if (!string.IsNullOrEmpty(logsDirectory) && !Directory.Exists(logsDirectory)) + { + Directory.CreateDirectory(logsDirectory); + Log.EventWriter("Logs Dir Created\r"); + } + } + catch (Exception ex) + { + Log.EventWriter("Catch, Serious Problem Making Logs Directory: " + ex.ToString()); + } + + //keep below 500 kb + Log.CheckLogSize(Path.Combine(logsDirectory, "AgIO_Events_Log.txt"), 1000000); + + try + { + //create Logs directory if not exist + if (!string.IsNullOrEmpty(profileDirectory) && !Directory.Exists(profileDirectory)) + { + Directory.CreateDirectory(profileDirectory); + Log.EventWriter("Profile Dir Created\r"); + } + } + catch (Exception ex) + { + Log.EventWriter("Catch, Serious Problem Making Profile Directory: " + ex.ToString()); + } + + //opening the subkey + RegistryKey regKey = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\AgIO"); + + //create default keys if not existing + if (regKey == null) + { + RegistryKey Key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\AgIO"); + + //storing the values + Key.SetValue("Language", "en"); + Key.SetValue("ProfileName", "Default Profile"); + Key.Close(); + Log.EventWriter("Registry -> SubKey AgIO and Keys Created\r"); + } + else + { + try + { + //Profile File Name from Registry Key + if (regKey.GetValue("ProfileName") == null || regKey.GetValue("ProfileName").ToString() == null) + { + RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\AgIO"); + key.SetValue("ProfileName", "Default Profile"); + Log.EventWriter("Registry -> Key Profile Name was null and Created"); + } + else + { + //Culture from Registry Key + if (regKey.GetValue("AgOne_Culture") == null || regKey.GetValue("Language").ToString() == "") + { + RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\AgIO"); + key.SetValue("Language", "en"); + Log.EventWriter("Registry -> Culture was null and Created"); + } + else + { + culture = regKey.GetValue("Language").ToString(); + } + + profileName = regKey.GetValue("ProfileName").ToString(); + + //get the Documents directory, if not exist, create + profileDirectory = + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "AgOpenGPS", "AgIO"); + + if (!string.IsNullOrEmpty(profileDirectory) && !Directory.Exists(profileDirectory)) + { + Directory.CreateDirectory(profileDirectory); + } + + //what's in the vehicle directory + DirectoryInfo dinfo = new DirectoryInfo(RegistrySettings.profileDirectory); + FileInfo[] vehicleFiles = dinfo.GetFiles("*.xml"); + + bool isProfileExist = false; + + foreach (FileInfo file in vehicleFiles) + { + string temp = Path.GetFileNameWithoutExtension(file.Name).Trim(); + + if (temp == profileName) + { + isProfileExist = true; + } + } + + //does current vehicle exist? + if (isProfileExist && profileName != "Default Profile") + { + SettingsIO.ImportSettings(Path.Combine(profileDirectory, profileName + ".XML")); + Log.EventWriter("Registry -> " + profileName + ".XML Profile Loaded"); + } + else + { + Log.EventWriter("Registry -> " + profileName + ".XML Profile does not exist. Called in Program.cs"); + profileName = "Default Profile"; + Save(); + } + } + } + catch (Exception ex) + { + Log.EventWriter("Registry -> Catch, Serious Problem Loading Profile, Doing Registry Reset: " + ex.ToString()); + Reset(); + + //reset to Default Profile and save + Settings.Default.Reset(); + Settings.Default.Save(); + } + regKey.Close(); + } + } + catch (Exception ex) + { + Log.EventWriter("Registry -> Catch, Serious Problem Creating Registry keys: " + ex.ToString()); + Reset(); + } + } + + public static void Save() + { + Properties.Settings.Default.Save(); + + RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\AgIO"); + try + { + key.SetValue("ProfileName", profileName); + Log.EventWriter(profileName + " Saved to registry key"); + } + catch (Exception ex) + { + Log.EventWriter("Registry -> Catch, Serious Problem Saving keys: " + ex.ToString()); + } + key.Close(); + + if (RegistrySettings.profileName != "Default Profile") + { + Thread.Sleep(500); + SettingsIO.ExportSettings(Path.Combine(RegistrySettings.profileDirectory, RegistrySettings.profileName + ".xml")); + } + } + + + public static void Reset() + { + Registry.CurrentUser.DeleteSubKeyTree(@"SOFTWARE\AgIO"); + + RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\AgIO"); + try + { + key.SetValue("ProfileName", "Default Profile"); + key.SetValue("Language", "en"); + Log.EventWriter("Registry -> Resetting Registry keys"); + } + catch (Exception ex) + { + Log.EventWriter("\"Registry -> Catch, Serious Problem Resetting Registry keys: " + ex.ToString()); + } + key.Close(); + } + } } \ No newline at end of file diff --git a/SourceCode/AgIO/Source/Forms/Controls.Designer.cs b/SourceCode/AgIO/Source/Forms/Controls.Designer.cs index 160d6f48c..e94f190a5 100644 --- a/SourceCode/AgIO/Source/Forms/Controls.Designer.cs +++ b/SourceCode/AgIO/Source/Forms/Controls.Designer.cs @@ -117,6 +117,11 @@ private void btnBringUpCommSettings_Click(object sender, EventArgs e) private void btnUDP_Click(object sender, EventArgs e) { + if (RegistrySettings.profileName == "Default Profile") + { + TimedMessageBox(3000, "Using Default Profile", "Choose Existing or Create New Profile"); + return; + } if (!Settings.Default.setUDP_isOn) SettingsEthernet(); else SettingsUDP(); } @@ -128,6 +133,12 @@ private void btnRunAOG_Click(object sender, EventArgs e) private void btnNTRIP_Click(object sender, EventArgs e) { + if (RegistrySettings.profileName == "Default Profile") + { + TimedMessageBox(3000, "Using Default Profile", "Choose Existing or Create New Profile"); + return; + } + SettingsNTRIP(); } @@ -138,6 +149,12 @@ private void btnExit_Click(object sender, EventArgs e) private void btnRadio_Click(object sender, EventArgs e) { + if (RegistrySettings.profileName == "Default Profile") + { + TimedMessageBox(3000, "Using Default Profile", "Choose Existing or Create New Profile"); + return; + } + SettingsRadio(); } @@ -198,6 +215,14 @@ private void cboxIsIMUModule_Click(object sender, EventArgs e) #endregion #region Menu Strip Items + + private void toolStripLogViewer_Click(object sender, EventArgs e) + { + Form form = new FormEventViewer(Path.Combine(RegistrySettings.logsDirectory, "AgIO_Events_Log.txt")); + form.Show(this); + this.Activate(); + } + private void toolStripUDPMonitor_Click(object sender, EventArgs e) { ShowUDPMonitor(); @@ -215,6 +240,12 @@ private void deviceManagerToolStripMenuItem_Click(object sender, EventArgs e) private void serialPassThroughToolStripMenuItem_Click(object sender, EventArgs e) { + if (RegistrySettings.profileName == "Default Profile") + { + TimedMessageBox(3000, "Using Default Profile", "Choose Existing or Create New Profile"); + return; + } + if (isRadio_RequiredOn) { TimedMessageBox(2000, "Radio NTRIP ON", "Turn it off before using Serial Pass Thru"); @@ -238,27 +269,27 @@ private void serialPassThroughToolStripMenuItem_Click(object sender, EventArgs e } } - private void toolStripMenuItem1_Click(object sender, EventArgs e) + private void toolStripMenuProfiles_Click(object sender, EventArgs e) { - //Save curent Settngs - using (var form = new FormCommSaver(this)) + if (RegistrySettings.profileName == "Default Profile") { - form.ShowDialog(this); + TimedMessageBox(3000, "AgIO Default Profile Used", "Create or Choose a Profile"); } - } - private void toolStripMenuItem2_Click(object sender, EventArgs e) - { - //Load new settings - using (var form = new FormCommPicker(this)) + using (var form = new FormProfiles(this)) { form.ShowDialog(this); - if (form.DialogResult == DialogResult.OK) + if (form.DialogResult == DialogResult.Yes) { + Log.EventWriter("Program Reset: Saving or Selecting Profile"); + + RegistrySettings.Save(); Application.Restart(); Environment.Exit(0); } } + this.Text = "AgIO v" + GitVersionInformation.MajorMinorPatch + " Using Profile: " + + RegistrySettings.profileName; } private void modSimToolStrip_Click(object sender, EventArgs e) @@ -267,9 +298,7 @@ private void modSimToolStrip_Click(object sender, EventArgs e) if (processName.Length == 0) { //Start application here - DirectoryInfo di = new DirectoryInfo(Application.StartupPath); - string strPath = di.ToString(); - strPath += "\\ModSim.exe"; + string strPath = Path.Combine(Application.StartupPath, "ModSim.exe"); try { @@ -281,6 +310,7 @@ private void modSimToolStrip_Click(object sender, EventArgs e) catch { TimedMessageBox(2000, "No File Found", "Can't Find Simulator"); + Log.EventWriter("Catch -> Failed to load ModSim - Not Found"); } } else @@ -417,9 +447,7 @@ private void StartAOG() if (processName.Length == 0) { //Start application here - DirectoryInfo di = new DirectoryInfo(Application.StartupPath); - string strPath = di.ToString(); - strPath += "\\AgOpenGPS.exe"; + string strPath = Path.Combine(Application.StartupPath, "AgOpenGPS.exe"); try { @@ -431,6 +459,7 @@ private void StartAOG() catch { TimedMessageBox(2000, "No File Found", "Can't Find AgOpenGPS"); + Log.EventWriter("Can't Find AgOpenGPS - File Not Found"); } } else @@ -447,9 +476,7 @@ private void StartGPS_Out() if (processName.Length == 0) { //Start application here - DirectoryInfo di = new DirectoryInfo(Application.StartupPath); - string strPath = di.ToString(); - strPath += "\\GPS_Out.exe"; + string strPath = Path.Combine(Application.StartupPath, "GPS_Out.exe"); try { @@ -461,6 +488,7 @@ private void StartGPS_Out() catch { TimedMessageBox(2000, "No File Found", "Can't Find GPS_Out"); + Log.EventWriter("No File Found, Can't Find GPS_Out"); } } else @@ -499,8 +527,7 @@ public void KeyboardToText(TextBox sender, Form owner) } private ToolStripDropDownButton toolStripDropDownButton1; - private ToolStripMenuItem toolStripMenuItem1; - private ToolStripMenuItem toolStripMenuItem2; + private ToolStripMenuItem toolStripMenuProfiles; private ToolStripMenuItem deviceManagerToolStripMenuItem; } } diff --git a/SourceCode/AgIO/Source/Forms/FormCommPicker.cs b/SourceCode/AgIO/Source/Forms/FormCommPicker.cs deleted file mode 100644 index 0bf3d51e5..000000000 --- a/SourceCode/AgIO/Source/Forms/FormCommPicker.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using System.IO; -using System.Windows.Forms; - -namespace AgIO -{ - public partial class FormCommPicker : Form - { - //class variables - private readonly FormLoop mf = null; - - public FormCommPicker(Form callingForm) - { - //get copy of the calling main form - mf = callingForm as FormLoop; - InitializeComponent(); - } - - private void FormCommPicker_Load(object sender, EventArgs e) - { - DirectoryInfo dinfo = new DirectoryInfo(mf.commDirectory); - FileInfo[] Files = dinfo.GetFiles("*.xml"); - if (Files.Length == 0) - { - DialogResult = DialogResult.Ignore; - Close(); - FormTimedMessage form = new FormTimedMessage(2000, "Non Saved", "Save one First"); - form.Show(); - } - else - { - foreach (FileInfo file in Files) - { - cboxEnv.Items.Add(Path.GetFileNameWithoutExtension(file.Name)); - } - } - } - - private void cboxVeh_SelectedIndexChanged(object sender, EventArgs e) - { - SettingsIO.ImportSettings(mf.commDirectory + cboxEnv.SelectedItem.ToString() + ".xml"); - - DialogResult = DialogResult.OK; - Close(); - } - } -} \ No newline at end of file diff --git a/SourceCode/AgIO/Source/Forms/FormCommPicker.designer.cs b/SourceCode/AgIO/Source/Forms/FormCommPicker.designer.cs deleted file mode 100644 index 06e43cc74..000000000 --- a/SourceCode/AgIO/Source/Forms/FormCommPicker.designer.cs +++ /dev/null @@ -1,101 +0,0 @@ -namespace AgIO -{ - partial class FormCommPicker - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.cboxEnv = new System.Windows.Forms.ComboBox(); - this.lblLast = new System.Windows.Forms.Label(); - this.btnSerialCancel = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // cboxEnv - // - this.cboxEnv.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.cboxEnv.Font = new System.Drawing.Font("Tahoma", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cboxEnv.FormattingEnabled = true; - this.cboxEnv.Location = new System.Drawing.Point(12, 42); - this.cboxEnv.Name = "cboxEnv"; - this.cboxEnv.Size = new System.Drawing.Size(538, 43); - this.cboxEnv.TabIndex = 212; - this.cboxEnv.SelectedIndexChanged += new System.EventHandler(this.cboxVeh_SelectedIndexChanged); - // - // lblLast - // - this.lblLast.AutoSize = true; - this.lblLast.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblLast.Location = new System.Drawing.Point(15, 9); - this.lblLast.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); - this.lblLast.Name = "lblLast"; - this.lblLast.Size = new System.Drawing.Size(260, 23); - this.lblLast.TabIndex = 213; - this.lblLast.Text = "Choose AgIO Settings File"; - this.lblLast.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // btnSerialCancel - // - this.btnSerialCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnSerialCancel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.btnSerialCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnSerialCancel.FlatAppearance.BorderSize = 0; - this.btnSerialCancel.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnSerialCancel.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnSerialCancel.Image = global::AgIO.Properties.Resources.Cancel64; - this.btnSerialCancel.Location = new System.Drawing.Point(481, 140); - this.btnSerialCancel.Name = "btnSerialCancel"; - this.btnSerialCancel.Size = new System.Drawing.Size(88, 76); - this.btnSerialCancel.TabIndex = 214; - this.btnSerialCancel.UseVisualStyleBackColor = true; - // - // FormCommPicker - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.Gainsboro; - this.ClientSize = new System.Drawing.Size(572, 219); - this.ControlBox = false; - this.Controls.Add(this.btnSerialCancel); - this.Controls.Add(this.lblLast); - this.Controls.Add(this.cboxEnv); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; - this.Name = "FormCommPicker"; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Load Settings"; - this.Load += new System.EventHandler(this.FormCommPicker_Load); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - private System.Windows.Forms.ComboBox cboxEnv; - private System.Windows.Forms.Label lblLast; - private System.Windows.Forms.Button btnSerialCancel; - } -} \ No newline at end of file diff --git a/SourceCode/AgIO/Source/Forms/FormCommSaver.cs b/SourceCode/AgIO/Source/Forms/FormCommSaver.cs deleted file mode 100644 index 6086efa4f..000000000 --- a/SourceCode/AgIO/Source/Forms/FormCommSaver.cs +++ /dev/null @@ -1,90 +0,0 @@ -using System; -using System.IO; -using System.Text.RegularExpressions; -using System.Windows.Forms; - -namespace AgIO -{ - public partial class FormCommSaver : Form - { - //class variables - private readonly FormLoop mf = null; - - public FormCommSaver(Form callingForm) - { - //get copy of the calling main form - mf = callingForm as FormLoop; - InitializeComponent(); - } - - private void FormCommSaver_Load(object sender, EventArgs e) - { - lblLast.Text = "Current " + mf.commFileName; - DirectoryInfo dinfo = new DirectoryInfo(mf.commDirectory); - FileInfo[] Files = dinfo.GetFiles("*.xml"); - - if (Files.Length == 0) - { - cboxEnv.Enabled = false; - } - - foreach (FileInfo file in Files) - { - cboxEnv.Items.Add(Path.GetFileNameWithoutExtension(file.Name)); - } - } - - private void cboxVeh_SelectedIndexChanged(object sender, EventArgs e) - { - DialogResult result3 = MessageBox.Show( - "Overwrite: " + cboxEnv.SelectedItem.ToString() + ".xml", - "Save And Return", - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button2); - - if (result3 == DialogResult.Yes) - { - SettingsIO.ExportSettings(mf.commDirectory + cboxEnv.SelectedItem.ToString() + ".xml"); - Close(); - } - } - - private void tboxName_TextChanged(object sender, EventArgs e) - { - TextBox textboxSender = (TextBox)sender; - int cursorPosition = textboxSender.SelectionStart; - textboxSender.Text = Regex.Replace(textboxSender.Text, glm.fileRegex, ""); - - textboxSender.SelectionStart = cursorPosition; - } - - private void btnSave_Click(object sender, EventArgs e) - { - if (tboxName.Text.Trim().Length > 0) - { - SettingsIO.ExportSettings(mf.commDirectory + tboxName.Text.Trim() + ".xml"); - Close(); - } - else - { - _ = MessageBox.Show("Enter a File Name To Save...", - "Save And Return", MessageBoxButtons.OK); - } - } - - private void tboxName_Click(object sender, EventArgs e) - { - if (mf.isKeyboardOn) - { - mf.KeyboardToText((TextBox)sender, this); - btnSave.Focus(); - } - } - - private void btnSerialCancel_Click(object sender, EventArgs e) - { - Close(); - } - } -} \ No newline at end of file diff --git a/SourceCode/AgIO/Source/Forms/FormCommSaver.designer.cs b/SourceCode/AgIO/Source/Forms/FormCommSaver.designer.cs deleted file mode 100644 index c8ef3d70d..000000000 --- a/SourceCode/AgIO/Source/Forms/FormCommSaver.designer.cs +++ /dev/null @@ -1,179 +0,0 @@ -namespace AgIO -{ - partial class FormCommSaver - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.cboxEnv = new System.Windows.Forms.ComboBox(); - this.lblLast = new System.Windows.Forms.Label(); - this.tboxName = new System.Windows.Forms.TextBox(); - this.btnSave = new System.Windows.Forms.Button(); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.btnSerialCancel = new System.Windows.Forms.Button(); - this.label3 = new System.Windows.Forms.Label(); - this.SuspendLayout(); - // - // cboxEnv - // - this.cboxEnv.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.cboxEnv.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cboxEnv.Font = new System.Drawing.Font("Tahoma", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cboxEnv.FormattingEnabled = true; - this.cboxEnv.Location = new System.Drawing.Point(12, 81); - this.cboxEnv.Name = "cboxEnv"; - this.cboxEnv.Size = new System.Drawing.Size(511, 43); - this.cboxEnv.TabIndex = 212; - this.cboxEnv.SelectedIndexChanged += new System.EventHandler(this.cboxVeh_SelectedIndexChanged); - // - // lblLast - // - this.lblLast.AutoSize = true; - this.lblLast.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblLast.Location = new System.Drawing.Point(15, 9); - this.lblLast.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); - this.lblLast.Name = "lblLast"; - this.lblLast.Size = new System.Drawing.Size(269, 23); - this.lblLast.TabIndex = 213; - this.lblLast.Text = "Settings And Configuration"; - this.lblLast.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // tboxName - // - this.tboxName.BackColor = System.Drawing.Color.White; - this.tboxName.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tboxName.Location = new System.Drawing.Point(12, 244); - this.tboxName.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6); - this.tboxName.Name = "tboxName"; - this.tboxName.Size = new System.Drawing.Size(511, 36); - this.tboxName.TabIndex = 214; - this.tboxName.Click += new System.EventHandler(this.tboxName_Click); - this.tboxName.TextChanged += new System.EventHandler(this.tboxName_TextChanged); - // - // btnSave - // - this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnSave.FlatAppearance.BorderSize = 0; - this.btnSave.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnSave.Font = new System.Drawing.Font("Tahoma", 15.75F); - this.btnSave.Image = global::AgIO.Properties.Resources.VehFileSave; - this.btnSave.Location = new System.Drawing.Point(530, 223); - this.btnSave.Name = "btnSave"; - this.btnSave.Size = new System.Drawing.Size(84, 75); - this.btnSave.TabIndex = 215; - this.btnSave.UseVisualStyleBackColor = true; - this.btnSave.Click += new System.EventHandler(this.btnSave_Click); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label1.Location = new System.Drawing.Point(82, 215); - this.label1.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(178, 23); - this.label1.TabIndex = 216; - this.label1.Text = "Enter New Name:"; - this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label2.Location = new System.Drawing.Point(82, 55); - this.label2.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(198, 23); - this.label2.TabIndex = 217; - this.label2.Text = "Overwrite This File:"; - this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // btnSerialCancel - // - this.btnSerialCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnSerialCancel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.btnSerialCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnSerialCancel.FlatAppearance.BorderSize = 0; - this.btnSerialCancel.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnSerialCancel.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.btnSerialCancel.Image = global::AgIO.Properties.Resources.Cancel64; - this.btnSerialCancel.Location = new System.Drawing.Point(633, 223); - this.btnSerialCancel.Name = "btnSerialCancel"; - this.btnSerialCancel.Size = new System.Drawing.Size(84, 75); - this.btnSerialCancel.TabIndex = 218; - this.btnSerialCancel.UseVisualStyleBackColor = true; - this.btnSerialCancel.Click += new System.EventHandler(this.btnSerialCancel_Click); - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label3.Location = new System.Drawing.Point(153, 151); - this.label3.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(51, 23); - this.label3.TabIndex = 219; - this.label3.Text = "Or..."; - this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // FormCommSaver - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.Color.Gainsboro; - this.ClientSize = new System.Drawing.Size(723, 304); - this.Controls.Add(this.label3); - this.Controls.Add(this.btnSerialCancel); - this.Controls.Add(this.label2); - this.Controls.Add(this.label1); - this.Controls.Add(this.btnSave); - this.Controls.Add(this.tboxName); - this.Controls.Add(this.lblLast); - this.Controls.Add(this.cboxEnv); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; - this.Name = "FormCommSaver"; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Save Settings"; - this.Load += new System.EventHandler(this.FormCommSaver_Load); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - private System.Windows.Forms.ComboBox cboxEnv; - private System.Windows.Forms.Label lblLast; - private System.Windows.Forms.TextBox tboxName; - private System.Windows.Forms.Button btnSave; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Button btnSerialCancel; - private System.Windows.Forms.Label label3; - } -} \ No newline at end of file diff --git a/SourceCode/AgIO/Source/Forms/FormEthernet.cs b/SourceCode/AgIO/Source/Forms/FormEthernet.cs index c12de645c..37c5b0cb7 100644 --- a/SourceCode/AgIO/Source/Forms/FormEthernet.cs +++ b/SourceCode/AgIO/Source/Forms/FormEthernet.cs @@ -1,4 +1,5 @@ using System; +using System.IO; using System.Windows.Forms; namespace AgIO @@ -60,7 +61,9 @@ private void btnSerialCancel_Click(object sender, EventArgs e) Properties.Settings.Default.Save(); mf.YesMessageBox("AgIO will Restart to Enable UDP Networking Features"); + Log.EventWriter("Program Reset: Start Ethernet Selected"); + RegistrySettings.Save(); Application.Restart(); Environment.Exit(0); Close(); @@ -69,38 +72,7 @@ private void btnSerialCancel_Click(object sender, EventArgs e) private void cboxIsUDPOn_Click(object sender, EventArgs e) { cboxIsUDPOn.Text = cboxIsUDPOn.Checked ? "UDP Is On" : "UDP Is Off"; + Log.EventWriter("UDP Turned on, Etherent Form"); } - - ////get the ipv4 address only - //public void GetIP4AddressList() - //{ - // tboxNets.Text = ""; - // foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName())) - // { - // if (IPA.AddressFamily == AddressFamily.InterNetwork) - // { - // tboxNets.Text += IPA.ToString() + "\r\n"; - // } - // } - //} - - //public void IsValidNetworkFound() - //{ - // foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName())) - // { - // if (IPA.AddressFamily == AddressFamily.InterNetwork) - // { - // byte[] data = IPA.GetAddressBytes(); - // // Split string by ".", check that array length is 3 - // if (data[0] == 192 && data[1] == 168 && data[2] == 1) - // { - // if (data[3] < 255 && data[3] > 1) - // { - // break; - // } - // } - // } - // } - //} } } \ No newline at end of file diff --git a/SourceCode/AgIO/Source/Forms/FormEventViewer.Designer.cs b/SourceCode/AgIO/Source/Forms/FormEventViewer.Designer.cs new file mode 100644 index 000000000..1aad9b708 --- /dev/null +++ b/SourceCode/AgIO/Source/Forms/FormEventViewer.Designer.cs @@ -0,0 +1,100 @@ +namespace AgIO +{ + partial class FormEventViewer + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.rtbLogViewer = new System.Windows.Forms.RichTextBox(); + this.btnRefresh = new System.Windows.Forms.Button(); + this.btnExit = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // rtbLogViewer + // + this.rtbLogViewer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.rtbLogViewer.Font = new System.Drawing.Font("Courier New", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rtbLogViewer.Location = new System.Drawing.Point(12, 12); + this.rtbLogViewer.Name = "rtbLogViewer"; + this.rtbLogViewer.ReadOnly = true; + this.rtbLogViewer.Size = new System.Drawing.Size(640, 318); + this.rtbLogViewer.TabIndex = 520; + this.rtbLogViewer.Text = ""; + this.rtbLogViewer.WordWrap = false; + // + // btnRefresh + // + this.btnRefresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnRefresh.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnRefresh.Location = new System.Drawing.Point(244, 336); + this.btnRefresh.Name = "btnRefresh"; + this.btnRefresh.Size = new System.Drawing.Size(179, 28); + this.btnRefresh.TabIndex = 524; + this.btnRefresh.Text = "Refresh"; + this.btnRefresh.UseVisualStyleBackColor = true; + this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click); + // + // btnExit + // + this.btnExit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnExit.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnExit.Location = new System.Drawing.Point(473, 336); + this.btnExit.Name = "btnExit"; + this.btnExit.Size = new System.Drawing.Size(179, 28); + this.btnExit.TabIndex = 523; + this.btnExit.Text = "Exit"; + this.btnExit.UseVisualStyleBackColor = true; + this.btnExit.Click += new System.EventHandler(this.btnExit_Click); + // + // FormEventViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Gainsboro; + this.ClientSize = new System.Drawing.Size(664, 365); + this.ControlBox = false; + this.Controls.Add(this.btnRefresh); + this.Controls.Add(this.btnExit); + this.Controls.Add(this.rtbLogViewer); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; + this.Name = "FormEventViewer"; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Event Log Viewer"; + this.Load += new System.EventHandler(this.FormEventViewer_Load); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.RichTextBox rtbLogViewer; + private System.Windows.Forms.Button btnRefresh; + private System.Windows.Forms.Button btnExit; + } +} \ No newline at end of file diff --git a/SourceCode/AgIO/Source/Forms/FormEventViewer.cs b/SourceCode/AgIO/Source/Forms/FormEventViewer.cs new file mode 100644 index 000000000..fe44417de --- /dev/null +++ b/SourceCode/AgIO/Source/Forms/FormEventViewer.cs @@ -0,0 +1,73 @@ +using System; +using System.IO; +using System.Windows.Forms; + +namespace AgIO +{ + public partial class FormEventViewer : Form + { + //class variables + string filename; + + public FormEventViewer(string _filename) + { + //get copy of the calling main form + InitializeComponent(); + filename = _filename; + } + + private void FormEventViewer_Load(object sender, EventArgs e) + { + try + { + using (StreamReader sr = File.OpenText(filename)) + { + //rtbLogViewer.Text = String.Empty; + while (!sr.EndOfStream) + { + rtbLogViewer.AppendText(sr.ReadLine() + "\r"); + } + } + } + catch (Exception ex) + { + rtbLogViewer.AppendText("Catch -> error loading logfile" + ex.ToString()); + } + + rtbLogViewer.AppendText(" **** Current Session Below ***** \r\n\r\n"); + + rtbLogViewer.AppendText(Log.sbEvent.ToString()); + } + + private void btnExit_Click(object sender, EventArgs e) + { + Close(); + } + + private void btnRefresh_Click(object sender, EventArgs e) + { + rtbLogViewer.Clear(); + rtbLogViewer.HideSelection = false; + + try + { + using (StreamReader sr = File.OpenText(filename)) + { + //rtbLogViewer.Text = String.Empty; + while (!sr.EndOfStream) + { + rtbLogViewer.AppendText(sr.ReadLine() + "\r"); + } + } + } + catch (Exception ex) + { + rtbLogViewer.AppendText("Catch -> error loading logfile" + ex.ToString()); + } + + rtbLogViewer.AppendText(" **** Current Session Below ***** \r\n\r\n"); + + rtbLogViewer.AppendText(Log.sbEvent.ToString()); + } + } +} \ No newline at end of file diff --git a/SourceCode/AgIO/Source/Forms/FormCommPicker.resx b/SourceCode/AgIO/Source/Forms/FormEventViewer.resx similarity index 100% rename from SourceCode/AgIO/Source/Forms/FormCommPicker.resx rename to SourceCode/AgIO/Source/Forms/FormEventViewer.resx diff --git a/SourceCode/AgIO/Source/Forms/FormKeyboard.cs b/SourceCode/AgIO/Source/Forms/FormKeyboard.cs index 17f167674..190fe09c9 100644 --- a/SourceCode/AgIO/Source/Forms/FormKeyboard.cs +++ b/SourceCode/AgIO/Source/Forms/FormKeyboard.cs @@ -22,37 +22,7 @@ private void FormKeyboard_Load(object sender, EventArgs e) keyboardString.SelectionLength = 0; keyboard1.Focus(); - //opening the subkey - RegistryKey regKey = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\AgOpenGPS"); - - //create default keys if not existing - if (regKey == null) - { - RegistryKey Key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\AgOpenGPS"); - - //storing the values - Key.SetValue("Language", "en"); - Key.Close(); - - Properties.Settings.Default.setF_culture = "en"; - Properties.Settings.Default.Save(); - } - else - { - Properties.Settings.Default.setF_culture = regKey.GetValue("Language").ToString(); - Properties.Settings.Default.Save(); - regKey.Close(); - } - - string language = Properties.Settings.Default.setF_culture; - if (language == "fr") - { - this.Height = 587; - } - else - { - this.Height = 500; - } + this.Height = 500; } private void RegisterKeyboard1_ButtonPressed(object sender, KeyPressEventArgs e) diff --git a/SourceCode/AgIO/Source/Forms/FormLoop.Designer.cs b/SourceCode/AgIO/Source/Forms/FormLoop.Designer.cs index ee80db878..7c592d7f7 100644 --- a/SourceCode/AgIO/Source/Forms/FormLoop.Designer.cs +++ b/SourceCode/AgIO/Source/Forms/FormLoop.Designer.cs @@ -48,11 +48,11 @@ private void InitializeComponent() this.lblGPS1Comm = new System.Windows.Forms.Label(); this.statusStrip1 = new System.Windows.Forms.StatusStrip(); this.toolStripDropDownButton1 = new System.Windows.Forms.ToolStripDropDownButton(); - this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); - this.modSimToolStrip = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuProfiles = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripLogViewer = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripUDPMonitor = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSerialMonitor = new System.Windows.Forms.ToolStripMenuItem(); + this.modSimToolStrip = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripEthernet = new System.Windows.Forms.ToolStripMenuItem(); this.deviceManagerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.settingsMenuStrip = new System.Windows.Forms.ToolStripDropDownButton(); @@ -278,8 +278,8 @@ private void InitializeComponent() this.toolStripDropDownButton1.BackColor = System.Drawing.Color.Transparent; this.toolStripDropDownButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.toolStripDropDownButton1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripMenuItem1, - this.toolStripMenuItem2, + this.toolStripMenuProfiles, + this.toolStripLogViewer, this.toolStripUDPMonitor, this.toolStripSerialMonitor, this.modSimToolStrip, @@ -292,32 +292,23 @@ private void InitializeComponent() this.toolStripDropDownButton1.ShowDropDownArrow = false; this.toolStripDropDownButton1.Size = new System.Drawing.Size(110, 68); // - // toolStripMenuItem1 - // - this.toolStripMenuItem1.Font = new System.Drawing.Font("Tahoma", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.toolStripMenuItem1.Image = global::AgIO.Properties.Resources.VehFileSave; - this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - this.toolStripMenuItem1.Size = new System.Drawing.Size(348, 70); - this.toolStripMenuItem1.Text = "Save"; - this.toolStripMenuItem1.Click += new System.EventHandler(this.toolStripMenuItem1_Click); + // toolStripMenuProfiles // - // toolStripMenuItem2 + this.toolStripMenuProfiles.Font = new System.Drawing.Font("Tahoma", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.toolStripMenuProfiles.Image = global::AgIO.Properties.Resources.VehFileSave; + this.toolStripMenuProfiles.Name = "toolStripMenuProfiles"; + this.toolStripMenuProfiles.Size = new System.Drawing.Size(348, 70); + this.toolStripMenuProfiles.Text = "Profiles"; + this.toolStripMenuProfiles.Click += new System.EventHandler(this.toolStripMenuProfiles_Click); // - this.toolStripMenuItem2.Font = new System.Drawing.Font("Tahoma", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.toolStripMenuItem2.Image = global::AgIO.Properties.Resources.VehFileLoad; - this.toolStripMenuItem2.Name = "toolStripMenuItem2"; - this.toolStripMenuItem2.Size = new System.Drawing.Size(348, 70); - this.toolStripMenuItem2.Text = "Load"; - this.toolStripMenuItem2.Click += new System.EventHandler(this.toolStripMenuItem2_Click); - // - // modSimToolStrip + // toolStripLogViewer // - this.modSimToolStrip.Font = new System.Drawing.Font("Tahoma", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.modSimToolStrip.Image = global::AgIO.Properties.Resources.ModuleSim2; - this.modSimToolStrip.Name = "modSimToolStrip"; - this.modSimToolStrip.Size = new System.Drawing.Size(348, 70); - this.modSimToolStrip.Text = "Module Sim"; - this.modSimToolStrip.Click += new System.EventHandler(this.modSimToolStrip_Click); + this.toolStripLogViewer.Font = new System.Drawing.Font("Tahoma", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.toolStripLogViewer.Image = global::AgIO.Properties.Resources.LogViewer; + this.toolStripLogViewer.Name = "toolStripLogViewer"; + this.toolStripLogViewer.Size = new System.Drawing.Size(348, 70); + this.toolStripLogViewer.Text = "Log Viewer"; + this.toolStripLogViewer.Click += new System.EventHandler(this.toolStripLogViewer_Click); // // toolStripUDPMonitor // @@ -337,6 +328,15 @@ private void InitializeComponent() this.toolStripSerialMonitor.Text = "Serial Monitor"; this.toolStripSerialMonitor.Click += new System.EventHandler(this.toolStripSerialMonitor_Click); // + // modSimToolStrip + // + this.modSimToolStrip.Font = new System.Drawing.Font("Tahoma", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.modSimToolStrip.Image = global::AgIO.Properties.Resources.ModuleSim2; + this.modSimToolStrip.Name = "modSimToolStrip"; + this.modSimToolStrip.Size = new System.Drawing.Size(348, 70); + this.modSimToolStrip.Text = "Module Sim"; + this.modSimToolStrip.Click += new System.EventHandler(this.modSimToolStrip_Click); + // // toolStripEthernet // this.toolStripEthernet.Font = new System.Drawing.Font("Tahoma", 20.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -1240,6 +1240,7 @@ private void InitializeComponent() private CheckBox cboxAutoRunGPS_Out; private Button btnMinimizeMainForm; private ToolStripMenuItem modSimToolStrip; + private ToolStripMenuItem toolStripLogViewer; } } diff --git a/SourceCode/AgIO/Source/Forms/FormLoop.cs b/SourceCode/AgIO/Source/Forms/FormLoop.cs index ebd314357..00771841d 100644 --- a/SourceCode/AgIO/Source/Forms/FormLoop.cs +++ b/SourceCode/AgIO/Source/Forms/FormLoop.cs @@ -1,7 +1,9 @@ using AgIO.Properties; +using Microsoft.Win32; using System; using System.Diagnostics; using System.Drawing; +using System.Globalization; using System.IO; using System.Linq; using System.Net; @@ -70,12 +72,6 @@ public partial class FormLoop : Form public int focusSkipCounter = 310; - //The base directory where Drive will be stored and fields and vehicles branch from - public string baseDirectory; - - //current directory of Comm storage - public string commDirectory, commFileName = ""; - public FormLoop() { InitializeComponent(); @@ -84,18 +80,10 @@ public FormLoop() //First run private void FormLoop_Load(object sender, EventArgs e) { - if (Settings.Default.setF_workingDirectory == "Default") - baseDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\AgOpenGPS\\"; - else baseDirectory = Settings.Default.setF_workingDirectory + "\\AgOpenGPS\\"; - - //get the fields directory, if not exist, create - commDirectory = baseDirectory + "AgIO\\"; - string dir = Path.GetDirectoryName(commDirectory); - if (!string.IsNullOrEmpty(dir) && !Directory.Exists(dir)) { Directory.CreateDirectory(dir); } - if (Settings.Default.setUDP_isOn) { LoadUDPNetwork(); + Log.EventWriter("UDP Network Is On"); } else { @@ -241,8 +229,9 @@ private void FormLoop_Load(object sender, EventArgs e) if (broadCasterIP == null) throw new NullReferenceException(); } - catch (Exception) + catch (Exception ex) { + Log.EventWriter(ex.ToString()); TimedMessageBox(1500, "URL Not Located, Network Down?", "Cannot Find: " + Properties.Settings.Default.setNTRIP_casterURL); //if we had a timer already, kill it tmr?.Dispose(); @@ -269,61 +258,38 @@ private void FormLoop_Load(object sender, EventArgs e) //run gps_out or not cboxAutoRunGPS_Out.Checked = Properties.Settings.Default.setDisplay_isAutoRunGPS_Out; - if (Properties.Settings.Default.setDisplay_isAutoRunGPS_Out) StartGPS_Out(); + + this.Text = + "AgIO v" + GitVersionInformation.MajorMinorPatch + " Profile: " + RegistrySettings.profileName; - this.Text = "UDP: " + (Properties.Settings.Default.setUDP_isOn ? "On - " : "Off - ") + - "Ntrip: " + (Properties.Settings.Default.setNTRIP_isOn ? "On - " : "Off - ") + - "Radio: " + (Properties.Settings.Default.setRadio_isOn ? "On - " : "Off - ") + - "SendTo: " + (Properties.Settings.Default.setNTRIP_sendToUDP ? "UDP " : " ") + - (Properties.Settings.Default.setNTRIP_sendToSerial ? "Serial " : " "); - } - - public void SetModulesOnOff() - { - if (isConnectedIMU) - { - btnIMU.Visible = true; - lblIMUComm.Visible = true; - cboxIsIMUModule.BackgroundImage = Properties.Resources.Cancel64; - } - else + if (RegistrySettings.profileName == "Default Profile") { - btnIMU.Visible = false; - lblIMUComm.Visible = false; - cboxIsIMUModule.BackgroundImage = Properties.Resources.AddNew; - } + Log.EventWriter("Using Default Profile At Start Warning"); - if (isConnectedMachine) - { - btnMachine.Visible = true; - lblMod2Comm.Visible = true; - cboxIsMachineModule.BackgroundImage = Properties.Resources.Cancel64; - } - else - { - btnMachine.Visible = false; - lblMod2Comm.Visible = false; - cboxIsMachineModule.BackgroundImage = Properties.Resources.AddNew; - } + YesMessageBox("AgIO - No Profile Open \r\n\r\n Create or Open a Profile"); - if (isConnectedSteer) - { - btnSteer.Visible = true; - lblMod1Comm.Visible = true; - cboxIsSteerModule.BackgroundImage = Properties.Resources.Cancel64; + using (var form = new FormProfiles(this)) + { + form.ShowDialog(this); + if (form.DialogResult == DialogResult.Yes) + { + Log.EventWriter("Program Reset: Saving or Selecting Profile"); + + RegistrySettings.Save(); + Application.Restart(); + Environment.Exit(0); + } + } + this.Text = "AgIO v" + GitVersionInformation.MajorMinorPatch + " Profile: " + + RegistrySettings.profileName; } - else + + if (Properties.Settings.Default.setDisplay_isAutoRunGPS_Out) { - btnSteer.Visible = false; - lblMod1Comm.Visible = false; - cboxIsSteerModule.BackgroundImage = Properties.Resources.AddNew; + StartGPS_Out(); + Log.EventWriter("Run GPS_Out"); } - Properties.Settings.Default.setMod_isIMUConnected = isConnectedIMU; - Properties.Settings.Default.setMod_isSteerConnected = isConnectedSteer; - Properties.Settings.Default.setMod_isMachineConnected = isConnectedMachine; - - Properties.Settings.Default.Save(); } private void FormLoop_FormClosing(object sender, FormClosingEventArgs e) @@ -336,6 +302,12 @@ private void FormLoop_FormClosing(object sender, FormClosingEventArgs e) Settings.Default.Save(); + if (RegistrySettings.profileName != "Default Profile") + RegistrySettings.Save(); + else + YesMessageBox("Using Default Profile" + "\r\n\r\n" + "Changes will NOT be Saved"); + + if (loopBackSocket != null) { try @@ -359,6 +331,20 @@ private void FormLoop_FormClosing(object sender, FormClosingEventArgs e) { processName[0].CloseMainWindow(); } + + Log.EventWriter("Program Exit: " + + DateTime.Now.ToString("f", CultureInfo.CreateSpecificCulture(RegistrySettings.culture)) + "\n\r"); + + FileSaveSystemEvents(); + } + + public void FileSaveSystemEvents() + { + using (StreamWriter writer = new StreamWriter(Path.Combine(RegistrySettings.logsDirectory, "AgIO_Events_Log.txt"), true)) + { + writer.Write(Log.sbEvent); + Log.sbEvent.Clear(); + } } private void oneSecondLoopTimer_Tick(object sender, EventArgs e) @@ -556,6 +542,7 @@ private void TenSecondLoop() { sbRTCM.Clear(); sbRTCM.Append("Error"); + Log.EventWriter("RTCM List compilation error"); } } @@ -709,6 +696,54 @@ private void ShowAgIO() //} } + public void SetModulesOnOff() + { + if (isConnectedIMU) + { + btnIMU.Visible = true; + lblIMUComm.Visible = true; + cboxIsIMUModule.BackgroundImage = Properties.Resources.Cancel64; + } + else + { + btnIMU.Visible = false; + lblIMUComm.Visible = false; + cboxIsIMUModule.BackgroundImage = Properties.Resources.AddNew; + } + + if (isConnectedMachine) + { + btnMachine.Visible = true; + lblMod2Comm.Visible = true; + cboxIsMachineModule.BackgroundImage = Properties.Resources.Cancel64; + } + else + { + btnMachine.Visible = false; + lblMod2Comm.Visible = false; + cboxIsMachineModule.BackgroundImage = Properties.Resources.AddNew; + } + + if (isConnectedSteer) + { + btnSteer.Visible = true; + lblMod1Comm.Visible = true; + cboxIsSteerModule.BackgroundImage = Properties.Resources.Cancel64; + } + else + { + btnSteer.Visible = false; + lblMod1Comm.Visible = false; + cboxIsSteerModule.BackgroundImage = Properties.Resources.AddNew; + } + + Properties.Settings.Default.setMod_isIMUConnected = isConnectedIMU; + Properties.Settings.Default.setMod_isSteerConnected = isConnectedSteer; + Properties.Settings.Default.setMod_isMachineConnected = isConnectedMachine; + + Properties.Settings.Default.Save(); + } + private void DoTraffic() { traffic.helloFromMachine++; diff --git a/SourceCode/AgIO/Source/Forms/FormNtrip.cs b/SourceCode/AgIO/Source/Forms/FormNtrip.cs index 1337b4ec7..d909a8fcb 100644 --- a/SourceCode/AgIO/Source/Forms/FormNtrip.cs +++ b/SourceCode/AgIO/Source/Forms/FormNtrip.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; +using System.IO; using System.Net; using System.Net.Sockets; using System.Text; @@ -102,12 +103,19 @@ private void cboxIsNTRIPOn_Click(object sender, EventArgs e) { Properties.Settings.Default.setRadio_isOn = mf.isRadio_RequiredOn = false; Properties.Settings.Default.setPass_isOn = mf.isSerialPass_RequiredOn = false; + Log.EventWriter("NTRIP Turned on"); + } + else + { + Log.EventWriter("NTRIP Turned off"); } Properties.Settings.Default.Save(); mf.YesMessageBox("Restart of AgIO is Required - Restarting"); + Log.EventWriter("Program Reset: Selecting NTRIP Feature"); + RegistrySettings.Save(); Application.Restart(); Environment.Exit(0); } @@ -151,11 +159,14 @@ private void btnGetIP_Click(object sender, EventArgs e) else { mf.YesMessageBox("Can't Find: " + actualIP); + Log.EventWriter("Can't Find Caster IP"); } } - catch (Exception) + catch (Exception ex) { mf.YesMessageBox("Can't Find: " + actualIP); + Log.EventWriter("Catch -> Can't Find Caster IP" + ex.ToString()); + } } @@ -252,6 +263,9 @@ private void btnSerialOK_Click(object sender, EventArgs e) } else { + Log.EventWriter("Program Reset: Button Ok on Ntrip Form"); + + RegistrySettings.Save(); Application.Restart(); Environment.Exit(0); } @@ -323,16 +337,18 @@ private void btnGetSourceTable_Click(object sender, EventArgs e) } } } - catch (SocketException) + catch (SocketException ex) { mf.TimedMessageBox(2000, "Socket Exception", "Invalid IP:Port"); btnGetSourceTable.Enabled = true; + Log.EventWriter("Catch -> Socket Exception, Invalid IP:Port" + ex.ToString()); return; } - catch (Exception) + catch (Exception ex) { mf.TimedMessageBox(2000, "Exception", "Get Source Table Error"); btnGetSourceTable.Enabled = true; + Log.EventWriter("Catch - > Get Source Table Error" + ex.ToString()); return; } diff --git a/SourceCode/AgIO/Source/Forms/FormProfiles.cs b/SourceCode/AgIO/Source/Forms/FormProfiles.cs new file mode 100644 index 000000000..dd906a469 --- /dev/null +++ b/SourceCode/AgIO/Source/Forms/FormProfiles.cs @@ -0,0 +1,227 @@ +using AgIO.Properties; +using Microsoft.Win32; +using System; +using System.Drawing; +using System.IO; +using System.Text.RegularExpressions; +using System.Windows.Forms; + +namespace AgIO +{ + public partial class FormProfiles : Form + { + //class variables + private readonly FormLoop mf = null; + + public FormProfiles(Form callingForm) + { + //get copy of the calling main form + mf = callingForm as FormLoop; + InitializeComponent(); + } + + private void FormCommSaver_Load(object sender, EventArgs e) + { + btnSaveAs.BackColor = Color.Transparent; + btnSaveNewProfile.BackColor = Color.Transparent; + + lblLast.Text = "Using Profile: " + RegistrySettings.profileName; + DirectoryInfo dinfo = new DirectoryInfo(RegistrySettings.profileDirectory); + FileInfo[] Files = dinfo.GetFiles("*.xml"); + + foreach (FileInfo file in Files) + { + string temp = Path.GetFileNameWithoutExtension(file.Name); + if (temp.Trim() != "Default Profile") + cboxOverWrite.Items.Add(temp); + } + + if (cboxOverWrite.Items.Count == 0) + { + cboxOverWrite.Enabled = false; + } + + lblCurrentProfile.Text = RegistrySettings.profileName; + + DirectoryInfo dinfo2 = new DirectoryInfo(RegistrySettings.profileDirectory); + FileInfo[] Files2 = dinfo2.GetFiles("*.xml"); + if (Files2.Length == 0) + { + cboxChooseExisting.Enabled = false; + } + else + { + foreach (FileInfo file in Files2) + { + string temp = Path.GetFileNameWithoutExtension(file.Name); + if (temp.Trim() != "Default Profile") + { + cboxChooseExisting.Items.Add(temp); + } + } + } + } + + private void cboxOverWrite_SelectedIndexChanged(object sender, EventArgs e) + { + DialogResult result3 = MessageBox.Show( + "Overwrite: " + cboxOverWrite.SelectedItem.ToString() + ".xml", + "Save And Return", + MessageBoxButtons.YesNo, + MessageBoxIcon.Question, + MessageBoxDefaultButton.Button2); + + if (result3 == DialogResult.Yes) + { + //save profile in registry + RegistrySettings.Save(); + + RegistrySettings.profileName = SanitizeFileName(cboxOverWrite.SelectedItem.ToString().Trim()); + + //save profile in registry + RegistrySettings.Save(); + + Close(); + } + } + + private void tboxNewProfile_TextChanged(object sender, EventArgs e) + { + TextBox textboxSender = (TextBox)sender; + int cursorPosition = textboxSender.SelectionStart; + textboxSender.Text = Regex.Replace(textboxSender.Text, glm.fileRegex, ""); + textboxSender.SelectionStart = cursorPosition; + if (textboxSender.Text.Length > 0) + { + btnSaveNewProfile.BackColor = Color.LightGreen; + } + else + { + btnSaveNewProfile.BackColor = Color.Transparent; + } + } + + private void btnSaveNewProfile_Click(object sender, EventArgs e) + { + if (tboxCreateNew.Text.Trim().Length > 0 && tboxCreateNew.Text.Trim() != "Default Profile") + { + RegistrySettings.profileName = SanitizeFileName(tboxCreateNew.Text.ToString().Trim()); + + //reset to Default Profile and save + Settings.Default.Reset(); + + //save profile in registry + RegistrySettings.Save(); + + DialogResult = DialogResult.Yes; + Close(); + } + else + { + _ = MessageBox.Show("Enter a File Name To Save...", + "Save And Return", MessageBoxButtons.OK); + } + } + + private void tboxNewProfile_Click(object sender, EventArgs e) + { + if (mf.isKeyboardOn) + { + mf.KeyboardToText((TextBox)sender, this); + btnSaveNewProfile.Focus(); + } + } + + //save As + private void tboxSaveAs_TextChanged(object sender, EventArgs e) + { + TextBox textboxSender = (TextBox)sender; + int cursorPosition = textboxSender.SelectionStart; + textboxSender.Text = Regex.Replace(textboxSender.Text, glm.fileRegex, ""); + + textboxSender.SelectionStart = cursorPosition; + if (textboxSender.Text.Length > 0) + { + btnSaveAs.BackColor = Color.LightGreen; + } + else + { + btnSaveAs.BackColor = Color.Transparent; + } + + } + + private void tboxSaveAs_Click(object sender, EventArgs e) + { + if (mf.isKeyboardOn) + { + mf.KeyboardToText((TextBox)sender, this); + btnSaveNewProfile.Focus(); + } + } + + private void btnSaveAs_Click(object sender, EventArgs e) + { + if (tboxSaveAs.Text.Trim().Length > 0 && tboxSaveAs.Text.Trim() != "Default Profile") + { + RegistrySettings.profileName = SanitizeFileName(tboxSaveAs.Text.ToString().Trim()); + + //save profile in registry + RegistrySettings.Save(); + + DialogResult = DialogResult.OK; + Close(); + } + else + { + if (tboxSaveAs.Text.Trim() != "Default Profile") + { + _ = MessageBox.Show("Enter a File Name To Save...", + "Save And Return", MessageBoxButtons.OK); + } + else + { + _ = MessageBox.Show("Enter a File Name To Save...", + "You Cannot Use Default Profile", MessageBoxButtons.OK); + } + } + } + + //Load Existing Profile + private void cboxChooseExisting_SelectedIndexChanged(object sender, EventArgs e) + { + if (cboxChooseExisting.SelectedItem.ToString().Trim() == "Default Profile") + { + mf.YesMessageBox("Choose a Different Profile, Or Create a New One"); + } + else + { + //save current profile + RegistrySettings.Save(); + + SettingsIO.ImportSettings(Path.Combine(RegistrySettings.profileDirectory, cboxChooseExisting.SelectedItem.ToString().Trim() + ".xml")); + + RegistrySettings.profileName = cboxChooseExisting.SelectedItem.ToString().Trim(); + + RegistrySettings.Save(); + + DialogResult = DialogResult.Yes; + Close(); + } + } + + //functions + private void btnSerialCancel_Click(object sender, EventArgs e) + { + Close(); + } + + private static readonly Regex InvalidFileRegex = new Regex(string.Format("[{0}]", Regex.Escape(@"<>:""/\|?*"))); + + public static string SanitizeFileName(string fileName) + { + return InvalidFileRegex.Replace(fileName, string.Empty); + } + + } +} \ No newline at end of file diff --git a/SourceCode/AgIO/Source/Forms/FormProfiles.designer.cs b/SourceCode/AgIO/Source/Forms/FormProfiles.designer.cs new file mode 100644 index 000000000..d3ec1e35b --- /dev/null +++ b/SourceCode/AgIO/Source/Forms/FormProfiles.designer.cs @@ -0,0 +1,249 @@ +namespace AgIO +{ + partial class FormProfiles + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.cboxOverWrite = new System.Windows.Forms.ComboBox(); + this.tboxCreateNew = new System.Windows.Forms.TextBox(); + this.btnSaveNewProfile = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.btnSerialCancel = new System.Windows.Forms.Button(); + this.label4 = new System.Windows.Forms.Label(); + this.tboxSaveAs = new System.Windows.Forms.TextBox(); + this.btnSaveAs = new System.Windows.Forms.Button(); + this.lblCurrentProfile = new System.Windows.Forms.Label(); + this.lblLast = new System.Windows.Forms.Label(); + this.cboxChooseExisting = new System.Windows.Forms.ComboBox(); + this.label3 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // cboxOverWrite + // + this.cboxOverWrite.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cboxOverWrite.Font = new System.Drawing.Font("Tahoma", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboxOverWrite.FormattingEnabled = true; + this.cboxOverWrite.Location = new System.Drawing.Point(624, 106); + this.cboxOverWrite.Name = "cboxOverWrite"; + this.cboxOverWrite.Size = new System.Drawing.Size(439, 43); + this.cboxOverWrite.TabIndex = 212; + this.cboxOverWrite.SelectedIndexChanged += new System.EventHandler(this.cboxOverWrite_SelectedIndexChanged); + // + // tboxCreateNew + // + this.tboxCreateNew.BackColor = System.Drawing.Color.White; + this.tboxCreateNew.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tboxCreateNew.Location = new System.Drawing.Point(12, 93); + this.tboxCreateNew.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6); + this.tboxCreateNew.Name = "tboxCreateNew"; + this.tboxCreateNew.Size = new System.Drawing.Size(439, 36); + this.tboxCreateNew.TabIndex = 214; + this.tboxCreateNew.Click += new System.EventHandler(this.tboxNewProfile_Click); + this.tboxCreateNew.TextChanged += new System.EventHandler(this.tboxNewProfile_TextChanged); + // + // btnSaveNewProfile + // + this.btnSaveNewProfile.FlatAppearance.BorderSize = 0; + this.btnSaveNewProfile.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnSaveNewProfile.Font = new System.Drawing.Font("Tahoma", 15.75F); + this.btnSaveNewProfile.Image = global::AgIO.Properties.Resources.VehFileSave; + this.btnSaveNewProfile.Location = new System.Drawing.Point(486, 65); + this.btnSaveNewProfile.Name = "btnSaveNewProfile"; + this.btnSaveNewProfile.Size = new System.Drawing.Size(84, 75); + this.btnSaveNewProfile.TabIndex = 215; + this.btnSaveNewProfile.UseVisualStyleBackColor = true; + this.btnSaveNewProfile.Click += new System.EventHandler(this.btnSaveNewProfile_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(15, 66); + this.label1.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(60, 23); + this.label1.TabIndex = 216; + this.label1.Text = "New:"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label2.Location = new System.Drawing.Point(627, 80); + this.label2.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(226, 23); + this.label2.TabIndex = 217; + this.label2.Text = "Overwrite This Profile:"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // btnSerialCancel + // + this.btnSerialCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnSerialCancel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.btnSerialCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnSerialCancel.FlatAppearance.BorderSize = 0; + this.btnSerialCancel.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnSerialCancel.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnSerialCancel.Image = global::AgIO.Properties.Resources.Cancel64; + this.btnSerialCancel.Location = new System.Drawing.Point(486, 315); + this.btnSerialCancel.Name = "btnSerialCancel"; + this.btnSerialCancel.Size = new System.Drawing.Size(84, 75); + this.btnSerialCancel.TabIndex = 218; + this.btnSerialCancel.UseVisualStyleBackColor = true; + this.btnSerialCancel.Click += new System.EventHandler(this.btnSerialCancel_Click); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label4.Location = new System.Drawing.Point(15, 162); + this.label4.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(91, 23); + this.label4.TabIndex = 221; + this.label4.Text = "Save As:"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // tboxSaveAs + // + this.tboxSaveAs.BackColor = System.Drawing.Color.White; + this.tboxSaveAs.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tboxSaveAs.Location = new System.Drawing.Point(12, 190); + this.tboxSaveAs.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6); + this.tboxSaveAs.Name = "tboxSaveAs"; + this.tboxSaveAs.Size = new System.Drawing.Size(439, 36); + this.tboxSaveAs.TabIndex = 220; + this.tboxSaveAs.Click += new System.EventHandler(this.tboxSaveAs_Click); + this.tboxSaveAs.TextChanged += new System.EventHandler(this.tboxSaveAs_TextChanged); + // + // btnSaveAs + // + this.btnSaveAs.FlatAppearance.BorderSize = 0; + this.btnSaveAs.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnSaveAs.Font = new System.Drawing.Font("Tahoma", 15.75F); + this.btnSaveAs.Image = global::AgIO.Properties.Resources.FileSaveAs; + this.btnSaveAs.Location = new System.Drawing.Point(486, 163); + this.btnSaveAs.Name = "btnSaveAs"; + this.btnSaveAs.Size = new System.Drawing.Size(84, 75); + this.btnSaveAs.TabIndex = 222; + this.btnSaveAs.UseVisualStyleBackColor = true; + this.btnSaveAs.Click += new System.EventHandler(this.btnSaveAs_Click); + // + // lblCurrentProfile + // + this.lblCurrentProfile.AutoSize = true; + this.lblCurrentProfile.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblCurrentProfile.Location = new System.Drawing.Point(105, 162); + this.lblCurrentProfile.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.lblCurrentProfile.Name = "lblCurrentProfile"; + this.lblCurrentProfile.Size = new System.Drawing.Size(150, 23); + this.lblCurrentProfile.TabIndex = 223; + this.lblCurrentProfile.Text = "Current Profile"; + this.lblCurrentProfile.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // lblLast + // + this.lblLast.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblLast.Location = new System.Drawing.Point(19, 3); + this.lblLast.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.lblLast.Name = "lblLast"; + this.lblLast.Size = new System.Drawing.Size(551, 29); + this.lblLast.TabIndex = 225; + this.lblLast.Text = "Curent Profile"; + this.lblLast.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // cboxChooseExisting + // + this.cboxChooseExisting.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cboxChooseExisting.Font = new System.Drawing.Font("Tahoma", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboxChooseExisting.FormattingEnabled = true; + this.cboxChooseExisting.Location = new System.Drawing.Point(12, 287); + this.cboxChooseExisting.Name = "cboxChooseExisting"; + this.cboxChooseExisting.Size = new System.Drawing.Size(439, 43); + this.cboxChooseExisting.TabIndex = 224; + this.cboxChooseExisting.SelectedIndexChanged += new System.EventHandler(this.cboxChooseExisting_SelectedIndexChanged); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label3.Location = new System.Drawing.Point(19, 261); + this.label3.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(67, 23); + this.label3.TabIndex = 226; + this.label3.Text = "Open:"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // FormProfiles + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.Gainsboro; + this.ClientSize = new System.Drawing.Size(576, 394); + this.Controls.Add(this.label3); + this.Controls.Add(this.lblLast); + this.Controls.Add(this.cboxChooseExisting); + this.Controls.Add(this.lblCurrentProfile); + this.Controls.Add(this.btnSaveAs); + this.Controls.Add(this.label4); + this.Controls.Add(this.tboxSaveAs); + this.Controls.Add(this.btnSerialCancel); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.btnSaveNewProfile); + this.Controls.Add(this.tboxCreateNew); + this.Controls.Add(this.cboxOverWrite); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow; + this.Name = "FormProfiles"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "AgIO: Manage Profiles"; + this.Load += new System.EventHandler(this.FormCommSaver_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.ComboBox cboxOverWrite; + private System.Windows.Forms.TextBox tboxCreateNew; + private System.Windows.Forms.Button btnSaveNewProfile; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button btnSerialCancel; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox tboxSaveAs; + private System.Windows.Forms.Button btnSaveAs; + private System.Windows.Forms.Label lblCurrentProfile; + private System.Windows.Forms.Label lblLast; + private System.Windows.Forms.ComboBox cboxChooseExisting; + private System.Windows.Forms.Label label3; + } +} \ No newline at end of file diff --git a/SourceCode/AgIO/Source/Forms/FormCommSaver.resx b/SourceCode/AgIO/Source/Forms/FormProfiles.resx similarity index 100% rename from SourceCode/AgIO/Source/Forms/FormCommSaver.resx rename to SourceCode/AgIO/Source/Forms/FormProfiles.resx diff --git a/SourceCode/AgIO/Source/Forms/FormRadio.cs b/SourceCode/AgIO/Source/Forms/FormRadio.cs index b0e95c7b6..4281780fe 100644 --- a/SourceCode/AgIO/Source/Forms/FormRadio.cs +++ b/SourceCode/AgIO/Source/Forms/FormRadio.cs @@ -154,6 +154,8 @@ private void btnOpenSerial_Click(object sender, EventArgs e) catch (Exception ex) { mf.TimedMessageBox(3000, "Error opening port", ex.Message); + Log.EventWriter("Catch - > Error opening Radio port" + ex.ToString()); + } SetButtonState(); diff --git a/SourceCode/AgIO/Source/Forms/FormSerialMonitor.cs b/SourceCode/AgIO/Source/Forms/FormSerialMonitor.cs index f4de3d83a..96e025ed9 100644 --- a/SourceCode/AgIO/Source/Forms/FormSerialMonitor.cs +++ b/SourceCode/AgIO/Source/Forms/FormSerialMonitor.cs @@ -55,15 +55,9 @@ public void OpenPort() } try { sp.Open(); } - catch (Exception) + catch (Exception ex) { - //WriteErrorLog("Opening Machine Port" + e.ToString()); - - //MessageBox.Show(e.Message + "\n\r" + "\n\r" + "Go to Settings -> COM Ports to Fix", "No Arduino Port Active"); - - //Properties.Settings.Default.setPort_wasConnected = false; - //Properties.Settings.Default.Save(); - //wasConnectedLastRun = false; + Log.EventWriter("Catch - > Open Arduino Serial" + ex.ToString()); } if (sp.IsOpen) @@ -88,7 +82,7 @@ public void ClosePort() } catch (Exception e) { - //WriteErrorLog("Closing Machine Serial Port" + e.ToString()); + Log.EventWriter("Catch -> Closing Machine Serial Port" + e.ToString()); MessageBox.Show(e.Message, "Connection already terminated??"); } @@ -107,6 +101,7 @@ private void sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEv } catch (Exception) { + } } } diff --git a/SourceCode/AgIO/Source/Forms/FormSerialPass.cs b/SourceCode/AgIO/Source/Forms/FormSerialPass.cs index 99e5b26f7..adc0fd5ca 100644 --- a/SourceCode/AgIO/Source/Forms/FormSerialPass.cs +++ b/SourceCode/AgIO/Source/Forms/FormSerialPass.cs @@ -71,8 +71,12 @@ private void btnSerialOK_Click(object sender, EventArgs e) Properties.Settings.Default.setPort_portNameRadio = cboxRadioPort.Text; Properties.Settings.Default.setPort_baudRateRadio = cboxBaud.Text; + Properties.Settings.Default.Save(); + Log.EventWriter("Program Reset: Button OK on Serial Pass Form"); + + RegistrySettings.Save(); Application.Restart(); Environment.Exit(0); Close(); @@ -110,6 +114,7 @@ private void btnOpenSerial_Click(object sender, EventArgs e) catch (Exception ex) { mf.TimedMessageBox(3000, "Error opening port", ex.Message); + Log.EventWriter("Catch - > Error opening port" + ex.ToString()); } } diff --git a/SourceCode/AgIO/Source/Forms/FormTimedMessage.Designer.cs b/SourceCode/AgIO/Source/Forms/FormTimedMessage.Designer.cs index e08361cd4..fdac3111a 100644 --- a/SourceCode/AgIO/Source/Forms/FormTimedMessage.Designer.cs +++ b/SourceCode/AgIO/Source/Forms/FormTimedMessage.Designer.cs @@ -34,12 +34,12 @@ private void InitializeComponent() this.lblMessage2 = new System.Windows.Forms.Label(); this.SuspendLayout(); // - // lblMessage + // lblTitle // this.lblTitle.AutoSize = true; this.lblTitle.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold); this.lblTitle.Location = new System.Drawing.Point(12, 20); - this.lblTitle.Name = "lblMessage"; + this.lblTitle.Name = "lblTitle"; this.lblTitle.Size = new System.Drawing.Size(115, 29); this.lblTitle.TabIndex = 0; this.lblTitle.Text = "Message"; @@ -65,7 +65,7 @@ private void InitializeComponent() this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 23F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.Color.LightSalmon; - this.ClientSize = new System.Drawing.Size(272, 151); + this.ClientSize = new System.Drawing.Size(268, 147); this.ControlBox = false; this.Controls.Add(this.lblMessage2); this.Controls.Add(this.lblTitle); @@ -75,7 +75,6 @@ private void InitializeComponent() this.Name = "FormTimedMessage"; this.ShowIcon = false; this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "AgIO Message"; this.TopMost = true; this.ResumeLayout(false); diff --git a/SourceCode/AgIO/Source/Forms/FormUDP.cs b/SourceCode/AgIO/Source/Forms/FormUDP.cs index c654604da..02e6f38b6 100644 --- a/SourceCode/AgIO/Source/Forms/FormUDP.cs +++ b/SourceCode/AgIO/Source/Forms/FormUDP.cs @@ -185,8 +185,7 @@ private void ScanNetwork() } catch (Exception ex) { - Console.Write("Bind Error = "); - Console.WriteLine(ex.ToString()); + Log.EventWriter("Catch - > Socket Bind Error Scan UDP" + ex.ToString()); } scanSocket.Dispose(); @@ -194,8 +193,7 @@ private void ScanNetwork() } catch (Exception ex) { - Console.Write("nic Loop = "); - Console.WriteLine(ex.ToString()); + Log.EventWriter("Catch - > Nic Loop exception in Scan" + ex.ToString()); } } } @@ -251,8 +249,7 @@ private void btnSendSubnet_Click(object sender, EventArgs e) } catch (Exception ex) { - Console.Write("Bind Error = "); - Console.WriteLine(ex.ToString()); + Log.EventWriter("Catch - > Send Subnet Bind and Send: " + ex.ToString()); } scanSocket.Dispose(); @@ -260,8 +257,7 @@ private void btnSendSubnet_Click(object sender, EventArgs e) } catch (Exception ex) { - Console.Write("nic Loop = "); - Console.WriteLine(ex.ToString()); + Log.EventWriter("Catch - > Nic Loop Send Subnet: " + ex.ToString()); } } } @@ -334,18 +330,19 @@ private void btnSerialMonitor_Click(object sender, EventArgs e) private void btnUDPOff_Click(object sender, EventArgs e) { - Properties.Settings.Default.setUDP_isOn = false; Properties.Settings.Default.setUDP_isSendNMEAToUDP = false; Properties.Settings.Default.Save(); mf.YesMessageBox("AgIO will Restart to Disable UDP Networking Features"); + Log.EventWriter("Program Reset: Turning UDP OFF"); + RegistrySettings.Save(); Application.Restart(); Environment.Exit(0); - Close(); + Close(); } private void btnAutoSet_Click(object sender, EventArgs e) diff --git a/SourceCode/AgIO/Source/Forms/FormYes.designer.cs b/SourceCode/AgIO/Source/Forms/FormYes.designer.cs index 6e71087b0..2dafd9cd8 100644 --- a/SourceCode/AgIO/Source/Forms/FormYes.designer.cs +++ b/SourceCode/AgIO/Source/Forms/FormYes.designer.cs @@ -52,7 +52,7 @@ private void InitializeComponent() this.btnSerialOK.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnSerialOK.ForeColor = System.Drawing.SystemColors.ControlText; this.btnSerialOK.Image = global::AgIO.Properties.Resources.OK64; - this.btnSerialOK.Location = new System.Drawing.Point(509, 304); + this.btnSerialOK.Location = new System.Drawing.Point(498, 292); this.btnSerialOK.Name = "btnSerialOK"; this.btnSerialOK.Size = new System.Drawing.Size(105, 64); this.btnSerialOK.TabIndex = 96; @@ -64,7 +64,7 @@ private void InitializeComponent() this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 23F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); - this.ClientSize = new System.Drawing.Size(610, 364); + this.ClientSize = new System.Drawing.Size(606, 360); this.ControlBox = false; this.Controls.Add(this.btnSerialOK); this.Controls.Add(this.lblMessage2); diff --git a/SourceCode/AgIO/Source/Forms/NMEA.Designer.cs b/SourceCode/AgIO/Source/Forms/NMEA.Designer.cs index a0414e91f..9bcb26872 100644 --- a/SourceCode/AgIO/Source/Forms/NMEA.Designer.cs +++ b/SourceCode/AgIO/Source/Forms/NMEA.Designer.cs @@ -985,9 +985,9 @@ public bool ValidateChecksum(string Sentence) else return false; } } - catch (Exception) + catch (Exception ex) { - //mf.WriteErrorLog("Validate Checksum" + e); + Log.EventWriter("Catch - > Validate NMEA Checksum" + ex.ToString()); return false; } } diff --git a/SourceCode/AgIO/Source/Forms/NTRIPComm.Designer.cs b/SourceCode/AgIO/Source/Forms/NTRIPComm.Designer.cs index 1ab2bcc54..25a7ff00c 100644 --- a/SourceCode/AgIO/Source/Forms/NTRIPComm.Designer.cs +++ b/SourceCode/AgIO/Source/Forms/NTRIPComm.Designer.cs @@ -149,7 +149,6 @@ private void DoNTRIPSecondRoutine() if (ntripCounter > 59) btnStartStopNtrip.Text = (ntripCounter >> 6) + " Min"; else if (ntripCounter < 60 && ntripCounter > 22) btnStartStopNtrip.Text = ntripCounter + " Secs"; else btnStartStopNtrip.Text = "In " + (Math.Abs(ntripCounter - 22)) + " secs"; - } } @@ -246,10 +245,15 @@ public void StartNTRIP() // Connect to server non-Blocking method clientSocket.Blocking = false; clientSocket.BeginConnect(new IPEndPoint(IPAddress.Parse(broadCasterIP), broadCasterPort), new AsyncCallback(OnConnect), null); + + Log.EventWriter("NTRIP - IP: " + broadCasterIP.ToString() + ":" + broadCasterPort.ToString() + + " To Port: " + toUDP_Port.ToString() + " Mount: " + mount); } - catch (Exception) + catch (Exception ex) { ReconnectRequest(); + Log.EventWriter("Catch - > NTRIP Reconnect Request: " + ex.ToString()); + return; } @@ -284,6 +288,7 @@ public void StartNTRIP() isNTRIP_Connecting = false; isNTRIP_Connected = false; isRadio_RequiredOn = false; + Log.EventWriter("Catch - > Error connecting to radio" + ex.ToString()); TimedMessageBox(2000, "Error connecting to radio", $"{ex.Message}"); } @@ -324,6 +329,7 @@ public void StartNTRIP() isNTRIP_Connecting = false; isNTRIP_Connected = false; isSerialPass_RequiredOn = false; + Log.EventWriter("Catch - > Serial Pass Radio: " + ex.ToString()); TimedMessageBox(2000, "Error connecting to Serial Pass", $"{ex.Message}"); } @@ -405,9 +411,10 @@ private void SendAuthorization() isNTRIP_Starting = false; isNTRIP_Connecting = false; } - catch (Exception) + catch (Exception ex) { ReconnectRequest(); + Log.EventWriter("Catch - > NTRIP Send Authourization: " + ex.ToString()); } } @@ -560,8 +567,10 @@ public void SendGGA() Byte[] byteDateLine = Encoding.ASCII.GetBytes(str.ToCharArray()); clientSocket.Send(byteDateLine, byteDateLine.Length, 0); } - catch (Exception) + catch (Exception ex) { + Log.EventWriter("Catch - > Send GGA" + ex.ToString()); + ReconnectRequest(); } } diff --git a/SourceCode/AgIO/Source/Forms/SerialComm.Designer.cs b/SourceCode/AgIO/Source/Forms/SerialComm.Designer.cs index 44fa79641..ad76da006 100644 --- a/SourceCode/AgIO/Source/Forms/SerialComm.Designer.cs +++ b/SourceCode/AgIO/Source/Forms/SerialComm.Designer.cs @@ -121,7 +121,7 @@ public void OpenIMUPort() try { spIMU.Open(); } catch (Exception e) { - //WriteErrorLog("Opening Machine Port" + e.ToString()); + Log.EventWriter("Opening Machine Port" + e.ToString()); MessageBox.Show(e.Message + "\n\r" + "\n\r" + "Go to Settings -> COM Ports to Fix", "No Arduino Port Active"); @@ -164,7 +164,7 @@ public void CloseIMUPort() catch (Exception e) { - //WriteErrorLog("Closing Machine Serial Port" + e.ToString()); + Log.EventWriter("Closing Machine Serial Port" + e.ToString()); MessageBox.Show(e.Message, "Connection already terminated??"); } @@ -293,7 +293,7 @@ private void sp_DataReceivedIMU(object sender, System.IO.Ports.SerialDataReceive } } } - catch (Exception) + catch { ByteList[21] = 0; } @@ -318,8 +318,9 @@ public void SendSteerModulePort(byte[] items, int numItems) { spSteerModule.Write(items, 0, numItems); } - catch (Exception) + catch (Exception ex) { + Log.EventWriter("Catch - > Serial Steer module disconnect: " + ex.ToString()); CloseSteerModulePort(); } } @@ -346,7 +347,7 @@ public void OpenSteerModulePort() } catch (Exception e) { - //WriteErrorLog("Opening Machine Port" + e.ToString()); + Log.EventWriter("Opening Machine Port" + e.ToString()); MessageBox.Show(e.Message + "\n\r" + "\n\r" + "Go to Settings -> COM Ports to Fix", "No Arduino Port Active"); @@ -378,7 +379,7 @@ public void CloseSteerModulePort() try { spSteerModule.Close(); } catch (Exception e) { - //WriteErrorLog("Closing Machine Serial Port" + e.ToString()); + Log.EventWriter("Closing Machine Serial Port" + e.ToString()); MessageBox.Show(e.Message, "Connection already terminated??"); } @@ -529,8 +530,9 @@ public void SendMachineModulePort(byte[] items, int numItems) { spMachineModule.Write(items, 0, numItems); } - catch (Exception) + catch (Exception ex) { + Log.EventWriter("Catch - > Serial Machine module disconnect: " + ex.ToString()); CloseMachineModulePort(); } } @@ -557,7 +559,7 @@ public void OpenMachineModulePort() } catch (Exception e) { - //WriteErrorLog("Opening Machine Port" + e.ToString()); + Log.EventWriter("Opening Machine Port" + e.ToString()); MessageBox.Show(e.Message + "\n\r" + "\n\r" + "Go to Settings -> COM Ports to Fix", "No Arduino Port Active"); @@ -589,7 +591,7 @@ public void CloseMachineModulePort() try { spMachineModule.Close(); } catch (Exception e) { - //WriteErrorLog("Closing Machine Serial Port" + e.ToString()); + Log.EventWriter("Closing Machine Serial Port" + e.ToString()); MessageBox.Show(e.Message, "Connection already terminated??"); } @@ -946,7 +948,6 @@ public void SendGPSPort(byte[] data) catch (Exception) { } - } public void OpenGPSPort() @@ -968,8 +969,10 @@ public void OpenGPSPort() } try { spGPS.Open(); } - catch (Exception) + catch (Exception ex) { + Log.EventWriter("Catch - > Serial GPS Open Fail: " + ex.ToString()); + } if (spGPS.IsOpen) @@ -994,7 +997,7 @@ public void CloseGPSPort() try { spGPS.Close(); } catch (Exception e) { - //WriteErrorLog("Closing GPS Port" + e.ToString()); + Log.EventWriter("Closing GPS Port" + e.ToString()); MessageBox.Show(e.Message, "Connection already terminated?"); } @@ -1085,8 +1088,9 @@ public void OpenGPS2Port() } try { spGPS2.Open(); } - catch (Exception) + catch (Exception ex) { + Log.EventWriter("Catch - > Serial GPS Open Fail: " + ex.ToString()); } if (spGPS2.IsOpen) @@ -1108,7 +1112,7 @@ public void CloseGPS2Port() try { spGPS2.Close(); } catch (Exception e) { - //WriteErrorLog("Closing GPS2 Port" + e.ToString()); + Log.EventWriter("Closing GPS2 Port" + e.ToString()); MessageBox.Show(e.Message, "Connection already terminated?"); } @@ -1153,8 +1157,9 @@ public void OpenRtcmPort() } try { spRtcm.Open(); } - catch (Exception) + catch (Exception ex) { + Log.EventWriter("Catch - > Serial RTCM Open Fail: " + ex.ToString()); } if (spRtcm.IsOpen) @@ -1178,7 +1183,7 @@ public void CloseRtcmPort() try { spRtcm.Close(); } catch (Exception e) { - //WriteErrorLog("Closing GPS Port" + e.ToString()); + Log.EventWriter("Closing RTCM Port" + e.ToString()); MessageBox.Show(e.Message, "Connection already terminated?"); } } diff --git a/SourceCode/AgIO/Source/Forms/UDP.designer.cs b/SourceCode/AgIO/Source/Forms/UDP.designer.cs index 1423598ea..85b8a3937 100644 --- a/SourceCode/AgIO/Source/Forms/UDP.designer.cs +++ b/SourceCode/AgIO/Source/Forms/UDP.designer.cs @@ -100,6 +100,16 @@ public void LoadUDPNetwork() new AsyncCallback(ReceiveDataUDPAsync), null); isUDPNetworkConnected = true; + + if (isUDPNetworkConnected) + { + Log.EventWriter("UDP Network is connected: " + epModule.ToString()); + } + else + { + Log.EventWriter("UDP Network Failed to Connect"); + } + btnUDP.BackColor = Color.LimeGreen; //if (!isFound) @@ -113,7 +123,7 @@ public void LoadUDPNetwork() } catch (Exception e) { - //WriteErrorLog("UDP Server" + e); + Log.EventWriter("Catch -> Load UDP Server" + e); MessageBox.Show(e.Message, "Serious Network Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error); btnUDP.BackColor = Color.Red; @@ -130,10 +140,12 @@ private void LoadLoopback() loopBackSocket.Bind(new IPEndPoint(IPAddress.Loopback, 17777)); loopBackSocket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref endPointLoopBack, new AsyncCallback(ReceiveDataLoopAsync), null); + Log.EventWriter("Loopback is Connected: " + IPAddress.Loopback.ToString() + ":17777"); + } catch (Exception ex) { - //lblStatus.Text = "Error"; + Log.EventWriter("Catch - > Load UDP Loopback Failed: " + ex.ToString()); MessageBox.Show("Load Error: " + ex.Message, "Loopback Server", MessageBoxButtons.OK, MessageBoxIcon.Error); } } @@ -156,9 +168,8 @@ private void SendDataToLoopBack(byte[] byteData, IPEndPoint endPoint) new AsyncCallback(SendDataLoopAsync), null); } } - catch (Exception ex) + catch { - MessageBox.Show("Send Error: " + ex.Message, "UDP Client", MessageBoxButtons.OK, MessageBoxIcon.Error); } } @@ -168,9 +179,8 @@ public void SendDataLoopAsync(IAsyncResult asyncResult) { loopBackSocket.EndSend(asyncResult); } - catch (Exception ex) + catch { - MessageBox.Show("SendData Error: " + ex.Message, "UDP Server", MessageBoxButtons.OK, MessageBoxIcon.Error); } } @@ -248,10 +258,8 @@ private void ReceiveDataLoopAsync(IAsyncResult asyncResult) BeginInvoke((MethodInvoker)(() => ReceiveFromLoopBack(localMsg))); } - catch (Exception) + catch { - //MessageBox.Show("ReceiveData Error: " + ex.Message, "UDP Server", MessageBoxButtons.OK, - //MessageBoxIcon.Error); } } @@ -300,11 +308,8 @@ private void SendDataUDPAsync(IAsyncResult asyncResult) { UDPSocket.EndSend(asyncResult); } - catch (Exception) + catch { - //WriteErrorLog(" UDP Send Data" + e.ToString()); - //MessageBox.Show("SendData Error: " + e.Message, "UDP Server", MessageBoxButtons.OK, - //MessageBoxIcon.Error); } } @@ -329,11 +334,8 @@ private void ReceiveDataUDPAsync(IAsyncResult asyncResult) BeginInvoke((MethodInvoker)(() => ReceiveFromUDP(localMsg))); } - catch (Exception) + catch { - //WriteErrorLog("UDP Recv data " + e.ToString()); - //MessageBox.Show("ReceiveData Error: " + e.Message, "UDP Server", MessageBoxButtons.OK, - //MessageBoxIcon.Error); } } @@ -460,7 +462,6 @@ private void ReceiveFromUDP(byte[] data) } catch { - } } diff --git a/SourceCode/AgIO/Source/Program.cs b/SourceCode/AgIO/Source/Program.cs index 16fdb90f0..1ed67691c 100644 --- a/SourceCode/AgIO/Source/Program.cs +++ b/SourceCode/AgIO/Source/Program.cs @@ -1,6 +1,9 @@ using AgIO.Properties; using Microsoft.Win32; using System; +using System.Configuration; +using System.Globalization; +using System.IO; using System.Threading; using System.Windows.Forms; @@ -16,47 +19,35 @@ internal static class Program [STAThread] private static void Main() { - ////opening the subkey - RegistryKey regKey = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\AgOpenGPS"); + //reset to Default Profile and save + Settings.Default.Reset(); + Settings.Default.Save(); - ////create default keys if not existing - if (regKey == null) - { - RegistryKey Key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\AgOpenGPS"); - - //storing the values - Key.SetValue("Language", "en"); - Key.Close(); + Log.EventWriter("Program Started: " + DateTime.Now.ToString("f", CultureInfo.CreateSpecificCulture(RegistrySettings.culture))); + Log.EventWriter("AgIO Version: " + Application.ProductVersion.ToString(CultureInfo.InvariantCulture)); - Properties.Settings.Default.setF_culture = "en"; - Properties.Settings.Default.Save(); - } - else - { - try - { - Properties.Settings.Default.setF_culture = regKey.GetValue("Language").ToString(); - Properties.Settings.Default.Save(); - regKey.Close(); - } - catch (System.Configuration.ConfigurationErrorsException ex) - { - // Corrupted XML! Delete the file, the user can just reload when this fails to appear. No need to worry them - MessageBoxButtons btns = MessageBoxButtons.OK; - System.Windows.Forms.MessageBox.Show("Error detected in config file - fixing it now, please close this and restart app", "Problem!", btns); - string filename = ((ex.InnerException as System.Configuration.ConfigurationErrorsException)?.Filename) as string; - System.IO.File.Delete(filename); - Settings.Default.Reload(); - Application.Exit(); - } - } + //load the profile name and set profile directory + RegistrySettings.Load(); if (Mutex.WaitOne(TimeSpan.Zero, true)) { + Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(RegistrySettings.culture); + Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(RegistrySettings.culture); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new FormLoop()); } } } -} \ No newline at end of file +} + +//catch (System.Configuration.ConfigurationErrorsException ex) +//{ +// // Corrupted XML! Delete the file, the user can just reload when this fails to appear. No need to worry them +// MessageBoxButtons btns = MessageBoxButtons.OK; +// System.Windows.Forms.MessageBox.Show("Error detected in config file - fixing it now, please close this and restart app", "Problem!", btns); +// string filename = ((ex.InnerException as System.Configuration.ConfigurationErrorsException)?.Filename) as string; +// System.IO.File.Delete(filename); +// Settings.Default.Reload(); +// Application.Exit(); +//} \ No newline at end of file diff --git a/SourceCode/AgIO/Source/Properties/AssemblyInfo.cs b/SourceCode/AgIO/Source/Properties/AssemblyInfo.cs index 550d27450..bb172d527 100644 --- a/SourceCode/AgIO/Source/Properties/AssemblyInfo.cs +++ b/SourceCode/AgIO/Source/Properties/AssemblyInfo.cs @@ -22,16 +22,6 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("c88a8244-47f5-4275-aa35-54cc884e9ede")] -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("6.4.0")] -[assembly: AssemblyFileVersion("6.4.0")] +// Versioning is handled by the GitVersion.MsBuild NuGet package + [assembly: NeutralResourcesLanguage("en-CA")] \ No newline at end of file diff --git a/SourceCode/AgIO/Source/Properties/Resources.Designer.cs b/SourceCode/AgIO/Source/Properties/Resources.Designer.cs index 8d304e88e..6d32276d3 100644 --- a/SourceCode/AgIO/Source/Properties/Resources.Designer.cs +++ b/SourceCode/AgIO/Source/Properties/Resources.Designer.cs @@ -290,6 +290,16 @@ internal static System.Drawing.Bitmap EthernetSetup { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap FileSaveAs { + get { + object obj = ResourceManager.GetObject("FileSaveAs", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -320,6 +330,16 @@ internal static System.Drawing.Bitmap LogNMEA { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap LogViewer { + get { + object obj = ResourceManager.GetObject("LogViewer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -410,6 +430,16 @@ internal static System.Drawing.Bitmap RadioSettings { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Reset_Default { + get { + object obj = ResourceManager.GetObject("Reset_Default", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/SourceCode/AgIO/Source/Properties/Resources.resx b/SourceCode/AgIO/Source/Properties/Resources.resx index df349275e..252b9e218 100644 --- a/SourceCode/AgIO/Source/Properties/Resources.resx +++ b/SourceCode/AgIO/Source/Properties/Resources.resx @@ -124,6 +124,12 @@ ..\btnImages\Com_Module2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\VehFileLoad.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\AgIO_First.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\WindowMinimize.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -136,6 +142,9 @@ ..\btnImages\DeviceManager.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\B_IMU.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\TestRelays.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -160,6 +169,9 @@ ..\btnImages\B_GPS.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ModuleSim2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnimages\trash.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -178,6 +190,9 @@ ..\btnImages\VehFileSave.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\LogViewer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\Edit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -187,15 +202,9 @@ ..\btnImages\Cancel64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\EthernetOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\B_UDP.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Settings48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\DnArrow64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -211,9 +220,6 @@ ..\btnImages\ArrowLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Com_AutosteerModule.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\NTRIP_Client.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -223,8 +229,8 @@ ..\btnImages\ArrowGrnLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ResetTimer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Com_AutosteerModule.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnimages\radiosettings.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -235,11 +241,8 @@ ..\btnImages\UpArrow64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\NtripSettings.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\btnImages\satellite.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\EthernetOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\EthernetSetup.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -250,11 +253,14 @@ ..\btnImages\LogNMEA.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\B_IMU.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\satellite.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\AgIO_First.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Reset_Default.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\Settings48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\SwitchOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -274,13 +280,16 @@ ..\btnImages\SerialMonitor.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\VehFileLoad.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\NtripSettings.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\ResetTimer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\OK64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ModuleSim2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FileSaveAs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/SourceCode/AgIO/Source/Properties/Settings.Designer.cs b/SourceCode/AgIO/Source/Properties/Settings.Designer.cs index ad5af7de3..b201bf85f 100644 --- a/SourceCode/AgIO/Source/Properties/Settings.Designer.cs +++ b/SourceCode/AgIO/Source/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace AgIO.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.12.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -335,30 +335,6 @@ public double setPgm_defaultLon { } } - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("en")] - public string setF_culture { - get { - return ((string)(this["setF_culture"])); - } - set { - this["setF_culture"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Default")] - public string setF_workingDirectory { - get { - return ((string)(this["setF_workingDirectory"])); - } - set { - this["setF_workingDirectory"] = value; - } - } - [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("0")] @@ -383,18 +359,6 @@ public double setGPS_SimLongitude { } } - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string setComm_commName { - get { - return ((string)(this["setComm_commName"])); - } - set { - this["setComm_commName"] = value; - } - } - [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("GPS2")] diff --git a/SourceCode/AgIO/Source/Properties/Settings.settings b/SourceCode/AgIO/Source/Properties/Settings.settings index 7394ee7c2..2b7464eb8 100644 --- a/SourceCode/AgIO/Source/Properties/Settings.settings +++ b/SourceCode/AgIO/Source/Properties/Settings.settings @@ -80,21 +80,12 @@ 0 - - en - - - Default - 0 0 - - - GPS2 diff --git a/SourceCode/AgIO/Source/btnImages/FileSaveAs.png b/SourceCode/AgIO/Source/btnImages/FileSaveAs.png new file mode 100644 index 000000000..3424bca70 Binary files /dev/null and b/SourceCode/AgIO/Source/btnImages/FileSaveAs.png differ diff --git a/SourceCode/AgIO/Source/btnImages/LogViewer.png b/SourceCode/AgIO/Source/btnImages/LogViewer.png new file mode 100644 index 000000000..7734cd867 Binary files /dev/null and b/SourceCode/AgIO/Source/btnImages/LogViewer.png differ diff --git a/SourceCode/AgIO/Source/btnImages/Reset_Default.png b/SourceCode/AgIO/Source/btnImages/Reset_Default.png new file mode 100644 index 000000000..9d68b53af Binary files /dev/null and b/SourceCode/AgIO/Source/btnImages/Reset_Default.png differ diff --git a/SourceCode/AgIO/Source/packages.config b/SourceCode/AgIO/Source/packages.config new file mode 100644 index 000000000..1d2f4c7ff --- /dev/null +++ b/SourceCode/AgIO/Source/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/SourceCode/AgOpenGPS.sln b/SourceCode/AgOpenGPS.sln index 6a585e542..cf87c89e2 100644 --- a/SourceCode/AgOpenGPS.sln +++ b/SourceCode/AgOpenGPS.sln @@ -12,6 +12,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AgIO", "AgIO\Source\AgIO.csproj", "{C88A8244-47F5-4275-AA35-54CC884E9EDE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModSim", "ModSim\Source\ModSim.csproj", "{38E5D197-82BB-42DE-83F8-9D550D09BCDC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GPS_Out", "GPS_Out\Source\GPS_Out.csproj", "{A9BF85B8-2178-479E-B41B-4E7F84D56A79}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution All|Any CPU = All|Any CPU @@ -46,6 +50,30 @@ Global {C88A8244-47F5-4275-AA35-54CC884E9EDE}.Release|Any CPU.Build.0 = Release|Any CPU {C88A8244-47F5-4275-AA35-54CC884E9EDE}.Release|x86.ActiveCfg = Release|Any CPU {C88A8244-47F5-4275-AA35-54CC884E9EDE}.Release|x86.Build.0 = Release|Any CPU + {38E5D197-82BB-42DE-83F8-9D550D09BCDC}.All|Any CPU.ActiveCfg = Debug|Any CPU + {38E5D197-82BB-42DE-83F8-9D550D09BCDC}.All|Any CPU.Build.0 = Debug|Any CPU + {38E5D197-82BB-42DE-83F8-9D550D09BCDC}.All|x86.ActiveCfg = Debug|Any CPU + {38E5D197-82BB-42DE-83F8-9D550D09BCDC}.All|x86.Build.0 = Debug|Any CPU + {38E5D197-82BB-42DE-83F8-9D550D09BCDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {38E5D197-82BB-42DE-83F8-9D550D09BCDC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {38E5D197-82BB-42DE-83F8-9D550D09BCDC}.Debug|x86.ActiveCfg = Debug|Any CPU + {38E5D197-82BB-42DE-83F8-9D550D09BCDC}.Debug|x86.Build.0 = Debug|Any CPU + {38E5D197-82BB-42DE-83F8-9D550D09BCDC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {38E5D197-82BB-42DE-83F8-9D550D09BCDC}.Release|Any CPU.Build.0 = Release|Any CPU + {38E5D197-82BB-42DE-83F8-9D550D09BCDC}.Release|x86.ActiveCfg = Release|Any CPU + {38E5D197-82BB-42DE-83F8-9D550D09BCDC}.Release|x86.Build.0 = Release|Any CPU + {A9BF85B8-2178-479E-B41B-4E7F84D56A79}.All|Any CPU.ActiveCfg = Debug|Any CPU + {A9BF85B8-2178-479E-B41B-4E7F84D56A79}.All|Any CPU.Build.0 = Debug|Any CPU + {A9BF85B8-2178-479E-B41B-4E7F84D56A79}.All|x86.ActiveCfg = Debug|Any CPU + {A9BF85B8-2178-479E-B41B-4E7F84D56A79}.All|x86.Build.0 = Debug|Any CPU + {A9BF85B8-2178-479E-B41B-4E7F84D56A79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A9BF85B8-2178-479E-B41B-4E7F84D56A79}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A9BF85B8-2178-479E-B41B-4E7F84D56A79}.Debug|x86.ActiveCfg = Debug|Any CPU + {A9BF85B8-2178-479E-B41B-4E7F84D56A79}.Debug|x86.Build.0 = Debug|Any CPU + {A9BF85B8-2178-479E-B41B-4E7F84D56A79}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A9BF85B8-2178-479E-B41B-4E7F84D56A79}.Release|Any CPU.Build.0 = Release|Any CPU + {A9BF85B8-2178-479E-B41B-4E7F84D56A79}.Release|x86.ActiveCfg = Release|Any CPU + {A9BF85B8-2178-479E-B41B-4E7F84D56A79}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/SourceCode/GPS/AgOpenGPS.csproj b/SourceCode/GPS/AgOpenGPS.csproj index d4a0f2433..f45f85632 100644 --- a/SourceCode/GPS/AgOpenGPS.csproj +++ b/SourceCode/GPS/AgOpenGPS.csproj @@ -38,7 +38,7 @@ true full false - ..\..\AgOpenGPS_v64\ + ..\..\AgOpenGPS\ DEBUG;TRACE prompt 4 @@ -49,7 +49,7 @@ AnyCPU none true - ..\..\AgOpenGPS_v64\ + ..\..\AgOpenGPS\ TRACE prompt 4 @@ -134,6 +134,8 @@ + + @@ -246,6 +248,12 @@ FormFieldExisting.cs + + Form + + + FormTramLine.cs + Form @@ -706,6 +714,9 @@ FormFieldExisting.cs + + FormTramLine.cs + FormAllSettings.cs @@ -925,15 +936,14 @@ ResXFileCodeGenerator gStr.zh-CHS.Designer.cs + Designer ResXFileCodeGenerator Designer Resources.Designer.cs - - Designer - + SettingsSingleFileGenerator @@ -975,12 +985,18 @@ + + + + + + + + PreserveNewest - - PreserveNewest - + PreserveNewest @@ -1095,9 +1111,6 @@ - - Always - Always @@ -1371,12 +1384,16 @@ + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 56 + + \ No newline at end of file diff --git a/SourceCode/GPS/Forms/Inputs/FormKeyboard.cs b/SourceCode/GPS/Forms/Inputs/FormKeyboard.cs index fc67af542..3957bbe85 100644 --- a/SourceCode/GPS/Forms/Inputs/FormKeyboard.cs +++ b/SourceCode/GPS/Forms/Inputs/FormKeyboard.cs @@ -24,8 +24,7 @@ private void FormKeyboard_Load(object sender, EventArgs e) keyboardString.SelectionLength = 0; keyboard1.Focus(); - string language = Properties.Settings.Default.setF_culture; - if (language == "fr") + if (RegistrySettings.culture == "fr") { this.Height = 575; } diff --git a/SourceCode/GPS/Forms/OpenGL.Designer.cs b/SourceCode/GPS/Forms/OpenGL.Designer.cs index 4f77de47b..5766eeeb1 100644 --- a/SourceCode/GPS/Forms/OpenGL.Designer.cs +++ b/SourceCode/GPS/Forms/OpenGL.Designer.cs @@ -12,6 +12,7 @@ public partial class FormGPS //extracted Near, Far, Right, Left clipping planes of frustum public double[] frustum = new double[24]; + // private bool isInit = false; private double fovy = 0.7; private double camDistanceFactor = -4; @@ -53,6 +54,8 @@ private void oglMain_Resize(object sender, EventArgs e) 1.0f, (float)(camDistanceFactor * camera.camSetDistance)); GL.LoadMatrix(ref mat); GL.MatrixMode(MatrixMode.Modelview); + if (isLineSmooth) GL.Enable(EnableCap.LineSmooth); + else GL.Disable(EnableCap.LineSmooth); } //oglMain rendering, Draw @@ -105,11 +108,9 @@ private void oglMain_Paint(object sender, PaintEventArgs e) //draw patches of sections //direction marker width - double factor = 0.35; - if (tool.width > 35) factor = 0.45; - else if (tool.width > 16) factor = 0.4; + double factor = 0.37; - GL.LineWidth(1); + GL.LineWidth(2); for (int j = 0; j < triStrip.Count; j++) { @@ -181,36 +182,39 @@ private void oglMain_Paint(object sender, PaintEventArgs e) else { for (int i = 1; i < count2; i++) GL.Vertex3(triList[i].easting, triList[i].northing, 0); } GL.End(); - //highlight lines - GL.Color4(0.2,0.2,0.2,1.0); - GL.Begin(PrimitiveType.LineStrip); - - //if large enough patch and camera zoomed out, fake mipmap the patches, skip triangles - if (count2 >= (mipmap + 2)) + if (isSectionlinesOn) { - int step = mipmap; - for (int i = 1; i < count2; i += step + 2) + //highlight lines + GL.Color4(0.2, 0.2, 0.2, 1.0); + GL.Begin(PrimitiveType.LineStrip); + + //if large enough patch and camera zoomed out, fake mipmap the patches, skip triangles + if (count2 >= (mipmap + 2)) { - GL.Vertex3(triList[i].easting, triList[i].northing, 0); - if (count2 - i <= (mipmap + 2)) step = 0;//too small to mipmap it + int step = mipmap; + for (int i = 1; i < count2; i += step + 2) + { + GL.Vertex3(triList[i].easting, triList[i].northing, 0); + if (count2 - i <= (mipmap + 2)) step = 0;//too small to mipmap it + } } - } - else { for (int i = 1; i < count2; i += 2) GL.Vertex3(triList[i].easting, triList[i].northing, 0); } - GL.End(); + else { for (int i = 1; i < count2; i += 2) GL.Vertex3(triList[i].easting, triList[i].northing, 0); } + GL.End(); - GL.Begin(PrimitiveType.LineStrip); - //if large enough patch and camera zoomed out, fake mipmap the patches, skip triangles - if (count2 >= (mipmap + 2)) - { - int step = mipmap; - for (int i = 2; i < count2; i += step + 2) + GL.Begin(PrimitiveType.LineStrip); + //if large enough patch and camera zoomed out, fake mipmap the patches, skip triangles + if (count2 >= (mipmap + 2)) { - GL.Vertex3(triList[i].easting, triList[i].northing, 0); - if (count2 - i <= (mipmap + 2)) step = 0;//too small to mipmap it + int step = mipmap; + for (int i = 2; i < count2; i += step + 2) + { + GL.Vertex3(triList[i].easting, triList[i].northing, 0); + if (count2 - i <= (mipmap + 2)) step = 0;//too small to mipmap it + } } + else { for (int i = 2; i < count2; i += 2) GL.Vertex3(triList[i].easting, triList[i].northing, 0); } + GL.End(); } - else { for (int i = 2; i < count2; i += 2) GL.Vertex3(triList[i].easting, triList[i].northing, 0); } - GL.End(); if (isDirectionMarkers) @@ -271,28 +275,36 @@ private void oglMain_Paint(object sender, PaintEventArgs e) if (isDay) GL.Color4(tool.secColors[j].R, tool.secColors[j].G, tool.secColors[j].B, (byte)152); else GL.Color4(tool.secColors[j].R, tool.secColors[j].G, tool.secColors[j].B, (byte)(76)); } - patchCount = triStrip[j].patchList.Count; + patchCount = triStrip[j].patchList.Count-1; + + if (patchCount > 0) + { + try + { + //draw the triangle in each triangle strip + GL.Begin(PrimitiveType.TriangleStrip); - //draw the triangle in each triangle strip - GL.Begin(PrimitiveType.TriangleStrip); + //left side of triangle + vec2 pt = new vec2((cosSectionHeading * section[triStrip[j].currentStartSectionNum].positionLeft) + toolPos.easting, + (sinSectionHeading * section[triStrip[j].currentStartSectionNum].positionLeft) + toolPos.northing); - //left side of triangle - vec2 pt = new vec2((cosSectionHeading * section[triStrip[j].currentStartSectionNum].positionLeft) + toolPos.easting, - (sinSectionHeading * section[triStrip[j].currentStartSectionNum].positionLeft) + toolPos.northing); + GL.Vertex3(pt.easting, pt.northing, 0); - GL.Vertex3(pt.easting, pt.northing, 0); + //Right side of triangle + pt = new vec2((cosSectionHeading * section[triStrip[j].currentEndSectionNum].positionRight) + toolPos.easting, + (sinSectionHeading * section[triStrip[j].currentEndSectionNum].positionRight) + toolPos.northing); - //Right side of triangle - pt = new vec2((cosSectionHeading * section[triStrip[j].currentEndSectionNum].positionRight) + toolPos.easting, - (sinSectionHeading * section[triStrip[j].currentEndSectionNum].positionRight) + toolPos.northing); + GL.Vertex3(pt.easting, pt.northing, 0); - GL.Vertex3(pt.easting, pt.northing, 0); + int last = triStrip[j].patchList[patchCount].Count; - int last = triStrip[j].patchList[patchCount - 1].Count; - //antenna - GL.Vertex3(triStrip[j].patchList[patchCount - 1][last - 2].easting, triStrip[j].patchList[patchCount - 1][last - 2].northing, 0); - GL.Vertex3(triStrip[j].patchList[patchCount - 1][last - 1].easting, triStrip[j].patchList[patchCount - 1][last - 1].northing, 0); - GL.End(); + GL.Vertex3(triStrip[j].patchList[patchCount][last - 2].easting, triStrip[j].patchList[patchCount][last - 2].northing, 0); + GL.Vertex3(triStrip[j].patchList[patchCount][last - 1].easting, triStrip[j].patchList[patchCount][last - 1].northing, 0); + GL.End(); + } + catch + { } + } } } } @@ -318,31 +330,6 @@ private void oglMain_Paint(object sender, PaintEventArgs e) // } //} - //draw contour line if button on - if (ct.isContourBtnOn) - { - ct.DrawContourLine(); - } - else// draw the current and reference AB Lines or CurveAB Ref and line - { - //when switching lines, draw the ghost - if (trk.idx > -1) - { - if (trk.gArr[trk.idx].mode == TrackMode.AB) - ABLine.DrawABLines(); - else - curve.DrawCurve(); - } - } - - //draw line creations - if (curve.isMakingCurve) curve.DrawCurveNew(); - - if (ABLine.isMakingABLine) ABLine.DrawABLineNew(); - - recPath.DrawRecordedLine(); - recPath.DrawDubins(); - if (bnd.bndList.Count > 0 || bnd.isBndBeingMade == true) { //draw Boundaries @@ -353,7 +340,16 @@ private void oglMain_Paint(object sender, PaintEventArgs e) //draw the turnLines if (yt.isYouTurnBtnOn && !ct.isContourBtnOn) { - GL.Color3(0.3555f, 0.6232f, 0.20f); + GL.LineWidth(ABLine.lineWidth * 3); + GL.Color4(0, 0, 0, 0.80f); + + for (int i = 0; i < bnd.bndList.Count; i++) + { + bnd.bndList[i].turnLine.DrawPolygon(); + } + + GL.Color3(0.76f, 0.6f, 0.95f); + GL.LineWidth(ABLine.lineWidth); for (int i = 0; i < bnd.bndList.Count; i++) { bnd.bndList[i].turnLine.DrawPolygon(); @@ -363,16 +359,42 @@ private void oglMain_Paint(object sender, PaintEventArgs e) //Draw headland if (bnd.isHeadlandOn) { - GL.LineWidth(6); - GL.Color4(0,0,0,0.8); + GL.LineWidth(ABLine.lineWidth*3); + + GL.Color4(0,0,0, 0.80f); bnd.bndList[0].hdLine.DrawPolygon(); - GL.LineWidth(2); - GL.Color4(0.960f, 0.96232f, 0.30f, 0.8); + GL.LineWidth(ABLine.lineWidth); + GL.Color4(0.960f, 0.96232f, 0.30f, 1.0f); bnd.bndList[0].hdLine.DrawPolygon(); } } + //draw contour line if button on + if (ct.isContourBtnOn) + { + ct.DrawContourLine(); + } + else// draw the current and reference AB Lines or CurveAB Ref and line + { + //when switching lines, draw the ghost + if (trk.idx > -1) + { + if (trk.gArr[trk.idx].mode == TrackMode.AB) + ABLine.DrawABLines(); + else + curve.DrawCurve(); + } + } + + //draw line creations + if (curve.isMakingCurve) curve.DrawCurveNew(); + + if (ABLine.isMakingABLine) ABLine.DrawABLineNew(); + + recPath.DrawRecordedLine(); + recPath.DrawDubins(); + if (flagPts.Count > 0) DrawFlags(); //Direct line to flag if flag selected @@ -484,17 +506,17 @@ private void oglMain_Paint(object sender, PaintEventArgs e) if (isRTK_AlarmOn) { if (pn.fixQuality != 4) - { + { if (!sounds.isRTKAlarming) { if (isRTK_KillAutosteer && isBtnAutoSteerOn) { btnAutoSteer.PerformClick(); TimedMessageBox(2000, "Autosteer Turned Off", "RTK Fix Alarm"); - SystemEventWriter("Autosteer Off, RTK Fix Alarm"); + Log.EventWriter("Autosteer Off, RTK Fix Alarm"); } - SystemEventWriter("RTK Alarm Fix is Lost"); + Log.EventWriter("RTK Alarm Fix is Lost"); sounds.sndRTKAlarm.Play(); } sounds.isRTKAlarming = true; @@ -506,6 +528,9 @@ private void oglMain_Paint(object sender, PaintEventArgs e) } } + bool isPreRelease = !string.IsNullOrEmpty(GitVersionInformation.PreReleaseTag); + if (isPreRelease) DrawBeta(); + if (pn.age > pn.ageAlarm) DrawAge(); //at least one track @@ -733,7 +758,7 @@ private void oglBack_Paint(object sender, PaintEventArgs e) #region Draw to Back Buffer //patch color - GL.Color3(0.0f, 0.5f, 0.0f); + GL.Color3((byte)0, (byte)127, (byte)0); //to draw or not the triangle patch bool isDraw; @@ -928,6 +953,9 @@ private void oglBack_Paint(object sender, PaintEventArgs e) //slope of the look ahead line double mOn = 0, mOff = 0; + double theta = mOn = (tool.lookAheadDistanceOnPixelsRight - tool.lookAheadDistanceOnPixelsLeft) / tool.rpWidth; + double deg = glm.toDegrees(Math.Atan(theta)); + //tram and hydraulics if (tram.displayMode > 0 && tool.width > vehicle.trackWidth) { @@ -1024,7 +1052,7 @@ private void oglBack_Paint(object sender, PaintEventArgs e) if (end >= tool.rpWidth) end = tool.rpWidth - 1; - totalPixel = 1; + totalPixel = 0; tagged = 0; for (int pos = start; pos <= end; pos++) @@ -1032,15 +1060,22 @@ private void oglBack_Paint(object sender, PaintEventArgs e) startHeight = (int)(tool.lookAheadDistanceOffPixelsLeft + (mOff * pos)) * tool.rpWidth + pos; endHeight = (int)(tool.lookAheadDistanceOnPixelsLeft + (mOn * pos)) * tool.rpWidth + pos; - for (int a = startHeight; a <= endHeight; a += tool.rpWidth) + //for (int a = startHeight; a <= endHeight; a += tool.rpWidth) { - totalPixel++; - if (grnPixels[a] == 0) tagged++; + //totalPixel++; + if (grnPixels[endHeight] == 0) tagged++; + if (grnPixels[startHeight] == 127) totalPixel++; } } //determine if meeting minimum coverage - section[j].isSectionRequiredOn = ((tagged * 100) / totalPixel > (100 - tool.minCoverage)); + totalPixel --; + //if (tagged != 0) + section[j].isSectionRequiredOn = true; + + //check for off + if (tagged == 0 && totalPixel == (end-start)) + section[j].isSectionRequiredOn = false; //logic if in or out of boundaries or headland if (bnd.bndList.Count > 0) @@ -1345,6 +1380,13 @@ private void oglBack_Paint(object sender, PaintEventArgs e) //oglBack.MakeCurrent(); //oglBack.SwapBuffers(); + //file writer that runs all the time + if (fileSaveAlwaysCounter > 60) + { + fileSaveAlwaysCounter = 0; + //if (sbMissedSentence.Length > 0) FileSaveMissedEvents(); + } + //if a minute has elapsed save the field in case of crash and to be able to resume if (fileSaveCounter > 30 && sentenceCounter < 20) { @@ -1376,6 +1418,8 @@ private void oglBack_Paint(object sender, PaintEventArgs e) oglZoom.Refresh(); } + + //this is the end of the "frame". Now we wait for next NMEA sentence with a valid fix. } @@ -1981,6 +2025,7 @@ private void DrawTramMarkers() private void MakeFlagMark() { + leftMouseDownOnOpenGL = false; try @@ -2026,7 +2071,6 @@ private void MakeFlagMark() private void DrawFlags() { - try { int flagCnt = flagPts.Count; @@ -2719,7 +2763,13 @@ private void DrawLostRTK() font.DrawText(-oglMain.Width / 3, oglMain.Height/3, "RTK Fix Lost", 2); } - private void DrawAge() + private void DrawBeta() + { + GL.Color3(1f, 1f, 1f); + font.DrawText(-oglMain.Width / 2.1, oglMain.Height / 1.2, "Beta Testing v" + GitVersionInformation.SemVer, 0.8); + } + + private void DrawAge() { GL.Color3(0.9752f, 0.52f, 0.0f); font.DrawText(oglMain.Width / 4, 60, "Age:" + pn.age.ToString("N1"), 1.5); diff --git a/SourceCode/GPS/Forms/PGN.Designer.cs b/SourceCode/GPS/Forms/PGN.Designer.cs index e67078881..d55398382 100644 --- a/SourceCode/GPS/Forms/PGN.Designer.cs +++ b/SourceCode/GPS/Forms/PGN.Designer.cs @@ -444,9 +444,6 @@ public class CPGN_E4 //public int = 12; } - - - //pgn instances /// diff --git a/SourceCode/GPS/Forms/Pickers/FormDrivePicker.cs b/SourceCode/GPS/Forms/Pickers/FormDrivePicker.cs index 001000a37..9c981f74f 100644 --- a/SourceCode/GPS/Forms/Pickers/FormDrivePicker.cs +++ b/SourceCode/GPS/Forms/Pickers/FormDrivePicker.cs @@ -1,4 +1,5 @@ using System; +using System.IO; using System.Windows.Forms; namespace AgOpenGPS @@ -33,7 +34,7 @@ private void btnOpenExistingLv_Click(object sender, EventArgs e) int count = lvLines.SelectedItems.Count; if (count > 0) { - mf.filePickerFileAndDirectory = (mf.fieldsDirectory + lvLines.SelectedItems[0].SubItems[0].Text + "\\Field.txt"); + mf.filePickerFileAndDirectory = Path.Combine(RegistrySettings.fieldsDirectory, lvLines.SelectedItems[0].SubItems[0].Text, "Field.txt"); Close(); } } diff --git a/SourceCode/GPS/Forms/Pickers/FormFilePicker.cs b/SourceCode/GPS/Forms/Pickers/FormFilePicker.cs index 1101bf2ba..8f9ab2868 100644 --- a/SourceCode/GPS/Forms/Pickers/FormFilePicker.cs +++ b/SourceCode/GPS/Forms/Pickers/FormFilePicker.cs @@ -31,14 +31,14 @@ private void FormFilePicker_Load(object sender, EventArgs e) timer1.Enabled = true; ListViewItem itm; - string[] dirs = Directory.GetDirectories(mf.fieldsDirectory); + string[] dirs = Directory.GetDirectories(RegistrySettings.fieldsDirectory); //fileList?.Clear(); if (dirs == null || dirs.Length < 1) { mf.TimedMessageBox(2000, gStr.gsCreateNewField, gStr.gsFileError); - mf.SystemEventWriter("File Picker, No Fields"); + Log.EventWriter("File Picker, No Fields"); Close(); return; } @@ -49,7 +49,7 @@ private void FormFilePicker_Load(object sender, EventArgs e) double lonStart = 0; double distance = 0; string fieldDirectory = Path.GetFileName(dir); - string filename = dir + "\\Field.txt"; + string filename = Path.Combine(dir, "Field.txt"); string line; //make sure directory has a field.txt in it @@ -90,11 +90,11 @@ private void FormFilePicker_Load(object sender, EventArgs e) fileList.Add("Error"); } } - catch (Exception) + catch (Exception eg) { MessageBox.Show(fieldDirectory + " is Damaged, Please Delete, Field.txt is Broken", gStr.gsFileError, MessageBoxButtons.OK, MessageBoxIcon.Error); - + Log.EventWriter("Field.txt is Broken" + eg.ToString()); fileList.Add(fieldDirectory); fileList.Add("Error"); } @@ -103,7 +103,7 @@ private void FormFilePicker_Load(object sender, EventArgs e) else continue; //grab the boundary area - filename = dir + "\\Boundary.txt"; + filename = Path.Combine(dir, "Boundary.txt"); if (File.Exists(filename)) { List pointList = new List(); @@ -175,6 +175,7 @@ private void FormFilePicker_Load(object sender, EventArgs e) catch (Exception) { area = 0; + Log.EventWriter("Field.txt is Broken" + e.ToString()); } } if (area == 0) fileList.Add("No Bndry"); @@ -188,13 +189,13 @@ private void FormFilePicker_Load(object sender, EventArgs e) MessageBoxButtons.OK, MessageBoxIcon.Error); } - filename = dir + "\\Field.txt"; + filename = Path.Combine(dir, "Field.txt"); } if (fileList == null || fileList.Count < 1) { mf.TimedMessageBox(2000, gStr.gsNoFieldsFound, gStr.gsCreateNewField); - mf.SystemEventWriter("File Picker, No fields Sorted"); + Log.EventWriter("File Picker, No fields Sorted"); Close(); return; } @@ -221,7 +222,7 @@ private void FormFilePicker_Load(object sender, EventArgs e) else { mf.TimedMessageBox(2000, gStr.gsNoFieldsFound, gStr.gsCreateNewField); - mf.SystemEventWriter("File Picker, No Line items"); + Log.EventWriter("File Picker, No Line items"); Close(); return; } @@ -309,9 +310,9 @@ private void btnOpenExistingLv_Click(object sender, EventArgs e) else { if (order == 0) mf.filePickerFileAndDirectory = - (mf.fieldsDirectory + lvLines.SelectedItems[0].SubItems[0].Text + "\\Field.txt"); + Path.Combine(RegistrySettings.fieldsDirectory, lvLines.SelectedItems[0].SubItems[0].Text, "Field.txt"); else mf.filePickerFileAndDirectory = - (mf.fieldsDirectory + lvLines.SelectedItems[0].SubItems[1].Text + "\\Field.txt"); + Path.Combine(RegistrySettings.fieldsDirectory, lvLines.SelectedItems[0].SubItems[1].Text, "Field.txt"); Close(); } } @@ -328,8 +329,10 @@ private void btnDeleteField_Click(object sender, EventArgs e) string dir2Delete; if (count > 0) { - if (order == 0) dir2Delete = (mf.fieldsDirectory + lvLines.SelectedItems[0].SubItems[0].Text); - else dir2Delete = (mf.fieldsDirectory + lvLines.SelectedItems[0].SubItems[1].Text); + if (order == 0) + dir2Delete = Path.Combine(RegistrySettings.fieldsDirectory, lvLines.SelectedItems[0].SubItems[0].Text); + else + dir2Delete = Path.Combine(RegistrySettings.fieldsDirectory, lvLines.SelectedItems[0].SubItems[1].Text); DialogResult result3 = MessageBox.Show( dir2Delete, @@ -347,7 +350,7 @@ private void btnDeleteField_Click(object sender, EventArgs e) ListViewItem itm; - string[] dirs = Directory.GetDirectories(mf.fieldsDirectory); + string[] dirs = Directory.GetDirectories(RegistrySettings.fieldsDirectory); fileList?.Clear(); @@ -357,7 +360,7 @@ private void btnDeleteField_Click(object sender, EventArgs e) double lonStart = 0; double distance = 0; string fieldDirectory = Path.GetFileName(dir); - string filename = dir + "\\Field.txt"; + string filename = Path.Combine(dir, "Field.txt"); string line; //make sure directory has a field.txt in it @@ -402,14 +405,14 @@ private void btnDeleteField_Click(object sender, EventArgs e) { MessageBox.Show(fieldDirectory + " is Damaged, Please Delete, Field.txt is Broken", gStr.gsFileError, MessageBoxButtons.OK, MessageBoxIcon.Error); - + Log.EventWriter("Field.txt is Broken" + e.ToString()); fileList.Add(fieldDirectory); fileList.Add("Error"); } } //grab the boundary area - filename = dir + "\\Boundary.txt"; + filename = Path.Combine(dir, "Boundary.txt"); if (File.Exists(filename)) { List pointList = new List(); @@ -481,6 +484,7 @@ private void btnDeleteField_Click(object sender, EventArgs e) catch (Exception) { area = 0; + Log.EventWriter("Field.txt is Broken" + e.ToString()); } } if (area == 0) fileList.Add("No Bndry"); diff --git a/SourceCode/GPS/Forms/Pickers/FormRecordPicker.cs b/SourceCode/GPS/Forms/Pickers/FormRecordPicker.cs index 4a9e7f7b9..8bef5e76e 100644 --- a/SourceCode/GPS/Forms/Pickers/FormRecordPicker.cs +++ b/SourceCode/GPS/Forms/Pickers/FormRecordPicker.cs @@ -30,7 +30,7 @@ private void LoadList() { ListViewItem itm; - string fieldDir = mf.fieldsDirectory + mf.currentFieldDirectory; + string fieldDir = Path.Combine(RegistrySettings.fieldsDirectory, mf.currentFieldDirectory); string[] files = Directory.GetFiles(fieldDir); @@ -44,7 +44,7 @@ private void LoadList() { if (file.EndsWith(".rec")) { - string recordName = file.Replace(".rec", "").Replace(fieldDir, "").Replace("\\", ""); + string recordName = Path.GetFileNameWithoutExtension(file); itm = new ListViewItem(recordName); lvLines.Items.Add(itm); } @@ -64,11 +64,11 @@ private void btnOpenExistingLv_Click(object sender, EventArgs e) if (count > 0) { string selectedRecord = lvLines.SelectedItems[0].SubItems[0].Text; - string selectedRecordPath = mf.fieldsDirectory + mf.currentFieldDirectory + "\\" + selectedRecord + ".rec"; + string selectedRecordPath = Path.Combine(RegistrySettings.fieldsDirectory, mf.currentFieldDirectory, selectedRecord + ".rec"); // Copy the selected record file to the original record name inside the field dir: // ( this will load the last selected path automatically when this field is opened again) - File.Copy(selectedRecordPath, mf.fieldsDirectory + mf.currentFieldDirectory + "\\RecPath.txt", true); + File.Copy(selectedRecordPath, Path.Combine(RegistrySettings.fieldsDirectory, mf.currentFieldDirectory, "RecPath.txt"), true); // and load the selected path into the recPath object: string line; if (File.Exists(selectedRecordPath)) @@ -103,9 +103,8 @@ private void btnOpenExistingLv_Click(object sender, EventArgs e) } catch (Exception ex) { - var form = new FormTimedMessage(2000, gStr.gsRecordedPathFileIsCorrupt, gStr.gsButFieldIsLoaded); - form.Show(this); - mf.WriteErrorLog("Load Recorded Path" + ex.ToString()); + mf.TimedMessageBox(2000, gStr.gsRecordedPathFileIsCorrupt, gStr.gsButFieldIsLoaded); + Log.EventWriter("Load Recorded Path" + ex.ToString()); } } } @@ -119,7 +118,7 @@ private void btnDeleteField_Click(object sender, EventArgs e) if (count > 0) { string selectedRecord = lvLines.SelectedItems[0].SubItems[0].Text; - dir2Delete = mf.fieldsDirectory + mf.currentFieldDirectory + "\\" + selectedRecord + ".rec"; + dir2Delete = Path.Combine(RegistrySettings.fieldsDirectory, mf.currentFieldDirectory, selectedRecord + ".rec"); DialogResult result3 = MessageBox.Show( dir2Delete, diff --git a/SourceCode/GPS/Forms/Position.designer.cs b/SourceCode/GPS/Forms/Position.designer.cs index 7f9c6b5eb..dd43a4c54 100644 --- a/SourceCode/GPS/Forms/Position.designer.cs +++ b/SourceCode/GPS/Forms/Position.designer.cs @@ -274,7 +274,7 @@ public void UpdateFixPosition() isFirstHeadingSet = true; TimedMessageBox(2000, "Direction Reset", "Forward is Set"); - SystemEventWriter("Forward Is Set"); + Log.EventWriter("Forward Is Set"); lastGPS = pn.fix; @@ -778,13 +778,13 @@ public void UpdateFixPosition() //if (isFirstHeadingSet && jumpDistanceAlarm > 0 && jumpDistance > jumpDistanceAlarm) //{ - // SystemEventWriter(": " + jumpDistance.ToString("N0") + " cm"); + // Log.EventWriter(": " + jumpDistance.ToString("N0") + " cm"); // if (isBtnAutoSteerOn) // { // btnAutoSteer.PerformClick(); // TimedMessageBox(3000, gStr.gsAutoSteer, "Big Jump in GPS position:" + jumpDistance.ToString("N0") + " cm"); - // SystemEventWriter("Autosteer Off, Jump in GPS position: " + jumpDistance.ToString("N0") + " cm"); + // Log.EventWriter("Autosteer Off, Jump in GPS position: " + jumpDistance.ToString("N0") + " cm"); // } //} @@ -917,7 +917,7 @@ public void UpdateFixPosition() else TimedMessageBox(3000, "AutoSteer Disabled", "Below Minimum Safe Steering Speed: " + (vehicle.minSteerSpeed * 0.621371).ToString("N1") + " MPH"); - SystemEventWriter("Steer Off, Below Min Steering Speed"); + Log.EventWriter("Steer Off, Below Min Steering Speed"); } } else @@ -926,27 +926,27 @@ public void UpdateFixPosition() } } - double tanSteerAngle = Math.Tan(glm.toRadians(((double)(guidanceLineSteerAngle)) * 0.01)); - double tanActSteerAngle = Math.Tan(glm.toRadians(mc.actualSteerAngleDegrees)); + //double tanSteerAngle = Math.Tan(glm.toRadians(((double)(guidanceLineSteerAngle)) * 0.01)); + //double tanActSteerAngle = Math.Tan(glm.toRadians(mc.actualSteerAngleDegrees)); - setAngVel = 0.277777 * avgSpeed * tanSteerAngle / vehicle.wheelbase; - actAngVel = glm.toDegrees(0.277777 * avgSpeed * tanActSteerAngle / vehicle.wheelbase); + //setAngVel = 0.277777 * avgSpeed * tanSteerAngle / vehicle.wheelbase; + //actAngVel = glm.toDegrees(0.277777 * avgSpeed * tanActSteerAngle / vehicle.wheelbase); - isMaxAngularVelocity = false; - //greater then settings rads/sec limit steer angle - if (Math.Abs(setAngVel) > vehicle.maxAngularVelocity) - { - setAngVel = vehicle.maxAngularVelocity; - tanSteerAngle = 3.6 * setAngVel * vehicle.wheelbase / avgSpeed; - if (guidanceLineSteerAngle < 0) - guidanceLineSteerAngle = (short)(glm.toDegrees(Math.Atan(tanSteerAngle)) * -100); - else - guidanceLineSteerAngle = (short)(glm.toDegrees(Math.Atan(tanSteerAngle)) * 100); - isMaxAngularVelocity = true; - } + //isMaxAngularVelocity = false; + ////greater then settings rads/sec limit steer angle + //if (Math.Abs(setAngVel) > vehicle.maxAngularVelocity) + //{ + // setAngVel = vehicle.maxAngularVelocity; + // tanSteerAngle = 3.6 * setAngVel * vehicle.wheelbase / avgSpeed; + // if (guidanceLineSteerAngle < 0) + // guidanceLineSteerAngle = (short)(glm.toDegrees(Math.Atan(tanSteerAngle)) * -100); + // else + // guidanceLineSteerAngle = (short)(glm.toDegrees(Math.Atan(tanSteerAngle)) * 100); + // isMaxAngularVelocity = true; + //} - setAngVel = glm.toDegrees(setAngVel); + //setAngVel = glm.toDegrees(setAngVel); if (isChangingDirection && ahrs.imuHeading == 99999) p_254.pgn[p_254.status] = 0; @@ -1058,7 +1058,7 @@ public void UpdateFixPosition() if (sounds.isTurnSoundOn) { sounds.sndUTurnTooClose.Play(); - SystemEventWriter("U Turn Creation Failure"); + Log.EventWriter("U Turn Creation Failure"); } } } @@ -1196,17 +1196,17 @@ private void TheRest() //distance = glm.Distance(pn.fix, prevFix); //if (avgSpeed > 1) - if ((avgSpeed - previousSpeed ) < -vehicle.panicStopSpeed && vehicle.panicStopSpeed != 0) - { - if (isBtnAutoSteerOn) - { - btnAutoSteer.PerformClick(); - TimedMessageBox(2000, gStr.gsGuidanceStopped, "Panic Stop"); - SystemEventWriter("Steer Off, Panic Stop Exceeded"); - } - } + //if ((avgSpeed - previousSpeed ) < -vehicle.panicStopSpeed && vehicle.panicStopSpeed != 0) + //{ + // if (isBtnAutoSteerOn) + // { + // btnAutoSteer.PerformClick(); + // TimedMessageBox(2000, gStr.gsGuidanceStopped, "Panic Stop"); + // Log.EventWriter("Steer Off, Panic Stop Exceeded"); + // } + //} - previousSpeed = avgSpeed; + //previousSpeed = avgSpeed; } //all the hitch, pivot, section, trailing hitch, headings and fixes @@ -1319,29 +1319,31 @@ private void CalculatePositionHeading() //used to increase triangle countExit when going around corners, less on straight //pick the slow moving side edge of tool - double distance = tool.width * 0.5; - //if (distance > 5) distance = 5; + double distance = tool.width*0.75; + if (distance > 8) distance = 8; //whichever is less if (tool.farLeftSpeed < tool.farRightSpeed) { - double twist = tool.farLeftSpeed / tool.farRightSpeed; + double twist = tool.farLeftSpeed * (tool.width / 50) / tool.farRightSpeed * (50/ tool.width); twist *= twist; if (twist < 0.2) twist = 0.2; - sectionTriggerStepDistance = distance * twist * twist; + sectionTriggerStepDistance = distance * twist; } else { - double twist = tool.farRightSpeed / tool.farLeftSpeed; + double twist = tool.farRightSpeed * (tool.width / 50) / tool.farLeftSpeed * (50 / tool.width); twist *= twist; if (twist < 0.2) twist = 0.2; - sectionTriggerStepDistance = distance * twist * twist; + sectionTriggerStepDistance = distance * twist; } + if (sectionTriggerStepDistance < 1) sectionTriggerStepDistance = 1; + //if (sectionTriggerStepDistance > 5) sectionTriggerStepDistance = 5; + //finally fixed distance for making a curve line - if (!curve.isRecordingCurve) sectionTriggerStepDistance = sectionTriggerStepDistance + 1.0; - //if (ct.isContourBtnOn) sectionTriggerStepDistance *=0.5; + if (curve.isRecordingCurve) sectionTriggerStepDistance *= 0.5; //precalc the sin and cos of heading * -1 sinSectionHeading = Math.Sin(-toolPivotPos.heading); @@ -1456,27 +1458,49 @@ public void AddBoundaryPoint() //build the boundary line - if (bnd.isOkToAddPoints) + if (bnd.isOkToAddPoints && (!bnd.isRecBoundaryWhenSectionOn || + (bnd.isRecBoundaryWhenSectionOn && (manualBtnState == btnStates.On || autoBtnState == btnStates.Auto)))) { - if (bnd.isDrawRightSide) + if (bnd.isDrawAtPivot) { - //Right side - vec3 point = new vec3( - pivotAxlePos.easting + (Math.Sin(pivotAxlePos.heading - glm.PIBy2) * -bnd.createBndOffset), - pivotAxlePos.northing + (Math.Cos(pivotAxlePos.heading - glm.PIBy2) * -bnd.createBndOffset), - pivotAxlePos.heading); - bnd.bndBeingMadePts.Add(point); - } + if (bnd.isDrawRightSide) + { + //Right side + vec3 point = new vec3( + pivotAxlePos.easting + (Math.Sin(pivotAxlePos.heading - glm.PIBy2) * -bnd.createBndOffset), + pivotAxlePos.northing + (Math.Cos(pivotAxlePos.heading - glm.PIBy2) * -bnd.createBndOffset), + pivotAxlePos.heading); + bnd.bndBeingMadePts.Add(point); + } - //draw on left side + //draw on left side + else + { + //Right side + vec3 point = new vec3( + pivotAxlePos.easting + (Math.Sin(pivotAxlePos.heading - glm.PIBy2) * bnd.createBndOffset), + pivotAxlePos.northing + (Math.Cos(pivotAxlePos.heading - glm.PIBy2) * bnd.createBndOffset), + pivotAxlePos.heading); + bnd.bndBeingMadePts.Add(point); + } + } else { - //Right side - vec3 point = new vec3( - pivotAxlePos.easting + (Math.Sin(pivotAxlePos.heading - glm.PIBy2) * bnd.createBndOffset), - pivotAxlePos.northing + (Math.Cos(pivotAxlePos.heading - glm.PIBy2) * bnd.createBndOffset), - pivotAxlePos.heading); - bnd.bndBeingMadePts.Add(point); + //draw at tool + if (bnd.isDrawRightSide) + { + //Right side + vec3 point = new vec3(section[tool.numOfSections-1].rightPoint.easting, section[tool.numOfSections - 1].rightPoint.northing, 0); + bnd.bndBeingMadePts.Add(point); + } + + //draw on left side + else + { + //Right side + vec3 point = new vec3(section[0].leftPoint.easting, section[0].leftPoint.northing, 0); + bnd.bndBeingMadePts.Add(point); + } } } } diff --git a/SourceCode/GPS/Forms/SaveOpen.Designer.cs b/SourceCode/GPS/Forms/SaveOpen.Designer.cs index ffcf0447f..9b21d3c18 100644 --- a/SourceCode/GPS/Forms/SaveOpen.Designer.cs +++ b/SourceCode/GPS/Forms/SaveOpen.Designer.cs @@ -27,9 +27,8 @@ public void ExportFieldAs_ISOXMLv3() //if (bnd.bndList.Count < 1) return;//If no Bnd, Quit //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\zISOXML\\v3\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "zISOXML", "v3"); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } @@ -40,7 +39,7 @@ public void ExportFieldAs_ISOXMLv3() XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.IndentChars = " "; - XmlWriter xml = XmlWriter.Create(dirField + myFileName, settings); + XmlWriter xml = XmlWriter.Create(Path.Combine(directoryName, myFileName), settings); xml.WriteStartElement("ISO11783_TaskData");//Settings xml.WriteAttributeString("DataTransferOrigin", "1"); @@ -211,9 +210,10 @@ public void ExportFieldAs_ISOXMLv3() xml.Close(); } - catch (Exception) + catch (Exception e) { - //throw; + TimedMessageBox(2000, "ISOXML Exception ", e.ToString()); + Log.EventWriter("Export field as ISOXML Exception" + e); } } @@ -222,9 +222,8 @@ public void ExportFieldAs_ISOXMLv4() int lineCounter = 0; //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\zISOXML\\v4\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "zISOXML", "v4"); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } @@ -235,7 +234,7 @@ public void ExportFieldAs_ISOXMLv4() XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.IndentChars = " "; - XmlWriter xml = XmlWriter.Create(dirField + myFileName, settings); + XmlWriter xml = XmlWriter.Create(Path.Combine(directoryName, myFileName), settings); xml.WriteStartElement("ISO11783_TaskData");//Settings xml.WriteAttributeString("DataTransferOrigin", "1"); @@ -451,7 +450,7 @@ public void ExportFieldAs_ISOXMLv4() } catch (Exception e) { - Console.WriteLine(e.Message); + Log.EventWriter("Export Field as ISOXML: " + e.Message); } /* @@ -470,13 +469,12 @@ public void ExportFieldAs_ISOXMLv4() public void FileSaveHeadLines() { - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + if (!string.IsNullOrEmpty(directoryName) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } - string filename = directoryName + "\\Headlines.txt"; + string filename = Path.Combine(directoryName, "Headlines.txt"); int cnt = hdl.tracksArr.Count; @@ -524,7 +522,7 @@ public void FileSaveHeadLines() } catch (Exception er) { - WriteErrorLog("Saving Head Lines" + er.ToString()); + Log.EventWriter("Saving Head Lines" + er.ToString()); return; } @@ -536,13 +534,12 @@ public void FileLoadHeadLines() hdl.tracksArr?.Clear(); //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField); + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } - string filename = directoryName + "\\Headlines.txt"; + string filename = Path.Combine(directoryName, "Headlines.txt"); if (!File.Exists(filename)) { @@ -559,7 +556,7 @@ public void FileLoadHeadLines() if (!File.Exists(filename)) { TimedMessageBox(2000, gStr.gsFileError, "Missing Headlines File"); - SystemEventWriter("Load Field, Missing Headlines File"); + Log.EventWriter("Load Field, Missing Headlines File"); } else { @@ -621,16 +618,14 @@ public void FileLoadHeadLines() { hdl.tracksArr?.Clear(); - var form = new FormTimedMessage(2000, "Headline Error", "Lines Deleted"); - form.Show(this); + TimedMessageBox(2000, "Headline Error", "Lines Deleted"); - dirField = fieldsDirectory + currentFieldDirectory + "\\"; - directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); + directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + if (!string.IsNullOrEmpty(directoryName) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } - filename = directoryName + "\\Headlines.txt"; + filename = Path.Combine(directoryName, "Headlines.txt"); using (StreamWriter writer = new StreamWriter(filename, false)) { @@ -642,7 +637,7 @@ public void FileLoadHeadLines() } catch { } } - WriteErrorLog("Load Head Lines" + er.ToString()); + Log.EventWriter("Load Head Lines" + er.ToString()); } } } @@ -652,13 +647,12 @@ public void FileLoadHeadLines() public void FileSaveTracks() { - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + if (!string.IsNullOrEmpty(directoryName) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } - string filename = directoryName + "\\TrackLines.txt"; + string filename = Path.Combine(directoryName, "TrackLines.txt"); int cnt = trk.gArr.Count; @@ -714,7 +708,7 @@ public void FileSaveTracks() } catch (Exception er) { - WriteErrorLog("Saving Curve Line" + er.ToString()); + Log.EventWriter("Saving Curve Line" + er.ToString()); return; } @@ -731,13 +725,12 @@ public void FileLoadTracks() trk.gArr?.Clear(); //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField); + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } - string filename = directoryName + "\\TrackLines.txt"; + string filename = Path.Combine(directoryName, "TrackLines.txt"); if (!File.Exists(filename)) { @@ -754,7 +747,7 @@ public void FileLoadTracks() if (!File.Exists(filename)) { TimedMessageBox(2000, gStr.gsFileError, "Missing Tracks File"); - SystemEventWriter("Load Field, Missing Tracks File"); + Log.EventWriter("Load Field, Missing Tracks File"); } else { @@ -821,9 +814,8 @@ public void FileLoadTracks() } catch (Exception er) { - var form = new FormTimedMessage(2000, gStr.gsCurveLineFileIsCorrupt, gStr.gsButFieldIsLoaded); - form.Show(this); - WriteErrorLog("Load Curve Line" + er.ToString()); + TimedMessageBox(2000, gStr.gsCurveLineFileIsCorrupt, gStr.gsButFieldIsLoaded); + Log.EventWriter("Load Curve Line" + er.ToString()); } } } @@ -833,13 +825,12 @@ public void FileLoadTracks() public void FileSaveCurveLines() { - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + if (!string.IsNullOrEmpty(directoryName) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } - string filename = directoryName + "\\CurveLines.txt"; + string filename = Path.Combine(directoryName, "CurveLines.txt"); int cnt = trk.gArr.Count; @@ -881,7 +872,7 @@ public void FileSaveCurveLines() } catch (Exception er) { - WriteErrorLog("Saving Curve Line" + er.ToString()); + Log.EventWriter("Saving Curve Line" + er.ToString()); return; } @@ -891,13 +882,12 @@ public void FileSaveCurveLines() public void FileLoadCurveLines() { //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField); + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } - string filename = directoryName + "\\CurveLines.txt"; + string filename = Path.Combine(directoryName, "CurveLines.txt"); if (!File.Exists(filename)) { @@ -914,7 +904,7 @@ public void FileLoadCurveLines() if (!File.Exists(filename)) { TimedMessageBox(2000, gStr.gsFileError, "Missing Curve File"); - SystemEventWriter("Load Field, Missing Curve File"); + Log.EventWriter("Load Field, Missing Curve File"); } else { @@ -988,9 +978,9 @@ public void FileLoadCurveLines() } catch (Exception er) { - var form = new FormTimedMessage(2000, gStr.gsCurveLineFileIsCorrupt, gStr.gsButFieldIsLoaded); - form.Show(this); - WriteErrorLog("Load Curve Line" + er.ToString()); + TimedMessageBox(2000, gStr.gsCurveLineFileIsCorrupt, gStr.gsButFieldIsLoaded); + + Log.EventWriter("Load Curve Line" + er.ToString()); } } } @@ -999,14 +989,13 @@ public void FileLoadCurveLines() public void FileSaveABLines() { //make sure at least a global blank AB Line file exists - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); //get the file of previous AB Lines - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + if (!string.IsNullOrEmpty(directoryName) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } - string filename = directoryName + "\\ABLines.txt"; + string filename = Path.Combine(directoryName, "ABLines.txt"); int cnt = trk.gArr.Count; using (StreamWriter writer = new StreamWriter(filename, false)) @@ -1034,13 +1023,12 @@ public void FileSaveABLines() public void FileLoadABLines() { //make sure at least a global blank AB Line file exists - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField).ToString(CultureInfo.InvariantCulture); + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) + if (!string.IsNullOrEmpty(directoryName) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } - string filename = directoryName + "\\ABLines.txt"; + string filename = Path.Combine(directoryName, "ABLines.txt"); if (!File.Exists(filename)) { @@ -1090,9 +1078,9 @@ public void FileLoadABLines() } catch (Exception er) { - var form = new FormTimedMessage(2000, "AB Line Corrupt", "Please delete it!!!"); - form.Show(this); - WriteErrorLog("FieldOpen, Loading ABLine, Corrupt ABLine File" + er); + TimedMessageBox(2000, "AB Line Corrupt", "Please delete it!!!"); + + Log.EventWriter("FieldOpen, Loading ABLine, Corrupt ABLine File" + er); } } } @@ -1117,7 +1105,7 @@ public void FileOpenField(string _openType) case "Resume": { //Either exit or update running save - fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\Field.txt"; + fileAndDirectory = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "Field.txt"); if (!File.Exists(fileAndDirectory)) fileAndDirectory = "Cancel"; break; } @@ -1128,7 +1116,7 @@ public void FileOpenField(string _openType) OpenFileDialog ofd = new OpenFileDialog(); //the initial directory, fields, for the open dialog - ofd.InitialDirectory = fieldsDirectory; + ofd.InitialDirectory = RegistrySettings.fieldsDirectory; //When leaving dialog put windows back where it was ofd.RestoreDirectory = true; @@ -1217,11 +1205,11 @@ public void FileOpenField(string _openType) catch (Exception e) { - WriteErrorLog("While Opening Field" + e.ToString()); + Log.EventWriter("While Opening Field" + e.ToString()); - var form = new FormTimedMessage(2000, gStr.gsFieldFileIsCorrupt, gStr.gsChooseADifferentField); + TimedMessageBox(2000, gStr.gsFieldFileIsCorrupt, gStr.gsChooseADifferentField); - form.Show(this); + JobClose(); return; } @@ -1235,11 +1223,11 @@ public void FileOpenField(string _openType) //section patches - fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\Sections.txt"; + fileAndDirectory = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "Sections.txt"); if (!File.Exists(fileAndDirectory)) { - var form = new FormTimedMessage(2000, gStr.gsMissingSectionFile, gStr.gsButFieldIsLoaded); - form.Show(this); + TimedMessageBox(2000, gStr.gsMissingSectionFile, gStr.gsButFieldIsLoaded); + //return; } else @@ -1298,10 +1286,10 @@ public void FileOpenField(string _openType) } catch (Exception e) { - WriteErrorLog("Section file" + e.ToString()); + Log.EventWriter("Section file" + e.ToString()); - var form = new FormTimedMessage(2000, "Section File is Corrupt", gStr.gsButFieldIsLoaded); - form.Show(this); + TimedMessageBox(2000, "Section File is Corrupt", gStr.gsButFieldIsLoaded); + } } @@ -1309,20 +1297,20 @@ public void FileOpenField(string _openType) //was old version prior to v4 if (isv3) { - //Append the current list to the field file - using (StreamWriter writer = new StreamWriter((fieldsDirectory + currentFieldDirectory + "\\Sections.txt"), false)) - { - } + //Append the current list to the field file + using (StreamWriter writer = new StreamWriter(Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "Sections.txt"), false)) + { + } } } // Contour points ---------------------------------------------------------------------------- - fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\Contour.txt"; + fileAndDirectory = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "Contour.txt"); if (!File.Exists(fileAndDirectory)) { - var form = new FormTimedMessage(2000, gStr.gsMissingContourFile, gStr.gsButFieldIsLoaded); - form.Show(this); + TimedMessageBox(2000, gStr.gsMissingContourFile, gStr.gsButFieldIsLoaded); + //return; } @@ -1361,10 +1349,10 @@ public void FileOpenField(string _openType) } catch (Exception e) { - WriteErrorLog("Loading Contour file" + e.ToString()); + Log.EventWriter("Loading Contour file" + e.ToString()); - var form = new FormTimedMessage(2000, gStr.gsContourFileIsCorrupt, gStr.gsButFieldIsLoaded); - form.Show(this); + TimedMessageBox(2000, gStr.gsContourFileIsCorrupt, gStr.gsButFieldIsLoaded); + } } } @@ -1373,11 +1361,11 @@ public void FileOpenField(string _openType) // Flags ------------------------------------------------------------------------------------------------- //Either exit or update running save - fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\Flags.txt"; + fileAndDirectory = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "Flags.txt"); if (!File.Exists(fileAndDirectory)) { - var form = new FormTimedMessage(2000, gStr.gsMissingFlagsFile, gStr.gsButFieldIsLoaded); - form.Show(this); + TimedMessageBox(2000, gStr.gsMissingFlagsFile, gStr.gsButFieldIsLoaded); + } else @@ -1440,20 +1428,20 @@ public void FileOpenField(string _openType) catch (Exception e) { - var form = new FormTimedMessage(2000, gStr.gsFlagFileIsCorrupt, gStr.gsButFieldIsLoaded); - form.Show(this); - WriteErrorLog("FieldOpen, Loading Flags, Corrupt Flag File" + e.ToString()); + TimedMessageBox(2000, gStr.gsFlagFileIsCorrupt, gStr.gsButFieldIsLoaded); + + Log.EventWriter("FieldOpen, Loading Flags, Corrupt Flag File" + e.ToString()); } } } //Boundaries //Either exit or update running save - fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\Boundary.txt"; + fileAndDirectory = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "Boundary.txt"); if (!File.Exists(fileAndDirectory)) { - var form = new FormTimedMessage(2000, gStr.gsMissingBoundaryFile, gStr.gsButFieldIsLoaded); - form.Show(this); + TimedMessageBox(2000, gStr.gsMissingBoundaryFile, gStr.gsButFieldIsLoaded); + } else { @@ -1535,15 +1523,15 @@ public void FileOpenField(string _openType) catch (Exception e) { - var form = new FormTimedMessage(2000, gStr.gsBoundaryLineFilesAreCorrupt, gStr.gsButFieldIsLoaded); - form.Show(this); - WriteErrorLog("Load Boundary Line" + e.ToString()); + TimedMessageBox(2000, gStr.gsBoundaryLineFilesAreCorrupt, gStr.gsButFieldIsLoaded); + + Log.EventWriter("Load Boundary Line" + e.ToString()); } } } // Headland ------------------------------------------------------------------------------------------------- - fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\Headland.txt"; + fileAndDirectory = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "Headland.txt"); if (File.Exists(fileAndDirectory)) { @@ -1586,9 +1574,9 @@ public void FileOpenField(string _openType) catch (Exception e) { - var form = new FormTimedMessage(2000, "Headland File is Corrupt", "But Field is Loaded"); - form.Show(this); - WriteErrorLog("Load Headland Loop" + e.ToString()); + TimedMessageBox(2000, "Headland File is Corrupt", "But Field is Loaded"); + + Log.EventWriter("Load Headland Loop" + e.ToString()); } } } @@ -1611,7 +1599,7 @@ public void FileOpenField(string _openType) btnHydLift.Visible = (((sett & 2) == 2) && bnd.isHeadlandOn); //trams --------------------------------------------------------------------------------- - fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\Tram.txt"; + fileAndDirectory = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "Tram.txt"); tram.tramBndOuterArr?.Clear(); tram.tramBndInnerArr?.Clear(); @@ -1701,23 +1689,23 @@ public void FileOpenField(string _openType) catch (Exception e) { - var form = new FormTimedMessage(2000, "Tram is corrupt", gStr.gsButFieldIsLoaded); - form.Show(this); - WriteErrorLog("Load Boundary Line" + e.ToString()); + TimedMessageBox(2000, "Tram is corrupt", gStr.gsButFieldIsLoaded); + + Log.EventWriter("Load Boundary Line" + e.ToString()); } } } - //if (Directory.Exists(fieldsDirectory + currentFieldDirectory)) + //if (Directory.Exists(RegistrySettings.fieldsDirectory + currentFieldDirectory)) //{ - // foreach (string file in Directory.GetFiles(fieldsDirectory + currentFieldDirectory, "*.shp", SearchOption.TopDirectoryOnly)) + // foreach (string file in Directory.GetFiles(RegistrySettings.fieldsDirectory + currentFieldDirectory, "*.shp", SearchOption.TopDirectoryOnly)) // { - // shape.Main(fieldsDirectory + currentFieldDirectory + "\\" + Path.GetFileNameWithoutExtension(file)); + // shape.Main(RegistrySettings.fieldsDirectory + currentFieldDirectory + "\\" + Path.GetFileNameWithoutExtension(file)); // } //} //Recorded Path - fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\RecPath.txt"; + fileAndDirectory = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "RecPath.txt"); if (File.Exists(fileAndDirectory)) { using (StreamReader reader = new StreamReader(fileAndDirectory)) @@ -1754,9 +1742,9 @@ public void FileOpenField(string _openType) catch (Exception e) { - var form = new FormTimedMessage(2000, gStr.gsRecordedPathFileIsCorrupt, gStr.gsButFieldIsLoaded); - form.Show(this); - WriteErrorLog("Load Recorded Path" + e.ToString()); + TimedMessageBox(2000, gStr.gsRecordedPathFileIsCorrupt, gStr.gsButFieldIsLoaded); + + Log.EventWriter("Load Recorded Path" + e.ToString()); } } } @@ -1764,7 +1752,7 @@ public void FileOpenField(string _openType) worldGrid.isGeoMap = false; //Back Image - fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\BackPic.txt"; + fileAndDirectory = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "BackPic.txt"); if (File.Exists(fileAndDirectory)) { using (StreamReader reader = new StreamReader(fileAndDirectory)) @@ -1793,7 +1781,7 @@ public void FileOpenField(string _openType) if (worldGrid.isGeoMap) { - fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\BackPic.png"; + fileAndDirectory = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "BackPic.png"); if (File.Exists(fileAndDirectory)) { var bitmap = new Bitmap(Image.FromFile(fileAndDirectory)); @@ -1830,22 +1818,20 @@ public void FileCreateField() if (!isJobStarted) { - using (var form = new FormTimedMessage(3000, gStr.gsFieldNotOpen, gStr.gsCreateNewField)) - { form.Show(this); } + TimedMessageBox(3000, gStr.gsFieldNotOpen, gStr.gsCreateNewField); return; } - string myFileName, dirField; + string myFileName; //get the directory and make sure it exists, create if not - dirField = fieldsDirectory + currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField); + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } myFileName = "Field.txt"; - using (StreamWriter writer = new StreamWriter(dirField + myFileName)) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, myFileName))) { //Write out the date writer.WriteLine(DateTime.Now.ToString("yyyy-MMMM-dd hh:mm:ss tt", CultureInfo.InvariantCulture)); @@ -1875,23 +1861,22 @@ public void FileCreateElevation() //if (!isJobStarted) //{ - // using (var form = new FormTimedMessage(3000, "Ooops, Job Not Started", "Start a Job First")) - // { form.Show(this); } + // using (TimedMessageBox(3000, "Ooops, Job Not Started", "Start a Job First")) + // { } // return; //} - string myFileName, dirField; + string myFileName; //get the directory and make sure it exists, create if not - dirField = fieldsDirectory + currentFieldDirectory + "\\"; - string directoryName = Path.GetDirectoryName(dirField); + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } myFileName = "Elevation.txt"; - using (StreamWriter writer = new StreamWriter(dirField + myFileName)) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, myFileName))) { //Write out the date writer.WriteLine(DateTime.Now.ToString("yyyy-MMMM-dd hh:mm:ss tt", CultureInfo.InvariantCulture)); @@ -1920,7 +1905,7 @@ public void FileSaveSections() if (patchSaveList.Count() > 0) { //Append the current list to the field file - using (StreamWriter writer = new StreamWriter((fieldsDirectory + currentFieldDirectory + "\\Sections.txt"), true)) + using (StreamWriter writer = new StreamWriter(Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "Sections.txt"), true)) { //for each patch, write out the list of triangles to the file foreach (var triList in patchSaveList) @@ -1948,16 +1933,15 @@ public void FileCreateSections() //10.1728031317344,0.723157039771303 -easting, northing //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } string myFileName = "Sections.txt"; //write out the file - using (StreamWriter writer = new StreamWriter(dirField + myFileName)) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, myFileName))) { //write paths # of sections //writer.WriteLine("$Sectionsv4"); @@ -1971,16 +1955,15 @@ public void FileCreateBoundary() //10.1728031317344,0.723157039771303 -easting, northing //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } string myFileName = "Boundary.txt"; //write out the file - using (StreamWriter writer = new StreamWriter(dirField + myFileName)) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, myFileName))) { //write paths # of sections writer.WriteLine("$Boundary"); @@ -1995,16 +1978,15 @@ public void FileCreateFlags() //10.1728031317344,0.723157039771303 -easting, northing //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } string myFileName = "Flags.txt"; //write out the file - using (StreamWriter writer = new StreamWriter(dirField + myFileName)) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, myFileName))) { //write paths # of sections //writer.WriteLine("$Sectionsv4"); @@ -2018,16 +2000,15 @@ public void FileCreateContour() //64.697,0.168,-21.654,0 - east, heading, north, altitude //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } string myFileName = "Contour.txt"; //write out the file - using (StreamWriter writer = new StreamWriter(dirField + myFileName)) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, myFileName))) { writer.WriteLine("$Contour"); } @@ -2043,7 +2024,7 @@ public void FileSaveContour() if (contourSaveList.Count() > 0) { //Append the current list to the field file - using (StreamWriter writer = new StreamWriter((fieldsDirectory + currentFieldDirectory + "\\Contour.txt"), true)) + using (StreamWriter writer = new StreamWriter(Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "Contour.txt"), true)) { //for every new chunk of patch in the whole section @@ -2071,14 +2052,13 @@ public void FileSaveContour() public void FileSaveBoundary() { //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } //write out the file - using (StreamWriter writer = new StreamWriter(dirField + "Boundary.Txt")) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, "Boundary.Txt"))) { writer.WriteLine("$Boundary"); for (int i = 0; i < bnd.bndList.Count; i++) @@ -2102,14 +2082,13 @@ public void FileSaveBoundary() public void FileSaveTram() { //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } //write out the file - using (StreamWriter writer = new StreamWriter(dirField + "Tram.Txt")) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, "Tram.Txt"))) { writer.WriteLine("$Tram"); @@ -2161,14 +2140,13 @@ public void FileSaveTram() public void FileSaveBackPic() { //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } //write out the file - using (StreamWriter writer = new StreamWriter(dirField + "BackPic.Txt")) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, "BackPic.Txt"))) { writer.WriteLine("$BackPic"); //outer track of outer boundary tram @@ -2195,14 +2173,13 @@ public void FileSaveBackPic() public void FileSaveHeadland() { //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } //write out the file - using (StreamWriter writer = new StreamWriter(dirField + "Headland.Txt")) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, "Headland.Txt"))) { writer.WriteLine("$Headland"); @@ -2227,16 +2204,15 @@ public void FileSaveHeadland() public void FileCreateRecPath() { //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } string myFileName = "RecPath.txt"; //write out the file - using (StreamWriter writer = new StreamWriter(dirField + myFileName)) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, myFileName))) { //write paths # of sections writer.WriteLine("$RecPath"); @@ -2248,17 +2224,16 @@ public void FileCreateRecPath() public void FileSaveRecPath(string name = "RecPath.Txt") { //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } - //string fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\RecPath.txt"; + //string fileAndDirectory = RegistrySettings.fieldsDirectory + currentFieldDirectory + "\\RecPath.txt"; //if (!File.Exists(fileAndDirectory)) FileCreateRecPath(); //write out the file - using (StreamWriter writer = new StreamWriter((dirField + name))) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, name))) { writer.WriteLine("$RecPath"); writer.WriteLine(recPath.recList.Count.ToString(CultureInfo.InvariantCulture)); @@ -2283,7 +2258,7 @@ public void FileLoadRecPath() { string line; //Recorded Path - string fileAndDirectory = fieldsDirectory + currentFieldDirectory + "\\RecPath.txt"; + string fileAndDirectory = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "RecPath.txt"); if (File.Exists(fileAndDirectory)) { using (StreamReader reader = new StreamReader(fileAndDirectory)) @@ -2317,9 +2292,9 @@ public void FileLoadRecPath() catch (Exception e) { - var form = new FormTimedMessage(2000, gStr.gsRecordedPathFileIsCorrupt, gStr.gsButFieldIsLoaded); - form.Show(this); - WriteErrorLog("Load Recorded Path" + e.ToString()); + TimedMessageBox(2000, gStr.gsRecordedPathFileIsCorrupt, gStr.gsButFieldIsLoaded); + + Log.EventWriter("Load Recorded Path" + e.ToString()); } } } @@ -2335,14 +2310,13 @@ public void FileSaveFlags() //533172,5927719,12 - offset easting, northing, zone //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } //use Streamwriter to create and overwrite existing flag file - using (StreamWriter writer = new StreamWriter(dirField + "Flags.txt")) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, "Flags.txt"))) { try { @@ -2367,120 +2341,35 @@ public void FileSaveFlags() catch (Exception e) { - Console.WriteLine(e.Message + "\n Cannot write to file."); - WriteErrorLog("Saving Flags" + e.ToString()); + TimedMessageBox(2000, "Error", e.Message + "\n Cannot write to file."); + Log.EventWriter("Saving Flags" + e.ToString()); return; } } } - //save all the flag markers - //public void FileSaveABLine() - //{ - // //Saturday, February 11, 2017 --> 7:26:52 AM - - // //get the directory and make sure it exists, create if not - // string dirField = fieldsDirectory + currentFieldDirectory + "\\"; - - // string directoryName = Path.GetDirectoryName(dirField); - // if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - // { Directory.CreateDirectory(directoryName); } - - // //use Streamwriter to create and overwrite existing ABLine file - // using (StreamWriter writer = new StreamWriter(dirField + "ABLine.txt")) - // { - // try - // { - // //write out the ABLine - // writer.WriteLine("$ABLine"); - - // //true or false if ABLine is set - // if (ABLine.isABLineSet) writer.WriteLine(true); - // else writer.WriteLine(false); - - // writer.WriteLine(ABLine.abHeading.ToString(CultureInfo.InvariantCulture)); - // writer.WriteLine(ABLine.refPtA.easting.ToString(CultureInfo.InvariantCulture) + "," + ABLine.refPtA.northing.ToString(CultureInfo.InvariantCulture)); - // writer.WriteLine(ABLine.refPtB.easting.ToString(CultureInfo.InvariantCulture) + "," + ABLine.refPtB.northing.ToString(CultureInfo.InvariantCulture)); - // writer.WriteLine(ABLine.tramPassEvery.ToString(CultureInfo.InvariantCulture) + "," + ABLine.passBasedOn.ToString(CultureInfo.InvariantCulture)); - // } - - // catch (Exception e) - // { - // Console.WriteLine(e.Message + "\n Cannot write to file."); - // WriteErrorLog("Saving AB Line" + e.ToString()); - - // return; - // } - - // } - //} - - //save all the flag markers - //public void FileSaveCurveLine() - //{ - // //Saturday, February 11, 2017 --> 7:26:52 AM - - // //get the directory and make sure it exists, create if not - // string dirField = fieldsDirectory + currentFieldDirectory + "\\"; - - // string directoryName = Path.GetDirectoryName(dirField); - // if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) - // { Directory.CreateDirectory(directoryName); } - - // //use Streamwriter to create and overwrite existing ABLine file - // using (StreamWriter writer = new StreamWriter(dirField + "CurveLine.txt")) - // { - // try - // { - // //write out the ABLine - // writer.WriteLine("$CurveLine"); - - // //write out the heading - // writer.WriteLine(curve.refCurve.heading.ToString(CultureInfo.InvariantCulture)); - - // //write out the points of ref line - // writer.WriteLine(curve.refCurve.curvePts.Count.ToString(CultureInfo.InvariantCulture)); - // if (curve.refCurve.curvePts.Count > 0) - // { - // for (int j = 0; j < curve.refCurve.curvePts.Count; j++) - // writer.WriteLine(Math.Round(curve.refCurve.curvePts[j].easting, 3).ToString(CultureInfo.InvariantCulture) + "," + - // Math.Round(curve.refCurve.curvePts[j].northing, 3).ToString(CultureInfo.InvariantCulture) + "," + - // Math.Round(curve.refCurve.curvePts[j].heading, 5).ToString(CultureInfo.InvariantCulture)); - // } - // } - - // catch (Exception e) - // { - // WriteErrorLog("Saving Curve Line" + e.ToString()); - - // return; - // } - - // } - //} - - //save nmea sentences - public void FileSaveNMEA() - { - using (StreamWriter writer = new StreamWriter("zAOG_log.txt", true)) - { - writer.Write(pn.logNMEASentence.ToString()); - } - pn.logNMEASentence.Clear(); - } - public void FileSaveSystemEvents() { - using (StreamWriter writer = new StreamWriter("zSystemEventsLog_log.txt", true)) + using (StreamWriter writer = new StreamWriter(Path.Combine(RegistrySettings.logsDirectory, "AgOpenGPS_Events_Log.txt"), true)) { - writer.Write(sbSystemEvents); + writer.Write(Log.sbEvents); + Log.sbEvents.Clear(); } } + //public void FileSaveMissedEvents() + //{ + // using (StreamWriter writer = new StreamWriter(Path.Combine(logsDirectory, "Missed_Events_Log.txt"), true)) + // { + // writer.Write(sbMissedSentence); + // sbMissedSentence.Clear(); + // } + //} + //save nmea sentences public void FileSaveElevation() { - using (StreamWriter writer = new StreamWriter((fieldsDirectory + currentFieldDirectory + "\\Elevation.txt"), true)) + using (StreamWriter writer = new StreamWriter(Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory, "Elevation.txt"), true)) { writer.Write(sbGrid.ToString()); } @@ -2496,16 +2385,15 @@ public void FileSaveSingleFlagKML2(int flagNumber) pn.ConvertLocalToWGS84(flagPts[flagNumber - 1].northing, flagPts[flagNumber - 1].easting, out lat, out lon); //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } string myFileName; myFileName = "Flag.kml"; - using (StreamWriter writer = new StreamWriter(dirField + myFileName)) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, myFileName))) { //match new fix to current position @@ -2542,16 +2430,15 @@ public void FileSaveSingleFlagKML(int flagNumber) { //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } string myFileName; myFileName = "Flag.kml"; - using (StreamWriter writer = new StreamWriter(dirField + myFileName)) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, myFileName))) { //match new fix to current position @@ -2586,14 +2473,13 @@ public void FileSaveSingleFlagKML(int flagNumber) public void FileMakeKMLFromCurrentPosition(double lat, double lon) { //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } - using (StreamWriter writer = new StreamWriter(dirField + "CurrentPosition.kml")) + using (StreamWriter writer = new StreamWriter(Path.Combine(directoryName, "CurrentPosition.kml"))) { writer.WriteLine(@" "); @@ -2622,16 +2508,15 @@ public void FileMakeKMLFromCurrentPosition(double lat, double lon) public void ExportFieldAs_KML() { //get the directory and make sure it exists, create if not - string dirField = fieldsDirectory + currentFieldDirectory + "\\"; + string directoryName = Path.Combine(RegistrySettings.fieldsDirectory, currentFieldDirectory); - string directoryName = Path.GetDirectoryName(dirField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { Directory.CreateDirectory(directoryName); } string myFileName; myFileName = "Field.kml"; - XmlTextWriter kml = new XmlTextWriter(dirField + myFileName, Encoding.UTF8); + XmlTextWriter kml = new XmlTextWriter(Path.Combine(directoryName, myFileName), Encoding.UTF8); kml.Formatting = Formatting.Indented; kml.Indentation = 3; @@ -2939,9 +2824,8 @@ private void FileUpdateAllFieldsKML() { //get the directory and make sure it exists, create if not - string dirAllField = fieldsDirectory + "\\"; + string directoryName = RegistrySettings.fieldsDirectory; - string directoryName = Path.GetDirectoryName(dirAllField); if ((directoryName.Length > 0) && (!Directory.Exists(directoryName))) { return; //We have no fields to aggregate. @@ -2950,7 +2834,7 @@ private void FileUpdateAllFieldsKML() string myFileName; myFileName = "AllFields.kml"; - XmlTextWriter kml = new XmlTextWriter(dirAllField + myFileName, Encoding.UTF8); + XmlTextWriter kml = new XmlTextWriter(Path.Combine(directoryName, myFileName), Encoding.UTF8); kml.Formatting = Formatting.Indented; kml.Indentation = 3; @@ -2962,13 +2846,13 @@ private void FileUpdateAllFieldsKML() foreach(String dir in Directory.EnumerateDirectories(directoryName).OrderBy(d => new DirectoryInfo(d).Name).ToArray()) //loop { - if (!File.Exists(dir + "\\" + "Field.kml")) continue; + if (!File.Exists(Path.Combine(dir, "Field.kml"))) continue; directoryName = Path.GetFileName(dir); kml.WriteStartElement("Folder"); kml.WriteElementString("name", directoryName); - var lines = File.ReadAllLines(dir + "\\" + "Field.kml"); + var lines = File.ReadAllLines(Path.Combine(dir, "Field.kml")); LinkedList linebuffer = new LinkedList(); for( var i = 3; i < lines.Length-2; i++) //We want to skip the first 3 and last 2 lines { diff --git a/SourceCode/GPS/Forms/Sections.Designer.cs b/SourceCode/GPS/Forms/Sections.Designer.cs index c3cdad3f0..e38b5c6cc 100644 --- a/SourceCode/GPS/Forms/Sections.Designer.cs +++ b/SourceCode/GPS/Forms/Sections.Designer.cs @@ -507,7 +507,7 @@ public void LineUpAllZoneButtons() return; } - int oglCenter = isPanelBottomHidden?oglCenter = oglMain.Width / 2 + 30:statusStripLeft.Width + oglMain.Width / 2; + int oglCenter = isPanelBottomHidden ? oglCenter = oglMain.Width / 2 + 30 : statusStripLeft.Width + oglMain.Width / 2; int top = 130; diff --git a/SourceCode/GPS/Forms/Settings/ConfigData.Designer.cs b/SourceCode/GPS/Forms/Settings/ConfigData.Designer.cs index 5a1e1eeb5..bc7e299ce 100644 --- a/SourceCode/GPS/Forms/Settings/ConfigData.Designer.cs +++ b/SourceCode/GPS/Forms/Settings/ConfigData.Designer.cs @@ -264,7 +264,7 @@ private void btnZeroRoll_Click(object sender, EventArgs e) mf.ahrs.imuRoll += mf.ahrs.rollZero; mf.ahrs.rollZero = mf.ahrs.imuRoll; lblRollZeroOffset.Text = (mf.ahrs.rollZero).ToString("N2"); - mf.SystemEventWriter("Roll Zeroed with " + mf.ahrs.rollZero.ToString()); + Log.EventWriter("Roll Zeroed with " + mf.ahrs.rollZero.ToString()); } else { @@ -276,7 +276,7 @@ private void btnRemoveZeroOffset_Click(object sender, EventArgs e) { mf.ahrs.rollZero = 0; lblRollZeroOffset.Text = "0.00"; - mf.SystemEventWriter("Roll Zero Offset Removed"); + Log.EventWriter("Roll Zero Offset Removed"); } private void btnResetIMU_Click(object sender, EventArgs e) diff --git a/SourceCode/GPS/Forms/Settings/ConfigMenu.Designer.cs b/SourceCode/GPS/Forms/Settings/ConfigMenu.Designer.cs index f50f37a6a..a4fc9329e 100644 --- a/SourceCode/GPS/Forms/Settings/ConfigMenu.Designer.cs +++ b/SourceCode/GPS/Forms/Settings/ConfigMenu.Designer.cs @@ -72,7 +72,7 @@ private void UpdateSummary() lblNudgeDistance.Text = snapDist + mf.unitsInCm.ToString(); lblUnits.Text = mf.isMetric ? "Metric" : "Imperial"; - lblCurrentVehicle.Text = gStr.gsCurrent + ": "+ mf.vehicleFileName; + lblCurrentVehicle.Text = gStr.gsCurrent + ": "+ RegistrySettings.vehicleFileName; lblSummaryVehicleName.Text = lblCurrentVehicle.Text; lblTramWidth.Text = mf.isMetric ? diff --git a/SourceCode/GPS/Forms/Settings/ConfigTool.Designer.cs b/SourceCode/GPS/Forms/Settings/ConfigTool.Designer.cs index 7b527a328..3bff1471a 100644 --- a/SourceCode/GPS/Forms/Settings/ConfigTool.Designer.cs +++ b/SourceCode/GPS/Forms/Settings/ConfigTool.Designer.cs @@ -79,7 +79,6 @@ private void tabTConfig_Leave(object sender, EventArgs e) { if (mf.vehicle.vehicleType != 1) { - if (rbtnFront.Checked) { Properties.Settings.Default.setTool_isToolFront = true; @@ -162,7 +161,7 @@ private void tabTHitch_Enter(object sender, EventArgs e) picboxToolHitch.BackgroundImage = Properties.Resources.ToolHitchPageRear; } - //trailing + //trailing TBT else if (Properties.Settings.Default.setTool_isToolTBT) { nudTrailingHitchLength.Visible = true; @@ -174,6 +173,8 @@ private void tabTHitch_Enter(object sender, EventArgs e) picboxToolHitch.BackgroundImage = Properties.Resources.ToolHitchPageTBT; } + + //normal trailing else if (Properties.Settings.Default.setTool_isToolTrailing) { nudTrailingHitchLength.Visible = true; @@ -228,7 +229,6 @@ private void nudTankHitch_Click(object sender, EventArgs e) { mf.tool.tankTrailingHitchLength = (double)nudTankHitch.Value * -mf.inchOrCm2m; Properties.Settings.Default.setVehicle_tankTrailingHitchLength = mf.tool.tankTrailingHitchLength; - } } @@ -1153,7 +1153,7 @@ private void cboxNumSections_SelectedIndexChanged(object sender, EventArgs e) { wide = 99; mf.TimedMessageBox(3000, "Too Wide", "Max 50 Meters"); - mf.SystemEventWriter("Sections, Tool Set Too Wide"); + Log.EventWriter("Sections, Tool Set Too Wide"); } } @@ -1163,7 +1163,7 @@ private void cboxNumSections_SelectedIndexChanged(object sender, EventArgs e) { wide = 19; mf.TimedMessageBox(3000, "Too Wide", "Max 164 Feet"); - mf.SystemEventWriter("Sections, Tool Set Too Wide"); + Log.EventWriter("Sections, Tool Set Too Wide"); } } @@ -1250,7 +1250,7 @@ public void UpdateSpinners() if (toolWidth > 5000) { mf.TimedMessageBox(3000, "Too Wide", "Set to 99, Max 50 Meters"); - mf.SystemEventWriter("Sections, Tool Set Too Wide"); + Log.EventWriter("Sections, Tool Set Too Wide"); toolWidth = 0; nudSection01.Value = 99; nudSection02.Value = 99; @@ -1275,7 +1275,7 @@ public void UpdateSpinners() if (toolWidth > 1900) { mf.TimedMessageBox(3000, "Too Wide", "Set to 99, Max 164 Feet"); - mf.SystemEventWriter("Sections, Tool Set Too Wide"); + Log.EventWriter("Sections, Tool Set Too Wide"); toolWidth = 0; nudSection01.Value = 99; nudSection02.Value = 99; diff --git a/SourceCode/GPS/Forms/Settings/ConfigVehicle.Designer.cs b/SourceCode/GPS/Forms/Settings/ConfigVehicle.Designer.cs index dc38cbe06..e25355fd3 100644 --- a/SourceCode/GPS/Forms/Settings/ConfigVehicle.Designer.cs +++ b/SourceCode/GPS/Forms/Settings/ConfigVehicle.Designer.cs @@ -10,6 +10,7 @@ using System.Windows.Forms; using AgOpenGPS.Culture; using AgOpenGPS.Properties; +using Microsoft.Win32; using OpenTK.Graphics.OpenGL; namespace AgOpenGPS @@ -17,58 +18,31 @@ namespace AgOpenGPS public partial class FormConfig { #region Vehicle Save--------------------------------------------- - private void btnVehicleSave_Click(object sender, EventArgs e) - { - if (tboxVehicleNameSave.Text.Trim().Length > 0) - { - SettingsIO.ExportAll(mf.vehiclesDirectory + tboxVehicleNameSave.Text.Trim() + ".XML"); - - mf.vehicleFileName = tboxVehicleNameSave.Text.Trim(); - Properties.Settings.Default.setVehicle_vehicleName = mf.vehicleFileName; - Properties.Settings.Default.Save(); - - tboxVehicleNameSave.Text = ""; - btnVehicleSave.Enabled = false; - - LoadBrandImage(); - - mf.vehicle = new CVehicle(mf); - mf.tool = new CTool(mf); - - //reset AOG - mf.LoadSettings(); - - SectionFeetInchesTotalWidthLabelUpdate(); - } - - UpdateVehicleListView(); - UpdateSummary(); - } private void btnVehicleLoad_Click(object sender, EventArgs e) { if (!mf.isJobStarted) { //save current vehicle - SettingsIO.ExportAll(mf.vehiclesDirectory + mf.vehicleFileName + ".XML"); + RegistrySettings.Save(); if (lvVehicles.SelectedItems.Count > 0) { DialogResult result3 = MessageBox.Show( - "Load: " + lvVehicles.SelectedItems[0].SubItems[0].Text + ".XML", + "Open: " + lvVehicles.SelectedItems[0].SubItems[0].Text + ".XML ?", gStr.gsSaveAndReturn, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); - + if (result3 == DialogResult.Yes) { - bool success = SettingsIO.ImportAll(mf.vehiclesDirectory + lvVehicles.SelectedItems[0].SubItems[0].Text + ".XML"); + bool success = SettingsIO.ImportAll(Path.Combine(RegistrySettings.vehiclesDirectory, lvVehicles.SelectedItems[0].SubItems[0].Text + ".XML")); if (!success) return; - mf.vehicleFileName = lvVehicles.SelectedItems[0].SubItems[0].Text; - Properties.Settings.Default.setVehicle_vehicleName = mf.vehicleFileName; - Properties.Settings.Default.Save(); + RegistrySettings.vehicleFileName = lvVehicles.SelectedItems[0].SubItems[0].Text; + + RegistrySettings.Save(); LoadBrandImage(); @@ -131,7 +105,7 @@ private void btnVehicleLoad_Click(object sender, EventArgs e) ///Remind the user mf.TimedMessageBox(2500, "Steer and Machine Settings Sent", "Were Modules Connected?"); - mf.SystemEventWriter("Vehicle Loaded: " + mf.vehicleFileName + ".XML"); + Log.EventWriter("Vehicle Loaded: " + RegistrySettings.vehicleFileName + ".XML"); } UpdateVehicleListView(); @@ -139,53 +113,85 @@ private void btnVehicleLoad_Click(object sender, EventArgs e) } else { - var form = new FormTimedMessage(2000, gStr.gsFieldIsOpen, gStr.gsCloseFieldFirst); - form.Show(this); + mf.TimedMessageBox(2000, gStr.gsFieldIsOpen, gStr.gsCloseFieldFirst); UpdateVehicleListView(); } UpdateSummary(); - } + btnOK.PerformClick(); + } private void btnVehicleDelete_Click(object sender, EventArgs e) { if (!mf.isJobStarted) { if (lvVehicles.SelectedItems.Count > 0) { - if (lvVehicles.SelectedItems[0].SubItems[0].Text != mf.vehicleFileName) + if (lvVehicles.SelectedItems[0].SubItems[0].Text.Trim() != "Default Vehicle") { - DialogResult result3 = MessageBox.Show( - "Delete: " + lvVehicles.SelectedItems[0].SubItems[0].Text + ".XML", - gStr.gsSaveAndReturn, - MessageBoxButtons.YesNo, - MessageBoxIcon.Error, - MessageBoxDefaultButton.Button2); - if (result3 == DialogResult.Yes) + + if (lvVehicles.SelectedItems[0].SubItems[0].Text != RegistrySettings.vehicleFileName) + { + DialogResult result3 = MessageBox.Show( + "Delete: " + lvVehicles.SelectedItems[0].SubItems[0].Text + ".XML", + gStr.gsSaveAndReturn, + MessageBoxButtons.YesNo, + MessageBoxIcon.Error, + MessageBoxDefaultButton.Button2); + if (result3 == DialogResult.Yes) + { + File.Delete(Path.Combine(RegistrySettings.vehiclesDirectory, lvVehicles.SelectedItems[0].SubItems[0].Text + ".XML")); + } + } + else { - File.Delete(mf.vehiclesDirectory + lvVehicles.SelectedItems[0].SubItems[0].Text + ".XML"); + mf.TimedMessageBox(2000, "Vehicle In Use", "Select Different Vehicle"); } } else { - var form = new FormTimedMessage(2000, "Vehicle In Use", "Select Different Vehicle"); - form.Show(this); + Log.EventWriter("Attempted to Delete Default Vehicle, Denied"); + mf.TimedMessageBox(2500, "Default Vehicle Delete Denied", "Choose Another Vehicle"); } - } - else - { - var form = new FormTimedMessage(2000, gStr.gsFieldIsOpen, gStr.gsCloseFieldFirst); - form.Show(this); + } } - else + + UpdateVehicleListView(); + } + + //Save As Vehicle + private void btnVehicleSave_Click(object sender, EventArgs e) + { + btnVehicleSave.BackColor = Color.Transparent; + btnVehicleSave.Enabled = false; + + //save current vehicle + RegistrySettings.Save(); + + tboxVehicleNameSave.Text = SanitizeFileName(tboxVehicleNameSave.Text.Trim()); + + if (tboxVehicleNameSave.Text.Trim().Length > 0) { - var form = new FormTimedMessage(2000, gStr.gsFieldIsOpen, gStr.gsCloseFieldFirst); - form.Show(this); + RegistrySettings.vehicleFileName = tboxVehicleNameSave.Text.Trim(); + RegistrySettings.Save(); + + tboxVehicleNameSave.Text = ""; + + LoadBrandImage(); + + mf.vehicle = new CVehicle(mf); + mf.tool = new CTool(mf); + + //reset AOG + mf.LoadSettings(); + + SectionFeetInchesTotalWidthLabelUpdate(); } + UpdateVehicleListView(); + UpdateSummary(); } - private void tboxVehicleNameSave_TextChanged(object sender, EventArgs e) { var textboxSender = (TextBox)sender; @@ -193,7 +199,6 @@ private void tboxVehicleNameSave_TextChanged(object sender, EventArgs e) textboxSender.Text = Regex.Replace(textboxSender.Text, glm.fileRegex, ""); textboxSender.SelectionStart = cursorPosition; - //btnVehicleSaveAs.Enabled = false; btnVehicleLoad.Enabled = false; btnVehicleDelete.Enabled = false; @@ -202,10 +207,12 @@ private void tboxVehicleNameSave_TextChanged(object sender, EventArgs e) if (String.IsNullOrEmpty(tboxVehicleNameSave.Text.Trim())) { btnVehicleSave.Enabled = false; + btnVehicleSave.BackColor = Color.Transparent; } else { btnVehicleSave.Enabled = true; + btnVehicleSave.BackColor = Color.LimeGreen; } } private void tboxVehicleNameSave_Click(object sender, EventArgs e) @@ -220,202 +227,158 @@ private void tboxVehicleNameSave_Click(object sender, EventArgs e) } else { - var form = new FormTimedMessage(2000, gStr.gsFieldIsOpen, gStr.gsCloseFieldFirst); - form.Show(this); + mf.TimedMessageBox(2000, gStr.gsFieldIsOpen, gStr.gsCloseFieldFirst); tboxVehicleNameSave.Enabled = false; } } - //private void tboxCreateNewVehicle_Click(object sender, EventArgs e) - //{ - // if (!mf.isJobStarted) - // { - - // if (mf.isKeyboardOn) - // { - // mf.KeyboardToText((TextBox)sender, this); - // } - // } - // else - // { - // var form = new FormTimedMessage(2000, gStr.gsFieldIsOpen, gStr.gsCloseFieldFirst); - // form.Show(this); - // tboxCreateNewVehicle.Enabled = false; - // } - //} - - //private void tboxCreateNewVehicle_TextChanged(object sender, EventArgs e) - //{ - // var textboxSender = (TextBox)sender; - // var cursorPosition = textboxSender.SelectionStart; - // textboxSender.Text = Regex.Replace(textboxSender.Text, glm.fileRegex, ""); - // textboxSender.SelectionStart = cursorPosition; - - // btnVehicleSaveAs.Enabled = false; - // btnVehicleLoad.Enabled = false; - // btnVehicleDelete.Enabled = false; - - // lvVehicles.SelectedItems.Clear(); - - // if (String.IsNullOrEmpty(tboxCreateNewVehicle.Text.Trim())) - // { - // btnVehicleNewSave.Enabled = false; - // } - // else - // { - // btnVehicleNewSave.Enabled = true; - // } - //} - //private void btnVehicleNewSave_Click(object sender, EventArgs e) - //{ - // if (tboxCreateNewVehicle.Text.Trim().Length > 0) - // { - // //SettingsIO.ExportAll(mf.vehiclesDirectory + tboxCreateNewVehicle.Text.Trim() + ".XML"); - - // Settings.Default.Reset(); - // Settings.Default.Save(); - - // Properties.Settings.Default.setVehicle_vehicleName = tboxCreateNewVehicle.Text.Trim(); - // Properties.Settings.Default.setDisplay_isTermsAccepted = true; - - // Properties.Settings.Default.Save(); - // tboxCreateNewVehicle.Text = ""; - // btnVehicleNewSave.Enabled = false; - - // lblCurrentVehicle.Text = mf.vehicleFileName = Properties.Settings.Default.setVehicle_vehicleName; - - // SettingsIO.ExportAll(mf.vehiclesDirectory + mf.vehicleFileName + ".XML"); - // LoadBrandImage(); - - // mf.vehicle = new CVehicle(mf); - // mf.tool = new CTool(mf); - - // //reset AOG - // mf.LoadSettings(); - - // chkDisplaySky.Checked = mf.isSkyOn; - // chkDisplayBrightness.Checked = mf.isBrightnessOn; - // chkDisplayFloor.Checked = mf.isTextureOn; - // chkDisplayGrid.Checked = mf.isGridOn; - // chkDisplaySpeedo.Checked = mf.isSpeedoOn; - // chkDisplayDayNight.Checked = mf.isAutoDayNight; - // chkDisplayExtraGuides.Checked = mf.isSideGuideLines; - // chkSvennArrow.Checked = mf.isSvennArrowOn; - // chkDisplayLogNMEA.Checked = mf.isLogNMEA; - // chkDisplayPolygons.Checked = mf.isDrawPolygons; - // chkDisplayLightbar.Checked = mf.isLightbarOn; - // chkDisplayKeyboard.Checked = mf.isKeyboardOn; - // chkDisplayStartFullScreen.Checked = Properties.Settings.Default.setDisplay_isStartFullScreen; - - // if (mf.isMetric) rbtnDisplayMetric.Checked = true; - // else rbtnDisplayImperial.Checked = true; - - // SaveDisplaySettings(); - - // lblCurrentVehicle.Text = Properties.Settings.Default.setVehicle_vehicleName; - - // if (mf.isMetric) - // { - // lblInchesCm.Text = gStr.gsCentimeters; - // lblFeetMeters.Text = gStr.gsMeters; - // lblSecTotalWidthFeet.Visible = false; - // lblSecTotalWidthInches.Visible = false; - // lblSecTotalWidthMeters.Visible = true; - // } - // else - // { - // lblInchesCm.Text = gStr.gsInches; - // lblFeetMeters.Text = "Feet"; - // lblSecTotalWidthFeet.Visible = true; - // lblSecTotalWidthInches.Visible = true; - // lblSecTotalWidthMeters.Visible = false; - // } - - // if (mf.isMetric) - // { - // lblSecTotalWidthMeters.Text = (mf.tool.width * 100).ToString() + " cm"; - // } - // else - // { - // double toFeet = mf.tool.width * 3.2808; - // lblSecTotalWidthFeet.Text = Convert.ToString((int)toFeet) + "'"; - // double temp = Math.Round((toFeet - Math.Truncate(toFeet)) * 12, 0); - // lblSecTotalWidthInches.Text = Convert.ToString(temp) + '"'; - // } - - - // //Form Steer Settings - // mf.p_252.pgn[mf.p_252.countsPerDegree] = unchecked((byte)Properties.Settings.Default.setAS_countsPerDegree); - // mf.p_252.pgn[mf.p_252.ackerman] = unchecked((byte)Properties.Settings.Default.setAS_ackerman); - - // mf.p_252.pgn[mf.p_252.wasOffsetHi] = unchecked((byte)(Properties.Settings.Default.setAS_wasOffset >> 8)); - // mf.p_252.pgn[mf.p_252.wasOffsetLo] = unchecked((byte)(Properties.Settings.Default.setAS_wasOffset)); - - // mf.p_252.pgn[mf.p_252.highPWM] = unchecked((byte)Properties.Settings.Default.setAS_highSteerPWM); - // mf.p_252.pgn[mf.p_252.lowPWM] = unchecked((byte)Properties.Settings.Default.setAS_lowSteerPWM); - // mf.p_252.pgn[mf.p_252.gainProportional] = unchecked((byte)Properties.Settings.Default.setAS_Kp); - // mf.p_252.pgn[mf.p_252.minPWM] = unchecked((byte)Properties.Settings.Default.setAS_minSteerPWM); - - // mf.SendPgnToLoop(mf.p_252.pgn); - - // //machine module settings - // mf.p_238.pgn[mf.p_238.set0] = Properties.Settings.Default.setArdMac_setting0; - // mf.p_238.pgn[mf.p_238.raiseTime] = Properties.Settings.Default.setArdMac_hydRaiseTime; - // mf.p_238.pgn[mf.p_238.lowerTime] = Properties.Settings.Default.setArdMac_hydLowerTime; - - // mf.SendPgnToLoop(mf.p_238.pgn); - - // //steer config - // mf.p_251.pgn[mf.p_251.set0] = Properties.Settings.Default.setArdSteer_setting0; - // mf.p_251.pgn[mf.p_251.set1] = Properties.Settings.Default.setArdSteer_setting1; - // mf.p_251.pgn[mf.p_251.maxPulse] = Properties.Settings.Default.setArdSteer_maxPulseCounts; - // mf.p_251.pgn[mf.p_251.minSpeed] = 5; //0.5 kmh - - // if (Properties.Settings.Default.setAS_isConstantContourOn) - // mf.p_251.pgn[mf.p_251.angVel] = 1; - // else mf.p_251.pgn[mf.p_251.angVel] = 0; - - // mf.SendPgnToLoop(mf.p_251.pgn); - - // //Send Pin configuration - // SendRelaySettingsToMachineModule(); - - // ///Remind the user - // mf.TimedMessageBox(2500, "Steer and Machine Settings Sent", "Were Modules Connected?"); - - // UpdateVehicleListView(); - // } - //} - - private void btnVehicleSaveAs_Click(object sender, EventArgs e) + private void tboxVehicleNameSave_Enter(object sender, EventArgs e) + { + //btnVehicleSaveAs.Enabled = false; + btnVehicleLoad.Enabled = false; + btnVehicleDelete.Enabled = false; + + lvVehicles.SelectedItems.Clear(); + } + + + //New Vehicle + private void tboxCreateNewVehicle_TextChanged(object sender, EventArgs e) + { + var textboxSender = (TextBox)sender; + var cursorPosition = textboxSender.SelectionStart; + textboxSender.Text = Regex.Replace(textboxSender.Text, glm.fileRegex, ""); + textboxSender.SelectionStart = cursorPosition; + + btnVehicleSave.Enabled = false; + btnVehicleLoad.Enabled = false; + btnVehicleDelete.Enabled = false; + + lvVehicles.SelectedItems.Clear(); + + if (String.IsNullOrEmpty(tboxCreateNewVehicle.Text.Trim())) + { + btnVehicleNewSave.Enabled = false; + btnVehicleNewSave.BackColor = Color.Transparent; + } + else + { + btnVehicleNewSave.Enabled = true; + btnVehicleNewSave.BackColor = Color.LimeGreen; + } + } + private void tboxCreateNewVehicle_Click(object sender, EventArgs e) { if (!mf.isJobStarted) { - if (lvVehicles.SelectedItems.Count > 0) + + if (mf.isKeyboardOn) { - DialogResult result3 = MessageBox.Show( - "Overwrite: " + lvVehicles.SelectedItems[0].SubItems[0].Text + ".XML", - gStr.gsSaveAndReturn, - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button2); - if (result3 == DialogResult.Yes) - { - SettingsIO.ExportAll(mf.vehiclesDirectory + lvVehicles.SelectedItems[0].SubItems[0].Text + ".XML"); - } - UpdateVehicleListView(); + mf.KeyboardToText((TextBox)sender, this); } } else { var form = new FormTimedMessage(2000, gStr.gsFieldIsOpen, gStr.gsCloseFieldFirst); form.Show(this); - UpdateVehicleListView(); + tboxCreateNewVehicle.Enabled = false; } } + private void btnVehicleNewSave_Click(object sender, EventArgs e) + { + btnVehicleNewSave.BackColor = Color.Transparent; + btnVehicleNewSave.Enabled = false; + + tboxCreateNewVehicle.Text = SanitizeFileName(tboxCreateNewVehicle.Text.Trim()); + + if (tboxCreateNewVehicle.Text.Trim().Length > 0) + { + RegistrySettings.Save(); + + Settings.Default.Reset(); + Settings.Default.Save(); + + lblCurrentVehicle.Text = RegistrySettings.vehicleFileName = tboxCreateNewVehicle.Text.Trim(); + tboxCreateNewVehicle.Text = ""; + + LoadBrandImage(); + + mf.vehicle = new CVehicle(mf); + mf.tool = new CTool(mf); + + //reset AOG + mf.LoadSettings(); + + SectionFeetInchesTotalWidthLabelUpdate(); + + //Form Steer Settings + mf.p_252.pgn[mf.p_252.countsPerDegree] = unchecked((byte)Properties.Settings.Default.setAS_countsPerDegree); + mf.p_252.pgn[mf.p_252.ackerman] = unchecked((byte)Properties.Settings.Default.setAS_ackerman); + + mf.p_252.pgn[mf.p_252.wasOffsetHi] = unchecked((byte)(Properties.Settings.Default.setAS_wasOffset >> 8)); + mf.p_252.pgn[mf.p_252.wasOffsetLo] = unchecked((byte)(Properties.Settings.Default.setAS_wasOffset)); + + mf.p_252.pgn[mf.p_252.highPWM] = unchecked((byte)Properties.Settings.Default.setAS_highSteerPWM); + mf.p_252.pgn[mf.p_252.lowPWM] = unchecked((byte)Properties.Settings.Default.setAS_lowSteerPWM); + mf.p_252.pgn[mf.p_252.gainProportional] = unchecked((byte)Properties.Settings.Default.setAS_Kp); + mf.p_252.pgn[mf.p_252.minPWM] = unchecked((byte)Properties.Settings.Default.setAS_minSteerPWM); + + mf.SendPgnToLoop(mf.p_252.pgn); + + //machine module settings + mf.p_238.pgn[mf.p_238.set0] = Properties.Settings.Default.setArdMac_setting0; + mf.p_238.pgn[mf.p_238.raiseTime] = Properties.Settings.Default.setArdMac_hydRaiseTime; + mf.p_238.pgn[mf.p_238.lowerTime] = Properties.Settings.Default.setArdMac_hydLowerTime; + + mf.SendPgnToLoop(mf.p_238.pgn); + + //steer config + mf.p_251.pgn[mf.p_251.set0] = Properties.Settings.Default.setArdSteer_setting0; + mf.p_251.pgn[mf.p_251.set1] = Properties.Settings.Default.setArdSteer_setting1; + mf.p_251.pgn[mf.p_251.maxPulse] = Properties.Settings.Default.setArdSteer_maxPulseCounts; + mf.p_251.pgn[mf.p_251.minSpeed] = unchecked((byte)(Properties.Settings.Default.setAS_minSteerSpeed * 10)); + + if (Properties.Settings.Default.setAS_isConstantContourOn) + mf.p_251.pgn[mf.p_251.angVel] = 1; + else mf.p_251.pgn[mf.p_251.angVel] = 0; + + mf.SendPgnToLoop(mf.p_251.pgn); + + //machine settings + mf.p_238.pgn[mf.p_238.set0] = Properties.Settings.Default.setArdMac_setting0; + mf.p_238.pgn[mf.p_238.raiseTime] = Properties.Settings.Default.setArdMac_hydRaiseTime; + mf.p_238.pgn[mf.p_238.lowerTime] = Properties.Settings.Default.setArdMac_hydLowerTime; + + mf.p_238.pgn[mf.p_238.user1] = Properties.Settings.Default.setArdMac_user1; + mf.p_238.pgn[mf.p_238.user2] = Properties.Settings.Default.setArdMac_user2; + mf.p_238.pgn[mf.p_238.user3] = Properties.Settings.Default.setArdMac_user3; + mf.p_238.pgn[mf.p_238.user4] = Properties.Settings.Default.setArdMac_user4; + + mf.SendPgnToLoop(mf.p_238.pgn); + + //Send Pin configuration + SendRelaySettingsToMachineModule(); + + ///Remind the user + mf.TimedMessageBox(2500, "Steer and Machine Settings Sent", "Were Modules Connected?"); + + Log.EventWriter("New Vehicle Loaded: " + RegistrySettings.vehicleFileName + ".XML"); + + RegistrySettings.Save(); + } + + UpdateVehicleListView(); + } + + //Functions + private static readonly Regex InvalidFileRegex = new Regex(string.Format("[{0}]", Regex.Escape(@"<>:""/\|?*"))); + public static string SanitizeFileName(string fileName) + { + return InvalidFileRegex.Replace(fileName, string.Empty); + } private void UpdateVehicleListView() { - DirectoryInfo dinfo = new DirectoryInfo(mf.vehiclesDirectory); + DirectoryInfo dinfo = new DirectoryInfo(RegistrySettings.vehiclesDirectory); FileInfo[] Files = dinfo.GetFiles("*.XML"); //load the listbox @@ -427,21 +390,12 @@ private void UpdateVehicleListView() //deselect everything lvVehicles.SelectedItems.Clear(); - lblSummaryVehicleName.Text = Properties.Settings.Default.setVehicle_vehicleName; + lblSummaryVehicleName.Text = RegistrySettings.vehicleFileName; //tboxCreateNewVehicle.Text = ""; //tboxVehicleNameSave.Text = ""; } - private void tboxVehicleNameSave_Enter(object sender, EventArgs e) - { - //btnVehicleSaveAs.Enabled = false; - btnVehicleLoad.Enabled = false; - btnVehicleDelete.Enabled = false; - - lvVehicles.SelectedItems.Clear(); - } - private void SaveDisplaySettings() { mf.isTextureOn = chkDisplayFloor.Checked; @@ -449,7 +403,6 @@ private void SaveDisplaySettings() mf.isSpeedoOn = chkDisplaySpeedo.Checked; mf.isSideGuideLines = chkDisplayExtraGuides.Checked; - mf.isLogNMEA = chkDisplayLogNMEA.Checked; mf.isDrawPolygons = chkDisplayPolygons.Checked; mf.isKeyboardOn = chkDisplayKeyboard.Checked; @@ -458,6 +411,8 @@ private void SaveDisplaySettings() mf.isLogElevation = chkDisplayLogElevation.Checked; mf.isDirectionMarkers = chkDirectionMarkers.Checked; + mf.isSectionlinesOn = chkSectionLines.Checked; + mf.isLineSmooth = chkLineSmooth.Checked; //mf.timeToShowMenus = (int)nudMenusOnTime.Value; @@ -482,6 +437,8 @@ private void SaveDisplaySettings() Properties.Settings.Default.setTool_isDirectionMarkers = mf.isDirectionMarkers; Properties.Settings.Default.setAS_numGuideLines = mf.ABLine.numGuideLines; + Properties.Settings.Default.setDisplay_isSectionLinesOn = mf.isSectionlinesOn; + Properties.Settings.Default.setDisplay_isLineSmooth = mf.isLineSmooth; Properties.Settings.Default.Save(); } diff --git a/SourceCode/GPS/Forms/Settings/FormAllSettings.Designer.cs b/SourceCode/GPS/Forms/Settings/FormAllSettings.Designer.cs index 8bb4fdd4e..a96ba1bad 100644 --- a/SourceCode/GPS/Forms/Settings/FormAllSettings.Designer.cs +++ b/SourceCode/GPS/Forms/Settings/FormAllSettings.Designer.cs @@ -81,8 +81,6 @@ private void InitializeComponent() this.label56 = new System.Windows.Forms.Label(); this.label59 = new System.Windows.Forms.Label(); this.label60 = new System.Windows.Forms.Label(); - this.label61 = new System.Windows.Forms.Label(); - this.label62 = new System.Windows.Forms.Label(); this.label63 = new System.Windows.Forms.Label(); this.label64 = new System.Windows.Forms.Label(); this.label65 = new System.Windows.Forms.Label(); @@ -175,8 +173,6 @@ private void InitializeComponent() this.label156 = new System.Windows.Forms.Label(); this.label157 = new System.Windows.Forms.Label(); this.label158 = new System.Windows.Forms.Label(); - this.label159 = new System.Windows.Forms.Label(); - this.label160 = new System.Windows.Forms.Label(); this.label161 = new System.Windows.Forms.Label(); this.label162 = new System.Windows.Forms.Label(); this.label167 = new System.Windows.Forms.Label(); @@ -273,8 +269,6 @@ private void InitializeComponent() this.lblTimeSlice = new System.Windows.Forms.Label(); this.label247 = new System.Windows.Forms.Label(); this.lblHz = new System.Windows.Forms.Label(); - this.lblLatitude = new System.Windows.Forms.Label(); - this.lblLongitude = new System.Windows.Forms.Label(); this.lblEastingField = new System.Windows.Forms.Label(); this.lblNorthingField = new System.Windows.Forms.Label(); this.label248 = new System.Windows.Forms.Label(); @@ -285,8 +279,6 @@ private void InitializeComponent() this.label250 = new System.Windows.Forms.Label(); this.label85 = new System.Windows.Forms.Label(); this.label86 = new System.Windows.Forms.Label(); - this.label251 = new System.Windows.Forms.Label(); - this.label252 = new System.Windows.Forms.Label(); this.label254 = new System.Windows.Forms.Label(); this.btnScreenShot = new System.Windows.Forms.Button(); this.label43 = new System.Windows.Forms.Label(); @@ -296,6 +288,12 @@ private void InitializeComponent() this.label57 = new System.Windows.Forms.Label(); this.timer1 = new System.Windows.Forms.Timer(this.components); this.label89 = new System.Windows.Forms.Label(); + this.label90 = new System.Windows.Forms.Label(); + this.label197 = new System.Windows.Forms.Label(); + this.label207 = new System.Windows.Forms.Label(); + this.label223 = new System.Windows.Forms.Label(); + this.label251 = new System.Windows.Forms.Label(); + this.label252 = new System.Windows.Forms.Label(); this.SuspendLayout(); // // label3 @@ -315,7 +313,7 @@ private void InitializeComponent() // this.label4.BackColor = System.Drawing.Color.Linen; this.label4.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label4.ForeColor = System.Drawing.Color.MediumBlue; + this.label4.ForeColor = System.Drawing.Color.DarkBlue; this.label4.Location = new System.Drawing.Point(746, 47); this.label4.Name = "label4"; this.label4.Size = new System.Drawing.Size(62, 22); @@ -340,7 +338,7 @@ private void InitializeComponent() // this.label6.BackColor = System.Drawing.Color.Linen; this.label6.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label6.ForeColor = System.Drawing.Color.MediumBlue; + this.label6.ForeColor = System.Drawing.Color.DarkBlue; this.label6.Location = new System.Drawing.Point(746, 69); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(62, 22); @@ -365,7 +363,7 @@ private void InitializeComponent() // this.label8.BackColor = System.Drawing.Color.Linen; this.label8.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label8.ForeColor = System.Drawing.Color.MediumBlue; + this.label8.ForeColor = System.Drawing.Color.DarkBlue; this.label8.Location = new System.Drawing.Point(746, 91); this.label8.Name = "label8"; this.label8.Size = new System.Drawing.Size(62, 22); @@ -390,7 +388,7 @@ private void InitializeComponent() // this.label10.BackColor = System.Drawing.Color.Linen; this.label10.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label10.ForeColor = System.Drawing.Color.MediumBlue; + this.label10.ForeColor = System.Drawing.Color.DarkBlue; this.label10.Location = new System.Drawing.Point(746, 113); this.label10.Name = "label10"; this.label10.Size = new System.Drawing.Size(62, 22); @@ -415,7 +413,7 @@ private void InitializeComponent() // this.label12.BackColor = System.Drawing.Color.Linen; this.label12.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label12.ForeColor = System.Drawing.Color.MediumBlue; + this.label12.ForeColor = System.Drawing.Color.DarkBlue; this.label12.Location = new System.Drawing.Point(746, 135); this.label12.Name = "label12"; this.label12.Size = new System.Drawing.Size(62, 22); @@ -440,7 +438,7 @@ private void InitializeComponent() // this.label14.BackColor = System.Drawing.Color.Linen; this.label14.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label14.ForeColor = System.Drawing.Color.MediumBlue; + this.label14.ForeColor = System.Drawing.Color.DarkBlue; this.label14.Location = new System.Drawing.Point(746, 157); this.label14.Name = "label14"; this.label14.Size = new System.Drawing.Size(62, 22); @@ -465,7 +463,7 @@ private void InitializeComponent() // this.label16.BackColor = System.Drawing.Color.Linen; this.label16.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label16.ForeColor = System.Drawing.Color.MediumBlue; + this.label16.ForeColor = System.Drawing.Color.DarkBlue; this.label16.Location = new System.Drawing.Point(746, 179); this.label16.Name = "label16"; this.label16.Size = new System.Drawing.Size(62, 22); @@ -490,7 +488,7 @@ private void InitializeComponent() // this.label18.BackColor = System.Drawing.Color.Linen; this.label18.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label18.ForeColor = System.Drawing.Color.MediumBlue; + this.label18.ForeColor = System.Drawing.Color.DarkBlue; this.label18.Location = new System.Drawing.Point(746, 201); this.label18.Name = "label18"; this.label18.Size = new System.Drawing.Size(62, 22); @@ -515,7 +513,7 @@ private void InitializeComponent() // this.label20.BackColor = System.Drawing.Color.Linen; this.label20.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label20.ForeColor = System.Drawing.Color.MediumBlue; + this.label20.ForeColor = System.Drawing.Color.DarkBlue; this.label20.Location = new System.Drawing.Point(746, 223); this.label20.Name = "label20"; this.label20.Size = new System.Drawing.Size(62, 22); @@ -531,16 +529,16 @@ private void InitializeComponent() this.label21.ForeColor = System.Drawing.Color.DimGray; this.label21.Location = new System.Drawing.Point(811, 282); this.label21.Name = "label21"; - this.label21.Size = new System.Drawing.Size(160, 22); + this.label21.Size = new System.Drawing.Size(147, 22); this.label21.TabIndex = 616; - this.label21.Text = "Look Ahead Acq"; + this.label21.Text = "Acquire Factor"; this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label22 // this.label22.BackColor = System.Drawing.Color.Linen; this.label22.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label22.ForeColor = System.Drawing.Color.MediumBlue; + this.label22.ForeColor = System.Drawing.Color.DarkBlue; this.label22.Location = new System.Drawing.Point(746, 282); this.label22.Name = "label22"; this.label22.Size = new System.Drawing.Size(62, 22); @@ -556,16 +554,16 @@ private void InitializeComponent() this.label23.ForeColor = System.Drawing.Color.DimGray; this.label23.Location = new System.Drawing.Point(811, 304); this.label23.Name = "label23"; - this.label23.Size = new System.Drawing.Size(167, 22); + this.label23.Size = new System.Drawing.Size(120, 22); this.label23.TabIndex = 618; - this.label23.Text = "Look Ahead Hold"; + this.label23.Text = "Look Ahead"; this.label23.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label24 // this.label24.BackColor = System.Drawing.Color.Linen; this.label24.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label24.ForeColor = System.Drawing.Color.MediumBlue; + this.label24.ForeColor = System.Drawing.Color.DarkBlue; this.label24.Location = new System.Drawing.Point(746, 304); this.label24.Name = "label24"; this.label24.Size = new System.Drawing.Size(62, 22); @@ -590,7 +588,7 @@ private void InitializeComponent() // this.label26.BackColor = System.Drawing.Color.Linen; this.label26.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label26.ForeColor = System.Drawing.Color.MediumBlue; + this.label26.ForeColor = System.Drawing.Color.DarkBlue; this.label26.Location = new System.Drawing.Point(746, 407); this.label26.Name = "label26"; this.label26.Size = new System.Drawing.Size(62, 22); @@ -615,7 +613,7 @@ private void InitializeComponent() // this.label28.BackColor = System.Drawing.Color.Linen; this.label28.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label28.ForeColor = System.Drawing.Color.MediumBlue; + this.label28.ForeColor = System.Drawing.Color.DarkBlue; this.label28.Location = new System.Drawing.Point(746, 429); this.label28.Name = "label28"; this.label28.Size = new System.Drawing.Size(62, 22); @@ -640,7 +638,7 @@ private void InitializeComponent() // this.label30.BackColor = System.Drawing.Color.Linen; this.label30.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label30.ForeColor = System.Drawing.Color.MediumBlue; + this.label30.ForeColor = System.Drawing.Color.DarkBlue; this.label30.Location = new System.Drawing.Point(746, 451); this.label30.Name = "label30"; this.label30.Size = new System.Drawing.Size(62, 22); @@ -665,7 +663,7 @@ private void InitializeComponent() // this.label32.BackColor = System.Drawing.Color.Linen; this.label32.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label32.ForeColor = System.Drawing.Color.MediumBlue; + this.label32.ForeColor = System.Drawing.Color.DarkBlue; this.label32.Location = new System.Drawing.Point(746, 247); this.label32.Name = "label32"; this.label32.Size = new System.Drawing.Size(62, 22); @@ -690,7 +688,7 @@ private void InitializeComponent() // this.label34.BackColor = System.Drawing.Color.Linen; this.label34.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label34.ForeColor = System.Drawing.Color.MediumBlue; + this.label34.ForeColor = System.Drawing.Color.DarkBlue; this.label34.Location = new System.Drawing.Point(403, 136); this.label34.Name = "label34"; this.label34.Size = new System.Drawing.Size(62, 22); @@ -715,7 +713,7 @@ private void InitializeComponent() // this.label36.BackColor = System.Drawing.Color.Linen; this.label36.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label36.ForeColor = System.Drawing.Color.MediumBlue; + this.label36.ForeColor = System.Drawing.Color.DarkBlue; this.label36.Location = new System.Drawing.Point(403, 158); this.label36.Name = "label36"; this.label36.Size = new System.Drawing.Size(62, 22); @@ -740,7 +738,7 @@ private void InitializeComponent() // this.label38.BackColor = System.Drawing.Color.Linen; this.label38.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label38.ForeColor = System.Drawing.Color.MediumBlue; + this.label38.ForeColor = System.Drawing.Color.DarkBlue; this.label38.Location = new System.Drawing.Point(403, 180); this.label38.Name = "label38"; this.label38.Size = new System.Drawing.Size(62, 22); @@ -765,7 +763,7 @@ private void InitializeComponent() // this.label40.BackColor = System.Drawing.Color.Linen; this.label40.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label40.ForeColor = System.Drawing.Color.MediumBlue; + this.label40.ForeColor = System.Drawing.Color.DarkBlue; this.label40.Location = new System.Drawing.Point(403, 202); this.label40.Name = "label40"; this.label40.Size = new System.Drawing.Size(62, 22); @@ -790,7 +788,7 @@ private void InitializeComponent() // this.label42.BackColor = System.Drawing.Color.Linen; this.label42.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label42.ForeColor = System.Drawing.Color.MediumBlue; + this.label42.ForeColor = System.Drawing.Color.DarkBlue; this.label42.Location = new System.Drawing.Point(403, 224); this.label42.Name = "label42"; this.label42.Size = new System.Drawing.Size(62, 22); @@ -815,7 +813,7 @@ private void InitializeComponent() // this.label46.BackColor = System.Drawing.Color.Linen; this.label46.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label46.ForeColor = System.Drawing.Color.MediumBlue; + this.label46.ForeColor = System.Drawing.Color.DarkBlue; this.label46.Location = new System.Drawing.Point(65, 596); this.label46.Name = "label46"; this.label46.Size = new System.Drawing.Size(62, 22); @@ -840,7 +838,7 @@ private void InitializeComponent() // this.label48.BackColor = System.Drawing.Color.Linen; this.label48.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label48.ForeColor = System.Drawing.Color.MediumBlue; + this.label48.ForeColor = System.Drawing.Color.DarkBlue; this.label48.Location = new System.Drawing.Point(746, 350); this.label48.Name = "label48"; this.label48.Size = new System.Drawing.Size(62, 22); @@ -865,7 +863,7 @@ private void InitializeComponent() // this.label50.BackColor = System.Drawing.Color.Linen; this.label50.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label50.ForeColor = System.Drawing.Color.MediumBlue; + this.label50.ForeColor = System.Drawing.Color.DarkBlue; this.label50.Location = new System.Drawing.Point(403, 620); this.label50.Name = "label50"; this.label50.Size = new System.Drawing.Size(62, 22); @@ -890,7 +888,7 @@ private void InitializeComponent() // this.label52.BackColor = System.Drawing.Color.Linen; this.label52.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label52.ForeColor = System.Drawing.Color.MediumBlue; + this.label52.ForeColor = System.Drawing.Color.DarkBlue; this.label52.Location = new System.Drawing.Point(403, 642); this.label52.Name = "label52"; this.label52.Size = new System.Drawing.Size(62, 22); @@ -915,7 +913,7 @@ private void InitializeComponent() // this.label56.BackColor = System.Drawing.Color.Linen; this.label56.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label56.ForeColor = System.Drawing.Color.MediumBlue; + this.label56.ForeColor = System.Drawing.Color.DarkBlue; this.label56.Location = new System.Drawing.Point(403, 561); this.label56.Name = "label56"; this.label56.Size = new System.Drawing.Size(62, 22); @@ -938,9 +936,9 @@ private void InitializeComponent() // // label60 // - this.label60.BackColor = System.Drawing.Color.Transparent; + this.label60.BackColor = System.Drawing.Color.Linen; this.label60.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label60.ForeColor = System.Drawing.Color.MediumBlue; + this.label60.ForeColor = System.Drawing.Color.DarkBlue; this.label60.Location = new System.Drawing.Point(65, 48); this.label60.Name = "label60"; this.label60.Size = new System.Drawing.Size(62, 22); @@ -948,31 +946,6 @@ private void InitializeComponent() this.label60.Text = "en"; this.label60.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // - // label61 - // - this.label61.AutoSize = true; - this.label61.BackColor = System.Drawing.Color.Transparent; - this.label61.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label61.ForeColor = System.Drawing.Color.DimGray; - this.label61.Location = new System.Drawing.Point(404, 9); - this.label61.Name = "label61"; - this.label61.Size = new System.Drawing.Size(113, 22); - this.label61.TabIndex = 657; - this.label61.Text = "Current Dir"; - this.label61.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // label62 - // - this.label62.BackColor = System.Drawing.Color.Transparent; - this.label62.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label62.ForeColor = System.Drawing.Color.MediumBlue; - this.label62.Location = new System.Drawing.Point(510, 9); - this.label62.Name = "label62"; - this.label62.Size = new System.Drawing.Size(251, 22); - this.label62.TabIndex = 656; - this.label62.Text = "Dit"; - this.label62.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // // label63 // this.label63.AutoSize = true; @@ -990,7 +963,7 @@ private void InitializeComponent() // this.label64.BackColor = System.Drawing.Color.Linen; this.label64.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label64.ForeColor = System.Drawing.Color.MediumBlue; + this.label64.ForeColor = System.Drawing.Color.DarkBlue; this.label64.Location = new System.Drawing.Point(65, 82); this.label64.Name = "label64"; this.label64.Size = new System.Drawing.Size(62, 22); @@ -1015,7 +988,7 @@ private void InitializeComponent() // this.label66.BackColor = System.Drawing.Color.Linen; this.label66.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label66.ForeColor = System.Drawing.Color.MediumBlue; + this.label66.ForeColor = System.Drawing.Color.DarkBlue; this.label66.Location = new System.Drawing.Point(65, 106); this.label66.Name = "label66"; this.label66.Size = new System.Drawing.Size(62, 22); @@ -1040,7 +1013,7 @@ private void InitializeComponent() // this.label68.BackColor = System.Drawing.Color.Linen; this.label68.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label68.ForeColor = System.Drawing.Color.MediumBlue; + this.label68.ForeColor = System.Drawing.Color.DarkBlue; this.label68.Location = new System.Drawing.Point(65, 130); this.label68.Name = "label68"; this.label68.Size = new System.Drawing.Size(62, 22); @@ -1065,7 +1038,7 @@ private void InitializeComponent() // this.label70.BackColor = System.Drawing.Color.Linen; this.label70.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label70.ForeColor = System.Drawing.Color.MediumBlue; + this.label70.ForeColor = System.Drawing.Color.DarkBlue; this.label70.Location = new System.Drawing.Point(65, 154); this.label70.Name = "label70"; this.label70.Size = new System.Drawing.Size(62, 22); @@ -1090,7 +1063,7 @@ private void InitializeComponent() // this.label72.BackColor = System.Drawing.Color.Linen; this.label72.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label72.ForeColor = System.Drawing.Color.MediumBlue; + this.label72.ForeColor = System.Drawing.Color.DarkBlue; this.label72.Location = new System.Drawing.Point(65, 178); this.label72.Name = "label72"; this.label72.Size = new System.Drawing.Size(62, 22); @@ -1115,7 +1088,7 @@ private void InitializeComponent() // this.label74.BackColor = System.Drawing.Color.Linen; this.label74.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label74.ForeColor = System.Drawing.Color.MediumBlue; + this.label74.ForeColor = System.Drawing.Color.DarkBlue; this.label74.Location = new System.Drawing.Point(65, 202); this.label74.Name = "label74"; this.label74.Size = new System.Drawing.Size(62, 22); @@ -1140,7 +1113,7 @@ private void InitializeComponent() // this.label76.BackColor = System.Drawing.Color.Linen; this.label76.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label76.ForeColor = System.Drawing.Color.MediumBlue; + this.label76.ForeColor = System.Drawing.Color.DarkBlue; this.label76.Location = new System.Drawing.Point(746, 572); this.label76.Name = "label76"; this.label76.Size = new System.Drawing.Size(62, 22); @@ -1154,21 +1127,21 @@ private void InitializeComponent() this.label77.BackColor = System.Drawing.Color.Transparent; this.label77.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label77.ForeColor = System.Drawing.Color.DimGray; - this.label77.Location = new System.Drawing.Point(5, 9); + this.label77.Location = new System.Drawing.Point(5, 5); this.label77.Name = "label77"; - this.label77.Size = new System.Drawing.Size(119, 22); + this.label77.Size = new System.Drawing.Size(103, 22); this.label77.TabIndex = 673; - this.label77.Text = "Working Dir"; + this.label77.Text = "Directory:"; this.label77.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label78 // this.label78.BackColor = System.Drawing.Color.Transparent; - this.label78.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label78.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label78.ForeColor = System.Drawing.Color.MediumBlue; - this.label78.Location = new System.Drawing.Point(119, 9); + this.label78.Location = new System.Drawing.Point(105, 2); this.label78.Name = "label78"; - this.label78.Size = new System.Drawing.Size(284, 22); + this.label78.Size = new System.Drawing.Size(1071, 29); this.label78.TabIndex = 672; this.label78.Text = "Default"; this.label78.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; @@ -1190,7 +1163,7 @@ private void InitializeComponent() // this.label80.BackColor = System.Drawing.Color.Linen; this.label80.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label80.ForeColor = System.Drawing.Color.MediumBlue; + this.label80.ForeColor = System.Drawing.Color.DarkBlue; this.label80.Location = new System.Drawing.Point(746, 616); this.label80.Name = "label80"; this.label80.Size = new System.Drawing.Size(62, 22); @@ -1215,7 +1188,7 @@ private void InitializeComponent() // this.label82.BackColor = System.Drawing.Color.Linen; this.label82.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label82.ForeColor = System.Drawing.Color.MediumBlue; + this.label82.ForeColor = System.Drawing.Color.DarkBlue; this.label82.Location = new System.Drawing.Point(403, 473); this.label82.Name = "label82"; this.label82.Size = new System.Drawing.Size(62, 22); @@ -1240,7 +1213,7 @@ private void InitializeComponent() // this.label84.BackColor = System.Drawing.Color.Linen; this.label84.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label84.ForeColor = System.Drawing.Color.MediumBlue; + this.label84.ForeColor = System.Drawing.Color.DarkBlue; this.label84.Location = new System.Drawing.Point(403, 495); this.label84.Name = "label84"; this.label84.Size = new System.Drawing.Size(62, 22); @@ -1265,7 +1238,7 @@ private void InitializeComponent() // this.label88.BackColor = System.Drawing.Color.Linen; this.label88.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label88.ForeColor = System.Drawing.Color.MediumBlue; + this.label88.ForeColor = System.Drawing.Color.DarkBlue; this.label88.Location = new System.Drawing.Point(746, 638); this.label88.Name = "label88"; this.label88.Size = new System.Drawing.Size(62, 22); @@ -1290,7 +1263,7 @@ private void InitializeComponent() // this.label92.BackColor = System.Drawing.Color.Linen; this.label92.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label92.ForeColor = System.Drawing.Color.MediumBlue; + this.label92.ForeColor = System.Drawing.Color.DarkBlue; this.label92.Location = new System.Drawing.Point(403, 517); this.label92.Name = "label92"; this.label92.Size = new System.Drawing.Size(62, 22); @@ -1315,7 +1288,7 @@ private void InitializeComponent() // this.label94.BackColor = System.Drawing.Color.Linen; this.label94.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label94.ForeColor = System.Drawing.Color.MediumBlue; + this.label94.ForeColor = System.Drawing.Color.DarkBlue; this.label94.Location = new System.Drawing.Point(403, 539); this.label94.Name = "label94"; this.label94.Size = new System.Drawing.Size(62, 22); @@ -1340,7 +1313,7 @@ private void InitializeComponent() // this.label96.BackColor = System.Drawing.Color.Linen; this.label96.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label96.ForeColor = System.Drawing.Color.MediumBlue; + this.label96.ForeColor = System.Drawing.Color.DarkBlue; this.label96.Location = new System.Drawing.Point(746, 594); this.label96.Name = "label96"; this.label96.Size = new System.Drawing.Size(62, 22); @@ -1365,7 +1338,7 @@ private void InitializeComponent() // this.label98.BackColor = System.Drawing.Color.Linen; this.label98.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label98.ForeColor = System.Drawing.Color.MediumBlue; + this.label98.ForeColor = System.Drawing.Color.DarkBlue; this.label98.Location = new System.Drawing.Point(403, 304); this.label98.Name = "label98"; this.label98.Size = new System.Drawing.Size(62, 22); @@ -1390,7 +1363,7 @@ private void InitializeComponent() // this.label100.BackColor = System.Drawing.Color.Linen; this.label100.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label100.ForeColor = System.Drawing.Color.MediumBlue; + this.label100.ForeColor = System.Drawing.Color.DarkBlue; this.label100.Location = new System.Drawing.Point(746, 550); this.label100.Name = "label100"; this.label100.Size = new System.Drawing.Size(62, 22); @@ -1415,7 +1388,7 @@ private void InitializeComponent() // this.label102.BackColor = System.Drawing.Color.Linen; this.label102.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label102.ForeColor = System.Drawing.Color.MediumBlue; + this.label102.ForeColor = System.Drawing.Color.DarkBlue; this.label102.Location = new System.Drawing.Point(65, 620); this.label102.Name = "label102"; this.label102.Size = new System.Drawing.Size(62, 22); @@ -1440,7 +1413,7 @@ private void InitializeComponent() // this.label104.BackColor = System.Drawing.Color.Linen; this.label104.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label104.ForeColor = System.Drawing.Color.MediumBlue; + this.label104.ForeColor = System.Drawing.Color.DarkBlue; this.label104.Location = new System.Drawing.Point(403, 451); this.label104.Name = "label104"; this.label104.Size = new System.Drawing.Size(62, 22); @@ -1465,7 +1438,7 @@ private void InitializeComponent() // this.label106.BackColor = System.Drawing.Color.Linen; this.label106.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label106.ForeColor = System.Drawing.Color.MediumBlue; + this.label106.ForeColor = System.Drawing.Color.DarkBlue; this.label106.Location = new System.Drawing.Point(746, 512); this.label106.Name = "label106"; this.label106.Size = new System.Drawing.Size(62, 22); @@ -1490,7 +1463,7 @@ private void InitializeComponent() // this.label108.BackColor = System.Drawing.Color.Linen; this.label108.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label108.ForeColor = System.Drawing.Color.MediumBlue; + this.label108.ForeColor = System.Drawing.Color.DarkBlue; this.label108.Location = new System.Drawing.Point(65, 642); this.label108.Name = "label108"; this.label108.Size = new System.Drawing.Size(62, 22); @@ -1515,7 +1488,7 @@ private void InitializeComponent() // this.label110.BackColor = System.Drawing.Color.Linen; this.label110.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label110.ForeColor = System.Drawing.Color.MediumBlue; + this.label110.ForeColor = System.Drawing.Color.DarkBlue; this.label110.Location = new System.Drawing.Point(403, 326); this.label110.Name = "label110"; this.label110.Size = new System.Drawing.Size(62, 22); @@ -1540,7 +1513,7 @@ private void InitializeComponent() // this.label112.BackColor = System.Drawing.Color.Linen; this.label112.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label112.ForeColor = System.Drawing.Color.MediumBlue; + this.label112.ForeColor = System.Drawing.Color.DarkBlue; this.label112.Location = new System.Drawing.Point(403, 348); this.label112.Name = "label112"; this.label112.Size = new System.Drawing.Size(62, 22); @@ -1565,7 +1538,7 @@ private void InitializeComponent() // this.label114.BackColor = System.Drawing.Color.Linen; this.label114.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label114.ForeColor = System.Drawing.Color.MediumBlue; + this.label114.ForeColor = System.Drawing.Color.DarkBlue; this.label114.Location = new System.Drawing.Point(403, 370); this.label114.Name = "label114"; this.label114.Size = new System.Drawing.Size(62, 22); @@ -1590,7 +1563,7 @@ private void InitializeComponent() // this.label116.BackColor = System.Drawing.Color.Linen; this.label116.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label116.ForeColor = System.Drawing.Color.MediumBlue; + this.label116.ForeColor = System.Drawing.Color.DarkBlue; this.label116.Location = new System.Drawing.Point(65, 226); this.label116.Name = "label116"; this.label116.Size = new System.Drawing.Size(62, 22); @@ -1615,7 +1588,7 @@ private void InitializeComponent() // this.label118.BackColor = System.Drawing.Color.Linen; this.label118.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label118.ForeColor = System.Drawing.Color.MediumBlue; + this.label118.ForeColor = System.Drawing.Color.DarkBlue; this.label118.Location = new System.Drawing.Point(65, 250); this.label118.Name = "label118"; this.label118.Size = new System.Drawing.Size(62, 22); @@ -1640,7 +1613,7 @@ private void InitializeComponent() // this.label120.BackColor = System.Drawing.Color.Linen; this.label120.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label120.ForeColor = System.Drawing.Color.MediumBlue; + this.label120.ForeColor = System.Drawing.Color.DarkBlue; this.label120.Location = new System.Drawing.Point(65, 274); this.label120.Name = "label120"; this.label120.Size = new System.Drawing.Size(62, 22); @@ -1665,7 +1638,7 @@ private void InitializeComponent() // this.label122.BackColor = System.Drawing.Color.Linen; this.label122.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label122.ForeColor = System.Drawing.Color.MediumBlue; + this.label122.ForeColor = System.Drawing.Color.DarkBlue; this.label122.Location = new System.Drawing.Point(65, 298); this.label122.Name = "label122"; this.label122.Size = new System.Drawing.Size(62, 22); @@ -1690,7 +1663,7 @@ private void InitializeComponent() // this.label124.BackColor = System.Drawing.Color.Linen; this.label124.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label124.ForeColor = System.Drawing.Color.MediumBlue; + this.label124.ForeColor = System.Drawing.Color.DarkBlue; this.label124.Location = new System.Drawing.Point(65, 507); this.label124.Name = "label124"; this.label124.Size = new System.Drawing.Size(62, 22); @@ -1715,7 +1688,7 @@ private void InitializeComponent() // this.label126.BackColor = System.Drawing.Color.Linen; this.label126.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label126.ForeColor = System.Drawing.Color.MediumBlue; + this.label126.ForeColor = System.Drawing.Color.DarkBlue; this.label126.Location = new System.Drawing.Point(65, 334); this.label126.Name = "label126"; this.label126.Size = new System.Drawing.Size(62, 22); @@ -1740,7 +1713,7 @@ private void InitializeComponent() // this.label128.BackColor = System.Drawing.Color.Linen; this.label128.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label128.ForeColor = System.Drawing.Color.MediumBlue; + this.label128.ForeColor = System.Drawing.Color.DarkBlue; this.label128.Location = new System.Drawing.Point(403, 248); this.label128.Name = "label128"; this.label128.Size = new System.Drawing.Size(62, 22); @@ -1765,7 +1738,7 @@ private void InitializeComponent() // this.label130.BackColor = System.Drawing.Color.Linen; this.label130.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label130.ForeColor = System.Drawing.Color.MediumBlue; + this.label130.ForeColor = System.Drawing.Color.DarkBlue; this.label130.Location = new System.Drawing.Point(65, 554); this.label130.Name = "label130"; this.label130.Size = new System.Drawing.Size(62, 22); @@ -1790,7 +1763,7 @@ private void InitializeComponent() // this.label132.BackColor = System.Drawing.Color.Linen; this.label132.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label132.ForeColor = System.Drawing.Color.MediumBlue; + this.label132.ForeColor = System.Drawing.Color.DarkBlue; this.label132.Location = new System.Drawing.Point(403, 48); this.label132.Name = "label132"; this.label132.Size = new System.Drawing.Size(62, 22); @@ -1815,7 +1788,7 @@ private void InitializeComponent() // this.label134.BackColor = System.Drawing.Color.Linen; this.label134.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label134.ForeColor = System.Drawing.Color.MediumBlue; + this.label134.ForeColor = System.Drawing.Color.DarkBlue; this.label134.Location = new System.Drawing.Point(746, 385); this.label134.Name = "label134"; this.label134.Size = new System.Drawing.Size(62, 22); @@ -1840,7 +1813,7 @@ private void InitializeComponent() // this.label136.BackColor = System.Drawing.Color.Linen; this.label136.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label136.ForeColor = System.Drawing.Color.MediumBlue; + this.label136.ForeColor = System.Drawing.Color.DarkBlue; this.label136.Location = new System.Drawing.Point(403, 70); this.label136.Name = "label136"; this.label136.Size = new System.Drawing.Size(62, 22); @@ -1865,7 +1838,7 @@ private void InitializeComponent() // this.label138.BackColor = System.Drawing.Color.Linen; this.label138.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label138.ForeColor = System.Drawing.Color.MediumBlue; + this.label138.ForeColor = System.Drawing.Color.DarkBlue; this.label138.Location = new System.Drawing.Point(403, 92); this.label138.Name = "label138"; this.label138.Size = new System.Drawing.Size(62, 22); @@ -1881,16 +1854,16 @@ private void InitializeComponent() this.label139.ForeColor = System.Drawing.Color.DimGray; this.label139.Location = new System.Drawing.Point(466, 114); this.label139.Name = "label139"; - this.label139.Size = new System.Drawing.Size(191, 22); + this.label139.Size = new System.Drawing.Size(169, 22); this.label139.TabIndex = 735; - this.label139.Text = "Min Turning Radius"; + this.label139.Text = "Min Uturn Radius"; this.label139.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label140 // this.label140.BackColor = System.Drawing.Color.Linen; this.label140.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label140.ForeColor = System.Drawing.Color.MediumBlue; + this.label140.ForeColor = System.Drawing.Color.DarkBlue; this.label140.Location = new System.Drawing.Point(403, 114); this.label140.Name = "label140"; this.label140.Size = new System.Drawing.Size(62, 22); @@ -1915,7 +1888,7 @@ private void InitializeComponent() // this.label142.BackColor = System.Drawing.Color.Linen; this.label142.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label142.ForeColor = System.Drawing.Color.MediumBlue; + this.label142.ForeColor = System.Drawing.Color.DarkBlue; this.label142.Location = new System.Drawing.Point(403, 392); this.label142.Name = "label142"; this.label142.Size = new System.Drawing.Size(62, 22); @@ -1940,7 +1913,7 @@ private void InitializeComponent() // this.label144.BackColor = System.Drawing.Color.Linen; this.label144.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label144.ForeColor = System.Drawing.Color.MediumBlue; + this.label144.ForeColor = System.Drawing.Color.DarkBlue; this.label144.Location = new System.Drawing.Point(403, 414); this.label144.Name = "label144"; this.label144.Size = new System.Drawing.Size(62, 22); @@ -1965,7 +1938,7 @@ private void InitializeComponent() // this.label146.BackColor = System.Drawing.Color.Linen; this.label146.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label146.ForeColor = System.Drawing.Color.MediumBlue; + this.label146.ForeColor = System.Drawing.Color.DarkBlue; this.label146.Location = new System.Drawing.Point(65, 530); this.label146.Name = "label146"; this.label146.Size = new System.Drawing.Size(62, 22); @@ -1990,7 +1963,7 @@ private void InitializeComponent() // this.label148.BackColor = System.Drawing.Color.Linen; this.label148.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label148.ForeColor = System.Drawing.Color.MediumBlue; + this.label148.ForeColor = System.Drawing.Color.DarkBlue; this.label148.Location = new System.Drawing.Point(65, 357); this.label148.Name = "label148"; this.label148.Size = new System.Drawing.Size(62, 22); @@ -2015,7 +1988,7 @@ private void InitializeComponent() // this.label150.BackColor = System.Drawing.Color.Linen; this.label150.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label150.ForeColor = System.Drawing.Color.MediumBlue; + this.label150.ForeColor = System.Drawing.Color.DarkBlue; this.label150.Location = new System.Drawing.Point(65, 380); this.label150.Name = "label150"; this.label150.Size = new System.Drawing.Size(62, 22); @@ -2040,7 +2013,7 @@ private void InitializeComponent() // this.label152.BackColor = System.Drawing.Color.Linen; this.label152.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label152.ForeColor = System.Drawing.Color.MediumBlue; + this.label152.ForeColor = System.Drawing.Color.DarkBlue; this.label152.Location = new System.Drawing.Point(65, 403); this.label152.Name = "label152"; this.label152.Size = new System.Drawing.Size(62, 22); @@ -2065,7 +2038,7 @@ private void InitializeComponent() // this.label154.BackColor = System.Drawing.Color.Linen; this.label154.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label154.ForeColor = System.Drawing.Color.MediumBlue; + this.label154.ForeColor = System.Drawing.Color.DarkBlue; this.label154.Location = new System.Drawing.Point(65, 426); this.label154.Name = "label154"; this.label154.Size = new System.Drawing.Size(62, 22); @@ -2090,7 +2063,7 @@ private void InitializeComponent() // this.label156.BackColor = System.Drawing.Color.Linen; this.label156.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label156.ForeColor = System.Drawing.Color.MediumBlue; + this.label156.ForeColor = System.Drawing.Color.DarkBlue; this.label156.Location = new System.Drawing.Point(65, 449); this.label156.Name = "label156"; this.label156.Size = new System.Drawing.Size(62, 22); @@ -2115,7 +2088,7 @@ private void InitializeComponent() // this.label158.BackColor = System.Drawing.Color.Linen; this.label158.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label158.ForeColor = System.Drawing.Color.MediumBlue; + this.label158.ForeColor = System.Drawing.Color.DarkBlue; this.label158.Location = new System.Drawing.Point(65, 472); this.label158.Name = "label158"; this.label158.Size = new System.Drawing.Size(62, 22); @@ -2123,31 +2096,6 @@ private void InitializeComponent() this.label158.Text = "4"; this.label158.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // - // label159 - // - this.label159.AutoSize = true; - this.label159.BackColor = System.Drawing.Color.Transparent; - this.label159.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label159.ForeColor = System.Drawing.Color.DimGray; - this.label159.Location = new System.Drawing.Point(757, 9); - this.label159.Name = "label159"; - this.label159.Size = new System.Drawing.Size(134, 22); - this.label159.TabIndex = 755; - this.label159.Text = "Vehicle Name"; - this.label159.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // label160 - // - this.label160.BackColor = System.Drawing.Color.Transparent; - this.label160.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label160.ForeColor = System.Drawing.Color.MediumBlue; - this.label160.Location = new System.Drawing.Point(885, 9); - this.label160.Name = "label160"; - this.label160.Size = new System.Drawing.Size(302, 22); - this.label160.TabIndex = 754; - this.label160.Text = "Default Vehicle"; - this.label160.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // // label161 // this.label161.AutoSize = true; @@ -2165,7 +2113,7 @@ private void InitializeComponent() // this.label162.BackColor = System.Drawing.Color.Linen; this.label162.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label162.ForeColor = System.Drawing.Color.MediumBlue; + this.label162.ForeColor = System.Drawing.Color.DarkBlue; this.label162.Location = new System.Drawing.Point(403, 270); this.label162.Name = "label162"; this.label162.Size = new System.Drawing.Size(62, 22); @@ -2181,16 +2129,16 @@ private void InitializeComponent() this.label167.ForeColor = System.Drawing.Color.DimGray; this.label167.Location = new System.Drawing.Point(811, 326); this.label167.Name = "label167"; - this.label167.Size = new System.Drawing.Size(170, 22); + this.label167.Size = new System.Drawing.Size(134, 22); this.label167.TabIndex = 763; - this.label167.Text = "Look Ahead Multi"; + this.label167.Text = "Speed Factor"; this.label167.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label168 // this.label168.BackColor = System.Drawing.Color.Linen; this.label168.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label168.ForeColor = System.Drawing.Color.MediumBlue; + this.label168.ForeColor = System.Drawing.Color.DarkBlue; this.label168.Location = new System.Drawing.Point(746, 326); this.label168.Name = "label168"; this.label168.Size = new System.Drawing.Size(62, 22); @@ -2215,7 +2163,7 @@ private void InitializeComponent() // this.label164.BackColor = System.Drawing.Color.Linen; this.label164.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label164.ForeColor = System.Drawing.Color.MediumBlue; + this.label164.ForeColor = System.Drawing.Color.DarkBlue; this.label164.Location = new System.Drawing.Point(746, 490); this.label164.Name = "label164"; this.label164.Size = new System.Drawing.Size(62, 22); @@ -2976,7 +2924,7 @@ private void InitializeComponent() this.label230.Name = "label230"; this.label230.Size = new System.Drawing.Size(62, 22); this.label230.TabIndex = 826; - this.label230.Text = "3"; + this.label230.Text = "0.9"; this.label230.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // label231 @@ -3116,7 +3064,7 @@ private void InitializeComponent() this.label209.AutoSize = true; this.label209.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label209.ForeColor = System.Drawing.Color.DimGray; - this.label209.Location = new System.Drawing.Point(1074, 476); + this.label209.Location = new System.Drawing.Point(1074, 494); this.label209.Name = "label209"; this.label209.Size = new System.Drawing.Size(36, 23); this.label209.TabIndex = 869; @@ -3127,8 +3075,8 @@ private void InitializeComponent() this.lblAngularVelocity.AutoSize = true; this.lblAngularVelocity.BackColor = System.Drawing.Color.Linen; this.lblAngularVelocity.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblAngularVelocity.ForeColor = System.Drawing.Color.MediumBlue; - this.lblAngularVelocity.Location = new System.Drawing.Point(1110, 476); + this.lblAngularVelocity.ForeColor = System.Drawing.Color.DarkBlue; + this.lblAngularVelocity.Location = new System.Drawing.Point(1110, 494); this.lblAngularVelocity.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblAngularVelocity.Name = "lblAngularVelocity"; this.lblAngularVelocity.Size = new System.Drawing.Size(52, 23); @@ -3141,7 +3089,7 @@ private void InitializeComponent() this.label241.AutoSize = true; this.label241.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label241.ForeColor = System.Drawing.Color.DimGray; - this.label241.Location = new System.Drawing.Point(1021, 448); + this.label241.Location = new System.Drawing.Point(1021, 466); this.label241.Name = "label241"; this.label241.Size = new System.Drawing.Size(89, 23); this.label241.TabIndex = 867; @@ -3152,8 +3100,8 @@ private void InitializeComponent() this.lblFuzeHeading.AutoSize = true; this.lblFuzeHeading.BackColor = System.Drawing.Color.Linen; this.lblFuzeHeading.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblFuzeHeading.ForeColor = System.Drawing.Color.MediumBlue; - this.lblFuzeHeading.Location = new System.Drawing.Point(1110, 449); + this.lblFuzeHeading.ForeColor = System.Drawing.Color.DarkBlue; + this.lblFuzeHeading.Location = new System.Drawing.Point(1110, 467); this.lblFuzeHeading.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblFuzeHeading.Name = "lblFuzeHeading"; this.lblFuzeHeading.Size = new System.Drawing.Size(64, 23); @@ -3166,7 +3114,7 @@ private void InitializeComponent() this.label242.AutoSize = true; this.label242.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label242.ForeColor = System.Drawing.Color.DimGray; - this.label242.Location = new System.Drawing.Point(1032, 392); + this.label242.Location = new System.Drawing.Point(1032, 410); this.label242.Name = "label242"; this.label242.Size = new System.Drawing.Size(78, 23); this.label242.TabIndex = 865; @@ -3177,8 +3125,8 @@ private void InitializeComponent() this.lblFix2FixHeading.AutoSize = true; this.lblFix2FixHeading.BackColor = System.Drawing.Color.Linen; this.lblFix2FixHeading.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblFix2FixHeading.ForeColor = System.Drawing.Color.MediumBlue; - this.lblFix2FixHeading.Location = new System.Drawing.Point(1110, 392); + this.lblFix2FixHeading.ForeColor = System.Drawing.Color.DarkBlue; + this.lblFix2FixHeading.Location = new System.Drawing.Point(1110, 410); this.lblFix2FixHeading.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblFix2FixHeading.Name = "lblFix2FixHeading"; this.lblFix2FixHeading.Size = new System.Drawing.Size(64, 23); @@ -3191,7 +3139,7 @@ private void InitializeComponent() this.label243.AutoSize = true; this.label243.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label243.ForeColor = System.Drawing.Color.DimGray; - this.label243.Location = new System.Drawing.Point(1060, 420); + this.label243.Location = new System.Drawing.Point(1060, 438); this.label243.Name = "label243"; this.label243.Size = new System.Drawing.Size(50, 23); this.label243.TabIndex = 863; @@ -3202,8 +3150,8 @@ private void InitializeComponent() this.lblIMUHeading.AutoSize = true; this.lblIMUHeading.BackColor = System.Drawing.Color.Linen; this.lblIMUHeading.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblIMUHeading.ForeColor = System.Drawing.Color.MediumBlue; - this.lblIMUHeading.Location = new System.Drawing.Point(1110, 420); + this.lblIMUHeading.ForeColor = System.Drawing.Color.DarkBlue; + this.lblIMUHeading.Location = new System.Drawing.Point(1110, 438); this.lblIMUHeading.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblIMUHeading.Name = "lblIMUHeading"; this.lblIMUHeading.Size = new System.Drawing.Size(64, 23); @@ -3216,7 +3164,7 @@ private void InitializeComponent() this.label244.AutoSize = true; this.label244.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label244.ForeColor = System.Drawing.Color.DimGray; - this.label244.Location = new System.Drawing.Point(1034, 364); + this.label244.Location = new System.Drawing.Point(1034, 382); this.label244.Name = "label244"; this.label244.Size = new System.Drawing.Size(76, 23); this.label244.TabIndex = 861; @@ -3227,8 +3175,8 @@ private void InitializeComponent() this.lbludpWatchCounts.AutoSize = true; this.lbludpWatchCounts.BackColor = System.Drawing.Color.Linen; this.lbludpWatchCounts.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lbludpWatchCounts.ForeColor = System.Drawing.Color.MediumBlue; - this.lbludpWatchCounts.Location = new System.Drawing.Point(1110, 364); + this.lbludpWatchCounts.ForeColor = System.Drawing.Color.DarkBlue; + this.lbludpWatchCounts.Location = new System.Drawing.Point(1110, 382); this.lbludpWatchCounts.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lbludpWatchCounts.Name = "lbludpWatchCounts"; this.lbludpWatchCounts.Size = new System.Drawing.Size(59, 23); @@ -3241,7 +3189,7 @@ private void InitializeComponent() this.label245.AutoSize = true; this.label245.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label245.ForeColor = System.Drawing.Color.DimGray; - this.label245.Location = new System.Drawing.Point(1041, 280); + this.label245.Location = new System.Drawing.Point(1041, 298); this.label245.Name = "label245"; this.label245.Size = new System.Drawing.Size(69, 23); this.label245.TabIndex = 859; @@ -3252,8 +3200,8 @@ private void InitializeComponent() this.lblFrameTime.AutoSize = true; this.lblFrameTime.BackColor = System.Drawing.Color.Linen; this.lblFrameTime.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblFrameTime.ForeColor = System.Drawing.Color.MediumBlue; - this.lblFrameTime.Location = new System.Drawing.Point(1110, 280); + this.lblFrameTime.ForeColor = System.Drawing.Color.DarkBlue; + this.lblFrameTime.Location = new System.Drawing.Point(1110, 298); this.lblFrameTime.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblFrameTime.Name = "lblFrameTime"; this.lblFrameTime.Size = new System.Drawing.Size(59, 23); @@ -3266,7 +3214,7 @@ private void InitializeComponent() this.label246.AutoSize = true; this.label246.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label246.ForeColor = System.Drawing.Color.DimGray; - this.label246.Location = new System.Drawing.Point(1027, 308); + this.label246.Location = new System.Drawing.Point(1027, 326); this.label246.Name = "label246"; this.label246.Size = new System.Drawing.Size(83, 23); this.label246.TabIndex = 857; @@ -3277,8 +3225,8 @@ private void InitializeComponent() this.lblTimeSlice.AutoSize = true; this.lblTimeSlice.BackColor = System.Drawing.Color.Linen; this.lblTimeSlice.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblTimeSlice.ForeColor = System.Drawing.Color.MediumBlue; - this.lblTimeSlice.Location = new System.Drawing.Point(1110, 308); + this.lblTimeSlice.ForeColor = System.Drawing.Color.DarkBlue; + this.lblTimeSlice.Location = new System.Drawing.Point(1110, 326); this.lblTimeSlice.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblTimeSlice.Name = "lblTimeSlice"; this.lblTimeSlice.Size = new System.Drawing.Size(59, 23); @@ -3291,7 +3239,7 @@ private void InitializeComponent() this.label247.AutoSize = true; this.label247.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label247.ForeColor = System.Drawing.Color.DimGray; - this.label247.Location = new System.Drawing.Point(1075, 336); + this.label247.Location = new System.Drawing.Point(1075, 354); this.label247.Name = "label247"; this.label247.Size = new System.Drawing.Size(35, 23); this.label247.TabIndex = 855; @@ -3302,8 +3250,8 @@ private void InitializeComponent() this.lblHz.AutoSize = true; this.lblHz.BackColor = System.Drawing.Color.Linen; this.lblHz.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblHz.ForeColor = System.Drawing.Color.MediumBlue; - this.lblHz.Location = new System.Drawing.Point(1110, 336); + this.lblHz.ForeColor = System.Drawing.Color.DarkBlue; + this.lblHz.Location = new System.Drawing.Point(1110, 354); this.lblHz.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblHz.Name = "lblHz"; this.lblHz.Size = new System.Drawing.Size(59, 23); @@ -3311,38 +3259,12 @@ private void InitializeComponent() this.lblHz.Text = "msec"; this.lblHz.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // - // lblLatitude - // - this.lblLatitude.BackColor = System.Drawing.Color.Linen; - this.lblLatitude.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblLatitude.ForeColor = System.Drawing.Color.MediumBlue; - this.lblLatitude.Location = new System.Drawing.Point(1030, 41); - this.lblLatitude.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); - this.lblLatitude.Name = "lblLatitude"; - this.lblLatitude.Size = new System.Drawing.Size(144, 27); - this.lblLatitude.TabIndex = 846; - this.lblLatitude.Text = "Latitude"; - this.lblLatitude.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // - // lblLongitude - // - this.lblLongitude.BackColor = System.Drawing.Color.Linen; - this.lblLongitude.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblLongitude.ForeColor = System.Drawing.Color.MediumBlue; - this.lblLongitude.Location = new System.Drawing.Point(1030, 72); - this.lblLongitude.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); - this.lblLongitude.Name = "lblLongitude"; - this.lblLongitude.Size = new System.Drawing.Size(144, 27); - this.lblLongitude.TabIndex = 847; - this.lblLongitude.Text = "-128.1234567"; - this.lblLongitude.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // // lblEastingField // this.lblEastingField.BackColor = System.Drawing.Color.Linen; this.lblEastingField.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblEastingField.ForeColor = System.Drawing.Color.MediumBlue; - this.lblEastingField.Location = new System.Drawing.Point(1089, 129); + this.lblEastingField.ForeColor = System.Drawing.Color.DarkBlue; + this.lblEastingField.Location = new System.Drawing.Point(1089, 147); this.lblEastingField.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblEastingField.Name = "lblEastingField"; this.lblEastingField.Size = new System.Drawing.Size(83, 24); @@ -3353,8 +3275,8 @@ private void InitializeComponent() // this.lblNorthingField.BackColor = System.Drawing.Color.Linen; this.lblNorthingField.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblNorthingField.ForeColor = System.Drawing.Color.MediumBlue; - this.lblNorthingField.Location = new System.Drawing.Point(1089, 102); + this.lblNorthingField.ForeColor = System.Drawing.Color.DarkBlue; + this.lblNorthingField.Location = new System.Drawing.Point(1089, 120); this.lblNorthingField.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblNorthingField.Name = "lblNorthingField"; this.lblNorthingField.Size = new System.Drawing.Size(83, 24); @@ -3366,7 +3288,7 @@ private void InitializeComponent() this.label248.AutoSize = true; this.label248.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label248.ForeColor = System.Drawing.Color.DimGray; - this.label248.Location = new System.Drawing.Point(1044, 252); + this.label248.Location = new System.Drawing.Point(1044, 270); this.label248.Name = "label248"; this.label248.Size = new System.Drawing.Size(66, 23); this.label248.TabIndex = 851; @@ -3377,8 +3299,8 @@ private void InitializeComponent() this.lblHDOP.AutoSize = true; this.lblHDOP.BackColor = System.Drawing.Color.Linen; this.lblHDOP.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblHDOP.ForeColor = System.Drawing.Color.MediumBlue; - this.lblHDOP.Location = new System.Drawing.Point(1107, 252); + this.lblHDOP.ForeColor = System.Drawing.Color.DarkBlue; + this.lblHDOP.Location = new System.Drawing.Point(1107, 270); this.lblHDOP.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblHDOP.Name = "lblHDOP"; this.lblHDOP.Size = new System.Drawing.Size(66, 23); @@ -3391,7 +3313,7 @@ private void InitializeComponent() this.label249.AutoSize = true; this.label249.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label249.ForeColor = System.Drawing.Color.DimGray; - this.label249.Location = new System.Drawing.Point(1035, 159); + this.label249.Location = new System.Drawing.Point(1035, 177); this.label249.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label249.Name = "label249"; this.label249.Size = new System.Drawing.Size(50, 23); @@ -3403,8 +3325,8 @@ private void InitializeComponent() this.lblAltitude.AutoSize = true; this.lblAltitude.BackColor = System.Drawing.Color.Linen; this.lblAltitude.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblAltitude.ForeColor = System.Drawing.Color.MediumBlue; - this.lblAltitude.Location = new System.Drawing.Point(1082, 159); + this.lblAltitude.ForeColor = System.Drawing.Color.DarkBlue; + this.lblAltitude.Location = new System.Drawing.Point(1082, 177); this.lblAltitude.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblAltitude.Name = "lblAltitude"; this.lblAltitude.Size = new System.Drawing.Size(86, 23); @@ -3417,8 +3339,8 @@ private void InitializeComponent() this.lblSatsTracked.AutoSize = true; this.lblSatsTracked.BackColor = System.Drawing.Color.Linen; this.lblSatsTracked.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblSatsTracked.ForeColor = System.Drawing.Color.MediumBlue; - this.lblSatsTracked.Location = new System.Drawing.Point(1110, 225); + this.lblSatsTracked.ForeColor = System.Drawing.Color.DarkBlue; + this.lblSatsTracked.Location = new System.Drawing.Point(1110, 243); this.lblSatsTracked.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblSatsTracked.Name = "lblSatsTracked"; this.lblSatsTracked.Size = new System.Drawing.Size(51, 23); @@ -3431,7 +3353,7 @@ private void InitializeComponent() this.label250.AutoSize = true; this.label250.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label250.ForeColor = System.Drawing.Color.DimGray; - this.label250.Location = new System.Drawing.Point(1040, 225); + this.label250.Location = new System.Drawing.Point(1040, 243); this.label250.Name = "label250"; this.label250.Size = new System.Drawing.Size(73, 23); this.label250.TabIndex = 845; @@ -3442,7 +3364,7 @@ private void InitializeComponent() this.label85.AutoSize = true; this.label85.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label85.ForeColor = System.Drawing.Color.DimGray; - this.label85.Location = new System.Drawing.Point(1027, 103); + this.label85.Location = new System.Drawing.Point(1027, 121); this.label85.Name = "label85"; this.label85.Size = new System.Drawing.Size(65, 23); this.label85.TabIndex = 870; @@ -3453,40 +3375,18 @@ private void InitializeComponent() this.label86.AutoSize = true; this.label86.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label86.ForeColor = System.Drawing.Color.DimGray; - this.label86.Location = new System.Drawing.Point(1041, 130); + this.label86.Location = new System.Drawing.Point(1041, 148); this.label86.Name = "label86"; this.label86.Size = new System.Drawing.Size(51, 23); this.label86.TabIndex = 871; this.label86.Text = "East"; // - // label251 - // - this.label251.AutoSize = true; - this.label251.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label251.ForeColor = System.Drawing.Color.DimGray; - this.label251.Location = new System.Drawing.Point(990, 74); - this.label251.Name = "label251"; - this.label251.Size = new System.Drawing.Size(45, 23); - this.label251.TabIndex = 873; - this.label251.Text = "Lon"; - // - // label252 - // - this.label252.AutoSize = true; - this.label252.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label252.ForeColor = System.Drawing.Color.DimGray; - this.label252.Location = new System.Drawing.Point(995, 43); - this.label252.Name = "label252"; - this.label252.Size = new System.Drawing.Size(40, 23); - this.label252.TabIndex = 872; - this.label252.Text = "Lat"; - // // label254 // this.label254.BackColor = System.Drawing.Color.Linen; this.label254.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label254.ForeColor = System.Drawing.Color.MediumBlue; - this.label254.Location = new System.Drawing.Point(1004, 195); + this.label254.ForeColor = System.Drawing.Color.DarkBlue; + this.label254.Location = new System.Drawing.Point(1004, 213); this.label254.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label254.Name = "label254"; this.label254.Size = new System.Drawing.Size(170, 23); @@ -3539,7 +3439,7 @@ private void InitializeComponent() // this.label58.BackColor = System.Drawing.Color.Linen; this.label58.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label58.ForeColor = System.Drawing.Color.MediumBlue; + this.label58.ForeColor = System.Drawing.Color.DarkBlue; this.label58.Location = new System.Drawing.Point(403, 583); this.label58.Name = "label58"; this.label58.Size = new System.Drawing.Size(62, 22); @@ -3593,6 +3493,80 @@ private void InitializeComponent() this.label89.Text = "en"; this.label89.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // + // label90 + // + this.label90.BackColor = System.Drawing.Color.Transparent; + this.label90.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label90.ForeColor = System.Drawing.Color.DimGray; + this.label90.Location = new System.Drawing.Point(981, 69); + this.label90.Name = "label90"; + this.label90.Size = new System.Drawing.Size(36, 22); + this.label90.TabIndex = 886; + this.label90.Text = "5"; + this.label90.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label197 + // + this.label197.BackColor = System.Drawing.Color.Transparent; + this.label197.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label197.ForeColor = System.Drawing.Color.DimGray; + this.label197.Location = new System.Drawing.Point(955, 47); + this.label197.Name = "label197"; + this.label197.Size = new System.Drawing.Size(62, 22); + this.label197.TabIndex = 885; + this.label197.Text = "10"; + this.label197.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label207 + // + this.label207.AutoSize = true; + this.label207.BackColor = System.Drawing.Color.Transparent; + this.label207.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label207.ForeColor = System.Drawing.Color.DimGray; + this.label207.Location = new System.Drawing.Point(1072, 69); + this.label207.Name = "label207"; + this.label207.Size = new System.Drawing.Size(62, 22); + this.label207.TabIndex = 884; + this.label207.Text = "Delay"; + this.label207.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label223 + // + this.label223.AutoSize = true; + this.label223.BackColor = System.Drawing.Color.Transparent; + this.label223.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label223.ForeColor = System.Drawing.Color.DimGray; + this.label223.Location = new System.Drawing.Point(1072, 47); + this.label223.Name = "label223"; + this.label223.Size = new System.Drawing.Size(110, 22); + this.label223.TabIndex = 882; + this.label223.Text = "Dead Head"; + this.label223.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label251 + // + this.label251.BackColor = System.Drawing.Color.Linen; + this.label251.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label251.ForeColor = System.Drawing.Color.DarkBlue; + this.label251.Location = new System.Drawing.Point(1019, 69); + this.label251.Name = "label251"; + this.label251.Size = new System.Drawing.Size(44, 22); + this.label251.TabIndex = 883; + this.label251.Text = "5"; + this.label251.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label252 + // + this.label252.BackColor = System.Drawing.Color.Linen; + this.label252.Font = new System.Drawing.Font("Arial", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label252.ForeColor = System.Drawing.Color.DarkBlue; + this.label252.Location = new System.Drawing.Point(1019, 47); + this.label252.Name = "label252"; + this.label252.Size = new System.Drawing.Size(44, 22); + this.label252.TabIndex = 881; + this.label252.Text = "300"; + this.label252.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // // FormAllSettings // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -3601,6 +3575,12 @@ private void InitializeComponent() this.BackColor = System.Drawing.Color.White; this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; this.ClientSize = new System.Drawing.Size(1188, 671); + this.Controls.Add(this.label90); + this.Controls.Add(this.label197); + this.Controls.Add(this.label207); + this.Controls.Add(this.label223); + this.Controls.Add(this.label251); + this.Controls.Add(this.label252); this.Controls.Add(this.label89); this.Controls.Add(this.label57); this.Controls.Add(this.btnCreatePNG); @@ -3651,8 +3631,6 @@ private void InitializeComponent() this.Controls.Add(this.lblTimeSlice); this.Controls.Add(this.label247); this.Controls.Add(this.lblHz); - this.Controls.Add(this.lblLatitude); - this.Controls.Add(this.lblLongitude); this.Controls.Add(this.lblEastingField); this.Controls.Add(this.lblNorthingField); this.Controls.Add(this.label248); @@ -3738,7 +3716,6 @@ private void InitializeComponent() this.Controls.Add(this.label163); this.Controls.Add(this.label167); this.Controls.Add(this.label161); - this.Controls.Add(this.label160); this.Controls.Add(this.label143); this.Controls.Add(this.label141); this.Controls.Add(this.label139); @@ -3762,7 +3739,6 @@ private void InitializeComponent() this.Controls.Add(this.label79); this.Controls.Add(this.label77); this.Controls.Add(this.label75); - this.Controls.Add(this.label62); this.Controls.Add(this.label59); this.Controls.Add(this.label60); this.Controls.Add(this.label55); @@ -3861,12 +3837,8 @@ private void InitializeComponent() this.Controls.Add(this.label8); this.Controls.Add(this.label6); this.Controls.Add(this.label4); - this.Controls.Add(this.label251); - this.Controls.Add(this.label252); this.Controls.Add(this.btnScreenShot); this.Controls.Add(this.label78); - this.Controls.Add(this.label159); - this.Controls.Add(this.label61); this.DoubleBuffered = true; this.Font = new System.Drawing.Font("Tahoma", 9.75F); this.ForeColor = System.Drawing.Color.DimGray; @@ -3877,7 +3849,7 @@ private void InitializeComponent() this.Name = "FormAllSettings"; this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Set Volume"; + this.Text = "Create Image of Settings or Copy to clipboard to paste in Telegram"; this.ResumeLayout(false); this.PerformLayout(); @@ -3937,8 +3909,6 @@ private void InitializeComponent() private System.Windows.Forms.Label label56; private System.Windows.Forms.Label label59; private System.Windows.Forms.Label label60; - private System.Windows.Forms.Label label61; - private System.Windows.Forms.Label label62; private System.Windows.Forms.Label label63; private System.Windows.Forms.Label label64; private System.Windows.Forms.Label label65; @@ -4031,8 +4001,6 @@ private void InitializeComponent() private System.Windows.Forms.Label label156; private System.Windows.Forms.Label label157; private System.Windows.Forms.Label label158; - private System.Windows.Forms.Label label159; - private System.Windows.Forms.Label label160; private System.Windows.Forms.Label label161; private System.Windows.Forms.Label label162; private System.Windows.Forms.Label label167; @@ -4129,8 +4097,6 @@ private void InitializeComponent() private System.Windows.Forms.Label lblTimeSlice; private System.Windows.Forms.Label label247; private System.Windows.Forms.Label lblHz; - private System.Windows.Forms.Label lblLatitude; - private System.Windows.Forms.Label lblLongitude; private System.Windows.Forms.Label lblEastingField; private System.Windows.Forms.Label lblNorthingField; private System.Windows.Forms.Label label248; @@ -4141,8 +4107,6 @@ private void InitializeComponent() private System.Windows.Forms.Label label250; private System.Windows.Forms.Label label85; private System.Windows.Forms.Label label86; - private System.Windows.Forms.Label label251; - private System.Windows.Forms.Label label252; private System.Windows.Forms.Label label254; private System.Windows.Forms.Label label43; private System.Windows.Forms.Label label44; @@ -4151,5 +4115,11 @@ private void InitializeComponent() private System.Windows.Forms.Label label57; private System.Windows.Forms.Timer timer1; private System.Windows.Forms.Label label89; + private System.Windows.Forms.Label label90; + private System.Windows.Forms.Label label197; + private System.Windows.Forms.Label label207; + private System.Windows.Forms.Label label223; + private System.Windows.Forms.Label label251; + private System.Windows.Forms.Label label252; } } \ No newline at end of file diff --git a/SourceCode/GPS/Forms/Settings/FormAllSettings.cs b/SourceCode/GPS/Forms/Settings/FormAllSettings.cs index 31a14ae01..4c4a4d715 100644 --- a/SourceCode/GPS/Forms/Settings/FormAllSettings.cs +++ b/SourceCode/GPS/Forms/Settings/FormAllSettings.cs @@ -5,6 +5,7 @@ using System.Drawing; using System.Drawing.Imaging; using System.Globalization; +using System.IO; using System.Reflection.Emit; using System.Windows.Forms; @@ -15,7 +16,6 @@ public partial class FormAllSettings : Form //class variables private readonly FormGPS mf = null; - //Nozzz constructor public FormAllSettings(Form callingForm) { //get copy of the calling main form @@ -23,7 +23,6 @@ public FormAllSettings(Form callingForm) InitializeComponent(); //Language keys - this.Text = "Name *****"; } private void LoadLabels() @@ -38,7 +37,7 @@ private void LoadLabels() label18.Text = Properties.Settings.Default.setAS_Kp.ToString(); label20.Text = Properties.Settings.Default.setVehicle_panicStopSpeed.ToString(); - label22.Text = Properties.Settings.Default.setVehicle_goalPointLookAhead.ToString(); + label22.Text = Properties.Settings.Default.setVehicle_goalPointAcquireFactor.ToString("N2"); label24.Text = Properties.Settings.Default.setVehicle_goalPointLookAheadHold.ToString(); label168.Text = Properties.Settings.Default.setVehicle_goalPointLookAheadMult.ToString(); label26.Text = Properties.Settings.Default.stanleyHeadingErrorGain.ToString(); @@ -57,8 +56,7 @@ private void LoadLabels() label56.Text = Properties.Settings.Default.setDisplay_isAutoStartAgIO.ToString(); label58.Text = Properties.Settings.Default.setDisplay_isAutoOffAgIO.ToString(); - label60.Text = Properties.Settings.Default.setF_culture; - label62.Text = Properties.Settings.Default.setF_CurrentDir; + label60.Text = RegistrySettings.culture; label64.Text = Properties.Settings.Default.setF_isRemoteWorkSystemOn.ToString(); label66.Text = Properties.Settings.Default.setF_isSteerWorkSwitchEnabled.ToString(); label68.Text = Properties.Settings.Default.setF_isSteerWorkSwitchManualSections.ToString(); @@ -66,7 +64,9 @@ private void LoadLabels() label72.Text = Properties.Settings.Default.setF_isWorkSwitchEnabled.ToString(); label74.Text = Properties.Settings.Default.setF_isWorkSwitchManualSections.ToString(); label76.Text = Properties.Settings.Default.setF_minHeadingStepDistance.ToString(); - label78.Text = Properties.Settings.Default.setF_workingDirectory.ToString(); + label78.Text = RegistrySettings.vehiclesDirectory + " -> " + + RegistrySettings.vehicleFileName + ".xml"; + label80.Text = Properties.Settings.Default.setGPS_ageAlarm.ToString(); label82.Text = Properties.Settings.Default.setGPS_dualHeadingOffset.ToString(); label84.Text = Properties.Settings.Default.setGPS_dualReverseDetectionDistance.ToString(); @@ -96,7 +96,7 @@ private void LoadLabels() label134.Text = Properties.Settings.Default.setVehicle_isStanleyUsed.ToString(); label136.Text = Properties.Settings.Default.setVehicle_isSteerAxleAhead.ToString(); label138.Text = Properties.Settings.Default.setVehicle_maxAngularVelocity.ToString(); - label140.Text = Properties.Settings.Default.setVehicle_minTurningRadius.ToString(); + label140.Text = Properties.Settings.Default.set_youTurnRadius.ToString(); label142.Text = Properties.Settings.Default.setVehicle_numSections.ToString(); label144.Text = Properties.Settings.Default.setVehicle_slowSpeedCutoff.ToString(); label146.Text = Properties.Settings.Default.setVehicle_tankTrailingHitchLength.ToString(); @@ -106,10 +106,12 @@ private void LoadLabels() label154.Text = Properties.Settings.Default.setVehicle_toolOffset.ToString(); label156.Text = Properties.Settings.Default.setVehicle_toolOverlap.ToString(); label158.Text = Properties.Settings.Default.setVehicle_toolWidth.ToString(); - label160.Text = Properties.Settings.Default.setVehicle_vehicleName; label162.Text = Properties.Settings.Default.setVehicle_vehicleType.ToString(); label164.Text = Properties.Settings.Default.setAS_isSteerInReverse.ToString(); + label251.Text = Settings.Default.setAS_deadZoneDelay.ToString(); + label252.Text = Settings.Default.setAS_deadZoneHeading.ToString(); + lblFrameTime.Text = mf.frameTime.ToString("N1"); lblTimeSlice.Text = (1 / mf.timeSliceOfLastFix).ToString("N3"); lblHz.Text = mf.gpsHz.ToString("N1"); @@ -117,8 +119,8 @@ private void LoadLabels() lblEastingField.Text = Math.Round(mf.pn.fix.easting, 2).ToString(); lblNorthingField.Text = Math.Round(mf.pn.fix.northing, 2).ToString(); - lblLatitude.Text = mf.Latitude; - lblLongitude.Text = mf.Longitude; + //lblLatitude.Text = mf.Latitude; + //lblLongitude.Text = mf.Longitude; //lblEastingField2.Text = Math.Round(mf.pnTwo.fix.easting, 2).ToString(); //lblNorthingField2.Text = Math.Round(mf.pnTwo.fix.northing, 2).ToString(); @@ -136,7 +138,7 @@ private void LoadLabels() lblAngularVelocity.Text = mf.ahrs.imuYawRate.ToString("N2"); - lbludpWatchCounts.Text = mf.udpWatchCounts.ToString(); + lbludpWatchCounts.Text = mf.missedSentenceCount.ToString(); if (mf.isMetric) { @@ -156,16 +158,16 @@ private void btnScreenShot_Click(object sender, EventArgs e) this.DrawToBitmap(bm, new Rectangle(0, 0, this.Width, this.Height)); Clipboard.SetImage(bm); mf.TimedMessageBox(2000, "Captured", "Copied to Clipboard, Paste (CTRL-V) in Telegram"); - mf.SystemEventWriter("View All Settings to Clipboard"); + Log.EventWriter("View All Settings to Clipboard"); } private void btnCreatePNG_Click(object sender, EventArgs e) { Bitmap bm = new Bitmap(this.Width, this.Height); this.DrawToBitmap(bm, new Rectangle(0, 0, this.Width, this.Height)); - bm.Save(mf.baseDirectory + "//AllSet.PNG", ImageFormat.Png); - System.Diagnostics.Process.Start("explorer.exe", mf.baseDirectory); - mf.SystemEventWriter("View All Settings to PNG"); + bm.Save(Path.Combine(RegistrySettings.baseDirectory, "AllSet.PNG"), ImageFormat.Png); + System.Diagnostics.Process.Start("explorer.exe", RegistrySettings.baseDirectory); + Log.EventWriter("View All Settings to PNG"); Close(); } diff --git a/SourceCode/GPS/Forms/Settings/FormButtonsRightPanel.cs b/SourceCode/GPS/Forms/Settings/FormButtonsRightPanel.cs index 0170d9090..6062f5aad 100644 --- a/SourceCode/GPS/Forms/Settings/FormButtonsRightPanel.cs +++ b/SourceCode/GPS/Forms/Settings/FormButtonsRightPanel.cs @@ -158,7 +158,7 @@ private void btnOk_Click(object sender, EventArgs e) if (mf.buttonOrder.Count < 2) { mf.TimedMessageBox(2000, "Button Error", "Not Enough Buttons Added"); - mf.SystemEventWriter("Button Picker, Not Enough Buttons"); + Log.EventWriter("Button Picker, Not Enough Buttons"); return; } else @@ -212,9 +212,7 @@ private void btnVideoHelp_Click(object sender, EventArgs e) { Process[] processName = Process.GetProcessesByName("BobsYourUncle"); //Start application here - DirectoryInfo di = new DirectoryInfo(Application.StartupPath); - string strPath = di.ToString(); - strPath += "\\Buttons.mp4"; + string strPath = Path.Combine(Application.StartupPath, "Buttons.mp4"); try { diff --git a/SourceCode/GPS/Forms/Settings/FormConfig.Designer.cs b/SourceCode/GPS/Forms/Settings/FormConfig.Designer.cs index 809699e87..b69e7f454 100644 --- a/SourceCode/GPS/Forms/Settings/FormConfig.Designer.cs +++ b/SourceCode/GPS/Forms/Settings/FormConfig.Designer.cs @@ -59,6 +59,12 @@ private void InitializeComponent() this.btnVehicle = new System.Windows.Forms.Button(); this.tab1 = new System.Windows.Forms.TabControl(); this.tabSummary = new System.Windows.Forms.TabPage(); + this.lvVehicles = new System.Windows.Forms.ListView(); + this.chVehicle = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.btnVehicleNewSave = new System.Windows.Forms.Button(); + this.tboxCreateNewVehicle = new System.Windows.Forms.TextBox(); + this.label162 = new System.Windows.Forms.Label(); + this.btnVehicleSave = new System.Windows.Forms.Button(); this.label173 = new System.Windows.Forms.Label(); this.label172 = new System.Windows.Forms.Label(); this.lblOverlap = new System.Windows.Forms.Label(); @@ -80,10 +86,7 @@ private void InitializeComponent() this.label13 = new System.Windows.Forms.Label(); this.btnVehicleLoad = new System.Windows.Forms.Button(); this.btnVehicleDelete = new System.Windows.Forms.Button(); - this.lvVehicles = new System.Windows.Forms.ListView(); - this.chVehicle = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.tboxVehicleNameSave = new System.Windows.Forms.TextBox(); - this.btnVehicleSave = new System.Windows.Forms.Button(); this.label29 = new System.Windows.Forms.Label(); this.lblSummaryWidth = new System.Windows.Forms.Label(); this.lblSumWheelbase = new System.Windows.Forms.Label(); @@ -191,9 +194,9 @@ private void InitializeComponent() this.tabToolPivot = new System.Windows.Forms.TabPage(); this.btnPivotOffsetZero = new System.Windows.Forms.Button(); this.label177 = new System.Windows.Forms.Label(); - this.nudTrailingToolToPivotLength = new AgOpenGPS.NudlessNumericUpDown(); this.rbtnPivotBehindPos = new System.Windows.Forms.RadioButton(); this.rbtnPivotAheadNeg = new System.Windows.Forms.RadioButton(); + this.nudTrailingToolToPivotLength = new AgOpenGPS.NudlessNumericUpDown(); this.tabTSections = new System.Windows.Forms.TabPage(); this.panelSymmetricSections = new System.Windows.Forms.Panel(); this.nudZone8To = new AgOpenGPS.NudlessNumericUpDown(); @@ -256,6 +259,9 @@ private void InitializeComponent() this.label46 = new System.Windows.Forms.Label(); this.label47 = new System.Windows.Forms.Label(); this.label48 = new System.Windows.Forms.Label(); + this.cboxSectionBoundaryControl = new System.Windows.Forms.CheckBox(); + this.pictureBox11 = new System.Windows.Forms.PictureBox(); + this.cboxIsUnique = new System.Windows.Forms.CheckBox(); this.nudCutoffSpeed = new AgOpenGPS.NudlessNumericUpDown(); this.nudDefaultSectionWidth = new AgOpenGPS.NudlessNumericUpDown(); this.nudMinCoverage = new AgOpenGPS.NudlessNumericUpDown(); @@ -276,9 +282,6 @@ private void InitializeComponent() this.nudSection02 = new AgOpenGPS.NudlessNumericUpDown(); this.nudSection01 = new AgOpenGPS.NudlessNumericUpDown(); this.nudNumberOfSections = new AgOpenGPS.NudlessNumericUpDown(); - this.cboxSectionBoundaryControl = new System.Windows.Forms.CheckBox(); - this.pictureBox11 = new System.Windows.Forms.PictureBox(); - this.cboxIsUnique = new System.Windows.Forms.CheckBox(); this.tabTSwitches = new System.Windows.Forms.TabPage(); this.grpControls = new System.Windows.Forms.GroupBox(); this.chkSetAutoSectionsSteer = new System.Windows.Forms.CheckBox(); @@ -294,18 +297,17 @@ private void InitializeComponent() this.label16 = new System.Windows.Forms.Label(); this.label14 = new System.Windows.Forms.Label(); this.label10 = new System.Windows.Forms.Label(); - this.nudLookAheadOff = new AgOpenGPS.NudlessNumericUpDown(); - this.nudTurnOffDelay = new AgOpenGPS.NudlessNumericUpDown(); - this.nudLookAhead = new AgOpenGPS.NudlessNumericUpDown(); this.pictureBox18 = new System.Windows.Forms.PictureBox(); this.pictureBox4 = new System.Windows.Forms.PictureBox(); this.pictureBox3 = new System.Windows.Forms.PictureBox(); + this.nudLookAheadOff = new AgOpenGPS.NudlessNumericUpDown(); + this.nudTurnOffDelay = new AgOpenGPS.NudlessNumericUpDown(); + this.nudLookAhead = new AgOpenGPS.NudlessNumericUpDown(); this.tabDHeading = new System.Windows.Forms.TabPage(); this.label156 = new System.Windows.Forms.Label(); this.label118 = new System.Windows.Forms.Label(); this.label113 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); - this.nudFixJumpDistance = new AgOpenGPS.NudlessNumericUpDown(); this.gboxDual = new System.Windows.Forms.GroupBox(); this.label102 = new System.Windows.Forms.Label(); this.nudDualReverseDistance = new AgOpenGPS.NudlessNumericUpDown(); @@ -330,6 +332,7 @@ private void InitializeComponent() this.rbtnHeadingFix = new System.Windows.Forms.RadioButton(); this.cboxIsRTK_KillAutoSteer = new System.Windows.Forms.CheckBox(); this.cboxIsRTK = new System.Windows.Forms.CheckBox(); + this.nudFixJumpDistance = new AgOpenGPS.NudlessNumericUpDown(); this.tabDRoll = new System.Windows.Forms.TabPage(); this.btnRollOffsetUp = new ProXoft.WinForms.RepeatButton(); this.btnRollOffsetDown = new ProXoft.WinForms.RepeatButton(); @@ -354,8 +357,6 @@ private void InitializeComponent() this.lblFtMUTurn = new System.Windows.Forms.Label(); this.lblSmoothing = new System.Windows.Forms.Label(); this.lblDistance = new System.Windows.Forms.Label(); - this.nudYouTurnRadius = new AgOpenGPS.NudlessNumericUpDown(); - this.nudTurnDistanceFromBoundary = new AgOpenGPS.NudlessNumericUpDown(); this.label64 = new System.Windows.Forms.Label(); this.btnTurnSmoothingUp = new ProXoft.WinForms.RepeatButton(); this.btnTurnSmoothingDown = new ProXoft.WinForms.RepeatButton(); @@ -364,6 +365,8 @@ private void InitializeComponent() this.lblWhenTrig = new System.Windows.Forms.Label(); this.btnDistanceUp = new ProXoft.WinForms.RepeatButton(); this.btnDistanceDn = new ProXoft.WinForms.RepeatButton(); + this.nudYouTurnRadius = new AgOpenGPS.NudlessNumericUpDown(); + this.nudTurnDistanceFromBoundary = new AgOpenGPS.NudlessNumericUpDown(); this.tabRelay = new System.Windows.Forms.TabPage(); this.cboxPin23 = new System.Windows.Forms.ComboBox(); this.cboxPin22 = new System.Windows.Forms.ComboBox(); @@ -438,22 +441,22 @@ private void InitializeComponent() this.label72 = new System.Windows.Forms.Label(); this.label67 = new System.Windows.Forms.Label(); this.label56 = new System.Windows.Forms.Label(); + this.pboxSendMachine = new System.Windows.Forms.PictureBox(); + this.cboxMachInvertRelays = new System.Windows.Forms.CheckBox(); + this.btnSendMachinePGN = new System.Windows.Forms.Button(); this.nudUser4 = new AgOpenGPS.NudlessNumericUpDown(); this.nudUser3 = new AgOpenGPS.NudlessNumericUpDown(); this.nudUser2 = new AgOpenGPS.NudlessNumericUpDown(); this.nudUser1 = new AgOpenGPS.NudlessNumericUpDown(); - this.pboxSendMachine = new System.Windows.Forms.PictureBox(); - this.cboxMachInvertRelays = new System.Windows.Forms.CheckBox(); - this.btnSendMachinePGN = new System.Windows.Forms.Button(); this.tabTram = new System.Windows.Forms.TabPage(); this.label111 = new System.Windows.Forms.Label(); this.label85 = new System.Windows.Forms.Label(); this.lblTramWidthUnits = new System.Windows.Forms.Label(); this.label75 = new System.Windows.Forms.Label(); - this.nudTramWidth = new AgOpenGPS.NudlessNumericUpDown(); this.cboxDisplayTramControl = new System.Windows.Forms.CheckBox(); this.chkBoxOverrideTramControlPos = new System.Windows.Forms.CheckBox(); this.pictureBox8 = new System.Windows.Forms.PictureBox(); + this.nudTramWidth = new AgOpenGPS.NudlessNumericUpDown(); this.tabBtns = new System.Windows.Forms.TabPage(); this.label110 = new System.Windows.Forms.Label(); this.label109 = new System.Windows.Forms.Label(); @@ -502,8 +505,10 @@ private void InitializeComponent() this.cboxFeatureHeadland = new System.Windows.Forms.CheckBox(); this.cboxFeatureTram = new System.Windows.Forms.CheckBox(); this.tabDisplay = new System.Windows.Forms.TabPage(); - this.label159 = new System.Windows.Forms.Label(); - this.nudNumGuideLines = new AgOpenGPS.NudlessNumericUpDown(); + this.label161 = new System.Windows.Forms.Label(); + this.chkLineSmooth = new System.Windows.Forms.CheckBox(); + this.label160 = new System.Windows.Forms.Label(); + this.chkSectionLines = new System.Windows.Forms.CheckBox(); this.label31 = new System.Windows.Forms.Label(); this.chkDirectionMarkers = new System.Windows.Forms.CheckBox(); this.label79 = new System.Windows.Forms.Label(); @@ -514,7 +519,6 @@ private void InitializeComponent() this.label42 = new System.Windows.Forms.Label(); this.label101 = new System.Windows.Forms.Label(); this.label43 = new System.Windows.Forms.Label(); - this.label36 = new System.Windows.Forms.Label(); this.label33 = new System.Windows.Forms.Label(); this.label28 = new System.Windows.Forms.Label(); this.chkSpeedo = new System.Windows.Forms.Label(); @@ -527,10 +531,10 @@ private void InitializeComponent() this.chkDisplayKeyboard = new System.Windows.Forms.CheckBox(); this.chkDisplayPolygons = new System.Windows.Forms.CheckBox(); this.chkDisplayStartFullScreen = new System.Windows.Forms.CheckBox(); - this.chkDisplayLogNMEA = new System.Windows.Forms.CheckBox(); this.chkDisplayGrid = new System.Windows.Forms.CheckBox(); this.chkDisplaySpeedo = new System.Windows.Forms.CheckBox(); this.chkDisplayExtraGuides = new System.Windows.Forms.CheckBox(); + this.nudNumGuideLines = new AgOpenGPS.NudlessNumericUpDown(); this.lblCurrentVehicle = new System.Windows.Forms.Label(); this.lblInchesCm = new System.Windows.Forms.Label(); this.lblSecTotalWidthMeters = new System.Windows.Forms.Label(); @@ -592,6 +596,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudZone5To)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudZone3To)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudZone2To)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox11)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudCutoffSpeed)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudDefaultSectionWidth)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudMinCoverage)).BeginInit(); @@ -612,25 +617,24 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudSection02)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudSection01)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudNumberOfSections)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox11)).BeginInit(); this.tabTSwitches.SuspendLayout(); this.grpControls.SuspendLayout(); this.grpSwitch.SuspendLayout(); this.tabTSettings.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudLookAheadOff)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudTurnOffDelay)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudLookAhead)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox18)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudLookAheadOff)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudTurnOffDelay)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudLookAhead)).BeginInit(); this.tabDHeading.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudFixJumpDistance)).BeginInit(); this.gboxDual.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.nudDualReverseDistance)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox13)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudDualHeadingOffset)).BeginInit(); this.gboxSingle.SuspendLayout(); this.headingGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudFixJumpDistance)).BeginInit(); this.tabDRoll.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox9)).BeginInit(); this.tabUTurn.SuspendLayout(); @@ -645,18 +649,18 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudLowerTime)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudRaiseTime)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pboxSendMachine)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudUser4)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudUser3)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudUser2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudUser1)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pboxSendMachine)).BeginInit(); this.tabTram.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudTramWidth)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox8)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudTramWidth)).BeginInit(); this.tabBtns.SuspendLayout(); this.tabDisplay.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudNumGuideLines)).BeginInit(); this.unitsGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudNumGuideLines)).BeginInit(); this.panelBottom.SuspendLayout(); this.SuspendLayout(); // @@ -1225,12 +1229,17 @@ private void InitializeComponent() this.tab1.Name = "tab1"; this.tab1.Padding = new System.Drawing.Point(0, 0); this.tab1.SelectedIndex = 0; - this.tab1.Size = new System.Drawing.Size(859, 632); + this.tab1.Size = new System.Drawing.Size(865, 632); this.tab1.TabIndex = 0; // // tabSummary // - this.tabSummary.BackColor = System.Drawing.Color.WhiteSmoke; + this.tabSummary.BackColor = System.Drawing.Color.Gainsboro; + this.tabSummary.Controls.Add(this.lvVehicles); + this.tabSummary.Controls.Add(this.btnVehicleNewSave); + this.tabSummary.Controls.Add(this.tboxCreateNewVehicle); + this.tabSummary.Controls.Add(this.label162); + this.tabSummary.Controls.Add(this.btnVehicleSave); this.tabSummary.Controls.Add(this.label173); this.tabSummary.Controls.Add(this.label172); this.tabSummary.Controls.Add(this.lblOverlap); @@ -1252,9 +1261,7 @@ private void InitializeComponent() this.tabSummary.Controls.Add(this.label13); this.tabSummary.Controls.Add(this.btnVehicleLoad); this.tabSummary.Controls.Add(this.btnVehicleDelete); - this.tabSummary.Controls.Add(this.lvVehicles); this.tabSummary.Controls.Add(this.tboxVehicleNameSave); - this.tabSummary.Controls.Add(this.btnVehicleSave); this.tabSummary.Controls.Add(this.label29); this.tabSummary.Controls.Add(this.lblSummaryWidth); this.tabSummary.Controls.Add(this.lblSumWheelbase); @@ -1262,19 +1269,105 @@ private void InitializeComponent() this.tabSummary.Location = new System.Drawing.Point(4, 44); this.tabSummary.Name = "tabSummary"; this.tabSummary.Padding = new System.Windows.Forms.Padding(3); - this.tabSummary.Size = new System.Drawing.Size(854, 584); + this.tabSummary.Size = new System.Drawing.Size(851, 584); this.tabSummary.TabIndex = 0; this.tabSummary.Text = "tSum"; this.tabSummary.Enter += new System.EventHandler(this.tabSummary_Enter); this.tabSummary.Leave += new System.EventHandler(this.tabSummary_Leave); // + // lvVehicles + // + this.lvVehicles.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lvVehicles.BackColor = System.Drawing.SystemColors.InactiveCaption; + this.lvVehicles.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.chVehicle}); + this.lvVehicles.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lvVehicles.FullRowSelect = true; + this.lvVehicles.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; + this.lvVehicles.HideSelection = false; + this.lvVehicles.ImeMode = System.Windows.Forms.ImeMode.Off; + this.lvVehicles.LabelWrap = false; + this.lvVehicles.Location = new System.Drawing.Point(240, 146); + this.lvVehicles.Margin = new System.Windows.Forms.Padding(0); + this.lvVehicles.MultiSelect = false; + this.lvVehicles.Name = "lvVehicles"; + this.lvVehicles.Size = new System.Drawing.Size(510, 438); + this.lvVehicles.TabIndex = 454; + this.lvVehicles.TileSize = new System.Drawing.Size(490, 35); + this.lvVehicles.UseCompatibleStateImageBehavior = false; + this.lvVehicles.View = System.Windows.Forms.View.Tile; + // + // chVehicle + // + this.chVehicle.Text = "Vehicles"; + this.chVehicle.Width = 490; + // + // btnVehicleNewSave + // + this.btnVehicleNewSave.BackColor = System.Drawing.Color.Transparent; + this.btnVehicleNewSave.Enabled = false; + this.btnVehicleNewSave.FlatAppearance.BorderSize = 0; + this.btnVehicleNewSave.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Turquoise; + this.btnVehicleNewSave.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnVehicleNewSave.Font = new System.Drawing.Font("Tahoma", 15.75F); + this.btnVehicleNewSave.Image = global::AgOpenGPS.Properties.Resources.FileSave; + this.btnVehicleNewSave.Location = new System.Drawing.Point(762, 90); + this.btnVehicleNewSave.Name = "btnVehicleNewSave"; + this.btnVehicleNewSave.Size = new System.Drawing.Size(83, 52); + this.btnVehicleNewSave.TabIndex = 521; + this.btnVehicleNewSave.UseVisualStyleBackColor = false; + this.btnVehicleNewSave.Click += new System.EventHandler(this.btnVehicleNewSave_Click); + // + // tboxCreateNewVehicle + // + this.tboxCreateNewVehicle.BackColor = System.Drawing.Color.White; + this.tboxCreateNewVehicle.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tboxCreateNewVehicle.Location = new System.Drawing.Point(240, 102); + this.tboxCreateNewVehicle.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6); + this.tboxCreateNewVehicle.Name = "tboxCreateNewVehicle"; + this.tboxCreateNewVehicle.Size = new System.Drawing.Size(510, 33); + this.tboxCreateNewVehicle.TabIndex = 520; + this.tboxCreateNewVehicle.Click += new System.EventHandler(this.tboxCreateNewVehicle_Click); + this.tboxCreateNewVehicle.TextChanged += new System.EventHandler(this.tboxCreateNewVehicle_TextChanged); + // + // label162 + // + this.label162.BackColor = System.Drawing.Color.Transparent; + this.label162.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label162.ForeColor = System.Drawing.Color.Black; + this.label162.Location = new System.Drawing.Point(95, 106); + this.label162.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label162.Name = "label162"; + this.label162.Size = new System.Drawing.Size(140, 23); + this.label162.TabIndex = 522; + this.label162.Text = "New:"; + this.label162.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // btnVehicleSave + // + this.btnVehicleSave.BackColor = System.Drawing.Color.Transparent; + this.btnVehicleSave.Enabled = false; + this.btnVehicleSave.FlatAppearance.BorderSize = 0; + this.btnVehicleSave.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Turquoise; + this.btnVehicleSave.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnVehicleSave.Font = new System.Drawing.Font("Tahoma", 15.75F); + this.btnVehicleSave.Image = global::AgOpenGPS.Properties.Resources.FileSaveAs; + this.btnVehicleSave.Location = new System.Drawing.Point(753, 9); + this.btnVehicleSave.Name = "btnVehicleSave"; + this.btnVehicleSave.Size = new System.Drawing.Size(93, 52); + this.btnVehicleSave.TabIndex = 457; + this.btnVehicleSave.UseVisualStyleBackColor = false; + this.btnVehicleSave.Click += new System.EventHandler(this.btnVehicleSave_Click); + // // label173 // this.label173.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.label173.BackColor = System.Drawing.Color.Transparent; this.label173.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label173.ForeColor = System.Drawing.Color.DimGray; - this.label173.Location = new System.Drawing.Point(33, 134); + this.label173.Location = new System.Drawing.Point(25, 233); this.label173.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label173.Name = "label173"; this.label173.Size = new System.Drawing.Size(90, 23); @@ -1288,7 +1381,7 @@ private void InitializeComponent() this.label172.BackColor = System.Drawing.Color.Transparent; this.label172.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label172.ForeColor = System.Drawing.Color.DimGray; - this.label172.Location = new System.Drawing.Point(3, 236); + this.label172.Location = new System.Drawing.Point(-5, 335); this.label172.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label172.Name = "label172"; this.label172.Size = new System.Drawing.Size(120, 32); @@ -1302,7 +1395,7 @@ private void InitializeComponent() this.lblOverlap.BackColor = System.Drawing.Color.Transparent; this.lblOverlap.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblOverlap.ForeColor = System.Drawing.Color.Black; - this.lblOverlap.Location = new System.Drawing.Point(120, 242); + this.lblOverlap.Location = new System.Drawing.Point(112, 341); this.lblOverlap.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblOverlap.Name = "lblOverlap"; this.lblOverlap.Size = new System.Drawing.Size(114, 23); @@ -1316,7 +1409,7 @@ private void InitializeComponent() this.label171.BackColor = System.Drawing.Color.Transparent; this.label171.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label171.ForeColor = System.Drawing.Color.DimGray; - this.label171.Location = new System.Drawing.Point(3, 276); + this.label171.Location = new System.Drawing.Point(-5, 375); this.label171.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label171.Name = "label171"; this.label171.Size = new System.Drawing.Size(120, 32); @@ -1330,7 +1423,7 @@ private void InitializeComponent() this.lblLookahead.BackColor = System.Drawing.Color.Transparent; this.lblLookahead.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblLookahead.ForeColor = System.Drawing.Color.Black; - this.lblLookahead.Location = new System.Drawing.Point(120, 281); + this.lblLookahead.Location = new System.Drawing.Point(112, 380); this.lblLookahead.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblLookahead.Name = "lblLookahead"; this.lblLookahead.Size = new System.Drawing.Size(114, 23); @@ -1344,7 +1437,7 @@ private void InitializeComponent() this.label170.BackColor = System.Drawing.Color.Transparent; this.label170.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label170.ForeColor = System.Drawing.Color.DimGray; - this.label170.Location = new System.Drawing.Point(3, 198); + this.label170.Location = new System.Drawing.Point(-5, 297); this.label170.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label170.Name = "label170"; this.label170.Size = new System.Drawing.Size(120, 32); @@ -1358,7 +1451,7 @@ private void InitializeComponent() this.lblToolOffset.BackColor = System.Drawing.Color.Transparent; this.lblToolOffset.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblToolOffset.ForeColor = System.Drawing.Color.Black; - this.lblToolOffset.Location = new System.Drawing.Point(120, 204); + this.lblToolOffset.Location = new System.Drawing.Point(112, 303); this.lblToolOffset.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblToolOffset.Name = "lblToolOffset"; this.lblToolOffset.Size = new System.Drawing.Size(114, 23); @@ -1372,7 +1465,7 @@ private void InitializeComponent() this.label174.BackColor = System.Drawing.Color.Transparent; this.label174.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label174.ForeColor = System.Drawing.Color.DimGray; - this.label174.Location = new System.Drawing.Point(3, 385); + this.label174.Location = new System.Drawing.Point(-5, 484); this.label174.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label174.Name = "label174"; this.label174.Size = new System.Drawing.Size(120, 32); @@ -1386,7 +1479,7 @@ private void InitializeComponent() this.label169.BackColor = System.Drawing.Color.Transparent; this.label169.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label169.ForeColor = System.Drawing.Color.DimGray; - this.label169.Location = new System.Drawing.Point(3, 347); + this.label169.Location = new System.Drawing.Point(-5, 446); this.label169.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label169.Name = "label169"; this.label169.Size = new System.Drawing.Size(120, 32); @@ -1400,7 +1493,7 @@ private void InitializeComponent() this.lblUnits.BackColor = System.Drawing.Color.Transparent; this.lblUnits.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblUnits.ForeColor = System.Drawing.Color.Black; - this.lblUnits.Location = new System.Drawing.Point(120, 90); + this.lblUnits.Location = new System.Drawing.Point(112, 189); this.lblUnits.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblUnits.Name = "lblUnits"; this.lblUnits.Size = new System.Drawing.Size(114, 23); @@ -1414,7 +1507,7 @@ private void InitializeComponent() this.lblTramWidth.BackColor = System.Drawing.Color.Transparent; this.lblTramWidth.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblTramWidth.ForeColor = System.Drawing.Color.Black; - this.lblTramWidth.Location = new System.Drawing.Point(120, 353); + this.lblTramWidth.Location = new System.Drawing.Point(112, 452); this.lblTramWidth.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblTramWidth.Name = "lblTramWidth"; this.lblTramWidth.Size = new System.Drawing.Size(122, 23); @@ -1428,7 +1521,7 @@ private void InitializeComponent() this.lblNudgeDistance.BackColor = System.Drawing.Color.Transparent; this.lblNudgeDistance.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblNudgeDistance.ForeColor = System.Drawing.Color.Black; - this.lblNudgeDistance.Location = new System.Drawing.Point(120, 317); + this.lblNudgeDistance.Location = new System.Drawing.Point(112, 416); this.lblNudgeDistance.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblNudgeDistance.Name = "lblNudgeDistance"; this.lblNudgeDistance.Size = new System.Drawing.Size(114, 23); @@ -1442,7 +1535,7 @@ private void InitializeComponent() this.lblSumNumSections.BackColor = System.Drawing.Color.Transparent; this.lblSumNumSections.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblSumNumSections.ForeColor = System.Drawing.Color.Black; - this.lblSumNumSections.Location = new System.Drawing.Point(120, 168); + this.lblSumNumSections.Location = new System.Drawing.Point(112, 267); this.lblSumNumSections.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblSumNumSections.Name = "lblSumNumSections"; this.lblSumNumSections.Size = new System.Drawing.Size(114, 23); @@ -1456,7 +1549,7 @@ private void InitializeComponent() this.label168.BackColor = System.Drawing.Color.Transparent; this.label168.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label168.ForeColor = System.Drawing.Color.DimGray; - this.label168.Location = new System.Drawing.Point(36, 89); + this.label168.Location = new System.Drawing.Point(28, 188); this.label168.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label168.Name = "label168"; this.label168.Size = new System.Drawing.Size(90, 23); @@ -1470,7 +1563,7 @@ private void InitializeComponent() this.label23.BackColor = System.Drawing.Color.Transparent; this.label23.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label23.ForeColor = System.Drawing.Color.DimGray; - this.label23.Location = new System.Drawing.Point(33, 316); + this.label23.Location = new System.Drawing.Point(25, 415); this.label23.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label23.Name = "label23"; this.label23.Size = new System.Drawing.Size(90, 23); @@ -1484,7 +1577,7 @@ private void InitializeComponent() this.label11.BackColor = System.Drawing.Color.Transparent; this.label11.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label11.ForeColor = System.Drawing.Color.DimGray; - this.label11.Location = new System.Drawing.Point(33, 167); + this.label11.Location = new System.Drawing.Point(25, 266); this.label11.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label11.Name = "label11"; this.label11.Size = new System.Drawing.Size(90, 23); @@ -1497,10 +1590,10 @@ private void InitializeComponent() this.lblSummaryVehicleName.BackColor = System.Drawing.Color.Transparent; this.lblSummaryVehicleName.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblSummaryVehicleName.ForeColor = System.Drawing.Color.Black; - this.lblSummaryVehicleName.Location = new System.Drawing.Point(210, 10); + this.lblSummaryVehicleName.Location = new System.Drawing.Point(243, 3); this.lblSummaryVehicleName.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblSummaryVehicleName.Name = "lblSummaryVehicleName"; - this.lblSummaryVehicleName.Size = new System.Drawing.Size(498, 23); + this.lblSummaryVehicleName.Size = new System.Drawing.Size(507, 23); this.lblSummaryVehicleName.TabIndex = 503; this.lblSummaryVehicleName.Text = "Vehicle Name"; this.lblSummaryVehicleName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; @@ -1512,7 +1605,7 @@ private void InitializeComponent() this.label57.BackColor = System.Drawing.Color.Transparent; this.label57.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label57.ForeColor = System.Drawing.Color.Black; - this.label57.Location = new System.Drawing.Point(777, 311); + this.label57.Location = new System.Drawing.Point(777, 377); this.label57.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label57.Name = "label57"; this.label57.Size = new System.Drawing.Size(57, 18); @@ -1527,12 +1620,12 @@ private void InitializeComponent() this.label13.BackColor = System.Drawing.Color.Transparent; this.label13.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label13.ForeColor = System.Drawing.Color.Black; - this.label13.Location = new System.Drawing.Point(783, 209); + this.label13.Location = new System.Drawing.Point(783, 275); this.label13.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(44, 18); + this.label13.Size = new System.Drawing.Size(47, 18); this.label13.TabIndex = 486; - this.label13.Text = "Load"; + this.label13.Text = "Open"; this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // btnVehicleLoad @@ -1545,7 +1638,7 @@ private void InitializeComponent() this.btnVehicleLoad.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnVehicleLoad.Font = new System.Drawing.Font("Tahoma", 15.75F); this.btnVehicleLoad.Image = global::AgOpenGPS.Properties.Resources.FileOpen; - this.btnVehicleLoad.Location = new System.Drawing.Point(764, 156); + this.btnVehicleLoad.Location = new System.Drawing.Point(764, 222); this.btnVehicleLoad.Name = "btnVehicleLoad"; this.btnVehicleLoad.Size = new System.Drawing.Size(81, 49); this.btnVehicleLoad.TabIndex = 456; @@ -1561,80 +1654,35 @@ private void InitializeComponent() this.btnVehicleDelete.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnVehicleDelete.Font = new System.Drawing.Font("Tahoma", 15.75F); this.btnVehicleDelete.Image = global::AgOpenGPS.Properties.Resources.Trash; - this.btnVehicleDelete.Location = new System.Drawing.Point(764, 259); + this.btnVehicleDelete.Location = new System.Drawing.Point(764, 325); this.btnVehicleDelete.Name = "btnVehicleDelete"; this.btnVehicleDelete.Size = new System.Drawing.Size(81, 49); this.btnVehicleDelete.TabIndex = 455; this.btnVehicleDelete.UseVisualStyleBackColor = false; this.btnVehicleDelete.Click += new System.EventHandler(this.btnVehicleDelete_Click); // - // lvVehicles - // - this.lvVehicles.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.lvVehicles.BackColor = System.Drawing.SystemColors.InactiveCaption; - this.lvVehicles.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { - this.chVehicle}); - this.lvVehicles.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lvVehicles.FullRowSelect = true; - this.lvVehicles.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.lvVehicles.HideSelection = false; - this.lvVehicles.ImeMode = System.Windows.Forms.ImeMode.Off; - this.lvVehicles.LabelWrap = false; - this.lvVehicles.Location = new System.Drawing.Point(249, 85); - this.lvVehicles.Margin = new System.Windows.Forms.Padding(0); - this.lvVehicles.MultiSelect = false; - this.lvVehicles.Name = "lvVehicles"; - this.lvVehicles.Size = new System.Drawing.Size(512, 483); - this.lvVehicles.TabIndex = 454; - this.lvVehicles.TileSize = new System.Drawing.Size(490, 35); - this.lvVehicles.UseCompatibleStateImageBehavior = false; - this.lvVehicles.View = System.Windows.Forms.View.Tile; - // - // chVehicle - // - this.chVehicle.Text = "Vehicles"; - this.chVehicle.Width = 490; - // // tboxVehicleNameSave // this.tboxVehicleNameSave.BackColor = System.Drawing.Color.White; this.tboxVehicleNameSave.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tboxVehicleNameSave.Location = new System.Drawing.Point(294, 41); + this.tboxVehicleNameSave.Location = new System.Drawing.Point(240, 31); this.tboxVehicleNameSave.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6); this.tboxVehicleNameSave.Name = "tboxVehicleNameSave"; - this.tboxVehicleNameSave.Size = new System.Drawing.Size(424, 33); + this.tboxVehicleNameSave.Size = new System.Drawing.Size(510, 33); this.tboxVehicleNameSave.TabIndex = 451; this.tboxVehicleNameSave.Click += new System.EventHandler(this.tboxVehicleNameSave_Click); this.tboxVehicleNameSave.TextChanged += new System.EventHandler(this.tboxVehicleNameSave_TextChanged); this.tboxVehicleNameSave.Enter += new System.EventHandler(this.tboxVehicleNameSave_Enter); // - // btnVehicleSave - // - this.btnVehicleSave.BackColor = System.Drawing.Color.Transparent; - this.btnVehicleSave.Enabled = false; - this.btnVehicleSave.FlatAppearance.BorderSize = 0; - this.btnVehicleSave.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Turquoise; - this.btnVehicleSave.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnVehicleSave.Font = new System.Drawing.Font("Tahoma", 15.75F); - this.btnVehicleSave.Image = global::AgOpenGPS.Properties.Resources.FileSaveAs; - this.btnVehicleSave.Location = new System.Drawing.Point(734, 22); - this.btnVehicleSave.Name = "btnVehicleSave"; - this.btnVehicleSave.Size = new System.Drawing.Size(52, 52); - this.btnVehicleSave.TabIndex = 457; - this.btnVehicleSave.UseVisualStyleBackColor = false; - this.btnVehicleSave.Click += new System.EventHandler(this.btnVehicleSave_Click); - // // label29 // this.label29.BackColor = System.Drawing.Color.Transparent; - this.label29.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label29.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label29.ForeColor = System.Drawing.Color.Black; - this.label29.Location = new System.Drawing.Point(131, 43); + this.label29.Location = new System.Drawing.Point(38, 36); this.label29.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label29.Name = "label29"; - this.label29.Size = new System.Drawing.Size(158, 23); + this.label29.Size = new System.Drawing.Size(192, 23); this.label29.TabIndex = 497; this.label29.Text = "Save As:"; this.label29.TextAlign = System.Drawing.ContentAlignment.MiddleRight; @@ -1645,7 +1693,7 @@ private void InitializeComponent() this.lblSummaryWidth.BackColor = System.Drawing.Color.Transparent; this.lblSummaryWidth.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblSummaryWidth.ForeColor = System.Drawing.Color.Black; - this.lblSummaryWidth.Location = new System.Drawing.Point(120, 135); + this.lblSummaryWidth.Location = new System.Drawing.Point(112, 234); this.lblSummaryWidth.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblSummaryWidth.Name = "lblSummaryWidth"; this.lblSummaryWidth.Size = new System.Drawing.Size(122, 23); @@ -1659,7 +1707,7 @@ private void InitializeComponent() this.lblSumWheelbase.BackColor = System.Drawing.Color.Transparent; this.lblSumWheelbase.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblSumWheelbase.ForeColor = System.Drawing.Color.Black; - this.lblSumWheelbase.Location = new System.Drawing.Point(120, 391); + this.lblSumWheelbase.Location = new System.Drawing.Point(112, 490); this.lblSumWheelbase.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.lblSumWheelbase.Name = "lblSumWheelbase"; this.lblSumWheelbase.Size = new System.Drawing.Size(129, 23); @@ -1683,7 +1731,7 @@ private void InitializeComponent() this.tabVConfig.Controls.Add(this.cboxIsImage); this.tabVConfig.Location = new System.Drawing.Point(4, 44); this.tabVConfig.Name = "tabVConfig"; - this.tabVConfig.Size = new System.Drawing.Size(854, 584); + this.tabVConfig.Size = new System.Drawing.Size(851, 584); this.tabVConfig.TabIndex = 4; this.tabVConfig.Text = "vConfig"; this.tabVConfig.Enter += new System.EventHandler(this.tabVConfig_Enter); @@ -2334,7 +2382,7 @@ private void InitializeComponent() this.tabVAntenna.Controls.Add(this.pboxAntenna); this.tabVAntenna.Location = new System.Drawing.Point(4, 44); this.tabVAntenna.Name = "tabVAntenna"; - this.tabVAntenna.Size = new System.Drawing.Size(854, 584); + this.tabVAntenna.Size = new System.Drawing.Size(851, 584); this.tabVAntenna.TabIndex = 12; this.tabVAntenna.Text = "vAnt"; this.tabVAntenna.Enter += new System.EventHandler(this.tabVAntenna_Enter); @@ -2610,7 +2658,7 @@ private void InitializeComponent() this.tabVDimensions.Controls.Add(this.pictureBox1); this.tabVDimensions.Location = new System.Drawing.Point(4, 44); this.tabVDimensions.Name = "tabVDimensions"; - this.tabVDimensions.Size = new System.Drawing.Size(854, 584); + this.tabVDimensions.Size = new System.Drawing.Size(851, 584); this.tabVDimensions.TabIndex = 13; this.tabVDimensions.Text = "vDim"; this.tabVDimensions.Enter += new System.EventHandler(this.tabVDimensions_Enter); @@ -2782,7 +2830,7 @@ private void InitializeComponent() this.tabVGuidance.BackColor = System.Drawing.Color.WhiteSmoke; this.tabVGuidance.Location = new System.Drawing.Point(4, 44); this.tabVGuidance.Name = "tabVGuidance"; - this.tabVGuidance.Size = new System.Drawing.Size(854, 584); + this.tabVGuidance.Size = new System.Drawing.Size(851, 584); this.tabVGuidance.TabIndex = 14; this.tabVGuidance.Text = "vGuid"; this.tabVGuidance.Enter += new System.EventHandler(this.tabVGuidance_Enter); @@ -2794,7 +2842,7 @@ private void InitializeComponent() this.tabTConfig.Controls.Add(this.gboxAttachment); this.tabTConfig.Location = new System.Drawing.Point(4, 44); this.tabTConfig.Name = "tabTConfig"; - this.tabTConfig.Size = new System.Drawing.Size(854, 584); + this.tabTConfig.Size = new System.Drawing.Size(851, 584); this.tabTConfig.TabIndex = 11; this.tabTConfig.Text = "tConfig"; this.tabTConfig.Enter += new System.EventHandler(this.tabTConfig_Enter); @@ -2900,7 +2948,7 @@ private void InitializeComponent() this.tabTHitch.Controls.Add(this.picboxToolHitch); this.tabTHitch.Location = new System.Drawing.Point(4, 44); this.tabTHitch.Name = "tabTHitch"; - this.tabTHitch.Size = new System.Drawing.Size(854, 584); + this.tabTHitch.Size = new System.Drawing.Size(851, 584); this.tabTHitch.TabIndex = 5; this.tabTHitch.Text = "tHitch"; this.tabTHitch.Enter += new System.EventHandler(this.tabTHitch_Enter); @@ -3035,7 +3083,7 @@ private void InitializeComponent() this.tabToolOffset.Controls.Add(this.nudOffset); this.tabToolOffset.Location = new System.Drawing.Point(4, 44); this.tabToolOffset.Name = "tabToolOffset"; - this.tabToolOffset.Size = new System.Drawing.Size(854, 584); + this.tabToolOffset.Size = new System.Drawing.Size(851, 584); this.tabToolOffset.TabIndex = 26; this.tabToolOffset.Text = "tOffs"; this.tabToolOffset.Enter += new System.EventHandler(this.tabToolOffset_Enter); @@ -3292,13 +3340,13 @@ private void InitializeComponent() this.tabToolPivot.BackColor = System.Drawing.Color.WhiteSmoke; this.tabToolPivot.Controls.Add(this.btnPivotOffsetZero); this.tabToolPivot.Controls.Add(this.label177); - this.tabToolPivot.Controls.Add(this.nudTrailingToolToPivotLength); this.tabToolPivot.Controls.Add(this.rbtnPivotBehindPos); this.tabToolPivot.Controls.Add(this.rbtnPivotAheadNeg); + this.tabToolPivot.Controls.Add(this.nudTrailingToolToPivotLength); this.tabToolPivot.Location = new System.Drawing.Point(4, 44); this.tabToolPivot.Name = "tabToolPivot"; this.tabToolPivot.Padding = new System.Windows.Forms.Padding(3); - this.tabToolPivot.Size = new System.Drawing.Size(854, 584); + this.tabToolPivot.Size = new System.Drawing.Size(851, 584); this.tabToolPivot.TabIndex = 27; this.tabToolPivot.Text = "tPivot"; this.tabToolPivot.Enter += new System.EventHandler(this.tabToolPivot_Enter); @@ -3335,30 +3383,6 @@ private void InitializeComponent() this.label177.Text = "cm"; this.label177.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // - // nudTrailingToolToPivotLength - // - this.nudTrailingToolToPivotLength.BackColor = System.Drawing.Color.AliceBlue; - this.nudTrailingToolToPivotLength.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudTrailingToolToPivotLength.InterceptArrowKeys = false; - this.nudTrailingToolToPivotLength.Location = new System.Drawing.Point(320, 337); - this.nudTrailingToolToPivotLength.Maximum = new decimal(new int[] { - 2000, - 0, - 0, - 0}); - this.nudTrailingToolToPivotLength.Name = "nudTrailingToolToPivotLength"; - this.nudTrailingToolToPivotLength.ReadOnly = true; - this.nudTrailingToolToPivotLength.RightToLeft = System.Windows.Forms.RightToLeft.No; - this.nudTrailingToolToPivotLength.Size = new System.Drawing.Size(205, 52); - this.nudTrailingToolToPivotLength.TabIndex = 214; - this.nudTrailingToolToPivotLength.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.nudTrailingToolToPivotLength.Value = new decimal(new int[] { - 51, - 0, - 0, - 0}); - this.nudTrailingToolToPivotLength.Click += new System.EventHandler(this.nudTrailingToolToPivotLength_Click); - // // rbtnPivotBehindPos // this.rbtnPivotBehindPos.Appearance = System.Windows.Forms.Appearance.Button; @@ -3389,6 +3413,30 @@ private void InitializeComponent() this.rbtnPivotAheadNeg.UseVisualStyleBackColor = false; this.rbtnPivotAheadNeg.Click += new System.EventHandler(this.rbtnPivotBehindPos_Click); // + // nudTrailingToolToPivotLength + // + this.nudTrailingToolToPivotLength.BackColor = System.Drawing.Color.AliceBlue; + this.nudTrailingToolToPivotLength.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudTrailingToolToPivotLength.InterceptArrowKeys = false; + this.nudTrailingToolToPivotLength.Location = new System.Drawing.Point(320, 337); + this.nudTrailingToolToPivotLength.Maximum = new decimal(new int[] { + 2000, + 0, + 0, + 0}); + this.nudTrailingToolToPivotLength.Name = "nudTrailingToolToPivotLength"; + this.nudTrailingToolToPivotLength.ReadOnly = true; + this.nudTrailingToolToPivotLength.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.nudTrailingToolToPivotLength.Size = new System.Drawing.Size(205, 52); + this.nudTrailingToolToPivotLength.TabIndex = 214; + this.nudTrailingToolToPivotLength.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.nudTrailingToolToPivotLength.Value = new decimal(new int[] { + 51, + 0, + 0, + 0}); + this.nudTrailingToolToPivotLength.Click += new System.EventHandler(this.nudTrailingToolToPivotLength_Click); + // // tabTSections // this.tabTSections.BackColor = System.Drawing.Color.WhiteSmoke; @@ -3421,6 +3469,9 @@ private void InitializeComponent() this.tabTSections.Controls.Add(this.label46); this.tabTSections.Controls.Add(this.label47); this.tabTSections.Controls.Add(this.label48); + this.tabTSections.Controls.Add(this.cboxSectionBoundaryControl); + this.tabTSections.Controls.Add(this.pictureBox11); + this.tabTSections.Controls.Add(this.cboxIsUnique); this.tabTSections.Controls.Add(this.nudCutoffSpeed); this.tabTSections.Controls.Add(this.nudDefaultSectionWidth); this.tabTSections.Controls.Add(this.nudMinCoverage); @@ -3441,13 +3492,10 @@ private void InitializeComponent() this.tabTSections.Controls.Add(this.nudSection02); this.tabTSections.Controls.Add(this.nudSection01); this.tabTSections.Controls.Add(this.nudNumberOfSections); - this.tabTSections.Controls.Add(this.cboxSectionBoundaryControl); - this.tabTSections.Controls.Add(this.pictureBox11); - this.tabTSections.Controls.Add(this.cboxIsUnique); this.tabTSections.ForeColor = System.Drawing.Color.Black; this.tabTSections.Location = new System.Drawing.Point(4, 44); this.tabTSections.Name = "tabTSections"; - this.tabTSections.Size = new System.Drawing.Size(854, 584); + this.tabTSections.Size = new System.Drawing.Size(857, 584); this.tabTSections.TabIndex = 7; this.tabTSections.Text = "tSect"; this.tabTSections.Enter += new System.EventHandler(this.tabTSections_Enter); @@ -4034,7 +4082,7 @@ private void InitializeComponent() this.label106.Font = new System.Drawing.Font("Tahoma", 15.75F); this.label106.ForeColor = System.Drawing.Color.Black; this.label106.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label106.Location = new System.Drawing.Point(441, 473); + this.label106.Location = new System.Drawing.Point(355, 472); this.label106.Name = "label106"; this.label106.Size = new System.Drawing.Size(168, 32); this.label106.TabIndex = 502; @@ -4148,7 +4196,7 @@ private void InitializeComponent() this.label50.Font = new System.Drawing.Font("Tahoma", 15.75F); this.label50.ForeColor = System.Drawing.Color.Black; this.label50.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label50.Location = new System.Drawing.Point(228, 473); + this.label50.Location = new System.Drawing.Point(902, 223); this.label50.Name = "label50"; this.label50.Size = new System.Drawing.Size(174, 32); this.label50.TabIndex = 293; @@ -4413,6 +4461,60 @@ private void InitializeComponent() this.label48.TabIndex = 271; this.label48.Text = "1"; // + // cboxSectionBoundaryControl + // + this.cboxSectionBoundaryControl.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.cboxSectionBoundaryControl.Appearance = System.Windows.Forms.Appearance.Button; + this.cboxSectionBoundaryControl.BackColor = System.Drawing.Color.AliceBlue; + this.cboxSectionBoundaryControl.BackgroundImage = global::AgOpenGPS.Properties.Resources.SectionOffBoundary; + this.cboxSectionBoundaryControl.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.cboxSectionBoundaryControl.FlatAppearance.CheckedBackColor = System.Drawing.Color.Transparent; + this.cboxSectionBoundaryControl.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; + this.cboxSectionBoundaryControl.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; + this.cboxSectionBoundaryControl.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cboxSectionBoundaryControl.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboxSectionBoundaryControl.ForeColor = System.Drawing.Color.Black; + this.cboxSectionBoundaryControl.Location = new System.Drawing.Point(387, 507); + this.cboxSectionBoundaryControl.Name = "cboxSectionBoundaryControl"; + this.cboxSectionBoundaryControl.Size = new System.Drawing.Size(104, 52); + this.cboxSectionBoundaryControl.TabIndex = 501; + this.cboxSectionBoundaryControl.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.cboxSectionBoundaryControl.UseVisualStyleBackColor = false; + this.cboxSectionBoundaryControl.Click += new System.EventHandler(this.cboxSectionBoundaryControl_Click); + // + // pictureBox11 + // + this.pictureBox11.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.pictureBox11.Image = global::AgOpenGPS.Properties.Resources.SectionOffBelow; + this.pictureBox11.Location = new System.Drawing.Point(657, 448); + this.pictureBox11.Name = "pictureBox11"; + this.pictureBox11.Size = new System.Drawing.Size(116, 57); + this.pictureBox11.TabIndex = 500; + this.pictureBox11.TabStop = false; + // + // cboxIsUnique + // + this.cboxIsUnique.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.cboxIsUnique.Appearance = System.Windows.Forms.Appearance.Button; + this.cboxIsUnique.BackColor = System.Drawing.Color.AliceBlue; + this.cboxIsUnique.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConT_Symmetric; + this.cboxIsUnique.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.cboxIsUnique.FlatAppearance.BorderColor = System.Drawing.Color.Black; + this.cboxIsUnique.FlatAppearance.CheckedBackColor = System.Drawing.Color.AliceBlue; + this.cboxIsUnique.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; + this.cboxIsUnique.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; + this.cboxIsUnique.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cboxIsUnique.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboxIsUnique.ForeColor = System.Drawing.SystemColors.ControlText; + this.cboxIsUnique.Location = new System.Drawing.Point(28, 464); + this.cboxIsUnique.Name = "cboxIsUnique"; + this.cboxIsUnique.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.cboxIsUnique.Size = new System.Drawing.Size(165, 110); + this.cboxIsUnique.TabIndex = 454; + this.cboxIsUnique.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.cboxIsUnique.UseVisualStyleBackColor = false; + this.cboxIsUnique.Click += new System.EventHandler(this.cboxIsUnique_Click); + // // nudCutoffSpeed // this.nudCutoffSpeed.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -4478,7 +4580,7 @@ private void InitializeComponent() this.nudMinCoverage.BackColor = System.Drawing.Color.AliceBlue; this.nudMinCoverage.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.nudMinCoverage.InterceptArrowKeys = false; - this.nudMinCoverage.Location = new System.Drawing.Point(258, 508); + this.nudMinCoverage.Location = new System.Drawing.Point(932, 258); this.nudMinCoverage.Name = "nudMinCoverage"; this.nudMinCoverage.ReadOnly = true; this.nudMinCoverage.Size = new System.Drawing.Size(132, 52); @@ -4899,68 +5001,14 @@ private void InitializeComponent() 0}); this.nudNumberOfSections.Click += new System.EventHandler(this.nudNumberOfSections_Click); // - // cboxSectionBoundaryControl - // - this.cboxSectionBoundaryControl.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.cboxSectionBoundaryControl.Appearance = System.Windows.Forms.Appearance.Button; - this.cboxSectionBoundaryControl.BackColor = System.Drawing.Color.AliceBlue; - this.cboxSectionBoundaryControl.BackgroundImage = global::AgOpenGPS.Properties.Resources.SectionOffBoundary; - this.cboxSectionBoundaryControl.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.cboxSectionBoundaryControl.FlatAppearance.CheckedBackColor = System.Drawing.Color.Transparent; - this.cboxSectionBoundaryControl.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; - this.cboxSectionBoundaryControl.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; - this.cboxSectionBoundaryControl.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cboxSectionBoundaryControl.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cboxSectionBoundaryControl.ForeColor = System.Drawing.Color.Black; - this.cboxSectionBoundaryControl.Location = new System.Drawing.Point(473, 508); - this.cboxSectionBoundaryControl.Name = "cboxSectionBoundaryControl"; - this.cboxSectionBoundaryControl.Size = new System.Drawing.Size(104, 52); - this.cboxSectionBoundaryControl.TabIndex = 501; - this.cboxSectionBoundaryControl.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.cboxSectionBoundaryControl.UseVisualStyleBackColor = false; - this.cboxSectionBoundaryControl.Click += new System.EventHandler(this.cboxSectionBoundaryControl_Click); - // - // pictureBox11 - // - this.pictureBox11.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.pictureBox11.Image = global::AgOpenGPS.Properties.Resources.SectionOffBelow; - this.pictureBox11.Location = new System.Drawing.Point(657, 448); - this.pictureBox11.Name = "pictureBox11"; - this.pictureBox11.Size = new System.Drawing.Size(116, 57); - this.pictureBox11.TabIndex = 500; - this.pictureBox11.TabStop = false; - // - // cboxIsUnique - // - this.cboxIsUnique.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.cboxIsUnique.Appearance = System.Windows.Forms.Appearance.Button; - this.cboxIsUnique.BackColor = System.Drawing.Color.AliceBlue; - this.cboxIsUnique.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConT_Symmetric; - this.cboxIsUnique.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.cboxIsUnique.FlatAppearance.BorderColor = System.Drawing.Color.Black; - this.cboxIsUnique.FlatAppearance.CheckedBackColor = System.Drawing.Color.AliceBlue; - this.cboxIsUnique.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; - this.cboxIsUnique.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; - this.cboxIsUnique.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cboxIsUnique.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cboxIsUnique.ForeColor = System.Drawing.SystemColors.ControlText; - this.cboxIsUnique.Location = new System.Drawing.Point(28, 464); - this.cboxIsUnique.Name = "cboxIsUnique"; - this.cboxIsUnique.RightToLeft = System.Windows.Forms.RightToLeft.Yes; - this.cboxIsUnique.Size = new System.Drawing.Size(165, 110); - this.cboxIsUnique.TabIndex = 454; - this.cboxIsUnique.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.cboxIsUnique.UseVisualStyleBackColor = false; - this.cboxIsUnique.Click += new System.EventHandler(this.cboxIsUnique_Click); - // - // tabTSwitches + // tabTSwitches // this.tabTSwitches.BackColor = System.Drawing.Color.WhiteSmoke; this.tabTSwitches.Controls.Add(this.grpControls); this.tabTSwitches.Controls.Add(this.grpSwitch); this.tabTSwitches.Location = new System.Drawing.Point(4, 44); this.tabTSwitches.Name = "tabTSwitches"; - this.tabTSwitches.Size = new System.Drawing.Size(854, 584); + this.tabTSwitches.Size = new System.Drawing.Size(851, 584); this.tabTSwitches.TabIndex = 9; this.tabTSwitches.Text = "tSwit"; this.tabTSwitches.Enter += new System.EventHandler(this.tabTSwitches_Enter); @@ -5137,16 +5185,16 @@ private void InitializeComponent() this.tabTSettings.Controls.Add(this.label16); this.tabTSettings.Controls.Add(this.label14); this.tabTSettings.Controls.Add(this.label10); - this.tabTSettings.Controls.Add(this.nudLookAheadOff); - this.tabTSettings.Controls.Add(this.nudTurnOffDelay); - this.tabTSettings.Controls.Add(this.nudLookAhead); this.tabTSettings.Controls.Add(this.pictureBox18); this.tabTSettings.Controls.Add(this.pictureBox4); this.tabTSettings.Controls.Add(this.pictureBox3); + this.tabTSettings.Controls.Add(this.nudLookAheadOff); + this.tabTSettings.Controls.Add(this.nudTurnOffDelay); + this.tabTSettings.Controls.Add(this.nudLookAhead); this.tabTSettings.ForeColor = System.Drawing.SystemColors.ButtonFace; this.tabTSettings.Location = new System.Drawing.Point(4, 44); this.tabTSettings.Name = "tabTSettings"; - this.tabTSettings.Size = new System.Drawing.Size(854, 584); + this.tabTSettings.Size = new System.Drawing.Size(851, 584); this.tabTSettings.TabIndex = 10; this.tabTSettings.Text = "TSettings"; this.tabTSettings.Enter += new System.EventHandler(this.tabTSettings_Enter); @@ -5208,6 +5256,39 @@ private void InitializeComponent() this.label10.Text = "Turn Off Delay (secs)"; this.label10.TextAlign = System.Drawing.ContentAlignment.TopCenter; // + // pictureBox18 + // + this.pictureBox18.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.pictureBox18.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.pictureBox18.Image = global::AgOpenGPS.Properties.Resources.SectionLookAheadDelay; + this.pictureBox18.Location = new System.Drawing.Point(574, 108); + this.pictureBox18.Name = "pictureBox18"; + this.pictureBox18.Size = new System.Drawing.Size(279, 353); + this.pictureBox18.TabIndex = 133; + this.pictureBox18.TabStop = false; + // + // pictureBox4 + // + this.pictureBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.pictureBox4.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.pictureBox4.Image = global::AgOpenGPS.Properties.Resources.SectionLookAheadOff; + this.pictureBox4.Location = new System.Drawing.Point(287, 108); + this.pictureBox4.Name = "pictureBox4"; + this.pictureBox4.Size = new System.Drawing.Size(279, 353); + this.pictureBox4.TabIndex = 132; + this.pictureBox4.TabStop = false; + // + // pictureBox3 + // + this.pictureBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.pictureBox3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.pictureBox3.Image = global::AgOpenGPS.Properties.Resources.SectionOnLookAhead; + this.pictureBox3.Location = new System.Drawing.Point(0, 108); + this.pictureBox3.Name = "pictureBox3"; + this.pictureBox3.Size = new System.Drawing.Size(279, 353); + this.pictureBox3.TabIndex = 127; + this.pictureBox3.TabStop = false; + // // nudLookAheadOff // this.nudLookAheadOff.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -5303,39 +5384,6 @@ private void InitializeComponent() 65536}); this.nudLookAhead.Click += new System.EventHandler(this.nudLookAhead_Click); // - // pictureBox18 - // - this.pictureBox18.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.pictureBox18.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.pictureBox18.Image = global::AgOpenGPS.Properties.Resources.SectionLookAheadDelay; - this.pictureBox18.Location = new System.Drawing.Point(574, 108); - this.pictureBox18.Name = "pictureBox18"; - this.pictureBox18.Size = new System.Drawing.Size(279, 353); - this.pictureBox18.TabIndex = 133; - this.pictureBox18.TabStop = false; - // - // pictureBox4 - // - this.pictureBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.pictureBox4.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.pictureBox4.Image = global::AgOpenGPS.Properties.Resources.SectionLookAheadOff; - this.pictureBox4.Location = new System.Drawing.Point(287, 108); - this.pictureBox4.Name = "pictureBox4"; - this.pictureBox4.Size = new System.Drawing.Size(279, 353); - this.pictureBox4.TabIndex = 132; - this.pictureBox4.TabStop = false; - // - // pictureBox3 - // - this.pictureBox3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.pictureBox3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.pictureBox3.Image = global::AgOpenGPS.Properties.Resources.SectionOnLookAhead; - this.pictureBox3.Location = new System.Drawing.Point(0, 108); - this.pictureBox3.Name = "pictureBox3"; - this.pictureBox3.Size = new System.Drawing.Size(279, 353); - this.pictureBox3.TabIndex = 127; - this.pictureBox3.TabStop = false; - // // tabDHeading // this.tabDHeading.BackColor = System.Drawing.Color.WhiteSmoke; @@ -5343,12 +5391,12 @@ private void InitializeComponent() this.tabDHeading.Controls.Add(this.label118); this.tabDHeading.Controls.Add(this.label113); this.tabDHeading.Controls.Add(this.label2); - this.tabDHeading.Controls.Add(this.nudFixJumpDistance); this.tabDHeading.Controls.Add(this.gboxDual); this.tabDHeading.Controls.Add(this.gboxSingle); this.tabDHeading.Controls.Add(this.headingGroupBox); this.tabDHeading.Controls.Add(this.cboxIsRTK_KillAutoSteer); this.tabDHeading.Controls.Add(this.cboxIsRTK); + this.tabDHeading.Controls.Add(this.nudFixJumpDistance); this.tabDHeading.Location = new System.Drawing.Point(4, 44); this.tabDHeading.Name = "tabDHeading"; this.tabDHeading.Size = new System.Drawing.Size(851, 584); @@ -5413,31 +5461,6 @@ private void InitializeComponent() this.label2.Text = "RTK Fix Alarm"; this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // - // nudFixJumpDistance - // - this.nudFixJumpDistance.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.nudFixJumpDistance.AutoSize = true; - this.nudFixJumpDistance.BackColor = System.Drawing.Color.AliceBlue; - this.nudFixJumpDistance.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudFixJumpDistance.InterceptArrowKeys = false; - this.nudFixJumpDistance.Location = new System.Drawing.Point(965, 279); - this.nudFixJumpDistance.Maximum = new decimal(new int[] { - 1000, - 0, - 0, - 0}); - this.nudFixJumpDistance.Name = "nudFixJumpDistance"; - this.nudFixJumpDistance.ReadOnly = true; - this.nudFixJumpDistance.Size = new System.Drawing.Size(144, 52); - this.nudFixJumpDistance.TabIndex = 474; - this.nudFixJumpDistance.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.nudFixJumpDistance.Value = new decimal(new int[] { - 0, - 0, - 0, - 0}); - this.nudFixJumpDistance.Click += new System.EventHandler(this.nudFixJumpDistance_Click); - // // gboxDual // this.gboxDual.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -5814,6 +5837,31 @@ private void InitializeComponent() this.cboxIsRTK.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.cboxIsRTK.UseVisualStyleBackColor = false; // + // nudFixJumpDistance + // + this.nudFixJumpDistance.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.nudFixJumpDistance.AutoSize = true; + this.nudFixJumpDistance.BackColor = System.Drawing.Color.AliceBlue; + this.nudFixJumpDistance.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudFixJumpDistance.InterceptArrowKeys = false; + this.nudFixJumpDistance.Location = new System.Drawing.Point(965, 279); + this.nudFixJumpDistance.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.nudFixJumpDistance.Name = "nudFixJumpDistance"; + this.nudFixJumpDistance.ReadOnly = true; + this.nudFixJumpDistance.Size = new System.Drawing.Size(144, 52); + this.nudFixJumpDistance.TabIndex = 474; + this.nudFixJumpDistance.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.nudFixJumpDistance.Value = new decimal(new int[] { + 0, + 0, + 0, + 0}); + this.nudFixJumpDistance.Click += new System.EventHandler(this.nudFixJumpDistance_Click); + // // tabDRoll // this.tabDRoll.BackColor = System.Drawing.Color.WhiteSmoke; @@ -5836,7 +5884,7 @@ private void InitializeComponent() this.tabDRoll.ForeColor = System.Drawing.SystemColors.ButtonFace; this.tabDRoll.Location = new System.Drawing.Point(4, 44); this.tabDRoll.Name = "tabDRoll"; - this.tabDRoll.Size = new System.Drawing.Size(854, 584); + this.tabDRoll.Size = new System.Drawing.Size(851, 584); this.tabDRoll.TabIndex = 16; this.tabDRoll.Text = "dRoll"; this.tabDRoll.Enter += new System.EventHandler(this.tabDRoll_Enter); @@ -6071,8 +6119,6 @@ private void InitializeComponent() this.tabUTurn.Controls.Add(this.lblFtMUTurn); this.tabUTurn.Controls.Add(this.lblSmoothing); this.tabUTurn.Controls.Add(this.lblDistance); - this.tabUTurn.Controls.Add(this.nudYouTurnRadius); - this.tabUTurn.Controls.Add(this.nudTurnDistanceFromBoundary); this.tabUTurn.Controls.Add(this.label64); this.tabUTurn.Controls.Add(this.btnTurnSmoothingUp); this.tabUTurn.Controls.Add(this.btnTurnSmoothingDown); @@ -6081,9 +6127,11 @@ private void InitializeComponent() this.tabUTurn.Controls.Add(this.lblWhenTrig); this.tabUTurn.Controls.Add(this.btnDistanceUp); this.tabUTurn.Controls.Add(this.btnDistanceDn); + this.tabUTurn.Controls.Add(this.nudYouTurnRadius); + this.tabUTurn.Controls.Add(this.nudTurnDistanceFromBoundary); this.tabUTurn.Location = new System.Drawing.Point(4, 44); this.tabUTurn.Name = "tabUTurn"; - this.tabUTurn.Size = new System.Drawing.Size(854, 584); + this.tabUTurn.Size = new System.Drawing.Size(851, 584); this.tabUTurn.TabIndex = 18; this.tabUTurn.Text = "uTurn"; this.tabUTurn.Enter += new System.EventHandler(this.tabUTurn_Enter); @@ -6161,62 +6209,6 @@ private void InitializeComponent() this.lblDistance.TabIndex = 455; this.lblDistance.Text = "XXX"; // - // nudYouTurnRadius - // - this.nudYouTurnRadius.BackColor = System.Drawing.Color.White; - this.nudYouTurnRadius.DecimalPlaces = 2; - this.nudYouTurnRadius.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudYouTurnRadius.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.nudYouTurnRadius.Increment = new decimal(new int[] { - 2, - 0, - 0, - 65536}); - this.nudYouTurnRadius.InterceptArrowKeys = false; - this.nudYouTurnRadius.Location = new System.Drawing.Point(582, 154); - this.nudYouTurnRadius.Minimum = new decimal(new int[] { - 2, - 0, - 0, - 0}); - this.nudYouTurnRadius.Name = "nudYouTurnRadius"; - this.nudYouTurnRadius.ReadOnly = true; - this.nudYouTurnRadius.Size = new System.Drawing.Size(160, 52); - this.nudYouTurnRadius.TabIndex = 471; - this.nudYouTurnRadius.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.nudYouTurnRadius.Value = new decimal(new int[] { - 2, - 0, - 0, - 0}); - this.nudYouTurnRadius.Click += new System.EventHandler(this.nudYouTurnRadius_Click); - // - // nudTurnDistanceFromBoundary - // - this.nudTurnDistanceFromBoundary.BackColor = System.Drawing.Color.White; - this.nudTurnDistanceFromBoundary.DecimalPlaces = 2; - this.nudTurnDistanceFromBoundary.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudTurnDistanceFromBoundary.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.nudTurnDistanceFromBoundary.Increment = new decimal(new int[] { - 2, - 0, - 0, - 65536}); - this.nudTurnDistanceFromBoundary.InterceptArrowKeys = false; - this.nudTurnDistanceFromBoundary.Location = new System.Drawing.Point(582, 434); - this.nudTurnDistanceFromBoundary.Name = "nudTurnDistanceFromBoundary"; - this.nudTurnDistanceFromBoundary.ReadOnly = true; - this.nudTurnDistanceFromBoundary.Size = new System.Drawing.Size(160, 52); - this.nudTurnDistanceFromBoundary.TabIndex = 468; - this.nudTurnDistanceFromBoundary.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.nudTurnDistanceFromBoundary.Value = new decimal(new int[] { - 10, - 0, - 0, - 65536}); - this.nudTurnDistanceFromBoundary.Click += new System.EventHandler(this.nudTurnDistanceFromBoundary_Click); - this.nudTurnDistanceFromBoundary.Enter += new System.EventHandler(this.nudTurnDistanceFromBoundary_Click); - // // label64 // this.label64.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -6329,6 +6321,62 @@ private void InitializeComponent() this.btnDistanceDn.UseVisualStyleBackColor = true; this.btnDistanceDn.Click += new System.EventHandler(this.btnDistanceDn_Click); // + // nudYouTurnRadius + // + this.nudYouTurnRadius.BackColor = System.Drawing.Color.White; + this.nudYouTurnRadius.DecimalPlaces = 2; + this.nudYouTurnRadius.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudYouTurnRadius.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; + this.nudYouTurnRadius.Increment = new decimal(new int[] { + 2, + 0, + 0, + 65536}); + this.nudYouTurnRadius.InterceptArrowKeys = false; + this.nudYouTurnRadius.Location = new System.Drawing.Point(582, 154); + this.nudYouTurnRadius.Minimum = new decimal(new int[] { + 2, + 0, + 0, + 0}); + this.nudYouTurnRadius.Name = "nudYouTurnRadius"; + this.nudYouTurnRadius.ReadOnly = true; + this.nudYouTurnRadius.Size = new System.Drawing.Size(160, 52); + this.nudYouTurnRadius.TabIndex = 471; + this.nudYouTurnRadius.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.nudYouTurnRadius.Value = new decimal(new int[] { + 2, + 0, + 0, + 0}); + this.nudYouTurnRadius.Click += new System.EventHandler(this.nudYouTurnRadius_Click); + // + // nudTurnDistanceFromBoundary + // + this.nudTurnDistanceFromBoundary.BackColor = System.Drawing.Color.White; + this.nudTurnDistanceFromBoundary.DecimalPlaces = 2; + this.nudTurnDistanceFromBoundary.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudTurnDistanceFromBoundary.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; + this.nudTurnDistanceFromBoundary.Increment = new decimal(new int[] { + 2, + 0, + 0, + 65536}); + this.nudTurnDistanceFromBoundary.InterceptArrowKeys = false; + this.nudTurnDistanceFromBoundary.Location = new System.Drawing.Point(582, 434); + this.nudTurnDistanceFromBoundary.Name = "nudTurnDistanceFromBoundary"; + this.nudTurnDistanceFromBoundary.ReadOnly = true; + this.nudTurnDistanceFromBoundary.Size = new System.Drawing.Size(160, 52); + this.nudTurnDistanceFromBoundary.TabIndex = 468; + this.nudTurnDistanceFromBoundary.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.nudTurnDistanceFromBoundary.Value = new decimal(new int[] { + 10, + 0, + 0, + 65536}); + this.nudTurnDistanceFromBoundary.Click += new System.EventHandler(this.nudTurnDistanceFromBoundary_Click); + this.nudTurnDistanceFromBoundary.Enter += new System.EventHandler(this.nudTurnDistanceFromBoundary_Click); + // // tabRelay // this.tabRelay.BackColor = System.Drawing.Color.Gainsboro; @@ -6389,7 +6437,7 @@ private void InitializeComponent() this.tabRelay.Location = new System.Drawing.Point(4, 44); this.tabRelay.Name = "tabRelay"; this.tabRelay.Padding = new System.Windows.Forms.Padding(3); - this.tabRelay.Size = new System.Drawing.Size(854, 584); + this.tabRelay.Size = new System.Drawing.Size(851, 584); this.tabRelay.TabIndex = 24; this.tabRelay.Text = "aRelay"; this.tabRelay.Enter += new System.EventHandler(this.tabRelay_Enter); @@ -7524,16 +7572,16 @@ private void InitializeComponent() this.tabAMachine.Controls.Add(this.label72); this.tabAMachine.Controls.Add(this.label67); this.tabAMachine.Controls.Add(this.label56); + this.tabAMachine.Controls.Add(this.pboxSendMachine); + this.tabAMachine.Controls.Add(this.cboxMachInvertRelays); + this.tabAMachine.Controls.Add(this.btnSendMachinePGN); this.tabAMachine.Controls.Add(this.nudUser4); this.tabAMachine.Controls.Add(this.nudUser3); this.tabAMachine.Controls.Add(this.nudUser2); this.tabAMachine.Controls.Add(this.nudUser1); - this.tabAMachine.Controls.Add(this.pboxSendMachine); - this.tabAMachine.Controls.Add(this.cboxMachInvertRelays); - this.tabAMachine.Controls.Add(this.btnSendMachinePGN); this.tabAMachine.Location = new System.Drawing.Point(4, 44); this.tabAMachine.Name = "tabAMachine"; - this.tabAMachine.Size = new System.Drawing.Size(854, 584); + this.tabAMachine.Size = new System.Drawing.Size(851, 584); this.tabAMachine.TabIndex = 20; this.tabAMachine.Text = "aMach"; this.tabAMachine.Enter += new System.EventHandler(this.tabAMachine_Enter); @@ -7829,6 +7877,55 @@ private void InitializeComponent() this.label56.Text = "Machine Module"; this.label56.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // + // pboxSendMachine + // + this.pboxSendMachine.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.pboxSendMachine.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConSt_Mandatory1; + this.pboxSendMachine.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; + this.pboxSendMachine.Location = new System.Drawing.Point(712, 412); + this.pboxSendMachine.Name = "pboxSendMachine"; + this.pboxSendMachine.Size = new System.Drawing.Size(88, 79); + this.pboxSendMachine.TabIndex = 483; + this.pboxSendMachine.TabStop = false; + this.pboxSendMachine.Visible = false; + // + // cboxMachInvertRelays + // + this.cboxMachInvertRelays.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.cboxMachInvertRelays.Appearance = System.Windows.Forms.Appearance.Button; + this.cboxMachInvertRelays.BackColor = System.Drawing.Color.WhiteSmoke; + this.cboxMachInvertRelays.Checked = true; + this.cboxMachInvertRelays.CheckState = System.Windows.Forms.CheckState.Checked; + this.cboxMachInvertRelays.FlatAppearance.BorderColor = System.Drawing.Color.Black; + this.cboxMachInvertRelays.FlatAppearance.CheckedBackColor = System.Drawing.Color.LightGreen; + this.cboxMachInvertRelays.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cboxMachInvertRelays.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboxMachInvertRelays.ForeColor = System.Drawing.SystemColors.ControlText; + this.cboxMachInvertRelays.Image = global::AgOpenGPS.Properties.Resources.ConSt_InvertRelay; + this.cboxMachInvertRelays.Location = new System.Drawing.Point(116, 462); + this.cboxMachInvertRelays.Name = "cboxMachInvertRelays"; + this.cboxMachInvertRelays.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.cboxMachInvertRelays.Size = new System.Drawing.Size(192, 98); + this.cboxMachInvertRelays.TabIndex = 2; + this.cboxMachInvertRelays.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.cboxMachInvertRelays.UseVisualStyleBackColor = false; + this.cboxMachInvertRelays.Click += new System.EventHandler(this.Enable_AlertM_Click); + // + // btnSendMachinePGN + // + this.btnSendMachinePGN.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnSendMachinePGN.BackColor = System.Drawing.Color.White; + this.btnSendMachinePGN.FlatAppearance.BorderSize = 0; + this.btnSendMachinePGN.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnSendMachinePGN.Image = global::AgOpenGPS.Properties.Resources.ToolAcceptChange; + this.btnSendMachinePGN.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.btnSendMachinePGN.Location = new System.Drawing.Point(704, 494); + this.btnSendMachinePGN.Name = "btnSendMachinePGN"; + this.btnSendMachinePGN.Size = new System.Drawing.Size(103, 62); + this.btnSendMachinePGN.TabIndex = 1; + this.btnSendMachinePGN.UseVisualStyleBackColor = false; + this.btnSendMachinePGN.Click += new System.EventHandler(this.btnSendMachinePGN_Click); + // // nudUser4 // this.nudUser4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -7925,55 +8022,6 @@ private void InitializeComponent() 0}); this.nudUser1.Click += new System.EventHandler(this.nudUser1_Click); // - // pboxSendMachine - // - this.pboxSendMachine.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.pboxSendMachine.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConSt_Mandatory1; - this.pboxSendMachine.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.pboxSendMachine.Location = new System.Drawing.Point(712, 412); - this.pboxSendMachine.Name = "pboxSendMachine"; - this.pboxSendMachine.Size = new System.Drawing.Size(88, 79); - this.pboxSendMachine.TabIndex = 483; - this.pboxSendMachine.TabStop = false; - this.pboxSendMachine.Visible = false; - // - // cboxMachInvertRelays - // - this.cboxMachInvertRelays.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.cboxMachInvertRelays.Appearance = System.Windows.Forms.Appearance.Button; - this.cboxMachInvertRelays.BackColor = System.Drawing.Color.WhiteSmoke; - this.cboxMachInvertRelays.Checked = true; - this.cboxMachInvertRelays.CheckState = System.Windows.Forms.CheckState.Checked; - this.cboxMachInvertRelays.FlatAppearance.BorderColor = System.Drawing.Color.Black; - this.cboxMachInvertRelays.FlatAppearance.CheckedBackColor = System.Drawing.Color.LightGreen; - this.cboxMachInvertRelays.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cboxMachInvertRelays.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cboxMachInvertRelays.ForeColor = System.Drawing.SystemColors.ControlText; - this.cboxMachInvertRelays.Image = global::AgOpenGPS.Properties.Resources.ConSt_InvertRelay; - this.cboxMachInvertRelays.Location = new System.Drawing.Point(116, 462); - this.cboxMachInvertRelays.Name = "cboxMachInvertRelays"; - this.cboxMachInvertRelays.RightToLeft = System.Windows.Forms.RightToLeft.Yes; - this.cboxMachInvertRelays.Size = new System.Drawing.Size(192, 98); - this.cboxMachInvertRelays.TabIndex = 2; - this.cboxMachInvertRelays.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.cboxMachInvertRelays.UseVisualStyleBackColor = false; - this.cboxMachInvertRelays.Click += new System.EventHandler(this.Enable_AlertM_Click); - // - // btnSendMachinePGN - // - this.btnSendMachinePGN.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnSendMachinePGN.BackColor = System.Drawing.Color.White; - this.btnSendMachinePGN.FlatAppearance.BorderSize = 0; - this.btnSendMachinePGN.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnSendMachinePGN.Image = global::AgOpenGPS.Properties.Resources.ToolAcceptChange; - this.btnSendMachinePGN.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnSendMachinePGN.Location = new System.Drawing.Point(704, 494); - this.btnSendMachinePGN.Name = "btnSendMachinePGN"; - this.btnSendMachinePGN.Size = new System.Drawing.Size(103, 62); - this.btnSendMachinePGN.TabIndex = 1; - this.btnSendMachinePGN.UseVisualStyleBackColor = false; - this.btnSendMachinePGN.Click += new System.EventHandler(this.btnSendMachinePGN_Click); - // // tabTram // this.tabTram.BackColor = System.Drawing.Color.Gainsboro; @@ -7981,14 +8029,14 @@ private void InitializeComponent() this.tabTram.Controls.Add(this.label85); this.tabTram.Controls.Add(this.lblTramWidthUnits); this.tabTram.Controls.Add(this.label75); - this.tabTram.Controls.Add(this.nudTramWidth); this.tabTram.Controls.Add(this.cboxDisplayTramControl); this.tabTram.Controls.Add(this.chkBoxOverrideTramControlPos); this.tabTram.Controls.Add(this.pictureBox8); + this.tabTram.Controls.Add(this.nudTramWidth); this.tabTram.ForeColor = System.Drawing.Color.Black; this.tabTram.Location = new System.Drawing.Point(4, 44); this.tabTram.Name = "tabTram"; - this.tabTram.Size = new System.Drawing.Size(854, 584); + this.tabTram.Size = new System.Drawing.Size(851, 584); this.tabTram.TabIndex = 21; this.tabTram.Text = "tTram"; this.tabTram.Enter += new System.EventHandler(this.tabTram_Enter); @@ -8049,36 +8097,6 @@ private void InitializeComponent() this.label75.TabIndex = 477; this.label75.Text = "Tram Width"; // - // nudTramWidth - // - this.nudTramWidth.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.nudTramWidth.BackColor = System.Drawing.Color.AliceBlue; - this.nudTramWidth.Cursor = System.Windows.Forms.Cursors.IBeam; - this.nudTramWidth.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudTramWidth.InterceptArrowKeys = false; - this.nudTramWidth.Location = new System.Drawing.Point(291, 105); - this.nudTramWidth.Maximum = new decimal(new int[] { - 5000, - 0, - 0, - 0}); - this.nudTramWidth.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.nudTramWidth.Name = "nudTramWidth"; - this.nudTramWidth.ReadOnly = true; - this.nudTramWidth.Size = new System.Drawing.Size(157, 52); - this.nudTramWidth.TabIndex = 1; - this.nudTramWidth.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.nudTramWidth.Value = new decimal(new int[] { - 5000, - 0, - 0, - 0}); - this.nudTramWidth.Click += new System.EventHandler(this.nudTramWidth_Click); - // // cboxDisplayTramControl // this.cboxDisplayTramControl.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -8127,6 +8145,36 @@ private void InitializeComponent() this.pictureBox8.TabIndex = 119; this.pictureBox8.TabStop = false; // + // nudTramWidth + // + this.nudTramWidth.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.nudTramWidth.BackColor = System.Drawing.Color.AliceBlue; + this.nudTramWidth.Cursor = System.Windows.Forms.Cursors.IBeam; + this.nudTramWidth.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudTramWidth.InterceptArrowKeys = false; + this.nudTramWidth.Location = new System.Drawing.Point(291, 105); + this.nudTramWidth.Maximum = new decimal(new int[] { + 5000, + 0, + 0, + 0}); + this.nudTramWidth.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.nudTramWidth.Name = "nudTramWidth"; + this.nudTramWidth.ReadOnly = true; + this.nudTramWidth.Size = new System.Drawing.Size(157, 52); + this.nudTramWidth.TabIndex = 1; + this.nudTramWidth.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.nudTramWidth.Value = new decimal(new int[] { + 5000, + 0, + 0, + 0}); + this.nudTramWidth.Click += new System.EventHandler(this.nudTramWidth_Click); + // // tabBtns // this.tabBtns.BackColor = System.Drawing.Color.WhiteSmoke; @@ -8178,7 +8226,7 @@ private void InitializeComponent() this.tabBtns.Controls.Add(this.cboxFeatureTram); this.tabBtns.Location = new System.Drawing.Point(4, 44); this.tabBtns.Name = "tabBtns"; - this.tabBtns.Size = new System.Drawing.Size(854, 584); + this.tabBtns.Size = new System.Drawing.Size(851, 584); this.tabBtns.TabIndex = 22; this.tabBtns.Text = "fBtns"; this.tabBtns.Enter += new System.EventHandler(this.tabBtns_Enter); @@ -8945,8 +8993,10 @@ private void InitializeComponent() // tabDisplay // this.tabDisplay.BackColor = System.Drawing.Color.Gainsboro; - this.tabDisplay.Controls.Add(this.label159); - this.tabDisplay.Controls.Add(this.nudNumGuideLines); + this.tabDisplay.Controls.Add(this.label161); + this.tabDisplay.Controls.Add(this.chkLineSmooth); + this.tabDisplay.Controls.Add(this.label160); + this.tabDisplay.Controls.Add(this.chkSectionLines); this.tabDisplay.Controls.Add(this.label31); this.tabDisplay.Controls.Add(this.chkDirectionMarkers); this.tabDisplay.Controls.Add(this.label79); @@ -8955,7 +9005,6 @@ private void InitializeComponent() this.tabDisplay.Controls.Add(this.label42); this.tabDisplay.Controls.Add(this.label101); this.tabDisplay.Controls.Add(this.label43); - this.tabDisplay.Controls.Add(this.label36); this.tabDisplay.Controls.Add(this.label33); this.tabDisplay.Controls.Add(this.label28); this.tabDisplay.Controls.Add(this.chkSpeedo); @@ -8968,59 +9017,84 @@ private void InitializeComponent() this.tabDisplay.Controls.Add(this.chkDisplayKeyboard); this.tabDisplay.Controls.Add(this.chkDisplayPolygons); this.tabDisplay.Controls.Add(this.chkDisplayStartFullScreen); - this.tabDisplay.Controls.Add(this.chkDisplayLogNMEA); this.tabDisplay.Controls.Add(this.chkDisplayGrid); this.tabDisplay.Controls.Add(this.chkDisplaySpeedo); this.tabDisplay.Controls.Add(this.chkDisplayExtraGuides); + this.tabDisplay.Controls.Add(this.nudNumGuideLines); this.tabDisplay.Location = new System.Drawing.Point(4, 44); this.tabDisplay.Name = "tabDisplay"; this.tabDisplay.Padding = new System.Windows.Forms.Padding(3); - this.tabDisplay.Size = new System.Drawing.Size(854, 584); + this.tabDisplay.Size = new System.Drawing.Size(851, 584); this.tabDisplay.TabIndex = 25; this.tabDisplay.Text = "fDisp"; this.tabDisplay.Enter += new System.EventHandler(this.tabDisplay_Enter); this.tabDisplay.Leave += new System.EventHandler(this.tabDisplay_Leave); // - // label159 - // - this.label159.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.label159.AutoSize = true; - this.label159.ForeColor = System.Drawing.Color.Black; - this.label159.Location = new System.Drawing.Point(239, 475); - this.label159.Name = "label159"; - this.label159.Size = new System.Drawing.Size(49, 16); - this.label159.TabIndex = 535; - this.label159.Text = "# Lines"; - // - // nudNumGuideLines - // - this.nudNumGuideLines.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.nudNumGuideLines.BackColor = System.Drawing.Color.AliceBlue; - this.nudNumGuideLines.Cursor = System.Windows.Forms.Cursors.IBeam; - this.nudNumGuideLines.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudNumGuideLines.InterceptArrowKeys = false; - this.nudNumGuideLines.Location = new System.Drawing.Point(212, 418); - this.nudNumGuideLines.Maximum = new decimal(new int[] { - 5000, - 0, - 0, - 0}); - this.nudNumGuideLines.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.nudNumGuideLines.Name = "nudNumGuideLines"; - this.nudNumGuideLines.ReadOnly = true; - this.nudNumGuideLines.Size = new System.Drawing.Size(109, 52); - this.nudNumGuideLines.TabIndex = 534; - this.nudNumGuideLines.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.nudNumGuideLines.Value = new decimal(new int[] { - 50, - 0, - 0, - 0}); - this.nudNumGuideLines.Click += new System.EventHandler(this.nudNumGuideLines_Click); + // label161 + // + this.label161.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label161.AutoSize = true; + this.label161.BackColor = System.Drawing.Color.Transparent; + this.label161.ForeColor = System.Drawing.Color.Black; + this.label161.Location = new System.Drawing.Point(37, 475); + this.label161.Name = "label161"; + this.label161.Size = new System.Drawing.Size(78, 16); + this.label161.TabIndex = 539; + this.label161.Text = "Line Smooth"; + // + // chkLineSmooth + // + this.chkLineSmooth.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.chkLineSmooth.Appearance = System.Windows.Forms.Appearance.Button; + this.chkLineSmooth.BackColor = System.Drawing.Color.WhiteSmoke; + this.chkLineSmooth.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConD_LineSmooth; + this.chkLineSmooth.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.chkLineSmooth.FlatAppearance.BorderColor = System.Drawing.Color.Black; + this.chkLineSmooth.FlatAppearance.BorderSize = 2; + this.chkLineSmooth.FlatAppearance.CheckedBackColor = System.Drawing.Color.LightGreen; + this.chkLineSmooth.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.chkLineSmooth.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.chkLineSmooth.ForeColor = System.Drawing.SystemColors.ControlText; + this.chkLineSmooth.Location = new System.Drawing.Point(37, 403); + this.chkLineSmooth.Name = "chkLineSmooth"; + this.chkLineSmooth.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.chkLineSmooth.Size = new System.Drawing.Size(100, 69); + this.chkLineSmooth.TabIndex = 538; + this.chkLineSmooth.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.chkLineSmooth.UseVisualStyleBackColor = false; + // + // label160 + // + this.label160.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label160.AutoSize = true; + this.label160.BackColor = System.Drawing.Color.Transparent; + this.label160.ForeColor = System.Drawing.Color.Black; + this.label160.Location = new System.Drawing.Point(425, 475); + this.label160.Name = "label160"; + this.label160.Size = new System.Drawing.Size(82, 16); + this.label160.TabIndex = 537; + this.label160.Text = "Section Lines"; + // + // chkSectionLines + // + this.chkSectionLines.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.chkSectionLines.Appearance = System.Windows.Forms.Appearance.Button; + this.chkSectionLines.BackColor = System.Drawing.Color.WhiteSmoke; + this.chkSectionLines.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConD_SectionHighlights; + this.chkSectionLines.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.chkSectionLines.FlatAppearance.BorderColor = System.Drawing.Color.Black; + this.chkSectionLines.FlatAppearance.BorderSize = 2; + this.chkSectionLines.FlatAppearance.CheckedBackColor = System.Drawing.Color.LightGreen; + this.chkSectionLines.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.chkSectionLines.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.chkSectionLines.ForeColor = System.Drawing.SystemColors.ControlText; + this.chkSectionLines.Location = new System.Drawing.Point(425, 403); + this.chkSectionLines.Name = "chkSectionLines"; + this.chkSectionLines.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.chkSectionLines.Size = new System.Drawing.Size(100, 69); + this.chkSectionLines.TabIndex = 536; + this.chkSectionLines.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.chkSectionLines.UseVisualStyleBackColor = false; // // label31 // @@ -9028,7 +9102,7 @@ private void InitializeComponent() this.label31.AutoSize = true; this.label31.BackColor = System.Drawing.Color.Transparent; this.label31.ForeColor = System.Drawing.Color.Black; - this.label31.Location = new System.Drawing.Point(452, 348); + this.label31.Location = new System.Drawing.Point(234, 475); this.label31.Name = "label31"; this.label31.Size = new System.Drawing.Size(107, 16); this.label31.TabIndex = 533; @@ -9039,6 +9113,7 @@ private void InitializeComponent() this.chkDirectionMarkers.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.chkDirectionMarkers.Appearance = System.Windows.Forms.Appearance.Button; this.chkDirectionMarkers.BackColor = System.Drawing.Color.WhiteSmoke; + this.chkDirectionMarkers.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; this.chkDirectionMarkers.Checked = true; this.chkDirectionMarkers.CheckState = System.Windows.Forms.CheckState.Checked; this.chkDirectionMarkers.FlatAppearance.BorderColor = System.Drawing.Color.Black; @@ -9048,7 +9123,7 @@ private void InitializeComponent() this.chkDirectionMarkers.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkDirectionMarkers.ForeColor = System.Drawing.SystemColors.ControlText; this.chkDirectionMarkers.Image = global::AgOpenGPS.Properties.Resources.ConD_DirectionMarker; - this.chkDirectionMarkers.Location = new System.Drawing.Point(456, 276); + this.chkDirectionMarkers.Location = new System.Drawing.Point(234, 403); this.chkDirectionMarkers.Name = "chkDirectionMarkers"; this.chkDirectionMarkers.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkDirectionMarkers.Size = new System.Drawing.Size(100, 69); @@ -9062,7 +9137,7 @@ private void InitializeComponent() this.label79.AutoSize = true; this.label79.BackColor = System.Drawing.Color.Transparent; this.label79.ForeColor = System.Drawing.Color.Black; - this.label79.Location = new System.Drawing.Point(684, 230); + this.label79.Location = new System.Drawing.Point(712, 111); this.label79.Name = "label79"; this.label79.Size = new System.Drawing.Size(58, 16); this.label79.TabIndex = 531; @@ -9076,7 +9151,7 @@ private void InitializeComponent() this.unitsGroupBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.unitsGroupBox.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.unitsGroupBox.ForeColor = System.Drawing.Color.Black; - this.unitsGroupBox.Location = new System.Drawing.Point(582, 423); + this.unitsGroupBox.Location = new System.Drawing.Point(595, 448); this.unitsGroupBox.Name = "unitsGroupBox"; this.unitsGroupBox.Size = new System.Drawing.Size(250, 129); this.unitsGroupBox.TabIndex = 513; @@ -9129,7 +9204,7 @@ private void InitializeComponent() this.label15.AutoSize = true; this.label15.BackColor = System.Drawing.Color.Transparent; this.label15.ForeColor = System.Drawing.Color.Black; - this.label15.Location = new System.Drawing.Point(277, 106); + this.label15.Location = new System.Drawing.Point(231, 232); this.label15.Name = "label15"; this.label15.Size = new System.Drawing.Size(81, 16); this.label15.TabIndex = 529; @@ -9141,7 +9216,7 @@ private void InitializeComponent() this.label42.AutoSize = true; this.label42.BackColor = System.Drawing.Color.Transparent; this.label42.ForeColor = System.Drawing.Color.Black; - this.label42.Location = new System.Drawing.Point(96, 227); + this.label42.Location = new System.Drawing.Point(37, 232); this.label42.Name = "label42"; this.label42.Size = new System.Drawing.Size(66, 16); this.label42.TabIndex = 527; @@ -9153,7 +9228,7 @@ private void InitializeComponent() this.label101.AutoSize = true; this.label101.BackColor = System.Drawing.Color.Transparent; this.label101.ForeColor = System.Drawing.Color.Black; - this.label101.Location = new System.Drawing.Point(459, 230); + this.label101.Location = new System.Drawing.Point(37, 354); this.label101.Name = "label101"; this.label101.Size = new System.Drawing.Size(82, 16); this.label101.TabIndex = 525; @@ -9165,31 +9240,19 @@ private void InitializeComponent() this.label43.AutoSize = true; this.label43.BackColor = System.Drawing.Color.Transparent; this.label43.ForeColor = System.Drawing.Color.Black; - this.label43.Location = new System.Drawing.Point(93, 106); + this.label43.Location = new System.Drawing.Point(37, 111); this.label43.Name = "label43"; this.label43.Size = new System.Drawing.Size(57, 16); this.label43.TabIndex = 523; this.label43.Text = "Polygons"; // - // label36 - // - this.label36.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.label36.AutoSize = true; - this.label36.BackColor = System.Drawing.Color.Transparent; - this.label36.ForeColor = System.Drawing.Color.Black; - this.label36.Location = new System.Drawing.Point(684, 106); - this.label36.Name = "label36"; - this.label36.Size = new System.Drawing.Size(60, 16); - this.label36.TabIndex = 522; - this.label36.Text = "LogNMEA"; - // // label33 // this.label33.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.label33.AutoSize = true; this.label33.BackColor = System.Drawing.Color.Transparent; this.label33.ForeColor = System.Drawing.Color.Black; - this.label33.Location = new System.Drawing.Point(276, 229); + this.label33.Location = new System.Drawing.Point(425, 111); this.label33.Name = "label33"; this.label33.Size = new System.Drawing.Size(60, 16); this.label33.TabIndex = 521; @@ -9201,7 +9264,7 @@ private void InitializeComponent() this.label28.AutoSize = true; this.label28.BackColor = System.Drawing.Color.Transparent; this.label28.ForeColor = System.Drawing.Color.Black; - this.label28.Location = new System.Drawing.Point(272, 348); + this.label28.Location = new System.Drawing.Point(425, 232); this.label28.Name = "label28"; this.label28.Size = new System.Drawing.Size(97, 16); this.label28.TabIndex = 518; @@ -9213,7 +9276,7 @@ private void InitializeComponent() this.chkSpeedo.AutoSize = true; this.chkSpeedo.BackColor = System.Drawing.Color.Transparent; this.chkSpeedo.ForeColor = System.Drawing.Color.Black; - this.chkSpeedo.Location = new System.Drawing.Point(93, 349); + this.chkSpeedo.Location = new System.Drawing.Point(232, 112); this.chkSpeedo.Name = "chkSpeedo"; this.chkSpeedo.Size = new System.Drawing.Size(50, 16); this.chkSpeedo.TabIndex = 516; @@ -9225,7 +9288,7 @@ private void InitializeComponent() this.chkExtraGuides.AutoSize = true; this.chkExtraGuides.BackColor = System.Drawing.Color.Transparent; this.chkExtraGuides.ForeColor = System.Drawing.Color.Black; - this.chkExtraGuides.Location = new System.Drawing.Point(94, 475); + this.chkExtraGuides.Location = new System.Drawing.Point(425, 350); this.chkExtraGuides.Name = "chkExtraGuides"; this.chkExtraGuides.Size = new System.Drawing.Size(65, 16); this.chkExtraGuides.TabIndex = 519; @@ -9237,7 +9300,7 @@ private void InitializeComponent() this.chkGrid.AutoSize = true; this.chkGrid.BackColor = System.Drawing.Color.Transparent; this.chkGrid.ForeColor = System.Drawing.Color.Black; - this.chkGrid.Location = new System.Drawing.Point(459, 106); + this.chkGrid.Location = new System.Drawing.Point(231, 354); this.chkGrid.Name = "chkGrid"; this.chkGrid.Size = new System.Drawing.Size(30, 16); this.chkGrid.TabIndex = 515; @@ -9255,7 +9318,7 @@ private void InitializeComponent() this.chkDisplayLogElevation.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkDisplayLogElevation.ForeColor = System.Drawing.SystemColors.ControlText; this.chkDisplayLogElevation.Image = global::AgOpenGPS.Properties.Resources.ConD_LogElevation; - this.chkDisplayLogElevation.Location = new System.Drawing.Point(680, 158); + this.chkDisplayLogElevation.Location = new System.Drawing.Point(708, 39); this.chkDisplayLogElevation.Name = "chkDisplayLogElevation"; this.chkDisplayLogElevation.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkDisplayLogElevation.Size = new System.Drawing.Size(100, 69); @@ -9275,7 +9338,7 @@ private void InitializeComponent() this.chkSvennArrow.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkSvennArrow.ForeColor = System.Drawing.SystemColors.ControlText; this.chkSvennArrow.Image = global::AgOpenGPS.Properties.Resources.SvennArrow; - this.chkSvennArrow.Location = new System.Drawing.Point(273, 34); + this.chkSvennArrow.Location = new System.Drawing.Point(231, 160); this.chkSvennArrow.Name = "chkSvennArrow"; this.chkSvennArrow.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkSvennArrow.Size = new System.Drawing.Size(100, 69); @@ -9296,7 +9359,7 @@ private void InitializeComponent() this.chkDisplayBrightness.ForeColor = System.Drawing.SystemColors.ControlText; this.chkDisplayBrightness.Image = global::AgOpenGPS.Properties.Resources.BrightnessUp; this.chkDisplayBrightness.ImageAlign = System.Drawing.ContentAlignment.TopCenter; - this.chkDisplayBrightness.Location = new System.Drawing.Point(90, 155); + this.chkDisplayBrightness.Location = new System.Drawing.Point(37, 160); this.chkDisplayBrightness.Name = "chkDisplayBrightness"; this.chkDisplayBrightness.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkDisplayBrightness.Size = new System.Drawing.Size(100, 69); @@ -9318,7 +9381,7 @@ private void InitializeComponent() this.chkDisplayFloor.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkDisplayFloor.ForeColor = System.Drawing.SystemColors.ControlText; this.chkDisplayFloor.Image = global::AgOpenGPS.Properties.Resources.ConD_FloorTexture; - this.chkDisplayFloor.Location = new System.Drawing.Point(456, 158); + this.chkDisplayFloor.Location = new System.Drawing.Point(37, 282); this.chkDisplayFloor.Name = "chkDisplayFloor"; this.chkDisplayFloor.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkDisplayFloor.Size = new System.Drawing.Size(100, 69); @@ -9338,7 +9401,7 @@ private void InitializeComponent() this.chkDisplayKeyboard.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkDisplayKeyboard.ForeColor = System.Drawing.SystemColors.ControlText; this.chkDisplayKeyboard.Image = global::AgOpenGPS.Properties.Resources.ConD_KeyBoard; - this.chkDisplayKeyboard.Location = new System.Drawing.Point(272, 158); + this.chkDisplayKeyboard.Location = new System.Drawing.Point(425, 39); this.chkDisplayKeyboard.Name = "chkDisplayKeyboard"; this.chkDisplayKeyboard.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkDisplayKeyboard.Size = new System.Drawing.Size(100, 69); @@ -9358,7 +9421,7 @@ private void InitializeComponent() this.chkDisplayPolygons.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkDisplayPolygons.ForeColor = System.Drawing.SystemColors.ControlText; this.chkDisplayPolygons.Image = global::AgOpenGPS.Properties.Resources.ConD_Poligons; - this.chkDisplayPolygons.Location = new System.Drawing.Point(90, 34); + this.chkDisplayPolygons.Location = new System.Drawing.Point(37, 39); this.chkDisplayPolygons.Name = "chkDisplayPolygons"; this.chkDisplayPolygons.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkDisplayPolygons.Size = new System.Drawing.Size(100, 69); @@ -9380,7 +9443,7 @@ private void InitializeComponent() this.chkDisplayStartFullScreen.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkDisplayStartFullScreen.ForeColor = System.Drawing.SystemColors.ControlText; this.chkDisplayStartFullScreen.Image = global::AgOpenGPS.Properties.Resources.ConD_FullScreenBegin; - this.chkDisplayStartFullScreen.Location = new System.Drawing.Point(269, 276); + this.chkDisplayStartFullScreen.Location = new System.Drawing.Point(425, 160); this.chkDisplayStartFullScreen.Name = "chkDisplayStartFullScreen"; this.chkDisplayStartFullScreen.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkDisplayStartFullScreen.Size = new System.Drawing.Size(100, 69); @@ -9388,26 +9451,6 @@ private void InitializeComponent() this.chkDisplayStartFullScreen.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.chkDisplayStartFullScreen.UseVisualStyleBackColor = false; // - // chkDisplayLogNMEA - // - this.chkDisplayLogNMEA.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.chkDisplayLogNMEA.Appearance = System.Windows.Forms.Appearance.Button; - this.chkDisplayLogNMEA.BackColor = System.Drawing.Color.WhiteSmoke; - this.chkDisplayLogNMEA.FlatAppearance.BorderColor = System.Drawing.Color.Black; - this.chkDisplayLogNMEA.FlatAppearance.BorderSize = 2; - this.chkDisplayLogNMEA.FlatAppearance.CheckedBackColor = System.Drawing.Color.LightGreen; - this.chkDisplayLogNMEA.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.chkDisplayLogNMEA.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.chkDisplayLogNMEA.ForeColor = System.Drawing.SystemColors.ControlText; - this.chkDisplayLogNMEA.Image = global::AgOpenGPS.Properties.Resources.ConD_LogNMEA; - this.chkDisplayLogNMEA.Location = new System.Drawing.Point(680, 34); - this.chkDisplayLogNMEA.Name = "chkDisplayLogNMEA"; - this.chkDisplayLogNMEA.RightToLeft = System.Windows.Forms.RightToLeft.Yes; - this.chkDisplayLogNMEA.Size = new System.Drawing.Size(100, 69); - this.chkDisplayLogNMEA.TabIndex = 508; - this.chkDisplayLogNMEA.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - this.chkDisplayLogNMEA.UseVisualStyleBackColor = false; - // // chkDisplayGrid // this.chkDisplayGrid.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -9422,7 +9465,7 @@ private void InitializeComponent() this.chkDisplayGrid.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkDisplayGrid.ForeColor = System.Drawing.SystemColors.ControlText; this.chkDisplayGrid.Image = global::AgOpenGPS.Properties.Resources.ConD_Grid; - this.chkDisplayGrid.Location = new System.Drawing.Point(456, 34); + this.chkDisplayGrid.Location = new System.Drawing.Point(231, 282); this.chkDisplayGrid.Name = "chkDisplayGrid"; this.chkDisplayGrid.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkDisplayGrid.Size = new System.Drawing.Size(100, 69); @@ -9442,7 +9485,7 @@ private void InitializeComponent() this.chkDisplaySpeedo.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkDisplaySpeedo.ForeColor = System.Drawing.SystemColors.ControlText; this.chkDisplaySpeedo.Image = global::AgOpenGPS.Properties.Resources.ConD_Speedometer; - this.chkDisplaySpeedo.Location = new System.Drawing.Point(90, 276); + this.chkDisplaySpeedo.Location = new System.Drawing.Point(231, 39); this.chkDisplaySpeedo.Name = "chkDisplaySpeedo"; this.chkDisplaySpeedo.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkDisplaySpeedo.Size = new System.Drawing.Size(100, 69); @@ -9462,7 +9505,7 @@ private void InitializeComponent() this.chkDisplayExtraGuides.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkDisplayExtraGuides.ForeColor = System.Drawing.SystemColors.ControlText; this.chkDisplayExtraGuides.Image = global::AgOpenGPS.Properties.Resources.ConD_ExtraGuides; - this.chkDisplayExtraGuides.Location = new System.Drawing.Point(90, 403); + this.chkDisplayExtraGuides.Location = new System.Drawing.Point(425, 278); this.chkDisplayExtraGuides.Name = "chkDisplayExtraGuides"; this.chkDisplayExtraGuides.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkDisplayExtraGuides.Size = new System.Drawing.Size(100, 69); @@ -9470,6 +9513,36 @@ private void InitializeComponent() this.chkDisplayExtraGuides.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.chkDisplayExtraGuides.UseVisualStyleBackColor = false; // + // nudNumGuideLines + // + this.nudNumGuideLines.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.nudNumGuideLines.BackColor = System.Drawing.Color.AliceBlue; + this.nudNumGuideLines.Cursor = System.Windows.Forms.Cursors.IBeam; + this.nudNumGuideLines.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudNumGuideLines.InterceptArrowKeys = false; + this.nudNumGuideLines.Location = new System.Drawing.Point(531, 285); + this.nudNumGuideLines.Maximum = new decimal(new int[] { + 5000, + 0, + 0, + 0}); + this.nudNumGuideLines.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.nudNumGuideLines.Name = "nudNumGuideLines"; + this.nudNumGuideLines.ReadOnly = true; + this.nudNumGuideLines.Size = new System.Drawing.Size(100, 52); + this.nudNumGuideLines.TabIndex = 534; + this.nudNumGuideLines.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.nudNumGuideLines.Value = new decimal(new int[] { + 50, + 0, + 0, + 0}); + this.nudNumGuideLines.Click += new System.EventHandler(this.nudNumGuideLines_Click); + // // lblCurrentVehicle // this.lblCurrentVehicle.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); @@ -9478,7 +9551,7 @@ private void InitializeComponent() this.lblCurrentVehicle.Font = new System.Drawing.Font("Tahoma", 14.25F); this.lblCurrentVehicle.ForeColor = System.Drawing.Color.Black; this.lblCurrentVehicle.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblCurrentVehicle.Location = new System.Drawing.Point(15, 4); + this.lblCurrentVehicle.Location = new System.Drawing.Point(21, 4); this.lblCurrentVehicle.Name = "lblCurrentVehicle"; this.lblCurrentVehicle.Size = new System.Drawing.Size(138, 23); this.lblCurrentVehicle.TabIndex = 450; @@ -9561,7 +9634,7 @@ private void InitializeComponent() this.panelBottom.ForeColor = System.Drawing.Color.Lime; this.panelBottom.Location = new System.Drawing.Point(124, 645); this.panelBottom.Name = "panelBottom"; - this.panelBottom.Size = new System.Drawing.Size(859, 66); + this.panelBottom.Size = new System.Drawing.Size(865, 66); this.panelBottom.TabIndex = 112; // // lblFeetMeters @@ -9585,7 +9658,7 @@ private void InitializeComponent() this.btnOK.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnOK.ForeColor = System.Drawing.SystemColors.ButtonFace; this.btnOK.Image = global::AgOpenGPS.Properties.Resources.OK64; - this.btnOK.Location = new System.Drawing.Point(774, 1); + this.btnOK.Location = new System.Drawing.Point(780, 1); this.btnOK.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3); this.btnOK.Name = "btnOK"; this.btnOK.Size = new System.Drawing.Size(80, 62); @@ -9618,7 +9691,7 @@ private void InitializeComponent() this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; - this.ClientSize = new System.Drawing.Size(987, 715); + this.ClientSize = new System.Drawing.Size(993, 715); this.ControlBox = false; this.Controls.Add(this.tab1); this.Controls.Add(this.panelBottom); @@ -9631,7 +9704,6 @@ private void InitializeComponent() this.MinimizeBox = false; this.Name = "FormConfig"; this.Padding = new System.Windows.Forms.Padding(4); - this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Configuration"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormConfig_FormClosing); @@ -9697,6 +9769,7 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudZone5To)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudZone3To)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudZone2To)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox11)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudCutoffSpeed)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudDefaultSectionWidth)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudMinCoverage)).EndInit(); @@ -9717,20 +9790,18 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudSection02)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudSection01)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudNumberOfSections)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox11)).EndInit(); this.tabTSwitches.ResumeLayout(false); this.grpControls.ResumeLayout(false); this.grpSwitch.ResumeLayout(false); this.tabTSettings.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.nudLookAheadOff)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudTurnOffDelay)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudLookAhead)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox18)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudLookAheadOff)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudTurnOffDelay)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudLookAhead)).EndInit(); this.tabDHeading.ResumeLayout(false); this.tabDHeading.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudFixJumpDistance)).EndInit(); this.gboxDual.ResumeLayout(false); this.gboxDual.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.nudDualReverseDistance)).EndInit(); @@ -9739,6 +9810,7 @@ private void InitializeComponent() this.gboxSingle.ResumeLayout(false); this.gboxSingle.PerformLayout(); this.headingGroupBox.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.nudFixJumpDistance)).EndInit(); this.tabDRoll.ResumeLayout(false); this.tabDRoll.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox9)).EndInit(); @@ -9757,21 +9829,21 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudLowerTime)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox7)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudRaiseTime)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pboxSendMachine)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudUser4)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudUser3)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudUser2)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudUser1)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pboxSendMachine)).EndInit(); this.tabTram.ResumeLayout(false); this.tabTram.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudTramWidth)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox8)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudTramWidth)).EndInit(); this.tabBtns.ResumeLayout(false); this.tabBtns.PerformLayout(); this.tabDisplay.ResumeLayout(false); this.tabDisplay.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudNumGuideLines)).EndInit(); this.unitsGroupBox.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.nudNumGuideLines)).EndInit(); this.panelBottom.ResumeLayout(false); this.panelBottom.PerformLayout(); this.ResumeLayout(false); @@ -10174,7 +10246,6 @@ private void InitializeComponent() private System.Windows.Forms.Label label101; private System.Windows.Forms.CheckBox chkDisplayFloor; private System.Windows.Forms.Label label43; - private System.Windows.Forms.Label label36; private System.Windows.Forms.Label label33; private System.Windows.Forms.Label label28; private System.Windows.Forms.Label chkSpeedo; @@ -10184,7 +10255,6 @@ private void InitializeComponent() private System.Windows.Forms.CheckBox chkDisplayKeyboard; private System.Windows.Forms.CheckBox chkDisplayPolygons; private System.Windows.Forms.CheckBox chkDisplayStartFullScreen; - private System.Windows.Forms.CheckBox chkDisplayLogNMEA; private System.Windows.Forms.CheckBox chkDisplayGrid; private System.Windows.Forms.CheckBox chkDisplaySpeedo; private System.Windows.Forms.CheckBox chkDisplayExtraGuides; @@ -10287,7 +10357,13 @@ private void InitializeComponent() private System.Windows.Forms.Label label156; private System.Windows.Forms.Label label31; private System.Windows.Forms.CheckBox chkDirectionMarkers; - private System.Windows.Forms.Label label159; private NudlessNumericUpDown nudNumGuideLines; + private System.Windows.Forms.Label label160; + private System.Windows.Forms.CheckBox chkSectionLines; + private System.Windows.Forms.Label label161; + private System.Windows.Forms.CheckBox chkLineSmooth; + private System.Windows.Forms.Button btnVehicleNewSave; + private System.Windows.Forms.TextBox tboxCreateNewVehicle; + private System.Windows.Forms.Label label162; } } \ No newline at end of file diff --git a/SourceCode/GPS/Forms/Settings/FormConfig.cs b/SourceCode/GPS/Forms/Settings/FormConfig.cs index fd9c9c156..cd719c6c3 100644 --- a/SourceCode/GPS/Forms/Settings/FormConfig.cs +++ b/SourceCode/GPS/Forms/Settings/FormConfig.cs @@ -1,8 +1,10 @@ //Please, if you use this, share the improvements using AgOpenGPS.Culture; +using Microsoft.Win32; using System; using System.Drawing; +using System.IO; using System.Windows.Forms; namespace AgOpenGPS @@ -113,8 +115,8 @@ private void FormConfig_Load(object sender, EventArgs e) tboxVehicleNameSave.Focus(); label29.Text = gStr.gsSaveAs; + label162.Text = gStr.gsNew; UpdateSummary(); - //label3.Text = gStr.gsCurrent; if (!mf.IsOnScreen(Location, Size, 1)) { @@ -135,7 +137,7 @@ private void FormConfig_FormClosing(object sender, FormClosingEventArgs e) mf.LoadSettings(); //save current vehicle - SettingsIO.ExportAll(mf.vehiclesDirectory + mf.vehicleFileName + ".XML"); + RegistrySettings.Save(); } private void FixMinMaxSpinners() @@ -225,7 +227,7 @@ private void btnOK_Click(object sender, EventArgs e) private void tabSummary_Enter(object sender, EventArgs e) { SectionFeetInchesTotalWidthLabelUpdate(); - lblSummaryVehicleName.Text = Properties.Settings.Default.setVehicle_vehicleName; + lblSummaryVehicleName.Text = RegistrySettings.vehicleFileName; UpdateSummary(); } @@ -258,11 +260,12 @@ private void tabDisplay_Enter(object sender, EventArgs e) chkDisplayStartFullScreen.Checked = Properties.Settings.Default.setDisplay_isStartFullScreen; chkSvennArrow.Checked = mf.isSvennArrowOn; chkDisplayExtraGuides.Checked = mf.isSideGuideLines; - chkDisplayLogNMEA.Checked = mf.isLogNMEA; chkDisplayPolygons.Checked = mf.isDrawPolygons; chkDisplayKeyboard.Checked = mf.isKeyboardOn; chkDisplayLogElevation.Checked = mf.isLogElevation; chkDirectionMarkers.Checked = Properties.Settings.Default.setTool_isDirectionMarkers; + chkSectionLines.Checked = Properties.Settings.Default.setDisplay_isSectionLinesOn; + chkLineSmooth.Checked = Properties.Settings.Default.setDisplay_isLineSmooth; if (mf.isMetric) rbtnDisplayMetric.Checked = true; else rbtnDisplayImperial.Checked = true; @@ -278,7 +281,7 @@ private void tabDisplay_Leave(object sender, EventArgs e) private void rbtnDisplayImperial_Click(object sender, EventArgs e) { mf.TimedMessageBox(2000, "Units Set", "Imperial"); - mf.SystemEventWriter("Units To Imperial"); + Log.EventWriter("Units To Imperial"); mf.isMetric = false; Properties.Settings.Default.setMenu_isMetric = mf.isMetric; @@ -290,7 +293,7 @@ private void rbtnDisplayImperial_Click(object sender, EventArgs e) private void rbtnDisplayMetric_Click(object sender, EventArgs e) { mf.TimedMessageBox(2000, "Units Set", "Metric"); - mf.SystemEventWriter("Units to Metric"); + Log.EventWriter("Units to Metric"); mf.isMetric = true; Properties.Settings.Default.setMenu_isMetric = mf.isMetric; diff --git a/SourceCode/GPS/Forms/Settings/FormSteer.Designer.cs b/SourceCode/GPS/Forms/Settings/FormSteer.Designer.cs index 3c4994510..353611553 100644 --- a/SourceCode/GPS/Forms/Settings/FormSteer.Designer.cs +++ b/SourceCode/GPS/Forms/Settings/FormSteer.Designer.cs @@ -47,7 +47,9 @@ private void InitializeComponent() this.pbarSensor = new System.Windows.Forms.ProgressBar(); this.lblPercentFS = new System.Windows.Forms.Label(); this.tabControl1 = new System.Windows.Forms.TabControl(); - this.tabInt = new System.Windows.Forms.TabPage(); + this.tabPP = new System.Windows.Forms.TabPage(); + this.label71 = new System.Windows.Forms.Label(); + this.label69 = new System.Windows.Forms.Label(); this.label21 = new System.Windows.Forms.Label(); this.label56 = new System.Windows.Forms.Label(); this.label53 = new System.Windows.Forms.Label(); @@ -61,6 +63,9 @@ private void InitializeComponent() this.label20 = new System.Windows.Forms.Label(); this.label18 = new System.Windows.Forms.Label(); this.tabStan = new System.Windows.Forms.TabPage(); + this.label74 = new System.Windows.Forms.Label(); + this.label73 = new System.Windows.Forms.Label(); + this.label72 = new System.Windows.Forms.Label(); this.lblIntegralPercent = new System.Windows.Forms.Label(); this.hsbarIntegral = new System.Windows.Forms.HScrollBar(); this.label27 = new System.Windows.Forms.Label(); @@ -72,6 +77,9 @@ private void InitializeComponent() this.hsbarStanleyGain = new System.Windows.Forms.HScrollBar(); this.hsbarHeadingErrorGain = new System.Windows.Forms.HScrollBar(); this.tabGain = new System.Windows.Forms.TabPage(); + this.label75 = new System.Windows.Forms.Label(); + this.label76 = new System.Windows.Forms.Label(); + this.label77 = new System.Windows.Forms.Label(); this.label6 = new System.Windows.Forms.Label(); this.label15 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label(); @@ -83,6 +91,9 @@ private void InitializeComponent() this.lblMinPWM = new System.Windows.Forms.Label(); this.hsbarHighSteerPWM = new System.Windows.Forms.HScrollBar(); this.tabSteer = new System.Windows.Forms.TabPage(); + this.label80 = new System.Windows.Forms.Label(); + this.label79 = new System.Windows.Forms.Label(); + this.label78 = new System.Windows.Forms.Label(); this.label23 = new System.Windows.Forms.Label(); this.lblAV_Set = new System.Windows.Forms.Label(); this.lblAV_Act = new System.Windows.Forms.Label(); @@ -103,10 +114,31 @@ private void InitializeComponent() this.lblCountsPerDegree = new System.Windows.Forms.Label(); this.hsbarWasOffset = new System.Windows.Forms.HScrollBar(); this.lblSteerAngleSensorZero = new System.Windows.Forms.Label(); - this.imageList1 = new System.Windows.Forms.ImageList(this.components); - this.label19 = new System.Windows.Forms.Label(); + this.label81 = new System.Windows.Forms.Label(); + this.tabPPAdv = new System.Windows.Forms.TabPage(); + this.label82 = new System.Windows.Forms.Label(); + this.label67 = new System.Windows.Forms.Label(); + this.label66 = new System.Windows.Forms.Label(); + this.label65 = new System.Windows.Forms.Label(); + this.label59 = new System.Windows.Forms.Label(); + this.lblDistanceAdv = new System.Windows.Forms.Label(); this.hsbarLookAheadMult = new System.Windows.Forms.HScrollBar(); + this.label60 = new System.Windows.Forms.Label(); this.lblLookAheadMult = new System.Windows.Forms.Label(); + this.lblHoldAdv = new System.Windows.Forms.Label(); + this.label19 = new System.Windows.Forms.Label(); + this.lblAcqAdv = new System.Windows.Forms.Label(); + this.label51 = new System.Windows.Forms.Label(); + this.hsbarAcquireFactor = new System.Windows.Forms.HScrollBar(); + this.label57 = new System.Windows.Forms.Label(); + this.lblAcquireFactor = new System.Windows.Forms.Label(); + this.label58 = new System.Windows.Forms.Label(); + this.label47 = new System.Windows.Forms.Label(); + this.nudDeadZoneDelay = new AgOpenGPS.NudlessNumericUpDown(); + this.nudDeadZoneHeading = new AgOpenGPS.NudlessNumericUpDown(); + this.label54 = new System.Windows.Forms.Label(); + this.label49 = new System.Windows.Forms.Label(); + this.imageList1 = new System.Windows.Forms.ImageList(this.components); this.lblSideHillComp = new System.Windows.Forms.Label(); this.hsbarSideHillComp = new System.Windows.Forms.HScrollBar(); this.label22 = new System.Windows.Forms.Label(); @@ -136,8 +168,6 @@ private void InitializeComponent() this.btnSteerAngleDown = new ProXoft.WinForms.RepeatButton(); this.hsbarSensor = new System.Windows.Forms.HScrollBar(); this.lblhsbarSensor = new System.Windows.Forms.Label(); - this.label16 = new System.Windows.Forms.Label(); - this.label31 = new System.Windows.Forms.Label(); this.label37 = new System.Windows.Forms.Label(); this.cboxXY = new System.Windows.Forms.ComboBox(); this.label33 = new System.Windows.Forms.Label(); @@ -162,64 +192,59 @@ private void InitializeComponent() this.label40 = new System.Windows.Forms.Label(); this.cboxSteerInReverse = new System.Windows.Forms.CheckBox(); this.btnStanleyPure = new System.Windows.Forms.Button(); - this.nudPanicStopSpeed = new AgOpenGPS.NudlessNumericUpDown(); this.tabAlarm = new System.Windows.Forms.TabPage(); - this.label110 = new System.Windows.Forms.Label(); - this.label44 = new System.Windows.Forms.Label(); - this.label109 = new System.Windows.Forms.Label(); - this.label43 = new System.Windows.Forms.Label(); - this.label107 = new System.Windows.Forms.Label(); - this.label108 = new System.Windows.Forms.Label(); this.label165 = new System.Windows.Forms.Label(); this.label166 = new System.Windows.Forms.Label(); this.label42 = new System.Windows.Forms.Label(); this.label163 = new System.Windows.Forms.Label(); this.label160 = new System.Windows.Forms.Label(); this.label161 = new System.Windows.Forms.Label(); - this.label159 = new System.Windows.Forms.Label(); - this.label162 = new System.Windows.Forms.Label(); - this.pictureBox5 = new System.Windows.Forms.PictureBox(); - this.pictureBox2 = new System.Windows.Forms.PictureBox(); - this.pictureBox12 = new System.Windows.Forms.PictureBox(); this.pictureBox17 = new System.Windows.Forms.PictureBox(); this.pictureBox16 = new System.Windows.Forms.PictureBox(); - this.pictureBox15 = new System.Windows.Forms.PictureBox(); this.pictureBox10 = new System.Windows.Forms.PictureBox(); - this.nudLineWidth = new AgOpenGPS.NudlessNumericUpDown(); - this.nudSnapDistance = new AgOpenGPS.NudlessNumericUpDown(); - this.nudGuidanceLookAhead = new AgOpenGPS.NudlessNumericUpDown(); this.nudMinSteerSpeed = new AgOpenGPS.NudlessNumericUpDown(); this.nudMaxSteerSpeed = new AgOpenGPS.NudlessNumericUpDown(); - this.nudMaxAngularVelocity = new AgOpenGPS.NudlessNumericUpDown(); this.nudGuidanceSpeedLimit = new AgOpenGPS.NudlessNumericUpDown(); this.tabOnTheLine = new System.Windows.Forms.TabPage(); - this.label54 = new System.Windows.Forms.Label(); - this.nudDeadZoneDelay = new AgOpenGPS.NudlessNumericUpDown(); + this.label110 = new System.Windows.Forms.Label(); + this.label44 = new System.Windows.Forms.Label(); this.label52 = new System.Windows.Forms.Label(); - this.label49 = new System.Windows.Forms.Label(); + this.label109 = new System.Windows.Forms.Label(); this.chkDisplayLightbar = new System.Windows.Forms.CheckBox(); + this.label43 = new System.Windows.Forms.Label(); this.groupBox6 = new System.Windows.Forms.GroupBox(); this.rbtnSteerBar = new System.Windows.Forms.RadioButton(); this.label48 = new System.Windows.Forms.Label(); this.rbtnLightBar = new System.Windows.Forms.RadioButton(); this.label50 = new System.Windows.Forms.Label(); this.label45 = new System.Windows.Forms.Label(); + this.label107 = new System.Windows.Forms.Label(); this.label46 = new System.Windows.Forms.Label(); this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.label108 = new System.Windows.Forms.Label(); + this.pictureBox2 = new System.Windows.Forms.PictureBox(); + this.pictureBox12 = new System.Windows.Forms.PictureBox(); + this.pictureBox5 = new System.Windows.Forms.PictureBox(); this.nudcmPerPixel = new AgOpenGPS.NudlessNumericUpDown(); - this.nudDeadZoneHeading = new AgOpenGPS.NudlessNumericUpDown(); + this.nudLineWidth = new AgOpenGPS.NudlessNumericUpDown(); + this.nudSnapDistance = new AgOpenGPS.NudlessNumericUpDown(); + this.nudGuidanceLookAhead = new AgOpenGPS.NudlessNumericUpDown(); this.imageList2 = new System.Windows.Forms.ImageList(this.components); this.label35 = new System.Windows.Forms.Label(); this.btnSteerWizard = new System.Windows.Forms.Button(); this.button2 = new System.Windows.Forms.Button(); this.pboxSendSteer = new System.Windows.Forms.PictureBox(); this.btnSendSteerConfigPGN = new System.Windows.Forms.Button(); - this.label51 = new System.Windows.Forms.Label(); + this.lblAcquirePP = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); this.tabControl1.SuspendLayout(); - this.tabInt.SuspendLayout(); + this.tabPP.SuspendLayout(); this.tabStan.SuspendLayout(); this.tabGain.SuspendLayout(); this.tabSteer.SuspendLayout(); + this.tabPPAdv.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudDeadZoneDelay)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudDeadZoneHeading)).BeginInit(); this.panel2.SuspendLayout(); this.panel1.SuspendLayout(); this.tabSteerSettings.SuspendLayout(); @@ -227,28 +252,23 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudMaxCounts)).BeginInit(); this.tabConfig.SuspendLayout(); this.tabSettings.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudPanicStopSpeed)).BeginInit(); this.tabAlarm.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox12)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox17)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox16)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox15)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox10)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudLineWidth)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudSnapDistance)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudGuidanceLookAhead)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudMinSteerSpeed)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudMaxSteerSpeed)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudMaxAngularVelocity)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudGuidanceSpeedLimit)).BeginInit(); this.tabOnTheLine.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudDeadZoneDelay)).BeginInit(); this.groupBox6.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox12)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudcmPerPixel)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudDeadZoneHeading)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudLineWidth)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudSnapDistance)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudGuidanceLookAhead)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pboxSendSteer)).BeginInit(); this.SuspendLayout(); // @@ -264,7 +284,7 @@ private void InitializeComponent() this.lblSteerAngle.BackColor = System.Drawing.Color.Transparent; this.lblSteerAngle.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblSteerAngle.ForeColor = System.Drawing.Color.Black; - this.lblSteerAngle.Location = new System.Drawing.Point(32, 18); + this.lblSteerAngle.Location = new System.Drawing.Point(32, 8); this.lblSteerAngle.Name = "lblSteerAngle"; this.lblSteerAngle.Size = new System.Drawing.Size(71, 23); this.lblSteerAngle.TabIndex = 306; @@ -278,7 +298,7 @@ private void InitializeComponent() this.lblSteerAngleActual.BackColor = System.Drawing.Color.Transparent; this.lblSteerAngleActual.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblSteerAngleActual.ForeColor = System.Drawing.Color.Black; - this.lblSteerAngleActual.Location = new System.Drawing.Point(139, 18); + this.lblSteerAngleActual.Location = new System.Drawing.Point(131, 8); this.lblSteerAngleActual.Name = "lblSteerAngleActual"; this.lblSteerAngleActual.Size = new System.Drawing.Size(71, 23); this.lblSteerAngleActual.TabIndex = 311; @@ -292,7 +312,7 @@ private void InitializeComponent() this.lblError.BackColor = System.Drawing.Color.Transparent; this.lblError.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblError.ForeColor = System.Drawing.Color.Black; - this.lblError.Location = new System.Drawing.Point(237, 18); + this.lblError.Location = new System.Drawing.Point(225, 8); this.lblError.Name = "lblError"; this.lblError.Size = new System.Drawing.Size(71, 23); this.lblError.TabIndex = 312; @@ -306,7 +326,7 @@ private void InitializeComponent() this.lblPWMDisplay.BackColor = System.Drawing.Color.Transparent; this.lblPWMDisplay.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblPWMDisplay.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.lblPWMDisplay.Location = new System.Drawing.Point(78, 68); + this.lblPWMDisplay.Location = new System.Drawing.Point(78, 76); this.lblPWMDisplay.Name = "lblPWMDisplay"; this.lblPWMDisplay.Size = new System.Drawing.Size(64, 23); this.lblPWMDisplay.TabIndex = 316; @@ -319,7 +339,7 @@ private void InitializeComponent() this.label9.BackColor = System.Drawing.Color.Transparent; this.label9.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label9.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label9.Location = new System.Drawing.Point(17, 68); + this.label9.Location = new System.Drawing.Point(17, 76); this.label9.Name = "label9"; this.label9.Size = new System.Drawing.Size(64, 23); this.label9.TabIndex = 318; @@ -333,7 +353,7 @@ private void InitializeComponent() this.label11.BackColor = System.Drawing.Color.Transparent; this.label11.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label11.ForeColor = System.Drawing.Color.Black; - this.label11.Location = new System.Drawing.Point(109, 21); + this.label11.Location = new System.Drawing.Point(101, 11); this.label11.Name = "label11"; this.label11.Size = new System.Drawing.Size(30, 16); this.label11.TabIndex = 319; @@ -348,7 +368,7 @@ private void InitializeComponent() this.label12.BackColor = System.Drawing.Color.Transparent; this.label12.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label12.ForeColor = System.Drawing.Color.Black; - this.label12.Location = new System.Drawing.Point(4, 21); + this.label12.Location = new System.Drawing.Point(4, 11); this.label12.Name = "label12"; this.label12.Size = new System.Drawing.Size(31, 16); this.label12.TabIndex = 320; @@ -363,7 +383,7 @@ private void InitializeComponent() this.label13.BackColor = System.Drawing.Color.Transparent; this.label13.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label13.ForeColor = System.Drawing.Color.Black; - this.label13.Location = new System.Drawing.Point(210, 21); + this.label13.Location = new System.Drawing.Point(198, 11); this.label13.Name = "label13"; this.label13.Size = new System.Drawing.Size(29, 16); this.label13.TabIndex = 321; @@ -378,7 +398,7 @@ private void InitializeComponent() this.label14.BackColor = System.Drawing.Color.Transparent; this.label14.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label14.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label14.Location = new System.Drawing.Point(289, 69); + this.label14.Location = new System.Drawing.Point(289, 77); this.label14.Name = "label14"; this.label14.Size = new System.Drawing.Size(45, 16); this.label14.TabIndex = 322; @@ -392,7 +412,7 @@ private void InitializeComponent() this.label8.BackColor = System.Drawing.Color.Transparent; this.label8.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label8.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label8.Location = new System.Drawing.Point(113, 133); + this.label8.Location = new System.Drawing.Point(113, 113); this.label8.Name = "label8"; this.label8.Size = new System.Drawing.Size(114, 23); this.label8.TabIndex = 328; @@ -406,7 +426,7 @@ private void InitializeComponent() this.label1.BackColor = System.Drawing.Color.Transparent; this.label1.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label1.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label1.Location = new System.Drawing.Point(133, 168); + this.label1.Location = new System.Drawing.Point(133, 148); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(93, 23); this.label1.TabIndex = 327; @@ -420,7 +440,7 @@ private void InitializeComponent() this.lblCalcSteerAngleInner.BackColor = System.Drawing.Color.Transparent; this.lblCalcSteerAngleInner.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblCalcSteerAngleInner.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.lblCalcSteerAngleInner.Location = new System.Drawing.Point(230, 133); + this.lblCalcSteerAngleInner.Location = new System.Drawing.Point(230, 113); this.lblCalcSteerAngleInner.Name = "lblCalcSteerAngleInner"; this.lblCalcSteerAngleInner.Size = new System.Drawing.Size(40, 23); this.lblCalcSteerAngleInner.TabIndex = 326; @@ -434,7 +454,7 @@ private void InitializeComponent() this.lblDiameter.BackColor = System.Drawing.Color.Transparent; this.lblDiameter.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblDiameter.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.lblDiameter.Location = new System.Drawing.Point(227, 168); + this.lblDiameter.Location = new System.Drawing.Point(227, 148); this.lblDiameter.Name = "lblDiameter"; this.lblDiameter.Size = new System.Drawing.Size(64, 23); this.lblDiameter.TabIndex = 325; @@ -444,10 +464,10 @@ private void InitializeComponent() // pbarSensor // this.pbarSensor.BackColor = System.Drawing.Color.White; - this.pbarSensor.Location = new System.Drawing.Point(150, 174); + this.pbarSensor.Location = new System.Drawing.Point(114, 208); this.pbarSensor.Maximum = 255; this.pbarSensor.Name = "pbarSensor"; - this.pbarSensor.Size = new System.Drawing.Size(339, 53); + this.pbarSensor.Size = new System.Drawing.Size(302, 53); this.pbarSensor.Style = System.Windows.Forms.ProgressBarStyle.Continuous; this.pbarSensor.TabIndex = 496; // @@ -458,7 +478,7 @@ private void InitializeComponent() this.lblPercentFS.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblPercentFS.ForeColor = System.Drawing.Color.Black; this.lblPercentFS.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblPercentFS.Location = new System.Drawing.Point(495, 185); + this.lblPercentFS.Location = new System.Drawing.Point(422, 219); this.lblPercentFS.Name = "lblPercentFS"; this.lblPercentFS.Size = new System.Drawing.Size(57, 29); this.lblPercentFS.TabIndex = 495; @@ -468,51 +488,84 @@ private void InitializeComponent() // tabControl1 // this.tabControl1.Appearance = System.Windows.Forms.TabAppearance.Buttons; - this.tabControl1.Controls.Add(this.tabInt); + this.tabControl1.Controls.Add(this.tabPP); this.tabControl1.Controls.Add(this.tabStan); this.tabControl1.Controls.Add(this.tabGain); this.tabControl1.Controls.Add(this.tabSteer); + this.tabControl1.Controls.Add(this.tabPPAdv); this.tabControl1.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.tabControl1.ImageList = this.imageList1; - this.tabControl1.ItemSize = new System.Drawing.Size(105, 48); - this.tabControl1.Location = new System.Drawing.Point(3, 5); + this.tabControl1.ItemSize = new System.Drawing.Size(65, 48); + this.tabControl1.Location = new System.Drawing.Point(2, 5); this.tabControl1.Margin = new System.Windows.Forms.Padding(4); this.tabControl1.Multiline = true; this.tabControl1.Name = "tabControl1"; this.tabControl1.SelectedIndex = 0; - this.tabControl1.Size = new System.Drawing.Size(368, 402); + this.tabControl1.Size = new System.Drawing.Size(373, 402); this.tabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; this.tabControl1.TabIndex = 347; // - // tabInt - // - this.tabInt.BackColor = System.Drawing.Color.Gainsboro; - this.tabInt.BackgroundImage = global::AgOpenGPS.Properties.Resources.Sf_PP; - this.tabInt.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.tabInt.Controls.Add(this.label21); - this.tabInt.Controls.Add(this.label56); - this.tabInt.Controls.Add(this.label53); - this.tabInt.Controls.Add(this.label32); - this.tabInt.Controls.Add(this.lblHoldLookAhead); - this.tabInt.Controls.Add(this.hsbarHoldLookAhead); - this.tabInt.Controls.Add(this.lblPureIntegral); - this.tabInt.Controls.Add(this.hsbarIntegralPurePursuit); - this.tabInt.Controls.Add(this.label26); - this.tabInt.Controls.Add(this.label24); - this.tabInt.Controls.Add(this.label20); - this.tabInt.Controls.Add(this.label18); - this.tabInt.ForeColor = System.Drawing.Color.Black; - this.tabInt.ImageIndex = 3; - this.tabInt.Location = new System.Drawing.Point(4, 103); - this.tabInt.Name = "tabInt"; - this.tabInt.Size = new System.Drawing.Size(360, 295); - this.tabInt.TabIndex = 16; + // tabPP + // + this.tabPP.BackColor = System.Drawing.Color.Gainsboro; + this.tabPP.BackgroundImage = global::AgOpenGPS.Properties.Resources.Sf_PP; + this.tabPP.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.tabPP.Controls.Add(this.label16); + this.tabPP.Controls.Add(this.label71); + this.tabPP.Controls.Add(this.label69); + this.tabPP.Controls.Add(this.label21); + this.tabPP.Controls.Add(this.label56); + this.tabPP.Controls.Add(this.label53); + this.tabPP.Controls.Add(this.label32); + this.tabPP.Controls.Add(this.lblHoldLookAhead); + this.tabPP.Controls.Add(this.hsbarHoldLookAhead); + this.tabPP.Controls.Add(this.hsbarIntegralPurePursuit); + this.tabPP.Controls.Add(this.label26); + this.tabPP.Controls.Add(this.label24); + this.tabPP.Controls.Add(this.label20); + this.tabPP.Controls.Add(this.label18); + this.tabPP.Controls.Add(this.lblAcquirePP); + this.tabPP.Controls.Add(this.lblPureIntegral); + this.tabPP.ForeColor = System.Drawing.Color.Black; + this.tabPP.ImageIndex = 3; + this.tabPP.Location = new System.Drawing.Point(4, 52); + this.tabPP.Name = "tabPP"; + this.tabPP.Size = new System.Drawing.Size(365, 346); + this.tabPP.TabIndex = 16; + // + // label71 + // + this.label71.AutoSize = true; + this.label71.BackColor = System.Drawing.Color.Transparent; + this.label71.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label71.ForeColor = System.Drawing.Color.Black; + this.label71.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label71.Location = new System.Drawing.Point(69, 274); + this.label71.Name = "label71"; + this.label71.Size = new System.Drawing.Size(14, 16); + this.label71.TabIndex = 547; + this.label71.Text = "0"; + this.label71.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // label69 + // + this.label69.AutoSize = true; + this.label69.BackColor = System.Drawing.Color.Transparent; + this.label69.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label69.ForeColor = System.Drawing.Color.Black; + this.label69.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label69.Location = new System.Drawing.Point(51, 121); + this.label69.Name = "label69"; + this.label69.Size = new System.Drawing.Size(25, 16); + this.label69.TabIndex = 546; + this.label69.Text = "3.0"; + this.label69.TextAlign = System.Drawing.ContentAlignment.BottomCenter; // // label21 // this.label21.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label21.ForeColor = System.Drawing.Color.Black; - this.label21.Location = new System.Drawing.Point(55, 275); + this.label21.Location = new System.Drawing.Point(55, 285); this.label21.Name = "label21"; this.label21.Size = new System.Drawing.Size(238, 46); this.label21.TabIndex = 361; @@ -524,7 +577,7 @@ private void InitializeComponent() this.label56.AutoSize = true; this.label56.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label56.ForeColor = System.Drawing.Color.Black; - this.label56.Location = new System.Drawing.Point(294, 64); + this.label56.Location = new System.Drawing.Point(279, 64); this.label56.Name = "label56"; this.label56.Size = new System.Drawing.Size(43, 19); this.label56.TabIndex = 360; @@ -536,7 +589,7 @@ private void InitializeComponent() this.label53.AutoSize = true; this.label53.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label53.ForeColor = System.Drawing.Color.Black; - this.label53.Location = new System.Drawing.Point(60, 64); + this.label53.Location = new System.Drawing.Point(45, 64); this.label53.Name = "label53"; this.label53.Size = new System.Drawing.Size(37, 19); this.label53.TabIndex = 358; @@ -547,7 +600,7 @@ private void InitializeComponent() // this.label32.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label32.ForeColor = System.Drawing.Color.Black; - this.label32.Location = new System.Drawing.Point(129, 60); + this.label32.Location = new System.Drawing.Point(114, 60); this.label32.Name = "label32"; this.label32.Size = new System.Drawing.Size(142, 23); this.label32.TabIndex = 356; @@ -558,17 +611,17 @@ private void InitializeComponent() // this.lblHoldLookAhead.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblHoldLookAhead.ForeColor = System.Drawing.Color.Black; - this.lblHoldLookAhead.Location = new System.Drawing.Point(5, 83); + this.lblHoldLookAhead.Location = new System.Drawing.Point(3, 83); this.lblHoldLookAhead.Name = "lblHoldLookAhead"; - this.lblHoldLookAhead.Size = new System.Drawing.Size(60, 35); + this.lblHoldLookAhead.Size = new System.Drawing.Size(47, 35); this.lblHoldLookAhead.TabIndex = 355; - this.lblHoldLookAhead.Text = "888"; + this.lblHoldLookAhead.Text = "5.2"; this.lblHoldLookAhead.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // hsbarHoldLookAhead // this.hsbarHoldLookAhead.LargeChange = 1; - this.hsbarHoldLookAhead.Location = new System.Drawing.Point(68, 86); + this.hsbarHoldLookAhead.Location = new System.Drawing.Point(53, 86); this.hsbarHoldLookAhead.Maximum = 70; this.hsbarHoldLookAhead.Minimum = 10; this.hsbarHoldLookAhead.Name = "hsbarHoldLookAhead"; @@ -581,17 +634,17 @@ private void InitializeComponent() // this.lblPureIntegral.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblPureIntegral.ForeColor = System.Drawing.Color.Black; - this.lblPureIntegral.Location = new System.Drawing.Point(9, 236); + this.lblPureIntegral.Location = new System.Drawing.Point(5, 236); this.lblPureIntegral.Name = "lblPureIntegral"; - this.lblPureIntegral.Size = new System.Drawing.Size(60, 35); + this.lblPureIntegral.Size = new System.Drawing.Size(50, 35); this.lblPureIntegral.TabIndex = 350; - this.lblPureIntegral.Text = "888"; + this.lblPureIntegral.Text = "20"; this.lblPureIntegral.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // hsbarIntegralPurePursuit // this.hsbarIntegralPurePursuit.LargeChange = 1; - this.hsbarIntegralPurePursuit.Location = new System.Drawing.Point(68, 239); + this.hsbarIntegralPurePursuit.Location = new System.Drawing.Point(53, 239); this.hsbarIntegralPurePursuit.Name = "hsbarIntegralPurePursuit"; this.hsbarIntegralPurePursuit.Size = new System.Drawing.Size(264, 30); this.hsbarIntegralPurePursuit.TabIndex = 349; @@ -602,9 +655,9 @@ private void InitializeComponent() // this.label26.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label26.ForeColor = System.Drawing.Color.SteelBlue; - this.label26.Location = new System.Drawing.Point(112, 3); + this.label26.Location = new System.Drawing.Point(8, 3); this.label26.Name = "label26"; - this.label26.Size = new System.Drawing.Size(172, 26); + this.label26.Size = new System.Drawing.Size(351, 26); this.label26.TabIndex = 348; this.label26.Text = "Pure Pursuit"; this.label26.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -613,9 +666,9 @@ private void InitializeComponent() // this.label24.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label24.ForeColor = System.Drawing.Color.Black; - this.label24.Location = new System.Drawing.Point(86, 217); + this.label24.Location = new System.Drawing.Point(53, 217); this.label24.Name = "label24"; - this.label24.Size = new System.Drawing.Size(229, 19); + this.label24.Size = new System.Drawing.Size(264, 19); this.label24.TabIndex = 342; this.label24.Text = "Integral"; this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -648,6 +701,9 @@ private void InitializeComponent() this.tabStan.BackColor = System.Drawing.Color.Gainsboro; this.tabStan.BackgroundImage = global::AgOpenGPS.Properties.Resources.Sf_Stanley; this.tabStan.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.tabStan.Controls.Add(this.label74); + this.tabStan.Controls.Add(this.label73); + this.tabStan.Controls.Add(this.label72); this.tabStan.Controls.Add(this.lblIntegralPercent); this.tabStan.Controls.Add(this.hsbarIntegral); this.tabStan.Controls.Add(this.label27); @@ -659,11 +715,53 @@ private void InitializeComponent() this.tabStan.Controls.Add(this.hsbarStanleyGain); this.tabStan.Controls.Add(this.hsbarHeadingErrorGain); this.tabStan.ImageIndex = 2; - this.tabStan.Location = new System.Drawing.Point(4, 103); + this.tabStan.Location = new System.Drawing.Point(4, 52); this.tabStan.Name = "tabStan"; - this.tabStan.Size = new System.Drawing.Size(360, 295); + this.tabStan.Size = new System.Drawing.Size(365, 346); this.tabStan.TabIndex = 15; // + // label74 + // + this.label74.AutoSize = true; + this.label74.BackColor = System.Drawing.Color.Transparent; + this.label74.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label74.ForeColor = System.Drawing.Color.Black; + this.label74.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label74.Location = new System.Drawing.Point(68, 293); + this.label74.Name = "label74"; + this.label74.Size = new System.Drawing.Size(14, 16); + this.label74.TabIndex = 549; + this.label74.Text = "0"; + this.label74.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // label73 + // + this.label73.AutoSize = true; + this.label73.BackColor = System.Drawing.Color.Transparent; + this.label73.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label73.ForeColor = System.Drawing.Color.Black; + this.label73.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label73.Location = new System.Drawing.Point(68, 203); + this.label73.Name = "label73"; + this.label73.Size = new System.Drawing.Size(25, 16); + this.label73.TabIndex = 548; + this.label73.Text = "1.0"; + this.label73.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // label72 + // + this.label72.AutoSize = true; + this.label72.BackColor = System.Drawing.Color.Transparent; + this.label72.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label72.ForeColor = System.Drawing.Color.Black; + this.label72.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label72.Location = new System.Drawing.Point(68, 113); + this.label72.Name = "label72"; + this.label72.Size = new System.Drawing.Size(25, 16); + this.label72.TabIndex = 547; + this.label72.Text = "1.0"; + this.label72.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // // lblIntegralPercent // this.lblIntegralPercent.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -782,6 +880,9 @@ private void InitializeComponent() this.tabGain.BackColor = System.Drawing.Color.Gainsboro; this.tabGain.BackgroundImage = global::AgOpenGPS.Properties.Resources.Sf_GainTab; this.tabGain.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.tabGain.Controls.Add(this.label75); + this.tabGain.Controls.Add(this.label76); + this.tabGain.Controls.Add(this.label77); this.tabGain.Controls.Add(this.label6); this.tabGain.Controls.Add(this.label15); this.tabGain.Controls.Add(this.label4); @@ -793,21 +894,63 @@ private void InitializeComponent() this.tabGain.Controls.Add(this.lblMinPWM); this.tabGain.Controls.Add(this.hsbarHighSteerPWM); this.tabGain.ImageIndex = 1; - this.tabGain.Location = new System.Drawing.Point(4, 103); + this.tabGain.Location = new System.Drawing.Point(4, 52); this.tabGain.Name = "tabGain"; - this.tabGain.Size = new System.Drawing.Size(360, 295); + this.tabGain.Size = new System.Drawing.Size(365, 346); this.tabGain.TabIndex = 13; // + // label75 + // + this.label75.AutoSize = true; + this.label75.BackColor = System.Drawing.Color.Transparent; + this.label75.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label75.ForeColor = System.Drawing.Color.Black; + this.label75.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label75.Location = new System.Drawing.Point(68, 302); + this.label75.Name = "label75"; + this.label75.Size = new System.Drawing.Size(21, 16); + this.label75.TabIndex = 552; + this.label75.Text = "25"; + this.label75.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // label76 + // + this.label76.AutoSize = true; + this.label76.BackColor = System.Drawing.Color.Transparent; + this.label76.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label76.ForeColor = System.Drawing.Color.Black; + this.label76.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label76.Location = new System.Drawing.Point(68, 212); + this.label76.Name = "label76"; + this.label76.Size = new System.Drawing.Size(28, 16); + this.label76.TabIndex = 551; + this.label76.Text = "180"; + this.label76.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // label77 + // + this.label77.AutoSize = true; + this.label77.BackColor = System.Drawing.Color.Transparent; + this.label77.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label77.ForeColor = System.Drawing.Color.Black; + this.label77.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label77.Location = new System.Drawing.Point(68, 122); + this.label77.Name = "label77"; + this.label77.Size = new System.Drawing.Size(21, 16); + this.label77.TabIndex = 550; + this.label77.Text = "50"; + this.label77.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // // label6 // this.label6.AutoSize = true; this.label6.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label6.ForeColor = System.Drawing.Color.Black; - this.label6.Location = new System.Drawing.Point(43, 7); + this.label6.Location = new System.Drawing.Point(148, 16); this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(262, 25); + this.label6.Size = new System.Drawing.Size(60, 25); this.label6.TabIndex = 339; - this.label6.Text = "Motor or Hydraulic Gain"; + this.label6.Text = "Gain"; this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label15 @@ -919,6 +1062,9 @@ private void InitializeComponent() this.tabSteer.BackColor = System.Drawing.Color.Gainsboro; this.tabSteer.BackgroundImage = global::AgOpenGPS.Properties.Resources.Sf_SteerTab; this.tabSteer.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.tabSteer.Controls.Add(this.label80); + this.tabSteer.Controls.Add(this.label79); + this.tabSteer.Controls.Add(this.label78); this.tabSteer.Controls.Add(this.label23); this.tabSteer.Controls.Add(this.lblAV_Set); this.tabSteer.Controls.Add(this.lblAV_Act); @@ -939,12 +1085,55 @@ private void InitializeComponent() this.tabSteer.Controls.Add(this.lblCountsPerDegree); this.tabSteer.Controls.Add(this.hsbarWasOffset); this.tabSteer.Controls.Add(this.lblSteerAngleSensorZero); + this.tabSteer.Controls.Add(this.label81); this.tabSteer.ImageIndex = 0; - this.tabSteer.Location = new System.Drawing.Point(4, 103); + this.tabSteer.Location = new System.Drawing.Point(4, 52); this.tabSteer.Name = "tabSteer"; - this.tabSteer.Size = new System.Drawing.Size(360, 295); + this.tabSteer.Size = new System.Drawing.Size(365, 346); this.tabSteer.TabIndex = 5; // + // label80 + // + this.label80.AutoSize = true; + this.label80.BackColor = System.Drawing.Color.Transparent; + this.label80.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label80.ForeColor = System.Drawing.Color.Black; + this.label80.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label80.Location = new System.Drawing.Point(66, 262); + this.label80.Name = "label80"; + this.label80.Size = new System.Drawing.Size(28, 16); + this.label80.TabIndex = 547; + this.label80.Text = "100"; + this.label80.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // label79 + // + this.label79.AutoSize = true; + this.label79.BackColor = System.Drawing.Color.Transparent; + this.label79.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label79.ForeColor = System.Drawing.Color.Black; + this.label79.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label79.Location = new System.Drawing.Point(66, 194); + this.label79.Name = "label79"; + this.label79.Size = new System.Drawing.Size(28, 16); + this.label79.TabIndex = 546; + this.label79.Text = "110"; + this.label79.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // label78 + // + this.label78.AutoSize = true; + this.label78.BackColor = System.Drawing.Color.Transparent; + this.label78.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label78.ForeColor = System.Drawing.Color.Black; + this.label78.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label78.Location = new System.Drawing.Point(78, 124); + this.label78.Name = "label78"; + this.label78.Size = new System.Drawing.Size(25, 16); + this.label78.TabIndex = 545; + this.label78.Text = "0.0"; + this.label78.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // // label23 // this.label23.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -961,7 +1150,7 @@ private void InitializeComponent() this.lblAV_Set.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.lblAV_Set.AutoSize = true; this.lblAV_Set.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblAV_Set.Location = new System.Drawing.Point(-256, 18); + this.lblAV_Set.Location = new System.Drawing.Point(-328, 18); this.lblAV_Set.Name = "lblAV_Set"; this.lblAV_Set.Size = new System.Drawing.Size(51, 19); this.lblAV_Set.TabIndex = 529; @@ -973,7 +1162,7 @@ private void InitializeComponent() this.lblAV_Act.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.lblAV_Act.AutoSize = true; this.lblAV_Act.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblAV_Act.Location = new System.Drawing.Point(-256, 42); + this.lblAV_Act.Location = new System.Drawing.Point(-328, 42); this.lblAV_Act.Name = "lblAV_Act"; this.lblAV_Act.Size = new System.Drawing.Size(54, 19); this.lblAV_Act.TabIndex = 528; @@ -996,7 +1185,7 @@ private void InitializeComponent() this.label36.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.label36.AutoSize = true; this.label36.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label36.Location = new System.Drawing.Point(-300, 44); + this.label36.Location = new System.Drawing.Point(-372, 44); this.label36.Name = "label36"; this.label36.Size = new System.Drawing.Size(50, 16); this.label36.TabIndex = 530; @@ -1020,7 +1209,7 @@ private void InitializeComponent() this.label38.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.label38.AutoSize = true; this.label38.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label38.Location = new System.Drawing.Point(-301, 20); + this.label38.Location = new System.Drawing.Point(-373, 20); this.label38.Name = "label38"; this.label38.Size = new System.Drawing.Size(51, 16); this.label38.TabIndex = 531; @@ -1099,7 +1288,7 @@ private void InitializeComponent() this.lblActualSteerAngleUpper.BackColor = System.Drawing.Color.Transparent; this.lblActualSteerAngleUpper.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblActualSteerAngleUpper.ForeColor = System.Drawing.Color.Black; - this.lblActualSteerAngleUpper.Location = new System.Drawing.Point(-495, 16); + this.lblActualSteerAngleUpper.Location = new System.Drawing.Point(-567, 16); this.lblActualSteerAngleUpper.Name = "lblActualSteerAngleUpper"; this.lblActualSteerAngleUpper.Size = new System.Drawing.Size(39, 19); this.lblActualSteerAngleUpper.TabIndex = 324; @@ -1178,55 +1367,368 @@ private void InitializeComponent() this.lblSteerAngleSensorZero.Text = "-55.88"; this.lblSteerAngleSensorZero.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // - // imageList1 - // - this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream"))); - this.imageList1.TransparentColor = System.Drawing.Color.Transparent; - this.imageList1.Images.SetKeyName(0, "ST_SteerTab.png"); - this.imageList1.Images.SetKeyName(1, "ST_GainTab.png"); - this.imageList1.Images.SetKeyName(2, "ST_StanleyTab.png"); - this.imageList1.Images.SetKeyName(3, "Sf_PPTab.png"); - this.imageList1.Images.SetKeyName(4, "Sf_XTE2.png"); - // - // label19 - // - this.label19.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label19.ForeColor = System.Drawing.Color.Black; - this.label19.Location = new System.Drawing.Point(1106, 258); - this.label19.Name = "label19"; - this.label19.Size = new System.Drawing.Size(229, 26); - this.label19.TabIndex = 301; - this.label19.Text = "Speed Factor"; - this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // label81 + // + this.label81.AutoSize = true; + this.label81.BackColor = System.Drawing.Color.Transparent; + this.label81.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label81.ForeColor = System.Drawing.Color.Black; + this.label81.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label81.Location = new System.Drawing.Point(66, 325); + this.label81.Name = "label81"; + this.label81.Size = new System.Drawing.Size(21, 16); + this.label81.TabIndex = 548; + this.label81.Text = "30"; + this.label81.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // tabPPAdv + // + this.tabPPAdv.BackColor = System.Drawing.Color.Gainsboro; + this.tabPPAdv.Controls.Add(this.label82); + this.tabPPAdv.Controls.Add(this.label67); + this.tabPPAdv.Controls.Add(this.label66); + this.tabPPAdv.Controls.Add(this.label65); + this.tabPPAdv.Controls.Add(this.label59); + this.tabPPAdv.Controls.Add(this.lblDistanceAdv); + this.tabPPAdv.Controls.Add(this.hsbarLookAheadMult); + this.tabPPAdv.Controls.Add(this.label60); + this.tabPPAdv.Controls.Add(this.lblLookAheadMult); + this.tabPPAdv.Controls.Add(this.lblHoldAdv); + this.tabPPAdv.Controls.Add(this.label19); + this.tabPPAdv.Controls.Add(this.lblAcqAdv); + this.tabPPAdv.Controls.Add(this.label51); + this.tabPPAdv.Controls.Add(this.hsbarAcquireFactor); + this.tabPPAdv.Controls.Add(this.label57); + this.tabPPAdv.Controls.Add(this.lblAcquireFactor); + this.tabPPAdv.Controls.Add(this.label58); + this.tabPPAdv.Controls.Add(this.label47); + this.tabPPAdv.Controls.Add(this.nudDeadZoneDelay); + this.tabPPAdv.Controls.Add(this.nudDeadZoneHeading); + this.tabPPAdv.Controls.Add(this.label54); + this.tabPPAdv.Controls.Add(this.label49); + this.tabPPAdv.ImageIndex = 4; + this.tabPPAdv.Location = new System.Drawing.Point(4, 52); + this.tabPPAdv.Name = "tabPPAdv"; + this.tabPPAdv.Padding = new System.Windows.Forms.Padding(3); + this.tabPPAdv.Size = new System.Drawing.Size(365, 346); + this.tabPPAdv.TabIndex = 17; + // + // label82 + // + this.label82.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label82.ForeColor = System.Drawing.Color.Black; + this.label82.Location = new System.Drawing.Point(102, 199); + this.label82.Name = "label82"; + this.label82.Size = new System.Drawing.Size(217, 26); + this.label82.TabIndex = 548; + this.label82.Text = "Acquire Factor"; + this.label82.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label67 + // + this.label67.AutoSize = true; + this.label67.BackColor = System.Drawing.Color.Transparent; + this.label67.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label67.ForeColor = System.Drawing.Color.Black; + this.label67.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label67.Location = new System.Drawing.Point(310, 48); + this.label67.Name = "label67"; + this.label67.Size = new System.Drawing.Size(14, 16); + this.label67.TabIndex = 547; + this.label67.Text = "5"; + this.label67.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // label66 + // + this.label66.AutoSize = true; + this.label66.BackColor = System.Drawing.Color.Transparent; + this.label66.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label66.ForeColor = System.Drawing.Color.Black; + this.label66.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label66.Location = new System.Drawing.Point(31, 48); + this.label66.Name = "label66"; + this.label66.Size = new System.Drawing.Size(25, 16); + this.label66.TabIndex = 546; + this.label66.Text = "0.1"; + this.label66.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // label65 + // + this.label65.AutoSize = true; + this.label65.BackColor = System.Drawing.Color.Transparent; + this.label65.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label65.ForeColor = System.Drawing.Color.Black; + this.label65.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label65.Location = new System.Drawing.Point(73, 269); + this.label65.Name = "label65"; + this.label65.Size = new System.Drawing.Size(25, 16); + this.label65.TabIndex = 545; + this.label65.Text = "0.9"; + this.label65.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // label59 + // + this.label59.AutoSize = true; + this.label59.BackColor = System.Drawing.Color.Transparent; + this.label59.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label59.ForeColor = System.Drawing.Color.Black; + this.label59.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label59.Location = new System.Drawing.Point(73, 177); + this.label59.Name = "label59"; + this.label59.Size = new System.Drawing.Size(25, 16); + this.label59.TabIndex = 544; + this.label59.Text = "1.0"; + this.label59.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // lblDistanceAdv + // + this.lblDistanceAdv.AutoSize = true; + this.lblDistanceAdv.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblDistanceAdv.ForeColor = System.Drawing.Color.Black; + this.lblDistanceAdv.Location = new System.Drawing.Point(48, 311); + this.lblDistanceAdv.Name = "lblDistanceAdv"; + this.lblDistanceAdv.Size = new System.Drawing.Size(46, 23); + this.lblDistanceAdv.TabIndex = 516; + this.lblDistanceAdv.Text = "888"; + this.lblDistanceAdv.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // hsbarLookAheadMult // this.hsbarLookAheadMult.LargeChange = 1; - this.hsbarLookAheadMult.Location = new System.Drawing.Point(1112, 285); - this.hsbarLookAheadMult.Maximum = 30; + this.hsbarLookAheadMult.Location = new System.Drawing.Point(73, 143); + this.hsbarLookAheadMult.Maximum = 60; this.hsbarLookAheadMult.Minimum = 5; this.hsbarLookAheadMult.Name = "hsbarLookAheadMult"; - this.hsbarLookAheadMult.Size = new System.Drawing.Size(217, 30); + this.hsbarLookAheadMult.Size = new System.Drawing.Size(276, 30); this.hsbarLookAheadMult.TabIndex = 298; this.hsbarLookAheadMult.Value = 6; this.hsbarLookAheadMult.ValueChanged += new System.EventHandler(this.hsbarLookAheadMult_ValueChanged); // + // label60 + // + this.label60.AutoSize = true; + this.label60.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label60.ForeColor = System.Drawing.Color.Black; + this.label60.Location = new System.Drawing.Point(6, 310); + this.label60.Name = "label60"; + this.label60.Size = new System.Drawing.Size(48, 23); + this.label60.TabIndex = 515; + this.label60.Text = "Dist:"; + this.label60.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // // lblLookAheadMult // this.lblLookAheadMult.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblLookAheadMult.ForeColor = System.Drawing.Color.Black; - this.lblLookAheadMult.Location = new System.Drawing.Point(1047, 284); + this.lblLookAheadMult.Location = new System.Drawing.Point(8, 142); this.lblLookAheadMult.Name = "lblLookAheadMult"; this.lblLookAheadMult.Size = new System.Drawing.Size(60, 35); this.lblLookAheadMult.TabIndex = 299; this.lblLookAheadMult.Text = "888"; this.lblLookAheadMult.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // + // lblHoldAdv + // + this.lblHoldAdv.AutoSize = true; + this.lblHoldAdv.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblHoldAdv.ForeColor = System.Drawing.Color.Black; + this.lblHoldAdv.Location = new System.Drawing.Point(309, 311); + this.lblHoldAdv.Name = "lblHoldAdv"; + this.lblHoldAdv.Size = new System.Drawing.Size(46, 23); + this.lblHoldAdv.TabIndex = 514; + this.lblHoldAdv.Text = "888"; + this.lblHoldAdv.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label19 + // + this.label19.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label19.ForeColor = System.Drawing.Color.Black; + this.label19.Location = new System.Drawing.Point(100, 116); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(217, 26); + this.label19.TabIndex = 301; + this.label19.Text = "Speed Factor"; + this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblAcqAdv + // + this.lblAcqAdv.AutoSize = true; + this.lblAcqAdv.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblAcqAdv.ForeColor = System.Drawing.Color.Black; + this.lblAcqAdv.Location = new System.Drawing.Point(191, 311); + this.lblAcqAdv.Name = "lblAcqAdv"; + this.lblAcqAdv.Size = new System.Drawing.Size(46, 23); + this.lblAcqAdv.TabIndex = 513; + this.lblAcqAdv.Text = "888"; + this.lblAcqAdv.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label51 + // + this.label51.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label51.ForeColor = System.Drawing.Color.Black; + this.label51.Location = new System.Drawing.Point(71, 9); + this.label51.Name = "label51"; + this.label51.Size = new System.Drawing.Size(220, 25); + this.label51.TabIndex = 541; + this.label51.Text = " ------ Dead Zone -----"; + this.label51.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // hsbarAcquireFactor + // + this.hsbarAcquireFactor.LargeChange = 1; + this.hsbarAcquireFactor.Location = new System.Drawing.Point(73, 235); + this.hsbarAcquireFactor.Maximum = 300; + this.hsbarAcquireFactor.Minimum = 20; + this.hsbarAcquireFactor.Name = "hsbarAcquireFactor"; + this.hsbarAcquireFactor.Size = new System.Drawing.Size(276, 30); + this.hsbarAcquireFactor.TabIndex = 508; + this.hsbarAcquireFactor.Value = 75; + this.hsbarAcquireFactor.ValueChanged += new System.EventHandler(this.hsbarAcquireFactor_ValueChanged); + // + // label57 + // + this.label57.AutoSize = true; + this.label57.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label57.ForeColor = System.Drawing.Color.Black; + this.label57.Location = new System.Drawing.Point(112, 310); + this.label57.Name = "label57"; + this.label57.Size = new System.Drawing.Size(80, 23); + this.label57.TabIndex = 512; + this.label57.Text = "Acquire:"; + this.label57.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblAcquireFactor + // + this.lblAcquireFactor.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblAcquireFactor.ForeColor = System.Drawing.Color.Black; + this.lblAcquireFactor.Location = new System.Drawing.Point(8, 232); + this.lblAcquireFactor.Name = "lblAcquireFactor"; + this.lblAcquireFactor.Size = new System.Drawing.Size(60, 35); + this.lblAcquireFactor.TabIndex = 509; + this.lblAcquireFactor.Text = "888"; + this.lblAcquireFactor.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label58 + // + this.label58.AutoSize = true; + this.label58.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label58.ForeColor = System.Drawing.Color.Black; + this.label58.Location = new System.Drawing.Point(258, 310); + this.label58.Name = "label58"; + this.label58.Size = new System.Drawing.Size(55, 23); + this.label58.TabIndex = 511; + this.label58.Text = "Hold:"; + this.label58.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label47 + // + this.label47.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label47.ForeColor = System.Drawing.Color.Black; + this.label47.Location = new System.Drawing.Point(103, 269); + this.label47.Name = "label47"; + this.label47.Size = new System.Drawing.Size(246, 23); + this.label47.TabIndex = 510; + this.label47.Text = "Acquire = Factor * Hold"; + this.label47.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // nudDeadZoneDelay + // + this.nudDeadZoneDelay.BackColor = System.Drawing.Color.White; + this.nudDeadZoneDelay.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudDeadZoneDelay.InterceptArrowKeys = false; + this.nudDeadZoneDelay.Location = new System.Drawing.Point(198, 37); + this.nudDeadZoneDelay.Maximum = new decimal(new int[] { + 10, + 0, + 0, + 0}); + this.nudDeadZoneDelay.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.nudDeadZoneDelay.Name = "nudDeadZoneDelay"; + this.nudDeadZoneDelay.ReadOnly = true; + this.nudDeadZoneDelay.Size = new System.Drawing.Size(107, 36); + this.nudDeadZoneDelay.TabIndex = 542; + this.nudDeadZoneDelay.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.nudDeadZoneDelay.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.nudDeadZoneDelay.Click += new System.EventHandler(this.nudDeadZoneDelay_Click); + // + // nudDeadZoneHeading + // + this.nudDeadZoneHeading.BackColor = System.Drawing.Color.White; + this.nudDeadZoneHeading.DecimalPlaces = 1; + this.nudDeadZoneHeading.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudDeadZoneHeading.InterceptArrowKeys = false; + this.nudDeadZoneHeading.Location = new System.Drawing.Point(60, 38); + this.nudDeadZoneHeading.Maximum = new decimal(new int[] { + 5, + 0, + 0, + 0}); + this.nudDeadZoneHeading.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.nudDeadZoneHeading.Name = "nudDeadZoneHeading"; + this.nudDeadZoneHeading.ReadOnly = true; + this.nudDeadZoneHeading.Size = new System.Drawing.Size(107, 36); + this.nudDeadZoneHeading.TabIndex = 538; + this.nudDeadZoneHeading.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.nudDeadZoneHeading.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.nudDeadZoneHeading.Click += new System.EventHandler(this.nudDeadZoneHeading_Click); + // + // label54 + // + this.label54.BackColor = System.Drawing.Color.Transparent; + this.label54.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label54.ForeColor = System.Drawing.Color.Black; + this.label54.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label54.Location = new System.Drawing.Point(190, 72); + this.label54.Name = "label54"; + this.label54.Size = new System.Drawing.Size(123, 22); + this.label54.TabIndex = 543; + this.label54.Text = "On Delay (sec)"; + this.label54.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // label49 + // + this.label49.BackColor = System.Drawing.Color.Transparent; + this.label49.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label49.ForeColor = System.Drawing.Color.Black; + this.label49.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label49.Location = new System.Drawing.Point(34, 72); + this.label49.Name = "label49"; + this.label49.Size = new System.Drawing.Size(159, 22); + this.label49.TabIndex = 539; + this.label49.Text = "Heading (Degree)"; + this.label49.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + // + // imageList1 + // + this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream"))); + this.imageList1.TransparentColor = System.Drawing.Color.Transparent; + this.imageList1.Images.SetKeyName(0, "ST_SteerTab.png"); + this.imageList1.Images.SetKeyName(1, "ST_GainTab.png"); + this.imageList1.Images.SetKeyName(2, "ST_StanleyTab.png"); + this.imageList1.Images.SetKeyName(3, "Sf_PPTab.png"); + this.imageList1.Images.SetKeyName(4, "ST_NerdAdv.png"); + // // lblSideHillComp // this.lblSideHillComp.Font = new System.Drawing.Font("Tahoma", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblSideHillComp.ForeColor = System.Drawing.Color.Black; - this.lblSideHillComp.Location = new System.Drawing.Point(46, 211); + this.lblSideHillComp.Location = new System.Drawing.Point(18, 199); this.lblSideHillComp.Name = "lblSideHillComp"; this.lblSideHillComp.Size = new System.Drawing.Size(88, 35); this.lblSideHillComp.TabIndex = 353; @@ -1236,7 +1738,7 @@ private void InitializeComponent() // hsbarSideHillComp // this.hsbarSideHillComp.LargeChange = 1; - this.hsbarSideHillComp.Location = new System.Drawing.Point(137, 201); + this.hsbarSideHillComp.Location = new System.Drawing.Point(109, 189); this.hsbarSideHillComp.Name = "hsbarSideHillComp"; this.hsbarSideHillComp.Size = new System.Drawing.Size(339, 53); this.hsbarSideHillComp.TabIndex = 352; @@ -1245,9 +1747,9 @@ private void InitializeComponent() // // label22 // - this.label22.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label22.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label22.ForeColor = System.Drawing.Color.Black; - this.label22.Location = new System.Drawing.Point(137, 178); + this.label22.Location = new System.Drawing.Point(109, 166); this.label22.Name = "label22"; this.label22.Size = new System.Drawing.Size(339, 19); this.label22.TabIndex = 351; @@ -1260,7 +1762,7 @@ private void InitializeComponent() this.label28.AutoSize = true; this.label28.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label28.ForeColor = System.Drawing.Color.Black; - this.label28.Location = new System.Drawing.Point(359, 423); + this.label28.Location = new System.Drawing.Point(317, 383); this.label28.Name = "label28"; this.label28.Size = new System.Drawing.Size(193, 32); this.label28.TabIndex = 513; @@ -1269,55 +1771,55 @@ private void InitializeComponent() // labelPressureTurnSensor // this.labelPressureTurnSensor.AutoSize = true; - this.labelPressureTurnSensor.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelPressureTurnSensor.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.labelPressureTurnSensor.ForeColor = System.Drawing.Color.Black; - this.labelPressureTurnSensor.Location = new System.Drawing.Point(212, 14); + this.labelPressureTurnSensor.Location = new System.Drawing.Point(175, 40); this.labelPressureTurnSensor.Name = "labelPressureTurnSensor"; - this.labelPressureTurnSensor.Size = new System.Drawing.Size(161, 19); + this.labelPressureTurnSensor.Size = new System.Drawing.Size(140, 19); this.labelPressureTurnSensor.TabIndex = 512; - this.labelPressureTurnSensor.Text = "Pressure Turn Sensor"; + this.labelPressureTurnSensor.Text = "Pressure Sensor"; // // labelCurrentTurnSensor // this.labelCurrentTurnSensor.AutoSize = true; - this.labelCurrentTurnSensor.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelCurrentTurnSensor.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.labelCurrentTurnSensor.ForeColor = System.Drawing.Color.Black; - this.labelCurrentTurnSensor.Location = new System.Drawing.Point(406, 14); + this.labelCurrentTurnSensor.Location = new System.Drawing.Point(359, 40); this.labelCurrentTurnSensor.Name = "labelCurrentTurnSensor"; - this.labelCurrentTurnSensor.Size = new System.Drawing.Size(154, 19); + this.labelCurrentTurnSensor.Size = new System.Drawing.Size(131, 19); this.labelCurrentTurnSensor.TabIndex = 511; - this.labelCurrentTurnSensor.Text = "Current Turn Sensor"; + this.labelCurrentTurnSensor.Text = "Current Sensor"; // // labelEncoder // this.labelEncoder.AutoSize = true; - this.labelEncoder.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelEncoder.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.labelEncoder.ForeColor = System.Drawing.Color.Black; - this.labelEncoder.Location = new System.Drawing.Point(66, 15); + this.labelEncoder.Location = new System.Drawing.Point(20, 41); this.labelEncoder.Name = "labelEncoder"; - this.labelEncoder.Size = new System.Drawing.Size(96, 19); + this.labelEncoder.Size = new System.Drawing.Size(117, 19); this.labelEncoder.TabIndex = 506; - this.labelEncoder.Text = "Turn Sensor"; + this.labelEncoder.Text = "Count Sensor"; // // label70 // this.label70.AutoSize = true; - this.label70.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label70.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label70.ForeColor = System.Drawing.Color.Black; - this.label70.Location = new System.Drawing.Point(186, 189); + this.label70.Location = new System.Drawing.Point(167, 173); this.label70.Name = "label70"; - this.label70.Size = new System.Drawing.Size(97, 16); + this.label70.Size = new System.Drawing.Size(113, 16); this.label70.TabIndex = 505; this.label70.Text = "Invert Motor Dir"; // // label29 // this.label29.AutoSize = true; - this.label29.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label29.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label29.ForeColor = System.Drawing.Color.Black; - this.label29.Location = new System.Drawing.Point(186, 323); + this.label29.Location = new System.Drawing.Point(167, 307); this.label29.Name = "label29"; - this.label29.Size = new System.Drawing.Size(81, 16); + this.label29.Size = new System.Drawing.Size(95, 16); this.label29.TabIndex = 504; this.label29.Text = "Invert Relays"; // @@ -1327,7 +1829,7 @@ private void InitializeComponent() this.label68.Font = new System.Drawing.Font("Tahoma", 15.75F); this.label68.ForeColor = System.Drawing.Color.Black; this.label68.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label68.Location = new System.Drawing.Point(654, 626); + this.label68.Location = new System.Drawing.Point(687, 526); this.label68.Name = "label68"; this.label68.Size = new System.Drawing.Size(172, 30); this.label68.TabIndex = 502; @@ -1344,7 +1846,7 @@ private void InitializeComponent() this.cboxMotorDrive.Items.AddRange(new object[] { "Cytron", "IBT2"}); - this.cboxMotorDrive.Location = new System.Drawing.Point(353, 86); + this.cboxMotorDrive.Location = new System.Drawing.Point(329, 46); this.cboxMotorDrive.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3); this.cboxMotorDrive.Name = "cboxMotorDrive"; this.cboxMotorDrive.Size = new System.Drawing.Size(175, 37); @@ -1362,7 +1864,7 @@ private void InitializeComponent() "None", "Switch", "Button"}); - this.cboxSteerEnable.Location = new System.Drawing.Point(353, 380); + this.cboxSteerEnable.Location = new System.Drawing.Point(329, 340); this.cboxSteerEnable.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3); this.cboxSteerEnable.Name = "cboxSteerEnable"; this.cboxSteerEnable.Size = new System.Drawing.Size(175, 37); @@ -1375,7 +1877,7 @@ private void InitializeComponent() this.label62.Font = new System.Drawing.Font("Tahoma", 15.75F); this.label62.ForeColor = System.Drawing.Color.Black; this.label62.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label62.Location = new System.Drawing.Point(350, 349); + this.label62.Location = new System.Drawing.Point(326, 309); this.label62.Name = "label62"; this.label62.Size = new System.Drawing.Size(181, 29); this.label62.TabIndex = 499; @@ -1392,7 +1894,7 @@ private void InitializeComponent() this.cboxConv.Items.AddRange(new object[] { "Single", "Differential"}); - this.cboxConv.Location = new System.Drawing.Point(353, 184); + this.cboxConv.Location = new System.Drawing.Point(329, 144); this.cboxConv.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3); this.cboxConv.Name = "cboxConv"; this.cboxConv.Size = new System.Drawing.Size(175, 37); @@ -1405,7 +1907,7 @@ private void InitializeComponent() this.label63.Font = new System.Drawing.Font("Tahoma", 15.75F); this.label63.ForeColor = System.Drawing.Color.Black; this.label63.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label63.Location = new System.Drawing.Point(350, 56); + this.label63.Location = new System.Drawing.Point(326, 16); this.label63.Name = "label63"; this.label63.Size = new System.Drawing.Size(181, 29); this.label63.TabIndex = 496; @@ -1418,7 +1920,7 @@ private void InitializeComponent() this.label64.Font = new System.Drawing.Font("Tahoma", 15.75F); this.label64.ForeColor = System.Drawing.Color.Black; this.label64.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label64.Location = new System.Drawing.Point(350, 152); + this.label64.Location = new System.Drawing.Point(326, 112); this.label64.Name = "label64"; this.label64.Size = new System.Drawing.Size(181, 29); this.label64.TabIndex = 497; @@ -1428,10 +1930,10 @@ private void InitializeComponent() // label61 // this.label61.BackColor = System.Drawing.Color.Transparent; - this.label61.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label61.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label61.ForeColor = System.Drawing.Color.Black; this.label61.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label61.Location = new System.Drawing.Point(32, 138); + this.label61.Location = new System.Drawing.Point(3, 172); this.label61.Name = "label61"; this.label61.Size = new System.Drawing.Size(112, 32); this.label61.TabIndex = 494; @@ -1442,12 +1944,12 @@ private void InitializeComponent() // this.label55.AutoSize = true; this.label55.BackColor = System.Drawing.Color.Transparent; - this.label55.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label55.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label55.ForeColor = System.Drawing.Color.Black; this.label55.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label55.Location = new System.Drawing.Point(15, 48); + this.label55.Location = new System.Drawing.Point(21, 37); this.label55.Name = "label55"; - this.label55.Size = new System.Drawing.Size(52, 16); + this.label55.Size = new System.Drawing.Size(59, 16); this.label55.TabIndex = 489; this.label55.Text = "Danfoss"; this.label55.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; @@ -1455,11 +1957,11 @@ private void InitializeComponent() // label30 // this.label30.AutoSize = true; - this.label30.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label30.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label30.ForeColor = System.Drawing.Color.Black; - this.label30.Location = new System.Drawing.Point(185, 53); + this.label30.Location = new System.Drawing.Point(166, 37); this.label30.Name = "label30"; - this.label30.Size = new System.Drawing.Size(72, 16); + this.label30.Size = new System.Drawing.Size(83, 16); this.label30.TabIndex = 515; this.label30.Text = "Invert WAS"; // @@ -1473,9 +1975,9 @@ private void InitializeComponent() this.panel2.Controls.Add(this.label11); this.panel2.Controls.Add(this.lblSteerAngleActual); this.panel2.Controls.Add(this.label13); - this.panel2.Location = new System.Drawing.Point(4, 397); + this.panel2.Location = new System.Drawing.Point(4, 403); this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(365, 53); + this.panel2.Size = new System.Drawing.Size(365, 43); this.panel2.TabIndex = 324; // // btnExpand @@ -1490,7 +1992,7 @@ private void InitializeComponent() this.btnExpand.Location = new System.Drawing.Point(299, 3); this.btnExpand.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3); this.btnExpand.Name = "btnExpand"; - this.btnExpand.Size = new System.Drawing.Size(62, 52); + this.btnExpand.Size = new System.Drawing.Size(62, 37); this.btnExpand.TabIndex = 329; this.btnExpand.UseVisualStyleBackColor = true; this.btnExpand.Click += new System.EventHandler(this.expandWindow_Click); @@ -1510,9 +2012,9 @@ private void InitializeComponent() this.panel1.Controls.Add(this.label9); this.panel1.Controls.Add(this.label14); this.panel1.Controls.Add(this.lblDiameter); - this.panel1.Location = new System.Drawing.Point(5, 458); + this.panel1.Location = new System.Drawing.Point(5, 446); this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(364, 218); + this.panel1.Size = new System.Drawing.Size(364, 176); this.panel1.TabIndex = 323; // // btnStartSA @@ -1522,7 +2024,7 @@ private void InitializeComponent() this.btnStartSA.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnStartSA.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; this.btnStartSA.Image = global::AgOpenGPS.Properties.Resources.BoundaryRecord; - this.btnStartSA.Location = new System.Drawing.Point(15, 124); + this.btnStartSA.Location = new System.Drawing.Point(15, 104); this.btnStartSA.Name = "btnStartSA"; this.btnStartSA.Size = new System.Drawing.Size(71, 67); this.btnStartSA.TabIndex = 323; @@ -1538,7 +2040,7 @@ private void InitializeComponent() this.btnFreeDriveZero.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnFreeDriveZero.ForeColor = System.Drawing.Color.White; this.btnFreeDriveZero.Image = global::AgOpenGPS.Properties.Resources.SteerZero; - this.btnFreeDriveZero.Location = new System.Drawing.Point(277, 9); + this.btnFreeDriveZero.Location = new System.Drawing.Point(277, 17); this.btnFreeDriveZero.Name = "btnFreeDriveZero"; this.btnFreeDriveZero.Size = new System.Drawing.Size(73, 56); this.btnFreeDriveZero.TabIndex = 313; @@ -1554,7 +2056,7 @@ private void InitializeComponent() this.btnSteerAngleUp.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnSteerAngleUp.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnSteerAngleUp.Image = global::AgOpenGPS.Properties.Resources.ArrowRight; - this.btnSteerAngleUp.Location = new System.Drawing.Point(186, 9); + this.btnSteerAngleUp.Location = new System.Drawing.Point(186, 17); this.btnSteerAngleUp.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3); this.btnSteerAngleUp.Name = "btnSteerAngleUp"; this.btnSteerAngleUp.Size = new System.Drawing.Size(73, 56); @@ -1571,7 +2073,7 @@ private void InitializeComponent() this.btnFreeDrive.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnFreeDrive.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; this.btnFreeDrive.Image = global::AgOpenGPS.Properties.Resources.SteerDriveOff; - this.btnFreeDrive.Location = new System.Drawing.Point(4, 9); + this.btnFreeDrive.Location = new System.Drawing.Point(4, 17); this.btnFreeDrive.Name = "btnFreeDrive"; this.btnFreeDrive.Size = new System.Drawing.Size(73, 56); this.btnFreeDrive.TabIndex = 228; @@ -1587,7 +2089,7 @@ private void InitializeComponent() this.btnSteerAngleDown.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnSteerAngleDown.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.btnSteerAngleDown.Image = global::AgOpenGPS.Properties.Resources.ArrowLeft; - this.btnSteerAngleDown.Location = new System.Drawing.Point(95, 9); + this.btnSteerAngleDown.Location = new System.Drawing.Point(95, 17); this.btnSteerAngleDown.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3); this.btnSteerAngleDown.Name = "btnSteerAngleDown"; this.btnSteerAngleDown.Size = new System.Drawing.Size(73, 56); @@ -1598,10 +2100,10 @@ private void InitializeComponent() // hsbarSensor // this.hsbarSensor.LargeChange = 1; - this.hsbarSensor.Location = new System.Drawing.Point(150, 263); + this.hsbarSensor.Location = new System.Drawing.Point(114, 297); this.hsbarSensor.Maximum = 255; this.hsbarSensor.Name = "hsbarSensor"; - this.hsbarSensor.Size = new System.Drawing.Size(339, 53); + this.hsbarSensor.Size = new System.Drawing.Size(302, 53); this.hsbarSensor.TabIndex = 516; this.hsbarSensor.Scroll += new System.Windows.Forms.ScrollEventHandler(this.hsbarSensor_Scroll); // @@ -1612,51 +2114,24 @@ private void InitializeComponent() this.lblhsbarSensor.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblhsbarSensor.ForeColor = System.Drawing.Color.Black; this.lblhsbarSensor.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.lblhsbarSensor.Location = new System.Drawing.Point(495, 272); + this.lblhsbarSensor.Location = new System.Drawing.Point(422, 306); this.lblhsbarSensor.Name = "lblhsbarSensor"; this.lblhsbarSensor.Size = new System.Drawing.Size(57, 29); this.lblhsbarSensor.TabIndex = 518; this.lblhsbarSensor.Text = "0%"; this.lblhsbarSensor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // - // label16 - // - this.label16.BackColor = System.Drawing.Color.Transparent; - this.label16.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label16.ForeColor = System.Drawing.Color.Black; - this.label16.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label16.Location = new System.Drawing.Point(431, 347); - this.label16.Name = "label16"; - this.label16.Size = new System.Drawing.Size(159, 22); - this.label16.TabIndex = 520; - this.label16.Text = "Panic Stop Speed"; - this.label16.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - // - // label31 - // - this.label31.AutoSize = true; - this.label31.BackColor = System.Drawing.Color.Transparent; - this.label31.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label31.ForeColor = System.Drawing.Color.Black; - this.label31.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label31.Location = new System.Drawing.Point(486, 427); - this.label31.Name = "label31"; - this.label31.Size = new System.Drawing.Size(48, 16); - this.label31.TabIndex = 521; - this.label31.Text = "0 = Off"; - this.label31.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - // // label37 // this.label37.BackColor = System.Drawing.Color.Transparent; this.label37.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label37.ForeColor = System.Drawing.Color.Black; - this.label37.Location = new System.Drawing.Point(510, 573); + this.label37.Location = new System.Drawing.Point(515, 530); this.label37.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label37.Name = "label37"; - this.label37.Size = new System.Drawing.Size(134, 23); + this.label37.Size = new System.Drawing.Size(150, 23); this.label37.TabIndex = 523; - this.label37.Text = "Reset To Defaults"; + this.label37.Text = "Reset All To Defaults"; this.label37.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // cboxXY @@ -1669,7 +2144,7 @@ private void InitializeComponent() this.cboxXY.Items.AddRange(new object[] { "X", "Y"}); - this.cboxXY.Location = new System.Drawing.Point(353, 282); + this.cboxXY.Location = new System.Drawing.Point(329, 242); this.cboxXY.Margin = new System.Windows.Forms.Padding(2, 3, 2, 3); this.cboxXY.Name = "cboxXY"; this.cboxXY.Size = new System.Drawing.Size(175, 37); @@ -1682,7 +2157,7 @@ private void InitializeComponent() this.label33.Font = new System.Drawing.Font("Tahoma", 15.75F); this.label33.ForeColor = System.Drawing.Color.Black; this.label33.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label33.Location = new System.Drawing.Point(350, 251); + this.label33.Location = new System.Drawing.Point(326, 211); this.label33.Name = "label33"; this.label33.Size = new System.Drawing.Size(181, 29); this.label33.TabIndex = 524; @@ -1692,12 +2167,12 @@ private void InitializeComponent() // label34 // this.label34.BackColor = System.Drawing.Color.Transparent; - this.label34.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label34.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label34.ForeColor = System.Drawing.Color.Black; this.label34.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label34.Location = new System.Drawing.Point(13, 329); + this.label34.Location = new System.Drawing.Point(145, 294); this.label34.Name = "label34"; - this.label34.Size = new System.Drawing.Size(159, 22); + this.label34.Size = new System.Drawing.Size(103, 22); this.label34.TabIndex = 527; this.label34.Text = "Stanley/Pure"; this.label34.TextAlign = System.Drawing.ContentAlignment.BottomCenter; @@ -1712,11 +2187,11 @@ private void InitializeComponent() this.tabSteerSettings.Controls.Add(this.tabOnTheLine); this.tabSteerSettings.Font = new System.Drawing.Font("Tahoma", 20.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.tabSteerSettings.ImageList = this.imageList2; - this.tabSteerSettings.ItemSize = new System.Drawing.Size(122, 64); + this.tabSteerSettings.ItemSize = new System.Drawing.Size(100, 48); this.tabSteerSettings.Location = new System.Drawing.Point(373, 5); this.tabSteerSettings.Name = "tabSteerSettings"; this.tabSteerSettings.SelectedIndex = 0; - this.tabSteerSettings.Size = new System.Drawing.Size(631, 567); + this.tabSteerSettings.Size = new System.Drawing.Size(520, 525); this.tabSteerSettings.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; this.tabSteerSettings.TabIndex = 528; // @@ -1736,10 +2211,10 @@ private void InitializeComponent() this.tabSensors.Controls.Add(this.cboxEncoder); this.tabSensors.Controls.Add(this.cboxPressureSensor); this.tabSensors.ImageIndex = 0; - this.tabSensors.Location = new System.Drawing.Point(4, 68); + this.tabSensors.Location = new System.Drawing.Point(4, 52); this.tabSensors.Name = "tabSensors"; this.tabSensors.Padding = new System.Windows.Forms.Padding(3); - this.tabSensors.Size = new System.Drawing.Size(623, 495); + this.tabSensors.Size = new System.Drawing.Size(512, 469); this.tabSensors.TabIndex = 0; // // nudMaxCounts @@ -1747,7 +2222,7 @@ private void InitializeComponent() this.nudMaxCounts.BackColor = System.Drawing.Color.White; this.nudMaxCounts.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.nudMaxCounts.InterceptArrowKeys = false; - this.nudMaxCounts.Location = new System.Drawing.Point(37, 173); + this.nudMaxCounts.Location = new System.Drawing.Point(8, 207); this.nudMaxCounts.Maximum = new decimal(new int[] { 255, 0, @@ -1775,7 +2250,7 @@ private void InitializeComponent() this.cboxCurrentSensor.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.cboxCurrentSensor.ForeColor = System.Drawing.SystemColors.ControlText; this.cboxCurrentSensor.Image = global::AgOpenGPS.Properties.Resources.ConSt_TurnSensorCurrent; - this.cboxCurrentSensor.Location = new System.Drawing.Point(427, 37); + this.cboxCurrentSensor.Location = new System.Drawing.Point(367, 63); this.cboxCurrentSensor.Name = "cboxCurrentSensor"; this.cboxCurrentSensor.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.cboxCurrentSensor.Size = new System.Drawing.Size(114, 78); @@ -1794,7 +2269,7 @@ private void InitializeComponent() this.cboxEncoder.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.cboxEncoder.ForeColor = System.Drawing.SystemColors.ControlText; this.cboxEncoder.Image = global::AgOpenGPS.Properties.Resources.ConSt_TurnSensor; - this.cboxEncoder.Location = new System.Drawing.Point(58, 37); + this.cboxEncoder.Location = new System.Drawing.Point(21, 63); this.cboxEncoder.Name = "cboxEncoder"; this.cboxEncoder.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.cboxEncoder.Size = new System.Drawing.Size(114, 78); @@ -1813,7 +2288,7 @@ private void InitializeComponent() this.cboxPressureSensor.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.cboxPressureSensor.ForeColor = System.Drawing.SystemColors.ControlText; this.cboxPressureSensor.Image = global::AgOpenGPS.Properties.Resources.ConSt_TurnSensorPressure; - this.cboxPressureSensor.Location = new System.Drawing.Point(234, 37); + this.cboxPressureSensor.Location = new System.Drawing.Point(188, 63); this.cboxPressureSensor.Name = "cboxPressureSensor"; this.cboxPressureSensor.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.cboxPressureSensor.Size = new System.Drawing.Size(114, 78); @@ -1843,10 +2318,10 @@ private void InitializeComponent() this.tabConfig.Controls.Add(this.chkSteerInvertRelays); this.tabConfig.Controls.Add(this.cboxDanfoss); this.tabConfig.ImageIndex = 1; - this.tabConfig.Location = new System.Drawing.Point(4, 68); + this.tabConfig.Location = new System.Drawing.Point(4, 52); this.tabConfig.Name = "tabConfig"; this.tabConfig.Padding = new System.Windows.Forms.Padding(3); - this.tabConfig.Size = new System.Drawing.Size(623, 495); + this.tabConfig.Size = new System.Drawing.Size(512, 469); this.tabConfig.TabIndex = 1; // // chkInvertWAS @@ -1861,7 +2336,7 @@ private void InitializeComponent() this.chkInvertWAS.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkInvertWAS.ForeColor = System.Drawing.SystemColors.ControlText; this.chkInvertWAS.Image = global::AgOpenGPS.Properties.Resources.ConSt_InvertWAS; - this.chkInvertWAS.Location = new System.Drawing.Point(184, 73); + this.chkInvertWAS.Location = new System.Drawing.Point(165, 57); this.chkInvertWAS.Name = "chkInvertWAS"; this.chkInvertWAS.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkInvertWAS.Size = new System.Drawing.Size(109, 78); @@ -1880,7 +2355,7 @@ private void InitializeComponent() this.chkInvertSteer.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkInvertSteer.ForeColor = System.Drawing.SystemColors.ControlText; this.chkInvertSteer.Image = global::AgOpenGPS.Properties.Resources.ConSt_InvertDirection; - this.chkInvertSteer.Location = new System.Drawing.Point(184, 208); + this.chkInvertSteer.Location = new System.Drawing.Point(165, 192); this.chkInvertSteer.Name = "chkInvertSteer"; this.chkInvertSteer.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkInvertSteer.Size = new System.Drawing.Size(109, 78); @@ -1899,7 +2374,7 @@ private void InitializeComponent() this.chkSteerInvertRelays.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkSteerInvertRelays.ForeColor = System.Drawing.SystemColors.ControlText; this.chkSteerInvertRelays.Image = global::AgOpenGPS.Properties.Resources.ConSt_InvertRelay; - this.chkSteerInvertRelays.Location = new System.Drawing.Point(184, 340); + this.chkSteerInvertRelays.Location = new System.Drawing.Point(165, 324); this.chkSteerInvertRelays.Name = "chkSteerInvertRelays"; this.chkSteerInvertRelays.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkSteerInvertRelays.Size = new System.Drawing.Size(109, 78); @@ -1918,7 +2393,7 @@ private void InitializeComponent() this.cboxDanfoss.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.cboxDanfoss.ForeColor = System.Drawing.SystemColors.ControlText; this.cboxDanfoss.Image = global::AgOpenGPS.Properties.Resources.ConSt_Danfoss; - this.cboxDanfoss.Location = new System.Drawing.Point(12, 66); + this.cboxDanfoss.Location = new System.Drawing.Point(9, 57); this.cboxDanfoss.Name = "cboxDanfoss"; this.cboxDanfoss.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.cboxDanfoss.Size = new System.Drawing.Size(114, 78); @@ -1940,26 +2415,23 @@ private void InitializeComponent() this.tabSettings.Controls.Add(this.label34); this.tabSettings.Controls.Add(this.lblSideHillComp); this.tabSettings.Controls.Add(this.label22); - this.tabSettings.Controls.Add(this.label16); - this.tabSettings.Controls.Add(this.label31); this.tabSettings.Controls.Add(this.cboxSteerInReverse); this.tabSettings.Controls.Add(this.btnStanleyPure); - this.tabSettings.Controls.Add(this.nudPanicStopSpeed); this.tabSettings.ImageIndex = 2; - this.tabSettings.Location = new System.Drawing.Point(4, 68); + this.tabSettings.Location = new System.Drawing.Point(4, 52); this.tabSettings.Name = "tabSettings"; this.tabSettings.Padding = new System.Windows.Forms.Padding(3); - this.tabSettings.Size = new System.Drawing.Size(623, 495); + this.tabSettings.Size = new System.Drawing.Size(512, 469); this.tabSettings.TabIndex = 2; this.tabSettings.Enter += new System.EventHandler(this.tabSettings_Enter); this.tabSettings.Leave += new System.EventHandler(this.tabSettings_Leave); // // label156 // - this.label156.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label156.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label156.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; this.label156.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label156.Location = new System.Drawing.Point(234, 329); + this.label156.Location = new System.Drawing.Point(287, 294); this.label156.Name = "label156"; this.label156.Size = new System.Drawing.Size(159, 22); this.label156.TabIndex = 534; @@ -1973,7 +2445,7 @@ private void InitializeComponent() this.label41.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label41.ForeColor = System.Drawing.Color.Black; this.label41.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label41.Location = new System.Drawing.Point(454, 115); + this.label41.Location = new System.Drawing.Point(426, 103); this.label41.Name = "label41"; this.label41.Size = new System.Drawing.Size(18, 16); this.label41.TabIndex = 532; @@ -1987,7 +2459,7 @@ private void InitializeComponent() this.label39.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label39.ForeColor = System.Drawing.Color.Black; this.label39.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label39.Location = new System.Drawing.Point(140, 115); + this.label39.Location = new System.Drawing.Point(112, 103); this.label39.Name = "label39"; this.label39.Size = new System.Drawing.Size(27, 16); this.label39.TabIndex = 531; @@ -1997,7 +2469,7 @@ private void InitializeComponent() // hsbarUTurnCompensation // this.hsbarUTurnCompensation.LargeChange = 1; - this.hsbarUTurnCompensation.Location = new System.Drawing.Point(137, 58); + this.hsbarUTurnCompensation.Location = new System.Drawing.Point(109, 46); this.hsbarUTurnCompensation.Maximum = 20; this.hsbarUTurnCompensation.Minimum = 2; this.hsbarUTurnCompensation.Name = "hsbarUTurnCompensation"; @@ -2010,7 +2482,7 @@ private void InitializeComponent() // this.lblUTurnCompensation.Font = new System.Drawing.Font("Tahoma", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lblUTurnCompensation.ForeColor = System.Drawing.Color.Black; - this.lblUTurnCompensation.Location = new System.Drawing.Point(46, 68); + this.lblUTurnCompensation.Location = new System.Drawing.Point(18, 56); this.lblUTurnCompensation.Name = "lblUTurnCompensation"; this.lblUTurnCompensation.Size = new System.Drawing.Size(88, 35); this.lblUTurnCompensation.TabIndex = 530; @@ -2019,9 +2491,9 @@ private void InitializeComponent() // // label40 // - this.label40.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label40.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label40.ForeColor = System.Drawing.Color.Black; - this.label40.Location = new System.Drawing.Point(137, 37); + this.label40.Location = new System.Drawing.Point(109, 25); this.label40.Name = "label40"; this.label40.Size = new System.Drawing.Size(339, 19); this.label40.TabIndex = 528; @@ -2039,7 +2511,7 @@ private void InitializeComponent() this.cboxSteerInReverse.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.cboxSteerInReverse.ForeColor = System.Drawing.SystemColors.ControlText; this.cboxSteerInReverse.Image = global::AgOpenGPS.Properties.Resources.ConV_RevSteer; - this.cboxSteerInReverse.Location = new System.Drawing.Point(270, 352); + this.cboxSteerInReverse.Location = new System.Drawing.Point(323, 318); this.cboxSteerInReverse.Name = "cboxSteerInReverse"; this.cboxSteerInReverse.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.cboxSteerInReverse.Size = new System.Drawing.Size(86, 90); @@ -2058,7 +2530,7 @@ private void InitializeComponent() this.btnStanleyPure.ForeColor = System.Drawing.Color.Black; this.btnStanleyPure.Image = global::AgOpenGPS.Properties.Resources.ModeStanley; this.btnStanleyPure.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnStanleyPure.Location = new System.Drawing.Point(49, 352); + this.btnStanleyPure.Location = new System.Drawing.Point(153, 318); this.btnStanleyPure.Margin = new System.Windows.Forms.Padding(0); this.btnStanleyPure.Name = "btnStanleyPure"; this.btnStanleyPure.RightToLeft = System.Windows.Forms.RightToLeft.No; @@ -2067,191 +2539,75 @@ private void InitializeComponent() this.btnStanleyPure.UseVisualStyleBackColor = false; this.btnStanleyPure.Click += new System.EventHandler(this.btnStanleyPure_Click); // - // nudPanicStopSpeed - // - this.nudPanicStopSpeed.BackColor = System.Drawing.Color.White; - this.nudPanicStopSpeed.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudPanicStopSpeed.InterceptArrowKeys = false; - this.nudPanicStopSpeed.Location = new System.Drawing.Point(457, 372); - this.nudPanicStopSpeed.Maximum = new decimal(new int[] { - 99, - 0, - 0, - 0}); - this.nudPanicStopSpeed.Name = "nudPanicStopSpeed"; - this.nudPanicStopSpeed.ReadOnly = true; - this.nudPanicStopSpeed.Size = new System.Drawing.Size(107, 52); - this.nudPanicStopSpeed.TabIndex = 519; - this.nudPanicStopSpeed.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.nudPanicStopSpeed.Value = new decimal(new int[] { - 15, - 0, - 0, - 0}); - this.nudPanicStopSpeed.Click += new System.EventHandler(this.nudPanicStopSpeed_Click); - // // tabAlarm // this.tabAlarm.BackColor = System.Drawing.Color.Gainsboro; - this.tabAlarm.Controls.Add(this.label110); - this.tabAlarm.Controls.Add(this.label44); - this.tabAlarm.Controls.Add(this.label109); - this.tabAlarm.Controls.Add(this.label43); - this.tabAlarm.Controls.Add(this.label107); - this.tabAlarm.Controls.Add(this.label108); this.tabAlarm.Controls.Add(this.label165); this.tabAlarm.Controls.Add(this.label166); this.tabAlarm.Controls.Add(this.label42); this.tabAlarm.Controls.Add(this.label163); this.tabAlarm.Controls.Add(this.label160); this.tabAlarm.Controls.Add(this.label161); - this.tabAlarm.Controls.Add(this.label159); - this.tabAlarm.Controls.Add(this.label162); - this.tabAlarm.Controls.Add(this.pictureBox5); - this.tabAlarm.Controls.Add(this.pictureBox2); - this.tabAlarm.Controls.Add(this.pictureBox12); this.tabAlarm.Controls.Add(this.pictureBox17); this.tabAlarm.Controls.Add(this.pictureBox16); - this.tabAlarm.Controls.Add(this.pictureBox15); this.tabAlarm.Controls.Add(this.pictureBox10); - this.tabAlarm.Controls.Add(this.nudLineWidth); - this.tabAlarm.Controls.Add(this.nudSnapDistance); - this.tabAlarm.Controls.Add(this.nudGuidanceLookAhead); this.tabAlarm.Controls.Add(this.nudMinSteerSpeed); this.tabAlarm.Controls.Add(this.nudMaxSteerSpeed); - this.tabAlarm.Controls.Add(this.nudMaxAngularVelocity); this.tabAlarm.Controls.Add(this.nudGuidanceSpeedLimit); this.tabAlarm.ImageIndex = 3; - this.tabAlarm.Location = new System.Drawing.Point(4, 68); + this.tabAlarm.Location = new System.Drawing.Point(4, 52); this.tabAlarm.Name = "tabAlarm"; - this.tabAlarm.Size = new System.Drawing.Size(623, 495); + this.tabAlarm.Size = new System.Drawing.Size(512, 469); this.tabAlarm.TabIndex = 3; this.tabAlarm.Enter += new System.EventHandler(this.tabAlarm_Enter); this.tabAlarm.Leave += new System.EventHandler(this.tabAlarm_Leave); // - // label110 + // label165 // - this.label110.AutoSize = true; - this.label110.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label110.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label110.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label110.Location = new System.Drawing.Point(34, 15); - this.label110.Name = "label110"; - this.label110.Size = new System.Drawing.Size(75, 18); - this.label110.TabIndex = 523; - this.label110.Text = "Line Width"; - this.label110.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.label165.AutoSize = true; + this.label165.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label165.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; + this.label165.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label165.Location = new System.Drawing.Point(121, 249); + this.label165.Name = "label165"; + this.label165.Size = new System.Drawing.Size(93, 19); + this.label165.TabIndex = 504; + this.label165.Text = "Min Speed"; + this.label165.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // - // label44 + // label166 // - this.label44.AutoSize = true; - this.label44.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label44.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label44.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label44.Location = new System.Drawing.Point(170, 94); - this.label44.Name = "label44"; - this.label44.Size = new System.Drawing.Size(43, 18); - this.label44.TabIndex = 522; - this.label44.Text = "pixels"; - this.label44.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.label166.AutoSize = true; + this.label166.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label166.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; + this.label166.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label166.Location = new System.Drawing.Point(149, 409); + this.label166.Name = "label166"; + this.label166.Size = new System.Drawing.Size(36, 18); + this.label166.TabIndex = 507; + this.label166.Text = "kmh"; + this.label166.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // - // label109 + // label42 // - this.label109.AutoSize = true; - this.label109.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label109.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label109.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label109.Location = new System.Drawing.Point(349, 15); - this.label109.Name = "label109"; - this.label109.Size = new System.Drawing.Size(110, 18); - this.label109.TabIndex = 519; - this.label109.Text = "Nudge Distance"; - this.label109.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.label42.AutoSize = true; + this.label42.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label42.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; + this.label42.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label42.Location = new System.Drawing.Point(308, 251); + this.label42.Name = "label42"; + this.label42.Size = new System.Drawing.Size(98, 19); + this.label42.TabIndex = 500; + this.label42.Text = "Max Speed"; + this.label42.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // - // label43 - // - this.label43.AutoSize = true; - this.label43.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label43.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label43.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label43.Location = new System.Drawing.Point(498, 94); - this.label43.Name = "label43"; - this.label43.Size = new System.Drawing.Size(28, 18); - this.label43.TabIndex = 518; - this.label43.Text = "cm"; - this.label43.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // label107 - // - this.label107.AutoSize = true; - this.label107.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label107.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label107.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label107.Location = new System.Drawing.Point(174, 246); - this.label107.Name = "label107"; - this.label107.Size = new System.Drawing.Size(62, 18); - this.label107.TabIndex = 513; - this.label107.Text = "Seconds"; - this.label107.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // label108 - // - this.label108.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label108.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label108.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label108.Location = new System.Drawing.Point(10, 163); - this.label108.Name = "label108"; - this.label108.Size = new System.Drawing.Size(259, 24); - this.label108.TabIndex = 514; - this.label108.Text = "Next Guidance Line Search Time"; - this.label108.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // label165 - // - this.label165.AutoSize = true; - this.label165.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label165.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label165.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label165.Location = new System.Drawing.Point(196, 312); - this.label165.Name = "label165"; - this.label165.Size = new System.Drawing.Size(75, 18); - this.label165.TabIndex = 504; - this.label165.Text = "Min Speed"; - this.label165.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // label166 - // - this.label166.AutoSize = true; - this.label166.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label166.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label166.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label166.Location = new System.Drawing.Point(211, 470); - this.label166.Name = "label166"; - this.label166.Size = new System.Drawing.Size(36, 18); - this.label166.TabIndex = 507; - this.label166.Text = "kmh"; - this.label166.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // label42 - // - this.label42.AutoSize = true; - this.label42.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label42.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label42.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label42.Location = new System.Drawing.Point(353, 312); - this.label42.Name = "label42"; - this.label42.Size = new System.Drawing.Size(81, 18); - this.label42.TabIndex = 500; - this.label42.Text = "Max Speed"; - this.label42.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // label163 + // label163 // this.label163.AutoSize = true; this.label163.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label163.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; this.label163.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label163.Location = new System.Drawing.Point(369, 470); + this.label163.Location = new System.Drawing.Point(339, 409); this.label163.Name = "label163"; this.label163.Size = new System.Drawing.Size(36, 18); this.label163.TabIndex = 503; @@ -2264,7 +2620,7 @@ private void InitializeComponent() this.label160.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label160.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; this.label160.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label160.Location = new System.Drawing.Point(38, 469); + this.label160.Location = new System.Drawing.Point(244, 195); this.label160.Name = "label160"; this.label160.Size = new System.Drawing.Size(38, 18); this.label160.TabIndex = 494; @@ -2274,77 +2630,21 @@ private void InitializeComponent() // label161 // this.label161.AutoSize = true; - this.label161.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label161.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label161.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; this.label161.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label161.Location = new System.Drawing.Point(18, 312); + this.label161.Location = new System.Drawing.Point(203, 38); this.label161.Name = "label161"; - this.label161.Size = new System.Drawing.Size(97, 18); + this.label161.Size = new System.Drawing.Size(119, 19); this.label161.TabIndex = 499; this.label161.Text = "Manual Turns"; this.label161.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // - // label159 - // - this.label159.AutoSize = true; - this.label159.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label159.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label159.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label159.Location = new System.Drawing.Point(502, 313); - this.label159.Name = "label159"; - this.label159.Size = new System.Drawing.Size(107, 18); - this.label159.TabIndex = 495; - this.label159.Text = "Max Turn Rate"; - this.label159.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // label162 - // - this.label162.AutoSize = true; - this.label162.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label162.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; - this.label162.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label162.Location = new System.Drawing.Point(508, 470); - this.label162.Name = "label162"; - this.label162.Size = new System.Drawing.Size(90, 18); - this.label162.TabIndex = 498; - this.label162.Text = "Degrees/sec"; - this.label162.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // pictureBox5 - // - this.pictureBox5.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConV_LineWith; - this.pictureBox5.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.pictureBox5.Location = new System.Drawing.Point(14, 37); - this.pictureBox5.Name = "pictureBox5"; - this.pictureBox5.Size = new System.Drawing.Size(118, 75); - this.pictureBox5.TabIndex = 521; - this.pictureBox5.TabStop = false; - // - // pictureBox2 - // - this.pictureBox2.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConV_SnapDistance; - this.pictureBox2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.pictureBox2.Location = new System.Drawing.Point(341, 37); - this.pictureBox2.Name = "pictureBox2"; - this.pictureBox2.Size = new System.Drawing.Size(118, 75); - this.pictureBox2.TabIndex = 517; - this.pictureBox2.TabStop = false; - // - // pictureBox12 - // - this.pictureBox12.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConV_GuidanceLookAhead; - this.pictureBox12.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.pictureBox12.Location = new System.Drawing.Point(11, 189); - this.pictureBox12.Name = "pictureBox12"; - this.pictureBox12.Size = new System.Drawing.Size(118, 75); - this.pictureBox12.TabIndex = 515; - this.pictureBox12.TabStop = false; - // // pictureBox17 // this.pictureBox17.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConV_MinAutoSteer; this.pictureBox17.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.pictureBox17.Location = new System.Drawing.Point(171, 334); + this.pictureBox17.Location = new System.Drawing.Point(108, 273); this.pictureBox17.Name = "pictureBox17"; this.pictureBox17.Size = new System.Drawing.Size(118, 75); this.pictureBox17.TabIndex = 506; @@ -2354,119 +2654,29 @@ private void InitializeComponent() // this.pictureBox16.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConV_MaxAutoSteer; this.pictureBox16.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.pictureBox16.Location = new System.Drawing.Point(334, 334); + this.pictureBox16.Location = new System.Drawing.Point(298, 273); this.pictureBox16.Name = "pictureBox16"; this.pictureBox16.Size = new System.Drawing.Size(118, 75); this.pictureBox16.TabIndex = 502; this.pictureBox16.TabStop = false; // - // pictureBox15 - // - this.pictureBox15.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.pictureBox15.Image = global::AgOpenGPS.Properties.Resources.ConV_MaxAngVel; - this.pictureBox15.Location = new System.Drawing.Point(497, 334); - this.pictureBox15.Name = "pictureBox15"; - this.pictureBox15.Size = new System.Drawing.Size(118, 75); - this.pictureBox15.TabIndex = 497; - this.pictureBox15.TabStop = false; - // // pictureBox10 // this.pictureBox10.BackgroundImage = global::AgOpenGPS.Properties.Resources.con_VehicleFunctionSpeedLimit; this.pictureBox10.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.pictureBox10.Location = new System.Drawing.Point(8, 334); + this.pictureBox10.Location = new System.Drawing.Point(203, 60); this.pictureBox10.Name = "pictureBox10"; this.pictureBox10.Size = new System.Drawing.Size(118, 74); this.pictureBox10.TabIndex = 493; this.pictureBox10.TabStop = false; // - // nudLineWidth - // - this.nudLineWidth.BackColor = System.Drawing.Color.White; - this.nudLineWidth.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudLineWidth.InterceptArrowKeys = false; - this.nudLineWidth.Location = new System.Drawing.Point(142, 39); - this.nudLineWidth.Maximum = new decimal(new int[] { - 8, - 0, - 0, - 0}); - this.nudLineWidth.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.nudLineWidth.Name = "nudLineWidth"; - this.nudLineWidth.ReadOnly = true; - this.nudLineWidth.Size = new System.Drawing.Size(110, 52); - this.nudLineWidth.TabIndex = 520; - this.nudLineWidth.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.nudLineWidth.Value = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.nudLineWidth.Click += new System.EventHandler(this.nudLineWidth_Click); - // - // nudSnapDistance - // - this.nudSnapDistance.BackColor = System.Drawing.Color.White; - this.nudSnapDistance.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudSnapDistance.InterceptArrowKeys = false; - this.nudSnapDistance.Location = new System.Drawing.Point(470, 39); - this.nudSnapDistance.Maximum = new decimal(new int[] { - 1000, - 0, - 0, - 0}); - this.nudSnapDistance.Name = "nudSnapDistance"; - this.nudSnapDistance.ReadOnly = true; - this.nudSnapDistance.Size = new System.Drawing.Size(110, 52); - this.nudSnapDistance.TabIndex = 516; - this.nudSnapDistance.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.nudSnapDistance.Value = new decimal(new int[] { - 499, - 0, - 0, - 0}); - this.nudSnapDistance.Click += new System.EventHandler(this.nudSnapDistance_Click); - // - // nudGuidanceLookAhead - // - this.nudGuidanceLookAhead.BackColor = System.Drawing.Color.White; - this.nudGuidanceLookAhead.DecimalPlaces = 1; - this.nudGuidanceLookAhead.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudGuidanceLookAhead.InterceptArrowKeys = false; - this.nudGuidanceLookAhead.Location = new System.Drawing.Point(141, 191); - this.nudGuidanceLookAhead.Maximum = new decimal(new int[] { - 10, - 0, - 0, - 0}); - this.nudGuidanceLookAhead.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 65536}); - this.nudGuidanceLookAhead.Name = "nudGuidanceLookAhead"; - this.nudGuidanceLookAhead.ReadOnly = true; - this.nudGuidanceLookAhead.Size = new System.Drawing.Size(132, 52); - this.nudGuidanceLookAhead.TabIndex = 512; - this.nudGuidanceLookAhead.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.nudGuidanceLookAhead.Value = new decimal(new int[] { - 10, - 0, - 0, - 0}); - this.nudGuidanceLookAhead.Click += new System.EventHandler(this.nudGuidanceLookAhead_Click); - // // nudMinSteerSpeed // this.nudMinSteerSpeed.BackColor = System.Drawing.Color.White; this.nudMinSteerSpeed.DecimalPlaces = 1; this.nudMinSteerSpeed.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.nudMinSteerSpeed.InterceptArrowKeys = false; - this.nudMinSteerSpeed.Location = new System.Drawing.Point(177, 415); + this.nudMinSteerSpeed.Location = new System.Drawing.Point(112, 354); this.nudMinSteerSpeed.Maximum = new decimal(new int[] { 10, 0, @@ -2489,7 +2699,7 @@ private void InitializeComponent() this.nudMaxSteerSpeed.BackColor = System.Drawing.Color.White; this.nudMaxSteerSpeed.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.nudMaxSteerSpeed.InterceptArrowKeys = false; - this.nudMaxSteerSpeed.Location = new System.Drawing.Point(342, 415); + this.nudMaxSteerSpeed.Location = new System.Drawing.Point(302, 354); this.nudMaxSteerSpeed.Maximum = new decimal(new int[] { 50, 0, @@ -2507,40 +2717,12 @@ private void InitializeComponent() 0}); this.nudMaxSteerSpeed.Click += new System.EventHandler(this.nudMaxSteerSpeed_Click); // - // nudMaxAngularVelocity - // - this.nudMaxAngularVelocity.BackColor = System.Drawing.Color.White; - this.nudMaxAngularVelocity.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudMaxAngularVelocity.InterceptArrowKeys = false; - this.nudMaxAngularVelocity.Location = new System.Drawing.Point(503, 415); - this.nudMaxAngularVelocity.Maximum = new decimal(new int[] { - 200, - 0, - 0, - 0}); - this.nudMaxAngularVelocity.Minimum = new decimal(new int[] { - 5, - 0, - 0, - 0}); - this.nudMaxAngularVelocity.Name = "nudMaxAngularVelocity"; - this.nudMaxAngularVelocity.ReadOnly = true; - this.nudMaxAngularVelocity.Size = new System.Drawing.Size(110, 52); - this.nudMaxAngularVelocity.TabIndex = 496; - this.nudMaxAngularVelocity.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.nudMaxAngularVelocity.Value = new decimal(new int[] { - 25, - 0, - 0, - 0}); - this.nudMaxAngularVelocity.Click += new System.EventHandler(this.nudMaxAngularVelocity_Click); - // // nudGuidanceSpeedLimit // this.nudGuidanceSpeedLimit.BackColor = System.Drawing.Color.White; this.nudGuidanceSpeedLimit.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.nudGuidanceSpeedLimit.InterceptArrowKeys = false; - this.nudGuidanceSpeedLimit.Location = new System.Drawing.Point(12, 414); + this.nudGuidanceSpeedLimit.Location = new System.Drawing.Point(207, 140); this.nudGuidanceSpeedLimit.Maximum = new decimal(new int[] { 20, 0, @@ -2562,65 +2744,59 @@ private void InitializeComponent() // this.tabOnTheLine.BackColor = System.Drawing.Color.Gainsboro; this.tabOnTheLine.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; - this.tabOnTheLine.Controls.Add(this.label54); - this.tabOnTheLine.Controls.Add(this.nudDeadZoneDelay); + this.tabOnTheLine.Controls.Add(this.label110); + this.tabOnTheLine.Controls.Add(this.label44); this.tabOnTheLine.Controls.Add(this.label52); - this.tabOnTheLine.Controls.Add(this.label49); + this.tabOnTheLine.Controls.Add(this.label109); this.tabOnTheLine.Controls.Add(this.chkDisplayLightbar); - this.tabOnTheLine.Controls.Add(this.label51); + this.tabOnTheLine.Controls.Add(this.label43); this.tabOnTheLine.Controls.Add(this.groupBox6); this.tabOnTheLine.Controls.Add(this.label45); + this.tabOnTheLine.Controls.Add(this.label107); this.tabOnTheLine.Controls.Add(this.label46); this.tabOnTheLine.Controls.Add(this.pictureBox1); + this.tabOnTheLine.Controls.Add(this.label108); + this.tabOnTheLine.Controls.Add(this.pictureBox2); + this.tabOnTheLine.Controls.Add(this.pictureBox12); + this.tabOnTheLine.Controls.Add(this.pictureBox5); this.tabOnTheLine.Controls.Add(this.nudcmPerPixel); - this.tabOnTheLine.Controls.Add(this.nudDeadZoneHeading); + this.tabOnTheLine.Controls.Add(this.nudLineWidth); + this.tabOnTheLine.Controls.Add(this.nudSnapDistance); + this.tabOnTheLine.Controls.Add(this.nudGuidanceLookAhead); this.tabOnTheLine.ImageIndex = 4; - this.tabOnTheLine.Location = new System.Drawing.Point(4, 68); + this.tabOnTheLine.Location = new System.Drawing.Point(4, 52); this.tabOnTheLine.Name = "tabOnTheLine"; this.tabOnTheLine.Padding = new System.Windows.Forms.Padding(3); - this.tabOnTheLine.Size = new System.Drawing.Size(623, 495); + this.tabOnTheLine.Size = new System.Drawing.Size(512, 469); this.tabOnTheLine.TabIndex = 4; + this.tabOnTheLine.Enter += new System.EventHandler(this.tabOnTheLine_Enter); + this.tabOnTheLine.Leave += new System.EventHandler(this.tabOnTheLine_Leave); // - // label54 + // label110 // - this.label54.BackColor = System.Drawing.Color.Transparent; - this.label54.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label54.ForeColor = System.Drawing.Color.Black; - this.label54.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label54.Location = new System.Drawing.Point(352, 430); - this.label54.Name = "label54"; - this.label54.Size = new System.Drawing.Size(123, 22); - this.label54.TabIndex = 543; - this.label54.Text = "On Delay (sec)"; - this.label54.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.label110.AutoSize = true; + this.label110.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label110.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; + this.label110.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label110.Location = new System.Drawing.Point(28, 22); + this.label110.Name = "label110"; + this.label110.Size = new System.Drawing.Size(96, 19); + this.label110.TabIndex = 523; + this.label110.Text = "Line Width"; + this.label110.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // - // nudDeadZoneDelay + // label44 // - this.nudDeadZoneDelay.BackColor = System.Drawing.Color.White; - this.nudDeadZoneDelay.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudDeadZoneDelay.InterceptArrowKeys = false; - this.nudDeadZoneDelay.Location = new System.Drawing.Point(360, 376); - this.nudDeadZoneDelay.Maximum = new decimal(new int[] { - 10, - 0, - 0, - 0}); - this.nudDeadZoneDelay.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.nudDeadZoneDelay.Name = "nudDeadZoneDelay"; - this.nudDeadZoneDelay.ReadOnly = true; - this.nudDeadZoneDelay.Size = new System.Drawing.Size(107, 52); - this.nudDeadZoneDelay.TabIndex = 542; - this.nudDeadZoneDelay.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.nudDeadZoneDelay.Value = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.nudDeadZoneDelay.Click += new System.EventHandler(this.nudDeadZoneDelay_Click); + this.label44.AutoSize = true; + this.label44.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label44.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; + this.label44.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label44.Location = new System.Drawing.Point(171, 95); + this.label44.Name = "label44"; + this.label44.Size = new System.Drawing.Size(43, 18); + this.label44.TabIndex = 522; + this.label44.Text = "pixels"; + this.label44.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // label52 // @@ -2629,24 +2805,24 @@ private void InitializeComponent() this.label52.BackColor = System.Drawing.Color.Transparent; this.label52.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label52.ForeColor = System.Drawing.Color.Black; - this.label52.Location = new System.Drawing.Point(128, 282); + this.label52.Location = new System.Drawing.Point(78, 433); this.label52.Name = "label52"; this.label52.Size = new System.Drawing.Size(58, 19); this.label52.TabIndex = 534; this.label52.Text = "On/Off"; // - // label49 + // label109 // - this.label49.BackColor = System.Drawing.Color.Transparent; - this.label49.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label49.ForeColor = System.Drawing.Color.Black; - this.label49.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label49.Location = new System.Drawing.Point(176, 431); - this.label49.Name = "label49"; - this.label49.Size = new System.Drawing.Size(159, 22); - this.label49.TabIndex = 539; - this.label49.Text = "Heading (Degree)"; - this.label49.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.label109.AutoSize = true; + this.label109.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label109.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; + this.label109.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label109.Location = new System.Drawing.Point(276, 22); + this.label109.Name = "label109"; + this.label109.Size = new System.Drawing.Size(136, 19); + this.label109.TabIndex = 519; + this.label109.Text = "Nudge Distance"; + this.label109.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // chkDisplayLightbar // @@ -2660,7 +2836,7 @@ private void InitializeComponent() this.chkDisplayLightbar.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.chkDisplayLightbar.ForeColor = System.Drawing.SystemColors.ControlText; this.chkDisplayLightbar.Image = global::AgOpenGPS.Properties.Resources.SwitchOn; - this.chkDisplayLightbar.Location = new System.Drawing.Point(109, 207); + this.chkDisplayLightbar.Location = new System.Drawing.Point(55, 355); this.chkDisplayLightbar.Name = "chkDisplayLightbar"; this.chkDisplayLightbar.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.chkDisplayLightbar.Size = new System.Drawing.Size(100, 74); @@ -2669,6 +2845,19 @@ private void InitializeComponent() this.chkDisplayLightbar.UseVisualStyleBackColor = false; this.chkDisplayLightbar.Click += new System.EventHandler(this.chkDisplayLightbar_Click); // + // label43 + // + this.label43.AutoSize = true; + this.label43.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label43.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; + this.label43.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label43.Location = new System.Drawing.Point(437, 95); + this.label43.Name = "label43"; + this.label43.Size = new System.Drawing.Size(28, 18); + this.label43.TabIndex = 518; + this.label43.Text = "cm"; + this.label43.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // // groupBox6 // this.groupBox6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -2679,9 +2868,9 @@ private void InitializeComponent() this.groupBox6.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.groupBox6.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.groupBox6.ForeColor = System.Drawing.Color.Black; - this.groupBox6.Location = new System.Drawing.Point(236, 165); + this.groupBox6.Location = new System.Drawing.Point(206, 315); this.groupBox6.Name = "groupBox6"; - this.groupBox6.Size = new System.Drawing.Size(357, 158); + this.groupBox6.Size = new System.Drawing.Size(277, 139); this.groupBox6.TabIndex = 528; this.groupBox6.TabStop = false; this.groupBox6.Text = "Guidance Bar"; @@ -2698,7 +2887,7 @@ private void InitializeComponent() this.rbtnSteerBar.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.rbtnSteerBar.ForeColor = System.Drawing.SystemColors.ControlText; this.rbtnSteerBar.Image = global::AgOpenGPS.Properties.Resources.ConD_SteerBarBar; - this.rbtnSteerBar.Location = new System.Drawing.Point(207, 40); + this.rbtnSteerBar.Location = new System.Drawing.Point(150, 40); this.rbtnSteerBar.Name = "rbtnSteerBar"; this.rbtnSteerBar.Size = new System.Drawing.Size(121, 74); this.rbtnSteerBar.TabIndex = 469; @@ -2714,7 +2903,7 @@ private void InitializeComponent() this.label48.BackColor = System.Drawing.Color.Transparent; this.label48.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label48.ForeColor = System.Drawing.Color.Black; - this.label48.Location = new System.Drawing.Point(231, 117); + this.label48.Location = new System.Drawing.Point(174, 118); this.label48.Name = "label48"; this.label48.Size = new System.Drawing.Size(73, 19); this.label48.TabIndex = 533; @@ -2731,7 +2920,7 @@ private void InitializeComponent() this.rbtnLightBar.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.rbtnLightBar.ForeColor = System.Drawing.SystemColors.ControlText; this.rbtnLightBar.Image = global::AgOpenGPS.Properties.Resources.ConD_LightBar; - this.rbtnLightBar.Location = new System.Drawing.Point(32, 40); + this.rbtnLightBar.Location = new System.Drawing.Point(11, 40); this.rbtnLightBar.Name = "rbtnLightBar"; this.rbtnLightBar.Size = new System.Drawing.Size(121, 74); this.rbtnLightBar.TabIndex = 468; @@ -2746,7 +2935,7 @@ private void InitializeComponent() this.label50.BackColor = System.Drawing.Color.Transparent; this.label50.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label50.ForeColor = System.Drawing.Color.Black; - this.label50.Location = new System.Drawing.Point(56, 117); + this.label50.Location = new System.Drawing.Point(35, 118); this.label50.Name = "label50"; this.label50.Size = new System.Drawing.Size(67, 19); this.label50.TabIndex = 520; @@ -2755,23 +2944,36 @@ private void InitializeComponent() // label45 // this.label45.AutoSize = true; - this.label45.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label45.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label45.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; this.label45.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label45.Location = new System.Drawing.Point(287, 99); + this.label45.Location = new System.Drawing.Point(289, 167); this.label45.Name = "label45"; - this.label45.Size = new System.Drawing.Size(96, 19); + this.label45.Size = new System.Drawing.Size(111, 19); this.label45.TabIndex = 527; this.label45.Text = "cm Per Pixel"; this.label45.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // + // label107 + // + this.label107.AutoSize = true; + this.label107.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label107.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; + this.label107.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label107.Location = new System.Drawing.Point(160, 245); + this.label107.Name = "label107"; + this.label107.Size = new System.Drawing.Size(62, 18); + this.label107.TabIndex = 513; + this.label107.Text = "Seconds"; + this.label107.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // // label46 // this.label46.AutoSize = true; this.label46.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label46.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; this.label46.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label46.Location = new System.Drawing.Point(486, 86); + this.label46.Location = new System.Drawing.Point(436, 242); this.label46.Name = "label46"; this.label46.Size = new System.Drawing.Size(30, 19); this.label46.TabIndex = 526; @@ -2782,18 +2984,60 @@ private void InitializeComponent() // this.pictureBox1.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConV_CmPixel; this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.pictureBox1.Location = new System.Drawing.Point(276, 21); + this.pictureBox1.Location = new System.Drawing.Point(285, 190); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(118, 75); this.pictureBox1.TabIndex = 525; this.pictureBox1.TabStop = false; // + // label108 + // + this.label108.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label108.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; + this.label108.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.label108.Location = new System.Drawing.Point(10, 164); + this.label108.Name = "label108"; + this.label108.Size = new System.Drawing.Size(236, 24); + this.label108.TabIndex = 514; + this.label108.Text = "Next Guidance Line Search Time"; + this.label108.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pictureBox2 + // + this.pictureBox2.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConV_SnapDistance; + this.pictureBox2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.pictureBox2.Location = new System.Drawing.Point(285, 44); + this.pictureBox2.Name = "pictureBox2"; + this.pictureBox2.Size = new System.Drawing.Size(118, 75); + this.pictureBox2.TabIndex = 517; + this.pictureBox2.TabStop = false; + // + // pictureBox12 + // + this.pictureBox12.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConV_GuidanceLookAhead; + this.pictureBox12.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.pictureBox12.Location = new System.Drawing.Point(17, 190); + this.pictureBox12.Name = "pictureBox12"; + this.pictureBox12.Size = new System.Drawing.Size(118, 75); + this.pictureBox12.TabIndex = 515; + this.pictureBox12.TabStop = false; + // + // pictureBox5 + // + this.pictureBox5.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConV_LineWith; + this.pictureBox5.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.pictureBox5.Location = new System.Drawing.Point(17, 44); + this.pictureBox5.Name = "pictureBox5"; + this.pictureBox5.Size = new System.Drawing.Size(118, 75); + this.pictureBox5.TabIndex = 521; + this.pictureBox5.TabStop = false; + // // nudcmPerPixel // this.nudcmPerPixel.BackColor = System.Drawing.Color.White; - this.nudcmPerPixel.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudcmPerPixel.Font = new System.Drawing.Font("Tahoma", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.nudcmPerPixel.InterceptArrowKeys = false; - this.nudcmPerPixel.Location = new System.Drawing.Point(446, 31); + this.nudcmPerPixel.Location = new System.Drawing.Point(412, 193); this.nudcmPerPixel.Minimum = new decimal(new int[] { 2, 0, @@ -2801,7 +3045,7 @@ private void InitializeComponent() 0}); this.nudcmPerPixel.Name = "nudcmPerPixel"; this.nudcmPerPixel.ReadOnly = true; - this.nudcmPerPixel.Size = new System.Drawing.Size(110, 52); + this.nudcmPerPixel.Size = new System.Drawing.Size(78, 46); this.nudcmPerPixel.TabIndex = 524; this.nudcmPerPixel.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.nudcmPerPixel.Value = new decimal(new int[] { @@ -2811,34 +3055,85 @@ private void InitializeComponent() 0}); this.nudcmPerPixel.Click += new System.EventHandler(this.nudcmPerPixel_Click); // - // nudDeadZoneHeading + // nudLineWidth // - this.nudDeadZoneHeading.BackColor = System.Drawing.Color.White; - this.nudDeadZoneHeading.DecimalPlaces = 1; - this.nudDeadZoneHeading.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudDeadZoneHeading.InterceptArrowKeys = false; - this.nudDeadZoneHeading.Location = new System.Drawing.Point(202, 377); - this.nudDeadZoneHeading.Maximum = new decimal(new int[] { - 5, + this.nudLineWidth.BackColor = System.Drawing.Color.White; + this.nudLineWidth.Font = new System.Drawing.Font("Tahoma", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudLineWidth.InterceptArrowKeys = false; + this.nudLineWidth.Location = new System.Drawing.Point(153, 47); + this.nudLineWidth.Maximum = new decimal(new int[] { + 8, 0, 0, 0}); - this.nudDeadZoneHeading.Minimum = new decimal(new int[] { + this.nudLineWidth.Minimum = new decimal(new int[] { 1, 0, 0, - 65536}); - this.nudDeadZoneHeading.Name = "nudDeadZoneHeading"; - this.nudDeadZoneHeading.ReadOnly = true; - this.nudDeadZoneHeading.Size = new System.Drawing.Size(107, 52); - this.nudDeadZoneHeading.TabIndex = 538; - this.nudDeadZoneHeading.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.nudDeadZoneHeading.Value = new decimal(new int[] { + 0}); + this.nudLineWidth.Name = "nudLineWidth"; + this.nudLineWidth.ReadOnly = true; + this.nudLineWidth.Size = new System.Drawing.Size(78, 46); + this.nudLineWidth.TabIndex = 520; + this.nudLineWidth.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.nudLineWidth.Value = new decimal(new int[] { 1, 0, 0, 0}); - this.nudDeadZoneHeading.Click += new System.EventHandler(this.nudDeadZoneHeading_Click); + this.nudLineWidth.Click += new System.EventHandler(this.nudLineWidth_Click); + // + // nudSnapDistance + // + this.nudSnapDistance.BackColor = System.Drawing.Color.White; + this.nudSnapDistance.Font = new System.Drawing.Font("Tahoma", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudSnapDistance.InterceptArrowKeys = false; + this.nudSnapDistance.Location = new System.Drawing.Point(412, 47); + this.nudSnapDistance.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.nudSnapDistance.Name = "nudSnapDistance"; + this.nudSnapDistance.ReadOnly = true; + this.nudSnapDistance.Size = new System.Drawing.Size(78, 46); + this.nudSnapDistance.TabIndex = 516; + this.nudSnapDistance.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.nudSnapDistance.Value = new decimal(new int[] { + 499, + 0, + 0, + 0}); + this.nudSnapDistance.Click += new System.EventHandler(this.nudSnapDistance_Click); + // + // nudGuidanceLookAhead + // + this.nudGuidanceLookAhead.BackColor = System.Drawing.Color.White; + this.nudGuidanceLookAhead.DecimalPlaces = 1; + this.nudGuidanceLookAhead.Font = new System.Drawing.Font("Tahoma", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudGuidanceLookAhead.InterceptArrowKeys = false; + this.nudGuidanceLookAhead.Location = new System.Drawing.Point(142, 196); + this.nudGuidanceLookAhead.Maximum = new decimal(new int[] { + 10, + 0, + 0, + 0}); + this.nudGuidanceLookAhead.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.nudGuidanceLookAhead.Name = "nudGuidanceLookAhead"; + this.nudGuidanceLookAhead.ReadOnly = true; + this.nudGuidanceLookAhead.Size = new System.Drawing.Size(100, 46); + this.nudGuidanceLookAhead.TabIndex = 512; + this.nudGuidanceLookAhead.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.nudGuidanceLookAhead.Value = new decimal(new int[] { + 10, + 0, + 0, + 0}); + this.nudGuidanceLookAhead.Click += new System.EventHandler(this.nudGuidanceLookAhead_Click); // // imageList2 // @@ -2846,16 +3141,16 @@ private void InitializeComponent() this.imageList2.TransparentColor = System.Drawing.Color.Transparent; this.imageList2.Images.SetKeyName(0, "Sensors.png"); this.imageList2.Images.SetKeyName(1, "ConS_Pins.png"); - this.imageList2.Images.SetKeyName(2, "ConS_VehicleConfig.png"); - this.imageList2.Images.SetKeyName(3, "ConS_ModulesSteer.png"); - this.imageList2.Images.SetKeyName(4, "ConS_SourcesHeading.png"); + this.imageList2.Images.SetKeyName(2, "ConS_ModulesSteer.png"); + this.imageList2.Images.SetKeyName(3, "ConS_Alarm.png"); + this.imageList2.Images.SetKeyName(4, "ConS_VehicleConfig.png"); // // label35 // this.label35.BackColor = System.Drawing.Color.Transparent; this.label35.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label35.ForeColor = System.Drawing.Color.Black; - this.label35.Location = new System.Drawing.Point(382, 573); + this.label35.Location = new System.Drawing.Point(381, 530); this.label35.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label35.Name = "label35"; this.label35.Size = new System.Drawing.Size(100, 23); @@ -2872,7 +3167,7 @@ private void InitializeComponent() this.btnSteerWizard.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnSteerWizard.Font = new System.Drawing.Font("Tahoma", 15.75F); this.btnSteerWizard.Image = global::AgOpenGPS.Properties.Resources.WizardWand; - this.btnSteerWizard.Location = new System.Drawing.Point(394, 602); + this.btnSteerWizard.Location = new System.Drawing.Point(393, 553); this.btnSteerWizard.Name = "btnSteerWizard"; this.btnSteerWizard.Size = new System.Drawing.Size(75, 69); this.btnSteerWizard.TabIndex = 529; @@ -2888,7 +3183,7 @@ private void InitializeComponent() this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.button2.Font = new System.Drawing.Font("Tahoma", 15.75F); this.button2.Image = global::AgOpenGPS.Properties.Resources.Reset_Default; - this.button2.Location = new System.Drawing.Point(539, 598); + this.button2.Location = new System.Drawing.Point(553, 554); this.button2.Name = "button2"; this.button2.Size = new System.Drawing.Size(75, 69); this.button2.TabIndex = 522; @@ -2899,7 +3194,7 @@ private void InitializeComponent() // this.pboxSendSteer.BackgroundImage = global::AgOpenGPS.Properties.Resources.ConSt_Mandatory1; this.pboxSendSteer.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.pboxSendSteer.Location = new System.Drawing.Point(940, 609); + this.pboxSendSteer.Location = new System.Drawing.Point(831, 560); this.pboxSendSteer.Name = "pboxSendSteer"; this.pboxSendSteer.Size = new System.Drawing.Size(61, 62); this.pboxSendSteer.TabIndex = 509; @@ -2913,30 +3208,45 @@ private void InitializeComponent() this.btnSendSteerConfigPGN.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnSendSteerConfigPGN.Image = global::AgOpenGPS.Properties.Resources.ToolAcceptChange; this.btnSendSteerConfigPGN.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.btnSendSteerConfigPGN.Location = new System.Drawing.Point(830, 609); + this.btnSendSteerConfigPGN.Location = new System.Drawing.Point(721, 560); this.btnSendSteerConfigPGN.Name = "btnSendSteerConfigPGN"; this.btnSendSteerConfigPGN.Size = new System.Drawing.Size(103, 62); this.btnSendSteerConfigPGN.TabIndex = 501; this.btnSendSteerConfigPGN.UseVisualStyleBackColor = false; this.btnSendSteerConfigPGN.Click += new System.EventHandler(this.btnSendSteerConfigPGN_Click); // - // label51 + // lblAcquirePP // - this.label51.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label51.ForeColor = System.Drawing.Color.Black; - this.label51.Location = new System.Drawing.Point(158, 326); - this.label51.Name = "label51"; - this.label51.Size = new System.Drawing.Size(347, 41); - this.label51.TabIndex = 541; - this.label51.Text = " ------ Dead Zone -----"; - this.label51.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lblAcquirePP.AutoSize = true; + this.lblAcquirePP.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblAcquirePP.ForeColor = System.Drawing.Color.Black; + this.lblAcquirePP.Location = new System.Drawing.Point(190, 159); + this.lblAcquirePP.Name = "lblAcquirePP"; + this.lblAcquirePP.Size = new System.Drawing.Size(34, 19); + this.lblAcquirePP.TabIndex = 515; + this.lblAcquirePP.Text = "2.6"; + this.lblAcquirePP.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.lblAcquirePP.Visible = false; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label16.ForeColor = System.Drawing.Color.Black; + this.label16.Location = new System.Drawing.Point(127, 159); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(69, 19); + this.label16.TabIndex = 548; + this.label16.Text = "Acquire:"; + this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label16.Visible = false; // // FormSteer // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.BackColor = System.Drawing.Color.WhiteSmoke; - this.ClientSize = new System.Drawing.Size(1005, 679); + this.ClientSize = new System.Drawing.Size(898, 628); this.Controls.Add(this.label35); this.Controls.Add(this.btnSteerWizard); this.Controls.Add(this.tabSteerSettings); @@ -2948,12 +3258,9 @@ private void InitializeComponent() this.Controls.Add(this.panel2); this.Controls.Add(this.panel1); this.Controls.Add(this.tabControl1); - this.Controls.Add(this.hsbarLookAheadMult); - this.Controls.Add(this.lblLookAheadMult); - this.Controls.Add(this.label19); this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.MaximizeBox = false; - this.MaximumSize = new System.Drawing.Size(1024, 718); + this.MaximumSize = new System.Drawing.Size(918, 673); this.MinimizeBox = false; this.MinimumSize = new System.Drawing.Size(387, 478); this.Name = "FormSteer"; @@ -2963,13 +3270,18 @@ private void InitializeComponent() this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormSteer_FormClosing); this.Load += new System.EventHandler(this.FormSteer_Load); this.tabControl1.ResumeLayout(false); - this.tabInt.ResumeLayout(false); - this.tabInt.PerformLayout(); + this.tabPP.ResumeLayout(false); + this.tabPP.PerformLayout(); this.tabStan.ResumeLayout(false); + this.tabStan.PerformLayout(); this.tabGain.ResumeLayout(false); this.tabGain.PerformLayout(); this.tabSteer.ResumeLayout(false); this.tabSteer.PerformLayout(); + this.tabPPAdv.ResumeLayout(false); + this.tabPPAdv.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudDeadZoneDelay)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudDeadZoneHeading)).EndInit(); this.panel2.ResumeLayout(false); this.panel2.PerformLayout(); this.panel1.ResumeLayout(false); @@ -2982,31 +3294,26 @@ private void InitializeComponent() this.tabConfig.PerformLayout(); this.tabSettings.ResumeLayout(false); this.tabSettings.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudPanicStopSpeed)).EndInit(); this.tabAlarm.ResumeLayout(false); this.tabAlarm.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox12)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox17)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox16)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox15)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox10)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudLineWidth)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudSnapDistance)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudGuidanceLookAhead)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudMinSteerSpeed)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudMaxSteerSpeed)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudMaxAngularVelocity)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudGuidanceSpeedLimit)).EndInit(); this.tabOnTheLine.ResumeLayout(false); this.tabOnTheLine.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudDeadZoneDelay)).EndInit(); this.groupBox6.ResumeLayout(false); this.groupBox6.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox12)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudcmPerPixel)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.nudDeadZoneHeading)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudLineWidth)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudSnapDistance)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudGuidanceLookAhead)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pboxSendSteer)).EndInit(); this.ResumeLayout(false); @@ -3046,7 +3353,7 @@ private void InitializeComponent() private System.Windows.Forms.TabControl tabControl1; private System.Windows.Forms.TabPage tabGain; private System.Windows.Forms.TabPage tabStan; - private System.Windows.Forms.TabPage tabInt; + private System.Windows.Forms.TabPage tabPP; private System.Windows.Forms.Button btnStartSA; private System.Windows.Forms.Label lblCalcSteerAngleInner; private System.Windows.Forms.Label lblDiameter; @@ -3117,9 +3424,6 @@ private void InitializeComponent() private System.Windows.Forms.Panel panel1; private System.Windows.Forms.HScrollBar hsbarSensor; private System.Windows.Forms.Label lblhsbarSensor; - private System.Windows.Forms.Label label16; - private NudlessNumericUpDown nudPanicStopSpeed; - private System.Windows.Forms.Label label31; private System.Windows.Forms.Label label6; private System.Windows.Forms.Button button2; private System.Windows.Forms.Label label37; @@ -3152,14 +3456,10 @@ private void InitializeComponent() private System.Windows.Forms.Label label163; private System.Windows.Forms.Label label160; private System.Windows.Forms.Label label161; - private System.Windows.Forms.Label label159; - private System.Windows.Forms.Label label162; private NudlessNumericUpDown nudMaxSteerSpeed; - private NudlessNumericUpDown nudMaxAngularVelocity; private NudlessNumericUpDown nudGuidanceSpeedLimit; private System.Windows.Forms.PictureBox pictureBox17; private System.Windows.Forms.PictureBox pictureBox16; - private System.Windows.Forms.PictureBox pictureBox15; private System.Windows.Forms.PictureBox pictureBox10; private System.Windows.Forms.Label label107; private System.Windows.Forms.Label label108; @@ -3198,5 +3498,34 @@ private void InitializeComponent() private System.Windows.Forms.Label label54; private NudlessNumericUpDown nudDeadZoneDelay; private System.Windows.Forms.Label label51; + private System.Windows.Forms.Label label58; + private System.Windows.Forms.Label label47; + private System.Windows.Forms.Label lblAcquireFactor; + private System.Windows.Forms.HScrollBar hsbarAcquireFactor; + private System.Windows.Forms.Label lblHoldAdv; + private System.Windows.Forms.Label lblAcqAdv; + private System.Windows.Forms.Label label57; + private System.Windows.Forms.Label lblDistanceAdv; + private System.Windows.Forms.Label label60; + private System.Windows.Forms.TabPage tabPPAdv; + private System.Windows.Forms.Label label59; + private System.Windows.Forms.Label label71; + private System.Windows.Forms.Label label69; + private System.Windows.Forms.Label label72; + private System.Windows.Forms.Label label67; + private System.Windows.Forms.Label label66; + private System.Windows.Forms.Label label65; + private System.Windows.Forms.Label label74; + private System.Windows.Forms.Label label73; + private System.Windows.Forms.Label label75; + private System.Windows.Forms.Label label76; + private System.Windows.Forms.Label label77; + private System.Windows.Forms.Label label80; + private System.Windows.Forms.Label label79; + private System.Windows.Forms.Label label78; + private System.Windows.Forms.Label label81; + private System.Windows.Forms.Label label82; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label lblAcquirePP; } } \ No newline at end of file diff --git a/SourceCode/GPS/Forms/Settings/FormSteer.cs b/SourceCode/GPS/Forms/Settings/FormSteer.cs index f7220bee6..4e33f4c79 100644 --- a/SourceCode/GPS/Forms/Settings/FormSteer.cs +++ b/SourceCode/GPS/Forms/Settings/FormSteer.cs @@ -3,6 +3,7 @@ using System; using System.Diagnostics.Eventing.Reader; using System.Drawing; +using System.IO; using System.Windows.Forms; namespace AgOpenGPS @@ -12,7 +13,7 @@ public partial class FormSteer : Form private readonly FormGPS mf = null; private bool toSend = false, isSA = false; - private int counter = 0, cntr, sbCntr=0; + private int counter = 0, secondCntr = 0, cntr; private vec3 startFix; private double diameter, steerAngleRight, dist; private int windowSizeState = 0; @@ -23,12 +24,10 @@ public FormSteer(Form callingForm) mf = callingForm as FormGPS; InitializeComponent(); nudMaxCounts.Controls[0].Enabled = false; - nudPanicStopSpeed.Controls[0].Enabled = false; nudSnapDistance.Controls[0].Enabled = false; nudLineWidth.Controls[0].Enabled = false; nudGuidanceLookAhead.Controls[0].Enabled = false; - nudMaxAngularVelocity.Controls[0].Enabled = false; nudGuidanceSpeedLimit.Controls[0].Enabled = false; nudMaxSteerSpeed.Controls[0].Enabled = false; nudMinSteerSpeed.Controls[0].Enabled = false; @@ -49,13 +48,29 @@ public FormSteer(Form callingForm) private void FormSteer_Load(object sender, EventArgs e) { mf.vehicle.goalPointLookAheadHold = Properties.Settings.Default.setVehicle_goalPointLookAheadHold; + cboxSteerInReverse.Checked = Properties.Settings.Default.setAS_isSteerInReverse; - chkDisplayLightbar.Checked = mf.isLightbarOn; - if (chkDisplayLightbar.Checked) { chkDisplayLightbar.Image = Resources.SwitchOn; } - else { chkDisplayLightbar.Image = Resources.SwitchOff; } + if (mf.isStanleyUsed) + { + btnStanleyPure.Image = Resources.ModeStanley; + } + else + { + btnStanleyPure.Image = Resources.ModePurePursuit; + } - if (mf.isStanleyUsed) tabControl1.TabPages.Remove(tabInt); - else tabControl1.TabPages.Remove(tabStan); + if (mf.isStanleyUsed) + { + tabControl1.TabPages.Remove(tabPP); + tabControl1.TabPages.Remove(tabPPAdv); + this.tabControl1.ItemSize = new System.Drawing.Size(105, 48); + + } + else + { + tabControl1.TabPages.Remove(tabStan); + this.tabControl1.ItemSize = new System.Drawing.Size(89, 48); + } Location = Properties.Settings.Default.setWindow_steerSettingsLocation; //WAS Zero, CPD @@ -131,7 +146,12 @@ private void FormSteer_Load(object sender, EventArgs e) hsbarLookAheadMult.Value = (Int16)(Properties.Settings.Default.setVehicle_goalPointLookAheadMult * 10); lblLookAheadMult.Text = mf.vehicle.goalPointLookAheadMult.ToString(); - hsbarUTurnCompensation.Value = (Int16)(mf.vehicle.uturnCompensation * 10); + hsbarAcquireFactor.Value = (int)(Properties.Settings.Default.setVehicle_goalPointAcquireFactor * 100); + lblAcquireFactor.Text = mf.vehicle.goalPointAcquireFactor.ToString(); + + lblAcquirePP.Text = (mf.vehicle.goalPointLookAheadHold * mf.vehicle.goalPointAcquireFactor).ToString("N1"); + + hsbarUTurnCompensation.Value = (Int16)(Properties.Settings.Default.setAS_uTurnCompensation * 10); lblUTurnCompensation.Text = (hsbarUTurnCompensation.Value - 10).ToString(); //make sure free drive is off @@ -141,23 +161,10 @@ private void FormSteer_Load(object sender, EventArgs e) btnSteerAngleUp.Enabled = false; mf.vehicle.driveFreeSteerAngle = 0; - nudPanicStopSpeed.Value = (decimal)mf.vehicle.panicStopSpeed; - //nudDeadZoneDistance.Value = (decimal)((double)(Properties.Settings.Default.setAS_deadZoneDistance)/10); nudDeadZoneHeading.Value = (decimal)((double)(Properties.Settings.Default.setAS_deadZoneHeading)/100); nudDeadZoneDelay.Value = (decimal)(mf.vehicle.deadZoneDelay); - //Stanley guidance - - if (mf.isStanleyUsed) - { - btnStanleyPure.Image = Resources.ModeStanley; - } - else - { - btnStanleyPure.Image = Resources.ModePurePursuit; - } - toSend = false; int sett = Properties.Settings.Default.setArdSteer_setting0; @@ -263,6 +270,46 @@ private void FormSteer_Load(object sender, EventArgs e) else rbtnSteerBar.Checked = true; } + private void FormSteer_FormClosing(object sender, FormClosingEventArgs e) + { + mf.vehicle.isInFreeDriveMode = false; + + Properties.Settings.Default.setVehicle_goalPointLookAheadHold = mf.vehicle.goalPointLookAheadHold; + Properties.Settings.Default.setVehicle_goalPointLookAheadMult = mf.vehicle.goalPointLookAheadMult; + Properties.Settings.Default.setVehicle_goalPointAcquireFactor = mf.vehicle.goalPointAcquireFactor; + + Properties.Settings.Default.stanleyHeadingErrorGain = mf.vehicle.stanleyHeadingErrorGain; + Properties.Settings.Default.stanleyDistanceErrorGain = mf.vehicle.stanleyDistanceErrorGain; + Properties.Settings.Default.stanleyIntegralGainAB = mf.vehicle.stanleyIntegralGainAB; + Properties.Settings.Default.purePursuitIntegralGainAB = mf.vehicle.purePursuitIntegralGain; + Properties.Settings.Default.setVehicle_maxSteerAngle = mf.vehicle.maxSteerAngle; + + Properties.Settings.Default.setAS_countsPerDegree = mf.p_252.pgn[mf.p_252.countsPerDegree] = unchecked((byte)hsbarCountsPerDegree.Value); + Properties.Settings.Default.setAS_ackerman = mf.p_252.pgn[mf.p_252.ackerman] = unchecked((byte)hsbarAckerman.Value); + + Properties.Settings.Default.setAS_wasOffset = hsbarWasOffset.Value; + mf.p_252.pgn[mf.p_252.wasOffsetHi] = unchecked((byte)(hsbarWasOffset.Value >> 8)); + mf.p_252.pgn[mf.p_252.wasOffsetLo] = unchecked((byte)(hsbarWasOffset.Value)); + + Properties.Settings.Default.setAS_highSteerPWM = mf.p_252.pgn[mf.p_252.highPWM] = unchecked((byte)hsbarHighSteerPWM.Value); + Properties.Settings.Default.setAS_lowSteerPWM = mf.p_252.pgn[mf.p_252.lowPWM] = unchecked((byte)(hsbarHighSteerPWM.Value / 3)); + Properties.Settings.Default.setAS_Kp = mf.p_252.pgn[mf.p_252.gainProportional] = unchecked((byte)hsbarProportionalGain.Value); + Properties.Settings.Default.setAS_minSteerPWM = mf.p_252.pgn[mf.p_252.minPWM] = unchecked((byte)hsbarMinPWM.Value); + + Properties.Settings.Default.setAS_deadZoneHeading = mf.vehicle.deadZoneHeading; + Properties.Settings.Default.setAS_deadZoneDelay = mf.vehicle.deadZoneDelay; + + Properties.Settings.Default.setAS_ModeXTE = mf.vehicle.modeXTE; + Properties.Settings.Default.setAS_ModeTime = mf.vehicle.modeTime; + + Properties.Settings.Default.setWindow_steerSettingsLocation = Location; + + Properties.Settings.Default.setAS_uTurnCompensation = mf.vehicle.uturnCompensation; + + //save current vehicle + RegistrySettings.Save(); + } + private void Timer1_Tick(object sender, EventArgs e) { if (isSA) @@ -339,6 +386,25 @@ private void Timer1_Tick(object sender, EventArgs e) counter = 0; } + if (secondCntr++ > 2) + { + secondCntr = 0; + + if (tabControl1.SelectedTab == tabPPAdv) + { + lblHoldAdv.Text = mf.vehicle.goalPointLookAheadHold.ToString("N1"); + lblAcqAdv.Text = (mf.vehicle.goalPointLookAheadHold * mf.vehicle.goalPointAcquireFactor).ToString("N1"); + lblDistanceAdv.Text = mf.vehicle.goalDistance.ToString("N1"); + lblAcquirePP.Text = lblAcqAdv.Text; + } + //else if (tabControl1.SelectedTab == tabPP) + //{ + // lblHoldAdv.Text = mf.vehicle.goalPointLookAheadHold.ToString("N1"); + // lblAcqAdv.Text = (mf.vehicle.goalPointLookAheadHold * mf.vehicle.goalPointAcquireFactor).ToString("N1"); + // lblDistanceAdv.Text = mf.vehicle.goalDistance.ToString("N1"); + //} + } + //if (hsbarMinPWM.Value > hsbarLowSteerPWM.Value) lblMinPWM.ForeColor = Color.OrangeRed; //else lblMinPWM.ForeColor = SystemColors.ControlText; @@ -353,53 +419,102 @@ private void Timer1_Tick(object sender, EventArgs e) } } - private void FormSteer_FormClosing(object sender, FormClosingEventArgs e) - { - mf.vehicle.isInFreeDriveMode = false; - - Properties.Settings.Default.setVehicle_goalPointLookAheadHold = mf.vehicle.goalPointLookAheadHold; - Properties.Settings.Default.setVehicle_goalPointLookAheadMult = mf.vehicle.goalPointLookAheadMult; - - Properties.Settings.Default.stanleyHeadingErrorGain = mf.vehicle.stanleyHeadingErrorGain; - Properties.Settings.Default.stanleyDistanceErrorGain = mf.vehicle.stanleyDistanceErrorGain; - Properties.Settings.Default.stanleyIntegralGainAB = mf.vehicle.stanleyIntegralGainAB; - Properties.Settings.Default.purePursuitIntegralGainAB = mf.vehicle.purePursuitIntegralGain; - Properties.Settings.Default.setVehicle_maxSteerAngle = mf.vehicle.maxSteerAngle; + #region Tab Sensors - Properties.Settings.Default.setAS_countsPerDegree = mf.p_252.pgn[mf.p_252.countsPerDegree] = unchecked((byte)hsbarCountsPerDegree.Value); - Properties.Settings.Default.setAS_ackerman = mf.p_252.pgn[mf.p_252.ackerman] = unchecked((byte)hsbarAckerman.Value); - - Properties.Settings.Default.setAS_wasOffset = hsbarWasOffset.Value; - mf.p_252.pgn[mf.p_252.wasOffsetHi] = unchecked((byte)(hsbarWasOffset.Value >> 8)); - mf.p_252.pgn[mf.p_252.wasOffsetLo] = unchecked((byte)(hsbarWasOffset.Value)); + private void EnableAlert_Click(object sender, EventArgs e) + { + pboxSendSteer.Visible = true; - Properties.Settings.Default.setAS_highSteerPWM = mf.p_252.pgn[mf.p_252.highPWM] = unchecked((byte)hsbarHighSteerPWM.Value); - Properties.Settings.Default.setAS_lowSteerPWM = mf.p_252.pgn[mf.p_252.lowPWM] = unchecked((byte)(hsbarHighSteerPWM.Value / 3)); - Properties.Settings.Default.setAS_Kp = mf.p_252.pgn[mf.p_252.gainProportional] = unchecked((byte)hsbarProportionalGain.Value); - Properties.Settings.Default.setAS_minSteerPWM = mf.p_252.pgn[mf.p_252.minPWM] = unchecked((byte)hsbarMinPWM.Value); + if (sender is CheckBox checkbox) + { + if (checkbox.Name == "cboxEncoder" || checkbox.Name == "cboxPressureSensor" + || checkbox.Name == "cboxCurrentSensor") + { + if (!checkbox.Checked) + { + cboxPressureSensor.Checked = false; + cboxCurrentSensor.Checked = false; + cboxEncoder.Checked = false; + label61.Visible = false; + lblPercentFS.Visible = false; + nudMaxCounts.Visible = false; + pbarSensor.Visible = false; + hsbarSensor.Visible = false; + lblhsbarSensor.Visible = false; + return; + } - Properties.Settings.Default.setVehicle_panicStopSpeed = mf.vehicle.panicStopSpeed; - //Properties.Settings.Default.setAS_deadZoneDistance = mf.vehicle.deadZoneDistance; - Properties.Settings.Default.setAS_deadZoneHeading = mf.vehicle.deadZoneHeading; - Properties.Settings.Default.setAS_deadZoneDelay = mf.vehicle.deadZoneDelay; + if (checkbox == cboxPressureSensor) + { + cboxEncoder.Checked = false; + cboxCurrentSensor.Checked = false; + label61.Visible = true; + lblPercentFS.Visible = true; + nudMaxCounts.Visible = false; + pbarSensor.Visible = true; + label61.Text = "Off at %"; + hsbarSensor.Visible = true; + lblhsbarSensor.Visible = true; + } + else if (checkbox == cboxCurrentSensor) + { + cboxPressureSensor.Checked = false; + cboxEncoder.Checked = false; + label61.Visible = true; + lblPercentFS.Visible = true; + nudMaxCounts.Visible = false; + hsbarSensor.Visible = true; + pbarSensor.Visible = true; + label61.Text = "Off at %"; + lblhsbarSensor.Visible = true; + } + else if (checkbox == cboxEncoder) + { + cboxPressureSensor.Checked = false; + cboxCurrentSensor.Checked = false; + label61.Visible = true; + lblPercentFS.Visible = true; + nudMaxCounts.Visible = true; + pbarSensor.Visible = true; + hsbarSensor.Visible = false; + lblhsbarSensor.Visible = false; + label61.Text = gStr.gsEncoderCounts; + } + } + } + } - Properties.Settings.Default.setAS_ModeXTE = mf.vehicle.modeXTE; - Properties.Settings.Default.setAS_ModeTime = mf.vehicle.modeTime; + private void nudMaxCounts_Click(object sender, EventArgs e) + { + if (mf.KeypadToNUD((NudlessNumericUpDown)sender, this)) + { + pboxSendSteer.Visible = true; + } + } - Properties.Settings.Default.setWindow_steerSettingsLocation = Location; + private void hsbarSensor_Scroll(object sender, ScrollEventArgs e) + { + pboxSendSteer.Visible = true; + lblhsbarSensor.Text = ((int)((double)hsbarSensor.Value * 0.3921568627)).ToString() + "%"; + } - Properties.Settings.Default.setAS_uTurnCompensation = mf.vehicle.uturnCompensation; + #endregion - Properties.Settings.Default.Save(); - //save current vehicle - SettingsIO.ExportAll(mf.vehiclesDirectory + mf.vehicleFileName + ".XML"); - } + #region Tab Settings private void tabSettings_Enter(object sender, EventArgs e) { cboxSteerInReverse.Checked = Properties.Settings.Default.setAS_isSteerInReverse; + if (mf.isStanleyUsed) + { + btnStanleyPure.Image = Resources.ModeStanley; + } + else + { + btnStanleyPure.Image = Resources.ModePurePursuit; + } } private void tabSettings_Leave(object sender, EventArgs e) @@ -408,13 +523,72 @@ private void tabSettings_Leave(object sender, EventArgs e) Properties.Settings.Default.Save(); } + private void hsbarUTurnCompensation_ValueChanged(object sender, EventArgs e) + { + mf.vehicle.uturnCompensation = hsbarUTurnCompensation.Value * 0.1; + lblUTurnCompensation.Text = (hsbarUTurnCompensation.Value - 10).ToString(); + } + private void cboxSteerInReverse_Click(object sender, EventArgs e) { Properties.Settings.Default.setAS_isSteerInReverse = cboxSteerInReverse.Checked; mf.isSteerInReverse = cboxSteerInReverse.Checked; + } + + private void hsbarSideHillComp_ValueChanged(object sender, EventArgs e) + { + double deg = hsbarSideHillComp.Value; + deg *= 0.01; + lblSideHillComp.Text = (deg.ToString("N2") + "\u00B0"); + Properties.Settings.Default.setAS_sideHillComp = deg; + mf.gyd.sideHillCompFactor = deg; + } + + private void btnStanleyPure_Click(object sender, EventArgs e) + { + mf.isStanleyUsed = !mf.isStanleyUsed; + + if (mf.isStanleyUsed) + { + btnStanleyPure.Image = Resources.ModeStanley; + Log.EventWriter("Stanley Steer Mode Selectede"); + } + else + { + btnStanleyPure.Image = Resources.ModePurePursuit; + Log.EventWriter("Pure Pursuit Steer Mode Selected"); + } + + tabControl1.TabPages.Remove(tabPP); + tabControl1.TabPages.Remove(tabPPAdv); + tabControl1.TabPages.Remove(tabGain); + tabControl1.TabPages.Remove(tabSteer); + tabControl1.TabPages.Remove(tabStan); + + + Properties.Settings.Default.setVehicle_isStanleyUsed = mf.isStanleyUsed; + Properties.Settings.Default.Save(); + + if (mf.isStanleyUsed) + { + this.tabControl1.ItemSize = new System.Drawing.Size(105, 48); + tabControl1.TabPages.Add(tabStan); + tabControl1.TabPages.Add(tabGain); + tabControl1.TabPages.Add(tabSteer); + } + else + { + tabControl1.TabPages.Add(tabPP); + tabControl1.TabPages.Add(tabGain); + tabControl1.TabPages.Add(tabSteer); + tabControl1.TabPages.Add(tabPPAdv); + this.tabControl1.ItemSize = new System.Drawing.Size(89, 48); + } } + #endregion + #region Alarms Tab @@ -422,8 +596,6 @@ private void tabAlarm_Enter(object sender, EventArgs e) { if (mf.isMetric) { - nudSnapDistance.DecimalPlaces = 0; - nudSnapDistance.Value = (int)((double)Properties.Settings.Default.setAS_snapDistance * mf.cm2CmOrIn); nudMaxSteerSpeed.Value = (decimal)(Properties.Settings.Default.setAS_maxSteerSpeed); nudMinSteerSpeed.Value = (decimal)(Properties.Settings.Default.setAS_minSteerSpeed); nudGuidanceSpeedLimit.Value = (decimal)Properties.Settings.Default.setAS_functionSpeedLimit; @@ -431,22 +603,12 @@ private void tabAlarm_Enter(object sender, EventArgs e) } else { - nudSnapDistance.DecimalPlaces = 1; - nudSnapDistance.Value = (decimal)Math.Round(((double)Properties.Settings.Default.setAS_snapDistance * mf.cm2CmOrIn), 1, MidpointRounding.AwayFromZero); nudMaxSteerSpeed.Value = (decimal)(Properties.Settings.Default.setAS_maxSteerSpeed * 0.62137); nudMinSteerSpeed.Value = (decimal)(Properties.Settings.Default.setAS_minSteerSpeed * 0.62137); nudGuidanceSpeedLimit.Value = (decimal)(Properties.Settings.Default.setAS_functionSpeedLimit * 0.62137); label160.Text = label163.Text = label166.Text = "mph"; } - nudGuidanceLookAhead.Value = (decimal)Properties.Settings.Default.setAS_guidanceLookAheadTime; - - nudMaxAngularVelocity.Value = (decimal)glm.toDegrees(Properties.Settings.Default.setVehicle_maxAngularVelocity); - - nudLineWidth.Value = Properties.Settings.Default.setDisplay_lineWidth; - - nudcmPerPixel.Value = Properties.Settings.Default.setDisplay_lightbarCmPerPixel; - label20.Text = mf.unitsInCm; } @@ -454,32 +616,28 @@ private void tabAlarm_Leave(object sender, EventArgs e) { Properties.Settings.Default.Save(); } - private void nudcmPerPixel_Click(object sender, EventArgs e) + + + private void nudMinSteerSpeed_Click(object sender, EventArgs e) { if (mf.KeypadToNUD((NudlessNumericUpDown)sender, this)) { - Properties.Settings.Default.setDisplay_lightbarCmPerPixel = ((int)nudcmPerPixel.Value); - mf.lightbarCmPerPixel = Properties.Settings.Default.setDisplay_lightbarCmPerPixel; + Properties.Settings.Default.setAS_minSteerSpeed = ((double)nudMinSteerSpeed.Value); + if (!mf.isMetric) Properties.Settings.Default.setAS_minSteerSpeed *= 1.609344; + mf.vehicle.minSteerSpeed = Properties.Settings.Default.setAS_minSteerSpeed; } } - private void nudLineWidth_Click(object sender, EventArgs e) + private void nudMaxSteerSpeed_Click(object sender, EventArgs e) { if (mf.KeypadToNUD((NudlessNumericUpDown)sender, this)) { - Properties.Settings.Default.setDisplay_lineWidth = (int)nudLineWidth.Value; - mf.ABLine.lineWidth = Properties.Settings.Default.setDisplay_lineWidth; + Properties.Settings.Default.setAS_maxSteerSpeed = ((double)nudMaxSteerSpeed.Value); + if (!mf.isMetric) Properties.Settings.Default.setAS_maxSteerSpeed *= 1.609344; + mf.vehicle.maxSteerSpeed = Properties.Settings.Default.setAS_maxSteerSpeed; } } - private void nudSnapDistance_Click(object sender, EventArgs e) - { - if (mf.KeypadToNUD((NudlessNumericUpDown)sender, this)) - { - Properties.Settings.Default.setAS_snapDistance = ((double)nudSnapDistance.Value * mf.inOrCm2Cm); - mf.ABLine.snapDistance = Properties.Settings.Default.setAS_snapDistance; - } - } private void nudGuidanceSpeedLimit_Click(object sender, EventArgs e) { if (mf.KeypadToNUD((NudlessNumericUpDown)sender, this)) @@ -490,31 +648,67 @@ private void nudGuidanceSpeedLimit_Click(object sender, EventArgs e) } } - private void nudMinSteerSpeed_Click(object sender, EventArgs e) + #endregion + + + #region Tab On the Line + + private void tabOnTheLine_Enter(object sender, EventArgs e) + { + chkDisplayLightbar.Checked = mf.isLightbarOn; + if (chkDisplayLightbar.Checked) { chkDisplayLightbar.Image = Resources.SwitchOn; } + else { chkDisplayLightbar.Image = Resources.SwitchOff; } + + if (mf.isMetric) + { + nudSnapDistance.DecimalPlaces = 0; + nudSnapDistance.Value = (int)((double)Properties.Settings.Default.setAS_snapDistance * mf.cm2CmOrIn); + } + else + { + nudSnapDistance.DecimalPlaces = 1; + nudSnapDistance.Value = (decimal)Math.Round(((double)Properties.Settings.Default.setAS_snapDistance * mf.cm2CmOrIn), 1, MidpointRounding.AwayFromZero); + } + + nudGuidanceLookAhead.Value = (decimal)Properties.Settings.Default.setAS_guidanceLookAheadTime; + + nudLineWidth.Value = Properties.Settings.Default.setDisplay_lineWidth; + + nudcmPerPixel.Value = Properties.Settings.Default.setDisplay_lightbarCmPerPixel; + + label20.Text = mf.unitsInCm; + label43.Text = mf.unitsInCm; + } + + private void tabOnTheLine_Leave(object sender, EventArgs e) + { + Properties.Settings.Default.Save(); + } + + private void nudcmPerPixel_Click(object sender, EventArgs e) { if (mf.KeypadToNUD((NudlessNumericUpDown)sender, this)) { - Properties.Settings.Default.setAS_minSteerSpeed = ((double)nudMinSteerSpeed.Value); - if (!mf.isMetric) Properties.Settings.Default.setAS_minSteerSpeed *= 1.609344; - mf.vehicle.minSteerSpeed = Properties.Settings.Default.setAS_minSteerSpeed; + Properties.Settings.Default.setDisplay_lightbarCmPerPixel = ((int)nudcmPerPixel.Value); + mf.lightbarCmPerPixel = Properties.Settings.Default.setDisplay_lightbarCmPerPixel; } } - private void nudMaxSteerSpeed_Click(object sender, EventArgs e) + + private void nudLineWidth_Click(object sender, EventArgs e) { if (mf.KeypadToNUD((NudlessNumericUpDown)sender, this)) { - Properties.Settings.Default.setAS_maxSteerSpeed = ((double)nudMaxSteerSpeed.Value); - if (!mf.isMetric) Properties.Settings.Default.setAS_maxSteerSpeed *= 1.609344; - mf.vehicle.maxSteerSpeed = Properties.Settings.Default.setAS_maxSteerSpeed; + Properties.Settings.Default.setDisplay_lineWidth = (int)nudLineWidth.Value; + mf.ABLine.lineWidth = Properties.Settings.Default.setDisplay_lineWidth; } } - private void nudMaxAngularVelocity_Click(object sender, EventArgs e) + private void nudSnapDistance_Click(object sender, EventArgs e) { if (mf.KeypadToNUD((NudlessNumericUpDown)sender, this)) { - Properties.Settings.Default.setVehicle_maxAngularVelocity = glm.toRadians(((double)nudMaxAngularVelocity.Value)); - mf.vehicle.maxAngularVelocity = Properties.Settings.Default.setVehicle_maxAngularVelocity; + Properties.Settings.Default.setAS_snapDistance = ((double)nudSnapDistance.Value * mf.inOrCm2Cm); + mf.ABLine.snapDistance = Properties.Settings.Default.setAS_snapDistance; } } @@ -527,85 +721,34 @@ private void nudGuidanceLookAhead_Click(object sender, EventArgs e) } } - #endregion - - - private void btnVehicleReset_Click(object sender, EventArgs e) + private void rbtnLightBar_Click(object sender, EventArgs e) { - DialogResult result3 = MessageBox.Show("Reset This Page to Defaults", - "Are you Sure", - MessageBoxButtons.YesNo, - MessageBoxIcon.Question, - MessageBoxDefaultButton.Button2); - if (result3 == DialogResult.Yes) - { - mf.SystemEventWriter("Steer Form - Steer Settings Set to Default"); - - mf.TimedMessageBox(2000, "Reset To Default", "Values Set to Inital Default"); - Properties.Settings.Default.setVehicle_maxSteerAngle = mf.vehicle.maxSteerAngle - = 45; - - Properties.Settings.Default.setAS_countsPerDegree = 100; - - Properties.Settings.Default.setAS_ackerman = 100; - - Properties.Settings.Default.setAS_wasOffset = 0; - - Properties.Settings.Default.setAS_highSteerPWM = 150; - Properties.Settings.Default.setAS_Kp = 120; - Properties.Settings.Default.setAS_minSteerPWM = 25; - - Properties.Settings.Default.setVehicle_panicStopSpeed = mf.vehicle.panicStopSpeed - = 0; - - Properties.Settings.Default.setArdSteer_setting0 = 56; - Properties.Settings.Default.setArdSteer_setting1 = 0; - Properties.Settings.Default.setArdMac_isDanfoss = false; - - Properties.Settings.Default.setArdSteer_maxPulseCounts = 0; - - Properties.Settings.Default.setVehicle_goalPointLookAhead = 3; - Properties.Settings.Default.setVehicle_goalPointLookAheadHold = 3; - Properties.Settings.Default.setVehicle_goalPointLookAheadMult = 1; - - Properties.Settings.Default.stanleyHeadingErrorGain = 1; - Properties.Settings.Default.stanleyDistanceErrorGain = 1; - Properties.Settings.Default.stanleyIntegralGainAB = 0; - - Properties.Settings.Default.purePursuitIntegralGainAB = 0; - - Properties.Settings.Default.setAS_sideHillComp = 0; - - Properties.Settings.Default.setAS_uTurnCompensation = 1; - - //Properties.Settings.Default.setVehicle_wheelbase = 2.8; - - //Properties.Settings.Default.setVehicle_trackWidth = 1.9; - - //Properties.Settings.Default.setVehicle_antennaPivot = 0.1; - - //Properties.Settings.Default.setVehicle_antennaHeight = 3; - - //Properties.Settings.Default.setVehicle_antennaOffset = 0; - - Properties.Settings.Default.setIMU_invertRoll = false; - - Properties.Settings.Default.setIMU_rollZero = mf.ahrs.rollZero; + mf.isLightBarNotSteerBar = true; + Properties.Settings.Default.setMenu_isLightbarNotSteerBar = mf.isLightBarNotSteerBar; + Properties.Settings.Default.Save(); + } - Properties.Settings.Default.Save(); + private void rbtnSteerBar_Click(object sender, EventArgs e) + { + mf.isLightBarNotSteerBar = false; + Properties.Settings.Default.setMenu_isLightbarNotSteerBar = mf.isLightBarNotSteerBar; + Properties.Settings.Default.Save(); + } - //save current vehicle - SettingsIO.ExportAll(mf.vehiclesDirectory + mf.vehicleFileName + ".XML"); + private void chkDisplayLightbar_Click(object sender, EventArgs e) + { + if (chkDisplayLightbar.Checked) { chkDisplayLightbar.Image = Resources.SwitchOn; } + else { chkDisplayLightbar.Image = Resources.SwitchOff; } - FormSteer_Load(this, e); + Properties.Settings.Default.setMenu_isLightbarOn = chkDisplayLightbar.Checked; + Properties.Settings.Default.Save(); + mf.isLightbarOn = chkDisplayLightbar.Checked; + } - toSend = true; counter = 6; + #endregion - pboxSendSteer.Visible = true; - //btnSendSteerConfigPGN.PerformClick(); - } - } + //main first tabform #region Gain private void hsbarMinPWM_ValueChanged(object sender, EventArgs e) @@ -622,14 +765,6 @@ private void hsbarProportionalGain_ValueChanged(object sender, EventArgs e) counter = 0; } - //private void hsbarLowSteerPWM_ValueChanged(object sender, EventArgs e) - //{ - // if (hsbarLowSteerPWM.Value > hsbarHighSteerPWM.Value) hsbarHighSteerPWM.Value = hsbarLowSteerPWM.Value; - // lblLowSteerPWM.Text = unchecked((byte)hsbarLowSteerPWM.Value).ToString(); - // toSend = true; - // counter = 0; - //} - private void hsbarHighSteerPWM_ValueChanged(object sender, EventArgs e) { //if (hsbarLowSteerPWM.Value > hsbarHighSteerPWM.Value) hsbarLowSteerPWM.Value = hsbarHighSteerPWM.Value; @@ -638,6 +773,15 @@ private void hsbarHighSteerPWM_ValueChanged(object sender, EventArgs e) counter = 0; } + + //private void hsbarLowSteerPWM_ValueChanged(object sender, EventArgs e) + //{ + // if (hsbarLowSteerPWM.Value > hsbarHighSteerPWM.Value) hsbarHighSteerPWM.Value = hsbarLowSteerPWM.Value; + // lblLowSteerPWM.Text = unchecked((byte)hsbarLowSteerPWM.Value).ToString(); + // toSend = true; + // counter = 0; + //} + #endregion Gain #region Steer @@ -676,7 +820,7 @@ private void btnZeroWAS_Click(object sender, EventArgs e) if (Math.Abs(offset) > 3900) { mf.TimedMessageBox(2000, "Exceeded Range", "Excessive Steer Angle - Cannot Zero"); - mf.SystemEventWriter("Excessive Steer Angle, No Zero " + offset); + Log.EventWriter("Excessive Steer Angle, No Zero " + offset); } else { @@ -736,39 +880,43 @@ private void hsbarIntegral_ValueChanged(object sender, EventArgs e) #endregion - private void hsbarUTurnCompensation_ValueChanged(object sender, EventArgs e) + #region Pure + + private void hsbarHoldLookAhead_ValueChanged(object sender, EventArgs e) { - mf.vehicle.uturnCompensation = hsbarUTurnCompensation.Value * 0.1; - lblUTurnCompensation.Text = (hsbarUTurnCompensation.Value - 10).ToString(); + mf.vehicle.goalPointLookAheadHold = hsbarHoldLookAhead.Value * 0.1; + lblHoldLookAhead.Text = mf.vehicle.goalPointLookAheadHold.ToString(); + lblAcquirePP.Text = (mf.vehicle.goalPointLookAheadHold * mf.vehicle.goalPointAcquireFactor).ToString("N1"); } - #region Pure - private void hsbarIntegralPurePursuit_ValueChanged(object sender, EventArgs e) { mf.vehicle.purePursuitIntegralGain = hsbarIntegralPurePursuit.Value * 0.01; lblPureIntegral.Text = hsbarIntegralPurePursuit.Value.ToString(); } - private void hsbarSideHillComp_ValueChanged(object sender, EventArgs e) + private void hsbarLookAheadMult_ValueChanged(object sender, EventArgs e) { - double deg = hsbarSideHillComp.Value; - deg *= 0.01; - lblSideHillComp.Text = (deg.ToString("N2") + "\u00B0"); - Properties.Settings.Default.setAS_sideHillComp = deg; - mf.gyd.sideHillCompFactor = deg; + mf.vehicle.goalPointLookAheadMult = hsbarLookAheadMult.Value * 0.1; + lblLookAheadMult.Text = mf.vehicle.goalPointLookAheadMult.ToString(); } - private void hsbarHoldLookAhead_ValueChanged(object sender, EventArgs e) + private void hsbarAcquireFactor_ValueChanged(object sender, EventArgs e) { - mf.vehicle.goalPointLookAheadHold = hsbarHoldLookAhead.Value * 0.1; - lblHoldLookAhead.Text = mf.vehicle.goalPointLookAheadHold.ToString(); + mf.vehicle.goalPointAcquireFactor = hsbarAcquireFactor.Value * 0.01; + lblAcquireFactor.Text = mf.vehicle.goalPointAcquireFactor.ToString(); } - private void hsbarLookAheadMult_ValueChanged(object sender, EventArgs e) + private void nudDeadZoneHeading_Click(object sender, EventArgs e) { - mf.vehicle.goalPointLookAheadMult = hsbarLookAheadMult.Value * 0.1; - lblLookAheadMult.Text = mf.vehicle.goalPointLookAheadMult.ToString(); + mf.KeypadToNUD((NudlessNumericUpDown)sender, this); + mf.vehicle.deadZoneHeading = (int)(nudDeadZoneHeading.Value * 100); + } + + private void nudDeadZoneDelay_Click(object sender, EventArgs e) + { + mf.KeypadToNUD((NudlessNumericUpDown)sender, this); + mf.vehicle.deadZoneDelay = (int)(nudDeadZoneDelay.Value); } private void expandWindow_Click(object sender, EventArgs e) @@ -776,117 +924,77 @@ private void expandWindow_Click(object sender, EventArgs e) if (windowSizeState++ > 0) windowSizeState = 0; if (windowSizeState == 1) { - this.Size = new System.Drawing.Size(1024, 720); + this.Size = new System.Drawing.Size(918, 673); btnExpand.Image = Properties.Resources.ArrowLeft; } else if (windowSizeState == 0) { - this.Size = new System.Drawing.Size(388, 490); + this.Size = new System.Drawing.Size(392, 492); btnExpand.Image = Properties.Resources.ArrowRight; } } - private void nudMaxCounts_Click(object sender, EventArgs e) + + #endregion + + #region Free Drive + + private void btnFreeDrive_Click(object sender, EventArgs e) { - if (mf.KeypadToNUD((NudlessNumericUpDown)sender, this)) + if (mf.vehicle.isInFreeDriveMode) { - pboxSendSteer.Visible = true; + //turn OFF free drive mode + btnFreeDrive.Image = Properties.Resources.SteerDriveOff; + btnFreeDrive.BackColor = Color.FromArgb(50, 50, 70); + mf.vehicle.isInFreeDriveMode = false; + btnSteerAngleDown.Enabled = false; + btnSteerAngleUp.Enabled = false; + //hSBarFreeDrive.Value = 0; + mf.vehicle.driveFreeSteerAngle = 0; + } + else + { + //turn ON free drive mode + btnFreeDrive.Image = Properties.Resources.SteerDriveOn; + btnFreeDrive.BackColor = Color.LightGreen; + mf.vehicle.isInFreeDriveMode = true; + btnSteerAngleDown.Enabled = true; + btnSteerAngleUp.Enabled = true; + //hSBarFreeDrive.Value = 0; + mf.vehicle.driveFreeSteerAngle = 0; + lblSteerAngle.Text = "0"; } } - private void nudPanicStopSpeed_Click(object sender, EventArgs e) + private void btnFreeDriveZero_Click(object sender, EventArgs e) { - mf.KeypadToNUD((NudlessNumericUpDown)sender, this); - mf.vehicle.panicStopSpeed = (double)nudPanicStopSpeed.Value; + if (mf.vehicle.driveFreeSteerAngle == 0) + mf.vehicle.driveFreeSteerAngle = 5; + else mf.vehicle.driveFreeSteerAngle = 0; + //hSBarFreeDrive.Value = mf.driveFreeSteerAngle; } - //private void nudDeadZoneDistance_Click(object sender, EventArgs e) - //{ - // mf.KeypadToNUD((NudlessNumericUpDown)sender, this); - // mf.vehicle.deadZoneDistance = (int)(nudDeadZoneDistance.Value*10); - //} - - private void nudDeadZoneHeading_Click(object sender, EventArgs e) + private void btnSteerAngleUp_MouseDown(object sender, MouseEventArgs e) { - mf.KeypadToNUD((NudlessNumericUpDown)sender, this); - mf.vehicle.deadZoneHeading = (int)(nudDeadZoneHeading.Value * 100); + mf.vehicle.driveFreeSteerAngle++; + if (mf.vehicle.driveFreeSteerAngle > 40) mf.vehicle.driveFreeSteerAngle = 40; } - private void nudDeadZoneDelay_Click(object sender, EventArgs e) + private void btnSteerAngleDown_MouseDown(object sender, MouseEventArgs e) { - mf.KeypadToNUD((NudlessNumericUpDown)sender, this); - mf.vehicle.deadZoneDelay = (int)(nudDeadZoneDelay.Value); + mf.vehicle.driveFreeSteerAngle--; + if (mf.vehicle.driveFreeSteerAngle < -40) mf.vehicle.driveFreeSteerAngle = -40; } - private void EnableAlert_Click(object sender, EventArgs e) - { - pboxSendSteer.Visible = true; + #endregion - if (sender is CheckBox checkbox) - { - if (checkbox.Name == "cboxEncoder" || checkbox.Name == "cboxPressureSensor" - || checkbox.Name == "cboxCurrentSensor") - { - if (!checkbox.Checked) - { - cboxPressureSensor.Checked = false; - cboxCurrentSensor.Checked = false; - cboxEncoder.Checked = false; - label61.Visible = false; - lblPercentFS.Visible = false; - nudMaxCounts.Visible = false; - pbarSensor.Visible = false; - hsbarSensor.Visible = false; - lblhsbarSensor.Visible = false; - return; - } - - if (checkbox == cboxPressureSensor) - { - cboxEncoder.Checked = false; - cboxCurrentSensor.Checked = false; - label61.Visible = true; - lblPercentFS.Visible = true; - nudMaxCounts.Visible = false; - pbarSensor.Visible = true; - label61.Text = "Off at %"; - hsbarSensor.Visible = true; - lblhsbarSensor.Visible = true; - } - else if (checkbox == cboxCurrentSensor) - { - cboxPressureSensor.Checked = false; - cboxEncoder.Checked = false; - label61.Visible = true; - lblPercentFS.Visible = true; - nudMaxCounts.Visible = false; - hsbarSensor.Visible = true; - pbarSensor.Visible = true; - label61.Text = "Off at %"; - lblhsbarSensor.Visible = true; - } - else if (checkbox == cboxEncoder) - { - cboxPressureSensor.Checked = false; - cboxCurrentSensor.Checked = false; - label61.Visible = true; - lblPercentFS.Visible = true; - nudMaxCounts.Visible = true; - pbarSensor.Visible = true; - hsbarSensor.Visible = false; - lblhsbarSensor.Visible = false; - label61.Text = gStr.gsEncoderCounts; - } - } - } - } private void btnSendSteerConfigPGN_Click(object sender, EventArgs e) { SaveSettings(); mf.SendPgnToLoop(mf.p_251.pgn); pboxSendSteer.Visible = false; - mf.SystemEventWriter("Steer Form, Send and Save Pressed"); + Log.EventWriter("Steer Form, Send and Save Pressed"); mf.TimedMessageBox(2000, gStr.gsAutoSteerPort, "Settings Sent To Steer Module"); } @@ -1004,120 +1112,94 @@ private void SaveSettings() pboxSendSteer.Visible = false; } - private void hsbarSensor_Scroll(object sender, ScrollEventArgs e) - { - pboxSendSteer.Visible = true; - lblhsbarSensor.Text = ((int)((double)hsbarSensor.Value * 0.3921568627)).ToString() + "%"; - } - private void rbtnLightBar_Click(object sender, EventArgs e) + private void btnSteerWizard_Click(object sender, EventArgs e) { - mf.isLightBarNotSteerBar = true; - Properties.Settings.Default.setMenu_isLightbarNotSteerBar = mf.isLightBarNotSteerBar; - Properties.Settings.Default.Save(); + Close(); + Form form = new FormSteerWiz(mf); + form.Show(mf); } - private void rbtnSteerBar_Click(object sender, EventArgs e) - { - mf.isLightBarNotSteerBar = false; - Properties.Settings.Default.setMenu_isLightbarNotSteerBar = mf.isLightBarNotSteerBar; - Properties.Settings.Default.Save(); - } - private void chkDisplayLightbar_Click(object sender, EventArgs e) + private void btnVehicleReset_Click(object sender, EventArgs e) { - if (chkDisplayLightbar.Checked) { chkDisplayLightbar.Image = Resources.SwitchOn; } - else { chkDisplayLightbar.Image = Resources.SwitchOff; } + DialogResult result3 = MessageBox.Show("Reset This Page to Defaults", + "Are you Sure", + MessageBoxButtons.YesNo, + MessageBoxIcon.Question, + MessageBoxDefaultButton.Button2); + if (result3 == DialogResult.Yes) + { + Log.EventWriter("Steer Form - Steer Settings Set to Default"); - Properties.Settings.Default.setMenu_isLightbarOn = chkDisplayLightbar.Checked; - Properties.Settings.Default.Save(); - mf.isLightbarOn = chkDisplayLightbar.Checked; - } + mf.TimedMessageBox(2000, "Reset To Default", "Values Set to Inital Default"); + Properties.Settings.Default.setVehicle_maxSteerAngle = mf.vehicle.maxSteerAngle + = 45; + Properties.Settings.Default.setAS_countsPerDegree = 110; - #endregion + Properties.Settings.Default.setAS_ackerman = 100; - #region Free Drive + Properties.Settings.Default.setAS_wasOffset = 3; - private void btnFreeDrive_Click(object sender, EventArgs e) - { - if (mf.vehicle.isInFreeDriveMode) - { - //turn OFF free drive mode - btnFreeDrive.Image = Properties.Resources.SteerDriveOff; - btnFreeDrive.BackColor = Color.FromArgb(50, 50, 70); - mf.vehicle.isInFreeDriveMode = false; - btnSteerAngleDown.Enabled = false; - btnSteerAngleUp.Enabled = false; - //hSBarFreeDrive.Value = 0; - mf.vehicle.driveFreeSteerAngle = 0; - } - else - { - //turn ON free drive mode - btnFreeDrive.Image = Properties.Resources.SteerDriveOn; - btnFreeDrive.BackColor = Color.LightGreen; - mf.vehicle.isInFreeDriveMode = true; - btnSteerAngleDown.Enabled = true; - btnSteerAngleUp.Enabled = true; - //hSBarFreeDrive.Value = 0; - mf.vehicle.driveFreeSteerAngle = 0; - lblSteerAngle.Text = "0"; - } - } + Properties.Settings.Default.setAS_highSteerPWM = 180; + Properties.Settings.Default.setAS_Kp = 50; + Properties.Settings.Default.setAS_minSteerPWM = 25; - private void btnFreeDriveZero_Click(object sender, EventArgs e) - { - if (mf.vehicle.driveFreeSteerAngle == 0) - mf.vehicle.driveFreeSteerAngle = 5; - else mf.vehicle.driveFreeSteerAngle = 0; - //hSBarFreeDrive.Value = mf.driveFreeSteerAngle; - } + Properties.Settings.Default.setArdSteer_setting0 = 56; + Properties.Settings.Default.setArdSteer_setting1 = 0; + Properties.Settings.Default.setArdMac_isDanfoss = false; - private void btnSteerAngleUp_MouseDown(object sender, MouseEventArgs e) - { - mf.vehicle.driveFreeSteerAngle++; - if (mf.vehicle.driveFreeSteerAngle > 40) mf.vehicle.driveFreeSteerAngle = 40; - } + Properties.Settings.Default.setArdSteer_maxPulseCounts = 3; - private void btnSteerAngleDown_MouseDown(object sender, MouseEventArgs e) - { - mf.vehicle.driveFreeSteerAngle--; - if (mf.vehicle.driveFreeSteerAngle < -40) mf.vehicle.driveFreeSteerAngle = -40; - } + Properties.Settings.Default.setVehicle_goalPointAcquireFactor = 0.85; + Properties.Settings.Default.setVehicle_goalPointLookAheadHold = 3; + Properties.Settings.Default.setVehicle_goalPointLookAheadMult = 1.5; - #endregion + Properties.Settings.Default.stanleyHeadingErrorGain = 1; + Properties.Settings.Default.stanleyDistanceErrorGain = 1; + Properties.Settings.Default.stanleyIntegralGainAB = 0; + Properties.Settings.Default.purePursuitIntegralGainAB = 0; + + Properties.Settings.Default.setAS_sideHillComp = 0; - private void btnStanleyPure_Click(object sender, EventArgs e) - { - mf.isStanleyUsed = !mf.isStanleyUsed; + Properties.Settings.Default.setAS_uTurnCompensation = 1; - if (mf.isStanleyUsed) - { - btnStanleyPure.Image = Resources.ModeStanley; - mf.SystemEventWriter("Stanley Steer Mode Selectede"); - } - else - { - btnStanleyPure.Image = Resources.ModePurePursuit; - mf.SystemEventWriter("Pure Pursuit Steer Mode Selected"); - } + Properties.Settings.Default.setIMU_invertRoll = false; - Properties.Settings.Default.setVehicle_isStanleyUsed = mf.isStanleyUsed; - Properties.Settings.Default.Save(); + Properties.Settings.Default.setIMU_rollZero = 0; - tabControl1.TabPages.Remove(tabInt); - tabControl1.TabPages.Remove(tabStan); + Properties.Settings.Default.setAS_minSteerSpeed = 0; + Properties.Settings.Default.setAS_maxSteerSpeed = 15; + Properties.Settings.Default.setAS_functionSpeedLimit = 12; + Properties.Settings.Default.setDisplay_lightbarCmPerPixel = 5; + Properties.Settings.Default.setDisplay_lineWidth = 2; + Properties.Settings.Default.setAS_snapDistance = 20; + Properties.Settings.Default.setAS_guidanceLookAheadTime = 1.5; + Properties.Settings.Default.setAS_uTurnCompensation = 1; - if (mf.isStanleyUsed) tabControl1.TabPages.Add(tabStan); - else tabControl1.TabPages.Add(tabInt); - } + Properties.Settings.Default.setVehicle_isStanleyUsed = false; + mf.isStanleyUsed = false; - private void btnSteerWizard_Click(object sender, EventArgs e) - { - Close(); - Form form = new FormSteerWiz(mf); - form.Show(mf); + Properties.Settings.Default.setAS_isSteerInReverse = false; + mf.isSteerInReverse = false; + + //save current vehicle + RegistrySettings.Save(); + + mf.vehicle = new CVehicle(mf); + + FormSteer_Load(this, e); + + toSend = true; counter = 6; + + pboxSendSteer.Visible = true; + + tabControl1.SelectTab(1); + tabControl1.SelectTab(0); + tabSteerSettings.SelectTab(1); + tabSteerSettings.SelectTab(0); + } } } } \ No newline at end of file diff --git a/SourceCode/GPS/Forms/Settings/FormSteer.resx b/SourceCode/GPS/Forms/Settings/FormSteer.resx index c7126dc35..b207033d0 100644 --- a/SourceCode/GPS/Forms/Settings/FormSteer.resx +++ b/SourceCode/GPS/Forms/Settings/FormSteer.resx @@ -127,8 +127,8 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABq - KAAAAk1TRnQBSQFMAgEBBQEAAYABBAGAAQQBQgEAASwBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACi + KgAAAk1TRnQBSQFMAgEBBQEAAeABBAHgAQQBQgEAASwBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABCAEBAgABWAMAAQEBAAEIBQABwAFaGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHA AdwBwAEAAfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANC AQADOQEAAYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ @@ -156,151 +156,160 @@ Af8BmQHMAQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEA Av8BMwEAAcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEA Av8BZgEAASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4 - AQAB8AH7Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA///AP8ALgAB/wP0 - Af//AAQAARoDdQH//wAEAAEbA3UB//8ABAABGwN1Af//AAQAARoDdQH//wAEAAEaA00B//8ABAABGwN1 - Af//AAQAARoBTQFTAU0B/xMAAfMB/wEaAf8B8ALsAe8B/+cAARoCUwFNAf8TAAGYAfMBaQH/Ae8CIAFu - AfTnAAEaAlMBTQH/EwABmAHzAWkB/wHvAiABRQHy4wAE/wEaAlMBTQH0A/8QAAGYAfMBaQH/Ae8CIAFG - AfDjAAH/AfQCGgGUAlMBTQMaAf8LAAP/AgABmAHzAWkB/wHvAiAB6QEH4wAB/wH0AXUBTQVTAU0BlAH/ - CgAB/wHzAQcB8AIAAZgB8wFpAf8B7wIgAekBk+QAAf8BGwF1BVMBdQH0CgAB9AEHAW0BEQEHAgABmAHz - AWkB/wHvAiAB6QGTAf/kAAH/ARsBdQJTAU0BlAH0CQAB/wHwAewBDgEAAQ8BBwIAAZgB8wFpAf8B7wIg - AekBbgH05QAB/wEbAXUBTQGUAfQB/wcAAf8B8wHtAUMBAAHrAewBDwEHAgABmAHzAWkB/wHvAyABbgHy - 1QABwwOgAcMB/wsAAf8BGwEaAfQB/wcAAfQB7wETAQ4BFAHwAfQBvAEPAQcCAAGYAfMBaQH/Ae8DIAFF - AfDVAAFeA/sB5QH2DAAD/wYAAf8BvAHqAQ4BEAEHAfQC/wG8AQ8BBwIAAZgB8wFpAf8B7wMgAUUBB88A - AfMBbwRGBPsBOBVGAUUBQwEOAQABCwEfBEYBRQEAAQwCaAFJAWcB6QFoAQwDIAEfAUUBG84AAfMBRgQg - BPsBOAElFCAB6QEeAgABCwEBBCABAQEAAQwCPgEUAUQB6QE+AQwDIAEfAUUB8dQAAV4D+wHlAfYMAAP/ - BgAB/wHzAewBEAEAAesB8wL/AbwBDwEHAgABmAHzAWkB/wHvAyABRQG81QAEwwEbAf8LAAH/AfMBGgL/ - BwAB/wHwAW0CDgGSAfQBBwEPAQcCAAGYAfMBaQH/Ae8DIAFFAfDlAAH/AfMBdQFNAZoC/wgAAfQB7wES - AQABQwHsAQ8BBwIAAZgB8wFpAf8B7wMgAW8B8uQAAf8B8wF1AlMBTQGaAf8KAAHzAe0BFAEAAQ8BBwIA - AZgB8wFpAf8B7wIgAekBbgH04wAB/wHzAXUEUwFNAZQB/woAAf8B8QHsARMBBwIAAZgB8wFpAf8B7wIg - AekBkwH/4gAB/wH0AXUBTQVTAU0BlAH/CgAC/wHxAfICAAGYAfMBaQH/Ae8CIAHpARzjAAH/AfQCGgF1 - AlMBTQGaAhoB/wwAAv8CAAGYAfMBaQH/Ae8CIAHpAQfjAAT/ARoCUwFNAfQD/xAAAZgB8wFpAf8B7wIg - AUYB8OcAARoCUwFNAf8TAAGYAfMBaQH/Ae8CIAFFAfLnAAEaAlMBTQH/EwABmAHzAWkB/wHvASAB6QFu - AfTnAAEaAU0BUwFNAf8TAAEIAfQBkwH/AfACbgHv6AABGwN1Af//AAQAARoDTQH//wAEAAEaA3UB//8A - BAABGgN1Af//AAQAARsDlAH//wAEAAEaA3UB//8ABAAB9gPzAf//AP8A/wD/AP8AJgAD/wH0AfMBBwXv - AfAB9AP/9wAB/wH0AbwB7AFECCIBQwHrAbwB9AH/9QAB/wHyAUQCIgojAiIBbQHxAf/zAAH/AfEB7AEi - AiMLRAEjASIBbQG8AfQB/+8AAf8B8wHvARUBQwREAUoGRANKAkQCQwHsAfEB/y8AAv8B8gG7BLoBuwHy - A/+xAAH/AfEB6wFDAhEBRAFLAXMBbgFEAhUBQwERAhUBRAHqAXMBbgESAhEBQwHqAQcB/ywAAf8B8gG6 - AbMJsgG6ARkC/64AAf8B8AFtAUMBEQEQAW0BBwHwAfIBvAESBhABEQHsAfIB8QG8AewBEQEQAUMBEwHv - AfQpAAH/AfIBugayBYEDsgG6ARkB/0MAAQcB7AGSAe0CkgHtAfcB7QHvAZIB9wGSAe0BkgHsAe8B/zAA - AfIC7QHsAZIB7QOSAe8B7QH3AZIB7QGSAewB9wH0FQAB/wHwARIBQwEQAREB9wHzAf8CAAH/AZIBQwUR - ARMBvAH/AQAB/wH0AQcBFQEQAREBFAEHAf8nAAH/AQkBsweyCIECsgEJAf87AAH0BQAB8QERBg4BQwEQ - ARUBQwMTAeoBFQEUAe0pAAH0BQAB/wFDAw4BDwIOARABEQEVAREBEgETARQB6gEVAhMUAAH/AfEBbQFD - ARABEQEHAfQFAAG8ARMFEQFtAfMEAAH/AfEBFAEQAUMB6gG8Af8lAAH/AQkJsgmBArIBCQH/JAACGhMA - AfQBQwHzBAAB8AH3CpIBbQQAAQ4B7BMAAbsB9BMAAf8BFAHzBAAB8gH3CpIB7AEOAwABDgERFAAB8wHs - ARUBEAERAbwB/wYAAfEBEgURAewB9AUAAf8B8gEUARABQwHrAfIkAAH/AfABswmyCoECsgG7Af8iAAEa - AU0BGgIAAe8D7APtAZIF7AHwAwAB7wETBAAB9AG8DPAB6gQAAesSAAG7AbIB9AIAAfAD7ALtApIB7AHt - A+wBBwMAAfIBQwH0AwAB/wG8DPAB7QQAAQ8TAAH/Ae8BFAERAQ8BBwH/BwAB8QESBREB7AH0BgAB/wHx - ARUBEAEVAe0B9CMAAfQBkAGBCbIJgQGKAYECsgEZIQABGgF1AZoBGgIAAQ4CQwEVARIBEwISARUBFAEV - AhABbQMAAgcEAAHxDfAB9wQAAW0RAAG7AroB9AIAAW0BQwEQAUMBEwMSARQBEwFDARABQwQAAfMB7QQA - AfMN8AEHGAAB8gFtAREBDwGSAf8IAAHxARIFEQHsAfQHAAH/AQcBDwERARMB8AH/IQAB/wG0AYEKsgmB - AooBgQGyAbkB/x8AAZoBdQEaAZoBGgIAAQ4CQwEVAhQCEwIVAUMBEAERAW0DAAHyAfMEAAHxDfABBwQA - AQ8QAAG7AboBCQG6AfQCAAFtAUMBEAFDARQDEwIUAUMBEQFDBQABBwQAAfMN8AEHBQAB/xAAAf8B8gHs - AUMBEAESAfMB/wgAAfEBEgVDAewB9AgAAfQB7AEQAUMB7AHzAf8gAAHzAoEKsgmBA4oCsgEJHgABmgF1 - AhoBmgEaAgABDgFDARABDwERB0MBEQFDAf8CAAHyAfMB/wHxAgcK7wH3AQcC8AHvEwAB/wK6AgkBugH0 - AgABbQFDAg8BEQhDAQ8B9AMAAQcBAAHxAgcM7wLwAe8FAAHyEAAB9AFEAUMBEQEPAQcB/wkAAfEB6gVD - AewB9AgAAf8B8QIRAUMBbQH0IAABuwGBC7IJgQSKAbIBugH/HAABmgF1AxoBmgEaAgABEAFDAQ4BDwER - B0MBEQEPAfICAALyAQcOvAHvAbwB8AHsEgAB/wK6AwkBugH0AgAB7AFDAQ4BDwERCEMBEAHvAwACBw68 - Ae8BvAHwAe8FAAHzDwAB/wHwASMBIgEQAW0B8woAAfEBEwUQAesB9AkAAfQB7QEPASIBIwHwAf8fAAGQ - AYELsgmBBIoBsgG5AfQbAAGaAXUEGgGaARoCAAH0AfMBbQEUARMBEgEVBUMBEQEPAfICAAHzAZIPvAHv - AgcB9AHyAe8B7AFtAfAMAAH/AroECQG6AfQCAAH/AfMB9wEVARMBEgEVBkMBEAHvAwAB7A+8Ae8CBwHy - AfQB7wHtAW0B7xAAAf8BHAFEASMBIgHtAfQJAAH/AfcBQwUiARIB8AkAAf8BHAEiAiMBHAH/HgAB9AGQ - AYELsgmBBIoBgQGzAfIaAAGaAXUFGgGaARoCAAH0AfAKBwGSAe0BBwLwAbwBBwG8CPABvAHvAZIB9wPv - AbwB8xEAAf8CugUJAboB9AIAAf8B8AoHAfcB7QHvA/ABBwG8CfAB7wGSAvcC7wG8AfMWAAH2AUsBRAIj - ARwB9AgAAf8B8wFtBiMBRAHtAv8HAAH/ARwBIwFEASMBSwH2HgAB9AGQAYELsgmBBIoBgQGzARkZAAGa - AXUGGgGaAXUBTQRMBk0BdAe8AQcLvAFtARQBEwFtAewB7wG8AfAQAAH/AroGCQG6ArkEgRKzAbwCswGy - AboBvAGyAbMBsgJsA7ICvBYAAfQCRAIjAewB8gL/BAAC/wHzAewBIgcjARUB7wH0Af8FAAH/AfQB7wEj - AUQCIwH0Af8TAAH0B5gBvAH/AfQBkAGBC7IJgQSKAYEBswEZAQAI9AH/DQAB/wF1AZoJGgF0BEoBSwR6 - AXUBkwfxDLwBbQEUARMBbQHsAe8C8A8AAf8CugkJAbsFbBC6AbMBvAGzAboBuQG6AbwBswG6AbMCbAGz - AZEBsgHwAQcWAAHwAkQBIwEiARABbQEHBvIBBwHqCiMBIgHrAbwF8gHxAfcBEwEiAkQBIwHwAf8TAAHz - B0kBcgL0AZABgQuyCYEEigGBAbMB8gH/AW8HIAEaDAAB/wF1AZoKGgFzBEoBSwR6AXUBlAfzAfECBwG8 - AQcC7AK8A/ABbQITAW0B7AEHAvAOAAH0AbMLCQG0BWwQugGzAQcBswGRAbMBugHwAbMBugGzAmwBswGR - AbIB8AEHFQAB/wEHAkQBIwEiA0MDEQRDAUQCIwdEAiMEQwQRA0MBIwFEASMBBwH/EwAB/wFPBkkBcgHz - Af8BkAGBC7IBgQKQBoEEigGyAbkB9AH/AWkHIAEaCwAB/wF1AZoLGgFuBEoBSwF5A3oBdQGUB/QB8gIH - AbwB6wHsAe0B7ATwAewB6wLsAfcBBwHwAbwNAAH0AbMMCQGRBWwQugGzAewBswG0AZABugHwAbMBugGz - ApEBswG0AbMB8AEHFQAB/wHvAkQBIwEiAUMHFQIUC0QBIwFEAhQHFQFDASMBRAEjAe8B/xMAAf8BcgJP - BEkBTwHxAQABuwGBC7IBcgJMAXEFgQSKAbIBugH/AfMBRgcgAfQLAAH2AU0BmgsaAW4ESgFLAXQBeQKa - AXUBlAf/AfMCBwG8AesC7QHsBPAB7AHrAuwB9wEHAfABvA0AAfMBswwJAZEFbAG0D7oBswHsAbMBtAGQ - AboB8AGzAboBswKRAbMBtAGzAfAB7xUAAf8B7wJEASMBEQUVBRQNRAQUBRUBQwEjAUQBIwHvAf8TAAH/ - AZgETwNJAQcB/wHzAoEKsgHrASwBKwFyBYEDigGBAbIBCQEAAQcBQAcgDQAB/wFNAZoKGgFuBEoBSwR6 - AXUBlAfzAfADBwH3AW0B6wHvBPABbQITAW0B7AEHAfABBw4AAfQBuQsJAbQFbBC6AbMB7wGzAZABswG6 - AfABswG6AbMCbAGzAZEBsgHwAe8VAAH/Ae8CRAEjAUMEFQYUBEQGSgNEBRQEFQFDASMBRAEjAe8B/xMA - Af8BCAZPAUkBcgH0AQABtAGBCrIBkAIsAXIFgQKKAYEBsgG5AfQB/wFvByABbw4AAf8BdQGaCRoBdARK - AUsEeQJ0B/AGBwG8BfABbQITAW0B7AHvAfABBw8AAfQBswoJAbsFbBC6AbMBBwGzA7oB8AGzAboBswJs - AbMBkQGyAfAB7xUAAf8BBwJEASMBQwQVBhQCRAFKB0sDRAYUAxUBQwEjAUQBIwHvAf8UAAH0CE8BCAH/ - AfQBkAGBCbIBkAIsAW0FgQGKAYECsgHwAf8BGgFGByABGg8AAf8BdQGaBhoBmgJ1BEwFUgFNAXQHBwHv - BQcG8AFtAhMBbQHsAe8B8AEHEAAB9AGzBwkBuwK6AZACBgGQErMBBwOzAboB8AGyArMCbAGyAbMBsgHw - Ae8VAAH/Ae8CRAEjAUMDFQcUAkQISwFKAkQGFAMVAUMBIwFEASMB7wH/FAAB/wGYCE8B9AH/AfABgQmy - AYECLAFtBoECsgG7Av8B8QFGBiABRgH/EAAB/wF1AZoFGgKaAvQBGwiTBO0BbQG8A/IEBwG8BvEF8ALv - AfQRAAH0AbMGCQG6ARkC9AHzCLsEkQFsAfcC8AHzAfcCuwEHA7sBvAHxA7sCvAO7Ae8B8hUAAf8B8AJE - ASMBIgFDCBUBFAJECEsDRAEUBxUBQwEjAkQBIwG8Af8UAAH/AQgITwFyAv8BCQmyAYECLAFLBYECsgG6 - Av8BGgGaAfMBkwFGBCABkwH/EQAB/wF1AZoEGgGaARoEAAHsARQCEwZDAREBDwHyAgAB9AGSAwcBvAvw - AQcC8wH0AfcCbQESAfAMAAH0AbMFCQG6AfQEAAEHARUCEwdDARAB7wMAAe0EBwvwAe8C8wH0AQcCbQES - Ae8QAAH0AkQCIwFDARQB7QG8BfEB8AHvBxwDcwFuAe8B8ATxAfABBwHsAUMBIwJEASMB8wH/FQAB9AF4 - CE8BmAL/AQkBsweyAYEBcwFLAXEEgQGyAbMBuwL/ARoCUwF6AhoBBwFpASABRgH0EwAB/wF1AZoDGgGa - ARoCAAHrAUMBDgEPAREHQwERAQ8B8gIAAfIB8AHvAgcBvAvwAe8C8AHsBAABbQ0AAfQBswQJAboB9AIA - AfcBQwEOAQ8BEQhDARAB7wMAAu8CBwG8C/AB7wLwAe8VAAH/AW4CRAEjAW0B8Rz/AfQBHAEjAUQBIwFK - Af8WAAH/AQgJTwGYAfQB/wHzAbMGsgWBA7IBuQEZAv8BmgVTAXoBmgEbAQcBGgH/FAAB/wF1AZoCGgGa - ARoCAAEOAUMBDgEPAREHQwERAQ8B9AIAAfIB8wH/AbwB7wz3Ae8C8AHsBAABbQ4AAf8BugG7AgkBugH0 - AgABbQFDAQ4BDwERCEMBEAEHAwABBwH/AfAB7wz3Ae8C8AEHFQAB/wHvAkQBIwFKAfMcAAHzAW4CRAEj - ARwB/xcAAf8BmAlPAXIB9AH/AQAB8AGzC7IBCQH/AQAB9gGaCFMBWQEaAf8WAAH/AXUBmgEaAZoBGgIA - AQ4BQwIRAUMDFQRDAREB6gMAAfIB8wQAAfEN8AHsBAABbQ8AAf8CugEJAboB9AIAAW0BQwEQAREBQwUV - A0MBDgQAAQcEAAHzDfABBwQAAQ4QAAH/AfICRAIjAbwB/xoAAf8BvAEjAkQBIwHyAf8YAAH0AZcJTwFy - AQgB9AL/AfMBCQG7BboBCQHzAv8B9gH0ARsBeghTAVkBGxkAAZoBdQGaARoCAAEOAkMBFQESARMCEgEV - ARQBFQIQAW0DAAHwAfEEAAHxDfAB7AQAAewQAAH/A7oB9AIAAW0BQwEQAUMBEwMSARQBEwFDARABQwQA - AfQB9wQAAfMN8AHvBAABDhEAAf8BHAJEASMB7QH0GgAB9gHtASMCRAFzAfQaAAHzC08BcgGYAfIB/wEA - Bv8BAAH/AfQBwwHlAV4BwwEbCFMBGgH/GgABmgFNARoCAAHqAkMBFQESARMCEgEVARQBFQIQAfcDAAHv - AeoEAAHyDfABFAQAAewRAAH/AboBswH0AgAB9wFDARABQwETAxIBFAETAUMBEAFDAW0DAAHyAUMB9AMA - AfQBBwzwAW0EAAEREQAB/wHzAUsBRAEiARUB8gH/GAAB/wHzAW0BIgFEAUsB8QH/GgAB/wHzDU8BUAGX - AggBAAH0AfIB8AH0AeUFXgHDARoGUwGaAf8cAAGaARoTAAHzAUMB8wQAAZIL9wETAgACDgEQAewSAAH/ - AboB9BMAAfQBQwHzBAABBwGSCvcB6wIAAg4BEAEVEgAB/wHwAesBQwEPAewB9BgAAf8B9wEPAUMBEgG8 - Af8cAAH/AfMBlw9PAQADTwHyAeUGXgH2AZoEUwEaHwAB9hQAAfAB/wQAAewBEQIOARADEQFDARUCEwES - AW0BFAHqAhQB7BMAAv8UAAHyAf8EAAEHARUCDgEPAUMBEAERAUMBFQETARQC6gESAeoBFQEUARITAAH/ - AbwBEwERAQ8BkgH/FgAB/wEHAhEBFAHvAf8eAAH/AfMBeA5PAQADTwEIAcMGXgHlAfQBegFTAXoBGwH/ - OgAB9AFtARQBEwEUAxIBbQETAm0BEgFtARQB6gEUARIB9C8AAfQB6wEUAeoBFQHqARMC6gESAW0B6gFt - AeoBEgHqARUBFAHwFAAB9AGSARQBEQEPAQcB9BQAAf8BBwERARABQwHsAfMgAAL/AZgNTwEAA08BeAH0 - B14BoAH0ARoB9AH/pQAB8wHsARUBEAEPAZIB9BIAAfQBBwERARABQwFtAfAB/yMAAfIBlwtPAQAETwH0 - AeUHXgEbqAAB/wHyAesBQwERAQ8B7AHxAf8OAAH/AfIB7QERARABQwHqAfAB/yUAAf8BCAGYAVAITwEA - BE8BCAHDBF4B5QGgAfaqAAH/AfIB7AEVAREBEAETAfcB8QH/CgAB/wHzAe8BbQEQAREBQwHqAfAB/ycA - Av8B8wEIAZcGTwEABE8BeAH2AV4B5QGgARsB9q0AAf8B8wGSAUMBEQEQAREBEgHtAQcB8gH0Af8CAAH/ - AfQB8wG8AZIBbQERARABEQFDAW0B8gH/KwAD/wEbAZgBlwJPAQADTwGXAZgB/wH2Av+xAAH0AbwB6gFD - AxEBFQESAW0E7AFtAeoBFAERARABEQFDARUB7wHzAf81AAH0Af+5AAH/AfMB7wESAkMCEQYQAxEBQwEV - Ae0B8gH/8wAC/wH0AbwB7AEVA0MCEQNDARUBbQHvAfMC//YAA/8B9AHxAQcE7wEHAfAB9AP//AAI/+MA - AUIBTQE+BwABPgMAASgDAAEIAQECAAFYAwABAQEAAQEFAAFgAQwWAAP/AQAI/wHAGwAI/wHAGwAD/wHg - BP8BwBsAA/8B4AT/AcAbAAP/AeAE/wHAGwAD/wHgBP8BwBsAA/8B4AT/AcAbAAP/AeAE/wHAGwAD/wHg - BP8BwBsAA/8B4AL/AeABDwHAGwAD/wHgAv8B4AEPAcAbAAP/AeAC/wHgAQ8BwBsAAv8B/gEAAR8B/wHg - AQ8BwBsAAv8B/gEAAR8B/AFgAQ8BwBsAAv8B/gEAAR8B+AFgAQ8BwBsAA/8BAAE/AfABYAEHAcAbAAP/ - AYABfwHAAWABBwHAGwAD/wHAAX8BAAFgAQcBwBsAAf8BwAH/AeAB/gEAAWABBwHAGwAB/wHAAf8B8QH4 - AQABYAEHAcAbAAHwBgABAwHAGwAB8AYAAQMBwBsAAf8BwAH/AfEB+AEAAWABBwHAGwAB/wHAAf8B4AH+ - AQABYAEHAcAbAAP/AcABfwGAAWABBwHAGwAD/wGAAX8B4AFgAQcBwBsAA/8BAAE/AfABYAEHAcAbAAL/ - Af4BAAEfAfgBYAEPAcAbAAL/Af4BAAEfAf4BYAEPAcAbAAL/Af4BAAEfAf8B4AEPAcAbAAP/AeAC/wHg - AQ8BwBsAA/8B4AL/AeABDwHAGwAD/wHgAv8B4AEfAcAbAAP/AeAE/wHAGwAD/wHgBP8BwBsAA/8B4AT/ - AcAbAAP/AeAE/wHAGwAD/wHgBP8BwBsAA/8B4AT/AcAbAAP/AeAE/wHAGwAI/wHAGwAI/wHAGwAI/wHA - GwAI/wHAGwAD/wGAAQABfxv/AwAD/wIAAT8b/wMAAv8B/gIAAR8b/wMAAv8B/AIAAQcb/wMAAv8B8AIA - AQMF/wH4AQABPxP/AwAC/wHgAgABAQX/AeABAAEPE/8DAAL/AcADAAX/AYABAAEHCP8CAAE/Bf8BwAEA - AQ8DAAL/AYABMAEBAQABfwT/AgABAwf/Ab4CAAE/BP8B7wGAAQABDwMAAv8BAAH4AQMBwAE/A/8B/gIA - AQEE/wHnAv8BHgIAAT8B/wH5Av8BxwGAAQABDwMAAv8BAQH4AQMB4AE/A/8B/AMABP8BxgEAAQcBPAIA - AT8B/wHxAYABAQHHAgABDwMAAf8B/gEDAfgBAwHwAR8D/wH8AwAE/wGGAQABBwE8AgABPwH/AeEBgAEB - Ac8CAAEPAwAB/wH+AQcB+AEDAfgBDwP/AfgDAAF/A/8BBgEAAQcBPAIAAT8B/wHBAYABAQHvAgABBwMA - Af8B+AEHAfgBAwH8AQcD/wH4AwABfwL/Af4BBgEAAQMDAAE/Af8BAQGAAQAB6AIAAQcDAAH/AfgBDwH4 - AQMB/AEHA/8B+AMAAT8C/wH8AQYBAAEDAwABPwH+AQEBgAEAAeACAAEHAwAB/wHwAR8B+AEDAf4BAwP/ - AfgDAAE/Av8B+AEGAQABAwMAAT8B/AEBAYABAAHgAgABDwMAAf8B8AEfAfABAwH+AQMD/wHwAwABPwL/ - AfABBgQAAQ8B/wH4AQEBgAMAAQMB/wMAAf8B8AEfAeABAAH+AQMD/wHwAwABPwL/AeAFAAEPAf8B8AUA - AQMB/wMAAf8B8AEHAYABAAF8AQEC/wHABAABIAEPAf8BgAUAAQ8B/wHgBQABAwH/AwAB/wHwBAABAQL/ - AcAFAAEPAf8GAAEPAf8BwAUAAQMB/wMAAf8B4AQAAQEC/wHABQABDwH+BgABDwH/AYAFAAEDAf8DAAH/ - AeAEAAEBAv8BwAEIBAABDwH+BgABDwH/AYAFAAEDAf8DAAH/AeAEAAEBAv8BwAQAAUABHwH/BgABDwH/ - AcAFAAEDAf8DAAH/AeAEAAEBAv8BwAEEBAABHwH/AYAFAAEPAf8B4AUAAQMB/wMAAf8B4AQAAQEC/wHg - BQABHwH/AcAFAAEPAf8B8AUAAQMB/wMAAf8B4AQAAQEC/wHgBQABHwH/AeAFAAEPAf8B+AUAAQMB/wMA - Af8B4AQAAQEC/wHgBQABHwH/AfABBwGAAQMDAAE/AfwBAQHgAQAB4AIAAQ8DAAH/AfAEAAEBAv8B8AUA - AT8B/wH4AQYBAAEDAwABPwH+AQEBgAEAAeACAAEPAwAB/wHwBAABAwL/AfAFAAE/Af8B/AEGAQABAwMA - AT8B/wEBAYABAAHgAgABDwMAAf8B8AEfAv8B/gEDAv8B+AEAARABAAEQAQABfwH/Af4BBgEAAQcBPAIA - AT8B/wGBAYABAQHvAgABDwMAAf8B8AEPAv8B/AEDAv8B/AUAA/8BhgEAAQcBPAIAAT8B/wHBAYABAQHP - AgABDwMAAf8B+AEPAv8B/AEHAv8B/gEAAQEBAgIAA/8BxgEAAQcBPAIAAT8B/wHhAYABAQHHAgABDwMA - Af8B+AEHAv8B+AEHAv8B/gIAASABAAEBA/8B5wL/AR4CAAE/Af8B8QL/AccBgAEAAQ8DAAH/AfwBBwL/ - AfgBDwP/AgABIAEAAQcD/wH3Av8BngIAAT8B/wH5Av8B5wGAAQABDwMAAf8B/gEDAv8B8AEfA/8BgAEA - ASABAAEHBv8B/gIAAT8F/wGAAQABDwMAAv8BAQL/AeABPwP/AcABAAEgAQABDxL/AwAC/wGAAv8BwAE/ - A/8B+AEAASABAAF/Ev8DAAL/AYABPwH/AQABfwP/AfwBAAEgAQAT/wMAAv8BwAEPAfwBAAT/Af4BAAEg - AQMT/wMAAv8B4AEAAcABAQX/AcABIAEPE/8DAAL/AfgCAAEDBv8B5xT/AwAC/wH8AgABDxv/AwAC/wH+ - AgABHxv/AwAD/wGAAQABfxv/AwAD/wH4AQcc/wMACw== + AQAB8AH7Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/8eAAj//AAD/wH2 + Af8B9AHzAhsB8wH0Af8B9gP/9gAC/wH0ARsBmgF6CFkBegGaARsB9AL/8gAB/wH2ARsBmgJZDDgCWQGa + ARsB9gH/7wAB/wEbAZoBWRI4AVkBmgEbAf/sAAH/AfQBmgFZFjIBWQGaAfbqAAH/ARsBegkyAVMBWQF6 + AlMCegFTCTIBegEbAf/nAAH/ARoBWQkyAVkBmgIbAhoCGwGaAVkJMgFZARoB/+UAAf8BGwFZCjIBegEb + Av8C9AL/AfMBegoyAVkBGgH/4wAB/wHzAVkHMgQ4AXoB9AL/AvQC/wH0AXoDOAgyAVkBGwH/4gAB/wF6 + BjIGOAF6AfYC/wL0Av8B9gF6BTgHMgF6AfbhAAH/AZoGMgY4ATEBdAEbAv8B9AP/ARsBdAExBjgGMgGa + Af/fAAH/ARsBUwQyBjgBMQEqASIBFAEHAfIB8QPwAfIBBwETASIBKgExBTgFMgFTARsB/94AAf8BegQy + BTgBNwEqAyIBRAJzBFECcwFEASMCIgEqATEEOAUyAXoB9gH/3QABGwQyBTgBWQEwASMBSgFLAVICWAZZ + ATcBWAFSAUsBSgEjATAFOAUyARsB/9wAAf8BegMyBjgBWQFYAVIBWAFZDF4BWQFYAVIBWAFZBTgEMgGa + Af/cAAH/AVMCMgY4BFkQXgNZBjgDMgFTAfbcAAEaAzIGOANZEl4DWQY4AzIBGtwAAXoEMgQ4A1kIXgXl + B14DWQM4BTIBmtsAAf8BWQYyAzgDWQVeCOUFXgNZAzgGMgFZAf/aAAH2BjIBMQEwAgMCSgEDAVEBWAJe + CuUCXgFYAVEBAwJKAgMBMAIxBDIBUwH/2gAB9gQyASsBKQEPAgoFAAEOAUoBWArlAVgBSgEPBwABDwEp + ASsEMgH/2gAB9AMyASsBIgEOASIBSwFRAVICWAFRAUoBEQEOAREBUQjlAVEBQwEOAUMBSgFRAlgBUgFR + ASoBQwEOAREBKgMyAfbaAAH0AjIBMQIiASoBMQI4AVgBUQFYAl4BWAFRARUBEQFRBuUBUQERAUMBUQFY + Al4BWAFRATcCOAExASoCQwErAjIB9NoAAfYCMgEpASIBMQEyAjgBMQEjAQsBIgFRA14BWAFKAUMBWATl + AVgBQwFKAVgDXgFRASIBCwEjATECOAEyATEBIgEpATEBMgH/2gAB9gE4ATEBEQEqAzgBNwEjAyIBIwFY + Al4B5QFYAREBSgF5AuUBeQFKASIBWAHlAl4BWAEjAyIBIwE3AzgBKgEiATEBUwH/2gAB/wFZASoBDwEx + AzgBNwEjASIBEAEiAQsBUgJeAuUBSgEPAVEC5QFYAQ4BSgLlAl4BUgUiATcDOAExASIBKgFZAf/aAAH/ + AXoBKQEiAzgBWQFSASMBIgIQAQsBUQNeAeUBUQEPAVAC5QFQAQ4BUQHlA14BUQIiARACIgExAVkDOAEi + ASkBetwAARoBIgEjAjgCWQFSAUQBQwIiAQsBUQNeAeUBWAEQAUoBmQGgAUoBDgFYAeUDXgFRAUQBQwEQ + AiIBUgFZAzgCIwEa3AAB8QEOASkCOAJZAVgBSgFEARUBIgELAVECXgLlAVgBIgHsARsB9AHtAQ4BWALl + Al4BUQJEAUMCIgFYAlkCOAEpAQ8B8dwAAQcBDgEjAjgDWQFRAUoCRAEiAVgDXgHlAVEBDgGSAvYB7wEO + AVEBXgHlAl4BWAFKAkQBIgEpA1kCOAEjAQ4BB9sAAfMBEgEOARABNwRZAVgBSwJEAVEDXgFdAVcBQwEA + Ae0C/wHvAQABEQFXAV0DXgFSAUQBQwEjAVgEWQE3ASIBDgHqAfTZAAHxAUMCDwEOAQMBNwRZAVgBUQRY + AVEBSgEOAQoBFQF5AsMBeQEiAQoBDgFKAVEEWAFRAVgEWQE3AQMDDwEOAfHYAAHvARUBEQIPAQ4BIgMp + BEoBFQEQAg4BEQFKAVgBXQLlA14BWAFKARECDgEQARUDSgQpASIBDgIPARABEQHv2AAB8wHvAuwBbQES + AUMFEAERARQBSgJRAlgBXgjlAV4CWAJRAUoBFQERBRABQwESAW0B7AHtAfcB89oAA/8BGwF5BlgBWQRe + DOUEXgFZBlgBeQEbA//fAAH/ARsDWQZeEOUFXgRZARsB/+MAAf8BGgF6AlkCXhXlAl4EWQEaAf/lAAH/ + ARoBegFZGeUCWQF6ARoB/+cAAf8BGwF6AVkY5QFZAXoBGwH/6QAB/wH0AZoBWRXlAXoBWQGaAfQB/+sA + Av8BGwF6AVkS5QFZAXoBGwL/7gAC/wEaAXoCWQzlAlkBegEaAv/zAAH/AfQBmgF6ClkBegGaAfQB//cA + A/8B9AHzAQcF7wHwAfQD//cAAf8B9AG8AewBRAgiAUMB6wG8AfQB//UAAf8B8gFEAiIKIwIiAW0B8QH/ + 8wAB/wHxAewBIgIjC0QBIwEiAW0BvAH0Af/vAAH/AfMB7wEVAUMERAFKBkQDSgJEAkMB7AHxAf8vAAL/ + AfIBuwS6AbsB8gP/sQAB/wHxAesBQwIRAUQBSwFzAW4BRAIVAUMBEQIVAUQB6gFzAW4BEgIRAUMB6gEH + Af8sAAH/AfIBugGzCbIBugEZAv+uAAH/AfABbQFDAREBEAFtAQcB8AHyAbwBEgYQAREB7AHyAfEBvAHs + AREBEAFDARMB7wH0KQAB/wHyAboGsgWBA7IBugEZAf9DAAEHAewBkgHtApIB7QH3Ae0B7wGSAfcBkgHt + AZIB7AHvAf8wAAHyAu0B7AGSAe0DkgHvAe0B9wGSAe0BkgHsAfcB9BUAAf8B8AESAUMBEAERAfcB8wH/ + AgAB/wGSAUMFEQETAbwB/wEAAf8B9AEHARUBEAERARQBBwH/JwAB/wEJAbMHsgiBArIBCQH/OwAB9AUA + AfEBEQYOAUMBEAEVAUMDEwHqARUBFAHtKQAB9AUAAf8BQwMOAQ8CDgEQAREBFQERARIBEwEUAeoBFQIT + FAAB/wHxAW0BQwEQAREBBwH0BQABvAETBREBbQHzBAAB/wHxARQBEAFDAeoBvAH/JQAB/wEJCbIJgQKy + AQkB/yQAAhoTAAH0AUMB8wQAAfAB9wqSAW0EAAEOAewTAAG7AfQTAAH/ARQB8wQAAfIB9wqSAewBDgMA + AQ4BERQAAfMB7AEVARABEQG8Af8GAAHxARIFEQHsAfQFAAH/AfIBFAEQAUMB6wHyJAAB/wHwAbMJsgqB + ArIBuwH/IgABGgFNARoCAAHvA+wD7QGSBewB8AMAAe8BEwQAAfQBvAzwAeoEAAHrEgABuwGyAfQCAAHw + A+wC7QKSAewB7QPsAQcDAAHyAUMB9AMAAf8BvAzwAe0EAAEPEwAB/wHvARQBEQEPAQcB/wcAAfEBEgUR + AewB9AYAAf8B8QEVARABFQHtAfQjAAH0AZABgQmyCYEBigGBArIBGSEAARoBdQGaARoCAAEOAkMBFQES + ARMCEgEVARQBFQIQAW0DAAIHBAAB8Q3wAfcEAAFtEQABuwK6AfQCAAFtAUMBEAFDARMDEgEUARMBQwEQ + AUMEAAHzAe0EAAHzDfABBxgAAfIBbQERAQ8BkgH/CAAB8QESBREB7AH0BwAB/wEHAQ8BEQETAfAB/yEA + Af8BtAGBCrIJgQKKAYEBsgG5Af8fAAGaAXUBGgGaARoCAAEOAkMBFQIUAhMCFQFDARABEQFtAwAB8gHz + BAAB8Q3wAQcEAAEPEAABuwG6AQkBugH0AgABbQFDARABQwEUAxMCFAFDAREBQwUAAQcEAAHzDfABBwUA + Af8QAAH/AfIB7AFDARABEgHzAf8IAAHxARIFQwHsAfQIAAH0AewBEAFDAewB8wH/IAAB8wKBCrIJgQOK + ArIBCR4AAZoBdQIaAZoBGgIAAQ4BQwEQAQ8BEQdDAREBQwH/AgAB8gHzAf8B8QIHCu8B9wEHAvAB7xMA + Af8CugIJAboB9AIAAW0BQwIPAREIQwEPAfQDAAEHAQAB8QIHDO8C8AHvBQAB8hAAAfQBRAFDAREBDwEH + Af8JAAHxAeoFQwHsAfQIAAH/AfECEQFDAW0B9CAAAbsBgQuyCYEEigGyAboB/xwAAZoBdQMaAZoBGgIA + ARABQwEOAQ8BEQdDAREBDwHyAgAC8gEHDrwB7wG8AfAB7BIAAf8CugMJAboB9AIAAewBQwEOAQ8BEQhD + ARAB7wMAAgcOvAHvAbwB8AHvBQAB8w8AAf8B8AEjASIBEAFtAfMKAAHxARMFEAHrAfQJAAH0Ae0BDwEi + ASMB8AH/HwABkAGBC7IJgQSKAbIBuQH0GwABmgF1BBoBmgEaAgAB9AHzAW0BFAETARIBFQVDAREBDwHy + AgAB8wGSD7wB7wIHAfQB8gHvAewBbQHwDAAB/wK6BAkBugH0AgAB/wHzAfcBFQETARIBFQZDARAB7wMA + AewPvAHvAgcB8gH0Ae8B7QFtAe8QAAH/ARwBRAEjASIB7QH0CQAB/wH3AUMFIgESAfAJAAH/ARwBIgIj + ARwB/x4AAfQBkAGBC7IJgQSKAYEBswHyGgABmgF1BRoBmgEaAgAB9AHwCgcBkgHtAQcC8AG8AQcBvAjw + AbwB7wGSAfcD7wG8AfMRAAH/AroFCQG6AfQCAAH/AfAKBwH3Ae0B7wPwAQcBvAnwAe8BkgL3Au8BvAHz + FgAB9gFLAUQCIwEcAfQIAAH/AfMBbQYjAUQB7QL/BwAB/wEcASMBRAEjAUsB9h4AAfQBkAGBC7IJgQSK + AYEBswEZGQABmgF1BhoBmgF1AU0ETAZNAXQHvAEHC7wBbQEUARMBbQHsAe8BvAHwEAAB/wK6BgkBugK5 + BIESswG8ArMBsgG6AbwBsgGzAbICbAOyArwWAAH0AkQCIwHsAfIC/wQAAv8B8wHsASIHIwEVAe8B9AH/ + BQAB/wH0Ae8BIwFEAiMB9AH/EwAB9AeYAbwB/wH0AZABgQuyCYEEigGBAbMBGQEACPQB/w0AAf8BdQGa + CRoBdARKAUsEegF1AZMH8Qy8AW0BFAETAW0B7AHvAvAPAAH/AroJCQG7BWwQugGzAbwBswG6AbkBugG8 + AbMBugGzAmwBswGRAbIB8AEHFgAB8AJEASMBIgEQAW0BBwbyAQcB6gojASIB6wG8BfIB8QH3ARMBIgJE + ASMB8AH/EwAB8wdJAXIC9AGQAYELsgmBBIoBgQGzAfIB/wFvByABGgwAAf8BdQGaChoBcwRKAUsEegF1 + AZQH8wHxAgcBvAEHAuwCvAPwAW0CEwFtAewBBwLwDgAB9AGzCwkBtAVsELoBswEHAbMBkQGzAboB8AGz + AboBswJsAbMBkQGyAfABBxUAAf8BBwJEASMBIgNDAxEEQwFEAiMHRAIjBEMEEQNDASMBRAEjAQcB/xMA + Af8BTwZJAXIB8wH/AZABgQuyAYECkAaBBIoBsgG5AfQB/wFpByABGgsAAf8BdQGaCxoBbgRKAUsBeQN6 + AXUBlAf0AfICBwG8AesB7AHtAewE8AHsAesC7AH3AQcB8AG8DQAB9AGzDAkBkQVsELoBswHsAbMBtAGQ + AboB8AGzAboBswKRAbMBtAGzAfABBxUAAf8B7wJEASMBIgFDBxUCFAtEASMBRAIUBxUBQwEjAUQBIwHv + Af8TAAH/AXICTwRJAU8B8QEAAbsBgQuyAXICTAFxBYEEigGyAboB/wHzAUYHIAH0CwAB9gFNAZoLGgFu + BEoBSwF0AXkCmgF1AZQH/wHzAgcBvAHrAu0B7ATwAewB6wLsAfcBBwHwAbwNAAHzAbMMCQGRBWwBtA+6 + AbMB7AGzAbQBkAG6AfABswG6AbMCkQGzAbQBswHwAe8VAAH/Ae8CRAEjAREFFQUUDUQEFAUVAUMBIwFE + ASMB7wH/EwAB/wGYBE8DSQEHAf8B8wKBCrIB6wEsASsBcgWBA4oBgQGyAQkBAAEHAUAHIA0AAf8BTQGa + ChoBbgRKAUsEegF1AZQH8wHwAwcB9wFtAesB7wTwAW0CEwFtAewBBwHwAQcOAAH0AbkLCQG0BWwQugGz + Ae8BswGQAbMBugHwAbMBugGzAmwBswGRAbIB8AHvFQAB/wHvAkQBIwFDBBUGFAREBkoDRAUUBBUBQwEj + AUQBIwHvAf8TAAH/AQgGTwFJAXIB9AEAAbQBgQqyAZACLAFyBYECigGBAbIBuQH0Af8BbwcgAW8OAAH/ + AXUBmgkaAXQESgFLBHkCdAfwBgcBvAXwAW0CEwFtAewB7wHwAQcPAAH0AbMKCQG7BWwQugGzAQcBswO6 + AfABswG6AbMCbAGzAZEBsgHwAe8VAAH/AQcCRAEjAUMEFQYUAkQBSgdLA0QGFAMVAUMBIwFEASMB7wH/ + FAAB9AhPAQgB/wH0AZABgQmyAZACLAFtBYEBigGBArIB8AH/ARoBRgcgARoPAAH/AXUBmgYaAZoCdQRM + BVIBTQF0BwcB7wUHBvABbQITAW0B7AHvAfABBxAAAfQBswcJAbsCugGQAgYBkBKzAQcDswG6AfABsgKz + AmwBsgGzAbIB8AHvFQAB/wHvAkQBIwFDAxUHFAJECEsBSgJEBhQDFQFDASMBRAEjAe8B/xQAAf8BmAhP + AfQB/wHwAYEJsgGBAiwBbQaBArIBuwL/AfEBRgYgAUYB/xAAAf8BdQGaBRoCmgL0ARsIkwTtAW0BvAPy + BAcBvAbxBfAC7wH0EQAB9AGzBgkBugEZAvQB8wi7BJEBbAH3AvAB8wH3ArsBBwO7AbwB8QO7ArwDuwHv + AfIVAAH/AfACRAEjASIBQwgVARQCRAhLA0QBFAcVAUMBIwJEASMBvAH/FAAB/wEICE8BcgL/AQkJsgGB + AiwBSwWBArIBugL/ARoBmgHzAZMBRgQgAZMB/xEAAf8BdQGaBBoBmgEaBAAB7AEUAhMGQwERAQ8B8gIA + AfQBkgMHAbwL8AEHAvMB9AH3Am0BEgHwDAAB9AGzBQkBugH0BAABBwEVAhMHQwEQAe8DAAHtBAcL8AHv + AvMB9AEHAm0BEgHvEAAB9AJEAiMBQwEUAe0BvAXxAfAB7wccA3MBbgHvAfAE8QHwAQcB7AFDASMCRAEj + AfMB/xUAAfQBeAhPAZgC/wEJAbMHsgGBAXMBSwFxBIEBsgGzAbsC/wEaAlMBegIaAQcBaQEgAUYB9BMA + Af8BdQGaAxoBmgEaAgAB6wFDAQ4BDwERB0MBEQEPAfICAAHyAfAB7wIHAbwL8AHvAvAB7AQAAW0NAAH0 + AbMECQG6AfQCAAH3AUMBDgEPAREIQwEQAe8DAALvAgcBvAvwAe8C8AHvFQAB/wFuAkQBIwFtAfEc/wH0 + ARwBIwFEASMBSgH/FgAB/wEICU8BmAH0Af8B8wGzBrIFgQOyAbkBGQL/AZoFUwF6AZoBGwEHARoB/xQA + Af8BdQGaAhoBmgEaAgABDgFDAQ4BDwERB0MBEQEPAfQCAAHyAfMB/wG8Ae8M9wHvAvAB7AQAAW0OAAH/ + AboBuwIJAboB9AIAAW0BQwEOAQ8BEQhDARABBwMAAQcB/wHwAe8M9wHvAvABBxUAAf8B7wJEASMBSgHz + HAAB8wFuAkQBIwEcAf8XAAH/AZgJTwFyAfQB/wEAAfABswuyAQkB/wEAAfYBmghTAVkBGgH/FgAB/wF1 + AZoBGgGaARoCAAEOAUMCEQFDAxUEQwERAeoDAAHyAfMEAAHxDfAB7AQAAW0PAAH/AroBCQG6AfQCAAFt + AUMBEAERAUMFFQNDAQ4EAAEHBAAB8w3wAQcEAAEOEAAB/wHyAkQCIwG8Af8aAAH/AbwBIwJEASMB8gH/ + GAAB9AGXCU8BcgEIAfQC/wHzAQkBuwW6AQkB8wL/AfYB9AEbAXoIUwFZARsZAAGaAXUBmgEaAgABDgJD + ARUBEgETAhIBFQEUARUCEAFtAwAB8AHxBAAB8Q3wAewEAAHsEAAB/wO6AfQCAAFtAUMBEAFDARMDEgEU + ARMBQwEQAUMEAAH0AfcEAAHzDfAB7wQAAQ4RAAH/ARwCRAEjAe0B9BoAAfYB7QEjAkQBcwH0GgAB8wtP + AXIBmAHyAf8BAAb/AQAB/wH0AcMB5QFeAcMBGwhTARoB/xoAAZoBTQEaAgAB6gJDARUBEgETAhIBFQEU + ARUCEAH3AwAB7wHqBAAB8g3wARQEAAHsEQAB/wG6AbMB9AIAAfcBQwEQAUMBEwMSARQBEwFDARABQwFt + AwAB8gFDAfQDAAH0AQcM8AFtBAABEREAAf8B8wFLAUQBIgEVAfIB/xgAAf8B8wFtASIBRAFLAfEB/xoA + Af8B8w1PAVABlwIIAQAB9AHyAfAB9AHlBV4BwwEaBlMBmgH/HAABmgEaEwAB8wFDAfMEAAGSC/cBEwIA + Ag4BEAHsEgAB/wG6AfQTAAH0AUMB8wQAAQcBkgr3AesCAAIOARABFRIAAf8B8AHrAUMBDwHsAfQYAAH/ + AfcBDwFDARIBvAH/HAAB/wHzAZcPTwEAA08B8gHlBl4B9gGaBFMBGh8AAfYUAAHwAf8EAAHsARECDgEQ + AxEBQwEVAhMBEgFtARQB6gIUAewTAAL/FAAB8gH/BAABBwEVAg4BDwFDARABEQFDARUBEwEUAuoBEgHq + ARUBFAESEwAB/wG8ARMBEQEPAZIB/xYAAf8BBwIRARQB7wH/HgAB/wHzAXgOTwEAA08BCAHDBl4B5QH0 + AXoBUwF6ARsB/zoAAfQBbQEUARMBFAMSAW0BEwJtARIBbQEUAeoBFAESAfQvAAH0AesBFAHqARUB6gET + AuoBEgFtAeoBbQHqARIB6gEVARQB8BQAAfQBkgEUAREBDwEHAfQUAAH/AQcBEQEQAUMB7AHzIAAC/wGY + DU8BAANPAXgB9AdeAaAB9AEaAfQB/6UAAfMB7AEVARABDwGSAfQSAAH0AQcBEQEQAUMBbQHwAf8jAAHy + AZcLTwEABE8B9AHlB14BG6gAAf8B8gHrAUMBEQEPAewB8QH/DgAB/wHyAe0BEQEQAUMB6gHwAf8lAAH/ + AQgBmAFQCE8BAARPAQgBwwReAeUBoAH2qgAB/wHyAewBFQERARABEwH3AfEB/woAAf8B8wHvAW0BEAER + AUMB6gHwAf8nAAL/AfMBCAGXBk8BAARPAXgB9gFeAeUBoAEbAfatAAH/AfMBkgFDAREBEAERARIB7QEH + AfIB9AH/AgAB/wH0AfMBvAGSAW0BEQEQAREBQwFtAfIB/ysAA/8BGwGYAZcCTwEAA08BlwGYAf8B9gL/ + sQAB9AG8AeoBQwMRARUBEgFtBOwBbQHqARQBEQEQAREBQwEVAe8B8wH/NQAB9AH/uQAB/wHzAe8BEgJD + AhEGEAMRAUMBFQHtAfIB//MAAv8B9AG8AewBFQNDAhEDQwEVAW0B7wHzAv/2AAP/AfQB8QEHBO8BBwHw + AfQD//wACP/jAAFCAU0BPgcAAT4DAAEoAwABCAEBAgABWAMAAQEBAAEBBQABYAEMFgAD/wEAA/8B+AEH + A/8BwBsAA/8BgAEAAX8C/wHAGwAC/wH+AgABHwL/AcAbAAL/AfgCAAEHAv8BwBsAAv8B8AIAAQMC/wHA + GwAC/wHAAgABAQL/AcAbAAL/AYADAAF/Af8BwBsAAv8EAAE/Af8BwBsAAf8B/gQAAR8B/wHAGwAB/wH8 + BAABDwH/AcAbAAH/AfwEAAEPAf8BwBsAAf8B+AQAAQcB/wHAGwAB/wHwBAABAwH/AcAbAAH/AfAEAAEB + Af8BwBsAAf8B8AQAAQEB/wHAGwAB/wHgBAABAQH/AcAbAAH/AeAEAAEBAf8BwBsAAf8B4AQAAQEB/wHA + GwAB/wHgBAABAQH/AcAbAAH/AcAFAAH/AcAbAAH/AcAFAAH/AcAbAAH/AcAFAAH/AcAbAAH/AcAFAAH/ + AcAbAAH/AcAFAAH/AcAbAAH/AcAFAAH/AcAbAAH/AcAFAAH/AcAbAAH/AcAFAAH/AcAbAAH/AcAEAAEB + Af8BwBsAAf8B4AQAAQEB/wHAGwAB/wHgBAABAQH/AcAbAAH/AeAEAAEBAf8BwBsAAf8BwAUAAf8BwBsA + Af8BgAUAAX8BwBsAAf8BgAUAAX8BwBsAAf8BgAUAAX8BwBsAAf8B4AQAAQEB/wHAGwAB/wH8BAABDwH/ + AcAbAAH/Af4EAAEfAf8BwBsAAv8EAAE/Af8BwBsAAv8BgAMAAX8B/wHAGwAC/wHAAwAC/wHAGwAC/wHg + AgABAQL/AcAbAAL/AfgCAAEHAv8BwBsAA/8CAAE/Av8BwBsAA/8BgAEAAX8b/wMAA/8CAAE/G/8DAAL/ + Af4CAAEfG/8DAAL/AfwCAAEHG/8DAAL/AfACAAEDBf8B+AEAAT8T/wMAAv8B4AIAAQEF/wHgAQABDxP/ + AwAC/wHAAwAF/wGAAQABBwj/AgABPwX/AcABAAEPAwAC/wGAATABAQEAAX8E/wIAAQMH/wG+AgABPwT/ + Ae8BgAEAAQ8DAAL/AQAB+AEDAcABPwP/Af4CAAEBBP8B5wL/AR4CAAE/Af8B+QL/AccBgAEAAQ8DAAL/ + AQEB+AEDAeABPwP/AfwDAAT/AcYBAAEHATwCAAE/Af8B8QGAAQEBxwIAAQ8DAAH/Af4BAwH4AQMB8AEf + A/8B/AMABP8BhgEAAQcBPAIAAT8B/wHhAYABAQHPAgABDwMAAf8B/gEHAfgBAwH4AQ8D/wH4AwABfwP/ + AQYBAAEHATwCAAE/Af8BwQGAAQEB7wIAAQcDAAH/AfgBBwH4AQMB/AEHA/8B+AMAAX8C/wH+AQYBAAED + AwABPwH/AQEBgAEAAegCAAEHAwAB/wH4AQ8B+AEDAfwBBwP/AfgDAAE/Av8B/AEGAQABAwMAAT8B/gEB + AYABAAHgAgABBwMAAf8B8AEfAfgBAwH+AQMD/wH4AwABPwL/AfgBBgEAAQMDAAE/AfwBAQGAAQAB4AIA + AQ8DAAH/AfABHwHwAQMB/gEDA/8B8AMAAT8C/wHwAQYEAAEPAf8B+AEBAYADAAEDAf8DAAH/AfABHwHg + AQAB/gEDA/8B8AMAAT8C/wHgBQABDwH/AfAFAAEDAf8DAAH/AfABBwGAAQABfAEBAv8BwAQAASABDwH/ + AYAFAAEPAf8B4AUAAQMB/wMAAf8B8AQAAQEC/wHABQABDwH/BgABDwH/AcAFAAEDAf8DAAH/AeAEAAEB + Av8BwAUAAQ8B/gYAAQ8B/wGABQABAwH/AwAB/wHgBAABAQL/AcABCAQAAQ8B/gYAAQ8B/wGABQABAwH/ + AwAB/wHgBAABAQL/AcAEAAFAAR8B/wYAAQ8B/wHABQABAwH/AwAB/wHgBAABAQL/AcABBAQAAR8B/wGA + BQABDwH/AeAFAAEDAf8DAAH/AeAEAAEBAv8B4AUAAR8B/wHABQABDwH/AfAFAAEDAf8DAAH/AeAEAAEB + Av8B4AUAAR8B/wHgBQABDwH/AfgFAAEDAf8DAAH/AeAEAAEBAv8B4AUAAR8B/wHwAQcBgAEDAwABPwH8 + AQEB4AEAAeACAAEPAwAB/wHwBAABAQL/AfAFAAE/Af8B+AEGAQABAwMAAT8B/gEBAYABAAHgAgABDwMA + Af8B8AQAAQMC/wHwBQABPwH/AfwBBgEAAQMDAAE/Af8BAQGAAQAB4AIAAQ8DAAH/AfABHwL/Af4BAwL/ + AfgBAAEQAQABEAEAAX8B/wH+AQYBAAEHATwCAAE/Af8BgQGAAQEB7wIAAQ8DAAH/AfABDwL/AfwBAwL/ + AfwFAAP/AYYBAAEHATwCAAE/Af8BwQGAAQEBzwIAAQ8DAAH/AfgBDwL/AfwBBwL/Af4BAAEBAQICAAP/ + AcYBAAEHATwCAAE/Af8B4QGAAQEBxwIAAQ8DAAH/AfgBBwL/AfgBBwL/Af4CAAEgAQABAQP/AecC/wEe + AgABPwH/AfEC/wHHAYABAAEPAwAB/wH8AQcC/wH4AQ8D/wIAASABAAEHA/8B9wL/AZ4CAAE/Af8B+QL/ + AecBgAEAAQ8DAAH/Af4BAwL/AfABHwP/AYABAAEgAQABBwb/Af4CAAE/Bf8BgAEAAQ8DAAL/AQEC/wHg + AT8D/wHAAQABIAEAAQ8S/wMAAv8BgAL/AcABPwP/AfgBAAEgAQABfxL/AwAC/wGAAT8B/wEAAX8D/wH8 + AQABIAEAE/8DAAL/AcABDwH8AQAE/wH+AQABIAEDE/8DAAL/AeABAAHAAQEF/wHAASABDxP/AwAC/wH4 + AgABAwb/AecU/wMAAv8B/AIAAQ8b/wMAAv8B/gIAAR8b/wMAA/8BgAEAAX8b/wMAA/8B+AEHHP8DAAs= @@ -310,8 +319,8 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADu - MAAAAk1TRnQBSQFMAgEBBQEAAegBAQHoAQEBMAEAATABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADo + MQAAAk1TRnQBSQFMAgEBBQEAAUgBAgFIAQIBMAEAATABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABwAMAAWADAAEBAQABCAYAAUgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -339,190 +348,195 @@ AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw - AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/9MADP+xAAP/AfQBGQEJ - AboEkQG6AbsB8AH0A/+sAAL/AfMBGQGRAwYBiwSQAYsDBgGRAQkB8wL/qAAC/wHyAbUBiwEGAZABkQGd - ARkB8AHyAvQB8gIZAbsBkQGQAQYBbAG7AfIC/6UAAf8B9AG7AYsBbAGQAbsB8QH0BP8FAAH/AfQB8QG7 - AZEBbAGLAbsB8wH/owAB/wHxAZEBBgGQAbsB8wH/AwAB/wG7AfEB/wcAAf8B8wG7AZABBgGRAfEB/6AA - Av8BCAGQAQYBugHxAf8FAAH0AYsBkAH/CQAB/wHyAboBbAGQARkC/54AAf8BGQGLAZABuwHzAf8GAAH0 - AZABawG8CgAB/wH0AbsBkAFsAQkB/50AAf8BCAGLAZABGQH/CAAB/wGQAWsBkAH/CwAB/wEZAZABbAEZ - Af+bAAH/AfIBkAGLARkB/woAAZACawEZDAAB/wEZApAB8QH/mQAB/wH0AZEBBgG7Af8LAAG6AmsBkAH/ - DAAB/wG7AWwBkQHzAf+YAAH/AbsBBgGRAfQMAAG7AWwBkAFrARkNAAH0AboBBgG7Af+XAAH/AfMBiwGQ - AfEB/wwAAbsBBgG7AQYBkAH0DAAB/wHyAZABiwHyAf+WAAH/AbUBBgG7Af8NAAEIAQYBGQG6AWwBCA0A - Af8BuwEGAbsB/5UAAf8B8wFsAZAB8w4AAfEBbAG7AfIBawGRAf8NAAHyAZABbAHzAf+UAAH/ARkBBgG7 - Af8OAAHzAQYBugH/AboBbAHwDQAB/wG7AQYBCQH/lAAB/wGRAYsB8Q8AAfMBbAGRAQAB8wFrAZEB/w0A - AfEBkAGRAf+TAAH/AfQBBgGQAf8PAAH/AYsBkAEAAf8BugEGAfANAAH0AZEBBgH0Af+SAAH/AfEBbAG6 - A/8OAAGLAWsBAAH/AfMBawGRAf8MAAH/AbsBBgHwAf+SAAH/ARkBbAEJAf8BGQKQAZEBugK7AQgB8QLz - Af8EAAGRAWsB/wEAAf8BugGLAQgNAAEZAQYBuwH/kgAB/wG7AWwB8AH/ARkBBgNrAWwBBgJsAQYBbAKL - AZEBugG7AZABawHzAQAB/wHzAWsBkQH/DAABGQGLAboB/5IAAf8BkQGLAfIC/wHzAbsBBgFrAQYBkQO7 - AZEBkAZrAfMCAAH/AboBiwEIDAAB8gGLAZEB/5IAAf8BkQGLAfQDAAH/AfMBuwEGAWsBkAEIAf8DAAH/ - AvMB8AEIAf8CAAH/AfEBawGRAf8LAAH0AZABkQH/kgAB/wGRAYsB9AUAAf8B8wG7AQYBawGRAfIC/wkA - Af8BkQGQAfELAAH0AZABkQH/kgAB/wGRAYsB8gcAAf8B8gGRAWwBawGRAfIC/wcAAf8B8QEGAbsB/woA - AfIBkAGRAf+SAAH/AbsBBgHwCQAB/wHxAZEBbAFrAboB8gL/BgAB9AGRAZAB8QH/CQAB8AGLAboB/5IA - Af8BGQFsAQkLAAH/ARkBkQGLAWsBugHyAv8EAAH/ARkBbAGdAf8JAAEZAQYBCQH/kgAB/wHxAWwBugH/ - DAAB/wHwAZEBiwFrAbsB8wL/AwAB9AG6AZAB8QH/BwAB/wGdAQYBGQH/kgAB/wH0AQYBkAH0DgAB/wG8 - AZECbAG7AfMC/wEAAf8BGQEGAbsB/wcAAf8BkQEGAfQB/5MAAf8BkQGLARkQAAH0ARkBkQJsAbsB8gL/ - AfQBugGQAfEB/wYAAfEBkAGRAf+UAAH/ARkBbAG6Af8RAAH0ARkBkQKLAbsB8gH0ARkBbAG7Af8FAAH/ - AbUBBgEZAf+UAAH/AfMBiwGQAfMSAAH/AfQBGQG6AYsBkAG7ARkBkAGRAfIFAAHzAZABiwHzAf+VAAH/ - AbsBBgG1Af8TAAH/AfQBGQGRAQYCkAEGAbsB/wMAAf8BuwFsAbUB/5YAAf8B8wGLAZAB8QH/FAAB/wHz - AQkBkQEGAWsBkQHyAgAB/wHxAZABiwHyAf+XAAH/AbsBBgGRAfMWAAH/AfMBGQGRAZAB8AIAAfMBugEG - AbsB/5gAAf8B9AG6AQYBuwH0FwAB/wHzAfEB9AEAAf8BuwEGAZEB9AH/mQAB/wHyAZABiwEJAfQaAAH/ - ARkCkAHxAf+bAAH/AfACiwEJAfQYAAH/ARkBkAGLAQgB/50AAf8BGQKLAbsB8wH/FAAB/wH0AbsCiwEZ - Af+eAAL/AfABkAEGAZEB8QH/EgAB/wHxAZEBBgGQAQgC/6AAAf8B8gG6AQYBkAG1AfMB/w4AAf8B8gG7 - AZABBgGRAfIB/6MAAf8B9AG7AYsBBgGQAbsB8QL/CAAB/wH0AfEBuwGQAQYBiwG7AfQB/6UAAv8B8wG7 - AYsBBgGLAZABugEJAfAB8gL0AfIB8AEJAboBkAGLAQYBbAG1AfMC/6gAAv8B8wEZAZEBBgJsAQYEiwNs - AQYBkQEZAfMC/6wAA/8B9AHxARkBuwSRAbsBGQHxAfQD/7EADP//AHEAA/8B8wEHAe0BEgZmARIB7QEH - AfMD/6oAAv8B8wHvARIBawGLAbIBBgayAQYBsgGLAWsBbAHvAfMC/00ABP8FAAX/JgAG/x8AAv8B8wGS - AYsBbAEGD7IBbAGGAe0B8gL/DwAm/xMAA/8B9AEIAfIB/wUAAf8BCAG6AQgB9AL/IAAE/wH0BfIE/xkA - Av8B9AH3AYsBkQeyAYEEBgGBAQYGsgGRAYsB9wHzAv8LAAL/AfMBCSK7ARkB8wL/DwAC/wH0AfEBuwFs - AWsBkQH0BQAB/wGLAmsBbAG1AfIC/xwAAf8B9AHzARkBugJsBEkBSAFsAa4BuwHyAfQB/xYAAv8B8AHs - AWwEsgIGAYsBEgHqBuwB6gESAYsBBgWyAWwB6wHwAv8KAAH/AQgBbAEGAYsgkAGLAQYBiwEIAf8PAAH/ - AQgBkAVrAfIB/wMAAf8B8gZrAboB9BsAAf8B8AGuAWwCSQJIBAYBSAJJAmsBrgHxAf8UAAH/AfQBBwGR - BLIBBgFsAeoB7AHvAfEI9AHxAe8B7AHqAWwBBgSyAZEBBwH0Af8IAAH/AfMCbAG1AfAg8QEZAbsCiwHz - Af8OAAH0AboGawGdAv8CAAH/AbsGawG6AfQZAAL/AfIBrgFJAUgLBgFIAUkBawFwARkB9AH/EQAB/wH0 - Ae8BiwEGArIBBgFsAW0BkgHwAfMM9AHzAfABkgFtAWwDsgEGAYYB7wH0Af8HAAH/ARkBBgG7Af8iAAH/ - AbsBBgEZAf8OAAH/AbsBBgVrAQYBGQPzAfIBBgVrAQYBuwH/GAAB/wHzAbsBiwFrAUgEBgGQAWwBiwJs - AZAEBgJrAQYBugHxAv8OAAH/AfQB7wGLAQYCsgEGAZEB7AG8EvQBvAHsAZEDsgEGAYsB7wH0Af8GAAH/ - AbsBiwHwJAABCAGLAbsB/w8AAfEBkAdrAZACkQEGBmsBkAHxFwAC/wHwAZEDawFIAQYBkAyLAWsBSQJr - AYsBuwH0Af8MAAL/AQcBhgEGArIBBgGQAe8B8xT0AfMB7wGQAQYCsgEGAYYBBwL/BQAB/wG7AYsBGQcA - BP8LAAH/AfQB8wH/CgAB8QGQAbsB/w8AAfQBuhFrAZAB8hYAAf8B9AEJAZACawEGAZEBuwG1ARkBugGQ - B4sBcgG7AQgBuwGRAWwCawFsAZ0B8wH/CwAB/wHxAZEBBgKyAWwBbQEHAfQC/xX0AQcBbQFsArIBBgGR - AfAB/wUAAf8BuwGLARkHAAH0AQgB8QH/CwAB/wG7AboB8woAAfEBkAG7Af8PAAH0AboRawGLARkB/wMA - Af8B9AHzAf8NAAH/AfQBuwFsAmsBkAG7AfMD/wH0AZEGiwFyAbsD/wH0AQgBkQEGAWsBbAG7AfMB/wkA - Af8B9AG0A7IBBgFtAQcD9AL/FfQBBwFtAWwDsgHrAfMB/wQAAf8BuwGLARkHAAHzAZEBugH0BQAD/wMA - AfQBkQGQAfEKAAHxAZABuwH/BwAB/wHyAfEB9AH/AgAB/wEZAZASawGRAfEC/wH0ARkBuwGRAfEB/wwA - Af8BuwFsAmsBkQG8Af8FAAG7AXIFiwFxARkEAAH/AfEBugEGAWsBbAG7AfMB/wgAAf8B9wFsArIBBgGQ - AQcF9AL/FfQBBwGQA7IBbAH3Af8EAAH/AbsBiwEZBwAB8wGRAZABuwIZAv8BAAHzAbsB8gIAAf8B9AGQ - AYsBvAH/CQAB8QGQAbsB/wYAAf8B8wGRAYsBuwHwAvMBuwGQBWsBBgGRAbUBCQIZArsBkQEGBWsBkAG7 - AQgBuwGQAmsBkQH0Af8KAAH/AQgBiwJrAZEB8QH/BgABCAGQBYsBcQHzBQAB/wHzAbsBbAFrAWwBuwH0 - BwAB/wHzAYsCsgEGAWwB7wf0Av8V9AHvAZEDsgGLAfIB/wMAAf8BuwGLARkHAAHzAZECawFsAZABtQH0 - Af8BCAFsARkBAAH/AfQBtQFsAQYBkQHxAf8IAAHxAZABuwH/BgAB/wG7A2sBiwKRAWwEawFsAbsBCAHz - AfQB/wIAAf8B9AHzAQgBugEGBGsBBgFsAQYDawFsARkB/wkAAf8B8gGQAmsBkQHyAf8HAAEZAXEFiwFx - AfQGAAH/AfMBugEGAWsBiwEIAf8GAAH/Ae0BkQKyAWwB7QHzAv8G9AL/FPQB8wHtAWwCsgGRAe0B/wMA - Af8BuwGLARkHAAH/AfIB8AEZAbsBkQEGAbsB/wEIAWwBGQEAAf8BCQEGAZABugEGAboB9AgAAfEBkAG7 - Af8FAAH/AfIBiwprAZEBCAH0Af8IAAH/AfQBGQGQCmsBkAHzAf8IAAH/AbsCawGQAQgB/wgAARkBcQWL - AXEB9AcAAf8B8wGRAmsBkAHzAf8FAAHzARMCsgEGAeoBvALxAfQB/wb0Av8R9AHzAQcCvAFtAQYCsgGG - AfMB/wIAAf8BuwGLARkKAAL/AbwBiwGRAf8BCAFsARkBAAH/AZEBiwG8AfICkQHyCAAB8QGQAbsB/wUA - Af8BugprAZEB8gH/CwAC/wHyAboKawG7Af8GAAL/AfABBgFrAQYBuwH/CQABGQFxBYsBcQH0CAAB/wHw - AZACawG7AfQB/wQAAe8BbAKyAWwBkgG8AewB9wEJAfIH9AP/DvQBvAHtAm0BvAGSAWwCsgFsAe8B/wIA - Af8BuwGLARkIAAH/AfMB8gEZAboBBgG7Af8BCAFsARkBAAH/AboBbAG7AQgBkAGRAfMIAAHxAZABuwH/ - BAAB/wHyAQYJawGRAfIB/w4AAf8B8gGRCWsBuwH/BgAB/wG7AZACawGRAfQKAAEZAXEFiwFxAfQJAAH/ - AbsBBgFrAYsBuwH/AwAB/wESAQYBsgEGARIBvAH3AesBvAHvARwB8AH/BvQD/wz0AQcC6wH3AesBkgG8 - AeoDsgFsAf8CAAH/AbsBiwEZCAAB8wG7AZABiwFrAZAB8wH/AQgBbAEZAQAB/wHxAWwBBgGQAQYBuwH/ - CAAB8QGQAbsB/wQAAf8B8gGLCGsBkQHyAf8QAAH/ARkBkAZrAWwBuwHzAf8FAAH/ARkBBgFrAUgBiwEZ - Af8KAAHwAZAFBgGQAfQKAAHyAZEBawEGAZAB8gH/AgAB8wFmArIBBgHsAbwB6wGSAfMB8gHwAfIC/wX0 - BP8L9AHwAe8B8AHzAfcB6wG8AewBBgKyAWsB8wIAAf8BuwGLARkIAAH0AbUBkAEGAWsBBgEZAf8BCAFs - ARkBAAL/AfEBuwGQAWsBugH0CAAB8QGQAbsB/wQAAv8B8wG7AQYFawFsARkB/xIAAf8BuwVrAZAB8AH0 - Af8GAAH/AbsCBgFIAZEB8wsAAfcBbAVrAWwB8AoAAfQBugMGAbsB/wIAAQcBiwKyAYsB7wEHAW0BvAT0 - A/8F9AT/C/QB8wL0AfABbQLvAYsCsgGLAQcCAAH/AbsBiwEZCAAC/wH0AfMBtQEGAboB/wEIAWwBGQIA - A/8B8gGRAWwBGQH/BwAB8QGQAbsB/wYAAf8B9AHwAZAEawG6AfMTAAH/AfMBkQRrAbwC/wcAAf8BkAMG - AboB/woAAfQBkAdrAewB/wkAAfQBugMGAXEB/wIAAe0DsgESAbwBkgHrBfQE/wX0Av8B9AHyAfMN9AHr - Ae0BvAESA7IB7QIAAf8BuwGLARkLAAH/ARkBiwGRAf8BCAFsARkFAAH/AfEBiwGQAfEHAAHxAZABuwH/ - BwAC/wEZA2sBBgEZAf8UAAH/AbsDawGQAfMB/wcAAf8B8wQGAboB9AkAAfQB7QFsB2sBbAHvAf8IAAH/ - AbsDBgGLAfMB/wEAARIBBgGyAQYBEgHxAu0G9AT/BPQB8wEJAu0B9wHzDPQBkgHsAfEB6gEGAbIBBgES - AgAB/wG7AYsBGQgAAfQBGQG7AZEBbAFrARkB/wEIAWwBGQIAAf8BCAGRAZACugFrAboB8wYAAfEBkAG7 - Af8IAAH/ARkDawGQAfIVAAH/AfEBiwNrAfIIAAH/AQgFBgG6AfIB/wUAAf8B8QGuAWwBawFJAWUFDQFr - AWwBugHyBgAB/wHwAZADBgGQAQgB/wEAAWYCsgEGAesB8AHrAe8H9AT/AvQB7wESARQBkwEHAe0B8gz0 - Ae8B6wG8AewBgQKyAWYCAAH/AbsBiwEZCAAB8wGRAWwCawGRAfQB/wEIAWwBGQEAAf8B8QEGAmsBbAGQ - AboBawG7Af8FAAHxAZABuwH/CAAB/wG7A2sBugH0FgAB8wGRA2sBGQH/BwAB/wEZAwYBSAFsA5AFbAFw - AWwEawgNAWsBbAaQApEBcAMGAZABGQH/AQABQwKyAQYB7AHwAesBBwj0BP8B8wHqAWYBEgFqAZQBtQHx - Af8L9AEHAesBvAHsAQYCsgFmAgAB/wG7AYsBGQgAAf8BGQG7AZEBBgFrAbsB/wEIAWwBGQEAAf8BkQEG - AbsB8gGQAZEBuwGRAboB8wUAAfEBkAG7Af8IAAH0AboDawG7AfQWAAHzAZEDawGQAfMB/wYAAf8BmAMG - AUgBbAORBJABcQGRAYsEawgNAQYBkAaRApgBkQMGAZABugH/AQABQwKyAYEB7AHwAW0B7ALtAQcG9AP/ - AfIB6wFmARcBRwFvAewB8gL/B/QBBwLtAewBbQG8AewBBgKyAWYCAAH/AbsBiwEZDAAB8AGLAZEB/wEI - AWwBGQEAAf8BkQGQAfIB9AG7AZEB8gL0BgAB8QGQAbsB/wYAAf8B9AG7BGsBuwH/FgAB/wG7BWsBbAGR - AQkB8wH/AgAB/wGYBAYBkAmRAYsEawgNAQYBkAeYAboBkQGQAgYBkAG6Af8BAAFDArIBgQHsAfABbQHs - ApIBBwf0Av8B8gLtARcBRgFDARMBvAP/BvQBBwKSAewB6wG8Ae0BgQKyAWYCAAH/AbsBiwEZBwAE/wH0 - AbsBBgGRAf8BCAFsARkBAAH/AbsBawEGAZABawGRAfMIAAHxAZABuwH/AwAB/wHyAbsBkAZrAbsB/xYA - AfQBuwhrAZEB/wIAAf8BmAQGAZAJkQGQBGsIDQEGAZAHmAG6AZgBiwIGAZABugH/AQABQwKyAQYB7AHw - AesBBwv0Af8B8AHtAZQBkwEVAWYBEgHxBP8I9AEHAesBvAHsAQYCsgFmAgAB/wG7AYsBGQcAAfQBuwGQ - AWwBawIGARkB/wEIAWwBGQEAAf8B9AGRAmsBkAHxCQAB8QGQAbsB/wMAAf8BkQhrAbsB9BYAAfMBkQhr - AbsB/wIAAf8BmAQGAZAJkQGQAQYDawgNAQYBkAeYAboBkQGQAgYBkAG6Af8BAAFmArIBBgHrAfAB6wHv - DPQB9wGTAZQB7QHrAeoB7wL0BP8H9AHvAesBvAHsAYECsgFmAgAB/wG7AYsBGQcAAfMBkQEGAYsBkQG7 - AfMB/wEAAfABiwEZAwAB9AKQAfEKAAHxAZABuwH/AwAB/wG1CGsBkQHzFgAB8gGRCGsBCQH/AgAB/wG6 - BAYBkAmRAZABBgNrCA0BBgGQB5gBugGRAZACBgGQAboB/wEAARIBBgGyAQYBEgHxAewB7Qv0Ae8BkgKT - AZIB8gX0A/8H9AGSAewB8AHqArIBBgESAgAB/wG7AYsBGQcAAfMCkQHyAf8EAAH0AfAB9AMAAfQBkQGQ - AfEKAAHxAZABuwH/AwAB/wEZCGsBkAHxAf8UAAH/AfABBghrAfIB/wIAAf8BuwQGAYsJkQGQAQYDawFl - Bw0BBgGQA5EFmAFxAwYBkAG7Af8BAAHtA7IBEgG8AZIB6wHzCfQB8QJtAu0B8gL/BvQC/wX0AfMB6wHt - AbwBEgOyAe0CAAH/AbsBiwEZBwAB8wG6AbsB9AsAAf8BuwG6AfIKAAHxAZABuwH/AwAB/wHzCWsBuwH/ - FAAB/wG7CWsB9AH/AgAB/wEIBAYBbAGQApEDugSRAYsLbAGLAZEBugGYAboDnQG6AZEBkAMGAZABCAH/ - AQABvAGLArIBiwHvAQcBbQG8AvQC8wX0AZIB6wFtARMBvAH0A/8G9AL/BPQBvAFtAu8BiwKyAYsBBwIA - Af8BuwGLARkHAAH/AfIB8wH/CwAC/wH0Af8KAAHxAZABuwH/BAAB9AlrAZEB8gH/EgAB/wHyAZADawFs - AYsBkAGLAQYBkAH/AwAB/wHzBAYBbAGRARkB8wb0AfMBCAPBARkHuwEZAfMG9AHyAbsBkAMGAYsB8wH/ - AQAB8wFmArIBBgHsAbwB6wGSAfMBvAHvAbwE9AHxAW0BEgEUAe0B8wH0BP8G9AH/AfIB8AHxAfMB9wHr - AbwB7AEGArIBawHzAgAB/wG7AYsBGSQAAfEBkAG7Af8EAAH/AZEBiwGQApEBkANrAQYBuwH/EQAB/wH0 - AbsDawEGAZEBCAHxARkBtQEIAf8EAAH/AXEDBgGQAfEeAAHzAZEDBgGRAf8CAAH/AeoBBgGyAQYBEgG8 - AfcBbQH3AusBBwP0AfMBkgETARUB7QHzA/QE/wb0AfEB7wH3Ae8B6wGSAbwB6gEGAbIBBgESAf8CAAH/ - AbsBbAG7JPMBGQGLAbsB/wQAAf8B8QEZAfAB8gH0AfABkANrAZAB8AH/EAAB/wEZAYsDawGRAfMB/wkA - Af8BGQMGAZABCAH/HAAB/wEZAYsDBgEJAf8DAAHvAWwCsgFsAe0BvAFtARIB7AG8BPQBvAFtAWYBbQHw - BfQE/wb0AfIBCQHsAesBvAGSAWwCsgFsAe8B/wIAAf8BuwFrAYslkAFrAbsB/woAAf8BGQFsA2sBkQHy - Af8OAAH/AfABkANrAYsBCAH/CgAB/wH0AZADBgG7Af8cAAH0AboDBgGLAfMB/wMAAfMBEwOyAeoBBwH3 - AW0B7wT0AfMB7QEUAeoBvAf0BP8G9AHxAfcBCQG8AW0BBgKyAYsB8wH/AgAB/wG7KGsBuwH/CwAB8wGR - BGsBkQHwAv8KAAH/AfQBvAGQBGsBkQHzDAAB/wEZAwYBkAHxAf8bAAHyAZEDBgG7Af8EAAH/AZIBkQKy - AWwB7AG8AuwB8AP0AbwB6gETAe8B8wj0BP8E9AHxAfcB7wHwAe0BbAKyAZEBkgH/AwAB/wG7KGsBuwH/ - CwAB9AG7BWsBkAG7AfIC/wYAAv8B8gG7AWwFawGRAfIB/wsAAf8B9AG7AYsBawEGAbsB9BoAAf8BuwFs - AWsBBgGdAfQB/wQAAf8B8wGLAQYBsgEGAYsB9wG8AesB7AHwAfQB8wHtARQB7AHxC/QB8gHwA/QB8AHt - AewB8AHvAZEBBgKyAYsB8wH/AwAB/wG7KGsBuwH/CgAB/wHzAZEGawEGAZEBuwHxAfMB9AL/AfQB8wEZ - AbsBkQhrAZ0B9AH/CwAB/wH0AbsBBgFrAWwBuwH/GAAB/wEZAZACawG6AfMB/wYAAf8B7wGLArIBBgHq - Au8B6wHsAfABBwHqAWYB7wHzC/QB8AEcAfIB/wHyAZIB6wLvAZABBgKyAWwB9wH/BAAB/wG7KGsBuwH/ - CgAB/wG7AQYJawGQAZEEuwGRAZAKawEGAbsB9AwAAf8B9AGRAmsBkAEZAf8WAAH/AfIBkQJrAZAB8gH/ - BwAB/wH0AewDsgEGAW0C7wHrAewB6wEUAW0BvAX0AgcF9AHyAu8B8AHvAZIC7wFtAQYDsgHsAfQB/wQA - Af8BuyhrAbsB/wkAAf8BGQGQHWsBiwHxAf8MAAH/AfEBkAJrAZABGQH0FAAB/wHxAZECawFsARkB/wkA - Af8B8QGQAQYCsgFsAW0B7wG8AewBEgEUAfcB8wX0AZIB7QX0AfMBvAHtAfcB7wHxAQcBbQFsArIBBgGR - AfAB/wUAAf8BuyhrAbsB/wkAAfQBuh5rAZAB8QH/DQAB/wEIAZACawGQAbsB9AH/EQAB/wEZAZACawFs - AQkB9AH/CQAC/wG8AYYDsgEGAeoB9wG8AfcCbQGSAbwB8wP0AZIB7QT0AbwBkgHrAewBvAHxAe8BkAEG - ArIBBgGLAQcC/wUAAf8BuyhrAbsB/wkAAf8BvAGQBWsBkAK7AboBbAhrAQYBugEZAfEBCQGQBGsBkAEI - Av8OAAH/AbwBkAJrAWwBugEIAfQB/w0AAf8B8QGdAZACawEGAbsB9AH/CwAC/wEHAYsBBgKyAQYBiwHs - AQcBvAH3AesBbQHrAe0B7wEHAuwBBwHvAe0B6wFtAesB9wK8AewBbAEGArIBBgGLAe8B9AH/BgAB/wG7 - KGsBuwH/CQAC/wHwAZADawGLAQgC/wH0AfEBkAZrAQYBCQH0A/8BCAGLAmsBkQHxAf8QAAL/AfEBkQNr - AZABugEZAfQB/wgAAf8B9AHxAZ0BkAEGAmsBbAG7AfQB/w0AAf8B9AEHAYsBBgKyAQYBbAHqAe0CvAHv - AZIB7ALrAm0C6wHsAZIBBwK8AZIB6gFsAQYCsgEGAYYB7wH0Af8HAAH/ARkoawG8Af8LAAH/AfIBkQFr - AQYBCQH/AwAB/wG7AWwFawGQAf8EAAH/ARkBbAG6AfIB/xMAAf8B8gG7AWwDawGLAZEBuwEZAfEB8wP0 - AfEBCAG1AZEBkAEGA2sBkQHwAv8PAAL/AbwBkAWyAWwBEgHsAe8BvAHxBvAB8QG8Ae8B7AESAWwBBgSy - AZEBBwH0Af8IAAH/AfMBiyZrAZAB9AH/DAAB/wHzArsB9AH/BAAB8gGLBWsBkAUAAv8B8wH0Af8VAAH/ - AfQBCAGQBGsCbAaQAYsBBgRrAYsBuwHzAf8SAAL/AfEB7AGLAQYDsgIGAYsCEgHrBOwB6wISAYsCBgSy - AWwBtAHxAv8KAAH/ARkBiyRrAYsB8AH/DgAE/wUAAfMBiwVrAZAGAAP/FwAC/wH0AQgBkQEGDWsBiwG7 - AfMC/xQAAv8B9AHvAYsBkQayAwYCgQMGBrIBkQGLAfcB9AL/CwAC/wH0ARkiuwEZAfQC/xcAAfQBiwVr - AZAiAAP/AfMBCAGRAQYHawGQAbsB8QH0Av8YAAL/AfMBkgETAWwBBg6yAQYBbAETAe0B8wL/DwAm/xkA - Af8BuwWRAbslAAT/AfQE8gHzBf8cAAL/AfMB7wHqAWYBiwGyAQYGsgEGAbIBiwFmARIB7wHzAv9QAAj/ - KQAG/yUAAf8B8wG8Ae0BEgFmBEMBZgESAe0BBwHzAf+gAAFCAU0BPgcAAT4DAAEoAwABwAMAAWADAAEB - AQABAQYAAQkWAAP/AQAG/xIAAv8BwAEDAv8SAAH/Af4CAAF/Af8SAAH/AfgCAAEfAf8SAAH/AeACAAEH - Af8SAAH/AcABAQHwAQMB/xIAAf8BgAFwAf4BAQH/EgAB/gEBAfAB/wGAAX8SAAH+AQMB8AH/AcABfxIA - AfwBDwHwAX8B8AE/EgAB+AEfAfgBfwH4AR8SAAHwAT8B+AE/AfwBDxIAAfABfwH4AT8B/gEPEgAB4AF/ - AfgBHwH+AQcSAAHgAf8B+AEfAf8BBxIAAcEB/wH4AQ8B/wGDEgABwQH/AfgBDwH/AYMSAAHDAf8B+AGH - Af8BwxIAAYMB/wH4AYcB/wHBEgABgAH/AfwBgwH/AcESAAGAAQABPAFDAf8B4RIAAYACAAFBAf8B4RIA - AYACAAFhAf8B4RIAAYcBAAHgAWAB/wHhEgABhwHAAR8B8AH/AeESAAGHAfABBwHwAX8B4RIAAYcB/AEB - AfgBPwHhEgABhwH/AQABeAE/AeESAAGDAf8BwAEcAR8BwRIAAYMB/wHwAQQBHwHBEgABwwH/AfwBAAEP - AcMSAAHBAv8BAAEPAYMSAAHBAv8BgAEPAYMSAAHgAv8B4AIHEgAB4AF/Af8B+AEGAQcSAAHwAX8B/wH+ - AQYBDxIAAfABPwL/AYQBDxIAAfgBHwL/AfgBHxIAAfwBDwL/AfABPxIAAf4BAwL/AcABfxIAAf4BAQL/ - AYABfxIAAf8BgAF/Af4BAQH/EgAB/wHAAQ8B8AEDAf8SAAH/AeACAAEHAf8SAAH/AfgCAAEfAf8SAAH/ - Af4CAAF/Af8SAAL/AcABAwL/EgAG/xIAAf8B/AIAAT8U/wHwAgABDwn/AYcBwQT/AfgBHwP/AcACAAED - Af8B+AQAAR8B/wH8AQcBwAF/A/8BgAEBA/8EAAH/AeAEAAEHAf8B8AEHAcABHwL/Af4CAAF/Af8B/gQA - AX8B4AQAAQcB/wHwAQMBgAEfAv8B/AIAAT8B/wH8BAABPwHABAABAwH/AfABAQGAAR8C/wHwAgABDwH/ - AfgEAAEfAcEE/wGDAf8B8AIAAR8C/wHgAgABAwH/AfAEAAEPAcME/wHDAf8B+AIAAT8C/wGAAgABAQH/ - AeAEAAEHAcMB+AF/AfAB/wHDAf8B+AIAAT8C/wQAAf8B4AQAAQcBwwH4AX8B8AH/AcMB/wH4AgABHAE/ - Af4EAAF/AcAEAAEDAcMB+AF8AXAB/wHDAfgBMAMAAR8B/gEBAfABBwGAAT8BwAQAAQMBwwH4AQQBYAF/ - AcMB8AQAAQ8B/AEDAfABBwHAAT8BgAQAAQEBwwH4AQABQAE/AcMB8AEAAQEBgAEAAQ8B+AEHAfABBwHg - AR8BgAQAAQEBwwH4AQABQAE/AcMB4AEAAQ8B8AEAAQcB+AEPAfABBwHwAQ8BgAUAAcMB/wEAAUABPwHD - AeABAAE/AfgBAAEHAeABHwHwAQcB+AEHAYAFAAHDAfwBAAFAAT8BwwHAAQABfwH+AQABBwHgAT8B8AEH - AfwBBwYAAcMB/AEAAUABPwHDAcABAAL/AQABBwHAAT8B8AEHAf4BAwYAAcMB/AEAAUABPwHDAcABAQL/ - AYABDwHAAX8B8AEHAf4BAwYAAcMB/AEAAWABHwHDAfABAwL/AYABHwHAAX8B4AEDAf4BAwYAAcMB/wGA - AXwBHwHDAfgBAwL/AcABPwGAAX8BwAEBAf4BAQYAAcMB/AEAAWABDwHDAfwBBwL/AcABfwGAAR8CAAH8 - AQEGAAHDAfwBAAFAAQcBwwH8AQcC/wHgAT8BgAQAAQEGAAHDAfwBAAFAAQcBwwH8AQcC/wHgAR8BgAQA - AQEGAAHDAf8BwAFAAQ8BwwHwAQcC/wHgAQEBgAQAAQEGAAHDAfgBAAFAAT8BwwGAAQcC/wHgAQEBgAQA - AQEGAAHDAfgBAAFAAX8BwwGAAQcC/wHgAQEBgAQAAQEGAAHDAfgBBAFwAf8BwwGAAQcC/wHgAQEBgAQA - AQEGAAHDAfgBPAFwAf8BwwGAAQMC/wHAAQEBgAQAAQEGAAHDAfgBfwHwAf8BwwGAAQMC/wHAAQEBgAQA - AQEGAAHDAfgBfwHwAf8BwwHAAQEC/wGAAQMBgAQAAQEGAAHDBP8BwwHAAQEC/wEAAQMBwAF/Av8B/gED - BgABwAQAAQMBwAEAAv8BAAF/AcABPwL/AfwBAwGABQABwAQAAQMB/wEAAX8B/gEAAf8BwAE/Av8B/AED - AYAFAAHABAABAwH/AYABHwH4AQEB/wHgAR8C/wH8AQcBgAQAAQEBwAQAAQMB/wGAAQcB4AEAAf8B4AEf - Av8B+AEHAYAEAAEBAcAEAAEDAf8EAAF/AfABDwL/AfABDwHABAABAwHABAABAwH/BAABfwH4AQcC/wHg - AR8BwAQAAQMBwAQAAQMB/gQAAT8B/AEDAv8BwAE/AeAEAAEHAcAEAAEDAf4EAAE/Af4BAAL/AYABPwHg - BAABBwHABAABAwH+BAABPwH/AQABPwH+AQABfwHwBAABDwHABAABAwH+BAAC/wEAAQ8B8AEAAf8B+AQA - AR8BwAQAAQMB/wGAAeABBwGBAv8BwAIAAQEB/wH8BAABPwHABAABAwH/AcAB8AEPAYMC/wHgAgABBwH/ - Af4EAAF/AeAEAAEHAf8B4QHwAQ8BxwL/AfACAAEPAv8EAAH/AeAEAAEHAv8B8AEPA/8B/AIAAT8C/wHA - AgABAwH/AfgEAAEfAv8B8AEPBP8BgAEAA/8B8AIAAQ8J/wHwAQ8E/wH4AR8E/wIAFP8L + AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/9IABP8FAAX/rwAD/wH0 + AQgB8gH/BQAB/wEIAboBCAH0Av+rAAL/AfQB8QG7AWwBawGRAfQFAAH/AYsCawFsAbUB8gL/qQAB/wEI + AZAFawHyAf8DAAH/AfIGawG6AfSpAAH0AboGawGdAv8CAAH/AbsGawG6AfSpAAH/AbsBBgVrAQYBGQPz + AfIBBgVrAQYBuwH/qgAB8QGQB2sBkAKRAQYGawGQAfGrAAH0AboRawGQAfKrAAH0AboRawGLARkB/wMA + Af8B9AHzAf+bAAH/AfIB8QH0Af8CAAH/ARkBkBJrAZEB8QL/AfQBGQG7AZEB8QH/mQAB/wHzAZEBiwG7 + AfAC8wG7AZAFawEGAZEBtQEJAhkCuwGRAQYFawGQAbsBCAG7AZACawGRAfQB/5gAAf8BuwNrAYsCkQFs + BGsBbAG7AQgB8wH0Af8CAAH/AfQB8wEIAboBBgRrAQYBbAEGA2sBbAEZAf+XAAH/AfIBiwprAZEBCAH0 + Af8IAAH/AfQBGQGQCmsBkAHzAf+WAAH/AboKawGRAfIB/wsAAv8B8gG6CmsBuwH/lQAB/wHyAQYJawGR + AfIB/w4AAf8B8gGRCWsBuwH/lQAB/wHyAYsIawGRAfIB/xAAAf8BGQGQBmsBbAG7AfMB/5UAAv8B8wG7 + AQYFawFsARkB/xIAAf8BuwVrAZAB8AH0Af+YAAH/AfQB8AGQBGsBugHzEwAB/wHzAZEEawG8Av+aAAL/ + ARkDawEGARkB/xQAAf8BuwNrAZAB8wH/nAAB/wEZA2sBkAHyFQAB/wHxAYsDawHynQAB/wG7A2sBugH0 + FgAB8wGRA2sBGQH/nAAB9AG6A2sBuwH0FgAB8wGRA2sBkAHzAf+ZAAH/AfQBuwRrAbsB/xYAAf8BuwVr + AWwBkQEJAfMB/5IAAf8B8gG7AZAGawG7Af8WAAH0AbsIawGRAf+SAAH/AZEIawG7AfQWAAHzAZEIawG7 + Af+SAAH/AbUIawGRAfMWAAHyAZEIawEJAf+SAAH/ARkIawGQAfEB/xQAAf8B8AEGCGsB8gH/kgAB/wHz + CWsBuwH/FAAB/wG7CWsB9AH/kwAB9AlrAZEB8gH/EgAB/wHyAZADawFsAYsBkAGLAQYBkAH/lAAB/wGR + AYsBkAKRAZADawEGAbsB/xEAAf8B9AG7A2sBBgGRAQgB8QEZAbUBCAH/lAAB/wHxARkB8AHyAfQB8AGQ + A2sBkAHwAf8QAAH/ARkBiwNrAZEB8wH/nwAB/wEZAWwDawGRAfIB/w4AAf8B8AGQA2sBiwEIAf+hAAHz + AZEEawGRAfAC/woAAf8B9AG8AZAEawGRAfOiAAH0AbsFawGQAbsB8gL/BgAC/wHyAbsBbAVrAZEB8gH/ + oAAB/wHzAZEGawEGAZEBuwHxAfMB9AL/AfQB8wEZAbsBkQhrAZ0B9AH/nwAB/wG7AQYJawGQAZEEuwGR + AZAKawEGAbsB9J4AAf8BGQGQHWsBiwHxAf+dAAH0AboeawGQAfEB/50AAf8BvAGQBWsBkAK7AboBbAhr + AQYBugEZAfEBCQGQBGsBkAEIAv+dAAL/AfABkANrAYsBCAL/AfQB8QGQBmsBBgEJAfQD/wEIAYsCawGR + AfEB/6EAAf8B8gGRAWsBBgEJAf8DAAH/AbsBbAVrAZAB/wQAAf8BGQFsAboB8gH/owAB/wHzArsB9AH/ + BAAB8gGLBWsBkAUAAv8B8wH0Af+lAAT/BQAB8wGLBWsBkAYAA/+vAAH0AYsFawGQuAAB/wG7BZEBu7gA + CP//AHMAA/8B8wEHAe0BEgZmARIB7QEHAfMD/4QABP8iAAL/AfMB7wESAWsBiwGyAQYGsgEGAbIBiwFr + AWwB7wHzAv9RAAb/KQAC/wHzAvAB8wL/HgAC/wHzAZIBiwFsAQYPsgFsAYYB7QHyAv8PACb/FgAE/wH0 + BfIE/yQAAf8B8wGRAWwCawFsAZEB8wH/GwAC/wH0AfcBiwGRB7IBgQQGAYEBBgayAZEBiwH3AfMC/wsA + Av8B8wEJIrsBGQHzAv8SAAH/AfQB8wEHAewBbAVJAhUB6wHvAfIB9AH/IQAB/wHyAWwGawFsAfIB/xkA + Av8B8AHsAWwEsgIGAYsBEgHqBuwB6gESAYsBBgWyAWwB6wHwAv8KAAH/AQgBbAEGAYsgkAGLAQYBiwEI + Af8RAAH/AbwB6wFDAg0HSAQNAesB8AH/IAAB9AGRAmsBbAKRAWwCawGRAfQYAAH/AfQBBwGRBLIBBgFs + AeoB7AHvAfEI9AHxAe8B7AHqAWwBBgSyAZEBBwH0Af8IAAH/AfMCbAG1AfAg8QEZAbsCiwHzAf8OAAL/ + AfIB6wENAUgEawRsA2sBSAINAWwBvAH0Af8eAAHwAWwBawFsAQcC9AEHAWwBawFsAbwXAAH/AfQB7wGL + AQYCsgEGAWwBbQGSAfAB8wz0AfMB8AGSAW0BbAOyAQYBhgHvAfQB/wcAAf8BGQEGAbsB/yIAAf8BuwEG + ARkB/w0AAf8B8wHvAWwBDQFIAWsMbAFrAg0BbAGRAfAC/xMAAv8H9AHvAWwBawGRBPQBkQFrAWwB9wf0 + Av8NAAH/AfQB7wGLAQYCsgEGAZEB7AG8EvQBvAHsAZEDsgEGAYsB7wH0Af8GAAH/AbsBiwHwJAABCAGL + AbsB/wsAAv8BvAGRAmsBDQFIDmwCDQJrAWwB7wH0Af8RAAH/AfMBBwH3BpIBbAJrAWwEkgFsAmsBbAaS + AfcBBwHzAf8LAAL/AQcBhgEGArIBBgGQAe8B8xT0AfMB7wGQAQYCsgEGAYYBBwL/BQAB/wG7AYsBGQcA + BP8LAAH/AfQB8wH/CgAB8QGQAbsB/woAAf8B9AEHAWwCawFsAZEBkgH3AbwBkQlsAe8BBwHtAZEBbAJr + AWwBkgHzAf8PAAH/AfMBkRxrAZEB8gH/CgAB/wHxAZEBBgKyAWwBbQEHAfQC/xX0AQcBbQFsArIBBgGR + AfAB/wUAAf8BuwGLARkHAAH0AQgB8QH/CwAB/wG7AboB8woAAfEBkAG7Af8JAAH/AfQB7wFsAmsBbAH3 + AfMD/wH0AZEHbAHtA/8B9AEHAesBbAFrAWwBkgHzAf8OAAH/Ae8CaxpsAmsB7wH/CQAB/wH0AbQDsgEG + AW0BBwP0Av8V9AEHAW0BbAOyAesB8wH/BAAB/wG7AYsBGQcAAfMBkQG6AfQFAAP/AwAB9AGRAZAB8QoA + AfEBkAG7Af8JAAH/Ae8BbAJrAZEBvAH/BQAB7wZsAXEB8AQAAf8B8AGRAWwBawFsAZIB8wH/DQAB9AGR + AWsBbAGSGLwBkgFsAWsBkQHzCQAB/wH3AWwCsgEGAZABBwX0Av8V9AEHAZADsgFsAfcB/wQAAf8BuwGL + ARkHAAHzAZEBkAG7AhkC/wEAAfMBuwHyAgAB/wH0AZABiwG8Af8JAAHxAZABuwH/CAAB/wG8AWwCawGR + AfAB/wYAAbwGbAFxAfMFAAH/AfMBkgFsAWsBbAHvAfQNAAH0AZEBawFsAe8B9Bf/Ae8BbAFrAZEB9AgA + Af8B8wGLArIBBgFsAe8H9AL/FfQB7wGRA7IBiwHyAf8DAAH/AbsBiwEZBwAB8wGRAmsBbAGQAbUB9AH/ + AQgBbAEZAQAB/wH0AbUBbAEGAZEB8QH/CAAB8QGQAbsB/wcAAf8B8gFsAmsBkQHyAf8HAAHwAXEFbAFx + AfQGAAH/AfMBkQFsAWsBbAG8Af8MAAH/Ae8CawFsAbwB/xQAAf8BvAFsAmsB7wH/CAAB/wHtAZECsgFs + Ae0B8wL/BvQC/xT0AfMB7QFsArIBkQHtAf8DAAH/AbsBiwEZBwAB/wHyAfABGQG7AZEBBgG7Af8BCAFs + ARkBAAH/AQkBBgGQAboBBgG6AfQIAAHxAZABuwH/BwAB/wGSAmsBbAG8Af8IAAHwAXEFbAFxAfQHAAH/ + AfMBkQJrAWwB8wH/CwAB/wHzAZECawGRAfIB/xIAAf8B8gGRAmsBkQHzAf8IAAHzARMCsgEGAeoBvALx + AfQB/wb0Av8R9AHzAQcCvAFtAQYCsgGGAfMB/wIAAf8BuwGLARkKAAL/AbwBiwGRAf8BCAFsARkBAAH/ + AZEBiwG8AfICkQHyCAAB8QGQAbsB/wUAAv8BvAFsAWsBbAHvAf8JAAHwAXEFbAFxAfQIAAH/AbwBbAJr + Ae8B9AH/CwAB/wHyAZECawGSAfQSAAH0AfcCawGRAfAB/wkAAe8BbAKyAWwBkgG8AewB9wEJAfIH9AP/ + DvQBvAHtAm0BvAGSAWwCsgFsAe8B/wIAAf8BuwGLARkIAAH/AfMB8gEZAboBBgG7Af8BCAFsARkBAAH/ + AboBbAG7AQgBkAGRAfMIAAHxAZABuwH/BQAB/wH3AWwCawGRAfQKAAHwAXEFbAFxAfQJAAH/AfcBbAFr + AWwB9wH/DAAB/wG8AWwBawFsAbwB/xAAAf8BvAFsAWsBbAG8Af8JAAH/ARIBBgGyAQYBEgG8AfcB6wG8 + Ae8BHAHwAf8G9AP/DPQBBwLrAfcB6wGSAbwB6gOyAWwB/wIAAf8BuwGLARkIAAHzAbsBkAGLAWsBkAHz + Af8BCAFsARkBAAH/AfEBbAEGAZABBgG7Af8IAAHxAZABuwH/BAAB/wHxAWwCSAFsAbwB/woAAbwHbAH0 + CgAB8gHrAkgBbAHyAf8MAAH0AfcCawGSAfQQAAH0AZICawGSAfQKAAHzAWYCsgEGAewBvAHrAZIB8wHy + AfAB8gL/BfQE/wv0AfAB7wHwAfMB9wHrAbwB7AEGArIBawHzAgAB/wG7AYsBGQgAAfQBtQGQAQYBawEG + ARkB/wEIAWwBGQEAAv8B8QG7AZABawG6AfQIAAHxAZABuwH/BAAB/wH3AmsBSAGRAfMLAAH3AUMFDQEV + AbwKAAH0AZECawFsAe8B/wwAAf8B8AFsAWsBbAHyAf8OAAH/AfIBbAFrAWwB8AH/CgABBwGLArIBiwHv + AQcBbQG8BPQD/wX0BP8L9AHzAvQB8AFtAu8BiwKyAYsBBwIAAf8BuwGLARkIAAL/AfQB8wG1AQYBugH/ + AQgBbAEZAgAD/wHyAZEBbAEZAf8HAAHxAZABuwH/BAAB/wFsA2sBkQH/CgAB9AHqBw0B6wH/CQAB9AGR + AmsBbAFxAf8NAAH0AZICawEHAf8OAAH/AbwCawGRAfQLAAHtA7IBEgG8AZIB6wX0BP8F9AL/AfQB8gHz + DfQB6wHtAbwBEgOyAe0CAAH/AbsBiwEZCwAB/wEZAYsBkQH/AQgBbAEZBQAB/wHxAYsBkAHxBwAB8QGQ + AbsB/wMAAf8B8wFsA2sBkQH0CQAB9AHtARUHDQEVAe8B/wgAAf8B9wFsAWsCbAHzAf8MAAH/AQcBbAFr + AZIB9A4AAfQB9wFrAWwB7wH/CwABEgEGAbIBBgESAfEC7Qb0BP8E9AHzAQkC7QH3AfMM9AGSAewB8QHq + AQYBsgEGARICAAH/AbsBiwEZCAAB9AEZAbsBkQFsAWsBGQH/AQgBbAEZAgAB/wEIAZEBkAK6AWsBugHz + BgAB8QGQAbsB/wMAAf8BvANrAUgBbAGRAfIB/wUAAf8B8AFtARUJDQEUAewB8gYAAf8BvAFsAmsCbAG8 + Af8CAAH/AfQB/wcAAf8B8AFsAWsBkQHzDgAB9AGRAWsBbAG8Af8HAAH/AfQB/wEAAWYCsgEGAesB8AHr + Ae8H9AT/AvQB7wESARQBkwEHAe0B8gz0Ae8B6wG8AewBgQKyAWYCAAH/AbsBiwEZCAAB8wGRAWwCawGR + AfQB/wEIAWwBGQEAAf8B8QEGAmsBbAGQAboBawG7Af8FAAHxAZABuwH/AwAB/wEHA2sBSAFJCmwMDQFr + BGwC6gFsAesBkQJsAWsCbAEHAf8CAAHvAWwBkgH/BwAB8gFsAWsBbAHzDgAB8wFsAWsBbAHyBwAB/wH3 + AWwB7wH/AUMCsgEGAewB8AHrAQcI9AT/AfMB6gFmARIBagGUAbUB8QH/C/QBBwHrAbwB7AEGArIBZgIA + Af8BuwGLARkIAAH/ARkBuwGRAQYBawG7Af8BCAFsARkBAAH/AZEBBgG7AfIBkAGRAbsBkQG6AfMFAAHx + AZABuwH/AwAB/wGRA2sBSAFsAusBcgRsAXEBcgFsAWsLDQJsAZECcgaRAWwBawJsAZEB/wEAAfQBbAFr + AWwB8wIAAf8B9AH/AgAB8wGRAWsBbAHzAf8NAAHzAWwBawGRAfICAAH/AfQB/wIAAfMBbAFrAWwB9AFD + ArIBgQHsAfABbQHsAu0BBwb0A/8B8gHrAWYBFwFHAW8B7AHyAv8H9AEHAu0B7AFtAbwB7AEGArIBZgIA + Af8BuwGLARkMAAHwAYsBkQH/AQgBbAEZAQAB/wGRAZAB8gH0AbsBkQHyAvQGAAHxAZABuwH/AwAB/wGR + AmsCSAFsA+sGcgFsAWsLDQJsCZEBbAFrAmwBkQH/AQABvAJrAWwB9AEAAf8BvAFsAZEB8wEAAfMBkQFr + AWwB8wH/DAAB/wHzAWwBawGRAfIBAAHzAZEBbAG8Af8BAAH0AWwCawG8AUMCsgGBAewB8AFtAewCkgEH + B/QC/wHyAu0BFwFGAUMBEwG8A/8G9AEHApIB7AHrAbwB7QGBArIBZgIAAf8BuwGLARkHAAT/AfQBuwEG + AZEB/wEIAWwBGQEAAf8BuwFrAQYBkAFrAZEB8wgAAfEBkAG7Af8DAAH/AZECawFIAUkBbAPrBnIBbAFr + Cw0CbAmRAWwBawJsAZEB/wEAAfcCawGRAf8BAAH0AZEBawFsAbwBAAHzAZEBawFsAfMB/wwAAf8B8wFs + AWsBkQHyAQABvAFsAWsBkQH0AQAB/wGSAWwBawH3AUMCsgEGAewB8AHrAQcL9AH/AfAB7QGUAZMBFQFm + ARIB8QT/CPQBBwHrAbwB7AEGArIBZgIAAf8BuwGLARkHAAH0AbsBkAFsAWsCBgEZAf8BCAFsARkBAAH/ + AfQBkQJrAZAB8QkAAfEBkAG7Af8DAAH/AZECawFIAUkBbAPrBnICbAsNAmwJkQFsAWsCbAGRAf8BAAGR + AWsBbAHvAQAB/wHzAWwBawFsAfIBAAHzAZEBawFsAfMNAAH/AfMBbAFrAZEB8gEAAfIBkQFrAWwB8gH/ + AQABBwFsAWsBkQFmArIBBgHrAfAB6wHvDPQB9wGTAZQB7QHrAeoB7wL0BP8H9AHvAesBvAHsAYECsgFm + AgAB/wG7AYsBGQcAAfMBkQEGAYsBkQG7AfMB/wEAAfABiwEZAwAB9AKQAfEKAAHxAZABuwH/AwAB/wGR + AmsBSAFJAWwD6wZyAmwLDQJsCZEBbAFrAmwBkQH/AQABbAFrAWwBvAEAAf8B8AJrAZEB9AEAAfMBkQFr + AWwB8gH/DAAB/wHzAWwBawGRAfIBAAH0AZECawHwAf8BAAG8AWwBawFsARIBBgGyAQYBEgHxAewB7Qv0 + Ae8BkgKTAZIB8gX0A/8H9AGSAewB8AHqArIBBgESAgAB/wG7AYsBGQcAAfMCkQHyAf8EAAH0AfAB9AMA + AfQBkQGQAfEKAAHxAZABuwH/AwAB/wHvA2sBSAFsAusHcgJsCw0CbAiRAXEBbAFrAmwBuwH/AQACawFs + AfABAAH/AbwCawGRAfQBAAHzAZEBawFsAfAB/wwAAf8B8gFsAWsBkQHzAQAB/wGSAmsBvAH/AQAB8AFs + AmsB7QOyARIBvAGSAesB8wn0AfECbQLtAfIC/wb0Av8F9AHzAesB7QG8ARIDsgHtAgAB/wG7AYsBGQcA + AfMBugG7AfQLAAH/AbsBugHyCgAB8QGQAbsB/wMAAf8BvANrAUgCbAFyCJEGbARJA2wEkQOSApECbAFr + AmwBCAH/AQACawFsAfABAAH/AbwCawGRAfQBAAH0AZICawEHAf8MAAH/AbwCawGRAfQBAAH/AfcCawG8 + Af8BAAHwAWwCawG8AYsCsgGLAe8BBwFtAbwC9ALzBfQBkgHrAW0BEwG8AfQD/wb0Av8E9AG8AW0C7wGL + ArIBiwEHAgAB/wG7AYsBGQcAAf8B8gHzAf8LAAL/AfQB/woAAfEBkAG7Af8DAAH/AfMBbANrAWwB6wEH + AfMG9AHzAbwEBwfvAbwB8wb0AfIB7wFsAmsCbAHzAf8BAAFsAWsBbAG8AQAB/wHwAmsBkQH0AQAB/wEH + AWwBawGRAfQB/woAAf8B9AGRAWsBbAHvAf8BAAH0AZICawG8Af8BAAHwAWwBawFsAfMBZgKyAQYB7AG8 + AesBkgHzAbwB7wG8BPQB8QFtARIBFAHtAfMB9AT/BvQB/wHyAfAB8QHzAfcB6wG8AewBBgKyAWsB8wIA + Af8BuwGLARkkAAHxAZABuwH/BAAB/wFxA2sBbAHwHgAB8wGRAmsBbAGRAf8CAAGRAWsBbAEHAQAB/wHy + AWwBawGRAfMCAAHyAWwBawFsAbwB/woAAf8BvAFsAWsBbAHwAgAB8wGRAWsBbAHyAf8BAAG8AWwBawFs + Af8B6gEGAbIBBgESAbwB9wFtAfcC6wEHA/QB8wGSARMBFQHtAfMD9AT/BvQB8QHvAfcB7wHrAZIBvAHq + AQYBsgEGARIB/wIAAf8BuwFsAbsk8wEZAYsBuwH/BAAB/wEHA2sBbAG8Af8cAAH/AQcBbAJrAWwBBwH/ + AgABkgFrAWwB9wL/AfQB6wFrAWwBvAH/AQAB/wH3AWwBawFsAfAC/wYAAv8B8AFsAWsBbAH3AfQBAAH/ + AbwBbAFrAWwB8wL/AfcBbAFrAZEBAAHvAWwCsgFsAe0BvAFtARIB7AG8BPQBvAFtAWYBbQHwBfQE/wb0 + AfIBCQHsAesBvAGSAWwCsgFsAe8B/wIAAf8BuwFrAYslkAFrAbsB/wQAAf8B9AFxAmsBbAGSAf8cAAH0 + AZEDawFsAfMB/wIAAbwCawGRAf8BAAH0AfcCawH3AfQCAAHyAZECawFsAbwB9AL/AwAB/wH0AbwBbAJr + AZEB8gIAAfQB9wJrAfcB9AEAAf8BkQJrAQcBAAHzARMDsgHqAQcB9wFtAe8E9AHzAe0BFAHqAbwH9AT/ + BvQB8QH3AQkBvAFtAQYCsgGLAfMB/wIAAf8BuyhrAbsB/wUAAf8BBwFsAmsBbAHwAf8bAAHyAZECawFs + Ae8B/wMAAfMBbAFrAWwB8gEAAf8B8AFsAWsBbAG8Af8BAAH/AbwBbAJrAWwBkgG8AfIC8wHyAbwBkgFs + AmsBbAG8Af8BAAH/AfABbAFrAWwBvAH/AQAB8gFsAWsBbAHzAQAB/wGSAZECsgFsAewBvALsAfAD9AG8 + AeoBEwHvAfMI9AT/BPQB8QH3Ae8B8AHtAWwCsgGRAZIB/wMAAf8BuyhrAbsB/wUAAf8B9AH3AWwBawFs + AZIB9BoAAf8B7wFsAWsBbAGSAfQB/wMAAf8BkQFrAWwB9wH/AQAB9AGRAmsBkQHzAf8BAAH/AbwBkQFs + AmsCbAKRAmwCawFsAZEBvAH/AQAB/wHzAZECawGRAfQBAAH/Ae8BbAFrAesB/wEAAf8B8wGLAQYBsgEG + AYsB9wG8AesB7AHwAfQB8wHtARQB7AHxC/QB8gHwA/QB8AHtAewB8AHvAZEBBgKyAYsB8wH/AwAB/wG7 + KGsBuwH/BgAB/wH0Ae8BbAFrAWwB7wH/GAAB/wHwAWwCawGRAfMB/wUAAQcCawFsAfMBAAH/AfABbAFr + AWwBkQHzAf8BAAH/AfIB9wFsCGsBbAH3AfIB/wEAAf8B8wGSAWwBawFsAfAB/wEAAfMBkQJrAQcB/wIA + Af8B7wGLArIBBgHqAu8B6wHsAfABBwHqAWYB7wHzC/QB8AEcAfIB/wHyAZIB6wLvAZABBgKyAWwB9wH/ + BAAB/wG7KGsBuwH/BwAB/wH0AZECawFsAbwB/xYAAf8B8gGRAmsBbAHyAf8GAAH0AWwBawFsAfcB/wEA + Af8BBwFsAWsBbAGRAbwB9AL/AfQB8AHvAWwEawFsAe8B8AH0Av8B9AG8AZEBbAFrAWwBBwH/AQAB/wHv + AWwBawFsAfQB/wIAAf8B9AHsA7IBBgFtAu8B6wHsAesBFAFtAbwF9AIHBfQB8gLvAfAB7wGSAu8BbQEG + A7IB7AH0Af8EAAH/AbsoawG7Af8IAAH/AfABbAJrAWwBBwH0FAAB/wHwAZECawFsAQcB/wcAAf8BBwJr + AWwBvAL/AfQB7wFsAmsBbAGSAbwE/wGRBGsBkQT/AbwB9wFsAmsBbAHvAfQC/wG8AWwCawEHAf8EAAH/ + AfEBkAEGArIBbAFtAe8BvAHsARIBFAH3AfMF9AGSAe0F9AHzAbwB7QH3Ae8B8QEHAW0BbAKyAQYBkQHw + Af8FAAH/AbsoawG7Af8JAAH/AbwBbAJrAWwB7wH0Af8RAAH/AbwBbAJrAWwBBwH0Af8HAAH/AfQBkQJr + AZEB8gL/AfQBBwFsA2sBbAHwAf8BAAH/AZEEawGRAf8BAAH/AfABbANrAWwBBwH0Av8B8gGRAmsBkQH0 + Af8EAAL/AbwBhgOyAQYB6gH3AbwB9wJtAZIBvAHzA/QBkgHtBPQBvAGSAesB7AG8AfEB7wGQAQYCsgEG + AYsBBwL/BQAB/wG7KGsBuwH/CgAB/wG8AWwCawFsAZEBvAH0Af8NAAH/AfABkgFsAmsBbAHvAfQB/wkA + Af8B8gFsAWsBbAGRAfID/wHwAZEBbAJrAbwB/wEAAf8BkQRrAZEB/wEAAf8BvAJrAWwBkQHwA/8B8wGR + AWwBawFsAfIB/wYAAv8BBwGLAQYCsgEGAYsB7AEHAbwB9wHrAW0B6wHtAe8BBwLsAQcB7wHtAesBbQHr + AfcCvAHsAWwBBgKyAQYBiwHvAfQB/wYAAf8BuyhrAbsB/woAAv8B8AGRA2sBbAGRAbwB9AH/CAAB/wH0 + AfABkgJsAmsBbAHvAfQB/wsAAf8BvAFsAWsBbAGRAfAB/wEAAf8B9AHwAu8B9AH/AQAB/wGSAWwDawGS + AgAB/wH0Au8B8AH0Af8BAAH/AfABkQFsAWsBbAG8Av8HAAH/AfQBBwGLAQYCsgEGAWwB6gHtArwB7wGS + AewC6wJtAusB7AGSAQcCvAGSAeoBbAEGArIBBgGGAe8B9AH/BwAB/wEZKGsBvAH/DAAB/wHyAZIBbANr + AWwBkQGSAbwB8AHzA/QB8AG8AfcBkQJsA2sBkQG8Av8MAAL/AQcBbAFrAmwB7wH0Af8BAAT/AwAB8AFs + AmsBbAHwAwAE/wEAAf8B9AHvAmwBawFsAQcC/wkAAv8BvAGQBbIBbAESAewB7wG8AfEG8AHxAbwB7wHs + ARIBbAEGBLIBkQEHAfQB/wgAAf8B8wGLJmsBkAH0Af8NAAH/AfQBvAFsBGsKbARrAWwB7wHzAf8PAAL/ + AbwBbAJrAWwBkQEHAfQB/wYAAf8BvAKRAbwB/wYAAf8B9AG8AZEBbAJrAWwBBwL/CwAC/wHxAewBiwEG + A7ICBgGLAhIB6wTsAesCEgGLAgYEsgFsAbQB8QL/CgAB/wEZAYskawGLAfAB/w8AAv8B9AG8AZEBbA1r + AWwB7wHzAv8RAAL/AfABkQNrAmwBvAH/BgAE/wYAAf8BvAJsA2sB6wHwAv8NAAL/AfQB7wGLAZEGsgMG + AoEDBgayAZEBiwH3AfQC/wsAAv8B9AEZIrsBGQH0Av8RAAP/AfMBBwGRAWwHawFsAfcB8AH0Av8UAAL/ + AfQB9wFsA2sBkQHzEAAB8wGRA2sBbAH3AfMC/xAAAv8B8wGSARMBbAEGDrIBBgFsARMB7QHzAv8PACb/ + FgAE/wH0BPIB8wX/GAAC/wHzAfcBbAFrAZIB9BAAAfQB9wFrAWwB9wHyAv8UAAL/AfMB7wHqAWYBiwGy + AQYGsgEGAbIBiwFmARIB7wHzAv9RAAb/HwAC/wH0AfMB9AH/EAAC/wHzAfQC/xoAAf8B8wG8Ae0BEgFm + BEMBZgESAe0BBwHzAf+gAAFCAU0BPgcAAT4DAAEoAwABwAMAAWADAAEBAQABAQYAAQkWAAP/AQAG/xIA + Av8BhwHBAv8SAAH/AfwBBwHAAX8B/xIAAf8B8AEHAcABHwH/EgAB/wHwAQMBgAEfAf8SAAH/AfABAQGA + AR8B/xIAAf8B8AIAAR8B/xIAAf8B+AIAAT8B/xIAAf8B+AIAAT8B/xIAAf8B+AIAARwBPxIAAfgBMAMA + AR8SAAHwBAABDxIAAfABAAEBAYABAAEPEgAB4AEAAQ8B8AEAAQcSAAHgAQABPwH4AQABBxIAAcABAAF/ + Af4BAAEHEgABwAEAAv8BAAEHEgABwAEBAv8BgAEPEgAB8AEDAv8BgAEfEgAB+AEDAv8BwAE/EgAB/AEH + Av8BwAF/EgAB/AEHAv8B4AE/EgAB/AEHAv8B4AEfEgAB8AEHAv8B4AEBEgABgAEHAv8B4AEBEgABgAEH + Av8B4AEBEgABgAEHAv8B4AEBEgABgAEDAv8BwAEBEgABgAEDAv8BwAEBEgABwAEBAv8BgAEDEgABwAEB + Av8BAAEDEgABwAEAAv8BAAF/EgAB/wEAAX8B/gEAAf8SAAH/AYABHwH4AQEB/xIAAf8BgAEHAeABAAH/ + EgAB/wQAAX8SAAH/BAABfxIAAf4EAAE/EgAB/gQAAT8SAAH+BAABPxIAAf4EAAH/EgAB/wGAAeABBwGB + Af8SAAH/AcAB8AEPAYMB/xIAAf8B4QHwAQ8BxwH/EgAC/wHwAQ8C/xIAAv8B8AEPAv8SAAL/AfABDwL/ + EgAG/xIAAf8B/AIAAT8P/wH8AT8D/wHwAgABDwn/AfgBHwT/AfABDwP/AcACAAEDAf8B+AQAAR8C/wGA + AQEE/wHgAQcD/wQAAf8B4AQAAQcB/wH+AgABfwP/AcABAwL/Af4EAAF/AeAEAAEHAf8B/AIAAT8D/wHA + AQMC/wH8BAABPwHABAABAwH/AfACAAEPA/8BwAEDAv8B+AQAAR8BwQT/AYMB/wHgAgABAwL/AYACAAEB + Af8B8AQAAQ8BwwT/AcMB/wGAAgABAQL/BAAB/wHgBAABBwHDAfgBfwHwAf8BwwH/BAAB/wH+BAABfwHg + BAABBwHDAfgBfwHwAf8BwwH+BAABfwH+BAABfwHABAABAwHDAfgBfAFwAf8BwwH+AQEB8AEHAYABPwH+ + BAABfwHABAABAwHDAfgBBAFgAX8BwwH8AQMB8AEHAcABPwH+BAABfwGABAABAQHDAfgBAAFAAT8BwwH4 + AQcB8AEHAeABHwH+AQMC/wHAAX8BgAQAAQEBwwH4AQABQAE/AcMB+AEPAfABBwHwAQ8B/gEBAv8BgAF/ + AYAFAAHDAf8BAAFAAT8BwwHgAR8B8AEHAfgBBwH/AQEC/wGAAf8BgAUAAcMB/AEAAUABPwHDAeABPwHw + AQcB/AEHAf8BgAL/AQEB/wYAAcMB/AEAAUABPwHDAcABPwHwAQcB/gEDAf8BwAL/AQMB/wYAAcMB/AEA + AUABPwHDAcABfwHwAQcB/gEDAf8BwAF/Af4BAwH/BgABwwH8AQABYAEfAcMBwAF/AeABAwH+AQMB/wHg + AX8B/gEHAf8GAAHDAf8BgAF8AR8BwwGAAX8BwAEBAf4BAQH/AeABfwH+AQcB/wYAAcMB/AEAAWABDwHD + AYABHwIAAfwBAQGPAeABfwH+AQcB8QYAAcMB/AEAAUABBwHDAYAEAAEBAYcB8AF/Af4BDwHgBgABwwH8 + AQABQAEHAcMBgAQAAQEBBgEwAT8B/gEMAWAGAAHDAf8BwAFAAQ8BwwGABAABAQEEARABPwH8AQgBIAYA + AcMB+AEAAUABPwHDAYAEAAEBAQQBEAE/AfwBCAEgBgABwwH4AQABQAF/AcMBgAQAAQEBCAEQAX8B/AEI + ARAGAAHDAfgBBAFwAf8BwwGABAABAQEIARABPwH8AQgBEAYAAcMB+AE8AXAB/wHDAYAEAAEBAQgBEAE/ + AfwBCAEQBgABwwH4AX8B8AH/AcMBgAQAAQEBCAEQAT8B/AEIARAGAAHDAfgBfwHwAf8BwwGABAABAQEI + ARABHwH4AQgBEAYAAcME/wHDAcABfwL/Af4BAwEIARgBHwH4ARgBEAYAAcAEAAEDAcABPwL/AfwBAwEA + AQgBBwHgARABAAGABQABwAQAAQMBwAE/Av8B/AEDAQQBDAEBAcABMAEgAYAFAAHABAABAwHgAR8C/wH8 + AQcCBAIAAiABgAQAAQEBwAQAAQMB4AEfAv8B+AEHAgICAAJAAYAEAAEBAcAEAAEDAfABDwL/AfABDwGC + AQECAAGAAUABwAQAAQMBwAQAAQMB+AEHAv8B4AEfAYEEAAGAAcAEAAEDAcAEAAEDAfwBAwL/AcABPwGA + BAABAQHgBAABBwHABAABAwH+AQAC/wGAAT8BgAEAARABCAEAAQEB4AQAAQcBwAQAAQMB/wEAAT8B/gEA + AX8BwAEAARABCAEAAQMB8AQAAQ8BwAQAAQMB/wEAAQ8B8AEAAf8B4AIQARgBCAEDAfgEAAEfAcAEAAED + Af8BwAIAAQEB/wHgAQQBOAEcASABBwH8BAABPwHABAABAwH/AeACAAEHAf8B8AEBAfgBHwGAAQ8B/gQA + AX8B4AQAAQcB/wHwAgABDwH/AfgBAAH8AT8BAAEfAf8EAAH/AeAEAAEHAf8B/AIAAT8B/wH8AQAC/wEA + AT8B/wHAAgABAwH/AfgEAAEfAv8BgAEAA/8BAAL/AQAC/wHwAgABDwn/AfgBHwP/AcAC/wEDA/8CABT/ + Cw== - 59 + 45 \ No newline at end of file diff --git a/SourceCode/GPS/Forms/Settings/FormSteerWiz.Designer.cs b/SourceCode/GPS/Forms/Settings/FormSteerWiz.Designer.cs index 58c83d67e..9c17ab505 100644 --- a/SourceCode/GPS/Forms/Settings/FormSteerWiz.Designer.cs +++ b/SourceCode/GPS/Forms/Settings/FormSteerWiz.Designer.cs @@ -64,6 +64,8 @@ private void InitializeComponent() this.hsbarStanleyGain = new System.Windows.Forms.HScrollBar(); this.hsbarHeadingErrorGain = new System.Windows.Forms.HScrollBar(); this.tabInt = new System.Windows.Forms.TabPage(); + this.lblSideHillComp = new System.Windows.Forms.Label(); + this.hsbarSideHillComp = new System.Windows.Forms.HScrollBar(); this.label22 = new System.Windows.Forms.Label(); this.lblPureIntegral = new System.Windows.Forms.Label(); this.hsbarIntegralPurePursuit = new System.Windows.Forms.HScrollBar(); @@ -73,6 +75,7 @@ private void InitializeComponent() this.label20 = new System.Windows.Forms.Label(); this.label19 = new System.Windows.Forms.Label(); this.label18 = new System.Windows.Forms.Label(); + this.hsbarLookAheadMult = new System.Windows.Forms.HScrollBar(); this.lblLookAhead = new System.Windows.Forms.Label(); this.lblLookAheadMult = new System.Windows.Forms.Label(); this.imageList1 = new System.Windows.Forms.ImageList(this.components); @@ -123,9 +126,6 @@ private void InitializeComponent() this.btnSteerAngleDown = new ProXoft.WinForms.RepeatButton(); this.hsbarSensor = new System.Windows.Forms.HScrollBar(); this.lblhsbarSensor = new System.Windows.Forms.Label(); - this.label16 = new System.Windows.Forms.Label(); - this.nudPanicStopSpeed = new AgOpenGPS.NudlessNumericUpDown(); - this.label31 = new System.Windows.Forms.Label(); this.tabWiz = new System.Windows.Forms.TabControl(); this.tabStart = new System.Windows.Forms.TabPage(); this.btnStartWizard = new System.Windows.Forms.Button(); @@ -290,7 +290,6 @@ private void InitializeComponent() this.cboxEncoder = new System.Windows.Forms.CheckBox(); this.cboxCurrentSensor = new System.Windows.Forms.CheckBox(); this.tabPanicStop = new System.Windows.Forms.TabPage(); - this.label82 = new System.Windows.Forms.Label(); this.btnPrev_Panic = new System.Windows.Forms.Button(); this.label54 = new System.Windows.Forms.Label(); this.btnOkNext_PanicStop = new System.Windows.Forms.Button(); @@ -336,9 +335,6 @@ private void InitializeComponent() this.label67 = new System.Windows.Forms.Label(); this.lblBarWasOffset = new System.Windows.Forms.Label(); this.btnCloseAll = new System.Windows.Forms.Button(); - this.hsbarSideHillComp = new System.Windows.Forms.HScrollBar(); - this.lblSideHillComp = new System.Windows.Forms.Label(); - this.hsbarLookAheadMult = new System.Windows.Forms.HScrollBar(); this.tabControl1.SuspendLayout(); this.tabSteer.SuspendLayout(); this.tabStan.SuspendLayout(); @@ -346,7 +342,6 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudMaxCounts)).BeginInit(); this.panel2.SuspendLayout(); this.panel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudPanicStopSpeed)).BeginInit(); this.tabWiz.SuspendLayout(); this.tabStart.SuspendLayout(); this.tabLoadDef.SuspendLayout(); @@ -820,6 +815,27 @@ private void InitializeComponent() this.tabInt.Size = new System.Drawing.Size(348, 323); this.tabInt.TabIndex = 16; // + // lblSideHillComp + // + this.lblSideHillComp.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblSideHillComp.ForeColor = System.Drawing.Color.Black; + this.lblSideHillComp.Location = new System.Drawing.Point(6, 209); + this.lblSideHillComp.Name = "lblSideHillComp"; + this.lblSideHillComp.Size = new System.Drawing.Size(60, 35); + this.lblSideHillComp.TabIndex = 353; + this.lblSideHillComp.Text = "888"; + this.lblSideHillComp.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // hsbarSideHillComp + // + this.hsbarSideHillComp.LargeChange = 1; + this.hsbarSideHillComp.Location = new System.Drawing.Point(69, 208); + this.hsbarSideHillComp.Name = "hsbarSideHillComp"; + this.hsbarSideHillComp.Size = new System.Drawing.Size(217, 30); + this.hsbarSideHillComp.TabIndex = 352; + this.hsbarSideHillComp.Value = 5; + this.hsbarSideHillComp.ValueChanged += new System.EventHandler(this.hsbarSideHillComp_ValueChanged); + // // label22 // this.label22.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -920,6 +936,18 @@ private void InitializeComponent() this.label18.Text = "Look Ahead"; this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // + // hsbarLookAheadMult + // + this.hsbarLookAheadMult.LargeChange = 1; + this.hsbarLookAheadMult.Location = new System.Drawing.Point(68, 136); + this.hsbarLookAheadMult.Maximum = 30; + this.hsbarLookAheadMult.Minimum = 5; + this.hsbarLookAheadMult.Name = "hsbarLookAheadMult"; + this.hsbarLookAheadMult.Size = new System.Drawing.Size(217, 30); + this.hsbarLookAheadMult.TabIndex = 298; + this.hsbarLookAheadMult.Value = 6; + this.hsbarLookAheadMult.ValueChanged += new System.EventHandler(this.hsbarLookAheadMult_ValueChanged); + // // lblLookAhead // this.lblLookAhead.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -1580,59 +1608,6 @@ private void InitializeComponent() this.lblhsbarSensor.Text = "0%"; this.lblhsbarSensor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // - // label16 - // - this.label16.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.label16.BackColor = System.Drawing.Color.Transparent; - this.label16.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label16.ForeColor = System.Drawing.Color.Black; - this.label16.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label16.Location = new System.Drawing.Point(44, 164); - this.label16.Name = "label16"; - this.label16.Size = new System.Drawing.Size(547, 29); - this.label16.TabIndex = 520; - this.label16.Text = "Set Panic Stop Speed"; - this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // nudPanicStopSpeed - // - this.nudPanicStopSpeed.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.nudPanicStopSpeed.BackColor = System.Drawing.Color.AliceBlue; - this.nudPanicStopSpeed.Font = new System.Drawing.Font("Tahoma", 27.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.nudPanicStopSpeed.InterceptArrowKeys = false; - this.nudPanicStopSpeed.Location = new System.Drawing.Point(263, 202); - this.nudPanicStopSpeed.Maximum = new decimal(new int[] { - 99, - 0, - 0, - 0}); - this.nudPanicStopSpeed.Name = "nudPanicStopSpeed"; - this.nudPanicStopSpeed.ReadOnly = true; - this.nudPanicStopSpeed.Size = new System.Drawing.Size(107, 52); - this.nudPanicStopSpeed.TabIndex = 519; - this.nudPanicStopSpeed.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; - this.nudPanicStopSpeed.Value = new decimal(new int[] { - 15, - 0, - 0, - 0}); - this.nudPanicStopSpeed.Click += new System.EventHandler(this.nudPanicStopSpeed_Click); - // - // label31 - // - this.label31.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.label31.AutoSize = true; - this.label31.BackColor = System.Drawing.Color.Transparent; - this.label31.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label31.ForeColor = System.Drawing.Color.Black; - this.label31.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label31.Location = new System.Drawing.Point(284, 261); - this.label31.Name = "label31"; - this.label31.Size = new System.Drawing.Size(62, 19); - this.label31.TabIndex = 521; - this.label31.Text = "0 = Off"; - this.label31.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - // // tabWiz // this.tabWiz.Appearance = System.Windows.Forms.TabAppearance.Buttons; @@ -4197,12 +4172,8 @@ private void InitializeComponent() // tabPanicStop // this.tabPanicStop.BackColor = System.Drawing.Color.White; - this.tabPanicStop.Controls.Add(this.label82); this.tabPanicStop.Controls.Add(this.btnPrev_Panic); this.tabPanicStop.Controls.Add(this.label54); - this.tabPanicStop.Controls.Add(this.nudPanicStopSpeed); - this.tabPanicStop.Controls.Add(this.label16); - this.tabPanicStop.Controls.Add(this.label31); this.tabPanicStop.Controls.Add(this.btnOkNext_PanicStop); this.tabPanicStop.Location = new System.Drawing.Point(4, 19); this.tabPanicStop.Name = "tabPanicStop"; @@ -4210,20 +4181,6 @@ private void InitializeComponent() this.tabPanicStop.TabIndex = 30; this.tabPanicStop.Text = "PanicStop"; // - // label82 - // - this.label82.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.label82.BackColor = System.Drawing.Color.Transparent; - this.label82.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label82.ForeColor = System.Drawing.Color.Black; - this.label82.ImeMode = System.Windows.Forms.ImeMode.NoControl; - this.label82.Location = new System.Drawing.Point(44, 108); - this.label82.Name = "label82"; - this.label82.Size = new System.Drawing.Size(547, 29); - this.label82.TabIndex = 536; - this.label82.Text = "Kmh drop per fix update (3 works well)"; - this.label82.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // // btnPrev_Panic // this.btnPrev_Panic.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -4892,39 +4849,6 @@ private void InitializeComponent() this.btnCloseAll.UseVisualStyleBackColor = false; this.btnCloseAll.Click += new System.EventHandler(this.btnExit_Click); // - // hsbarSideHillComp - // - this.hsbarSideHillComp.LargeChange = 1; - this.hsbarSideHillComp.Location = new System.Drawing.Point(69, 208); - this.hsbarSideHillComp.Name = "hsbarSideHillComp"; - this.hsbarSideHillComp.Size = new System.Drawing.Size(217, 30); - this.hsbarSideHillComp.TabIndex = 352; - this.hsbarSideHillComp.Value = 5; - this.hsbarSideHillComp.ValueChanged += new System.EventHandler(this.hsbarSideHillComp_ValueChanged); - // - // lblSideHillComp - // - this.lblSideHillComp.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lblSideHillComp.ForeColor = System.Drawing.Color.Black; - this.lblSideHillComp.Location = new System.Drawing.Point(6, 209); - this.lblSideHillComp.Name = "lblSideHillComp"; - this.lblSideHillComp.Size = new System.Drawing.Size(60, 35); - this.lblSideHillComp.TabIndex = 353; - this.lblSideHillComp.Text = "888"; - this.lblSideHillComp.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // hsbarLookAheadMult - // - this.hsbarLookAheadMult.LargeChange = 1; - this.hsbarLookAheadMult.Location = new System.Drawing.Point(68, 136); - this.hsbarLookAheadMult.Maximum = 30; - this.hsbarLookAheadMult.Minimum = 5; - this.hsbarLookAheadMult.Name = "hsbarLookAheadMult"; - this.hsbarLookAheadMult.Size = new System.Drawing.Size(217, 30); - this.hsbarLookAheadMult.TabIndex = 298; - this.hsbarLookAheadMult.Value = 6; - this.hsbarLookAheadMult.ValueChanged += new System.EventHandler(this.hsbarLookAheadMult_ValueChanged); - // // FormSteerWiz // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -4968,7 +4892,6 @@ private void InitializeComponent() this.panel2.PerformLayout(); this.panel1.ResumeLayout(false); this.panel1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudPanicStopSpeed)).EndInit(); this.tabWiz.ResumeLayout(false); this.tabStart.ResumeLayout(false); this.tabLoadDef.ResumeLayout(false); @@ -5132,9 +5055,6 @@ private void InitializeComponent() private System.Windows.Forms.Panel panel1; private System.Windows.Forms.HScrollBar hsbarSensor; private System.Windows.Forms.Label lblhsbarSensor; - private System.Windows.Forms.Label label16; - private NudlessNumericUpDown nudPanicStopSpeed; - private System.Windows.Forms.Label label31; private System.Windows.Forms.TabControl tabWiz; private System.Windows.Forms.TabPage tabStart; private System.Windows.Forms.TabPage tabMotorDriver; @@ -5242,7 +5162,6 @@ private void InitializeComponent() private System.Windows.Forms.Label label81; private System.Windows.Forms.Label label80; private System.Windows.Forms.Button btnOkNext_LoadDefault; - private System.Windows.Forms.Label label82; private System.Windows.Forms.TabPage tabPGain; private System.Windows.Forms.Label label88; private System.Windows.Forms.Label label83; diff --git a/SourceCode/GPS/Forms/Settings/FormSteerWiz.cs b/SourceCode/GPS/Forms/Settings/FormSteerWiz.cs index bf1a57932..efe938120 100644 --- a/SourceCode/GPS/Forms/Settings/FormSteerWiz.cs +++ b/SourceCode/GPS/Forms/Settings/FormSteerWiz.cs @@ -1,6 +1,7 @@ using AgOpenGPS.Culture; using System; using System.Drawing; +using System.IO; using System.Windows.Forms; namespace AgOpenGPS @@ -21,7 +22,6 @@ public FormSteerWiz(Form callingForm) mf = callingForm as FormGPS; InitializeComponent(); nudMaxCounts.Controls[0].Enabled = false; - nudPanicStopSpeed.Controls[0].Enabled = false; nudAntennaHeight.Controls[0].Enabled = false; nudAntennaOffset.Controls[0].Enabled = false; @@ -113,8 +113,6 @@ private void FormSteer_Load(object sender, EventArgs e) //hSBarFreeDrive.Value = 0; mf.vehicle.driveFreeSteerAngle = 0; - nudPanicStopSpeed.Value = (decimal)mf.vehicle.panicStopSpeed; - toSend252 = false; toSend251 = false; @@ -241,15 +239,12 @@ private void FormSteer_FormClosing(object sender, FormClosingEventArgs e) Properties.Settings.Default.setAS_Kp = mf.p_252.pgn[mf.p_252.gainProportional] = unchecked((byte)hsbarProportionalGain.Value); Properties.Settings.Default.setAS_minSteerPWM = mf.p_252.pgn[mf.p_252.minPWM] = unchecked((byte)hsbarMinPWM.Value); - Properties.Settings.Default.setVehicle_panicStopSpeed = mf.vehicle.panicStopSpeed; hsbarSideHillComp.Value = (int)(Properties.Settings.Default.setAS_sideHillComp * 100); Properties.Settings.Default.setIMU_invertRoll = mf.ahrs.isRollInvert; - Properties.Settings.Default.Save(); - //save current vehicle - SettingsIO.ExportAll(mf.vehiclesDirectory + mf.vehicleFileName + ".XML"); + RegistrySettings.Save(); } private void Timer1_Tick(object sender, EventArgs e) @@ -283,10 +278,11 @@ private void Timer1_Tick(object sender, EventArgs e) hsbarCountsPerDegree.Value = (int)cpd; lblCPDError.Text = "CPD set to: " + hsbarCountsPerDegree.Value.ToString(); } - catch (Exception) + catch (Exception ed) { hsbarCountsPerDegree.Value = 100; lblCPDError.Text = "Error, CPD set to 100"; + Log.EventWriter("Error, CPD set to 100" + ed.ToString()); } } } @@ -317,10 +313,11 @@ private void Timer1_Tick(object sender, EventArgs e) hsbarAckerman.Value = (int)((steerAngleLeft / Math.Abs(startAngleLeft)) * 100); lblAckermannError.Text = "Ackermann Set to: " + hsbarAckerman.Value.ToString(); } - catch (Exception) + catch (Exception eh) { hsbarAckerman.Value = 100; lblAckermannError.Text = "Error, Ackermann set to 100"; + Log.EventWriter("Error, Ackermann set to 100"+ eh.ToString()); } } } @@ -559,9 +556,6 @@ private void btnLoadDefaults_Click(object sender, EventArgs e) Properties.Settings.Default.setAS_Kp = 120; Properties.Settings.Default.setAS_minSteerPWM = 25; - Properties.Settings.Default.setVehicle_panicStopSpeed = mf.vehicle.panicStopSpeed - = 0; - Properties.Settings.Default.setArdSteer_setting0 = 56; Properties.Settings.Default.setArdSteer_setting1 = 0; Properties.Settings.Default.setArdMac_isDanfoss = false; @@ -593,15 +587,13 @@ private void btnLoadDefaults_Click(object sender, EventArgs e) Properties.Settings.Default.setIMU_rollZero = mf.ahrs.rollZero; - Properties.Settings.Default.Save(); - toSend252 = true; counter252 = 3; toSend251 = true; counter251 = 2; //save current vehicle - SettingsIO.ExportAll(mf.vehiclesDirectory + mf.vehicleFileName + ".XML"); + RegistrySettings.Save(); FormSteer_Load(this, e); } @@ -642,13 +634,6 @@ private void nudMaxCounts_Click(object sender, EventArgs e) } } - private void nudPanicStopSpeed_Click(object sender, EventArgs e) - { - //saved on close - mf.KeypadToNUD((NudlessNumericUpDown)sender, this); - mf.vehicle.panicStopSpeed = (double)nudPanicStopSpeed.Value; - } - private void cboxMotorDrive_SelectedIndexChanged(object sender, EventArgs e) { if (isWizardStarted) diff --git a/SourceCode/GPS/Forms/Settings/FormSteerWiz.resx b/SourceCode/GPS/Forms/Settings/FormSteerWiz.resx index 408ed7522..c4f3a4ffd 100644 --- a/SourceCode/GPS/Forms/Settings/FormSteerWiz.resx +++ b/SourceCode/GPS/Forms/Settings/FormSteerWiz.resx @@ -128,7 +128,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADu - IQAAAk1TRnQBSQFMAgEBBAEAAZABAwGQAQMBQgEAASwBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + IQAAAk1TRnQBSQFMAgEBBAEAAZgBAwGYAQMBQgEAASwBAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABCAEBAgABWAMAAQEBAAEIBQABwAFaGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHA AdwBwAEAAfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANC AQADOQEAAYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ diff --git a/SourceCode/GPS/Forms/UDPComm.Designer.cs b/SourceCode/GPS/Forms/UDPComm.Designer.cs index 53a48ea0d..7ce5485b5 100644 --- a/SourceCode/GPS/Forms/UDPComm.Designer.cs +++ b/SourceCode/GPS/Forms/UDPComm.Designer.cs @@ -7,6 +7,7 @@ using System.Diagnostics; using System.Xml.Linq; using AgOpenGPS.Culture; +using System.Text; namespace AgOpenGPS { @@ -23,7 +24,7 @@ public partial class FormGPS private byte[] loopBuffer = new byte[1024]; // Status delegate - public int udpWatchCounts = 0; + public int missedSentenceCount = 0; public int udpWatchLimit = 70; private readonly Stopwatch udpWatch = new Stopwatch(); @@ -57,10 +58,7 @@ private void ReceiveFromAgIO(byte[] data) { if (udpWatch.ElapsedMilliseconds < udpWatchLimit) { - udpWatchCounts++; - if (isLogNMEA) pn.logNMEASentence.Append("*** " - + DateTime.UtcNow.ToString("ss.ff -> ", CultureInfo.InvariantCulture) - + udpWatch.ElapsedMilliseconds + "\r\n"); + missedSentenceCount++; return; } udpWatch.Reset(); @@ -160,11 +158,6 @@ private void ReceiveFromAgIO(byte[] data) sentenceCounter = 0; - if (isLogNMEA) - pn.logNMEASentence.Append( - DateTime.UtcNow.ToString("mm:ss.ff",CultureInfo.InvariantCulture)+ " " + - Lat.ToString("N7") + " " + Lon.ToString("N7") ); - UpdateFixPosition(); } } @@ -241,12 +234,6 @@ private void ReceiveFromAgIO(byte[] data) //Actual PWM mc.pwmDisplay = data[12]; - if (isLogNMEA) - pn.logNMEASentence.Append( - DateTime.UtcNow.ToString("mm:ss.ff", CultureInfo.InvariantCulture) + " AS " + - mc.actualSteerAngleDegrees.ToString("N1") + "\r\n" - ); - break; } @@ -269,7 +256,7 @@ private void ReceiveFromAgIO(byte[] data) lblHardwareMessage.Visible = true; hardwareLineCounter = data[5] * 10; - SystemEventWriter(lblHardwareMessage.Text); + Log.EventWriter(lblHardwareMessage.Text); //color based on byte 6 if (data[6] == 0) lblHardwareMessage.BackColor = Color.Salmon; @@ -312,10 +299,12 @@ public void StartLoopbackServer() loopBackSocket.Bind(new IPEndPoint(IPAddress.Loopback, 15555)); loopBackSocket.BeginReceiveFrom(loopBuffer, 0, loopBuffer.Length, SocketFlags.None, ref endPointLoopBack, new AsyncCallback(ReceiveAppData), null); + Log.EventWriter("UDP Loopback network started: " + IPAddress.Loopback.ToString() + ":" + "15555"); } catch (Exception ex) { MessageBox.Show("Load Error: " + ex.Message, "UDP Server", MessageBoxButtons.OK, MessageBoxIcon.Error); + Log.EventWriter("Catch -> Load UDP Loopback Error: " + ex.ToString()); } } @@ -371,10 +360,10 @@ public void SendPgnToLoop(byte[] byteData) loopBackSocket.BeginSendTo(byteData, 0, byteData.Length, SocketFlags.None, epAgIO, new AsyncCallback(SendAsyncLoopData), null); } - catch (Exception e) + catch (Exception) { - //WriteErrorLog("Sending UDP Message" + e.ToString()); - MessageBox.Show("Send Error: " + e.Message, "UDP Client", MessageBoxButtons.OK, MessageBoxIcon.Error); + //Log.EventWriter("Sending UDP Message" + e.ToString()); + //MessageBox.Show("Send Error: " + e.Message, "UDP Client", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } @@ -671,7 +660,7 @@ protected override bool ProcessCmdKey(ref Message msg, Keys keyData) //turn right if (keyData == Keys.Right) { - sim.steerAngle += 0.5; + sim.steerAngle += 1.0; if (sim.steerAngle > 40) sim.steerAngle = 40; if (sim.steerAngle < -40) sim.steerAngle = -40; sim.steerAngleScrollBar = sim.steerAngle; @@ -683,7 +672,7 @@ protected override bool ProcessCmdKey(ref Message msg, Keys keyData) //turn left if (keyData == Keys.Left) { - sim.steerAngle -= 0.5; + sim.steerAngle -= 1.0; if (sim.steerAngle > 40) sim.steerAngle = 40; if (sim.steerAngle < -40) sim.steerAngle = -40; sim.steerAngleScrollBar = sim.steerAngle; diff --git a/SourceCode/GPS/GPS_Out.exe b/SourceCode/GPS/GPS_Out.exe deleted file mode 100644 index 4adee472a..000000000 Binary files a/SourceCode/GPS/GPS_Out.exe and /dev/null differ diff --git a/SourceCode/GPS/ModSim.exe b/SourceCode/GPS/ModSim.exe deleted file mode 100644 index 957eade2f..000000000 Binary files a/SourceCode/GPS/ModSim.exe and /dev/null differ diff --git a/SourceCode/GPS/Program.cs b/SourceCode/GPS/Program.cs index d56609903..d74858852 100644 --- a/SourceCode/GPS/Program.cs +++ b/SourceCode/GPS/Program.cs @@ -18,63 +18,16 @@ internal static class Program [STAThread] private static void Main() { - //string configPath = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath; - //if (!File.Exists(configPath)) - //{ - // //Existing user config does not exist, so load settings from previous assembly - // Settings.Default.Upgrade(); - // Settings.Default.Reload(); - // Settings.Default.Save(); - //} - - //opening the subkey - RegistryKey regKey = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\AgOpenGPS"); - - ////create default keys if not existing - if (regKey == null) - { - RegistryKey Key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\AgOpenGPS"); - - //storing the values - Key.SetValue("Language", "en"); - Key.Close(); - - Settings.Default.setF_culture = "en"; - Settings.Default.Save(); - } - else - { - //check for corrupt settings file - try - { - Settings.Default.setF_culture = regKey.GetValue("Language").ToString(); - } - catch (System.Configuration.ConfigurationErrorsException ex) - { - // Corrupted XML! Delete the file, the user can just reload when this fails to appear. No need to worry them - MessageBoxButtons btns = MessageBoxButtons.OK; - System.Windows.Forms.MessageBox.Show("Error detected in config file - fixing it now", "Problem!", btns); - string filename = ((ex.InnerException as System.Configuration.ConfigurationErrorsException)?.Filename) as string; - System.IO.File.Delete(filename); - - //configPath = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath; - //if (!File.Exists(configPath)) - //{ - // //Existing user config does not exist, so load settings from previous assembly - // Settings.Default.Upgrade(); - // Settings.Default.Reload(); - // Settings.Default.Save(); - //} - } - - Settings.Default.Save(); - regKey.Close(); - } + //reset to default Vehicle and save + Settings.Default.Reset(); + Settings.Default.Save(); + + RegistrySettings.Load(); if (Mutex.WaitOne(TimeSpan.Zero, true)) { - Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(Properties.Settings.Default.setF_culture); - Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(Properties.Settings.Default.setF_culture); + Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(RegistrySettings.culture); + Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(RegistrySettings.culture); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new FormGPS()); @@ -85,4 +38,18 @@ private static void Main() } } } -} \ No newline at end of file +} + +////check for corrupt settings file +//try +//{ +// Settings.Default.setF_culture = regKey.GetValue("Language").ToString(); +//} +//catch (System.Configuration.ConfigurationErrorsException ex) +//{ +// // Corrupted XML! Delete the file, the user can just reload when this fails to appear. No need to worry them +// MessageBoxButtons btns = MessageBoxButtons.OK; +// System.Windows.Forms.MessageBox.Show("Error detected in config file - fixing it now", "Problem!", btns); +// string filename = ((ex.InnerException as System.Configuration.ConfigurationErrorsException)?.Filename) as string; +// System.IO.File.Delete(filename); +//} diff --git a/SourceCode/GPS/Properties/AssemblyInfo.cs b/SourceCode/GPS/Properties/AssemblyInfo.cs index 42cf8e618..4f44a0c22 100644 --- a/SourceCode/GPS/Properties/AssemblyInfo.cs +++ b/SourceCode/GPS/Properties/AssemblyInfo.cs @@ -21,15 +21,4 @@ // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("43d3e75e-dc8b-4c3a-8931-9495e1467d01")] -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("6.4.4")] -[assembly: AssemblyFileVersion("6.4.4")] \ No newline at end of file +// Versioning is handled by the GitVersion.MsBuild NuGet package \ No newline at end of file diff --git a/SourceCode/GPS/Properties/Resources.Designer.cs b/SourceCode/GPS/Properties/Resources.Designer.cs index 7d571365c..731a23f6d 100644 --- a/SourceCode/GPS/Properties/Resources.Designer.cs +++ b/SourceCode/GPS/Properties/Resources.Designer.cs @@ -619,6 +619,26 @@ internal static System.Drawing.Bitmap BoundaryRecord { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap BoundaryRecordPivot { + get { + object obj = ResourceManager.GetObject("BoundaryRecordPivot", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap BoundaryRecordTool { + get { + object obj = ResourceManager.GetObject("BoundaryRecordTool", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -639,6 +659,16 @@ internal static System.Drawing.Bitmap BoundaryRight { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap BoundarySectionControlOnOff { + get { + object obj = ResourceManager.GetObject("BoundarySectionControlOnOff", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -1062,9 +1092,9 @@ internal static System.Drawing.Bitmap ConD_LightBar { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap ConD_LogElevation { + internal static System.Drawing.Bitmap ConD_LineSmooth { get { - object obj = ResourceManager.GetObject("ConD_LogElevation", resourceCulture); + object obj = ResourceManager.GetObject("ConD_LineSmooth", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -1072,9 +1102,9 @@ internal static System.Drawing.Bitmap ConD_LogElevation { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap ConD_LogNMEA { + internal static System.Drawing.Bitmap ConD_LogElevation { get { - object obj = ResourceManager.GetObject("ConD_LogNMEA", resourceCulture); + object obj = ResourceManager.GetObject("ConD_LogElevation", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -1109,6 +1139,16 @@ internal static System.Drawing.Bitmap ConD_RollHelper { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ConD_SectionHighlights { + get { + object obj = ResourceManager.GetObject("ConD_SectionHighlights", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -2547,6 +2587,26 @@ internal static System.Drawing.Bitmap Previous { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap QRAOG { + get { + object obj = ResourceManager.GetObject("QRAOG", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap QRYouTube { + get { + object obj = ResourceManager.GetObject("QRYouTube", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -3351,6 +3411,16 @@ internal static System.Drawing.Bitmap TramLines { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TramMulti { + get { + object obj = ResourceManager.GetObject("TramMulti", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/SourceCode/GPS/Properties/Resources.resx b/SourceCode/GPS/Properties/Resources.resx index c47821343..d2f46e20b 100644 --- a/SourceCode/GPS/Properties/Resources.resx +++ b/SourceCode/GPS/Properties/Resources.resx @@ -121,9 +121,6 @@ ..\btnImages\AntennaHarvester.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ImplementSettings.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\BoundaryRecord.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -136,14 +133,17 @@ ..\btnImages\Headache.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\First.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\WizSteerDot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Config\ConS_VehicleLines.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\ConS_ImplementOffset.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\APlusPlusB.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\SemiCircle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\SnapRight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -151,9 +151,6 @@ ..\btnImages\Play.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\ConD_LogNMEA.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\BoundaryCenter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -175,12 +172,12 @@ ..\btnImages\ArrowLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\BoundaryRecordPivot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\Config\ConS_Respnse.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\HeadlandBuild.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\FieldStats.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -235,11 +232,8 @@ ..\btnImages\MappingOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\WizSteerDot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\btnImages\ColorUnlocked.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\ConV_GuidanceLookAhead.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Images\z_Compass.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -271,14 +265,11 @@ ..\btnImages\Config\SectionOnLookAhead.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ToolChkFront.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\ABPivot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\ConD_AutoDayNight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\First.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\SectionOffBoundary.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -292,12 +283,21 @@ ..\btnImages\Config\Tractor\z_TractorValtra.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\Con_ImplementMenu.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ColorUnlocked.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\Config\Harvester\z_HarvesterNH.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Config\ConD_LightBar.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\Con_ImplementMenu.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\BackSpace.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\Config\Brand\AoG.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -310,12 +310,6 @@ ..\btnImages\Config\ToolOffsetNegativeLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\Con_SourcesHead.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\btnImages\SteerDriveOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\Config\ConT_TramOverride.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -325,9 +319,6 @@ ..\btnImages\FileClose.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\ConSt_Mandatory.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\Config\Tractor\z_TractorKubota.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -382,9 +373,6 @@ ..\btnImages\Config\ConSt_InvertRelay.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\RadiusWheelBase4WD.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\Config\Brand\TriangleVehicle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -394,11 +382,8 @@ ..\btnImages\PointDelete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Images\z_Tractor.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\btnImages\DnArrow64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\BoundaryRecordTool.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\TiltDown.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -415,15 +400,15 @@ ..\btnImages\FlagDelete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\4WD\z_4WDFrontAoG.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\Config\ConF_HydLiftSound.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\TramAll.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\ConV_MaxAngVel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\ColourPick.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -433,8 +418,8 @@ ..\btnImages\Config\ConSt_InvertDirection.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\YouSkipOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ToolHitchPageRear.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Config\ConS_ImplementConfig.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -493,6 +478,9 @@ ..\btnImages\ABLatLonHeading.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\Tractor\z_TractorSteyr.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\Config\4WD\z_4WDFrontCase.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -502,6 +490,9 @@ ..\btnImages\Config\ConS_SourceFix.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ABLineCycleBk.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\Config\ToolHitchPivotOffsetNeg.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -514,14 +505,17 @@ ..\btnImages\Steer\Sf_GainTab.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\DnArrow64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\ToolHitchPageTBT.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\FileNew.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\ConS_ImplementSection.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\AutoSteerOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\FileSaveAs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -541,6 +535,9 @@ ..\btnImages\Config\ConS_ImplementSwitch.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\ConU_UTurnSmooth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\Config\Brand\Deutz.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -562,18 +559,9 @@ ..\btnImages\Images\z_RateMap1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ToolHitchPageRear.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\btnImages\SectionMapping.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\TracksInvisible.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\UpArrow64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\boundaryPause.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -616,6 +604,9 @@ ..\btnImages\Camera3D64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FlagYel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\Config\ConS_ImplementHitch.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -631,8 +622,8 @@ ..\btnImages\Config\SectionLookAheadDelay.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\APlusPlusB.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\ConV_MaxAutoSteer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Images\z_FrontWheels.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -661,8 +652,8 @@ ..\btnImages\SvennArrow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\ConDa_RollSetZero.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\ConD_DirectionMarker.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\FileSave.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -670,6 +661,9 @@ ..\btnImages\Images\z_Floor.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Sort.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\AgIO.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -709,6 +703,9 @@ ..\btnImages\SnapToPivot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\SwitchOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\Config\ConS_SourcesRoll.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -766,8 +763,14 @@ ..\btnImages\Config\Con_ModulesMenu.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\SemiCircle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ABSmooth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\rtk_lost.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\btnImages\Config\Con_SourcesHead.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\AntennaNoOffset.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -802,11 +805,8 @@ ..\btnImages\Images\z_SkyDay.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ABLatLonLatLon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\btnImages\MapGray.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\WindowDayMode.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\ColorLocked.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -820,8 +820,8 @@ ..\btnImages\BoundarySmooth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\BackSpace.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Images\z_RateMap3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Images\z_bingMap.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -832,9 +832,6 @@ ..\btnImages\HeadlandSlice.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\LetterBBlue.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\Config\ConU_UturnLength.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -850,12 +847,6 @@ ..\btnImages\Images\z_NoGPS.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\SectionOn.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ..\btnImages\Config\ConV_GuidanceLookAhead.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\Config\Brand\Massey.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -874,8 +865,8 @@ ..\btnImages\LetterABlue.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\SwitchOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\SteerDriveOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Config\Con_SourcesRTKAlarm.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -889,9 +880,6 @@ ..\btnImages\Config\4WD\z_4WDFrontJDeere.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Images\z_RateMap3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\btnImages\Webcam.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -928,11 +916,8 @@ ..\btnImages\TrackPivot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\rtk_lost.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ..\btnImages\Config\ConF_SteerSound.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ABLatLonLatLon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\ABTrackCurve.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -958,8 +943,8 @@ ..\btnImages\WindowMinimize.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\SwitchActiveClosed.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\FlagGrn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Config\ConD_Grid.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -979,6 +964,9 @@ ..\btnImages\ToolAcceptChange.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ABShrinkGrow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\Config\Tractor\z_TractorNH.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1033,8 +1021,8 @@ ..\btnImages\Config\ConD_FullScreenBegin.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\ConV_MaxAutoSteer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\Brand\Fendt.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Config\SectionLookAheadOff.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1045,6 +1033,9 @@ ..\btnImages\JobActive.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\TrackCurve.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\AutoTrack.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1054,6 +1045,9 @@ ..\btnImages\HeadlandDeletePoints.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Images\z_4WDRear.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\Config\Tractor\z_TractorAoG.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1087,8 +1081,8 @@ ..\btnImages\TrackOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\4WD\z_4WDFrontAoG.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ImplementSettings.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Config\ConD_Poligons.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1123,11 +1117,14 @@ ..\btnImages\Config\4WD\z_4WDRearChallenger.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\SectionMasterOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\YouSkipOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\Brand\Fendt.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Images\z_Turn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\Config\ConV_MaxAngVel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\WizWasZeroReset.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1135,14 +1132,14 @@ ..\btnImages\WindowClose.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\AutoSteerOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\ConD_AutoDayNight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Config\4WD\z_4WDRearCase.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ScreenShot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\ConS_ImplementOffset.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\QR\AgOpenYouTubeChannel.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1150,17 +1147,20 @@ ..\btnImages\YouTurnU.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ABLineCycleBk.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\UpArrow64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\ModePurePursuit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\Harvester\z_HarvesterJD.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\Config\ConD_ExtraGuides.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\Harvester\z_HarvesterJD.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\SectionOn.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ..\btnImages\ChargingNo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1192,8 +1192,11 @@ ..\btnImages\ABLineCycle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\JobNameCalendar.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\QR\QRAOG.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\SectionMasterOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Config\ConT_TramOverrideDisplay.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1207,6 +1210,9 @@ ..\btnImages\Config\ConF_SoundSections.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\VideoLink.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\OK64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1222,23 +1228,26 @@ ..\btnImages\Config\ConSt_Danfoss.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Images\z_Turn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\ConSt_Mandatory.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\ConD_Sky.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\ConD_LineSmooth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\ConU_UTurnSmooth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\JobNameCalendar.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\HeadlandBuild.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Config\ConMa_LiftLowerTime.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ABSmooth.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\MapGray.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\WindowDayMode.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\LetterBBlue.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Images\z_TurnCancel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1249,6 +1258,9 @@ ..\btnImages\Config\ConS_SourcesHeading.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\QR\QRYouTube.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnImages\WizWasZero.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1264,8 +1276,8 @@ ..\btnImages\Config\4WD\z_4WDFrontNH.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FlagGrn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\ConDa_RollSetZero.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\APlusPlusA.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1279,14 +1291,14 @@ ..\btnImages\Config\ConS_ModulesMachine.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\FlagYel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ToolChkFront.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Next.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Sort.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\SectionMapping.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Cancel64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1309,14 +1321,20 @@ ..\btnImages\PanBackground.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\ConD_SectionHighlights.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\btnimages\config\const_turnsensorcurrent.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Config\ConT_TramSpacing.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\Tractor\z_TractorSteyr.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\ScreenShot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\Config\ConD_Sky.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\ContourOn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1330,8 +1348,8 @@ ..\btnImages\ABTrackAB.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\Harvester\z_HarvesterNH.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\SwitchActiveClosed.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Steer\Sf_Stanley.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1339,8 +1357,8 @@ ..\btnImages\Config\Tractor\z_TractorCase.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\VideoLink.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Config\ConF_SteerSound.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\TF012.WAV;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -1351,8 +1369,8 @@ ..\btnImages\YouSkipOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\ABShrinkGrow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\Images\z_Tractor.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Config\ConS_Pins.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1360,8 +1378,11 @@ ..\btnImages\YouTurnH.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\TrackCurve.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\BoundarySectionControlOnOff.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\btnImages\Config\ConS_ImplementSection.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\FlagRed.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1372,8 +1393,8 @@ ..\btnImages\Images\z_Speedo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Images\z_4WDRear.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\RadiusWheelBase4WD.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\btnImages\Config\Tractor\z_TractorFendt.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -1387,7 +1408,7 @@ ..\btnImages\pathResumeStart.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\btnImages\Config\ConD_DirectionMarker.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\btnImages\TramMulti.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/SourceCode/GPS/Properties/Settings.Designer.cs b/SourceCode/GPS/Properties/Settings.Designer.cs index e08be197c..8e4d8af86 100644 --- a/SourceCode/GPS/Properties/Settings.Designer.cs +++ b/SourceCode/GPS/Properties/Settings.Designer.cs @@ -311,30 +311,6 @@ public bool setMenu_isSkyOn { } } - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("en")] - public string setF_culture { - get { - return ((string)(this["setF_culture"])); - } - set { - this["setF_culture"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Default")] - public string setF_workingDirectory { - get { - return ((string)(this["setF_workingDirectory"])); - } - set { - this["setF_workingDirectory"] = value; - } - } - [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("5")] @@ -433,7 +409,7 @@ public bool setAS_isAutoSteerAutoOn { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("3")] + [global::System.Configuration.DefaultSettingValueAttribute("2")] public int setDisplay_lineWidth { get { return ((int)(this["setDisplay_lineWidth"])); @@ -577,7 +553,7 @@ public bool setMenu_isSpeedoOn { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("100, 100, 125")] + [global::System.Configuration.DefaultSettingValueAttribute("145, 145, 145")] public global::System.Drawing.Color setDisplay_colorFieldDay { get { return ((global::System.Drawing.Color)(this["setDisplay_colorFieldDay"])); @@ -806,7 +782,7 @@ public bool setSound_isHydLiftOn { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("10, 10, 20")] + [global::System.Configuration.DefaultSettingValueAttribute("Black")] public global::System.Drawing.Color setDisplay_colorTextDay { get { return ((global::System.Drawing.Color)(this["setDisplay_colorTextDay"])); @@ -950,7 +926,7 @@ public bool setAS_isConstantContourOn { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("2.5")] + [global::System.Configuration.DefaultSettingValueAttribute("1.5")] public double setAS_guidanceLookAheadTime { get { return ((double)(this["setAS_guidanceLookAheadTime"])); @@ -1754,7 +1730,7 @@ public double setVehicle_antennaPivot { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("2.8")] + [global::System.Configuration.DefaultSettingValueAttribute("3.3")] public double setVehicle_wheelbase { get { return ((double)(this["setVehicle_wheelbase"])); @@ -1812,18 +1788,6 @@ public bool setVehicle_isSteerAxleAhead { } } - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Default Vehicle")] - public string setVehicle_vehicleName { - get { - return ((string)(this["setVehicle_vehicleName"])); - } - set { - this["setVehicle_vehicleName"] = value; - } - } - [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("0.5")] @@ -1838,7 +1802,7 @@ public double setVehicle_slowSpeedCutoff { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("3")] + [global::System.Configuration.DefaultSettingValueAttribute("-3")] public double setVehicle_tankTrailingHitchLength { get { return ((double)(this["setVehicle_tankTrailingHitchLength"])); @@ -1970,7 +1934,7 @@ public double setVehicle_lookAheadMinimum { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("1")] + [global::System.Configuration.DefaultSettingValueAttribute("1.5")] public double setVehicle_goalPointLookAheadMult { get { return ((double)(this["setVehicle_goalPointLookAheadMult"])); @@ -3119,5 +3083,65 @@ public double setTram_alpha { this["setTram_alpha"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0.9")] + public double setVehicle_goalPointAcquireFactor { + get { + return ((double)(this["setVehicle_goalPointAcquireFactor"])); + } + set { + this["setVehicle_goalPointAcquireFactor"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool setBnd_isDrawPivot { + get { + return ((bool)(this["setBnd_isDrawPivot"])); + } + set { + this["setBnd_isDrawPivot"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool setDisplay_isSectionLinesOn { + get { + return ((bool)(this["setDisplay_isSectionLinesOn"])); + } + set { + this["setDisplay_isSectionLinesOn"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool setDisplay_isLineSmooth { + get { + return ((bool)(this["setDisplay_isLineSmooth"])); + } + set { + this["setDisplay_isLineSmooth"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("921, 676")] + public global::System.Drawing.Size setWindow_tramLineSize { + get { + return ((global::System.Drawing.Size)(this["setWindow_tramLineSize"])); + } + set { + this["setWindow_tramLineSize"] = value; + } + } } } diff --git a/SourceCode/GPS/Properties/Settings.settings b/SourceCode/GPS/Properties/Settings.settings index 9201a735b..40d5108bb 100644 --- a/SourceCode/GPS/Properties/Settings.settings +++ b/SourceCode/GPS/Properties/Settings.settings @@ -74,12 +74,6 @@ True - - en - - - Default - 5 @@ -105,7 +99,7 @@ False - 3 + 2 97, 600 @@ -141,7 +135,7 @@ 27, 151, 160 - 100, 100, 125 + 145, 145, 145 True @@ -198,7 +192,7 @@ 230, 230, 230 - 10, 10, 20 + Black True @@ -234,7 +228,7 @@ False - 2.5 + 1.5 @@ -435,7 +429,7 @@ 0.1 - 2.8 + 3.3 -1 @@ -449,14 +443,11 @@ True - - Default Vehicle - 0.5 - 3 + -3 100 @@ -489,7 +480,7 @@ 2 - 1 + 1.5 1 @@ -776,5 +767,20 @@ 0.8 + + 0.9 + + + True + + + True + + + False + + + 921, 676 + \ No newline at end of file diff --git a/SourceCode/GPS/Resources/BoundarySectionControlOnOff.png b/SourceCode/GPS/Resources/BoundarySectionControlOnOff.png new file mode 100644 index 000000000..bb6229ff1 Binary files /dev/null and b/SourceCode/GPS/Resources/BoundarySectionControlOnOff.png differ diff --git a/SourceCode/GPS/app.config b/SourceCode/GPS/app.config index e23e1d6a0..7790adbdd 100644 --- a/SourceCode/GPS/app.config +++ b/SourceCode/GPS/app.config @@ -1,11 +1,11 @@ - + - - -
- - - + + +
+ + + 30, 30 @@ -79,12 +79,6 @@ True - - en - - - Default - 5 @@ -110,7 +104,7 @@ False - 3 + 2 97, 600 @@ -146,7 +140,7 @@ 27, 151, 160 - 100, 100, 125 + 145, 145, 145 True @@ -203,7 +197,7 @@ 230, 230, 230 - 10, 10, 20 + Black True @@ -239,7 +233,7 @@ False - 2.5 + 1.5 False @@ -437,7 +431,7 @@ 0.1 - 2.8 + 3.3 -1 @@ -451,14 +445,11 @@ True - - Default Vehicle - 0.5 - 3 + -3 100 @@ -491,7 +482,7 @@ 2 - 1 + 1.5 1 @@ -778,6 +769,21 @@ 0.8 + + 0.9 + + + True + + + True + + + False + + + 921, 676 + - - + + \ No newline at end of file diff --git a/SourceCode/GPS/btnImages/BoundaryCenter.png b/SourceCode/GPS/btnImages/BoundaryCenter.png index 6c7954a42..59606c119 100644 Binary files a/SourceCode/GPS/btnImages/BoundaryCenter.png and b/SourceCode/GPS/btnImages/BoundaryCenter.png differ diff --git a/SourceCode/GPS/btnImages/BoundaryLeft.png b/SourceCode/GPS/btnImages/BoundaryLeft.png index 402cbcc72..c781d6990 100644 Binary files a/SourceCode/GPS/btnImages/BoundaryLeft.png and b/SourceCode/GPS/btnImages/BoundaryLeft.png differ diff --git a/SourceCode/GPS/btnImages/BoundaryRecordPivot.png b/SourceCode/GPS/btnImages/BoundaryRecordPivot.png new file mode 100644 index 000000000..ae7d46247 Binary files /dev/null and b/SourceCode/GPS/btnImages/BoundaryRecordPivot.png differ diff --git a/SourceCode/GPS/btnImages/BoundaryRecordTool.png b/SourceCode/GPS/btnImages/BoundaryRecordTool.png new file mode 100644 index 000000000..f7b1a8801 Binary files /dev/null and b/SourceCode/GPS/btnImages/BoundaryRecordTool.png differ diff --git a/SourceCode/GPS/btnImages/BoundaryRight.png b/SourceCode/GPS/btnImages/BoundaryRight.png index d65b6559f..55cf2c27a 100644 Binary files a/SourceCode/GPS/btnImages/BoundaryRight.png and b/SourceCode/GPS/btnImages/BoundaryRight.png differ diff --git a/SourceCode/GPS/btnImages/BoundarySectionControlOnOff.png b/SourceCode/GPS/btnImages/BoundarySectionControlOnOff.png new file mode 100644 index 000000000..67fda5caf Binary files /dev/null and b/SourceCode/GPS/btnImages/BoundarySectionControlOnOff.png differ diff --git a/SourceCode/GPS/btnImages/Config/ConD_DirectionMarker.png b/SourceCode/GPS/btnImages/Config/ConD_DirectionMarker.png index 4c436db18..f7b86a332 100644 Binary files a/SourceCode/GPS/btnImages/Config/ConD_DirectionMarker.png and b/SourceCode/GPS/btnImages/Config/ConD_DirectionMarker.png differ diff --git a/SourceCode/GPS/btnImages/Config/ConD_LineSmooth.png b/SourceCode/GPS/btnImages/Config/ConD_LineSmooth.png new file mode 100644 index 000000000..1945a2b30 Binary files /dev/null and b/SourceCode/GPS/btnImages/Config/ConD_LineSmooth.png differ diff --git a/SourceCode/GPS/btnImages/Config/ConD_LogNMEA.png b/SourceCode/GPS/btnImages/Config/ConD_LogNMEA.png deleted file mode 100644 index c02be3d90..000000000 Binary files a/SourceCode/GPS/btnImages/Config/ConD_LogNMEA.png and /dev/null differ diff --git a/SourceCode/GPS/btnImages/Config/ConD_SectionHighlights.png b/SourceCode/GPS/btnImages/Config/ConD_SectionHighlights.png new file mode 100644 index 000000000..53a42f40c Binary files /dev/null and b/SourceCode/GPS/btnImages/Config/ConD_SectionHighlights.png differ diff --git a/SourceCode/GPS/btnImages/Config/ConS_Alarm.png b/SourceCode/GPS/btnImages/Config/ConS_Alarm.png new file mode 100644 index 000000000..8d6a80ffe Binary files /dev/null and b/SourceCode/GPS/btnImages/Config/ConS_Alarm.png differ diff --git a/SourceCode/GPS/btnImages/FieldStats.png b/SourceCode/GPS/btnImages/FieldStats.png index 559cb47cb..0fffbb57d 100644 Binary files a/SourceCode/GPS/btnImages/FieldStats.png and b/SourceCode/GPS/btnImages/FieldStats.png differ diff --git a/SourceCode/GPS/btnImages/QR/QRAOG.png b/SourceCode/GPS/btnImages/QR/QRAOG.png new file mode 100644 index 000000000..2aa1f8712 Binary files /dev/null and b/SourceCode/GPS/btnImages/QR/QRAOG.png differ diff --git a/SourceCode/GPS/btnImages/QR/QRYouTube.png b/SourceCode/GPS/btnImages/QR/QRYouTube.png new file mode 100644 index 000000000..542dceea6 Binary files /dev/null and b/SourceCode/GPS/btnImages/QR/QRYouTube.png differ diff --git a/SourceCode/GPS/btnImages/Steer/Nerd.png b/SourceCode/GPS/btnImages/Steer/Nerd.png new file mode 100644 index 000000000..f8e3003f3 Binary files /dev/null and b/SourceCode/GPS/btnImages/Steer/Nerd.png differ diff --git a/SourceCode/GPS/btnImages/Steer/ST_NerdAdv.png b/SourceCode/GPS/btnImages/Steer/ST_NerdAdv.png new file mode 100644 index 000000000..7efd364ba Binary files /dev/null and b/SourceCode/GPS/btnImages/Steer/ST_NerdAdv.png differ diff --git a/SourceCode/GPS/btnImages/TramMulti.png b/SourceCode/GPS/btnImages/TramMulti.png new file mode 100644 index 000000000..0d96842bc Binary files /dev/null and b/SourceCode/GPS/btnImages/TramMulti.png differ diff --git a/SourceCode/GPS/btnImages/fileMenu.png b/SourceCode/GPS/btnImages/fileMenu.png index cbacb908b..f37a98a13 100644 Binary files a/SourceCode/GPS/btnImages/fileMenu.png and b/SourceCode/GPS/btnImages/fileMenu.png differ diff --git a/SourceCode/GPS/packages.config b/SourceCode/GPS/packages.config index 7468726ed..6b98a92c3 100644 --- a/SourceCode/GPS/packages.config +++ b/SourceCode/GPS/packages.config @@ -1,5 +1,6 @@  + \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/App.config b/SourceCode/GPS_Out/Source/App.config new file mode 100644 index 000000000..523b3347a --- /dev/null +++ b/SourceCode/GPS_Out/Source/App.config @@ -0,0 +1,66 @@ + + + + +
+ + + + + + + + + + + + Default.rcs + + + 210, 220, 230 + + + 2 + + + 0 + + + 1 + + + 0 + + + False + + + False + + + True + + + False + + + Com1 + + + 57600 + + + False + + + 127.255.255.255 + + + 127.255.255.255 + + + $GP + + + + \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/Classes/SerialSend.cs b/SourceCode/GPS_Out/Source/Classes/SerialSend.cs new file mode 100644 index 000000000..828bac044 --- /dev/null +++ b/SourceCode/GPS_Out/Source/Classes/SerialSend.cs @@ -0,0 +1,150 @@ +using System; +using System.IO.Ports; + +namespace GPS_Out +{ + public class SerialSend + { + private readonly frmStart mf; + private bool cWriteTimeOut = false; + private SerialPort Sport; + private System.Windows.Forms.Timer Timer1 = new System.Windows.Forms.Timer(); + private int WriteErrorCount; + + public SerialSend(frmStart CalledFrom) + { + this.mf = CalledFrom; + Sport = new SerialPort(Properties.Settings.Default.Port, Properties.Settings.Default.Baud); + Sport.WriteTimeout = 500; + Sport.Parity = Parity.None; + Sport.DataBits = 8; + Sport.StopBits = StopBits.One; + Timer1.Interval = 1000; + Timer1.Tick += new EventHandler(CheckConnection); + + if (Properties.Settings.Default.AutoConnect && Properties.Settings.Default.SerialSuccessful) Open(); + } + + public int Baud + { + get { return Sport.BaudRate; } + set + { + if (!Sport.IsOpen && value > 0 && value < 115201) + { + Sport.BaudRate = value; + Properties.Settings.Default.Baud = Sport.BaudRate; + } + } + } + + public string PortNm + { + get { return Sport.PortName; } + set + { + if (!Sport.IsOpen && value != "") + { + Sport.PortName = value; + Properties.Settings.Default.Port = Sport.PortName; + } + } + } + + public void Close() + { + try + { + Timer1.Stop(); + if (Sport.IsOpen) + { + Sport.Close(); + Sport.Dispose(); + } + } + catch (Exception ex) + { + mf.Tls.WriteErrorLog("SerialSend/CloseRCport: " + ex.Message); + } + } + + public bool IsOpen() + { + return Sport.IsOpen; + } + + public bool Open() + { + bool Result = false; + try + { + if (SerialPortExists(Sport.PortName)) + { + if (!Sport.IsOpen) Sport.Open(); + + if (Sport.IsOpen) + { + Sport.DiscardOutBuffer(); + WriteErrorCount = 0; + Timer1.Start(); + Result = true; + } + } + } + catch (Exception ex) + { + mf.Tls.WriteErrorLog("SerialSend/OpenRCport: " + ex.Message); + } + Properties.Settings.Default.SerialSuccessful = Result; + return Result; + } + + public void SendStringData(String data) + { + if (Sport.IsOpen) + { + try + { + Sport.WriteLine(data + "\r\n"); + cWriteTimeOut = false; + } + catch (Exception ex) + { + if (ex is TimeoutException) cWriteTimeOut = true; + mf.Tls.WriteErrorLog("SerialSend/SendStringData: " + ex.Message); + } + } + } + + private void CheckConnection(object myObject, EventArgs myEventArgs) + { + if (cWriteTimeOut) + { + if (++WriteErrorCount > 2) + { + mf.Tls.ShowHelp(Sport.PortName + " is not sending correctly. It will be closed.", "Serial Port", 5000, true, false, true); + Close(); + mf.SetPortButtons1(); + } + } + else + { + WriteErrorCount = 0; + } + } + + private bool SerialPortExists(string Name) + { + bool Result = false; + foreach (string s in SerialPort.GetPortNames()) + { + if (s == Name) + { + Result = true; + break; + } + } + return Result; + } + } +} \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/Classes/UDPcomm.cs b/SourceCode/GPS_Out/Source/Classes/UDPcomm.cs new file mode 100644 index 000000000..488c9395e --- /dev/null +++ b/SourceCode/GPS_Out/Source/Classes/UDPcomm.cs @@ -0,0 +1,244 @@ +using System; +using System.Net; +using System.Net.Sockets; + +namespace GPS_Out +{ + public class UDPComm + { + private readonly frmStart mf; + private byte[] buffer = new byte[1024]; + private string cConnectionName; + private bool cIsUDPSendConnected; + private string cLog; + private IPAddress cNetworkEP; + private int cReceivePort; // local ports must be unique for each app on same pc and each class instance + private int cSendFromPort; + private int cSendToPort; + private IPAddress cSourceIP; + private string cSubNet; + private HandleDataDelegateObj HandleDataDelegate = null; + private Socket recvSocket; + private Socket sendSocket; + + public UDPComm(frmStart CallingForm, int ReceivePort, int SendToPort, int SendFromPort, + string ConnectionName, string SourceIPaddress, string DestinationEndPoint = "") + { + mf = CallingForm; + cReceivePort = ReceivePort; + cSendToPort = SendToPort; + cSendFromPort = SendFromPort; + cConnectionName = ConnectionName; + SetEP(DestinationEndPoint); + SetSourceIP(SourceIPaddress); + } + + // Status delegate + private delegate void HandleDataDelegateObj(int port, byte[] msg); + + public bool IsUDPSendConnected { get => cIsUDPSendConnected; set => cIsUDPSendConnected = value; } + + public string NetworkEP + { + get { return cNetworkEP.ToString(); } + set + { + string[] data; + if (IPAddress.TryParse(value, out IPAddress IP)) + { + data = value.Split('.'); + cNetworkEP = IPAddress.Parse(data[0] + "." + data[1] + "." + data[2] + ".255"); + Properties.Settings.Default["EndPoint" + cConnectionName] = cNetworkEP.ToString(); + cSubNet = data[0].ToString() + "." + data[1].ToString() + "." + data[2].ToString(); + } + } + } + + //sends byte array + public void SendUDPMessage(byte[] byteData) + { + if (IsUDPSendConnected) + { + try + { + int PGN = byteData[0] | byteData[1] << 8; + AddToLog(" > " + PGN.ToString()); + + if (byteData.Length != 0) + { + // network + IPEndPoint EndPt = new IPEndPoint(cNetworkEP, cSendToPort); + sendSocket.BeginSendTo(byteData, 0, byteData.Length, SocketFlags.None, EndPt, new AsyncCallback(SendData), null); + } + } + catch (Exception ex) + { + mf.Tls.WriteErrorLog("UDPcomm/SendUDPMessage " + ex.Message); + } + } + } + + public void StartUDPServer() + { + try + { + // initialize the delegate which updates the message received + HandleDataDelegate = HandleData; + + // initialize the receive socket + recvSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); + recvSocket.Bind(new IPEndPoint(cSourceIP, cReceivePort)); + + // initialize the send socket + sendSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); + + // Initialise the IPEndPoint for the server to send on port + IPEndPoint server = new IPEndPoint(IPAddress.Any, cSendFromPort); + sendSocket.Bind(server); + + // Initialise the IPEndPoint for the client - async listner client only! + EndPoint client = new IPEndPoint(IPAddress.Any, 0); + + // Start listening for incoming data + recvSocket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref client, new AsyncCallback(ReceiveData), recvSocket); + IsUDPSendConnected = true; + } + catch (Exception e) + { + mf.Tls.WriteErrorLog("UDPcomm/StartUDPServer: \n" + e.Message); + } + } + + private void AddToLog(string NewData) + { + cLog += DateTime.Now.Second.ToString() + " " + NewData + Environment.NewLine; + if (cLog.Length > 100000) + { + cLog = cLog.Substring(cLog.Length - 98000, 98000); + } + cLog = cLog.Replace("\0", string.Empty); + } + + private void HandleData(int Port, byte[] Data) + { + try + { + if (Data.Length > 1) + { + int PGN = Data[1] << 8 | Data[0]; + AddToLog("< " + PGN.ToString()); + + switch (PGN) + { + case 33152: // AOG, 0x8180 + int SubPGN = Data[3] << 8 | Data[2]; + switch (SubPGN) + { + case 54908: // 0xD67C, AGIO NEMA translation + mf.AGIOdata.ParseByteData(Data); + break; + + case 25727: // 0x647F, AOG roll corrected lat,lon + mf.AOGdata.ParseByteData(Data); + break; + } + break; + } + } + } + catch (Exception ex) + { + mf.Tls.WriteErrorLog("UDPcomm/HandleData " + ex.Message); + } + } + + private void ReceiveData(IAsyncResult asyncResult) + { + try + { + // Initialise the IPEndPoint for the client + EndPoint epSender = new IPEndPoint(IPAddress.Any, 0); + + // Receive all data + int msgLen = recvSocket.EndReceiveFrom(asyncResult, ref epSender); + + byte[] localMsg = new byte[msgLen]; + Array.Copy(buffer, localMsg, msgLen); + + // Listen for more connections again... + recvSocket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epSender, new AsyncCallback(ReceiveData), epSender); + + int port = ((IPEndPoint)epSender).Port; + // Update status through a delegate + mf.Invoke(HandleDataDelegate, new object[] { port, localMsg }); + } + catch (ObjectDisposedException) + { + // do nothing + } + catch (Exception ex) + { + //mf.Tls.ShowHelp("ReceiveData Error \n" + e.Message, "Comm", 3000, true); + mf.Tls.WriteErrorLog("UDPcomm/ReceiveData " + ex.Message); + } + } + + private void SendData(IAsyncResult asyncResult) + { + try + { + sendSocket.EndSend(asyncResult); + } + catch (Exception ex) + { + mf.Tls.WriteErrorLog(" UDP Send Data" + ex.ToString()); + } + } + + private void SetEP(string DestinationEndPoint) + { + try + { + if (IPAddress.TryParse(DestinationEndPoint, out _)) + { + NetworkEP = DestinationEndPoint; + } + else + { + string EP = mf.Tls.LoadProperty("EndPoint_" + cConnectionName); + if (IPAddress.TryParse(EP, out _)) + { + NetworkEP = EP; + } + else + { + NetworkEP = "192.168.1.255"; + } + } + } + catch (Exception ex) + { + mf.Tls.WriteErrorLog("UDPcomm/SetEP " + ex.Message); + } + } + + private void SetSourceIP(string Source) + { + try + { + if (IPAddress.TryParse(Source, out IPAddress tmp)) + { + cSourceIP = tmp; + } + else + { + cSourceIP = IPAddress.Any; + } + } + catch (Exception ex) + { + mf.Tls.WriteErrorLog("UDPcomm/SetSourceEP " + ex.Message); + } + } + } +} \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/Classes/clsTools.cs b/SourceCode/GPS_Out/Source/Classes/clsTools.cs new file mode 100644 index 000000000..baaeca030 --- /dev/null +++ b/SourceCode/GPS_Out/Source/Classes/clsTools.cs @@ -0,0 +1,680 @@ +using RateController; +using System; +using System.Collections; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Printing; +using System.IO; +using System.Linq; +using System.Media; +using System.Runtime.InteropServices; +using System.Security.Cryptography; +using System.Windows.Forms; +using System.Xml.Linq; +using static System.Windows.Forms.VisualStyles.VisualStyleElement; + +namespace GPS_Out +{ + public class clsTools + { + #region Form Dragging API Support + + // https://www.c-sharpcorner.com/article/transparent-borderless-forms-in-C-Sharp/ + // add to form: + // private void Form1_MouseDown(object sender, MouseEventArgs e) + // { + // if (e.Button == MouseButtons.Left) Tls.DragForm(this); + // } + + //ReleaseCapture releases a mouse capture + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] + public static extern bool ReleaseCapture(); + + //The SendMessage function sends a message to a window or windows. + [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)] + private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam); + + #endregion Form Dragging API Support + + private static Hashtable HTapp; + private static Hashtable HTfiles; + private string cAppName = "GPS_Out"; + private string cAppVersion = "1.2.1"; + private string cPropertiesApp; + private string cPropertiesFile; + private string cSettingsDir; + private string cVersionDate = "04-Dec-2024"; + private frmStart mf; + private int SentenceCount = 0; + + public clsTools(frmStart CallingForm) + { + mf = CallingForm; + CheckFolders(); + OpenFile(Properties.Settings.Default.FileName); + } + + public string PropertiesFile + { + get + { + return cPropertiesFile; + } + set + { + if (File.Exists(value)) + { + OpenFile(value); + } + } + } + + public string AppVersion() + { + return cAppVersion; + } + + public byte BitClear(byte b, int pos) + { + byte msk = (byte)(1 << pos); + msk = (byte)~msk; + return (byte)(b & msk); + } + + public bool BitRead(byte b, int pos) + { + return (b >> pos & 1) != 0; + } + + public byte BitSet(byte b, int pos) + { + return (byte)(b | 1 << pos); + } + + public byte BuildModSenID(byte ArdID, byte SenID) + { + return (byte)(ArdID << 4 | SenID & 0b00001111); + } + + public byte CRC(byte[] Data, int Length, byte Start = 0) + { + byte Result = 0; + if (Length <= Data.Length) + { + int CK = 0; + for (int i = Start; i < Length; i++) + { + CK += Data[i]; + } + Result = (byte)CK; + } + return Result; + } + + public byte CRC(string[] Data, int Length, byte Start = 0) + { + byte Result = 0; + if (Length <= Data.Length) + { + byte tmp; + byte[] BD = new byte[Length]; + for (int i = 0; i < Length; i++) + { + if (byte.TryParse(Data[i], out tmp)) BD[i] = tmp; + } + int CK = 0; + for (int i = Start; i < Length; i++) + { + CK += BD[i]; + } + Result = (byte)CK; + } + return Result; + } + + public void DragForm(Form Frm) + { + ReleaseCapture(); + SendMessage(Frm.Handle, 0xa1, 0x2, 0); + } + + public void DrawGroupBox(GroupBox box, Graphics g, Color BackColor, Color textColor, Color borderColor) + { + // useage: + // point the Groupbox paint event to this sub: + //private void GroupBoxPaint(object sender, PaintEventArgs e) + //{ + // GroupBox box = sender as GroupBox; + // mf.Tls.DrawGroupBox(box, e.Graphics, this.BackColor, Color.Black, Color.Blue); + //} + + if (box != null) + { + Brush textBrush = new SolidBrush(textColor); + Brush borderBrush = new SolidBrush(borderColor); + Pen borderPen = new Pen(borderBrush); + SizeF strSize = g.MeasureString(box.Text, box.Font); + Rectangle rect = new Rectangle(box.ClientRectangle.X, + box.ClientRectangle.Y + (int)(strSize.Height / 2), + box.ClientRectangle.Width - 1, + box.ClientRectangle.Height - (int)(strSize.Height / 2) - 1); + + // Clear text and border + g.Clear(BackColor); + + // Draw text + g.DrawString(box.Text, box.Font, textBrush, box.Padding.Left, 0); + + // Drawing Border + //Left + g.DrawLine(borderPen, rect.Location, new Point(rect.X, rect.Y + rect.Height)); + //Right + g.DrawLine(borderPen, new Point(rect.X + rect.Width, rect.Y), new Point(rect.X + rect.Width, rect.Y + rect.Height)); + //Bottom + g.DrawLine(borderPen, new Point(rect.X, rect.Y + rect.Height), new Point(rect.X + rect.Width, rect.Y + rect.Height)); + //Top1 + g.DrawLine(borderPen, new Point(rect.X, rect.Y), new Point(rect.X + box.Padding.Left, rect.Y)); + //Top2 + g.DrawLine(borderPen, new Point(rect.X + box.Padding.Left + (int)strSize.Width, rect.Y), new Point(rect.X + rect.Width, rect.Y)); + } + } + + public string FilesDir() + { + return Properties.Settings.Default.FilesDir; + } + + public bool GoodCRC(byte[] Data, byte Start = 0) + { + bool Result = false; + int Length = Data.Length; + byte cr = CRC(Data, Length - 1, Start); + Result = cr == Data[Length - 1]; + return Result; + } + + public bool GoodCRC(string[] Data, byte Start = 0) + { + bool Result = false; + byte tmp; + int Length = Data.Length; + byte[] BD = new byte[Length]; + for (int i = 0; i < Length; i++) + { + if (byte.TryParse(Data[i], out tmp)) BD[i] = tmp; + } + byte cr = CRC(BD, Length - 1, Start); // exclude existing crc + Result = cr == BD[Length - 1]; + return Result; + } + + public bool IsOnScreen(Form form, bool PutOnScreen = false) + { + // Create rectangle + Rectangle formRectangle = new Rectangle(form.Left, form.Top, form.Width, form.Height); + + // Test + bool IsOn = Screen.AllScreens.Any(s => s.WorkingArea.IntersectsWith(formRectangle)); + + if (!IsOn & PutOnScreen) + { + form.Top = 0; + form.Left = 0; + } + + return IsOn; + } + + public string LoadAppProperty(string Key) + { + string Prop = ""; + if (HTapp.Contains(Key)) Prop = HTapp[Key].ToString(); + return Prop; + } + + public void LoadFormData(Form Frm) + { + int Leftloc = 0; + int.TryParse(LoadAppProperty(Frm.Name + ".Left"), out Leftloc); + Frm.Left = Leftloc; + + int Toploc = 0; + int.TryParse(LoadAppProperty(Frm.Name + ".Top"), out Toploc); + Frm.Top = Toploc; + + IsOnScreen(Frm, true); + } + + public string LoadProperty(string Key) + { + string Prop = ""; + if (HTfiles.Contains(Key)) Prop = HTfiles[Key].ToString(); + return Prop; + } + + public double NoisyData(double CurrentData, double ErrorPercent = 5.0) + { + try + { + // error percent is above and below current data + var Rand = new Random(); + int Max = (int)(CurrentData * ErrorPercent * 2.0); + double Spd = CurrentData * (1.0 - ErrorPercent / 100.0) + Rand.Next(Max) / 100.0; + return Spd; + } + catch (Exception) + { + return CurrentData; + } + } + + public void OpenFile(string NewFile) + { + try + { + string PathName = Path.GetDirectoryName(NewFile); // only works if file name present + string FileName = Path.GetFileName(NewFile); + if (FileName == "") PathName = NewFile; // no file name present, fix path name + if (Directory.Exists(PathName)) Properties.Settings.Default.FilesDir = PathName; // set the new files dir + + cPropertiesFile = Properties.Settings.Default.FilesDir + "\\" + FileName; + if (!File.Exists(cPropertiesFile)) File.Create(cPropertiesFile).Dispose(); + LoadFilesData(cPropertiesFile); + Properties.Settings.Default.FileName = FileName; + Properties.Settings.Default.Save(); + + cPropertiesApp = Properties.Settings.Default.FilesDir + "\\AppData.txt"; + if (!File.Exists(cPropertiesApp)) File.Create(cPropertiesApp).Dispose(); + LoadAppData(cPropertiesApp); + } + catch (Exception ex) + { + WriteErrorLog("Tools: OpenFile: " + ex.Message); + } + } + + public byte ParseModID(byte ID) + { + // top 4 bits + return (byte)(ID >> 4); + } + + public byte ParseSenID(byte ID) + { + // bottom 4 bits + return (byte)(ID & 0b00001111); + } + + public bool PrevInstance() + { + string PrsName = Process.GetCurrentProcess().ProcessName; + Process[] All = Process.GetProcessesByName(PrsName); //Get the name of all processes having the same name as this process name + if (All.Length > 1) + { + return true; + } + else + { + return false; + } + } + + public byte[] ReadByteFile(string DataName) + { + string FileName = cSettingsDir + "\\" + DataName; + + if (File.Exists(FileName)) + { + return File.ReadAllBytes(FileName); + } + else + { + throw new FileNotFoundException("The specified file does not exist.", FileName); + } + } + + public string ReadTextFile(string FileName) + { + string Result = ""; + string Line; + FileName = cSettingsDir + "\\" + FileName; + try + { + StreamReader sr = new StreamReader(FileName); + Line = sr.ReadLine(); + while (Line != null) + { + Result += Line + Environment.NewLine; + Line = sr.ReadLine(); + } + sr.Close(); + } + catch (Exception) + { + //WriteErrorLog("ReadTextFile: " + ex.Message); + } + return Result; + } + + public void SaveAppProperty(string Key, string Value) + { + bool Changed = false; + if (HTapp.Contains(Key)) + { + if (!HTapp[Key].ToString().Equals(Value)) + { + HTapp[Key] = Value; + Changed = true; + } + } + else + { + HTapp.Add(Key, Value); + Changed = true; + } + if (Changed) SaveAppProperties(); + } + + public void SaveFile(string NewFile) + { + try + { + string PathName = Path.GetDirectoryName(NewFile); // only works if file name present + string FileName = Path.GetFileName(NewFile); + if (FileName == "") PathName = NewFile; // no file name present, fix path name + if (Directory.Exists(PathName)) Properties.Settings.Default.FilesDir = PathName; // set the new files dir + + cPropertiesFile = Properties.Settings.Default.FilesDir + "\\" + FileName; + if (!File.Exists(cPropertiesFile)) File.Create(cPropertiesFile).Dispose(); + + SaveProperties(); + Properties.Settings.Default.FileName = FileName; + Properties.Settings.Default.Save(); + } + catch (Exception ex) + { + WriteErrorLog("clsTools: SaveFile: " + ex.Message); + } + } + + public void SaveFormData(Form Frm) + { + try + { + SaveAppProperty(Frm.Name + ".Left", Frm.Left.ToString()); + SaveAppProperty(Frm.Name + ".Top", Frm.Top.ToString()); + } + catch (Exception) + { + } + } + + public void SaveProperty(string Key, string Value) + { + bool Changed = false; + if (HTfiles.Contains(Key)) + { + if (!HTfiles[Key].ToString().Equals(Value)) + { + HTfiles[Key] = Value; + Changed = true; + } + } + else + { + HTfiles.Add(Key, Value); + Changed = true; + } + if (Changed) SaveProperties(); + } + + public string SettingsDir() + { + return cSettingsDir; + } + + public void ShowHelp(string Message, string Title = "Help", + int timeInMsec = 30000, bool LogError = false, bool Modal = false, bool PlayErrorSound = false) + { + var Hlp = new frmHelp(mf, Message, Title, timeInMsec); + if (Modal) + { + Hlp.ShowDialog(); + } + else + { + Hlp.Show(); + } + + if (LogError) WriteErrorLog(Message); + if (PlayErrorSound) SystemSounds.Exclamation.Play(); + } + + public void StartWifi() + { + string SSID = LoadProperty("WifiSSID"); + string Password = LoadProperty("WifiPassword"); + + string Start = "netsh wlan set hostednetwork mode=allow ssid=" + SSID + " key=" + Password + "\n"; + Start += "netsh wlan stop hostednetwork\n"; + Start += "netsh wlan start hostednetwork\n"; + + string FileName = SettingsDir() + "\\StartWifi.bat"; + File.WriteAllText(FileName, Start); + + var psi = new ProcessStartInfo(); + psi.CreateNoWindow = true; + psi.WindowStyle = ProcessWindowStyle.Hidden; + psi.FileName = FileName; + psi.Verb = "runas"; + + var process = new Process(); + process.StartInfo = psi; + process.Start(); + process.WaitForExit(); + } + + public void StopWifi() + { + string Stop = "netsh wlan stop hostednetwork\n"; + + string FileName = SettingsDir() + "\\StopWifi.bat"; + File.WriteAllText(FileName, Stop); + + var psi = new ProcessStartInfo(); + psi.CreateNoWindow = true; + psi.FileName = FileName; + psi.Verb = "runas"; + + var process = new Process(); + process.StartInfo = psi; + process.Start(); + process.WaitForExit(); + } + + public int StringToInt(string S) + { + if (decimal.TryParse(S, out decimal tmp)) + { + return (int)tmp; + } + return 0; + } + + public string VersionDate() + { + return cVersionDate; + } + + public void WriteActivityLog(string Message, bool Newline = false, string DataName = "Activity Log.txt") + { + string Line = ""; + try + { + string FileName = cSettingsDir + "\\" + DataName; + TrimFile(FileName); + + if (Newline) Line = "\r\n"; + + File.AppendAllText(FileName, Line + DateTime.Now.ToString("MMM-dd hh:mm:ss") + " - " + Message + "\r\n"); + } + catch (Exception ex) + { + WriteErrorLog("Tools: WriteActivityLog: " + ex.Message); + } + } + + public void WriteByteFile(byte[] Data, string DataName) + { + string FileName = cSettingsDir + "\\" + DataName; + if (SentenceCount < 20) + { + SentenceCount++; + using (var stream = new FileStream(FileName, FileMode.Append)) + { + stream.Write(Data, 0, Data.Length); + } + } + } + + public void WriteErrorLog(string strErrorText) + { + try + { + string FileName = cSettingsDir + "\\Error Log.txt"; + TrimFile(FileName); + File.AppendAllText(FileName, DateTime.Now.ToString("MMM-dd hh:mm:ss") + " - " + strErrorText + "\r\n\r\n"); + } + catch (Exception) + { + } + } + + private void CheckFolders() + { + try + { + // SettingsDir + cSettingsDir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\" + cAppName; + + if (!Directory.Exists(cSettingsDir)) Directory.CreateDirectory(cSettingsDir); + //if (!File.Exists(cSettingsDir + "\\Example.rcs")) File.WriteAllBytes(cSettingsDir + "\\Example.rcs", Properties.Resources.Example); + + string FilesDir = Properties.Settings.Default.FilesDir; + if (!Directory.Exists(FilesDir)) Properties.Settings.Default.FilesDir = cSettingsDir; + + // erase old debug file + string FileName = cSettingsDir + "\\" + "AGIOdata.txt"; + if (File.Exists(FileName)) File.Delete(FileName); + } + catch (Exception) + { + } + } + + private void LoadAppData(string path) + { + // property: key=value ex: "LastFile=Main.mdb" + try + { + HTapp = new Hashtable(); + string[] lines = File.ReadAllLines(path); + foreach (string line in lines) + { + if (line.Contains("=") && !string.IsNullOrEmpty(line.Split('=')[0]) && !string.IsNullOrEmpty(line.Split('=')[1])) + { + string[] splitText = line.Split('='); + HTapp.Add(splitText[0], splitText[1]); + } + } + } + catch (Exception ex) + { + WriteErrorLog("Tools: LoadProperties: " + ex.Message); + } + } + + private void LoadFilesData(string path) + { + // property: key=value ex: "LastFile=Main.mdb" + try + { + HTfiles = new Hashtable(); + string[] lines = File.ReadAllLines(path); + foreach (string line in lines) + { + if (line.Contains("=") && !string.IsNullOrEmpty(line.Split('=')[0]) && !string.IsNullOrEmpty(line.Split('=')[1])) + { + string[] splitText = line.Split('='); + HTfiles.Add(splitText[0], splitText[1]); + } + } + } + catch (Exception ex) + { + WriteErrorLog("Tools: LoadProperties: " + ex.Message); + } + } + + private void SaveAppProperties() + { + try + { + string[] NewLines = new string[HTapp.Count]; + int i = -1; + foreach (DictionaryEntry Pair in HTapp) + { + i++; + NewLines[i] = Pair.Key.ToString() + "=" + Pair.Value.ToString(); + } + if (i > -1) File.WriteAllLines(cPropertiesApp, NewLines); + } + catch (Exception) + { + } + } + + private void SaveProperties() + { + try + { + string[] NewLines = new string[HTfiles.Count]; + int i = -1; + foreach (DictionaryEntry Pair in HTfiles) + { + i++; + NewLines[i] = Pair.Key.ToString() + "=" + Pair.Value.ToString(); + } + if (i > -1) File.WriteAllLines(cPropertiesFile, NewLines); + } + catch (Exception) + { + } + } + + private void TrimFile(string FileName, int MaxSize = 100000) + { + try + { + if (File.Exists(FileName)) + { + long FileSize = new FileInfo(FileName).Length; + if (FileSize > MaxSize) + { + // trim file + string[] Lines = File.ReadAllLines(FileName); + int Len = Lines.Length; + int St = (int)(Len * .1); // skip first 10% of old lines + string[] NewLines = new string[Len - St]; + Array.Copy(Lines, St, NewLines, 0, Len - St); + File.Delete(FileName); + File.AppendAllLines(FileName, NewLines); + } + } + } + catch (Exception) + { + } + } + } +} \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/Form1.Designer.cs b/SourceCode/GPS_Out/Source/Form1.Designer.cs new file mode 100644 index 000000000..c8525c737 --- /dev/null +++ b/SourceCode/GPS_Out/Source/Form1.Designer.cs @@ -0,0 +1,946 @@ +namespace GPS_Out +{ + partial class frmStart + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmStart)); + this.tmrGGA = new System.Windows.Forms.Timer(this.components); + this.tmrVTG = new System.Windows.Forms.Timer(this.components); + this.tmrMinimize = new System.Windows.Forms.Timer(this.components); + this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); + this.tmrRMC = new System.Windows.Forms.Timer(this.components); + this.tmrDisplay = new System.Windows.Forms.Timer(this.components); + this.tmrZDA = new System.Windows.Forms.Timer(this.components); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.lbSim = new System.Windows.Forms.Label(); + this.btnZDA = new System.Windows.Forms.Button(); + this.tbZDA = new System.Windows.Forms.TextBox(); + this.btnRMC = new System.Windows.Forms.Button(); + this.tbRMC = new System.Windows.Forms.TextBox(); + this.btnVTG = new System.Windows.Forms.Button(); + this.btnGGA = new System.Windows.Forms.Button(); + this.tbVTG = new System.Windows.Forms.TextBox(); + this.tbGGA = new System.Windows.Forms.TextBox(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.PortIndicator1 = new System.Windows.Forms.Label(); + this.btnRescan = new System.Windows.Forms.Button(); + this.lbPort = new System.Windows.Forms.Label(); + this.btnConnect1 = new System.Windows.Forms.Button(); + this.cboBaud1 = new System.Windows.Forms.ComboBox(); + this.cboPort1 = new System.Windows.Forms.ComboBox(); + this.lbBaud = new System.Windows.Forms.Label(); + this.lbAge = new System.Windows.Forms.Label(); + this.lbElev = new System.Windows.Forms.Label(); + this.lbSats = new System.Windows.Forms.Label(); + this.lbHDOP = new System.Windows.Forms.Label(); + this.lbQuality = new System.Windows.Forms.Label(); + this.lbSpeed = new System.Windows.Forms.Label(); + this.lbLat = new System.Windows.Forms.Label(); + this.lbLon = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.rbGP = new System.Windows.Forms.RadioButton(); + this.rbGN = new System.Windows.Forms.RadioButton(); + this.ckGSA = new System.Windows.Forms.CheckBox(); + this.ckRoll = new System.Windows.Forms.CheckBox(); + this.ckAutoConnect = new System.Windows.Forms.CheckBox(); + this.ckAutoHide = new System.Windows.Forms.CheckBox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.label19 = new System.Windows.Forms.Label(); + this.cboZDA = new System.Windows.Forms.ComboBox(); + this.label20 = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.cboRMC = new System.Windows.Forms.ComboBox(); + this.label18 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.cboVTG = new System.Windows.Forms.ComboBox(); + this.label11 = new System.Windows.Forms.Label(); + this.cboGGA = new System.Windows.Forms.ComboBox(); + this.label10 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.tmrGSA = new System.Windows.Forms.Timer(this.components); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // tmrGGA + // + this.tmrGGA.Interval = 5000; + this.tmrGGA.Tick += new System.EventHandler(this.tmrGGA_Tick); + // + // tmrVTG + // + this.tmrVTG.Tick += new System.EventHandler(this.tmrVTG_Tick); + // + // tmrMinimize + // + this.tmrMinimize.Enabled = true; + this.tmrMinimize.Interval = 120000; + this.tmrMinimize.Tick += new System.EventHandler(this.tmrMinimize_Tick); + // + // backgroundWorker1 + // + this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork); + this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted); + // + // tmrRMC + // + this.tmrRMC.Tick += new System.EventHandler(this.tmrRMC_Tick); + // + // tmrDisplay + // + this.tmrDisplay.Enabled = true; + this.tmrDisplay.Interval = 500; + this.tmrDisplay.Tick += new System.EventHandler(this.tmrDisplay_Tick); + // + // tmrZDA + // + this.tmrZDA.Tick += new System.EventHandler(this.tmrZDA_Tick); + // + // tabControl1 + // + this.tabControl1.Appearance = System.Windows.Forms.TabAppearance.FlatButtons; + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl1.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tabControl1.ItemSize = new System.Drawing.Size(200, 40); + this.tabControl1.Location = new System.Drawing.Point(0, 0); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(626, 536); + this.tabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed; + this.tabControl1.TabIndex = 309; + // + // tabPage1 + // + this.tabPage1.BackColor = System.Drawing.Color.Transparent; + this.tabPage1.Controls.Add(this.lbAge); + this.tabPage1.Controls.Add(this.lbElev); + this.tabPage1.Controls.Add(this.lbSats); + this.tabPage1.Controls.Add(this.lbHDOP); + this.tabPage1.Controls.Add(this.lbSim); + this.tabPage1.Controls.Add(this.btnZDA); + this.tabPage1.Controls.Add(this.tbZDA); + this.tabPage1.Controls.Add(this.btnRMC); + this.tabPage1.Controls.Add(this.tbRMC); + this.tabPage1.Controls.Add(this.btnVTG); + this.tabPage1.Controls.Add(this.btnGGA); + this.tabPage1.Controls.Add(this.tbVTG); + this.tabPage1.Controls.Add(this.tbGGA); + this.tabPage1.Controls.Add(this.groupBox1); + this.tabPage1.Controls.Add(this.lbQuality); + this.tabPage1.Controls.Add(this.lbSpeed); + this.tabPage1.Controls.Add(this.lbLat); + this.tabPage1.Controls.Add(this.lbLon); + this.tabPage1.Controls.Add(this.label8); + this.tabPage1.Controls.Add(this.label7); + this.tabPage1.Controls.Add(this.label6); + this.tabPage1.Controls.Add(this.label5); + this.tabPage1.Controls.Add(this.label4); + this.tabPage1.Controls.Add(this.label3); + this.tabPage1.Controls.Add(this.label2); + this.tabPage1.Controls.Add(this.label1); + this.tabPage1.Location = new System.Drawing.Point(4, 44); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(618, 488); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Main"; + // + // lbSim + // + this.lbSim.AutoSize = true; + this.lbSim.BackColor = System.Drawing.Color.Transparent; + this.lbSim.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbSim.Location = new System.Drawing.Point(247, 218); + this.lbSim.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.lbSim.Name = "lbSim"; + this.lbSim.Size = new System.Drawing.Size(102, 24); + this.lbSim.TabIndex = 317; + this.lbSim.Text = "Simulated"; + // + // btnZDA + // + this.btnZDA.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnZDA.Location = new System.Drawing.Point(6, 438); + this.btnZDA.Name = "btnZDA"; + this.btnZDA.Size = new System.Drawing.Size(75, 33); + this.btnZDA.TabIndex = 316; + this.btnZDA.Text = "ZDA"; + this.btnZDA.UseVisualStyleBackColor = true; + this.btnZDA.Click += new System.EventHandler(this.btnZDA_Click); + // + // tbZDA + // + this.tbZDA.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbZDA.Location = new System.Drawing.Point(93, 428); + this.tbZDA.Multiline = true; + this.tbZDA.Name = "tbZDA"; + this.tbZDA.ReadOnly = true; + this.tbZDA.Size = new System.Drawing.Size(512, 52); + this.tbZDA.TabIndex = 315; + // + // btnRMC + // + this.btnRMC.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnRMC.Location = new System.Drawing.Point(6, 380); + this.btnRMC.Name = "btnRMC"; + this.btnRMC.Size = new System.Drawing.Size(75, 33); + this.btnRMC.TabIndex = 314; + this.btnRMC.Text = "RMC"; + this.btnRMC.UseVisualStyleBackColor = true; + this.btnRMC.Click += new System.EventHandler(this.btnRMC_Click); + // + // tbRMC + // + this.tbRMC.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbRMC.Location = new System.Drawing.Point(93, 370); + this.tbRMC.Multiline = true; + this.tbRMC.Name = "tbRMC"; + this.tbRMC.ReadOnly = true; + this.tbRMC.Size = new System.Drawing.Size(512, 52); + this.tbRMC.TabIndex = 313; + // + // btnVTG + // + this.btnVTG.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnVTG.Location = new System.Drawing.Point(6, 322); + this.btnVTG.Name = "btnVTG"; + this.btnVTG.Size = new System.Drawing.Size(75, 33); + this.btnVTG.TabIndex = 312; + this.btnVTG.Text = "VTG"; + this.btnVTG.UseVisualStyleBackColor = true; + this.btnVTG.Click += new System.EventHandler(this.btnVTG_Click); + // + // btnGGA + // + this.btnGGA.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnGGA.Location = new System.Drawing.Point(6, 264); + this.btnGGA.Name = "btnGGA"; + this.btnGGA.Size = new System.Drawing.Size(75, 33); + this.btnGGA.TabIndex = 311; + this.btnGGA.Text = "GGA"; + this.btnGGA.UseVisualStyleBackColor = true; + this.btnGGA.Click += new System.EventHandler(this.btnGGA_Click); + // + // tbVTG + // + this.tbVTG.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbVTG.Location = new System.Drawing.Point(93, 312); + this.tbVTG.Multiline = true; + this.tbVTG.Name = "tbVTG"; + this.tbVTG.ReadOnly = true; + this.tbVTG.Size = new System.Drawing.Size(512, 52); + this.tbVTG.TabIndex = 310; + // + // tbGGA + // + this.tbGGA.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbGGA.Location = new System.Drawing.Point(93, 254); + this.tbGGA.Multiline = true; + this.tbGGA.Name = "tbGGA"; + this.tbGGA.ReadOnly = true; + this.tbGGA.Size = new System.Drawing.Size(512, 52); + this.tbGGA.TabIndex = 309; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.PortIndicator1); + this.groupBox1.Controls.Add(this.btnRescan); + this.groupBox1.Controls.Add(this.lbPort); + this.groupBox1.Controls.Add(this.btnConnect1); + this.groupBox1.Controls.Add(this.cboBaud1); + this.groupBox1.Controls.Add(this.cboPort1); + this.groupBox1.Controls.Add(this.lbBaud); + this.groupBox1.Location = new System.Drawing.Point(8, 13); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(597, 106); + this.groupBox1.TabIndex = 169; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Serial Port"; + this.groupBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.groupBox1_Paint); + // + // PortIndicator1 + // + this.PortIndicator1.BackColor = System.Drawing.SystemColors.Control; + this.PortIndicator1.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.PortIndicator1.Image = global::GPS_Out.Properties.Resources.Off; + this.PortIndicator1.Location = new System.Drawing.Point(453, 54); + this.PortIndicator1.Name = "PortIndicator1"; + this.PortIndicator1.Size = new System.Drawing.Size(41, 37); + this.PortIndicator1.TabIndex = 129; + this.PortIndicator1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btnRescan + // + this.btnRescan.BackColor = System.Drawing.Color.Transparent; + this.btnRescan.FlatAppearance.BorderSize = 0; + this.btnRescan.FlatAppearance.MouseDownBackColor = System.Drawing.Color.LightGreen; + this.btnRescan.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnRescan.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnRescan.Image = global::GPS_Out.Properties.Resources.ScanPorts; + this.btnRescan.Location = new System.Drawing.Point(508, 24); + this.btnRescan.Name = "btnRescan"; + this.btnRescan.Size = new System.Drawing.Size(72, 72); + this.btnRescan.TabIndex = 151; + this.btnRescan.TextAlign = System.Drawing.ContentAlignment.TopLeft; + this.btnRescan.UseVisualStyleBackColor = false; + this.btnRescan.Click += new System.EventHandler(this.btnRescan_Click); + // + // lbPort + // + this.lbPort.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbPort.Location = new System.Drawing.Point(177, 27); + this.lbPort.Name = "lbPort"; + this.lbPort.Size = new System.Drawing.Size(127, 23); + this.lbPort.TabIndex = 126; + this.lbPort.Text = "Port"; + this.lbPort.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // btnConnect1 + // + this.btnConnect1.BackColor = System.Drawing.SystemColors.ControlLight; + this.btnConnect1.FlatStyle = System.Windows.Forms.FlatStyle.System; + this.btnConnect1.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnConnect1.Location = new System.Drawing.Point(16, 54); + this.btnConnect1.Name = "btnConnect1"; + this.btnConnect1.Size = new System.Drawing.Size(145, 37); + this.btnConnect1.TabIndex = 128; + this.btnConnect1.Text = "Connect"; + this.btnConnect1.UseVisualStyleBackColor = false; + this.btnConnect1.Click += new System.EventHandler(this.btnConnect1_Click); + // + // cboBaud1 + // + this.cboBaud1.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.cboBaud1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cboBaud1.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboBaud1.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; + this.cboBaud1.FormattingEnabled = true; + this.cboBaud1.Items.AddRange(new object[] { + "4800", + "9600", + "19200", + "38400", + "57600", + "115200"}); + this.cboBaud1.Location = new System.Drawing.Point(323, 54); + this.cboBaud1.Name = "cboBaud1"; + this.cboBaud1.Size = new System.Drawing.Size(127, 37); + this.cboBaud1.TabIndex = 130; + this.cboBaud1.SelectedIndexChanged += new System.EventHandler(this.cboBaud1_SelectedIndexChanged); + // + // cboPort1 + // + this.cboPort1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cboPort1.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboPort1.FormattingEnabled = true; + this.cboPort1.Location = new System.Drawing.Point(175, 54); + this.cboPort1.Name = "cboPort1"; + this.cboPort1.Size = new System.Drawing.Size(127, 37); + this.cboPort1.TabIndex = 127; + this.cboPort1.SelectedIndexChanged += new System.EventHandler(this.cboPort1_SelectedIndexChanged); + // + // lbBaud + // + this.lbBaud.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbBaud.Location = new System.Drawing.Point(327, 27); + this.lbBaud.Name = "lbBaud"; + this.lbBaud.Size = new System.Drawing.Size(127, 23); + this.lbBaud.TabIndex = 131; + this.lbBaud.Text = "Baud"; + this.lbBaud.TextAlign = System.Drawing.ContentAlignment.TopCenter; + // + // lbAge + // + this.lbAge.AutoSize = true; + this.lbAge.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbAge.Location = new System.Drawing.Point(452, 218); + this.lbAge.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.lbAge.Name = "lbAge"; + this.lbAge.Size = new System.Drawing.Size(126, 24); + this.lbAge.TabIndex = 168; + this.lbAge.Text = "1234567890."; + // + // lbElev + // + this.lbElev.AutoSize = true; + this.lbElev.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbElev.Location = new System.Drawing.Point(452, 188); + this.lbElev.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.lbElev.Name = "lbElev"; + this.lbElev.Size = new System.Drawing.Size(126, 24); + this.lbElev.TabIndex = 167; + this.lbElev.Text = "1234567890."; + // + // lbSats + // + this.lbSats.AutoSize = true; + this.lbSats.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbSats.Location = new System.Drawing.Point(452, 158); + this.lbSats.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.lbSats.Name = "lbSats"; + this.lbSats.Size = new System.Drawing.Size(126, 24); + this.lbSats.TabIndex = 166; + this.lbSats.Text = "1234567890."; + // + // lbHDOP + // + this.lbHDOP.AutoSize = true; + this.lbHDOP.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbHDOP.Location = new System.Drawing.Point(452, 128); + this.lbHDOP.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.lbHDOP.Name = "lbHDOP"; + this.lbHDOP.Size = new System.Drawing.Size(126, 24); + this.lbHDOP.TabIndex = 165; + this.lbHDOP.Text = "1234567890."; + // + // lbQuality + // + this.lbQuality.AutoSize = true; + this.lbQuality.BackColor = System.Drawing.Color.Transparent; + this.lbQuality.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbQuality.Location = new System.Drawing.Point(119, 218); + this.lbQuality.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.lbQuality.Name = "lbQuality"; + this.lbQuality.Size = new System.Drawing.Size(126, 24); + this.lbQuality.TabIndex = 164; + this.lbQuality.Text = "1234567890."; + // + // lbSpeed + // + this.lbSpeed.AutoSize = true; + this.lbSpeed.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbSpeed.Location = new System.Drawing.Point(119, 188); + this.lbSpeed.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.lbSpeed.Name = "lbSpeed"; + this.lbSpeed.Size = new System.Drawing.Size(126, 24); + this.lbSpeed.TabIndex = 163; + this.lbSpeed.Text = "1234567890."; + // + // lbLat + // + this.lbLat.AutoSize = true; + this.lbLat.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbLat.Location = new System.Drawing.Point(119, 128); + this.lbLat.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.lbLat.Name = "lbLat"; + this.lbLat.Size = new System.Drawing.Size(126, 24); + this.lbLat.TabIndex = 162; + this.lbLat.Text = "1234567890."; + // + // lbLon + // + this.lbLon.AutoSize = true; + this.lbLon.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbLon.Location = new System.Drawing.Point(119, 158); + this.lbLon.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.lbLon.Name = "lbLon"; + this.lbLon.Size = new System.Drawing.Size(126, 24); + this.lbLon.TabIndex = 161; + this.lbLon.Text = "1234567890."; + // + // label8 + // + this.label8.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label8.Location = new System.Drawing.Point(391, 216); + this.label8.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(67, 24); + this.label8.TabIndex = 160; + this.label8.Text = "Age:"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label7 + // + this.label7.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label7.Location = new System.Drawing.Point(350, 186); + this.label7.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(108, 24); + this.label7.TabIndex = 159; + this.label7.Text = "Elevation:"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label6 + // + this.label6.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label6.Location = new System.Drawing.Point(391, 156); + this.label6.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(67, 24); + this.label6.TabIndex = 158; + this.label6.Text = "Sats:"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label5 + // + this.label5.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label5.Location = new System.Drawing.Point(372, 126); + this.label5.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(86, 24); + this.label5.TabIndex = 157; + this.label5.Text = "HDOP:"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label4 + // + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label4.Location = new System.Drawing.Point(8, 216); + this.label4.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(119, 24); + this.label4.TabIndex = 156; + this.label4.Text = "Quality:"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label3 + // + this.label3.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label3.Location = new System.Drawing.Point(8, 186); + this.label3.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(119, 24); + this.label3.TabIndex = 155; + this.label3.Text = "Speed:"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label2 + // + this.label2.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label2.Location = new System.Drawing.Point(8, 126); + this.label2.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(119, 24); + this.label2.TabIndex = 154; + this.label2.Text = "Latitude:"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label1 + // + this.label1.Font = new System.Drawing.Font("Tahoma", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(8, 156); + this.label1.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(119, 24); + this.label1.TabIndex = 153; + this.label1.Text = "Longitude:"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // tabPage2 + // + this.tabPage2.BackColor = System.Drawing.Color.Gainsboro; + this.tabPage2.Controls.Add(this.rbGP); + this.tabPage2.Controls.Add(this.rbGN); + this.tabPage2.Controls.Add(this.ckGSA); + this.tabPage2.Controls.Add(this.ckRoll); + this.tabPage2.Controls.Add(this.ckAutoConnect); + this.tabPage2.Controls.Add(this.ckAutoHide); + this.tabPage2.Controls.Add(this.groupBox2); + this.tabPage2.Location = new System.Drawing.Point(4, 44); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(629, 488); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Options"; + // + // rbGP + // + this.rbGP.Appearance = System.Windows.Forms.Appearance.Button; + this.rbGP.Checked = true; + this.rbGP.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.rbGP.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.rbGP.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rbGP.Location = new System.Drawing.Point(97, 300); + this.rbGP.Name = "rbGP"; + this.rbGP.Size = new System.Drawing.Size(182, 61); + this.rbGP.TabIndex = 314; + this.rbGP.TabStop = true; + this.rbGP.Text = "Send $GP---"; + this.rbGP.UseVisualStyleBackColor = true; + this.rbGP.CheckedChanged += new System.EventHandler(this.rbGP_CheckedChanged); + // + // rbGN + // + this.rbGN.Appearance = System.Windows.Forms.Appearance.Button; + this.rbGN.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.rbGN.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.rbGN.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rbGN.Location = new System.Drawing.Point(370, 300); + this.rbGN.Name = "rbGN"; + this.rbGN.Size = new System.Drawing.Size(182, 61); + this.rbGN.TabIndex = 313; + this.rbGN.Text = "Send $GN---"; + this.rbGN.UseVisualStyleBackColor = true; + // + // ckGSA + // + this.ckGSA.Appearance = System.Windows.Forms.Appearance.Button; + this.ckGSA.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.ckGSA.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ckGSA.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ckGSA.Location = new System.Drawing.Point(370, 384); + this.ckGSA.Name = "ckGSA"; + this.ckGSA.Size = new System.Drawing.Size(182, 61); + this.ckGSA.TabIndex = 312; + this.ckGSA.Text = "Send empty GSA"; + this.ckGSA.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.ckGSA.UseVisualStyleBackColor = true; + this.ckGSA.CheckedChanged += new System.EventHandler(this.ckGSA_CheckedChanged); + // + // ckRoll + // + this.ckRoll.Appearance = System.Windows.Forms.Appearance.Button; + this.ckRoll.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.ckRoll.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ckRoll.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ckRoll.Location = new System.Drawing.Point(97, 384); + this.ckRoll.Name = "ckRoll"; + this.ckRoll.Size = new System.Drawing.Size(182, 61); + this.ckRoll.TabIndex = 311; + this.ckRoll.Text = "Roll Corrected"; + this.ckRoll.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.ckRoll.UseVisualStyleBackColor = true; + this.ckRoll.CheckedChanged += new System.EventHandler(this.ckRoll_CheckedChanged); + // + // ckAutoConnect + // + this.ckAutoConnect.Appearance = System.Windows.Forms.Appearance.Button; + this.ckAutoConnect.Checked = true; + this.ckAutoConnect.CheckState = System.Windows.Forms.CheckState.Checked; + this.ckAutoConnect.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.ckAutoConnect.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ckAutoConnect.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ckAutoConnect.Location = new System.Drawing.Point(97, 216); + this.ckAutoConnect.Name = "ckAutoConnect"; + this.ckAutoConnect.Size = new System.Drawing.Size(182, 61); + this.ckAutoConnect.TabIndex = 306; + this.ckAutoConnect.Text = "Auto Connect"; + this.ckAutoConnect.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.ckAutoConnect.UseVisualStyleBackColor = true; + this.ckAutoConnect.CheckedChanged += new System.EventHandler(this.ckAutoConnect_CheckedChanged); + // + // ckAutoHide + // + this.ckAutoHide.Appearance = System.Windows.Forms.Appearance.Button; + this.ckAutoHide.Checked = true; + this.ckAutoHide.CheckState = System.Windows.Forms.CheckState.Checked; + this.ckAutoHide.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.ckAutoHide.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.ckAutoHide.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ckAutoHide.Location = new System.Drawing.Point(370, 216); + this.ckAutoHide.Name = "ckAutoHide"; + this.ckAutoHide.Size = new System.Drawing.Size(182, 61); + this.ckAutoHide.TabIndex = 305; + this.ckAutoHide.Text = "Auto Hide"; + this.ckAutoHide.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.ckAutoHide.UseVisualStyleBackColor = true; + this.ckAutoHide.CheckedChanged += new System.EventHandler(this.ckAutoHide_CheckedChanged); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.label19); + this.groupBox2.Controls.Add(this.cboZDA); + this.groupBox2.Controls.Add(this.label20); + this.groupBox2.Controls.Add(this.label17); + this.groupBox2.Controls.Add(this.cboRMC); + this.groupBox2.Controls.Add(this.label18); + this.groupBox2.Controls.Add(this.label16); + this.groupBox2.Controls.Add(this.cboVTG); + this.groupBox2.Controls.Add(this.label11); + this.groupBox2.Controls.Add(this.cboGGA); + this.groupBox2.Controls.Add(this.label10); + this.groupBox2.Controls.Add(this.label9); + this.groupBox2.Font = new System.Drawing.Font("Tahoma", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.groupBox2.Location = new System.Drawing.Point(97, 20); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(455, 175); + this.groupBox2.TabIndex = 155; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Transfer Rate"; + this.groupBox2.Paint += new System.Windows.Forms.PaintEventHandler(this.groupBox1_Paint); + // + // label19 + // + this.label19.AutoSize = true; + this.label19.Location = new System.Drawing.Point(392, 122); + this.label19.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(39, 25); + this.label19.TabIndex = 164; + this.label19.Text = "Hz"; + // + // cboZDA + // + this.cboZDA.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cboZDA.Font = new System.Drawing.Font("Tahoma", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboZDA.FormattingEnabled = true; + this.cboZDA.Items.AddRange(new object[] { + "0", + "1", + "5", + "10"}); + this.cboZDA.Location = new System.Drawing.Point(317, 111); + this.cboZDA.Name = "cboZDA"; + this.cboZDA.Size = new System.Drawing.Size(71, 47); + this.cboZDA.TabIndex = 163; + this.cboZDA.SelectedIndexChanged += new System.EventHandler(this.cboZDA_SelectedIndexChanged); + // + // label20 + // + this.label20.AutoSize = true; + this.label20.Location = new System.Drawing.Point(259, 122); + this.label20.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(55, 25); + this.label20.TabIndex = 162; + this.label20.Text = "ZDA"; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Location = new System.Drawing.Point(392, 50); + this.label17.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(39, 25); + this.label17.TabIndex = 161; + this.label17.Text = "Hz"; + // + // cboRMC + // + this.cboRMC.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cboRMC.Font = new System.Drawing.Font("Tahoma", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboRMC.FormattingEnabled = true; + this.cboRMC.Items.AddRange(new object[] { + "0", + "1", + "5", + "10"}); + this.cboRMC.Location = new System.Drawing.Point(317, 39); + this.cboRMC.Name = "cboRMC"; + this.cboRMC.Size = new System.Drawing.Size(71, 47); + this.cboRMC.TabIndex = 160; + this.cboRMC.SelectedIndexChanged += new System.EventHandler(this.cboRMC_SelectedIndexChanged); + // + // label18 + // + this.label18.AutoSize = true; + this.label18.Location = new System.Drawing.Point(254, 50); + this.label18.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(60, 25); + this.label18.TabIndex = 159; + this.label18.Text = "RMC"; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Location = new System.Drawing.Point(150, 122); + this.label16.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(39, 25); + this.label16.TabIndex = 158; + this.label16.Text = "Hz"; + // + // cboVTG + // + this.cboVTG.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cboVTG.Font = new System.Drawing.Font("Tahoma", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboVTG.FormattingEnabled = true; + this.cboVTG.Items.AddRange(new object[] { + "0", + "1", + "5", + "10"}); + this.cboVTG.Location = new System.Drawing.Point(75, 111); + this.cboVTG.Name = "cboVTG"; + this.cboVTG.Size = new System.Drawing.Size(71, 47); + this.cboVTG.TabIndex = 157; + this.cboVTG.SelectedIndexChanged += new System.EventHandler(this.cboVTG_SelectedIndexChanged); + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(150, 50); + this.label11.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(39, 25); + this.label11.TabIndex = 156; + this.label11.Text = "Hz"; + // + // cboGGA + // + this.cboGGA.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cboGGA.Font = new System.Drawing.Font("Tahoma", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboGGA.FormattingEnabled = true; + this.cboGGA.Items.AddRange(new object[] { + "0", + "1", + "5", + "10"}); + this.cboGGA.Location = new System.Drawing.Point(75, 39); + this.cboGGA.Name = "cboGGA"; + this.cboGGA.Size = new System.Drawing.Size(71, 47); + this.cboGGA.TabIndex = 155; + this.cboGGA.SelectedIndexChanged += new System.EventHandler(this.cboGGA_SelectedIndexChanged); + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(15, 122); + this.label10.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(55, 25); + this.label10.TabIndex = 154; + this.label10.Text = "VTG"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(12, 50); + this.label9.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(58, 25); + this.label9.TabIndex = 153; + this.label9.Text = "GGA"; + // + // tmrGSA + // + this.tmrGSA.Interval = 1000; + this.tmrGSA.Tick += new System.EventHandler(this.tmrGSA_Tick); + // + // frmStart + // + this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.SystemColors.Control; + this.ClientSize = new System.Drawing.Size(626, 536); + this.Controls.Add(this.tabControl1); + this.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(6); + this.MaximizeBox = false; + this.Name = "frmStart"; + this.Text = "GPS_Out"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmStart_FormClosed); + this.Load += new System.EventHandler(this.frmStart_Load); + this.Resize += new System.EventHandler(this.frmStart_Resize); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.tabPage2.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.Timer tmrGGA; + private System.Windows.Forms.Timer tmrVTG; + private System.Windows.Forms.Timer tmrMinimize; + private System.ComponentModel.BackgroundWorker backgroundWorker1; + private System.Windows.Forms.Timer tmrRMC; + private System.Windows.Forms.Timer tmrDisplay; + private System.Windows.Forms.Timer tmrZDA; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label PortIndicator1; + private System.Windows.Forms.Button btnRescan; + private System.Windows.Forms.Label lbPort; + private System.Windows.Forms.Button btnConnect1; + private System.Windows.Forms.ComboBox cboBaud1; + private System.Windows.Forms.ComboBox cboPort1; + private System.Windows.Forms.Label lbBaud; + private System.Windows.Forms.Label lbAge; + private System.Windows.Forms.Label lbElev; + private System.Windows.Forms.Label lbSats; + private System.Windows.Forms.Label lbHDOP; + private System.Windows.Forms.Label lbQuality; + private System.Windows.Forms.Label lbSpeed; + private System.Windows.Forms.Label lbLat; + private System.Windows.Forms.Label lbLon; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.Button btnZDA; + private System.Windows.Forms.TextBox tbZDA; + private System.Windows.Forms.Button btnRMC; + private System.Windows.Forms.TextBox tbRMC; + private System.Windows.Forms.Button btnVTG; + private System.Windows.Forms.Button btnGGA; + private System.Windows.Forms.TextBox tbVTG; + private System.Windows.Forms.TextBox tbGGA; + private System.Windows.Forms.CheckBox ckAutoConnect; + private System.Windows.Forms.CheckBox ckAutoHide; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.ComboBox cboZDA; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.ComboBox cboRMC; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.ComboBox cboVTG; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.ComboBox cboGGA; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.RadioButton rbGN; + private System.Windows.Forms.CheckBox ckGSA; + private System.Windows.Forms.CheckBox ckRoll; + private System.Windows.Forms.RadioButton rbGP; + private System.Windows.Forms.Timer tmrGSA; + private System.Windows.Forms.Label lbSim; + } +} + diff --git a/SourceCode/GPS_Out/Source/Form1.cs b/SourceCode/GPS_Out/Source/Form1.cs new file mode 100644 index 000000000..c29a11c07 --- /dev/null +++ b/SourceCode/GPS_Out/Source/Form1.cs @@ -0,0 +1,590 @@ +using GPS_Out.PGNs; +using System; +using System.ComponentModel; +using System.Drawing; +using System.Windows.Forms; + +namespace GPS_Out +{ + /* + $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M , ,*47 + 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + Time Lat Lon FixSatsOP Alt + Where: + GGA Global Positioning System Fix Data + 123519 Fix taken at 12:35:19 UTC + 4807.038,N Latitude 48 deg 07.038' N + 01131.000,E Longitude 11 deg 31.000' E + 1 Fix quality: 0 = invalid + 1 = GPS fix (SPS) + 2 = DGPS fix + 3 = PPS fix + 4 = Real Time Kinematic + 5 = Float RTK + 6 = estimated (dead reckoning) (2.3 feature) + 7 = Manual input mode + 8 = Simulation mode + 08 Number of satellites being tracked + 0.9 Horizontal dilution of position + 545.4,M Altitude, Meters, above mean sea level + 46.9,M Height of geoid (mean sea level) above WGS84 + ellipsoid + (empty field) time in seconds since last DGPS update + (empty field) DGPS station ID number + *47 the checksum data, always begins with * + * + * + $GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A + 0 1 2 3 4 5 6 7 8 9 10 11 + Time Lat Lon knots Ang Date MagV + + Where: + RMC Recommended Minimum sentence C + 123519 Fix taken at 12:35:19 UTC + A Status A=active or V=Void. + 4807.038,N Latitude 48 deg 07.038' N + 01131.000,E Longitude 11 deg 31.000' E + 022.4 Speed over the ground in knots + 084.4 Track angle in degrees True + 230394 Date - 23rd of March 1994 + 003.1,W Magnetic Variation + *6A The checksum data, always begins with * + * + $GPVTG,054.7,T,034.4,M,005.5,N,010.2,K*48 + * + VTG Track made good and ground speed + 054.7,T True track made good (degrees) + 034.4,M Magnetic track made good + 005.5,N Ground speed, knots + 010.2,K Ground speed, Kilometers per hour + *48 Checksum + */ + + public partial class frmStart : Form + { + public UDPComm AGIOcomm; + public PGN54908 AGIOdata; + public UDPComm AOGcomm; + public PGN100 AOGdata; + public PGN_GGA GGA; + public string GGAsentence = ""; + public PGN_GSA GSA; + public string GSAsentence = ""; + public PGN_RMC RMC; + public string RMCsentence = ""; + public SerialSend SER; + public clsTools Tls; + public PGN_VTG VTG; + public string VTGsentence = ""; + public PGN_ZDA ZDA; + public string ZDAsentence = ""; + private string HeadingType; + private Color SimColor = Color.Orange; + private int Watchdog; + + public frmStart() + { + InitializeComponent(); + Tls = new clsTools(this); + AGIOcomm = new UDPComm(this, 15555, 8000, 7120, "AGIO", "127.103.104.105", "127.255.255.255"); + AOGcomm = new UDPComm(this, 17777, 8500, 9010, "AOG", "127.100.101.102", "127.255.255.255"); + AGIOdata = new PGN54908(this); + GGA = new PGN_GGA(this); + VTG = new PGN_VTG(this); + SER = new SerialSend(this); + RMC = new PGN_RMC(this); + AOGdata = new PGN100(this); + backgroundWorker1.WorkerSupportsCancellation = true; + ZDA = new PGN_ZDA(this); + GSA = new PGN_GSA(this); + } + + public int CheckSum(string Data) + { + int CK = 0; + int End = Data.IndexOf("*"); + char[] buf = Data.ToCharArray(); + if (buf[0] == '$' && End > -1) + { + for (int i = 1; i < End; i++) + { + CK ^= buf[i]; + } + } + return CK; + } + + public string FixQuality(byte Qu) + { + String Result = ""; + switch (Qu) + { + case 1: + Result = "GPS 1"; + break; + + case 2: + Result = "DGPS"; + break; + + case 3: + Result = "PPS"; + break; + + case 4: + Result = "RTK fix"; + break; + + case 5: + Result = "Float"; + break; + + case 6: + Result = "Estimate"; + break; + + case 7: + Result = "Man IP"; + break; + + case 8: + Result = "Sim"; + break; + } + return Result; + } + + public double Heading() + { + double Result = 0; + HeadingType = ""; + + if (AGIOdata.HeadingDual < 361) + { + Result = AGIOdata.HeadingDual; + HeadingType = "D"; + } + else if (AOGdata.Fix2FixHeading < 361) + { + Result = AOGdata.Fix2FixHeading; + HeadingType = "F"; + } + else if (AGIOdata.TrueHeading < 361) + { + Result = AGIOdata.TrueHeading; + HeadingType = "T"; + } + else if (AGIOdata.IMUheading < 361) + { + Result = AGIOdata.IMUheading; + HeadingType = "I"; + } + + return Result; + } + + public void SetPortButtons1() + { + cboPort1.SelectedIndex = cboPort1.FindStringExact(SER.PortNm); + cboBaud1.SelectedIndex = cboBaud1.FindStringExact(SER.Baud.ToString()); + + if (SER.IsOpen()) + { + cboBaud1.Enabled = false; + cboPort1.Enabled = false; + btnConnect1.Text = "Disconnect"; + PortIndicator1.Image = Properties.Resources.On; + } + else + { + cboBaud1.Enabled = true; + cboPort1.Enabled = true; + btnConnect1.Text = "Connect"; + PortIndicator1.Image = Properties.Resources.Off; + } + } + + private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) + { + BackgroundWorker worker = sender as BackgroundWorker; + if (worker.CancellationPending == true) + { + e.Cancel = true; + } + else + { + if (GGAsentence != "") SER.SendStringData(GGAsentence); + if (VTGsentence != "") SER.SendStringData(VTGsentence); + if (RMCsentence != "") SER.SendStringData(RMCsentence); + if (ZDAsentence != "") SER.SendStringData(ZDAsentence); + if (GSAsentence != "") SER.SendStringData(GSAsentence); + } + } + + private void backgroundWorker1_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e) + { + GGAsentence = ""; + VTGsentence = ""; + RMCsentence = ""; + ZDAsentence = ""; + GSAsentence = ""; + } + + private void btnConnect1_Click(object sender, EventArgs e) + { + if (btnConnect1.Text == "Connect") + { + SER.Open(); + } + else + { + SER.Close(); + } + SetPortButtons1(); + } + + private void btnGGA_Click(object sender, EventArgs e) + { + tbGGA.Text = GGA.Sentence; + if (tbGGA.Text != "") Clipboard.SetText(tbGGA.Text); + } + + private void btnRescan_Click(object sender, EventArgs e) + { + LoadRCbox(); + } + + private void btnRMC_Click(object sender, EventArgs e) + { + tbRMC.Text = RMC.Sentence; + if (tbRMC.Text != "") Clipboard.SetText(tbRMC.Text); + } + + private void btnVTG_Click(object sender, EventArgs e) + { + tbVTG.Text = VTG.Sentence; + if (tbVTG.Text != "") Clipboard.SetText(tbVTG.Text); + } + + private void btnZDA_Click(object sender, EventArgs e) + { + tbZDA.Text = ZDA.Sentence; + if (tbZDA.Text != "") Clipboard.SetText(tbZDA.Text); + } + + private void cboBaud1_SelectedIndexChanged(object sender, EventArgs e) + { + SER.Baud = Convert.ToInt32(cboBaud1.Text); + } + + private void cboGGA_SelectedIndexChanged(object sender, EventArgs e) + { + if (cboGGA.Text == "0") + { + tmrGGA.Enabled = false; + } + else + { + tmrGGA.Interval = 1000 / Convert.ToInt16(cboGGA.Text); + tmrGGA.Enabled = true; + } + Properties.Settings.Default.GGA = cboGGA.SelectedIndex; + } + + private void cboPort1_SelectedIndexChanged(object sender, EventArgs e) + { + SER.PortNm = cboPort1.Text; + } + + private void cboRMC_SelectedIndexChanged(object sender, EventArgs e) + { + if (cboRMC.Text == "0") + { + tmrRMC.Enabled = false; + } + else + { + tmrRMC.Interval = 1000 / Convert.ToInt16(cboRMC.Text); + tmrRMC.Enabled = true; + } + Properties.Settings.Default.RMC = cboRMC.SelectedIndex; + } + + private void cboVTG_SelectedIndexChanged(object sender, EventArgs e) + { + if (cboVTG.Text == "0") + { + tmrVTG.Enabled = false; + } + else + { + tmrVTG.Interval = 1000 / Convert.ToInt16(cboVTG.Text); + tmrVTG.Enabled = true; + } + Properties.Settings.Default.VTG = cboVTG.SelectedIndex; + } + + private void cboZDA_SelectedIndexChanged(object sender, EventArgs e) + { + if (cboZDA.Text == "0") + { + tmrZDA.Enabled = false; + } + else + { + tmrZDA.Interval = 1000 / Convert.ToInt16(cboZDA.Text); + tmrZDA.Enabled = true; + } + Properties.Settings.Default.ZDA = cboZDA.SelectedIndex; + } + + private void ckAutoConnect_CheckedChanged(object sender, EventArgs e) + { + Properties.Settings.Default.AutoConnect = ckAutoConnect.Checked; + } + + private void ckAutoHide_CheckedChanged(object sender, EventArgs e) + { + tmrMinimize.Enabled = ckAutoHide.Checked; + if (ckAutoHide.Checked) this.WindowState = FormWindowState.Minimized; + Properties.Settings.Default.AutoHide = ckAutoHide.Checked; + } + + private void ckGSA_CheckedChanged(object sender, EventArgs e) + { + Properties.Settings.Default.SendGSA = ckGSA.Checked; + tmrGSA.Enabled = ckGSA.Checked; + } + + private void ckRoll_CheckedChanged(object sender, EventArgs e) + { + Properties.Settings.Default.UseRollCorrected = ckRoll.Checked; + } + + private void frmStart_FormClosed(object sender, FormClosedEventArgs e) + { + Tls.SaveFormData(this); + Properties.Settings.Default.Save(); + SER.Close(); + } + + private void frmStart_Load(object sender, EventArgs e) + { + //Properties.Settings.Default.Reset(); + Tls.LoadFormData(this); + AGIOcomm.StartUDPServer(); + AOGcomm.StartUDPServer(); + LoadRCbox(); + PortIndicator1.BackColor = Properties.Settings.Default.DayColour; + this.BackColor = Properties.Settings.Default.DayColour; + tabPage1.BackColor = Properties.Settings.Default.DayColour; + tabPage2.BackColor = Properties.Settings.Default.DayColour; + + ckAutoHide.Checked = Properties.Settings.Default.AutoHide; + ckAutoConnect.Checked = Properties.Settings.Default.AutoConnect; + ckRoll.Checked = Properties.Settings.Default.UseRollCorrected; + rbGN.Checked = (Properties.Settings.Default.SentenceStart == "$GN"); + ckGSA.Checked = Properties.Settings.Default.SendGSA; + + cboGGA.SelectedIndex = Properties.Settings.Default.GGA; + cboVTG.SelectedIndex = Properties.Settings.Default.VTG; + cboRMC.SelectedIndex = Properties.Settings.Default.RMC; + cboZDA.SelectedIndex = Properties.Settings.Default.ZDA; + + if (ckAutoHide.Checked) this.WindowState = FormWindowState.Minimized; + } + + private void frmStart_Resize(object sender, EventArgs e) + { + if (this.WindowState == FormWindowState.Minimized) + { + tmrMinimize.Enabled = false; + } + else + { + tmrMinimize.Enabled = ckAutoHide.Checked; + } + } + + private void groupBox1_Paint(object sender, PaintEventArgs e) + { + GroupBox box = sender as GroupBox; + Tls.DrawGroupBox(box, e.Graphics, this.BackColor, Color.Black, Color.Blue); + } + + private void LoadRCbox() + { + cboPort1.Items.Clear(); + foreach (String s in System.IO.Ports.SerialPort.GetPortNames()) + { + cboPort1.Items.Add(s); + } + SetPortButtons1(); + } + + private void rbGP_CheckedChanged(object sender, EventArgs e) + { + if (rbGP.Checked) + { + Properties.Settings.Default.SentenceStart = "$GP"; + } + else + { + Properties.Settings.Default.SentenceStart = "$GN"; + } + } + + private void Send() + { + if (backgroundWorker1.IsBusy != true) + { + // Start the asynchronous operation. + backgroundWorker1.RunWorkerAsync(); + } + } + + private void tmrDisplay_Tick(object sender, EventArgs e) + { + UpdateForm(); + } + + private void tmrGGA_Tick(object sender, EventArgs e) + { + if (GGAsentence == "") + { + Watchdog = 0; + GGAsentence = GGA.Build(); + Send(); + } + else + { + Watchdog++; + if (Watchdog > 10 && backgroundWorker1.WorkerSupportsCancellation == true && !backgroundWorker1.CancellationPending) + { + // Cancel the asynchronous operation. + backgroundWorker1.CancelAsync(); + } + } + } + + private void tmrGSA_Tick(object sender, EventArgs e) + { + if (GSAsentence == "") + { + Watchdog = 0; + GSAsentence = GSA.Build(); + } + else + { + Watchdog++; + if (Watchdog > 10 && backgroundWorker1.WorkerSupportsCancellation == true && !backgroundWorker1.CancellationPending) + { + // Cancel the asynchronous operation. + backgroundWorker1.CancelAsync(); + } + } + } + + private void tmrMinimize_Tick(object sender, EventArgs e) + { + this.WindowState = FormWindowState.Minimized; + } + + private void tmrRMC_Tick(object sender, EventArgs e) + { + if (RMCsentence == "") + { + Watchdog = 0; + RMCsentence = RMC.Build(); + } + else + { + Watchdog++; + if (Watchdog > 10 && backgroundWorker1.WorkerSupportsCancellation == true && !backgroundWorker1.CancellationPending) + { + // Cancel the asynchronous operation. + backgroundWorker1.CancelAsync(); + } + } + } + + private void tmrVTG_Tick(object sender, EventArgs e) + { + if (VTGsentence == "") + { + Watchdog = 0; + VTGsentence = VTG.Build(); + } + else + { + Watchdog++; + if (Watchdog > 10 && backgroundWorker1.WorkerSupportsCancellation == true && !backgroundWorker1.CancellationPending) + { + // Cancel the asynchronous operation. + backgroundWorker1.CancelAsync(); + } + } + } + + private void tmrZDA_Tick(object sender, EventArgs e) + { + if (ZDAsentence == "") + { + Watchdog = 0; + ZDAsentence = ZDA.Build(); + } + else + { + Watchdog++; + if (Watchdog > 10 && backgroundWorker1.WorkerSupportsCancellation == true && !backgroundWorker1.CancellationPending) + { + // Cancel the asynchronous operation. + backgroundWorker1.CancelAsync(); + } + } + } + + private void UpdateForm() + { + if (this.WindowState != FormWindowState.Minimized) + { + if (AOGdata.Connected()) + { + lbLon.Text = AOGdata.Longitude.ToString("N7"); + lbLat.Text = AOGdata.Latitude.ToString("N7"); + } + else + { + lbLon.Text = AGIOdata.Longitude.ToString("N7"); + lbLat.Text = AGIOdata.Latitude.ToString("N7"); + } + + lbAge.Text = AGIOdata.Age.ToString("N2"); + lbSpeed.Text = AGIOdata.Speed.ToString("N1"); + lbQuality.Text = FixQuality(AGIOdata.FixQuality); + lbHDOP.Text = AGIOdata.HDOP.ToString("N2"); + lbSats.Text = AGIOdata.Satellites.ToString(""); + lbElev.Text = AGIOdata.Altitude.ToString("N2"); + lbAge.Text = AGIOdata.Age.ToString("N1"); + + ckRoll.Enabled = AOGdata.Connected(); + + if (AGIOdata.Connected()) + { + lbQuality.BackColor = Color.Transparent; + label4.BackColor = Color.Transparent; + lbSim.Visible = false; + this.Text = "GPS_Out [" + Tls.AppVersion() + "] " + HeadingType; + } + else + { + lbQuality.BackColor = SimColor; + label4.BackColor = SimColor; + lbSim.Visible = true; + lbSim.BackColor = SimColor; + this.Text = "GPS_Out [" + Tls.AppVersion() + "] Simulated Data " + HeadingType; + } + } + } + } +} \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/Form1.resx b/SourceCode/GPS_Out/Source/Form1.resx new file mode 100644 index 000000000..d3d87732a --- /dev/null +++ b/SourceCode/GPS_Out/Source/Form1.resx @@ -0,0 +1,3647 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 105, 17 + + + 198, 17 + + + 320, 17 + + + 482, 17 + + + 581, 17 + + + 692, 17 + + + 788, 17 + + + 40 + + + + + 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 + EcZ2AOYngf4EuF8B9AWgD6wbtDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wx + xhhjjDHGGGOMMcYYY4wx5sfxFYlsDS0DO6TrAAAAAElFTkSuQmCCKAAAAEAAAACAAAAAAQAgAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgYBAl + LWZ9AECABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAACAgYBArNGTZVlNi9ys0ZLoAQIAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAACIiZg8uNmbWkH5j/LebXP9vZmD2KzJkvABAgAQAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiZg8uNmbWp5Nu/OPAcv/DpWL/t5tc/29lYPYr + MmW+ADNmBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbKGI5JTFk6l1qYP9k + cmD/ZHJg/2RyYP9kcmD/ZHJg/2RyYP9kcmD/ZHJg/2d1Y/9LVm//pKKs/5uZp/YuOG/EICBwECIsZclI + TWT3KTFm+zI4Z/vjwHP/5cJz/+XCc//lwnP/5cJz/7Wdb/9FR2j/YFtq/4N2bf/lwnP/y6xm/7ebXP+N + el/8KzJk2xsoaxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb + KGI5JTFk6l1qYP9kcmD/ZHJg/2RyYP9kcmD/ZHJg/2RyYP9kcmD/ZHJg/2Z0Yv9kcW3/Qkp2//Dl1P/y + 59X/m5mn9iUvZ/FJTWT5Y2Vl/2NlZf8uNmX5Oz9n+uPAc//lwnP/5cJz/7Wdb/9GR2j/0rRy/+PAc/9n + YGr/dWtm/7ebXP+Nel/8KzJk2xsoaxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAbKGI5JTFl6V1qYP9kcmD/ZHJg/2RyYP9kcmD/ZHJg/2RyYP9kcmD/ZHJg/2l3Zv9s + eW//OEJv/9DJxP/y59X/8ufV//Ln1f9lZ4r6Ljdm+2JkZf9jZWX/Y2Vl/y42Zfk7Pmf648Bz/7Wdb/9G + R2j/0rRy/+XCc//lwnP/yatm/1ZSYf9WU2L9KzJk2xsoaxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaJmYUHytl9Gdzb/9ue2r/aHZk/2VzYf9kcmD/ZHJg/2RyYP9l + c2H/anhm/3B9bP9lcm7/OEJv/7q1uP/y59X/8ufV//Ln1f/y59X/8ufV/2ZoivouN2b7YWNl/2NlZf9j + ZWX/LjZl+TI4Z/tISGj/1bZy/+XCc//lwnP/y6xm/7ebXP+MeV/8JC5k6hsoaxMAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMvZmcnMmfrVWBr/HF+b/9z + gHD/cX5u/3F+bv9yf27/c4Bw/2t4b/9MVW7/Qkl1/9DJxP/y59X/8ufV//Ln1f/y59X/8ufV//Ln1f/y + 59X/ZmmK+i43ZvtiZGX/Y2Vl/2NlZf8oMWX7OT1n+uTBc//lwnP/y6xm/7ebXP+Nel/8KzJk2xsoaxMA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAICtqGCIuZI8lMWblMDxn6UBMau5CTWrxO0do6ys2Z/o1Pm3+i4qX/+HXx//y59X/8ufV//Ln1f/y + 59X/8ufV//Ln1f/y59X/8ufV//Ln1f9maYr6Ljdm+2JkZf9jZWX/SU9l+SErZulnX2rxyqtm/7ebXP+N + el/8KzJk2xsoaxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABorZh4bJmdDHCdnSBwmYzYjI10WLjhtw4SCk/jO + xbX/49nI//Ln1f/y59X/8ufV//Ln1f/y59X/8ufV//Ln1f/y59X/8ufV/2dqi/ouN2b7SE5l+SIsZc8V + K2oMLjVllVdTYvOMel/8KzJk2xsoaxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAACsrVQYuOG3DhIKT+M7Ftf/j2cj/8ufV//Ln1f/y59X/8ufV//Ln1f/y59X/8ufV//Ln1f/y + 59X/ZmmL+iUvaPEeLWkRAAAAAAAAAAAtNGaYKTFl2x4taREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAACAgYBAsM2bYLjVmlgAAAAAAAAAAIDBgECUvZ/FYW3/7zsW1/+PZyP/y59X/8ufV//Ln1f/y + 59X/8ufV//Ln1f/y59X/8ufV//Ln1f+bmaf2LjhvxCQkbQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAACIiZg8uNmbWp5Ju/G1kavIuNmabGjNmCiIsZcpITWX4Ljdm+1hcf/vO + xbX/49nI//Ln1f/y59X/8ufV//Ln1f/y59X/8ufV//Ln1f/y59X/8ufV/5uZp/YuOG/EJCRtBwAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiZg8uNmbWp5Nu/OXCc//kwXP/bWRq8iErZetK + T2T5Y2Vl/2JkZf8uN2b7V1t/+87Ftf/j2cj/8ufV//Ln1f/y59X/8ufV//Ln1f/y59X/8ufV//Ln1f/y + 59X/m5mn9i44b8QkJG0HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiZg8uNmbWp5Nu/OXCc//l + wnP/5cJz/+TBc/88P2f6KDFl+2NlZf9jZWX/YmRl/y43ZvtZXn/7zsW1/+PZyP/y59X/8ufV//Ln1f/y + 59X/8ufV//Ln1f/y59X/8ufV/+7j0v+Ih5f3KjZtxxwcVQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiZg8m + L2fnppJu/OXCc//lwnP/5cJz/+XCc//VtnL/SEho/zY7Z/ssNGX5Y2Vl/2NlZf9iZGX/Ljdm+1dbf/vO + xbX/49nI//Ln1f/y59X/8ufV//Ln1f/y59X/8ufV/+7j0v/Tybn/rKel/yArbv0fKmuNAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAACIiZg8uNmbWZGBq/Wdhav/jwHP/5cJz/+XCc//YuHL/TExp/6+Yb//jwHP/PkFn+i01Zflj + ZWX/Y2Vl/2JkZf8vNmX7WFx/+87Ftf/j2cj/8ufV//Ln1f/y59X/8ufV/+7j0v/Uyrr/sKqn/yEtcf0z + QsL+Hitz4wBAgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQMu + NWW4LTNk/Y99Xv/CpGH/48By/+XCc//lwnP/5cJz/7Gab/8oMWb/j39u/+XCc//lwnP/y6xm/7ebXP+N + e1/+LDNk3BwrYxIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABmBSs0ZcBqY2D3t5tc/8KkYf/jwHL/5cJz/7Wdb/9GR2j/zrBy/1lWaf+b + iG7/y6xm/7ebXP+Ne1/+LDNk3BwrYxIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFUDLjVltmpjYPe3m1z/wqRh/7Sbb/9G + R2j/0rRy/+XCc//gvnP/UU9l/35wX/+Ne1/+LDNk3BsoaxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQMu + NWW2amNg95J/Xv8+QWT/0bJx/+XCc//lwnP/y6xm/7KXXf88P2P/JzBk5RsoaxMAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABVAysyZcAtM2T9q5Jd/8KkYf/jwHL/y6xm/7ebXP+Ne1/+LDNj3RwmcRsA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYFLjVluGpjYPe3m1z/vJ9e/7ebXP+N + e1/+LTNk3BsoaxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQMu + NWW2amNg97ebXP+Ne1/+LDNk3BsoaxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABVAywzZblVUmL4LTNl2x4taREAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFUDJS1lfB4taREAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////////////////////////// + ////////////////////////////////+P/////////wf////////+A/////////wB////////+AD/// + /D///wAH///wH//+AAP///Af7/wAAf//8B/H+AAA///wH4PwAAB///APA+AAAH//+AYDwAAAf///gAOA + AAD////AAwAAAf///+ADAAAD////4AOAAAf////AAcAAD////4AAgAAf////AAAAAD////4AAAAAf/// + /AAAAAD////+AAAAAf////8AAAAD//////4AAIf//////wABz//////zgAD//////+EAAH//////wAAA + P/////+AAAAf/////wAAAA/////+AAAAD/////wAAAAP////+AABAAf////wAAOAB////+AAAcAP//// + wAAA4B////+AAADwP////wAAAf5////+AAAD//////4AAAf//////gAAD///////AAAf//////+AAD// + /////8AAf///////4AD////////wAf////////gD/////////Af////////+D/////////8f//////// + /////////////////////////////////////////////////////////////////////////ygAAAAw + AAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhNkKQcWbSMAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFE142S0tj2UpKYsoA + FGknAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVYzFj + XmvYvKJp/6CLYP9KSmLKFSJnJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAliOWRgat3WuHf/68Zy/9SyZf+NfGL/Ji1k0REdaCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAArEhsQRTAU + DTwmAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAOHGM2Njto4JmIcv/zzHT/8cx0/8yucf90amX/f3Ji/01KYsoADWknAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ + KWYyHUKOxB1XrvsdUaXuHTiAgxQUYg0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC84ZXJtY1/5vqJg/66Wav93 + bm7/z7Fy/9q6cv93bGX/g3Vk/1lVYt8AEmQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAt + NmZxWVVi+2xjYv/ApWv/7sl0/9i2Z/+diWL/LTRm4g0eaDsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAADRpnd2NdYvjCpGD/0K9j/6yUYv9YVWPcFyBmNwAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC00Y3FvZmD6po9k/1dUY94AEmQ4AAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwNmR1P0FlxRIgaTgA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABrEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAD///////8AAP///////wAA////////AAD///////8AAP///////wAA/////8//AAD/ + ////h/8AAP////8D/wAA/////gH/AAD/w//8AP8AAP+D//gAfwAA/4Pz8AA/AAD/gePgAB8AAP/AwcAA + HwAA//gBgAA/AAD//AEAAH8AAP/8AYAA/wAA//wBwAH/AAD/+AAAA/8AAP/wAAAH/wAA/+AAAA//AAD/ + 4AAAH/8AAP//gAI//wAA///AA3//AAD//mAD//8AAP/8AAH//wAA//gAAP//AAD/8AAAf/8AAP/gAAB/ + /wAA/8ABAD//AAD/gAGAf/8AAP8AAMD//wAA/gAA4f//AAD8AAH///8AAPgAA////wAA/AAH////AAD+ + AA////8AAP8AH////wAA/4A/////AAD/wH////8AAP/g/////wAA//H/////AAD/+/////8AAP////// + /wAA////////AAD///////8AAP///////wAA////////AAAoAAAAMAAAAGAAAAABAAgAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/zc+aP+fimH/mpaf/01Ugf81Qqn/YWqj/zpL4P8reNj/6d/S/8/Fs//S + sWX/y8Kx/2dhZf8sXav/KpL9/0OR6/9xcIP/UmBm/4uLn/+bn7r/T1mn/8CjYP8gLWX/Hnvl/yc3uP8h + Wq//fIOg/6uvx/9KUGb/d2xl/+fDc/9Aof//bnKS/15ffP85bbv/gICS/4N1ZP8ijvr/ZHJg/66VYf9s + bWT/iYeZ/0lqqf9aXon/a2yI/2lwmf8yQLT/VVJq/4iNrf/Qr2P/kZey/9vSyv/i2MT/UFV7/zI6av9A + RGr/kX9k/1llcf+hjnL/HoTv/299Zv9ybnn/cn9w/2lmdf9idqj/UlRz/01Za/9dcqb/0rRy/0lPeP+S + mbP/ipi9/0tShf9DTpD/LDy9/3l1fv/HwMH/PUZ4/2Nea/+Sj5r/WF2H/1hegv+hnqr/ZF9s/11fd/9c + YpP/Nl+n/7yicP89RmT/NELB/+Taxv+rk2L/kJGm/4R2bf+QlbL/b2Zj/1pjgP+wmXD/9enW/5mft/+P + f23/QU1u/5ODbP+ZhmX/Pk/w/6uUZ/9lZHj/2rpy/2FnfP9maIT/R0x0//vv2v89T+r/vKJp/3R8lP+E + hp7/X25m/5SDbf+Zl6b/fXiA/9m2Zv8/RWD/iY2p/15ra/9sbGX/IV62/1Jfa//Hq3H/UWyl/5+bov+O + kqz/RUth/6mUcP9YX3f/rpZq/2hqa/9dWWX/OD5p/3tuY//buGf/4r5s/15pf/9mZnr/cWhu/4x7Yv9E + SmH/QUdn/8Gmcf+BfIP/hYCJ/19iZP98cWz/p5Jv/9+9cv9xdpb/c3aO/0pXZf8+RWT/WFtk/5mHbv+4 + n3D/bWl1/+Xbzv+LfG3/c2pr/yk6v//xy3T/Pm63/4h5Zf9gZ5L/bWZr/8Cla/9aX4X/Wl6C//Ln1f/u + 4sv/8efW/zxMd/93c33/f4Oj/1VZZ/+mj2T/cnqa/05Tev/OsHL/aGJq/0NPZv97gaX/Xmtw/x6L/f9p + d2L/ZnRg//Hl0f9ib2//Q0Vo/4yOpf+AcmP/rJdz/926a/9AQ2j/hHlx/21qd/9raXj/bGNj/1NZeP92 + fJv/s5tv/9O1dv/Or2f/y65y/3NpZP/uyXT/7Mdz/3hubP94bmv/goai/0hVZ/9YVWr/Xllp/1JYdv9E + of7/mYhy/+PBc//+8tz/TFlo/4Bzbf9icGb/dn6U/3d6lv/1znT/OkFo/5GTqf+GeWz/rJZq/0VLd//D + qHL/YmRl/7SddP9PV4L/gXyB/3puZf9Rbqj/w6dr/x6O//96d4L/PD9p/8ardf+UkZz/f3qC/9W0Zv+7 + o3b/OEWr/5KCbv/Xt3P/2Lh2/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAANO2ygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA////////AAD/ + //////8AAP///////wAA////////AAD/////z/8AAP////+H/wAA/////wP/AAD////+Af8AAP/D//wA + /wAA/4P/+AB/AAD/g+PwAD8AAP+B4+AAHwAA/8CBwAAfAAD/+AGAAD8AAP/8AQAAfwAA//wBgAD/AAD/ + /AHAAf8AAP/wAAAD/wAA//AAAAf/AAD/4AAAD/8AAP/gAAAf/wAA//2AAj//AAD//8ADf/8AAP/+YAP/ + /wAA//wAAf//AAD/+AAA//8AAP/wAAB//wAA/+AAAH//AAD/wAEAP/8AAP+AAYB//wAA/wAAwP//AAD+ + AADx//8AAPwAAf3//wAA+AAD////AAD8AAf///8AAP4AD////wAA/wAf////AAD/gD////8AAP/Af/// + /wAA/+D/////AAD/8f////8AAP/7/////wAA////////AAD///////8AAP///////wAA////////AAD/ + //////8AACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + emb499B3/9K0cv9dWWr/r5hv//jRdP/OsHH/lYRt/5aGbv+wmGn/gHJf8jA3ZEoAAAAAAAAAAAAAAAAN + DRsTERpEHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAKzNmPHtvYOnCpmj/mohv/8Wpcf+gjW7/sZlw/5eGbv/bunP/1rVq/1dUYfQfKmVJAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAIClkOE5MYei3nWj/9890/8Wpcf9dWWr/uqFw/927av+AcV/zLjVjSAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHyhnOXpuX+S3nWj/mYdv/9Gzcv+Ug2n/bmVh9SMuY0gA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGyhiOU1MYefCpWj/3rtp/3ttYfMH + F2VMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJC5kOHhsYOh8 + b1/2Jy5jSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAGCZjNhgkZEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAA///////////////////+/////H////g//n/wH/w54A/+McAH/4GAD//BgB//gIA//wAAf/4AAP// + AAH///AP///AB///gAP//wAD//4AAf/8AIP/+ADn//AB///wA///+Af///wP///+H////z////////// + //////////////8oAAAAIAAAAEAAAAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/zA5Zf+c + im//nJ2x/0VYhP8vP7n/VXq4/9vTy/88fc//za1m/3RrZ/96grn/Kpj//3NwfP87Te3/uLGx/2JmhP8y + P6H/WWhe/9+7av9LVrb/f4Cc/8jBwf+wmGn/jpKp/1dbYf+KfGn/7slz/0lPYv9BSmf/9urV/3V/kP/C + pWj/HGvM/5COm/9jcV//8OXN/+zh0f9vZmj/r6qr/4F0Zf/VzcP/c3iI/2Zwh/+kp7v/Vlls/6WQbv9j + cmT/bXtp/15cb//WtWj/Z3R0/5easf/gvnP/Z22P/1Ree/+Ug2n/t51o/3x5g/8zQsL/paOs/8C5tv9Y + gL//lpOg/1pna/9hb2T/e32Q/+bDdP+ulmj/+u7Z/4OJov/EqHH/1bZx/5yMd/98hZL/W1ho/4B0bP9z + am3/4djO/252jP+Rgm7/d29u/350b/9GTGv/uqFw/7CZcP+GeWz/3Llq/+3Jdv/fvXL/y65x/6qosf/3 + z3T/9M50/25ocf9baWL/TFFp/5mHb/+Uh3r/i31s/4yAdP/Wz8n/Rktn/6+Yb//cu3H/j5Ov/7aecf+C + hZP/ppR3/1ldYv9TYWH/opF3/0lWvv9SVnH/X21i/4Z4Zv8+gNP/oI1u/7yhaf88TvL/iH1w/6CPd/+E + eW7/yq1x/8esdf9xgGv/dG5y//Hm1f/Rs3L/qZRw/5uhs//Or2r/pI9v/3Jpa/+UhG7/lYRt/+K+av9K + V7r/l4Zp//7y3f9ndWb/X21n//bQd//30Hf/ppNy//vUdf92bm3/WGZh/9Cxcf93f5P/aXKH/5eFbv9M + UW3/gXRo/392cP/nxHf/XVlq//3x2/9vZ2v/rZdy/2Z0YP+IfXP/1bVs/9i5cv+CiaX/g3Zo/4x7af9l + dF7/iHto/41+av/NsHH/xqp0//jSeP/TtXX/Xlto/8rDw/9ufWr/3bxy/5qIbv+Ge27/3btq/9u6c/+W + hm7/4r90/0dMbf+8onD/W15i/6mTcv+Whm3///Td/9y8c//16tj/9+vW/6SSdv9ueIv/Wldq/zA5Z//W + tWr/aHZg/5OCbf/40XT/ycLC/2RyYP+lprr/aGyO/3Rrbv+nlXb/8+jW/52KcP+ei2//mIdu/9O0cf91 + bGf/Y2aF/x1ry/9eXXD/gHVt/4d5bf9NUGn/mohv/4x9bf+MfGj/+dN4/967af/iwHP/W1hq/9K0cf/F + qXH/1rZy/4Z5Z//Ss3H/0LJx/5ODbf8qmf//uLKx/0pPYv/Cpmj/sKqr/6WQb/9kcmT/hImi/7GZcP9G + S2j/Uldx/4Z4Z//y59X/l4Zu/2V0X//OsHH/3rxy/6SSd/9veIv/0rRy/9Kzcv/QsnL/k4Nu/wAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGiUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABem/nd + kgAAAAAAAAAAAAAAAADWIQAAAAAAAAAAAAAA+q3o/5QyUQAAAAAAAAAAAAAABukMPgAAAJZPAAAAAHmO + NdhWQ+emmgAAAAAAAAAAAAAACHQEAADCjG4AAAChu6OG/v3ZUGgJDQAAAAAAAAAAAAAAAC1gN+/GXwAA + zo9n4Xtd4kyGgxoAAAAAAAAAAAAAAAAAAB1BoKCTAAB84LLuhFrHsXZLAAAAAAAAAAAAAAAAAACVcqDK + p0BpABBN5Mguw+RXqAAAAAAAAAAAAAAAAAAA+y/3I6ASa2XM6/JqSNJViqUAAAAAAAAAAAAAAAAAAKQz + fTCwjSpOva/zGWbNtxMmAAAAAAAAAAAAAAAAAAAAAIIfSitCJUV/nRZxHNVEcwAAAAAAAAAAAAAAAAAA + AAAAAAAAAMvqHs/1nck2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJb8FMnwM/1nQcsAAAAAAAAAAAAAAAA + AAAAAAAAAABs3p/EbZjtHs/1iykYAAAAAAAAAAAAAAAAAAAAAAAAfqs1AtHaurgPHr8kPxEAAAAAAAAA + AAAAAAAAAAAAAG9YvIXmkdABRjQ9JCIFDgsAAAAAAAAAAAAAAAAAAABkrL6X3EfTAoE8AAMVO3eJAAAA + AAAAAAAAAAAAAAAASZC50qobY55ZiNQAAABwFAAAAAAAAAAAAAAAAAAAAKmP/JxnyPiHthflAAAAAAAA + AAAAAAAAAAAAAAAAAAAAs+zb43Xx9rXFrgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMTlc45xUtPQAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAeDlhgDgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1yDfmQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ + //////////////////7////8f///+D/+f/Af/DngD/4xwAf/gYAP/8GAH/+AgD//AAB//gAA//8AAf// + 8A///8AH//+AA///AAP//gAB//wAg//4AOf/8AH///AD///4B////A////4f////P/////////////// + /////////ygAAAAgAAAAQAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/WmJn/6+ZcP+m + pbL/YGmL/0BOu/9Xfbz/9OnW/z1/0f/fvXH/iXxs/4yQsf8qmf//f4KV/zxO8P/HwL3/AAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAA + AAAAAAAAKaAAAAAAAAAAAAAAAAAAAZmqAAAAAAAACIAAAAAAACmqmaAAAAAAAGzGAARAAAKZqpmqAAAA + AAAIhABBEACimpmqmUAAAAAAAAERERACkhmZqpoAAAAAAAAAEREQCZoimpIQAAAAAAAADRERGwQZkhma + AAAAAAAAAEEREd9BEpoqoAAAAAAAAAsaqh138RGpkQAAAAAAAAAAPdTXd38RQqAAAAAAAAAAAAAAM3d3 + 9AAAAAAAAAAAAAAAo9E3d38wAAAAAAAAAAAAApIRE3d3+wAAAAAAAAAAAKKaIRE3d7UAAAAAAAAAAAKa + GZIdv31esAAAAAAAAACpmqKaIwPV5QAAAAAAAAACIqmaGZoABVAAAAAAAAAAqZEpmqKgAAAAAAAAAAAA + AKKiIqmRAAAAAAAAAAAAAAABKSEpoAAAAAAAAAAAAAAAAKKpqgAAAAAAAAAAAAAAAAABKaAAAAAAAAAA + AAAAAAAAAKoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////7////8f///+D/+f/Af/DngD/4xwAf/ + gYAP/8GAH/+AgD//AAB//gAA//8AAf//8A///8AH//+AA///AAP//gAB//wAg//4AOf/8AH///AD///4 + B////A////4f////P////////////////////////ygAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3 + amNnY1tgYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNNnygWUahSAAAAAAAAAAAAAAAAAAAAAAAAAABp + YWlhvqV2/6uVbf9bUl1aAAAAAAAAAAAAAAAAAAAAAAAAAAAoacGgMoz3/w8fdCE5RVk/RVBjjQAAAABg + WmhgzbB2/6yWcv/BpnP/qpRt/2tgYGIAAAAAAAAAAAAAAAAAAAAAMFqlJT5enXg9Q2XNX21k8E9gXNlp + XGVOxqt1/6GOcf/Ss3H/rJZy/62Wbv9xZ2BoAAAAAAAAAAAAAAAAAAAAAAAAAAA5OUI2W2hk/2l6YP9h + bHDlTE50jZCAa/3OsHP/oY5x/7qgbf9RS15iAAAAAAAAAAAAAAAAAAAAAAAAAAARImYPT1xm1WJzZPls + dnP/29TK/7q2uP8/RmD8jX5p/7Wcbf9JRl5iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYg0t + NV9bam2Lq+7j1f///+b/trK2/EZKaIdsYltJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABq + Ymhbzq926VJRYOhgZHn/6N/S////6/+2srbWAAB2GgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACC + eGpgv6V1/62Xc//NsHX/UVBf6HZ3i6nLxsP/YGzd/x8vqX0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGR + fmlrsZt0/8KodP++pHD/q5Zz/7GZa/kPDywjJzSScCY3u6goNoYTAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AEAEhnhku8qveP+tl3D/wadz/6yVbP9UUl5kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAATg2Gd2S7yK14/6GNbf9tY15iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABNCoR2ZLdzaWBtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAA//8AAP//AAD/5wAA5sMAAPiDAAD4BwAA8A8AAPwfAAD4HwAA8B8AAODfAADB + /wAA4/8AAPf/AAD//wAA//8AACgAAAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO + sHP/7uPV////6//NsHX/0rNx/82wdv///+b/xqt1/8iteP/CqHT/yq94/7qgbf++pHD/wadz/76ldv/B + pnP/v6V1/62Wbv+xm3T/qpRt/6uVbf+slWz/y8bD/7Wcbf+zm27/rZdz/6uWc/+slnL/rZdw/9vUyv+h + jnH/6N/S/5GBbP+hjW3/nJ2y/5qcsP+cnq7/mJ6p/3ih2P+mnI//pZqM/6WbjP/CvsL/t7O3/7q2uP/S + toL/Moz3/6Slsv8AAAD/YGzd/3B70v9jaIP/aHZt/2l4dP9mdmj/cXt//2x3f/+Nfmn/aXpg/2x2c/9i + YW7/YWBt/2Bkef9baGT/QUhi/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMA4UMDAwMDAwJi4wMCUw + MAUbDxMwMDAwMDAwMzQ1MAceBBsRMDAwMDAwMD86NyIgAB4LMDAwMDAwMDg2Ox0sQDkXMDAwMDAwMDAw + MCMBBiskMDAwMDAwMDAwMC08Ph8CKjAwMDAwMDAwMBAZAz0vFjEwMDAwMDAwMBIJDBoYMDAyMDAwMDAw + MCkKHA0VMDAwMDAwMDAwMDAwKAghMDAwMDAwMDAwMDAwMDAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw + MDAwMDAwMDAwMDAwMDAwMDAwMP//AAD//wAA/+cAAObDAAD4gwAA+AcAAPAPAAD8HwAA+B8AAPAfAADg + 3wAAwf8AAOP/AAD3/wAA//8AAP//AAAoAAAAEAAAACAAAAABAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA/0FIYv+7onP/Moz3/6Wbjf/Tzcf/m52u/2h02P///+n/mohu/7azuf94odj/anhx/+vh1P9i + Y3b/W2hk/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAALMAYAIikAAAAOzAKSIgAAAA/MaSkgAAAAzMWh + kgAAAAAAbYpgAAAAAALu2KAAAAAAIi5lcAAAAAIiIgBwAAAAQiIgAAAAAAAEKQAAAAAAAABAAAAAAAAA + AAAAAAAAAAAAAAAAAAAA//8AAP//AAD/5wAA5sMAAPiDAAD4BwAA8A8AAPwfAAD4HwAA8B8AAODfAADB + /wAA4/8AAPf/AAD//wAA//8AAA== + + + \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/GPS_Out.csproj b/SourceCode/GPS_Out/Source/GPS_Out.csproj new file mode 100644 index 000000000..06f8e7f6d --- /dev/null +++ b/SourceCode/GPS_Out/Source/GPS_Out.csproj @@ -0,0 +1,124 @@ + + + + + Debug + AnyCPU + {A9BF85B8-2178-479E-B41B-4E7F84D56A79} + WinExe + GPS_Out + GPS_Out + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + ..\..\..\AgOpenGPS\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + ..\..\..\AgOpenGPS\ + TRACE + prompt + 4 + + + Resources\satellite.ico + + + + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + Form + + + frmHelp.cs + + + + + + + + + + + + Form1.cs + Designer + + + frmHelp.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/PGNs/PGN100.cs b/SourceCode/GPS_Out/Source/PGNs/PGN100.cs new file mode 100644 index 000000000..5b0875656 --- /dev/null +++ b/SourceCode/GPS_Out/Source/PGNs/PGN100.cs @@ -0,0 +1,117 @@ +using System; +using System.Diagnostics; + +namespace GPS_Out.PGNs +{ + public class PGN100 + { + // data from AOG + // corrected position + // 0 header Hi 128 0x80 + // 1 header Lo 129 0x81 + // 2 source 127 0x7F + // 3 AGIO PGN 100 0x64 + // 4 length 16 + // 5-12 longitude double + // 13-20 latitude double + // 21 CRC + + // corrected position alternate + // 0 header Hi 128 0x80 + // 1 header Lo 129 0x81 + // 2 source 127 0x7F + // 3 AGIO PGN 100 0x64 + // 4 length 24 + // 5-12 longitude double + // 13-20 latitude double + // 21-28 Fix2Fix double + // 29 CRC + + private const byte HeaderCount = 5; + private double cFix2Fix; + private double cLatitude; + private double cLongitude; + private frmStart mf; + private DateTime ReceiveTime; + private bool ExtendedPGN = false; + + public PGN100(frmStart CalledFrom) + { + mf = CalledFrom; + cFix2Fix = 1000; // invalid data flag + } + + public double Fix2FixHeading + { + get + { + if (Connected() && Properties.Settings.Default.UseRollCorrected && ExtendedPGN) + { + return cFix2Fix; + } + else + { + return 1000; + } + } + } + + public double Latitude + { + get + { + if (Connected()) + { + return cLatitude; + } + else + { + return 0; + } + } + } + + public double Longitude + { + get + { + if (Connected()) + { + return cLongitude; + } + else + { + return 0; + } + } + } + + public bool Connected() + { + return (DateTime.Now - ReceiveTime).TotalSeconds < 4; + } + + public void ParseByteData(byte[] Data) + { + try + { + if ((Data.Length > HeaderCount) && (Data.Length == Data[4] + HeaderCount + 1)) + { + ExtendedPGN = (Data[4] == 24); + if (mf.Tls.GoodCRC(Data, 2)) + { + cLongitude = BitConverter.ToDouble(Data, 5); + cLatitude = BitConverter.ToDouble(Data, 13); + if (Data[4] == 24) cFix2Fix = BitConverter.ToDouble(Data, 21); // alternate pgn + ReceiveTime = DateTime.Now; + //mf.Tls.WriteByteFile(Data, "AOGdata.txt"); + } + } + } + catch (Exception ex) + { + mf.Tls.WriteErrorLog("PGN100/ParseByteData: " + ex.ToString()); + } + } + } +} \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/PGNs/PGN54908.cs b/SourceCode/GPS_Out/Source/PGNs/PGN54908.cs new file mode 100644 index 000000000..39bf8d6d4 --- /dev/null +++ b/SourceCode/GPS_Out/Source/PGNs/PGN54908.cs @@ -0,0 +1,312 @@ +using System; + +namespace GPS_Out +{ + public class PGN54908 + { + // data from AGIO + // 0 0x80 + // 1 0x81 + // 2 0x7C + // 3 0xD6 + // 4 0x33 array length - 6 + // 5-12 longitude double + // 13-20 latitude double + // 21-24 headingDual float + // 25-28 heading float + // 29-32 speed float + // 33-36 roll float + // 37-40 altitude float + // 41-42 satellites ushort + // 43 fixQuality + // 44-45 hdopX100 ushort + // 46-47 ageX100 ushort + // 48-49 imuHeading ushort + // 50-51 imuRoll ushort + // 52-53 imuPitch ushort + // 54-55 imuYaw ushort + // 56 CRC + + private const byte cByteCount = 57; + private ushort cAgeX100; + private float cAltitude; + private byte cFixQuality; + private ushort cHdopX100; + private float cHeadingDual; + private float cImuHeading; + private short cImuPitch; + private short cImuRoll; + private ushort cImuYaw; + private double cLatitude; + private double cLongitude; + private float cRoll; + private ushort cSatellites; + private float cSpeed; + private float cTrueHeading; + private frmStart mf; + private DateTime ReceiveTime; + + public PGN54908(frmStart CalledFrom) + { + mf = CalledFrom; + } + + public float Age + { + get + { + if (Connected()) + { + return (float)(cAgeX100 / 100.0); + } + else + { + return 1.8F; + } + } + } + + public float Altitude + { + get + { + if (Connected()) + { + return cAltitude; + } + else + { + return 732.0F; + } + } + } + + public byte FixQuality + { + get + { + if (Connected()) + { + return cFixQuality; + } + else + { + return 4; + } + } + } + + public float HDOP + { + get + { + if (Connected()) + { + return (float)(cHdopX100 / 100.0); + } + else + { + return 7; + } + } + } + + public float HeadingDual + { + get + { + if (Connected()) + { + return cHeadingDual; + } + else + { + return 1000; + } + } + } + + public float IMUheading + { + get + { + if (Connected()) + { + return cImuHeading; + } + else + { + return 1000; + } + } + } + + public float IMUpitch + { + get + { + float Result = 0; + if (Math.Abs(cImuPitch / 10.0) < 30) Result = ((float)(cImuPitch / 10.0)); + return Result; + } + } + + public float IMUroll + { + get + { + float Result = 0; + if (Math.Abs(cImuRoll / 10.0) < 30) Result = ((float)(cImuRoll / 10.0)); + return Result; + } + } + + public ushort IMUyawRate + { + get + { + ushort Result = 0; + if (cImuYaw < 30) Result = cImuYaw; + return Result; + } + } + + public double Latitude + { + get + { + if (Connected()) + { + return cLatitude; + } + else + { + return 0; + } + } + } + + public double Longitude + { + get + { + if (Connected()) + { + return cLongitude; + } + else + { + return 0; + } + } + } + + public float Roll + { + get + { + float Result = 0; + + if (Math.Abs(cRoll) < 30) + { + Result = cRoll; + } + else if (Math.Abs(cImuRoll / 10.0) < 30) + { + Result = (float)(cImuRoll / 10.0); + } + + return Result; + } + } + + public float RollSource1 + { get { return cRoll; } } + + public UInt16 Satellites + { + get + { + if (Connected()) + { + return cSatellites; + } + else + { + return 12; + } + } + } + + public float Speed + { + get + { + if (Connected()) + { + if (cSpeed < 100) + { + return cSpeed; + } + else + { + return 0; + } + } + else + { + return 4.8F; + } + } + } + + public float TrueHeading + { + get + { + if (Connected()) + { + return cTrueHeading; + } + else + { + return 1000; + } + } + } + + public bool Connected() + { + return (DateTime.Now - ReceiveTime).TotalSeconds < 10; + } + + public bool ParseByteData(byte[] Data) + { + bool Result = false; + if (mf.Tls.GoodCRC(Data, 2)) + { + cLongitude = BitConverter.ToDouble(Data, 5); + cLatitude = BitConverter.ToDouble(Data, 13); + cHeadingDual = BitConverter.ToSingle(Data, 21); + cTrueHeading = BitConverter.ToSingle(Data, 25); + cSpeed = BitConverter.ToSingle(Data, 29); + cRoll = BitConverter.ToSingle(Data, 33); + cAltitude = BitConverter.ToSingle(Data, 37); + cSatellites = BitConverter.ToUInt16(Data, 41); + cFixQuality = Data[43]; + cHdopX100 = BitConverter.ToUInt16(Data, 44); + cAgeX100 = BitConverter.ToUInt16(Data, 46); + cImuHeading = (float)(BitConverter.ToUInt16(Data, 48) / 10.0); + cImuRoll = (short)BitConverter.ToInt16(Data, 50); + cImuPitch = (short)BitConverter.ToInt16(Data, 52); + cImuYaw = BitConverter.ToUInt16(Data, 54); + + ReceiveTime = DateTime.Now; + Result = true; + + //mf.Tls.WriteByteFile(Data, "AGIOdata.txt"); + } + return Result; + } + } +} \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/PGNs/PGN_GGA.cs b/SourceCode/GPS_Out/Source/PGNs/PGN_GGA.cs new file mode 100644 index 000000000..d581ff8f3 --- /dev/null +++ b/SourceCode/GPS_Out/Source/PGNs/PGN_GGA.cs @@ -0,0 +1,98 @@ +using System; +using System.Globalization; + +namespace GPS_Out +{ + public class PGN_GGA + { + //$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M , ,*47 + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 + // Time Lat Lon FixSatsOP Alt + //Where: + //GGA Global Positioning System Fix Data + // 123519 Fix taken at 12:35:19 UTC + // 4807.038,N Latitude 48 deg 07.038' N + // 01131.000,E Longitude 11 deg 31.000' E + // 1 Fix quality: 0 = invalid + // 1 = GPS fix(SPS) + // 2 = DGPS fix + // 3 = PPS fix + // 4 = Real Time Kinematic + // 5 = Float RTK + // 6 = estimated(dead reckoning) (2.3 feature) + // 7 = Manual input mode + // 8 = Simulation mode + // 08 Number of satellites being tracked + // 0.9 Horizontal dilution of position + // 545.4, M Altitude, Meters, above mean sea level + // 46.9, M Height of geoid(mean sea level) above WGS84 + // ellipsoid + // (empty field) time in seconds since last DGPS update + // (empty field) DGPS station ID number + // *47 the checksum data, always begins with* + + private string cSentence; + private frmStart mf; + + public PGN_GGA(frmStart CalledFrom) + { + mf = CalledFrom; + } + + public string Sentence + { get { return cSentence; } } + + public string Build() + { + double lat; + double lon; + if (mf.AOGdata.Connected() && Properties.Settings.Default.UseRollCorrected) + { + lat = mf.AOGdata.Latitude; + lon = mf.AOGdata.Longitude; + } + else + { + lat = mf.AGIOdata.Latitude; + lon = mf.AGIOdata.Longitude; + } + + cSentence = Properties.Settings.Default.SentenceStart + "GGA"; + cSentence += "," + DateTime.UtcNow.ToString("HHmmss.ff", CultureInfo.InvariantCulture); + + string NS = ",N"; + if (lat < 0) NS = ",S"; + lat = Math.Abs(lat); + cSentence += "," + ((int)lat).ToString("D2"); + double Mins = (double)(lat - (int)lat) * 60.0; + cSentence += Mins.ToString("00.0000000", CultureInfo.InvariantCulture); + cSentence += NS; + + string EW = ",E"; + if (lon < 0) EW = ",W"; + lon = Math.Abs(lon); + cSentence += "," + ((int)lon).ToString("D3"); + Mins = (double)(lon - (int)lon) * 60.0; + cSentence += Mins.ToString("00.0000000", CultureInfo.InvariantCulture); + cSentence += EW; + + cSentence += "," + mf.AGIOdata.FixQuality.ToString(); + + cSentence += "," + mf.AGIOdata.Satellites.ToString("00"); + + cSentence += "," + mf.AGIOdata.HDOP.ToString("N2", CultureInfo.InvariantCulture); + + cSentence += "," + mf.AGIOdata.Altitude.ToString("N3", CultureInfo.InvariantCulture) + ",M"; + + cSentence += ",0.0,M"; + + cSentence += "," + mf.AGIOdata.Age.ToString("N1", CultureInfo.InvariantCulture) + ","; + + cSentence += "0000*"; + string Hex = mf.CheckSum(cSentence).ToString("X2"); + cSentence += Hex; + + return cSentence; + } + } +} \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/PGNs/PGN_GSA.cs b/SourceCode/GPS_Out/Source/PGNs/PGN_GSA.cs new file mode 100644 index 000000000..a83af4b17 --- /dev/null +++ b/SourceCode/GPS_Out/Source/PGNs/PGN_GSA.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GPS_Out.PGNs +{ + public class PGN_GSA + { + #region GSA message + // $GNGSA,A,3,21,5,29,25,12,10,26,2,,,,,1.2,0.7,1.0*27 + + // A mode automatic/manual + // 3 3D fix + // 21 sat ID 1 + // 5 sat ID 2 + // 29 sat ID 3 + // 25 sat ID 4 + // 12 sat ID 5 + // 10 sat ID 6 + // 26 sat ID 7 + // 2 sat ID 8 + // sat ID 9 + // sat ID 10 + // sat ID 11 + // sat ID 12 + // 1.2 PDOP + // 0.7 HDOP + // 1.0 VDOP + // *27 checksum + + #endregion GSA message + + private string cSentence; + private frmStart mf; + + public PGN_GSA(frmStart CalledFrom) + { + mf = CalledFrom; + } + public string Sentence + { get { return cSentence; } } + + public string Build() + { + cSentence = Properties.Settings.Default.SentenceStart + "GSA,A,3,01,02,03,,,,,,,,,,2"; + cSentence += "," + mf.AGIOdata.HDOP.ToString("N2", CultureInfo.InvariantCulture); + cSentence += ",2"; + + cSentence += "*"; + string Hex = mf.CheckSum(cSentence).ToString("X2"); + cSentence += Hex; + + return cSentence; + } + } +} diff --git a/SourceCode/GPS_Out/Source/PGNs/PGN_RMC.cs b/SourceCode/GPS_Out/Source/PGNs/PGN_RMC.cs new file mode 100644 index 000000000..f41726542 --- /dev/null +++ b/SourceCode/GPS_Out/Source/PGNs/PGN_RMC.cs @@ -0,0 +1,89 @@ +using System; +using System.Globalization; + +namespace GPS_Out +{ + public class PGN_RMC + { + #region RMC Message + + //$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A + + //RMC Recommended Minimum sentence C + //123519 Fix taken at 12:35:19 UTC + //A Status A=active or V=Void. + //4807.038,N Latitude 48 deg 07.038' N + //01131.000,E Longitude 11 deg 31.000' E + //022.4 Speed over the ground in knots + //084.4 Track angle in degrees True + //230394 Date - 23rd of March 1994 + //003.1,W Magnetic Variation + //*6A * Checksum + + #endregion RMC Message + + private string cSentence; + private frmStart mf; + + public PGN_RMC(frmStart CalledFrom) + { + mf = CalledFrom; + } + + public string Sentence + { get { return cSentence; } } + + public string Build() + { + double lat; + double lon; + if (mf.AOGdata.Connected() && Properties.Settings.Default.UseRollCorrected) + { + lat = mf.AOGdata.Latitude; + lon = mf.AOGdata.Longitude; + } + else + { + lat = mf.AGIOdata.Latitude; + lon = mf.AGIOdata.Longitude; + } + + cSentence = Properties.Settings.Default.SentenceStart + "RMC"; + cSentence += "," + DateTime.UtcNow.ToString("HHmmss.ff", CultureInfo.InvariantCulture); + + cSentence += ",A"; + + string NS = ",N"; + if (lat < 0) NS = ",S"; + lat = Math.Abs(lat); + cSentence += "," + ((int)lat).ToString("D2"); + double Mins = (double)(lat - (int)lat) * 60.0; + cSentence += Mins.ToString("00.0000000", CultureInfo.InvariantCulture); + cSentence += NS; + + string EW = ",E"; + if (lon < 0) EW = ",W"; + lon = Math.Abs(lon); + cSentence += "," + ((int)lon).ToString("D3"); + Mins = (double)(lon - (int)lon) * 60.0; + cSentence += Mins.ToString("00.0000000", CultureInfo.InvariantCulture); + cSentence += EW; + + double knots = mf.AGIOdata.Speed * 0.5399568; + cSentence += "," + knots.ToString("000.0", CultureInfo.InvariantCulture); + + cSentence += "," + mf.Heading().ToString("000.0", CultureInfo.InvariantCulture); + + cSentence += "," + DateTime.UtcNow.ToString("ddMMyy"); + + cSentence += ",0.0,W"; + + cSentence += ",*"; + //cSentence += "*"; + string Hex = mf.CheckSum(cSentence).ToString("X2"); + cSentence += Hex; + + return cSentence; + } + } +} \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/PGNs/PGN_VTG.cs b/SourceCode/GPS_Out/Source/PGNs/PGN_VTG.cs new file mode 100644 index 000000000..a20563606 --- /dev/null +++ b/SourceCode/GPS_Out/Source/PGNs/PGN_VTG.cs @@ -0,0 +1,48 @@ +using System.Globalization; + +namespace GPS_Out +{ + public class PGN_VTG + { + // $GPVTG,054.7,T,034.4,M,005.5,N,010.2,K*48 + //* + // VTG Track made good and ground speed + // 054.7,T True track made good(degrees) + // 034.4,M Magnetic track made good + // 005.5,N Ground speed, knots + // 010.2,K Ground speed, Kilometers per hour + // *48 Checksum + + private string cSentence; + private frmStart mf; + + public PGN_VTG(frmStart CalledFrom) + { + mf = CalledFrom; + } + + public string Sentence + { get { return cSentence; } } + + public string Build() + { + cSentence = Properties.Settings.Default.SentenceStart + "VTG"; + + cSentence += "," + mf.Heading().ToString("000.0", CultureInfo.InvariantCulture) + ",T"; + + cSentence += "," + mf.Heading().ToString("000.0", CultureInfo.InvariantCulture) + ",M"; + + double knots = mf.AGIOdata.Speed * 0.5399568; + cSentence += "," + knots.ToString("000.0", CultureInfo.InvariantCulture) + ",N"; + + cSentence += "," + mf.AGIOdata.Speed.ToString("000.0", CultureInfo.InvariantCulture) + ",K"; + + cSentence += ",*"; + //cSentence += "*"; + string Hex = mf.CheckSum(cSentence).ToString("X2"); + cSentence += Hex; + + return cSentence; + } + } +} \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/PGNs/PGN_ZDA.cs b/SourceCode/GPS_Out/Source/PGNs/PGN_ZDA.cs new file mode 100644 index 000000000..6de36f89b --- /dev/null +++ b/SourceCode/GPS_Out/Source/PGNs/PGN_ZDA.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GPS_Out.PGNs +{ + public class PGN_ZDA + { + #region ZDA Message + + //$GPZDA,160012.71,11,03,2004,-01,00*7D + + //ZDA time and date + //160012 hhmmss.ss + //11 day, 01 to 31 + //03 month, 01 to 12 + //2004 year, 4 digits + //-01 local time zone description, 00 to +-13 hours + //00 local time zone description, 00 to 59, same sign as local hours + //*7D checksum + + #endregion ZDA Message + + private string cSentence; + private frmStart mf; + + public PGN_ZDA(frmStart CalledFrom) + { + mf = CalledFrom; + } + public string Sentence + { get { return cSentence; } } + + public string Build() + { + cSentence = Properties.Settings.Default.SentenceStart + "ZDA"; + cSentence += "," + DateTime.UtcNow.ToString("HHmmss.fff", CultureInfo.InvariantCulture); + cSentence += "," + DateTime.UtcNow.Day.ToString("00"); + cSentence += "," + DateTime.UtcNow.Month.ToString("00"); + cSentence += "," + DateTime.UtcNow.Year.ToString("0000"); + + var offset = TimeZoneInfo.Local.GetUtcOffset(DateTime.UtcNow); + cSentence += "," + offset.Hours.ToString("00"); + cSentence += "," + offset.Minutes.ToString("00"); + + cSentence += "*"; + string Hex = mf.CheckSum(cSentence).ToString("X2"); + cSentence += Hex; + + return cSentence; + } + } +} diff --git a/SourceCode/GPS_Out/Source/Program.cs b/SourceCode/GPS_Out/Source/Program.cs new file mode 100644 index 000000000..db9c5439e --- /dev/null +++ b/SourceCode/GPS_Out/Source/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace GPS_Out +{ + internal static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new frmStart()); + } + } +} diff --git a/SourceCode/GPS_Out/Source/Properties/AssemblyInfo.cs b/SourceCode/GPS_Out/Source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..163555b31 --- /dev/null +++ b/SourceCode/GPS_Out/Source/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("GPS_Out")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("GPS_Out")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("a9bf85b8-2178-479e-b41b-4e7f84d56a79")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SourceCode/GPS_Out/Source/Properties/Resources.Designer.cs b/SourceCode/GPS_Out/Source/Properties/Resources.Designer.cs new file mode 100644 index 000000000..9c3cd8c94 --- /dev/null +++ b/SourceCode/GPS_Out/Source/Properties/Resources.Designer.cs @@ -0,0 +1,123 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace GPS_Out.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GPS_Out.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] Example { + get { + object obj = ResourceManager.GetObject("Example", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Off { + get { + object obj = ResourceManager.GetObject("Off", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap On { + get { + object obj = ResourceManager.GetObject("On", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). + /// + internal static System.Drawing.Icon satellite { + get { + object obj = ResourceManager.GetObject("satellite", resourceCulture); + return ((System.Drawing.Icon)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap ScanPorts { + get { + object obj = ResourceManager.GetObject("ScanPorts", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Update { + get { + object obj = ResourceManager.GetObject("Update", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/SourceCode/GPS_Out/Source/Properties/Resources.resx b/SourceCode/GPS_Out/Source/Properties/Resources.resx new file mode 100644 index 000000000..17c197ee1 --- /dev/null +++ b/SourceCode/GPS_Out/Source/Properties/Resources.resx @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\On.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\satellite.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Example1.rcs;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\Off.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ConS_SourcesRoll.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ScanPorts.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/Properties/Settings.Designer.cs b/SourceCode/GPS_Out/Source/Properties/Settings.Designer.cs new file mode 100644 index 000000000..8f9a4b1ae --- /dev/null +++ b/SourceCode/GPS_Out/Source/Properties/Settings.Designer.cs @@ -0,0 +1,230 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace GPS_Out.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.12.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string FilesDir { + get { + return ((string)(this["FilesDir"])); + } + set { + this["FilesDir"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("Default.rcs")] + public string FileName { + get { + return ((string)(this["FileName"])); + } + set { + this["FileName"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("210, 220, 230")] + public global::System.Drawing.Color DayColour { + get { + return ((global::System.Drawing.Color)(this["DayColour"])); + } + set { + this["DayColour"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("2")] + public int GGA { + get { + return ((int)(this["GGA"])); + } + set { + this["GGA"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public int RMC { + get { + return ((int)(this["RMC"])); + } + set { + this["RMC"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("1")] + public int VTG { + get { + return ((int)(this["VTG"])); + } + set { + this["VTG"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public int ZDA { + get { + return ((int)(this["ZDA"])); + } + set { + this["ZDA"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool AutoConnect { + get { + return ((bool)(this["AutoConnect"])); + } + set { + this["AutoConnect"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool AutoHide { + get { + return ((bool)(this["AutoHide"])); + } + set { + this["AutoHide"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool UseRollCorrected { + get { + return ((bool)(this["UseRollCorrected"])); + } + set { + this["UseRollCorrected"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool SendGSA { + get { + return ((bool)(this["SendGSA"])); + } + set { + this["SendGSA"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("Com1")] + public string Port { + get { + return ((string)(this["Port"])); + } + set { + this["Port"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("57600")] + public int Baud { + get { + return ((int)(this["Baud"])); + } + set { + this["Baud"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool SerialSuccessful { + get { + return ((bool)(this["SerialSuccessful"])); + } + set { + this["SerialSuccessful"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("127.255.255.255")] + public string EndPointAOG { + get { + return ((string)(this["EndPointAOG"])); + } + set { + this["EndPointAOG"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("127.255.255.255")] + public string EndPointAGIO { + get { + return ((string)(this["EndPointAGIO"])); + } + set { + this["EndPointAGIO"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("$GP")] + public string SentenceStart { + get { + return ((string)(this["SentenceStart"])); + } + set { + this["SentenceStart"] = value; + } + } + } +} diff --git a/SourceCode/GPS_Out/Source/Properties/Settings.settings b/SourceCode/GPS_Out/Source/Properties/Settings.settings new file mode 100644 index 000000000..2adfdb3dd --- /dev/null +++ b/SourceCode/GPS_Out/Source/Properties/Settings.settings @@ -0,0 +1,57 @@ + + + + + + + + + Default.rcs + + + 210, 220, 230 + + + 2 + + + 0 + + + 1 + + + 0 + + + False + + + False + + + True + + + False + + + Com1 + + + 57600 + + + False + + + 127.255.255.255 + + + 127.255.255.255 + + + $GP + + + \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/Resources/ConS_SourcesRoll.png b/SourceCode/GPS_Out/Source/Resources/ConS_SourcesRoll.png new file mode 100644 index 000000000..9e0781e3d Binary files /dev/null and b/SourceCode/GPS_Out/Source/Resources/ConS_SourcesRoll.png differ diff --git a/SourceCode/GPS_Out/Source/Resources/Example.rcs b/SourceCode/GPS_Out/Source/Resources/Example.rcs new file mode 100644 index 000000000..8227761ca --- /dev/null +++ b/SourceCode/GPS_Out/Source/Resources/Example.rcs @@ -0,0 +1,267 @@ +PIDMinPWM1=10 +PIDLowMax2=0 +QuantityUnits1=2 +ProductSection_2_Prod_0=True +MinPWM0=0 +PIDbrakepoint2=0 +ProductSection_15_Prod_4=False +OffRateAlarm4=False +Sec0_width=914.4 +ProductSection_12_Prod_1=False +OffRateAlarm0=False +OffRateAlarm1=False +OffRateAlarm2=False +OffRateAlarm3=False +PIDMinPWM0=30 +PIDLowMax3=80 +QuantityUnits2=4 +ProductSection_10_Prod_2=False +frmComm.Left=0 +ProductSection_9_Prod_4=False +PIDbrakepoint3=20 +VariableRate1=0 +ProductSection_14_Prod_3=False +ProductSection_5_Prod_3=False +FlowCal0=17 +VCN2=0 +OffRateSetting2=0 +ProductSection_4_Prod_0=False +PIDMinPWM3=30 +PIDLowMax0=80 +ProductSection_9_Prod_1=False +ProductSection_11_Prod_1=False +QuantityUnits3=0 +UseVCN1=True +PIDMinPWM4=30 +PIDbrakepoint0=20 +ProductSection_3_Prod_0=False +OffRateSetting1=0 +LastAccQuantity4=0 +UseVCN2=False +ProductSection_9_Prod_2=False +ProductSection_13_Prod_3=False +cSimulationType1=VirtualNano +PIDMinPWM2=10 +PIDLowMax1=0 +CoverageUnits2=1 +MinPWM4=0 +MinUPM2=0 +ProductSection_7_Prod_0=False +PIDbrakepoint1=0 +ProductSection_4_Prod_4=False +UseMultiPulse2=False +CountsRev4=0 +RateSet1=155 +ProductSection_1_Prod_2=True +ProductSection_0_Prod_0=True +frmMenu.Top=420 +MinPWM1=1 +TimedAdjustment4=0 +LastAccQuantity2=0 +ProductSection_10_Prod_4=False +Sec1_enabled=True +ProductSection_4_Prod_3=False +VCN0=0 +ProductSection_12_Prod_3=False +Coverage1=0 +ProductSection_2_Prod_3=False +QuantityApplied3=0 +ProductSection_7_Prod_4=False +ProductSection_8_Prod_1=False +SendTime3=0 +FormAbout.Left=325 +ProductName0=herbicide +ProductSection_6_Prod_3=False +Sec0_SwitchID=0 +ProductSection_2_Prod_1=True +cSimulationType3=None +ProductSection_1_Prod_0=True +ProductSection_1_Prod_3=False +ProductSection_13_Prod_2=False +ProductSection_4_Prod_1=False +ProductSection_11_Prod_3=False +ProductSection_14_Prod_2=False +Coverage2=0 +Coverage3=0 +Coverage0=0 +RateSet3=0 +QuantityApplied4=0 +ProductSection_9_Prod_0=False +PIDbrakepoint4=20 +TimedAdjustment2=0 +ProductSection_1_Prod_4=False +ProductSection_6_Prod_4=False +CountsRev1=5 +ProductSection_7_Prod_1=False +MinUPM4=0 +ProductSection_3_Prod_3=False +SensorID4=0 +SensorID1=0 +SensorID0=0 +SensorID3=0 +SensorID2=0 +ProductSection_7_Prod_3=False +ProductSection_15_Prod_1=False +ProductSection_2_Prod_2=True +MinUPM1=0 +CountsRev0=5 +PIDHighMax4=100 +frmSections.Top=0 +TankRemaining3=0 +KP2=50 +ProductSection_0_Prod_3=False +ProductSection_15_Prod_2=False +ProductSection_7_Prod_2=False +ProductSection_14_Prod_0=False +ProductSection_6_Prod_1=False +PIDdeadband0=4 +ProductSection_12_Prod_2=False +CountsRev3=0 +ValveType4=0 +VariableRate4=0 +ProductSection_8_Prod_0=False +VariableRate0=0 +FormSettings.Left=870 +VariableRate2=0 +ProductSection_6_Prod_2=False +VCN1=323 +ProductSection_14_Prod_4=False +FlowCal1=20 +VCN3=0 +CountsRev2=30 +ProductSection_8_Prod_3=False +ValveType3=0 +ProductName4=Product 5 +CoverageUnits4=0 +ProductSection_11_Prod_2=False +RCportName_0_0=COM10 +UseVCN0=False +CoverageUnits0=0 +ProductSection_0_Prod_2=True +cSimulationType0=VirtualNano +FormStart.Top=205 +ProductSection_5_Prod_4=False +PIDHighMax1=100 +LastAccQuantity0=0 +ProductSection_8_Prod_4=False +TankRemaining0=5000 +ProductSection_13_Prod_4=False +TimedAdjustment1=0 +UseVCN3=False +ProductSection_15_Prod_3=False +SendTime4=0 +ProductSection_12_Prod_0=False +ModuleID4=99 +ModuleID2=2 +ModuleID3=99 +ModuleID0=0 +ModuleID1=1 +QuantityApplied1=0 +OffRateSetting4=0 +KP4=50 +TankSize1=5000 +TankSize2=5000 +TankSize3=0 +TankSize4=0 +ProductSection_11_Prod_4=False +ValveType1=2 +ProductSection_5_Prod_2=False +UseMultiPulse1=False +PIDHighMax3=100 +PIDdeadband2=4 +ProductSection_12_Prod_4=False +OffRateSetting3=0 +KP1=50 +ValveType2=2 +FormAbout.Top=373 +ProductSection_11_Prod_0=False +FlowCal3=0 +ProductSection_10_Prod_0=False +TankRemaining2=5000 +LastAccQuantity1=0 +ProductName3=Product 4 +PIDHighMax0=100 +ValveType0=0 +CoverageUnits3=0 +PIDdeadband4=4 +UseMultiPulse0=False +ProductSection_6_Prod_0=False +MinUPM0=0 +QuantityUnits4=0 +ProductSection_2_Prod_4=False +RCportBaud_0_0=38400 +Sec1_width=914.4 +SendTime0=0 +MinPWM3=0 +SendTime2=0 +WaitTime0=0 +WaitTime1=500 +WaitTime2=0 +WaitTime3=0 +WaitTime4=0 +FormSettings.Top=203 +MinUPM3=0 +FormStart.Left=572 +UseMultiPulse3=False +TankSize0=5000 +RateSet0=8.7 +VariableRate3=0 +ProductSection_8_Prod_2=False +UseMultiPulse4=False +cSimulationType4=None +LastAccQuantity3=0 +QuantityApplied0=0 +ProductSection_10_Prod_3=False +ProductSection_4_Prod_2=False +TankRemaining4=0 +CurrentPage=1 +FlowCal4=0 +Coverage4=0 +TimedAdjustment3=0 +PIDdeadband1=4 +CoverageUnits1=0 +Sec0_enabled=True +ProductSection_1_Prod_1=True +UseVCN4=False +SendTime1=200 +RateSet4=0 +ProductSection_5_Prod_0=False +TankRemaining1=5000 +ProductSection_3_Prod_4=False +cSimulationType2=VirtualNano +KP3=50 +ProductSection_10_Prod_1=False +Sec1_SwitchID=1 +ProductSection_14_Prod_1=False +PIDLowMax4=80 +PIDHighMax2=100 +PIDdeadband3=4 +ProductSection_3_Prod_1=False +OffRateSetting0=0 +BroadCastIP=192.168.1.255 +RateSet2=100 +KP0=50 +ProductName1=Fert. +ProductSection_9_Prod_3=False +Sec2_width=914.4 +QuantityApplied2=0 +ProductSection_13_Prod_0=False +ProductSection_0_Prod_4=False +frmMenu.Left=328 +ProductSection_3_Prod_2=False +TimedAdjustment0=0 +FlowCal2=75 +QuantityUnits0=1 +ProductName2=wheat +ProductSection_5_Prod_1=False +VCN4=0 +ProductSection_13_Prod_1=False +Sec2_enabled=True +ProductSection_15_Prod_0=False +ProductSection_0_Prod_1=True +MinPWM2=0 +frmSections.Left=0 +RCportSuccessful_0_0=false +UseInches=True +Sec2_SwitchID=2 +frmComm.Top=0 diff --git a/SourceCode/GPS_Out/Source/Resources/Example1.rcs b/SourceCode/GPS_Out/Source/Resources/Example1.rcs new file mode 100644 index 000000000..8227761ca --- /dev/null +++ b/SourceCode/GPS_Out/Source/Resources/Example1.rcs @@ -0,0 +1,267 @@ +PIDMinPWM1=10 +PIDLowMax2=0 +QuantityUnits1=2 +ProductSection_2_Prod_0=True +MinPWM0=0 +PIDbrakepoint2=0 +ProductSection_15_Prod_4=False +OffRateAlarm4=False +Sec0_width=914.4 +ProductSection_12_Prod_1=False +OffRateAlarm0=False +OffRateAlarm1=False +OffRateAlarm2=False +OffRateAlarm3=False +PIDMinPWM0=30 +PIDLowMax3=80 +QuantityUnits2=4 +ProductSection_10_Prod_2=False +frmComm.Left=0 +ProductSection_9_Prod_4=False +PIDbrakepoint3=20 +VariableRate1=0 +ProductSection_14_Prod_3=False +ProductSection_5_Prod_3=False +FlowCal0=17 +VCN2=0 +OffRateSetting2=0 +ProductSection_4_Prod_0=False +PIDMinPWM3=30 +PIDLowMax0=80 +ProductSection_9_Prod_1=False +ProductSection_11_Prod_1=False +QuantityUnits3=0 +UseVCN1=True +PIDMinPWM4=30 +PIDbrakepoint0=20 +ProductSection_3_Prod_0=False +OffRateSetting1=0 +LastAccQuantity4=0 +UseVCN2=False +ProductSection_9_Prod_2=False +ProductSection_13_Prod_3=False +cSimulationType1=VirtualNano +PIDMinPWM2=10 +PIDLowMax1=0 +CoverageUnits2=1 +MinPWM4=0 +MinUPM2=0 +ProductSection_7_Prod_0=False +PIDbrakepoint1=0 +ProductSection_4_Prod_4=False +UseMultiPulse2=False +CountsRev4=0 +RateSet1=155 +ProductSection_1_Prod_2=True +ProductSection_0_Prod_0=True +frmMenu.Top=420 +MinPWM1=1 +TimedAdjustment4=0 +LastAccQuantity2=0 +ProductSection_10_Prod_4=False +Sec1_enabled=True +ProductSection_4_Prod_3=False +VCN0=0 +ProductSection_12_Prod_3=False +Coverage1=0 +ProductSection_2_Prod_3=False +QuantityApplied3=0 +ProductSection_7_Prod_4=False +ProductSection_8_Prod_1=False +SendTime3=0 +FormAbout.Left=325 +ProductName0=herbicide +ProductSection_6_Prod_3=False +Sec0_SwitchID=0 +ProductSection_2_Prod_1=True +cSimulationType3=None +ProductSection_1_Prod_0=True +ProductSection_1_Prod_3=False +ProductSection_13_Prod_2=False +ProductSection_4_Prod_1=False +ProductSection_11_Prod_3=False +ProductSection_14_Prod_2=False +Coverage2=0 +Coverage3=0 +Coverage0=0 +RateSet3=0 +QuantityApplied4=0 +ProductSection_9_Prod_0=False +PIDbrakepoint4=20 +TimedAdjustment2=0 +ProductSection_1_Prod_4=False +ProductSection_6_Prod_4=False +CountsRev1=5 +ProductSection_7_Prod_1=False +MinUPM4=0 +ProductSection_3_Prod_3=False +SensorID4=0 +SensorID1=0 +SensorID0=0 +SensorID3=0 +SensorID2=0 +ProductSection_7_Prod_3=False +ProductSection_15_Prod_1=False +ProductSection_2_Prod_2=True +MinUPM1=0 +CountsRev0=5 +PIDHighMax4=100 +frmSections.Top=0 +TankRemaining3=0 +KP2=50 +ProductSection_0_Prod_3=False +ProductSection_15_Prod_2=False +ProductSection_7_Prod_2=False +ProductSection_14_Prod_0=False +ProductSection_6_Prod_1=False +PIDdeadband0=4 +ProductSection_12_Prod_2=False +CountsRev3=0 +ValveType4=0 +VariableRate4=0 +ProductSection_8_Prod_0=False +VariableRate0=0 +FormSettings.Left=870 +VariableRate2=0 +ProductSection_6_Prod_2=False +VCN1=323 +ProductSection_14_Prod_4=False +FlowCal1=20 +VCN3=0 +CountsRev2=30 +ProductSection_8_Prod_3=False +ValveType3=0 +ProductName4=Product 5 +CoverageUnits4=0 +ProductSection_11_Prod_2=False +RCportName_0_0=COM10 +UseVCN0=False +CoverageUnits0=0 +ProductSection_0_Prod_2=True +cSimulationType0=VirtualNano +FormStart.Top=205 +ProductSection_5_Prod_4=False +PIDHighMax1=100 +LastAccQuantity0=0 +ProductSection_8_Prod_4=False +TankRemaining0=5000 +ProductSection_13_Prod_4=False +TimedAdjustment1=0 +UseVCN3=False +ProductSection_15_Prod_3=False +SendTime4=0 +ProductSection_12_Prod_0=False +ModuleID4=99 +ModuleID2=2 +ModuleID3=99 +ModuleID0=0 +ModuleID1=1 +QuantityApplied1=0 +OffRateSetting4=0 +KP4=50 +TankSize1=5000 +TankSize2=5000 +TankSize3=0 +TankSize4=0 +ProductSection_11_Prod_4=False +ValveType1=2 +ProductSection_5_Prod_2=False +UseMultiPulse1=False +PIDHighMax3=100 +PIDdeadband2=4 +ProductSection_12_Prod_4=False +OffRateSetting3=0 +KP1=50 +ValveType2=2 +FormAbout.Top=373 +ProductSection_11_Prod_0=False +FlowCal3=0 +ProductSection_10_Prod_0=False +TankRemaining2=5000 +LastAccQuantity1=0 +ProductName3=Product 4 +PIDHighMax0=100 +ValveType0=0 +CoverageUnits3=0 +PIDdeadband4=4 +UseMultiPulse0=False +ProductSection_6_Prod_0=False +MinUPM0=0 +QuantityUnits4=0 +ProductSection_2_Prod_4=False +RCportBaud_0_0=38400 +Sec1_width=914.4 +SendTime0=0 +MinPWM3=0 +SendTime2=0 +WaitTime0=0 +WaitTime1=500 +WaitTime2=0 +WaitTime3=0 +WaitTime4=0 +FormSettings.Top=203 +MinUPM3=0 +FormStart.Left=572 +UseMultiPulse3=False +TankSize0=5000 +RateSet0=8.7 +VariableRate3=0 +ProductSection_8_Prod_2=False +UseMultiPulse4=False +cSimulationType4=None +LastAccQuantity3=0 +QuantityApplied0=0 +ProductSection_10_Prod_3=False +ProductSection_4_Prod_2=False +TankRemaining4=0 +CurrentPage=1 +FlowCal4=0 +Coverage4=0 +TimedAdjustment3=0 +PIDdeadband1=4 +CoverageUnits1=0 +Sec0_enabled=True +ProductSection_1_Prod_1=True +UseVCN4=False +SendTime1=200 +RateSet4=0 +ProductSection_5_Prod_0=False +TankRemaining1=5000 +ProductSection_3_Prod_4=False +cSimulationType2=VirtualNano +KP3=50 +ProductSection_10_Prod_1=False +Sec1_SwitchID=1 +ProductSection_14_Prod_1=False +PIDLowMax4=80 +PIDHighMax2=100 +PIDdeadband3=4 +ProductSection_3_Prod_1=False +OffRateSetting0=0 +BroadCastIP=192.168.1.255 +RateSet2=100 +KP0=50 +ProductName1=Fert. +ProductSection_9_Prod_3=False +Sec2_width=914.4 +QuantityApplied2=0 +ProductSection_13_Prod_0=False +ProductSection_0_Prod_4=False +frmMenu.Left=328 +ProductSection_3_Prod_2=False +TimedAdjustment0=0 +FlowCal2=75 +QuantityUnits0=1 +ProductName2=wheat +ProductSection_5_Prod_1=False +VCN4=0 +ProductSection_13_Prod_1=False +Sec2_enabled=True +ProductSection_15_Prod_0=False +ProductSection_0_Prod_1=True +MinPWM2=0 +frmSections.Left=0 +RCportSuccessful_0_0=false +UseInches=True +Sec2_SwitchID=2 +frmComm.Top=0 diff --git a/SourceCode/GPS_Out/Source/Resources/Off.png b/SourceCode/GPS_Out/Source/Resources/Off.png new file mode 100644 index 000000000..b6d4008fc Binary files /dev/null and b/SourceCode/GPS_Out/Source/Resources/Off.png differ diff --git a/SourceCode/GPS_Out/Source/Resources/On.png b/SourceCode/GPS_Out/Source/Resources/On.png new file mode 100644 index 000000000..71b6be91c Binary files /dev/null and b/SourceCode/GPS_Out/Source/Resources/On.png differ diff --git a/SourceCode/GPS_Out/Source/Resources/ScanPorts.png b/SourceCode/GPS_Out/Source/Resources/ScanPorts.png new file mode 100644 index 000000000..5638d887c Binary files /dev/null and b/SourceCode/GPS_Out/Source/Resources/ScanPorts.png differ diff --git a/SourceCode/GPS_Out/Source/Resources/satellite.ico b/SourceCode/GPS_Out/Source/Resources/satellite.ico new file mode 100644 index 000000000..5ba382095 Binary files /dev/null and b/SourceCode/GPS_Out/Source/Resources/satellite.ico differ diff --git a/SourceCode/GPS_Out/Source/Resources/satelliteSim.ico b/SourceCode/GPS_Out/Source/Resources/satelliteSim.ico new file mode 100644 index 000000000..17f8371d4 Binary files /dev/null and b/SourceCode/GPS_Out/Source/Resources/satelliteSim.ico differ diff --git a/SourceCode/GPS_Out/Source/frmHelp.Designer.cs b/SourceCode/GPS_Out/Source/frmHelp.Designer.cs new file mode 100644 index 000000000..44d50572b --- /dev/null +++ b/SourceCode/GPS_Out/Source/frmHelp.Designer.cs @@ -0,0 +1,93 @@ + +namespace RateController +{ + partial class frmHelp + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmHelp)); + this.panel1 = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.AutoScroll = true; + this.panel1.Controls.Add(this.label1); + this.panel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.panel1.Location = new System.Drawing.Point(12, 12); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(460, 184); + this.panel1.TabIndex = 4; + this.panel1.Click += new System.EventHandler(this.panel1_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(3, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(60, 24); + this.label1.TabIndex = 0; + this.label1.Text = "label1"; + this.label1.Click += new System.EventHandler(this.panel1_Click); + // + // timer1 + // + this.timer1.Enabled = true; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // frmHelp + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(484, 281); + this.Controls.Add(this.panel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "frmHelp"; + this.ShowInTaskbar = false; + this.Text = "Help"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmHelp_FormClosed); + this.Load += new System.EventHandler(this.frmHelp_Load); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Timer timer1; + } +} \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/frmHelp.cs b/SourceCode/GPS_Out/Source/frmHelp.cs new file mode 100644 index 000000000..bd2f05071 --- /dev/null +++ b/SourceCode/GPS_Out/Source/frmHelp.cs @@ -0,0 +1,85 @@ +using GPS_Out; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace RateController +{ + public partial class frmHelp : Form + { + private frmStart mf; + + public frmHelp(frmStart CallingForm, string Message, string Title = "Help", int timeInMsec = 30000) + { + mf = CallingForm; + InitializeComponent(); + this.Text = Title; + label1.Text = Message; + timer1.Interval = timeInMsec; + + int len = Message.Length; + this.Width = 450; + + int ht = 20 + (len / 34) * 40; + if (ht < 150) + { + ht = 150; + } + else if (ht > 500) + { + ht = 500; + } + + this.Height = ht; + + panel1.Width = this.Width - 40; + panel1.Height = this.Height - 40; + label1.MaximumSize = new Size(panel1.Width - 10, 0); + } + + private void frmHelp_FormClosed(object sender, FormClosedEventArgs e) + { + if (this.WindowState == FormWindowState.Normal) + { + mf.Tls.SaveFormData(this); + } + } + + private void frmHelp_Load(object sender, EventArgs e) + { + try + { + mf.Tls.LoadFormData(this); + this.BackColor = GPS_Out.Properties.Settings.Default.DayColour; + } + catch (Exception ex) + { + mf.Tls.WriteErrorLog("frmHelp/frmHelp_Load: " + ex.Message); + } + } + + private void panel1_Click(object sender, EventArgs e) + { + Close(); + } + + private void timer1_Tick(object sender, EventArgs e) + { + timer1.Enabled = false; + timer1.Dispose(); + Dispose(); + + if (this.WindowState == FormWindowState.Normal) + { + mf.Tls.SaveFormData(this); + } + Close(); + } + } +} \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/frmHelp.resx b/SourceCode/GPS_Out/Source/frmHelp.resx new file mode 100644 index 000000000..45a6f5637 --- /dev/null +++ b/SourceCode/GPS_Out/Source/frmHelp.resx @@ -0,0 +1,1710 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//6oD6tW/ + DOrVvwzq1b8M6tW/DOrVvwzq1b8M6tW/DOrVvwzq1b8M6tW/DOrVvwzq1b8M6tW/DOrVvwzq1b8M6tW/ + DOrVvwzq1b8M6tW/DOrVvwzq1b8M6tW/DOrVvwzq1b8M6tW/DOrVvwzq1b8M6tW/DOrVvwzq1b8M6tW/ + DOrVvwzq1b8M6tW/DOrVvwzr2LEN37+fCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAA////AubWtR/qz7Ml482xJOPNsSTjzbEk482xJOPNsSTjzbEk482xJOPNsSTjzbEk482x + JOPNsSTjzbEk482xJOPNsSTjzbEk482xJOPNsSTjzbEk482xJOPNsSTjzbEk482xJOPNsSTjzbEk482x + JOPNsSTjzbEk482xJOPNsSTjzbEk482xJOPNsSTjzbEk5MmuJtvIpA4AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgzLgZ5NSzL+PMsC3jzLAt48ywLePMsC3jzLAt48yw + LePMsC3jzLAt48ywLePMsC3jzLAt48ywLePMsC3jzLAt48ywLePMsC3jzLAt48ywLePMsC3jzLAt48yw + LePMsC3jzLAt48ywLePMsC3jzLAt48ywLePMsC3jzLAt48ywLePMsC3jzLAt49O3LuXRtyfMzJkFAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2MSxDePQszbj0bU349Cz + NuPQszbj0LM249CzNuPQszbj0LM249CzNuPQszbj0LM249CzNuPQszbj0LM249CzNuPQszbj0LM249Cz + NuPQszbj0LM249CzNuPQszbj0LM249CzNuPQszbj0LM249CzNuPQszbj0LM249CzNuPQszbj0LM249Cz + NuTSsznnz7cgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AP+AgALl0LEx5NGyQuPOrj/jzq4/486uP+POrj/jzq4/486uP+POrj/jzq4/486uP+POrj/jzq4/486u + P+POrj/jzq4/486uP+POrj/jzq4/486uP+POrj/jzq4/486uP+POrj/jzq4/486uP+POrj/jzq4/486u + P+POrj/jzq4/486uP+fSsj/jz69A8NK0EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA4NGyIeHNskzm0bFI482xSOPNsUjjzbFI482xSOPNsUjjzbFI482x + SOPNsUjjzbFI482xSOPNsUjjzbFI482xSOPNsUjjzbFI482xSOPNsUjjzbFI482xSOPNsUjjzbFI482x + SOPNsUjjzbFI482xSOPNsUjjzbFI482xSOPNsUjnz7FL6dO0Ov+qqgMAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjRuQvizq1O486vU+PQsFHj0LBR49Cw + UePQsFHj0LBR49CwUePQsFHj0LBR49CwUePQsFHj0LBR49CwUePQsFHj0LBR49CwUePQsFHj0LBR49Cw + UePQsFHj0LBR49CwUePQsFHj0LBR49CwUePQsFHj0LBR49CwUePQsFHm0LBR4s2wV+DTrikAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4s2w + PeLNrmHjza5b482uW+PNrlvjza5b482uW+PNrlvjza5b482uW+PNrlvjza5b482uW+PNrlvjza5b482u + W+PNrlvjza5b482uW+PNrlvjza5b482uW+PNrlvjza5b482uW+PNrlvjza5b482uW+PNrlvjza5b5M6v + XeLOq1ju3bsPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAN3IrCXizKxp482uZePPrWTjz61k48+tZOPPrWTjz61k48+tZOPPrWTjz61k48+t + ZOPPrWTjz61k48+tZOPPrWTjz61k48+tZOPPrWTjz61k48+tZOPPrWTjz61k48+tZOPPrWTjz61k48+t + ZOPPrWTjz61k48+tZOLOr2njz7BKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADfv58I4s6sYuTNrnHhzKxu4cysbuHMrG7hzKxu4cys + buHMrG7hzKxu4cysbuHMrG7hzKxu4cysbuHMrG7hzKxu4cysbuHMrG7hzKxu4cysbuHMrG7hzKxu4cys + buHMrG7hzKxu4cysbuHMrG7hzKxu4cysbuPMrm7iz6504suoLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLMq0bhy61/4cyr + d+HMq3fhzKt34cyrd+HMq3fhzKt34cyrd+HMq3fhzKt34cyrd+HMq3fhzKt34cyrd+HMq3fhzKt34cyr + d+HMq3fhzKt34cyrd+HMq3fhzKt34cyrd+HMq3fhzKt34cyrd+HMq3fiy6574MusbNjYsQ0AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADg0aoh4cysgeLMrYLjzauA482rgOPNq4DjzauA482rgOPNq4DjzauA482rgOPNq4DjzauA482r + gOPNq4DjzauA482rgOPNq4DjzauA482rgOPNq4DjzauA482rgOPNq4DjzauA482rgOPNq4DjzauA48ur + iOPNrVEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA1aqqBuPMrG/hyquR4cuqiuHLqorhy6qK4cuqiuHLqorhy6qK4cuq + iuHLqorhy6qK4cuqiuHLqorhy6qK4cuqiuHLqorhy6qK4cuqiuHLqorhy6qK4cuqiuHLqorhy6qK4cuq + iuHLqorhy6qK4sqri+DLq47mzagpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgx6hJ4MmqnODKqZTiy6qT4suq + k+LLqpPiy6qT4suqk+LLqpPiy6qT4suqk+LLqpPiy6qT4suqk+LLqpPiy6qT4suqk+LLqpPiy6qT4suq + k+LLqpPiy6qT4suqk+LLqpPiy6qT4suqk+HKqZriy6p7/9+/CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4s6n + GuHJqZjhyamg4smpneLJqZ3iyamd4smpneLJqZ3iyamd4smpneLJqZ3iyamd4smpneLJqZ3iyamd4smp + neLJqZ3iyamd4smpneLJqZ3iyamd4smpneLJqZ3iyamd4smpneLJqZ3gyqin4ciqVAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP+AgALhy6l24cqpseLJp6biyaem4smnpuLJp6biyaem4smnpuLJp6biyaem4smn + puLJp6biyaem4smnpuLJp6biyaem4smnpuLJp6biyaem4smnpuLJp6biyaem4smnpuLJp6bhyqep4Mmn + peDRqiEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4sioRuDJp7ffyKex4Mmor+DJqK/gyaiv4Mmo + r+DJqK/gyaiv4Mmor+DJqK/gyaiv4Mmor+DJqK/gyaiv4Mmor+DJqK/gyaiv4Mmor+DJqK/gyaiv4Mmo + r+DJqK/gyaav38mouOHIpob/qqoDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO/PrxDhyaap4Mim + vt/Ip7nfyKe538inud/Ip7nfyKe538inud/Ip7nfyKe538inud/Ip7nfyKe538inud/Ip7nfyKe538in + ud/Ip7nfyKe538inud/Ip7nfyKe54cmnueDIp8TfyKVPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAA4celd+DIpc/fyKbC38imwt/IpsLfyKbC38imwt/IpsLfyKbC38imwt/IpsLfyKbC38im + wt/IpsLfyKbC38imwt/IpsLfyKbC38imwt/IpsLfyKbC38imwuDIpMjhyaWz4sSnGgAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOHLpDvfyKTP38mjzuDJpcvgyaXL4Mmly+DJpcvgyaXL4Mml + y+DJpcvgyaXL4Mmly+DJpcvgyaXL4Mmly+DJpcvgyaXL4Mmly+DJpcvgyaXL4Mmly+DIo8vfx6TX38ej + iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRuaIL4Meks+DIpN3fx6TV38ek + 1d/HpNXfx6TV38ek1d/HpNXfx6TV38ek1d/HpNXfx6TV38ek1d/HpNXfx6TV38ek1d/HpNXfx6TV38ek + 1d/HpNXfx6PW38ik3dvGokcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AODIpHPgx6Ps38ej3t/Ho97fx6Pe38ej3t/Ho97fx6Pe38ej3t/Ho97fx6Pe38ej3t/Ho97fx6Pe38ej + 3t/Ho97fx6Pe38ej3t/Ho97fx6Pe38ej6N7Go8Dhw6URAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADjxqQt38ah5N/Gouzfx6Ln38ei59/Houffx6Ln38ei59/Houffx6Ln38ei + 59/Houffx6Ln38ei59/Houffx6Ln38ei59/Houffx6Ln38aj6N/GovXexaOFAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7+/BN3FoLTgyKL93sah8d7GofHexqHx3sah + 8d7GofHexqHx3sah8d7GofHexqHx3sah8d7GofHexqHx3sah8d7GofHexqHx3sah8d3GoPXexqHy3sah + NgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADexqFs5syl + /9/FoPzexaH73sWh+97FofvexaH73sWh+97FofvexaH73sWh+97FofvexaH73sWh+97FofvexaH73sWh + +93FoPvmzKX/3sWgxtvbtgcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAA5cGeHd3Dne/jyaL/3sSe/97Env/exJ7/3sSe/97Env/exJ7/3sSe/97Env/exJ7/3sSe + /97Env/exJ7/3sSe/97Env/fxZ7/69Cn/93EnXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADbwZik6s6i/9vBmP/bwZj/28GY/9vBmP/bwZj/28GY + /9vBmP/bwZj/28GY/9vBmP/bwZj/28GY/9vBmP/bwZj/4cad/9zBmPHjwZ8lAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3b6SUt7Blv/cwJX/2r2T + /9q9k//avZP/2r2T/9q9k//avZP/2r2T/9q9k//avZP/2r2T/9q9k//avZP/2b2T/+bIm//ZvJKwAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AN27mQ/Xuo7d4MKT/9i7jv/Yu47/2LuO/9i7jv/Yu47/2LuO/9i7jv/Yu47/2LuO/9i7jv/Yu47/2LuO + /9m8j//iw5T/1riNXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA17iJjOTEkv/Wt4n/1riJ/9a4if/WuIn/1riJ/9a4if/WuIn/1riJ + /9a4if/WuIn/1riJ/9a4if/ev47/1riJ4dW1ihgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANe0hDrauYf32biH/9W1hf/VtYX/1bWF + /9W1hf/VtYX/1bWF/9W1hf/VtYX/1bWF/9W1hf/VtYT/4b+M/9W0hJkAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/qqoD1LJ/ + yN+7h//UsoD/1LKA/9SygP/UsoD/1LKA/9SygP/UsoD/1LKA/9SygP/UsoD/1bSB/9m3g//Usn9CAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAANOwfXTeuoT/0rB8/9KwfP/SsHz/0rB8/9KwfP/SsHz/0rB8/9KwfP/SsHz/0rB8 + /925gv/Qr3zQv6pqDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPrHwl07B679aye//Rrnj/0a54/9GueP/Rrnj/0a54 + /9GueP/Rrnj/0a54/9KueP/duH//0a16gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANCsdKzdt3z/0Kt0 + /9CsdP/QrHT/0Kx0/9CsdP/QrHT/0Kx0/9CsdP/Ur3f/z6t09tCydysAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADPq3Bb1rB0/9Grcv/PqnH/z6px/8+qcf/PqnH/z6px/8+qcf/OqnH/27N3/86qcLoAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAzKZmFM2obOTUrXH/zahu/82obv/NqG7/zahu/82obv/NqG7/z6lu + /9ixc//Mp2xoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKpWmW27Nz/8yma//Mpmv/zKZr + /8yma//Mpmv/zKZr/9Osbv/MpmvpzqdsGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzqRn + Q8+oavvPp2r/zKVo/8ylaP/MpWj/zKVo/8ulaP/Xrm7/zKVpoQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMyZZgXJomXR1Kpr/8ujZv/Lo2b/y6Nm/8ujZv/MpGf/0qlq/8yjZksAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyqNkfdetav/KomT/yqJk/8qiZP/KomT/1Kpp + /8uiZNbIpG0OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMyfYC3No2P0zqVk + /8qhYv/KoWL/yqFi/9araP/JoWKKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAByZ9huNyvav/RpmT/0aZk/9SpZv/KoWL/yKBfMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMmhYFrTqGHby6Jf3sifYODXrGLayqFgqP//qgMAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARz2tGaqAgAYAAAAAVUCq + GFUrqgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACkkwo8kIsFbAACxDSkkwrAjI8EdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACsg1RgsJsihLCbHxCsly4osJcbbKyPLOysr1QYAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACskzioqI9jcKCDf5yYe5+clHerrJh7k4ysi4+kqJNN/AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAvJsYbLSjBZy8oxW0sKMBtLyjJbS0nvk8pJNBxLSXl/ygh4/8nH+z/Jh7w + /ygg6P8sJOr/KSPSyyolwzcsJ8BuLCjCbSwowm0vKMdtLCi/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIACLSfBqTIr2P8xKtH/MSrQ/zQt3v8tJ8CrKyXP + risk3f8nIN7/Jh7n/yUd6/8nH+P/KSHd/ykj0fAsJcWELynJ/zEq0v8xKtH/MivV/y0nwvYvKsQrAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAi0mwMIwKc//LSfB + /y0nwv8uKMX+LCjEhSslzdYrI9z/JyDe/yYe5/8lHev/Jx/j/ykh2v8rJNf/KybKhy0nwNYuKMb/LSfB + /y4oxP8uKMb/LSjAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAuJ8FOLijF/y4oxP8uKMX/LSi/6CwnxYQrJdD3KSLX/ycg3v8mHuf/JR3r/ycf4/8oIdr/LCXY + /ywlybItJ8GpMCnM/y0nwf8wKs7/LSfAqysrqgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0nwKkwKs7/LijH/y0nwc0tJsagLyjf/ysj3f8pIef/Jx/w + /yYe9P8pIOz/KiLj/y0m4P8sJMndLCfAmy8ox/4uKMj/LifD7yskwioAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArK78kLifD6jEq0P8tJ8ClKybE + kywm08kpItXIKCDeyCYf58glHezIKB/jyCgh2sgrJNTIKyTIvi0nw4MtJ7/0MSrQ/ywowHoAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACsnv3AzLNr/LSa/eCwmxoYsJdKuKSLWrigg364mHeiuJR3qriYf464pINquKyPTriwmzK4rJsJYLSfB + 8C0nwNMuLtELAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAkJLYHLSfBdy8ovkctJsT8MCjj/y0l6P8qI/H/KR/7/ygg//8pIvf/LSTt + /y4m5P8zK+n/LSfDfC4mwmQtJLw5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwML8QLCfF1ywl0OMpItXiJyDd + 4iYd5+IlHeviJiDj4ikh2uIqI9LiMCjX5S0owWcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA + AisrxB4nJ8khKCDXICgg3yAoIOcgKCDnICgg3yAoINcgKCjPICwkxSMkJMgOAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////3//////////AAAAD/////+AAAAP/////4AAAB//////gAAAH//////AAAAf/////8AAAB//////w + AAAP//////gAAA//////+AAAD//////4AAAf//////wAAB///////AAAH//////8AAA///////4AAD// + /////gAAf//////+AAB///////8AAH///////wAA////////AAD///////+AAP///////4AB//////// + wAH////////AAf///////8AD////////4AP////////gB////////+AH////////8Af////////wD/// + //////gP////////+A/////////4H/////////wf///////////////////9v/////////w///////// + +A/////////4D////////AAAP//////8AAA///////4AAD///////gAAf///////AAD///////+gBP// + /////+AH////////4Af//////////////////////////////////////////////ygAAAAwAAAAYAAA + AAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA29u2B+3Itg7rxLEN68SxDevEsQ3rxLEN68Sx + DevEsQ3rxLEN68SxDevEsQ3rxLEN68SxDevEsQ3rxLEN68SxDevEsQ3rxLEN68SxDevEsQ3rxLEN68Sx + DevEsQ3rxLEN68SxDevEsQ3rxLEN68SxDYCAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5uazCuDNtCnfzLMo5dG3 + J+XRtyfl0bcn5dG3J+XRtyfl0bcn5dG3J+XRtyfl0bcn5dG3J+XRtyfl0bcn5dG3J+XRtyfl0bcn5dG3 + J+XRtyfl0bcn5dG3J+XRtyfl0bcn5dG3J+XRtyfhyLAq5s61H////wEAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//// + AeHOtirnz7I14c20M+HNtDPhzbQz4c20M+HNtDPhzbQz4c20M+HNtDPhzbQz4c20M+HNtDPhzbQz4c20 + M+HNtDPhzbQz4c20M+HNtDPhzbQz4c20M+HNtDPhzbQz4c20M+HNtDPfzLA33NGuFgAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAObOtR/hzrBE486uP+POrj/jzq4/486uP+POrj/jzq4/486uP+POrj/jzq4/486u + P+POrj/jzq4/486uP+POrj/jzq4/486uP+POrj/jzq4/486uP+POrj/jzq4/486uP+fPs0Dm0LM829u2 + BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANXVqgzjz7BK5NCyTOTPsUvkz7FL5M+xS+TPsUvkz7FL5M+x + S+TPsUvkz7FL5M+xS+TPsUvkz7FL5M+xS+TPsUvkz7FL5M+xS+TPsUvkz7FL5M+xS+TPsUvkz7FL5M+x + S+bPr1Dl0bIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjz69A5M6vXeXQsFfizq5Y4s6u + WOLOrljizq5Y4s6uWOLOrljizq5Y4s6uWOLOrljizq5Y4s6uWOLOrljizq5Y4s6uWOLOrljizq5Y4s6u + WOLOrljizq5Y4s6uWOPNr1zk0a0cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADfxqwo4s2u + a+HNrGXjz61k48+tZOPPrWTjz61k48+tZOPPrWTjz61k48+tZOPPrWTjz61k48+tZOPPrWTjz61k48+t + ZOPPrWTjz61k48+tZOPPrWTjz61k5M6uaOLOr1nVqqoGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAADmzLMK4sysaeLMrnTiy6xx4susceLLrHHiy6xx4susceLLrHHiy6xx4susceLLrHHiy6xx4sus + ceLLrHHiy6xx4susceLLrHHiy6xx4susceLLrHHiy6xx4cyteeDMrUEAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA4surT+LMq4bizKt94syrfeLMq33izKt94syrfeLMq33izKt94syr + feLMq33izKt94syrfeLMq33izKt94syrfeLMq33izKt94syrfeLMq33hy61/482tf+TIrRwAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA38ymKOLLq4/iyquL4cuqiuHLqorhy6qK4cuq + iuHLqorhy6qK4cuqiuHLqorhy6qK4cuqiuHLqorhy6qK4cuqiuHLqorhy6qK4cuqiuHLqorhyquR4cqq + b6qqVQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1aqqBuHLqYDiy6md4cmp + l+HJqZfhyamX4cmpl+HJqZfhyamX4cmpl+HJqZfhyamX4cmpl+HJqZfhyamX4cmpl+HJqZfhyamX4cmp + l+LKqpbhy6mh3sioRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AN7Kplbhyaiw4cqno+HKqaPhyqmj4cqpo+HKqaPhyqmj4cqpo+HKqaPhyqmj4cqpo+HKqaPhyqmj4cqp + o+HKqaPhyqmj4cqpo+DKqKfiyqie3NGuFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAODJoiHhyaew38mmsuDJqK/gyaiv4Mmor+DJqK/gyaiv4Mmor+DJqK/gyaiv4Mmo + r+DJqK/gyaiv4Mmor+DJqK/gyaiv4Mmor+HIprvgyKV9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADhyqaP4Milx+DJpbzgyaW84MmlvODJpbzgyaW84Mml + vODJpbzgyaW84MmlvODJpbzgyaW84MmlvODJpbzgyaW84MimveDIp8fhx6VEAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADexqVV38ik1t/IpMnfyKTI38ik + yN/IpMjfyKTI38ikyN/IpMjfyKTI38ikyN/IpMjfyKTI38ikyN/IpMjfyKTI4cmlzuDIpbXr2LENAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADfyp8Y38aj + yt/HpNrfx6PV38ek1d/HpNXfx6TV38ek1d/HpNXfx6TV38ek1d/HpNXfx6TV38ek1d/HpNXgyKTU4Mej + 5ODGpYIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAA38ejlt/Go/HfxqPh38aj4d/Go+HfxqPh38aj4d/Go+HfxqPh38aj4d/Go+HfxqPh38aj + 4d/Go+HexqPj38ej6ODJpjkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAA3cWgS93GofrexqDw3sai7t7Gou7exqLu3sai7t7Gou7exqLu3sai + 7t7Gou7exqLu3sai7t7Gou7fx6L438aixf/MzAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2MSdDd7FoN3kyqT+3cWh+93FofvdxaH73cWh + +93FofvdxaH73cWh+93FofvdxaH73cWh+93FoPvq0Kn/38SgfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN3CnY/u0qj/3cOc + /93DnP/dw5z/3cOc/93DnP/dw5z/3cOc/93DnP/dw5z/3cOc/+HHn//gxp7428KeKgAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AN7Clzbfwpj83cGX/9q/lf/av5X/2r+V/9q/lf/av5X/2r+V/9q/lf/av5X/2r6V/+jKnv/avpW7AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAP//gALXuY3L48SV/9i6jv/Yu47/2LuO/9i7jv/Yu47/2LuO/9i7jv/Yu47/2buO + /+bGl//Zu5BlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXtoh05cSR/9a3iP/Wt4f/1reH/9a3h//Wt4f/1reH + /9a3h//Wt4f/3LyL/9W2iO3TvIUXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSrYAi1LOC9tm3hP/Us4H/1LOB + /9Szgf/Us4H/1LOB/9Szgf/Us4H/48CK/9WygqMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0rB9 + tOC8hP/SsHz/0rB8/9KwfP/SsHz/0rB8/9KwfP/Tsnz/27iB/9OxeksAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAA0a91Wdy3ff/Rrnf/0K13/9Ctd//QrXf/0K13/9Ctd//ZtXz/0K122saqcQkAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAw6VpEc6qcebWsHb/z6py/8+qcv/PqnL/z6py/8+qcv/et3r/0Kxz + hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM2obJnctHX/zaht/82obv/NqG7/zahu + /9Crb//RrHD7yKVpMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM6laz7Tq23+zqhr + /8ymav/Mpmr/zKZq/9evcP/LpWnE//8AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AMzMZgXKo2bS1axs/8ukZ//LpGf/y6Rn/9mvbv/JpGdtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADKomV+2a5r/8qiZP/KomT/z6Zm/8ujZPLEomYeAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHol0pzKNj+tKnZf/NpGP/265q/8qgYqwAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy6FesNisY/LKoWH31Klh + 8sueYU8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgGqK + GJl9iC3/2TMUfWWMNf//AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAADxfBISQfw5QbG8ZMIyDDiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAoKM8gKyPbqCgh3N0oIN/aKSLe0Skj1HYAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAACqAy4owFkvKMhzLyjIcy0ov2AqJM5+LSXv/yYf6v8lHfD/KiHt/yoi1O8tJsRKLijB + dC8mwXMvKMhzKybDLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAALSjAOTEq0P8xK9T/Myza/y0nwNArJM66KyPh/yYe5f8lHer/Jx/h + /yoj1vssJsejMCrJ/zEq0/8zLdz/LifCxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALiS/HC0owuYvKMj/LyjI/y0nwaQrJM3cKiPd + /yYe5f8lHer/Jx/g/ywk3P8rJcqsLSfA1i4ox/8xKtD/LSjCjQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwnwWIwKs7/LSjC + +ywowqcsJdD/KiPg/ycf7f8mHvL/KCDo/y0l4/8sJMrTLSjAwTEq0f8uKMLfKyvGEgAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAsJ8HELSfA+y4oxHosJdCzKSLZsyYe5bMlHOuzJh/gsysk17MsJcmdLCfBnTIr1v8sJ8FWAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAArJsA1LifBkCwmxJwuJ9r1KSHZ9iYe5fYlHer2Jx/g9ioj1vYsJsvtLijA + ei0mwI4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4nxIotJ9jYKSLX1SYe5dUlHenVKB/g + 1Soj1dUtJ83YKyvDLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzzAUaGrMKICDf + CCAg/wggIP8IICDfCBwcxgk5HMYJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8A + AP///////wAA////////AAD///////8AAP/9//+f/wAA//wAAD//AAD//AAAP/8AAP/+AAA//wAA//4A + AH//AAD//gAAf/8AAP//AAB//wAA//8AAH//AAD//wAA//8AAP//gAD//wAA//+AAf//AAD//4AB//8A + AP//wAH//wAA///AA///AAD//+AD//8AAP//4AP//wAA///gB///AAD///AH//8AAP//8Af//wAA///w + D///AAD///gP//8AAP//+B///wAA///8H///AAD///wf//8AAP///D///wAA////////AAD///6///8A + AP///D///wAA///8H///AAD//4AA//8AAP//gAD//wAA///AAf//AAD//8gD//8AAP//4Av//wAA///w + D///AAD///////8AAP///////wAA////////AAAoAAAAMAAAAGAAAAABAAgAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAA9Ozf//bw5//q0Kn/8+rd/9qwa//jwIr/8uja//fx6P/u4c//7tKo/+nYv//o1r3/4cef + /+XRs//k0bP/5tS4/+XStP/ct33/6Ne9/+TQs//m0rb/5NCy/93Bl//et3r/7+PS/+/j0f/ZtXz/1rB2 + /+XEkf/Tsnz/5saX/9Oyf//dw5z/48SV/9y0df/SsHz/8OXV/+bTuf/m1Lf/38OZ/+bTuP/KomT/zKZq + /8+qcv/SrXL/0qdl/9Gud//NpGP/z6Zm/9Ctd//ex6P/38ej/+POsP/NpWb/5M+x/8ukZ//exqP/169w + /8ykZv/exqL/4cih/+HLp//Zr27/5Mqk/9ataf/izKv/4syt/9WsbP/jza7/4Mmm/9mua//jza3/4Mml + /9uuav/07OH/0Ktv/9Orbv/OqGv/4cmo/82obf/gyqj/zqhs//Xu4//NqG7/6dnC/+rbxf/s3cj/693I + /+zeyf/t38r/6trD/+zey//q2sL/69zH/5WS5v+LiN3/iYXb/4mH3/+Jhdz/oJ3j/6Ge5v/Ts4H/1LOB + /9i7kP/Wt4j/1reH/9q+lf/av5X/27+V/9m3hP/Wtob/276Q/9u4gf/cvIv/2LuO/9m7jv/Xuoz/17mK + /9i6jv/gvIT/AAAA/3Bs2/9qZd3/aGPj/4B93P9mYej/aWTi/2Zg7P99etn/fnrb/3Rx1v9zbuf/d3Pa + /3h01/9PSdL/TUjV/0dCyf9lX/D/TUje/0hC1P9MRt7/TUfc/1RPzP9PSsr/XlnQ/0dA5P9kX9v/SULt + /0tE5f9KQ+n/UErk/2Bcz/9dWc//MivW/zIr1/8zLNr/MSvU/zEq0P8xKtH/Ni/b/zMt3P8xKtP/MSna + /ywk3P8wK8P/LijH/y8oyP8wKs7/LCXQ/yoj3f8tJtf/MCrJ/0U/4f8tJev/OzXP/y0l7/8qI+D/KyPh + /ygg6P8tJeP/Libm/yoh7f9CPcj/NzDX/yUd8P8mHvL/JR3q/ycf7f8mH+r/Jh7l/ycf4P8nH+H/AAAA + /+nZwf/n07b/5tO3/+LNrf/exqH/6Mqe/zAqwf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHgBeHgHeHgHeHgHeHgHeHgHeHgHeHgHeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4Unh4Unh4Unh4Unh4Unh4Unh4Unh4Snh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eAB4eAB4eAB4 + eAB4eAB4eAB4eAB4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgDeAZ4BngGeAZ4BngGeAZ4BngGeAZ4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4GHgkeCR4JHgkeCR4JHgkeCR4JHgkeHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4CHgZeBl4GXgZeBl4GXgZeBl4GQh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eFlbW3hbW1t4W1tbeFtbW3hbeFh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eFp4XV14XV1d + eF1dXXhdXV1dVVZ4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eFzBVFRUVHhUVFR4VFRUeFR4C3h4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgoEhISEhISEhISEhISEhILJXh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHgOJg8PDw8PDw8PDw8PDw/CCnh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHgUNhUTExMTExMTExMTEw1HeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHhXTkRERERE + REREREREREJBeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4MkVQUFBQUFBQUFBQUEjDeHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4xD87Ozs7Ozs7Ozs7xQJ4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4XQkgICAgICAgICAgDDx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eCcWa2tra2tra2tqxjR4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eDghdnJy + cnJycnJzHnh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgcaGlpaWlpaWlxZ3h4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHhubWZmZmZmZmYFRHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHgzdyMjIyMjIx1weHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4ES4xMTExMRp1eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4Hxsr + KysrKxcQeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4PSJPU1NTSyx4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eExNKioqOXR4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eGVDNzc3Pnh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHhGKSkwUXh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHg1 + LS9JbHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHhvBDpAeHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4fHhheHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHiDrJGWeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eGR4eF6v + vLi1t3hjeGR4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4nZybjpKxvbq/qoSroaCQeHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4tqamhYupvbq+o3mPpZ1feHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eKekgqiwu7mys4aXnoh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eJjHeHp7f4l9fniAmXh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHhigZ+i + tK2zmq54YHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eIqMlZOUjYd4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4 + eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eP///////wAA////////AAD///////8A + AP///////wAA////////AAD///////8AAP/7bbbf/wAA//2222//AAD//tttv/8AAP/6qqq//wAA//1V + VV//AAD//VVVP/8AAP/+IiK//wAA//6RED//AAD//gRFf/8AAP//AAB//wAA//8AAH//AAD//wAA//8A + AP//AAD//wAA//+AAP//AAD//4AB//8AAP//gAH//wAA///AAf//AAD//8AD//8AAP//4AP//wAA///g + A///AAD//+AH//8AAP//8Af//wAA///wB///AAD///AP//8AAP//+A///wAA///4H///AAD///wf//8A + AP///B///wAA///8P///AAD///////8AAP///r///wAA///8P///AAD//9gV//8AAP//gAD//wAA//+A + AP//AAD//8AB//8AAP//yBP//wAA///gC///AAD///gP//8AAP///////wAA////////AAD///////8A + ACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADqv6oM3buqD9vItg7byLYO28i2DtvItg7byLYO28i2DtvItg7byLYO28i2 + DtvItg7byLYO28i2DtvItg7byLYO69jEDe7Muw//27YHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODMuBngzLIy482xLuPNsS7jzbEu482xLuPNsS7jzbEu482x + LuPNsS7jzbEu482xLuPNsS7jzbEu482xLuPNsS7jzbEu38+1MOrVvwwAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6tWqDOPPr0Dn0rI/486yP+POsj/jzrI/486y + P+POsj/jzrI/486yP+POsj/jzrI/486yP+POsj/jzrI/486yP+TNskLnz7I1////AQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA486uP+TNr1bj0LBR49Cw + UePQsFHj0LBR49CwUePQsFHj0LBR49CwUePQsFHj0LBR49CwUePQsFHj0LBR5c6xWObNtCkAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtJsCfNi/p + /y0owO4qJMzTKSHp/yUd7f8pIuD/KyXIyC8pyf80Ld//LCbAUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AC0mvygvKcj6LSfA0SskzNYoIePyJRzq8ioi4PIrJcnDLSjA9S0nwcwkJLYHAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACwmvHouKMCzKyTOzygg4dolHeraKSLf2ismyr0tKMC6LibAPQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4mwD0sJtLFJyDfwiUd6sIqIuDDKyXKsSsruBIAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//// + ///////////////////////////////9///AAf//wAH//8AD///gA///4AP//+AH///wB///8Af///AP + ///4D///+A////gf///8H////B////w////+P/////////5////8P///4Af///AH///4D////B////// + //////8oAAAAIAAAAEAAAAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3bBm/+jJmf/csG3/7eDN + /+7hzv/jwY3/4Ll9/+zSqv/t4M7/6Ne//+fVu//m1Ln/5dK1/+jXvv/n1br/2bZ//+DGnv/csnH/3LZ7 + /+/j0f/hxZz/1bR+/+bHl//cwZn/3MKZ/9GwfP/SsHz/7+TU/+fUt//LpGj/z6t0/9GnZP/exaD/0Kx1 + /97Gof/fx6P/4Mei/9CsdP/jzrD/1q9y/+PPsf/NpWX/1a5y/+LNq//jzq//4s6u/+DJpv/fyKT/1a1t + /9GoZ//pzaL/4cuq/8+pbv/hy6n/zahu/+nZwv/s3cn/6tvF/+3eyv+FhO3/07KA/9a3h/+Kh+T/1bWF + /9W1hP/ZuYf/2LmK/9i7jv/Yuo7/4b2F/wAAAP9saNr/ZmLR/2tn0v9nZef/e3fX/05J1P9ZU+//W1Xm + /1tV5/9STNb/U07L/01H1P9IQuT/Yl7Y/0dA5f9XUs3/XFfc/1xX1f9ZVNT/NC3f/0U+7f8zLcn/LynJ + /ysj2/81MML/KSLg/zs2xP8qIu7/KSHp/zYv6f81LeL/MCjr/zMs5P8mHvH/JR3t/wAAAP/l0bL/5dGz + /+jWvf/o1rz/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZGRkZGRkZGRkZG + RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG + RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG + RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG + RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYbRkZGRkZGRkZGRkZGRkZGRkZGRgQTExMTExMTExMTEwhGRkZG + RkZGRkZGRkZGRkZGRkZGOTo6Ojo6Ojo6Ojo4A0ZGRkZGRkZGRkZGRkZGRkZGRkY4CTc3Nzc3Nzc3Nw1G + RkZGRkZGRkZGRkZGRkZGRkZGRkYMDgoKCgoKCgoLHEZGRkZGRkZGRkZGRkZGRkZGRkZGRiZrbGxsbGxs + bCxtRkZGRkZGRkZGRkZGRkZGRkZGRkZGbi4zMzMzMzMzI0ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGByIi + IiIiIiQgRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYQFBgYGBgXMi1GRkZGRkZGRkZGRkZGRkZGRkZGRkZG + Ri0WRENDQ0MBRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgU/QEBAQUJGRkZGRkZGRkZGRkZGRkZGRkZG + RkZGRkZGPQ8aGhpFL0ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYrBh4lIRJGRkZGRkZGRkZGRkZGRkZG + RkZGRkZGRkZGRkYnNDYqGUZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjwwHRE1RkZGRkZGRkZGRkZG + RkZGRkZGRkZGRkZGRkZGKAIpMUZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGHwAVRkZGRkZGRkZG + RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRjtKRkZGRkZG + RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkY+YmheRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRktkYUxjaWBZ + XVpGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRlxRUmdmZVhfVkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRklQ + VVtTVEhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRldPTU5HRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZG + RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkb///////// + //////////////////////////3//8AB///AAf//wAP//+AD///gA///4Af///AH///wB///8A////gP + ///4D///+B////wf///8H////D////4//////////n////w////gB///8Af///gP///8H/////////// + /ygAAAAgAAAAQAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/NS/G/9Orbf9UT9L/5dGz + /2hk2f97d9f/3sOa/ysj6v82Lub/7N7K/4iG6f8wKN3/R0Dn/9e1gf9bVeb/AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAqqqqqqqqoAAAAAAAAAAAAKqq + qqqqqqAAAAAAAAAAAACqqqqqqqQAAAAAAAAAAAAABEREREREAAAAAAAAAAAAAARERERERAAAAAAAAAAA + AAAEdERERHAAAAAAAAAAAAAAAEd3d3dwAAAAAAAAAAAAAAB3d3d3QAAAAAAAAAAAAAAAR+7u5wAAAAAA + AAAAAAAAAAfu7u4AAAAAAAAAAAAAAAAO7u7nAAAAAAAAAAAAAAAABOIi4AAAAAAAAAAAAAAAAAAiIuAA + AAAAAAAAAAAAAAAA4iJAAAAAAAAAAAAAAAAAAEIiAAAAAAAAAAAAAAAAAAACLgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAtQAAAAAAAAAAAAAAAAAAC4jAAAAAAAAAAAAAAAAAaROIwxwAAAAAAAAAAA + AAAAEzmJMTAAAAAAAAAAAAAAAAU93VUAAAAAAAAAAAAAAAAA//9QAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///////////////////////////////////3//8AB///AAf//wAP//+AD + ///gA///4Af///AH///wB///8A////gP///4D///+B////wf///8H////D////4//////////n////w/ + ///gB///8Af///gP///8H////////////ygAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAD///8C4dK0Ed/PrxDfz68Q38+vEN/PrxDfz68Q38+vEN/PrxDu3bsP//8A + AQAAAAAAAAAAAAAAAAAAAAAAAAAA////AeLPsjXk0bND48+vQOPPr0Djz69A48+vQOfSsj/hz7FF49Kw + LQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkzq4v486tbePMrWTjz61k48+tZOPPrWTjzK1k482v + bODJqiEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4dKlEeHLq4niyquM4cuqiuHLqorhy6qK4cup + j+LKq33V1aoGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADhyad/4MmnvODJqK/gyaiv4Mmo + r+DIp7/hyKhmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4MmjS9/IpObfx6PW4Mik + 1d7Go9jgyKTe48ykLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOvEsQ3exKDm4sij + /N7FoPnmzKX93sSgy////wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2byO + nOvMm//ZvI//7cyc/9i6jXcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ANKxdz7duYL/1rR+/9WyffnOrXsfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAD/gIACzKZt2OW7ev/Mpmy4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAMykYX7zw3D/zqVgWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAADCnlUVmnyDiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAACsrvwwtKL94JB/VlhsW9eYnIc+KLie/bwAA/wIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAA5HMYJLie+ySokz/0nH/D/LCXM/y0ov64AAP8BAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwvxAqI9GEKiHzkiskzng5HKoJAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAA//8AAP//AAD//wAA+B8AAPgfAAD8HwAA/B8AAPw/AAD+PwAA/j8AAP9/AAD/fwAA/j8A + APwfAAD+fwAA//8AACgAAAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADrzJv/7cyc + /+3hzv/lu3r/5dGz/+jXvv/k0LL/7+LR/+/j0v/v49H/6Na6/+fVvP/WtH7/5M+y/+PPsf/kz7D/38ai + /+LNrf/iyaT/4cqp/+bMpv/p2cL/ybm9/9a0gP/UtIP/2r+V/4qH5f/duYL/2byP//PDcP+FgPj/kY3n + /wAAAP9va9L/fXrl/1pVzP8sJs//LCXM/zEt9v8nH/D/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAg + ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAIBwkJCQIgICAg + ICAgICAgCAUVFRULICAgICAgICAgICARBgQODyAgICAgICAgICAgExIQFA0gICAgICAgICAgIAoAHAEg + ICAgICAgICAgICAgGwwXICAgICAgICAgICAgIBgDGSAgICAgICAgICAgICAgHSAgICAgICAgICAgICAg + IBYgICAgICAgICAgICAgICImGiAgICAgICAgICAgICMkJyUhICAgICAgICAgICAgHx4gICAgICAgICAg + ICAgICAgICAgICAgIP//AAD//wAA//8AAPgfAAD4HwAA/B8AAPwfAAD8PwAA/j8AAP4/AAD/fwAA/38A + AP4/AAD8HwAA/n8AAP//AAAoAAAAEAAAACAAAAABAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + /ywmzv/Yt4T/b2vS/1pVzP/Jub3/5Mmg/ywm8/+Rjef/hIHl/+3gzP+FgPj/5bt6/+XStv/iza3/88Nw + /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqqqoAAAAAAK2qrQAAAAAADt3uAAAAAAAOZm0AAAAAAA + 1iYAAAAAAAACIgAAAAAAAALGAAAAAAAAAPAAAAAAAAAAUAAAAAAAAAl5AAAAAAAAQXEwAAAAAAAIsAAA + AAAAAAAAAAAA//8AAP//AAD//wAA+B8AAPgfAAD8HwAA/B8AAPw/AAD+PwAA/j8AAP9/AAD/fwAA/j8A + APwfAAD+fwAA//8AAA== + + + \ No newline at end of file diff --git a/SourceCode/GPS_Out/Source/satellite.ico b/SourceCode/GPS_Out/Source/satellite.ico new file mode 100644 index 000000000..5ba382095 Binary files /dev/null and b/SourceCode/GPS_Out/Source/satellite.ico differ diff --git a/SourceCode/ModSim/Source/App.config b/SourceCode/ModSim/Source/App.config new file mode 100644 index 000000000..f81d9c2ac --- /dev/null +++ b/SourceCode/ModSim/Source/App.config @@ -0,0 +1,141 @@ + + + + +
+
+ + + + + + + + + 53.4360564 + + + -111.160047 + + + 53.4360564 + + + -111.160047 + + + + + + 192 + + + 168 + + + 5 + + + + + + False + + + False + + + False + + + True + + + False + + + False + + + False + + + False + + + + + True + + + 29999 + + + 28888 + + + True + + + 0 + + + 0 + + + en + + + Default + + + 0 + + + 0 + + + + + + False + + + False + + + True + + + True + + + True + + + 192 + + + 168 + + + 1 + + + 127 + + + 255 + + + 255 + + + 255 + + + + + + + diff --git a/SourceCode/ModSim/Source/Forms/Controls.Designer.cs b/SourceCode/ModSim/Source/Forms/Controls.Designer.cs new file mode 100644 index 000000000..f2c6ad732 --- /dev/null +++ b/SourceCode/ModSim/Source/Forms/Controls.Designer.cs @@ -0,0 +1,498 @@ +using System; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Net.Sockets; +using System.Net; +using System.Text; +using System.Windows.Forms; +using static System.Windows.Forms.VisualStyles.VisualStyleElement; +using System.Globalization; + +namespace ModSim +{ + public partial class FormSim + { + private void btnSave_Click(object sender, EventArgs e) + { + Properties.Settings.Default.setGPS_SimLatitude = (double)nudLat.Value; + Properties.Settings.Default.setGPS_SimLongitude = (double)nudLon.Value; + Properties.Settings.Default.Save(); + latitude = Properties.Settings.Default.setGPS_SimLatitude; + longitude = Properties.Settings.Default.setGPS_SimLongitude; + } + + private void lblWAS_Click(object sender, EventArgs e) + { + tbarSteerAngleWAS.Value = 0; + steerAngle = 0; + lblWAS.Text = "Steer: 0.0°"; + } + private void lblKmh_Click(object sender, EventArgs e) + { + tbarSpeed.Value = 0; + lblKmh.Text = "Kmh: 0.0" ; + mSec.Text = "M/Sec: 0.0" ; + } + + private void tbarSteerAngleWAS_Scroll(object sender, EventArgs e) + { + steerAngleActual = tbarSteerAngleWAS.Value * 0.01; + lblWAS.Text = "Steer: " + (steerAngleActual).ToString("N2") + "°"; + } + + private void tbarSpeed_Scroll(object sender, EventArgs e) + { + if (tbarSpeed.Value < 0) lblKmh.BackColor = Color.Salmon; + else lblKmh.BackColor = Color.LightGreen; + + lblKmh.Text = "Kmh: " + (tbarSpeed.Value * 0.1).ToString("N1"); + mSec.Text = "M/Sec: " + (tbarSpeed.Value * 0.027777777777).ToString("N1"); + } + + private void tbarRoll_Scroll(object sender, EventArgs e) + { + roll = (double)tbarRoll.Value * 0.1; + rollIMU = (int)(roll*10); + lblRoll.Text = "Roll: " + (roll).ToString("N2") + "°"; + } + private void lblRoll_Click(object sender, EventArgs e) + { + roll = 0; + rollIMU = 0; + lblRoll.Text = "Roll: 0°"; + tbarRoll.Value = 0; + } + private void btnSteerButtonRemote_Click(object sender, EventArgs e) + { + if (steerSwitch > 0) steerSwitch = 0; + else steerSwitch = 1; + btnSteerButtonRemote.BackColor = Color.Green; + } + + private void cboxSteerSwitchRemote_Click(object sender, EventArgs e) + { + if (cboxSteerSwitchRemote.Checked) steerSwitch = 0; + else steerSwitch = 1; + } + + + private void cboxWorkSwitch_Click(object sender, EventArgs e) + { + if (cboxWorkSwitch.Checked) workSwitch = 0; + else workSwitch = 1; + } + + public void TimedMessageBox(int timeout, string title, string message) + { + var form = new FormTimedMessage(timeout, title, message); + form.Show(); + } + + public void YesMessageBox(string s1) + { + var form = new FormYes(s1); + form.ShowDialog(this); + } + + #region GPS Simulator + + private string TimeNow = ""; + + //Our two new nmea strings + private readonly StringBuilder sbOGI = new StringBuilder(); + private readonly StringBuilder sbNDA = new StringBuilder(); + + private readonly StringBuilder sbHDT = new StringBuilder(); + private readonly StringBuilder sbRMC = new StringBuilder(); + + private readonly StringBuilder sbGGA = new StringBuilder(); + private readonly StringBuilder sbVTG = new StringBuilder(); + private readonly StringBuilder sbAVR = new StringBuilder(); + private readonly StringBuilder sbKSXT = new StringBuilder(); + + //The entire string to send out + private readonly StringBuilder sbSendText = new StringBuilder(); + + //GPS related properties + private readonly int fixQuality = 8, sats = 12; + + private readonly double HDOP = 0.9; + public double altitude = 300; + private char EW = 'W'; + private char NS = 'N'; + + public double latitude, longitude; + + private double latDeg, latMinu, longDeg, longMinu, latNMEA, longNMEA; + public double speed = 0.6, headingTrue, stepDistance = 0.05, steerAngle; + private double degrees, roll = 0; + + private int rollIMU = 0, headingIMU = 0;//, pitchIMU = 0; + + private const double ToRadians = 0.01745329251994329576923690768489, ToDegrees = 57.295779513082325225835265587528; + + //The checksum of an NMEA line + private string sumStr = ""; + + private void simTimer_Tick(object sender, EventArgs e) + { + stepDistance = tbarSpeed.Value * 0.027777777777 * (0.1); + + if (guidanceStatus == 0) + steerAngle = tbarSteerAngleWAS.Value * 0.01; + else + { + steerAngle = steerAngleSetPoint; + tbarSteerAngleWAS.Value = (int)(steerAngleSetPoint); + steerAngleActual = steerAngle; + lblWAS.Text = "Steer: " + (steerAngleActual).ToString("N2") + "°"; + } + + double temp = (stepDistance * Math.Tan(steerAngle * 0.02) / 2.5); + headingTrue += temp; + + if (headingTrue > (2.0 * Math.PI)) headingTrue -= (2.0 * Math.PI); + if (headingTrue < 0) headingTrue += (2.0 * Math.PI); + + degrees = ToDegrees * headingTrue; + + headingIMU = (int)(degrees*10); + + lblHeading.Text = (headingTrue * 57.29577951308).ToString("N2") + '°'; + + CalculateNewPostionFromBearingDistance(ToRadians * latitude, ToRadians * longitude, headingTrue, stepDistance / 1000.0); + + lblCurrentLon.Text = longitude.ToString("N7"); + lblCurrentLat.Text = latitude.ToString("N7"); + + //calc the speed + speed = Math.Round(1.944 * stepDistance * 1.0 / (0.1), 1); + + TimeNow = DateTime.UtcNow.ToString("HHmmss.fff,", CultureInfo.InvariantCulture); + + if (cboxVTG.Checked) + { + BuildVTG(); + sbSendText.Append(sbVTG.ToString()); + SendUDPMessage(sbVTG.ToString()); + } + if (cboxAVR.Checked) + { + BuildAVR(); + sbSendText.Append(sbAVR.ToString()); + SendUDPMessage(sbAVR.ToString()); + } + if (cboxHDT.Checked) + { + BuildHDT(); + sbSendText.Append(sbHDT.ToString()); + SendUDPMessage(sbHDT.ToString()); + } + if (cboxGGA.Checked) + { + BuildGGA(); + sbSendText.Append(sbGGA.ToString()); + SendUDPMessage(sbGGA.ToString()); + } + if (cboxRMC.Checked) + { + BuildRMC(); + sbSendText.Append(sbRMC.ToString()); + SendUDPMessage(sbRMC.ToString()); + } + if (cboxOGI.Checked) + { + BuildOGI(); + sbSendText.Append(sbOGI.ToString()); + SendUDPMessage(sbOGI.ToString()); + } + + if (cboxNDA.Checked) + { + BuildNDA(); + sbSendText.Append(sbNDA.ToString()); + SendUDPMessage(sbNDA.ToString()); + } + + if (cboxKSXT.Checked) + { + BuildKSXT(); + sbSendText.Append(sbKSXT.ToString()); + SendUDPMessage(sbKSXT.ToString()); + } + + sbSendText.Clear(); + } + + public void CalculateNewPostionFromBearingDistance(double lat, double lng, double bearing, double distance) + { + double R = distance / 6371.0; // Earth Radius in Km + + double lat2 = Math.Asin((Math.Sin(lat) * Math.Cos(R)) + (Math.Cos(lat) * Math.Sin(R) * Math.Cos(bearing))); + double lon2 = lng + Math.Atan2(Math.Sin(bearing) * Math.Sin(R) * Math.Cos(lat), Math.Cos(R) - (Math.Sin(lat) * Math.Sin(lat2))); + + latitude = ToDegrees * lat2; + longitude = ToDegrees * lon2; + + //convert to DMS from Degrees + latMinu = latitude; + longMinu = longitude; + + latDeg = (int)latitude; + longDeg = (int)longitude; + + latMinu -= latDeg; + longMinu -= longDeg; + + latMinu = Math.Round(latMinu * 60.0, 7); + longMinu = Math.Round(longMinu * 60.0, 7); + + latDeg *= 100.0; + longDeg *= 100.0; + + latNMEA = latMinu + latDeg; + longNMEA = longMinu + longDeg; + + if (latitude >= 0) NS = 'N'; + else NS = 'S'; + if (longitude >= 0) EW = 'E'; + else EW = 'W'; + } + + //calculate the NMEA checksum to stuff at the end + public void CalculateChecksum(string Sentence) + { + int sum = 0, inx; + char[] sentence_chars = Sentence.ToCharArray(); + char tmp; + // All character xor:ed results in the trailing hex checksum + // The checksum calc starts after '$' and ends before '*' + for (inx = 1; ; inx++) + { + tmp = sentence_chars[inx]; + // Indicates end of data and start of checksum + if (tmp == '*') + break; + sum ^= tmp; // Build checksum + } + // Calculated checksum converted to a 2 digit hex string + sumStr = String.Format("{0:X2}", sum); + } + + private void BuildGGA() + { + sbGGA.Clear(); + sbGGA.Append("$GPGGA,"); + sbGGA.Append(TimeNow); + sbGGA.Append(Math.Abs(latNMEA).ToString("0000.0000000", CultureInfo.InvariantCulture)).Append(',').Append(NS).Append(','); + sbGGA.Append(Math.Abs(longNMEA).ToString("00000.0000000", CultureInfo.InvariantCulture)).Append(',').Append(EW).Append(','); + sbGGA.Append(fixQuality.ToString(CultureInfo.InvariantCulture)).Append(',').Append(sats.ToString(CultureInfo.InvariantCulture)).Append(',').Append(HDOP.ToString(CultureInfo.InvariantCulture)).Append(',').Append("1000"); + sbGGA.Append(",M,46.9,M,37.1,,*"); + + CalculateChecksum(sbGGA.ToString()); + sbGGA.Append(sumStr); + sbGGA.Append("\r\n"); + } + + private void BuildVTG() + { + sbVTG.Clear(); + sbVTG.Append("$GPVTG,"); + sbVTG.Append(degrees.ToString("N5", CultureInfo.InvariantCulture)); + sbVTG.Append(",T,034.4,M,"); + sbVTG.Append(speed.ToString(CultureInfo.InvariantCulture)); + sbVTG.Append(",N,"); + sbVTG.Append((speed * 1.852).ToString(CultureInfo.InvariantCulture)); + sbVTG.Append(",K*"); + + CalculateChecksum(sbVTG.ToString()); + sbVTG.Append(sumStr); + sbVTG.Append("\r\n"); + } + + private void BuildHDT() + { + sbHDT.Clear(); + sbHDT.Append("$GNHDT,"); + sbHDT.Append(degrees.ToString("N5", CultureInfo.InvariantCulture)); + sbHDT.Append(",T*"); + + CalculateChecksum(sbHDT.ToString()); + sbHDT.Append(sumStr); + sbHDT.Append("\r\n"); + } + + private void BuildAVR() + { + sbAVR.Clear(); + sbAVR.Append("$PTNL,AVR,"); + sbAVR.Append(TimeNow); + sbAVR.Append(degrees.ToString("N5", CultureInfo.InvariantCulture)); //field 2 + + sbAVR.Append(",Yaw,-2.1,Tilt,"); //field 3,4,5 + + sbAVR.Append(roll.ToString() + ",Roll,"); //field 6,7 + + sbAVR.Append("444.232,3,1.2,17*"); //field 8 thru 12 + + CalculateChecksum(sbAVR.ToString()); + sbAVR.Append(sumStr); + sbAVR.Append("\r\n"); + } + + private void BuildOGI() + { + + sbOGI.Clear(); + sbOGI.Append("$PAOGI,"); + + sbOGI.Append(TimeNow); + sbOGI.Append(Math.Abs(latNMEA).ToString("0000.0000000", CultureInfo.InvariantCulture)).Append(',').Append(NS).Append(','); + sbOGI.Append(Math.Abs(longNMEA).ToString("0000.0000000", CultureInfo.InvariantCulture)).Append(',').Append(EW).Append(','); + + sbOGI.Append(fixQuality.ToString(CultureInfo.InvariantCulture)).Append(',') + .Append(sats.ToString(CultureInfo.InvariantCulture)).Append(',') + .Append(HDOP.ToString(CultureInfo.InvariantCulture)).Append(',') + .Append("1000,3.2,") //10 + .Append(speed.ToString(CultureInfo.InvariantCulture)).Append(',') + .Append(degrees.ToString("N5", CultureInfo.InvariantCulture)).Append(',') + .Append(roll.ToString(CultureInfo.InvariantCulture)).Append(",0.12,359.9,T*"); + + CalculateChecksum(sbOGI.ToString()); + sbOGI.Append(sumStr); + sbOGI.Append("\r\n"); + } + + private void BuildNDA() + { + + sbNDA.Clear(); + sbNDA.Append("$PANDA,"); + + sbNDA.Append(TimeNow); + sbNDA.Append(Math.Abs(latNMEA).ToString("0000.0000000", CultureInfo.InvariantCulture)).Append(',').Append(NS).Append(','); + sbNDA.Append(Math.Abs(longNMEA).ToString("0000.0000000", CultureInfo.InvariantCulture)).Append(',').Append(EW).Append(','); + + sbNDA.Append(fixQuality.ToString(CultureInfo.InvariantCulture)).Append(',') + .Append(sats.ToString(CultureInfo.InvariantCulture)).Append(',') + .Append(HDOP.ToString(CultureInfo.InvariantCulture)).Append(',') + .Append("1000,3.2,") //10 + .Append(speed.ToString(CultureInfo.InvariantCulture)).Append(',') + .Append((headingIMU).ToString(CultureInfo.InvariantCulture)).Append(',') + .Append((rollIMU).ToString(CultureInfo.InvariantCulture)).Append(",32,298").Append("*"); + + CalculateChecksum(sbNDA.ToString()); + sbNDA.Append(sumStr); + sbNDA.Append("\r\n"); + } + + private void BuildKSXT() + { + sbKSXT.Clear(); + sbKSXT.Append("$KSXT,"); //1 + + sbKSXT.Append(TimeNow); + sbKSXT.Append(Math.Abs(longitude).ToString("0000.0000000", CultureInfo.InvariantCulture)).Append(','); + sbKSXT.Append(Math.Abs(latitude).ToString("0000.0000000", CultureInfo.InvariantCulture)).Append(','); + + sbKSXT.Append(altitude.ToString(CultureInfo.InvariantCulture)).Append(',') //altitude + .Append(degrees.ToString("N5", CultureInfo.InvariantCulture)) //true heading + .Append(",22,35,") // Pitch, SpeedAngle + .Append(speed.ToString(CultureInfo.InvariantCulture)).Append(',') + .Append(roll.ToString(CultureInfo.InvariantCulture)).Append(",3,3,13,-1075,-98,-8,,,,37,13,,") + .Append("*3FCF0C9B"); + + //sbKSXT.Append(sumStr); + sbKSXT.Append("\r\n"); + } + + /* + $KSXT $KSXT Log header + + 2 20191219093115.00 YYYYMMDDhhmmss.ss Satellite time in format of yyyymmddhhmmss.ss, + e.g. 2016040106284180 means + 2016(year)4(month)1(day)06(hour)28(mins)41.80(secs) + + 3 112.87713062 x1 Longitude(°) + + 4 28.23315515 x2 Latitude(°) + + 5 65.5618 x3 Height (m) + + 6 0.00 x4 Yaw, the angle between the line connecting two + antennas and True North (primary antenna + positioning and secondary antenna heading) (0° + 360°) + + 7 0.00 x5 Pitch (-90° 90°) + + 8 336.65 x6 Speed angle, the angle between vehicle traveling + direction and True North (0° 360°) + + 9 0.010 x7 Speed in vehicle traveling direction (km/h) + + 10 x8 Roll (-90° 90°) + + 11 3 x9 Positioning status: 0-invalid solution; 1-single point solution; + 2-RTK floating point; 3-RTK fixed point + + 12 0 x10 Heading status: 0-invalid solution; 1-single point solution; + 2-RTK floating point; 3-RTK fixed point + + 13 0 x11 Number of satellites used in heading + + 14 23 x12 Number of satellites used in positioning (primary antenna) + + 15 -1075.146 x13 East position under geographic coordinates with + the base station as the origin (m) (empty if none) + + 16 -98.462 x14 North position under geographic coordinates with + the base station as the origin (m) (empty if none) + + 17 -8.618 x15 Up position under geographic coordinates with + the base station as the origin (m) (empty if none) + + 18 -0.004 x16 East speed under geographic coordinates (km/h) + (empty if none) + + 19 0.009 x17 North speed under geographic coordinates (km/h) + (empty if none) + + 20 0.004 x18 Up speed under geographic coordinates (km/h) + (empty if none) + + 21 1.0 x19 Age of differential + + 22 30 x20 Number of satellites tracked in base station + + 23 x23 Reserved + + 23 Parity 3FCF0C9B XOR check sum (Hex string, check from the + beginning of the frame) + + + */ + + private void BuildRMC() + { + sbRMC.Clear(); + sbRMC.Append("$GPRMC,") + .Append(TimeNow).Append("A,") + .Append(Math.Abs(latNMEA).ToString("0000.0000000", CultureInfo.InvariantCulture)).Append(',').Append(NS).Append(',') + .Append(Math.Abs(longNMEA).ToString("0000.0000000", CultureInfo.InvariantCulture)).Append(',').Append(EW).Append(',') + .Append(speed.ToString(CultureInfo.InvariantCulture)).Append(',') + .Append(degrees.ToString("N5", CultureInfo.InvariantCulture)) + .Append(",230394,359.9*"); + + CalculateChecksum(sbRMC.ToString()); + sbRMC.Append(sumStr); + sbRMC.Append("\r\n"); + } + +#endregion + + } +} + + diff --git a/SourceCode/ModSim/Source/Forms/FormSim.Designer.cs b/SourceCode/ModSim/Source/Forms/FormSim.Designer.cs new file mode 100644 index 000000000..8c319c4ed --- /dev/null +++ b/SourceCode/ModSim/Source/Forms/FormSim.Designer.cs @@ -0,0 +1,1944 @@ + +namespace ModSim +{ + partial class FormSim + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormSim)); + this.lblIP = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.lbl1To8 = new System.Windows.Forms.Label(); + this.lbl9To16 = new System.Windows.Forms.Label(); + this.btnSteerButtonRemote = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.label6 = new System.Windows.Forms.Label(); + this.lblScanReply = new System.Windows.Forms.Label(); + this.lblSteerSwitchStatus = new System.Windows.Forms.Label(); + this.label20 = new System.Windows.Forms.Label(); + this.lblAckerman = new System.Windows.Forms.Label(); + this.cboxWorkSwitch = new System.Windows.Forms.CheckBox(); + this.lblWAS_Offset = new System.Windows.Forms.Label(); + this.cboxSteerSwitchRemote = new System.Windows.Forms.CheckBox(); + this.lblHighPWM = new System.Windows.Forms.Label(); + this.lblIPSet3 = new System.Windows.Forms.Label(); + this.lblGuidanceStatus = new System.Windows.Forms.Label(); + this.lblIPSet2 = new System.Windows.Forms.Label(); + this.lblWAS_Counts = new System.Windows.Forms.Label(); + this.lblIPSet1 = new System.Windows.Forms.Label(); + this.lblKp = new System.Windows.Forms.Label(); + this.lblMinPWM = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.lblUseY_Axis = new System.Windows.Forms.Label(); + this.lblLowPWM = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label35 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label36 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label37 = new System.Windows.Forms.Label(); + this.label38 = new System.Windows.Forms.Label(); + this.lblCurrent = new System.Windows.Forms.Label(); + this.label39 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.label40 = new System.Windows.Forms.Label(); + this.lblPressure = new System.Windows.Forms.Label(); + this.label41 = new System.Windows.Forms.Label(); + this.label19 = new System.Windows.Forms.Label(); + this.label18 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.lblPulseCounts = new System.Windows.Forms.Label(); + this.lblShaftEnc = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.lblSteerBtn = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.lblSteerSw = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.lblDanfoss = new System.Windows.Forms.Label(); + this.label28 = new System.Windows.Forms.Label(); + this.lblCytron = new System.Windows.Forms.Label(); + this.lblInvertWAS = new System.Windows.Forms.Label(); + this.lblSingleInputWAS = new System.Windows.Forms.Label(); + this.lblRelayActHigh = new System.Windows.Forms.Label(); + this.lblMotorDirection = new System.Windows.Forms.Label(); + this.cboxKSXT = new System.Windows.Forms.CheckBox(); + this.cboxNDA = new System.Windows.Forms.CheckBox(); + this.lblWAS = new System.Windows.Forms.Label(); + this.tbarSteerAngleWAS = new System.Windows.Forms.TrackBar(); + this.cboxOGI = new System.Windows.Forms.CheckBox(); + this.cboxGGA = new System.Windows.Forms.CheckBox(); + this.lblKmh = new System.Windows.Forms.Label(); + this.mSec = new System.Windows.Forms.Label(); + this.cboxHDT = new System.Windows.Forms.CheckBox(); + this.cboxAVR = new System.Windows.Forms.CheckBox(); + this.cboxVTG = new System.Windows.Forms.CheckBox(); + this.tbarSpeed = new System.Windows.Forms.TrackBar(); + this.simTimer = new System.Windows.Forms.Timer(this.components); + this.lblHeading = new System.Windows.Forms.Label(); + this.cboxRMC = new System.Windows.Forms.CheckBox(); + this.tbarRoll = new System.Windows.Forms.TrackBar(); + this.lblRoll = new System.Windows.Forms.Label(); + this.nudLat = new System.Windows.Forms.NumericUpDown(); + this.nudLon = new System.Windows.Forms.NumericUpDown(); + this.btnSave = new System.Windows.Forms.Button(); + this.lblCurrentLat = new System.Windows.Forms.Label(); + this.lblLatt = new System.Windows.Forms.Label(); + this.lblCurrentLon = new System.Windows.Forms.Label(); + this.label22 = new System.Windows.Forms.Label(); + this.lblGPSSpeedMM = new System.Windows.Forms.Label(); + this.lblUTurn = new System.Windows.Forms.Label(); + this.lblTram = new System.Windows.Forms.Label(); + this.lblHydLift = new System.Windows.Forms.Label(); + this.label26 = new System.Windows.Forms.Label(); + this.label30 = new System.Windows.Forms.Label(); + this.label31 = new System.Windows.Forms.Label(); + this.label32 = new System.Windows.Forms.Label(); + this.label33 = new System.Windows.Forms.Label(); + this.label34 = new System.Windows.Forms.Label(); + this.label42 = new System.Windows.Forms.Label(); + this.label43 = new System.Windows.Forms.Label(); + this.label44 = new System.Windows.Forms.Label(); + this.label45 = new System.Windows.Forms.Label(); + this.label46 = new System.Windows.Forms.Label(); + this.label47 = new System.Windows.Forms.Label(); + this.lblLowerTime = new System.Windows.Forms.Label(); + this.lblRaiseTime = new System.Windows.Forms.Label(); + this.lblRelayActiveHigh = new System.Windows.Forms.Label(); + this.lblLiftEnable = new System.Windows.Forms.Label(); + this.lblUser2 = new System.Windows.Forms.Label(); + this.lblUser1 = new System.Windows.Forms.Label(); + this.lblUser4 = new System.Windows.Forms.Label(); + this.lblUser3 = new System.Windows.Forms.Label(); + this.lbl1To8M = new System.Windows.Forms.Label(); + this.lbl9To16M = new System.Windows.Forms.Label(); + this.label17 = new System.Windows.Forms.Label(); + this.label21 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.lblZone1 = new System.Windows.Forms.Label(); + this.lblZone2 = new System.Windows.Forms.Label(); + this.lblZone3 = new System.Windows.Forms.Label(); + this.lblZone4 = new System.Windows.Forms.Label(); + this.lblZone5 = new System.Windows.Forms.Label(); + this.lblZone6 = new System.Windows.Forms.Label(); + this.lblZone7 = new System.Windows.Forms.Label(); + this.lblZone8 = new System.Windows.Forms.Label(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.tbarSteerAngleWAS)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.tbarSpeed)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.tbarRoll)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudLat)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudLon)).BeginInit(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // lblIP + // + this.lblIP.BackColor = System.Drawing.Color.Transparent; + this.lblIP.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblIP.ForeColor = System.Drawing.Color.Black; + this.lblIP.Location = new System.Drawing.Point(5, 150); + this.lblIP.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblIP.Name = "lblIP"; + this.lblIP.Size = new System.Drawing.Size(143, 59); + this.lblIP.TabIndex = 464; + this.lblIP.Text = "288.288.288.288\r\n288\r\n288"; + this.lblIP.Click += new System.EventHandler(this.lblIP_Click); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.BackColor = System.Drawing.Color.Transparent; + this.label2.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label2.ForeColor = System.Drawing.Color.Black; + this.label2.Location = new System.Drawing.Point(9, 124); + this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(97, 19); + this.label2.TabIndex = 481; + this.label2.Text = "AOG Status:"; + // + // lbl1To8 + // + this.lbl1To8.AutoSize = true; + this.lbl1To8.BackColor = System.Drawing.Color.Transparent; + this.lbl1To8.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl1To8.ForeColor = System.Drawing.Color.Black; + this.lbl1To8.Location = new System.Drawing.Point(-2, 274); + this.lbl1To8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lbl1To8.Name = "lbl1To8"; + this.lbl1To8.Size = new System.Drawing.Size(88, 18); + this.lbl1To8.TabIndex = 500; + this.lbl1To8.Text = "00000000"; + // + // lbl9To16 + // + this.lbl9To16.AutoSize = true; + this.lbl9To16.BackColor = System.Drawing.Color.Transparent; + this.lbl9To16.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl9To16.ForeColor = System.Drawing.Color.Black; + this.lbl9To16.Location = new System.Drawing.Point(83, 274); + this.lbl9To16.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lbl9To16.Name = "lbl9To16"; + this.lbl9To16.Size = new System.Drawing.Size(88, 18); + this.lbl9To16.TabIndex = 502; + this.lbl9To16.Text = "00000000"; + // + // btnSteerButtonRemote + // + this.btnSteerButtonRemote.FlatAppearance.BorderColor = System.Drawing.Color.Black; + this.btnSteerButtonRemote.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnSteerButtonRemote.Location = new System.Drawing.Point(114, 27); + this.btnSteerButtonRemote.Name = "btnSteerButtonRemote"; + this.btnSteerButtonRemote.Size = new System.Drawing.Size(61, 61); + this.btnSteerButtonRemote.TabIndex = 514; + this.btnSteerButtonRemote.Text = "Steer Button"; + this.btnSteerButtonRemote.UseVisualStyleBackColor = true; + this.btnSteerButtonRemote.Click += new System.EventHandler(this.btnSteerButtonRemote_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.lblScanReply); + this.groupBox1.Controls.Add(this.lblSteerSwitchStatus); + this.groupBox1.Controls.Add(this.label20); + this.groupBox1.Controls.Add(this.lblAckerman); + this.groupBox1.Controls.Add(this.cboxWorkSwitch); + this.groupBox1.Controls.Add(this.lblWAS_Offset); + this.groupBox1.Controls.Add(this.cboxSteerSwitchRemote); + this.groupBox1.Controls.Add(this.lblHighPWM); + this.groupBox1.Controls.Add(this.lblIPSet3); + this.groupBox1.Controls.Add(this.lblGuidanceStatus); + this.groupBox1.Controls.Add(this.lblIPSet2); + this.groupBox1.Controls.Add(this.lblWAS_Counts); + this.groupBox1.Controls.Add(this.btnSteerButtonRemote); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.lblIPSet1); + this.groupBox1.Controls.Add(this.lblKp); + this.groupBox1.Controls.Add(this.lblMinPWM); + this.groupBox1.Controls.Add(this.label9); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.lblUseY_Axis); + this.groupBox1.Controls.Add(this.lblLowPWM); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.label4); + this.groupBox1.Controls.Add(this.label35); + this.groupBox1.Controls.Add(this.label5); + this.groupBox1.Controls.Add(this.label36); + this.groupBox1.Controls.Add(this.label7); + this.groupBox1.Controls.Add(this.label37); + this.groupBox1.Controls.Add(this.label38); + this.groupBox1.Controls.Add(this.lblCurrent); + this.groupBox1.Controls.Add(this.label39); + this.groupBox1.Controls.Add(this.label11); + this.groupBox1.Controls.Add(this.label40); + this.groupBox1.Controls.Add(this.lblPressure); + this.groupBox1.Controls.Add(this.label41); + this.groupBox1.Controls.Add(this.label19); + this.groupBox1.Controls.Add(this.label18); + this.groupBox1.Controls.Add(this.label13); + this.groupBox1.Controls.Add(this.lblPulseCounts); + this.groupBox1.Controls.Add(this.lblShaftEnc); + this.groupBox1.Controls.Add(this.label14); + this.groupBox1.Controls.Add(this.lblSteerBtn); + this.groupBox1.Controls.Add(this.label15); + this.groupBox1.Controls.Add(this.lblSteerSw); + this.groupBox1.Controls.Add(this.label16); + this.groupBox1.Controls.Add(this.lblDanfoss); + this.groupBox1.Controls.Add(this.label28); + this.groupBox1.Controls.Add(this.lblCytron); + this.groupBox1.Controls.Add(this.lblInvertWAS); + this.groupBox1.Controls.Add(this.lblSingleInputWAS); + this.groupBox1.Controls.Add(this.lblRelayActHigh); + this.groupBox1.Controls.Add(this.lblMotorDirection); + this.groupBox1.Location = new System.Drawing.Point(395, 12); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(314, 473); + this.groupBox1.TabIndex = 516; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Steer Module"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label6.Location = new System.Drawing.Point(6, 444); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(60, 19); + this.label6.TabIndex = 562; + this.label6.Text = "SubNet"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblScanReply + // + this.lblScanReply.BackColor = System.Drawing.Color.Transparent; + this.lblScanReply.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblScanReply.ForeColor = System.Drawing.Color.Black; + this.lblScanReply.Location = new System.Drawing.Point(93, 418); + this.lblScanReply.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblScanReply.Name = "lblScanReply"; + this.lblScanReply.Size = new System.Drawing.Size(40, 19); + this.lblScanReply.TabIndex = 561; + this.lblScanReply.Text = "No"; + this.lblScanReply.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lblSteerSwitchStatus + // + this.lblSteerSwitchStatus.AutoSize = true; + this.lblSteerSwitchStatus.BackColor = System.Drawing.Color.Transparent; + this.lblSteerSwitchStatus.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblSteerSwitchStatus.ForeColor = System.Drawing.Color.Black; + this.lblSteerSwitchStatus.Location = new System.Drawing.Point(102, 99); + this.lblSteerSwitchStatus.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblSteerSwitchStatus.Name = "lblSteerSwitchStatus"; + this.lblSteerSwitchStatus.Size = new System.Drawing.Size(19, 19); + this.lblSteerSwitchStatus.TabIndex = 558; + this.lblSteerSwitchStatus.Text = "0"; + // + // label20 + // + this.label20.AutoSize = true; + this.label20.BackColor = System.Drawing.Color.Transparent; + this.label20.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label20.ForeColor = System.Drawing.Color.Black; + this.label20.Location = new System.Drawing.Point(4, 99); + this.label20.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(102, 19); + this.label20.TabIndex = 557; + this.label20.Text = "Steer Switch:"; + // + // lblAckerman + // + this.lblAckerman.AutoSize = true; + this.lblAckerman.BackColor = System.Drawing.Color.SeaShell; + this.lblAckerman.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblAckerman.ForeColor = System.Drawing.Color.Black; + this.lblAckerman.Location = new System.Drawing.Point(106, 336); + this.lblAckerman.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblAckerman.Name = "lblAckerman"; + this.lblAckerman.Size = new System.Drawing.Size(14, 19); + this.lblAckerman.TabIndex = 540; + this.lblAckerman.Text = "."; + // + // cboxWorkSwitch + // + this.cboxWorkSwitch.Appearance = System.Windows.Forms.Appearance.Button; + this.cboxWorkSwitch.BackColor = System.Drawing.SystemColors.ButtonFace; + this.cboxWorkSwitch.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.cboxWorkSwitch.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); + this.cboxWorkSwitch.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cboxWorkSwitch.Location = new System.Drawing.Point(210, 29); + this.cboxWorkSwitch.Name = "cboxWorkSwitch"; + this.cboxWorkSwitch.Size = new System.Drawing.Size(61, 59); + this.cboxWorkSwitch.TabIndex = 539; + this.cboxWorkSwitch.Text = "Work Switch"; + this.cboxWorkSwitch.UseVisualStyleBackColor = false; + this.cboxWorkSwitch.Click += new System.EventHandler(this.cboxWorkSwitch_Click); + // + // lblWAS_Offset + // + this.lblWAS_Offset.AutoSize = true; + this.lblWAS_Offset.BackColor = System.Drawing.Color.SeaShell; + this.lblWAS_Offset.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblWAS_Offset.ForeColor = System.Drawing.Color.Black; + this.lblWAS_Offset.Location = new System.Drawing.Point(107, 308); + this.lblWAS_Offset.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblWAS_Offset.Name = "lblWAS_Offset"; + this.lblWAS_Offset.Size = new System.Drawing.Size(14, 19); + this.lblWAS_Offset.TabIndex = 540; + this.lblWAS_Offset.Text = "."; + // + // cboxSteerSwitchRemote + // + this.cboxSteerSwitchRemote.Appearance = System.Windows.Forms.Appearance.Button; + this.cboxSteerSwitchRemote.BackColor = System.Drawing.SystemColors.ButtonFace; + this.cboxSteerSwitchRemote.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.cboxSteerSwitchRemote.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); + this.cboxSteerSwitchRemote.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cboxSteerSwitchRemote.Location = new System.Drawing.Point(15, 29); + this.cboxSteerSwitchRemote.Name = "cboxSteerSwitchRemote"; + this.cboxSteerSwitchRemote.Size = new System.Drawing.Size(61, 59); + this.cboxSteerSwitchRemote.TabIndex = 538; + this.cboxSteerSwitchRemote.Text = "Steer Switch"; + this.cboxSteerSwitchRemote.UseVisualStyleBackColor = false; + this.cboxSteerSwitchRemote.Click += new System.EventHandler(this.cboxSteerSwitchRemote_Click); + // + // lblHighPWM + // + this.lblHighPWM.AutoSize = true; + this.lblHighPWM.BackColor = System.Drawing.Color.SeaShell; + this.lblHighPWM.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblHighPWM.ForeColor = System.Drawing.Color.Black; + this.lblHighPWM.Location = new System.Drawing.Point(107, 196); + this.lblHighPWM.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblHighPWM.Name = "lblHighPWM"; + this.lblHighPWM.Size = new System.Drawing.Size(14, 19); + this.lblHighPWM.TabIndex = 540; + this.lblHighPWM.Text = "."; + // + // lblIPSet3 + // + this.lblIPSet3.BackColor = System.Drawing.Color.Transparent; + this.lblIPSet3.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblIPSet3.ForeColor = System.Drawing.Color.Black; + this.lblIPSet3.Location = new System.Drawing.Point(149, 444); + this.lblIPSet3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblIPSet3.Name = "lblIPSet3"; + this.lblIPSet3.Size = new System.Drawing.Size(40, 19); + this.lblIPSet3.TabIndex = 557; + this.lblIPSet3.Text = "255"; + // + // lblGuidanceStatus + // + this.lblGuidanceStatus.AutoSize = true; + this.lblGuidanceStatus.BackColor = System.Drawing.Color.Transparent; + this.lblGuidanceStatus.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblGuidanceStatus.ForeColor = System.Drawing.Color.Black; + this.lblGuidanceStatus.Location = new System.Drawing.Point(102, 125); + this.lblGuidanceStatus.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblGuidanceStatus.Name = "lblGuidanceStatus"; + this.lblGuidanceStatus.Size = new System.Drawing.Size(19, 19); + this.lblGuidanceStatus.TabIndex = 516; + this.lblGuidanceStatus.Text = "0"; + // + // lblIPSet2 + // + this.lblIPSet2.BackColor = System.Drawing.Color.Transparent; + this.lblIPSet2.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblIPSet2.ForeColor = System.Drawing.Color.Black; + this.lblIPSet2.Location = new System.Drawing.Point(106, 444); + this.lblIPSet2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblIPSet2.Name = "lblIPSet2"; + this.lblIPSet2.Size = new System.Drawing.Size(40, 19); + this.lblIPSet2.TabIndex = 557; + this.lblIPSet2.Text = "255"; + // + // lblWAS_Counts + // + this.lblWAS_Counts.AutoSize = true; + this.lblWAS_Counts.BackColor = System.Drawing.Color.SeaShell; + this.lblWAS_Counts.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblWAS_Counts.ForeColor = System.Drawing.Color.Black; + this.lblWAS_Counts.Location = new System.Drawing.Point(107, 280); + this.lblWAS_Counts.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblWAS_Counts.Name = "lblWAS_Counts"; + this.lblWAS_Counts.Size = new System.Drawing.Size(14, 19); + this.lblWAS_Counts.TabIndex = 540; + this.lblWAS_Counts.Text = "."; + // + // lblIPSet1 + // + this.lblIPSet1.BackColor = System.Drawing.Color.Transparent; + this.lblIPSet1.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblIPSet1.ForeColor = System.Drawing.Color.Black; + this.lblIPSet1.Location = new System.Drawing.Point(63, 444); + this.lblIPSet1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblIPSet1.Name = "lblIPSet1"; + this.lblIPSet1.Size = new System.Drawing.Size(40, 19); + this.lblIPSet1.TabIndex = 557; + this.lblIPSet1.Text = "255"; + // + // lblKp + // + this.lblKp.AutoSize = true; + this.lblKp.BackColor = System.Drawing.Color.SeaShell; + this.lblKp.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblKp.ForeColor = System.Drawing.Color.Black; + this.lblKp.Location = new System.Drawing.Point(107, 168); + this.lblKp.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblKp.Name = "lblKp"; + this.lblKp.Size = new System.Drawing.Size(14, 19); + this.lblKp.TabIndex = 540; + this.lblKp.Text = "."; + // + // lblMinPWM + // + this.lblMinPWM.AutoSize = true; + this.lblMinPWM.BackColor = System.Drawing.Color.SeaShell; + this.lblMinPWM.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblMinPWM.ForeColor = System.Drawing.Color.Black; + this.lblMinPWM.Location = new System.Drawing.Point(107, 252); + this.lblMinPWM.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblMinPWM.Name = "lblMinPWM"; + this.lblMinPWM.Size = new System.Drawing.Size(14, 19); + this.lblMinPWM.TabIndex = 540; + this.lblMinPWM.Text = "."; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.BackColor = System.Drawing.Color.Transparent; + this.label9.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label9.ForeColor = System.Drawing.Color.Black; + this.label9.Location = new System.Drawing.Point(203, 238); + this.label9.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(66, 19); + this.label9.TabIndex = 538; + this.label9.Text = "SteerSw"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.ForeColor = System.Drawing.Color.Black; + this.label1.Location = new System.Drawing.Point(184, 100); + this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(85, 19); + this.label1.TabIndex = 538; + this.label1.Text = "InvertWAS"; + // + // lblUseY_Axis + // + this.lblUseY_Axis.AutoSize = true; + this.lblUseY_Axis.BackColor = System.Drawing.Color.SeaShell; + this.lblUseY_Axis.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblUseY_Axis.ForeColor = System.Drawing.Color.Black; + this.lblUseY_Axis.Location = new System.Drawing.Point(278, 376); + this.lblUseY_Axis.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblUseY_Axis.Name = "lblUseY_Axis"; + this.lblUseY_Axis.Size = new System.Drawing.Size(14, 19); + this.lblUseY_Axis.TabIndex = 540; + this.lblUseY_Axis.Text = "."; + // + // lblLowPWM + // + this.lblLowPWM.AutoSize = true; + this.lblLowPWM.BackColor = System.Drawing.Color.SeaShell; + this.lblLowPWM.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblLowPWM.ForeColor = System.Drawing.Color.Black; + this.lblLowPWM.Location = new System.Drawing.Point(107, 224); + this.lblLowPWM.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblLowPWM.Name = "lblLowPWM"; + this.lblLowPWM.Size = new System.Drawing.Size(14, 19); + this.lblLowPWM.TabIndex = 540; + this.lblLowPWM.Text = "."; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.BackColor = System.Drawing.Color.Transparent; + this.label3.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label3.ForeColor = System.Drawing.Color.Black; + this.label3.Location = new System.Drawing.Point(166, 123); + this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(103, 19); + this.label3.TabIndex = 538; + this.label3.Text = "RelayActHigh"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.BackColor = System.Drawing.Color.Transparent; + this.label4.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label4.ForeColor = System.Drawing.Color.Black; + this.label4.Location = new System.Drawing.Point(156, 146); + this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(113, 19); + this.label4.TabIndex = 538; + this.label4.Text = "MotorDirection"; + // + // label35 + // + this.label35.AutoSize = true; + this.label35.BackColor = System.Drawing.Color.Transparent; + this.label35.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label35.ForeColor = System.Drawing.Color.Black; + this.label35.Location = new System.Drawing.Point(12, 336); + this.label35.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label35.Name = "label35"; + this.label35.Size = new System.Drawing.Size(89, 19); + this.label35.TabIndex = 544; + this.label35.Text = "Ackermann"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.BackColor = System.Drawing.Color.Transparent; + this.label5.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label5.ForeColor = System.Drawing.Color.Black; + this.label5.Location = new System.Drawing.Point(159, 169); + this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(110, 19); + this.label5.TabIndex = 538; + this.label5.Text = "SingleIP_WAS"; + // + // label36 + // + this.label36.AutoSize = true; + this.label36.BackColor = System.Drawing.Color.Transparent; + this.label36.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label36.ForeColor = System.Drawing.Color.Black; + this.label36.Location = new System.Drawing.Point(7, 308); + this.label36.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label36.Name = "label36"; + this.label36.Size = new System.Drawing.Size(94, 19); + this.label36.TabIndex = 543; + this.label36.Text = "WAS_Offset"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.BackColor = System.Drawing.Color.Transparent; + this.label7.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label7.ForeColor = System.Drawing.Color.Black; + this.label7.Location = new System.Drawing.Point(213, 192); + this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(56, 19); + this.label7.TabIndex = 538; + this.label7.Text = "Cytron"; + // + // label37 + // + this.label37.AutoSize = true; + this.label37.BackColor = System.Drawing.Color.Transparent; + this.label37.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label37.ForeColor = System.Drawing.Color.Black; + this.label37.Location = new System.Drawing.Point(0, 280); + this.label37.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label37.Name = "label37"; + this.label37.Size = new System.Drawing.Size(101, 19); + this.label37.TabIndex = 542; + this.label37.Text = "WAS_Counts"; + // + // label38 + // + this.label38.AutoSize = true; + this.label38.BackColor = System.Drawing.Color.Transparent; + this.label38.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label38.ForeColor = System.Drawing.Color.Black; + this.label38.Location = new System.Drawing.Point(32, 252); + this.label38.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label38.Name = "label38"; + this.label38.Size = new System.Drawing.Size(69, 19); + this.label38.TabIndex = 541; + this.label38.Text = "MinPWM"; + // + // lblCurrent + // + this.lblCurrent.AutoSize = true; + this.lblCurrent.BackColor = System.Drawing.Color.SeaShell; + this.lblCurrent.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblCurrent.ForeColor = System.Drawing.Color.Black; + this.lblCurrent.Location = new System.Drawing.Point(278, 353); + this.lblCurrent.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblCurrent.Name = "lblCurrent"; + this.lblCurrent.Size = new System.Drawing.Size(14, 19); + this.lblCurrent.TabIndex = 540; + this.lblCurrent.Text = "."; + // + // label39 + // + this.label39.AutoSize = true; + this.label39.BackColor = System.Drawing.Color.Transparent; + this.label39.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label39.ForeColor = System.Drawing.Color.Black; + this.label39.Location = new System.Drawing.Point(28, 224); + this.label39.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label39.Name = "label39"; + this.label39.Size = new System.Drawing.Size(73, 19); + this.label39.TabIndex = 540; + this.label39.Text = "LowPWM"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.BackColor = System.Drawing.Color.Transparent; + this.label11.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label11.ForeColor = System.Drawing.Color.Black; + this.label11.Location = new System.Drawing.Point(201, 261); + this.label11.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(68, 19); + this.label11.TabIndex = 538; + this.label11.Text = "SteerBtn"; + // + // label40 + // + this.label40.AutoSize = true; + this.label40.BackColor = System.Drawing.Color.Transparent; + this.label40.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label40.ForeColor = System.Drawing.Color.Black; + this.label40.Location = new System.Drawing.Point(24, 196); + this.label40.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label40.Name = "label40"; + this.label40.Size = new System.Drawing.Size(77, 19); + this.label40.TabIndex = 555; + this.label40.Text = "HighPWM"; + // + // lblPressure + // + this.lblPressure.AutoSize = true; + this.lblPressure.BackColor = System.Drawing.Color.SeaShell; + this.lblPressure.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblPressure.ForeColor = System.Drawing.Color.Black; + this.lblPressure.Location = new System.Drawing.Point(278, 330); + this.lblPressure.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblPressure.Name = "lblPressure"; + this.lblPressure.Size = new System.Drawing.Size(14, 19); + this.lblPressure.TabIndex = 540; + this.lblPressure.Text = "."; + // + // label41 + // + this.label41.AutoSize = true; + this.label41.BackColor = System.Drawing.Color.Transparent; + this.label41.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label41.ForeColor = System.Drawing.Color.Black; + this.label41.Location = new System.Drawing.Point(74, 168); + this.label41.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label41.Name = "label41"; + this.label41.Size = new System.Drawing.Size(27, 19); + this.label41.TabIndex = 556; + this.label41.Text = "Kp"; + // + // label19 + // + this.label19.AutoSize = true; + this.label19.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label19.Location = new System.Drawing.Point(9, 418); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(86, 19); + this.label19.TabIndex = 560; + this.label19.Text = "Scan Reply"; + this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label18 + // + this.label18.AutoSize = true; + this.label18.BackColor = System.Drawing.Color.Transparent; + this.label18.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label18.ForeColor = System.Drawing.Color.Black; + this.label18.Location = new System.Drawing.Point(174, 307); + this.label18.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(95, 19); + this.label18.TabIndex = 538; + this.label18.Text = "PulseCounts"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.BackColor = System.Drawing.Color.Transparent; + this.label13.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label13.ForeColor = System.Drawing.Color.Black; + this.label13.Location = new System.Drawing.Point(199, 284); + this.label13.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(70, 19); + this.label13.TabIndex = 538; + this.label13.Text = "ShaftEnc"; + // + // lblPulseCounts + // + this.lblPulseCounts.AutoSize = true; + this.lblPulseCounts.BackColor = System.Drawing.Color.SeaShell; + this.lblPulseCounts.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblPulseCounts.ForeColor = System.Drawing.Color.Black; + this.lblPulseCounts.Location = new System.Drawing.Point(278, 307); + this.lblPulseCounts.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblPulseCounts.Name = "lblPulseCounts"; + this.lblPulseCounts.Size = new System.Drawing.Size(14, 19); + this.lblPulseCounts.TabIndex = 540; + this.lblPulseCounts.Text = "."; + // + // lblShaftEnc + // + this.lblShaftEnc.AutoSize = true; + this.lblShaftEnc.BackColor = System.Drawing.Color.SeaShell; + this.lblShaftEnc.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblShaftEnc.ForeColor = System.Drawing.Color.Black; + this.lblShaftEnc.Location = new System.Drawing.Point(278, 284); + this.lblShaftEnc.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblShaftEnc.Name = "lblShaftEnc"; + this.lblShaftEnc.Size = new System.Drawing.Size(14, 19); + this.lblShaftEnc.TabIndex = 540; + this.lblShaftEnc.Text = "."; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.BackColor = System.Drawing.Color.Transparent; + this.label14.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label14.ForeColor = System.Drawing.Color.Black; + this.label14.Location = new System.Drawing.Point(204, 215); + this.label14.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(65, 19); + this.label14.TabIndex = 538; + this.label14.Text = "Danfoss"; + // + // lblSteerBtn + // + this.lblSteerBtn.AutoSize = true; + this.lblSteerBtn.BackColor = System.Drawing.Color.SeaShell; + this.lblSteerBtn.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblSteerBtn.ForeColor = System.Drawing.Color.Black; + this.lblSteerBtn.Location = new System.Drawing.Point(278, 261); + this.lblSteerBtn.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblSteerBtn.Name = "lblSteerBtn"; + this.lblSteerBtn.Size = new System.Drawing.Size(14, 19); + this.lblSteerBtn.TabIndex = 540; + this.lblSteerBtn.Text = "."; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.BackColor = System.Drawing.Color.Transparent; + this.label15.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label15.ForeColor = System.Drawing.Color.Black; + this.label15.Location = new System.Drawing.Point(200, 330); + this.label15.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(69, 19); + this.label15.TabIndex = 538; + this.label15.Text = "Pressure"; + // + // lblSteerSw + // + this.lblSteerSw.AutoSize = true; + this.lblSteerSw.BackColor = System.Drawing.Color.SeaShell; + this.lblSteerSw.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblSteerSw.ForeColor = System.Drawing.Color.Black; + this.lblSteerSw.Location = new System.Drawing.Point(278, 238); + this.lblSteerSw.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblSteerSw.Name = "lblSteerSw"; + this.lblSteerSw.Size = new System.Drawing.Size(14, 19); + this.lblSteerSw.TabIndex = 540; + this.lblSteerSw.Text = "."; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.BackColor = System.Drawing.Color.Transparent; + this.label16.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label16.ForeColor = System.Drawing.Color.Black; + this.label16.Location = new System.Drawing.Point(207, 353); + this.label16.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(62, 19); + this.label16.TabIndex = 538; + this.label16.Text = "Current"; + // + // lblDanfoss + // + this.lblDanfoss.AutoSize = true; + this.lblDanfoss.BackColor = System.Drawing.Color.SeaShell; + this.lblDanfoss.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblDanfoss.ForeColor = System.Drawing.Color.Black; + this.lblDanfoss.Location = new System.Drawing.Point(278, 215); + this.lblDanfoss.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblDanfoss.Name = "lblDanfoss"; + this.lblDanfoss.Size = new System.Drawing.Size(14, 19); + this.lblDanfoss.TabIndex = 540; + this.lblDanfoss.Text = "."; + // + // label28 + // + this.label28.AutoSize = true; + this.label28.BackColor = System.Drawing.Color.Transparent; + this.label28.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label28.ForeColor = System.Drawing.Color.Black; + this.label28.Location = new System.Drawing.Point(185, 376); + this.label28.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label28.Name = "label28"; + this.label28.Size = new System.Drawing.Size(84, 19); + this.label28.TabIndex = 538; + this.label28.Text = "UseY_Axis"; + // + // lblCytron + // + this.lblCytron.AutoSize = true; + this.lblCytron.BackColor = System.Drawing.Color.SeaShell; + this.lblCytron.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblCytron.ForeColor = System.Drawing.Color.Black; + this.lblCytron.Location = new System.Drawing.Point(278, 192); + this.lblCytron.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblCytron.Name = "lblCytron"; + this.lblCytron.Size = new System.Drawing.Size(14, 19); + this.lblCytron.TabIndex = 540; + this.lblCytron.Text = "."; + // + // lblInvertWAS + // + this.lblInvertWAS.AutoSize = true; + this.lblInvertWAS.BackColor = System.Drawing.Color.SeaShell; + this.lblInvertWAS.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblInvertWAS.ForeColor = System.Drawing.Color.Black; + this.lblInvertWAS.Location = new System.Drawing.Point(278, 100); + this.lblInvertWAS.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblInvertWAS.Name = "lblInvertWAS"; + this.lblInvertWAS.Size = new System.Drawing.Size(14, 19); + this.lblInvertWAS.TabIndex = 540; + this.lblInvertWAS.Text = "."; + // + // lblSingleInputWAS + // + this.lblSingleInputWAS.AutoSize = true; + this.lblSingleInputWAS.BackColor = System.Drawing.Color.SeaShell; + this.lblSingleInputWAS.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblSingleInputWAS.ForeColor = System.Drawing.Color.Black; + this.lblSingleInputWAS.Location = new System.Drawing.Point(278, 169); + this.lblSingleInputWAS.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblSingleInputWAS.Name = "lblSingleInputWAS"; + this.lblSingleInputWAS.Size = new System.Drawing.Size(14, 19); + this.lblSingleInputWAS.TabIndex = 540; + this.lblSingleInputWAS.Text = "."; + // + // lblRelayActHigh + // + this.lblRelayActHigh.AutoSize = true; + this.lblRelayActHigh.BackColor = System.Drawing.Color.SeaShell; + this.lblRelayActHigh.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblRelayActHigh.ForeColor = System.Drawing.Color.Black; + this.lblRelayActHigh.Location = new System.Drawing.Point(278, 123); + this.lblRelayActHigh.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblRelayActHigh.Name = "lblRelayActHigh"; + this.lblRelayActHigh.Size = new System.Drawing.Size(14, 19); + this.lblRelayActHigh.TabIndex = 540; + this.lblRelayActHigh.Text = "."; + // + // lblMotorDirection + // + this.lblMotorDirection.AutoSize = true; + this.lblMotorDirection.BackColor = System.Drawing.Color.SeaShell; + this.lblMotorDirection.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblMotorDirection.ForeColor = System.Drawing.Color.Black; + this.lblMotorDirection.Location = new System.Drawing.Point(278, 146); + this.lblMotorDirection.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblMotorDirection.Name = "lblMotorDirection"; + this.lblMotorDirection.Size = new System.Drawing.Size(14, 19); + this.lblMotorDirection.TabIndex = 540; + this.lblMotorDirection.Text = "."; + // + // cboxKSXT + // + this.cboxKSXT.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboxKSXT.Location = new System.Drawing.Point(283, 311); + this.cboxKSXT.Name = "cboxKSXT"; + this.cboxKSXT.Size = new System.Drawing.Size(80, 24); + this.cboxKSXT.TabIndex = 537; + this.cboxKSXT.Text = "KSXT"; + this.cboxKSXT.UseVisualStyleBackColor = true; + // + // cboxNDA + // + this.cboxNDA.Checked = true; + this.cboxNDA.CheckState = System.Windows.Forms.CheckState.Checked; + this.cboxNDA.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboxNDA.Location = new System.Drawing.Point(178, 339); + this.cboxNDA.Name = "cboxNDA"; + this.cboxNDA.Size = new System.Drawing.Size(69, 24); + this.cboxNDA.TabIndex = 536; + this.cboxNDA.Text = "NDA"; + this.cboxNDA.UseVisualStyleBackColor = true; + // + // lblWAS + // + this.lblWAS.BackColor = System.Drawing.Color.White; + this.lblWAS.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lblWAS.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblWAS.Location = new System.Drawing.Point(195, 10); + this.lblWAS.Name = "lblWAS"; + this.lblWAS.Size = new System.Drawing.Size(119, 21); + this.lblWAS.TabIndex = 535; + this.lblWAS.Text = "Steer: 0.0°"; + this.lblWAS.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.lblWAS.Click += new System.EventHandler(this.lblWAS_Click); + // + // tbarSteerAngleWAS + // + this.tbarSteerAngleWAS.LargeChange = 1; + this.tbarSteerAngleWAS.Location = new System.Drawing.Point(182, 41); + this.tbarSteerAngleWAS.Maximum = 6000; + this.tbarSteerAngleWAS.Minimum = -6000; + this.tbarSteerAngleWAS.Name = "tbarSteerAngleWAS"; + this.tbarSteerAngleWAS.Size = new System.Drawing.Size(190, 45); + this.tbarSteerAngleWAS.TabIndex = 534; + this.tbarSteerAngleWAS.TickFrequency = 500; + this.tbarSteerAngleWAS.Scroll += new System.EventHandler(this.tbarSteerAngleWAS_Scroll); + // + // cboxOGI + // + this.cboxOGI.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboxOGI.Location = new System.Drawing.Point(283, 337); + this.cboxOGI.Name = "cboxOGI"; + this.cboxOGI.Size = new System.Drawing.Size(69, 24); + this.cboxOGI.TabIndex = 532; + this.cboxOGI.Text = "OGI"; + this.cboxOGI.UseVisualStyleBackColor = true; + // + // cboxGGA + // + this.cboxGGA.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboxGGA.Location = new System.Drawing.Point(178, 259); + this.cboxGGA.Name = "cboxGGA"; + this.cboxGGA.Size = new System.Drawing.Size(69, 24); + this.cboxGGA.TabIndex = 530; + this.cboxGGA.Text = "GGA"; + this.cboxGGA.UseVisualStyleBackColor = true; + // + // lblKmh + // + this.lblKmh.BackColor = System.Drawing.Color.White; + this.lblKmh.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lblKmh.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblKmh.Location = new System.Drawing.Point(190, 86); + this.lblKmh.Name = "lblKmh"; + this.lblKmh.Size = new System.Drawing.Size(104, 24); + this.lblKmh.TabIndex = 529; + this.lblKmh.Text = "Kmh: 0.0"; + this.lblKmh.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lblKmh.Click += new System.EventHandler(this.lblKmh_Click); + // + // mSec + // + this.mSec.AutoSize = true; + this.mSec.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.mSec.Location = new System.Drawing.Point(296, 90); + this.mSec.Name = "mSec"; + this.mSec.Size = new System.Drawing.Size(60, 16); + this.mSec.TabIndex = 528; + this.mSec.Text = "m/s: 0.0"; + // + // cboxHDT + // + this.cboxHDT.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboxHDT.Location = new System.Drawing.Point(283, 285); + this.cboxHDT.Name = "cboxHDT"; + this.cboxHDT.Size = new System.Drawing.Size(69, 24); + this.cboxHDT.TabIndex = 527; + this.cboxHDT.Text = "HDT"; + this.cboxHDT.UseVisualStyleBackColor = true; + // + // cboxAVR + // + this.cboxAVR.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboxAVR.Location = new System.Drawing.Point(283, 259); + this.cboxAVR.Name = "cboxAVR"; + this.cboxAVR.Size = new System.Drawing.Size(69, 24); + this.cboxAVR.TabIndex = 526; + this.cboxAVR.Text = "AVR"; + this.cboxAVR.UseVisualStyleBackColor = true; + // + // cboxVTG + // + this.cboxVTG.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboxVTG.Location = new System.Drawing.Point(178, 285); + this.cboxVTG.Name = "cboxVTG"; + this.cboxVTG.Size = new System.Drawing.Size(69, 24); + this.cboxVTG.TabIndex = 525; + this.cboxVTG.Text = "VTG"; + this.cboxVTG.UseVisualStyleBackColor = true; + // + // tbarSpeed + // + this.tbarSpeed.LargeChange = 10; + this.tbarSpeed.Location = new System.Drawing.Point(182, 117); + this.tbarSpeed.Maximum = 500; + this.tbarSpeed.Minimum = -200; + this.tbarSpeed.Name = "tbarSpeed"; + this.tbarSpeed.Size = new System.Drawing.Size(190, 45); + this.tbarSpeed.TabIndex = 519; + this.tbarSpeed.TickFrequency = 50; + this.tbarSpeed.Scroll += new System.EventHandler(this.tbarSpeed_Scroll); + // + // simTimer + // + this.simTimer.Enabled = true; + this.simTimer.Tick += new System.EventHandler(this.simTimer_Tick); + // + // lblHeading + // + this.lblHeading.AutoSize = true; + this.lblHeading.BackColor = System.Drawing.Color.Transparent; + this.lblHeading.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblHeading.ForeColor = System.Drawing.Color.Black; + this.lblHeading.Location = new System.Drawing.Point(315, 11); + this.lblHeading.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblHeading.Name = "lblHeading"; + this.lblHeading.Size = new System.Drawing.Size(18, 18); + this.lblHeading.TabIndex = 557; + this.lblHeading.Text = "0"; + // + // cboxRMC + // + this.cboxRMC.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cboxRMC.Location = new System.Drawing.Point(178, 311); + this.cboxRMC.Name = "cboxRMC"; + this.cboxRMC.Size = new System.Drawing.Size(69, 24); + this.cboxRMC.TabIndex = 531; + this.cboxRMC.Text = "RMC"; + this.cboxRMC.UseVisualStyleBackColor = true; + // + // tbarRoll + // + this.tbarRoll.LargeChange = 10; + this.tbarRoll.Location = new System.Drawing.Point(182, 198); + this.tbarRoll.Maximum = 200; + this.tbarRoll.Minimum = -200; + this.tbarRoll.Name = "tbarRoll"; + this.tbarRoll.Size = new System.Drawing.Size(190, 45); + this.tbarRoll.TabIndex = 558; + this.tbarRoll.TickFrequency = 50; + this.tbarRoll.Scroll += new System.EventHandler(this.tbarRoll_Scroll); + // + // lblRoll + // + this.lblRoll.BackColor = System.Drawing.Color.White; + this.lblRoll.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lblRoll.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblRoll.Location = new System.Drawing.Point(220, 169); + this.lblRoll.Name = "lblRoll"; + this.lblRoll.Size = new System.Drawing.Size(114, 21); + this.lblRoll.TabIndex = 559; + this.lblRoll.Text = "Roll: 0°"; + this.lblRoll.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lblRoll.Click += new System.EventHandler(this.lblRoll_Click); + // + // nudLat + // + this.nudLat.DecimalPlaces = 7; + this.nudLat.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudLat.Location = new System.Drawing.Point(11, 52); + this.nudLat.Maximum = new decimal(new int[] { + 90, + 0, + 0, + 0}); + this.nudLat.Minimum = new decimal(new int[] { + 90, + 0, + 0, + -2147483648}); + this.nudLat.Name = "nudLat"; + this.nudLat.Size = new System.Drawing.Size(136, 27); + this.nudLat.TabIndex = 561; + this.nudLat.Value = new decimal(new int[] { + 534360564, + 0, + 0, + 458752}); + // + // nudLon + // + this.nudLon.DecimalPlaces = 7; + this.nudLon.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.nudLon.Location = new System.Drawing.Point(11, 81); + this.nudLon.Maximum = new decimal(new int[] { + 180, + 0, + 0, + 0}); + this.nudLon.Minimum = new decimal(new int[] { + 180, + 0, + 0, + -2147483648}); + this.nudLon.Name = "nudLon"; + this.nudLon.Size = new System.Drawing.Size(136, 27); + this.nudLon.TabIndex = 562; + this.nudLon.Value = new decimal(new int[] { + 1111600471, + 0, + 0, + -2147024896}); + // + // btnSave + // + this.btnSave.Location = new System.Drawing.Point(20, 112); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(101, 28); + this.btnSave.TabIndex = 559; + this.btnSave.Text = "Save"; + this.btnSave.UseVisualStyleBackColor = true; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // lblCurrentLat + // + this.lblCurrentLat.AutoSize = true; + this.lblCurrentLat.BackColor = System.Drawing.Color.Transparent; + this.lblCurrentLat.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblCurrentLat.ForeColor = System.Drawing.Color.Black; + this.lblCurrentLat.Location = new System.Drawing.Point(36, 4); + this.lblCurrentLat.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblCurrentLat.Name = "lblCurrentLat"; + this.lblCurrentLat.Size = new System.Drawing.Size(111, 19); + this.lblCurrentLat.TabIndex = 560; + this.lblCurrentLat.Text = "-88.8888888"; + // + // lblLatt + // + this.lblLatt.AutoSize = true; + this.lblLatt.BackColor = System.Drawing.Color.Transparent; + this.lblLatt.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblLatt.ForeColor = System.Drawing.Color.Black; + this.lblLatt.Location = new System.Drawing.Point(6, 4); + this.lblLatt.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblLatt.Name = "lblLatt"; + this.lblLatt.Size = new System.Drawing.Size(30, 19); + this.lblLatt.TabIndex = 559; + this.lblLatt.Text = "Lat"; + // + // lblCurrentLon + // + this.lblCurrentLon.AutoSize = true; + this.lblCurrentLon.BackColor = System.Drawing.Color.Transparent; + this.lblCurrentLon.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblCurrentLon.ForeColor = System.Drawing.Color.Black; + this.lblCurrentLon.Location = new System.Drawing.Point(36, 26); + this.lblCurrentLon.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblCurrentLon.Name = "lblCurrentLon"; + this.lblCurrentLon.Size = new System.Drawing.Size(121, 19); + this.lblCurrentLon.TabIndex = 564; + this.lblCurrentLon.Text = "-166.8888888"; + // + // label22 + // + this.label22.AutoSize = true; + this.label22.BackColor = System.Drawing.Color.Transparent; + this.label22.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label22.ForeColor = System.Drawing.Color.Black; + this.label22.Location = new System.Drawing.Point(1, 26); + this.label22.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(35, 19); + this.label22.TabIndex = 563; + this.label22.Text = "Lon"; + // + // lblGPSSpeedMM + // + this.lblGPSSpeedMM.AutoSize = true; + this.lblGPSSpeedMM.BackColor = System.Drawing.Color.SeaShell; + this.lblGPSSpeedMM.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblGPSSpeedMM.ForeColor = System.Drawing.Color.Black; + this.lblGPSSpeedMM.Location = new System.Drawing.Point(73, 44); + this.lblGPSSpeedMM.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblGPSSpeedMM.Name = "lblGPSSpeedMM"; + this.lblGPSSpeedMM.Size = new System.Drawing.Size(14, 19); + this.lblGPSSpeedMM.TabIndex = 567; + this.lblGPSSpeedMM.Text = "."; + // + // lblUTurn + // + this.lblUTurn.AutoSize = true; + this.lblUTurn.BackColor = System.Drawing.Color.SeaShell; + this.lblUTurn.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblUTurn.ForeColor = System.Drawing.Color.Black; + this.lblUTurn.Location = new System.Drawing.Point(73, 23); + this.lblUTurn.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblUTurn.Name = "lblUTurn"; + this.lblUTurn.Size = new System.Drawing.Size(14, 19); + this.lblUTurn.TabIndex = 569; + this.lblUTurn.Text = "."; + // + // lblTram + // + this.lblTram.AutoSize = true; + this.lblTram.BackColor = System.Drawing.Color.SeaShell; + this.lblTram.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblTram.ForeColor = System.Drawing.Color.Black; + this.lblTram.Location = new System.Drawing.Point(73, 86); + this.lblTram.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblTram.Name = "lblTram"; + this.lblTram.Size = new System.Drawing.Size(14, 19); + this.lblTram.TabIndex = 570; + this.lblTram.Text = "."; + // + // lblHydLift + // + this.lblHydLift.AutoSize = true; + this.lblHydLift.BackColor = System.Drawing.Color.SeaShell; + this.lblHydLift.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblHydLift.ForeColor = System.Drawing.Color.Black; + this.lblHydLift.Location = new System.Drawing.Point(73, 65); + this.lblHydLift.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblHydLift.Name = "lblHydLift"; + this.lblHydLift.Size = new System.Drawing.Size(14, 19); + this.lblHydLift.TabIndex = 571; + this.lblHydLift.Text = "."; + // + // label26 + // + this.label26.AutoSize = true; + this.label26.BackColor = System.Drawing.Color.Transparent; + this.label26.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label26.ForeColor = System.Drawing.Color.Black; + this.label26.Location = new System.Drawing.Point(127, 23); + this.label26.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(87, 19); + this.label26.TabIndex = 576; + this.label26.Text = "Raise Time"; + // + // label30 + // + this.label30.AutoSize = true; + this.label30.BackColor = System.Drawing.Color.Transparent; + this.label30.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label30.ForeColor = System.Drawing.Color.Black; + this.label30.Location = new System.Drawing.Point(21, 86); + this.label30.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label30.Name = "label30"; + this.label30.Size = new System.Drawing.Size(47, 19); + this.label30.TabIndex = 573; + this.label30.Text = "Tram"; + // + // label31 + // + this.label31.AutoSize = true; + this.label31.BackColor = System.Drawing.Color.Transparent; + this.label31.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label31.ForeColor = System.Drawing.Color.Black; + this.label31.Location = new System.Drawing.Point(4, 65); + this.label31.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label31.Name = "label31"; + this.label31.Size = new System.Drawing.Size(64, 19); + this.label31.TabIndex = 572; + this.label31.Text = "Hyd Lift"; + // + // label32 + // + this.label32.AutoSize = true; + this.label32.BackColor = System.Drawing.Color.Transparent; + this.label32.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label32.ForeColor = System.Drawing.Color.Black; + this.label32.Location = new System.Drawing.Point(16, 44); + this.label32.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label32.Name = "label32"; + this.label32.Size = new System.Drawing.Size(52, 19); + this.label32.TabIndex = 577; + this.label32.Text = "Speed"; + // + // label33 + // + this.label33.AutoSize = true; + this.label33.BackColor = System.Drawing.Color.Transparent; + this.label33.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label33.ForeColor = System.Drawing.Color.Black; + this.label33.Location = new System.Drawing.Point(19, 23); + this.label33.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label33.Name = "label33"; + this.label33.Size = new System.Drawing.Size(49, 19); + this.label33.TabIndex = 578; + this.label33.Text = "Uturn"; + // + // label34 + // + this.label34.AutoSize = true; + this.label34.BackColor = System.Drawing.Color.Transparent; + this.label34.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label34.ForeColor = System.Drawing.Color.Black; + this.label34.Location = new System.Drawing.Point(119, 86); + this.label34.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label34.Name = "label34"; + this.label34.Size = new System.Drawing.Size(95, 19); + this.label34.TabIndex = 581; + this.label34.Text = "Relay Act Hi"; + // + // label42 + // + this.label42.AutoSize = true; + this.label42.BackColor = System.Drawing.Color.Transparent; + this.label42.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label42.ForeColor = System.Drawing.Color.Black; + this.label42.Location = new System.Drawing.Point(131, 65); + this.label42.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label42.Name = "label42"; + this.label42.Size = new System.Drawing.Size(83, 19); + this.label42.TabIndex = 580; + this.label42.Text = "Lift Enable"; + // + // label43 + // + this.label43.AutoSize = true; + this.label43.BackColor = System.Drawing.Color.Transparent; + this.label43.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label43.ForeColor = System.Drawing.Color.Black; + this.label43.Location = new System.Drawing.Point(126, 44); + this.label43.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label43.Name = "label43"; + this.label43.Size = new System.Drawing.Size(88, 19); + this.label43.TabIndex = 579; + this.label43.Text = "LowerTime"; + // + // label44 + // + this.label44.AutoSize = true; + this.label44.BackColor = System.Drawing.Color.Transparent; + this.label44.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label44.ForeColor = System.Drawing.Color.Black; + this.label44.Location = new System.Drawing.Point(265, 23); + this.label44.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label44.Name = "label44"; + this.label44.Size = new System.Drawing.Size(50, 19); + this.label44.TabIndex = 579; + this.label44.Text = "User1"; + // + // label45 + // + this.label45.AutoSize = true; + this.label45.BackColor = System.Drawing.Color.Transparent; + this.label45.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label45.ForeColor = System.Drawing.Color.Black; + this.label45.Location = new System.Drawing.Point(265, 44); + this.label45.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label45.Name = "label45"; + this.label45.Size = new System.Drawing.Size(50, 19); + this.label45.TabIndex = 580; + this.label45.Text = "User2"; + // + // label46 + // + this.label46.AutoSize = true; + this.label46.BackColor = System.Drawing.Color.Transparent; + this.label46.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label46.ForeColor = System.Drawing.Color.Black; + this.label46.Location = new System.Drawing.Point(265, 65); + this.label46.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label46.Name = "label46"; + this.label46.Size = new System.Drawing.Size(50, 19); + this.label46.TabIndex = 581; + this.label46.Text = "User3"; + // + // label47 + // + this.label47.AutoSize = true; + this.label47.BackColor = System.Drawing.Color.Transparent; + this.label47.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label47.ForeColor = System.Drawing.Color.Black; + this.label47.Location = new System.Drawing.Point(265, 86); + this.label47.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label47.Name = "label47"; + this.label47.Size = new System.Drawing.Size(50, 19); + this.label47.TabIndex = 581; + this.label47.Text = "User4"; + // + // lblLowerTime + // + this.lblLowerTime.AutoSize = true; + this.lblLowerTime.BackColor = System.Drawing.Color.SeaShell; + this.lblLowerTime.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblLowerTime.ForeColor = System.Drawing.Color.Black; + this.lblLowerTime.Location = new System.Drawing.Point(216, 44); + this.lblLowerTime.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblLowerTime.Name = "lblLowerTime"; + this.lblLowerTime.Size = new System.Drawing.Size(14, 19); + this.lblLowerTime.TabIndex = 582; + this.lblLowerTime.Text = "."; + // + // lblRaiseTime + // + this.lblRaiseTime.AutoSize = true; + this.lblRaiseTime.BackColor = System.Drawing.Color.SeaShell; + this.lblRaiseTime.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblRaiseTime.ForeColor = System.Drawing.Color.Black; + this.lblRaiseTime.Location = new System.Drawing.Point(216, 23); + this.lblRaiseTime.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblRaiseTime.Name = "lblRaiseTime"; + this.lblRaiseTime.Size = new System.Drawing.Size(14, 19); + this.lblRaiseTime.TabIndex = 583; + this.lblRaiseTime.Text = "."; + // + // lblRelayActiveHigh + // + this.lblRelayActiveHigh.AutoSize = true; + this.lblRelayActiveHigh.BackColor = System.Drawing.Color.SeaShell; + this.lblRelayActiveHigh.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblRelayActiveHigh.ForeColor = System.Drawing.Color.Black; + this.lblRelayActiveHigh.Location = new System.Drawing.Point(216, 86); + this.lblRelayActiveHigh.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblRelayActiveHigh.Name = "lblRelayActiveHigh"; + this.lblRelayActiveHigh.Size = new System.Drawing.Size(14, 19); + this.lblRelayActiveHigh.TabIndex = 584; + this.lblRelayActiveHigh.Text = "."; + // + // lblLiftEnable + // + this.lblLiftEnable.AutoSize = true; + this.lblLiftEnable.BackColor = System.Drawing.Color.SeaShell; + this.lblLiftEnable.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblLiftEnable.ForeColor = System.Drawing.Color.Black; + this.lblLiftEnable.Location = new System.Drawing.Point(216, 65); + this.lblLiftEnable.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblLiftEnable.Name = "lblLiftEnable"; + this.lblLiftEnable.Size = new System.Drawing.Size(14, 19); + this.lblLiftEnable.TabIndex = 585; + this.lblLiftEnable.Text = "."; + // + // lblUser2 + // + this.lblUser2.AutoSize = true; + this.lblUser2.BackColor = System.Drawing.Color.SeaShell; + this.lblUser2.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblUser2.ForeColor = System.Drawing.Color.Black; + this.lblUser2.Location = new System.Drawing.Point(318, 44); + this.lblUser2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblUser2.Name = "lblUser2"; + this.lblUser2.Size = new System.Drawing.Size(14, 19); + this.lblUser2.TabIndex = 586; + this.lblUser2.Text = "."; + // + // lblUser1 + // + this.lblUser1.AutoSize = true; + this.lblUser1.BackColor = System.Drawing.Color.SeaShell; + this.lblUser1.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblUser1.ForeColor = System.Drawing.Color.Black; + this.lblUser1.Location = new System.Drawing.Point(318, 23); + this.lblUser1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblUser1.Name = "lblUser1"; + this.lblUser1.Size = new System.Drawing.Size(14, 19); + this.lblUser1.TabIndex = 587; + this.lblUser1.Text = "."; + // + // lblUser4 + // + this.lblUser4.AutoSize = true; + this.lblUser4.BackColor = System.Drawing.Color.SeaShell; + this.lblUser4.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblUser4.ForeColor = System.Drawing.Color.Black; + this.lblUser4.Location = new System.Drawing.Point(318, 86); + this.lblUser4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblUser4.Name = "lblUser4"; + this.lblUser4.Size = new System.Drawing.Size(14, 19); + this.lblUser4.TabIndex = 588; + this.lblUser4.Text = "."; + // + // lblUser3 + // + this.lblUser3.AutoSize = true; + this.lblUser3.BackColor = System.Drawing.Color.SeaShell; + this.lblUser3.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblUser3.ForeColor = System.Drawing.Color.Black; + this.lblUser3.Location = new System.Drawing.Point(318, 65); + this.lblUser3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblUser3.Name = "lblUser3"; + this.lblUser3.Size = new System.Drawing.Size(14, 19); + this.lblUser3.TabIndex = 589; + this.lblUser3.Text = "."; + // + // lbl1To8M + // + this.lbl1To8M.AutoSize = true; + this.lbl1To8M.BackColor = System.Drawing.Color.Transparent; + this.lbl1To8M.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl1To8M.ForeColor = System.Drawing.Color.Black; + this.lbl1To8M.Location = new System.Drawing.Point(-2, 323); + this.lbl1To8M.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lbl1To8M.Name = "lbl1To8M"; + this.lbl1To8M.Size = new System.Drawing.Size(88, 18); + this.lbl1To8M.TabIndex = 591; + this.lbl1To8M.Text = "00000000"; + // + // lbl9To16M + // + this.lbl9To16M.AutoSize = true; + this.lbl9To16M.BackColor = System.Drawing.Color.Transparent; + this.lbl9To16M.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl9To16M.ForeColor = System.Drawing.Color.Black; + this.lbl9To16M.Location = new System.Drawing.Point(83, 323); + this.lbl9To16M.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lbl9To16M.Name = "lbl9To16M"; + this.lbl9To16M.Size = new System.Drawing.Size(88, 18); + this.lbl9To16M.TabIndex = 593; + this.lbl9To16M.Text = "00000000"; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.BackColor = System.Drawing.Color.Transparent; + this.label17.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label17.ForeColor = System.Drawing.Color.Black; + this.label17.Location = new System.Drawing.Point(5, 251); + this.label17.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(45, 19); + this.label17.TabIndex = 594; + this.label17.Text = "Steer"; + // + // label21 + // + this.label21.AutoSize = true; + this.label21.BackColor = System.Drawing.Color.Transparent; + this.label21.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label21.ForeColor = System.Drawing.Color.Black; + this.label21.Location = new System.Drawing.Point(5, 303); + this.label21.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(66, 19); + this.label21.TabIndex = 595; + this.label21.Text = "Machine"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.label42); + this.groupBox2.Controls.Add(this.label33); + this.groupBox2.Controls.Add(this.label32); + this.groupBox2.Controls.Add(this.label31); + this.groupBox2.Controls.Add(this.label30); + this.groupBox2.Controls.Add(this.label26); + this.groupBox2.Controls.Add(this.lblHydLift); + this.groupBox2.Controls.Add(this.lblUser2); + this.groupBox2.Controls.Add(this.lblTram); + this.groupBox2.Controls.Add(this.lblUser1); + this.groupBox2.Controls.Add(this.lblUTurn); + this.groupBox2.Controls.Add(this.lblUser4); + this.groupBox2.Controls.Add(this.lblGPSSpeedMM); + this.groupBox2.Controls.Add(this.lblUser3); + this.groupBox2.Controls.Add(this.label43); + this.groupBox2.Controls.Add(this.label47); + this.groupBox2.Controls.Add(this.lblLowerTime); + this.groupBox2.Controls.Add(this.label46); + this.groupBox2.Controls.Add(this.label45); + this.groupBox2.Controls.Add(this.label34); + this.groupBox2.Controls.Add(this.label44); + this.groupBox2.Controls.Add(this.lblRaiseTime); + this.groupBox2.Controls.Add(this.lblLiftEnable); + this.groupBox2.Controls.Add(this.lblRelayActiveHigh); + this.groupBox2.Location = new System.Drawing.Point(18, 370); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(354, 116); + this.groupBox2.TabIndex = 596; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Machine Module"; + // + // lblZone1 + // + this.lblZone1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.lblZone1.AutoSize = true; + this.lblZone1.BackColor = System.Drawing.Color.Transparent; + this.lblZone1.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblZone1.ForeColor = System.Drawing.Color.Black; + this.lblZone1.Location = new System.Drawing.Point(4, 498); + this.lblZone1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblZone1.Name = "lblZone1"; + this.lblZone1.Size = new System.Drawing.Size(88, 18); + this.lblZone1.TabIndex = 597; + this.lblZone1.Text = "00000000"; + // + // lblZone2 + // + this.lblZone2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.lblZone2.AutoSize = true; + this.lblZone2.BackColor = System.Drawing.Color.Transparent; + this.lblZone2.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblZone2.ForeColor = System.Drawing.Color.Black; + this.lblZone2.Location = new System.Drawing.Point(92, 498); + this.lblZone2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblZone2.Name = "lblZone2"; + this.lblZone2.Size = new System.Drawing.Size(88, 18); + this.lblZone2.TabIndex = 597; + this.lblZone2.Text = "00000000"; + // + // lblZone3 + // + this.lblZone3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.lblZone3.AutoSize = true; + this.lblZone3.BackColor = System.Drawing.Color.Transparent; + this.lblZone3.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblZone3.ForeColor = System.Drawing.Color.Black; + this.lblZone3.Location = new System.Drawing.Point(180, 498); + this.lblZone3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblZone3.Name = "lblZone3"; + this.lblZone3.Size = new System.Drawing.Size(88, 18); + this.lblZone3.TabIndex = 597; + this.lblZone3.Text = "00000000"; + // + // lblZone4 + // + this.lblZone4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.lblZone4.AutoSize = true; + this.lblZone4.BackColor = System.Drawing.Color.Transparent; + this.lblZone4.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblZone4.ForeColor = System.Drawing.Color.Black; + this.lblZone4.Location = new System.Drawing.Point(268, 498); + this.lblZone4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblZone4.Name = "lblZone4"; + this.lblZone4.Size = new System.Drawing.Size(88, 18); + this.lblZone4.TabIndex = 597; + this.lblZone4.Text = "00000000"; + // + // lblZone5 + // + this.lblZone5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.lblZone5.AutoSize = true; + this.lblZone5.BackColor = System.Drawing.Color.Transparent; + this.lblZone5.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblZone5.ForeColor = System.Drawing.Color.Black; + this.lblZone5.Location = new System.Drawing.Point(356, 498); + this.lblZone5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblZone5.Name = "lblZone5"; + this.lblZone5.Size = new System.Drawing.Size(88, 18); + this.lblZone5.TabIndex = 597; + this.lblZone5.Text = "00000000"; + // + // lblZone6 + // + this.lblZone6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.lblZone6.AutoSize = true; + this.lblZone6.BackColor = System.Drawing.Color.Transparent; + this.lblZone6.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblZone6.ForeColor = System.Drawing.Color.Black; + this.lblZone6.Location = new System.Drawing.Point(444, 498); + this.lblZone6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblZone6.Name = "lblZone6"; + this.lblZone6.Size = new System.Drawing.Size(88, 18); + this.lblZone6.TabIndex = 597; + this.lblZone6.Text = "00000000"; + // + // lblZone7 + // + this.lblZone7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.lblZone7.AutoSize = true; + this.lblZone7.BackColor = System.Drawing.Color.Transparent; + this.lblZone7.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblZone7.ForeColor = System.Drawing.Color.Black; + this.lblZone7.Location = new System.Drawing.Point(532, 498); + this.lblZone7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblZone7.Name = "lblZone7"; + this.lblZone7.Size = new System.Drawing.Size(88, 18); + this.lblZone7.TabIndex = 597; + this.lblZone7.Text = "00000000"; + // + // lblZone8 + // + this.lblZone8.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.lblZone8.AutoSize = true; + this.lblZone8.BackColor = System.Drawing.Color.Transparent; + this.lblZone8.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblZone8.ForeColor = System.Drawing.Color.Black; + this.lblZone8.Location = new System.Drawing.Point(620, 498); + this.lblZone8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.lblZone8.Name = "lblZone8"; + this.lblZone8.Size = new System.Drawing.Size(88, 18); + this.lblZone8.TabIndex = 597; + this.lblZone8.Text = "00000000"; + // + // FormSim + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.WhiteSmoke; + this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.ClientSize = new System.Drawing.Size(713, 520); + this.Controls.Add(this.lblZone8); + this.Controls.Add(this.lblZone7); + this.Controls.Add(this.lblZone6); + this.Controls.Add(this.lblZone5); + this.Controls.Add(this.lblZone4); + this.Controls.Add(this.lblZone3); + this.Controls.Add(this.lblZone2); + this.Controls.Add(this.lblZone1); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.label21); + this.Controls.Add(this.label17); + this.Controls.Add(this.lbl1To8M); + this.Controls.Add(this.lblCurrentLon); + this.Controls.Add(this.label22); + this.Controls.Add(this.lblCurrentLat); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.lblLatt); + this.Controls.Add(this.nudLon); + this.Controls.Add(this.nudLat); + this.Controls.Add(this.lblRoll); + this.Controls.Add(this.tbarRoll); + this.Controls.Add(this.lbl1To8); + this.Controls.Add(this.cboxKSXT); + this.Controls.Add(this.cboxNDA); + this.Controls.Add(this.lblWAS); + this.Controls.Add(this.tbarSteerAngleWAS); + this.Controls.Add(this.cboxOGI); + this.Controls.Add(this.cboxRMC); + this.Controls.Add(this.cboxGGA); + this.Controls.Add(this.lblKmh); + this.Controls.Add(this.mSec); + this.Controls.Add(this.cboxHDT); + this.Controls.Add(this.cboxAVR); + this.Controls.Add(this.cboxVTG); + this.Controls.Add(this.tbarSpeed); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.lblIP); + this.Controls.Add(this.lblHeading); + this.Controls.Add(this.lbl9To16M); + this.Controls.Add(this.lbl9To16); + this.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(4); + this.MaximizeBox = false; + this.MinimumSize = new System.Drawing.Size(381, 410); + this.Name = "FormSim"; + this.Padding = new System.Windows.Forms.Padding(4); + this.Text = "Module Sim"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormSim_FormClosing); + this.Load += new System.EventHandler(this.FormSim_Load); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.tbarSteerAngleWAS)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.tbarSpeed)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.tbarRoll)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudLat)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudLon)).EndInit(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Label lblIP; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label lbl1To8; + private System.Windows.Forms.Label lbl9To16; + private System.Windows.Forms.Button btnSteerButtonRemote; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.CheckBox cboxKSXT; + private System.Windows.Forms.CheckBox cboxNDA; + private System.Windows.Forms.Label lblWAS; + private System.Windows.Forms.TrackBar tbarSteerAngleWAS; + private System.Windows.Forms.CheckBox cboxOGI; + private System.Windows.Forms.CheckBox cboxGGA; + private System.Windows.Forms.Label lblKmh; + private System.Windows.Forms.Label mSec; + private System.Windows.Forms.CheckBox cboxHDT; + private System.Windows.Forms.CheckBox cboxAVR; + private System.Windows.Forms.CheckBox cboxVTG; + private System.Windows.Forms.TrackBar tbarSpeed; + private System.Windows.Forms.Timer simTimer; + private System.Windows.Forms.Label lblGuidanceStatus; + private System.Windows.Forms.CheckBox cboxSteerSwitchRemote; + private System.Windows.Forms.CheckBox cboxWorkSwitch; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label label28; + private System.Windows.Forms.Label label35; + private System.Windows.Forms.Label label36; + private System.Windows.Forms.Label label37; + private System.Windows.Forms.Label label38; + private System.Windows.Forms.Label label39; + private System.Windows.Forms.Label label40; + private System.Windows.Forms.Label label41; + private System.Windows.Forms.Label lblInvertWAS; + private System.Windows.Forms.Label lblRelayActHigh; + private System.Windows.Forms.Label lblMotorDirection; + private System.Windows.Forms.Label lblSingleInputWAS; + private System.Windows.Forms.Label lblCytron; + private System.Windows.Forms.Label lblDanfoss; + private System.Windows.Forms.Label lblSteerSw; + private System.Windows.Forms.Label lblSteerBtn; + private System.Windows.Forms.Label lblShaftEnc; + private System.Windows.Forms.Label lblPressure; + private System.Windows.Forms.Label lblCurrent; + private System.Windows.Forms.Label lblUseY_Axis; + private System.Windows.Forms.Label lblKp; + private System.Windows.Forms.Label lblHighPWM; + private System.Windows.Forms.Label lblLowPWM; + private System.Windows.Forms.Label lblMinPWM; + private System.Windows.Forms.Label lblWAS_Counts; + private System.Windows.Forms.Label lblWAS_Offset; + private System.Windows.Forms.Label lblAckerman; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label lblPulseCounts; + private System.Windows.Forms.Label lblHeading; + private System.Windows.Forms.CheckBox cboxRMC; + private System.Windows.Forms.TrackBar tbarRoll; + private System.Windows.Forms.Label lblRoll; + private System.Windows.Forms.Label lblSteerSwitchStatus; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.Label lblIPSet1; + private System.Windows.Forms.Label lblIPSet2; + private System.Windows.Forms.Label lblIPSet3; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.NumericUpDown nudLat; + private System.Windows.Forms.NumericUpDown nudLon; + private System.Windows.Forms.Button btnSave; + private System.Windows.Forms.Label lblCurrentLat; + private System.Windows.Forms.Label lblLatt; + private System.Windows.Forms.Label lblCurrentLon; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.Label lblGPSSpeedMM; + private System.Windows.Forms.Label lblUTurn; + private System.Windows.Forms.Label lblTram; + private System.Windows.Forms.Label lblHydLift; + private System.Windows.Forms.Label label26; + private System.Windows.Forms.Label label30; + private System.Windows.Forms.Label label31; + private System.Windows.Forms.Label label32; + private System.Windows.Forms.Label label33; + private System.Windows.Forms.Label label34; + private System.Windows.Forms.Label label42; + private System.Windows.Forms.Label label43; + private System.Windows.Forms.Label label44; + private System.Windows.Forms.Label label45; + private System.Windows.Forms.Label label46; + private System.Windows.Forms.Label label47; + private System.Windows.Forms.Label lblLowerTime; + private System.Windows.Forms.Label lblRaiseTime; + private System.Windows.Forms.Label lblRelayActiveHigh; + private System.Windows.Forms.Label lblLiftEnable; + private System.Windows.Forms.Label lblUser2; + private System.Windows.Forms.Label lblUser1; + private System.Windows.Forms.Label lblUser4; + private System.Windows.Forms.Label lblUser3; + private System.Windows.Forms.Label lbl1To8M; + private System.Windows.Forms.Label lbl9To16M; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Label lblZone1; + private System.Windows.Forms.Label lblZone2; + private System.Windows.Forms.Label lblZone3; + private System.Windows.Forms.Label lblZone4; + private System.Windows.Forms.Label lblZone5; + private System.Windows.Forms.Label lblZone6; + private System.Windows.Forms.Label lblZone7; + private System.Windows.Forms.Label lblZone8; + private System.Windows.Forms.Label lblScanReply; + private System.Windows.Forms.Label label6; + } +} + diff --git a/SourceCode/ModSim/Source/Forms/FormSim.cs b/SourceCode/ModSim/Source/Forms/FormSim.cs new file mode 100644 index 000000000..9b31ae467 --- /dev/null +++ b/SourceCode/ModSim/Source/Forms/FormSim.cs @@ -0,0 +1,90 @@ +using ModSim.Properties; +using System; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Windows.Forms; + +namespace ModSim +{ + public partial class FormSim : Form + { + public FormSim() + { + InitializeComponent(); + } + + //First run + private void FormSim_Load(object sender, EventArgs e) + { + cboxGGA.Checked = Settings.Default.isGGA; + cboxVTG.Checked = Settings.Default.isVTG; + cboxAVR.Checked = Settings.Default.isAVR; + cboxHDT.Checked = Settings.Default.isHDT; + cboxRMC.Checked = Settings.Default.isRMC; + cboxOGI.Checked = Settings.Default.isOGI; + cboxNDA.Checked = Settings.Default.isNDA; + cboxKSXT.Checked = Settings.Default.isKSXT; + + latitude = Settings.Default.setGPS_SimLatitude; + nudLat.Value = (decimal)Settings.Default.setGPS_SimLatitude; + longitude = Settings.Default.setGPS_SimLongitude; + nudLon.Value = (decimal)Settings.Default.setGPS_SimLongitude; + + lblIPSet1.Text = Properties.Settings.Default.etIP_SubnetOne.ToString(); + lblIPSet2.Text = Properties.Settings.Default.etIP_SubnetTwo.ToString(); + lblIPSet3.Text = Properties.Settings.Default.etIP_SubnetThree.ToString(); + + lblScanReply.Text = "No"; + + LoadUDPNetwork(); + } + + private void FormSim_FormClosing(object sender, FormClosingEventArgs e) + { + //save settings before exit + Settings.Default.isGGA = cboxGGA.Checked; + Settings.Default.isVTG = cboxVTG.Checked; + Settings.Default.isAVR = cboxAVR.Checked; + Settings.Default.isHDT = cboxHDT.Checked; + Settings.Default.isRMC = cboxRMC.Checked; + Settings.Default.isOGI = cboxOGI.Checked; + Settings.Default.isNDA = cboxNDA.Checked; + Settings.Default.isKSXT = cboxKSXT.Checked; + + Settings.Default.Save(); + + if (UDPSocket != null) + { + try + { + UDPSocket.Shutdown(SocketShutdown.Both); + } + finally { UDPSocket.Close(); } + } + } + + private void btnRelayTest_Click(object sender, EventArgs e) + { + helloFromAgIO[7] = 1; + } + + private void lblIP_Click(object sender, EventArgs e) + { + lblIP.Text = ""; + foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName())) + { + if (IPA.AddressFamily == AddressFamily.InterNetwork) + { + _ = IPA.ToString(); + lblIP.Text += IPA.ToString() + "\r\n"; + } + } + } + } +} + diff --git a/SourceCode/ModSim/Source/Forms/FormSim.resx b/SourceCode/ModSim/Source/Forms/FormSim.resx new file mode 100644 index 000000000..853c730a4 --- /dev/null +++ b/SourceCode/ModSim/Source/Forms/FormSim.resx @@ -0,0 +1,1259 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 43, -3 + + + 47 + + + + + AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABAMMOAADDDgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAI65gQCOuYEAjrmBAo65gQSOuYEHjrmBCI65gQmOuYEJjrmBCI65gQWOuYEDjrmBAY65 + gQCOuYEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAASY40AEmONABJjjQAR40yAESLLgA+hycAW5pIAIm2fAGNuIAGjrmADo65 + gRaOuYEcjrmBH465gR6OuYEZjrmBEY25gAqMuH8EiLV6AV6bTABRkz4AVZZCAFaXQwBXl0QAV5dEAFeX + RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJjjQASY40AEmO + NABHjTIBRIsuAT6HJwI6hSQCa6NaBYOydRCJtnwii7d+NIy4f0GMuH9IjLh/R4y3fjyKt30qh7V5GH+w + cAtmoFUES482AlGTPgFVlkIBVpdDAVeXRABXl0QAV5dEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEmONABJjjQASY40AkeNMgRDiy4GPYcnBzeDIAhTlT8OdaplIoKy + dEKHtHliibV7eYm2fIWJtnyDiLV6cIWzd099r28wbqVdGFOUPwxJjjQIUZM+B1WWQgVWl0MDV5dEAVeX + RABXl0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASY40AEmO + NAFJjjQGR40yDkOLLhY9hycbNYIeHj+IKSZfnExAdKlkbH2ubpaBsXO2g7J1xoOxdMOAsHGpeaxpfmyk + W1NYl0Q0RYwwI0iNMx1Rkz0ZVZVCEVaWQwpXl0QEV5dEAVeXRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAFaWQwBWlkMAVpZDAFaWQwBRkz0ASo81BEmONBFHjTInQ4ouOz2HJ0o0gR1SM4AbWkaM + MHNdmkqba6NawnKnYt91qWXvdalk7G+mX9Rkn1KsU5U/hEOLLWc+iChYR40yUFCTPERVlUEvVpZDG1eX + RAtZmEYDZ6BVAHOoYgBzqGIAc6hiAHOoYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVpZDAFaWQwBWlkMBVpZDA1WW + QgVPkjsPS482KEeNMk5Dii5xPYcnijSBHZUufRaZNoIfp0eNMr5WlkLWX5tM6GOeUfFinVDwW5lI4U+R + OslBiSqxOIQhoTuGJJpGjDCUT5I7gFSVQF1Xl0Q4XJpJG2WgUwpxp2ADc6hiAXOoYgBzqGIAc6hiAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABWlkMAVpZDAVaWQwVWlkMMVpZCGFKUPyxNkDlOSI0ze0OKLqE9hye2NYIeui19 + FbQvfheyPIUluUiNM8NRkjzKVZVBzlSVQM1NkDjHQokrvjeDILc0gRy2OYQivUOKLcJMkDeyUpM+jFiX + RWBhnU87a6NaH3KnYQ5zqGIFc6hiAXOoYgBzqGIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFOUQABTlEACU5RAC1OU + QBxTlD83UZM9WU2QOYBIjTOkQ4ouvD2HKMI2gx+1Ln0Wni19FY43gh+LQoksjUqONZBOkTmRTZA4kUaM + MY88hiWNNIEckjOAG585hCK3QYkrzkmOM85Rkjy0WZhGjmKeUGZqo1hAbqVdH2+lXQtvpV0Db6VeAW+l + XQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACJtHwAibR8AIm0fACJtHwAibR8AIm0fACJtHwAibR8AIm0fACKtH0AirR9AIq0fQCLtX8AjbaBAJG5 + hQCUu4kAlryLAJe9jACXvYwAl72MAJe9jACXvYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAATZE5AE2ROQRNkTkRTZE5LE2ROVZMkDiGSo41rEaMMcBCiizDPYcotjiE + IZgwfxlzLX0VWjSBHVI+hyhSRowxUkqPNVJJjjRSQ4otUjqEIlQ0gR1fN4Ifdz6HJ59Fiy/JS4823VKT + PdJZl0W3X5tMkWSeUWFmoFMxZqBUEWegVQVnoFUBZ6BVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIm0fACJtHwAibR8AIm0fACJtHwAibR8AYm0 + fAGJtHwBibR8AYq0fQGKtH0BirR9AYu1fwGNtoEBkbmFAZS7iQGWvIsBl72MAZe9jACXvYwAl72MAJe9 + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACdvJMAnbyTAJ28 + kwCdvJMAmLqNAJG3hgKRt4UKjrWDGIqzfimArXM5bKFcQk6QOko3giBdMH4Yfy99F6ovfhfULn0W7yt7 + EvkoeQ/8JngM/iR3Cv8jdgn/InYI/yF1B/8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IXUH/yJ2 + CP8idgj+InYI+yJ2CPgidgn1KHoP8zF/Gu45hCPgPocowz6HKJg5hCJnMX8aPy59FisygBstNoIfSjeC + IIE5gyLDPoco7EaMMfNOkTrlVZVByFqYR51emktsYJxORGKdTyhinVAVYJxOCVmYRgJdmkoDYp1QDmKd + UCJgnE4/XptMZFyaSZNZmEbAVJVB106ROdJGjDC7QIkpmDuGJGg5hSI1OYUiEzmFIgU5hSIBOYUiAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ28kwCdvJMAnbyTAJ28kwGcvJIDlLiJCo61ghuJsn03hK93WHuq + bHdon1eJTI84kjaBHp4rexO0KHoQ0Ch5D+oneQ76JXcL/yJ2CP8hdQf/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yF2B/8leAv+K3sS/C9+ + F/MygBrgMoAaxC9+F6AsfBR4LXwUVjKAG0g7hSVYP4gqh0GJK8VCiS3vRIou+kaMMfNKjjXiT5I7x1aW + QqRbmUh8XJlJVFeXRDJLkDcZNIEcDTuFJA9UlEAjW5lIRluYSG5XlkOVUJI8ukqONdNFjDDSQoost0CJ + KpA+hydoPIYlQTuGJCA7hiQLO4YkAzuGJAE7hiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnLySAJy8 + kgCcvJICnLySBZy7kg6VuIoei7J+OYGtdF95qWqJbqNer12ZS8VGizDNMoAb0yh5D90kdwvpJHcK9iN2 + Cf0idgj/IXUH/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUH/yJ2CP8leAv+J3kO+Sl6EPEqexHkKnsRzyl6EawpehGELn0VbTaC + H3M+hyiZQokszUOKLfJCiSz8Q4ot+UaMMPJLjzblUpM+0VWVQa9Rkz2DR40yWzeDID4neQ4vK3wSMUGJ + K0pPkjtyU5RAmlGSPblJjjTKP4gpyjiEIbQ2gh6NNoMfYjeEID05hSIhO4YkDzuGJAU7hiQBO4YkADuG + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXuYwAl7mMAZe5jASXuYwNlriMIJG1hT+Fr3hkd6dojGqg + WbNdmUvUTY855zyFJe0tfRXvJXgM8yJ2CPchdgf8IXUH/iF1B/8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IXUH/yJ2 + CP8jdwn9JHcL+iV4DPUmeA3qJngN0SZ4Da8oeQ+aLn0WmzWCHrU7hSXaP4gp9EOKLftGjDH6So419k2Q + OPFPkTrmTZA4zkWMMKo6hSOILX0UbyN3CmImeAxlNYIdeUSLLppLjze2TJA4xEaMMcA7hSSqMX8ZiC19 + FWEtfRU8MH8YIDWCHg46hiMFO4YkAjuGJAA7hiQAO4YkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyy + gACMsoABjLKABoyygBWLsn81hq96YnupbJBroFu1W5dI1EuONus9hif4MX8Z+yh6D/wjdwn8IXUH/SB1 + Bv4gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yF2B/8idgj+I3YJ/SN3CvgkdwrpI3cK0yR3 + C8UneQ7ELX0U0zOAG+g7hST1RIsv9EyQOO9Rkj3qUZI9502QOOJGjDDUPIYlvTGAGacoeg+XInYIjyN3 + CpAufhadO4YlsUWLL71IjTO6RYswozqFJH0ufhZXKHoPOSZ5DSAneg4PLn4VBTmFIgE7hiQAO4YkADuG + JAA7hiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeqhsAHqobAJ6qGwJeqhsHHqobEZ2pmeAa6BbtFyX + StZLjjbsOoQk+C59Fv0neQ7/I3cK/yF2B/8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yF1B/8hdgf/IXYI/SF2CPchdgjtInYI5yR3C+YoeQ7sLX0V8zeDIPBFizDjUpM+1ViW + RcpVlUHFS482wkCIKbw1gh6yLHwTqCV4DKEhdgedInYJnip7EqQ2gh6rP4gpqkWLMJpFizB6PocoUDGA + Gi4oeg8ZI3cKDSF2BwUidggBLn4VADuGJAA7hiQAO4YkADuGJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARYowAEWK + MABSkT4AXJdKAl2YSwpemEwgXphMUFuXSZFUk0DISIwz6DuEJPgufRX9JXgL/yJ2CP8hdQf/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/SF1 + B/sidgj6JHcK+id5DvstfBT4NoIe5kSKLsdSkz+oW5lIk1iWRYhKjjWEPIYlgzF/GYEpexB+JHcKfSF2 + B3widgh8KHoPfTKAG308hSV3QootZ0aMMEtEii4qO4YlEjB/GAgoeg4DIXUHASB1BgAgdQYAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFijAARYowAEWKMAJCiC0HQIcqEj+GKSo+hidbPIUlmziD + IdAygBvuLHwT+yV4DP8hdgf/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yJ2CP8ldwv/KXoQ/y9+F/c3gh/aQYkrq06R + On1bmEhbXJlJR02QOD88hSQ9MH4XPCh6Dzsjdwo7IXUHOyJ2CDsoeQ87MX8ZOjqFJDZBiSwuRowxIEeN + MhBHjDEGQ4ouAT2HJwAoeg8AIHUGACB1BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApL+cAKS/nACkv5wApL+cAH6q + cQBNjjkCR4syCUOJLRc+higsOIIhTDB+GHkqexKvJ3kO2SV4C/Ejdwn8IXYH/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/InYI/yV3C/8pehD/L34X9zeCINpDiS2rUpM+eWWeU1BypmIxa6JaHE6QORI1gR0OKXsQDSN3 + Cg0hdQcNInYIDSh5Dw0xfxkNOoQjDEGJKwpGjDEHSI0zBEiNMwFIjTMASI0zAEiNMwAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACkv5wApL+cAKS/nACkv5wBn7yWA3emaQlZlUYaSo02NkKILVk7hCSBMn8aqSl6 + Ec0kdwvoIXYI9yB1Bv0gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8hdgf/I3cJ/yZ4Df8rexP6NoEe50eL + McVal0edbaNcdHyrbUmDr3Uiga5yCnKmYgJPkToBJngMACF1BwAidggAKHkPADF/GQA6hCMAQYkrAEaM + MQBIjTMASI0zAEiNMwBIjTMASI0zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKS/nACkv5wApL+cAqS/ + nAaivpoOjbKCHW6hXzhWk0ReR4oyiTyEJbIyfxvSKnoR5yR3C/Qhdgj7IHUG/iB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yF1B/8hdgj/I3cJ/yd5DvwzgBvzRYsv4FiWRcNnn1abcqViZneoZzF4qWgOeapqA3mq + agF5qmoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAob2YAKG9mAGhvZgEob2YDaC9lyCUtok+e6htYmCZT4pKjTayOoQk1S9+ + GOwoeg/2I3cK+yF2B/4gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yF1B/8hdgf/JHcL/i59 + Fvs+hijwTY852VmWRrJgm054ZJ1SOWWeUxFnn1UDZ59WAWefVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACbupIAm7qSAZu6 + kgebupIWmrmRNZK1h2J/qnGPZZtUtEyNONM4giHrK3sT+CV4DP0idgn+IXUH/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8idgn/KXoR/jWBHfg/hynjR4wyvEyPN4BOkDo9T5E7ElCS + PANRkj0BUZI9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJK0hwCStIcCkrSHCZK0hx2RtIZIi7B/gnuobbVkm1PWS4036zWB + HvgneQ79InYJ/yF2B/8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yF2 + B/8leAz/K3sT+jF/GeY1gR6+N4MhgjmEIj45hCMSOoUjAzuFJAE7hSQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgat0AIGr + dAKBq3QLgqt0IoGrdFN8qG6UcKFgylyWSulGijH4MX4Z/SR3C/8hdQf/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUH/yJ2CP8kdwv6J3kO5ih6EL8pexGCKnsSPyt8 + ExIvfhcEN4MgAVuYSABuo14AbqNeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrnlsAa55bAmueWwtrnlsja55bVmecV5lel0zQT4877j2F + J/stfBX/I3cJ/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IXUH/yF2CPoidgnnJHcKwiZ5DYgtfBRHPYYmG1aVQwpjnVIFbaJdAm6jXgBuo14AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFSS + QgBUkkICVJJCC1WSQiNVkkJWUpE/mUuNN9BBhyvuNIAd+yl6EP8idgj/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IXUH+yJ2CewmeA3NLn0Wnj+H + KWhXlUQ9Zp5VI2uhWxJuo14HbqNeAm6jXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQogtAEKILQJCiC0LQ4guI0OILVZBhyyZPYUm0DaB + H+4tfBX7JngN/yF2B/8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8hdQf8JHcK8yt7Et85gyLBTY85m2CaTnFpoFhJa6FaKGyiXBBsolwDbKJcAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqsCkAKrA + pABLjDgAN4EhAjaBHws1gR8jNYEeVjSAHZoxfxrQLXwV7ih6D/skdwr/IXUH/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yF2B/4leAz5Ln0W7z6G + KOBSkj7IYJpOn2aeVWton1c7aKBYGGmgWAVpoFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqwKQAqsCkAJm3kAFYk0YEP4YqDTSAHSYvfRdYLHwUmyp6 + EdEneQ7vJHgL+yJ2CP8gdQf/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IXYH/iZ4Df0vfhf5P4cp81CRPONcmEq7YZtPgGKcUEZjnFEcY5xRBmOc + UQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKrA + pACqwKQBpr6fA4SreQhimVIVR4oyLzSAHWAqexKgJngN0yR3C+8idgn8IXYH/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8hdgf/JXgM/i59 + Fv48hSb8S4438FWUQslZl0aJWpdHS1qXSB5al0gHWpdIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqsCkAKrApAKov6IImbeRFIKqdydkmlVFRYkxdDF+ + Ga0neQ7ZI3cJ8SF2B/wgdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yF2B/8leAv/LHwT/ziDIP5Eii70TI84zE+RO4xQkTxNUJI8H1CS + PAdQkjwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACqwKQAqsCkBKnAoxGiu5splLSLSX6ocW9dlkyaPoUpxCx7FOQkdwv1IXYH/SB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IXUH/yN3 + Cv8pehD/MX8Z/zuFJPRBiCvMQ4otjEOKLk1Dii4fQ4ouB0OKLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKrApACqwKQGqcCjHKW9nkOcuJRyi6+BoW6f + YMhMjTjhM38c8SZ4Dfohdgj+IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/InYI/yZ4DP8rexL/MX8Z9DWBHsw2gh+MNoIgTTaC + IB82giAHNoIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAqr+jAKq/owipv6Mjpr2fVJ65l46QsofEdqNo51OQQPY3gSD7KHkP/SJ2CP8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8hdgf/I3cJ/yZ4Df8qehH0LHwTzCx8FIwtfBRNLHwUHyx8FAcsfBQBOIMhAEiMMwBXlUQAYpxRAGqg + WQBtol0AbaJdAG2iXQBtol0AbaJdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG+kXwBvpF8Ab6RfAG6k + XgBuo10AbKJbAGmgWABon1cAb6NeAHysbgCLtX8AmL2NAKDClgCkxJoApMSaAKTEmgCkxJoApMSaAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACpv6MAqb+jCKm+oialvZ5an7mXmJKy + iNF4pGvzVZFD/TiCIv4pehD/InYI/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yF1B/8idgj/I3cK/yV4DPQmeQ3OJ3kOjyZ5 + DlImeQ0mJnkODix8FAg4gyEISIwzCFeVRAdinFEGaqBZBG2iXQJtol0BbaJdAG2iXQBtol0AAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAb6RfAG+kXwBvpF8BbqReA26jXQVsolsHaaBYB2ifVwhvo14IfKxuCIu1 + fweYvY0GoMKWBaTEmgOkxJoBpMSaAKTEmgCkxJoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAKm+ogCpvqIIqL6hJ6W8nlyeuJaakbGI03ika/VWkUP+OYIi/yl6EP8idgj/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yF1B/8idgj/I3cK9SR3C9MkdwucJHcKZSR3Cz4meA0pLHwUJDiDIiNIjDMjV5VEIGKc + URtpoFkTbKFcCmqhWgNknVMBU5M/AD6HKABPkTsAZp1UAHioaQCCrnQAg691AHmqagBmnlQAbKJbAm6j + XgZuo14PbaNdF2yiWx5poFgiaJ9XI2+jXiN8rG4ji7V/IZi9jR2gwpYVo8OZDKPDmQWiw5gCn8GVAIy2 + gAB8rG4AfKxuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqL2hAKi9oQiovaEmpbudW564 + lpmRsYfSd6Nq9FWRQ/04giL+KXoQ/yJ2CP8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IXUH/yJ2Cf8kdwr3JXcL3CR3 + C7EkdwqGJXcLaCh5D1gvfhdVOoQkVUmNNVRXlUROYZtPQ2aeVS9lnVQaWJZFC0GIKwU1gR4DPIUmA0+R + OwNmnVQDeKhpA4KudAODr3UDeapqA2KcUANamEgGZZ5UEmqhWSVrols5a6FaSmmgWFNon1dVbqNeVXur + bFSIs3tQlLqIRpu/kDSdwJIemr6PDpS6iAWLtX4Cfq1wAHysbgB8rG4AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACovaEAqL2hCKe9oSWku51XnbeVk4+whsp2o2jsU5BB+TeBIfwoeQ/+InYI/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yF1B/8idgj/JHcL/yd4DfooeQ7nJ3gNyCZ4DasneQ6YK3sTkDOAHJA/hymTTI83kVeV + RIlfmk12YZtPV1qXRzNGizEbM4AbETF/GQ88hSUOT5E7DmadVA54qGkOgq50DoOvdQ55qWoOYpxQD1CS + PBRZl0YnY51SRmegV2dpoFiBaJ9XkGefV5Rtol2UeKlpkoOwdouNtoB7k7mHXpO5hzqOt4IeiLN7DoKw + dAZ9rG8CfKxuAHysbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKe9oQCnvaEHp72hIKO7 + nE2btpOCja+DtnGgY9pPjjztNYAe9yd5Dvwidgj+IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IXYI/yR3Cv8oeQ//LHsT+y18 + FO0rexLXKnoRxCt7E7oyfxu7PIUmxUaMMc1QkTzNV5VFwluXSatZlkaETI44WTeDITssfBQvMH4YLDyF + JStPkTsrZZ1UK3ioaCuCrnQrg691K3mpaitinE8sSo41Mk2QOElZl0dwYZxQmWWeVLlmn1XMZ59W0Guh + WtFypmPOe6tsxYGvc7GFsXeNhbF3YIKwdDp/rnIhfa1wEXysbgZ8rG4BfKxuAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAp72hAKe9oQWnvaAXobqaOJe0j2KFq3qNZ5tXtkaJMdYwfRjsJXgM+CF2 + B/4gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yF1B/8idgn/JnkN/y18Ff8zgBz6NoEe6TOAG84yfxq6NoIftEGILMFOkDrZVZRC61iW + RfBYlkXnVZRC00yOOLI9hSeMLX0Wcil6EWgvfhdmPIUmZU+RO2VlnVNld6hoZYGuc2WDr3RlealpZWGb + T2ZHjDJrQoksf02QOKBYlkXEYJtO4GSdU/BmnlX0Z59W9GmgWPJrolrrbaNd2XCkYLpzp2SQd6loZ3mq + a0N7q20lfKxtD3ysbgN8rG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACnvaEAp72hA6a8 + oAyct5UejK6COHKgZFpRjz6IN4EguSl5EN8jdgn0IXUH/SB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IXUH/yR3Cv8qexH/M4Ac/z2F + JvdCiCvcQYcqs0GIK5NLjjaMXJhJoWefVshon1jlYptR7lmWRutOjzrgQYgrzjJ/G7kqehGtK3sTqjOA + HKxAiCqtUZI9r2SdU690pmSvfatur32sbq90pmSvX5pMr0aLMLI8hSW7Q4kty0+RO9tZl0fpYZtP8WSd + U/NjnVL1XppM9lmXRvVYlkTtW5hJ3WSeU8Jto12bcqZibXSnZT92qGcadqhnBnaoZwAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKe9oQCnvaEBpLueBIyvggxunmAbT448NjaBH2cpeRCkI3cJ1SF1 + B/AgdQb8IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8hdgf/JXgM/y18FP85gyL/Rosx9U6POdJQkDycVJNAcGOcUWF2p2d0fatvnHeo + aLtqoFnFWZZHxkmNNcM6hCS8Ln0Wtyx8FLo0gB3FP4cp0kqONtxWlUPiYpxR42yhW+NwpGDjcKRf42if + VuNZlkXjR4sx4j6GJ95BiCvYSo420VWUQsxemk3KZJ1Ty2GcUNNamEjeU5RA6lCSPPJTk0DxWphI42Cb + T8BjnVKKZZ5UUWafVSJmn1UHZp9VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAp72hAKe9 + oQCduJUBZppWBUSIMA8yfhooKHkPWiR3CpwidgjSIXYH7yF1B/wgdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yF2B/8meA3/L34Y/z6G + KP9OkDr0WZZGzl2YSpFim1BdcaRhQ4SvdkqHsXplfqxwe22iXYNZlkeFR4wzhDeCIYIvfheFNYEflUWK + MLBRkj7MWZdH4l6ZTO1gmk7xYJpO8l6ZTPRbmEj1VpVD9U+QO/RIjDPuRIov3kaLMcRMjjepVJRBlF6a + TIlknlOKZZ5UmmGcT7RcmUrQWJdG51WVQvRSkz/uUJI8zU+RPJVPkTtYT5E7JU+ROwhPkTsAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACnvaEAp72hAIOqdwA+hSgDMH0YDCt6EiQoeRBXJ3kOmiZ4 + DdEkdwvuI3YJ+yF2B/8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/InYI/yd5Dv8ygBv/RIov/1iVRfRlnVPNaqBZjm6iXVR3qGgxibJ7KYy0 + fzWBrXNBbqJeRVmWR0ZHizJGN4IgRjOAHExFizFiWpdIh2WdVKxon1jJZZ1U2F2ZS95UlEHiTY856keM + M/BFii/yRYsw7kiMM+BLjjbFTY85n1CRPHlVlEJbXZlLS2afVU1so1xhbaNdhWqhWqxjnVLOV5ZE5UqO + NelAiCvOPIYmlzqEJFk5hCImOYQiCDmEIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKe9 + oQCnvaEAPIMmADN+HAIyfhsLMn4bIzJ+GlYxfhmaLnwX0Ct7E+4neQ77I3cJ/yF1B/8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8idgj/KXoQ/zaC + H/5Mjjj9Y5xS8nOlY8p5qGqLe6ptToCsciWLs34UjrWBFYKudBpvo18bWZdHHEaLMRw3giAcPYYnIlyY + SjdwpGFbdqdnf3OmZJtqoFqqW5hIsUuONr0/hynPOIMh3jeCIOM8hSbaRoswwk6QOp5Tkz91VZRCTliW + RTBemkwha6JaInepaTZ6q2xadadlg2igWKpVlELLQYkr2zSBHcgufRaWLHwTWSp7EiYqexEIKnsRAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABChi0AQoYtAkKGLQtChi0jQoYsVkCF + K5k8gyXQNYAe7i18FfsmeA3/IXYH/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yJ2Cf8qexH+OoQj/FOSQPhvol/rgq10w4mxfYWLs39KjLSAH461 + ggmOtYIFgq51Bm+jXwZZl0cGRosxBjiDIgZWlUMKealrGoOvdzOCr3ZNe6ptYW2iXWxYlkV1QoksiTSB + HakufRbFLn0WzzSBHcFBiCueTpA5dVWUQk9ZlkYuWpdIFl6aTAp2qGcLhbF3G4KwdTh3qWhcZZ5Tg02P + OKw3gyDJK3sTwSZ4DZMkdwpZI3cJJiN3CQgjdwkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAFaQRABWkEQCVpBEC1aQRCNWkENWU49AmUyLONBBhizuNX8e+yl6EP8idgj/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/I3YJ/it7 + Evs8hSb1V5VF63enadiOtIKwl7qNd5q7kEGbvJEam7yRBpa5igCCrnUAb6NfAFmXRwBGizEATY85AImy + fAKQtoUJj7aDFYmyfSF/rXIqbqNfL1OTQDk6hCNWL34XhSx8FK0tfBS/MX8ZrzuFJIVGizFaTpA6OFKT + Px9VlEEMWJZFA4GucgSCsHUQeqprJmuhWkRXlURqQYgrlzB+GL0oeQ68JHcLkiJ3CVkidggmIXYICCF2 + CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbZxeAG2cXgJtnF4LbJxdI2yb + XVZomViZXpRN0E+NPO4+hCj7LXsV/yN2Cf8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yF1B/8kdwr9K3sS9jqDI+dUk0HQd6dosJO3iIegvpZZo8CaMKXC + nBOlwpwEpcKcAAAAAAAAAAAAAAAAAAAAAACTuIgAk7iIAJO4iAKQtoQFibN9B3+tcgltol0LSIwyFTeC + IDg0gR1vNIEcojWBHr04gyG1PYYmkUKJLGZFizBCR40yJUiNMw9HjTIEa6FZBXCkXxNroVotYJtOT1KS + PnZAiCqiMn8awyp7Eb4neQ6SJXgMWSR4CyYkeAsIJHgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACBpnUAgaZ1AoGmdQuApnUif6Z0UnqjbpNunF/JW5NK6EWIMPcwfRn9JHcL/yB1 + B/8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQf/InYJ/yZ4 + DfssexTuNoEf1EmNNaxpn1l8jbOBUaC/lzGmwp0aqMSgCqnEoQKpxKEAAAAAAAAAAAAAAAAAAAAAAJO4 + iACTuIgAk7iIAJC2hACJs30Af61yAFiWRgFCiCsKQYgqLUGIKmZBiCudQYgrwkGJLMpCiS24Q4otlEOK + LWlBiSxBPocnITWCHhBEii0SWphHJ2CbTkxemUt3VZVCoEeMMsE5hCLRMH4Xvyt8E48pexFVKHoPJCh6 + Dwgoeg8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI2thACNrYQCja2ECY2t + gxyMrIJFhal7fHahaa5flU/QR4kz6DJ+G/YmeA39InYI/yF1B/8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yF2B/8leAz/LHwU+jSAHOk8hCXGRooxkVmVRlV5qGsql7mNFKLA + mQqoxKAEqcShAanEoQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS441AEuO + NQhKjjUmSo01VkmNNIpHjDOzRYswzEOJLdFAiCq8PocnljqFI201gh1LMH8XOTSBHDpEii5RT5E6eFKT + P6JQkjzCSI0z0DyGJskzgBurLn4Weyx8FEgrfBIeKnwSByp8EgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAk7CLAJOwiwGTsIsGk7CKE5KviS+Jq35XdaBog1yUTKtGiDLONYAe6yp6 + Evsldwz/InYJ/yF1B/8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8hdQf/I3cJ/yp7 + Ev02gR/3Qogs40uNNr1SkT+DWpZIQ2qfWhiHsHoImbqPA6fDnwGpxKEAqcShAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPkTsAT5E7Bk+QOxpOkDk8S443ZEeMM4xDiS2xPocoyzuF + JM05gyG4N4IfnDWBHYU0gRx4NYEdeTqEI4lAiCqkQ4ouvUSKLspBiCvCOoQjpjOAHIAvfhdYLX0VMix8 + FBUsfBQFLHwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWsY0AlrGNAZax + jQOVsY0KlLGMGoeqfDNvnWFYWZJHhkiJNLY8gyfgM38c+Ct6E/8ldwz/InYI/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IXYH/yJ2CP8meA3+MH4Y+D+GKexOjjrTWpVHq2KaUHRmnFY4a59bEXin + agSIsHwBo8GbAKnEoQCpxKEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFKS + PQBSkj0DUZI9Dk6QOiJJjTQ+Q4ouYD2GJ4g5gyKwOIMgxjmEIsc8hSXAPoYnuT+HKLQ/hyi1PYYnujyF + JcI6hSTFOYQivDeDIKE0gR15MX8ZUi9+FzQtfRUcLX0VCy19FQItfRUAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJeyjwCXso8Al7KPAZeyjwSVsY0KgaZ1GmqaWzpck0trU49Bo0uL + OddBhiz1NH8d/il6Ef8kdwr/IXUH/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yF2B/8jdgn+JXgM/ip7 + Evo1gB7uRYkw1laTQ7Zkm1OObqFfXXOkZCx0pGUNdqVnAnemaQCGr3oAqcShAKnEoQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU5M/AFOTPwFSkz4GTI83D0SKLiA8hiY5N4IfXjWB + Hoc6hCKpQYgrwEmMM85OjznYUJE83U+QOt1KjTXWQ4ktyjuFJLc0gRydL34XeC19FU4tfRQtLX0VGC19 + FQwtfRUFLX0VAS19FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl7KPAJey + jwCXso8Al7KPAZKviQN7o24McZ5kKW2bX1pomVqWYZZRzVOPQe9AhSv6MH0Z/Sd4Dv4idgn/IXUH/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQf/InYI/iV4C/wpehD6MH4Y8TmDI9tHizK3V5RFjmidWGV1pWc+fKlvHH2p + cAh+qnACfqpwAH6qcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABTkz8AU5M/AFGSPQFEii4FOYQiDTSAHBwxfxk2NoEeV0OJLX1Skj+jXplMxGScU91mnVXqZJxT6V6Z + TNlUk0G6R4syljiDIXArexJLJngMKiZ5DRQoeg8JKnsSAy19FQEtfRUALX0VAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXso8Al7KPAJeyjwCXso8Ai6uBAIipfQeHqH0hhad6ToCl + dYZ3oWq7ZZhW306MO/A5gSP4LXsV/SZ4Df4idgj/IHUH/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yF1B/4jdwr7J3kO9i18 + Fe01gR7dPYUnvEaKMY5SkT9gYppROnSkZh6Aq3MNgqx1BIKsdQGCrHUAgqx1AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFOTPwBTkz8AQ4otADF+GQEufRYELnwVCy99 + FhY/hykqW5dITG+jYHh6qWyjf6xxxX+scdd9qm/WeKdpv2+iX5dhm1BqTI44QjJ/GiQidggRIXUHByF2 + BwIidgkBKXsQAC19FQAtfRUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACZsZEAmbGRBZmxkBmWsI07kK2HZ4Woe5VynmS8WpJJ2keIM+05gSP4LnwW/SZ4 + Df8hdgj/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8hdQf/InYJ/SR3C/YpehDoL30X0jiCIbQ/hiqMRIkvYEmMNThTkT8bZpxVCn6q + cQOCrHUBgqx1AIKsdQCCrHUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAtfBQALXwUAC18FAEtfBQCMn8aBV+ZTQ6ArXMmjbSCTJK3h3KSt4eRkbaGoo60 + g6CLs3+Lh7B7Z4Ctc0BypGMfUZE9DCV4DAQgdQYBIHUGACB1BgAgdQYAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKC1mACgtZgDn7WYDpuz + lCKVr4w+ial/YHiha4pmmFe2V5BF2EiINO05gSP4LXsV/SV3C/8idgj/IXUH/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUH/yJ2Cf8leAz7KHkQ7yx8 + FNUxfhqtOIIifj+GKlRDiC40RIkvHEWKMAtJjDQDZZxUAIKsdQCCrHUAgqx1AIKsdQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC18FAAtfBQALXwUAC18 + FABemEwAlrmMBJy9khGcvZMnnL2SPpq8kFCYuo5albiKWZO3iE2St4c3kbaGII+1hA6Jsn0DU5I/ACB1 + BgAgdQYAIHUGACB1BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAoLWZAKC1mQGftZgGmrKSDpKuiR2GqHw0eqJuWm+cYopjllS0VY9D00aI + Mug4gSL2LnwW/Sh5D/8kdwr/IXYI/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8hdgj/JngN/y18FfozfxzpOIIixjuEJpE+hSlWQYcsK0OILhZEiS8LRIkvBESJ + LwFEiS8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ6+lQCevpUBnr6VB52+lBCdvZMZm7yRIJm6 + jiSWuYsklLeJH5O3iBaSt4cNkreHBZK3hwGSt4cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgtZkAoLWZAJ+0 + mAKXsI4FjauEDISmeRp8o3E2dZ9oXGuaXYVflE+qU45By0iJNOc9gyf3Mn4b/Cl6Ef4kdwv/InYI/yF1 + B/8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IXUH/yF2B/8hdgf/IXYI/yR3Cv8rexP/OIIh+kOI + LuZLjDfAUI89hVGPPkNNjjoYSIszCEWKMAREiS8BRIkvAESJLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAnr6VAJ6+lQCevpUCnb6UBZ29kwibvJEKmbqOC5a5iwuUt4kKk7eIB5K3hwSSt4cCkreHAJK3 + hwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKC1mQCgtZkAnrSWAJCthwKHqH0FgaV2DH6jchx4oWw1cJ1jVmiY + WX1glVCmV5BGzEyLOeU/hCrzNH8d+Sx7FP0neA7+JHcK/yJ2CP8hdQf/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yF2 + CP8jdwn/JXcL/yZ4DP8meA3/KXoQ/zN/HP9DiC75UZA/5VuWSr1imVGAZJpUPWGZURFYk0UDT487AUWK + MQBEiS8ARIkvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACevpUAnr6VAJ6+lQCdvpQBnb2TApu8 + kQKZuo4ClrmLApS3iQKTt4gBkreHAZK3hwCSt4cAkreHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoLWZAKC1 + mQCSrokAgqZ4AICldQF/pHQEf6RzC3uibxh1n2kwcJ1jUmuaXntll1alW5JKx06LO99Dhi7vOYEj+DF9 + GfwqehH+JXcM/iJ2Cf4hdQf/IXUH/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yF1B/8hdgj/JHcK/yh5D/4sexP+LnwW/jB9GP4zfxz/PYQn/0yN + OPlZlEjlY5pTvGmdWn9sn107bJ9dD2qeWwJonVgAWZRHAESJLwBEiS8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAJ6+lQCevpUAnr6VAJ2+lACdvZMAm7yRAJm6jgCWuYsAlLeJAJO3iACSt4cAkreHAJK3 + hwCSt4cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH+kdAB/pHQAf6R0AH+kdAF/pHQCfKNwCHqi + bhZ4oWwudZ9pTnGdZHNpmVubYZRRwVaPRd1LijfuPoQp9jJ+G/gqehH6JngN/CR3Cv0jdgn+InYI/yF2 + B/8hdQf/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IXUH/yF2B/8idgj/I3YJ/yR3 + C/8pehD9MH0Y/DaBIPo7gyX6PoUp/EGHLP1IijT+UpA/+VqVSOVgmFC8ZJtUf2acVjtmnFYPZptVAmab + VQBmm1UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAf6R0AH+kdAB/pHQAf6R0AH6kcwB+pHMCfqRyCH2jchR8o3Eme6JvQXmhbWl1n2mZbJpev16T + TdZNizrhPIIm5jF9GestexXyK3oS+Sl5EP0neA3+JHcL/yJ2Cf8hdgf/IHUH/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yF2B/8jdgn/JXgM/yh5D/8qehL/LnwW/jR/Hfk8hCbyRIgw7UuMN+1Rjz3yVJFB+VWS + Q/1WkkP5VpJD5VWSQ7xVkkN/VZJDO1aTQw9Xk0QCV5RFAFeURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfqRzAH6k + cwB+pHMCgaV3BYSmeg2HqH4diaiAPoanfGl8onCNa5pdo1eQRa5EhjC3O4IlxjuCJds7giXtOIEi+DN+ + G/0texT/KHkP/yR3C/8idgj/IXUH/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1 + Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8gdQb/IHUG/yB1Bv8hdQf/JHcK/yl6EP8vfRf/NoEg/z6E + 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 + ogCpvqMAfKZvAWudXAtqnFowZ5tYbWKYUqlalEnUT4487USIMO8+hSnOP4Yqk0aKMlhVkUMsb59iEY2v + hAWRsYgBkbGIAJGxiACRsYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ+0mACftJgAn7SYAp60lwSds5YHmrGTCpOuigyIqX4MfqRzDHmi + bAx2oGkMdqBpDHagaQx2oGkMd6FrDHmibQx9pHEMgqd3DImrfwySr4kMmrOSC5+2mAmiuJsGpLmdA6S5 + nQGkuZ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1o2gAdaNoCHWiZyZxoGJXZ5tYiVqU + SLRJizXVOoMk5TWAH9U+hSmoUY8+dmicWUuBqHUpj7CGEpGxiAWRsYgBkbGIAJGxiAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn7SYAJ+0 + mACftJgAnrSXAJ2zlgCasZMAk66KAIipfgB+pHMAeaJsAHagaQB2oGkAdqBpAHagaQB3oWsAeaJtAH2k + cQCCp3cAiat/AJKviQCas5IAn7aYAKK4mwCkuZ0ApLmdAKS5nQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAHqlbQB6pW0FeaRsFnGgYzZjmFJcUY8+hj6FKbIzfxzXNoEg30eKM8helk2jc6FmeoSq + eU2MroIkjK+DCoyuggKMroIAjK6CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeqVtAHqlbQJ4pGsKapxaG1WR + QzdEiC9gN4EhljN/Hcw8hCboTo074mKYUshyoGSgfaZxaoKpdjKCqXcPgql2A4KpdgGCqXYAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAB6pW0AeqVtAXajaQRelk0NS4s3JEGGLEw8gyaHPIMnxkSIMOxRjz/wX5ZO22mb + WrRvn2F5cqFkOnKhZRFyoWQDcqFkAXKhZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHqlbQB6pW0Ab59hAVSQ + QgdNjDocS4s4REqLN4FLizjETo087lOQQfZYk0fjXJVLvF+WToBgl089YJdPEmCXTwNgl1ABZ5tYAHij + awB7pW4AgKd0AIirfQCQr4cAlrOOAJq1kgCctpQAnLaUAJy2lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAeqVtAHqlbQBil1EAX5VOBl6VThpelU5CXpVOf12VTcNak0ruVpFE91KP + P+VPjTu+TY05gkyMOD5NjDkST448BFmTRwFyoGQAeKNrAHulbgCAp3QAiKt9AJCvhwCWs44AmrWSAJy2 + lACctpQAnLaUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHWh + aAB1oWgGdaFoGXWhaEF1oWh/cZ9kwmiaWe1ak0j2TIw55UKHLb88hCaDOoMjQD2EJxRLizcFYphSA3Sh + ZgJ4o2sCe6VuAoCndAKIq30CkK+GApazjgKatZIBnLaUAZy2lACctpQAnLaUAJy2lAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiat+AImrfgWJq34Yiat+PoirfneDqHi3c6Bm4l2U + TO5IijTiOoIjwDJ+GokzfxxLQ4cuIl2VSxRsnV0RdaJnEXikaxF7pW4RgKd0EYirfRCQr4YPlrONDZq1 + kgmctpQFnLaUAZy2lACctpQAnLaUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACUsYwAlLGMBJSxjBOUsYwxlLCLX4ysgpR3omq/W5NJ1USHL9g3gSDHNH8doD2EJ29Rjz9PY5hTRG6e + X0J1omdBeKNrQXqlbUF/p3NBiKt9QI+vhjyVso0ymbSRI5q1khKYtI8GkbCIAoSpeABUkEEAQoctAEKH + LQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJiykACYspADmLKQDJiykCCXso8/i6yBZXCe + Yo9Tj0C0QIUrzTmCItI7gyXCRokxp1WRQ5NimFKMa51ci3KgZIt1omiLd6Nqi3ylb4uDqHeIiax+gI2u + g22Or4RPiKx9LHijaxNil1EIUY8+A0SILwFChy0AQoctAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJSu + iwCUrosAk6+KAJOvigKTr4oKk6+KGZKviTCEqHpQZ5lYeU2MOaY+hCjKOoIj3j2EJuBGiDHVUY8/zFyU + S8llmVXJa5xcyW+eYMlwn2LJc6BlyHejasZ7pG67fKVvpHija39tnV1TW5NJME2MORtGiTIOQoctBUGH + LAE8hCYANoEgADaBIAA2gSAANoEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlK6LAJSuiwCTrooBjqyFBYurgg6KqoEhiap/PH6l + c2BmmFeJTYw6sj6EKdM4gSLoOYIj70CFK+xKijbpVJBB51yUS+djmFLnZplW52eaV+dnmljnaJpY5Gia + WNtlmVXIYJZPqVaRQ4JLizdbRYgwPEKHLSJAhisQPIQnBTeBIQE2gSAANoEgADaBIAA2gSAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACUrosAlK6LAZOuigSOq4QNh6h9HYOmeDd/pXRceKFrhmaYV61QjT7MQIUr4jiBIe42gB/wOoIk7EGG + LOdLizfmU49B5lmSSOZdlEvmXZRM5luTSuZYkkbkVJBB4FCOPdVMizjFR4kyrUSHLoxBhixkQIYqQD2E + KCI5gyQPNoEgBjaBIAI2gSABNoEgADaBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJSuiwCUrosDk66KDI6rhB6Fp3s5faNxW3Wg + aYZtnF+zYZZR1VKOQOZFhzDtO4Mm6zaAIOE1gB/TOoIkyUKGLcZLijfFUY4+xVSPQcVUj0HFUI08xUmK + NMVDhi3HP4QpyT6EKM0/hSnLQIUqtz+FKpA9hShmO4MlQTiCIiQ2gSARNoEgBjaBIAI2gSAANoEgAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAlK6LAJSuiwaTrooZjquEO4SmeWN3oGuLaZpbtF2UTdlVkEPwUI099kuLOPBGiDLfQIUrwzmC + I6M3gSCPPYMniEWHMIZLijeGTow6hk2MOYZHiTOGPoQoiDeAIJA1fx6gOIEhuT2DJ9E/hSnTPoUoujuE + JpY5gyNuN4IhRjeBISM4giIMPIQnA0WJMQFvnmEAhKl5AISpeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNq4QAjauECY2rgyiIqH5cf6RzkXGd + Y7xelE7cTYs68EeJM/hMizn0U45B5FaQRMVUj0KZSYo2aTyDJ0k8gyY/QoYtPUiJMz1Lizc9Soo2PUSH + Lz06giNANH8dTDaAHmY6giSQPoQovj6FKdc8hCfVOoMkwTmCI6A6gyRyQIYrQE+OPB1jmFMMdKFnBYKo + dwKEqXkAhKl5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAma+TAJmv + kwCZr5MAma+TAISmegF9onALfKJwMnmhbHJynWSuZ5hX2leQRfJIiTT5RIcv8U2LOd9ZkUjCY5dTnGeZ + WGtjl1M6Uo4/GkKGLRBDhi4OSIkzDUuKNw1KijYNQ4cuDTuCJBE5giMdPIMmNz+FKWE/hSqTPYQouzqD + JNA5giPTOoMkw0GHLJ5Rjz5tZppXQ3aiaSd+pnMVg6l4CISpeQKEqXkAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZr5MAma+TAJmvkwGZr5MClK2NBXWeaBJnmFg7YpVSfF6T + TbhZkUjhU45A9E2LOfJMizjdU45Aul2TTJJnmVhpcJ1iQXOfZh5xnmQJZphXAlSPQgFJiTQBS4o3AEqK + NgBDhi4BQIUqA0CGKwtBhiwcQYYsOT+FKl48gyaIOYIjrjmCI8k+hSnSSos2xF2VTKJwnmF4eqNtUH6m + ciyAp3USgKd1BICndQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmv + kwCZr5MBma+TBJmvkwuXrpEVgaR3KWSWVVJUjkKLTYs6vkyKOdxOizvlUY0/2VWPRLpakkmOYJVQYmiZ + WT5wnWIidaBnDnWgaAR1oGgBdaBoAHWgaAAAAAAAAAAAAEGGLABBhiwBQYYsBUGGLA5BhiwbP4UqMzyD + Jlo7gyWNPYQou0SIMNhQjj7eYZdRzG6dYKZ1oWdyd6JqQHmjbBp5o2wGeaNsAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAma+TAJmvkwKZr5MKma+TGZiukjCKqIJQbZpgelON + QaZFhzHHQoUt1EeIM8xRjT6xW5JKi2CUUGFjllQ8aJlZIG+cYQ50oGcFdaBoAXWgaAB1oGgAdaBoAAAA + AAAAAAAAQYYsAEGGLABBhiwCQYYsBUGGLApChi0ZQ4cuQESHMHpHiTSyTYw621WQRO5gllDmaJpZwGuc + XYdtnV5MbZ1fH26dXwdunV8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACYrpIAmK6SBJiukhCYrpIqmK6SUY6qhn52nmqoWI9HxkOGL9M6giXLPYMnrUqKN4JbkkpZY5ZUOGaX + VyBomVoObZteBXSfZwF1oGgAdaBoAHWgaAB1oGgAAAAAAAAAAABBhiwAQYYsAEGGLABBhiwBRIcvA0+N + PA5Sjj80U49BcVWQQq5WkUXdWZJI9VyUTPFflU/MYJZQkGCWUFJhl1EiYZdRB2GXUQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJiukgCYrpIFmK6SFpiukjmYrpJukKqJqHug + cNJdkk3jRIYw3TV/H8MxfRqTO4IlWVGNPy5jllMZZ5hXDWmZWgVqmVsBb5xhAHWgaAB1oGgAdaBoAHWg + aAAAAAAAAAAAAEGGLABBhiwAQYYsAEGGLABdlEwAY5ZSC2OWUjBillJuYZZRrV+VTt5clEv3WZJH9FaR + RdBVkEOSVZBDU1WQQyJVkEMIVZBDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAmK6SAJiukgaYrpIamK6SQpiukX6RqonAfaFy62CTUPRFhjHjM34cvil5EIMoeRBCN4AgFlSO + QgdhlVADaJlZAWmZWgBpmVoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG6c + XwBunF8LbpxfMGybXW5qmlqtZZhW3l+VTvdXkUX0UY4/0E+NPJJOjDtTTYw6Ik2MOghNjDoAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYrZIAmK2SBpitkhuYrZJEmK2Rg5Gq + isd+oXPxYZNR+EWGMuUyfRu9JngNfyF1BzshdgcQJngNAjB9GQBXkEUAaZlaAGmZWgAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcp5kAHKeZAtxnWQwcJ1ibm2bXq1omVneYJVP91aQ + RfRQjT3QTYw6kkyLOVNLizgiS4s4CEuLOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAJqtkwCarZMGmq2TG5qtk0WZrZODkqqLx3+hdPFhk1L4RoYy5TJ9G70meA1/IXUHOyF1 + BxAkdwoCKnoRAESGMABSjEAAUoxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABwnWIAcJ1iC3CcYTBunGBua5pdrWaYV95flE73VpBE9E+NPNBNjDmSTIs4U0uLOCJLizgIS4s4AAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAm66WAJuulgabrpYam66WQpuu + lX+Uqo3BgKF17GKTU/RGhjLkM30cvih4D4IldwxBLnwWFUKFLQZLiTgDUYw/AVKMQABSjEAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmZWQBpmVkLaZlZMGeYWG5ll1WtYZVR3lyT + SvdVj0L0UI090E6MOpJNjDpTTYw5Ik2MOQhNjDkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACdrpgAna6YBZ2umBedrpg7na6XcJWqjqx/oHXWYJJQ5kWGMd40fh7CLXsVkDF9 + GlVBhCsqTYo6FVCLPgtSjEAEU4xBAVuQSgBllVYAZZVWAGWVVgBllVYApLSfAKS0nwCktJ8AoLKaAJeu + kACJp4AAY5ZSAV2TTAtdk0wwXZNMblyTS61akkneWJFG91aQQ/RUj0HQU49AklOPQFNSj0AiUo9ACFKP + QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ+vmgCfr5oEn6+aEp+v + mi2erplWlKqNhnuecLBbkEvMQ4Uv1Td/Ick1fh6oPYInekiHNFFPijwyUYw/HFSNQgxZj0gEY5RUAWWV + VgBllVYAZZVWAGWVVgCktJ8ApLSfAKS0nwGgspoBl66QAomngANwm2IEUo1ADk+MPDNQjDxwUY0+rlOO + QN1Vj0P2WJFG8luSSc1ck0qRXJNLUlyTSyJck0sHXJNLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAn6+aAJ+vmgKfr5oLn6+aHJ+umTaRqIlYcppmglSNQ6xChS7JO4Em0zyC + J8ZDhS6pSog2gk6KO1lRiz42VY5EHF2RTQtklVUEZZVWAWWVVgBllVYAZZVWAKS0nwCktJ8BpLSfA6Cy + mgeXrpALiaeADnKdZhBRjD4aRIYvPUOGLndGhzGxS4o33FOOQPBck0vqY5ZTxGaYV4pnmVhOaJlZIGiZ + WQdomVkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgr5sAoK+bAaCv + mwWgr5sMnq6ZF4ejfS1klFZWT4o9jkaGM79DhS/bQ4Uv40WGMdVHhzSzS4k4hlCLPlpXj0Y2X5JPHGSV + VQtllVYDZZVWAGWVVgBllVYApLSfAKS0nwKktJ8JoLKaFJeukCCJp4Aoc51mLVSOQjdAhCpVO4Ilhz6D + KLhEhzDZUI095F+UT9VrmlyucJ1jeXKeZUV0nmccdJ9nBnSfZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCvmwCgr5sAoK+bAaCvmwOarJQFcppmE16RTzxXjkd8U4xCuE6K + PeFJhzb0Q4Uv8UKELdlHhzOyT4s9iFiPSF9gk1A5ZJRUGmKUUghZj0gCS4k4AUKELQBckUwBm7CUBaGz + nBWesZkvlq6PSYinf1xznWZmV5BGb0KFLoU7giWoO4IlxkGEK9NMijnKXpNNrW6bYIR2oGpZeaFuMnui + cBR8onAEfKJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoK+bAKCv + mwCgr5sAoK+bAH2fcwFvmGILbphhM2uWXnJllFevXJBM20+KPfNChC34PoIo7kSFMNhOijy5Vo5FkluQ + SmNYj0Y1Sok3GD6DKA4/gykNQYQsDESFLwxklVUThqZ9LJCqiFaNqYR/gqR4nm+bYq5XkEa1RYcxvz6D + Kcs9gyfQP4QqxUeIM6ZWkEV4aZlaTnWfaTB7om8afqRzCn+kdAJ/pHQAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfp90AH6fdAl+n3Qqep1vX3Ka + ZpVmlFjAVo1G3keGNPBChC72RoYy70yJOdxPijy9TYo6kUWGMGI6gSRDOYEjOT6DKDdBhC03QoQuN0uJ + OD5ilFJZcpxlhHaearBxm2TQZJVV4VONQeRGhzLgQYQs1j+EKsM/hCqlQ4YuekuKOElbkkslbJpeE3eg + awl+pHMDf6R0AX+kdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACFonwAhaJ8BoWifBuAoHdAeJxtam2XYJNgkVG6VYxE3E6JPO9LiDjxSIc16EWG + MdVAhCu4OoEkmDeAIIQ7gSV9QYQse0SFMHtEhTB7RoYygU2KO5RWj0WzW5FL0VuRSudVjkPyTYo670aH + Mt1DhS6/QYQsnECEK3ZBhSxORIYwKU2LOxFdk00HbZtfA32jcgF/pHQAf6R0AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIejfwCHo38Dh6N/DoKh + eSN6nXBAcplmZGqWXY9jklS5Wo5K01CKPtpHhjPYQIMr0zyBJss7gSXCPYIovEKFLrtHhzO6SYg2ukqI + N7pJhza9Sog2x0yJOddNijvmTYo77UyJOexJiDXeRocywkSGMJlDhS9vQYUtSUCELCpBhS0URocyB1CM + PgJflFABeqFuAH+kdAB/pHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAiaSBAImkgQGIpIAGg6F6EHyeciJ3m2w9c5pnY26XYYpjklSjVIxDq0eG + M7BAgyu5QIMrxkSFMNRJiDbdTYk64FCLPuFRiz/hUYs/4VCLPuJPij3mT4o97E+KPe1OijzmTIk51kqI + N7tHhzSXRoczbkWGMUdDhi8oQYUsEz+EKghAhCsDQYUsAUWHMQBhlVIAf6R0AH+kdAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJpIEAiaSBAIik + gAGCoXgFfp9zDnyecSB6nXA5dptqVWmVXGZXjUZuSoc2eUeGMoxMiTmqVIxCzFiOSOJaj0rqW49K61uP + S+xaj0rsWo9J7FqPSe1bj0vsXJBL5FuQStJYjke0UoxAjUyKOmVJiDZDR4g0J0aHMhJDhi8GQIQrAj+E + KgE/hCoAP4QqAD+EKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAImkgQCJpIEAhKJ7AH+fdgF/n3UFf591DH6fdBh6nW8kbJZfLVqO + STJSi0A/V41GWWCSUYBnlVmsaZZbyWiVWtNmlFjVZZRW1WSTVdVkk1XVZpRY1WqWXNJtmGDHb5lisGyY + X4lklFZbWI9HNk+LPR9KiTgQSIg1BkeINAFDhi8AP4QqAD+EKgA/hCoAP4QqAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/n3UAf591AH+fdQF/n3UDf591BXqdbwhtl18KYZFRDWWTVxlumGEvdJpoUneba3l1m2qScplmm26Y + Ypxsl1+ca5ZdnGuWXpxvmGKcdptqmnuecZB/oHV7gKF2WXyfcTJwmWMWX5JQCVONQQRJiTYBSIg1AEiI + NQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH+fdQB/n3UAf591AH+fdQB/n3UAep1vAG+Y + YwB4nG0CfJ5yCH6ecxV+n3QpfZ5zP3udcE12m2pScpllU2+YYlNtl2BTbphhU3OaZ1N6nW9RgaF3TIaj + fkCKpYEti6WCF4mlgQiEo3sCep5vAFaORQBIiDUASIg1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf591AH+fdQF/n3UDf591B3+fdQ9+n3QXe51wHHab + ax5ymWYeb5hiHm2XYR5umGIec5pnHnqdcB2CoXgbh6R+F4qlghCMpoQIjKaEA4ymhAGMpoQAjKaEAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/n3UAf591AH+fdQF/n3UCf591BH6fdAZ7nXAIdptrCHKZZghvmGIIbZdhCG6YYghzmmcIep1wCIKh + eAeHpH4GiqWCBIymhAKMpoQBjKaEAIymhACMpoQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH+fdQB/n3UAf591AH+fdQB/n3UBfp90AXud + cAJ2m2sCcplmAm+YYgJtl2ECbphiAnOaZwJ6nXACgqF4AoekfgGKpYIBjKaEAIymhACMpoQAjKaEAIym + hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAf591AH+fdQB/n3UAf591AH+fdQB+n3QAe51wAHabawBymWYAb5hiAG2XYQBumGIAc5pnAHqd + cACCoXgAh6R+AIqlggCMpoQAjKaEAIymhACMpoQAjKaEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/////////////gB///////////////////wAP//////////////////A + AAP/////////////////gAAB/////////////////wAAAP////////////////8AAAD///////////// + ///4AAAAP///////////////8AAAAB////////////////AAAAAP///////////////wAAAAD/////// + ///8AB//8AAAAA//////////8AAH//AAAAAP/////////+AAA//wAHwAD//////////AAAP/8AD8AA// + //////8AAAAAB/AD/AAP///////+AAAAAAPwA/wAD///////+AAAAAAAEAH+AA////////AAAAAAAAAA + /AAP///////AAAAAAAAAAHwAD///////AAAAAAAAAAA4AA///////AAAAAAAAAAAAAAP//////wAAAAA + AAAAAAAAD//////wAAAAAAAAAAAAAA//////4AAAAAAAAAAAAAAf/////8AAAAAAAAAAAAAAP//////A + AAAAAAAAAAAAAH//////wAAAAAAAAAAAAAD//////8AAAAAAAAAAAAAB//////+AAAAAAAAAAAAAB/// + ////AAAAAAAAAAAAAA///////AAAAAAAAAAAAD////////gAAAAAAAAAAAA////////wAAAAAAAAAAAA + P///////8AAAAAAAAAAAAD////////AAAAAAAAAAAAA////////wAAAAAAAAAAAAP///////8AAAAAAA + AAAAAB////////AAAAAAAAAAAAAP///////wAAAAAAAAAAAAD///////8AAAAAAAAAAAAA///////+AA + AAAAAAAAAAAP///////AAAAAAAAAAAAAD///////wAAAAAAAAAAAAA///////8AAAAAAAAAAAAAP//// + ///AAAAAAAAAAAAAD///////wAAAAAAAAAAAAAf//////8AAAAAAAAAAAAAAD/4AD//AAAAAAAAAAAAA + AAf8AAf/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAf/AAAAAAAAAAAAAAAAAAAD/wAAAAAAA + AAAAAAAAAAAA/8AAAAAAAAAAAAAAAAAAAP/AAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAA//AA + AAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAPwAAA + AP/wAAAAAAAAAAAAD+AAAAD/8AAAAAAAAAAAAA/+AAAA//AAAAAAAAAAAAAP/wAAAP/wAAAAAAAAAAAA + H/8AAAD/8AAAAAAAAAAAAD//AAAA//gAAAAAAAAAAAB//wAAAP/8AAAAAAAAAAAAf/+AAAH//wAAAAAA + AAAAAH//wAAD//8AAAAAAAAAAAD//+AAD///AAAAAAAAAAAD///8AD///wAAAAAAAAAAA////AA///+A + AAAAAAAAAAf///4Af///wAAAAAAAAAAP////AP///+AAAAAAAAAAH//////////wAAAAAAAAAB////// + /////AAAAAAAAAAf//////////4AAAAAAAAAH///////////AAAAAAAAAAf//////////4AAAAAAAAAD + ///////////AAAAAAAAAA///////////4AAAAAAAAAP///////////4AAAAAAAAD////////////AAAA + AAAAAf////////////8AAAD/gAD/////////////gAAA/8AAf//////////////////AAH////////// + ////////wAA//////////////////8AAP//////////////////gAD//////////////////8AA///// + //////////////AAAB/////////////////wAAAP////////////////8AAAB/////////////////AA + AAH////////////////wAAAA////////////////4AAAAH///////////////8AAAAAf//////////// + ///AAAAAH///////////////wAAAAA///////////////8AAAAAH//////////////+AAAAAA/////// + ///////+AAAYAAP//////////////AAAfAAD//////////////wAAP4AA//////////////8AAH/AAP/ + /////////////AAD/8AD//////////////wAB//AA//////////////8AB//wAP//////////////AAf + /8AD//////////////wAB//AA//////////////8AAP/gAP//////////////AAB+AAD//////////// + //wAAPAAA//////////////8AADwAAP//////////////gAAIAAD//////////////+AAAAAA/////// + ////////wAAAAAP//////////////8AAAAAH///////////////AAAAAD///////////////wAAAAB// + /////////////+AAAAA////////////////wAAAA////////////////+AAAAf/////////////////A + AAf/////////////////wAAH/////////////////+AAD//////////////////4AD////////////// + //////////////////////////////////8= + + + \ No newline at end of file diff --git a/SourceCode/ModSim/Source/Forms/FormTimedMessage.Designer.cs b/SourceCode/ModSim/Source/Forms/FormTimedMessage.Designer.cs new file mode 100644 index 000000000..825d2f8b2 --- /dev/null +++ b/SourceCode/ModSim/Source/Forms/FormTimedMessage.Designer.cs @@ -0,0 +1,92 @@ +namespace ModSim +{ + partial class FormTimedMessage + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.lblTitle = new System.Windows.Forms.Label(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.lblMessage2 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // lblMessage + // + this.lblTitle.AutoSize = true; + this.lblTitle.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold); + this.lblTitle.Location = new System.Drawing.Point(12, 20); + this.lblTitle.Name = "lblMessage"; + this.lblTitle.Size = new System.Drawing.Size(115, 29); + this.lblTitle.TabIndex = 0; + this.lblTitle.Text = "Message"; + // + // timer1 + // + this.timer1.Enabled = true; + this.timer1.Interval = 3000; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // lblMessage2 + // + this.lblMessage2.AutoSize = true; + this.lblMessage2.Font = new System.Drawing.Font("Tahoma", 18F); + this.lblMessage2.Location = new System.Drawing.Point(75, 71); + this.lblMessage2.Name = "lblMessage2"; + this.lblMessage2.Size = new System.Drawing.Size(127, 29); + this.lblMessage2.TabIndex = 1; + this.lblMessage2.Text = "Message 2"; + // + // FormTimedMessage + // + this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 23F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.LightSalmon; + this.ClientSize = new System.Drawing.Size(272, 151); + this.ControlBox = false; + this.Controls.Add(this.lblMessage2); + this.Controls.Add(this.lblTitle); + this.Font = new System.Drawing.Font("Tahoma", 14.25F); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Margin = new System.Windows.Forms.Padding(6); + this.Name = "FormTimedMessage"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "AgTwo Message"; + this.TopMost = true; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label lblTitle; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Label lblMessage2; + } +} \ No newline at end of file diff --git a/SourceCode/ModSim/Source/Forms/FormTimedMessage.cs b/SourceCode/ModSim/Source/Forms/FormTimedMessage.cs new file mode 100644 index 000000000..f95b1c075 --- /dev/null +++ b/SourceCode/ModSim/Source/Forms/FormTimedMessage.cs @@ -0,0 +1,29 @@ +using System; +using System.Windows.Forms; + +namespace ModSim +{ + public partial class FormTimedMessage : Form + { + public FormTimedMessage(int timeInMsec, string titleStr, string messageStr) + { + InitializeComponent(); + + lblTitle.Text = titleStr; + lblMessage2.Text = messageStr; + + timer1.Interval = timeInMsec; + + int messWidth = messageStr.Length; + Width = messWidth * 15 + 120; + } + + private void timer1_Tick(object sender, EventArgs e) + { + timer1.Enabled = false; + timer1.Dispose(); + Dispose(); + Close(); + } + } +} \ No newline at end of file diff --git a/SourceCode/ModSim/Source/Forms/FormYes.cs b/SourceCode/ModSim/Source/Forms/FormYes.cs new file mode 100644 index 000000000..ca4d60e05 --- /dev/null +++ b/SourceCode/ModSim/Source/Forms/FormYes.cs @@ -0,0 +1,18 @@ +using System; +using System.Windows.Forms; + +namespace ModSim +{ + public partial class FormYes : Form + { + public FormYes(string messageStr) + { + InitializeComponent(); + + lblMessage2.Text = messageStr; + + int messWidth = messageStr.Length; + Width = messWidth * 15 + 180; + } + } +} \ No newline at end of file diff --git a/SourceCode/ModSim/Source/Forms/FormYes.designer.cs b/SourceCode/ModSim/Source/Forms/FormYes.designer.cs new file mode 100644 index 000000000..9213b19f2 --- /dev/null +++ b/SourceCode/ModSim/Source/Forms/FormYes.designer.cs @@ -0,0 +1,88 @@ +namespace ModSim +{ + partial class FormYes + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.lblMessage2 = new System.Windows.Forms.Label(); + this.btnSerialOK = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // lblMessage2 + // + this.lblMessage2.AutoSize = true; + this.lblMessage2.Font = new System.Drawing.Font("Tahoma", 18F, System.Drawing.FontStyle.Bold); + this.lblMessage2.Location = new System.Drawing.Point(46, 71); + this.lblMessage2.Name = "lblMessage2"; + this.lblMessage2.Size = new System.Drawing.Size(137, 29); + this.lblMessage2.TabIndex = 1; + this.lblMessage2.Text = "Message 2"; + // + // btnSerialOK + // + this.btnSerialOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnSerialOK.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.btnSerialOK.DialogResult = System.Windows.Forms.DialogResult.OK; + this.btnSerialOK.FlatAppearance.BorderSize = 2; + this.btnSerialOK.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btnSerialOK.Font = new System.Drawing.Font("Tahoma", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnSerialOK.ForeColor = System.Drawing.SystemColors.ControlText; + this.btnSerialOK.Location = new System.Drawing.Point(136, 161); + this.btnSerialOK.Name = "btnSerialOK"; + this.btnSerialOK.Size = new System.Drawing.Size(105, 64); + this.btnSerialOK.TabIndex = 96; + this.btnSerialOK.Text = "Ok"; + this.btnSerialOK.UseVisualStyleBackColor = true; + // + // FormYes + // + this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 23F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); + this.ClientSize = new System.Drawing.Size(241, 225); + this.ControlBox = false; + this.Controls.Add(this.btnSerialOK); + this.Controls.Add(this.lblMessage2); + this.Font = new System.Drawing.Font("Tahoma", 14.25F); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Margin = new System.Windows.Forms.Padding(6); + this.Name = "FormYes"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "AgTwo Message"; + this.TopMost = true; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Label lblMessage2; + private System.Windows.Forms.Button btnSerialOK; + } +} \ No newline at end of file diff --git a/SourceCode/ModSim/Source/Forms/FormYes.resx b/SourceCode/ModSim/Source/Forms/FormYes.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/SourceCode/ModSim/Source/Forms/FormYes.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SourceCode/ModSim/Source/Forms/FormtimedMessage.resx b/SourceCode/ModSim/Source/Forms/FormtimedMessage.resx new file mode 100644 index 000000000..1f666f268 --- /dev/null +++ b/SourceCode/ModSim/Source/Forms/FormtimedMessage.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/SourceCode/ModSim/Source/Forms/UDP.designer.cs b/SourceCode/ModSim/Source/Forms/UDP.designer.cs new file mode 100644 index 000000000..a23a2c580 --- /dev/null +++ b/SourceCode/ModSim/Source/Forms/UDP.designer.cs @@ -0,0 +1,685 @@ +using System; +using System.Drawing; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Windows.Forms; +using static System.Windows.Forms.VisualStyles.VisualStyleElement; + +namespace ModSim +{ + public partial class FormSim + { + // UDP Sockets + public Socket UDPSocket; + private EndPoint endPointUDP = new IPEndPoint(IPAddress.Any, 0); + + public bool isUDPNetworkConnected; + + //UDP Endpoints + public IPEndPoint epAgIO = new IPEndPoint(IPAddress.Parse( + Properties.Settings.Default.etIP_SubnetOne.ToString() + "." + + Properties.Settings.Default.etIP_SubnetTwo.ToString() + "." + + Properties.Settings.Default.etIP_SubnetThree.ToString() + ".255"), 9999); + + // Data stream + private byte[] buffer = new byte[1024]; + + //used to send communication check pgn= C8 or 200 + private byte[] helloFromAgIO = { 0x80, 0x81, 0x7F, 200, 3, 56, 0, 0, 0x47 }; + + public IPAddress ipCurrent; + + //initialize udp network + public void LoadUDPNetwork() + { + helloFromAgIO[5] = 56; + + lblIP.Text = ""; + try //udp network + { + string bob = Dns.GetHostName(); + foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName())) + { + if (IPA.AddressFamily == AddressFamily.InterNetwork) + { + string data = IPA.ToString(); + lblIP.Text += IPA.ToString().Trim() + "\r\n"; + } + } + + // Initialise the socket + UDPSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); + UDPSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true); + UDPSocket.Bind(new IPEndPoint(IPAddress.Any, 8888)); + UDPSocket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref endPointUDP, + new AsyncCallback(ReceiveDataUDPAsync), null); + + isUDPNetworkConnected = true; + + //if (!isFound) + //{ + // MessageBox.Show("Network Address of Modules -> " + Properties.Settings.Default.setIP_localAOG+"[2 - 254] May not exist. \r\n" + // + "Are you sure ethernet is connected?\r\n" + "Go to UDP Settings to fix.\r\n\r\n", "Network Connection Error", + // MessageBoxButtons.OK, MessageBoxIcon.Error); + // //btnUDP.BackColor = Color.Red; + // lblIP.Text = "Not Connected"; + //} + } + catch (Exception e) + { + //WriteErrorLog("UDP Server" + e); + MessageBox.Show(e.Message, "Serious Network Connection Error", + MessageBoxButtons.OK, MessageBoxIcon.Error); + lblIP.Text = "Error"; + } + } + + #region Send UDP + + public void SendUDPMessage(byte[] byteData) + { + if (isUDPNetworkConnected) + { + try + { + // Send packet to the zero + if (byteData.Length != 0) + { + UDPSocket.BeginSendTo(byteData, 0, byteData.Length, SocketFlags.None, + epAgIO, new AsyncCallback(SendDataUDPAsync), null); + } + } + catch (Exception) + { + //WriteErrorLog("Sending UDP Message" + e.ToString()); + //MessageBox.Show("Send Error: " + e.Message, "UDP Client", MessageBoxButtons.OK, + //MessageBoxIcon.Error); + } + } + } + + public void SendUDPMessage(string message) + { + if (isUDPNetworkConnected) + { + try + { + // Get packet as byte array to send + byte[] byteData = Encoding.ASCII.GetBytes(message); + if (byteData.Length != 0) + UDPSocket.BeginSendTo(byteData, 0, byteData.Length, SocketFlags.None, + epAgIO, new AsyncCallback(SendDataUDPAsync), null); + } + catch (Exception) + { + } + } + } + + + private void SendDataUDPAsync(IAsyncResult asyncResult) + { + try + { + UDPSocket.EndSend(asyncResult); + } + catch (Exception) + { + //WriteErrorLog(" UDP Send Data" + e.ToString()); + //MessageBox.Show("SendData Error: " + e.Message, "UDP Server", MessageBoxButtons.OK, + //MessageBoxIcon.Error); + } + } + + #endregion + + #region Receive UDP + + private void ReceiveDataUDPAsync(IAsyncResult asyncResult) + { + try + { + // Receive all data + int msgLen = UDPSocket.EndReceiveFrom(asyncResult, ref endPointUDP); + + byte[] localMsg = new byte[msgLen]; + Array.Copy(buffer, localMsg, msgLen); + + // Listen for more connections again... + UDPSocket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref endPointUDP, + new AsyncCallback(ReceiveDataUDPAsync), null); + + BeginInvoke((MethodInvoker)(() => ReceiveFromUDP(localMsg))); + + } + catch (Exception) + { + //WriteErrorLog("UDP Recv data " + e.ToString()); + //MessageBox.Show("ReceiveData Error: " + e.Message, "UDP Server", MessageBoxButtons.OK, + //MessageBoxIcon.Error); + } + } + + + static byte [] PGN_253 = { 128, 129, 126, 253, 8, 0, 0, 0, 0, 0, 0, 0, 0, 12 }; + int PGN_253_Size = PGN_253.Length - 1; + + //Heart beat hello AgIO + static byte [] helloFromAutoSteer = { 128, 129, 126, 126, 5, 0, 0, 0, 0, 0, 71 }; + //short helloSteerPosition = 0; + + //hello from AgIO + static byte[] helloFromMachine = { 128, 129, 123, 123, 5, 0, 0, 0, 0, 0, 71 }; + + //hello from AgIO + static byte[] helloFromIMU = { 128, 129, 121, 121, 5, 0, 0, 0, 0, 0, 71 }; + + //settings pgn + static byte[] PGN_237 = { 0x80, 0x81, 0x7f, 237, 8, 1, 2, 3, 4, 0, 0, 0, 0, 0xCC }; + int PGN_237_Size = PGN_237.Length - 1; + + + //Relays + //bool isRelayActiveHigh = true; + byte relay = 0, relayHi = 0, uTurn = 0; + byte xte = 0; + + //Switches + int remoteSwitch = 1, workSwitch = 1, steerSwitch = 1, switchByte = 0; + + //On Off + byte guidanceStatus = 0; + byte prevGuidanceStatus = 0; + bool guidanceStatusChanged = false; + + //speed sent as *10 + double gpsSpeed = 0, gpsSpeedMM = 0; + + //steering variables + double steerAngleActual = 0; + double steerAngleSetPoint = 0; //the desired angle from AgOpen + //int steeringPosition = 0; //from steering sensor + //double steerAngleError = 0; //setpoint - actual + + //Machine module + int hydLift = 0; + int tramline = 0; + + int relayLoM = 0; + int relayHiM = 0; + + private void ReceiveFromUDP(byte[] data) + { + try + { + //Hello and scan reply + if (data[0] == 0x80 && data[1] == 0x81 && data[2] == 0x7F) + { + switch (data[3]) + { + case 254: + { + gpsSpeed = ((double)(data[5] | data[6] << 8)) * 0.1; + + prevGuidanceStatus = guidanceStatus; + + guidanceStatus = data[7]; + guidanceStatusChanged = (guidanceStatus != prevGuidanceStatus); + + lblGuidanceStatus.Text = guidanceStatus.ToString(); + lblSteerSwitchStatus.Text = steerSwitch.ToString(); + + //if (steerConfig.SteerButton == 1) + //{ + // if (guidanceStatus == 1) steerSwitch = 0; + //} + + int temp = (data[9] << 8); + temp |= data[8]; + short temp2 = (short)temp; + + //Bit 8,9 set point steer angle * 100 is sent + steerAngleSetPoint = (float)(temp2) * 0.01; //high low bytes + + //Bit 10 Tram + xte = data[10]; + + //Bit 11 + relay = data[11]; + + //Bit 12 + relayHi = data[12]; + + byte swap = swapBits[data[11]]; + lbl1To8.Text = Convert.ToString(swap, 2).PadLeft(8, '0'); + + swap = swapBits[data[12]]; + lbl9To16.Text = Convert.ToString(swap, 2).PadLeft(8, '0'); + + //---------------------------------------------------------------------------- + //Serial Send to agopenGPS + + int sa = (int)(steerAngleActual * 100); + + PGN_253[5] = unchecked((byte)((int)(sa))); + PGN_253[6] = unchecked((byte)((int)(sa) >> 8)); + + //heading + PGN_253[7] = unchecked((byte)((int)(9999))); + PGN_253[8] = unchecked((byte)((int)(9999) >> 8)); + + //roll + PGN_253[9] = unchecked((byte)((int)(8888))); + PGN_253[10] = unchecked((byte)((int)(8888) >> 8)); + + switchByte = 0; + switchByte |= ((int)remoteSwitch << 2); //put remote in bit 2 + switchByte |= (steerSwitch << 1); //put steerSwitch status in bit 1 position + switchByte |= workSwitch; + + PGN_253[11] = (byte)switchByte; + PGN_253[12] = 44; //(uint8_t)pwmDisplay; + + //checksum + int CK_A = 0; + for (int i = 2; i < PGN_253_Size; i++) + CK_A = (CK_A + PGN_253[i]); + + PGN_253[PGN_253_Size] = unchecked((byte)((int)(CK_A))); + + SendUDPMessage(PGN_253); + + if (btnSteerButtonRemote.BackColor == Color.Green) + { + btnSteerButtonRemote.BackColor = Color.White; + } + + break; + } + + case 252: + { + //PID values + steerSettings.Kp = data[5]; // read Kp from AgOpenGPS + lblKp.Text = steerSettings.Kp.ToString(); + + steerSettings.highPWM = data[6]; // read high pwm + lblHighPWM.Text = steerSettings.highPWM.ToString(); + + steerSettings.lowPWM = data[7]; // read lowPWM from AgOpenGPS + + steerSettings.minPWM = data[8]; //read the minimum amount of PWM for instant on\ + lblMinPWM.Text = steerSettings.minPWM.ToString(); + + float temp = steerSettings.minPWM; + temp *= 1.2f; + steerSettings.lowPWM = (byte)temp; + lblLowPWM.Text = steerSettings.lowPWM.ToString(); + + steerSettings.steerSensorCounts = data[9]; //sent as setting displayed in AOG + lblWAS_Counts.Text = steerSettings.steerSensorCounts.ToString(); + + steerSettings.wasOffset = (data[10]); //read was zero offset Lo + + steerSettings.wasOffset |= (data[11] << 8); //read was zero offset Hi + lblWAS_Offset.Text = steerSettings.wasOffset.ToString(); + + steerSettings.AckermanFix = (float)data[12] * 0.01; + lblAckerman.Text = (steerSettings.AckermanFix * 100).ToString("N0") + "%"; + + break; + } + + case 251: + { + int sett = data[5]; //setting0 + + if ((sett & (1 << 0)) != 0) steerConfig.InvertWAS = 1; else steerConfig.InvertWAS = 0; + lblInvertWAS.Text = steerConfig.InvertWAS.ToString(); + + if ((sett & (1 << 1)) != 0) steerConfig.IsRelayActiveHigh = 1; else steerConfig.IsRelayActiveHigh = 0; + lblRelayActHigh.Text = steerConfig.IsRelayActiveHigh.ToString(); + + if ((sett & (1 << 2)) != 0) steerConfig.MotorDriveDirection = 1; else steerConfig.MotorDriveDirection = 0; + lblMotorDirection.Text = steerConfig.MotorDriveDirection.ToString(); + + if ((sett & (1 << 3)) != 0) steerConfig.SingleInputWAS = 1; else steerConfig.SingleInputWAS = 0; + lblSingleInputWAS.Text = steerConfig.SingleInputWAS.ToString(); + + if ((sett & (1 << 4)) != 0) steerConfig.CytronDriver = 1; else steerConfig.CytronDriver = 0; + lblCytron.Text = steerConfig.CytronDriver.ToString(); + + if ((sett & (1 << 5)) != 0) steerConfig.SteerSwitch = 1; else steerConfig.SteerSwitch = 0; + lblSteerSw.Text = steerConfig.SteerSwitch.ToString(); + + if ((sett & (1 << 6)) != 0) steerConfig.SteerButton = 1; else steerConfig.SteerButton = 0; + lblSteerBtn.Text = steerConfig.SteerButton.ToString(); + + if ((sett & (1 << 7)) != 0) steerConfig.ShaftEncoder = 1; else steerConfig.ShaftEncoder = 0; + lblShaftEnc.Text = steerConfig.ShaftEncoder.ToString(); + + steerConfig.PulseCountMax = data[6]; + lblPulseCounts.Text = steerConfig.PulseCountMax.ToString(); + + //was speed + //data[7]; + + sett = data[8]; //setting1 - Danfoss valve etc + + if ((sett & (1 << 0)) != 0) steerConfig.IsDanfoss = 1; else steerConfig.IsDanfoss = 0; + lblDanfoss.Text = steerConfig.IsDanfoss.ToString(); + + if ((sett & (1 << 1)) != 0) steerConfig.PressureSensor = 1; else steerConfig.PressureSensor = 0; + lblPressure.Text = steerConfig.PressureSensor.ToString(); + + if ((sett & (1 << 2)) != 0) steerConfig.CurrentSensor = 1; else steerConfig.CurrentSensor = 0; + lblCurrent.Text = steerConfig.CurrentSensor.ToString(); + + if ((sett & (1 << 3)) != 0) steerConfig.IsUseY_Axis = 1; else steerConfig.IsUseY_Axis = 0; + lblUseY_Axis.Text = steerConfig.IsUseY_Axis.ToString(); + break; + } + + case 200: // Hello from AgIO + { + int sa = (int)(steerAngleActual * 100); + + helloFromAutoSteer[5] = unchecked((byte)((int)(sa))); + helloFromAutoSteer[6] = unchecked((byte)((int)(sa) >> 8)); + + helloFromAutoSteer[7] = 0; + helloFromAutoSteer[8] = 0; + helloFromAutoSteer[9] = (byte)switchByte; + + SendUDPMessage(helloFromAutoSteer); + + helloFromMachine[5] = (byte)relayLoM; + helloFromMachine[6] = (byte)relayHiM; + + SendUDPMessage(helloFromMachine); + + SendUDPMessage(helloFromIMU); + + break; + } + + case 201: + { + //make really sure this is the subnet pgn + if (data[4] == 5 && data[5] == 201 && data[6] == 201) + { + lblIPSet1.Text = data[7].ToString(); + lblIPSet2.Text = data[8].ToString(); + lblIPSet3.Text = data[9].ToString(); + + TimedMessageBox(2000, "IP Set", "New Values Changed"); + + Properties.Settings.Default.etIP_SubnetOne = data[7]; + Properties.Settings.Default.etIP_SubnetTwo = data[8]; + Properties.Settings.Default.etIP_SubnetThree = data[9]; + Properties.Settings.Default.Save(); + + YesMessageBox("ModSim will Restart to Enable UDP Networking Changes"); + + Application.Restart(); + Environment.Exit(0); + Close(); + + } + + break; + } + + //scan reply + case 202: + { + //make really sure this is the reply pgn + if (data[4] == 3 && data[5] == 202 && data[6] == 202) + { + byte [] scanReply = { 128, 129, 126, 203, 7, + Properties.Settings.Default.etIP_SubnetOne, + Properties.Settings.Default.etIP_SubnetTwo, + Properties.Settings.Default.etIP_SubnetThree, 126, + + //source ips + + Properties.Settings.Default.etIP_SubnetOne, + Properties.Settings.Default.etIP_SubnetTwo, + Properties.Settings.Default.etIP_SubnetThree, 23 }; + + lblScanReply.Text = "Yes"; + + + //checksum + int CK_A = 0; + for (int i = 2; i < scanReply.Length - 1; i++) + { + CK_A = (CK_A + scanReply[i]); + } + scanReply[scanReply.Length - 1] = unchecked((byte)((int)(CK_A))); + + SendUDPMessage(scanReply); + + //reset to Machine Module + scanReply[2] = 123; + scanReply[8] = 123; + + //checksum + CK_A = 0; + for (int i = 2; i < scanReply.Length - 1; i++) + { + CK_A = (CK_A + scanReply[i]); + } + scanReply[scanReply.Length - 1] = unchecked((byte)((int)(CK_A))); + + SendUDPMessage(scanReply); + + //reset to Machine Module + scanReply[2] = 121; + scanReply[8] = 121; + + //checksum + CK_A = 0; + for (int i = 2; i < scanReply.Length - 1; i++) + { + CK_A = (CK_A + scanReply[i]); + } + scanReply[scanReply.Length - 1] = unchecked((byte)((int)(CK_A))); + + SendUDPMessage(scanReply); + + } + break; + } + + ///////////// Machine Module + + case 239: //machine data + { + uTurn = data[5]; + lblUTurn.Text=uTurn.ToString(); + + gpsSpeedMM = (double)data[6];//actual speed times 4, single uint8_t + gpsSpeedMM *= 0.1; + lblGPSSpeedMM.Text = gpsSpeedMM.ToString("N1"); + + hydLift = data[7]; + lblHydLift.Text = hydLift.ToString(); + + tramline = data[8]; //bit 0 is right bit 1 is left + lblTram.Text = tramline.ToString(); + + relayLoM = data[11]; // read relay control from AgOpenGPS + relayHiM = data[12]; + + byte swap = swapBits[data[11]]; + lbl1To8M.Text = Convert.ToString(swap, 2).PadLeft(8, '0'); + + swap = swapBits[data[12]]; + lbl9To16M.Text = Convert.ToString(swap, 2).PadLeft(8, '0'); + + break; + } + + case 229: + { + byte swap = swapBits[data[5]]; + lblZone1.Text = Convert.ToString(swap, 2).PadLeft(8, '0'); + + swap = swapBits[data[6]]; + lblZone2.Text = Convert.ToString(swap, 2).PadLeft(8, '0'); + + swap = swapBits[data[7]]; + lblZone3.Text = Convert.ToString(swap, 2).PadLeft(8, '0'); + + swap = swapBits[data[8]]; + lblZone4.Text = Convert.ToString(swap, 2).PadLeft(8, '0'); + + swap = swapBits[data[9]]; + lblZone5.Text = Convert.ToString(swap, 2).PadLeft(8, '0'); + + swap = swapBits[data[10]]; + lblZone6.Text = Convert.ToString(swap, 2).PadLeft(8, '0'); + + swap = swapBits[data[11]]; + lblZone7.Text = Convert.ToString(swap, 2).PadLeft(8, '0'); + + swap = swapBits[data[12]]; + lblZone8.Text = Convert.ToString(swap, 2).PadLeft(8, '0'); + + break; + } + + case 238: + { + aogConfig.raiseTime = data[5]; + lblRaiseTime.Text = aogConfig.raiseTime.ToString(); + + aogConfig.lowerTime = data[6]; + lblLowerTime.Text = aogConfig.lowerTime.ToString(); + + aogConfig.enableToolLift = data[7]; + lblLiftEnable.Text = aogConfig.enableToolLift.ToString(); + + //set1 + int sett = data[8]; //setting0 + if ((sett & (1 << 0)) != 0) + aogConfig.isRelayActiveHigh = 1; else aogConfig.isRelayActiveHigh = 0; + lblRelayActiveHigh.Text = aogConfig.isRelayActiveHigh.ToString(); + + aogConfig.user1 = data[9]; + lblUser1.Text = data[9].ToString(); + + aogConfig.user2 = data[10]; + lblUser2.Text = data[10].ToString(); + + aogConfig.user3 = data[11]; + lblUser3.Text = data[11].ToString(); + + aogConfig.user4 = data[12]; + lblUser4.Text = data[12].ToString(); + + break; + } + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + default: + { + //module return via udp sent to AOG + //SendToLoopBackMessageAOG(data); + + break; + } + } + } // end of pgns + } + catch + { + + } + } + + #endregion + + static byte [] swapBits = { + 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, + 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, + 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, + 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, + 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, + 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, + 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, + 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, + 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, + 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, + 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, + 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, + 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, + 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, + 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, + 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, + 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, + 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, + 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, + 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, + 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, + 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, + 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, + 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, + 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, + 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, + 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, + 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, + 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, + 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, + 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, + 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff, }; + + } + + + + public static class steerConfig + { + public static byte InvertWAS = 0; + public static byte IsRelayActiveHigh = 0; //if zero, active low (default) + public static byte MotorDriveDirection = 0; + public static byte SingleInputWAS = 1; + public static byte CytronDriver = 1; + public static byte SteerSwitch = 0; //1 if switch selected + public static byte SteerButton = 0; //1 if button selected + public static byte ShaftEncoder = 0; + public static byte PressureSensor = 0; + public static byte CurrentSensor = 0; + public static byte PulseCountMax = 5; + public static byte IsDanfoss = 0; + public static byte IsUseY_Axis = 0; + } + + public static class steerSettings + { + public static byte Kp = 120; //proportional gain + public static byte lowPWM = 30; //band of no action + public static int wasOffset = 0; + public static byte minPWM = 25; + public static byte highPWM = 160;//max PWM value + public static double steerSensorCounts = 30; + public static double AckermanFix = 1; //sent as percent + } + + //relay module config + public static class aogConfig + { + public static byte raiseTime = 2; + public static byte lowerTime = 4; + public static byte enableToolLift = 0; + public static byte isRelayActiveHigh = 0; //if zero, active low (default) + public static byte user1 = 0; + public static byte user2 = 0; + public static byte user3 = 0; + public static byte user4 = 0; + } +} diff --git a/SourceCode/ModSim/Source/GlobalSuppressions.cs b/SourceCode/ModSim/Source/GlobalSuppressions.cs new file mode 100644 index 000000000..2566cd79b --- /dev/null +++ b/SourceCode/ModSim/Source/GlobalSuppressions.cs @@ -0,0 +1,15 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "", Scope = "member", Target = "~M:ModSim.FormGPSData.timer1_Tick(System.Object,System.EventArgs)")] +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "", Scope = "member", Target = "~M:ModSim.FormSim.btnRelayTest_Click(System.Object,System.EventArgs)")] +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "", Scope = "member", Target = "~M:ModSim.FormSim.btnResetTimer_Click(System.Object,System.EventArgs)")] +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "", Scope = "member", Target = "~M:ModSim.FormSim.btnUDP_Click(System.Object,System.EventArgs)")] +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "", Scope = "member", Target = "~M:ModSim.FormSim.deviceManagerToolStripMenuItem_Click(System.Object,System.EventArgs)")] +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "", Scope = "member", Target = "~M:ModSim.FormSim.lblIP_Click(System.Object,System.EventArgs)")] +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "", Scope = "member", Target = "~M:ModSim.FormSim.oneSecondLoopTimer_Tick(System.Object,System.EventArgs)")] +[assembly: SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "", Scope = "member", Target = "~M:ModSim.FormSim.toolStripEthernet_Click(System.Object,System.EventArgs)")] diff --git a/SourceCode/ModSim/Source/ModSim.csproj b/SourceCode/ModSim/Source/ModSim.csproj new file mode 100644 index 000000000..8477d4992 --- /dev/null +++ b/SourceCode/ModSim/Source/ModSim.csproj @@ -0,0 +1,149 @@ + + + + + Debug + AnyCPU + {38E5D197-82BB-42DE-83F8-9D550D09BCDC} + WinExe + ModSim + ModSim + v4.8 + 512 + true + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + AnyCPU + true + full + false + ..\..\..\AgOpenGPS\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + none + true + ..\..\..\AgOpenGPS\ + TRACE + prompt + 4 + + + ModSim_ico.ico + + + + + + + + + + + + + Form + + + FormSim.cs + + + Form + + + FormYes.cs + + + Form + + + FormTimedMessage.cs + + + + + + FormSim.cs + + + FormYes.cs + + + FormTimedMessage.cs + + + ResXFileCodeGenerator + gStr.Designer.cs + Designer + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + True + gStr.resx + + + Form + FormSim.cs + + + Form + FormSim.cs + + + True + True + Resources.resx + + + True + Settings.settings + True + + + + + + + + + + + False + Microsoft .NET Framework 4.6 %28x86 and x64%29 + true + + + False + .NET Framework 3.5 SP1 + false + + + + \ No newline at end of file diff --git a/SourceCode/ModSim/Source/ModSim_ico.ico b/SourceCode/ModSim/Source/ModSim_ico.ico new file mode 100644 index 000000000..16c67ba6b Binary files /dev/null and b/SourceCode/ModSim/Source/ModSim_ico.ico differ diff --git a/SourceCode/ModSim/Source/Program.cs b/SourceCode/ModSim/Source/Program.cs new file mode 100644 index 000000000..bbf0a8d5a --- /dev/null +++ b/SourceCode/ModSim/Source/Program.cs @@ -0,0 +1,27 @@ +using Microsoft.Win32; +using System; +using System.Threading; +using System.Windows.Forms; + +namespace ModSim +{ + internal static class Program + { + private static readonly Mutex Mutex = new Mutex(true, "{8F6F0AC4-B9A1-66fd-A8CF-72F04E6BDE82}"); + + /// + /// The main entry point for the application. + /// + [STAThread] + private static void Main() + { + if (Mutex.WaitOne(TimeSpan.Zero, true)) + { + + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new FormSim()); + } + } + } +} diff --git a/SourceCode/ModSim/Source/Properties/AssemblyInfo.cs b/SourceCode/ModSim/Source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..ddef9bdae --- /dev/null +++ b/SourceCode/ModSim/Source/Properties/AssemblyInfo.cs @@ -0,0 +1,37 @@ +using System.Reflection; +using System.Resources; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ModSim")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("AgTwo")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c88a8244-47f5-4275-aa35-54cc884e9ede")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.2.2")] +[assembly: AssemblyFileVersion("1.2.2")] +[assembly: NeutralResourcesLanguage("en-CA")] diff --git a/SourceCode/ModSim/Source/Properties/Resources.Designer.cs b/SourceCode/ModSim/Source/Properties/Resources.Designer.cs new file mode 100644 index 000000000..33a4b03ea --- /dev/null +++ b/SourceCode/ModSim/Source/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ModSim.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ModSim.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/SourceCode/ModSim/Source/Properties/Resources.resx b/SourceCode/ModSim/Source/Properties/Resources.resx new file mode 100644 index 000000000..4fdb1b6af --- /dev/null +++ b/SourceCode/ModSim/Source/Properties/Resources.resx @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SourceCode/ModSim/Source/Properties/Settings.Designer.cs b/SourceCode/ModSim/Source/Properties/Settings.Designer.cs new file mode 100644 index 000000000..a815aec9e --- /dev/null +++ b/SourceCode/ModSim/Source/Properties/Settings.Designer.cs @@ -0,0 +1,230 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ModSim.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.12.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("53.4360564")] + public double setPgm_defaultLat { + get { + return ((double)(this["setPgm_defaultLat"])); + } + set { + this["setPgm_defaultLat"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("-111.160047")] + public double setPgm_defaultLon { + get { + return ((double)(this["setPgm_defaultLon"])); + } + set { + this["setPgm_defaultLon"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("53.4360564")] + public double setGPS_SimLatitude { + get { + return ((double)(this["setGPS_SimLatitude"])); + } + set { + this["setGPS_SimLatitude"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("-111.160047")] + public double setGPS_SimLongitude { + get { + return ((double)(this["setGPS_SimLongitude"])); + } + set { + this["setGPS_SimLongitude"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string setComm_commName { + get { + return ((string)(this["setComm_commName"])); + } + set { + this["setComm_commName"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("192")] + public byte etIP_SubnetOne { + get { + return ((byte)(this["etIP_SubnetOne"])); + } + set { + this["etIP_SubnetOne"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("168")] + public byte etIP_SubnetTwo { + get { + return ((byte)(this["etIP_SubnetTwo"])); + } + set { + this["etIP_SubnetTwo"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("5")] + public byte etIP_SubnetThree { + get { + return ((byte)(this["etIP_SubnetThree"])); + } + set { + this["etIP_SubnetThree"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string Setting { + get { + return ((string)(this["Setting"])); + } + set { + this["Setting"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool isGGA { + get { + return ((bool)(this["isGGA"])); + } + set { + this["isGGA"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool isVTG { + get { + return ((bool)(this["isVTG"])); + } + set { + this["isVTG"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool isRMC { + get { + return ((bool)(this["isRMC"])); + } + set { + this["isRMC"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool isNDA { + get { + return ((bool)(this["isNDA"])); + } + set { + this["isNDA"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool isAVR { + get { + return ((bool)(this["isAVR"])); + } + set { + this["isAVR"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool isHDT { + get { + return ((bool)(this["isHDT"])); + } + set { + this["isHDT"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool isKSXT { + get { + return ((bool)(this["isKSXT"])); + } + set { + this["isKSXT"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool isOGI { + get { + return ((bool)(this["isOGI"])); + } + set { + this["isOGI"] = value; + } + } + } +} diff --git a/SourceCode/ModSim/Source/Properties/Settings.settings b/SourceCode/ModSim/Source/Properties/Settings.settings new file mode 100644 index 000000000..31b81cdcd --- /dev/null +++ b/SourceCode/ModSim/Source/Properties/Settings.settings @@ -0,0 +1,57 @@ + + + + + + 53.4360564 + + + -111.160047 + + + 53.4360564 + + + -111.160047 + + + + + + 192 + + + 168 + + + 5 + + + + + + False + + + False + + + False + + + True + + + False + + + False + + + False + + + False + + + \ No newline at end of file diff --git a/SourceCode/ModSim/Source/Settings.cs b/SourceCode/ModSim/Source/Settings.cs new file mode 100644 index 000000000..bb4df3a83 --- /dev/null +++ b/SourceCode/ModSim/Source/Settings.cs @@ -0,0 +1,28 @@ +namespace AgIO.Properties { + + + // This class allows you to handle specific events on the settings class: + // The SettingChanging event is raised before a setting's value is changed. + // The PropertyChanged event is raised after a setting's value is changed. + // The SettingsLoaded event is raised after the setting values are loaded. + // The SettingsSaving event is raised before the setting values are saved. + internal sealed partial class Settings { + + public Settings() { + // // To add event handlers for saving and changing settings, uncomment the lines below: + // + // this.SettingChanging += this.SettingChangingEventHandler; + // + // this.SettingsSaving += this.SettingsSavingEventHandler; + // + } + + private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) { + // Add code to handle the SettingChangingEvent event here. + } + + private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) { + // Add code to handle the SettingsSaving event here. + } + } +} diff --git a/SourceCode/ModSim/Source/gStr.Designer.cs b/SourceCode/ModSim/Source/gStr.Designer.cs new file mode 100644 index 000000000..9e701a093 --- /dev/null +++ b/SourceCode/ModSim/Source/gStr.Designer.cs @@ -0,0 +1,153 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ModSim { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class gStr { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal gStr() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ModSim.gStr", typeof(gStr).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to https://github.com/farmerbriantee/AgOpenGPS/wiki/03.-ModSim-Orientation. + /// + internal static string gsAgIOHelp { + get { + return ResourceManager.GetString("gsAgIOHelp", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Authourizing. + /// + internal static string gsAuthourizing { + get { + return ResourceManager.GetString("gsAuthourizing", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to https://github.com/farmerbriantee/AgOpenGPS/wiki/05.-Ethernet-Setup. + /// + internal static string gsEthernetHelp { + get { + return ResourceManager.GetString("gsEthernetHelp", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Listening. + /// + internal static string gsListening { + get { + return ResourceManager.GetString("gsListening", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to NTRIP. + /// + internal static string gsNTRIP { + get { + return ResourceManager.GetString("gsNTRIP", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to https://github.com/farmerbriantee/AgOpenGPS/wiki/04.-RTK-Setup. + /// + internal static string gsNTRIP_Help { + get { + return ResourceManager.GetString("gsNTRIP_Help", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Save And Return. + /// + internal static string gsSaveAndReturn { + get { + return ResourceManager.GetString("gsSaveAndReturn", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Save Comms. + /// + internal static string gsSaveComms { + get { + return ResourceManager.GetString("gsSaveComms", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to https://github.com/farmerbriantee/AgOpenGPS/wiki/06.-Serial-Monitor. + /// + internal static string gsSerialMonHelp { + get { + return ResourceManager.GetString("gsSerialMonHelp", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Waiting. + /// + internal static string gsWaiting { + get { + return ResourceManager.GetString("gsWaiting", resourceCulture); + } + } + } +} diff --git a/SourceCode/ModSim/Source/gStr.resx b/SourceCode/ModSim/Source/gStr.resx new file mode 100644 index 000000000..963a5961b --- /dev/null +++ b/SourceCode/ModSim/Source/gStr.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + https://github.com/farmerbriantee/AgOpenGPS/wiki/03.-AgTwo-Orientation + + + Authourizing + + + https://github.com/farmerbriantee/AgOpenGPS/wiki/05.-Ethernet-Setup + + + Listening + + + NTRIP + + + https://github.com/farmerbriantee/AgOpenGPS/wiki/04.-RTK-Setup + + + Save And Return + + + Save Comms + + + https://github.com/farmerbriantee/AgOpenGPS/wiki/06.-Serial-Monitor + + + Waiting + + \ No newline at end of file