diff --git a/.gitignore b/.gitignore index 3568925182..15673951bc 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,6 @@ artifacts/ # Patches that may have been generated by scripts. # (These aren't generally useful to commit directly; if anything, they should be applied.) scripts/*.patch - /fcs/FSharp.Compiler.Service/illex.fs /fcs/FSharp.Compiler.Service/ilpars.fs /fcs/FSharp.Compiler.Service/ilpars.fsi @@ -234,7 +233,6 @@ lib/netcore/fsc/bin/ msbuild.binlog /fcs/FSharp.Compiler.Service.netstandard/*.fs /fcs/FSharp.Compiler.Service.netstandard/*.fsi - .ionide .vscode **/.DS_Store diff --git a/FSharpBuild.Directory.Build.targets b/FSharpBuild.Directory.Build.targets index 7548cef7ac..da6302ef03 100644 --- a/FSharpBuild.Directory.Build.targets +++ b/FSharpBuild.Directory.Build.targets @@ -1,4 +1,5 @@ + @@ -8,11 +9,12 @@ + BeforeTargets="AssignTargetPaths;BeforeBuild;GenerateFSharpTextResources"> <__TargetFilePath>@(NoneSubstituteText->'$(IntermediateOutputPath)%(Filename)%(Extension)') <__TargetFileName>@(NoneSubstituteText->'%(Filename)%(Extension)') + <__TargetLink>@(NoneSubstituteText->'%(Link)') <_ReplacementText>$([System.IO.File]::ReadAllText('%(NoneSubstituteText.FullPath)')) <_ReplacementText Condition="'%(NoneSubstituteText.Pattern1)' != ''">$(_ReplacementText.Replace('%(NoneSubstituteText.Pattern1)', '%(NoneSubstituteText.Replacement1)')) @@ -20,16 +22,19 @@ <_CopyToOutputDirectory Condition="'%(NoneSubstituteText.CopyToOutputDirectory)' != ''">%(NoneSubstituteText.CopyToOutputDirectory) <_CopyToOutputDirectory Condition="'%(NoneSubstituteText.CopyToOutputDirectory)' == ''">Never + + <_IncludeInVsix>false + <_IncludeInVsix Condition="'%(NoneSubstituteText.IncludeInVsix)' == 'true'">true - - + + @@ -61,4 +66,27 @@ + + + + + + + + + + + + + + + + + + + diff --git a/FSharpTests.Directory.Build.props b/FSharpTests.Directory.Build.props index 8a7a832a43..8a4730f8dd 100644 --- a/FSharpTests.Directory.Build.props +++ b/FSharpTests.Directory.Build.props @@ -22,18 +22,18 @@ $([System.IO.Path]::GetDirectoryName('$(DOTNET_HOST_PATH)')) dotnet.exe dotnet - $(MSBuildThisFileDirectory)artifacts\bin\fsc\$(Configuration)\netcoreapp2.1\fsc.exe + $(MSBuildThisFileDirectory)artifacts\bin\fsc\$(Configuration)\netcoreapp3.0\fsc.exe $([System.IO.Path]::GetDirectoryName('$(DOTNET_HOST_PATH)')) dotnet.exe dotnet - $(MSBuildThisFileDirectory)artifacts\bin\fsi\$(Configuration)\netcoreapp2.1\fsi.exe + $(MSBuildThisFileDirectory)artifacts\bin\fsi\$(Configuration)\netcoreapp3.0\fsi.exe <_FSharpBuildTargetFramework Condition="'$(MSBuildRuntimeType)'!='Core'">net472 - <_FSharpBuildTargetFramework Condition="'$(MSBuildRuntimeType)'=='Core'">netcoreapp2.1 + <_FSharpBuildTargetFramework Condition="'$(MSBuildRuntimeType)'=='Core'">netcoreapp3.0 <_FSharpBuildBinPath>$(MSBuildThisFileDirectory)artifacts\bin\fsc\$(Configuration)\$(_FSharpBuildTargetFramework) $(_FSharpBuildBinPath)\FSharp.Build.dll diff --git a/INTERNAL.md b/INTERNAL.md index b62e757de6..15550dcedc 100644 --- a/INTERNAL.md +++ b/INTERNAL.md @@ -43,7 +43,7 @@ near the bottom of the build under the title 'Insert into VS'. Examine the log bottom you'll see a line that looks like `Created request #xxxxxx at https://...`. To see all insertions created this way (possibly including for other internal teams), check -[here](https://dev.azure.com/devdiv/DevDiv/_git/VS/pullrequests?creatorId=122d5278-3e55-4868-9d40-1e28c2515fc4&_a=active). +[here](https://dev.azure.com/devdiv/DevDiv/_git/VS/pullrequests?createdBy=122d5278-3e55-4868-9d40-1e28c2515fc4&_a=active). ## Less interesting links diff --git a/NuGet.config b/NuGet.config index ef069a5bdf..26edd0d796 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,6 +7,7 @@ + diff --git a/eng/Build.ps1 b/eng/Build.ps1 index f9d7e1b5ac..a7825b4d4f 100644 --- a/eng/Build.ps1 +++ b/eng/Build.ps1 @@ -50,6 +50,7 @@ param ( [switch]$testCompiler, [switch]$testFSharpCore, [switch]$testFSharpQA, + [switch]$testScripting, [switch]$testVs, [switch]$testAll, [string]$officialSkipTests = "false", @@ -59,6 +60,8 @@ param ( Set-StrictMode -version 2.0 $ErrorActionPreference = "Stop" +$BuildCategory = "" +$BuildMessage = "" function Print-Usage() { Write-Host "Common settings:" @@ -86,6 +89,7 @@ function Print-Usage() { Write-Host " -testCoreClr Run tests against CoreCLR" Write-Host " -testFSharpCore Run FSharpCore unit tests" Write-Host " -testFSharpQA Run F# Cambridge tests" + Write-Host " -testScripting Run Scripting tests" Write-Host " -testVs Run F# editor unit tests" Write-Host " -officialSkipTests Set to 'true' to skip running tests" Write-Host "" @@ -148,11 +152,11 @@ function Process-Arguments() { function Update-Arguments() { if ($script:noVisualStudio) { - $script:bootstrapTfm = "netcoreapp2.1" + $script:bootstrapTfm = "netcoreapp3.0" $script:msbuildEngine = "dotnet" } - if ($bootstrapTfm -eq "netcoreapp2.1") { + if ($bootstrapTfm -eq "netcoreapp3.0") { if (-Not (Test-Path "$ArtifactsDir\Bootstrap\fsc\fsc.runtimeconfig.json")) { $script:bootstrap = $True } @@ -216,7 +220,7 @@ function UpdatePath() { TestAndAddToPath $subdir # add windows SDK dir for ildasm.exe - foreach ($child in Get-ChildItem "${env:ProgramFiles(x86)}\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.?.? Tools") { + foreach ($child in Get-ChildItem "${env:ProgramFiles(x86)}\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.* Tools") { $subdir = $child } TestAndAddToPath $subdir @@ -256,7 +260,7 @@ function TestUsingNUnit([string] $testProject, [string] $targetFramework) { } function BuildCompiler() { - if ($bootstrapTfm -eq "netcoreapp2.1") { + if ($bootstrapTfm -eq "netcoreapp3.0") { $dotnetPath = InitializeDotNetCli $dotnetExe = Join-Path $dotnetPath "dotnet.exe" $fscProject = "$RepoRoot\src\fsharp\fsc\fsc.fsproj" @@ -265,10 +269,10 @@ function BuildCompiler() { $argNoRestore = if ($norestore) { " --no-restore" } else { "" } $argNoIncremental = if ($rebuild) { " --no-incremental" } else { "" } - $args = "build $fscProject -c $configuration -v $verbosity -f netcoreapp2.1" + $argNoRestore + $argNoIncremental + $args = "build $fscProject -c $configuration -v $verbosity -f netcoreapp3.0" + $argNoRestore + $argNoIncremental Exec-Console $dotnetExe $args - $args = "build $fsiProject -c $configuration -v $verbosity -f netcoreapp2.1" + $argNoRestore + $argNoIncremental + $args = "build $fsiProject -c $configuration -v $verbosity -f netcoreapp3.0" + $argNoRestore + $argNoIncremental Exec-Console $dotnetExe $args } } @@ -298,6 +302,9 @@ function EnablePreviewSdks() { } try { + $script:BuildCategory = "Build" + $script:BuildMessage = "Failure preparing build" + Process-Arguments . (Join-Path $PSScriptRoot "build-utils.ps1") @@ -309,17 +316,14 @@ try { if ($ci) { Prepare-TempDir EnablePreviewSdks - - # enable us to build netcoreapp2.1 product binaries - $global:_DotNetInstallDir = Join-Path $RepoRoot ".dotnet" - InstallDotNetSdk $global:_DotNetInstallDir $GlobalJson.tools.dotnet - InstallDotNetSdk $global:_DotNetInstallDir "2.1.503" } if ($bootstrap) { + $script:BuildMessage = "Failure building bootstrap compiler" $bootstrapDir = Make-BootstrapBuild } + $script:BuildMessage = "Failure building product" if ($restore -or $build -or $rebuild -or $pack -or $sign -or $publish) { if ($noVisualStudio) { BuildCompiler @@ -332,12 +336,13 @@ try { VerifyAssemblyVersionsAndSymbols } + $script:BuildCategory = "Test" + $script:BuildMessage = "Failure running tests" $desktopTargetFramework = "net472" $coreclrTargetFramework = "netcoreapp3.0" if ($testDesktop -and -not $noVisualStudio) { TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj" -targetFramework $desktopTargetFramework - TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Compiler.LanguageServer.UnitTests\FSharp.Compiler.LanguageServer.UnitTests.fsproj" -targetFramework $desktopTargetFramework TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Compiler.Private.Scripting.UnitTests\FSharp.Compiler.Private.Scripting.UnitTests.fsproj" -targetFramework $desktopTargetFramework TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj" -targetFramework $desktopTargetFramework TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj" -targetFramework $desktopTargetFramework @@ -346,7 +351,6 @@ try { if ($testCoreClr) { TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Compiler.UnitTests\FSharp.Compiler.UnitTests.fsproj" -targetFramework $coreclrTargetFramework - TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Compiler.LanguageServer.UnitTests\FSharp.Compiler.LanguageServer.UnitTests.fsproj" -targetFramework $coreclrTargetFramework TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Compiler.Private.Scripting.UnitTests\FSharp.Compiler.Private.Scripting.UnitTests.fsproj" -targetFramework $coreclrTargetFramework TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Build.UnitTests\FSharp.Build.UnitTests.fsproj" -targetFramework $coreclrTargetFramework TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Core.UnitTests\FSharp.Core.UnitTests.fsproj" -targetFramework $coreclrTargetFramework @@ -394,6 +398,13 @@ try { TestUsingNUnit -testProject "$RepoRoot\tests\fsharp\FSharpSuite.Tests.fsproj" -targetFramework $coreclrTargetFramework } + if ($testScripting) { + if (-not $noVisualStudio) { + TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Compiler.Private.Scripting.UnitTests\FSharp.Compiler.Private.Scripting.UnitTests.fsproj" -targetFramework $desktopTargetFramework + } + TestUsingNUnit -testProject "$RepoRoot\tests\FSharp.Compiler.Private.Scripting.UnitTests\FSharp.Compiler.Private.Scripting.UnitTests.fsproj" -targetFramework $coreclrTargetFramework + } + if ($testVs -and -not $noVisualStudio) { TestUsingNUnit -testProject "$RepoRoot\vsintegration\tests\GetTypesVS.UnitTests\GetTypesVS.UnitTests.fsproj" -targetFramework $desktopTargetFramework TestUsingNUnit -testProject "$RepoRoot\vsintegration\tests\UnitTests\VisualFSharp.UnitTests.fsproj" -targetFramework $desktopTargetFramework @@ -405,6 +416,7 @@ catch { Write-Host $_ Write-Host $_.Exception Write-Host $_.ScriptStackTrace + Write-PipelineTelemetryError -Category $script:BuildCategory -Message $script:BuildMessage ExitWithExitCode 1 } finally { diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index c39e4f27f1..c98fbfbee4 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,9 +3,9 @@ - + https://github.com/dotnet/arcade - b902fd6b6948e689a5128fa6d94dc7de13e6af84 + d0833c8e5e58cfc507ce3c8da364e55931190263 diff --git a/eng/Versions.props b/eng/Versions.props index f923de9fde..1ee1522072 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,7 +24,7 @@ 10.7 - $(FSPackageMajorVersion).0 + $(FSPackageMajorVersion).1 $(FSPackageVersion) $(FSPackageVersion).0 @@ -68,13 +68,14 @@ 1.5.0 4.3.0 + 4.3.0 4.0.0 4.3.0 4.3.0 4.3.0 4.3.0 4.3.0 - 4.5.2 + 4.5.3 4.3.0 4.3.0 4.3.0 @@ -88,10 +89,13 @@ 4.3.0 4.3.0 4.3.0 + 4.6.0 4.3.0 + 4.11.0 4.3.0 4.3.0 4.5.0 + 4.5.0 $(RoslynVersion) $(RoslynVersion) @@ -102,7 +106,7 @@ 2.0.17 $(RoslynVersion) - 16.0.461 + 16.4 $(MicrosoftBuildOverallPackagesVersion) $(MicrosoftBuildOverallPackagesVersion) $(MicrosoftBuildOverallPackagesVersion) @@ -118,7 +122,6 @@ 16.0.28226-alpha 16.1.28916.169 16.1.28917.181 - 16.1.3121 16.1.89 16.1.89 16.1.89 diff --git a/eng/build-utils.ps1 b/eng/build-utils.ps1 index 000319af33..316a36062c 100644 --- a/eng/build-utils.ps1 +++ b/eng/build-utils.ps1 @@ -238,9 +238,9 @@ function Make-BootstrapBuild() { # prepare FsLex and Fsyacc and AssemblyCheck Run-MSBuild "$RepoRoot\src\buildtools\buildtools.proj" "/restore /t:Publish /p:PublishWindowsPdb=false" -logFileName "BuildTools" -configuration $bootstrapConfiguration - Copy-Item "$ArtifactsDir\bin\fslex\$bootstrapConfiguration\netcoreapp2.1\publish" -Destination "$dir\fslex" -Force -Recurse - Copy-Item "$ArtifactsDir\bin\fsyacc\$bootstrapConfiguration\netcoreapp2.1\publish" -Destination "$dir\fsyacc" -Force -Recurse - Copy-Item "$ArtifactsDir\bin\AssemblyCheck\$bootstrapConfiguration\netcoreapp2.1\publish" -Destination "$dir\AssemblyCheck" -Force -Recurse + Copy-Item "$ArtifactsDir\bin\fslex\$bootstrapConfiguration\netcoreapp3.0\publish" -Destination "$dir\fslex" -Force -Recurse + Copy-Item "$ArtifactsDir\bin\fsyacc\$bootstrapConfiguration\netcoreapp3.0\publish" -Destination "$dir\fsyacc" -Force -Recurse + Copy-Item "$ArtifactsDir\bin\AssemblyCheck\$bootstrapConfiguration\netcoreapp3.0\publish" -Destination "$dir\AssemblyCheck" -Force -Recurse # prepare compiler $projectPath = "$RepoRoot\proto.proj" diff --git a/eng/build.sh b/eng/build.sh index e4f3b056ea..994263ff7d 100755 --- a/eng/build.sh +++ b/eng/build.sh @@ -66,6 +66,9 @@ properties="" docker=false args="" +BuildCategory="" +BuildMessage="" + if [[ $# = 0 ]] then usage @@ -150,6 +153,8 @@ done . "$scriptroot/common/tools.sh" function TestUsingNUnit() { + BuildCategory="Test" + BuildMessage="Error running tests" testproject="" targetframework="" while [[ $# > 0 ]]; do @@ -180,14 +185,12 @@ function TestUsingNUnit() { projectname="${projectname%.*}" testlogpath="$artifacts_dir/TestResults/$configuration/${projectname}_$targetframework.xml" args="test \"$testproject\" --no-restore --no-build -c $configuration -f $targetframework --test-adapter-path . --logger \"nunit;LogFilePath=$testlogpath\"" - "$DOTNET_INSTALL_DIR/dotnet" $args || { - local exit_code=$? - Write-PipelineTelemetryError -category 'Test' "dotnet test failed for $testproject:$targetframework (exit code $exit_code)." - ExitWithExitCode $exit_code - } + "$DOTNET_INSTALL_DIR/dotnet" $args || exit $? } function BuildSolution { + BuildCategory="Build" + BuildMessage="Error preparing build" local solution="FSharp.sln" echo "$solution:" @@ -229,33 +232,28 @@ function BuildSolution { rm -fr $bootstrap_dir fi if [ ! -f "$bootstrap_dir/fslex.dll" ]; then + BuildMessage="Error building tools" MSBuild "$repo_root/src/buildtools/buildtools.proj" \ /restore \ /p:Configuration=$bootstrap_config \ - /t:Publish || { - local exit_code=$? - Write-PipelineTelemetryError -category 'Build' "Error building buildtools (exit code '$exit_code')." - ExitWithExitCode $exit_code - } + /t:Publish mkdir -p "$bootstrap_dir" - cp -pr $artifacts_dir/bin/fslex/$bootstrap_config/netcoreapp2.1/publish $bootstrap_dir/fslex - cp -pr $artifacts_dir/bin/fsyacc/$bootstrap_config/netcoreapp2.1/publish $bootstrap_dir/fsyacc + cp -pr $artifacts_dir/bin/fslex/$bootstrap_config/netcoreapp3.0/publish $bootstrap_dir/fslex + cp -pr $artifacts_dir/bin/fsyacc/$bootstrap_config/netcoreapp3.0/publish $bootstrap_dir/fsyacc fi if [ ! -f "$bootstrap_dir/fsc.exe" ]; then + BuildMessage="Error building bootstrap" MSBuild "$repo_root/proto.proj" \ /restore \ /p:Configuration=$bootstrap_config \ - /t:Publish || { - local exit_code=$? - Write-PipelineTelemetryError -category 'Build' "Error building bootstrap compiler (exit code '$exit_code')." - ExitWithExitCode $exit_code - } + /t:Publish - cp -pr $artifacts_dir/bin/fsc/$bootstrap_config/netcoreapp2.1/publish $bootstrap_dir/fsc + cp -pr $artifacts_dir/bin/fsc/$bootstrap_config/netcoreapp3.0/publish $bootstrap_dir/fsc fi # do real build + BuildMessage="Error building solution" MSBuild $toolset_build_proj \ $bl \ /v:$verbosity \ @@ -271,30 +269,30 @@ function BuildSolution { /p:ContinuousIntegrationBuild=$ci \ /p:QuietRestore=$quiet_restore \ /p:QuietRestoreBinaryLog="$binary_log" \ - $properties || { - local exit_code=$? - Write-PipelineTelemetryError -category 'Build' "Error building solution (exit code '$exit_code')." - ExitWithExitCode $exit_code - } + $properties } -InitializeDotNetCli $restore +function TrapAndReportError { + local exit_code=$? + if [[ ! $exit_code == 0 ]]; then + Write-PipelineTelemetryError -category $BuildCategory "$BuildMessage (exit code '$exit_code')." + ExitWithExitCode $exit_code + fi +} -# enable us to build netcoreapp2.1 binaries -if [[ "$source_build" != true ]]; then - InstallDotNetSdk $_InitializeDotNetCli 2.1.503 -fi +# allow early termination to report the appropriate build failure reason +trap TrapAndReportError EXIT + +InitializeDotNetCli $restore BuildSolution if [[ "$test_core_clr" == true ]]; then coreclrtestframework=netcoreapp3.0 TestUsingNUnit --testproject "$repo_root/tests/FSharp.Compiler.UnitTests/FSharp.Compiler.UnitTests.fsproj" --targetframework $coreclrtestframework - TestUsingNUnit --testproject "$repo_root/tests/FSharp.Compiler.LanguageServer.UnitTests/FSharp.Compiler.LanguageServer.UnitTests.fsproj" --targetframework $coreclrtestframework TestUsingNUnit --testproject "$repo_root/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharp.Compiler.Private.Scripting.UnitTests.fsproj" --targetframework $coreclrtestframework TestUsingNUnit --testproject "$repo_root/tests/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj" --targetframework $coreclrtestframework TestUsingNUnit --testproject "$repo_root/tests/FSharp.Core.UnitTests/FSharp.Core.UnitTests.fsproj" --targetframework $coreclrtestframework fi ExitWithExitCode 0 - diff --git a/eng/common/CIBuild.cmd b/eng/common/CIBuild.cmd deleted file mode 100644 index 56c2f25ac2..0000000000 --- a/eng/common/CIBuild.cmd +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -restore -build -test -sign -pack -publish -ci %*" \ No newline at end of file diff --git a/eng/common/CheckSymbols.ps1 b/eng/common/CheckSymbols.ps1 deleted file mode 100644 index 5442eff386..0000000000 --- a/eng/common/CheckSymbols.ps1 +++ /dev/null @@ -1,159 +0,0 @@ -param( - [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where NuGet packages to be checked are stored - [Parameter(Mandatory=$true)][string] $ExtractPath, # Full path to directory where the packages will be extracted during validation - [Parameter(Mandatory=$true)][string] $SymbolToolPath # Full path to directory where dotnet symbol-tool was installed -) - -Add-Type -AssemblyName System.IO.Compression.FileSystem -. $PSScriptRoot\pipeline-logging-functions.ps1 - -function FirstMatchingSymbolDescriptionOrDefault { - param( - [string] $FullPath, # Full path to the module that has to be checked - [string] $TargetServerParameter, # Parameter to pass to `Symbol Tool` indicating the server to lookup for symbols - [string] $SymbolsPath - ) - - $FileName = [System.IO.Path]::GetFileName($FullPath) - $Extension = [System.IO.Path]::GetExtension($FullPath) - - # Those below are potential symbol files that the `dotnet symbol` might - # return. Which one will be returned depend on the type of file we are - # checking and which type of file was uploaded. - - # The file itself is returned - $SymbolPath = $SymbolsPath + '\' + $FileName - - # PDB file for the module - $PdbPath = $SymbolPath.Replace($Extension, '.pdb') - - # PDB file for R2R module (created by crossgen) - $NGenPdb = $SymbolPath.Replace($Extension, '.ni.pdb') - - # DBG file for a .so library - $SODbg = $SymbolPath.Replace($Extension, '.so.dbg') - - # DWARF file for a .dylib - $DylibDwarf = $SymbolPath.Replace($Extension, '.dylib.dwarf') - - .\dotnet-symbol.exe --symbols --modules --windows-pdbs $TargetServerParameter $FullPath -o $SymbolsPath | Out-Null - - if (Test-Path $PdbPath) { - return 'PDB' - } - elseif (Test-Path $NGenPdb) { - return 'NGen PDB' - } - elseif (Test-Path $SODbg) { - return 'DBG for SO' - } - elseif (Test-Path $DylibDwarf) { - return 'Dwarf for Dylib' - } - elseif (Test-Path $SymbolPath) { - return 'Module' - } - else { - return $null - } -} - -function CountMissingSymbols { - param( - [string] $PackagePath # Path to a NuGet package - ) - - # Ensure input file exist - if (!(Test-Path $PackagePath)) { - throw "Input file does not exist: $PackagePath" - } - - # Extensions for which we'll look for symbols - $RelevantExtensions = @('.dll', '.exe', '.so', '.dylib') - - # How many files are missing symbol information - $MissingSymbols = 0 - - $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) - $PackageGuid = New-Guid - $ExtractPath = Join-Path -Path $ExtractPath -ChildPath $PackageGuid - $SymbolsPath = Join-Path -Path $ExtractPath -ChildPath 'Symbols' - - [System.IO.Compression.ZipFile]::ExtractToDirectory($PackagePath, $ExtractPath) - - # Makes easier to reference `symbol tool` - Push-Location $SymbolToolPath - - Get-ChildItem -Recurse $ExtractPath | - Where-Object {$RelevantExtensions -contains $_.Extension} | - ForEach-Object { - if ($_.FullName -Match '\\ref\\') { - Write-Host "`t Ignoring reference assembly file" $_.FullName - return - } - - $SymbolsOnMSDL = FirstMatchingSymbolDescriptionOrDefault -FullPath $_.FullName -TargetServerParameter '--microsoft-symbol-server' -SymbolsPath $SymbolsPath - $SymbolsOnSymWeb = FirstMatchingSymbolDescriptionOrDefault -FullPath $_.FullName -TargetServerParameter '--internal-server' -SymbolsPath $SymbolsPath - - Write-Host -NoNewLine "`t Checking file" $_.FullName "... " - - if ($SymbolsOnMSDL -ne $null -and $SymbolsOnSymWeb -ne $null) { - Write-Host "Symbols found on MSDL (${$SymbolsOnMSDL}) and SymWeb (${$SymbolsOnSymWeb})" - } - else { - $MissingSymbols++ - - if ($SymbolsOnMSDL -eq $null -and $SymbolsOnSymWeb -eq $null) { - Write-Host 'No symbols found on MSDL or SymWeb!' - } - else { - if ($SymbolsOnMSDL -eq $null) { - Write-Host 'No symbols found on MSDL!' - } - else { - Write-Host 'No symbols found on SymWeb!' - } - } - } - } - - Pop-Location - - return $MissingSymbols -} - -function CheckSymbolsAvailable { - if (Test-Path $ExtractPath) { - Remove-Item $ExtractPath -Force -Recurse -ErrorAction SilentlyContinue - } - - Get-ChildItem "$InputPath\*.nupkg" | - ForEach-Object { - $FileName = $_.Name - - # These packages from Arcade-Services include some native libraries that - # our current symbol uploader can't handle. Below is a workaround until - # we get issue: https://github.com/dotnet/arcade/issues/2457 sorted. - if ($FileName -Match 'Microsoft\.DotNet\.Darc\.') { - Write-Host "Ignoring Arcade-services file: $FileName" - Write-Host - return - } - elseif ($FileName -Match 'Microsoft\.DotNet\.Maestro\.Tasks\.') { - Write-Host "Ignoring Arcade-services file: $FileName" - Write-Host - return - } - - Write-Host "Validating $FileName " - $Status = CountMissingSymbols "$InputPath\$FileName" - - if ($Status -ne 0) { - Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "Missing symbols for $Status modules in the package $FileName" - } - - Write-Host - } -} - -CheckSymbolsAvailable diff --git a/eng/common/PSScriptAnalyzerSettings.psd1 b/eng/common/PSScriptAnalyzerSettings.psd1 deleted file mode 100644 index 4c1ea7c98e..0000000000 --- a/eng/common/PSScriptAnalyzerSettings.psd1 +++ /dev/null @@ -1,11 +0,0 @@ -@{ - IncludeRules=@('PSAvoidUsingCmdletAliases', - 'PSAvoidUsingWMICmdlet', - 'PSAvoidUsingPositionalParameters', - 'PSAvoidUsingInvokeExpression', - 'PSUseDeclaredVarsMoreThanAssignments', - 'PSUseCmdletCorrectly', - 'PSStandardDSCFunctionsInResource', - 'PSUseIdenticalMandatoryParametersForDSC', - 'PSUseIdenticalParametersForDSC') -} \ No newline at end of file diff --git a/eng/common/PublishToPackageFeed.proj b/eng/common/PublishToPackageFeed.proj deleted file mode 100644 index a1b1333723..0000000000 --- a/eng/common/PublishToPackageFeed.proj +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - netcoreapp2.1 - - - - - - - - - - - - - - - - - - - - - - - - - https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json - https://dotnetfeed.blob.core.windows.net/arcade-validation/index.json - https://dotnetfeed.blob.core.windows.net/aspnet-aspnetcore/index.json - https://dotnetfeed.blob.core.windows.net/aspnet-aspnetcore-tooling/index.json - https://dotnetfeed.blob.core.windows.net/aspnet-entityframeworkcore/index.json - https://dotnetfeed.blob.core.windows.net/aspnet-extensions/index.json - https://dotnetfeed.blob.core.windows.net/dotnet-coreclr/index.json - https://dotnetfeed.blob.core.windows.net/dotnet-sdk/index.json - https://dotnetfeed.blob.core.windows.net/dotnet-tools-internal/index.json - https://dotnetfeed.blob.core.windows.net/dotnet-toolset/index.json - https://dotnetfeed.blob.core.windows.net/dotnet-windowsdesktop/index.json - https://dotnetfeed.blob.core.windows.net/nuget-nugetclient/index.json - https://dotnetfeed.blob.core.windows.net/aspnet-entityframework6/index.json - https://dotnetfeed.blob.core.windows.net/aspnet-blazor/index.json - - - - - - - - - - - - diff --git a/eng/common/PublishToSymbolServers.proj b/eng/common/PublishToSymbolServers.proj deleted file mode 100644 index 311e2bbe0f..0000000000 --- a/eng/common/PublishToSymbolServers.proj +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - netcoreapp2.1 - - - - - - - - - - - - - - - - 3650 - true - true - true - false - - - - - - - - - - - - - - - - - diff --git a/eng/common/README.md b/eng/common/README.md deleted file mode 100644 index ff49c37152..0000000000 --- a/eng/common/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Don't touch this folder - - uuuuuuuuuuuuuuuuuuuu - u" uuuuuuuuuuuuuuuuuu "u - u" u$$$$$$$$$$$$$$$$$$$$u "u - u" u$$$$$$$$$$$$$$$$$$$$$$$$u "u - u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u - u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u - u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u - $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ - $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ - $ $$$" ... "$... ...$" ... "$$$ ... "$$$ $ - $ $$$u `"$$$$$$$ $$$ $$$$$ $$ $$$ $$$ $ - $ $$$$$$uu "$$$$ $$$ $$$$$ $$ """ u$$$ $ - $ $$$""$$$ $$$$ $$$u "$$$" u$$ $$$$$$$$ $ - $ $$$$....,$$$$$..$$$$$....,$$$$..$$$$$$$$ $ - $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ - "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u" - "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u" - "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u" - "u "$$$$$$$$$$$$$$$$$$$$$$$$" u" - "u "$$$$$$$$$$$$$$$$$$$$" u" - "u """""""""""""""""" u" - """""""""""""""""""" - -!!! Changes made in this directory are subject to being overwritten by automation !!! - -The files in this directory are shared by all Arcade repos and managed by automation. If you need to make changes to these files, open an issue or submit a pull request to https://github.com/dotnet/arcade first. diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1 deleted file mode 100644 index a5a1e711d7..0000000000 --- a/eng/common/SetupNugetSources.ps1 +++ /dev/null @@ -1,141 +0,0 @@ -# This file is a temporary workaround for internal builds to be able to restore from private AzDO feeds. -# This file should be removed as part of this issue: https://github.com/dotnet/arcade/issues/4080 -# -# What the script does is iterate over all package sources in the pointed NuGet.config and add a credential entry -# under for each Maestro managed private feed. Two additional credential -# entries are also added for the two private static internal feeds: dotnet3-internal and dotnet3-internal-transport. -# -# This script needs to be called in every job that will restore packages and which the base repo has -# private AzDO feeds in the NuGet.config. -# -# See example YAML call for this script below. Note the use of the variable `$(dn-bot-dnceng-artifact-feeds-rw)` -# from the AzureDevOps-Artifact-Feeds-Pats variable group. -# -# - task: PowerShell@2 -# displayName: Setup Private Feeds Credentials -# condition: eq(variables['Agent.OS'], 'Windows_NT') -# inputs: -# filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1 -# arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token -# env: -# Token: $(dn-bot-dnceng-artifact-feeds-rw) - -[CmdletBinding()] -param ( - [Parameter(Mandatory = $true)][string]$ConfigFile, - [Parameter(Mandatory = $true)][string]$Password -) - -$ErrorActionPreference = "Stop" -Set-StrictMode -Version 2.0 -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 - -. $PSScriptRoot\tools.ps1 - -# Add source entry to PackageSources -function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $Password) { - $packageSource = $sources.SelectSingleNode("add[@key='$SourceName']") - - if ($packageSource -eq $null) - { - $packageSource = $doc.CreateElement("add") - $packageSource.SetAttribute("key", $SourceName) - $packageSource.SetAttribute("value", $SourceEndPoint) - $sources.AppendChild($packageSource) | Out-Null - } - else { - Write-Host "Package source $SourceName already present." - } - - AddCredential -Creds $creds -Source $SourceName -Username $Username -Password $Password -} - -# Add a credential node for the specified source -function AddCredential($creds, $source, $username, $password) { - # Looks for credential configuration for the given SourceName. Create it if none is found. - $sourceElement = $creds.SelectSingleNode($Source) - if ($sourceElement -eq $null) - { - $sourceElement = $doc.CreateElement($Source) - $creds.AppendChild($sourceElement) | Out-Null - } - - # Add the node to the credential if none is found. - $usernameElement = $sourceElement.SelectSingleNode("add[@key='Username']") - if ($usernameElement -eq $null) - { - $usernameElement = $doc.CreateElement("add") - $usernameElement.SetAttribute("key", "Username") - $sourceElement.AppendChild($usernameElement) | Out-Null - } - $usernameElement.SetAttribute("value", $Username) - - # Add the to the credential if none is found. - # Add it as a clear text because there is no support for encrypted ones in non-windows .Net SDKs. - # -> https://github.com/NuGet/Home/issues/5526 - $passwordElement = $sourceElement.SelectSingleNode("add[@key='ClearTextPassword']") - if ($passwordElement -eq $null) - { - $passwordElement = $doc.CreateElement("add") - $passwordElement.SetAttribute("key", "ClearTextPassword") - $sourceElement.AppendChild($passwordElement) | Out-Null - } - $passwordElement.SetAttribute("value", $Password) -} - -function InsertMaestroPrivateFeedCredentials($Sources, $Creds, $Password) { - $maestroPrivateSources = $Sources.SelectNodes("add[contains(@key,'darc-int')]") - - Write-Host "Inserting credentials for $($maestroPrivateSources.Count) Maestro's private feeds." - - ForEach ($PackageSource in $maestroPrivateSources) { - Write-Host "`tInserting credential for Maestro's feed:" $PackageSource.Key - AddCredential -Creds $creds -Source $PackageSource.Key -Username $Username -Password $Password - } -} - -if (!(Test-Path $ConfigFile -PathType Leaf)) { - Write-PipelineTelemetryError -Category 'Build' -Message "Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. Couldn't find the NuGet config file: $ConfigFile" - ExitWithExitCode 1 -} - -if (!$Password) { - Write-PipelineTelemetryError -Category 'Build' -Message 'Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. Please supply a valid PAT' - ExitWithExitCode 1 -} - -# Load NuGet.config -$doc = New-Object System.Xml.XmlDocument -$filename = (Get-Item $ConfigFile).FullName -$doc.Load($filename) - -# Get reference to or create one if none exist already -$sources = $doc.DocumentElement.SelectSingleNode("packageSources") -if ($sources -eq $null) { - $sources = $doc.CreateElement("packageSources") - $doc.DocumentElement.AppendChild($sources) | Out-Null -} - -# Looks for a node. Create it if none is found. -$creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials") -if ($creds -eq $null) { - $creds = $doc.CreateElement("packageSourceCredentials") - $doc.DocumentElement.AppendChild($creds) | Out-Null -} - -# Insert credential nodes for Maestro's private feeds -InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Password $Password - -$dotnet3Source = $sources.SelectSingleNode("add[@key='dotnet3']") -if ($dotnet3Source -ne $null) { - AddPackageSource -Sources $sources -SourceName "dotnet3-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3-internal/nuget/v2" -Creds $creds -Username "dn-bot" -Password $Password - AddPackageSource -Sources $sources -SourceName "dotnet3-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3-internal-transport/nuget/v2" -Creds $creds -Username "dn-bot" -Password $Password -} - -$dotnet31Source = $sources.SelectSingleNode("add[@key='dotnet3.1']") -if ($dotnet31Source -ne $null) { - AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v2" -Creds $creds -Username "dn-bot" -Password $Password - AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username "dn-bot" -Password $Password -} - -$doc.Save($filename) diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh deleted file mode 100644 index 7d6fef27fe..0000000000 --- a/eng/common/SetupNugetSources.sh +++ /dev/null @@ -1,149 +0,0 @@ -#!/usr/bin/env bash - -# This file is a temporary workaround for internal builds to be able to restore from private AzDO feeds. -# This file should be removed as part of this issue: https://github.com/dotnet/arcade/issues/4080 -# -# What the script does is iterate over all package sources in the pointed NuGet.config and add a credential entry -# under for each Maestro's managed private feed. Two additional credential -# entries are also added for the two private static internal feeds: dotnet3-internal and dotnet3-internal-transport. -# -# This script needs to be called in every job that will restore packages and which the base repo has -# private AzDO feeds in the NuGet.config. -# -# See example YAML call for this script below. Note the use of the variable `$(dn-bot-dnceng-artifact-feeds-rw)` -# from the AzureDevOps-Artifact-Feeds-Pats variable group. -# -# - task: Bash@3 -# displayName: Setup Private Feeds Credentials -# inputs: -# filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh -# arguments: $(Build.SourcesDirectory)/NuGet.config $Token -# condition: ne(variables['Agent.OS'], 'Windows_NT') -# env: -# Token: $(dn-bot-dnceng-artifact-feeds-rw) - -ConfigFile=$1 -CredToken=$2 -NL='\n' -TB=' ' - -source="${BASH_SOURCE[0]}" - -# resolve $source until the file is no longer a symlink -while [[ -h "$source" ]]; do - scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - source="$(readlink "$source")" - # if $source was a relative symlink, we need to resolve it relative to the path where the - # symlink file was located - [[ $source != /* ]] && source="$scriptroot/$source" -done -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -. "$scriptroot/tools.sh" - -if [ ! -f "$ConfigFile" ]; then - Write-PipelineTelemetryError -Category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. Couldn't find the NuGet config file: $ConfigFile" - ExitWithExitCode 1 -fi - -if [ -z "$CredToken" ]; then - Write-PipelineTelemetryError -category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. Please supply a valid PAT" - ExitWithExitCode 1 -fi - -if [[ `uname -s` == "Darwin" ]]; then - NL=$'\\\n' - TB='' -fi - -# Ensure there is a ... section. -grep -i "" $ConfigFile -if [ "$?" != "0" ]; then - echo "Adding ... section." - ConfigNodeHeader="" - PackageSourcesTemplate="${TB}${NL}${TB}" - - sed -i.bak "s|$ConfigNodeHeader|$ConfigNodeHeader${NL}$PackageSourcesTemplate|" NuGet.config -fi - -# Ensure there is a ... section. -grep -i "" $ConfigFile -if [ "$?" != "0" ]; then - echo "Adding ... section." - - PackageSourcesNodeFooter="" - PackageSourceCredentialsTemplate="${TB}${NL}${TB}" - - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourcesNodeFooter${NL}$PackageSourceCredentialsTemplate|" NuGet.config -fi - -PackageSources=() - -# Ensure dotnet3-internal and dotnet3-internal-transport are in the packageSources if the public dotnet3 feeds are present -grep -i "" $ConfigFile - if [ "$?" != "0" ]; then - echo "Adding dotnet3-internal to the packageSources." - PackageSourcesNodeFooter="" - PackageSourceTemplate="${TB}" - - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile - fi - PackageSources+=('dotnet3-internal') - - grep -i "" - - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile - fi - PackageSources+=('dotnet3-internal-transport') -fi - -# Ensure dotnet3.1-internal and dotnet3.1-internal-transport are in the packageSources if the public dotnet3.1 feeds are present -grep -i "" - - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile - fi - PackageSources+=('dotnet3.1-internal') - - grep -i "" $ConfigFile - if [ "$?" != "0" ]; then - echo "Adding dotnet3.1-internal-transport to the packageSources." - PackageSourcesNodeFooter="" - PackageSourceTemplate="${TB}" - - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile - fi - PackageSources+=('dotnet3.1-internal-transport') -fi - -# I want things split line by line -PrevIFS=$IFS -IFS=$'\n' -PackageSources+="$IFS" -PackageSources+=$(grep -oh '"darc-int-[^"]*"' $ConfigFile | tr -d '"') -IFS=$PrevIFS - -for FeedName in ${PackageSources[@]} ; do - # Check if there is no existing credential for this FeedName - grep -i "<$FeedName>" $ConfigFile - if [ "$?" != "0" ]; then - echo "Adding credentials for $FeedName." - - PackageSourceCredentialsNodeFooter="" - NewCredential="${TB}${TB}<$FeedName>${NL}${NL}${NL}" - - sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile - fi -done diff --git a/eng/common/SigningValidation.proj b/eng/common/SigningValidation.proj deleted file mode 100644 index 3d0ac80af3..0000000000 --- a/eng/common/SigningValidation.proj +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - netcoreapp2.1 - - - - - - - - $(NuGetPackageRoot)Microsoft.DotNet.SignCheck\$(SignCheckVersion)\tools\Microsoft.DotNet.SignCheck.exe - - $(PackageBasePath) - signcheck.log - signcheck.errors.log - signcheck.exclusions.txt - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/eng/common/SourceLinkValidation.ps1 b/eng/common/SourceLinkValidation.ps1 deleted file mode 100644 index 0e4c349e00..0000000000 --- a/eng/common/SourceLinkValidation.ps1 +++ /dev/null @@ -1,195 +0,0 @@ -param( - [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where Symbols.NuGet packages to be checked are stored - [Parameter(Mandatory=$true)][string] $ExtractPath, # Full path to directory where the packages will be extracted during validation - [Parameter(Mandatory=$true)][string] $SourceLinkToolPath, # Full path to directory where dotnet SourceLink CLI was installed - [Parameter(Mandatory=$true)][string] $GHRepoName, # GitHub name of the repo including the Org. E.g., dotnet/arcade - [Parameter(Mandatory=$true)][string] $GHCommit # GitHub commit SHA used to build the packages -) - -function ValidateSourceLinkLinks { - if (!($GHRepoName -Match "^[^\s\/]+/[^\s\/]+$")) { - Write-PipelineTelemetryError -Category "Build" -Message "GHRepoName should be in the format /" - $global:LASTEXITCODE = 1 - return - } - - if (!($GHCommit -Match "^[0-9a-fA-F]{40}$")) { - Write-PipelineTelemetryError -Category "Build" -Message "GHCommit should be a 40 chars hexadecimal string" - $global:LASTEXITCODE = 1 - return - } - - $RepoTreeURL = -Join("https://api.github.com/repos/", $GHRepoName, "/git/trees/", $GHCommit, "?recursive=1") - $CodeExtensions = @(".cs", ".vb", ".fs", ".fsi", ".fsx", ".fsscript") - - try { - # Retrieve the list of files in the repo at that particular commit point and store them in the RepoFiles hash - $Data = Invoke-WebRequest $RepoTreeURL | ConvertFrom-Json | Select-Object -ExpandProperty tree - - foreach ($file in $Data) { - $Extension = [System.IO.Path]::GetExtension($file.path) - - if ($CodeExtensions.Contains($Extension)) { - $RepoFiles[$file.path] = 1 - } - } - } - catch { - Write-PipelineTelemetryError -Category "Build" -Message "Problems downloading the list of files from the repo. Url used: $RepoTreeURL" - $global:LASTEXITCODE = 1 - return - } - - if (Test-Path $ExtractPath) { - Remove-Item $ExtractPath -Force -Recurse -ErrorAction SilentlyContinue - } - - # Process each NuGet package in parallel - $Jobs = @() - Get-ChildItem "$InputPath\*.symbols.nupkg" | - ForEach-Object { - $Jobs += Start-Job -ScriptBlock $ValidatePackage -ArgumentList $_.FullName - } - - foreach ($Job in $Jobs) { - Wait-Job -Id $Job.Id | Receive-Job - } -} - -try { - . $PSScriptRoot\pipeline-logging-functions.ps1 - - # Cache/HashMap (File -> Exist flag) used to consult whether a file exist - # in the repository at a specific commit point. This is populated by inserting - # all files present in the repo at a specific commit point. - $global:RepoFiles = @{} - - $ValidatePackage = { - param( - [string] $PackagePath # Full path to a Symbols.NuGet package - ) - - # Ensure input file exist - if (!(Test-Path $PackagePath)) { - throw "Input file does not exist: $PackagePath" - } - - # Extensions for which we'll look for SourceLink information - # For now we'll only care about Portable & Embedded PDBs - $RelevantExtensions = @(".dll", ".exe", ".pdb") - - Write-Host -NoNewLine "Validating" ([System.IO.Path]::GetFileName($PackagePath)) "... " - - $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) - $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId - $FailedFiles = 0 - - Add-Type -AssemblyName System.IO.Compression.FileSystem - - [System.IO.Directory]::CreateDirectory($ExtractPath); - - $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath) - - $zip.Entries | - Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} | - ForEach-Object { - $FileName = $_.FullName - $Extension = [System.IO.Path]::GetExtension($_.Name) - $FakeName = -Join((New-Guid), $Extension) - $TargetFile = Join-Path -Path $ExtractPath -ChildPath $FakeName - - # We ignore resource DLLs - if ($FileName.EndsWith(".resources.dll")) { - return - } - - [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile, $true) - - $ValidateFile = { - param( - [string] $FullPath, # Full path to the module that has to be checked - [string] $RealPath, - [ref] $FailedFiles - ) - - # Makes easier to reference `sourcelink cli` - Push-Location $using:SourceLinkToolPath - - $SourceLinkInfos = .\sourcelink.exe print-urls $FullPath | Out-String - - if ($LASTEXITCODE -eq 0 -and -not ([string]::IsNullOrEmpty($SourceLinkInfos))) { - $NumFailedLinks = 0 - - # We only care about Http addresses - $Matches = (Select-String '(http[s]?)(:\/\/)([^\s,]+)' -Input $SourceLinkInfos -AllMatches).Matches - - if ($Matches.Count -ne 0) { - $Matches.Value | - ForEach-Object { - $Link = $_ - $CommitUrl = -Join("https://raw.githubusercontent.com/", $using:GHRepoName, "/", $using:GHCommit, "/") - $FilePath = $Link.Replace($CommitUrl, "") - $Status = 200 - $Cache = $using:RepoFiles - - if ( !($Cache.ContainsKey($FilePath)) ) { - try { - $Uri = $Link -as [System.URI] - - # Only GitHub links are valid - if ($Uri.AbsoluteURI -ne $null -and $Uri.Host -match "github") { - $Status = (Invoke-WebRequest -Uri $Link -UseBasicParsing -Method HEAD -TimeoutSec 5).StatusCode - } - else { - $Status = 0 - } - } - catch { - $Status = 0 - } - } - - if ($Status -ne 200) { - if ($NumFailedLinks -eq 0) { - if ($FailedFiles.Value -eq 0) { - Write-Host - } - - Write-Host "`tFile $RealPath has broken links:" - } - - Write-Host "`t`tFailed to retrieve $Link" - - $NumFailedLinks++ - } - } - } - - if ($NumFailedLinks -ne 0) { - $FailedFiles.value++ - $global:LASTEXITCODE = 1 - } - } - - Pop-Location - } - - &$ValidateFile $TargetFile $FileName ([ref]$FailedFiles) - } - - $zip.Dispose() - - if ($FailedFiles -eq 0) { - Write-Host "Passed." - } - } - - Measure-Command { ValidateSourceLinkLinks } -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'SourceLink' -Message $_ - ExitWithExitCode 1 -} - - diff --git a/eng/common/build.ps1 b/eng/common/build.ps1 deleted file mode 100644 index 88814514d8..0000000000 --- a/eng/common/build.ps1 +++ /dev/null @@ -1,148 +0,0 @@ -[CmdletBinding(PositionalBinding=$false)] -Param( - [string][Alias('c')]$configuration = "Debug", - [string]$platform = $null, - [string] $projects, - [string][Alias('v')]$verbosity = "minimal", - [string] $msbuildEngine = $null, - [bool] $warnAsError = $true, - [bool] $nodeReuse = $true, - [switch][Alias('r')]$restore, - [switch] $deployDeps, - [switch][Alias('b')]$build, - [switch] $rebuild, - [switch] $deploy, - [switch][Alias('t')]$test, - [switch] $integrationTest, - [switch] $performanceTest, - [switch] $sign, - [switch] $pack, - [switch] $publish, - [switch] $clean, - [switch][Alias('bl')]$binaryLog, - [switch] $ci, - [switch] $prepareMachine, - [switch] $help, - [Parameter(ValueFromRemainingArguments=$true)][String[]]$properties -) - -function Print-Usage() { - Write-Host "Common settings:" - Write-Host " -configuration Build configuration: 'Debug' or 'Release' (short: -c)" - Write-Host " -platform Platform configuration: 'x86', 'x64' or any valid Platform value to pass to msbuild" - Write-Host " -verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic] (short: -v)" - Write-Host " -binaryLog Output binary log (short: -bl)" - Write-Host " -help Print help and exit" - Write-Host "" - - Write-Host "Actions:" - Write-Host " -restore Restore dependencies (short: -r)" - Write-Host " -build Build solution (short: -b)" - Write-Host " -rebuild Rebuild solution" - Write-Host " -deploy Deploy built VSIXes" - Write-Host " -deployDeps Deploy dependencies (e.g. VSIXes for integration tests)" - Write-Host " -test Run all unit tests in the solution (short: -t)" - Write-Host " -integrationTest Run all integration tests in the solution" - Write-Host " -performanceTest Run all performance tests in the solution" - Write-Host " -pack Package build outputs into NuGet packages and Willow components" - Write-Host " -sign Sign build outputs" - Write-Host " -publish Publish artifacts (e.g. symbols)" - Write-Host " -clean Clean the solution" - Write-Host "" - - Write-Host "Advanced settings:" - Write-Host " -projects Semi-colon delimited list of sln/proj's to build. Globbing is supported (*.sln)" - Write-Host " -ci Set when running on CI server" - Write-Host " -prepareMachine Prepare machine for CI run, clean up processes after build" - Write-Host " -warnAsError Sets warnaserror msbuild parameter ('true' or 'false')" - Write-Host " -msbuildEngine Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)." - Write-Host "" - - Write-Host "Command line arguments not listed above are passed thru to msbuild." - Write-Host "The above arguments can be shortened as much as to be unambiguous (e.g. -co for configuration, -t for test, etc.)." -} - -. $PSScriptRoot\tools.ps1 - -function InitializeCustomToolset { - if (-not $restore) { - return - } - - $script = Join-Path $EngRoot 'restore-toolset.ps1' - - if (Test-Path $script) { - . $script - } -} - -function Build { - $toolsetBuildProj = InitializeToolset - InitializeCustomToolset - - $bl = if ($binaryLog) { '/bl:' + (Join-Path $LogDir 'Build.binlog') } else { '' } - $platformArg = if ($platform) { "/p:Platform=$platform" } else { '' } - - if ($projects) { - # Re-assign properties to a new variable because PowerShell doesn't let us append properties directly for unclear reasons. - # Explicitly set the type as string[] because otherwise PowerShell would make this char[] if $properties is empty. - [string[]] $msbuildArgs = $properties - - # Resolve relative project paths into full paths - $projects = ($projects.Split(';').ForEach({Resolve-Path $_}) -join ';') - - $msbuildArgs += "/p:Projects=$projects" - $properties = $msbuildArgs - } - - MSBuild $toolsetBuildProj ` - $bl ` - $platformArg ` - /p:Configuration=$configuration ` - /p:RepoRoot=$RepoRoot ` - /p:Restore=$restore ` - /p:DeployDeps=$deployDeps ` - /p:Build=$build ` - /p:Rebuild=$rebuild ` - /p:Deploy=$deploy ` - /p:Test=$test ` - /p:Pack=$pack ` - /p:IntegrationTest=$integrationTest ` - /p:PerformanceTest=$performanceTest ` - /p:Sign=$sign ` - /p:Publish=$publish ` - @properties -} - -try { - if ($clean) { - if (Test-Path $ArtifactsDir) { - Remove-Item -Recurse -Force $ArtifactsDir - Write-Host 'Artifacts directory deleted.' - } - exit 0 - } - - if ($help -or (($null -ne $properties) -and ($properties.Contains('/help') -or $properties.Contains('/?')))) { - Print-Usage - exit 0 - } - - if ($ci) { - $binaryLog = $true - $nodeReuse = $false - } - - if ($restore) { - InitializeNativeTools - } - - Build -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'InitializeToolset' -Message $_ - ExitWithExitCode 1 -} - -ExitWithExitCode 0 diff --git a/eng/common/build.sh b/eng/common/build.sh deleted file mode 100755 index 36f9aa0462..0000000000 --- a/eng/common/build.sh +++ /dev/null @@ -1,216 +0,0 @@ -#!/usr/bin/env bash - -# Stop script if unbound variable found (use ${var:-} if intentional) -set -u - -# Stop script if command returns non-zero exit code. -# Prevents hidden errors caused by missing error code propagation. -set -e - -usage() -{ - echo "Common settings:" - echo " --configuration Build configuration: 'Debug' or 'Release' (short: -c)" - echo " --verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic] (short: -v)" - echo " --binaryLog Create MSBuild binary log (short: -bl)" - echo " --help Print help and exit (short: -h)" - echo "" - - echo "Actions:" - echo " --restore Restore dependencies (short: -r)" - echo " --build Build solution (short: -b)" - echo " --rebuild Rebuild solution" - echo " --test Run all unit tests in the solution (short: -t)" - echo " --integrationTest Run all integration tests in the solution" - echo " --performanceTest Run all performance tests in the solution" - echo " --pack Package build outputs into NuGet packages and Willow components" - echo " --sign Sign build outputs" - echo " --publish Publish artifacts (e.g. symbols)" - echo " --clean Clean the solution" - echo "" - - echo "Advanced settings:" - echo " --projects Project or solution file(s) to build" - echo " --ci Set when running on CI server" - echo " --prepareMachine Prepare machine for CI run, clean up processes after build" - echo " --nodeReuse Sets nodereuse msbuild parameter ('true' or 'false')" - echo " --warnAsError Sets warnaserror msbuild parameter ('true' or 'false')" - echo "" - echo "Command line arguments not listed above are passed thru to msbuild." - echo "Arguments can also be passed in with a single hyphen." -} - -source="${BASH_SOURCE[0]}" - -# resolve $source until the file is no longer a symlink -while [[ -h "$source" ]]; do - scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - source="$(readlink "$source")" - # if $source was a relative symlink, we need to resolve it relative to the path where the - # symlink file was located - [[ $source != /* ]] && source="$scriptroot/$source" -done -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -restore=false -build=false -rebuild=false -test=false -integration_test=false -performance_test=false -pack=false -publish=false -sign=false -public=false -ci=false -clean=false - -warn_as_error=true -node_reuse=true -binary_log=false -pipelines_log=false - -projects='' -configuration='Debug' -prepare_machine=false -verbosity='minimal' - -properties='' - -while [[ $# > 0 ]]; do - opt="$(echo "${1/#--/-}" | awk '{print tolower($0)}')" - case "$opt" in - -help|-h) - usage - exit 0 - ;; - -clean) - clean=true - ;; - -configuration|-c) - configuration=$2 - shift - ;; - -verbosity|-v) - verbosity=$2 - shift - ;; - -binarylog|-bl) - binary_log=true - ;; - -pipelineslog|-pl) - pipelines_log=true - ;; - -restore|-r) - restore=true - ;; - -build|-b) - build=true - ;; - -rebuild) - rebuild=true - ;; - -pack) - pack=true - ;; - -test|-t) - test=true - ;; - -integrationtest) - integration_test=true - ;; - -performancetest) - performance_test=true - ;; - -sign) - sign=true - ;; - -publish) - publish=true - ;; - -preparemachine) - prepare_machine=true - ;; - -projects) - projects=$2 - shift - ;; - -ci) - ci=true - ;; - -warnaserror) - warn_as_error=$2 - shift - ;; - -nodereuse) - node_reuse=$2 - shift - ;; - *) - properties="$properties $1" - ;; - esac - - shift -done - -if [[ "$ci" == true ]]; then - pipelines_log=true - binary_log=true - node_reuse=false -fi - -. "$scriptroot/tools.sh" - -function InitializeCustomToolset { - local script="$eng_root/restore-toolset.sh" - - if [[ -a "$script" ]]; then - . "$script" - fi -} - -function Build { - InitializeToolset - InitializeCustomToolset - - if [[ ! -z "$projects" ]]; then - properties="$properties /p:Projects=$projects" - fi - - local bl="" - if [[ "$binary_log" == true ]]; then - bl="/bl:\"$log_dir/Build.binlog\"" - fi - - MSBuild $_InitializeToolset \ - $bl \ - /p:Configuration=$configuration \ - /p:RepoRoot="$repo_root" \ - /p:Restore=$restore \ - /p:Build=$build \ - /p:Rebuild=$rebuild \ - /p:Test=$test \ - /p:Pack=$pack \ - /p:IntegrationTest=$integration_test \ - /p:PerformanceTest=$performance_test \ - /p:Sign=$sign \ - /p:Publish=$publish \ - $properties - - ExitWithExitCode 0 -} - -if [[ "$clean" == true ]]; then - if [ -d "$artifacts_dir" ]; then - rm -rf $artifacts_dir - echo "Artifacts directory deleted." - fi - exit 0 -fi - -if [[ "$restore" == true ]]; then - InitializeNativeTools -fi - -Build diff --git a/eng/common/cibuild.sh b/eng/common/cibuild.sh deleted file mode 100755 index 1a02c0dec8..0000000000 --- a/eng/common/cibuild.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -source="${BASH_SOURCE[0]}" - -# resolve $SOURCE until the file is no longer a symlink -while [[ -h $source ]]; do - scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - source="$(readlink "$source")" - - # if $source was a relative symlink, we need to resolve it relative to the path where - # the symlink file was located - [[ $source != /* ]] && source="$scriptroot/$source" -done -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -. "$scriptroot/build.sh" --restore --build --test --pack --publish --ci $@ \ No newline at end of file diff --git a/eng/common/cross/android/arm/toolchain.cmake b/eng/common/cross/android/arm/toolchain.cmake deleted file mode 100644 index a7e1c73501..0000000000 --- a/eng/common/cross/android/arm/toolchain.cmake +++ /dev/null @@ -1,41 +0,0 @@ -set(CROSS_NDK_TOOLCHAIN $ENV{ROOTFS_DIR}/../) -set(CROSS_ROOTFS ${CROSS_NDK_TOOLCHAIN}/sysroot) -set(CLR_CMAKE_PLATFORM_ANDROID "Android") - -set(CMAKE_SYSTEM_NAME Linux) -set(CMAKE_SYSTEM_VERSION 1) -set(CMAKE_SYSTEM_PROCESSOR arm) - -## Specify the toolchain -set(TOOLCHAIN "arm-linux-androideabi") -set(CMAKE_PREFIX_PATH ${CROSS_NDK_TOOLCHAIN}) -set(TOOLCHAIN_PREFIX ${TOOLCHAIN}-) - -find_program(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}clang) -find_program(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}clang++) -find_program(CMAKE_ASM_COMPILER ${TOOLCHAIN_PREFIX}clang) -find_program(CMAKE_AR ${TOOLCHAIN_PREFIX}ar) -find_program(CMAKE_LD ${TOOLCHAIN_PREFIX}ar) -find_program(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy) -find_program(CMAKE_OBJDUMP ${TOOLCHAIN_PREFIX}objdump) - -add_compile_options(--sysroot=${CROSS_ROOTFS}) -add_compile_options(-fPIE) -add_compile_options(-mfloat-abi=soft) -include_directories(SYSTEM ${CROSS_NDK_TOOLCHAIN}/include/c++/4.9.x/) -include_directories(SYSTEM ${CROSS_NDK_TOOLCHAIN}/include/c++/4.9.x/arm-linux-androideabi/) - -set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B ${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}") -set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/${TOOLCHAIN}") -set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}") -set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -fPIE -pie") - -set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE) -set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE) -set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE) - -set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}") -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/eng/common/cross/android/arm64/toolchain.cmake b/eng/common/cross/android/arm64/toolchain.cmake deleted file mode 100644 index 29415899c1..0000000000 --- a/eng/common/cross/android/arm64/toolchain.cmake +++ /dev/null @@ -1,42 +0,0 @@ -set(CROSS_NDK_TOOLCHAIN $ENV{ROOTFS_DIR}/../) -set(CROSS_ROOTFS ${CROSS_NDK_TOOLCHAIN}/sysroot) -set(CLR_CMAKE_PLATFORM_ANDROID "Android") - -set(CMAKE_SYSTEM_NAME Linux) -set(CMAKE_SYSTEM_VERSION 1) -set(CMAKE_SYSTEM_PROCESSOR aarch64) - -## Specify the toolchain -set(TOOLCHAIN "aarch64-linux-android") -set(CMAKE_PREFIX_PATH ${CROSS_NDK_TOOLCHAIN}) -set(TOOLCHAIN_PREFIX ${TOOLCHAIN}-) - -find_program(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}clang) -find_program(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}clang++) -find_program(CMAKE_ASM_COMPILER ${TOOLCHAIN_PREFIX}clang) -find_program(CMAKE_AR ${TOOLCHAIN_PREFIX}ar) -find_program(CMAKE_LD ${TOOLCHAIN_PREFIX}ar) -find_program(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy) -find_program(CMAKE_OBJDUMP ${TOOLCHAIN_PREFIX}objdump) - -add_compile_options(--sysroot=${CROSS_ROOTFS}) -add_compile_options(-fPIE) - -## Needed for Android or bionic specific conditionals -add_compile_options(-D__ANDROID__) -add_compile_options(-D__BIONIC__) - -set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B ${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}") -set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/${TOOLCHAIN}") -set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}") -set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -fPIE -pie") - -set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE) -set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE) -set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE) - -set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}") -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/eng/common/cross/arm/sources.list.bionic b/eng/common/cross/arm/sources.list.bionic deleted file mode 100644 index 2109557409..0000000000 --- a/eng/common/cross/arm/sources.list.bionic +++ /dev/null @@ -1,11 +0,0 @@ -deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted - -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse diff --git a/eng/common/cross/arm/sources.list.jessie b/eng/common/cross/arm/sources.list.jessie deleted file mode 100644 index 4d142ac9b1..0000000000 --- a/eng/common/cross/arm/sources.list.jessie +++ /dev/null @@ -1,3 +0,0 @@ -# Debian (sid) # UNSTABLE -deb http://ftp.debian.org/debian/ sid main contrib non-free -deb-src http://ftp.debian.org/debian/ sid main contrib non-free diff --git a/eng/common/cross/arm/sources.list.trusty b/eng/common/cross/arm/sources.list.trusty deleted file mode 100644 index 07d8f88d82..0000000000 --- a/eng/common/cross/arm/sources.list.trusty +++ /dev/null @@ -1,11 +0,0 @@ -deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted -deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted - -deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse -deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse \ No newline at end of file diff --git a/eng/common/cross/arm/sources.list.xenial b/eng/common/cross/arm/sources.list.xenial deleted file mode 100644 index eacd86b7df..0000000000 --- a/eng/common/cross/arm/sources.list.xenial +++ /dev/null @@ -1,11 +0,0 @@ -deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted - -deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse \ No newline at end of file diff --git a/eng/common/cross/arm/sources.list.zesty b/eng/common/cross/arm/sources.list.zesty deleted file mode 100644 index ea2c14a787..0000000000 --- a/eng/common/cross/arm/sources.list.zesty +++ /dev/null @@ -1,11 +0,0 @@ -deb http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted - -deb http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse diff --git a/eng/common/cross/arm/trusty-lttng-2.4.patch b/eng/common/cross/arm/trusty-lttng-2.4.patch deleted file mode 100644 index 8e4dd7ae71..0000000000 --- a/eng/common/cross/arm/trusty-lttng-2.4.patch +++ /dev/null @@ -1,71 +0,0 @@ -From e72c9d7ead60e3317bd6d1fade995c07021c947b Mon Sep 17 00:00:00 2001 -From: Mathieu Desnoyers -Date: Thu, 7 May 2015 13:25:04 -0400 -Subject: [PATCH] Fix: building probe providers with C++ compiler - -Robert Daniels wrote: -> > I'm attempting to use lttng userspace tracing with a C++ application -> > on an ARM platform. I'm using GCC 4.8.4 on Linux 3.14 with the 2.6 -> > release of lttng. I've compiled lttng-modules, lttng-ust, and -> > lttng-tools and have been able to get a simple test working with C -> > code. When I attempt to run the hello.cxx test on my target it will -> > segfault. -> -> -> I spent a little time digging into this issue and finally discovered the -> cause of my segfault with ARM C++ tracepoints. -> -> There is a struct called 'lttng_event' in ust-events.h which contains an -> empty union 'u'. This was the cause of my issue. Under C, this empty union -> compiles to a zero byte member while under C++ it compiles to a one byte -> member, and in my case was four-byte aligned which caused my C++ code to -> have the 'cds_list_head node' offset incorrectly by four bytes. This lead -> to an incorrect linked list structure which caused my issue. -> -> Since this union is empty, I simply removed it from the struct and everything -> worked correctly. -> -> I don't know the history or purpose behind this empty union so I'd like to -> know if this is a safe fix. If it is I can submit a patch with the union -> removed. - -That's a very nice catch! - -We do not support building tracepoint probe provider with -g++ yet, as stated in lttng-ust(3): - -"- Note for C++ support: although an application instrumented with - tracepoints can be compiled with g++, tracepoint probes should be - compiled with gcc (only tested with gcc so far)." - -However, if it works fine with this fix, then I'm tempted to take it, -especially because removing the empty union does not appear to affect -the layout of struct lttng_event as seen from liblttng-ust, which must -be compiled with a C compiler, and from probe providers compiled with -a C compiler. So all we are changing is the layout of a probe provider -compiled with a C++ compiler, which is anyway buggy at the moment, -because it is not compatible with the layout expected by liblttng-ust -compiled with a C compiler. - -Reported-by: Robert Daniels -Signed-off-by: Mathieu Desnoyers ---- - include/lttng/ust-events.h | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/usr/include/lttng/ust-events.h b/usr/include/lttng/ust-events.h -index 328a875..3d7a274 100644 ---- a/usr/include/lttng/ust-events.h -+++ b/usr/include/lttng/ust-events.h -@@ -407,8 +407,6 @@ struct lttng_event { - void *_deprecated1; - struct lttng_ctx *ctx; - enum lttng_ust_instrumentation instrumentation; -- union { -- } u; - struct cds_list_head node; /* Event list in session */ - struct cds_list_head _deprecated2; - void *_deprecated3; --- -2.7.4 - diff --git a/eng/common/cross/arm/trusty.patch b/eng/common/cross/arm/trusty.patch deleted file mode 100644 index 2f2972f8eb..0000000000 --- a/eng/common/cross/arm/trusty.patch +++ /dev/null @@ -1,97 +0,0 @@ -diff -u -r a/usr/include/urcu/uatomic/generic.h b/usr/include/urcu/uatomic/generic.h ---- a/usr/include/urcu/uatomic/generic.h 2014-03-28 06:04:42.000000000 +0900 -+++ b/usr/include/urcu/uatomic/generic.h 2017-02-13 10:35:21.189927116 +0900 -@@ -65,17 +65,17 @@ - switch (len) { - #ifdef UATOMIC_HAS_ATOMIC_BYTE - case 1: -- return __sync_val_compare_and_swap_1(addr, old, _new); -+ return __sync_val_compare_and_swap_1((uint8_t *) addr, old, _new); - #endif - #ifdef UATOMIC_HAS_ATOMIC_SHORT - case 2: -- return __sync_val_compare_and_swap_2(addr, old, _new); -+ return __sync_val_compare_and_swap_2((uint16_t *) addr, old, _new); - #endif - case 4: -- return __sync_val_compare_and_swap_4(addr, old, _new); -+ return __sync_val_compare_and_swap_4((uint32_t *) addr, old, _new); - #if (CAA_BITS_PER_LONG == 64) - case 8: -- return __sync_val_compare_and_swap_8(addr, old, _new); -+ return __sync_val_compare_and_swap_8((uint64_t *) addr, old, _new); - #endif - } - _uatomic_link_error(); -@@ -100,20 +100,20 @@ - switch (len) { - #ifdef UATOMIC_HAS_ATOMIC_BYTE - case 1: -- __sync_and_and_fetch_1(addr, val); -+ __sync_and_and_fetch_1((uint8_t *) addr, val); - return; - #endif - #ifdef UATOMIC_HAS_ATOMIC_SHORT - case 2: -- __sync_and_and_fetch_2(addr, val); -+ __sync_and_and_fetch_2((uint16_t *) addr, val); - return; - #endif - case 4: -- __sync_and_and_fetch_4(addr, val); -+ __sync_and_and_fetch_4((uint32_t *) addr, val); - return; - #if (CAA_BITS_PER_LONG == 64) - case 8: -- __sync_and_and_fetch_8(addr, val); -+ __sync_and_and_fetch_8((uint64_t *) addr, val); - return; - #endif - } -@@ -139,20 +139,20 @@ - switch (len) { - #ifdef UATOMIC_HAS_ATOMIC_BYTE - case 1: -- __sync_or_and_fetch_1(addr, val); -+ __sync_or_and_fetch_1((uint8_t *) addr, val); - return; - #endif - #ifdef UATOMIC_HAS_ATOMIC_SHORT - case 2: -- __sync_or_and_fetch_2(addr, val); -+ __sync_or_and_fetch_2((uint16_t *) addr, val); - return; - #endif - case 4: -- __sync_or_and_fetch_4(addr, val); -+ __sync_or_and_fetch_4((uint32_t *) addr, val); - return; - #if (CAA_BITS_PER_LONG == 64) - case 8: -- __sync_or_and_fetch_8(addr, val); -+ __sync_or_and_fetch_8((uint64_t *) addr, val); - return; - #endif - } -@@ -180,17 +180,17 @@ - switch (len) { - #ifdef UATOMIC_HAS_ATOMIC_BYTE - case 1: -- return __sync_add_and_fetch_1(addr, val); -+ return __sync_add_and_fetch_1((uint8_t *) addr, val); - #endif - #ifdef UATOMIC_HAS_ATOMIC_SHORT - case 2: -- return __sync_add_and_fetch_2(addr, val); -+ return __sync_add_and_fetch_2((uint16_t *) addr, val); - #endif - case 4: -- return __sync_add_and_fetch_4(addr, val); -+ return __sync_add_and_fetch_4((uint32_t *) addr, val); - #if (CAA_BITS_PER_LONG == 64) - case 8: -- return __sync_add_and_fetch_8(addr, val); -+ return __sync_add_and_fetch_8((uint64_t *) addr, val); - #endif - } - _uatomic_link_error(); diff --git a/eng/common/cross/arm64/sources.list.bionic b/eng/common/cross/arm64/sources.list.bionic deleted file mode 100644 index 2109557409..0000000000 --- a/eng/common/cross/arm64/sources.list.bionic +++ /dev/null @@ -1,11 +0,0 @@ -deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted - -deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse -deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse diff --git a/eng/common/cross/arm64/sources.list.buster b/eng/common/cross/arm64/sources.list.buster deleted file mode 100644 index 7194ac64a9..0000000000 --- a/eng/common/cross/arm64/sources.list.buster +++ /dev/null @@ -1,11 +0,0 @@ -deb http://deb.debian.org/debian buster main -deb-src http://deb.debian.org/debian buster main - -deb http://deb.debian.org/debian-security/ buster/updates main -deb-src http://deb.debian.org/debian-security/ buster/updates main - -deb http://deb.debian.org/debian buster-updates main -deb-src http://deb.debian.org/debian buster-updates main - -deb http://deb.debian.org/debian buster-backports main contrib non-free -deb-src http://deb.debian.org/debian buster-backports main contrib non-free diff --git a/eng/common/cross/arm64/sources.list.stretch b/eng/common/cross/arm64/sources.list.stretch deleted file mode 100644 index 0e12157743..0000000000 --- a/eng/common/cross/arm64/sources.list.stretch +++ /dev/null @@ -1,12 +0,0 @@ -deb http://deb.debian.org/debian stretch main -deb-src http://deb.debian.org/debian stretch main - -deb http://deb.debian.org/debian-security/ stretch/updates main -deb-src http://deb.debian.org/debian-security/ stretch/updates main - -deb http://deb.debian.org/debian stretch-updates main -deb-src http://deb.debian.org/debian stretch-updates main - -deb http://deb.debian.org/debian stretch-backports main contrib non-free -deb-src http://deb.debian.org/debian stretch-backports main contrib non-free - diff --git a/eng/common/cross/arm64/sources.list.trusty b/eng/common/cross/arm64/sources.list.trusty deleted file mode 100644 index 07d8f88d82..0000000000 --- a/eng/common/cross/arm64/sources.list.trusty +++ /dev/null @@ -1,11 +0,0 @@ -deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted -deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted - -deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse -deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse \ No newline at end of file diff --git a/eng/common/cross/arm64/sources.list.xenial b/eng/common/cross/arm64/sources.list.xenial deleted file mode 100644 index eacd86b7df..0000000000 --- a/eng/common/cross/arm64/sources.list.xenial +++ /dev/null @@ -1,11 +0,0 @@ -deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted - -deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse -deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse \ No newline at end of file diff --git a/eng/common/cross/arm64/sources.list.zesty b/eng/common/cross/arm64/sources.list.zesty deleted file mode 100644 index ea2c14a787..0000000000 --- a/eng/common/cross/arm64/sources.list.zesty +++ /dev/null @@ -1,11 +0,0 @@ -deb http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe - -deb http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted - -deb http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse -deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse diff --git a/eng/common/cross/armel/sources.list.jessie b/eng/common/cross/armel/sources.list.jessie deleted file mode 100644 index 3d9c3059d8..0000000000 --- a/eng/common/cross/armel/sources.list.jessie +++ /dev/null @@ -1,3 +0,0 @@ -# Debian (jessie) # Stable -deb http://ftp.debian.org/debian/ jessie main contrib non-free -deb-src http://ftp.debian.org/debian/ jessie main contrib non-free diff --git a/eng/common/cross/armel/tizen-build-rootfs.sh b/eng/common/cross/armel/tizen-build-rootfs.sh deleted file mode 100755 index 87c48e78fb..0000000000 --- a/eng/common/cross/armel/tizen-build-rootfs.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env bash -set -e - -__ARM_SOFTFP_CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) -__TIZEN_CROSSDIR="$__ARM_SOFTFP_CrossDir/tizen" - -if [[ -z "$ROOTFS_DIR" ]]; then - echo "ROOTFS_DIR is not defined." - exit 1; -fi - -# Clean-up (TODO-Cleanup: We may already delete $ROOTFS_DIR at ./cross/build-rootfs.sh.) -# hk0110 -if [ -d "$ROOTFS_DIR" ]; then - umount $ROOTFS_DIR/* - rm -rf $ROOTFS_DIR -fi - -TIZEN_TMP_DIR=$ROOTFS_DIR/tizen_tmp -mkdir -p $TIZEN_TMP_DIR - -# Download files -echo ">>Start downloading files" -VERBOSE=1 $__ARM_SOFTFP_CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR -echo "<>Start constructing Tizen rootfs" -TIZEN_RPM_FILES=`ls $TIZEN_TMP_DIR/*.rpm` -cd $ROOTFS_DIR -for f in $TIZEN_RPM_FILES; do - rpm2cpio $f | cpio -idm --quiet -done -echo "<>Start configuring Tizen rootfs" -rm ./usr/lib/libunwind.so -ln -s libunwind.so.8 ./usr/lib/libunwind.so -ln -sfn asm-arm ./usr/include/asm -patch -p1 < $__TIZEN_CROSSDIR/tizen.patch -echo "</dev/null; then - VERBOSE=0 -fi - -Log() -{ - if [ $VERBOSE -ge $1 ]; then - echo ${@:2} - fi -} - -Inform() -{ - Log 1 -e "\x1B[0;34m$@\x1B[m" -} - -Debug() -{ - Log 2 -e "\x1B[0;32m$@\x1B[m" -} - -Error() -{ - >&2 Log 0 -e "\x1B[0;31m$@\x1B[m" -} - -Fetch() -{ - URL=$1 - FILE=$2 - PROGRESS=$3 - if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then - CURL_OPT="--progress-bar" - else - CURL_OPT="--silent" - fi - curl $CURL_OPT $URL > $FILE -} - -hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; } -hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; } -hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; } - -TMPDIR=$1 -if [ ! -d $TMPDIR ]; then - TMPDIR=./tizen_tmp - Debug "Create temporary directory : $TMPDIR" - mkdir -p $TMPDIR -fi - -TIZEN_URL=http://download.tizen.org/releases/milestone/tizen -BUILD_XML=build.xml -REPOMD_XML=repomd.xml -PRIMARY_XML=primary.xml -TARGET_URL="http://__not_initialized" - -Xpath_get() -{ - XPATH_RESULT='' - XPATH=$1 - XML_FILE=$2 - RESULT=$(xmllint --xpath $XPATH $XML_FILE) - if [[ -z ${RESULT// } ]]; then - Error "Can not find target from $XML_FILE" - Debug "Xpath = $XPATH" - exit 1 - fi - XPATH_RESULT=$RESULT -} - -fetch_tizen_pkgs_init() -{ - TARGET=$1 - PROFILE=$2 - Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE" - - TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs - if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi - mkdir -p $TMP_PKG_DIR - - PKG_URL=$TIZEN_URL/$PROFILE/latest - - BUILD_XML_URL=$PKG_URL/$BUILD_XML - TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML - TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML - TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML - TMP_PRIMARYGZ=${TMP_PRIMARY}.gz - - Fetch $BUILD_XML_URL $TMP_BUILD - - Debug "fetch $BUILD_XML_URL to $TMP_BUILD" - - TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()" - Xpath_get $TARGET_XPATH $TMP_BUILD - TARGET_PATH=$XPATH_RESULT - TARGET_URL=$PKG_URL/$TARGET_PATH - - REPOMD_URL=$TARGET_URL/repodata/repomd.xml - PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)' - - Fetch $REPOMD_URL $TMP_REPOMD - - Debug "fetch $REPOMD_URL to $TMP_REPOMD" - - Xpath_get $PRIMARY_XPATH $TMP_REPOMD - PRIMARY_XML_PATH=$XPATH_RESULT - PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH - - Fetch $PRIMARY_URL $TMP_PRIMARYGZ - - Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ" - - gunzip $TMP_PRIMARYGZ - - Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY" -} - -fetch_tizen_pkgs() -{ - ARCH=$1 - PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)' - - PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())' - - for pkg in ${@:2} - do - Inform "Fetching... $pkg" - XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg} - XPATH=${XPATH/_ARCH_/$ARCH} - Xpath_get $XPATH $TMP_PRIMARY - PKG_PATH=$XPATH_RESULT - - XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg} - XPATH=${XPATH/_ARCH_/$ARCH} - Xpath_get $XPATH $TMP_PRIMARY - CHECKSUM=$XPATH_RESULT - - PKG_URL=$TARGET_URL/$PKG_PATH - PKG_FILE=$(basename $PKG_PATH) - PKG_PATH=$TMPDIR/$PKG_FILE - - Debug "Download $PKG_URL to $PKG_PATH" - Fetch $PKG_URL $PKG_PATH true - - echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null - if [ $? -ne 0 ]; then - Error "Fail to fetch $PKG_URL to $PKG_PATH" - Debug "Checksum = $CHECKSUM" - exit 1 - fi - done -} - -Inform "Initialize arm base" -fetch_tizen_pkgs_init standard base -Inform "fetch common packages" -fetch_tizen_pkgs armv7l gcc glibc glibc-devel libicu libicu-devel libatomic -fetch_tizen_pkgs noarch linux-glibc-devel -Inform "fetch coreclr packages" -fetch_tizen_pkgs armv7l lldb lldb-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu -Inform "fetch corefx packages" -fetch_tizen_pkgs armv7l libcom_err libcom_err-devel zlib zlib-devel libopenssl libopenssl-devel krb5 krb5-devel libcurl libcurl-devel - -Inform "Initialize standard unified" -fetch_tizen_pkgs_init standard unified -Inform "fetch corefx packages" -fetch_tizen_pkgs armv7l gssdp gssdp-devel tizen-release - diff --git a/eng/common/cross/armel/tizen/tizen-dotnet.ks b/eng/common/cross/armel/tizen/tizen-dotnet.ks deleted file mode 100644 index 506d455bd4..0000000000 --- a/eng/common/cross/armel/tizen/tizen-dotnet.ks +++ /dev/null @@ -1,50 +0,0 @@ -lang en_US.UTF-8 -keyboard us -timezone --utc Asia/Seoul - -part / --fstype="ext4" --size=3500 --ondisk=mmcblk0 --label rootfs --fsoptions=defaults,noatime - -rootpw tizen -desktop --autologinuser=root -user --name root --groups audio,video --password 'tizen' - -repo --name=standard --baseurl=http://download.tizen.org/releases/milestone/tizen/unified/latest/repos/standard/packages/ --ssl_verify=no -repo --name=base --baseurl=http://download.tizen.org/releases/milestone/tizen/base/latest/repos/standard/packages/ --ssl_verify=no - -%packages -tar -gzip - -sed -grep -gawk -perl - -binutils -findutils -util-linux -lttng-ust -userspace-rcu -procps-ng -tzdata -ca-certificates - - -### Core FX -libicu -libunwind -iputils -zlib -krb5 -libcurl -libopenssl - -%end - -%post - -### Update /tmp privilege -chmod 777 /tmp -#################################### - -%end diff --git a/eng/common/cross/armel/tizen/tizen.patch b/eng/common/cross/armel/tizen/tizen.patch deleted file mode 100644 index d223427c97..0000000000 --- a/eng/common/cross/armel/tizen/tizen.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so ---- a/usr/lib/libc.so 2016-12-30 23:00:08.284951863 +0900 -+++ b/usr/lib/libc.so 2016-12-30 23:00:32.140951815 +0900 -@@ -2,4 +2,4 @@ - Use the shared library, but some functions are only in - the static library, so try that secondarily. */ - OUTPUT_FORMAT(elf32-littlearm) --GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux.so.3 ) ) -+GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux.so.3 ) ) -diff -u -r a/usr/lib/libpthread.so b/usr/lib/libpthread.so ---- a/usr/lib/libpthread.so 2016-12-30 23:00:19.408951841 +0900 -+++ b/usr/lib/libpthread.so 2016-12-30 23:00:39.068951801 +0900 -@@ -2,4 +2,4 @@ - Use the shared library, but some functions are only in - the static library, so try that secondarily. */ - OUTPUT_FORMAT(elf32-littlearm) --GROUP ( /lib/libpthread.so.0 /usr/lib/libpthread_nonshared.a ) -+GROUP ( libpthread.so.0 libpthread_nonshared.a ) diff --git a/eng/common/cross/build-android-rootfs.sh b/eng/common/cross/build-android-rootfs.sh deleted file mode 100755 index adceda877a..0000000000 --- a/eng/common/cross/build-android-rootfs.sh +++ /dev/null @@ -1,137 +0,0 @@ -#!/usr/bin/env bash -set -e -__NDK_Version=r14 - -usage() -{ - echo "Creates a toolchain and sysroot used for cross-compiling for Android." - echo. - echo "Usage: $0 [BuildArch] [ApiLevel]" - echo. - echo "BuildArch is the target architecture of Android. Currently only arm64 is supported." - echo "ApiLevel is the target Android API level. API levels usually match to Android releases. See https://source.android.com/source/build-numbers.html" - echo. - echo "By default, the toolchain and sysroot will be generated in cross/android-rootfs/toolchain/[BuildArch]. You can change this behavior" - echo "by setting the TOOLCHAIN_DIR environment variable" - echo. - echo "By default, the NDK will be downloaded into the cross/android-rootfs/android-ndk-$__NDK_Version directory. If you already have an NDK installation," - echo "you can set the NDK_DIR environment variable to have this script use that installation of the NDK." - echo "By default, this script will generate a file, android_platform, in the root of the ROOTFS_DIR directory that contains the RID for the supported and tested Android build: android.21-arm64. This file is to replace '/etc/os-release', which is not available for Android." - exit 1 -} - -__ApiLevel=21 # The minimum platform for arm64 is API level 21 -__BuildArch=arm64 -__AndroidArch=aarch64 -__AndroidToolchain=aarch64-linux-android - -for i in "$@" - do - lowerI="$(echo $i | awk '{print tolower($0)}')" - case $lowerI in - -?|-h|--help) - usage - exit 1 - ;; - arm64) - __BuildArch=arm64 - __AndroidArch=aarch64 - __AndroidToolchain=aarch64-linux-android - ;; - arm) - __BuildArch=arm - __AndroidArch=arm - __AndroidToolchain=arm-linux-androideabi - ;; - *[0-9]) - __ApiLevel=$i - ;; - *) - __UnprocessedBuildArgs="$__UnprocessedBuildArgs $i" - ;; - esac -done - -# Obtain the location of the bash script to figure out where the root of the repo is. -__CrossDir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -__Android_Cross_Dir="$__CrossDir/android-rootfs" -__NDK_Dir="$__Android_Cross_Dir/android-ndk-$__NDK_Version" -__libunwind_Dir="$__Android_Cross_Dir/libunwind" -__lldb_Dir="$__Android_Cross_Dir/lldb" -__ToolchainDir="$__Android_Cross_Dir/toolchain/$__BuildArch" - -if [[ -n "$TOOLCHAIN_DIR" ]]; then - __ToolchainDir=$TOOLCHAIN_DIR -fi - -if [[ -n "$NDK_DIR" ]]; then - __NDK_Dir=$NDK_DIR -fi - -echo "Target API level: $__ApiLevel" -echo "Target architecture: $__BuildArch" -echo "NDK location: $__NDK_Dir" -echo "Target Toolchain location: $__ToolchainDir" - -# Download the NDK if required -if [ ! -d $__NDK_Dir ]; then - echo Downloading the NDK into $__NDK_Dir - mkdir -p $__NDK_Dir - wget -nv -nc --show-progress https://dl.google.com/android/repository/android-ndk-$__NDK_Version-linux-x86_64.zip -O $__Android_Cross_Dir/android-ndk-$__NDK_Version-linux-x86_64.zip - unzip -q $__Android_Cross_Dir/android-ndk-$__NDK_Version-linux-x86_64.zip -d $__Android_Cross_Dir -fi - -if [ ! -d $__lldb_Dir ]; then - mkdir -p $__lldb_Dir - echo Downloading LLDB into $__lldb_Dir - wget -nv -nc --show-progress https://dl.google.com/android/repository/lldb-2.3.3614996-linux-x86_64.zip -O $__Android_Cross_Dir/lldb-2.3.3614996-linux-x86_64.zip - unzip -q $__Android_Cross_Dir/lldb-2.3.3614996-linux-x86_64.zip -d $__lldb_Dir -fi - -# Create the RootFS for both arm64 as well as aarch -rm -rf $__Android_Cross_Dir/toolchain - -echo Generating the $__BuildArch toolchain -$__NDK_Dir/build/tools/make_standalone_toolchain.py --arch $__BuildArch --api $__ApiLevel --install-dir $__ToolchainDir - -# Install the required packages into the toolchain -# TODO: Add logic to get latest pkg version instead of specific version number -rm -rf $__Android_Cross_Dir/deb/ -rm -rf $__Android_Cross_Dir/tmp - -mkdir -p $__Android_Cross_Dir/deb/ -mkdir -p $__Android_Cross_Dir/tmp/$arch/ -wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libicu_60.2_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libicu_60.2_$__AndroidArch.deb -wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libicu-dev_60.2_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libicu-dev_60.2_$__AndroidArch.deb - -wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-glob-dev_0.4_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-glob-dev_0.4_$__AndroidArch.deb -wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-glob_0.4_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-glob_0.4_$__AndroidArch.deb -wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-support-dev_22_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-support-dev_22_$__AndroidArch.deb -wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-support_22_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-support_22_$__AndroidArch.deb -wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/liblzma-dev_5.2.3_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/liblzma-dev_5.2.3_$__AndroidArch.deb -wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/liblzma_5.2.3_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/liblzma_5.2.3_$__AndroidArch.deb -wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libunwind-dev_1.2.20170304_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libunwind-dev_1.2.20170304_$__AndroidArch.deb -wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libunwind_1.2.20170304_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libunwind_1.2.20170304_$__AndroidArch.deb - -echo Unpacking Termux packages -dpkg -x $__Android_Cross_Dir/deb/libicu_60.2_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/ -dpkg -x $__Android_Cross_Dir/deb/libicu-dev_60.2_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/ -dpkg -x $__Android_Cross_Dir/deb/libandroid-glob-dev_0.4_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/ -dpkg -x $__Android_Cross_Dir/deb/libandroid-glob_0.4_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/ -dpkg -x $__Android_Cross_Dir/deb/libandroid-support-dev_22_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/ -dpkg -x $__Android_Cross_Dir/deb/libandroid-support_22_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/ -dpkg -x $__Android_Cross_Dir/deb/liblzma-dev_5.2.3_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/ -dpkg -x $__Android_Cross_Dir/deb/liblzma_5.2.3_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/ -dpkg -x $__Android_Cross_Dir/deb/libunwind-dev_1.2.20170304_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/ -dpkg -x $__Android_Cross_Dir/deb/libunwind_1.2.20170304_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/ - -cp -R $__Android_Cross_Dir/tmp/$__AndroidArch/data/data/com.termux/files/usr/* $__ToolchainDir/sysroot/usr/ - -# Generate platform file for build.sh script to assign to __DistroRid -echo "Generating platform file..." - -echo "RID=android.21-arm64" > $__ToolchainDir/sysroot/android_platform -echo Now run: -echo CONFIG_DIR=\`realpath cross/android/$__BuildArch\` ROOTFS_DIR=\`realpath $__ToolchainDir/sysroot\` ./build.sh cross $__BuildArch skipgenerateversion skipnuget cmakeargs -DENABLE_LLDBPLUGIN=0 - diff --git a/eng/common/cross/build-rootfs.sh b/eng/common/cross/build-rootfs.sh deleted file mode 100755 index 8d61377a87..0000000000 --- a/eng/common/cross/build-rootfs.sh +++ /dev/null @@ -1,234 +0,0 @@ -#!/usr/bin/env bash - -usage() -{ - echo "Usage: $0 [BuildArch] [LinuxCodeName] [lldbx.y] [--skipunmount] --rootfsdir ]" - echo "BuildArch can be: arm(default), armel, arm64, x86" - echo "LinuxCodeName - optional, Code name for Linux, can be: trusty, xenial(default), zesty, bionic, alpine. If BuildArch is armel, LinuxCodeName is jessie(default) or tizen." - echo "lldbx.y - optional, LLDB version, can be: lldb3.9(default), lldb4.0, lldb5.0, lldb6.0 no-lldb. Ignored for alpine" - echo "--skipunmount - optional, will skip the unmount of rootfs folder." - exit 1 -} - -__LinuxCodeName=xenial -__CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) -__InitialDir=$PWD -__BuildArch=arm -__UbuntuArch=armhf -__UbuntuRepo="http://ports.ubuntu.com/" -__LLDB_Package="liblldb-3.9-dev" -__SkipUnmount=0 - -# base development support -__UbuntuPackages="build-essential" - -__AlpinePackages="alpine-base" -__AlpinePackages+=" build-base" -__AlpinePackages+=" linux-headers" -__AlpinePackages+=" lldb-dev" -__AlpinePackages+=" llvm-dev" - -# symlinks fixer -__UbuntuPackages+=" symlinks" - -# CoreCLR and CoreFX dependencies -__UbuntuPackages+=" libicu-dev" -__UbuntuPackages+=" liblttng-ust-dev" -__UbuntuPackages+=" libunwind8-dev" - -__AlpinePackages+=" gettext-dev" -__AlpinePackages+=" icu-dev" -__AlpinePackages+=" libunwind-dev" -__AlpinePackages+=" lttng-ust-dev" - -# CoreFX dependencies -__UbuntuPackages+=" libcurl4-openssl-dev" -__UbuntuPackages+=" libkrb5-dev" -__UbuntuPackages+=" libssl-dev" -__UbuntuPackages+=" zlib1g-dev" - -__AlpinePackages+=" curl-dev" -__AlpinePackages+=" krb5-dev" -__AlpinePackages+=" openssl-dev" -__AlpinePackages+=" zlib-dev" - -__UnprocessedBuildArgs= -while :; do - if [ $# -le 0 ]; then - break - fi - - lowerI="$(echo $1 | awk '{print tolower($0)}')" - case $lowerI in - -?|-h|--help) - usage - exit 1 - ;; - arm) - __BuildArch=arm - __UbuntuArch=armhf - __AlpineArch=armhf - __QEMUArch=arm - ;; - arm64) - __BuildArch=arm64 - __UbuntuArch=arm64 - __AlpineArch=aarch64 - __QEMUArch=aarch64 - ;; - armel) - __BuildArch=armel - __UbuntuArch=armel - __UbuntuRepo="http://ftp.debian.org/debian/" - __LinuxCodeName=jessie - ;; - x86) - __BuildArch=x86 - __UbuntuArch=i386 - __UbuntuRepo="http://archive.ubuntu.com/ubuntu/" - ;; - lldb3.6) - __LLDB_Package="lldb-3.6-dev" - ;; - lldb3.8) - __LLDB_Package="lldb-3.8-dev" - ;; - lldb3.9) - __LLDB_Package="liblldb-3.9-dev" - ;; - lldb4.0) - __LLDB_Package="liblldb-4.0-dev" - ;; - lldb5.0) - __LLDB_Package="liblldb-5.0-dev" - ;; - lldb6.0) - __LLDB_Package="liblldb-6.0-dev" - ;; - no-lldb) - unset __LLDB_Package - ;; - trusty) # Ubuntu 14.04 - if [ "$__LinuxCodeName" != "jessie" ]; then - __LinuxCodeName=trusty - fi - ;; - xenial) # Ubuntu 16.04 - if [ "$__LinuxCodeName" != "jessie" ]; then - __LinuxCodeName=xenial - fi - ;; - zesty) # Ubuntu 17.04 - if [ "$__LinuxCodeName" != "jessie" ]; then - __LinuxCodeName=zesty - fi - ;; - bionic) # Ubuntu 18.04 - if [ "$__LinuxCodeName" != "jessie" ]; then - __LinuxCodeName=bionic - fi - ;; - jessie) # Debian 8 - __LinuxCodeName=jessie - __UbuntuRepo="http://ftp.debian.org/debian/" - ;; - stretch) # Debian 9 - __LinuxCodeName=stretch - __UbuntuRepo="http://ftp.debian.org/debian/" - __LLDB_Package="liblldb-6.0-dev" - ;; - buster) # Debian 10 - __LinuxCodeName=buster - __UbuntuRepo="http://ftp.debian.org/debian/" - __LLDB_Package="liblldb-6.0-dev" - ;; - tizen) - if [ "$__BuildArch" != "armel" ]; then - echo "Tizen is available only for armel." - usage; - exit 1; - fi - __LinuxCodeName= - __UbuntuRepo= - __Tizen=tizen - ;; - alpine) - __LinuxCodeName=alpine - __UbuntuRepo= - ;; - --skipunmount) - __SkipUnmount=1 - ;; - --rootfsdir|-rootfsdir) - shift - __RootfsDir=$1 - ;; - *) - __UnprocessedBuildArgs="$__UnprocessedBuildArgs $1" - ;; - esac - - shift -done - -if [ "$__BuildArch" == "armel" ]; then - __LLDB_Package="lldb-3.5-dev" -fi -__UbuntuPackages+=" ${__LLDB_Package:-}" - -if [ -z "$__RootfsDir" ] && [ ! -z "$ROOTFS_DIR" ]; then - __RootfsDir=$ROOTFS_DIR -fi - -if [ -z "$__RootfsDir" ]; then - __RootfsDir="$__CrossDir/../../../.tools/rootfs/$__BuildArch" -fi - -if [ -d "$__RootfsDir" ]; then - if [ $__SkipUnmount == 0 ]; then - umount $__RootfsDir/* - fi - rm -rf $__RootfsDir -fi - -if [[ "$__LinuxCodeName" == "alpine" ]]; then - __ApkToolsVersion=2.9.1 - __AlpineVersion=3.9 - __ApkToolsDir=$(mktemp -d) - wget https://github.com/alpinelinux/apk-tools/releases/download/v$__ApkToolsVersion/apk-tools-$__ApkToolsVersion-x86_64-linux.tar.gz -P $__ApkToolsDir - tar -xf $__ApkToolsDir/apk-tools-$__ApkToolsVersion-x86_64-linux.tar.gz -C $__ApkToolsDir - mkdir -p $__RootfsDir/usr/bin - cp -v /usr/bin/qemu-$__QEMUArch-static $__RootfsDir/usr/bin - $__ApkToolsDir/apk-tools-$__ApkToolsVersion/apk \ - -X http://dl-cdn.alpinelinux.org/alpine/v$__AlpineVersion/main \ - -X http://dl-cdn.alpinelinux.org/alpine/v$__AlpineVersion/community \ - -X http://dl-cdn.alpinelinux.org/alpine/edge/testing \ - -X http://dl-cdn.alpinelinux.org/alpine/edge/main \ - -U --allow-untrusted --root $__RootfsDir --arch $__AlpineArch --initdb \ - add $__AlpinePackages - rm -r $__ApkToolsDir -elif [[ -n $__LinuxCodeName ]]; then - qemu-debootstrap --arch $__UbuntuArch $__LinuxCodeName $__RootfsDir $__UbuntuRepo - cp $__CrossDir/$__BuildArch/sources.list.$__LinuxCodeName $__RootfsDir/etc/apt/sources.list - chroot $__RootfsDir apt-get update - chroot $__RootfsDir apt-get -f -y install - chroot $__RootfsDir apt-get -y install $__UbuntuPackages - chroot $__RootfsDir symlinks -cr /usr - - if [ $__SkipUnmount == 0 ]; then - umount $__RootfsDir/* - fi - - if [[ "$__BuildArch" == "arm" && "$__LinuxCodeName" == "trusty" ]]; then - pushd $__RootfsDir - patch -p1 < $__CrossDir/$__BuildArch/trusty.patch - patch -p1 < $__CrossDir/$__BuildArch/trusty-lttng-2.4.patch - popd - fi -elif [ "$__Tizen" == "tizen" ]; then - ROOTFS_DIR=$__RootfsDir $__CrossDir/$__BuildArch/tizen-build-rootfs.sh -else - echo "Unsupported target platform." - usage; - exit 1 -fi diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake deleted file mode 100644 index 0eea7d1df3..0000000000 --- a/eng/common/cross/toolchain.cmake +++ /dev/null @@ -1,119 +0,0 @@ -set(CROSS_ROOTFS $ENV{ROOTFS_DIR}) - -set(TARGET_ARCH_NAME $ENV{TARGET_BUILD_ARCH}) -set(CMAKE_SYSTEM_NAME Linux) -set(CMAKE_SYSTEM_VERSION 1) - -if(TARGET_ARCH_NAME STREQUAL "armel") - set(CMAKE_SYSTEM_PROCESSOR armv7l) - set(TOOLCHAIN "arm-linux-gnueabi") - if("$ENV{__DistroRid}" MATCHES "tizen.*") - set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi/6.2.1") - endif() -elseif(TARGET_ARCH_NAME STREQUAL "arm") - set(CMAKE_SYSTEM_PROCESSOR armv7l) - if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/armv6-alpine-linux-musleabihf) - set(TOOLCHAIN "armv6-alpine-linux-musleabihf") - else() - set(TOOLCHAIN "arm-linux-gnueabihf") - endif() -elseif(TARGET_ARCH_NAME STREQUAL "arm64") - set(CMAKE_SYSTEM_PROCESSOR aarch64) - if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/aarch64-alpine-linux-musl) - set(TOOLCHAIN "aarch64-alpine-linux-musl") - else() - set(TOOLCHAIN "aarch64-linux-gnu") - endif() -elseif(TARGET_ARCH_NAME STREQUAL "x86") - set(CMAKE_SYSTEM_PROCESSOR i686) - set(TOOLCHAIN "i686-linux-gnu") -else() - message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, arm64 and x86 are supported!") -endif() - -if(DEFINED ENV{TOOLCHAIN}) - set(TOOLCHAIN $ENV{TOOLCHAIN}) -endif() - -# Specify include paths -if(TARGET_ARCH_NAME STREQUAL "armel") - if(DEFINED TIZEN_TOOLCHAIN) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7l-tizen-linux-gnueabi) - endif() -endif() - -set(CMAKE_SYSROOT "${CROSS_ROOTFS}") -set(CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/usr") -set(CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/usr") -set(CMAKE_ASM_COMPILER_EXTERNAL_TOOLCHAIN "${CROSS_ROOTFS}/usr") - -# Specify link flags - -if(TARGET_ARCH_NAME STREQUAL "armel") - if(DEFINED TIZEN_TOOLCHAIN) # For Tizen only - add_link_options("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") - add_link_options("-L${CROSS_ROOTFS}/lib") - add_link_options("-L${CROSS_ROOTFS}/usr/lib") - add_link_options("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") - endif() -elseif(TARGET_ARCH_NAME STREQUAL "x86") - add_link_options(-m32) -endif() - -# Specify compile options - -if(TARGET_ARCH_NAME MATCHES "^(arm|armel|arm64)$") - set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN}) - set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN}) - set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN}) -endif() - -if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$") - add_compile_options(-mthumb) - add_compile_options(-mfpu=vfpv3) - if(TARGET_ARCH_NAME STREQUAL "armel") - add_compile_options(-mfloat-abi=softfp) - if(DEFINED TIZEN_TOOLCHAIN) - add_compile_options(-Wno-deprecated-declarations) # compile-time option - add_compile_options(-D__extern_always_inline=inline) # compile-time option - endif() - endif() -elseif(TARGET_ARCH_NAME STREQUAL "x86") - add_compile_options(-m32) - add_compile_options(-Wno-error=unused-command-line-argument) -endif() - -# Set LLDB include and library paths for builds that need lldb. -if(TARGET_ARCH_NAME MATCHES "^(arm|armel|x86)$") - if(TARGET_ARCH_NAME STREQUAL "x86") - set(LLVM_CROSS_DIR "$ENV{LLVM_CROSS_HOME}") - else() # arm/armel case - set(LLVM_CROSS_DIR "$ENV{LLVM_ARM_HOME}") - endif() - if(LLVM_CROSS_DIR) - set(WITH_LLDB_LIBS "${LLVM_CROSS_DIR}/lib/" CACHE STRING "") - set(WITH_LLDB_INCLUDES "${LLVM_CROSS_DIR}/include" CACHE STRING "") - set(LLDB_H "${WITH_LLDB_INCLUDES}" CACHE STRING "") - set(LLDB "${LLVM_CROSS_DIR}/lib/liblldb.so" CACHE STRING "") - else() - if(TARGET_ARCH_NAME STREQUAL "x86") - set(WITH_LLDB_LIBS "${CROSS_ROOTFS}/usr/lib/i386-linux-gnu" CACHE STRING "") - set(CHECK_LLVM_DIR "${CROSS_ROOTFS}/usr/lib/llvm-3.8/include") - if(EXISTS "${CHECK_LLVM_DIR}" AND IS_DIRECTORY "${CHECK_LLVM_DIR}") - set(WITH_LLDB_INCLUDES "${CHECK_LLVM_DIR}") - else() - set(WITH_LLDB_INCLUDES "${CROSS_ROOTFS}/usr/lib/llvm-3.6/include") - endif() - else() # arm/armel case - set(WITH_LLDB_LIBS "${CROSS_ROOTFS}/usr/lib/${TOOLCHAIN}" CACHE STRING "") - set(WITH_LLDB_INCLUDES "${CROSS_ROOTFS}/usr/lib/llvm-3.6/include" CACHE STRING "") - endif() - endif() -endif() - - -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/eng/common/cross/x86/sources.list.bionic b/eng/common/cross/x86/sources.list.bionic deleted file mode 100644 index a71ccadcff..0000000000 --- a/eng/common/cross/x86/sources.list.bionic +++ /dev/null @@ -1,11 +0,0 @@ -deb http://archive.ubuntu.com/ubuntu/ bionic main restricted universe -deb-src http://archive.ubuntu.com/ubuntu/ bionic main restricted universe - -deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe -deb-src http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe - -deb http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted -deb-src http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted - -deb http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse -deb-src http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse diff --git a/eng/common/cross/x86/sources.list.trusty b/eng/common/cross/x86/sources.list.trusty deleted file mode 100644 index 9b3085436e..0000000000 --- a/eng/common/cross/x86/sources.list.trusty +++ /dev/null @@ -1,11 +0,0 @@ -deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe -deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted universe - -deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe -deb-src http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe - -deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted -deb-src http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted - -deb http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse -deb-src http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse diff --git a/eng/common/cross/x86/sources.list.xenial b/eng/common/cross/x86/sources.list.xenial deleted file mode 100644 index ad9c5a0144..0000000000 --- a/eng/common/cross/x86/sources.list.xenial +++ /dev/null @@ -1,11 +0,0 @@ -deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe -deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe - -deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe -deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe - -deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted -deb-src http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted - -deb http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse -deb-src http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1 deleted file mode 100644 index fc2190365f..0000000000 --- a/eng/common/darc-init.ps1 +++ /dev/null @@ -1,45 +0,0 @@ -param ( - $darcVersion = $null, - $versionEndpoint = 'https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16', - $verbosity = 'minimal', - $toolpath = $null -) - -. $PSScriptRoot\tools.ps1 - -function InstallDarcCli ($darcVersion) { - $darcCliPackageName = 'microsoft.dotnet.darc' - - $dotnetRoot = InitializeDotNetCli -install:$true - $dotnet = "$dotnetRoot\dotnet.exe" - $toolList = & "$dotnet" tool list -g - - if ($toolList -like "*$darcCliPackageName*") { - & "$dotnet" tool uninstall $darcCliPackageName -g - } - - # If the user didn't explicitly specify the darc version, - # query the Maestro API for the correct version of darc to install. - if (-not $darcVersion) { - $darcVersion = $(Invoke-WebRequest -Uri $versionEndpoint -UseBasicParsing).Content - } - - $arcadeServicesSource = 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json' - - Write-Host "Installing Darc CLI version $darcVersion..." - Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.' - if (-not $toolpath) { - & "$dotnet" tool install $darcCliPackageName --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g - }else { - & "$dotnet" tool install $darcCliPackageName --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath" - } -} - -try { - InstallDarcCli $darcVersion -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'Darc' -Message $_ - ExitWithExitCode 1 -} \ No newline at end of file diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh deleted file mode 100755 index d981d7bbf3..0000000000 --- a/eng/common/darc-init.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env bash - -source="${BASH_SOURCE[0]}" -darcVersion='' -versionEndpoint='https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16' -verbosity='minimal' - -while [[ $# > 0 ]]; do - opt="$(echo "$1" | awk '{print tolower($0)}')" - case "$opt" in - --darcversion) - darcVersion=$2 - shift - ;; - --versionendpoint) - versionEndpoint=$2 - shift - ;; - --verbosity) - verbosity=$2 - shift - ;; - --toolpath) - toolpath=$2 - shift - ;; - *) - echo "Invalid argument: $1" - usage - exit 1 - ;; - esac - - shift -done - -# resolve $source until the file is no longer a symlink -while [[ -h "$source" ]]; do - scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - source="$(readlink "$source")" - # if $source was a relative symlink, we need to resolve it relative to the path where the - # symlink file was located - [[ $source != /* ]] && source="$scriptroot/$source" -done -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -. "$scriptroot/tools.sh" - -if [ -z "$darcVersion" ]; then - darcVersion=$(curl -X GET "$versionEndpoint" -H "accept: text/plain") -fi - -function InstallDarcCli { - local darc_cli_package_name="microsoft.dotnet.darc" - - InitializeDotNetCli - local dotnet_root=$_InitializeDotNetCli - - if [ -z "$toolpath" ]; then - local tool_list=$($dotnet_root/dotnet tool list -g) - if [[ $tool_list = *$darc_cli_package_name* ]]; then - echo $($dotnet_root/dotnet tool uninstall $darc_cli_package_name -g) - fi - else - local tool_list=$($dotnet_root/dotnet tool list --tool-path "$toolpath") - if [[ $tool_list = *$darc_cli_package_name* ]]; then - echo $($dotnet_root/dotnet tool uninstall $darc_cli_package_name --tool-path "$toolpath") - fi - fi - - local arcadeServicesSource="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" - - echo "Installing Darc CLI version $darcVersion..." - echo "You may need to restart your command shell if this is the first dotnet tool you have installed." - if [ -z "$toolpath" ]; then - echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g) - else - echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath") - fi -} - -InstallDarcCli diff --git a/eng/common/dotnet-install.cmd b/eng/common/dotnet-install.cmd deleted file mode 100644 index b1c2642e76..0000000000 --- a/eng/common/dotnet-install.cmd +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0dotnet-install.ps1""" %*" \ No newline at end of file diff --git a/eng/common/dotnet-install.ps1 b/eng/common/dotnet-install.ps1 deleted file mode 100644 index 811f0f717f..0000000000 --- a/eng/common/dotnet-install.ps1 +++ /dev/null @@ -1,28 +0,0 @@ -[CmdletBinding(PositionalBinding=$false)] -Param( - [string] $verbosity = 'minimal', - [string] $architecture = '', - [string] $version = 'Latest', - [string] $runtime = 'dotnet', - [string] $RuntimeSourceFeed = '', - [string] $RuntimeSourceFeedKey = '' -) - -. $PSScriptRoot\tools.ps1 - -$dotnetRoot = Join-Path $RepoRoot '.dotnet' - -$installdir = $dotnetRoot -try { - if ($architecture -and $architecture.Trim() -eq 'x86') { - $installdir = Join-Path $installdir 'x86' - } - InstallDotNet $installdir $version $architecture $runtime $true -RuntimeSourceFeed $RuntimeSourceFeed -RuntimeSourceFeedKey $RuntimeSourceFeedKey -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'InitializeToolset' -Message $_ - ExitWithExitCode 1 -} - -ExitWithExitCode 0 diff --git a/eng/common/dotnet-install.sh b/eng/common/dotnet-install.sh deleted file mode 100755 index 50bc5e475c..0000000000 --- a/eng/common/dotnet-install.sh +++ /dev/null @@ -1,89 +0,0 @@ -#!/usr/bin/env bash - -source="${BASH_SOURCE[0]}" -# resolve $source until the file is no longer a symlink -while [[ -h "$source" ]]; do - scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - source="$(readlink "$source")" - # if $source was a relative symlink, we need to resolve it relative to the path where the - # symlink file was located - [[ $source != /* ]] && source="$scriptroot/$source" -done -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -. "$scriptroot/tools.sh" - -version='Latest' -architecture='' -runtime='dotnet' -runtimeSourceFeed='' -runtimeSourceFeedKey='' -while [[ $# > 0 ]]; do - opt="$(echo "$1" | awk '{print tolower($0)}')" - case "$opt" in - -version|-v) - shift - version="$1" - ;; - -architecture|-a) - shift - architecture="$1" - ;; - -runtime|-r) - shift - runtime="$1" - ;; - -runtimesourcefeed) - shift - runtimeSourceFeed="$1" - ;; - -runtimesourcefeedkey) - shift - runtimeSourceFeedKey="$1" - ;; - *) - Write-PipelineTelemetryError -Category 'Build' -Message "Invalid argument: $1" - exit 1 - ;; - esac - shift -done - -# Use uname to determine what the CPU is. -cpuname=$(uname -p) -# Some Linux platforms report unknown for platform, but the arch for machine. -if [[ "$cpuname" == "unknown" ]]; then - cpuname=$(uname -m) -fi - -case $cpuname in - aarch64) - buildarch=arm64 - ;; - amd64|x86_64) - buildarch=x64 - ;; - armv7l) - buildarch=arm - ;; - i686) - buildarch=x86 - ;; - *) - echo "Unknown CPU $cpuname detected, treating it as x64" - buildarch=x64 - ;; -esac - -dotnetRoot="$repo_root/.dotnet" -if [[ $architecture != "" ]] && [[ $architecture != $buildarch ]]; then - dotnetRoot="$dotnetRoot/$architecture" -fi - -InstallDotNet $dotnetRoot $version "$architecture" $runtime true $runtimeSourceFeed $runtimeSourceFeedKey || { - local exit_code=$? - Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2 - ExitWithExitCode $exit_code -} - -ExitWithExitCode 0 diff --git a/eng/common/enable-cross-org-publishing.ps1 b/eng/common/enable-cross-org-publishing.ps1 deleted file mode 100644 index eccbf9f1b1..0000000000 --- a/eng/common/enable-cross-org-publishing.ps1 +++ /dev/null @@ -1,6 +0,0 @@ -param( - [string] $token -) - -Write-Host "##vso[task.setvariable variable=VSS_NUGET_ACCESSTOKEN]$token" -Write-Host "##vso[task.setvariable variable=VSS_NUGET_URI_PREFIXES]https://dnceng.pkgs.visualstudio.com/;https://pkgs.dev.azure.com/dnceng/;https://devdiv.pkgs.visualstudio.com/;https://pkgs.dev.azure.com/devdiv/" diff --git a/eng/common/generate-graph-files.ps1 b/eng/common/generate-graph-files.ps1 deleted file mode 100644 index 7ad26afa69..0000000000 --- a/eng/common/generate-graph-files.ps1 +++ /dev/null @@ -1,86 +0,0 @@ -Param( - [Parameter(Mandatory=$true)][string] $barToken, # Token generated at https://maestro-prod.westus2.cloudapp.azure.com/Account/Tokens - [Parameter(Mandatory=$true)][string] $gitHubPat, # GitHub personal access token from https://github.com/settings/tokens (no auth scopes needed) - [Parameter(Mandatory=$true)][string] $azdoPat, # Azure Dev Ops tokens from https://dev.azure.com/dnceng/_details/security/tokens (code read scope needed) - [Parameter(Mandatory=$true)][string] $outputFolder, # Where the graphviz.txt file will be created - [string] $darcVersion = '1.1.0-beta.19175.6', # darc's version - [string] $graphvizVersion = '2.38', # GraphViz version - [switch] $includeToolset # Whether the graph should include toolset dependencies or not. i.e. arcade, optimization. For more about - # toolset dependencies see https://github.com/dotnet/arcade/blob/master/Documentation/Darc.md#toolset-vs-product-dependencies -) - -function CheckExitCode ([string]$stage) -{ - $exitCode = $LASTEXITCODE - if ($exitCode -ne 0) { - Write-PipelineTelemetryError -Category 'Arcade' -Message "Something failed in stage: '$stage'. Check for errors above. Exiting now..." - ExitWithExitCode $exitCode - } -} - -try { - $ErrorActionPreference = 'Stop' - . $PSScriptRoot\tools.ps1 - - Import-Module -Name (Join-Path $PSScriptRoot 'native\CommonLibrary.psm1') - - Push-Location $PSScriptRoot - - Write-Host 'Installing darc...' - . .\darc-init.ps1 -darcVersion $darcVersion - CheckExitCode 'Running darc-init' - - $engCommonBaseDir = Join-Path $PSScriptRoot 'native\' - $graphvizInstallDir = CommonLibrary\Get-NativeInstallDirectory - $nativeToolBaseUri = 'https://netcorenativeassets.blob.core.windows.net/resource-packages/external' - $installBin = Join-Path $graphvizInstallDir 'bin' - - Write-Host 'Installing dot...' - .\native\install-tool.ps1 -ToolName graphviz -InstallPath $installBin -BaseUri $nativeToolBaseUri -CommonLibraryDirectory $engCommonBaseDir -Version $graphvizVersion -Verbose - - $darcExe = "$env:USERPROFILE\.dotnet\tools" - $darcExe = Resolve-Path "$darcExe\darc.exe" - - Create-Directory $outputFolder - - # Generate 3 graph descriptions: - # 1. Flat with coherency information - # 2. Graphviz (dot) file - # 3. Standard dependency graph - $graphVizFilePath = "$outputFolder\graphviz.txt" - $graphVizImageFilePath = "$outputFolder\graph.png" - $normalGraphFilePath = "$outputFolder\graph-full.txt" - $flatGraphFilePath = "$outputFolder\graph-flat.txt" - $baseOptions = @( '--github-pat', "$gitHubPat", '--azdev-pat', "$azdoPat", '--password', "$barToken" ) - - if ($includeToolset) { - Write-Host 'Toolsets will be included in the graph...' - $baseOptions += @( '--include-toolset' ) - } - - Write-Host 'Generating standard dependency graph...' - & "$darcExe" get-dependency-graph @baseOptions --output-file $normalGraphFilePath - CheckExitCode 'Generating normal dependency graph' - - Write-Host 'Generating flat dependency graph and graphviz file...' - & "$darcExe" get-dependency-graph @baseOptions --flat --coherency --graphviz $graphVizFilePath --output-file $flatGraphFilePath - CheckExitCode 'Generating flat and graphviz dependency graph' - - Write-Host "Generating graph image $graphVizFilePath" - $dotFilePath = Join-Path $installBin "graphviz\$graphvizVersion\release\bin\dot.exe" - & "$dotFilePath" -Tpng -o"$graphVizImageFilePath" "$graphVizFilePath" - CheckExitCode 'Generating graphviz image' - - Write-Host "'$graphVizFilePath', '$flatGraphFilePath', '$normalGraphFilePath' and '$graphVizImageFilePath' created!" -} -catch { - if (!$includeToolset) { - Write-Host 'This might be a toolset repo which includes only toolset dependencies. ' -NoNewline -ForegroundColor Yellow - Write-Host 'Since -includeToolset is not set there is no graph to create. Include -includeToolset and try again...' -ForegroundColor Yellow - } - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'Arcade' -Message $_ - ExitWithExitCode 1 -} finally { - Pop-Location -} \ No newline at end of file diff --git a/eng/common/helixpublish.proj b/eng/common/helixpublish.proj deleted file mode 100644 index d7f185856e..0000000000 --- a/eng/common/helixpublish.proj +++ /dev/null @@ -1,26 +0,0 @@ - - - - msbuild - - - - - %(Identity) - - - - - - $(WorkItemDirectory) - $(WorkItemCommand) - $(WorkItemTimeout) - - - - - - - - - diff --git a/eng/common/init-tools-native.cmd b/eng/common/init-tools-native.cmd deleted file mode 100644 index 438cd548c4..0000000000 --- a/eng/common/init-tools-native.cmd +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -powershell -NoProfile -NoLogo -ExecutionPolicy ByPass -command "& """%~dp0init-tools-native.ps1""" %*" -exit /b %ErrorLevel% \ No newline at end of file diff --git a/eng/common/init-tools-native.ps1 b/eng/common/init-tools-native.ps1 deleted file mode 100644 index db830c00a6..0000000000 --- a/eng/common/init-tools-native.ps1 +++ /dev/null @@ -1,152 +0,0 @@ -<# -.SYNOPSIS -Entry point script for installing native tools - -.DESCRIPTION -Reads $RepoRoot\global.json file to determine native assets to install -and executes installers for those tools - -.PARAMETER BaseUri -Base file directory or Url from which to acquire tool archives - -.PARAMETER InstallDirectory -Directory to install native toolset. This is a command-line override for the default -Install directory precedence order: -- InstallDirectory command-line override -- NETCOREENG_INSTALL_DIRECTORY environment variable -- (default) %USERPROFILE%/.netcoreeng/native - -.PARAMETER Clean -Switch specifying to not install anything, but cleanup native asset folders - -.PARAMETER Force -Clean and then install tools - -.PARAMETER DownloadRetries -Total number of retry attempts - -.PARAMETER RetryWaitTimeInSeconds -Wait time between retry attempts in seconds - -.PARAMETER GlobalJsonFile -File path to global.json file - -.NOTES -#> -[CmdletBinding(PositionalBinding=$false)] -Param ( - [string] $BaseUri = 'https://netcorenativeassets.blob.core.windows.net/resource-packages/external', - [string] $InstallDirectory, - [switch] $Clean = $False, - [switch] $Force = $False, - [int] $DownloadRetries = 5, - [int] $RetryWaitTimeInSeconds = 30, - [string] $GlobalJsonFile -) - -if (!$GlobalJsonFile) { - $GlobalJsonFile = Join-Path (Get-Item $PSScriptRoot).Parent.Parent.FullName 'global.json' -} - -Set-StrictMode -version 2.0 -$ErrorActionPreference='Stop' - -. $PSScriptRoot\pipeline-logging-functions.ps1 -Import-Module -Name (Join-Path $PSScriptRoot 'native\CommonLibrary.psm1') - -try { - # Define verbose switch if undefined - $Verbose = $VerbosePreference -Eq 'Continue' - - $EngCommonBaseDir = Join-Path $PSScriptRoot 'native\' - $NativeBaseDir = $InstallDirectory - if (!$NativeBaseDir) { - $NativeBaseDir = CommonLibrary\Get-NativeInstallDirectory - } - $Env:CommonLibrary_NativeInstallDir = $NativeBaseDir - $InstallBin = Join-Path $NativeBaseDir 'bin' - $InstallerPath = Join-Path $EngCommonBaseDir 'install-tool.ps1' - - # Process tools list - Write-Host "Processing $GlobalJsonFile" - If (-Not (Test-Path $GlobalJsonFile)) { - Write-Host "Unable to find '$GlobalJsonFile'" - exit 0 - } - $NativeTools = Get-Content($GlobalJsonFile) -Raw | - ConvertFrom-Json | - Select-Object -Expand 'native-tools' -ErrorAction SilentlyContinue - if ($NativeTools) { - $NativeTools.PSObject.Properties | ForEach-Object { - $ToolName = $_.Name - $ToolVersion = $_.Value - $LocalInstallerArguments = @{ ToolName = "$ToolName" } - $LocalInstallerArguments += @{ InstallPath = "$InstallBin" } - $LocalInstallerArguments += @{ BaseUri = "$BaseUri" } - $LocalInstallerArguments += @{ CommonLibraryDirectory = "$EngCommonBaseDir" } - $LocalInstallerArguments += @{ Version = "$ToolVersion" } - - if ($Verbose) { - $LocalInstallerArguments += @{ Verbose = $True } - } - if (Get-Variable 'Force' -ErrorAction 'SilentlyContinue') { - if($Force) { - $LocalInstallerArguments += @{ Force = $True } - } - } - if ($Clean) { - $LocalInstallerArguments += @{ Clean = $True } - } - - Write-Verbose "Installing $ToolName version $ToolVersion" - Write-Verbose "Executing '$InstallerPath $($LocalInstallerArguments.Keys.ForEach({"-$_ '$($LocalInstallerArguments.$_)'"}) -join ' ')'" - & $InstallerPath @LocalInstallerArguments - if ($LASTEXITCODE -Ne "0") { - $errMsg = "$ToolName installation failed" - if ((Get-Variable 'DoNotAbortNativeToolsInstallationOnFailure' -ErrorAction 'SilentlyContinue') -and $DoNotAbortNativeToolsInstallationOnFailure) { - $showNativeToolsWarning = $true - if ((Get-Variable 'DoNotDisplayNativeToolsInstallationWarnings' -ErrorAction 'SilentlyContinue') -and $DoNotDisplayNativeToolsInstallationWarnings) { - $showNativeToolsWarning = $false - } - if ($showNativeToolsWarning) { - Write-Warning $errMsg - } - $toolInstallationFailure = $true - } else { - # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482 - Write-Host $errMsg - exit 1 - } - } - } - - if ((Get-Variable 'toolInstallationFailure' -ErrorAction 'SilentlyContinue') -and $toolInstallationFailure) { - # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482 - Write-Host 'Native tools bootstrap failed' - exit 1 - } - } - else { - Write-Host 'No native tools defined in global.json' - exit 0 - } - - if ($Clean) { - exit 0 - } - if (Test-Path $InstallBin) { - Write-Host 'Native tools are available from ' (Convert-Path -Path $InstallBin) - Write-Host "##vso[task.prependpath]$(Convert-Path -Path $InstallBin)" - return $InstallBin - } - else { - Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message 'Native tools install directory does not exist, installation failed' - exit 1 - } - exit 0 -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message $_ - ExitWithExitCode 1 -} diff --git a/eng/common/init-tools-native.sh b/eng/common/init-tools-native.sh deleted file mode 100755 index dbd7cbfdf6..0000000000 --- a/eng/common/init-tools-native.sh +++ /dev/null @@ -1,142 +0,0 @@ -#!/usr/bin/env bash - -source="${BASH_SOURCE[0]}" -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -base_uri='https://netcorenativeassets.blob.core.windows.net/resource-packages/external' -install_directory='' -clean=false -force=false -download_retries=5 -retry_wait_time_seconds=30 -global_json_file="$(dirname "$(dirname "${scriptroot}")")/global.json" -declare -A native_assets - -. $scriptroot/pipeline-logging-functions.sh -. $scriptroot/native/common-library.sh - -while (($# > 0)); do - lowerI="$(echo $1 | awk '{print tolower($0)}')" - case $lowerI in - --baseuri) - base_uri=$2 - shift 2 - ;; - --installdirectory) - install_directory=$2 - shift 2 - ;; - --clean) - clean=true - shift 1 - ;; - --force) - force=true - shift 1 - ;; - --downloadretries) - download_retries=$2 - shift 2 - ;; - --retrywaittimeseconds) - retry_wait_time_seconds=$2 - shift 2 - ;; - --help) - echo "Common settings:" - echo " --installdirectory Directory to install native toolset." - echo " This is a command-line override for the default" - echo " Install directory precedence order:" - echo " - InstallDirectory command-line override" - echo " - NETCOREENG_INSTALL_DIRECTORY environment variable" - echo " - (default) %USERPROFILE%/.netcoreeng/native" - echo "" - echo " --clean Switch specifying not to install anything, but cleanup native asset folders" - echo " --force Clean and then install tools" - echo " --help Print help and exit" - echo "" - echo "Advanced settings:" - echo " --baseuri Base URI for where to download native tools from" - echo " --downloadretries Number of times a download should be attempted" - echo " --retrywaittimeseconds Wait time between download attempts" - echo "" - exit 0 - ;; - esac -done - -function ReadGlobalJsonNativeTools { - # Get the native-tools section from the global.json. - local native_tools_section=$(cat $global_json_file | awk '/"native-tools"/,/}/') - # Only extract the contents of the object. - local native_tools_list=$(echo $native_tools_section | awk -F"[{}]" '{print $2}') - native_tools_list=${native_tools_list//[\" ]/} - native_tools_list=$( echo "$native_tools_list" | sed 's/\s//g' | sed 's/,/\n/g' ) - - local old_IFS=$IFS - while read -r line; do - # Lines are of the form: 'tool:version' - IFS=: - while read -r key value; do - native_assets[$key]=$value - done <<< "$line" - done <<< "$native_tools_list" - IFS=$old_IFS - - return 0; -} - -native_base_dir=$install_directory -if [[ -z $install_directory ]]; then - native_base_dir=$(GetNativeInstallDirectory) -fi - -install_bin="${native_base_dir}/bin" - -ReadGlobalJsonNativeTools - -if [[ ${#native_assets[@]} -eq 0 ]]; then - echo "No native tools defined in global.json" - exit 0; -else - native_installer_dir="$scriptroot/native" - for tool in "${!native_assets[@]}" - do - tool_version=${native_assets[$tool]} - installer_name="install-$tool.sh" - installer_command="$native_installer_dir/$installer_name" - installer_command+=" --baseuri $base_uri" - installer_command+=" --installpath $install_bin" - installer_command+=" --version $tool_version" - echo $installer_command - - if [[ $force = true ]]; then - installer_command+=" --force" - fi - - if [[ $clean = true ]]; then - installer_command+=" --clean" - fi - - $installer_command - - if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Execution Failed" - exit 1 - fi - done -fi - -if [[ $clean = true ]]; then - exit 0 -fi - -if [[ -d $install_bin ]]; then - echo "Native tools are available from $install_bin" - echo "##vso[task.prependpath]$install_bin" -else - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Native tools install directory does not exist, installation failed" - exit 1 -fi - -exit 0 diff --git a/eng/common/internal-feed-operations.ps1 b/eng/common/internal-feed-operations.ps1 deleted file mode 100644 index db0baac9a4..0000000000 --- a/eng/common/internal-feed-operations.ps1 +++ /dev/null @@ -1,133 +0,0 @@ -param( - [Parameter(Mandatory=$true)][string] $Operation, - [string] $AuthToken, - [string] $CommitSha, - [string] $RepoName, - [switch] $IsFeedPrivate -) - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 -. $PSScriptRoot\tools.ps1 - -# Sets VSS_NUGET_EXTERNAL_FEED_ENDPOINTS based on the "darc-int-*" feeds defined in NuGet.config. This is needed -# in build agents by CredProvider to authenticate the restore requests to internal feeds as specified in -# https://github.com/microsoft/artifacts-credprovider/blob/0f53327cd12fd893d8627d7b08a2171bf5852a41/README.md#environment-variables. This should ONLY be called from identified -# internal builds -function SetupCredProvider { - param( - [string] $AuthToken - ) - - # Install the Cred Provider NuGet plugin - Write-Host 'Setting up Cred Provider NuGet plugin in the agent...' - Write-Host "Getting 'installcredprovider.ps1' from 'https://github.com/microsoft/artifacts-credprovider'..." - - $url = 'https://raw.githubusercontent.com/microsoft/artifacts-credprovider/master/helpers/installcredprovider.ps1' - - Write-Host "Writing the contents of 'installcredprovider.ps1' locally..." - Invoke-WebRequest $url -OutFile installcredprovider.ps1 - - Write-Host 'Installing plugin...' - .\installcredprovider.ps1 -Force - - Write-Host "Deleting local copy of 'installcredprovider.ps1'..." - Remove-Item .\installcredprovider.ps1 - - if (-Not("$env:USERPROFILE\.nuget\plugins\netcore")) { - Write-PipelineTelemetryError -Category 'Arcade' -Message 'CredProvider plugin was not installed correctly!' - ExitWithExitCode 1 - } - else { - Write-Host 'CredProvider plugin was installed correctly!' - } - - # Then, we set the 'VSS_NUGET_EXTERNAL_FEED_ENDPOINTS' environment variable to restore from the stable - # feeds successfully - - $nugetConfigPath = "$RepoRoot\NuGet.config" - - if (-Not (Test-Path -Path $nugetConfigPath)) { - Write-PipelineTelemetryError -Category 'Build' -Message 'NuGet.config file not found in repo root!' - ExitWithExitCode 1 - } - - $endpoints = New-Object System.Collections.ArrayList - $nugetConfigPackageSources = Select-Xml -Path $nugetConfigPath -XPath "//packageSources/add[contains(@key, 'darc-int-')]/@value" | foreach{$_.Node.Value} - - if (($nugetConfigPackageSources | Measure-Object).Count -gt 0 ) { - foreach ($stableRestoreResource in $nugetConfigPackageSources) { - $trimmedResource = ([string]$stableRestoreResource).Trim() - [void]$endpoints.Add(@{endpoint="$trimmedResource"; password="$AuthToken"}) - } - } - - if (($endpoints | Measure-Object).Count -gt 0) { - # Create the JSON object. It should look like '{"endpointCredentials": [{"endpoint":"http://example.index.json", "username":"optional", "password":"accesstoken"}]}' - $endpointCredentials = @{endpointCredentials=$endpoints} | ConvertTo-Json -Compress - - # Create the environment variables the AzDo way - Write-LoggingCommand -Area 'task' -Event 'setvariable' -Data $endpointCredentials -Properties @{ - 'variable' = 'VSS_NUGET_EXTERNAL_FEED_ENDPOINTS' - 'issecret' = 'false' - } - - # We don't want sessions cached since we will be updating the endpoints quite frequently - Write-LoggingCommand -Area 'task' -Event 'setvariable' -Data 'False' -Properties @{ - 'variable' = 'NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED' - 'issecret' = 'false' - } - } - else - { - Write-Host 'No internal endpoints found in NuGet.config' - } -} - -#Workaround for https://github.com/microsoft/msbuild/issues/4430 -function InstallDotNetSdkAndRestoreArcade { - $dotnetTempDir = "$RepoRoot\dotnet" - $dotnetSdkVersion="2.1.507" # After experimentation we know this version works when restoring the SDK (compared to 3.0.*) - $dotnet = "$dotnetTempDir\dotnet.exe" - $restoreProjPath = "$PSScriptRoot\restore.proj" - - Write-Host "Installing dotnet SDK version $dotnetSdkVersion to restore Arcade SDK..." - InstallDotNetSdk "$dotnetTempDir" "$dotnetSdkVersion" - - '' | Out-File "$restoreProjPath" - - & $dotnet restore $restoreProjPath - - Write-Host 'Arcade SDK restored!' - - if (Test-Path -Path $restoreProjPath) { - Remove-Item $restoreProjPath - } - - if (Test-Path -Path $dotnetTempDir) { - Remove-Item $dotnetTempDir -Recurse - } -} - -try { - Push-Location $PSScriptRoot - - if ($Operation -like 'setup') { - SetupCredProvider $AuthToken - } - elseif ($Operation -like 'install-restore') { - InstallDotNetSdkAndRestoreArcade - } - else { - Write-PipelineTelemetryError -Category 'Arcade' -Message "Unknown operation '$Operation'!" - ExitWithExitCode 1 - } -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'Arcade' -Message $_ - ExitWithExitCode 1 -} -finally { - Pop-Location -} diff --git a/eng/common/internal-feed-operations.sh b/eng/common/internal-feed-operations.sh deleted file mode 100755 index 5941ea2833..0000000000 --- a/eng/common/internal-feed-operations.sh +++ /dev/null @@ -1,142 +0,0 @@ -#!/usr/bin/env bash - -set -e - -# Sets VSS_NUGET_EXTERNAL_FEED_ENDPOINTS based on the "darc-int-*" feeds defined in NuGet.config. This is needed -# in build agents by CredProvider to authenticate the restore requests to internal feeds as specified in -# https://github.com/microsoft/artifacts-credprovider/blob/0f53327cd12fd893d8627d7b08a2171bf5852a41/README.md#environment-variables. -# This should ONLY be called from identified internal builds -function SetupCredProvider { - local authToken=$1 - - # Install the Cred Provider NuGet plugin - echo "Setting up Cred Provider NuGet plugin in the agent..."... - echo "Getting 'installcredprovider.ps1' from 'https://github.com/microsoft/artifacts-credprovider'..." - - local url="https://raw.githubusercontent.com/microsoft/artifacts-credprovider/master/helpers/installcredprovider.sh" - - echo "Writing the contents of 'installcredprovider.ps1' locally..." - local installcredproviderPath="installcredprovider.sh" - if command -v curl > /dev/null; then - curl $url > "$installcredproviderPath" - else - wget -q -O "$installcredproviderPath" "$url" - fi - - echo "Installing plugin..." - . "$installcredproviderPath" - - echo "Deleting local copy of 'installcredprovider.sh'..." - rm installcredprovider.sh - - if [ ! -d "$HOME/.nuget/plugins" ]; then - Write-PipelineTelemetryError -category 'Build' 'CredProvider plugin was not installed correctly!' - ExitWithExitCode 1 - else - echo "CredProvider plugin was installed correctly!" - fi - - # Then, we set the 'VSS_NUGET_EXTERNAL_FEED_ENDPOINTS' environment variable to restore from the stable - # feeds successfully - - local nugetConfigPath="$repo_root/NuGet.config" - - if [ ! "$nugetConfigPath" ]; then - Write-PipelineTelemetryError -category 'Build' "NuGet.config file not found in repo's root!" - ExitWithExitCode 1 - fi - - local endpoints='[' - local nugetConfigPackageValues=`cat "$nugetConfigPath" | grep "key=\"darc-int-"` - local pattern="value=\"(.*)\"" - - for value in $nugetConfigPackageValues - do - if [[ $value =~ $pattern ]]; then - local endpoint="${BASH_REMATCH[1]}" - endpoints+="{\"endpoint\": \"$endpoint\", \"password\": \"$authToken\"}," - fi - done - - endpoints=${endpoints%?} - endpoints+=']' - - if [ ${#endpoints} -gt 2 ]; then - # Create the JSON object. It should look like '{"endpointCredentials": [{"endpoint":"http://example.index.json", "username":"optional", "password":"accesstoken"}]}' - local endpointCredentials="{\"endpointCredentials\": "$endpoints"}" - - echo "##vso[task.setvariable variable=VSS_NUGET_EXTERNAL_FEED_ENDPOINTS]$endpointCredentials" - echo "##vso[task.setvariable variable=NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED]False" - else - echo "No internal endpoints found in NuGet.config" - fi -} - -# Workaround for https://github.com/microsoft/msbuild/issues/4430 -function InstallDotNetSdkAndRestoreArcade { - local dotnetTempDir="$repo_root/dotnet" - local dotnetSdkVersion="2.1.507" # After experimentation we know this version works when restoring the SDK (compared to 3.0.*) - local restoreProjPath="$repo_root/eng/common/restore.proj" - - echo "Installing dotnet SDK version $dotnetSdkVersion to restore Arcade SDK..." - echo "" > "$restoreProjPath" - - InstallDotNetSdk "$dotnetTempDir" "$dotnetSdkVersion" - - local res=`$dotnetTempDir/dotnet restore $restoreProjPath` - echo "Arcade SDK restored!" - - # Cleanup - if [ "$restoreProjPath" ]; then - rm "$restoreProjPath" - fi - - if [ "$dotnetTempDir" ]; then - rm -r $dotnetTempDir - fi -} - -source="${BASH_SOURCE[0]}" -operation='' -authToken='' -repoName='' - -while [[ $# > 0 ]]; do - opt="$(echo "$1" | awk '{print tolower($0)}')" - case "$opt" in - --operation) - operation=$2 - shift - ;; - --authtoken) - authToken=$2 - shift - ;; - *) - echo "Invalid argument: $1" - usage - exit 1 - ;; - esac - - shift -done - -while [[ -h "$source" ]]; do - scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - source="$(readlink "$source")" - # if $source was a relative symlink, we need to resolve it relative to the path where the - # symlink file was located - [[ $source != /* ]] && source="$scriptroot/$source" -done -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -. "$scriptroot/tools.sh" - -if [ "$operation" = "setup" ]; then - SetupCredProvider $authToken -elif [ "$operation" = "install-restore" ]; then - InstallDotNetSdkAndRestoreArcade -else - echo "Unknown operation '$operation'!" -fi diff --git a/eng/common/internal/Directory.Build.props b/eng/common/internal/Directory.Build.props deleted file mode 100644 index e33179ef37..0000000000 --- a/eng/common/internal/Directory.Build.props +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/eng/common/internal/Tools.csproj b/eng/common/internal/Tools.csproj deleted file mode 100644 index 1a39a7ef3f..0000000000 --- a/eng/common/internal/Tools.csproj +++ /dev/null @@ -1,27 +0,0 @@ - - - - - net472 - false - - - - - - - - - - - https://devdiv.pkgs.visualstudio.com/_packaging/dotnet-core-internal-tooling/nuget/v3/index.json; - - - $(RestoreSources); - https://devdiv.pkgs.visualstudio.com/_packaging/VS/nuget/v3/index.json; - - - - - - diff --git a/eng/common/msbuild.ps1 b/eng/common/msbuild.ps1 deleted file mode 100644 index c640123000..0000000000 --- a/eng/common/msbuild.ps1 +++ /dev/null @@ -1,26 +0,0 @@ -[CmdletBinding(PositionalBinding=$false)] -Param( - [string] $verbosity = 'minimal', - [bool] $warnAsError = $true, - [bool] $nodeReuse = $true, - [switch] $ci, - [switch] $prepareMachine, - [Parameter(ValueFromRemainingArguments=$true)][String[]]$extraArgs -) - -. $PSScriptRoot\tools.ps1 - -try { - if ($ci) { - $nodeReuse = $false - } - - MSBuild @extraArgs -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'Build' -Message $_ - ExitWithExitCode 1 -} - -ExitWithExitCode 0 \ No newline at end of file diff --git a/eng/common/msbuild.sh b/eng/common/msbuild.sh deleted file mode 100755 index 8160cd5a59..0000000000 --- a/eng/common/msbuild.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env bash - -source="${BASH_SOURCE[0]}" - -# resolve $source until the file is no longer a symlink -while [[ -h "$source" ]]; do - scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - source="$(readlink "$source")" - # if $source was a relative symlink, we need to resolve it relative to the path where the - # symlink file was located - [[ $source != /* ]] && source="$scriptroot/$source" -done -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -verbosity='minimal' -warn_as_error=true -node_reuse=true -prepare_machine=false -extra_args='' - -while (($# > 0)); do - lowerI="$(echo $1 | awk '{print tolower($0)}')" - case $lowerI in - --verbosity) - verbosity=$2 - shift 2 - ;; - --warnaserror) - warn_as_error=$2 - shift 2 - ;; - --nodereuse) - node_reuse=$2 - shift 2 - ;; - --ci) - ci=true - shift 1 - ;; - --preparemachine) - prepare_machine=true - shift 1 - ;; - *) - extra_args="$extra_args $1" - shift 1 - ;; - esac -done - -. "$scriptroot/tools.sh" - -if [[ "$ci" == true ]]; then - node_reuse=false -fi - -MSBuild $extra_args -ExitWithExitCode 0 diff --git a/eng/common/native/CommonLibrary.psm1 b/eng/common/native/CommonLibrary.psm1 deleted file mode 100644 index 41416862d9..0000000000 --- a/eng/common/native/CommonLibrary.psm1 +++ /dev/null @@ -1,389 +0,0 @@ -<# -.SYNOPSIS -Helper module to install an archive to a directory - -.DESCRIPTION -Helper module to download and extract an archive to a specified directory - -.PARAMETER Uri -Uri of artifact to download - -.PARAMETER InstallDirectory -Directory to extract artifact contents to - -.PARAMETER Force -Force download / extraction if file or contents already exist. Default = False - -.PARAMETER DownloadRetries -Total number of retry attempts. Default = 5 - -.PARAMETER RetryWaitTimeInSeconds -Wait time between retry attempts in seconds. Default = 30 - -.NOTES -Returns False if download or extraction fail, True otherwise -#> -function DownloadAndExtract { - [CmdletBinding(PositionalBinding=$false)] - Param ( - [Parameter(Mandatory=$True)] - [string] $Uri, - [Parameter(Mandatory=$True)] - [string] $InstallDirectory, - [switch] $Force = $False, - [int] $DownloadRetries = 5, - [int] $RetryWaitTimeInSeconds = 30 - ) - # Define verbose switch if undefined - $Verbose = $VerbosePreference -Eq "Continue" - - $TempToolPath = CommonLibrary\Get-TempPathFilename -Path $Uri - - # Download native tool - $DownloadStatus = CommonLibrary\Get-File -Uri $Uri ` - -Path $TempToolPath ` - -DownloadRetries $DownloadRetries ` - -RetryWaitTimeInSeconds $RetryWaitTimeInSeconds ` - -Force:$Force ` - -Verbose:$Verbose - - if ($DownloadStatus -Eq $False) { - Write-Error "Download failed" - return $False - } - - # Extract native tool - $UnzipStatus = CommonLibrary\Expand-Zip -ZipPath $TempToolPath ` - -OutputDirectory $InstallDirectory ` - -Force:$Force ` - -Verbose:$Verbose - - if ($UnzipStatus -Eq $False) { - # Retry Download one more time with Force=true - $DownloadRetryStatus = CommonLibrary\Get-File -Uri $Uri ` - -Path $TempToolPath ` - -DownloadRetries 1 ` - -RetryWaitTimeInSeconds $RetryWaitTimeInSeconds ` - -Force:$True ` - -Verbose:$Verbose - - if ($DownloadRetryStatus -Eq $False) { - Write-Error "Last attempt of download failed as well" - return $False - } - - # Retry unzip again one more time with Force=true - $UnzipRetryStatus = CommonLibrary\Expand-Zip -ZipPath $TempToolPath ` - -OutputDirectory $InstallDirectory ` - -Force:$True ` - -Verbose:$Verbose - if ($UnzipRetryStatus -Eq $False) - { - Write-Error "Last attempt of unzip failed as well" - # Clean up partial zips and extracts - if (Test-Path $TempToolPath) { - Remove-Item $TempToolPath -Force - } - if (Test-Path $InstallDirectory) { - Remove-Item $InstallDirectory -Force -Recurse - } - return $False - } - } - - return $True -} - -<# -.SYNOPSIS -Download a file, retry on failure - -.DESCRIPTION -Download specified file and retry if attempt fails - -.PARAMETER Uri -Uri of file to download. If Uri is a local path, the file will be copied instead of downloaded - -.PARAMETER Path -Path to download or copy uri file to - -.PARAMETER Force -Overwrite existing file if present. Default = False - -.PARAMETER DownloadRetries -Total number of retry attempts. Default = 5 - -.PARAMETER RetryWaitTimeInSeconds -Wait time between retry attempts in seconds Default = 30 - -#> -function Get-File { - [CmdletBinding(PositionalBinding=$false)] - Param ( - [Parameter(Mandatory=$True)] - [string] $Uri, - [Parameter(Mandatory=$True)] - [string] $Path, - [int] $DownloadRetries = 5, - [int] $RetryWaitTimeInSeconds = 30, - [switch] $Force = $False - ) - $Attempt = 0 - - if ($Force) { - if (Test-Path $Path) { - Remove-Item $Path -Force - } - } - if (Test-Path $Path) { - Write-Host "File '$Path' already exists, skipping download" - return $True - } - - $DownloadDirectory = Split-Path -ErrorAction Ignore -Path "$Path" -Parent - if (-Not (Test-Path $DownloadDirectory)) { - New-Item -path $DownloadDirectory -force -itemType "Directory" | Out-Null - } - - if (Test-Path -IsValid -Path $Uri) { - Write-Verbose "'$Uri' is a file path, copying file to '$Path'" - Copy-Item -Path $Uri -Destination $Path - return $? - } - else { - Write-Verbose "Downloading $Uri" - # Don't display the console progress UI - it's a huge perf hit - $ProgressPreference = 'SilentlyContinue' - while($Attempt -Lt $DownloadRetries) - { - try { - Invoke-WebRequest -UseBasicParsing -Uri $Uri -OutFile $Path - Write-Verbose "Downloaded to '$Path'" - return $True - } - catch { - $Attempt++ - if ($Attempt -Lt $DownloadRetries) { - $AttemptsLeft = $DownloadRetries - $Attempt - Write-Warning "Download failed, $AttemptsLeft attempts remaining, will retry in $RetryWaitTimeInSeconds seconds" - Start-Sleep -Seconds $RetryWaitTimeInSeconds - } - else { - Write-Error $_ - Write-Error $_.Exception - } - } - } - } - - return $False -} - -<# -.SYNOPSIS -Generate a shim for a native tool - -.DESCRIPTION -Creates a wrapper script (shim) that passes arguments forward to native tool assembly - -.PARAMETER ShimName -The name of the shim - -.PARAMETER ShimDirectory -The directory where shims are stored - -.PARAMETER ToolFilePath -Path to file that shim forwards to - -.PARAMETER Force -Replace shim if already present. Default = False - -.NOTES -Returns $True if generating shim succeeds, $False otherwise -#> -function New-ScriptShim { - [CmdletBinding(PositionalBinding=$false)] - Param ( - [Parameter(Mandatory=$True)] - [string] $ShimName, - [Parameter(Mandatory=$True)] - [string] $ShimDirectory, - [Parameter(Mandatory=$True)] - [string] $ToolFilePath, - [Parameter(Mandatory=$True)] - [string] $BaseUri, - [switch] $Force - ) - try { - Write-Verbose "Generating '$ShimName' shim" - - if (-Not (Test-Path $ToolFilePath)){ - Write-Error "Specified tool file path '$ToolFilePath' does not exist" - return $False - } - - # WinShimmer is a small .NET Framework program that creates .exe shims to bootstrapped programs - # Many of the checks for installed programs expect a .exe extension for Windows tools, rather - # than a .bat or .cmd file. - # Source: https://github.com/dotnet/arcade/tree/master/src/WinShimmer - if (-Not (Test-Path "$ShimDirectory\WinShimmer\winshimmer.exe")) { - $InstallStatus = DownloadAndExtract -Uri "$BaseUri/windows/winshimmer/WinShimmer.zip" ` - -InstallDirectory $ShimDirectory\WinShimmer ` - -Force:$Force ` - -DownloadRetries 2 ` - -RetryWaitTimeInSeconds 5 ` - -Verbose:$Verbose - } - - if ((Test-Path (Join-Path $ShimDirectory "$ShimName.exe"))) { - Write-Host "$ShimName.exe already exists; replacing..." - Remove-Item (Join-Path $ShimDirectory "$ShimName.exe") - } - - & "$ShimDirectory\WinShimmer\winshimmer.exe" $ShimName $ToolFilePath $ShimDirectory - return $True - } - catch { - Write-Host $_ - Write-Host $_.Exception - return $False - } -} - -<# -.SYNOPSIS -Returns the machine architecture of the host machine - -.NOTES -Returns 'x64' on 64 bit machines - Returns 'x86' on 32 bit machines -#> -function Get-MachineArchitecture { - $ProcessorArchitecture = $Env:PROCESSOR_ARCHITECTURE - $ProcessorArchitectureW6432 = $Env:PROCESSOR_ARCHITEW6432 - if($ProcessorArchitecture -Eq "X86") - { - if(($ProcessorArchitectureW6432 -Eq "") -Or - ($ProcessorArchitectureW6432 -Eq "X86")) { - return "x86" - } - $ProcessorArchitecture = $ProcessorArchitectureW6432 - } - if (($ProcessorArchitecture -Eq "AMD64") -Or - ($ProcessorArchitecture -Eq "IA64") -Or - ($ProcessorArchitecture -Eq "ARM64")) { - return "x64" - } - return "x86" -} - -<# -.SYNOPSIS -Get the name of a temporary folder under the native install directory -#> -function Get-TempDirectory { - return Join-Path (Get-NativeInstallDirectory) "temp/" -} - -function Get-TempPathFilename { - [CmdletBinding(PositionalBinding=$false)] - Param ( - [Parameter(Mandatory=$True)] - [string] $Path - ) - $TempDir = CommonLibrary\Get-TempDirectory - $TempFilename = Split-Path $Path -leaf - $TempPath = Join-Path $TempDir $TempFilename - return $TempPath -} - -<# -.SYNOPSIS -Returns the base directory to use for native tool installation - -.NOTES -Returns the value of the NETCOREENG_INSTALL_DIRECTORY if that environment variable -is set, or otherwise returns an install directory under the %USERPROFILE% -#> -function Get-NativeInstallDirectory { - $InstallDir = $Env:NETCOREENG_INSTALL_DIRECTORY - if (!$InstallDir) { - $InstallDir = Join-Path $Env:USERPROFILE ".netcoreeng/native/" - } - return $InstallDir -} - -<# -.SYNOPSIS -Unzip an archive - -.DESCRIPTION -Powershell module to unzip an archive to a specified directory - -.PARAMETER ZipPath (Required) -Path to archive to unzip - -.PARAMETER OutputDirectory (Required) -Output directory for archive contents - -.PARAMETER Force -Overwrite output directory contents if they already exist - -.NOTES -- Returns True and does not perform an extraction if output directory already exists but Overwrite is not True. -- Returns True if unzip operation is successful -- Returns False if Overwrite is True and it is unable to remove contents of OutputDirectory -- Returns False if unable to extract zip archive -#> -function Expand-Zip { - [CmdletBinding(PositionalBinding=$false)] - Param ( - [Parameter(Mandatory=$True)] - [string] $ZipPath, - [Parameter(Mandatory=$True)] - [string] $OutputDirectory, - [switch] $Force - ) - - Write-Verbose "Extracting '$ZipPath' to '$OutputDirectory'" - try { - if ((Test-Path $OutputDirectory) -And (-Not $Force)) { - Write-Host "Directory '$OutputDirectory' already exists, skipping extract" - return $True - } - if (Test-Path $OutputDirectory) { - Write-Verbose "'Force' is 'True', but '$OutputDirectory' exists, removing directory" - Remove-Item $OutputDirectory -Force -Recurse - if ($? -Eq $False) { - Write-Error "Unable to remove '$OutputDirectory'" - return $False - } - } - if (-Not (Test-Path $OutputDirectory)) { - New-Item -path $OutputDirectory -Force -itemType "Directory" | Out-Null - } - - Add-Type -assembly "system.io.compression.filesystem" - [io.compression.zipfile]::ExtractToDirectory("$ZipPath", "$OutputDirectory") - if ($? -Eq $False) { - Write-Error "Unable to extract '$ZipPath'" - return $False - } - } - catch { - Write-Host $_ - Write-Host $_.Exception - - return $False - } - return $True -} - -export-modulemember -function DownloadAndExtract -export-modulemember -function Expand-Zip -export-modulemember -function Get-File -export-modulemember -function Get-MachineArchitecture -export-modulemember -function Get-NativeInstallDirectory -export-modulemember -function Get-TempDirectory -export-modulemember -function Get-TempPathFilename -export-modulemember -function New-ScriptShim diff --git a/eng/common/native/common-library.sh b/eng/common/native/common-library.sh deleted file mode 100755 index bf272dcf55..0000000000 --- a/eng/common/native/common-library.sh +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env bash - -function GetNativeInstallDirectory { - local install_dir - - if [[ -z $NETCOREENG_INSTALL_DIRECTORY ]]; then - install_dir=$HOME/.netcoreeng/native/ - else - install_dir=$NETCOREENG_INSTALL_DIRECTORY - fi - - echo $install_dir - return 0 -} - -function GetTempDirectory { - - echo $(GetNativeInstallDirectory)temp/ - return 0 -} - -function ExpandZip { - local zip_path=$1 - local output_directory=$2 - local force=${3:-false} - - echo "Extracting $zip_path to $output_directory" - if [[ -d $output_directory ]] && [[ $force = false ]]; then - echo "Directory '$output_directory' already exists, skipping extract" - return 0 - fi - - if [[ -d $output_directory ]]; then - echo "'Force flag enabled, but '$output_directory' exists. Removing directory" - rm -rf $output_directory - if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Unable to remove '$output_directory'" - return 1 - fi - fi - - echo "Creating directory: '$output_directory'" - mkdir -p $output_directory - - echo "Extracting archive" - tar -xf $zip_path -C $output_directory - if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Unable to extract '$zip_path'" - return 1 - fi - - return 0 -} - -function GetCurrentOS { - local unameOut="$(uname -s)" - case $unameOut in - Linux*) echo "Linux";; - Darwin*) echo "MacOS";; - esac - return 0 -} - -function GetFile { - local uri=$1 - local path=$2 - local force=${3:-false} - local download_retries=${4:-5} - local retry_wait_time_seconds=${5:-30} - - if [[ -f $path ]]; then - if [[ $force = false ]]; then - echo "File '$path' already exists. Skipping download" - return 0 - else - rm -rf $path - fi - fi - - if [[ -f $uri ]]; then - echo "'$uri' is a file path, copying file to '$path'" - cp $uri $path - return $? - fi - - echo "Downloading $uri" - # Use curl if available, otherwise use wget - if command -v curl > /dev/null; then - curl "$uri" -sSL --retry $download_retries --retry-delay $retry_wait_time_seconds --create-dirs -o "$path" --fail - else - wget -q -O "$path" "$uri" --tries="$download_retries" - fi - - return $? -} - -function GetTempPathFileName { - local path=$1 - - local temp_dir=$(GetTempDirectory) - local temp_file_name=$(basename $path) - echo $temp_dir$temp_file_name - return 0 -} - -function DownloadAndExtract { - local uri=$1 - local installDir=$2 - local force=${3:-false} - local download_retries=${4:-5} - local retry_wait_time_seconds=${5:-30} - - local temp_tool_path=$(GetTempPathFileName $uri) - - echo "downloading to: $temp_tool_path" - - # Download file - GetFile "$uri" "$temp_tool_path" $force $download_retries $retry_wait_time_seconds - if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Failed to download '$uri' to '$temp_tool_path'." - return 1 - fi - - # Extract File - echo "extracting from $temp_tool_path to $installDir" - ExpandZip "$temp_tool_path" "$installDir" $force $download_retries $retry_wait_time_seconds - if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Failed to extract '$temp_tool_path' to '$installDir'." - return 1 - fi - - return 0 -} - -function NewScriptShim { - local shimpath=$1 - local tool_file_path=$2 - local force=${3:-false} - - echo "Generating '$shimpath' shim" - if [[ -f $shimpath ]]; then - if [[ $force = false ]]; then - echo "File '$shimpath' already exists." >&2 - return 1 - else - rm -rf $shimpath - fi - fi - - if [[ ! -f $tool_file_path ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Specified tool file path:'$tool_file_path' does not exist" - return 1 - fi - - local shim_contents=$'#!/usr/bin/env bash\n' - shim_contents+="SHIMARGS="$'$1\n' - shim_contents+="$tool_file_path"$' $SHIMARGS\n' - - # Write shim file - echo "$shim_contents" > $shimpath - - chmod +x $shimpath - - echo "Finished generating shim '$shimpath'" - - return $? -} - diff --git a/eng/common/native/install-cmake-test.sh b/eng/common/native/install-cmake-test.sh deleted file mode 100755 index 12339a4076..0000000000 --- a/eng/common/native/install-cmake-test.sh +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env bash - -source="${BASH_SOURCE[0]}" -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -. $scriptroot/common-library.sh - -base_uri= -install_path= -version= -clean=false -force=false -download_retries=5 -retry_wait_time_seconds=30 - -while (($# > 0)); do - lowerI="$(echo $1 | awk '{print tolower($0)}')" - case $lowerI in - --baseuri) - base_uri=$2 - shift 2 - ;; - --installpath) - install_path=$2 - shift 2 - ;; - --version) - version=$2 - shift 2 - ;; - --clean) - clean=true - shift 1 - ;; - --force) - force=true - shift 1 - ;; - --downloadretries) - download_retries=$2 - shift 2 - ;; - --retrywaittimeseconds) - retry_wait_time_seconds=$2 - shift 2 - ;; - --help) - echo "Common settings:" - echo " --baseuri Base file directory or Url wrom which to acquire tool archives" - echo " --installpath Base directory to install native tool to" - echo " --clean Don't install the tool, just clean up the current install of the tool" - echo " --force Force install of tools even if they previously exist" - echo " --help Print help and exit" - echo "" - echo "Advanced settings:" - echo " --downloadretries Total number of retry attempts" - echo " --retrywaittimeseconds Wait time between retry attempts in seconds" - echo "" - exit 0 - ;; - esac -done - -tool_name="cmake-test" -tool_os=$(GetCurrentOS) -tool_folder=$(echo $tool_os | awk '{print tolower($0)}') -tool_arch="x86_64" -tool_name_moniker="$tool_name-$version-$tool_os-$tool_arch" -tool_install_directory="$install_path/$tool_name/$version" -tool_file_path="$tool_install_directory/$tool_name_moniker/bin/$tool_name" -shim_path="$install_path/$tool_name.sh" -uri="${base_uri}/$tool_folder/$tool_name/$tool_name_moniker.tar.gz" - -# Clean up tool and installers -if [[ $clean = true ]]; then - echo "Cleaning $tool_install_directory" - if [[ -d $tool_install_directory ]]; then - rm -rf $tool_install_directory - fi - - echo "Cleaning $shim_path" - if [[ -f $shim_path ]]; then - rm -rf $shim_path - fi - - tool_temp_path=$(GetTempPathFileName $uri) - echo "Cleaning $tool_temp_path" - if [[ -f $tool_temp_path ]]; then - rm -rf $tool_temp_path - fi - - exit 0 -fi - -# Install tool -if [[ -f $tool_file_path ]] && [[ $force = false ]]; then - echo "$tool_name ($version) already exists, skipping install" - exit 0 -fi - -DownloadAndExtract $uri $tool_install_directory $force $download_retries $retry_wait_time_seconds - -if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' 'Installation failed' - exit 1 -fi - -# Generate Shim -# Always rewrite shims so that we are referencing the expected version -NewScriptShim $shim_path $tool_file_path true - -if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' 'Shim generation failed' - exit 1 -fi - -exit 0 \ No newline at end of file diff --git a/eng/common/native/install-cmake.sh b/eng/common/native/install-cmake.sh deleted file mode 100755 index 18041be876..0000000000 --- a/eng/common/native/install-cmake.sh +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env bash - -source="${BASH_SOURCE[0]}" -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -. $scriptroot/common-library.sh - -base_uri= -install_path= -version= -clean=false -force=false -download_retries=5 -retry_wait_time_seconds=30 - -while (($# > 0)); do - lowerI="$(echo $1 | awk '{print tolower($0)}')" - case $lowerI in - --baseuri) - base_uri=$2 - shift 2 - ;; - --installpath) - install_path=$2 - shift 2 - ;; - --version) - version=$2 - shift 2 - ;; - --clean) - clean=true - shift 1 - ;; - --force) - force=true - shift 1 - ;; - --downloadretries) - download_retries=$2 - shift 2 - ;; - --retrywaittimeseconds) - retry_wait_time_seconds=$2 - shift 2 - ;; - --help) - echo "Common settings:" - echo " --baseuri Base file directory or Url wrom which to acquire tool archives" - echo " --installpath Base directory to install native tool to" - echo " --clean Don't install the tool, just clean up the current install of the tool" - echo " --force Force install of tools even if they previously exist" - echo " --help Print help and exit" - echo "" - echo "Advanced settings:" - echo " --downloadretries Total number of retry attempts" - echo " --retrywaittimeseconds Wait time between retry attempts in seconds" - echo "" - exit 0 - ;; - esac -done - -tool_name="cmake" -tool_os=$(GetCurrentOS) -tool_folder=$(echo $tool_os | awk '{print tolower($0)}') -tool_arch="x86_64" -tool_name_moniker="$tool_name-$version-$tool_os-$tool_arch" -tool_install_directory="$install_path/$tool_name/$version" -tool_file_path="$tool_install_directory/$tool_name_moniker/bin/$tool_name" -shim_path="$install_path/$tool_name.sh" -uri="${base_uri}/$tool_folder/$tool_name/$tool_name_moniker.tar.gz" - -# Clean up tool and installers -if [[ $clean = true ]]; then - echo "Cleaning $tool_install_directory" - if [[ -d $tool_install_directory ]]; then - rm -rf $tool_install_directory - fi - - echo "Cleaning $shim_path" - if [[ -f $shim_path ]]; then - rm -rf $shim_path - fi - - tool_temp_path=$(GetTempPathFileName $uri) - echo "Cleaning $tool_temp_path" - if [[ -f $tool_temp_path ]]; then - rm -rf $tool_temp_path - fi - - exit 0 -fi - -# Install tool -if [[ -f $tool_file_path ]] && [[ $force = false ]]; then - echo "$tool_name ($version) already exists, skipping install" - exit 0 -fi - -DownloadAndExtract $uri $tool_install_directory $force $download_retries $retry_wait_time_seconds - -if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' 'Installation failed' - exit 1 -fi - -# Generate Shim -# Always rewrite shims so that we are referencing the expected version -NewScriptShim $shim_path $tool_file_path true - -if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' 'Shim generation failed' - exit 1 -fi - -exit 0 \ No newline at end of file diff --git a/eng/common/native/install-tool.ps1 b/eng/common/native/install-tool.ps1 deleted file mode 100644 index f397e1c75d..0000000000 --- a/eng/common/native/install-tool.ps1 +++ /dev/null @@ -1,132 +0,0 @@ -<# -.SYNOPSIS -Install native tool - -.DESCRIPTION -Install cmake native tool from Azure blob storage - -.PARAMETER InstallPath -Base directory to install native tool to - -.PARAMETER BaseUri -Base file directory or Url from which to acquire tool archives - -.PARAMETER CommonLibraryDirectory -Path to folder containing common library modules - -.PARAMETER Force -Force install of tools even if they previously exist - -.PARAMETER Clean -Don't install the tool, just clean up the current install of the tool - -.PARAMETER DownloadRetries -Total number of retry attempts - -.PARAMETER RetryWaitTimeInSeconds -Wait time between retry attempts in seconds - -.NOTES -Returns 0 if install succeeds, 1 otherwise -#> -[CmdletBinding(PositionalBinding=$false)] -Param ( - [Parameter(Mandatory=$True)] - [string] $ToolName, - [Parameter(Mandatory=$True)] - [string] $InstallPath, - [Parameter(Mandatory=$True)] - [string] $BaseUri, - [Parameter(Mandatory=$True)] - [string] $Version, - [string] $CommonLibraryDirectory = $PSScriptRoot, - [switch] $Force = $False, - [switch] $Clean = $False, - [int] $DownloadRetries = 5, - [int] $RetryWaitTimeInSeconds = 30 -) - -. $PSScriptRoot\..\pipeline-logging-functions.ps1 - -# Import common library modules -Import-Module -Name (Join-Path $CommonLibraryDirectory "CommonLibrary.psm1") - -try { - # Define verbose switch if undefined - $Verbose = $VerbosePreference -Eq "Continue" - - $Arch = CommonLibrary\Get-MachineArchitecture - $ToolOs = "win64" - if($Arch -Eq "x32") { - $ToolOs = "win32" - } - $ToolNameMoniker = "$ToolName-$Version-$ToolOs-$Arch" - $ToolInstallDirectory = Join-Path $InstallPath "$ToolName\$Version\" - $Uri = "$BaseUri/windows/$ToolName/$ToolNameMoniker.zip" - $ShimPath = Join-Path $InstallPath "$ToolName.exe" - - if ($Clean) { - Write-Host "Cleaning $ToolInstallDirectory" - if (Test-Path $ToolInstallDirectory) { - Remove-Item $ToolInstallDirectory -Force -Recurse - } - Write-Host "Cleaning $ShimPath" - if (Test-Path $ShimPath) { - Remove-Item $ShimPath -Force - } - $ToolTempPath = CommonLibrary\Get-TempPathFilename -Path $Uri - Write-Host "Cleaning $ToolTempPath" - if (Test-Path $ToolTempPath) { - Remove-Item $ToolTempPath -Force - } - exit 0 - } - - # Install tool - if ((Test-Path $ToolInstallDirectory) -And (-Not $Force)) { - Write-Verbose "$ToolName ($Version) already exists, skipping install" - } - else { - $InstallStatus = CommonLibrary\DownloadAndExtract -Uri $Uri ` - -InstallDirectory $ToolInstallDirectory ` - -Force:$Force ` - -DownloadRetries $DownloadRetries ` - -RetryWaitTimeInSeconds $RetryWaitTimeInSeconds ` - -Verbose:$Verbose - - if ($InstallStatus -Eq $False) { - Write-PipelineTelemetryError "Installation failed" -Category "NativeToolsetBootstrapping" - exit 1 - } - } - - $ToolFilePath = Get-ChildItem $ToolInstallDirectory -Recurse -Filter "$ToolName.exe" | % { $_.FullName } - if (@($ToolFilePath).Length -Gt 1) { - Write-Error "There are multiple copies of $ToolName in $($ToolInstallDirectory): `n$(@($ToolFilePath | out-string))" - exit 1 - } elseif (@($ToolFilePath).Length -Lt 1) { - Write-Host "$ToolName was not found in $ToolFilePath." - exit 1 - } - - # Generate shim - # Always rewrite shims so that we are referencing the expected version - $GenerateShimStatus = CommonLibrary\New-ScriptShim -ShimName $ToolName ` - -ShimDirectory $InstallPath ` - -ToolFilePath "$ToolFilePath" ` - -BaseUri $BaseUri ` - -Force:$Force ` - -Verbose:$Verbose - - if ($GenerateShimStatus -Eq $False) { - Write-PipelineTelemetryError "Generate shim failed" -Category "NativeToolsetBootstrapping" - return 1 - } - - exit 0 -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category "NativeToolsetBootstrapping" -Message $_ - exit 1 -} diff --git a/eng/common/performance/perfhelixpublish.proj b/eng/common/performance/perfhelixpublish.proj deleted file mode 100644 index e5826b5323..0000000000 --- a/eng/common/performance/perfhelixpublish.proj +++ /dev/null @@ -1,102 +0,0 @@ - - - - %HELIX_CORRELATION_PAYLOAD%\performance\scripts\benchmarks_ci.py --csproj %HELIX_CORRELATION_PAYLOAD%\performance\$(TargetCsproj) - --dotnet-versions %DOTNET_VERSION% --cli-source-info args --cli-branch %PERFLAB_BRANCH% --cli-commit-sha %PERFLAB_HASH% --cli-repository https://github.com/%PERFLAB_REPO% --cli-source-timestamp %PERFLAB_BUILDTIMESTAMP% - py -3 - %HELIX_CORRELATION_PAYLOAD%\Core_Root\CoreRun.exe - %HELIX_CORRELATION_PAYLOAD%\Baseline_Core_Root\CoreRun.exe - $(HelixPreCommands);call %HELIX_CORRELATION_PAYLOAD%\performance\tools\machine-setup.cmd - %HELIX_CORRELATION_PAYLOAD%\artifacts\BenchmarkDotNet.Artifacts - %HELIX_CORRELATION_PAYLOAD%\artifacts\BenchmarkDotNet.Artifacts_Baseline - %HELIX_CORRELATION_PAYLOAD%\performance\src\tools\ResultsComparer\ResultsComparer.csproj - %HELIX_CORRELATION_PAYLOAD%\performance\tools\dotnet\$(Architecture)\dotnet.exe - %25%25 - %HELIX_WORKITEM_ROOT%\testResults.xml - - - - $HELIX_CORRELATION_PAYLOAD - $(BaseDirectory)/performance - - - - $HELIX_WORKITEM_PAYLOAD - $(BaseDirectory) - - - - $(PerformanceDirectory)/scripts/benchmarks_ci.py --csproj $(PerformanceDirectory)/$(TargetCsproj) - --dotnet-versions $DOTNET_VERSION --cli-source-info args --cli-branch $PERFLAB_BRANCH --cli-commit-sha $PERFLAB_HASH --cli-repository https://github.com/$PERFLAB_REPO --cli-source-timestamp $PERFLAB_BUILDTIMESTAMP - python3 - $(BaseDirectory)/Core_Root/corerun - $(BaseDirectory)/Baseline_Core_Root/corerun - $(HelixPreCommands);chmod +x $(PerformanceDirectory)/tools/machine-setup.sh;. $(PerformanceDirectory)/tools/machine-setup.sh - $(BaseDirectory)/artifacts/BenchmarkDotNet.Artifacts - $(BaseDirectory)/artifacts/BenchmarkDotNet.Artifacts_Baseline - $(PerformanceDirectory)/src/tools/ResultsComparer/ResultsComparer.csproj - $(PerformanceDirectory)/tools/dotnet/$(Architecture)/dotnet - %25 - $HELIX_WORKITEM_ROOT/testResults.xml - - - - --corerun $(CoreRun) - - - - --corerun $(BaselineCoreRun) - - - - $(Python) $(WorkItemCommand) --incremental no --architecture $(Architecture) -f $(_Framework) $(PerfLabArguments) - - - - $(WorkItemCommand) $(CliArguments) - - - - - %(Identity) - - - - - 5 - - - - - - - - - - - false - - - - - - $(WorkItemDirectory) - $(WorkItemCommand) --bdn-artifacts $(BaselineArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(BaselineCoreRunArgument) --partition-count $(PartitionCount) --partition-index %(HelixWorkItem.Index)" - $(WorkItemCommand) --bdn-artifacts $(ArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(CoreRunArgument) --partition-count $(PartitionCount) --partition-index %(HelixWorkItem.Index)" - $(DotnetExe) run -f $(_Framework) -p $(ResultsComparer) --base $(BaselineArtifactsDirectory) --diff $(ArtifactsDirectory) --threshold 2$(Percent) --xml $(XMLResults);$(FinalCommand) - 4:00 - - - - - - $(WorkItemDirectory) - $(WorkItemCommand) --bdn-artifacts $(BaselineArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(BaselineCoreRunArgument)" - $(WorkItemCommand) --bdn-artifacts $(ArtifactsDirectory) --bdn-arguments="--anyCategories $(BDNCategories) $(ExtraBenchmarkDotNetArguments) $(CoreRunArgument)" - $(DotnetExe) run -f $(_Framework) -p $(ResultsComparer) --base $(BaselineArtifactsDirectory) --diff $(ArtifactsDirectory) --threshold 2$(Percent) --xml $(XMLResults) - 4:00 - - - \ No newline at end of file diff --git a/eng/common/performance/performance-setup.ps1 b/eng/common/performance/performance-setup.ps1 deleted file mode 100644 index ec41965fc8..0000000000 --- a/eng/common/performance/performance-setup.ps1 +++ /dev/null @@ -1,106 +0,0 @@ -Param( - [string] $SourceDirectory=$env:BUILD_SOURCESDIRECTORY, - [string] $CoreRootDirectory, - [string] $BaselineCoreRootDirectory, - [string] $Architecture="x64", - [string] $Framework="netcoreapp5.0", - [string] $CompilationMode="Tiered", - [string] $Repository=$env:BUILD_REPOSITORY_NAME, - [string] $Branch=$env:BUILD_SOURCEBRANCH, - [string] $CommitSha=$env:BUILD_SOURCEVERSION, - [string] $BuildNumber=$env:BUILD_BUILDNUMBER, - [string] $RunCategories="coreclr corefx", - [string] $Csproj="src\benchmarks\micro\MicroBenchmarks.csproj", - [string] $Kind="micro", - [switch] $Internal, - [switch] $Compare, - [string] $Configurations="CompilationMode=$CompilationMode" -) - -$RunFromPerformanceRepo = ($Repository -eq "dotnet/performance") -or ($Repository -eq "dotnet-performance") -$UseCoreRun = ($CoreRootDirectory -ne [string]::Empty) -$UseBaselineCoreRun = ($BaselineCoreRootDirectory -ne [string]::Empty) - -$PayloadDirectory = (Join-Path $SourceDirectory "Payload") -$PerformanceDirectory = (Join-Path $PayloadDirectory "performance") -$WorkItemDirectory = (Join-Path $SourceDirectory "workitem") -$ExtraBenchmarkDotNetArguments = "--iterationCount 1 --warmupCount 0 --invocationCount 1 --unrollFactor 1 --strategy ColdStart --stopOnFirstError true" -$Creator = $env:BUILD_DEFINITIONNAME -$PerfLabArguments = "" -$HelixSourcePrefix = "pr" - -$Queue = "Windows.10.Amd64.ClientRS4.DevEx.15.8.Open" - -if ($Framework.StartsWith("netcoreapp")) { - $Queue = "Windows.10.Amd64.ClientRS5.Open" -} - -if ($Compare) { - $Queue = "Windows.10.Amd64.19H1.Tiger.Perf.Open" - $PerfLabArguments = "" - $ExtraBenchmarkDotNetArguments = "" -} - -if ($Internal) { - $Queue = "Windows.10.Amd64.19H1.Tiger.Perf" - $PerfLabArguments = "--upload-to-perflab-container" - $ExtraBenchmarkDotNetArguments = "" - $Creator = "" - $HelixSourcePrefix = "official" -} - -$CommonSetupArguments="--frameworks $Framework --queue $Queue --build-number $BuildNumber --build-configs $Configurations" -$SetupArguments = "--repository https://github.com/$Repository --branch $Branch --get-perf-hash --commit-sha $CommitSha $CommonSetupArguments" - -if ($RunFromPerformanceRepo) { - $SetupArguments = "--perf-hash $CommitSha $CommonSetupArguments" - - robocopy $SourceDirectory $PerformanceDirectory /E /XD $PayloadDirectory $SourceDirectory\artifacts $SourceDirectory\.git -} -else { - git clone --branch master --depth 1 --quiet https://github.com/dotnet/performance $PerformanceDirectory -} - -if ($UseCoreRun) { - $NewCoreRoot = (Join-Path $PayloadDirectory "Core_Root") - Move-Item -Path $CoreRootDirectory -Destination $NewCoreRoot -} -if ($UseBaselineCoreRun) { - $NewBaselineCoreRoot = (Join-Path $PayloadDirectory "Baseline_Core_Root") - Move-Item -Path $BaselineCoreRootDirectory -Destination $NewBaselineCoreRoot -} - -$DocsDir = (Join-Path $PerformanceDirectory "docs") -robocopy $DocsDir $WorkItemDirectory - -# Set variables that we will need to have in future steps -$ci = $true - -. "$PSScriptRoot\..\pipeline-logging-functions.ps1" - -# Directories -Write-PipelineSetVariable -Name 'PayloadDirectory' -Value "$PayloadDirectory" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'PerformanceDirectory' -Value "$PerformanceDirectory" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'WorkItemDirectory' -Value "$WorkItemDirectory" -IsMultiJobVariable $false - -# Script Arguments -Write-PipelineSetVariable -Name 'Python' -Value "py -3" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'ExtraBenchmarkDotNetArguments' -Value "$ExtraBenchmarkDotNetArguments" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'SetupArguments' -Value "$SetupArguments" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'PerfLabArguments' -Value "$PerfLabArguments" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'BDNCategories' -Value "$RunCategories" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'TargetCsproj' -Value "$Csproj" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'Kind' -Value "$Kind" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'Architecture' -Value "$Architecture" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'UseCoreRun' -Value "$UseCoreRun" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'UseBaselineCoreRun' -Value "$UseBaselineCoreRun" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'RunFromPerfRepo' -Value "$RunFromPerformanceRepo" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'Compare' -Value "$Compare" -IsMultiJobVariable $false - -# Helix Arguments -Write-PipelineSetVariable -Name 'Creator' -Value "$Creator" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'Queue' -Value "$Queue" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'HelixSourcePrefix' -Value "$HelixSourcePrefix" -IsMultiJobVariable $false -Write-PipelineSetVariable -Name '_BuildConfig' -Value "$Architecture.$Kind.$Framework" -IsMultiJobVariable $false - -exit 0 \ No newline at end of file diff --git a/eng/common/performance/performance-setup.sh b/eng/common/performance/performance-setup.sh deleted file mode 100755 index 2f2092166e..0000000000 --- a/eng/common/performance/performance-setup.sh +++ /dev/null @@ -1,216 +0,0 @@ -#!/usr/bin/env bash - -source_directory=$BUILD_SOURCESDIRECTORY -core_root_directory= -baseline_core_root_directory= -architecture=x64 -framework=netcoreapp5.0 -compilation_mode=tiered -repository=$BUILD_REPOSITORY_NAME -branch=$BUILD_SOURCEBRANCH -commit_sha=$BUILD_SOURCEVERSION -build_number=$BUILD_BUILDNUMBER -internal=false -compare=false -kind="micro" -run_categories="coreclr corefx" -csproj="src\benchmarks\micro\MicroBenchmarks.csproj" -configurations= -run_from_perf_repo=false -use_core_run=true -use_baseline_core_run=true - -while (($# > 0)); do - lowerI="$(echo $1 | awk '{print tolower($0)}')" - case $lowerI in - --sourcedirectory) - source_directory=$2 - shift 2 - ;; - --corerootdirectory) - core_root_directory=$2 - shift 2 - ;; - --baselinecorerootdirectory) - baseline_core_root_directory=$2 - shift 2 - ;; - --architecture) - architecture=$2 - shift 2 - ;; - --framework) - framework=$2 - shift 2 - ;; - --compilationmode) - compilation_mode=$2 - shift 2 - ;; - --repository) - repository=$2 - shift 2 - ;; - --branch) - branch=$2 - shift 2 - ;; - --commitsha) - commit_sha=$2 - shift 2 - ;; - --buildnumber) - build_number=$2 - shift 2 - ;; - --kind) - kind=$2 - shift 2 - ;; - --runcategories) - run_categories=$2 - shift 2 - ;; - --csproj) - csproj=$2 - shift 2 - ;; - --internal) - internal=true - shift 1 - ;; - --compare) - compare=true - shift 1 - ;; - --configurations) - configurations=$2 - shift 2 - ;; - --help) - echo "Common settings:" - echo " --corerootdirectory Directory where Core_Root exists, if running perf testing with --corerun" - echo " --architecture Architecture of the testing being run" - echo " --configurations List of key=value pairs that will be passed to perf testing infrastructure." - echo " ex: --configurations \"CompilationMode=Tiered OptimzationLevel=PGO\"" - echo " --help Print help and exit" - echo "" - echo "Advanced settings:" - echo " --framework The framework to run, if not running in master" - echo " --compliationmode The compilation mode if not passing --configurations" - echo " --sourcedirectory The directory of the sources. Defaults to env:BUILD_SOURCESDIRECTORY" - echo " --repository The name of the repository in the / format. Defaults to env:BUILD_REPOSITORY_NAME" - echo " --branch The name of the branch. Defaults to env:BUILD_SOURCEBRANCH" - echo " --commitsha The commit sha1 to run against. Defaults to env:BUILD_SOURCEVERSION" - echo " --buildnumber The build number currently running. Defaults to env:BUILD_BUILDNUMBER" - echo " --csproj The relative path to the benchmark csproj whose tests should be run. Defaults to src\benchmarks\micro\MicroBenchmarks.csproj" - echo " --kind Related to csproj. The kind of benchmarks that should be run. Defaults to micro" - echo " --runcategories Related to csproj. Categories of benchmarks to run. Defaults to \"coreclr corefx\"" - echo " --internal If the benchmarks are running as an official job." - echo "" - exit 0 - ;; - esac -done - -if [ "$repository" == "dotnet/performance" ] || [ "$repository" == "dotnet-performance" ]; then - run_from_perf_repo=true -fi - -if [ -z "$configurations" ]; then - configurations="CompliationMode=$compilation_mode" -fi - -if [ -z "$core_root_directory" ]; then - use_core_run=false -fi - -if [ -z "$baseline_core_root_directory" ]; then - use_baseline_core_run=false -fi - -payload_directory=$source_directory/Payload -performance_directory=$payload_directory/performance -workitem_directory=$source_directory/workitem -extra_benchmark_dotnet_arguments="--iterationCount 1 --warmupCount 0 --invocationCount 1 --unrollFactor 1 --strategy ColdStart --stopOnFirstError true" -perflab_arguments= -queue=Ubuntu.1804.Amd64.Open -creator=$BUILD_DEFINITIONNAME -helix_source_prefix="pr" - -if [[ "$compare" == true ]]; then - extra_benchmark_dotnet_arguments= - perflab_arguments= - - # No open queues for arm64 - if [[ "$architecture" = "arm64" ]]; then - echo "Compare not available for arm64" - exit 1 - fi - - queue=Ubuntu.1804.Amd64.Tiger.Perf.Open -fi - -if [[ "$internal" == true ]]; then - perflab_arguments="--upload-to-perflab-container" - helix_source_prefix="official" - creator= - extra_benchmark_dotnet_arguments= - - if [[ "$architecture" = "arm64" ]]; then - queue=Ubuntu.1804.Arm64.Perf - else - queue=Ubuntu.1804.Amd64.Tiger.Perf - fi -fi - -common_setup_arguments="--frameworks $framework --queue $queue --build-number $build_number --build-configs $configurations" -setup_arguments="--repository https://github.com/$repository --branch $branch --get-perf-hash --commit-sha $commit_sha $common_setup_arguments" - -if [[ "$run_from_perf_repo" = true ]]; then - payload_directory= - workitem_directory=$source_directory - performance_directory=$workitem_directory - setup_arguments="--perf-hash $commit_sha $common_setup_arguments" -else - git clone --branch master --depth 1 --quiet https://github.com/dotnet/performance $performance_directory - - docs_directory=$performance_directory/docs - mv $docs_directory $workitem_directory -fi - -if [[ "$use_core_run" = true ]]; then - new_core_root=$payload_directory/Core_Root - mv $core_root_directory $new_core_root -fi - -if [[ "$use_baseline_core_run" = true ]]; then - new_baseline_core_root=$payload_directory/Baseline_Core_Root - mv $baseline_core_root_directory $new_baseline_core_root -fi - -ci=true - -_script_dir=$(pwd)/eng/common -. "$_script_dir/pipeline-logging-functions.sh" - -# Make sure all of our variables are available for future steps -Write-PipelineSetVariable -name "UseCoreRun" -value "$use_core_run" -is_multi_job_variable false -Write-PipelineSetVariable -name "UseBaselineCoreRun" -value "$use_baseline_core_run" -is_multi_job_variable false -Write-PipelineSetVariable -name "Architecture" -value "$architecture" -is_multi_job_variable false -Write-PipelineSetVariable -name "PayloadDirectory" -value "$payload_directory" -is_multi_job_variable false -Write-PipelineSetVariable -name "PerformanceDirectory" -value "$performance_directory" -is_multi_job_variable false -Write-PipelineSetVariable -name "WorkItemDirectory" -value "$workitem_directory" -is_multi_job_variable false -Write-PipelineSetVariable -name "Queue" -value "$queue" -is_multi_job_variable false -Write-PipelineSetVariable -name "SetupArguments" -value "$setup_arguments" -is_multi_job_variable false -Write-PipelineSetVariable -name "Python" -value "$python3" -is_multi_job_variable false -Write-PipelineSetVariable -name "PerfLabArguments" -value "$perflab_arguments" -is_multi_job_variable false -Write-PipelineSetVariable -name "ExtraBenchmarkDotNetArguments" -value "$extra_benchmark_dotnet_arguments" -is_multi_job_variable false -Write-PipelineSetVariable -name "BDNCategories" -value "$run_categories" -is_multi_job_variable false -Write-PipelineSetVariable -name "TargetCsproj" -value "$csproj" -is_multi_job_variable false -Write-PipelineSetVariable -name "RunFromPerfRepo" -value "$run_from_perf_repo" -is_multi_job_variable false -Write-PipelineSetVariable -name "Creator" -value "$creator" -is_multi_job_variable false -Write-PipelineSetVariable -name "HelixSourcePrefix" -value "$helix_source_prefix" -is_multi_job_variable false -Write-PipelineSetVariable -name "Kind" -value "$kind" -is_multi_job_variable false -Write-PipelineSetVariable -name "_BuildConfig" -value "$architecture.$kind.$framework" -is_multi_job_variable false -Write-PipelineSetVariable -name "Compare" -value "$compare" -is_multi_job_variable false diff --git a/eng/common/pipeline-logging-functions.ps1 b/eng/common/pipeline-logging-functions.ps1 deleted file mode 100644 index 2688c389bd..0000000000 --- a/eng/common/pipeline-logging-functions.ps1 +++ /dev/null @@ -1,240 +0,0 @@ -# Source for this file was taken from https://github.com/microsoft/azure-pipelines-task-lib/blob/11c9439d4af17e6475d9fe058e6b2e03914d17e6/powershell/VstsTaskSdk/LoggingCommandFunctions.ps1 and modified. - -# NOTE: You should not be calling these method directly as they are likely to change. Instead you should be calling the Write-Pipeline* functions defined in tools.ps1 - -$script:loggingCommandPrefix = '##vso[' -$script:loggingCommandEscapeMappings = @( # TODO: WHAT ABOUT "="? WHAT ABOUT "%"? - New-Object psobject -Property @{ Token = ';' ; Replacement = '%3B' } - New-Object psobject -Property @{ Token = "`r" ; Replacement = '%0D' } - New-Object psobject -Property @{ Token = "`n" ; Replacement = '%0A' } - New-Object psobject -Property @{ Token = "]" ; Replacement = '%5D' } -) -# TODO: BUG: Escape % ??? -# TODO: Add test to verify don't need to escape "=". - -# Specify "-Force" to force pipeline formatted output even if "$ci" is false or not set -function Write-PipelineTelemetryError { - [CmdletBinding()] - param( - [Parameter(Mandatory = $true)] - [string]$Category, - [Parameter(Mandatory = $true)] - [string]$Message, - [Parameter(Mandatory = $false)] - [string]$Type = 'error', - [string]$ErrCode, - [string]$SourcePath, - [string]$LineNumber, - [string]$ColumnNumber, - [switch]$AsOutput, - [switch]$Force) - - $PSBoundParameters.Remove('Category') | Out-Null - - $Message = "(NETCORE_ENGINEERING_TELEMETRY=$Category) $Message" - $PSBoundParameters.Remove('Message') | Out-Null - $PSBoundParameters.Add('Message', $Message) - Write-PipelineTaskError @PSBoundParameters -} - -# Specify "-Force" to force pipeline formatted output even if "$ci" is false or not set -function Write-PipelineTaskError { - [CmdletBinding()] - param( - [Parameter(Mandatory = $true)] - [string]$Message, - [Parameter(Mandatory = $false)] - [string]$Type = 'error', - [string]$ErrCode, - [string]$SourcePath, - [string]$LineNumber, - [string]$ColumnNumber, - [switch]$AsOutput, - [switch]$Force - ) - - if(!$Force -And (-Not (Test-Path variable:ci) -Or !$ci)) { - if($Type -eq 'error') { - Write-Host $Message -ForegroundColor Red - return - } - elseif ($Type -eq 'warning') { - Write-Host $Message -ForegroundColor Yellow - return - } - } - - if(($Type -ne 'error') -and ($Type -ne 'warning')) { - Write-Host $Message - return - } - $PSBoundParameters.Remove('Force') | Out-Null - if(-not $PSBoundParameters.ContainsKey('Type')) { - $PSBoundParameters.Add('Type', 'error') - } - Write-LogIssue @PSBoundParameters - } - - function Write-PipelineSetVariable { - [CmdletBinding()] - param( - [Parameter(Mandatory = $true)] - [string]$Name, - [string]$Value, - [switch]$Secret, - [switch]$AsOutput, - [bool]$IsMultiJobVariable=$true) - - if((Test-Path variable:ci) -And $ci) { - Write-LoggingCommand -Area 'task' -Event 'setvariable' -Data $Value -Properties @{ - 'variable' = $Name - 'isSecret' = $Secret - 'isOutput' = $IsMultiJobVariable - } -AsOutput:$AsOutput - } - } - - function Write-PipelinePrependPath { - [CmdletBinding()] - param( - [Parameter(Mandatory=$true)] - [string]$Path, - [switch]$AsOutput) - - if(-Not (Test-Path variable:ci) -Or !$ci) { - Write-LoggingCommand -Area 'task' -Event 'prependpath' -Data $Path -AsOutput:$AsOutput - } - } - -<######################################## -# Private functions. -########################################> -function Format-LoggingCommandData { - [CmdletBinding()] - param([string]$Value, [switch]$Reverse) - - if (!$Value) { - return '' - } - - if (!$Reverse) { - foreach ($mapping in $script:loggingCommandEscapeMappings) { - $Value = $Value.Replace($mapping.Token, $mapping.Replacement) - } - } else { - for ($i = $script:loggingCommandEscapeMappings.Length - 1 ; $i -ge 0 ; $i--) { - $mapping = $script:loggingCommandEscapeMappings[$i] - $Value = $Value.Replace($mapping.Replacement, $mapping.Token) - } - } - - return $Value -} - -function Format-LoggingCommand { - [CmdletBinding()] - param( - [Parameter(Mandatory = $true)] - [string]$Area, - [Parameter(Mandatory = $true)] - [string]$Event, - [string]$Data, - [hashtable]$Properties) - - # Append the preamble. - [System.Text.StringBuilder]$sb = New-Object -TypeName System.Text.StringBuilder - $null = $sb.Append($script:loggingCommandPrefix).Append($Area).Append('.').Append($Event) - - # Append the properties. - if ($Properties) { - $first = $true - foreach ($key in $Properties.Keys) { - [string]$value = Format-LoggingCommandData $Properties[$key] - if ($value) { - if ($first) { - $null = $sb.Append(' ') - $first = $false - } else { - $null = $sb.Append(';') - } - - $null = $sb.Append("$key=$value") - } - } - } - - # Append the tail and output the value. - $Data = Format-LoggingCommandData $Data - $sb.Append(']').Append($Data).ToString() -} - -function Write-LoggingCommand { - [CmdletBinding(DefaultParameterSetName = 'Parameters')] - param( - [Parameter(Mandatory = $true, ParameterSetName = 'Parameters')] - [string]$Area, - [Parameter(Mandatory = $true, ParameterSetName = 'Parameters')] - [string]$Event, - [Parameter(ParameterSetName = 'Parameters')] - [string]$Data, - [Parameter(ParameterSetName = 'Parameters')] - [hashtable]$Properties, - [Parameter(Mandatory = $true, ParameterSetName = 'Object')] - $Command, - [switch]$AsOutput) - - if ($PSCmdlet.ParameterSetName -eq 'Object') { - Write-LoggingCommand -Area $Command.Area -Event $Command.Event -Data $Command.Data -Properties $Command.Properties -AsOutput:$AsOutput - return - } - - $command = Format-LoggingCommand -Area $Area -Event $Event -Data $Data -Properties $Properties - if ($AsOutput) { - $command - } else { - Write-Host $command - } -} - -function Write-LogIssue { - [CmdletBinding()] - param( - [ValidateSet('warning', 'error')] - [Parameter(Mandatory = $true)] - [string]$Type, - [string]$Message, - [string]$ErrCode, - [string]$SourcePath, - [string]$LineNumber, - [string]$ColumnNumber, - [switch]$AsOutput) - - $command = Format-LoggingCommand -Area 'task' -Event 'logissue' -Data $Message -Properties @{ - 'type' = $Type - 'code' = $ErrCode - 'sourcepath' = $SourcePath - 'linenumber' = $LineNumber - 'columnnumber' = $ColumnNumber - } - if ($AsOutput) { - return $command - } - - if ($Type -eq 'error') { - $foregroundColor = $host.PrivateData.ErrorForegroundColor - $backgroundColor = $host.PrivateData.ErrorBackgroundColor - if ($foregroundColor -isnot [System.ConsoleColor] -or $backgroundColor -isnot [System.ConsoleColor]) { - $foregroundColor = [System.ConsoleColor]::Red - $backgroundColor = [System.ConsoleColor]::Black - } - } else { - $foregroundColor = $host.PrivateData.WarningForegroundColor - $backgroundColor = $host.PrivateData.WarningBackgroundColor - if ($foregroundColor -isnot [System.ConsoleColor] -or $backgroundColor -isnot [System.ConsoleColor]) { - $foregroundColor = [System.ConsoleColor]::Yellow - $backgroundColor = [System.ConsoleColor]::Black - } - } - - Write-Host $command -ForegroundColor $foregroundColor -BackgroundColor $backgroundColor -} \ No newline at end of file diff --git a/eng/common/pipeline-logging-functions.sh b/eng/common/pipeline-logging-functions.sh deleted file mode 100755 index 33c3f0d807..0000000000 --- a/eng/common/pipeline-logging-functions.sh +++ /dev/null @@ -1,179 +0,0 @@ -#!/usr/bin/env bash - -function Write-PipelineTelemetryError { - local telemetry_category='' - local force=false - local function_args=() - local message='' - while [[ $# -gt 0 ]]; do - opt="$(echo "${1/#--/-}" | awk '{print tolower($0)}')" - case "$opt" in - -category|-c) - telemetry_category=$2 - shift - ;; - -force|-f) - force=true - ;; - -*) - function_args+=("$1 $2") - shift - ;; - *) - message=$* - ;; - esac - shift - done - - if [[ $force != true ]] && [[ "$ci" != true ]]; then - echo "$message" >&2 - return - fi - - message="(NETCORE_ENGINEERING_TELEMETRY=$telemetry_category) $message" - function_args+=("$message") - if [[ $force == true ]]; then - function_args+=("-force") - fi - - Write-PipelineTaskError $function_args -} - -function Write-PipelineTaskError { - if [[ $force != true ]] && [[ "$ci" != true ]]; then - echo "$@" >&2 - return - fi - - local message_type="error" - local sourcepath='' - local linenumber='' - local columnnumber='' - local error_code='' - - while [[ $# -gt 0 ]]; do - opt="$(echo "${1/#--/-}" | awk '{print tolower($0)}')" - case "$opt" in - -type|-t) - message_type=$2 - shift - ;; - -sourcepath|-s) - sourcepath=$2 - shift - ;; - -linenumber|-ln) - linenumber=$2 - shift - ;; - -columnnumber|-cn) - columnnumber=$2 - shift - ;; - -errcode|-e) - error_code=$2 - shift - ;; - *) - break - ;; - esac - - shift - done - - local message="##vso[task.logissue" - - message="$message type=$message_type" - - if [ -n "$sourcepath" ]; then - message="$message;sourcepath=$sourcepath" - fi - - if [ -n "$linenumber" ]; then - message="$message;linenumber=$linenumber" - fi - - if [ -n "$columnnumber" ]; then - message="$message;columnnumber=$columnnumber" - fi - - if [ -n "$error_code" ]; then - message="$message;code=$error_code" - fi - - message="$message]$*" - echo "$message" -} - -function Write-PipelineSetVariable { - if [[ "$ci" != true ]]; then - return - fi - - local name='' - local value='' - local secret=false - local as_output=false - local is_multi_job_variable=true - - while [[ $# -gt 0 ]]; do - opt="$(echo "${1/#--/-}" | awk '{print tolower($0)}')" - case "$opt" in - -name|-n) - name=$2 - shift - ;; - -value|-v) - value=$2 - shift - ;; - -secret|-s) - secret=true - ;; - -as_output|-a) - as_output=true - ;; - -is_multi_job_variable|-i) - is_multi_job_variable=$2 - shift - ;; - esac - shift - done - - value=${value/;/%3B} - value=${value/\\r/%0D} - value=${value/\\n/%0A} - value=${value/]/%5D} - - local message="##vso[task.setvariable variable=$name;isSecret=$secret;isOutput=$is_multi_job_variable]$value" - - if [[ "$as_output" == true ]]; then - $message - else - echo "$message" - fi -} - -function Write-PipelinePrependPath { - local prepend_path='' - - while [[ $# -gt 0 ]]; do - opt="$(echo "${1/#--/-}" | awk '{print tolower($0)}')" - case "$opt" in - -path|-p) - prepend_path=$2 - shift - ;; - esac - shift - done - - export PATH="$prepend_path:$PATH" - - if [[ "$ci" == true ]]; then - echo "##vso[task.prependpath]$prepend_path" - fi -} \ No newline at end of file diff --git a/eng/common/post-build/darc-gather-drop.ps1 b/eng/common/post-build/darc-gather-drop.ps1 deleted file mode 100644 index 81ff2a4377..0000000000 --- a/eng/common/post-build/darc-gather-drop.ps1 +++ /dev/null @@ -1,44 +0,0 @@ -param( - [Parameter(Mandatory=$true)][int] $BarBuildId, # ID of the build which assets should be downloaded - [Parameter(Mandatory=$true)][string] $DropLocation, # Where the assets should be downloaded to - [Parameter(Mandatory=$true)][string] $MaestroApiAccessToken, # Token used to access Maestro API - [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro-prod.westus2.cloudapp.azure.com', # Maestro API URL - [Parameter(Mandatory=$false)][string] $MaestroApiVersion = '2019-01-16' # Version of Maestro API to use -) - -try { - . $PSScriptRoot\post-build-utils.ps1 - - Write-Host 'Installing DARC ...' - - . $PSScriptRoot\..\darc-init.ps1 - $exitCode = $LASTEXITCODE - - if ($exitCode -ne 0) { - Write-PipelineTelemetryError -Category "Darc" -Message "Something failed while running 'darc-init.ps1'. Check for errors above. Exiting now..." - ExitWithExitCode $exitCode - } - - # For now, only use a dry run. - # Ideally we would change darc to enable a quick request that - # would check whether the file exists that you can download it, - # and that it won't conflict with other files. - # https://github.com/dotnet/arcade/issues/3674 - # Right now we can't remove continue-on-error because we ocassionally will have - # dependencies that have no associated builds (e.g. an old dependency). - # We need to add an option to baseline specific dependencies away, or add them manually - # to the BAR. - darc gather-drop --non-shipping ` - --dry-run ` - --continue-on-error ` - --id $BarBuildId ` - --output-dir $DropLocation ` - --bar-uri $MaestroApiEndpoint ` - --password $MaestroApiAccessToken ` - --latest-location -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category "Darc" -Message $_ - ExitWithExitCode 1 -} diff --git a/eng/common/post-build/nuget-validation.ps1 b/eng/common/post-build/nuget-validation.ps1 deleted file mode 100644 index 3d6129d72b..0000000000 --- a/eng/common/post-build/nuget-validation.ps1 +++ /dev/null @@ -1,24 +0,0 @@ -# This script validates NuGet package metadata information using this -# tool: https://github.com/NuGet/NuGetGallery/tree/jver-verify/src/VerifyMicrosoftPackage - -param( - [Parameter(Mandatory=$true)][string] $PackagesPath, # Path to where the packages to be validated are - [Parameter(Mandatory=$true)][string] $ToolDestinationPath # Where the validation tool should be downloaded to -) - -try { - . $PSScriptRoot\post-build-utils.ps1 - - $url = 'https://raw.githubusercontent.com/NuGet/NuGetGallery/jver-verify/src/VerifyMicrosoftPackage/verify.ps1' - - New-Item -ItemType 'directory' -Path ${ToolDestinationPath} -Force - - Invoke-WebRequest $url -OutFile ${ToolDestinationPath}\verify.ps1 - - & ${ToolDestinationPath}\verify.ps1 ${PackagesPath}\*.nupkg -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'NuGetValidation' -Message $_ - ExitWithExitCode 1 -} diff --git a/eng/common/post-build/post-build-utils.ps1 b/eng/common/post-build/post-build-utils.ps1 deleted file mode 100644 index 7d49744795..0000000000 --- a/eng/common/post-build/post-build-utils.ps1 +++ /dev/null @@ -1,91 +0,0 @@ -# Most of the functions in this file require the variables `MaestroApiEndPoint`, -# `MaestroApiVersion` and `MaestroApiAccessToken` to be globally available. - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 - -# `tools.ps1` checks $ci to perform some actions. Since the post-build -# scripts don't necessarily execute in the same agent that run the -# build.ps1/sh script this variable isn't automatically set. -$ci = $true -$disableConfigureToolsetImport = $true -. $PSScriptRoot\..\tools.ps1 - -function Create-MaestroApiRequestHeaders([string]$ContentType = 'application/json') { - Validate-MaestroVars - - $headers = New-Object 'System.Collections.Generic.Dictionary[[String],[String]]' - $headers.Add('Accept', $ContentType) - $headers.Add('Authorization',"Bearer $MaestroApiAccessToken") - return $headers -} - -function Get-MaestroChannel([int]$ChannelId) { - Validate-MaestroVars - - $apiHeaders = Create-MaestroApiRequestHeaders - $apiEndpoint = "$MaestroApiEndPoint/api/channels/${ChannelId}?api-version=$MaestroApiVersion" - - $result = try { Invoke-WebRequest -Method Get -Uri $apiEndpoint -Headers $apiHeaders | ConvertFrom-Json } catch { Write-Host "Error: $_" } - return $result -} - -function Get-MaestroBuild([int]$BuildId) { - Validate-MaestroVars - - $apiHeaders = Create-MaestroApiRequestHeaders -AuthToken $MaestroApiAccessToken - $apiEndpoint = "$MaestroApiEndPoint/api/builds/${BuildId}?api-version=$MaestroApiVersion" - - $result = try { return Invoke-WebRequest -Method Get -Uri $apiEndpoint -Headers $apiHeaders | ConvertFrom-Json } catch { Write-Host "Error: $_" } - return $result -} - -function Get-MaestroSubscriptions([string]$SourceRepository, [int]$ChannelId) { - Validate-MaestroVars - - $SourceRepository = [System.Web.HttpUtility]::UrlEncode($SourceRepository) - $apiHeaders = Create-MaestroApiRequestHeaders -AuthToken $MaestroApiAccessToken - $apiEndpoint = "$MaestroApiEndPoint/api/subscriptions?sourceRepository=$SourceRepository&channelId=$ChannelId&api-version=$MaestroApiVersion" - - $result = try { Invoke-WebRequest -Method Get -Uri $apiEndpoint -Headers $apiHeaders | ConvertFrom-Json } catch { Write-Host "Error: $_" } - return $result -} - -function Assign-BuildToChannel([int]$BuildId, [int]$ChannelId) { - Validate-MaestroVars - - $apiHeaders = Create-MaestroApiRequestHeaders -AuthToken $MaestroApiAccessToken - $apiEndpoint = "$MaestroApiEndPoint/api/channels/${ChannelId}/builds/${BuildId}?api-version=$MaestroApiVersion" - Invoke-WebRequest -Method Post -Uri $apiEndpoint -Headers $apiHeaders | Out-Null -} - -function Trigger-Subscription([string]$SubscriptionId) { - Validate-MaestroVars - - $apiHeaders = Create-MaestroApiRequestHeaders -AuthToken $MaestroApiAccessToken - $apiEndpoint = "$MaestroApiEndPoint/api/subscriptions/$SubscriptionId/trigger?api-version=$MaestroApiVersion" - Invoke-WebRequest -Uri $apiEndpoint -Headers $apiHeaders -Method Post | Out-Null -} - -function Validate-MaestroVars { - try { - Get-Variable MaestroApiEndPoint -Scope Global | Out-Null - Get-Variable MaestroApiVersion -Scope Global | Out-Null - Get-Variable MaestroApiAccessToken -Scope Global | Out-Null - - if (!($MaestroApiEndPoint -Match '^http[s]?://maestro-(int|prod).westus2.cloudapp.azure.com$')) { - Write-PipelineTelemetryError -Category 'MaestroVars' -Message "MaestroApiEndPoint is not a valid Maestro URL. '$MaestroApiEndPoint'" - ExitWithExitCode 1 - } - - if (!($MaestroApiVersion -Match '^[0-9]{4}-[0-9]{2}-[0-9]{2}$')) { - Write-PipelineTelemetryError -Category 'MaestroVars' -Message "MaestroApiVersion does not match a version string in the format yyyy-MM-DD. '$MaestroApiVersion'" - ExitWithExitCode 1 - } - } - catch { - Write-PipelineTelemetryError -Category 'MaestroVars' -Message 'Error: Variables `MaestroApiEndPoint`, `MaestroApiVersion` and `MaestroApiAccessToken` are required while using this script.' - Write-Host $_ - ExitWithExitCode 1 - } -} diff --git a/eng/common/post-build/promote-build.ps1 b/eng/common/post-build/promote-build.ps1 deleted file mode 100644 index ce45635fbd..0000000000 --- a/eng/common/post-build/promote-build.ps1 +++ /dev/null @@ -1,48 +0,0 @@ -param( - [Parameter(Mandatory=$true)][int] $BuildId, - [Parameter(Mandatory=$true)][int] $ChannelId, - [Parameter(Mandatory=$true)][string] $MaestroApiAccessToken, - [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro-prod.westus2.cloudapp.azure.com', - [Parameter(Mandatory=$false)][string] $MaestroApiVersion = '2019-01-16' -) - -try { - . $PSScriptRoot\post-build-utils.ps1 - - # Check that the channel we are going to promote the build to exist - $channelInfo = Get-MaestroChannel -ChannelId $ChannelId - - if (!$channelInfo) { - Write-PipelineTelemetryCategory -Category 'PromoteBuild' -Message "Channel with BAR ID $ChannelId was not found in BAR!" - ExitWithExitCode 1 - } - - # Get info about which channels the build has already been promoted to - $buildInfo = Get-MaestroBuild -BuildId $BuildId - - if (!$buildInfo) { - Write-PipelineTelemetryError -Category 'PromoteBuild' -Message "Build with BAR ID $BuildId was not found in BAR!" - ExitWithExitCode 1 - } - - # Find whether the build is already assigned to the channel or not - if ($buildInfo.channels) { - foreach ($channel in $buildInfo.channels) { - if ($channel.Id -eq $ChannelId) { - Write-Host "The build with BAR ID $BuildId is already on channel $ChannelId!" - ExitWithExitCode 0 - } - } - } - - Write-Host "Promoting build '$BuildId' to channel '$ChannelId'." - - Assign-BuildToChannel -BuildId $BuildId -ChannelId $ChannelId - - Write-Host 'done.' -} -catch { - Write-Host $_ - Write-PipelineTelemetryError -Category 'PromoteBuild' -Message "There was an error while trying to promote build '$BuildId' to channel '$ChannelId'" - ExitWithExitCode 1 -} diff --git a/eng/common/post-build/sourcelink-validation.ps1 b/eng/common/post-build/sourcelink-validation.ps1 deleted file mode 100644 index cc9d059d04..0000000000 --- a/eng/common/post-build/sourcelink-validation.ps1 +++ /dev/null @@ -1,257 +0,0 @@ -param( - [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where Symbols.NuGet packages to be checked are stored - [Parameter(Mandatory=$true)][string] $ExtractPath, # Full path to directory where the packages will be extracted during validation - [Parameter(Mandatory=$false)][string] $GHRepoName, # GitHub name of the repo including the Org. E.g., dotnet/arcade - [Parameter(Mandatory=$false)][string] $GHCommit, # GitHub commit SHA used to build the packages - [Parameter(Mandatory=$true)][string] $SourcelinkCliVersion # Version of SourceLink CLI to use -) - -. $PSScriptRoot\post-build-utils.ps1 - -# Cache/HashMap (File -> Exist flag) used to consult whether a file exist -# in the repository at a specific commit point. This is populated by inserting -# all files present in the repo at a specific commit point. -$global:RepoFiles = @{} - -# Maximum number of jobs to run in parallel -$MaxParallelJobs = 6 - -# Wait time between check for system load -$SecondsBetweenLoadChecks = 10 - -$ValidatePackage = { - param( - [string] $PackagePath # Full path to a Symbols.NuGet package - ) - - . $using:PSScriptRoot\..\tools.ps1 - - # Ensure input file exist - if (!(Test-Path $PackagePath)) { - Write-Host "Input file does not exist: $PackagePath" - return 1 - } - - # Extensions for which we'll look for SourceLink information - # For now we'll only care about Portable & Embedded PDBs - $RelevantExtensions = @('.dll', '.exe', '.pdb') - - Write-Host -NoNewLine 'Validating ' ([System.IO.Path]::GetFileName($PackagePath)) '...' - - $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) - $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId - $FailedFiles = 0 - - Add-Type -AssemblyName System.IO.Compression.FileSystem - - [System.IO.Directory]::CreateDirectory($ExtractPath) | Out-Null - - try { - $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath) - - $zip.Entries | - Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} | - ForEach-Object { - $FileName = $_.FullName - $Extension = [System.IO.Path]::GetExtension($_.Name) - $FakeName = -Join((New-Guid), $Extension) - $TargetFile = Join-Path -Path $ExtractPath -ChildPath $FakeName - - # We ignore resource DLLs - if ($FileName.EndsWith('.resources.dll')) { - return - } - - [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile, $true) - - $ValidateFile = { - param( - [string] $FullPath, # Full path to the module that has to be checked - [string] $RealPath, - [ref] $FailedFiles - ) - - $sourcelinkExe = "$env:USERPROFILE\.dotnet\tools" - $sourcelinkExe = Resolve-Path "$sourcelinkExe\sourcelink.exe" - $SourceLinkInfos = & $sourcelinkExe print-urls $FullPath | Out-String - - if ($LASTEXITCODE -eq 0 -and -not ([string]::IsNullOrEmpty($SourceLinkInfos))) { - $NumFailedLinks = 0 - - # We only care about Http addresses - $Matches = (Select-String '(http[s]?)(:\/\/)([^\s,]+)' -Input $SourceLinkInfos -AllMatches).Matches - - if ($Matches.Count -ne 0) { - $Matches.Value | - ForEach-Object { - $Link = $_ - $CommitUrl = "https://raw.githubusercontent.com/${using:GHRepoName}/${using:GHCommit}/" - - $FilePath = $Link.Replace($CommitUrl, "") - $Status = 200 - $Cache = $using:RepoFiles - - if ( !($Cache.ContainsKey($FilePath)) ) { - try { - $Uri = $Link -as [System.URI] - - # Only GitHub links are valid - if ($Uri.AbsoluteURI -ne $null -and ($Uri.Host -match 'github' -or $Uri.Host -match 'githubusercontent')) { - $Status = (Invoke-WebRequest -Uri $Link -UseBasicParsing -Method HEAD -TimeoutSec 5).StatusCode - } - else { - $Status = 0 - } - } - catch { - write-host $_ - $Status = 0 - } - } - - if ($Status -ne 200) { - if ($NumFailedLinks -eq 0) { - if ($FailedFiles.Value -eq 0) { - Write-Host - } - - Write-Host "`tFile $RealPath has broken links:" - } - - Write-Host "`t`tFailed to retrieve $Link" - - $NumFailedLinks++ - } - } - } - - if ($NumFailedLinks -ne 0) { - $FailedFiles.value++ - $global:LASTEXITCODE = 1 - } - } - } - - &$ValidateFile $TargetFile $FileName ([ref]$FailedFiles) - } - } - catch { - - } - finally { - $zip.Dispose() - } - - if ($FailedFiles -eq 0) { - Write-Host 'Passed.' - return 0 - } - else { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "$PackagePath has broken SourceLink links." - return 1 - } -} - -function ValidateSourceLinkLinks { - if ($GHRepoName -ne '' -and !($GHRepoName -Match '^[^\s\/]+/[^\s\/]+$')) { - if (!($GHRepoName -Match '^[^\s-]+-[^\s]+$')) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "GHRepoName should be in the format / or -. '$GHRepoName'" - ExitWithExitCode 1 - } - else { - $GHRepoName = $GHRepoName -replace '^([^\s-]+)-([^\s]+)$', '$1/$2'; - } - } - - if ($GHCommit -ne '' -and !($GHCommit -Match '^[0-9a-fA-F]{40}$')) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "GHCommit should be a 40 chars hexadecimal string. '$GHCommit'" - ExitWithExitCode 1 - } - - if ($GHRepoName -ne '' -and $GHCommit -ne '') { - $RepoTreeURL = -Join('http://api.github.com/repos/', $GHRepoName, '/git/trees/', $GHCommit, '?recursive=1') - $CodeExtensions = @('.cs', '.vb', '.fs', '.fsi', '.fsx', '.fsscript') - - try { - # Retrieve the list of files in the repo at that particular commit point and store them in the RepoFiles hash - $Data = Invoke-WebRequest $RepoTreeURL -UseBasicParsing | ConvertFrom-Json | Select-Object -ExpandProperty tree - - foreach ($file in $Data) { - $Extension = [System.IO.Path]::GetExtension($file.path) - - if ($CodeExtensions.Contains($Extension)) { - $RepoFiles[$file.path] = 1 - } - } - } - catch { - Write-Host "Problems downloading the list of files from the repo. Url used: $RepoTreeURL . Execution will proceed without caching." - } - } - elseif ($GHRepoName -ne '' -or $GHCommit -ne '') { - Write-Host 'For using the http caching mechanism both GHRepoName and GHCommit should be informed.' - } - - if (Test-Path $ExtractPath) { - Remove-Item $ExtractPath -Force -Recurse -ErrorAction SilentlyContinue - } - - # Process each NuGet package in parallel - Get-ChildItem "$InputPath\*.symbols.nupkg" | - ForEach-Object { - Start-Job -ScriptBlock $ValidatePackage -ArgumentList $_.FullName | Out-Null - $NumJobs = @(Get-Job -State 'Running').Count - - while ($NumJobs -ge $MaxParallelJobs) { - Write-Host "There are $NumJobs validation jobs running right now. Waiting $SecondsBetweenLoadChecks seconds to check again." - sleep $SecondsBetweenLoadChecks - $NumJobs = @(Get-Job -State 'Running').Count - } - - foreach ($Job in @(Get-Job -State 'Completed')) { - Receive-Job -Id $Job.Id - Remove-Job -Id $Job.Id - } - } - - $ValidationFailures = 0 - foreach ($Job in @(Get-Job)) { - $jobResult = Wait-Job -Id $Job.Id | Receive-Job - if ($jobResult -ne '0') { - $ValidationFailures++ - } - } - if ($ValidationFailures -gt 0) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "$ValidationFailures package(s) failed validation." - ExitWithExitCode 1 - } -} - -function InstallSourcelinkCli { - $sourcelinkCliPackageName = 'sourcelink' - - $dotnetRoot = InitializeDotNetCli -install:$true - $dotnet = "$dotnetRoot\dotnet.exe" - $toolList = & "$dotnet" tool list --global - - if (($toolList -like "*$sourcelinkCliPackageName*") -and ($toolList -like "*$sourcelinkCliVersion*")) { - Write-Host "SourceLink CLI version $sourcelinkCliVersion is already installed." - } - else { - Write-Host "Installing SourceLink CLI version $sourcelinkCliVersion..." - Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.' - & "$dotnet" tool install $sourcelinkCliPackageName --version $sourcelinkCliVersion --verbosity "minimal" --global - } -} - -try { - InstallSourcelinkCli - - ValidateSourceLinkLinks -} -catch { - Write-Host $_.Exception - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'SourceLink' -Message $_ - ExitWithExitCode 1 -} diff --git a/eng/common/post-build/symbols-validation.ps1 b/eng/common/post-build/symbols-validation.ps1 deleted file mode 100644 index 6e3e134172..0000000000 --- a/eng/common/post-build/symbols-validation.ps1 +++ /dev/null @@ -1,187 +0,0 @@ -param( - [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where NuGet packages to be checked are stored - [Parameter(Mandatory=$true)][string] $ExtractPath, # Full path to directory where the packages will be extracted during validation - [Parameter(Mandatory=$true)][string] $DotnetSymbolVersion # Version of dotnet symbol to use -) - -function FirstMatchingSymbolDescriptionOrDefault { - param( - [string] $FullPath, # Full path to the module that has to be checked - [string] $TargetServerParam, # Parameter to pass to `Symbol Tool` indicating the server to lookup for symbols - [string] $SymbolsPath - ) - - $FileName = [System.IO.Path]::GetFileName($FullPath) - $Extension = [System.IO.Path]::GetExtension($FullPath) - - # Those below are potential symbol files that the `dotnet symbol` might - # return. Which one will be returned depend on the type of file we are - # checking and which type of file was uploaded. - - # The file itself is returned - $SymbolPath = $SymbolsPath + '\' + $FileName - - # PDB file for the module - $PdbPath = $SymbolPath.Replace($Extension, '.pdb') - - # PDB file for R2R module (created by crossgen) - $NGenPdb = $SymbolPath.Replace($Extension, '.ni.pdb') - - # DBG file for a .so library - $SODbg = $SymbolPath.Replace($Extension, '.so.dbg') - - # DWARF file for a .dylib - $DylibDwarf = $SymbolPath.Replace($Extension, '.dylib.dwarf') - - $dotnetSymbolExe = "$env:USERPROFILE\.dotnet\tools" - $dotnetSymbolExe = Resolve-Path "$dotnetSymbolExe\dotnet-symbol.exe" - - & $dotnetSymbolExe --symbols --modules --windows-pdbs $TargetServerParam $FullPath -o $SymbolsPath | Out-Null - - if (Test-Path $PdbPath) { - return 'PDB' - } - elseif (Test-Path $NGenPdb) { - return 'NGen PDB' - } - elseif (Test-Path $SODbg) { - return 'DBG for SO' - } - elseif (Test-Path $DylibDwarf) { - return 'Dwarf for Dylib' - } - elseif (Test-Path $SymbolPath) { - return 'Module' - } - else { - return $null - } -} - -function CountMissingSymbols { - param( - [string] $PackagePath # Path to a NuGet package - ) - - # Ensure input file exist - if (!(Test-Path $PackagePath)) { - Write-PipelineTaskError "Input file does not exist: $PackagePath" - ExitWithExitCode 1 - } - - # Extensions for which we'll look for symbols - $RelevantExtensions = @('.dll', '.exe', '.so', '.dylib') - - # How many files are missing symbol information - $MissingSymbols = 0 - - $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) - $PackageGuid = New-Guid - $ExtractPath = Join-Path -Path $ExtractPath -ChildPath $PackageGuid - $SymbolsPath = Join-Path -Path $ExtractPath -ChildPath 'Symbols' - - [System.IO.Compression.ZipFile]::ExtractToDirectory($PackagePath, $ExtractPath) - - Get-ChildItem -Recurse $ExtractPath | - Where-Object {$RelevantExtensions -contains $_.Extension} | - ForEach-Object { - if ($_.FullName -Match '\\ref\\') { - Write-Host "`t Ignoring reference assembly file " $_.FullName - return - } - - $SymbolsOnMSDL = FirstMatchingSymbolDescriptionOrDefault $_.FullName '--microsoft-symbol-server' $SymbolsPath - $SymbolsOnSymWeb = FirstMatchingSymbolDescriptionOrDefault $_.FullName '--internal-server' $SymbolsPath - - Write-Host -NoNewLine "`t Checking file " $_.FullName "... " - - if ($SymbolsOnMSDL -ne $null -and $SymbolsOnSymWeb -ne $null) { - Write-Host "Symbols found on MSDL ($SymbolsOnMSDL) and SymWeb ($SymbolsOnSymWeb)" - } - else { - $MissingSymbols++ - - if ($SymbolsOnMSDL -eq $null -and $SymbolsOnSymWeb -eq $null) { - Write-Host 'No symbols found on MSDL or SymWeb!' - } - else { - if ($SymbolsOnMSDL -eq $null) { - Write-Host 'No symbols found on MSDL!' - } - else { - Write-Host 'No symbols found on SymWeb!' - } - } - } - } - - Pop-Location - - return $MissingSymbols -} - -function CheckSymbolsAvailable { - if (Test-Path $ExtractPath) { - Remove-Item $ExtractPath -Force -Recurse -ErrorAction SilentlyContinue - } - - Get-ChildItem "$InputPath\*.nupkg" | - ForEach-Object { - $FileName = $_.Name - - # These packages from Arcade-Services include some native libraries that - # our current symbol uploader can't handle. Below is a workaround until - # we get issue: https://github.com/dotnet/arcade/issues/2457 sorted. - if ($FileName -Match 'Microsoft\.DotNet\.Darc\.') { - Write-Host "Ignoring Arcade-services file: $FileName" - Write-Host - return - } - elseif ($FileName -Match 'Microsoft\.DotNet\.Maestro\.Tasks\.') { - Write-Host "Ignoring Arcade-services file: $FileName" - Write-Host - return - } - - Write-Host "Validating $FileName " - $Status = CountMissingSymbols "$InputPath\$FileName" - - if ($Status -ne 0) { - Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "Missing symbols for $Status modules in the package $FileName" - ExitWithExitCode $exitCode - } - - Write-Host - } -} - -function InstallDotnetSymbol { - $dotnetSymbolPackageName = 'dotnet-symbol' - - $dotnetRoot = InitializeDotNetCli -install:$true - $dotnet = "$dotnetRoot\dotnet.exe" - $toolList = & "$dotnet" tool list --global - - if (($toolList -like "*$dotnetSymbolPackageName*") -and ($toolList -like "*$dotnetSymbolVersion*")) { - Write-Host "dotnet-symbol version $dotnetSymbolVersion is already installed." - } - else { - Write-Host "Installing dotnet-symbol version $dotnetSymbolVersion..." - Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.' - & "$dotnet" tool install $dotnetSymbolPackageName --version $dotnetSymbolVersion --verbosity "minimal" --global - } -} - -try { - . $PSScriptRoot\post-build-utils.ps1 - - Add-Type -AssemblyName System.IO.Compression.FileSystem - - InstallDotnetSymbol - CheckSymbolsAvailable -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'CheckSymbols' -Message $_ - ExitWithExitCode 1 -} diff --git a/eng/common/post-build/trigger-subscriptions.ps1 b/eng/common/post-build/trigger-subscriptions.ps1 deleted file mode 100644 index 55dea518ac..0000000000 --- a/eng/common/post-build/trigger-subscriptions.ps1 +++ /dev/null @@ -1,64 +0,0 @@ -param( - [Parameter(Mandatory=$true)][string] $SourceRepo, - [Parameter(Mandatory=$true)][int] $ChannelId, - [Parameter(Mandatory=$true)][string] $MaestroApiAccessToken, - [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro-prod.westus2.cloudapp.azure.com', - [Parameter(Mandatory=$false)][string] $MaestroApiVersion = '2019-01-16' -) - -try { - . $PSScriptRoot\post-build-utils.ps1 - - # Get all the $SourceRepo subscriptions - $normalizedSourceRepo = $SourceRepo.Replace('dnceng@', '') - $subscriptions = Get-MaestroSubscriptions -SourceRepository $normalizedSourceRepo -ChannelId $ChannelId - - if (!$subscriptions) { - Write-PipelineTelemetryError -Category 'TriggerSubscriptions' -Message "No subscriptions found for source repo '$normalizedSourceRepo' in channel '$ChannelId'" - ExitWithExitCode 0 - } - - $subscriptionsToTrigger = New-Object System.Collections.Generic.List[string] - $failedTriggeredSubscription = $false - - # Get all enabled subscriptions that need dependency flow on 'everyBuild' - foreach ($subscription in $subscriptions) { - if ($subscription.enabled -and $subscription.policy.updateFrequency -like 'everyBuild' -and $subscription.channel.id -eq $ChannelId) { - Write-Host "Should trigger this subscription: ${$subscription.id}" - [void]$subscriptionsToTrigger.Add($subscription.id) - } - } - - foreach ($subscriptionToTrigger in $subscriptionsToTrigger) { - try { - Write-Host "Triggering subscription '$subscriptionToTrigger'." - - Trigger-Subscription -SubscriptionId $subscriptionToTrigger - - Write-Host 'done.' - } - catch - { - Write-Host "There was an error while triggering subscription '$subscriptionToTrigger'" - Write-Host $_ - Write-Host $_.ScriptStackTrace - $failedTriggeredSubscription = $true - } - } - - if ($subscriptionsToTrigger.Count -eq 0) { - Write-Host "No subscription matched source repo '$normalizedSourceRepo' and channel ID '$ChannelId'." - } - elseif ($failedTriggeredSubscription) { - Write-PipelineTelemetryError -Category 'TriggerSubscriptions' -Message 'At least one subscription failed to be triggered...' - ExitWithExitCode 1 - } - else { - Write-Host 'All subscriptions were triggered successfully!' - } -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'TriggerSubscriptions' -Message $_ - ExitWithExitCode 1 -} diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1 deleted file mode 100644 index 3872af59b9..0000000000 --- a/eng/common/sdk-task.ps1 +++ /dev/null @@ -1,78 +0,0 @@ -[CmdletBinding(PositionalBinding=$false)] -Param( - [string] $configuration = 'Debug', - [string] $task, - [string] $verbosity = 'minimal', - [string] $msbuildEngine = $null, - [switch] $restore, - [switch] $prepareMachine, - [switch] $help, - [Parameter(ValueFromRemainingArguments=$true)][String[]]$properties -) - -$ci = $true -$binaryLog = $true -$warnAsError = $true - -. $PSScriptRoot\tools.ps1 - -function Print-Usage() { - Write-Host "Common settings:" - Write-Host " -task Name of Arcade task (name of a project in SdkTasks directory of the Arcade SDK package)" - Write-Host " -restore Restore dependencies" - Write-Host " -verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]" - Write-Host " -help Print help and exit" - Write-Host "" - - Write-Host "Advanced settings:" - Write-Host " -prepareMachine Prepare machine for CI run" - Write-Host " -msbuildEngine Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)." - Write-Host "" - Write-Host "Command line arguments not listed above are passed thru to msbuild." -} - -function Build([string]$target) { - $logSuffix = if ($target -eq 'Execute') { '' } else { ".$target" } - $log = Join-Path $LogDir "$task$logSuffix.binlog" - $outputPath = Join-Path $ToolsetDir "$task\\" - - MSBuild $taskProject ` - /bl:$log ` - /t:$target ` - /p:Configuration=$configuration ` - /p:RepoRoot=$RepoRoot ` - /p:BaseIntermediateOutputPath=$outputPath ` - @properties -} - -try { - if ($help -or (($null -ne $properties) -and ($properties.Contains('/help') -or $properties.Contains('/?')))) { - Print-Usage - exit 0 - } - - if ($task -eq "") { - Write-PipelineTelemetryError -Category 'Build' -Message "Missing required parameter '-task '" -ForegroundColor Red - Print-Usage - ExitWithExitCode 1 - } - - $taskProject = GetSdkTaskProject $task - if (!(Test-Path $taskProject)) { - Write-PipelineTelemetryError -Category 'Build' -Message "Unknown task: $task" -ForegroundColor Red - ExitWithExitCode 1 - } - - if ($restore) { - Build 'Restore' - } - - Build 'Execute' -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'Build' -Message $_ - ExitWithExitCode 1 -} - -ExitWithExitCode 0 diff --git a/eng/common/sdl/NuGet.config b/eng/common/sdl/NuGet.config deleted file mode 100644 index 0c5451c114..0000000000 --- a/eng/common/sdl/NuGet.config +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/eng/common/sdl/execute-all-sdl-tools.ps1 b/eng/common/sdl/execute-all-sdl-tools.ps1 deleted file mode 100644 index 339dc9b503..0000000000 --- a/eng/common/sdl/execute-all-sdl-tools.ps1 +++ /dev/null @@ -1,110 +0,0 @@ -Param( - [string] $GuardianPackageName, # Required: the name of guardian CLI package (not needed if GuardianCliLocation is specified) - [string] $NugetPackageDirectory, # Required: directory where NuGet packages are installed (not needed if GuardianCliLocation is specified) - [string] $GuardianCliLocation, # Optional: Direct location of Guardian CLI executable if GuardianPackageName & NugetPackageDirectory are not specified - [string] $Repository=$env:BUILD_REPOSITORY_NAME, # Required: the name of the repository (e.g. dotnet/arcade) - [string] $BranchName=$env:BUILD_SOURCEBRANCH, # Optional: name of branch or version of gdn settings; defaults to master - [string] $SourceDirectory=$env:BUILD_SOURCESDIRECTORY, # Required: the directory where source files are located - [string] $ArtifactsDirectory = (Join-Path $env:BUILD_ARTIFACTSTAGINGDIRECTORY ("artifacts")), # Required: the directory where build artifacts are located - [string] $AzureDevOpsAccessToken, # Required: access token for dnceng; should be provided via KeyVault - [string[]] $SourceToolsList, # Optional: list of SDL tools to run on source code - [string[]] $ArtifactToolsList, # Optional: list of SDL tools to run on built artifacts - [bool] $TsaPublish=$False, # Optional: true will publish results to TSA; only set to true after onboarding to TSA; TSA is the automated framework used to upload test results as bugs. - [string] $TsaBranchName=$env:BUILD_SOURCEBRANCH, # Optional: required for TSA publish; defaults to $(Build.SourceBranchName); TSA is the automated framework used to upload test results as bugs. - [string] $TsaRepositoryName=$env:BUILD_REPOSITORY_NAME, # Optional: TSA repository name; will be generated automatically if not submitted; TSA is the automated framework used to upload test results as bugs. - [string] $BuildNumber=$env:BUILD_BUILDNUMBER, # Optional: required for TSA publish; defaults to $(Build.BuildNumber) - [bool] $UpdateBaseline=$False, # Optional: if true, will update the baseline in the repository; should only be run after fixing any issues which need to be fixed - [bool] $TsaOnboard=$False, # Optional: if true, will onboard the repository to TSA; should only be run once; TSA is the automated framework used to upload test results as bugs. - [string] $TsaInstanceUrl, # Optional: only needed if TsaOnboard or TsaPublish is true; the instance-url registered with TSA; TSA is the automated framework used to upload test results as bugs. - [string] $TsaCodebaseName, # Optional: only needed if TsaOnboard or TsaPublish is true; the name of the codebase registered with TSA; TSA is the automated framework used to upload test results as bugs. - [string] $TsaProjectName, # Optional: only needed if TsaOnboard or TsaPublish is true; the name of the project registered with TSA; TSA is the automated framework used to upload test results as bugs. - [string] $TsaNotificationEmail, # Optional: only needed if TsaOnboard is true; the email(s) which will receive notifications of TSA bug filings (e.g. alias@microsoft.com); TSA is the automated framework used to upload test results as bugs. - [string] $TsaCodebaseAdmin, # Optional: only needed if TsaOnboard is true; the aliases which are admins of the TSA codebase (e.g. DOMAIN\alias); TSA is the automated framework used to upload test results as bugs. - [string] $TsaBugAreaPath, # Optional: only needed if TsaOnboard is true; the area path where TSA will file bugs in AzDO; TSA is the automated framework used to upload test results as bugs. - [string] $TsaIterationPath, # Optional: only needed if TsaOnboard is true; the iteration path where TSA will file bugs in AzDO; TSA is the automated framework used to upload test results as bugs. - [string] $GuardianLoggerLevel="Standard", # Optional: the logger level for the Guardian CLI; options are Trace, Verbose, Standard, Warning, and Error - [string[]] $CrScanAdditionalRunConfigParams, # Optional: Additional Params to custom build a CredScan run config in the format @("xyz:abc","sdf:1") - [string[]] $PoliCheckAdditionalRunConfigParams # Optional: Additional Params to custom build a Policheck run config in the format @("xyz:abc","sdf:1") -) - -try { - $ErrorActionPreference = 'Stop' - Set-StrictMode -Version 2.0 - $disableConfigureToolsetImport = $true - $LASTEXITCODE = 0 - - . $PSScriptRoot\..\tools.ps1 - - #Replace repo names to the format of org/repo - if (!($Repository.contains('/'))) { - $RepoName = $Repository -replace '(.*?)-(.*)', '$1/$2'; - } - else{ - $RepoName = $Repository; - } - - if ($GuardianPackageName) { - $guardianCliLocation = Join-Path $NugetPackageDirectory (Join-Path $GuardianPackageName (Join-Path 'tools' 'guardian.cmd')) - } else { - $guardianCliLocation = $GuardianCliLocation - } - - $workingDirectory = (Split-Path $SourceDirectory -Parent) - $ValidPath = Test-Path $guardianCliLocation - - if ($ValidPath -eq $False) - { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message 'Invalid Guardian CLI Location.' - ExitWithExitCode 1 - } - - & $(Join-Path $PSScriptRoot 'init-sdl.ps1') -GuardianCliLocation $guardianCliLocation -Repository $RepoName -BranchName $BranchName -WorkingDirectory $workingDirectory -AzureDevOpsAccessToken $AzureDevOpsAccessToken -GuardianLoggerLevel $GuardianLoggerLevel - $gdnFolder = Join-Path $workingDirectory '.gdn' - - if ($TsaOnboard) { - if ($TsaCodebaseName -and $TsaNotificationEmail -and $TsaCodebaseAdmin -and $TsaBugAreaPath) { - Write-Host "$guardianCliLocation tsa-onboard --codebase-name `"$TsaCodebaseName`" --notification-alias `"$TsaNotificationEmail`" --codebase-admin `"$TsaCodebaseAdmin`" --instance-url `"$TsaInstanceUrl`" --project-name `"$TsaProjectName`" --area-path `"$TsaBugAreaPath`" --iteration-path `"$TsaIterationPath`" --working-directory $workingDirectory --logger-level $GuardianLoggerLevel" - & $guardianCliLocation tsa-onboard --codebase-name "$TsaCodebaseName" --notification-alias "$TsaNotificationEmail" --codebase-admin "$TsaCodebaseAdmin" --instance-url "$TsaInstanceUrl" --project-name "$TsaProjectName" --area-path "$TsaBugAreaPath" --iteration-path "$TsaIterationPath" --working-directory $workingDirectory --logger-level $GuardianLoggerLevel - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Guardian tsa-onboard failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } - } else { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message 'Could not onboard to TSA -- not all required values ($TsaCodebaseName, $TsaNotificationEmail, $TsaCodebaseAdmin, $TsaBugAreaPath) were specified.' - ExitWithExitCode 1 - } - } - - if ($ArtifactToolsList -and $ArtifactToolsList.Count -gt 0) { - & $(Join-Path $PSScriptRoot 'run-sdl.ps1') -GuardianCliLocation $guardianCliLocation -WorkingDirectory $workingDirectory -TargetDirectory $ArtifactsDirectory -GdnFolder $gdnFolder -ToolsList $ArtifactToolsList -AzureDevOpsAccessToken $AzureDevOpsAccessToken -UpdateBaseline $UpdateBaseline -GuardianLoggerLevel $GuardianLoggerLevel -CrScanAdditionalRunConfigParams $CrScanAdditionalRunConfigParams -PoliCheckAdditionalRunConfigParams $PoliCheckAdditionalRunConfigParams - } - if ($SourceToolsList -and $SourceToolsList.Count -gt 0) { - & $(Join-Path $PSScriptRoot 'run-sdl.ps1') -GuardianCliLocation $guardianCliLocation -WorkingDirectory $workingDirectory -TargetDirectory $SourceDirectory -GdnFolder $gdnFolder -ToolsList $SourceToolsList -AzureDevOpsAccessToken $AzureDevOpsAccessToken -UpdateBaseline $UpdateBaseline -GuardianLoggerLevel $GuardianLoggerLevel -CrScanAdditionalRunConfigParams $CrScanAdditionalRunConfigParams -PoliCheckAdditionalRunConfigParams $PoliCheckAdditionalRunConfigParams - } - - if ($UpdateBaseline) { - & (Join-Path $PSScriptRoot 'push-gdn.ps1') -Repository $RepoName -BranchName $BranchName -GdnFolder $GdnFolder -AzureDevOpsAccessToken $AzureDevOpsAccessToken -PushReason 'Update baseline' - } - - if ($TsaPublish) { - if ($TsaBranchName -and $BuildNumber) { - if (-not $TsaRepositoryName) { - $TsaRepositoryName = "$($Repository)-$($BranchName)" - } - Write-Host "$guardianCliLocation tsa-publish --all-tools --repository-name `"$TsaRepositoryName`" --branch-name `"$TsaBranchName`" --build-number `"$BuildNumber`" --codebase-name `"$TsaCodebaseName`" --notification-alias `"$TsaNotificationEmail`" --codebase-admin `"$TsaCodebaseAdmin`" --instance-url `"$TsaInstanceUrl`" --project-name `"$TsaProjectName`" --area-path `"$TsaBugAreaPath`" --iteration-path `"$TsaIterationPath`" --working-directory $workingDirectory --logger-level $GuardianLoggerLevel" - & $guardianCliLocation tsa-publish --all-tools --repository-name "$TsaRepositoryName" --branch-name "$TsaBranchName" --build-number "$BuildNumber" --onboard $True --codebase-name "$TsaCodebaseName" --notification-alias "$TsaNotificationEmail" --codebase-admin "$TsaCodebaseAdmin" --instance-url "$TsaInstanceUrl" --project-name "$TsaProjectName" --area-path "$TsaBugAreaPath" --iteration-path "$TsaIterationPath" --working-directory $workingDirectory --logger-level $GuardianLoggerLevel - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Guardian tsa-publish failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } - } else { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message 'Could not publish to TSA -- not all required values ($TsaBranchName, $BuildNumber) were specified.' - ExitWithExitCode 1 - } - } -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ - exit 1 -} diff --git a/eng/common/sdl/extract-artifact-packages.ps1 b/eng/common/sdl/extract-artifact-packages.ps1 deleted file mode 100644 index 9a4fc1743d..0000000000 --- a/eng/common/sdl/extract-artifact-packages.ps1 +++ /dev/null @@ -1,107 +0,0 @@ -param( - [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where artifact packages are stored - [Parameter(Mandatory=$true)][string] $ExtractPath # Full path to directory where the packages will be extracted -) - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 - -# `tools.ps1` checks $ci to perform some actions. Since the post-build -# scripts don't necessarily execute in the same agent that run the -# build.ps1/sh script this variable isn't automatically set. -$ci = $true -. $PSScriptRoot\..\tools.ps1 - -$ExtractPackage = { - param( - [string] $PackagePath # Full path to a NuGet package - ) - - if (!(Test-Path $PackagePath)) { - Write-PipelineTaskError "Input file does not exist: $PackagePath" - ExitWithExitCode 1 - } - - $RelevantExtensions = @(".dll", ".exe", ".pdb") - Write-Host -NoNewLine "Extracting" ([System.IO.Path]::GetFileName($PackagePath)) "... " - - $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) - $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId - - Add-Type -AssemblyName System.IO.Compression.FileSystem - - [System.IO.Directory]::CreateDirectory($ExtractPath); ->>>>>>> refs/rewritten/upstream/release/dev16.4 - -# `tools.ps1` checks $ci to perform some actions. Since the post-build -# scripts don't necessarily execute in the same agent that run the -# build.ps1/sh script this variable isn't automatically set. -$ci = $true -$disableConfigureToolsetImport = $true - -function ExtractArtifacts { - if (!(Test-Path $InputPath)) { - Write-Host "Input Path does not exist: $InputPath" - ExitWithExitCode 0 - } - $Jobs = @() - Get-ChildItem "$InputPath\*.nupkg" | - ForEach-Object { - $Jobs += Start-Job -ScriptBlock $ExtractPackage -ArgumentList $_.FullName - } - - foreach ($Job in $Jobs) { - Wait-Job -Id $Job.Id | Receive-Job - } -} - -try { - . $PSScriptRoot\..\tools.ps1 - - $ExtractPackage = { - param( - [string] $PackagePath # Full path to a NuGet package - ) - - if (!(Test-Path $PackagePath)) { - Write-PipelineTelemetryError -Category 'Build' -Message "Input file does not exist: $PackagePath" - ExitWithExitCode 1 - } - - $RelevantExtensions = @('.dll', '.exe', '.pdb') - Write-Host -NoNewLine 'Extracting ' ([System.IO.Path]::GetFileName($PackagePath)) '...' - - $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) - $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId - - Add-Type -AssemblyName System.IO.Compression.FileSystem - - [System.IO.Directory]::CreateDirectory($ExtractPath); - - try { - $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath) - - $zip.Entries | - Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} | - ForEach-Object { - $TargetFile = Join-Path -Path $ExtractPath -ChildPath $_.Name - - [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile, $true) - } - } - catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ - ExitWithExitCode 1 - } - finally { - $zip.Dispose() - } - } - Measure-Command { ExtractArtifacts } -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ - ExitWithExitCode 1 -} diff --git a/eng/common/sdl/init-sdl.ps1 b/eng/common/sdl/init-sdl.ps1 deleted file mode 100644 index 285f1ccdb0..0000000000 --- a/eng/common/sdl/init-sdl.ps1 +++ /dev/null @@ -1,63 +0,0 @@ -Param( - [string] $GuardianCliLocation, - [string] $Repository, - [string] $BranchName='master', - [string] $WorkingDirectory, - [string] $AzureDevOpsAccessToken, - [string] $GuardianLoggerLevel='Standard' -) - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 -$disableConfigureToolsetImport = $true -$LASTEXITCODE = 0 - -. $PSScriptRoot\..\tools.ps1 - -# Don't display the console progress UI - it's a huge perf hit -$ProgressPreference = 'SilentlyContinue' - -# Construct basic auth from AzDO access token; construct URI to the repository's gdn folder stored in that repository; construct location of zip file -$encodedPat = [Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$AzureDevOpsAccessToken")) -$escapedRepository = [Uri]::EscapeDataString("/$Repository/$BranchName/.gdn") -$uri = "https://dev.azure.com/dnceng/internal/_apis/git/repositories/sdl-tool-cfg/Items?path=$escapedRepository&versionDescriptor[versionOptions]=0&`$format=zip&api-version=5.0-preview.1" -$zipFile = "$WorkingDirectory/gdn.zip" - -Add-Type -AssemblyName System.IO.Compression.FileSystem -$gdnFolder = (Join-Path $WorkingDirectory '.gdn') -try { - # We try to download the zip; if the request fails (e.g. the file doesn't exist), we catch it and init guardian instead - Write-Host 'Downloading gdn folder from internal config repostiory...' - Invoke-WebRequest -Headers @{ "Accept"="application/zip"; "Authorization"="Basic $encodedPat" } -Uri $uri -OutFile $zipFile - if (Test-Path $gdnFolder) { - # Remove the gdn folder if it exists (it shouldn't unless there's too much caching; this is just in case) - Remove-Item -Force -Recurse $gdnFolder - } - [System.IO.Compression.ZipFile]::ExtractToDirectory($zipFile, $WorkingDirectory) - Write-Host $gdnFolder - ExitWithExitCode 0 -} catch [System.Net.WebException] { } # Catch and ignore webexception -try { - # if the folder does not exist, we'll do a guardian init and push it to the remote repository - Write-Host 'Initializing Guardian...' - Write-Host "$GuardianCliLocation init --working-directory $WorkingDirectory --logger-level $GuardianLoggerLevel" - & $GuardianCliLocation init --working-directory $WorkingDirectory --logger-level $GuardianLoggerLevel - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Build' -Message "Guardian init failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } - # We create the mainbaseline so it can be edited later - Write-Host "$GuardianCliLocation baseline --working-directory $WorkingDirectory --name mainbaseline" - & $GuardianCliLocation baseline --working-directory $WorkingDirectory --name mainbaseline - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Build' -Message "Guardian baseline failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } - & $(Join-Path $PSScriptRoot 'push-gdn.ps1') -Repository $Repository -BranchName $BranchName -GdnFolder $gdnFolder -AzureDevOpsAccessToken $AzureDevOpsAccessToken -PushReason 'Initialize gdn folder' - ExitWithExitCode 0 -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'Sdl' -Message $_ - ExitWithExitCode 1 -} diff --git a/eng/common/sdl/packages.config b/eng/common/sdl/packages.config deleted file mode 100644 index 256ffbfb93..0000000000 --- a/eng/common/sdl/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/eng/common/sdl/push-gdn.ps1 b/eng/common/sdl/push-gdn.ps1 deleted file mode 100644 index 79d3d355c7..0000000000 --- a/eng/common/sdl/push-gdn.ps1 +++ /dev/null @@ -1,65 +0,0 @@ -Param( - [string] $Repository, - [string] $BranchName='master', - [string] $GdnFolder, - [string] $AzureDevOpsAccessToken, - [string] $PushReason -) - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 -$disableConfigureToolsetImport = $true -$LASTEXITCODE = 0 - -try { - . $PSScriptRoot\..\tools.ps1 - - # We create the temp directory where we'll store the sdl-config repository - $sdlDir = Join-Path $env:TEMP 'sdl' - if (Test-Path $sdlDir) { - Remove-Item -Force -Recurse $sdlDir - } - - Write-Host "git clone https://dnceng:`$AzureDevOpsAccessToken@dev.azure.com/dnceng/internal/_git/sdl-tool-cfg $sdlDir" - git clone https://dnceng:$AzureDevOpsAccessToken@dev.azure.com/dnceng/internal/_git/sdl-tool-cfg $sdlDir - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Git clone failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } - # We copy the .gdn folder from our local run into the git repository so it can be committed - $sdlRepositoryFolder = Join-Path (Join-Path (Join-Path $sdlDir $Repository) $BranchName) '.gdn' - if (Get-Command Robocopy) { - Robocopy /S $GdnFolder $sdlRepositoryFolder - } else { - rsync -r $GdnFolder $sdlRepositoryFolder - } - # cd to the sdl-config directory so we can run git there - Push-Location $sdlDir - # git add . --> git commit --> git push - Write-Host 'git add .' - git add . - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Git add failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } - Write-Host "git -c user.email=`"dn-bot@microsoft.com`" -c user.name=`"Dotnet Bot`" commit -m `"$PushReason for $Repository/$BranchName`"" - git -c user.email="dn-bot@microsoft.com" -c user.name="Dotnet Bot" commit -m "$PushReason for $Repository/$BranchName" - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Git commit failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } - Write-Host 'git push' - git push - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Git push failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } - - # Return to the original directory - Pop-Location -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'Sdl' -Message $_ - ExitWithExitCode 1 -} \ No newline at end of file diff --git a/eng/common/sdl/run-sdl.ps1 b/eng/common/sdl/run-sdl.ps1 deleted file mode 100644 index 40a084f796..0000000000 --- a/eng/common/sdl/run-sdl.ps1 +++ /dev/null @@ -1,69 +0,0 @@ -Param( - [string] $GuardianCliLocation, - [string] $WorkingDirectory, - [string] $TargetDirectory, - [string] $GdnFolder, - [string[]] $ToolsList, - [string] $UpdateBaseline, - [string] $GuardianLoggerLevel='Standard', - [string[]] $CrScanAdditionalRunConfigParams, - [string[]] $PoliCheckAdditionalRunConfigParams -) - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 -$disableConfigureToolsetImport = $true -$LASTEXITCODE = 0 - -try { - . $PSScriptRoot\..\tools.ps1 - - # We store config files in the r directory of .gdn - Write-Host $ToolsList - $gdnConfigPath = Join-Path $GdnFolder 'r' - $ValidPath = Test-Path $GuardianCliLocation - - if ($ValidPath -eq $False) - { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Invalid Guardian CLI Location." - ExitWithExitCode 1 - } - - $configParam = @('--config') - - foreach ($tool in $ToolsList) { - $gdnConfigFile = Join-Path $gdnConfigPath "$tool-configure.gdnconfig" - Write-Host $tool - # We have to manually configure tools that run on source to look at the source directory only - if ($tool -eq 'credscan') { - Write-Host "$GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args `" TargetDirectory < $TargetDirectory `" `" OutputType < pre `" $(If ($CrScanAdditionalRunConfigParams) {$CrScanAdditionalRunConfigParams})" - & $GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args " TargetDirectory < $TargetDirectory " "OutputType < pre" $(If ($CrScanAdditionalRunConfigParams) {$CrScanAdditionalRunConfigParams}) - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Guardian configure for $tool failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } - } - if ($tool -eq 'policheck') { - Write-Host "$GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args `" Target < $TargetDirectory `" $(If ($PoliCheckAdditionalRunConfigParams) {$PoliCheckAdditionalRunConfigParams})" - & $GuardianCliLocation configure --working-directory $WorkingDirectory --tool $tool --output-path $gdnConfigFile --logger-level $GuardianLoggerLevel --noninteractive --force --args " Target < $TargetDirectory " $(If ($PoliCheckAdditionalRunConfigParams) {$PoliCheckAdditionalRunConfigParams}) - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Guardian configure for $tool failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } - } - - $configParam+=$gdnConfigFile - } - - Write-Host "$GuardianCliLocation run --working-directory $WorkingDirectory --baseline mainbaseline --update-baseline $UpdateBaseline --logger-level $GuardianLoggerLevel $configParam" - & $GuardianCliLocation run --working-directory $WorkingDirectory --tool $tool --baseline mainbaseline --update-baseline $UpdateBaseline --logger-level $GuardianLoggerLevel $configParam - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Guardian run for $ToolsList using $configParam failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'Sdl' -Message $_ - ExitWithExitCode 1 -} \ No newline at end of file diff --git a/eng/common/templates/job/execute-sdl.yml b/eng/common/templates/job/execute-sdl.yml deleted file mode 100644 index da342a0749..0000000000 --- a/eng/common/templates/job/execute-sdl.yml +++ /dev/null @@ -1,64 +0,0 @@ -parameters: - overrideParameters: '' # Optional: to override values for parameters. - additionalParameters: '' # Optional: parameters that need user specific values eg: '-SourceToolsList @("abc","def") -ArtifactToolsList @("ghi","jkl")' - # There is some sort of bug (has been reported) in Azure DevOps where if this parameter is named - # 'continueOnError', the parameter value is not correctly picked up. - # This can also be remedied by the caller (post-build.yml) if it does not use a nested parameter - sdlContinueOnError: false # optional: determines whether to continue the build if the step errors; - dependsOn: '' # Optional: dependencies of the job - artifactNames: '' # Optional: patterns supplied to DownloadBuildArtifacts - # Usage: - # artifactNames: - # - 'BlobArtifacts' - # - 'Artifacts_Windows_NT_Release' - -jobs: -- job: Run_SDL - dependsOn: ${{ parameters.dependsOn }} - displayName: Run SDL tool - variables: - - group: DotNet-VSTS-Bot - pool: - name: Hosted VS2017 - steps: - - checkout: self - clean: true - - task: DownloadBuildArtifacts@0 - displayName: Download Build Artifacts - inputs: - buildType: current - downloadType: specific files - matchingPattern: "**" - downloadPath: $(Build.ArtifactStagingDirectory)\artifacts - - powershell: eng/common/sdl/extract-artifact-packages.ps1 - -InputPath $(Build.ArtifactStagingDirectory)\artifacts\BlobArtifacts - -ExtractPath $(Build.ArtifactStagingDirectory)\artifacts\BlobArtifacts - displayName: Extract Blob Artifacts - continueOnError: ${{ parameters.sdlContinueOnError }} - - powershell: eng/common/sdl/extract-artifact-packages.ps1 - -InputPath $(Build.ArtifactStagingDirectory)\artifacts\PackageArtifacts - -ExtractPath $(Build.ArtifactStagingDirectory)\artifacts\PackageArtifacts - displayName: Extract Package Artifacts - continueOnError: ${{ parameters.sdlContinueOnError }} - - task: NuGetToolInstaller@1 - displayName: 'Install NuGet.exe' - - task: NuGetCommand@2 - displayName: 'Install Guardian' - inputs: - restoreSolution: $(Build.SourcesDirectory)\eng\common\sdl\packages.config - feedsToUse: config - nugetConfigPath: $(Build.SourcesDirectory)\eng\common\sdl\NuGet.config - externalFeedCredentials: GuardianConnect - restoreDirectory: $(Build.SourcesDirectory)\.packages - - ${{ if ne(parameters.overrideParameters, '') }}: - - powershell: eng/common/sdl/execute-all-sdl-tools.ps1 ${{ parameters.overrideParameters }} - displayName: Execute SDL - continueOnError: ${{ parameters.sdlContinueOnError }} - - ${{ if eq(parameters.overrideParameters, '') }}: - - powershell: eng/common/sdl/execute-all-sdl-tools.ps1 - -GuardianPackageName Microsoft.Guardian.Cli.0.7.2 - -NugetPackageDirectory $(Build.SourcesDirectory)\.packages - -AzureDevOpsAccessToken $(dn-bot-dotnet-build-rw-code-rw) - ${{ parameters.additionalParameters }} - displayName: Execute SDL - continueOnError: ${{ parameters.sdlContinueOnError }} diff --git a/eng/common/templates/job/generate-graph-files.yml b/eng/common/templates/job/generate-graph-files.yml deleted file mode 100644 index e54ce956f9..0000000000 --- a/eng/common/templates/job/generate-graph-files.yml +++ /dev/null @@ -1,48 +0,0 @@ -parameters: - # Optional: dependencies of the job - dependsOn: '' - - # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool - pool: {} - - # Optional: Include toolset dependencies in the generated graph files - includeToolset: false - -jobs: -- job: Generate_Graph_Files - - dependsOn: ${{ parameters.dependsOn }} - - displayName: Generate Graph Files - - pool: ${{ parameters.pool }} - - variables: - # Publish-Build-Assets provides: MaestroAccessToken, BotAccount-dotnet-maestro-bot-PAT - # DotNet-AllOrgs-Darc-Pats provides: dn-bot-devdiv-dnceng-rw-code-pat - - group: Publish-Build-Assets - - group: DotNet-AllOrgs-Darc-Pats - - name: _GraphArguments - value: -gitHubPat $(BotAccount-dotnet-maestro-bot-PAT) - -azdoPat $(dn-bot-devdiv-dnceng-rw-code-pat) - -barToken $(MaestroAccessToken) - -outputFolder '$(Build.StagingDirectory)/GraphFiles/' - - ${{ if ne(parameters.includeToolset, 'false') }}: - - name: _GraphArguments - value: ${{ variables._GraphArguments }} -includeToolset - - steps: - - task: PowerShell@2 - displayName: Generate Graph Files - inputs: - filePath: eng\common\generate-graph-files.ps1 - arguments: $(_GraphArguments) - continueOnError: true - - task: PublishBuildArtifacts@1 - displayName: Publish Graph to Artifacts - inputs: - PathtoPublish: '$(Build.StagingDirectory)/GraphFiles' - PublishLocation: Container - ArtifactName: GraphFiles - continueOnError: true - condition: always() diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml deleted file mode 100644 index 13dd40e26c..0000000000 --- a/eng/common/templates/job/job.yml +++ /dev/null @@ -1,216 +0,0 @@ -# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, -# and some (Microbuild) should only be applied to non-PR cases for internal builds. - -parameters: -# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job - cancelTimeoutInMinutes: '' - condition: '' - container: '' - continueOnError: false - dependsOn: '' - displayName: '' - pool: '' - steps: [] - strategy: '' - timeoutInMinutes: '' - variables: [] - workspace: '' - -# Job base template specific parameters - # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md - artifacts: '' - enableMicrobuild: false - enablePublishBuildArtifacts: false - enablePublishBuildAssets: false - enablePublishTestResults: false - enablePublishUsingPipelines: false - name: '' - preSteps: [] - runAsPublic: false - -jobs: -- job: ${{ parameters.name }} - - ${{ if ne(parameters.cancelTimeoutInMinutes, '') }}: - cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }} - - ${{ if ne(parameters.condition, '') }}: - condition: ${{ parameters.condition }} - - ${{ if ne(parameters.container, '') }}: - container: ${{ parameters.container }} - - ${{ if ne(parameters.continueOnError, '') }}: - continueOnError: ${{ parameters.continueOnError }} - - ${{ if ne(parameters.dependsOn, '') }}: - dependsOn: ${{ parameters.dependsOn }} - - ${{ if ne(parameters.displayName, '') }}: - displayName: ${{ parameters.displayName }} - - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - - ${{ if ne(parameters.strategy, '') }}: - strategy: ${{ parameters.strategy }} - - ${{ if ne(parameters.timeoutInMinutes, '') }}: - timeoutInMinutes: ${{ parameters.timeoutInMinutes }} - - variables: - - ${{ if ne(parameters.enableTelemetry, 'false') }}: - - name: DOTNET_CLI_TELEMETRY_PROFILE - value: '$(Build.Repository.Uri)' - - ${{ each variable in parameters.variables }}: - # handle name-value variable syntax - # example: - # - name: [key] - # value: [value] - - ${{ if ne(variable.name, '') }}: - - name: ${{ variable.name }} - value: ${{ variable.value }} - - # handle variable groups - - ${{ if ne(variable.group, '') }}: - - group: ${{ variable.group }} - - # handle key-value variable syntax. - # example: - # - [key]: [value] - - ${{ if and(eq(variable.name, ''), eq(variable.group, '')) }}: - - ${{ each pair in variable }}: - - name: ${{ pair.key }} - value: ${{ pair.value }} - - # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds - - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - group: DotNet-HelixApi-Access - - ${{ if ne(parameters.workspace, '') }}: - workspace: ${{ parameters.workspace }} - - steps: - - ${{ if ne(parameters.preSteps, '') }}: - - ${{ each preStep in parameters.preSteps }}: - - ${{ preStep }} - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - - task: MicroBuildSigningPlugin@2 - displayName: Install MicroBuild plugin - inputs: - signType: $(_SignType) - zipSources: false - feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json - env: - TeamName: $(_TeamName) - continueOnError: ${{ parameters.continueOnError }} - condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - - - task: NuGetAuthenticate@0 - - - ${{ if or(eq(parameters.artifacts.download, 'true'), ne(parameters.artifacts.download, '')) }}: - - task: DownloadPipelineArtifact@2 - inputs: - buildType: current - artifactName: ${{ coalesce(parameters.artifacts.download.name, 'Artifacts_$(Agent.OS)_$(_BuildConfig)') }} - targetPath: ${{ coalesce(parameters.artifacts.download.path, 'artifacts') }} - itemPattern: ${{ coalesce(parameters.artifacts.download.pattern, '**') }} - - - ${{ each step in parameters.steps }}: - - ${{ step }} - - - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: MicroBuildCleanup@1 - displayName: Execute Microbuild cleanup tasks - condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} - env: - TeamName: $(_TeamName) - - - ${{ if ne(parameters.artifacts.publish, '') }}: - - ${{ if or(eq(parameters.artifacts.publish.artifacts, 'true'), ne(parameters.artifacts.publish.artifacts, '')) }}: - - task: CopyFiles@2 - displayName: Gather binaries for publish to artifacts - inputs: - SourceFolder: 'artifacts/bin' - Contents: '**' - TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/bin' - - task: CopyFiles@2 - displayName: Gather packages for publish to artifacts - inputs: - SourceFolder: 'artifacts/packages' - Contents: '**' - TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages' - - task: PublishBuildArtifacts@1 - displayName: Publish pipeline artifacts - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts' - PublishLocation: Container - ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} - continueOnError: true - condition: always() - - ${{ if or(eq(parameters.artifacts.publish.logs, 'true'), ne(parameters.artifacts.publish.logs, '')) }}: - - publish: artifacts/log - artifact: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)') }} - displayName: Publish logs - continueOnError: true - condition: always() - - ${{ if or(eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}: - - ${{ if and(ne(parameters.enablePublishUsingPipelines, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: CopyFiles@2 - displayName: Gather Asset Manifests - inputs: - SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/AssetManifest' - TargetFolder: '$(Build.ArtifactStagingDirectory)/AssetManifests' - continueOnError: ${{ parameters.continueOnError }} - condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true')) - - - task: PublishBuildArtifacts@1 - displayName: Push Asset Manifests - inputs: - PathtoPublish: '$(Build.ArtifactStagingDirectory)/AssetManifests' - PublishLocation: Container - ArtifactName: AssetManifests - continueOnError: ${{ parameters.continueOnError }} - condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true')) - - - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}: - - task: PublishBuildArtifacts@1 - displayName: Publish Logs - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)' - PublishLocation: Container - ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }} - continueOnError: true - condition: always() - - - ${{ if eq(parameters.enablePublishTestResults, 'true') }}: - - task: PublishTestResults@2 - displayName: Publish Test Results - inputs: - testResultsFormat: 'xUnit' - testResultsFiles: '*.xml' - searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' - continueOnError: true - condition: always() - - - ${{ if and(eq(parameters.enablePublishBuildAssets, true), ne(parameters.enablePublishUsingPipelines, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: CopyFiles@2 - displayName: Gather Asset Manifests - inputs: - SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/AssetManifest' - TargetFolder: '$(Build.StagingDirectory)/AssetManifests' - continueOnError: ${{ parameters.continueOnError }} - condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true')) - - - task: PublishBuildArtifacts@1 - displayName: Push Asset Manifests - inputs: - PathtoPublish: '$(Build.StagingDirectory)/AssetManifests' - PublishLocation: Container - ArtifactName: AssetManifests - continueOnError: ${{ parameters.continueOnError }} - condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true')) diff --git a/eng/common/templates/job/performance.yml b/eng/common/templates/job/performance.yml deleted file mode 100644 index f877fd7a89..0000000000 --- a/eng/common/templates/job/performance.yml +++ /dev/null @@ -1,95 +0,0 @@ -parameters: - steps: [] # optional -- any additional steps that need to happen before pulling down the performance repo and sending the performance benchmarks to helix (ie building your repo) - variables: [] # optional -- list of additional variables to send to the template - jobName: '' # required -- job name - displayName: '' # optional -- display name for the job. Will use jobName if not passed - pool: '' # required -- name of the Build pool - container: '' # required -- name of the container - osGroup: '' # required -- operating system for the job - extraSetupParameters: '' # optional -- extra arguments to pass to the setup script - frameworks: ['netcoreapp3.0'] # optional -- list of frameworks to run against - continueOnError: 'false' # optional -- determines whether to continue the build if the step errors - dependsOn: '' # optional -- dependencies of the job - timeoutInMinutes: 320 # optional -- timeout for the job - enableTelemetry: false # optional -- enable for telemetry - -jobs: -- template: ../jobs/jobs.yml - parameters: - dependsOn: ${{ parameters.dependsOn }} - enableTelemetry: ${{ parameters.enableTelemetry }} - enablePublishBuildArtifacts: true - continueOnError: ${{ parameters.continueOnError }} - - jobs: - - job: '${{ parameters.jobName }}' - - ${{ if ne(parameters.displayName, '') }}: - displayName: '${{ parameters.displayName }}' - ${{ if eq(parameters.displayName, '') }}: - displayName: '${{ parameters.jobName }}' - - timeoutInMinutes: ${{ parameters.timeoutInMinutes }} - - variables: - - - ${{ each variable in parameters.variables }}: - - ${{ if ne(variable.name, '') }}: - - name: ${{ variable.name }} - value: ${{ variable.value }} - - ${{ if ne(variable.group, '') }}: - - group: ${{ variable.group }} - - - IsInternal: '' - - HelixApiAccessToken: '' - - HelixPreCommand: '' - - - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - ${{ if eq( parameters.osGroup, 'Windows_NT') }}: - - HelixPreCommand: 'set "PERFLAB_UPLOAD_TOKEN=$(PerfCommandUploadToken)"' - - IsInternal: -Internal - - ${{ if ne(parameters.osGroup, 'Windows_NT') }}: - - HelixPreCommand: 'export PERFLAB_UPLOAD_TOKEN="$(PerfCommandUploadTokenLinux)"' - - IsInternal: --internal - - - group: DotNet-HelixApi-Access - - group: dotnet-benchview - - workspace: - clean: all - pool: - ${{ parameters.pool }} - container: ${{ parameters.container }} - strategy: - matrix: - ${{ each framework in parameters.frameworks }}: - ${{ framework }}: - _Framework: ${{ framework }} - steps: - - checkout: self - clean: true - # Run all of the steps to setup repo - - ${{ each step in parameters.steps }}: - - ${{ step }} - - powershell: $(Build.SourcesDirectory)\eng\common\performance\performance-setup.ps1 $(IsInternal) -Framework $(_Framework) ${{ parameters.extraSetupParameters }} - displayName: Performance Setup (Windows) - condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} - - script: $(Build.SourcesDirectory)/eng/common/performance/performance-setup.sh $(IsInternal) --framework $(_Framework) ${{ parameters.extraSetupParameters }} - displayName: Performance Setup (Unix) - condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} - - script: $(Python) $(PerformanceDirectory)/scripts/ci_setup.py $(SetupArguments) - displayName: Run ci setup script - # Run perf testing in helix - - template: /eng/common/templates/steps/perf-send-to-helix.yml - parameters: - HelixSource: '$(HelixSourcePrefix)/$(Build.Repository.Name)/$(Build.SourceBranch)' # sources must start with pr/, official/, prodcon/, or agent/ - HelixType: 'test/performance/$(Kind)/$(_Framework)/$(Architecture)' - HelixAccessToken: $(HelixApiAccessToken) - HelixTargetQueues: $(Queue) - HelixPreCommands: $(HelixPreCommand) - Creator: $(Creator) - WorkItemTimeout: 4:00 # 4 hours - WorkItemDirectory: '$(WorkItemDirectory)' # WorkItemDirectory can not be empty, so we send it some docs to keep it happy - CorrelationPayloadDirectory: '$(PayloadDirectory)' # it gets checked out to a folder with shorter path than WorkItemDirectory so we can avoid file name too long exceptions \ No newline at end of file diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml deleted file mode 100644 index b722975f9c..0000000000 --- a/eng/common/templates/job/publish-build-assets.yml +++ /dev/null @@ -1,91 +0,0 @@ -parameters: - configuration: 'Debug' - - # Optional: condition for the job to run - condition: '' - - # Optional: 'true' if future jobs should run even if this job fails - continueOnError: false - - # Optional: dependencies of the job - dependsOn: '' - - # Optional: Include PublishBuildArtifacts task - enablePublishBuildArtifacts: false - - # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool - pool: {} - - # Optional: should run as a public build even in the internal project - # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. - runAsPublic: false - - # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing - publishUsingPipelines: false - -jobs: -- job: Asset_Registry_Publish - - dependsOn: ${{ parameters.dependsOn }} - - displayName: Publish to Build Asset Registry - - pool: ${{ parameters.pool }} - - variables: - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - name: _BuildConfig - value: ${{ parameters.configuration }} - - group: Publish-Build-Assets - - steps: - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: DownloadBuildArtifacts@0 - displayName: Download artifact - inputs: - artifactName: AssetManifests - downloadPath: '$(Build.StagingDirectory)/Download' - condition: ${{ parameters.condition }} - continueOnError: ${{ parameters.continueOnError }} - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: NuGetAuthenticate@0 - - - task: PowerShell@2 - displayName: Publish Build Assets - inputs: - filePath: eng\common\sdk-task.ps1 - arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet - /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' - /p:BuildAssetRegistryToken=$(MaestroAccessToken) - /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com - /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} - /p:Configuration=$(_BuildConfig) - condition: ${{ parameters.condition }} - continueOnError: ${{ parameters.continueOnError }} - - - task: powershell@2 - displayName: Create ReleaseConfigs Artifact - inputs: - targetType: inline - script: | - Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(BARBuildId) - Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value "$(DefaultChannels)" - Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(IsStableBuild) - - - task: PublishBuildArtifacts@1 - displayName: Publish ReleaseConfigs Artifact - inputs: - PathtoPublish: '$(Build.StagingDirectory)/ReleaseConfigs.txt' - PublishLocation: Container - ArtifactName: ReleaseConfigs - - - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}: - - task: PublishBuildArtifacts@1 - displayName: Publish Logs to VSTS - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)' - PublishLocation: Container - ArtifactName: $(Agent.Os)_PublishBuildAssets - continueOnError: true - condition: always() diff --git a/eng/common/templates/jobs/jobs.yml b/eng/common/templates/jobs/jobs.yml deleted file mode 100644 index c08225a9a9..0000000000 --- a/eng/common/templates/jobs/jobs.yml +++ /dev/null @@ -1,72 +0,0 @@ -parameters: - # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md - continueOnError: false - - # Optional: Include PublishBuildArtifacts task - enablePublishBuildArtifacts: false - - # Optional: Enable publishing using release pipelines - enablePublishUsingPipelines: false - - graphFileGeneration: - # Optional: Enable generating the graph files at the end of the build - enabled: false - # Optional: Include toolset dependencies in the generated graph files - includeToolset: false - - # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job - jobs: [] - - # Optional: Override automatically derived dependsOn value for "publish build assets" job - publishBuildAssetsDependsOn: '' - - # Optional: should run as a public build even in the internal project - # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. - runAsPublic: false - -# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, -# and some (Microbuild) should only be applied to non-PR cases for internal builds. - -jobs: -- ${{ each job in parameters.jobs }}: - - template: ../job/job.yml - parameters: - # pass along parameters - ${{ each parameter in parameters }}: - ${{ if ne(parameter.key, 'jobs') }}: - ${{ parameter.key }}: ${{ parameter.value }} - - # pass along job properties - ${{ each property in job }}: - ${{ if ne(property.key, 'job') }}: - ${{ property.key }}: ${{ property.value }} - - name: ${{ job.job }} - -- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}: - - template: ../job/publish-build-assets.yml - parameters: - continueOnError: ${{ parameters.continueOnError }} - dependsOn: - - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}: - - ${{ each job in parameters.publishBuildAssetsDependsOn }}: - - ${{ job.job }} - - ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}: - - ${{ each job in parameters.jobs }}: - - ${{ job.job }} - pool: - vmImage: vs2017-win2016 - runAsPublic: ${{ parameters.runAsPublic }} - publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }} - enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }} - - - ${{ if eq(parameters.graphFileGeneration.enabled, true) }}: - - template: ../job/generate-graph-files.yml - parameters: - continueOnError: ${{ parameters.continueOnError }} - includeToolset: ${{ parameters.graphFileGeneration.includeToolset }} - dependsOn: - - Asset_Registry_Publish - pool: - vmImage: vs2017-win2016 diff --git a/eng/common/templates/phases/base.yml b/eng/common/templates/phases/base.yml deleted file mode 100644 index 0123cf43b1..0000000000 --- a/eng/common/templates/phases/base.yml +++ /dev/null @@ -1,130 +0,0 @@ -parameters: - # Optional: Clean sources before building - clean: true - - # Optional: Git fetch depth - fetchDepth: '' - - # Optional: name of the phase (not specifying phase name may cause name collisions) - name: '' - # Optional: display name of the phase - displayName: '' - - # Optional: condition for the job to run - condition: '' - - # Optional: dependencies of the phase - dependsOn: '' - - # Required: A defined YAML queue - queue: {} - - # Required: build steps - steps: [] - - # Optional: variables - variables: {} - - # Optional: should run as a public build even in the internal project - # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. - runAsPublic: false - - ## Telemetry variables - - # Optional: enable sending telemetry - # if 'true', these "variables" must be specified in the variables object or as part of the queue matrix - # _HelixBuildConfig - differentiate between Debug, Release, other - # _HelixSource - Example: build/product - # _HelixType - Example: official/dotnet/arcade/$(Build.SourceBranch) - enableTelemetry: false - - # Optional: Enable installing Microbuild plugin - # if 'true', these "variables" must be specified in the variables object or as part of the queue matrix - # _TeamName - the name of your team - # _SignType - 'test' or 'real' - enableMicrobuild: false - -# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, -# and some (Microbuild) should only be applied to non-PR cases for internal builds. - -phases: -- phase: ${{ parameters.name }} - - ${{ if ne(parameters.displayName, '') }}: - displayName: ${{ parameters.displayName }} - - ${{ if ne(parameters.condition, '') }}: - condition: ${{ parameters.condition }} - - ${{ if ne(parameters.dependsOn, '') }}: - dependsOn: ${{ parameters.dependsOn }} - - queue: ${{ parameters.queue }} - - ${{ if ne(parameters.variables, '') }}: - variables: - ${{ insert }}: ${{ parameters.variables }} - - steps: - - checkout: self - clean: ${{ parameters.clean }} - ${{ if ne(parameters.fetchDepth, '') }}: - fetchDepth: ${{ parameters.fetchDepth }} - - - ${{ if eq(parameters.enableTelemetry, 'true') }}: - - template: /eng/common/templates/steps/telemetry-start.yml - parameters: - buildConfig: $(_HelixBuildConfig) - helixSource: $(_HelixSource) - helixType: $(_HelixType) - runAsPublic: ${{ parameters.runAsPublic }} - - - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - # Internal only resource, and Microbuild signing shouldn't be applied to PRs. - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: MicroBuildSigningPlugin@2 - displayName: Install MicroBuild plugin - inputs: - signType: $(_SignType) - zipSources: false - feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json - - env: - TeamName: $(_TeamName) - continueOnError: false - condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - - # Run provided build steps - - ${{ parameters.steps }} - - - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - # Internal only resources - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: MicroBuildCleanup@1 - displayName: Execute Microbuild cleanup tasks - condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - env: - TeamName: $(_TeamName) - - - ${{ if eq(parameters.enableTelemetry, 'true') }}: - - template: /eng/common/templates/steps/telemetry-end.yml - parameters: - helixSource: $(_HelixSource) - helixType: $(_HelixType) - - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: CopyFiles@2 - displayName: Gather Asset Manifests - inputs: - SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/AssetManifest' - TargetFolder: '$(Build.StagingDirectory)/AssetManifests' - continueOnError: false - condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true')) - - task: PublishBuildArtifacts@1 - displayName: Push Asset Manifests - inputs: - PathtoPublish: '$(Build.StagingDirectory)/AssetManifests' - PublishLocation: Container - ArtifactName: AssetManifests - continueOnError: false - condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true')) diff --git a/eng/common/templates/phases/publish-build-assets.yml b/eng/common/templates/phases/publish-build-assets.yml deleted file mode 100644 index a0a8074282..0000000000 --- a/eng/common/templates/phases/publish-build-assets.yml +++ /dev/null @@ -1,51 +0,0 @@ -parameters: - dependsOn: '' - queue: {} - configuration: 'Debug' - condition: succeeded() - continueOnError: false - runAsPublic: false - publishUsingPipelines: false -phases: - - phase: Asset_Registry_Publish - displayName: Publish to Build Asset Registry - dependsOn: ${{ parameters.dependsOn }} - queue: ${{ parameters.queue }} - variables: - _BuildConfig: ${{ parameters.configuration }} - steps: - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - task: DownloadBuildArtifacts@0 - displayName: Download artifact - inputs: - artifactName: AssetManifests - downloadPath: '$(Build.StagingDirectory)/Download' - condition: ${{ parameters.condition }} - continueOnError: ${{ parameters.continueOnError }} - - task: AzureKeyVault@1 - inputs: - azureSubscription: 'DotNet-Engineering-Services_KeyVault' - KeyVaultName: EngKeyVault - SecretsFilter: 'MaestroAccessToken' - condition: ${{ parameters.condition }} - continueOnError: ${{ parameters.continueOnError }} - - task: PowerShell@2 - displayName: Publish Build Assets - inputs: - filePath: eng\common\sdk-task.ps1 - arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet - /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' - /p:BuildAssetRegistryToken=$(MaestroAccessToken) - /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com - /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} - /p:Configuration=$(_BuildConfig) - condition: ${{ parameters.condition }} - continueOnError: ${{ parameters.continueOnError }} - - task: PublishBuildArtifacts@1 - displayName: Publish Logs to VSTS - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)' - PublishLocation: Container - ArtifactName: $(Agent.Os)_Asset_Registry_Publish - continueOnError: true - condition: always() diff --git a/eng/common/templates/steps/build-reason.yml b/eng/common/templates/steps/build-reason.yml deleted file mode 100644 index eba58109b5..0000000000 --- a/eng/common/templates/steps/build-reason.yml +++ /dev/null @@ -1,12 +0,0 @@ -# build-reason.yml -# Description: runs steps if build.reason condition is valid. conditions is a string of valid build reasons -# to include steps (',' separated). -parameters: - conditions: '' - steps: [] - -steps: - - ${{ if and( not(startsWith(parameters.conditions, 'not')), contains(parameters.conditions, variables['build.reason'])) }}: - - ${{ parameters.steps }} - - ${{ if and( startsWith(parameters.conditions, 'not'), not(contains(parameters.conditions, variables['build.reason']))) }}: - - ${{ parameters.steps }} diff --git a/eng/common/templates/steps/perf-send-to-helix.yml b/eng/common/templates/steps/perf-send-to-helix.yml deleted file mode 100644 index b3ea9acf1f..0000000000 --- a/eng/common/templates/steps/perf-send-to-helix.yml +++ /dev/null @@ -1,66 +0,0 @@ -# Please remember to update the documentation if you make changes to these parameters! -parameters: - HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ - HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' - HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number - HelixTargetQueues: '' # required -- semicolon delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues - HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group - HelixPreCommands: '' # optional -- commands to run before Helix work item execution - HelixPostCommands: '' # optional -- commands to run after Helix work item execution - WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects - CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload - IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion - DotNetCliPackageType: '' # optional -- either 'sdk' or 'runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json - DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json - EnableXUnitReporter: false # optional -- true enables XUnit result reporting to Mission Control - WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." - Creator: '' # optional -- if the build is external, use this to specify who is sending the job - DisplayNamePrefix: 'Send job to Helix' # optional -- rename the beginning of the displayName of the steps in AzDO - condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() - continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false - -steps: - - powershell: $(Build.SourcesDirectory)\eng\common\msbuild.ps1 $(Build.SourcesDirectory)\eng\common\performance\perfhelixpublish.proj /restore /t:Test /bl:$(Build.SourcesDirectory)\artifacts\log\$env:BuildConfig\SendToHelix.binlog - displayName: ${{ parameters.DisplayNamePrefix }} (Windows) - env: - BuildConfig: $(_BuildConfig) - HelixSource: ${{ parameters.HelixSource }} - HelixType: ${{ parameters.HelixType }} - HelixBuild: ${{ parameters.HelixBuild }} - HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} - HelixPreCommands: ${{ parameters.HelixPreCommands }} - HelixPostCommands: ${{ parameters.HelixPostCommands }} - WorkItemDirectory: ${{ parameters.WorkItemDirectory }} - CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} - IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} - DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} - DotNetCliVersion: ${{ parameters.DotNetCliVersion }} - EnableXUnitReporter: ${{ parameters.EnableXUnitReporter }} - WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} - Creator: ${{ parameters.Creator }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} - - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/performance/perfhelixpublish.proj /restore /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog - displayName: ${{ parameters.DisplayNamePrefix }} (Unix) - env: - BuildConfig: $(_BuildConfig) - HelixSource: ${{ parameters.HelixSource }} - HelixType: ${{ parameters.HelixType }} - HelixBuild: ${{ parameters.HelixBuild }} - HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} - HelixPreCommands: ${{ parameters.HelixPreCommands }} - HelixPostCommands: ${{ parameters.HelixPostCommands }} - WorkItemDirectory: ${{ parameters.WorkItemDirectory }} - CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} - IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} - DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} - DotNetCliVersion: ${{ parameters.DotNetCliVersion }} - EnableXUnitReporter: ${{ parameters.EnableXUnitReporter }} - WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} - Creator: ${{ parameters.Creator }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} diff --git a/eng/common/templates/steps/promote-build.yml b/eng/common/templates/steps/promote-build.yml deleted file mode 100644 index b90404435d..0000000000 --- a/eng/common/templates/steps/promote-build.yml +++ /dev/null @@ -1,13 +0,0 @@ -parameters: - ChannelId: 0 - -steps: -- task: PowerShell@2 - displayName: Add Build to Channel - inputs: - filePath: $(Build.SourcesDirectory)/eng/common/post-build/promote-build.ps1 - arguments: -BuildId $(BARBuildId) - -ChannelId ${{ parameters.ChannelId }} - -MaestroApiAccessToken $(MaestroApiAccessToken) - -MaestroApiEndPoint $(MaestroApiEndPoint) - -MaestroApiVersion $(MaestroApiVersion) diff --git a/eng/common/templates/steps/publish-logs.yml b/eng/common/templates/steps/publish-logs.yml deleted file mode 100644 index 8903ba57c0..0000000000 --- a/eng/common/templates/steps/publish-logs.yml +++ /dev/null @@ -1,23 +0,0 @@ -parameters: - StageLabel: '' - JobLabel: '' - -steps: -- task: Powershell@2 - displayName: Prepare Binlogs to Upload - inputs: - targetType: inline - script: | - New-Item -ItemType Directory $(Build.SourcesDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ - Move-Item -Path $(Build.SourcesDirectory)/artifacts/log/Debug/* $(Build.SourcesDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ - continueOnError: true - condition: always() - -- task: PublishBuildArtifacts@1 - displayName: Publish Logs - inputs: - PathtoPublish: '$(Build.SourcesDirectory)/PostBuildLogs' - PublishLocation: Container - ArtifactName: PostBuilLogs - continueOnError: true - condition: always() diff --git a/eng/common/templates/steps/run-on-unix.yml b/eng/common/templates/steps/run-on-unix.yml deleted file mode 100644 index e1733814f6..0000000000 --- a/eng/common/templates/steps/run-on-unix.yml +++ /dev/null @@ -1,7 +0,0 @@ -parameters: - agentOs: '' - steps: [] - -steps: -- ${{ if ne(parameters.agentOs, 'Windows_NT') }}: - - ${{ parameters.steps }} diff --git a/eng/common/templates/steps/run-on-windows.yml b/eng/common/templates/steps/run-on-windows.yml deleted file mode 100644 index 73e7e9c275..0000000000 --- a/eng/common/templates/steps/run-on-windows.yml +++ /dev/null @@ -1,7 +0,0 @@ -parameters: - agentOs: '' - steps: [] - -steps: -- ${{ if eq(parameters.agentOs, 'Windows_NT') }}: - - ${{ parameters.steps }} diff --git a/eng/common/templates/steps/run-script-ifequalelse.yml b/eng/common/templates/steps/run-script-ifequalelse.yml deleted file mode 100644 index 3d1242f558..0000000000 --- a/eng/common/templates/steps/run-script-ifequalelse.yml +++ /dev/null @@ -1,33 +0,0 @@ -parameters: - # if parameter1 equals parameter 2, run 'ifScript' command, else run 'elsescript' command - parameter1: '' - parameter2: '' - ifScript: '' - elseScript: '' - - # name of script step - name: Script - - # display name of script step - displayName: If-Equal-Else Script - - # environment - env: {} - - # conditional expression for step execution - condition: '' - -steps: -- ${{ if and(ne(parameters.ifScript, ''), eq(parameters.parameter1, parameters.parameter2)) }}: - - script: ${{ parameters.ifScript }} - name: ${{ parameters.name }} - displayName: ${{ parameters.displayName }} - env: ${{ parameters.env }} - condition: ${{ parameters.condition }} - -- ${{ if and(ne(parameters.elseScript, ''), ne(parameters.parameter1, parameters.parameter2)) }}: - - script: ${{ parameters.elseScript }} - name: ${{ parameters.name }} - displayName: ${{ parameters.displayName }} - env: ${{ parameters.env }} - condition: ${{ parameters.condition }} \ No newline at end of file diff --git a/eng/common/templates/steps/send-to-helix.yml b/eng/common/templates/steps/send-to-helix.yml deleted file mode 100644 index 30becf01ea..0000000000 --- a/eng/common/templates/steps/send-to-helix.yml +++ /dev/null @@ -1,94 +0,0 @@ -# Please remember to update the documentation if you make changes to these parameters! -parameters: - HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ - HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' - HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number - HelixTargetQueues: '' # required -- semicolon delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues - HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group - HelixConfiguration: '' # optional -- additional property attached to a job - HelixPreCommands: '' # optional -- commands to run before Helix work item execution - HelixPostCommands: '' # optional -- commands to run after Helix work item execution - WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects - WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects - WorkItemTimeout: '' # optional -- a timeout in seconds for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects - CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload - XUnitProjects: '' # optional -- semicolon delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true - XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects - XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects - XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner - XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects - IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion - DotNetCliPackageType: '' # optional -- either 'sdk' or 'runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json - DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json - EnableXUnitReporter: false # optional -- true enables XUnit result reporting to Mission Control - WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." - IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set - HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting int) - Creator: '' # optional -- if the build is external, use this to specify who is sending the job - DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO - condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() - continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false - -steps: - - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj /restore /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' - displayName: ${{ parameters.DisplayNamePrefix }} (Windows) - env: - BuildConfig: $(_BuildConfig) - HelixSource: ${{ parameters.HelixSource }} - HelixType: ${{ parameters.HelixType }} - HelixBuild: ${{ parameters.HelixBuild }} - HelixConfiguration: ${{ parameters.HelixConfiguration }} - HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} - HelixPreCommands: ${{ parameters.HelixPreCommands }} - HelixPostCommands: ${{ parameters.HelixPostCommands }} - WorkItemDirectory: ${{ parameters.WorkItemDirectory }} - WorkItemCommand: ${{ parameters.WorkItemCommand }} - WorkItemTimeout: ${{ parameters.WorkItemTimeout }} - CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} - XUnitProjects: ${{ parameters.XUnitProjects }} - XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} - XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} - XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} - XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} - IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} - DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} - DotNetCliVersion: ${{ parameters.DotNetCliVersion }} - EnableXUnitReporter: ${{ parameters.EnableXUnitReporter }} - WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} - HelixBaseUri: ${{ parameters.HelixBaseUri }} - Creator: ${{ parameters.Creator }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} - - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj /restore /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog - displayName: ${{ parameters.DisplayNamePrefix }} (Unix) - env: - BuildConfig: $(_BuildConfig) - HelixSource: ${{ parameters.HelixSource }} - HelixType: ${{ parameters.HelixType }} - HelixBuild: ${{ parameters.HelixBuild }} - HelixConfiguration: ${{ parameters.HelixConfiguration }} - HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} - HelixPreCommands: ${{ parameters.HelixPreCommands }} - HelixPostCommands: ${{ parameters.HelixPostCommands }} - WorkItemDirectory: ${{ parameters.WorkItemDirectory }} - WorkItemCommand: ${{ parameters.WorkItemCommand }} - WorkItemTimeout: ${{ parameters.WorkItemTimeout }} - CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} - XUnitProjects: ${{ parameters.XUnitProjects }} - XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} - XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} - XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} - XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} - IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} - DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} - DotNetCliVersion: ${{ parameters.DotNetCliVersion }} - EnableXUnitReporter: ${{ parameters.EnableXUnitReporter }} - WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} - HelixBaseUri: ${{ parameters.HelixBaseUri }} - Creator: ${{ parameters.Creator }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} diff --git a/eng/common/templates/steps/telemetry-end.yml b/eng/common/templates/steps/telemetry-end.yml deleted file mode 100644 index fadc04ca1b..0000000000 --- a/eng/common/templates/steps/telemetry-end.yml +++ /dev/null @@ -1,102 +0,0 @@ -parameters: - maxRetries: 5 - retryDelay: 10 # in seconds - -steps: -- bash: | - if [ "$AGENT_JOBSTATUS" = "Succeeded" ] || [ "$AGENT_JOBSTATUS" = "PartiallySucceeded" ]; then - errorCount=0 - else - errorCount=1 - fi - warningCount=0 - - curlStatus=1 - retryCount=0 - # retry loop to harden against spotty telemetry connections - # we don't retry successes and 4xx client errors - until [[ $curlStatus -eq 0 || ( $curlStatus -ge 400 && $curlStatus -le 499 ) || $retryCount -ge $MaxRetries ]] - do - if [ $retryCount -gt 0 ]; then - echo "Failed to send telemetry to Helix; waiting $RetryDelay seconds before retrying..." - sleep $RetryDelay - fi - - # create a temporary file for curl output - res=`mktemp` - - curlResult=` - curl --verbose --output $res --write-out "%{http_code}"\ - -H 'Content-Type: application/json' \ - -H "X-Helix-Job-Token: $Helix_JobToken" \ - -H 'Content-Length: 0' \ - -X POST -G "https://helix.dot.net/api/2018-03-14/telemetry/job/build/$Helix_WorkItemId/finish" \ - --data-urlencode "errorCount=$errorCount" \ - --data-urlencode "warningCount=$warningCount"` - curlStatus=$? - - if [ $curlStatus -eq 0 ]; then - if [ $curlResult -gt 299 ] || [ $curlResult -lt 200 ]; then - curlStatus=$curlResult - fi - fi - - let retryCount++ - done - - if [ $curlStatus -ne 0 ]; then - echo "Failed to Send Build Finish information after $retryCount retries" - vstsLogOutput="vso[task.logissue type=error;sourcepath=templates/steps/telemetry-end.yml;code=1;]Failed to Send Build Finish information: $curlStatus" - echo "##$vstsLogOutput" - exit 1 - fi - displayName: Send Unix Build End Telemetry - env: - # defined via VSTS variables in start-job.sh - Helix_JobToken: $(Helix_JobToken) - Helix_WorkItemId: $(Helix_WorkItemId) - MaxRetries: ${{ parameters.maxRetries }} - RetryDelay: ${{ parameters.retryDelay }} - condition: and(always(), ne(variables['Agent.Os'], 'Windows_NT')) -- powershell: | - if (($env:Agent_JobStatus -eq 'Succeeded') -or ($env:Agent_JobStatus -eq 'PartiallySucceeded')) { - $ErrorCount = 0 - } else { - $ErrorCount = 1 - } - $WarningCount = 0 - - # Basic retry loop to harden against server flakiness - $retryCount = 0 - while ($retryCount -lt $env:MaxRetries) { - try { - Invoke-RestMethod -Uri "https://helix.dot.net/api/2018-03-14/telemetry/job/build/$env:Helix_WorkItemId/finish?errorCount=$ErrorCount&warningCount=$WarningCount" -Method Post -ContentType "application/json" -Body "" ` - -Headers @{ 'X-Helix-Job-Token'=$env:Helix_JobToken } - break - } - catch { - $statusCode = $_.Exception.Response.StatusCode.value__ - if ($statusCode -ge 400 -and $statusCode -le 499) { - Write-Host "##vso[task.logissue]error Failed to send telemetry to Helix (status code $statusCode); not retrying (4xx client error)" - Write-Host "##vso[task.logissue]error ", $_.Exception.GetType().FullName, $_.Exception.Message - exit 1 - } - Write-Host "Failed to send telemetry to Helix (status code $statusCode); waiting $env:RetryDelay seconds before retrying..." - $retryCount++ - sleep $env:RetryDelay - continue - } - } - - if ($retryCount -ge $env:MaxRetries) { - Write-Host "##vso[task.logissue]error Failed to send telemetry to Helix after $retryCount retries." - exit 1 - } - displayName: Send Windows Build End Telemetry - env: - # defined via VSTS variables in start-job.ps1 - Helix_JobToken: $(Helix_JobToken) - Helix_WorkItemId: $(Helix_WorkItemId) - MaxRetries: ${{ parameters.maxRetries }} - RetryDelay: ${{ parameters.retryDelay }} - condition: and(always(),eq(variables['Agent.Os'], 'Windows_NT')) diff --git a/eng/common/templates/steps/telemetry-start.yml b/eng/common/templates/steps/telemetry-start.yml deleted file mode 100644 index 32c01ef0b5..0000000000 --- a/eng/common/templates/steps/telemetry-start.yml +++ /dev/null @@ -1,241 +0,0 @@ -parameters: - helixSource: 'undefined_defaulted_in_telemetry.yml' - helixType: 'undefined_defaulted_in_telemetry.yml' - buildConfig: '' - runAsPublic: false - maxRetries: 5 - retryDelay: 10 # in seconds - -steps: -- ${{ if and(eq(parameters.runAsPublic, 'false'), not(eq(variables['System.TeamProject'], 'public'))) }}: - - task: AzureKeyVault@1 - inputs: - azureSubscription: 'HelixProd_KeyVault' - KeyVaultName: HelixProdKV - SecretsFilter: 'HelixApiAccessToken' - condition: always() -- bash: | - # create a temporary file - jobInfo=`mktemp` - - # write job info content to temporary file - cat > $jobInfo <' | Set-Content $proj - - MSBuild-Core $proj $bl /t:__WriteToolsetLocation /clp:ErrorsOnly`;NoSummary /p:__ToolsetLocationOutputFile=$toolsetLocationFile - - $path = Get-Content $toolsetLocationFile -TotalCount 1 - if (!(Test-Path $path)) { - throw "Invalid toolset path: $path" - } - - return $global:_ToolsetBuildProj = $path -} - -function ExitWithExitCode([int] $exitCode) { - if ($ci -and $prepareMachine) { - Stop-Processes - } - exit $exitCode -} - -function Stop-Processes() { - Write-Host 'Killing running build processes...' - foreach ($processName in $processesToStopOnExit) { - Get-Process -Name $processName -ErrorAction SilentlyContinue | Stop-Process - } -} - -# -# Executes msbuild (or 'dotnet msbuild') with arguments passed to the function. -# The arguments are automatically quoted. -# Terminates the script if the build fails. -# -function MSBuild() { - if ($pipelinesLog) { - $buildTool = InitializeBuildTool - - # Work around issues with Azure Artifacts credential provider - # https://github.com/dotnet/arcade/issues/3932 - if ($ci -and $buildTool.Tool -eq 'dotnet') { - dotnet nuget locals http-cache -c - - $env:NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS = 20 - $env:NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS = 20 - Write-PipelineSetVariable -Name 'NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS' -Value '20' - Write-PipelineSetVariable -Name 'NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS' -Value '20' - } - - $toolsetBuildProject = InitializeToolset - $path = Split-Path -parent $toolsetBuildProject - $path = Join-Path $path (Join-Path $buildTool.Framework 'Microsoft.DotNet.Arcade.Sdk.dll') - $args += "/logger:$path" - } - - MSBuild-Core @args -} - -# -# Executes msbuild (or 'dotnet msbuild') with arguments passed to the function. -# The arguments are automatically quoted. -# Terminates the script if the build fails. -# -function MSBuild-Core() { - if ($ci) { - if (!$binaryLog) { - Write-PipelineTelemetryError -Category 'Build' -Message 'Binary log must be enabled in CI build.' - ExitWithExitCode 1 - } - - if ($nodeReuse) { - Write-PipelineTelemetryError -Category 'Build' -Message 'Node reuse must be disabled in CI build.' - ExitWithExitCode 1 - } - } - - $buildTool = InitializeBuildTool - - $cmdArgs = "$($buildTool.Command) /m /nologo /clp:Summary /v:$verbosity /nr:$nodeReuse /p:ContinuousIntegrationBuild=$ci" - - if ($warnAsError) { - $cmdArgs += ' /warnaserror /p:TreatWarningsAsErrors=true' - } - else { - $cmdArgs += ' /p:TreatWarningsAsErrors=false' - } - - foreach ($arg in $args) { - if ($arg -ne $null -and $arg.Trim() -ne "") { - $cmdArgs += " `"$arg`"" - } - } - - $exitCode = Exec-Process $buildTool.Path $cmdArgs - - if ($exitCode -ne 0) { - Write-PipelineTelemetryError Category 'Build' -Message 'Build failed.' - - $buildLog = GetMSBuildBinaryLogCommandLineArgument $args - if ($buildLog -ne $null) { - Write-Host "See log: $buildLog" -ForegroundColor DarkGray - } - - ExitWithExitCode $exitCode - } -} - -function GetMSBuildBinaryLogCommandLineArgument($arguments) { - foreach ($argument in $arguments) { - if ($argument -ne $null) { - $arg = $argument.Trim() - if ($arg.StartsWith('/bl:', "OrdinalIgnoreCase")) { - return $arg.Substring('/bl:'.Length) - } - - if ($arg.StartsWith('/binaryLogger:', 'OrdinalIgnoreCase')) { - return $arg.Substring('/binaryLogger:'.Length) - } - } - } - - return $null -} - -. $PSScriptRoot\pipeline-logging-functions.ps1 - -$RepoRoot = Resolve-Path (Join-Path $PSScriptRoot '..\..') -$EngRoot = Resolve-Path (Join-Path $PSScriptRoot '..') -$ArtifactsDir = Join-Path $RepoRoot 'artifacts' -$ToolsetDir = Join-Path $ArtifactsDir 'toolset' -$ToolsDir = Join-Path $RepoRoot '.tools' -$LogDir = Join-Path (Join-Path $ArtifactsDir 'log') $configuration -$TempDir = Join-Path (Join-Path $ArtifactsDir 'tmp') $configuration -$GlobalJson = Get-Content -Raw -Path (Join-Path $RepoRoot 'global.json') | ConvertFrom-Json -# true if global.json contains a "runtimes" section -$globalJsonHasRuntimes = if ($GlobalJson.tools.PSObject.Properties.Name -Match 'runtimes') { $true } else { $false } - -Create-Directory $ToolsetDir -Create-Directory $TempDir -Create-Directory $LogDir - -Write-PipelineSetVariable -Name 'Artifacts' -Value $ArtifactsDir -Write-PipelineSetVariable -Name 'Artifacts.Toolset' -Value $ToolsetDir -Write-PipelineSetVariable -Name 'Artifacts.Log' -Value $LogDir -Write-PipelineSetVariable -Name 'TEMP' -Value $TempDir -Write-PipelineSetVariable -Name 'TMP' -Value $TempDir - -# Import custom tools configuration, if present in the repo. -# Note: Import in global scope so that the script set top-level variables without qualification. -if (!$disableConfigureToolsetImport) { - $configureToolsetScript = Join-Path $EngRoot 'configure-toolset.ps1' - if (Test-Path $configureToolsetScript) { - . $configureToolsetScript - if ((Test-Path variable:failOnConfigureToolsetError) -And $failOnConfigureToolsetError) { - if ((Test-Path variable:LastExitCode) -And ($LastExitCode -ne 0)) { - Write-PipelineTelemetryError -Category 'Build' -Message 'configure-toolset.ps1 returned a non-zero exit code' - ExitWithExitCode $LastExitCode - } - } - } -} diff --git a/eng/common/tools.sh b/eng/common/tools.sh deleted file mode 100755 index 6054a3798f..0000000000 --- a/eng/common/tools.sh +++ /dev/null @@ -1,451 +0,0 @@ -#!/usr/bin/env bash - -# Initialize variables if they aren't already defined. - -# CI mode - set to true on CI server for PR validation build or official build. -ci=${ci:-false} - -# Set to true to use the pipelines logger which will enable Azure logging output. -# https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md -# This flag is meant as a temporary opt-opt for the feature while validate it across -# our consumers. It will be deleted in the future. -if [[ "$ci" == true ]]; then - pipelines_log=${pipelines_log:-true} -else - pipelines_log=${pipelines_log:-false} -fi - -# Build configuration. Common values include 'Debug' and 'Release', but the repository may use other names. -configuration=${configuration:-'Debug'} - -# Set to true to output binary log from msbuild. Note that emitting binary log slows down the build. -# Binary log must be enabled on CI. -binary_log=${binary_log:-$ci} - -# Turns on machine preparation/clean up code that changes the machine state (e.g. kills build processes). -prepare_machine=${prepare_machine:-false} - -# True to restore toolsets and dependencies. -restore=${restore:-true} - -# Adjusts msbuild verbosity level. -verbosity=${verbosity:-'minimal'} - -# Set to true to reuse msbuild nodes. Recommended to not reuse on CI. -if [[ "$ci" == true ]]; then - node_reuse=${node_reuse:-false} -else - node_reuse=${node_reuse:-true} -fi - -# Configures warning treatment in msbuild. -warn_as_error=${warn_as_error:-true} - -# True to attempt using .NET Core already that meets requirements specified in global.json -# installed on the machine instead of downloading one. -use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} - -# Enable repos to use a particular version of the on-line dotnet-install scripts. -# default URL: https://dot.net/v1/dotnet-install.sh -dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} - -# True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then - use_global_nuget_cache=${use_global_nuget_cache:-false} -else - use_global_nuget_cache=${use_global_nuget_cache:-true} -fi - -# Resolve any symlinks in the given path. -function ResolvePath { - local path=$1 - - while [[ -h $path ]]; do - local dir="$( cd -P "$( dirname "$path" )" && pwd )" - path="$(readlink "$path")" - - # if $path was a relative symlink, we need to resolve it relative to the path where the - # symlink file was located - [[ $path != /* ]] && path="$dir/$path" - done - - # return value - _ResolvePath="$path" -} - -# ReadVersionFromJson [json key] -function ReadGlobalVersion { - local key=$1 - - local line=`grep -m 1 "$key" "$global_json_file"` - local pattern="\"$key\" *: *\"(.*)\"" - - if [[ ! $line =~ $pattern ]]; then - Write-PipelineTelemetryError -category 'Build' "Error: Cannot find \"$key\" in $global_json_file" - ExitWithExitCode 1 - fi - - # return value - _ReadGlobalVersion=${BASH_REMATCH[1]} -} - -function InitializeDotNetCli { - if [[ -n "${_InitializeDotNetCli:-}" ]]; then - return - fi - - local install=$1 - - # Don't resolve runtime, shared framework, or SDK from other locations to ensure build determinism - export DOTNET_MULTILEVEL_LOOKUP=0 - - # Disable first run since we want to control all package sources - export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 - - # Disable telemetry on CI - if [[ $ci == true ]]; then - export DOTNET_CLI_TELEMETRY_OPTOUT=1 - fi - - # LTTNG is the logging infrastructure used by Core CLR. Need this variable set - # so it doesn't output warnings to the console. - export LTTNG_HOME="$HOME" - - # Source Build uses DotNetCoreSdkDir variable - if [[ -n "${DotNetCoreSdkDir:-}" ]]; then - export DOTNET_INSTALL_DIR="$DotNetCoreSdkDir" - fi - - # Find the first path on $PATH that contains the dotnet.exe - if [[ "$use_installed_dotnet_cli" == true && $global_json_has_runtimes == false && -z "${DOTNET_INSTALL_DIR:-}" ]]; then - local dotnet_path=`command -v dotnet` - if [[ -n "$dotnet_path" ]]; then - ResolvePath "$dotnet_path" - export DOTNET_INSTALL_DIR=`dirname "$_ResolvePath"` - fi - fi - - ReadGlobalVersion "dotnet" - local dotnet_sdk_version=$_ReadGlobalVersion - local dotnet_root="" - - # Use dotnet installation specified in DOTNET_INSTALL_DIR if it contains the required SDK version, - # otherwise install the dotnet CLI and SDK to repo local .dotnet directory to avoid potential permission issues. - if [[ $global_json_has_runtimes == false && -n "${DOTNET_INSTALL_DIR:-}" && -d "$DOTNET_INSTALL_DIR/sdk/$dotnet_sdk_version" ]]; then - dotnet_root="$DOTNET_INSTALL_DIR" - else - dotnet_root="$repo_root/.dotnet" - - export DOTNET_INSTALL_DIR="$dotnet_root" - - if [[ ! -d "$DOTNET_INSTALL_DIR/sdk/$dotnet_sdk_version" ]]; then - if [[ "$install" == true ]]; then - InstallDotNetSdk "$dotnet_root" "$dotnet_sdk_version" - else - Write-PipelineTelemetryError -category 'InitializeToolset' "Unable to find dotnet with SDK version '$dotnet_sdk_version'" - ExitWithExitCode 1 - fi - fi - fi - - # Add dotnet to PATH. This prevents any bare invocation of dotnet in custom - # build steps from using anything other than what we've downloaded. - Write-PipelinePrependPath -path "$dotnet_root" - - Write-PipelineSetVariable -name "DOTNET_MULTILEVEL_LOOKUP" -value "0" - Write-PipelineSetVariable -name "DOTNET_SKIP_FIRST_TIME_EXPERIENCE" -value "1" - - # return value - _InitializeDotNetCli="$dotnet_root" -} - -function InstallDotNetSdk { - local root=$1 - local version=$2 - local architecture="" - if [[ $# == 3 ]]; then - architecture=$3 - fi - InstallDotNet "$root" "$version" $architecture -} - -function InstallDotNet { - local root=$1 - local version=$2 - - GetDotNetInstallScript "$root" - local install_script=$_GetDotNetInstallScript - - local archArg='' - if [[ -n "${3:-}" ]]; then - archArg="--architecture $3" - fi - local runtimeArg='' - if [[ -n "${4:-}" ]]; then - runtimeArg="--runtime $4" - fi - - local skipNonVersionedFilesArg="" - if [[ "$#" -ge "5" ]]; then - skipNonVersionedFilesArg="--skip-non-versioned-files" - fi - bash "$install_script" --version $version --install-dir "$root" $archArg $runtimeArg $skipNonVersionedFilesArg || { - local exit_code=$? - Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to install dotnet SDK from public location (exit code '$exit_code')." - - if [[ -n "$runtimeArg" ]]; then - local runtimeSourceFeed='' - if [[ -n "${6:-}" ]]; then - runtimeSourceFeed="--azure-feed $6" - fi - - local runtimeSourceFeedKey='' - if [[ -n "${7:-}" ]]; then - decodedFeedKey=`echo $7 | base64 --decode` - runtimeSourceFeedKey="--feed-credential $decodedFeedKey" - fi - - if [[ -n "$runtimeSourceFeed" || -n "$runtimeSourceFeedKey" ]]; then - bash "$install_script" --version $version --install-dir "$root" $archArg $runtimeArg $skipNonVersionedFilesArg $runtimeSourceFeed $runtimeSourceFeedKey || { - local exit_code=$? - Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to install dotnet SDK from custom location '$runtimeSourceFeed' (exit code '$exit_code')." - ExitWithExitCode $exit_code - } - fi - fi - } -} - -function GetDotNetInstallScript { - local root=$1 - local install_script="$root/dotnet-install.sh" - local install_script_url="https://dot.net/$dotnetInstallScriptVersion/dotnet-install.sh" - - if [[ ! -a "$install_script" ]]; then - mkdir -p "$root" - - echo "Downloading '$install_script_url'" - - # Use curl if available, otherwise use wget - if command -v curl > /dev/null; then - curl "$install_script_url" -sSL --retry 10 --create-dirs -o "$install_script" || { - local exit_code=$? - Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to acquire dotnet install script (exit code '$exit_code')." - ExitWithExitCode $exit_code - } - else - wget -q -O "$install_script" "$install_script_url" || { - local exit_code=$? - Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to acquire dotnet install script (exit code '$exit_code')." - ExitWithExitCode $exit_code - } - fi - fi - # return value - _GetDotNetInstallScript="$install_script" -} - -function InitializeBuildTool { - if [[ -n "${_InitializeBuildTool:-}" ]]; then - return - fi - - InitializeDotNetCli $restore - - # return values - _InitializeBuildTool="$_InitializeDotNetCli/dotnet" - _InitializeBuildToolCommand="msbuild" - _InitializeBuildToolFramework="netcoreapp2.1" -} - -function GetNuGetPackageCachePath { - if [[ -z ${NUGET_PACKAGES:-} ]]; then - if [[ "$use_global_nuget_cache" == true ]]; then - export NUGET_PACKAGES="$HOME/.nuget/packages" - else - export NUGET_PACKAGES="$repo_root/.packages" - fi - fi - - # return value - _GetNuGetPackageCachePath=$NUGET_PACKAGES -} - -function InitializeNativeTools() { - if [[ -n "${DisableNativeToolsetInstalls:-}" ]]; then - return - fi - if grep -Fq "native-tools" $global_json_file - then - local nativeArgs="" - if [[ "$ci" == true ]]; then - nativeArgs="--installDirectory $tools_dir" - fi - "$_script_dir/init-tools-native.sh" $nativeArgs - fi -} - -function InitializeToolset { - if [[ -n "${_InitializeToolset:-}" ]]; then - return - fi - - GetNuGetPackageCachePath - - ReadGlobalVersion "Microsoft.DotNet.Arcade.Sdk" - - local toolset_version=$_ReadGlobalVersion - local toolset_location_file="$toolset_dir/$toolset_version.txt" - - if [[ -a "$toolset_location_file" ]]; then - local path=`cat "$toolset_location_file"` - if [[ -a "$path" ]]; then - # return value - _InitializeToolset="$path" - return - fi - fi - - if [[ "$restore" != true ]]; then - Write-PipelineTelemetryError -category 'InitializeToolset' "Toolset version $toolset_version has not been restored." - ExitWithExitCode 2 - fi - - local proj="$toolset_dir/restore.proj" - - local bl="" - if [[ "$binary_log" == true ]]; then - bl="/bl:$log_dir/ToolsetRestore.binlog" - fi - - echo '' > "$proj" - MSBuild-Core "$proj" $bl /t:__WriteToolsetLocation /clp:ErrorsOnly\;NoSummary /p:__ToolsetLocationOutputFile="$toolset_location_file" - - local toolset_build_proj=`cat "$toolset_location_file"` - - if [[ ! -a "$toolset_build_proj" ]]; then - Write-PipelineTelemetryError -category 'Build' "Invalid toolset path: $toolset_build_proj" - ExitWithExitCode 3 - fi - - # return value - _InitializeToolset="$toolset_build_proj" -} - -function ExitWithExitCode { - if [[ "$ci" == true && "$prepare_machine" == true ]]; then - StopProcesses - fi - exit $1 -} - -function StopProcesses { - echo "Killing running build processes..." - pkill -9 "dotnet" || true - pkill -9 "vbcscompiler" || true - return 0 -} - -function MSBuild { - local args=$@ - if [[ "$pipelines_log" == true ]]; then - InitializeBuildTool - InitializeToolset - - # Work around issues with Azure Artifacts credential provider - # https://github.com/dotnet/arcade/issues/3932 - if [[ "$ci" == true ]]; then - dotnet nuget locals http-cache -c - - export NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS=20 - export NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS=20 - Write-PipelineSetVariable -name "NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS" -value "20" - Write-PipelineSetVariable -name "NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS" -value "20" - fi - - local toolset_dir="${_InitializeToolset%/*}" - local logger_path="$toolset_dir/$_InitializeBuildToolFramework/Microsoft.DotNet.Arcade.Sdk.dll" - args=( "${args[@]}" "-logger:$logger_path" ) - fi - - MSBuild-Core ${args[@]} -} - -function MSBuild-Core { - if [[ "$ci" == true ]]; then - if [[ "$binary_log" != true ]]; then - Write-PipelineTelemetryError -category 'Build' "Binary log must be enabled in CI build." - ExitWithExitCode 1 - fi - - if [[ "$node_reuse" == true ]]; then - Write-PipelineTelemetryError -category 'Build' "Node reuse must be disabled in CI build." - ExitWithExitCode 1 - fi - fi - - InitializeBuildTool - - local warnaserror_switch="" - if [[ $warn_as_error == true ]]; then - warnaserror_switch="/warnaserror" - fi - - "$_InitializeBuildTool" "$_InitializeBuildToolCommand" /m /nologo /clp:Summary /v:$verbosity /nr:$node_reuse $warnaserror_switch /p:TreatWarningsAsErrors=$warn_as_error /p:ContinuousIntegrationBuild=$ci "$@" || { - local exit_code=$? - Write-PipelineTelemetryError -category 'Build' "Build failed (exit code '$exit_code')." - ExitWithExitCode $exit_code - } -} - -ResolvePath "${BASH_SOURCE[0]}" -_script_dir=`dirname "$_ResolvePath"` - -. "$_script_dir/pipeline-logging-functions.sh" - -eng_root=`cd -P "$_script_dir/.." && pwd` -repo_root=`cd -P "$_script_dir/../.." && pwd` -artifacts_dir="$repo_root/artifacts" -toolset_dir="$artifacts_dir/toolset" -tools_dir="$repo_root/.tools" -log_dir="$artifacts_dir/log/$configuration" -temp_dir="$artifacts_dir/tmp/$configuration" - -global_json_file="$repo_root/global.json" -# determine if global.json contains a "runtimes" entry -global_json_has_runtimes=false -dotnetlocal_key=`grep -m 1 "runtimes" "$global_json_file"` || true -if [[ -n "$dotnetlocal_key" ]]; then - global_json_has_runtimes=true -fi - -# HOME may not be defined in some scenarios, but it is required by NuGet -if [[ -z $HOME ]]; then - export HOME="$repo_root/artifacts/.home/" - mkdir -p "$HOME" -fi - -mkdir -p "$toolset_dir" -mkdir -p "$temp_dir" -mkdir -p "$log_dir" - -Write-PipelineSetVariable -name "Artifacts" -value "$artifacts_dir" -Write-PipelineSetVariable -name "Artifacts.Toolset" -value "$toolset_dir" -Write-PipelineSetVariable -name "Artifacts.Log" -value "$log_dir" -Write-PipelineSetVariable -name "Temp" -value "$temp_dir" -Write-PipelineSetVariable -name "TMP" -value "$temp_dir" - -# Import custom tools configuration, if present in the repo. -if [ -z "${disable_configure_toolset_import:-}" ]; then - configure_toolset_script="$eng_root/configure-toolset.sh" - if [[ -a "$configure_toolset_script" ]]; then - . "$configure_toolset_script" - fi -fi - -# TODO: https://github.com/dotnet/arcade/issues/1468 -# Temporary workaround to avoid breaking change. -# Remove once repos are updated. -if [[ -n "${useInstalledDotNetCli:-}" ]]; then - use_installed_dotnet_cli="$useInstalledDotNetCli" -fi diff --git a/eng/targets/Settings.props b/eng/targets/Settings.props index 474e5d22a8..77f7a0c704 100644 --- a/eng/targets/Settings.props +++ b/eng/targets/Settings.props @@ -11,9 +11,4 @@ false - - - false - - diff --git a/fcs/Directory.Build.targets b/fcs/Directory.Build.targets index 3c45a52487..00f6e63aa8 100644 --- a/fcs/Directory.Build.targets +++ b/fcs/Directory.Build.targets @@ -29,7 +29,7 @@ @@ -44,15 +44,12 @@ <_BuildPropertyLines Include="let fsLanguageVersion = "$(FSLANGUAGEVERSION)"" /> - - + - - + + diff --git a/fcs/FSharp.Compiler.Service.ProjectCracker/FSharp.Compiler.Service.ProjectCracker.fsproj b/fcs/FSharp.Compiler.Service.ProjectCracker/FSharp.Compiler.Service.ProjectCracker.fsproj deleted file mode 100644 index 5f5d169797..0000000000 --- a/fcs/FSharp.Compiler.Service.ProjectCracker/FSharp.Compiler.Service.ProjectCracker.fsproj +++ /dev/null @@ -1,33 +0,0 @@ - - - - $(FcsTargetNetFxFramework) - true - - - Legacy project file cracker for the F# compiler service. - Legacy project file cracker for the F# compiler service. - false - F# community contributors - https://github.com/fsharp/FSharp.Compiler.Service/blob/master/LICENSE - https://github.com/fsharp/FSharp.Compiler.Service - logo.png - F#, compiler, msbuild - - - - - ProjectCrackerOptions.fs - - - - - - - - - - - - - \ No newline at end of file diff --git a/fcs/FSharp.Compiler.Service.ProjectCracker/ProjectCracker.fs b/fcs/FSharp.Compiler.Service.ProjectCracker/ProjectCracker.fs deleted file mode 100644 index 3a096cb566..0000000000 --- a/fcs/FSharp.Compiler.Service.ProjectCracker/ProjectCracker.fs +++ /dev/null @@ -1,127 +0,0 @@ -namespace FSharp.Compiler.SourceCodeServices - -#if !NETSTANDARD -open System.Runtime.Serialization.Json -#endif -open System.Text -open System.IO -open System - -module Utils = - - let Convert loadedTimeStamp (originalOpts: ProjectCrackerTool.ProjectOptions) = - let logMap = ref Map.empty - - let rec convertProject (opts: ProjectCrackerTool.ProjectOptions) = - if not (isNull opts.Error) then failwith opts.Error - - let referencedProjects() = Array.map (fun (a, b) -> a,convertProject b) opts.ReferencedProjectOptions - - let sourceFiles, otherOptions = - opts.Options - |> Array.partition (fun x -> - let extension = Path.GetExtension(x).ToLower() - x.IndexOfAny(Path.GetInvalidPathChars()) = -1 - && (extension = ".fs" || extension = ".fsi")) - - let sepChar = Path.DirectorySeparatorChar - - let sourceFiles = sourceFiles |> Array.map (fun x -> - match sepChar with - | '\\' -> x.Replace('/', '\\') - | '/' -> x.Replace('\\', '/') - | _ -> x - ) - - logMap := Map.add opts.ProjectFile opts.LogOutput !logMap - { ProjectFileName = opts.ProjectFile - ProjectId = None - SourceFiles = sourceFiles - OtherOptions = otherOptions - ReferencedProjects = referencedProjects() - IsIncompleteTypeCheckEnvironment = false - UseScriptResolutionRules = false - LoadTime = loadedTimeStamp - UnresolvedReferences = None - OriginalLoadReferences = [] - ExtraProjectInfo = None - Stamp = None } - - convertProject originalOpts, !logMap - -type ProjectCracker = - - static member GetProjectOptionsFromProjectFileLogged(projectFileName : string, ?properties : (string * string) list, ?loadedTimeStamp, ?enableLogging) = - let loadedTimeStamp = defaultArg loadedTimeStamp DateTime.MaxValue // Not 'now', we don't want to force reloading - let properties = defaultArg properties [] - let enableLogging = defaultArg enableLogging true - - -#if NETSTANDARD - let arguments = [| - yield projectFileName - yield enableLogging.ToString() - for k, v in properties do - yield k - yield v - |] - - let ret, opts = FSharp.Compiler.SourceCodeServices.ProjectCrackerTool.ProjectCrackerTool.crackOpen arguments - ignore ret -#else - let arguments = new StringBuilder() - arguments.Append('"').Append(projectFileName).Append('"') |> ignore - arguments.Append(' ').Append(enableLogging.ToString()) |> ignore - for k, v in properties do - arguments.Append(' ').Append(k).Append(' ').Append(v) |> ignore - let codebase = Path.GetDirectoryName(Uri(typeof.Assembly.CodeBase).LocalPath) - - let crackerFilename = Path.Combine(codebase,"FSharp.Compiler.Service.ProjectCrackerTool.exe") - if not (File.Exists crackerFilename) then - failwithf "ProjectCracker exe not found at: %s it must be next to the ProjectCracker dll." crackerFilename - - let p = new System.Diagnostics.Process() - - p.StartInfo.FileName <- crackerFilename - p.StartInfo.Arguments <- arguments.ToString() - p.StartInfo.UseShellExecute <- false - p.StartInfo.CreateNoWindow <- true - p.StartInfo.RedirectStandardOutput <- true - p.StartInfo.RedirectStandardError <- true - - let sbOut = StringBuilder() - let sbErr = StringBuilder() - - p.ErrorDataReceived.AddHandler(fun _ a -> sbErr.AppendLine a.Data |> ignore) - p.OutputDataReceived.AddHandler(fun _ a -> sbOut.AppendLine a.Data |> ignore) - - ignore <| p.Start() - - p.EnableRaisingEvents <- true - p.BeginOutputReadLine() - p.BeginErrorReadLine() - - p.WaitForExit() - - let crackerOut = sbOut.ToString() - let crackerErr = sbErr.ToString() - - let opts = - try - let ser = new DataContractJsonSerializer(typeof) - let stringBytes = Encoding.Unicode.GetBytes crackerOut - use ms = new MemoryStream(stringBytes) - ser.ReadObject(ms) :?> ProjectCrackerTool.ProjectOptions - with - exn -> - raise (Exception(sprintf "error parsing ProjectCrackerTool output, stdoutput was:\n%s\n\nstderr was:\n%s" crackerOut crackerErr, exn)) -#endif - - Utils.Convert loadedTimeStamp opts - - static member GetProjectOptionsFromProjectFile(projectFileName : string, ?properties : (string * string) list, ?loadedTimeStamp) = - fst (ProjectCracker.GetProjectOptionsFromProjectFileLogged( - projectFileName, - ?properties=properties, - ?loadedTimeStamp=loadedTimeStamp, - enableLogging=false)) diff --git a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/App.config b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/App.config deleted file mode 100644 index fdab151af2..0000000000 --- a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/App.config +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/FSharp.Compiler.Service.ProjectCracker.targets b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/FSharp.Compiler.Service.ProjectCracker.targets deleted file mode 100644 index ed01293ada..0000000000 --- a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/FSharp.Compiler.Service.ProjectCracker.targets +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/FSharp.Compiler.Service.ProjectCrackerTool.fsproj b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/FSharp.Compiler.Service.ProjectCrackerTool.fsproj deleted file mode 100644 index 9a0a86d1be..0000000000 --- a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/FSharp.Compiler.Service.ProjectCrackerTool.fsproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - $(MSBuildProjectDirectory)\..\..\src - - - - Exe - $(FcsTargetNetFxFramework) - true - $(DefineConstants);CROSS_PLATFORM_COMPILER - $(DefineConstants);ENABLE_MONO_SUPPORT - $(OtherFlags) --staticlink:FSharp.Core - true - false - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/Program.fs b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/Program.fs deleted file mode 100644 index 8379737c93..0000000000 --- a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/Program.fs +++ /dev/null @@ -1,46 +0,0 @@ -namespace FSharp.Compiler.SourceCodeServices.ProjectCrackerTool - -open System -open System.Reflection -open System.Runtime.Serialization.Json - -module Program = - -#if !NETCOREAPP2_0 - let addMSBuildv14BackupResolution () = - let onResolveEvent = new ResolveEventHandler(fun sender evArgs -> - let requestedAssembly = AssemblyName(evArgs.Name) - if requestedAssembly.Name.StartsWith("Microsoft.Build", StringComparison.Ordinal) && - not (requestedAssembly.Name.EndsWith(".resources", StringComparison.Ordinal)) && - not (requestedAssembly.Version.ToString().Contains("12.0.0.0")) - then - // If the version of MSBuild that we're using wasn't present on the machine, then - // just revert back to 12.0.0.0 since that's normally installed as part of the .NET - // Framework. - requestedAssembly.Version <- Version("12.0.0.0") - Assembly.Load requestedAssembly - else - null) - AppDomain.CurrentDomain.add_AssemblyResolve(onResolveEvent) -#endif - - let crackAndSendOutput asText argv = - let ret, opts = ProjectCrackerTool.crackOpen argv - - if asText then - printfn "%A" opts - else - let ser = new DataContractJsonSerializer(typeof) - ser.WriteObject(Console.OpenStandardOutput(), opts) - ret - - - [][] - let main argv = - let asText = Array.exists (fun (s: string) -> s = "--text") argv - let argv = Array.filter (fun (s: string) -> s <> "--text") argv - -#if !NETCOREAPP2_0 - addMSBuildv14BackupResolution () -#endif - crackAndSendOutput asText argv diff --git a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/ProjectCrackerOptions.fs b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/ProjectCrackerOptions.fs deleted file mode 100644 index a48bdc25aa..0000000000 --- a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/ProjectCrackerOptions.fs +++ /dev/null @@ -1,11 +0,0 @@ -namespace FSharp.Compiler.SourceCodeServices.ProjectCrackerTool - -[] -type ProjectOptions = - { - ProjectFile: string - Options: string[] - ReferencedProjectOptions: (string * ProjectOptions)[] - LogOutput: string - Error: string - } diff --git a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/ProjectCrackerTool.fs b/fcs/FSharp.Compiler.Service.ProjectCrackerTool/ProjectCrackerTool.fs deleted file mode 100644 index 93a74cbb0e..0000000000 --- a/fcs/FSharp.Compiler.Service.ProjectCrackerTool/ProjectCrackerTool.fs +++ /dev/null @@ -1,471 +0,0 @@ -namespace FSharp.Compiler.SourceCodeServices.ProjectCrackerTool - -open System -open System.IO -open System.Text -open Microsoft.Build.Framework -open Microsoft.Build.Utilities - -module internal ProjectCrackerTool = - open System.Collections.Generic - - let runningOnMono = -#if NETCOREAPP2_0 - false -#else - try match System.Type.GetType("Mono.Runtime") with null -> false | _ -> true - with e -> false -#endif - - type internal BasicStringLogger() = - inherit Logger() - - let sb = new StringBuilder() - - let log (e: BuildEventArgs) = - sb.Append(e.Message) |> ignore - sb.AppendLine() |> ignore - - override x.Initialize(eventSource:IEventSource) = - sb.Clear() |> ignore - eventSource.AnyEventRaised.Add(log) - - member x.Log = sb.ToString() - - type internal HostCompile() = - member th.Compile(_:obj, _:obj, _:obj) = 0 - interface ITaskHost - - let vs = - let programFiles = - let getEnv v = - let result = System.Environment.GetEnvironmentVariable(v) - match result with - | null -> None - | _ -> Some result - - match List.tryPick getEnv [ "ProgramFiles(x86)"; "ProgramFiles" ] with - | Some r -> r - | None -> "C:\\Program Files (x86)" - - let vsVersions = ["14.0"; "12.0"] - let msbuildBin v = IO.Path.Combine(programFiles, "MSBuild", v, "Bin", "MSBuild.exe") - List.tryFind (fun v -> IO.File.Exists(msbuildBin v)) vsVersions - - let mkAbsolute dir v = - if Path.IsPathRooted v then v - else Path.Combine(dir, v) - - let mkAbsoluteOpt dir v = Option.map (mkAbsolute dir) v - - let CrackProjectUsingNewBuildAPI fsprojFile properties logOpt = - let fsprojFullPath = try Path.GetFullPath(fsprojFile) with _ -> fsprojFile - let fsprojAbsDirectory = Path.GetDirectoryName fsprojFullPath - - use _pwd = - let dir = Directory.GetCurrentDirectory() - Directory.SetCurrentDirectory(fsprojAbsDirectory) - { new System.IDisposable with - member x.Dispose() = Directory.SetCurrentDirectory(dir) } - use engine = new Microsoft.Build.Evaluation.ProjectCollection() - let host = new HostCompile() - - engine.HostServices.RegisterHostObject(fsprojFullPath, "CoreCompile", "Fsc", host) - - let projectInstanceFromFullPath (fsprojFullPath: string) = - use file = new FileStream(fsprojFullPath, FileMode.Open, FileAccess.Read, FileShare.Read) - use stream = new StreamReader(file) - use xmlReader = System.Xml.XmlReader.Create(stream) - - let project = - try - engine.LoadProject(xmlReader, FullPath=fsprojFullPath) - with - | exn -> - let tools = engine.Toolsets |> Seq.map (fun x -> x.ToolsPath) |> Seq.toList - raise (new Exception(sprintf "Could not load project %s in ProjectCollection. Available tools: %A. Message: %s" fsprojFullPath tools exn.Message)) - - project.SetGlobalProperty("BuildingInsideVisualStudio", "true") |> ignore - if not (List.exists (fun (p,_) -> p = "VisualStudioVersion") properties) then - match vs with - | Some version -> project.SetGlobalProperty("VisualStudioVersion", version) |> ignore - | None -> () - project.SetGlobalProperty("ShouldUnsetParentConfigurationAndPlatform", "false") |> ignore - for (prop, value) in properties do - project.SetGlobalProperty(prop, value) |> ignore - - project.CreateProjectInstance() - - let project = projectInstanceFromFullPath fsprojFullPath - let directory = project.Directory - - let getprop (p: Microsoft.Build.Execution.ProjectInstance) s = - let v = p.GetPropertyValue s - if String.IsNullOrWhiteSpace v then None - else Some v - - let outFileOpt = getprop project "TargetPath" - - let log = match logOpt with - | None -> [] - | Some l -> [l :> ILogger] - - project.Build([| "Build" |], log) |> ignore - - let getItems s = [ for f in project.GetItems(s) -> mkAbsolute directory f.EvaluatedInclude ] - - let projectReferences = - [ for cp in project.GetItems("ProjectReference") do - yield cp.GetMetadataValue("FullPath") - ] - - let references = - [ for i in project.GetItems("ReferencePath") do - yield i.EvaluatedInclude - for i in project.GetItems("ChildProjectReferences") do - yield i.EvaluatedInclude ] - - outFileOpt, directory, getItems, references, projectReferences, getprop project, project.FullPath - -#if !NETCOREAPP2_0 - let CrackProjectUsingOldBuildAPI (fsprojFile:string) properties logOpt = - let engine = new Microsoft.Build.BuildEngine.Engine() - Option.iter (fun l -> engine.RegisterLogger(l)) logOpt - - let bpg = Microsoft.Build.BuildEngine.BuildPropertyGroup() - - bpg.SetProperty("BuildingInsideVisualStudio", "true") - for (prop, value) in properties do - bpg.SetProperty(prop, value) - - engine.GlobalProperties <- bpg - - let projectFromFile (fsprojFile:string) = - // We seem to need to pass 12.0/4.0 in here for some unknown reason - let project = new Microsoft.Build.BuildEngine.Project(engine, engine.DefaultToolsVersion) - do project.Load(fsprojFile) - project - - let project = projectFromFile fsprojFile - project.Build([| "ResolveReferences" |]) |> ignore - let directory = Path.GetDirectoryName project.FullFileName - - let getProp (p: Microsoft.Build.BuildEngine.Project) s = - let v = p.GetEvaluatedProperty s - if String.IsNullOrWhiteSpace v then None - else Some v - - let outFileOpt = - match mkAbsoluteOpt directory (getProp project "OutDir") with - | None -> None - | Some d -> mkAbsoluteOpt d (getProp project "TargetFileName") - - let getItems s = - let fs = project.GetEvaluatedItemsByName(s) - [ for f in fs -> mkAbsolute directory f.FinalItemSpec ] - - let projectReferences = - [ for i in project.GetEvaluatedItemsByName("ProjectReference") do - yield mkAbsolute directory i.FinalItemSpec - ] - - let references = - [ for i in project.GetEvaluatedItemsByName("ReferencePath") do - yield i.FinalItemSpec - for i in project.GetEvaluatedItemsByName("ChildProjectReferences") do - yield i.FinalItemSpec ] - // Duplicate slashes sometimes appear in the output here, which prevents - // them from matching keys used in FSharpProjectOptions.ReferencedProjects - |> List.map (fun (s: string) -> s.Replace("//","/")) - - outFileOpt, directory, getItems, references, projectReferences, getProp project, project.FullFileName - -#endif - - //---------------------------------------------------------------------------- - // FSharpProjectFileInfo - // - [] - type FSharpProjectFileInfo (fsprojFileName:string, ?properties, ?enableLogging) = - let properties = defaultArg properties [] - let enableLogging = defaultArg enableLogging false - - let logOpt = - if enableLogging then - let log = new BasicStringLogger() - do log.Verbosity <- Microsoft.Build.Framework.LoggerVerbosity.Diagnostic - Some log - else - None - - let outFileOpt, directory, getItems, references, projectReferences, getProp, fsprojFullPath = - try -#if NETCOREAPP2_0 - CrackProjectUsingNewBuildAPI fsprojFileName properties logOpt - with -#else - if runningOnMono then - CrackProjectUsingOldBuildAPI fsprojFileName properties logOpt - else - CrackProjectUsingNewBuildAPI fsprojFileName properties logOpt - with - | :? Microsoft.Build.BuildEngine.InvalidProjectFileException as e -> - raise (Microsoft.Build.Exceptions.InvalidProjectFileException( - e.ProjectFile, - e.LineNumber, - e.ColumnNumber, - e.EndLineNumber, - e.EndColumnNumber, - e.Message, - e.ErrorSubcategory, - e.ErrorCode, - e.HelpKeyword)) -#endif - | :? ArgumentException as e -> raise (IO.FileNotFoundException(e.Message)) - - let logOutput = match logOpt with None -> "" | Some l -> l.Log - let pages = getItems "Page" - let embeddedResources = getItems "EmbeddedResource" - let files = getItems "Compile" - let resources = getItems "Resource" - let noaction = getItems "None" - let content = getItems "Content" - - let split (s : string option) (cs : char []) = - match s with - | None -> [||] - | Some s -> - if String.IsNullOrWhiteSpace s then [||] - else s.Split(cs, StringSplitOptions.RemoveEmptyEntries) - - let getbool (s : string option) = - match s with - | None -> false - | Some s -> - match (Boolean.TryParse s) with - | (true, result) -> result - | (false, _) -> false - - let fxVer = getProp "TargetFrameworkVersion" - let optimize = getProp "Optimize" |> getbool - let assemblyNameOpt = getProp "AssemblyName" - let tailcalls = getProp "Tailcalls" |> getbool - let outputPathOpt = getProp "OutputPath" - let docFileOpt = getProp "DocumentationFile" - let outputTypeOpt = getProp "OutputType" - let debugTypeOpt = getProp "DebugType" - let baseAddressOpt = getProp "BaseAddress" - let sigFileOpt = getProp "GenerateSignatureFile" - let keyFileOpt = getProp "KeyFile" - let pdbFileOpt = getProp "PdbFile" - let platformOpt = getProp "Platform" - let targetTypeOpt = getProp "TargetType" - let versionFileOpt = getProp "VersionFile" - let targetProfileOpt = getProp "TargetProfile" - let warnLevelOpt = getProp "Warn" - let subsystemVersionOpt = getProp "SubsystemVersion" - let win32ResOpt = getProp "Win32ResourceFile" - let heOpt = getProp "HighEntropyVA" |> getbool - let win32ManifestOpt = getProp "Win32ManifestFile" - let debugSymbols = getProp "DebugSymbols" |> getbool - let prefer32bit = getProp "Prefer32Bit" |> getbool - let warnAsError = getProp "TreatWarningsAsErrors" |> getbool - let defines = split (getProp "DefineConstants") [| ';'; ','; ' ' |] - let nowarn = split (getProp "NoWarn") [| ';'; ','; ' ' |] - let warningsAsError = split (getProp "WarningsAsErrors") [| ';'; ','; ' ' |] - let libPaths = split (getProp "ReferencePath") [| ';'; ',' |] - let otherFlags = split (getProp "OtherFlags") [| ' ' |] - let isLib = (outputTypeOpt = Some "Library") - - let docFileOpt = - match docFileOpt with - | None -> None - | Some docFile -> Some(mkAbsolute directory docFile) - - - let options = - [ yield "--simpleresolution" - yield "--noframework" - match outFileOpt with - | None -> () - | Some outFile -> yield "--out:" + outFile - match docFileOpt with - | None -> () - | Some docFile -> yield "--doc:" + docFile - match baseAddressOpt with - | None -> () - | Some baseAddress -> yield "--baseaddress:" + baseAddress - match keyFileOpt with - | None -> () - | Some keyFile -> yield "--keyfile:" + keyFile - match sigFileOpt with - | None -> () - | Some sigFile -> yield "--sig:" + sigFile - match pdbFileOpt with - | None -> () - | Some pdbFile -> yield "--pdb:" + pdbFile - match versionFileOpt with - | None -> () - | Some versionFile -> yield "--versionfile:" + versionFile - match warnLevelOpt with - | None -> () - | Some warnLevel -> yield "--warn:" + warnLevel - match subsystemVersionOpt with - | None -> () - | Some s -> yield "--subsystemversion:" + s - if heOpt then yield "--highentropyva+" - match win32ResOpt with - | None -> () - | Some win32Res -> yield "--win32res:" + win32Res - match win32ManifestOpt with - | None -> () - | Some win32Manifest -> yield "--win32manifest:" + win32Manifest - match targetProfileOpt with - | None -> () - | Some targetProfile -> yield "--targetprofile:" + targetProfile - yield "--fullpaths" - yield "--flaterrors" - if warnAsError then yield "--warnaserror" - yield - if isLib then "--target:library" - else "--target:exe" - for symbol in defines do - if not (String.IsNullOrWhiteSpace symbol) then yield "--define:" + symbol - for nw in nowarn do - if not (String.IsNullOrWhiteSpace nw) then yield "--nowarn:" + nw - for nw in warningsAsError do - if not (String.IsNullOrWhiteSpace nw) then yield "--warnaserror:" + nw - yield if debugSymbols then "--debug+" - else "--debug-" - yield if optimize then "--optimize+" - else "--optimize-" - yield if tailcalls then "--tailcalls+" - else "--tailcalls-" - match debugTypeOpt with - | None -> () - | Some debugType -> - match debugType.ToUpperInvariant() with - | "NONE" -> () - | "PDBONLY" -> yield "--debug:pdbonly" - | "FULL" -> yield "--debug:full" - | _ -> () - match platformOpt |> Option.map (fun o -> o.ToUpperInvariant()), prefer32bit, - targetTypeOpt |> Option.map (fun o -> o.ToUpperInvariant()) with - | Some "ANYCPU", true, Some "EXE" | Some "ANYCPU", true, Some "WINEXE" -> yield "--platform:anycpu32bitpreferred" - | Some "ANYCPU", _, _ -> yield "--platform:anycpu" - | Some "X86", _, _ -> yield "--platform:x86" - | Some "X64", _, _ -> yield "--platform:x64" - | Some "ITANIUM", _, _ -> yield "--platform:Itanium" - | _ -> () - match targetTypeOpt |> Option.map (fun o -> o.ToUpperInvariant()) with - | Some "LIBRARY" -> yield "--target:library" - | Some "EXE" -> yield "--target:exe" - | Some "WINEXE" -> yield "--target:winexe" - | Some "MODULE" -> yield "--target:module" - | _ -> () - yield! otherFlags - for f in resources do - yield "--resource:" + f - for i in libPaths do - yield "--lib:" + mkAbsolute directory i - for r in references do - yield "-r:" + r - yield! files ] - - member x.Options = options - member x.FrameworkVersion = fxVer - member x.ProjectReferences = projectReferences - member x.References = references - member x.CompileFiles = files - member x.ResourceFiles = resources - member x.EmbeddedResourceFiles = embeddedResources - member x.ContentFiles = content - member x.OtherFiles = noaction - member x.PageFiles = pages - member x.OutputFile = outFileOpt - member x.Directory = directory - member x.AssemblyName = assemblyNameOpt - member x.OutputPath = outputPathOpt - member x.FullPath = fsprojFullPath - member x.LogOutput = logOutput - static member Parse(fsprojFileName:string, ?properties, ?enableLogging) = new FSharpProjectFileInfo(fsprojFileName, ?properties=properties, ?enableLogging=enableLogging) - - let getOptions file enableLogging properties = - let cache = new Dictionary<_,_>() - let rec getOptions file : Option * ProjectOptions = - match cache.TryGetValue file with - | true, option -> option - | _ -> - let parsedProject = FSharpProjectFileInfo.Parse(file, properties=properties, enableLogging=enableLogging) - - let referencedProjectOptions = - [| for file in parsedProject.ProjectReferences do - if Path.GetExtension(file) = ".fsproj" then - match getOptions file with - | Some outFile, opts -> yield outFile, opts - | None, _ -> () |] - - // Workaround for Mono 4.2, which doesn't populate the subproject - // details anymore outside of a solution context. See https://github.com/mono/mono/commit/76c6a08e730393927b6851709cdae1d397cbcc3a#diff-59afd196a55d61d5d1eaaef7bd49d1e5 - // and some explanation from the author at https://github.com/fsharp/FSharp.Compiler.Service/pull/455#issuecomment-154103963 - // - // In particular we want the output path, which we can get from - // fully parsing that project itself. We also have to specially parse - // C# referenced projects, as we don't look at them otherwise. - let referencedProjectOutputs = - if runningOnMono then - [ yield! Array.map (fun (s,_) -> "-r:" + s) referencedProjectOptions - for file in parsedProject.ProjectReferences do - let ext = Path.GetExtension(file) - if ext = ".csproj" || ext = ".vbproj" then - let parsedProject = FSharpProjectFileInfo.Parse(file, properties=properties, enableLogging=false) - match parsedProject.OutputFile with - | None -> () - | Some f -> yield "-r:" + f ] - else - [] - - // On some versions of Mono the referenced projects are already - // correctly included, so we make sure not to introduce duplicates - |> List.filter (fun r -> not (Set.contains r (set parsedProject.Options))) - - let options = { ProjectFile = file - Options = Array.ofSeq (parsedProject.Options @ referencedProjectOutputs) - ReferencedProjectOptions = referencedProjectOptions - LogOutput = parsedProject.LogOutput - Error = null } - - let result = parsedProject.OutputFile, options - cache.Add(file,result) - result - - snd (getOptions file) - - - let rec pairs l = - match l with - | [] | [_] -> [] - | x::y::rest -> (x,y) :: pairs rest - - let crackOpen (argv: string[])= - if argv.Length >= 2 then - let projectFile = argv.[0] - let enableLogging = match Boolean.TryParse(argv.[1]) with - | true, true -> true - | _ -> false - try - let props = pairs (List.ofArray argv.[2..]) - let opts = getOptions argv.[0] enableLogging props - 0, opts - with e -> - 2, { ProjectFile = projectFile; - Options = [||]; - ReferencedProjectOptions = [||]; - LogOutput = e.ToString() + " StackTrace: " + e.StackTrace - Error = e.Message + " StackTrace: " + e.StackTrace } - else - 1, { ProjectFile = ""; - Options = [||]; - ReferencedProjectOptions = [||]; - LogOutput = "At least two arguments required." - Error = null } diff --git a/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj b/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj index 7f0522e8e3..874bb28070 100644 --- a/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj +++ b/fcs/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj @@ -1,7 +1,7 @@ - $(FcsTargetNetFxFramework);netcoreapp2.0 + $(FcsTargetNetFxFramework);netcoreapp3.0 true 4.1.19 $(NoWarn);44;75; @@ -13,7 +13,7 @@ true true - + $(DefineConstants);NO_PROJECTCRACKER $(DefineConstants);FCS @@ -54,9 +54,6 @@ CSharpProjectAnalysis.fs - - ProjectOptionsTests.fs - StructureTests.fs @@ -69,7 +66,7 @@ TreeVisitorTests.fs - + Program.fs @@ -103,6 +100,5 @@ - \ No newline at end of file diff --git a/fcs/FSharp.Compiler.Service.Tests/FsxCompletionProviderTests.fs b/fcs/FSharp.Compiler.Service.Tests/FsxCompletionProviderTests.fs new file mode 100644 index 0000000000..468c916dc9 --- /dev/null +++ b/fcs/FSharp.Compiler.Service.Tests/FsxCompletionProviderTests.fs @@ -0,0 +1,161 @@ +// To run the tests in this file: +// +// Technique 1: Compile VisualFSharp.UnitTests.dll and run it as a set of unit tests +// +// Technique 2: +// +// Enable some tests in the #if EXE section at the end of the file, +// then compile this file as an EXE that has InternalsVisibleTo access into the +// appropriate DLLs. This can be the quickest way to get turnaround on updating the tests +// and capturing large amounts of structured output. +(* + cd Debug\net40\bin + .\fsc.exe --define:EXE -r:.\Microsoft.Build.Utilities.Core.dll -o VisualFSharp.UnitTests.exe -g --optimize- -r .\FSharp.Compiler.Private.dll -r .\FSharp.Editor.dll -r nunit.framework.dll ..\..\..\tests\service\FsUnit.fs ..\..\..\tests\service\Common.fs /delaysign /keyfile:..\..\..\src\fsharp\msft.pubkey ..\..\..\vsintegration\tests\UnitTests\FsxCompletionProviderTests.fs + .\VisualFSharp.UnitTests.exe +*) +// Technique 3: +// +// Use F# Interactive. This only works for FSharp.Compiler.Service.dll which has a public API + +// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. +namespace Microsoft.VisualStudio.FSharp.Editor.Tests.Roslyn + +open System +open System.Collections.Generic +open System.IO +open System.Linq +open System.Reflection + +open NUnit.Framework + +open Microsoft.CodeAnalysis +open Microsoft.CodeAnalysis.Completion +open Microsoft.CodeAnalysis.Text +open Microsoft.VisualStudio.FSharp.Editor + +open FSharp.Compiler.SourceCodeServices +open UnitTests.TestLib.LanguageService + +// AppDomain helper +type Worker () = + inherit MarshalByRefObject() + + let filePath = "C:\\test.fsx" + let projectOptions = { + ProjectFileName = "C:\\test.fsproj" + ProjectId = None + SourceFiles = [| filePath |] + ReferencedProjects = [| |] + OtherOptions = [| |] + IsIncompleteTypeCheckEnvironment = true + UseScriptResolutionRules = true + LoadTime = DateTime.MaxValue + OriginalLoadReferences = [] + UnresolvedReferences = None + ExtraProjectInfo = None + Stamp = None + } + + let formatCompletions(completions : string seq) = + "\n\t" + String.Join("\n\t", completions) + + let VerifyCompletionList(fileContents: string, marker: string, expected: string list, unexpected: string list) = + let caretPosition = fileContents.IndexOf(marker) + marker.Length + let results = + FSharpCompletionProvider.ProvideCompletionsAsyncAux(checker, SourceText.From(fileContents), caretPosition, projectOptions, filePath, 0, (fun _ -> []), LanguageServicePerformanceOptions.Default, IntelliSenseOptions.Default) + |> Async.RunSynchronously + |> Option.defaultValue (ResizeArray()) + |> Seq.map(fun result -> result.DisplayText) + + let expectedFound = + expected + |> Seq.filter results.Contains + + let expectedNotFound = + expected + |> Seq.filter (expectedFound.Contains >> not) + + let unexpectedNotFound = + unexpected + |> Seq.filter (results.Contains >> not) + + let unexpectedFound = + unexpected + |> Seq.filter (unexpectedNotFound.Contains >> not) + + // If either of these are true, then the test fails. + let hasExpectedNotFound = not (Seq.isEmpty expectedNotFound) + let hasUnexpectedFound = not (Seq.isEmpty unexpectedFound) + + if hasExpectedNotFound || hasUnexpectedFound then + let expectedNotFoundMsg = + if hasExpectedNotFound then + sprintf "\nExpected completions not found:%s\n" (formatCompletions expectedNotFound) + else + String.Empty + + let unexpectedFoundMsg = + if hasUnexpectedFound then + sprintf "\nUnexpected completions found:%s\n" (formatCompletions unexpectedFound) + else + String.Empty + + let completionsMsg = sprintf "\nin Completions:%s" (formatCompletions results) + + let msg = sprintf "%s%s%s" expectedNotFoundMsg unexpectedFoundMsg completionsMsg + + Assert.Fail(msg) + + member __.VerifyCompletionListExactly(fileContents: string, marker: string, expected: List) = + + let caretPosition = fileContents.IndexOf(marker) + marker.Length + let expected = expected |> Seq.toList + let actual = + let x = FSharpCompletionProvider.ProvideCompletionsAsyncAux(checker, SourceText.From(fileContents), caretPosition, projectOptions, filePath, 0, (fun _ -> []), LanguageServicePerformanceOptions.Default, IntelliSenseOptions.Default) + |> Async.RunSynchronously + x |> Option.defaultValue (ResizeArray()) + |> Seq.toList + // sort items as Roslyn do - by `SortText` + |> List.sortBy (fun x -> x.SortText) + + let actualNames = actual |> List.map (fun x -> x.DisplayText) + + if actualNames <> expected then + Assert.Fail(sprintf "Expected:\n%s,\nbut was:\n%s\nactual with sort text:\n%s" + (String.Join("; ", expected |> List.map (sprintf "\"%s\""))) + (String.Join("; ", actualNames |> List.map (sprintf "\"%s\""))) + (String.Join("\n", actual |> List.map (fun x -> sprintf "%s => %s" x.DisplayText x.SortText)))) + +module FsxCompletionProviderTests = + + let pathToThisDll = Assembly.GetExecutingAssembly().CodeBase + + let getWorker () = + + let adSetup = + let setup = new System.AppDomainSetup () + setup.PrivateBinPath <- pathToThisDll + setup.ApplicationBase <- Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SomeNonExistentDirectory") + setup + + let ad = AppDomain.CreateDomain((Guid()).ToString(), null, adSetup) + (ad.CreateInstanceFromAndUnwrap(pathToThisDll, typeof.FullName)) :?> Worker + + [] + let fsiShouldTriggerCompletionInFsxFile() = + + let fileContents = """ + fsi. + """ + let expected = List([ + "CommandLineArgs"; "EventLoop"; "FloatingPointFormat"; "FormatProvider"; "PrintDepth"; + "PrintLength"; "PrintSize"; "PrintWidth"; "ShowDeclarationValues"; "ShowIEnumerable"; + "ShowProperties"; "AddPrinter"; "AddPrintTransformer"; "Equals"; "GetHashCode"; + "GetType"; "ToString"; ]) + + // We execute in a seperate appdomain so that we can set BaseDirectory to a non-existent location + getWorker().VerifyCompletionListExactly(fileContents, "fsi.", expected) + +#if EXE +ShouldTriggerCompletionInFsxFile() +#endif diff --git a/fcs/FSharp.Compiler.Service.sln b/fcs/FSharp.Compiler.Service.sln index 192f8bd624..af0ed390cb 100644 --- a/fcs/FSharp.Compiler.Service.sln +++ b/fcs/FSharp.Compiler.Service.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26730.16 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29418.71 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{B6B68AE6-E7A4-4D43-9B34-FFA74BFE192B}" ProjectSection(SolutionItems) = preProject @@ -9,7 +9,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{B6B6 build.sh = build.sh nuget\FSharp.Compiler.Service.MSBuild.v12.nuspec = nuget\FSharp.Compiler.Service.MSBuild.v12.nuspec nuget\FSharp.Compiler.Service.nuspec = nuget\FSharp.Compiler.Service.nuspec - nuget\FSharp.Compiler.Service.ProjectCracker.nuspec = nuget\FSharp.Compiler.Service.ProjectCracker.nuspec paket.dependencies = paket.dependencies README.md = README.md RELEASE_NOTES.md = RELEASE_NOTES.md @@ -41,23 +40,19 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{0554567F EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{E396742E-B4E5-4584-A9E4-CC1A491F5BC1}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "EditorService", "samples\EditorService\EditorService.fsproj", "{A40507D6-FA48-43D3-B18A-AE3DAACE4020}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "EditorService", "samples\EditorService\EditorService.fsproj", "{A40507D6-FA48-43D3-B18A-AE3DAACE4020}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "InteractiveService", "samples\InteractiveService\InteractiveService.fsproj", "{067E95E5-E3DC-4CA7-813A-4D1E277D2D52}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "InteractiveService", "samples\InteractiveService\InteractiveService.fsproj", "{067E95E5-E3DC-4CA7-813A-4D1E277D2D52}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Tokenizer", "samples\Tokenizer\Tokenizer.fsproj", "{92793069-816F-4F69-84AC-0966F8275E65}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tokenizer", "samples\Tokenizer\Tokenizer.fsproj", "{92793069-816F-4F69-84AC-0966F8275E65}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "UntypedTree", "samples\UntypedTree\UntypedTree.fsproj", "{C816728D-BBEA-472D-9F6C-E8913957A673}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "UntypedTree", "samples\UntypedTree\UntypedTree.fsproj", "{C816728D-BBEA-472D-9F6C-E8913957A673}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FscExe", "samples\FscExe\FscExe.fsproj", "{C94C257C-3C0A-4858-B5D8-D746498D1F08}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FscExe", "samples\FscExe\FscExe.fsproj", "{C94C257C-3C0A-4858-B5D8-D746498D1F08}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharp_Analysis", "FSharp.Compiler.Service.Tests\CSharp_Analysis\CSharp_Analysis.csproj", "{887630A3-4B1D-40EA-B8B3-2D842E9C40DB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CSharp_Analysis", "FSharp.Compiler.Service.Tests\CSharp_Analysis\CSharp_Analysis.csproj", "{887630A3-4B1D-40EA-B8B3-2D842E9C40DB}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FsiExe", "samples\FsiExe\FsiExe.fsproj", "{F9540CA8-1CE0-4546-A23A-A461E416E95B}" -EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Service.ProjectCrackerTool", "FSharp.Compiler.Service.ProjectCrackerTool\FSharp.Compiler.Service.ProjectCrackerTool.fsproj", "{B1BDD96D-47E1-4E65-8107-FBAE23A06DB4}" -EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Service.ProjectCracker", "FSharp.Compiler.Service.ProjectCracker\FSharp.Compiler.Service.ProjectCracker.fsproj", "{893C3CD9-5AF8-4027-A667-21E62FC2C703}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FsiExe", "samples\FsiExe\FsiExe.fsproj", "{F9540CA8-1CE0-4546-A23A-A461E416E95B}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "config", "config", "{098D1C35-D0FB-4720-83DD-8002293EA237}" ProjectSection(SolutionItems) = preProject @@ -71,14 +66,13 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "package", "package", "{9020E136-794A-473F-9B1B-9623C97B7161}" ProjectSection(SolutionItems) = preProject nuget\FSharp.Compiler.Service.template = nuget\FSharp.Compiler.Service.template - nuget\projectcracker.template = nuget\projectcracker.template EndProjectSection EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Service.MSBuild.v12", "FSharp.Compiler.Service.MSBuild.v12\FSharp.Compiler.Service.MSBuild.v12.fsproj", "{8157B50E-397D-4232-A4E0-1977AFC7076D}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.Service.MSBuild.v12", "FSharp.Compiler.Service.MSBuild.v12\FSharp.Compiler.Service.MSBuild.v12.fsproj", "{8157B50E-397D-4232-A4E0-1977AFC7076D}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Service", "FSharp.Compiler.Service\FSharp.Compiler.Service.fsproj", "{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.Service", "FSharp.Compiler.Service\FSharp.Compiler.Service.fsproj", "{2E4D67B4-522D-4CF7-97E4-BA940F0B18F3}" EndProject -Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "FSharp.Compiler.Service.Tests", "FSharp.Compiler.Service.Tests\FSharp.Compiler.Service.Tests.fsproj", "{EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}" +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Compiler.Service.Tests", "FSharp.Compiler.Service.Tests\FSharp.Compiler.Service.Tests.fsproj", "{EE85AAB7-CDA0-4C4E-BDA0-A64DDDD13E3F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -114,14 +108,6 @@ Global {F9540CA8-1CE0-4546-A23A-A461E416E95B}.Debug|Any CPU.Build.0 = Debug|Any CPU {F9540CA8-1CE0-4546-A23A-A461E416E95B}.Release|Any CPU.ActiveCfg = Release|Any CPU {F9540CA8-1CE0-4546-A23A-A461E416E95B}.Release|Any CPU.Build.0 = Release|Any CPU - {B1BDD96D-47E1-4E65-8107-FBAE23A06DB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B1BDD96D-47E1-4E65-8107-FBAE23A06DB4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B1BDD96D-47E1-4E65-8107-FBAE23A06DB4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B1BDD96D-47E1-4E65-8107-FBAE23A06DB4}.Release|Any CPU.Build.0 = Release|Any CPU - {893C3CD9-5AF8-4027-A667-21E62FC2C703}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {893C3CD9-5AF8-4027-A667-21E62FC2C703}.Debug|Any CPU.Build.0 = Debug|Any CPU - {893C3CD9-5AF8-4027-A667-21E62FC2C703}.Release|Any CPU.ActiveCfg = Release|Any CPU - {893C3CD9-5AF8-4027-A667-21E62FC2C703}.Release|Any CPU.Build.0 = Release|Any CPU {8157B50E-397D-4232-A4E0-1977AFC7076D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8157B50E-397D-4232-A4E0-1977AFC7076D}.Debug|Any CPU.Build.0 = Debug|Any CPU {8157B50E-397D-4232-A4E0-1977AFC7076D}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj b/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj index f519ba3462..96f19e7b2c 100644 --- a/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj +++ b/fcs/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj @@ -1,4 +1,5 @@ - + + $(MSBuildProjectDirectory)\..\..\src @@ -521,6 +522,12 @@ Driver\DotNetFrameworkDependencies.fs + + Driver/DependencyManager.Integration.fsi + + + Driver/DependencyManager.Integration.fs + Driver/CompileOps.fsi @@ -676,6 +683,7 @@ + diff --git a/fcs/README.md b/fcs/README.md index 33f5989094..5f54c58793 100644 --- a/fcs/README.md +++ b/fcs/README.md @@ -17,8 +17,6 @@ There are subtle differences between FSharp.Compiler.Service and FSharp.Compiler - FCS has a .NET Standard 2.0 version in the nuget package -- FCS testing also tests the "Project Cracker" (see below) - - FCS doesn't add the System.ValueTuple.dll reference by default, see ``#if COMPILER_SERVICE_AS_DLL`` in compiler codebase ## Version Numbers @@ -29,7 +27,6 @@ To update the version number a global replace through fcs\... is currently neede Directory.Build.props nuget/FSharp.Compiler.Service.nuspec nuget/FSharp.Compiler.Service.MSBuild.v12.nuspec - nuget/FSharp.Compiler.Service.ProjectCracker.nuspec RELEASE_NOTES.md ## Building, Testing, Packaging, Releases @@ -62,9 +59,8 @@ which does things like: You can push the packages if you have permissions, either automatically using ``build Release`` or manually set APIKEY=... - ..\fsharp\.nuget\nuget.exe push %HOMEDRIVE%%HOMEPATH%\Downloads\FSharp.Compiler.Service.32.0.0.nupkg %APIKEY% -Source https://nuget.org - ..\fsharp\.nuget\nuget.exe push %HOMEDRIVE%%HOMEPATH%\Downloads\FSharp.Compiler.Service.MSBuild.v12.32.0.0.nupkg %APIKEY% -Source https://nuget.org - ..\fsharp\.nuget\nuget.exe push %HOMEDRIVE%%HOMEPATH%\Downloads\FSharp.Compiler.Service.ProjectCracker.32.0.0.nupkg %APIKEY% -Source https://nuget.org + ..\fsharp\.nuget\nuget.exe push %HOMEDRIVE%%HOMEPATH%\Downloads\FSharp.Compiler.Service.33.0.1.nupkg %APIKEY% -Source https://nuget.org + ..\fsharp\.nuget\nuget.exe push %HOMEDRIVE%%HOMEPATH%\Downloads\FSharp.Compiler.Service.MSBuild.v12.33.0.1.nupkg %APIKEY% -Source https://nuget.org ### Use of Paket and FAKE @@ -82,15 +78,13 @@ Testing reuses the test files from ..\tests\service which were are also FCS test Output is in ``docs``. In the ``FSharp.Compiler.Service`` repo this is checked in and hosted as . -## The two other NuGet packages +## Other NuGet packages It also contains both the source, build, packaging and test logic for - ``FSharp.Compiler.Service.MSBuild.v12`` adds legacy MSBuild v12 support to an instance of FSharp.Compiler.Service, if exact compatibility for scripting references such as ``#r "Foo, Version=1.3.4"`` is required. -- ``FSharp.Compiler.Service.ProjectCracker`` is part of ``FsAutoComplete`` and Ionide and is used to crack old-style project formats using MSBuild. It used to be part of the FCS API. - -Both of these components are gradually becoming obsolete +These components are gradually becoming obsolete ## Engineering road map diff --git a/fcs/build.fsx b/fcs/build.fsx index 6b315182dd..052c97098c 100644 --- a/fcs/build.fsx +++ b/fcs/build.fsx @@ -66,16 +66,16 @@ Target.create "Build" (fun _ -> runDotnet __SOURCE_DIRECTORY__ "build" "../src/buildtools/buildtools.proj -v n -c Proto" let fslexPath = __SOURCE_DIRECTORY__ + "/../artifacts/bin/fslex/Proto/netcoreapp2.1/fslex.dll" let fsyaccPath = __SOURCE_DIRECTORY__ + "/../artifacts/bin/fsyacc/Proto/netcoreapp2.1/fsyacc.dll" - runDotnet __SOURCE_DIRECTORY__ "build" (sprintf "FSharp.Compiler.Service.sln -v n -c Release /p:FsLexPath=%s /p:FsYaccPath=%s" fslexPath fsyaccPath) + runDotnet __SOURCE_DIRECTORY__ "build" (sprintf "FSharp.Compiler.Service.sln -nodereuse:false -v n -c Release /p:DisableCompilerRedirection=true /p:FsLexPath=%s /p:FsYaccPath=%s" fslexPath fsyaccPath) ) Target.create "Test" (fun _ -> // This project file is used for the netcoreapp2.0 tests to work out reference sets - runDotnet __SOURCE_DIRECTORY__ "build" "../tests/projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0/Sample_NETCoreSDK_FSharp_Library_netstandard2_0.fsproj -v n /restore /p:DisableCompilerRedirection=true" + runDotnet __SOURCE_DIRECTORY__ "build" "../tests/projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0/Sample_NETCoreSDK_FSharp_Library_netstandard2_0.fsproj -nodereuse:false -v n /restore /p:DisableCompilerRedirection=true" // Now run the tests let logFilePath = Path.Combine(__SOURCE_DIRECTORY__, "..", "artifacts", "TestResults", "Release", "FSharp.Compiler.Service.Test.xml") - runDotnet __SOURCE_DIRECTORY__ "test" (sprintf "FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj --no-restore --no-build -v n -c Release --test-adapter-path . --logger \"nunit;LogFilePath=%s\"" logFilePath) + runDotnet __SOURCE_DIRECTORY__ "test" (sprintf "FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj --no-restore --no-build -nodereuse:false -v n -c Release --test-adapter-path . --logger \"nunit;LogFilePath=%s\"" logFilePath) ) Target.create "NuGet" (fun _ -> diff --git a/fcs/docsrc/content/devnotes.md b/fcs/docsrc/content/devnotes.md index 7f80660f36..98684f9f35 100644 --- a/fcs/docsrc/content/devnotes.md +++ b/fcs/docsrc/content/devnotes.md @@ -54,4 +54,4 @@ Release checklist to publish a new version on nuget.org 1. Update `RELEASE_NOTES.md` 2. Check the version numbers are correct across the source (some files duplicate them) 3. Commit and add the necessary tag to the repo -4. Publish the nupkgs for `FSharp.Compiler.Service` and `FSharp.Compiler.Service.ProjectCracker` once they appear in AppVeyor artifacts +4. Publish the nupkgs for `FSharp.Compiler.Service` once it appears in AppVeyor artifacts diff --git a/fcs/docsrc/content/project.fsx b/fcs/docsrc/content/project.fsx index a537000435..7573b7f9ba 100644 --- a/fcs/docsrc/content/project.fsx +++ b/fcs/docsrc/content/project.fsx @@ -23,7 +23,6 @@ of `InteractiveChecker`: *) // Reference F# compiler API #r "FSharp.Compiler.Service.dll" -#r "FSharp.Compiler.Service.ProjectCracker.dll" open System open System.Collections.Generic @@ -306,61 +305,6 @@ correctly and then analyze each project in turn. *) -(** -Cracking a legacy project file ------------------------------ - -F# projects normally use the '.fsproj' project file format. -A project cracking facility for legacy old-style .fsproj is provided as a separate NuGet package: -FSharp.Compiler.Service.ProjectCracker. - -Project cracking for modern project files should be done using a library such as DotNetProjInfo. -See FsAutoComplete for example code. - -The legacy NuGet package `FSharp.Compiler.Service.ProjectCracker` contains a -library `FSharp.Compiler.Service.ProjectCracker.dll`, which should be -referenced by your application directly, and an executable -`FSharp.Compiler.Service.ProjectCrackerTool.exe`, which should be copied -into the output folder of your application by the build process. If -you install using Paket or NuGet, then this will be configured for you -automatically. If not, you should reference the provided `.targets` -file manually in your application. This can be found in the NuGet -package at `build/net461/FSharp.Compiler.Service.ProjectCrackerTool.targets`. - -The reason for this split was so the analysis of an F# project -file is performed out of process, in order that the necessary assembly -binding redirects can be applied without requiring the caller to -arrange this. In this way MSBuild versions from 4 up to 14 can be -accommodated transparently. - -In this example we get the project options for one of the -project files in the F# Compiler Service project itself - you should also be able to use this technique -for any project that builds cleanly using the command line tools 'xbuild' or 'msbuild'. - - -*) - -let projectFile = __SOURCE_DIRECTORY__ + @"/../../src/fsharp/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj" - -ProjectCracker.GetProjectOptionsFromProjectFile(projectFile) - - -(** - -You can also request RELEASE mode and set other build configuration parameters: - -*) - -ProjectCracker.GetProjectOptionsFromProjectFile(projectFile, [("Configuration", "Release")]) - -(** - -For debugging purposes it is also possible to obtain a detailed log from the assembly resolution process. - -*) - -let options, logs = ProjectCracker.GetProjectOptionsFromProjectFileLogged(projectFile, [("Configuration", "Release")]) - (** Summary ------- diff --git a/fcs/samples/EditorService/EditorService.fsproj b/fcs/samples/EditorService/EditorService.fsproj index f7c52de5fa..f3e3f7e10f 100644 --- a/fcs/samples/EditorService/EditorService.fsproj +++ b/fcs/samples/EditorService/EditorService.fsproj @@ -1,7 +1,7 @@  - $(FcsTargetNetFxFramework);netcoreapp2.0 + $(FcsTargetNetFxFramework);netcoreapp3.0 true Exe false diff --git a/fcs/samples/FscExe/FscMain.fs b/fcs/samples/FscExe/FscMain.fs index da272800d6..b2d5d6a899 100644 --- a/fcs/samples/FscExe/FscMain.fs +++ b/fcs/samples/FscExe/FscMain.fs @@ -264,10 +264,6 @@ module Driver = if runningOnMono && hasArgument "resident" argv then let argv = stripArgument "resident" argv - //if not (hasArgument "nologo" argv) then - // printfn "%s" (FSComp.SR.buildProductName(FSharpEnvironment.FSharpTeamVersionNumber)) - // printfn "%s" (FSComp.SR.optsCopyright()) - let fscServerExe = typeof.Assembly.Location let exitCodeOpt = FSharpResidentCompiler.FSharpCompilationServer.TryCompileUsingServer (fscServerExe, argv) match exitCodeOpt with diff --git a/global.json b/global.json index bbe81be30c..f12de76387 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "tools": { - "dotnet": "3.0.100", + "dotnet": "3.1.100", "vs": { "version": "16.3", "components": [ @@ -10,7 +10,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.19603.17", + "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19616.5", "Microsoft.DotNet.Helix.Sdk": "2.0.0-beta.19069.2" } } diff --git a/proto.proj b/proto.proj index 23d7525d13..3a9793b4be 100644 --- a/proto.proj +++ b/proto.proj @@ -7,13 +7,13 @@ - TargetFramework=netcoreapp2.1 + TargetFramework=netcoreapp3.0 - TargetFramework=netcoreapp2.1 + TargetFramework=netcoreapp3.0 - TargetFramework=netcoreapp2.1 + TargetFramework=netcoreapp3.0 diff --git a/src/absil/bytes.fs b/src/absil/bytes.fs index fd5f14247c..24159a728c 100755 --- a/src/absil/bytes.fs +++ b/src/absil/bytes.fs @@ -3,7 +3,14 @@ /// Byte arrays namespace FSharp.Compiler.AbstractIL.Internal +open System +open System.IO +open System.IO.MemoryMappedFiles +open System.Runtime.InteropServices +open System.Runtime.CompilerServices +open FSharp.NativeInterop +#nowarn "9" module internal Bytes = let b0 n = (n &&& 0xFF) @@ -26,10 +33,284 @@ module internal Bytes = Array.append (System.Text.Encoding.UTF8.GetBytes s) (ofInt32Array [| 0x0 |]) let stringAsUnicodeNullTerminated (s:string) = - Array.append (System.Text.Encoding.Unicode.GetBytes s) (ofInt32Array [| 0x0;0x0 |]) + Array.append (System.Text.Encoding.Unicode.GetBytes s) (ofInt32Array [| 0x0;0x0 |]) + +[] +type ByteMemory () = + + abstract Item: int -> byte with get, set + + abstract Length: int + + abstract ReadBytes: pos: int * count: int -> byte[] + + abstract ReadInt32: pos: int -> int + + abstract ReadUInt16: pos: int -> uint16 + + abstract ReadUtf8String: pos: int * count: int -> string + + abstract Slice: pos: int * count: int -> ByteMemory + + abstract CopyTo: Stream -> unit + + abstract Copy: srcOffset: int * dest: byte[] * destOffset: int * count: int -> unit + + abstract ToArray: unit -> byte[] + + abstract AsStream: unit -> Stream + + abstract AsReadOnlyStream: unit -> Stream + +[] +type ByteArrayMemory(bytes: byte[], offset, length) = + inherit ByteMemory() + + do + if length < 0 || length > bytes.Length then + raise (ArgumentOutOfRangeException("length")) + + if offset < 0 || (offset + length) > bytes.Length then + raise (ArgumentOutOfRangeException("offset")) + + override _.Item + with get i = bytes.[offset + i] + and set i v = bytes.[offset + i] <- v + + override _.Length = length + + override _.ReadBytes(pos, count) = + Array.sub bytes (offset + pos) count + + override _.ReadInt32 pos = + let finalOffset = offset + pos + (uint32 bytes.[finalOffset]) ||| + ((uint32 bytes.[finalOffset + 1]) <<< 8) ||| + ((uint32 bytes.[finalOffset + 2]) <<< 16) ||| + ((uint32 bytes.[finalOffset + 3]) <<< 24) + |> int + + override _.ReadUInt16 pos = + let finalOffset = offset + pos + (uint16 bytes.[finalOffset]) ||| + ((uint16 bytes.[finalOffset + 1]) <<< 8) + + override _.ReadUtf8String(pos, count) = + System.Text.Encoding.UTF8.GetString(bytes, offset + pos, count) + + override _.Slice(pos, count) = + ByteArrayMemory(bytes, offset + pos, count) :> ByteMemory + + override _.CopyTo stream = + stream.Write(bytes, offset, length) + + override _.Copy(srcOffset, dest, destOffset, count) = + Array.blit bytes (offset + srcOffset) dest destOffset count + + override _.ToArray() = + Array.sub bytes offset length + + override _.AsStream() = + new MemoryStream(bytes, offset, length) :> Stream + + override _.AsReadOnlyStream() = + new MemoryStream(bytes, offset, length, false) :> Stream + +[] +type SafeUnmanagedMemoryStream = + inherit UnmanagedMemoryStream + + val mutable private holder: obj + val mutable private isDisposed: bool + + new (addr, length, holder) = + { + inherit UnmanagedMemoryStream(addr, length) + holder = holder + isDisposed = false + } + + new (addr: nativeptr, length: int64, capacity: int64, access: FileAccess, holder) = + { + inherit UnmanagedMemoryStream(addr, length, capacity, access) + holder = holder + isDisposed = false + } + + override x.Dispose disposing = + base.Dispose disposing + x.holder <- null // Null out so it can be collected. + +[] +type RawByteMemory(addr: nativeptr, length: int, holder: obj) = + inherit ByteMemory () + + let check i = + if i < 0 || i >= length then + raise (ArgumentOutOfRangeException("i")) + + do + if length < 0 then + raise (ArgumentOutOfRangeException("length")) + + override _.Item + with get i = + check i + NativePtr.add addr i + |> NativePtr.read + and set i v = + check i + NativePtr.set addr i v + + override _.Length = length + + override _.ReadUtf8String(pos, count) = + check pos + check (pos + count - 1) + System.Text.Encoding.UTF8.GetString(NativePtr.add addr pos, count) + + override _.ReadBytes(pos, count) = + check pos + check (pos + count - 1) + let res = Bytes.zeroCreate count + Marshal.Copy(NativePtr.toNativeInt addr + nativeint pos, res, 0, count) + res + + override _.ReadInt32 pos = + check pos + check (pos + 3) + Marshal.ReadInt32(NativePtr.toNativeInt addr + nativeint pos) + + override _.ReadUInt16 pos = + check pos + check (pos + 1) + uint16(Marshal.ReadInt16(NativePtr.toNativeInt addr + nativeint pos)) + + override _.Slice(pos, count) = + check pos + check (pos + count - 1) + RawByteMemory(NativePtr.add addr pos, count, holder) :> ByteMemory + + override x.CopyTo stream = + use stream2 = x.AsStream() + stream2.CopyTo stream + + override _.Copy(srcOffset, dest, destOffset, count) = + check srcOffset + Marshal.Copy(NativePtr.toNativeInt addr + nativeint srcOffset, dest, destOffset, count) + + override _.ToArray() = + let res = Array.zeroCreate length + Marshal.Copy(NativePtr.toNativeInt addr, res, 0, res.Length) + res + + override _.AsStream() = + new SafeUnmanagedMemoryStream(addr, int64 length, holder) :> Stream + + override _.AsReadOnlyStream() = + new SafeUnmanagedMemoryStream(addr, int64 length, int64 length, FileAccess.Read, holder) :> Stream + +[] +type ReadOnlyByteMemory(bytes: ByteMemory) = + + member _.Item with get i = bytes.[i] + + member _.Length with get () = bytes.Length + + member _.ReadBytes(pos, count) = bytes.ReadBytes(pos, count) + + member _.ReadInt32 pos = bytes.ReadInt32 pos + + member _.ReadUInt16 pos = bytes.ReadUInt16 pos + + member _.ReadUtf8String(pos, count) = bytes.ReadUtf8String(pos, count) + + member _.Slice(pos, count) = bytes.Slice(pos, count) |> ReadOnlyByteMemory + + member _.CopyTo stream = bytes.CopyTo stream + + member _.Copy(srcOffset, dest, destOffset, count) = bytes.Copy(srcOffset, dest, destOffset, count) + + member _.ToArray() = bytes.ToArray() + + member _.AsStream() = bytes.AsReadOnlyStream() + +type ByteMemory with + + member x.AsReadOnly() = ReadOnlyByteMemory x + + static member CreateMemoryMappedFile(bytes: ReadOnlyByteMemory) = + let length = int64 bytes.Length + let mmf = + let mmf = + MemoryMappedFile.CreateNew( + null, + length, + MemoryMappedFileAccess.ReadWrite, + MemoryMappedFileOptions.None, + HandleInheritability.None) + use stream = mmf.CreateViewStream(0L, length, MemoryMappedFileAccess.ReadWrite) + bytes.CopyTo stream + mmf + + let accessor = mmf.CreateViewAccessor(0L, length, MemoryMappedFileAccess.ReadWrite) + RawByteMemory.FromUnsafePointer(accessor.SafeMemoryMappedViewHandle.DangerousGetHandle(), int length, (mmf, accessor)) + + static member FromFile(path, access, ?canShadowCopy: bool) = + let canShadowCopy = defaultArg canShadowCopy false + + let memoryMappedFileAccess = + match access with + | FileAccess.Read -> MemoryMappedFileAccess.Read + | FileAccess.Write -> MemoryMappedFileAccess.Write + | _ -> MemoryMappedFileAccess.ReadWrite + + let mmf, accessor, length = + let fileStream = File.Open(path, FileMode.Open, access, FileShare.Read) + let length = fileStream.Length + let mmf = + if canShadowCopy then + let mmf = + MemoryMappedFile.CreateNew( + null, + length, + MemoryMappedFileAccess.ReadWrite, + MemoryMappedFileOptions.None, + HandleInheritability.None) + use stream = mmf.CreateViewStream(0L, length, MemoryMappedFileAccess.ReadWrite) + fileStream.CopyTo(stream) + fileStream.Dispose() + mmf + else + MemoryMappedFile.CreateFromFile( + fileStream, + null, + length, + memoryMappedFileAccess, + HandleInheritability.None, + leaveOpen=false) + mmf, mmf.CreateViewAccessor(0L, length, memoryMappedFileAccess), length + + // Validate MMF with the access that was intended. + match access with + | FileAccess.Read when not accessor.CanRead -> invalidOp "Cannot read file" + | FileAccess.Write when not accessor.CanWrite -> invalidOp "Cannot write file" + | FileAccess.ReadWrite when not accessor.CanRead || not accessor.CanWrite -> invalidOp "Cannot read or write file" + | _ -> () + + RawByteMemory.FromUnsafePointer(accessor.SafeMemoryMappedViewHandle.DangerousGetHandle(), int length, (mmf, accessor)) + + static member FromUnsafePointer(addr, length, holder: obj) = + RawByteMemory(NativePtr.ofNativeInt addr, length, holder) :> ByteMemory + + static member FromArray(bytes, offset, length) = + ByteArrayMemory(bytes, offset, length) :> ByteMemory + + static member FromArray bytes = + ByteArrayMemory.FromArray(bytes, 0, bytes.Length) type internal ByteStream = - { bytes: byte[] + { bytes: ReadOnlyByteMemory mutable pos: int max: int } member b.ReadByte() = @@ -38,18 +319,18 @@ type internal ByteStream = b.pos <- b.pos + 1 res member b.ReadUtf8String n = - let res = System.Text.Encoding.UTF8.GetString(b.bytes,b.pos,n) + let res = b.bytes.ReadUtf8String(b.pos,n) b.pos <- b.pos + n; res - static member FromBytes (b:byte[],n,len) = + static member FromBytes (b: ReadOnlyByteMemory,n,len) = if n < 0 || (n+len) > b.Length then failwith "FromBytes" { bytes = b; pos = n; max = n+len } member b.ReadBytes n = if b.pos + n > b.max then failwith "ReadBytes: end of stream" - let res = Bytes.sub b.bytes b.pos n + let res = b.bytes.Slice(b.pos, n) b.pos <- b.pos + n - res + res member b.Position = b.pos #if LAZY_UNPICKLE @@ -108,6 +389,13 @@ type internal ByteBuffer = Bytes.blit i 0 buf.bbArray buf.bbCurrent n buf.bbCurrent <- newSize + member buf.EmitByteMemory (i:ReadOnlyByteMemory) = + let n = i.Length + let newSize = buf.bbCurrent + n + buf.Ensure newSize + i.Copy(0, buf.bbArray, buf.bbCurrent, n) + buf.bbCurrent <- newSize + member buf.EmitInt32AsUInt16 n = let newSize = buf.bbCurrent + 2 buf.Ensure newSize diff --git a/src/absil/bytes.fsi b/src/absil/bytes.fsi index c611e80c77..46b30b6c5a 100755 --- a/src/absil/bytes.fsi +++ b/src/absil/bytes.fsi @@ -3,6 +3,7 @@ /// Blobs of bytes, cross-compiling namespace FSharp.Compiler.AbstractIL.Internal +open System.IO open Internal.Utilities open FSharp.Compiler.AbstractIL @@ -22,6 +23,85 @@ module internal Bytes = val stringAsUnicodeNullTerminated: string -> byte[] val stringAsUtf8NullTerminated: string -> byte[] +/// May be backed by managed or unmanaged memory, or memory mapped file. +[] +type internal ByteMemory = + + abstract Item: int -> byte with get + + abstract Length: int + + abstract ReadBytes: pos: int * count: int -> byte[] + + abstract ReadInt32: pos: int -> int + + abstract ReadUInt16: pos: int -> uint16 + + abstract ReadUtf8String: pos: int * count: int -> string + + abstract Slice: pos: int * count: int -> ByteMemory + + abstract CopyTo: Stream -> unit + + abstract Copy: srcOffset: int * dest: byte[] * destOffset: int * count: int -> unit + + abstract ToArray: unit -> byte[] + + /// Get a stream representation of the backing memory. + /// Disposing this will not free up any of the backing memory. + abstract AsStream: unit -> Stream + + /// Get a stream representation of the backing memory. + /// Disposing this will not free up any of the backing memory. + /// Stream cannot be written to. + abstract AsReadOnlyStream: unit -> Stream + +[] +type internal ReadOnlyByteMemory = + + new: ByteMemory -> ReadOnlyByteMemory + + member Item: int -> byte with get + + member Length: int + + member ReadBytes: pos: int * count: int -> byte[] + + member ReadInt32: pos: int -> int + + member ReadUInt16: pos: int -> uint16 + + member ReadUtf8String: pos: int * count: int -> string + + member Slice: pos: int * count: int -> ReadOnlyByteMemory + + member CopyTo: Stream -> unit + + member Copy: srcOffset: int * dest: byte[] * destOffset: int * count: int -> unit + + member ToArray: unit -> byte[] + + member AsStream: unit -> Stream + +type ByteMemory with + + member AsReadOnly: unit -> ReadOnlyByteMemory + + /// Create another ByteMemory object that has a backing memory mapped file based on another ByteMemory's contents. + static member CreateMemoryMappedFile: ReadOnlyByteMemory -> ByteMemory + + /// Creates a ByteMemory object that has a backing memory mapped file from a file on-disk. + static member FromFile: path: string * FileAccess * ?canShadowCopy: bool -> ByteMemory + + /// Creates a ByteMemory object that is backed by a raw pointer. + /// Use with care. + static member FromUnsafePointer: addr: nativeint * length: int * holder: obj -> ByteMemory + + /// Creates a ByteMemory object that is backed by a byte array with the specified offset and length. + static member FromArray: bytes: byte[] * offset: int * length: int -> ByteMemory + + /// Creates a ByteMemory object that is backed by a byte array. + static member FromArray: bytes: byte[] -> ByteMemory /// Imperative buffers and streams of byte[] [] @@ -31,6 +111,7 @@ type internal ByteBuffer = member EmitIntsAsBytes : int[] -> unit member EmitByte : byte -> unit member EmitBytes : byte[] -> unit + member EmitByteMemory : ReadOnlyByteMemory -> unit member EmitInt32 : int32 -> unit member EmitInt64 : int64 -> unit member FixupInt32 : pos: int -> value: int32 -> unit @@ -44,10 +125,10 @@ type internal ByteBuffer = [] type internal ByteStream = member ReadByte : unit -> byte - member ReadBytes : int -> byte[] + member ReadBytes : int -> ReadOnlyByteMemory member ReadUtf8String : int -> string member Position : int - static member FromBytes : byte[] * start:int * length:int -> ByteStream + static member FromBytes : ReadOnlyByteMemory * start:int * length:int -> ByteStream #if LAZY_UNPICKLE member CloneAndSeek : int -> ByteStream diff --git a/src/absil/il.fs b/src/absil/il.fs index e734af8bd9..ca9bfb808c 100644 --- a/src/absil/il.fs +++ b/src/absil/il.fs @@ -66,10 +66,6 @@ type PrimaryAssembly = | Mscorlib -> "mscorlib" | System_Runtime -> "System.Runtime" | NetStandard -> "netstandard" - static member IsSomePrimaryAssembly n = - n = PrimaryAssembly.Mscorlib.Name - || n = PrimaryAssembly.System_Runtime.Name - || n = PrimaryAssembly.NetStandard.Name // -------------------------------------------------------------------- // Utilities: type names @@ -373,6 +369,7 @@ let isMscorlib data = [] type ILAssemblyRef(data) = let uniqueStamp = AssemblyRefUniqueStampGenerator.Encode data + let uniqueIgnoringVersionStamp = AssemblyRefUniqueStampGenerator.Encode { data with assemRefVersion = None } member x.Name=data.assemRefName @@ -388,6 +385,11 @@ type ILAssemblyRef(data) = member x.UniqueStamp=uniqueStamp + member x.UniqueIgnoringVersionStamp=uniqueIgnoringVersionStamp + + member x.EqualsIgnoringVersion (aref: ILAssemblyRef) = + aref.UniqueIgnoringVersionStamp = uniqueIgnoringVersionStamp + override x.GetHashCode() = uniqueStamp override x.Equals yobj = ((yobj :?> ILAssemblyRef).UniqueStamp = uniqueStamp) @@ -490,22 +492,16 @@ type ILScopeRef = | Local | Module of ILModuleRef | Assembly of ILAssemblyRef + | PrimaryAssembly member x.IsLocalRef = match x with ILScopeRef.Local -> true | _ -> false - member x.IsModuleRef = match x with ILScopeRef.Module _ -> true | _ -> false - - member x.IsAssemblyRef= match x with ILScopeRef.Assembly _ -> true | _ -> false - - member x.ModuleRef = match x with ILScopeRef.Module x -> x | _ -> failwith "not a module reference" - - member x.AssemblyRef = match x with ILScopeRef.Assembly x -> x | _ -> failwith "not an assembly reference" - member x.QualifiedName = match x with | ILScopeRef.Local -> "" | ILScopeRef.Module mref -> "module "+mref.Name | ILScopeRef.Assembly aref -> aref.QualifiedName + | ILScopeRef.PrimaryAssembly -> "" type ILArrayBound = int32 option @@ -2201,6 +2197,11 @@ and ILExportedTypesAndForwarders = member x.AsList = let (ILExportedTypesAndForwarders ltab) = x in Map.foldBack (fun _x y r -> y :: r) (ltab.Force()) [] + member x.TryFindByName nm = + match x with + | ILExportedTypesAndForwarders ltab -> + ltab.Value.TryFind nm + [] type ILResourceAccess = | Public @@ -2208,8 +2209,7 @@ type ILResourceAccess = [] type ILResourceLocation = - | LocalIn of string * int * int - | LocalOut of byte[] + | Local of ReadOnlyByteMemory | File of ILModuleRef * int32 | Assembly of ILAssemblyRef @@ -2223,9 +2223,7 @@ type ILResource = /// Read the bytes from a resource local to an assembly member r.GetBytes() = match r.Location with - | ILResourceLocation.LocalIn (file, start, len) -> - File.ReadBinaryChunk(file, start, len) - | ILResourceLocation.LocalOut bytes -> bytes + | ILResourceLocation.Local bytes -> bytes | _ -> failwith "GetBytes" member x.CustomAttrs = x.CustomAttrsStored.GetCustomAttrs x.MetadataIndex @@ -2604,51 +2602,47 @@ let tname_IntPtr = "System.IntPtr" [] let tname_UIntPtr = "System.UIntPtr" +[] +let tname_TypedReference = "System.TypedReference" + [] -// This data structure needs an entirely delayed implementation -type ILGlobals(primaryScopeRef) = - - let m_mkSysILTypeRef nm = mkILTyRef (primaryScopeRef, nm) - - let m_typ_Object = mkILBoxedType (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Object)) - let m_typ_String = mkILBoxedType (mkILNonGenericTySpec (m_mkSysILTypeRef tname_String)) - let m_typ_Array = mkILBoxedType (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Array)) - let m_typ_Type = mkILBoxedType (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Type)) - let m_typ_SByte = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_SByte)) - let m_typ_Int16 = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Int16)) - let m_typ_Int32 = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Int32)) - let m_typ_Int64 = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Int64)) - let m_typ_Byte = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Byte)) - let m_typ_UInt16 = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_UInt16)) - let m_typ_UInt32 = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_UInt32)) - let m_typ_UInt64 = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_UInt64)) - let m_typ_Single = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Single)) - let m_typ_Double = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Double)) - let m_typ_Bool = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Bool)) - let m_typ_Char = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_Char)) - let m_typ_IntPtr = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_IntPtr)) - let m_typ_UIntPtr = ILType.Value (mkILNonGenericTySpec (m_mkSysILTypeRef tname_UIntPtr)) - - member x.primaryAssemblyScopeRef = m_typ_Object.TypeRef.Scope - member x.primaryAssemblyName = m_typ_Object.TypeRef.Scope.AssemblyRef.Name - member x.typ_Object = m_typ_Object - member x.typ_String = m_typ_String - member x.typ_Array = m_typ_Array - member x.typ_Type = m_typ_Type - member x.typ_IntPtr = m_typ_IntPtr - member x.typ_UIntPtr = m_typ_UIntPtr - member x.typ_Byte = m_typ_Byte - member x.typ_Int16 = m_typ_Int16 - member x.typ_Int32 = m_typ_Int32 - member x.typ_Int64 = m_typ_Int64 - member x.typ_SByte = m_typ_SByte - member x.typ_UInt16 = m_typ_UInt16 - member x.typ_UInt32 = m_typ_UInt32 - member x.typ_UInt64 = m_typ_UInt64 - member x.typ_Single = m_typ_Single - member x.typ_Double = m_typ_Double - member x.typ_Bool = m_typ_Bool - member x.typ_Char = m_typ_Char +type ILGlobals(primaryScopeRef: ILScopeRef, assembliesThatForwardToPrimaryAssembly: ILAssemblyRef list) = + + let assembliesThatForwardToPrimaryAssembly = Array.ofList assembliesThatForwardToPrimaryAssembly + + let mkSysILTypeRef nm = mkILTyRef (primaryScopeRef, nm) + + member _.primaryAssemblyScopeRef = primaryScopeRef + member x.primaryAssemblyRef = + match primaryScopeRef with + | ILScopeRef.Assembly aref -> aref + | _ -> failwith "Invalid primary assembly" + member x.primaryAssemblyName = x.primaryAssemblyRef.Name + + member val typ_Object = mkILBoxedType (mkILNonGenericTySpec (mkSysILTypeRef tname_Object)) + member val typ_String = mkILBoxedType (mkILNonGenericTySpec (mkSysILTypeRef tname_String)) + member val typ_Array = mkILBoxedType (mkILNonGenericTySpec (mkSysILTypeRef tname_Array)) + member val typ_Type = mkILBoxedType (mkILNonGenericTySpec (mkSysILTypeRef tname_Type)) + member val typ_SByte = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_SByte)) + member val typ_Int16 = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Int16)) + member val typ_Int32 = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Int32)) + member val typ_Int64 = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Int64)) + member val typ_Byte = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Byte)) + member val typ_UInt16 = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_UInt16)) + member val typ_UInt32 = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_UInt32)) + member val typ_UInt64 = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_UInt64)) + member val typ_Single = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Single)) + member val typ_Double = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Double)) + member val typ_Bool = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Bool)) + member val typ_Char = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_Char)) + member val typ_IntPtr = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_IntPtr)) + member val typ_UIntPtr = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_UIntPtr)) + member val typ_TypedReference = ILType.Value (mkILNonGenericTySpec (mkSysILTypeRef tname_TypedReference)) + + member x.IsPossiblePrimaryAssemblyRef(aref: ILAssemblyRef) = + aref.EqualsIgnoringVersion x.primaryAssemblyRef || + assembliesThatForwardToPrimaryAssembly + |> Array.exists aref.EqualsIgnoringVersion /// For debugging [] @@ -2656,7 +2650,7 @@ type ILGlobals(primaryScopeRef) = override x.ToString() = "" -let mkILGlobals primaryScopeRef = ILGlobals primaryScopeRef +let mkILGlobals (primaryScopeRef, assembliesThatForwardToPrimaryAssembly) = ILGlobals (primaryScopeRef, assembliesThatForwardToPrimaryAssembly) let mkNormalCall mspec = I_call (Normalcall, mspec, None) @@ -2701,54 +2695,55 @@ let isILBoxedTy = function ILType.Boxed _ -> true | _ -> false let isILValueTy = function ILType.Value _ -> true | _ -> false -let isPrimaryAssemblyTySpec (tspec: ILTypeSpec) n = +let isBuiltInTySpec (ilg: ILGlobals) (tspec: ILTypeSpec) n = let tref = tspec.TypeRef let scoref = tref.Scope - (tref.Name = n) && - match scoref with - | ILScopeRef.Assembly n -> PrimaryAssembly.IsSomePrimaryAssembly n.Name - | ILScopeRef.Module _ -> false - | ILScopeRef.Local -> true + tref.Name = n && + (match scoref with + | ILScopeRef.Local + | ILScopeRef.Module _ -> false + | ILScopeRef.Assembly aref -> ilg.IsPossiblePrimaryAssemblyRef aref + | ILScopeRef.PrimaryAssembly -> true) -let isILBoxedPrimaryAssemblyTy (ty: ILType) n = - isILBoxedTy ty && isPrimaryAssemblyTySpec ty.TypeSpec n +let isILBoxedBuiltInTy ilg (ty: ILType) n = + isILBoxedTy ty && isBuiltInTySpec ilg ty.TypeSpec n -let isILValuePrimaryAssemblyTy (ty: ILType) n = - isILValueTy ty && isPrimaryAssemblyTySpec ty.TypeSpec n +let isILValueBuiltInTy ilg (ty: ILType) n = + isILValueTy ty && isBuiltInTySpec ilg ty.TypeSpec n -let isILObjectTy ty = isILBoxedPrimaryAssemblyTy ty tname_Object +let isILObjectTy ilg ty = isILBoxedBuiltInTy ilg ty tname_Object -let isILStringTy ty = isILBoxedPrimaryAssemblyTy ty tname_String +let isILStringTy ilg ty = isILBoxedBuiltInTy ilg ty tname_String -let isILTypedReferenceTy ty = isILValuePrimaryAssemblyTy ty "System.TypedReference" +let isILTypedReferenceTy ilg ty = isILValueBuiltInTy ilg ty tname_TypedReference -let isILSByteTy ty = isILValuePrimaryAssemblyTy ty tname_SByte +let isILSByteTy ilg ty = isILValueBuiltInTy ilg ty tname_SByte -let isILByteTy ty = isILValuePrimaryAssemblyTy ty tname_Byte +let isILByteTy ilg ty = isILValueBuiltInTy ilg ty tname_Byte -let isILInt16Ty ty = isILValuePrimaryAssemblyTy ty tname_Int16 +let isILInt16Ty ilg ty = isILValueBuiltInTy ilg ty tname_Int16 -let isILUInt16Ty ty = isILValuePrimaryAssemblyTy ty tname_UInt16 +let isILUInt16Ty ilg ty = isILValueBuiltInTy ilg ty tname_UInt16 -let isILInt32Ty ty = isILValuePrimaryAssemblyTy ty tname_Int32 +let isILInt32Ty ilg ty = isILValueBuiltInTy ilg ty tname_Int32 -let isILUInt32Ty ty = isILValuePrimaryAssemblyTy ty tname_UInt32 +let isILUInt32Ty ilg ty = isILValueBuiltInTy ilg ty tname_UInt32 -let isILInt64Ty ty = isILValuePrimaryAssemblyTy ty tname_Int64 +let isILInt64Ty ilg ty = isILValueBuiltInTy ilg ty tname_Int64 -let isILUInt64Ty ty = isILValuePrimaryAssemblyTy ty tname_UInt64 +let isILUInt64Ty ilg ty = isILValueBuiltInTy ilg ty tname_UInt64 -let isILIntPtrTy ty = isILValuePrimaryAssemblyTy ty tname_IntPtr +let isILIntPtrTy ilg ty = isILValueBuiltInTy ilg ty tname_IntPtr -let isILUIntPtrTy ty = isILValuePrimaryAssemblyTy ty tname_UIntPtr +let isILUIntPtrTy ilg ty = isILValueBuiltInTy ilg ty tname_UIntPtr -let isILBoolTy ty = isILValuePrimaryAssemblyTy ty tname_Bool +let isILBoolTy ilg ty = isILValueBuiltInTy ilg ty tname_Bool -let isILCharTy ty = isILValuePrimaryAssemblyTy ty tname_Char +let isILCharTy ilg ty = isILValueBuiltInTy ilg ty tname_Char -let isILSingleTy ty = isILValuePrimaryAssemblyTy ty tname_Single +let isILSingleTy ilg ty = isILValueBuiltInTy ilg ty tname_Single -let isILDoubleTy ty = isILValuePrimaryAssemblyTy ty tname_Double +let isILDoubleTy ilg ty = isILValueBuiltInTy ilg ty tname_Double // -------------------------------------------------------------------- // Rescoping @@ -3718,7 +3713,7 @@ let getCustomAttrData (ilg: ILGlobals) cattr = let MscorlibScopeRef = ILScopeRef.Assembly (ILAssemblyRef.Create ("mscorlib", None, Some ecmaPublicKey, true, None, None)) -let EcmaMscorlibILGlobals = mkILGlobals MscorlibScopeRef +let EcmaMscorlibILGlobals = mkILGlobals (MscorlibScopeRef, []) // ILSecurityDecl is a 'blob' having the following format: // - A byte containing a period (.). @@ -4014,7 +4009,8 @@ type ILReferences = ModuleReferences: ILModuleRef list } type ILReferencesAccumulator = - { refsA: HashSet + { ilg: ILGlobals + refsA: HashSet refsM: HashSet } let emptyILRefs = @@ -4031,6 +4027,7 @@ let refs_of_scoref s x = | ILScopeRef.Local -> () | ILScopeRef.Assembly assemblyRef -> refs_of_assemblyRef s assemblyRef | ILScopeRef.Module modref -> refs_of_modref s modref + | ILScopeRef.PrimaryAssembly -> refs_of_assemblyRef s s.ilg.primaryAssemblyRef let refs_of_tref s (x: ILTypeRef) = refs_of_scoref s x.Scope @@ -4208,8 +4205,7 @@ and refs_of_exported_types s (tab: ILExportedTypesAndForwarders) = List.iter (re and refs_of_resource_where s x = match x with - | ILResourceLocation.LocalIn _ -> () - | ILResourceLocation.LocalOut _ -> () + | ILResourceLocation.Local _ -> () | ILResourceLocation.File (mref, _) -> refs_of_modref s mref | ILResourceLocation.Assembly aref -> refs_of_assemblyRef s aref @@ -4228,9 +4224,10 @@ and refs_of_manifest s (m: ILAssemblyManifest) = refs_of_custom_attrs s m.CustomAttrs refs_of_exported_types s m.ExportedTypes -let computeILRefs modul = +let computeILRefs ilg modul = let s = - { refsA = HashSet<_>(HashIdentity.Structural) + { ilg = ilg + refsA = HashSet<_>(HashIdentity.Structural) refsM = HashSet<_>(HashIdentity.Structural) } refs_of_modul s modul diff --git a/src/absil/il.fsi b/src/absil/il.fsi index e981e8e8b5..506878e1d6 100755 --- a/src/absil/il.fsi +++ b/src/absil/il.fsi @@ -3,6 +3,7 @@ /// The "unlinked" view of .NET metadata and code. Central to the Abstract IL library module public FSharp.Compiler.AbstractIL.IL +open FSharp.Compiler.AbstractIL.Internal open System.Collections.Generic open System.Reflection @@ -78,6 +79,9 @@ type ILAssemblyRef = member Retargetable: bool member Version: ILVersionInfo option member Locale: string option + + member EqualsIgnoringVersion: ILAssemblyRef -> bool + interface System.IComparable [] @@ -96,12 +100,10 @@ type ILScopeRef = /// A reference to a type in a module in the same assembly | Module of ILModuleRef /// A reference to a type in another assembly - | Assembly of ILAssemblyRef + | Assembly of ILAssemblyRef + /// A reference to a type in the primary assembly + | PrimaryAssembly member IsLocalRef: bool - member IsModuleRef: bool - member IsAssemblyRef: bool - member ModuleRef: ILModuleRef - member AssemblyRef: ILAssemblyRef member QualifiedName: string // Calling conventions. @@ -1396,7 +1398,8 @@ type ILExportedTypeOrForwarder = [] [] type ILExportedTypesAndForwarders = - member AsList: ILExportedTypeOrForwarder list + member AsList: ILExportedTypeOrForwarder list + member TryFindByName: string -> ILExportedTypeOrForwarder option [] type ILResourceAccess = @@ -1405,11 +1408,9 @@ type ILResourceAccess = [] type ILResourceLocation = - /// Represents a manifest resource that can be read from within the PE file - | LocalIn of string * int * int - - /// Represents a manifest resource that is due to be written to the output PE file - | LocalOut of byte[] + internal + /// Represents a manifest resource that can be read or written to a PE file + | Local of ReadOnlyByteMemory /// Represents a manifest resource in an associated file | File of ILModuleRef * int32 @@ -1429,7 +1430,7 @@ type ILResource = MetadataIndex: int32 } /// Read the bytes from a resource local to an assembly. Will fail for non-local resources. - member GetBytes : unit -> byte[] + member internal GetBytes : unit -> ReadOnlyByteMemory member CustomAttrs: ILAttributes @@ -1576,6 +1577,7 @@ val isTypeNameForGlobalFunctions: string -> bool [] type ILGlobals = member primaryAssemblyScopeRef: ILScopeRef + member primaryAssemblyRef: ILAssemblyRef member primaryAssemblyName: string member typ_Object: ILType member typ_String: ILType @@ -1595,10 +1597,20 @@ type ILGlobals = member typ_Double: ILType member typ_Bool: ILType member typ_Char: ILType - + member typ_TypedReference: ILType + + /// Is the given assembly possibly a primary assembly? + /// In practice, a primary assembly is an assembly that contains the System.Object type definition + /// and has no referenced assemblies. + /// However, we must consider assemblies that forward the System.Object type definition + /// to be possible primary assemblies. + /// Therefore, this will return true if the given assembly is the real primary assembly or an assembly that forwards + /// the System.Object type definition. + /// Assembly equivalency ignores the version here. + member IsPossiblePrimaryAssemblyRef: ILAssemblyRef -> bool /// Build the table of commonly used references given functions to find types in system assemblies -val mkILGlobals: ILScopeRef -> ILGlobals +val mkILGlobals: primaryScopeRef: ILScopeRef * assembliesThatForwardToPrimaryAssembly: ILAssemblyRef list -> ILGlobals val EcmaMscorlibILGlobals: ILGlobals @@ -1949,23 +1961,23 @@ val instILType: ILGenericArgs -> ILType -> ILType val ecmaPublicKey: PublicKey /// Discriminating different important built-in types. -val isILObjectTy: ILType -> bool -val isILStringTy: ILType -> bool -val isILSByteTy: ILType -> bool -val isILByteTy: ILType -> bool -val isILInt16Ty: ILType -> bool -val isILUInt16Ty: ILType -> bool -val isILInt32Ty: ILType -> bool -val isILUInt32Ty: ILType -> bool -val isILInt64Ty: ILType -> bool -val isILUInt64Ty: ILType -> bool -val isILIntPtrTy: ILType -> bool -val isILUIntPtrTy: ILType -> bool -val isILBoolTy: ILType -> bool -val isILCharTy: ILType -> bool -val isILTypedReferenceTy: ILType -> bool -val isILDoubleTy: ILType -> bool -val isILSingleTy: ILType -> bool +val isILObjectTy: ILGlobals -> ILType -> bool +val isILStringTy: ILGlobals -> ILType -> bool +val isILSByteTy: ILGlobals -> ILType -> bool +val isILByteTy: ILGlobals -> ILType -> bool +val isILInt16Ty: ILGlobals -> ILType -> bool +val isILUInt16Ty: ILGlobals -> ILType -> bool +val isILInt32Ty: ILGlobals -> ILType -> bool +val isILUInt32Ty: ILGlobals -> ILType -> bool +val isILInt64Ty: ILGlobals -> ILType -> bool +val isILUInt64Ty: ILGlobals -> ILType -> bool +val isILIntPtrTy: ILGlobals -> ILType -> bool +val isILUIntPtrTy: ILGlobals -> ILType -> bool +val isILBoolTy: ILGlobals -> ILType -> bool +val isILCharTy: ILGlobals -> ILType -> bool +val isILTypedReferenceTy: ILGlobals -> ILType -> bool +val isILDoubleTy: ILGlobals -> ILType -> bool +val isILSingleTy: ILGlobals -> ILType -> bool val sha1HashInt64 : byte[] -> int64 /// Get a public key token from a public key. @@ -2007,6 +2019,6 @@ type ILReferences = ModuleReferences: ILModuleRef list } /// Find the full set of assemblies referenced by a module. -val computeILRefs: ILModuleDef -> ILReferences +val computeILRefs: ILGlobals -> ILModuleDef -> ILReferences val emptyILRefs: ILReferences diff --git a/src/absil/ilascii.fs b/src/absil/ilascii.fs index 6c89ca69b5..e5b7782ba7 100755 --- a/src/absil/ilascii.fs +++ b/src/absil/ilascii.fs @@ -9,7 +9,7 @@ open FSharp.Compiler.AbstractIL.IL // set to the proper value at CompileOps.fs (BuildFrameworkTcImports) // Only relevant when compiling FSharp.Core.dll -let parseILGlobals = ref EcmaMscorlibILGlobals +let mutable parseILGlobals = EcmaMscorlibILGlobals /// Table of parsing and pretty printing data for instructions. let noArgInstrs = @@ -226,12 +226,6 @@ let DoubleInstrs : Lazy> = ["ldc";"r8"], (fun x -> (AI_ldc (DT_R8, x))) ] -/// Table of parsing and pretty printing data for instructions. -let MethodSpecInstrs : Lazy> = - lazy [ - ["call"], (fun (mspec, y) -> I_call (Normalcall, mspec, y)) - ] - /// Table of parsing and pretty printing data for instructions. let StringInstrs : Lazy> = lazy [ diff --git a/src/absil/ilascii.fsi b/src/absil/ilascii.fsi index 1b94bbed22..67a5c9eb4b 100755 --- a/src/absil/ilascii.fsi +++ b/src/absil/ilascii.fsi @@ -14,7 +14,7 @@ open FSharp.Compiler.AbstractIL.IL // IL Parser state - must be initialized before parsing a module // -------------------------------------------------------------------- -val parseILGlobals: ILGlobals ref +val mutable parseILGlobals: ILGlobals // -------------------------------------------------------------------- // IL Lexer and pretty-printer tables @@ -41,7 +41,6 @@ val Int64Instrs: LazyInstrTable val Int32Instrs: LazyInstrTable val Int32Int32Instrs: LazyInstrTable val DoubleInstrs: LazyInstrTable -val MethodSpecInstrs: LazyInstrTable val StringInstrs: LazyInstrTable val TokenInstrs: LazyInstrTable val TypeInstrs: LazyInstrTable diff --git a/src/absil/ildiag.fs b/src/absil/ildiag.fs index 1cd20ad875..d43bdf8dca 100755 --- a/src/absil/ildiag.fs +++ b/src/absil/ildiag.fs @@ -5,18 +5,18 @@ module internal FSharp.Compiler.AbstractIL.Diagnostics -let diagnosticsLog = ref (Some stdout) +let mutable diagnosticsLog = Some stdout -let setDiagnosticsChannel s = diagnosticsLog := s +let setDiagnosticsChannel s = diagnosticsLog <- s -let dflushn () = match !diagnosticsLog with None -> () | Some d -> d.WriteLine(); d.Flush() -let dflush () = match !diagnosticsLog with None -> () | Some d -> d.Flush() +let dflushn () = match diagnosticsLog with None -> () | Some d -> d.WriteLine(); d.Flush() +let dflush () = match diagnosticsLog with None -> () | Some d -> d.Flush() let dprintn (s:string) = - match !diagnosticsLog with None -> () | Some d -> d.Write s; d.Write "\n"; dflush() + match diagnosticsLog with None -> () | Some d -> d.Write s; d.Write "\n"; dflush() let dprintf (fmt: Format<_,_,_,_>) = - Printf.kfprintf dflush (match !diagnosticsLog with None -> System.IO.TextWriter.Null | Some d -> d) fmt + Printf.kfprintf dflush (match diagnosticsLog with None -> System.IO.TextWriter.Null | Some d -> d) fmt let dprintfn (fmt: Format<_,_,_,_>) = - Printf.kfprintf dflushn (match !diagnosticsLog with None -> System.IO.TextWriter.Null | Some d -> d) fmt + Printf.kfprintf dflushn (match diagnosticsLog with None -> System.IO.TextWriter.Null | Some d -> d) fmt diff --git a/src/absil/illex.fsl b/src/absil/illex.fsl index 849ebd17b8..149cd087b9 100755 --- a/src/absil/illex.fsl +++ b/src/absil/illex.fsl @@ -70,7 +70,6 @@ let kwdInstrTable = addTable (fun i -> INSTR_I32_I32 i) Int32Int32Instrs; addTable (fun i -> INSTR_I8 i) Int64Instrs; addTable (fun i -> INSTR_R i) DoubleInstrs; - addTable (fun i -> INSTR_METHOD i) MethodSpecInstrs; addTable (fun i -> INSTR_TYPE i) TypeInstrs; addTable (fun i -> INSTR_INT_TYPE i) IntTypeInstrs; addTable (fun i -> INSTR_VALUETYPE i) ValueTypeInstrs; diff --git a/src/absil/illib.fs b/src/absil/illib.fs index 70e67a0815..33e0566a6c 100755 --- a/src/absil/illib.fs +++ b/src/absil/illib.fs @@ -40,22 +40,22 @@ let inline nonNull msg x = if isNull x then failwith ("null: " + msg) else x let inline (===) x y = LanguagePrimitives.PhysicalEquality x y /// Per the docs the threshold for the Large Object Heap is 85000 bytes: https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/large-object-heap#how-an-object-ends-up-on-the-large-object-heap-and-how-gc-handles-them -/// We set the limit to slightly under that to allow for some 'slop' -let LOH_SIZE_THRESHOLD_BYTES = 84_900 +/// We set the limit to be 80k to account for larger pointer sizes for when F# is running 64-bit. +let LOH_SIZE_THRESHOLD_BYTES = 80_000 //--------------------------------------------------------------------- // Library: ReportTime //--------------------------------------------------------------------- let reportTime = - let tFirst = ref None - let tPrev = ref None + let mutable tFirst =None + let mutable tPrev = None fun showTimes descr -> if showTimes then let t = Process.GetCurrentProcess().UserProcessorTime.TotalSeconds - let prev = match !tPrev with None -> 0.0 | Some t -> t - let first = match !tFirst with None -> (tFirst := Some t; t) | Some t -> t + let prev = match tPrev with None -> 0.0 | Some t -> t + let first = match tFirst with None -> (tFirst <- Some t; t) | Some t -> t printf "ilwrite: TIME %10.3f (total) %10.3f (delta) - %s\n" (t - first) (t - prev) descr - tPrev := Some t + tPrev <- Some t //------------------------------------------------------------------------- // Library: projections @@ -573,10 +573,10 @@ module String = let getLines (str: string) = use reader = new StringReader(str) [| - let line = ref (reader.ReadLine()) - while not (isNull !line) do - yield !line - line := reader.ReadLine() + let mutable line = reader.ReadLine() + while not (isNull line) do + yield line + line <- reader.ReadLine() if str.EndsWithOrdinal("\n") then // last trailing space not returned // http://stackoverflow.com/questions/19365404/stringreader-omits-trailing-linebreak @@ -1361,7 +1361,45 @@ module Shim = directory.Contains("packages\\") || directory.Contains("lib/mono/") - let mutable FileSystem = DefaultFileSystem() :> IFileSystem + let mutable FileSystem = DefaultFileSystem() :> IFileSystem + + // The choice of 60 retries times 50 ms is not arbitrary. The NTFS FILETIME structure + // uses 2 second resolution for LastWriteTime. We retry long enough to surpass this threshold + // plus 1 second. Once past the threshold the incremental builder will be able to retry asynchronously based + // on plain old timestamp checking. + // + // The sleep time of 50ms is chosen so that we can respond to the user more quickly for Intellisense operations. + // + // This is not run on the UI thread for VS but it is on a thread that must be stopped before Intellisense + // can return any result except for pending. + let private retryDelayMilliseconds = 50 + let private numRetries = 60 + + let private getReader (filename, codePage: int option, retryLocked: bool) = + // Retry multiple times since other processes may be writing to this file. + let rec getSource retryNumber = + try + // Use the .NET functionality to auto-detect the unicode encoding + let stream = FileSystem.FileStreamReadShim(filename) + match codePage with + | None -> new StreamReader(stream,true) + | Some n -> new StreamReader(stream,System.Text.Encoding.GetEncoding(n)) + with + // We can get here if the file is locked--like when VS is saving a file--we don't have direct + // access to the HRESULT to see that this is EONOACCESS. + | :? System.IO.IOException as err when retryLocked && err.GetType() = typeof -> + // This second check is to make sure the exception is exactly IOException and none of these for example: + // DirectoryNotFoundException + // EndOfStreamException + // FileNotFoundException + // FileLoadException + // PathTooLongException + if retryNumber < numRetries then + System.Threading.Thread.Sleep (retryDelayMilliseconds) + getSource (retryNumber + 1) + else + reraise() + getSource 0 type File with @@ -1374,3 +1412,6 @@ module Shim = n <- n + stream.Read(buffer, n, len-n) buffer + static member OpenReaderAndRetry (filename, codepage, retryLocked) = + getReader (filename, codepage, retryLocked) + diff --git a/src/absil/ilpars.fsy b/src/absil/ilpars.fsy index 3f812caeb4..e831677e50 100755 --- a/src/absil/ilpars.fsy +++ b/src/absil/ilpars.fsy @@ -20,21 +20,6 @@ let pfailwith s = stderr.WriteLine ("*** error: "+s); raise Parsing.RecoverableParseError -/// vararg sentinels -type SigArg = SigArg of (string option * ILType) | Sentinel - -let decodeVarargs args = - let rec normals = function - | [] -> ([],None) - | Sentinel :: t -> ([],Some (varargs t)) - | SigArg (_,p) :: t -> let (n,r) = normals t in (p :: n, r) - and varargs = function - | [] -> [] - | SigArg (_,ty) :: t -> let l = varargs t in ty :: l - | Sentinel :: t -> pfailwith "two sentinels in vararg call" - normals args - - type ResolvedAtMethodSpecScope<'T> = ResolvedAtMethodSpecScope of (ILGenericParameterDefs -> 'T) @@ -43,17 +28,12 @@ let resolveMethodSpecScope (ResolvedAtMethodSpecScope f) x = f x let resolveMethodSpecScopeThen (ResolvedAtMethodSpecScope f) g = ResolvedAtMethodSpecScope (fun x -> resolveMethodSpecScope (g(f x)) x) -let resolveFormalMethodSpecScope tspeco obj = - match tspeco with - None -> resolveMethodSpecScope obj mkILEmptyGenericParams - | Some (tspec:ILTypeSpec) -> resolveMethodSpecScope obj (mkILFormalTypars tspec.GenericArgs) - let resolveCurrentMethodSpecScope obj = resolveMethodSpecScope obj mkILEmptyGenericParams let findSystemRuntimeAssemblyRef() = - match (!parseILGlobals).primaryAssemblyScopeRef with + match parseILGlobals.primaryAssemblyScopeRef with | ILScopeRef.Assembly aref -> aref | _ -> pfailwith "systemRuntimeScopeRef not set to valid assembly reference in parseILGlobals" @@ -75,7 +55,6 @@ let findAssemblyRef nm = %token INSTR_I32_I32 %token INSTR_I8 %token INSTR_R -%token INSTR_METHOD %token INSTR_NONE %token INSTR_STRING %token INSTR_TOK @@ -163,18 +142,6 @@ instrs2: { $1 :: $2 } | { [] } - - -methodSpecMaybeArrayMethod: - callConv typ typSpec DCOLON methodName opt_actual_tyargs LPAREN sigArgs0 RPAREN - { let callee_class_typ : ILType = resolveCurrentMethodSpecScope $3 - let gscope = (if isILArrTy callee_class_typ then None else Some callee_class_typ.TypeSpec) - let argtys_n_varargs = resolveFormalMethodSpecScope gscope $8 - let (argtys,varargs) = decodeVarargs argtys_n_varargs - let minst = resolveCurrentMethodSpecScope $6 - let callee_retty = resolveFormalMethodSpecScope gscope $2 - (callee_class_typ, $1, $5, argtys, callee_retty, minst), varargs } - instr: INSTR_NONE { ($1 ()) } @@ -188,19 +155,6 @@ instr: { ($1 (ILConst.R8 $2)) } | INSTR_R int64 { ($1 (ILConst.R8 (float $2))) } - | INSTR_METHOD methodSpecMaybeArrayMethod - { - let ((encl_typ, _cc, nm, _argtys, _retty, _minst) as data),varargs = $2 - if isILArrTy encl_typ then - let (shape,ty) = destILArrTy encl_typ - match nm with - | "Get" -> I_ldelem_any(shape,ty) - | "Set" -> I_stelem_any(shape,ty) - | "Address" -> I_ldelema(NormalAddress,false,shape,ty) - | ".ctor" -> I_newarr(shape,ty) - | _ -> failwith "bad method on array type" - else - $1 (mkILMethSpecInTy data, varargs) } | INSTR_TYPE typSpec { $1 (resolveCurrentMethodSpecScope $2) } | INSTR_INT_TYPE int32 typSpec @@ -209,34 +163,6 @@ instr: { $1 (resolveCurrentMethodSpecScope $2) } | INSTR_TOK typSpec { ($1 (ILToken.ILType (resolveCurrentMethodSpecScope $2))) } - -/*----------------------------------------------- - * Formal signatures of methods etc. - *---------------------------------------------*/ - -sigArgs0: - { noMethodSpecScope [] } - | sigArgs1 { $1 } - -sigArgs1: - sigArgs1a - { ResolvedAtMethodSpecScope (fun c -> List.map (fun obj -> resolveMethodSpecScope obj c) (List.rev $1)) } - -sigArgs1a: - sigArg - { [$1] } - | sigArgs1a COMMA sigArg - { $3 :: $1 } - -sigArg: - | typ opt_id - { resolveMethodSpecScopeThen $1 (fun ty -> - noMethodSpecScope (SigArg($2, ty))) } - - - -opt_id: { None } | id { Some $1 } - /*----------------------------------------------- * Type names @@ -309,9 +235,9 @@ callKind: *---------------------------------------------*/ typ: STRING - { noMethodSpecScope (!parseILGlobals).typ_String } + { noMethodSpecScope parseILGlobals.typ_String } | OBJECT - { noMethodSpecScope (!parseILGlobals).typ_Object } + { noMethodSpecScope parseILGlobals.typ_Object } | CLASS typeNameInst { resolveMethodSpecScopeThen $2 (fun tspec -> noMethodSpecScope (mkILBoxedType tspec)) } @@ -330,45 +256,45 @@ typ: STRING | typ STAR { resolveMethodSpecScopeThen $1 (fun ty -> noMethodSpecScope (ILType.Ptr ty)) } | CHAR - { noMethodSpecScope (!parseILGlobals).typ_Char } + { noMethodSpecScope parseILGlobals.typ_Char } | VOID { noMethodSpecScope ILType.Void } | BOOL - { noMethodSpecScope (!parseILGlobals).typ_Bool } + { noMethodSpecScope parseILGlobals.typ_Bool } | INT8 - { noMethodSpecScope (!parseILGlobals).typ_SByte } + { noMethodSpecScope parseILGlobals.typ_SByte } | INT16 - { noMethodSpecScope (!parseILGlobals).typ_Int16 } + { noMethodSpecScope parseILGlobals.typ_Int16 } | INT32 - { noMethodSpecScope (!parseILGlobals).typ_Int32 } + { noMethodSpecScope parseILGlobals.typ_Int32 } | INT64 - { noMethodSpecScope (!parseILGlobals).typ_Int64 } + { noMethodSpecScope parseILGlobals.typ_Int64 } | FLOAT32 - { noMethodSpecScope (!parseILGlobals).typ_Single } + { noMethodSpecScope parseILGlobals.typ_Single } | FLOAT64 - { noMethodSpecScope (!parseILGlobals).typ_Double } + { noMethodSpecScope parseILGlobals.typ_Double } | UNSIGNED INT8 - { noMethodSpecScope (!parseILGlobals).typ_Byte } + { noMethodSpecScope parseILGlobals.typ_Byte } | UNSIGNED INT16 - { noMethodSpecScope (!parseILGlobals).typ_UInt16 } + { noMethodSpecScope parseILGlobals.typ_UInt16 } | UNSIGNED INT32 - { noMethodSpecScope (!parseILGlobals).typ_UInt32 } + { noMethodSpecScope parseILGlobals.typ_UInt32 } | UNSIGNED INT64 - { noMethodSpecScope (!parseILGlobals).typ_UInt64 } + { noMethodSpecScope parseILGlobals.typ_UInt64 } | UINT8 - { noMethodSpecScope (!parseILGlobals).typ_Byte } + { noMethodSpecScope parseILGlobals.typ_Byte } | UINT16 - { noMethodSpecScope (!parseILGlobals).typ_UInt16 } + { noMethodSpecScope parseILGlobals.typ_UInt16 } | UINT32 - { noMethodSpecScope (!parseILGlobals).typ_UInt32 } + { noMethodSpecScope parseILGlobals.typ_UInt32 } | UINT64 - { noMethodSpecScope (!parseILGlobals).typ_UInt64 } + { noMethodSpecScope parseILGlobals.typ_UInt64 } | NATIVE INT - { noMethodSpecScope (!parseILGlobals).typ_IntPtr } + { noMethodSpecScope parseILGlobals.typ_IntPtr } | NATIVE UNSIGNED INT - { noMethodSpecScope (!parseILGlobals).typ_UIntPtr } + { noMethodSpecScope parseILGlobals.typ_UIntPtr } | NATIVE UINT - { noMethodSpecScope (!parseILGlobals).typ_UIntPtr } + { noMethodSpecScope parseILGlobals.typ_UIntPtr } | BANG int32 { noMethodSpecScope (ILType.TypeVar (uint16 ( $2))) } diff --git a/src/absil/ilprint.fs b/src/absil/ilprint.fs index 1ee930896f..07d2c8568d 100755 --- a/src/absil/ilprint.fs +++ b/src/absil/ilprint.fs @@ -157,12 +157,14 @@ let output_ieee32 os (x:float32) = output_string os "float32 ("; output_string o let output_ieee64 os (x:float) = output_string os "float64 ("; output_string os (string (bits_of_float x)); output_string os ")" -let rec goutput_scoref _env os = function +let rec goutput_scoref env os = function | ILScopeRef.Local -> () | ILScopeRef.Assembly aref -> output_string os "["; output_sqstring os aref.Name; output_string os "]" | ILScopeRef.Module mref -> output_string os "[.module "; output_sqstring os mref.Name; output_string os "]" + | ILScopeRef.PrimaryAssembly -> + output_string os "["; output_sqstring os env.ilGlobals.primaryAssemblyName; output_string os "]" and goutput_type_name_ref env os (scoref, enc, n) = goutput_scoref env os scoref @@ -1023,8 +1025,7 @@ let goutput_resource env os r = output_string os " { " goutput_custom_attrs env os r.CustomAttrs match r.Location with - | ILResourceLocation.LocalIn _ - | ILResourceLocation.LocalOut _ -> + | ILResourceLocation.Local _ -> output_string os " /* loc nyi */ " | ILResourceLocation.File (mref, off) -> output_string os " .file " @@ -1065,7 +1066,7 @@ let output_module_fragment_aux _refs os (ilg: ILGlobals) modul = reraise() let output_module_fragment os (ilg: ILGlobals) modul = - let refs = computeILRefs modul + let refs = computeILRefs ilg modul output_module_fragment_aux refs os ilg modul refs @@ -1086,7 +1087,7 @@ let goutput_module_manifest env os modul = let output_module os (ilg: ILGlobals) modul = try - let refs = computeILRefs modul + let refs = computeILRefs ilg modul let env = mk_ppenv ilg let env = ppenv_enter_modul env output_module_refs os refs diff --git a/src/absil/ilread.fs b/src/absil/ilread.fs index de201333a0..b9994f6418 100755 --- a/src/absil/ilread.fs +++ b/src/absil/ilread.fs @@ -19,6 +19,7 @@ open System.Runtime.InteropServices open System.Text open Internal.Utilities open Internal.Utilities.Collections +open FSharp.NativeInterop open FSharp.Compiler.AbstractIL.Internal open FSharp.Compiler.AbstractIL.Internal.Support open FSharp.Compiler.AbstractIL.Diagnostics @@ -29,6 +30,10 @@ open FSharp.Compiler.ErrorLogger open FSharp.Compiler.Range open System.Reflection +#nowarn "9" + +let primaryAssemblyILGlobals = mkILGlobals (ILScopeRef.PrimaryAssembly, []) + let checking = false let logging = false let _ = if checking then dprintn "warning: ILBinaryReader.checking is on" @@ -104,125 +109,31 @@ let stats = let GetStatistics() = stats -[] -/// An abstraction over how we access the contents of .NET binaries. May be backed by managed or unmanaged memory, -/// memory mapped file or by on-disk resources. These objects should never need explicit disposal - they must either -/// not hold resources of clean up after themselves when collected. -type BinaryView() = - - /// Read a byte from the file - abstract ReadByte: addr: int -> byte - - /// Read a chunk of bytes from the file - abstract ReadBytes: addr: int -> int -> byte[] - - /// Read an Int32 from the file - abstract ReadInt32: addr: int -> int - - /// Read a UInt16 from the file - abstract ReadUInt16: addr: int -> uint16 +type private BinaryView = ReadOnlyByteMemory - /// Read a length of a UTF8 string from the file - abstract CountUtf8String: addr: int -> int - - /// Read a UTF8 string from the file - abstract ReadUTF8String: addr: int -> string - -/// An abstraction over how we access the contents of .NET binaries. May be backed by managed or unmanaged memory, -/// memory mapped file or by on-disk resources. +/// An abstraction over how we access the contents of .NET binaries. type BinaryFile = - /// Return a BinaryView for temporary use which eagerly holds any necessary memory resources for the duration of its lifetime, - /// and is faster to access byte-by-byte. The returned BinaryView should _not_ be captured in a closure that outlives the - /// desired lifetime. abstract GetView: unit -> BinaryView -/// A view over a raw pointer to memory -type RawMemoryView(obj: obj, start: nativeint, len: int) = - inherit BinaryView() - - override m.ReadByte i = - if nativeint i + 1n > nativeint len then failwithf "RawMemoryView overrun, i = %d, obj = %A" i obj - Marshal.ReadByte(start + nativeint i) - - override m.ReadBytes i n = - if nativeint i + nativeint n > nativeint len then failwithf "RawMemoryView overrun, i = %d, n = %d, obj = %A" i n obj - let res = Bytes.zeroCreate n - Marshal.Copy(start + nativeint i, res, 0, n) - res - - override m.ReadInt32 i = - if nativeint i + 4n > nativeint len then failwithf "RawMemoryView overrun, i = %d, obj = %A" i obj - Marshal.ReadInt32(start + nativeint i) - - override m.ReadUInt16 i = - if nativeint i + 2n > nativeint len then failwithf "RawMemoryView overrun, i = %d, obj = %A" i obj - uint16(Marshal.ReadInt16(start + nativeint i)) - - override m.CountUtf8String i = - if nativeint i > nativeint len then failwithf "RawMemoryView overrun, i = %d, obj = %A" i obj - let pStart = start + nativeint i - let mutable p = start - while Marshal.ReadByte p <> 0uy do - p <- p + 1n - int (p - pStart) - - override m.ReadUTF8String i = - let n = m.CountUtf8String i - if nativeint i + nativeint n > nativeint len then failwithf "RawMemoryView overrun, i = %d, n = %d, obj = %A" i n obj - System.Runtime.InteropServices.Marshal.PtrToStringAnsi(start + nativeint i, n) - - member __.HoldObj() = obj - - /// Gives views over a raw chunk of memory, for example those returned to us by the memory manager in Roslyn's /// Visual Studio integration. 'obj' must keep the memory alive. The object will capture it and thus also keep the memory alive for /// the lifetime of this object. type RawMemoryFile(fileName: string, obj: obj, addr: nativeint, length: int) = do stats.rawMemoryFileCount <- stats.rawMemoryFileCount + 1 - let view = RawMemoryView(obj, addr, length) + let view = ByteMemory.FromUnsafePointer(addr, length, obj).AsReadOnly() member __.HoldObj() = obj // make sure we capture 'obj' member __.FileName = fileName interface BinaryFile with - override __.GetView() = view :>_ - -/// Read file from memory blocks -type ByteView(bytes: byte[]) = - inherit BinaryView() - - override __.ReadByte addr = bytes.[addr] - - override __.ReadBytes addr len = Array.sub bytes addr len - - override __.CountUtf8String addr = - let mutable p = addr - while bytes.[p] <> 0uy do - p <- p + 1 - p - addr - - override bfv.ReadUTF8String addr = - let n = bfv.CountUtf8String addr - System.Text.Encoding.UTF8.GetString (bytes, addr, n) - - override bfv.ReadInt32 addr = - let b0 = bfv.ReadByte addr - let b1 = bfv.ReadByte (addr+1) - let b2 = bfv.ReadByte (addr+2) - let b3 = bfv.ReadByte (addr+3) - int b0 ||| (int b1 <<< 8) ||| (int b2 <<< 16) ||| (int b3 <<< 24) - - override bfv.ReadUInt16 addr = - let b0 = bfv.ReadByte addr - let b1 = bfv.ReadByte (addr+1) - uint16 b0 ||| (uint16 b1 <<< 8) + override __.GetView() = view /// A BinaryFile backed by an array of bytes held strongly as managed memory [] type ByteFile(fileName: string, bytes: byte[]) = - let view = ByteView bytes + let view = ByteMemory.FromArray(bytes).AsReadOnly() do stats.byteFileCount <- stats.byteFileCount + 1 member __.FileName = fileName interface BinaryFile with - override bf.GetView() = view :> BinaryView + override bf.GetView() = view /// Same as ByteFile but holds the bytes weakly. The bytes will be re-read from the backing file when a view is requested. /// This is the default implementation used by F# Compiler Services when accessing "stable" binaries. It is not used @@ -261,11 +172,11 @@ type WeakByteFile(fileName: string, chunk: (int * int) option) = tg - (ByteView strongBytes :> BinaryView) + ByteMemory.FromArray(strongBytes).AsReadOnly() -let seekReadByte (mdv: BinaryView) addr = mdv.ReadByte addr -let seekReadBytes (mdv: BinaryView) addr len = mdv.ReadBytes addr len +let seekReadByte (mdv: BinaryView) addr = mdv.[addr] +let seekReadBytes (mdv: BinaryView) addr len = mdv.ReadBytes(addr, len) let seekReadInt32 (mdv: BinaryView) addr = mdv.ReadInt32 addr let seekReadUInt16 (mdv: BinaryView) addr = mdv.ReadUInt16 addr @@ -850,37 +761,33 @@ let seekReadIndexedRows (numRows, rowReader, keyFunc, keyComparer, binaryChop, r // now read off rows, forward and backwards let mid = (low + high) / 2 // read forward - begin - let mutable fin = false - let mutable curr = mid - while not fin do - if curr > numRows then - fin <- true - else - let currrow = rowReader curr - if keyComparer (keyFunc currrow) = 0 then - res <- rowConverter currrow :: res - else - fin <- true - curr <- curr + 1 - done - end + let mutable fin = false + let mutable curr = mid + while not fin do + if curr > numRows then + fin <- true + else + let currrow = rowReader curr + if keyComparer (keyFunc currrow) = 0 then + res <- rowConverter currrow :: res + else + fin <- true + curr <- curr + 1 + res <- List.rev res // read backwards - begin - let mutable fin = false - let mutable curr = mid - 1 - while not fin do - if curr = 0 then + let mutable fin = false + let mutable curr = mid - 1 + while not fin do + if curr = 0 then fin <- true - else + else let currrow = rowReader curr if keyComparer (keyFunc currrow) = 0 then res <- rowConverter currrow :: res else fin <- true curr <- curr - 1 - end // sanity check #if CHECKING if checking then @@ -950,8 +857,7 @@ type PEReader = [] type ILMetadataReader = - { ilg: ILGlobals - sorted: int64 + { sorted: int64 mdfile: BinaryFile pectxtCaptured: PEReader option // only set when reading full PE including code etc. for static linking entryPointToken: TableName * int @@ -1502,7 +1408,7 @@ let rvaToData (ctxt: ILMetadataReader) (pectxt: PEReader) nm rva = let isSorted (ctxt: ILMetadataReader) (tab: TableName) = ((ctxt.sorted &&& (int64 1 <<< tab.Index)) <> int64 0x0) // Note, pectxtEager and pevEager must not be captured by the results of this function -let rec seekReadModule (ctxt: ILMetadataReader) (pectxtEager: PEReader) pevEager peinfo ilMetadataVersion idx = +let rec seekReadModule (ctxt: ILMetadataReader) canReduceMemory (pectxtEager: PEReader) pevEager peinfo ilMetadataVersion idx = let (subsys, subsysversion, useHighEntropyVA, ilOnly, only32, is32bitpreferred, only64, platform, isDll, alignVirt, alignPhys, imageBaseReal) = peinfo let mdv = ctxt.mdfile.GetView() let (_generation, nameIdx, _mvidIdx, _encidIdx, _encbaseidIdx) = seekReadModuleRow ctxt mdv idx @@ -1531,7 +1437,7 @@ let rec seekReadModule (ctxt: ILMetadataReader) (pectxtEager: PEReader) pevEager PhysicalAlignment = alignPhys ImageBase = imageBaseReal MetadataVersion = ilMetadataVersion - Resources = seekReadManifestResources ctxt mdv pectxtEager pevEager } + Resources = seekReadManifestResources ctxt canReduceMemory mdv pectxtEager pevEager } and seekReadAssemblyManifest (ctxt: ILMetadataReader) pectxt idx = let mdview = ctxt.mdfile.GetView() @@ -1804,7 +1710,7 @@ and seekReadTypeDefOrRefAsTypeRef (ctxt: ILMetadataReader) (TaggedIndex(tag, idx | tag when tag = tdor_TypeRef -> seekReadTypeRef ctxt idx | tag when tag = tdor_TypeSpec -> dprintn ("type spec used where a type ref or def is required") - ctxt.ilg.typ_Object.TypeRef + primaryAssemblyILGlobals.typ_Object.TypeRef | _ -> failwith "seekReadTypeDefOrRefAsTypeRef_readTypeDefOrRefOrSpec" and seekReadMethodRefParent (ctxt: ILMetadataReader) mdv numtypars (TaggedIndex(tag, idx)) = @@ -1922,22 +1828,22 @@ and sigptrGetTypeDefOrRefOrSpecIdx bytes sigptr = and sigptrGetTy (ctxt: ILMetadataReader) numtypars bytes sigptr = let b0, sigptr = sigptrGetByte bytes sigptr - if b0 = et_OBJECT then ctxt.ilg.typ_Object, sigptr - elif b0 = et_STRING then ctxt.ilg.typ_String, sigptr - elif b0 = et_I1 then ctxt.ilg.typ_SByte, sigptr - elif b0 = et_I2 then ctxt.ilg.typ_Int16, sigptr - elif b0 = et_I4 then ctxt.ilg.typ_Int32, sigptr - elif b0 = et_I8 then ctxt.ilg.typ_Int64, sigptr - elif b0 = et_I then ctxt.ilg.typ_IntPtr, sigptr - elif b0 = et_U1 then ctxt.ilg.typ_Byte, sigptr - elif b0 = et_U2 then ctxt.ilg.typ_UInt16, sigptr - elif b0 = et_U4 then ctxt.ilg.typ_UInt32, sigptr - elif b0 = et_U8 then ctxt.ilg.typ_UInt64, sigptr - elif b0 = et_U then ctxt.ilg.typ_UIntPtr, sigptr - elif b0 = et_R4 then ctxt.ilg.typ_Single, sigptr - elif b0 = et_R8 then ctxt.ilg.typ_Double, sigptr - elif b0 = et_CHAR then ctxt.ilg.typ_Char, sigptr - elif b0 = et_BOOLEAN then ctxt.ilg.typ_Bool, sigptr + if b0 = et_OBJECT then primaryAssemblyILGlobals.typ_Object, sigptr + elif b0 = et_STRING then primaryAssemblyILGlobals.typ_String, sigptr + elif b0 = et_I1 then primaryAssemblyILGlobals.typ_SByte, sigptr + elif b0 = et_I2 then primaryAssemblyILGlobals.typ_Int16, sigptr + elif b0 = et_I4 then primaryAssemblyILGlobals.typ_Int32, sigptr + elif b0 = et_I8 then primaryAssemblyILGlobals.typ_Int64, sigptr + elif b0 = et_I then primaryAssemblyILGlobals.typ_IntPtr, sigptr + elif b0 = et_U1 then primaryAssemblyILGlobals.typ_Byte, sigptr + elif b0 = et_U2 then primaryAssemblyILGlobals.typ_UInt16, sigptr + elif b0 = et_U4 then primaryAssemblyILGlobals.typ_UInt32, sigptr + elif b0 = et_U8 then primaryAssemblyILGlobals.typ_UInt64, sigptr + elif b0 = et_U then primaryAssemblyILGlobals.typ_UIntPtr, sigptr + elif b0 = et_R4 then primaryAssemblyILGlobals.typ_Single, sigptr + elif b0 = et_R8 then primaryAssemblyILGlobals.typ_Double, sigptr + elif b0 = et_CHAR then primaryAssemblyILGlobals.typ_Char, sigptr + elif b0 = et_BOOLEAN then primaryAssemblyILGlobals.typ_Bool, sigptr elif b0 = et_WITH then let b0, sigptr = sigptrGetByte bytes sigptr let tdorIdx, sigptr = sigptrGetTypeDefOrRefOrSpecIdx bytes sigptr @@ -1983,8 +1889,7 @@ and sigptrGetTy (ctxt: ILMetadataReader) numtypars bytes sigptr = elif b0 = et_VOID then ILType.Void, sigptr elif b0 = et_TYPEDBYREF then - let t = mkILNonGenericValueTy(mkILTyRef(ctxt.ilg.primaryAssemblyScopeRef, "System.TypedReference")) - t, sigptr + primaryAssemblyILGlobals.typ_TypedReference, sigptr elif b0 = et_CMOD_REQD || b0 = et_CMOD_OPT then let tdorIdx, sigptr = sigptrGetTypeDefOrRefOrSpecIdx bytes sigptr let ty, sigptr = sigptrGetTy ctxt numtypars bytes sigptr @@ -2554,15 +2459,11 @@ and seekReadImplMap (ctxt: ILMetadataReader) nm midx = and seekReadTopCode (ctxt: ILMetadataReader) pev mdv numtypars (sz: int) start seqpoints = let labelsOfRawOffsets = new Dictionary<_, _>(sz/2) let ilOffsetsOfLabels = new Dictionary<_, _>(sz/2) - let tryRawToLabel rawOffset = - match labelsOfRawOffsets.TryGetValue rawOffset with - | true, v -> Some v - | _ -> None - + let rawToLabel rawOffset = - match tryRawToLabel rawOffset with - | Some l -> l - | None -> + match labelsOfRawOffsets.TryGetValue rawOffset with + | true, l -> l + | _ -> let lab = generateCodeLabel() labelsOfRawOffsets.[rawOffset] <- lab lab @@ -2791,9 +2692,9 @@ and seekReadTopCode (ctxt: ILMetadataReader) pev mdv numtypars (sz: int) start s // the start of the next instruction referred to by the raw offset. let raw2nextLab rawOffset = let isInstrStart x = - match tryRawToLabel x with - | None -> false - | Some lab -> ilOffsetsOfLabels.ContainsKey lab + match labelsOfRawOffsets.TryGetValue x with + | true, lab -> ilOffsetsOfLabels.ContainsKey lab + | _ -> false if isInstrStart rawOffset then rawToLabel rawOffset elif isInstrStart (rawOffset+1) then rawToLabel (rawOffset+1) else failwith ("the bytecode raw offset "+string rawOffset+" did not refer either to the start or end of an instruction") @@ -3101,10 +3002,10 @@ and sigptrGetILNativeType ctxt bytes sigptr = else sigptrGetZInt32 bytes sigptr ILNativeType.Array (Some nt, Some(pnum, Some additive)), sigptr else (ILNativeType.Empty, sigptr) - + // Note, pectxtEager and pevEager must not be captured by the results of this function // As a result, reading the resource offsets in the physical file is done eagerly to avoid holding on to any resources -and seekReadManifestResources (ctxt: ILMetadataReader) (mdv: BinaryView) (pectxtEager: PEReader) (pevEager: BinaryView) = +and seekReadManifestResources (ctxt: ILMetadataReader) canReduceMemory (mdv: BinaryView) (pectxtEager: PEReader) (pevEager: BinaryView) = mkILResources [ for i = 1 to ctxt.getNumRows TableNames.ManifestResource do let (offset, flags, nameIdx, implIdx) = seekReadManifestResourceRow ctxt mdv i @@ -3117,13 +3018,18 @@ and seekReadManifestResources (ctxt: ILMetadataReader) (mdv: BinaryView) (pectxt let start = pectxtEager.anyV2P ("resource", offset + pectxtEager.resourcesAddr) let resourceLength = seekReadInt32 pevEager start let offsetOfBytesFromStartOfPhysicalPEFile = start + 4 - if pectxtEager.noFileOnDisk then - ILResourceLocation.LocalOut (seekReadBytes pevEager offsetOfBytesFromStartOfPhysicalPEFile resourceLength) - else - ILResourceLocation.LocalIn (ctxt.fileName, offsetOfBytesFromStartOfPhysicalPEFile, resourceLength) + let bytes = + let bytes = pevEager.Slice(offsetOfBytesFromStartOfPhysicalPEFile, resourceLength) + // If we are trying to reduce memory, create a memory mapped file based on the contents. + if canReduceMemory then + ByteMemory.CreateMemoryMappedFile bytes + else + ByteMemory.FromArray(bytes.ToArray()) + ILResourceLocation.Local(bytes.AsReadOnly()) | ILScopeRef.Module mref -> ILResourceLocation.File (mref, offset) | ILScopeRef.Assembly aref -> ILResourceLocation.Assembly aref + | _ -> failwith "seekReadManifestResources: Invalid ILScopeRef" let r = { Name= readStringHeap ctxt nameIdx @@ -3207,7 +3113,7 @@ let getPdbReader pdbDirPath fileName = #endif // Note, pectxtEager and pevEager must not be captured by the results of this function -let openMetadataReader (fileName, mdfile: BinaryFile, metadataPhysLoc, peinfo, pectxtEager: PEReader, pevEager: BinaryView, pectxtCaptured, reduceMemoryUsage, ilGlobals) = +let openMetadataReader (fileName, mdfile: BinaryFile, metadataPhysLoc, peinfo, pectxtEager: PEReader, pevEager, pectxtCaptured, reduceMemoryUsage) = let mdv = mdfile.GetView() let magic = seekReadUInt16AsInt32 mdv metadataPhysLoc if magic <> 0x5342 then failwith (fileName + ": bad metadata magic number: " + string magic) @@ -3513,8 +3419,7 @@ let openMetadataReader (fileName, mdfile: BinaryFile, metadataPhysLoc, peinfo, p // Use an initialization hole let ctxtH = ref None let ctxt: ILMetadataReader = - { ilg=ilGlobals - sorted=sorted + { sorted=sorted getNumRows=getNumRows mdfile=mdfile dataEndPoints = match pectxtCaptured with None -> notlazy [] | Some pectxt -> getDataEndPointsDelayed pectxt ctxtH @@ -3584,7 +3489,7 @@ let openMetadataReader (fileName, mdfile: BinaryFile, metadataPhysLoc, peinfo, p tableBigness=tableBigness } ctxtH := Some ctxt - let ilModule = seekReadModule ctxt pectxtEager pevEager peinfo (System.Text.Encoding.UTF8.GetString (ilMetadataVersion, 0, ilMetadataVersion.Length)) 1 + let ilModule = seekReadModule ctxt reduceMemoryUsage pectxtEager pevEager peinfo (System.Text.Encoding.UTF8.GetString (ilMetadataVersion, 0, ilMetadataVersion.Length)) 1 let ilAssemblyRefs = lazy [ for i in 1 .. getNumRows TableNames.AssemblyRef do yield seekReadAssemblyRef ctxt i ] ilModule, ilAssemblyRefs @@ -3792,13 +3697,13 @@ let openPEFileReader (fileName, pefile: BinaryFile, pdbDirPath, noFileOnDisk) = let peinfo = (subsys, (subsysMajor, subsysMinor), useHighEnthropyVA, ilOnly, only32, is32bitpreferred, only64, platform, isDll, alignVirt, alignPhys, imageBaseReal) (metadataPhysLoc, metadataSize, peinfo, pectxt, pev, pdb) -let openPE (fileName, pefile, pdbDirPath, reduceMemoryUsage, ilGlobals, noFileOnDisk) = +let openPE (fileName, pefile, pdbDirPath, reduceMemoryUsage, noFileOnDisk) = let (metadataPhysLoc, _metadataSize, peinfo, pectxt, pev, pdb) = openPEFileReader (fileName, pefile, pdbDirPath, noFileOnDisk) - let ilModule, ilAssemblyRefs = openMetadataReader (fileName, pefile, metadataPhysLoc, peinfo, pectxt, pev, Some pectxt, reduceMemoryUsage, ilGlobals) + let ilModule, ilAssemblyRefs = openMetadataReader (fileName, pefile, metadataPhysLoc, peinfo, pectxt, pev, Some pectxt, reduceMemoryUsage) ilModule, ilAssemblyRefs, pdb -let openPEMetadataOnly (fileName, peinfo, pectxtEager, pev, mdfile: BinaryFile, reduceMemoryUsage, ilGlobals) = - openMetadataReader (fileName, mdfile, 0, peinfo, pectxtEager, pev, None, reduceMemoryUsage, ilGlobals) +let openPEMetadataOnly (fileName, peinfo, pectxtEager, pevEager, mdfile: BinaryFile, reduceMemoryUsage) = + openMetadataReader (fileName, mdfile, 0, peinfo, pectxtEager, pevEager, None, reduceMemoryUsage) let ClosePdbReader pdb = #if FX_NO_PDB_READER @@ -3821,7 +3726,6 @@ type ReduceMemoryFlag = Yes | No type ILReaderOptions = { pdbDirPath: string option - ilGlobals: ILGlobals reduceMemoryUsage: ReduceMemoryFlag metadataOnly: MetadataOnlyFlag tryGetMetadataSnapshot: ILReaderTryGetMetadataSnapshot } @@ -3843,7 +3747,7 @@ type ILModuleReaderImpl(ilModule: ILModuleDef, ilAssemblyRefs: Lazy BinaryFile - let ilModule, ilAssemblyRefs, pdb = openPE (fileName, pefile, opts.pdbDirPath, (opts.reduceMemoryUsage = ReduceMemoryFlag.Yes), opts.ilGlobals, true) + let ilModule, ilAssemblyRefs, pdb = openPE (fileName, pefile, opts.pdbDirPath, (opts.reduceMemoryUsage = ReduceMemoryFlag.Yes), true) new ILModuleReaderImpl(ilModule, ilAssemblyRefs, (fun () -> ClosePdbReader pdb)) :> ILModuleReader let ClearAllILModuleReaderCache() = @@ -3902,15 +3806,15 @@ let ClearAllILModuleReaderCache() = let OpenILModuleReader fileName opts = // Pseudo-normalize the paths. - let (ILModuleReaderCacheKey (fullPath,writeStamp,_,_,_,_) as key), keyOk = + let (ILModuleReaderCacheKey (fullPath,writeStamp,_,_,_) as key), keyOk = try let fullPath = FileSystem.GetFullPathShim fileName let writeTime = FileSystem.GetLastWriteTimeShim fileName - let key = ILModuleReaderCacheKey (fullPath, writeTime, opts.ilGlobals.primaryAssemblyScopeRef, opts.pdbDirPath.IsSome, opts.reduceMemoryUsage, opts.metadataOnly) + let key = ILModuleReaderCacheKey (fullPath, writeTime, opts.pdbDirPath.IsSome, opts.reduceMemoryUsage, opts.metadataOnly) key, true with exn -> System.Diagnostics.Debug.Assert(false, sprintf "Failed to compute key in OpenILModuleReader cache for '%s'. Falling back to uncached. Error = %s" fileName (exn.ToString())) - let fakeKey = ILModuleReaderCacheKey(fileName, System.DateTime.UtcNow, ILScopeRef.Local, false, ReduceMemoryFlag.Yes, MetadataOnlyFlag.Yes) + let fakeKey = ILModuleReaderCacheKey(fileName, System.DateTime.UtcNow, false, ReduceMemoryFlag.Yes, MetadataOnlyFlag.Yes) fakeKey, false let cacheResult1 = @@ -3965,13 +3869,13 @@ let OpenILModuleReader fileName opts = // If tryGetMetadata doesn't give anything, then just read the metadata chunk out of the binary createByteFileChunk opts fullPath (Some (metadataPhysLoc, metadataSize)) - let ilModule, ilAssemblyRefs = openPEMetadataOnly (fullPath, peinfo, pectxtEager, pevEager, mdfile, reduceMemoryUsage, opts.ilGlobals) + let ilModule, ilAssemblyRefs = openPEMetadataOnly (fullPath, peinfo, pectxtEager, pevEager, mdfile, reduceMemoryUsage) new ILModuleReaderImpl(ilModule, ilAssemblyRefs, ignore) else // If we are not doing metadata-only, then just go ahead and read all the bytes and hold them either strongly or weakly // depending on the heuristic let pefile = createByteFileChunk opts fullPath None - let ilModule, ilAssemblyRefs, _pdb = openPE (fullPath, pefile, None, reduceMemoryUsage, opts.ilGlobals, false) + let ilModule, ilAssemblyRefs, _pdb = openPE (fullPath, pefile, None, reduceMemoryUsage, false) new ILModuleReaderImpl(ilModule, ilAssemblyRefs, ignore) let ilModuleReader = ilModuleReader :> ILModuleReader @@ -3992,15 +3896,14 @@ let OpenILModuleReader fileName opts = // We do however care about avoiding locks on files that prevent their deletion during a // multi-proc build. So use memory mapping, but only for stable files. Other files // still use an in-memory ByteFile - let _disposer, pefile = + let pefile = if alwaysMemoryMapFSC || stableFileHeuristicApplies fullPath then - createMemoryMapFile fullPath + let _, pefile = createMemoryMapFile fullPath + pefile else - let pefile = createByteFileChunk opts fullPath None - let disposer = { new IDisposable with member __.Dispose() = () } - disposer, pefile + createByteFileChunk opts fullPath None - let ilModule, ilAssemblyRefs, pdb = openPE (fullPath, pefile, opts.pdbDirPath, reduceMemoryUsage, opts.ilGlobals, false) + let ilModule, ilAssemblyRefs, pdb = openPE (fullPath, pefile, opts.pdbDirPath, reduceMemoryUsage, false) let ilModuleReader = new ILModuleReaderImpl(ilModule, ilAssemblyRefs, (fun () -> ClosePdbReader pdb)) let ilModuleReader = ilModuleReader :> ILModuleReader diff --git a/src/absil/ilread.fsi b/src/absil/ilread.fsi index 000b9cc34f..aaa2b0b6e8 100755 --- a/src/absil/ilread.fsi +++ b/src/absil/ilread.fsi @@ -46,8 +46,6 @@ type ReduceMemoryFlag = Yes | No type ILReaderOptions = { pdbDirPath: string option - ilGlobals: ILGlobals - // fsc.exe does not use reduceMemoryUsage (hence keeps MORE caches in AbstractIL and MORE memory mapping and MORE memory hogging but FASTER and SIMPLER file access) // fsi.exe does uses reduceMemoryUsage (hence keeps FEWER caches in AbstractIL and LESS memory mapping and LESS memory hogging but slightly SLOWER file access), because its long running // FCS uses reduceMemoryUsage (hence keeps FEWER caches in AbstractIL and LESS memory mapping and LESS memory hogging), because it is typically long running diff --git a/src/absil/ilreflect.fs b/src/absil/ilreflect.fs index b7874891e0..edab65fb7a 100755 --- a/src/absil/ilreflect.fs +++ b/src/absil/ilreflect.fs @@ -322,6 +322,21 @@ type cenv = override x.ToString() = "" +let convResolveAssemblyRef (cenv: cenv) (asmref: ILAssemblyRef) qualifiedName = + let assembly = + match cenv.resolveAssemblyRef asmref with + | Some (Choice1Of2 path) -> + FileSystem.AssemblyLoadFrom path + | Some (Choice2Of2 assembly) -> + assembly + | None -> + let asmName = convAssemblyRef asmref + FileSystem.AssemblyLoad asmName + let typT = assembly.GetType qualifiedName + match typT with + | null -> error(Error(FSComp.SR.itemNotFoundDuringDynamicCodeGen ("type", qualifiedName, asmref.QualifiedName), range0)) + | res -> res + /// Convert an Abstract IL type reference to Reflection.Emit System.Type value. // This ought to be an adequate substitute for this whole function, but it needs // to be thoroughly tested. @@ -333,25 +348,15 @@ let convTypeRefAux (cenv: cenv) (tref: ILTypeRef) = let qualifiedName = (String.concat "+" (tref.Enclosing @ [ tref.Name ])).Replace(",", @"\,") match tref.Scope with | ILScopeRef.Assembly asmref -> - let assembly = - match cenv.resolveAssemblyRef asmref with - | Some (Choice1Of2 path) -> - FileSystem.AssemblyLoadFrom path - | Some (Choice2Of2 assembly) -> - assembly - | None -> - let asmName = convAssemblyRef asmref - FileSystem.AssemblyLoad asmName - let typT = assembly.GetType qualifiedName - match typT with - | null -> error(Error(FSComp.SR.itemNotFoundDuringDynamicCodeGen ("type", qualifiedName, asmref.QualifiedName), range0)) - | res -> res + convResolveAssemblyRef cenv asmref qualifiedName | ILScopeRef.Module _ | ILScopeRef.Local _ -> let typT = Type.GetType qualifiedName match typT with | null -> error(Error(FSComp.SR.itemNotFoundDuringDynamicCodeGen ("type", qualifiedName, ""), range0)) | res -> res + | ILScopeRef.PrimaryAssembly -> + convResolveAssemblyRef cenv cenv.ilg.primaryAssemblyRef qualifiedName @@ -2070,11 +2075,9 @@ let buildModuleFragment cenv emEnv (asmB: AssemblyBuilder) (modB: ModuleBuilder) m.Resources.AsList |> List.iter (fun r -> let attribs = (match r.Access with ILResourceAccess.Public -> ResourceAttributes.Public | ILResourceAccess.Private -> ResourceAttributes.Private) match r.Location with - | ILResourceLocation.LocalIn (file, start, len) -> - let bytes = FileSystem.ReadAllBytesShim(file).[start .. start + len - 1] - modB.DefineManifestResourceAndLog (r.Name, new MemoryStream(bytes), attribs) - | ILResourceLocation.LocalOut bytes -> - modB.DefineManifestResourceAndLog (r.Name, new MemoryStream(bytes), attribs) + | ILResourceLocation.Local bytes -> + use stream = bytes.AsStream() + modB.DefineManifestResourceAndLog (r.Name, stream, attribs) | ILResourceLocation.File (mr, _) -> asmB.AddResourceFileAndLog (r.Name, mr.Name, attribs) | ILResourceLocation.Assembly _ -> diff --git a/src/absil/ilwrite.fs b/src/absil/ilwrite.fs index 2d838cd460..ed762cf9ac 100755 --- a/src/absil/ilwrite.fs +++ b/src/absil/ilwrite.fs @@ -754,6 +754,7 @@ let GetScopeRefAsImplementationElem cenv scoref = | ILScopeRef.Local -> (i_AssemblyRef, 0) | ILScopeRef.Assembly aref -> (i_AssemblyRef, GetAssemblyRefAsIdx cenv aref) | ILScopeRef.Module mref -> (i_File, GetModuleRefAsFileIdx cenv mref) + | ILScopeRef.PrimaryAssembly -> (i_AssemblyRef, GetAssemblyRefAsIdx cenv cenv.ilg.primaryAssemblyRef) // -------------------------------------------------------------------- // Type references, types etc. @@ -781,6 +782,7 @@ and GetResolutionScopeAsElem cenv (scoref, enc) = | ILScopeRef.Local -> (rs_Module, 1) | ILScopeRef.Assembly aref -> (rs_AssemblyRef, GetAssemblyRefAsIdx cenv aref) | ILScopeRef.Module mref -> (rs_ModuleRef, GetModuleRefAsIdx cenv mref) + | ILScopeRef.PrimaryAssembly -> (rs_AssemblyRef, GetAssemblyRefAsIdx cenv cenv.ilg.primaryAssemblyRef) else let enc2, n2 = List.frontAndBack enc (rs_TypeRef, GetTypeDescAsTypeRefIdx cenv (scoref, enc2, n2)) @@ -866,27 +868,25 @@ and GetTypeAsTypeSpecIdx cenv env ty = FindOrAddSharedRow cenv TableNames.TypeSpec (GetTypeAsTypeSpecRow cenv env ty) and EmitType cenv env bb ty = + let ilg = cenv.ilg match ty with - // REVIEW: what are these doing here? - | ILType.Value tspec when tspec.Name = "System.String" -> bb.EmitByte et_STRING - | ILType.Value tspec when tspec.Name = "System.Object" -> bb.EmitByte et_OBJECT - | ty when isILSByteTy ty -> bb.EmitByte et_I1 - | ty when isILInt16Ty ty -> bb.EmitByte et_I2 - | ty when isILInt32Ty ty -> bb.EmitByte et_I4 - | ty when isILInt64Ty ty -> bb.EmitByte et_I8 - | ty when isILByteTy ty -> bb.EmitByte et_U1 - | ty when isILUInt16Ty ty -> bb.EmitByte et_U2 - | ty when isILUInt32Ty ty -> bb.EmitByte et_U4 - | ty when isILUInt64Ty ty -> bb.EmitByte et_U8 - | ty when isILDoubleTy ty -> bb.EmitByte et_R8 - | ty when isILSingleTy ty -> bb.EmitByte et_R4 - | ty when isILBoolTy ty -> bb.EmitByte et_BOOLEAN - | ty when isILCharTy ty -> bb.EmitByte et_CHAR - | ty when isILStringTy ty -> bb.EmitByte et_STRING - | ty when isILObjectTy ty -> bb.EmitByte et_OBJECT - | ty when isILIntPtrTy ty -> bb.EmitByte et_I - | ty when isILUIntPtrTy ty -> bb.EmitByte et_U - | ty when isILTypedReferenceTy ty -> bb.EmitByte et_TYPEDBYREF + | ty when isILSByteTy ilg ty -> bb.EmitByte et_I1 + | ty when isILInt16Ty ilg ty -> bb.EmitByte et_I2 + | ty when isILInt32Ty ilg ty -> bb.EmitByte et_I4 + | ty when isILInt64Ty ilg ty -> bb.EmitByte et_I8 + | ty when isILByteTy ilg ty -> bb.EmitByte et_U1 + | ty when isILUInt16Ty ilg ty -> bb.EmitByte et_U2 + | ty when isILUInt32Ty ilg ty -> bb.EmitByte et_U4 + | ty when isILUInt64Ty ilg ty -> bb.EmitByte et_U8 + | ty when isILDoubleTy ilg ty -> bb.EmitByte et_R8 + | ty when isILSingleTy ilg ty -> bb.EmitByte et_R4 + | ty when isILBoolTy ilg ty -> bb.EmitByte et_BOOLEAN + | ty when isILCharTy ilg ty -> bb.EmitByte et_CHAR + | ty when isILStringTy ilg ty -> bb.EmitByte et_STRING + | ty when isILObjectTy ilg ty -> bb.EmitByte et_OBJECT + | ty when isILIntPtrTy ilg ty -> bb.EmitByte et_I + | ty when isILUIntPtrTy ilg ty -> bb.EmitByte et_U + | ty when isILTypedReferenceTy ilg ty -> bb.EmitByte et_TYPEDBYREF | ILType.Boxed tspec -> EmitTypeSpec cenv env bb (et_CLASS, tspec) | ILType.Value tspec -> EmitTypeSpec cenv env bb (et_VALUETYPE, tspec) @@ -2689,7 +2689,7 @@ and GenEventPass3 cenv env (md: ILEventDef) = let rec GetResourceAsManifestResourceRow cenv r = let data, impl = - let embedManagedResources (bytes: byte[]) = + let embedManagedResources (bytes: ReadOnlyByteMemory) = // Embedded managed resources must be word-aligned. However resource format is // not specified in ECMA. Some mscorlib resources appear to be non-aligned - it seems it doesn't matter.. let offset = cenv.resources.Position @@ -2698,12 +2698,11 @@ let rec GetResourceAsManifestResourceRow cenv r = let resourceSize = bytes.Length cenv.resources.EmitPadding pad cenv.resources.EmitInt32 resourceSize - cenv.resources.EmitBytes bytes + cenv.resources.EmitByteMemory bytes Data (alignedOffset, true), (i_File, 0) match r.Location with - | ILResourceLocation.LocalIn _ -> embedManagedResources (r.GetBytes()) - | ILResourceLocation.LocalOut bytes -> embedManagedResources bytes + | ILResourceLocation.Local bytes -> embedManagedResources bytes | ILResourceLocation.File (mref, offset) -> ULong offset, (i_File, GetModuleRefAsFileIdx cenv mref) | ILResourceLocation.Assembly aref -> ULong 0x0, (i_AssemblyRef, GetAssemblyRefAsIdx cenv aref) @@ -3622,6 +3621,7 @@ let writeBinaryAndReportMappings (outfile, match ilg.primaryAssemblyScopeRef with | ILScopeRef.Local -> failwith "Expected mscorlib to be ILScopeRef.Assembly was ILScopeRef.Local" | ILScopeRef.Module(_) -> failwith "Expected mscorlib to be ILScopeRef.Assembly was ILScopeRef.Module" + | ILScopeRef.PrimaryAssembly -> failwith "Expected mscorlib to be ILScopeRef.Assembly was ILScopeRef.PrimaryAssembly" | ILScopeRef.Assembly aref -> match aref.Version with | Some version when version.Major = 2us -> parseILVersion "2.0.50727.0" diff --git a/src/buildtools/AssemblyCheck/AssemblyCheck.fsproj b/src/buildtools/AssemblyCheck/AssemblyCheck.fsproj index 72f79d02f9..cde9cb37a7 100644 --- a/src/buildtools/AssemblyCheck/AssemblyCheck.fsproj +++ b/src/buildtools/AssemblyCheck/AssemblyCheck.fsproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.1 + netcoreapp3.0 true diff --git a/src/buildtools/fslex/fslex.fsproj b/src/buildtools/fslex/fslex.fsproj index bfb67e212e..2766098c25 100644 --- a/src/buildtools/fslex/fslex.fsproj +++ b/src/buildtools/fslex/fslex.fsproj @@ -2,7 +2,6 @@ Exe - netcoreapp2.0 netcoreapp2.1 INTERNALIZED_FSLEXYACC_RUNTIME;$(DefineConstant) true diff --git a/src/buildtools/fsyacc/fsyacc.fsproj b/src/buildtools/fsyacc/fsyacc.fsproj index a094fe0598..dc5a4f67f3 100644 --- a/src/buildtools/fsyacc/fsyacc.fsproj +++ b/src/buildtools/fsyacc/fsyacc.fsproj @@ -2,7 +2,6 @@ Exe - netcoreapp2.0 netcoreapp2.1 INTERNALIZED_FSLEXYACC_RUNTIME;$(DefineConstant) true diff --git a/src/fsharp/AttributeChecking.fs b/src/fsharp/AttributeChecking.fs index 07ac05faa8..fb19937c53 100644 --- a/src/fsharp/AttributeChecking.fs +++ b/src/fsharp/AttributeChecking.fs @@ -4,6 +4,7 @@ /// on items from name resolution module internal FSharp.Compiler.AttributeChecking +open System open System.Collections.Generic open FSharp.Compiler.AbstractIL.IL open FSharp.Compiler.AbstractIL.Internal.Library @@ -246,7 +247,6 @@ let MethInfoHasAttribute g m attribSpec minfo = |> Option.isSome - /// Check IL attributes for 'ObsoleteAttribute', returning errors and warnings as data let private CheckILAttributes (g: TcGlobals) isByrefLikeTyconRef cattrs m = let (AttribInfo(tref,_)) = g.attrib_SystemObsolete @@ -267,9 +267,16 @@ let private CheckILAttributes (g: TcGlobals) isByrefLikeTyconRef cattrs m = /// Check F# attributes for 'ObsoleteAttribute', 'CompilerMessageAttribute' and 'ExperimentalAttribute', /// returning errors and warnings as data -let CheckFSharpAttributes g attribs m = - if isNil attribs then CompleteD - else +let langVersionPrefix = "--langversion:preview" +let CheckFSharpAttributes (g:TcGlobals) attribs m = + let isExperimentalAttributeDisabled (s:string) = + if g.compilingFslib then + true + else + g.langVersion.IsPreviewEnabled && (s.IndexOf(langVersionPrefix, StringComparison.OrdinalIgnoreCase) >= 0) + + if isNil attribs then CompleteD + else (match TryFindFSharpAttribute g g.attrib_SystemObsolete attribs with | Some(Attrib(_, _, [ AttribStringArg s ], _, _, _, _)) -> WarnD(ObsoleteWarning(s, m)) @@ -283,28 +290,30 @@ let CheckFSharpAttributes g attribs m = | None -> CompleteD ) ++ (fun () -> - + match TryFindFSharpAttribute g g.attrib_CompilerMessageAttribute attribs with - | Some(Attrib(_, _, [ AttribStringArg s ; AttribInt32Arg n ], namedArgs, _, _, _)) -> + | Some(Attrib(_, _, [ AttribStringArg s ; AttribInt32Arg n ], namedArgs, _, _, _)) -> let msg = UserCompilerMessage(s, n, m) let isError = match namedArgs with | ExtractAttribNamedArg "IsError" (AttribBoolArg v) -> v | _ -> false if isError && (not g.compilingFslib || n <> 1204) then ErrorD msg else WarnD msg - | _ -> CompleteD ) ++ (fun () -> - + match TryFindFSharpAttribute g g.attrib_ExperimentalAttribute attribs with - | Some(Attrib(_, _, [ AttribStringArg(s) ], _, _, _, _)) -> - WarnD(Experimental(s, m)) - | Some _ -> + | Some(Attrib(_, _, [ AttribStringArg(s) ], _, _, _, _)) -> + if isExperimentalAttributeDisabled s then + CompleteD + else + WarnD(Experimental(s, m)) + | Some _ -> WarnD(Experimental(FSComp.SR.experimentalConstruct (), m)) - | _ -> + | _ -> CompleteD - ) ++ (fun () -> + ) ++ (fun () -> match TryFindFSharpAttribute g g.attrib_UnverifiableAttribute attribs with | Some _ -> diff --git a/src/fsharp/AugmentWithHashCompare.fs b/src/fsharp/AugmentWithHashCompare.fs index ce562dedaa..87917c2950 100755 --- a/src/fsharp/AugmentWithHashCompare.fs +++ b/src/fsharp/AugmentWithHashCompare.fs @@ -883,11 +883,15 @@ let nonVirtualMethod c : ValMemberInfo = let unitArg = ValReprInfo.unitArgData let unaryArg = [ ValReprInfo.unnamedTopArg ] let tupArg = [ [ ValReprInfo.unnamedTopArg1; ValReprInfo.unnamedTopArg1 ] ] -let mkValSpec g (tcref: TyconRef) tmty vis slotsig methn ty argData = +let mkValSpec g (tcref: TyconRef) tmty vis slotsig methn ty argData = let m = tcref.Range let tps = tcref.Typars m - let final = isUnionTy g tmty || isRecdTy g tmty || isStructTy g tmty - let membInfo = match slotsig with None -> nonVirtualMethod tcref | Some slotsig -> slotImplMethod(final, tcref, slotsig) + let membInfo = + match slotsig with + | None -> nonVirtualMethod tcref + | Some slotsig -> + let final = isUnionTy g tmty || isRecdTy g tmty || isStructTy g tmty + slotImplMethod(final, tcref, slotsig) let inl = ValInline.Optional let args = ValReprInfo.unnamedTopArg :: argData let topValInfo = Some (ValReprInfo (ValReprInfo.InferTyparInfo tps, args, ValReprInfo.unnamedRetVal)) @@ -899,8 +903,8 @@ let MakeValsForCompareAugmentation g (tcref: TyconRef) = let tps = tcref.Typars m let vis = tcref.TypeReprAccessibility - mkValSpec g tcref tmty vis (Some(mkIComparableCompareToSlotSig g)) "CompareTo" (tps +-> (mkCompareObjTy g tmty)) unaryArg, - mkValSpec g tcref tmty vis (Some(mkGenericIComparableCompareToSlotSig g tmty)) "CompareTo" (tps +-> (mkCompareTy g tmty)) unaryArg + mkValSpec g tcref tmty vis (Some(mkIComparableCompareToSlotSig g)) "CompareTo" (tps +-> (mkCompareObjTy g tmty)) unaryArg, + mkValSpec g tcref tmty vis (Some(mkGenericIComparableCompareToSlotSig g tmty)) "CompareTo" (tps +-> (mkCompareTy g tmty)) unaryArg let MakeValsForCompareWithComparerAugmentation g (tcref: TyconRef) = let m = tcref.Range @@ -915,15 +919,15 @@ let MakeValsForEqualsAugmentation g (tcref: TyconRef) = let vis = tcref.TypeReprAccessibility let tps = tcref.Typars m - let objEqualsVal = mkValSpec g tcref tmty vis (Some(mkEqualsSlotSig g)) "Equals" (tps +-> (mkEqualsObjTy g tmty)) unaryArg - let nocEqualsVal = mkValSpec g tcref tmty vis (if tcref.Deref.IsExceptionDecl then None else Some(mkGenericIEquatableEqualsSlotSig g tmty)) "Equals" (tps +-> (mkEqualsTy g tmty)) unaryArg + let objEqualsVal = mkValSpec g tcref tmty vis (Some(mkEqualsSlotSig g)) "Equals" (tps +-> (mkEqualsObjTy g tmty)) unaryArg + let nocEqualsVal = mkValSpec g tcref tmty vis (if tcref.Deref.IsExceptionDecl then None else Some(mkGenericIEquatableEqualsSlotSig g tmty)) "Equals" (tps +-> (mkEqualsTy g tmty)) unaryArg objEqualsVal, nocEqualsVal let MakeValsForEqualityWithComparerAugmentation g (tcref: TyconRef) = let _, tmty = mkMinimalTy g tcref let vis = tcref.TypeReprAccessibility let tps = tcref.Typars tcref.Range - let objGetHashCodeVal = mkValSpec g tcref tmty vis (Some(mkGetHashCodeSlotSig g)) "GetHashCode" (tps +-> (mkHashTy g tmty)) unitArg + let objGetHashCodeVal = mkValSpec g tcref tmty vis (Some(mkGetHashCodeSlotSig g)) "GetHashCode" (tps +-> (mkHashTy g tmty)) unitArg let withcGetHashCodeVal = mkValSpec g tcref tmty vis (Some(mkIStructuralEquatableGetHashCodeSlotSig g)) "GetHashCode" (tps +-> (mkHashWithComparerTy g tmty)) unaryArg let withcEqualsVal = mkValSpec g tcref tmty vis (Some(mkIStructuralEquatableEqualsSlotSig g)) "Equals" (tps +-> (mkEqualsWithComparerTy g tmty)) tupArg objGetHashCodeVal, withcGetHashCodeVal, withcEqualsVal @@ -1071,23 +1075,28 @@ let MakeBindingsForEqualsAugmentation (g: TcGlobals) (tycon: Tycon) = elif tycon.IsRecordTycon || tycon.IsStructOrEnumTycon then mkEquals mkRecdEquality else [] -let rec TypeDefinitelyHasEquality g ty = - if isAppTy g ty && HasFSharpAttribute g g.attrib_NoEqualityAttribute (tcrefOfAppTy g ty).Attribs then +let rec TypeDefinitelyHasEquality g ty = + let appTy = tryAppTy g ty + match appTy with + | ValueSome(tcref,_) when HasFSharpAttribute g g.attrib_NoEqualityAttribute tcref.Attribs -> false - elif isTyparTy g ty && - (destTyparTy g ty).Constraints |> List.exists (function TyparConstraint.SupportsEquality _ -> true | _ -> false) then - true - else - match ty with - | SpecialEquatableHeadType g tinst -> - tinst |> List.forall (TypeDefinitelyHasEquality g) - | SpecialNotEquatableHeadType g _ -> - false - | _ -> - // The type is equatable because it has Object.Equals(...) - isAppTy g ty && - let tcref, tinst = destAppTy g ty - // Give a good error for structural types excluded from the equality relation because of their fields - not (TyconIsCandidateForAugmentationWithEquals g tcref.Deref && Option.isNone tcref.GeneratedHashAndEqualsWithComparerValues) && - // Check the (possibly inferred) structural dependencies - (tinst, tcref.TyparsNoRange) ||> List.lengthsEqAndForall2 (fun ty tp -> not tp.EqualityConditionalOn || TypeDefinitelyHasEquality g ty) + | _ -> + if isTyparTy g ty && + (destTyparTy g ty).Constraints |> List.exists (function TyparConstraint.SupportsEquality _ -> true | _ -> false) then + true + else + match ty with + | SpecialEquatableHeadType g tinst -> + tinst |> List.forall (TypeDefinitelyHasEquality g) + | SpecialNotEquatableHeadType g _ -> + false + | _ -> + // The type is equatable because it has Object.Equals(...) + match appTy with + | ValueSome(tcref,tinst) -> + // Give a good error for structural types excluded from the equality relation because of their fields + not (TyconIsCandidateForAugmentationWithEquals g tcref.Deref && Option.isNone tcref.GeneratedHashAndEqualsWithComparerValues) && + // Check the (possibly inferred) structural dependencies + (tinst, tcref.TyparsNoRange) + ||> List.lengthsEqAndForall2 (fun ty tp -> not tp.EqualityConditionalOn || TypeDefinitelyHasEquality g ty) + | _ -> false diff --git a/src/fsharp/CompileOps.fs b/src/fsharp/CompileOps.fs index ab20bfcf13..41d863dab0 100644 --- a/src/fsharp/CompileOps.fs +++ b/src/fsharp/CompileOps.fs @@ -73,7 +73,6 @@ let FSharpScriptFileSuffixes = [".fsscript";".fsx"] let doNotRequireNamespaceOrModuleSuffixes = [".mli";".ml"] @ FSharpScriptFileSuffixes let FSharpLightSyntaxFileSuffixes: string list = [ ".fs";".fsscript";".fsx";".fsi" ] - //---------------------------------------------------------------------------- // ERROR REPORTING //-------------------------------------------------------------------------- @@ -946,6 +945,7 @@ let OutputPhasedErrorR (os: StringBuilder) (err: PhasedDiagnostic) (canSuggestNa | Parser.TOKEN_COLON_QMARK-> getErrorString("Parser.TOKEN.COLON.QMARK") | Parser.TOKEN_INT32_DOT_DOT -> getErrorString("Parser.TOKEN.INT32.DOT.DOT") | Parser.TOKEN_DOT_DOT -> getErrorString("Parser.TOKEN.DOT.DOT") + | Parser.TOKEN_DOT_DOT_HAT -> getErrorString("Parser.TOKEN.DOT.DOT") | Parser.TOKEN_QUOTE -> getErrorString("Parser.TOKEN.QUOTE") | Parser.TOKEN_STAR -> getErrorString("Parser.TOKEN.STAR") | Parser.TOKEN_HIGH_PRECEDENCE_TYAPP -> getErrorString("Parser.TOKEN.HIGH.PRECEDENCE.TYAPP") @@ -1893,9 +1893,9 @@ type IRawFSharpAssemblyData = /// in the language service abstract TryGetILModuleDef: unit -> ILModuleDef option /// The raw F# signature data in the assembly, if any - abstract GetRawFSharpSignatureData: range * ilShortAssemName: string * fileName: string -> (string * (unit -> byte[])) list + abstract GetRawFSharpSignatureData: range * ilShortAssemName: string * fileName: string -> (string * (unit -> ReadOnlyByteMemory)) list /// The raw F# optimization data in the assembly, if any - abstract GetRawFSharpOptimizationData: range * ilShortAssemName: string * fileName: string -> (string * (unit -> byte[])) list + abstract GetRawFSharpOptimizationData: range * ilShortAssemName: string * fileName: string -> (string * (unit -> ReadOnlyByteMemory)) list /// The table of type forwarders in the assembly abstract GetRawTypeForwarders: unit -> ILExportedTypesAndForwarders /// The identity of the module @@ -2024,8 +2024,10 @@ type TcConfigBuilder = mutable implicitlyResolveAssemblies: bool mutable light: bool option mutable conditionalCompilationDefines: string list - mutable loadedSources: (range * string) list + mutable loadedSources: (range * string * string) list + mutable compilerToolPaths: string list mutable referencedDLLs: AssemblyReference list + mutable packageManagerLines: Map mutable projectReferences: IProjectReference list mutable knownUnresolvedReferences: UnresolvedAssemblyReference list reduceMemoryUsage: ReduceMemoryFlag @@ -2037,6 +2039,7 @@ type TcConfigBuilder = mutable mlCompatibility: bool mutable checkOverflow: bool mutable showReferenceResolutions: bool + mutable outputDir : string option mutable outputFile: string option mutable platform: ILPlatform option mutable prefer32Bit: bool @@ -2165,6 +2168,8 @@ type TcConfigBuilder = mutable pathMap: PathMap mutable langVersion: LanguageVersion + + mutable includePathAdded: string -> unit } static member Initial = @@ -2185,7 +2190,9 @@ type TcConfigBuilder = resolutionEnvironment = ResolutionEnvironment.EditingOrCompilation false framework = true implicitlyResolveAssemblies = true + compilerToolPaths = [] referencedDLLs = [] + packageManagerLines = Map.empty projectReferences = [] knownUnresolvedReferences = [] loadedSources = [] @@ -2198,6 +2205,7 @@ type TcConfigBuilder = mlCompatibility = false checkOverflow = false showReferenceResolutions = false + outputDir = None outputFile = None platform = None prefer32Bit = false @@ -2302,16 +2310,18 @@ type TcConfigBuilder = noConditionalErasure = false pathMap = PathMap.empty langVersion = LanguageVersion("default") + includePathAdded = ignore } static member CreateNew(legacyReferenceResolver, defaultFSharpBinariesDir, reduceMemoryUsage, implicitIncludeDir, - isInteractive, isInvalidationSupported, defaultCopyFSharpCore, tryGetMetadataSnapshot) = + isInteractive, isInvalidationSupported, defaultCopyFSharpCore, tryGetMetadataSnapshot, ?includePathAdded: string -> unit) = Debug.Assert(FileSystem.IsPathRootedShim implicitIncludeDir, sprintf "implicitIncludeDir should be absolute: '%s'" implicitIncludeDir) if (String.IsNullOrEmpty defaultFSharpBinariesDir) then failwith "Expected a valid defaultFSharpBinariesDir" + let includePathAdded = defaultArg includePathAdded ignore { TcConfigBuilder.Initial with implicitIncludeDir = implicitIncludeDir defaultFSharpBinariesDir = defaultFSharpBinariesDir @@ -2321,6 +2331,8 @@ type TcConfigBuilder = isInvalidationSupported = isInvalidationSupported copyFSharpCore = defaultCopyFSharpCore tryGetMetadataSnapshot = tryGetMetadataSnapshot + includePathAdded = includePathAdded + useFsiAuxLib = isInteractive } member tcConfigB.ResolveSourceFile(m, nm, pathLoadedFrom) = @@ -2396,19 +2408,21 @@ type TcConfigBuilder = | None -> false if ok && not (List.contains absolutePath tcConfigB.includes) then tcConfigB.includes <- tcConfigB.includes ++ absolutePath + tcConfigB.includePathAdded absolutePath - member tcConfigB.AddLoadedSource(m, path, pathLoadedFrom) = - if FileSystem.IsInvalidPathShim path then - warning(Error(FSComp.SR.buildInvalidFilename path, m)) + member tcConfigB.AddLoadedSource(m, originalPath, pathLoadedFrom) = + if FileSystem.IsInvalidPathShim originalPath then + warning(Error(FSComp.SR.buildInvalidFilename originalPath, m)) else let path = - match TryResolveFileUsingPaths(tcConfigB.includes @ [pathLoadedFrom], m, path) with + match TryResolveFileUsingPaths(tcConfigB.includes @ [pathLoadedFrom], m, originalPath) with | Some path -> path | None -> - // File doesn't exist in the paths. Assume it will be in the load-ed from directory. - ComputeMakePathAbsolute pathLoadedFrom path - if not (List.contains path (List.map snd tcConfigB.loadedSources)) then - tcConfigB.loadedSources <- tcConfigB.loadedSources ++ (m, path) + // File doesn't exist in the paths. Assume it will be in the load-ed from directory. + ComputeMakePathAbsolute pathLoadedFrom originalPath + if not (List.contains path (List.map (fun (_, _, path) -> path) tcConfigB.loadedSources)) then + tcConfigB.loadedSources <- tcConfigB.loadedSources ++ (m, originalPath, path) + member tcConfigB.AddEmbeddedSourceFile (file) = tcConfigB.embedSourceList <- tcConfigB.embedSourceList ++ file @@ -2416,6 +2430,12 @@ type TcConfigBuilder = member tcConfigB.AddEmbeddedResource filename = tcConfigB.embedResources <- tcConfigB.embedResources ++ filename + member tcConfigB.AddCompilerToolsByPath (path) = + if not (tcConfigB.compilerToolPaths |> List.exists (fun text -> path = text)) then // NOTE: We keep same paths if range is different. + let compilerToolPath = tcConfigB.compilerToolPaths |> List.tryPick (fun text -> if text = path then Some text else None) + if compilerToolPath.IsNone then + tcConfigB.compilerToolPaths <- tcConfigB.compilerToolPaths ++ path + member tcConfigB.AddReferencedAssemblyByPath (m, path) = if FileSystem.IsInvalidPathShim path then warning(Error(FSComp.SR.buildInvalidAssemblyName(path), m)) @@ -2423,6 +2443,13 @@ type TcConfigBuilder = let projectReference = tcConfigB.projectReferences |> List.tryPick (fun pr -> if pr.FileName = path then Some pr else None) tcConfigB.referencedDLLs <- tcConfigB.referencedDLLs ++ AssemblyReference(m, path, projectReference) + member tcConfigB.AddDependencyManagerText (packageManager:DependencyManagerIntegration.IDependencyManagerProvider, m, path:string) = + let path = DependencyManagerIntegration.removeDependencyManagerKey packageManager.Key path + + match tcConfigB.packageManagerLines |> Map.tryFind packageManager.Key with + | Some lines -> tcConfigB.packageManagerLines <- Map.add packageManager.Key (lines ++ (false, path, m)) tcConfigB.packageManagerLines + | _ -> tcConfigB.packageManagerLines <- Map.add packageManager.Key [false, path, m] tcConfigB.packageManagerLines + member tcConfigB.RemoveReferencedAssemblyByPath (m, path) = tcConfigB.referencedDLLs <- tcConfigB.referencedDLLs |> List.filter (fun ar -> not (Range.equals ar.Range m) || ar.Text <> path) @@ -2447,10 +2474,9 @@ type TcConfigBuilder = ri, fileNameOfPath ri, ILResourceAccess.Public -let OpenILBinary(filename, reduceMemoryUsage, ilGlobals, pdbDirPath, shadowCopyReferences, tryGetMetadataSnapshot) = +let OpenILBinary(filename, reduceMemoryUsage, pdbDirPath, shadowCopyReferences, tryGetMetadataSnapshot) = let opts: ILReaderOptions = - { ilGlobals = ilGlobals - metadataOnly = MetadataOnlyFlag.Yes + { metadataOnly = MetadataOnlyFlag.Yes reduceMemoryUsage = reduceMemoryUsage pdbDirPath = pdbDirPath tryGetMetadataSnapshot = tryGetMetadataSnapshot } @@ -2478,7 +2504,7 @@ type AssemblyResolution = resolvedPath: string prepareToolTip: unit -> string sysdir: bool - ilAssemblyRef: ILAssemblyRef option ref + mutable ilAssemblyRef: ILAssemblyRef option } override this.ToString() = sprintf "%s%s" (if this.sysdir then "[sys]" else "") this.resolvedPath @@ -2493,7 +2519,7 @@ type AssemblyResolution = // member this.GetILAssemblyRef(ctok, reduceMemoryUsage, tryGetMetadataSnapshot) = cancellable { - match !this.ilAssemblyRef with + match this.ilAssemblyRef with | Some assemblyRef -> return assemblyRef | None -> let! assemblyRefOpt = @@ -2515,13 +2541,12 @@ type AssemblyResolution = | None -> let readerSettings: ILReaderOptions = { pdbDirPath=None - ilGlobals = EcmaMscorlibILGlobals reduceMemoryUsage = reduceMemoryUsage metadataOnly = MetadataOnlyFlag.Yes tryGetMetadataSnapshot = tryGetMetadataSnapshot } use reader = OpenILModuleReader this.resolvedPath readerSettings mkRefToILAssembly reader.ILModuleDef.ManifestOfAssembly - this.ilAssemblyRef := Some assemblyRef + this.ilAssemblyRef <- Some assemblyRef return assemblyRef } @@ -2585,7 +2610,7 @@ type TcConfig private (data: TcConfigBuilder, validate: bool) = let dllReference, fileNameOpt = computeKnownDllReference getFSharpCoreLibraryName match fileNameOpt with | Some _ -> dllReference - | None -> AssemblyReference(range0, getDefaultFSharpCoreReference, None) + | None -> AssemblyReference(range0, getDefaultFSharpCoreLocation, None) // clrRoot: the location of the primary assembly (mscorlib.dll or netstandard.dll or System.Runtime.dll) // @@ -2633,6 +2658,7 @@ type TcConfig private (data: TcConfigBuilder, validate: bool) = member x.light = data.light member x.conditionalCompilationDefines = data.conditionalCompilationDefines member x.loadedSources = data.loadedSources + member x.compilerToolPaths = data.compilerToolPaths member x.referencedDLLs = data.referencedDLLs member x.knownUnresolvedReferences = data.knownUnresolvedReferences member x.clrRoot = clrRootValue @@ -2645,6 +2671,7 @@ type TcConfig private (data: TcConfigBuilder, validate: bool) = member x.mlCompatibility = data.mlCompatibility member x.checkOverflow = data.checkOverflow member x.showReferenceResolutions = data.showReferenceResolutions + member x.outputDir = data.outputDir member x.outputFile = data.outputFile member x.platform = data.platform member x.prefer32Bit = data.prefer32Bit @@ -2685,6 +2712,7 @@ type TcConfig private (data: TcConfigBuilder, validate: bool) = member x.embedAllSource = data.embedAllSource member x.embedSourceList = data.embedSourceList member x.sourceLink = data.sourceLink + member x.packageManagerLines = data.packageManagerLines member x.ignoreSymbolStoreSequencePoints = data.ignoreSymbolStoreSequencePoints member x.internConstantStrings = data.internConstantStrings member x.extraOptimizationIterations = data.extraOptimizationIterations @@ -2832,13 +2860,23 @@ type TcConfig private (data: TcConfigBuilder, validate: bool) = member tcConfig.GetAvailableLoadedSources() = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind BuildPhase.Parameter - let resolveLoadedSource (m, path) = + let resolveLoadedSource (m, originalPath, path) = try - if not(FileSystem.SafeExists path) then - error(LoadedSourceNotFoundIgnoring(path, m)) - None - else Some(m, path) + if not(FileSystem.SafeExists(path)) then + let secondTrial = + tcConfig.includes + |> List.tryPick (fun root -> + let path = ComputeMakePathAbsolute root originalPath + if FileSystem.SafeExists(path) then Some path else None) + + match secondTrial with + | Some path -> Some(m,path) + | None -> + error(LoadedSourceNotFoundIgnoring(path,m)) + None + else Some(m,path) with e -> errorRecovery e m; None + tcConfig.loadedSources |> List.choose resolveLoadedSource |> List.distinct @@ -2891,7 +2929,7 @@ type TcConfig private (data: TcConfigBuilder, validate: bool) = resolvedPath = resolved prepareToolTip = (fun () -> resolved) sysdir = sysdir - ilAssemblyRef = ref None } + ilAssemblyRef = None } | None -> if String.Compare(ext, ".dll", StringComparison.OrdinalIgnoreCase)=0 @@ -2926,7 +2964,7 @@ type TcConfig private (data: TcConfigBuilder, validate: bool) = let line(append: string) = append.Trim([|' '|])+"\n" line resolved + line fusionName) sysdir = sysdir - ilAssemblyRef = ref None } + ilAssemblyRef = None } | None -> None else None @@ -3056,7 +3094,7 @@ type TcConfig private (data: TcConfigBuilder, validate: bool) = resolvedPath=canonicalItemSpec prepareToolTip = (fun () -> resolvedFile.prepareToolTip (originalReference.Text, canonicalItemSpec)) sysdir= tcConfig.IsSystemAssembly canonicalItemSpec - ilAssemblyRef = ref None }) + ilAssemblyRef = None }) (maxIndexOfReference, assemblyResolutions)) // When calculating the resulting resolutions, we're going to use the index of the reference @@ -3090,8 +3128,8 @@ type TcConfig private (data: TcConfigBuilder, validate: bool) = else resultingResolutions, unresolvedReferences |> List.map (fun (name, _, r) -> (name, r)) |> List.map UnresolvedAssemblyReference - member tcConfig.PrimaryAssemblyDllReference() = primaryAssemblyReference + member tcConfig.CoreLibraryDllReference() = fslibReference @@ -3394,7 +3432,7 @@ let ParseOneInputLexbuf (tcConfig: TcConfig, lexResourceManager, conditionalComp try let skip = true in (* don't report whitespace from lexer *) let lightSyntaxStatus = LightSyntaxStatus (tcConfig.ComputeLightSyntaxInitialStatus filename, true) - let lexargs = mkLexargs (filename, conditionalCompilationDefines@tcConfig.conditionalCompilationDefines, lightSyntaxStatus, lexResourceManager, ref [], errorLogger, tcConfig.pathMap) + let lexargs = mkLexargs (filename, conditionalCompilationDefines@tcConfig.conditionalCompilationDefines, lightSyntaxStatus, lexResourceManager, [], errorLogger, tcConfig.pathMap) let shortFilename = SanitizeFileName filename tcConfig.implicitIncludeDir let input = Lexhelp.usingLexbufForParsing (lexbuf, filename) (fun lexbuf -> @@ -3436,7 +3474,7 @@ let ParseOneInputLexbuf (tcConfig: TcConfig, lexResourceManager, conditionalComp if verbose then dprintn ("Parsed "+shortFilename) Some input with e -> (* errorR(Failure("parse failed")); *) errorRecovery e rangeStartup; None - + let ParseOneInputFile (tcConfig: TcConfig, lexResourceManager, conditionalCompilationDefines, filename, isLastCompiland, errorLogger, retryLocked) = try @@ -3445,7 +3483,8 @@ let ParseOneInputFile (tcConfig: TcConfig, lexResourceManager, conditionalCompil if not(FileSystem.SafeExists filename) then error(Error(FSComp.SR.buildCouldNotFindSourceFile filename, rangeStartup)) let isFeatureSupported featureId = tcConfig.langVersion.SupportsFeature featureId - let lexbuf = UnicodeLexing.UnicodeFileAsLexbuf(isFeatureSupported, filename, tcConfig.inputCodePage, retryLocked) + use reader = File.OpenReaderAndRetry (filename, tcConfig.inputCodePage, retryLocked) + let lexbuf = UnicodeLexing.StreamReaderAsLexbuf(isFeatureSupported, reader) ParseOneInputLexbuf(tcConfig, lexResourceManager, conditionalCompilationDefines, lexbuf, filename, isLastCompiland, errorLogger) else error(Error(FSComp.SR.buildInvalidSourceFileExtension(SanitizeFileName filename tcConfig.implicitIncludeDir), rangeStartup)) with e -> (* errorR(Failure("parse failed")); *) errorRecovery e rangeStartup; None @@ -3511,13 +3550,9 @@ type TcAssemblyResolutions(tcConfig: TcConfig, results: AssemblyResolution list, let assumeDotNetFramework = primaryReference.SimpleAssemblyNameIs("mscorlib") if tcConfig.framework then - for s in defaultReferencesForScriptsAndOutOfProjectSources assumeDotNetFramework tcConfig.useSdkRefs do + for s in defaultReferencesForScriptsAndOutOfProjectSources tcConfig.useFsiAuxLib assumeDotNetFramework tcConfig.useSdkRefs do yield AssemblyReference(rangeStartup, (if s.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) then s else s+".dll"), None) - if tcConfig.useFsiAuxLib then - let name = Path.Combine(tcConfig.fsharpBinariesDir, getFsiLibraryName + ".dll") - yield AssemblyReference(rangeStartup, name, None) - yield! tcConfig.referencedDLLs ] @@ -3527,24 +3562,24 @@ type TcAssemblyResolutions(tcConfig: TcConfig, results: AssemblyResolution list, let frameworkDLLs, nonFrameworkReferences = resolutions.GetAssemblyResolutions() |> List.partition (fun r -> r.sysdir) let unresolved = resolutions.GetUnresolvedReferences() #if DEBUG - let itFailed = ref false + let mutable itFailed = false let addedText = "\nIf you want to debug this right now, attach a debugger, and put a breakpoint in 'CompileOps.fs' near the text '!itFailed', and you can re-step through the assembly resolution logic." unresolved |> List.iter (fun (UnresolvedAssemblyReference(referenceText, _ranges)) -> if referenceText.Contains("mscorlib") then System.Diagnostics.Debug.Assert(false, sprintf "whoops, did not resolve mscorlib: '%s'%s" referenceText addedText) - itFailed := true) + itFailed <- true) frameworkDLLs |> List.iter (fun x -> if not(FileSystem.IsPathRootedShim(x.resolvedPath)) then System.Diagnostics.Debug.Assert(false, sprintf "frameworkDLL should be absolute path: '%s'%s" x.resolvedPath addedText) - itFailed := true) + itFailed <- true) nonFrameworkReferences |> List.iter (fun x -> if not(FileSystem.IsPathRootedShim(x.resolvedPath)) then System.Diagnostics.Debug.Assert(false, sprintf "nonFrameworkReference should be absolute path: '%s'%s" x.resolvedPath addedText) - itFailed := true) - if !itFailed then + itFailed <- true) + if itFailed then // idea is, put a breakpoint here and then step through let assemblyList = TcAssemblyResolutions.GetAllDllReferences tcConfig let resolutions = TcAssemblyResolutions.ResolveAssemblyReferences (ctok, tcConfig, assemblyList, []) @@ -3589,7 +3624,7 @@ let IsReflectedDefinitionsResource (r: ILResource) = let MakeILResource rName bytes = { Name = rName - Location = ILResourceLocation.LocalOut bytes + Location = ILResourceLocation.Local(ByteMemory.FromArray(bytes).AsReadOnly()) Access = ILResourceAccess.Public CustomAttrsStored = storeILCustomAttrs emptyILCustomAttrs MetadataIndex = NoMetadataIdx } @@ -3598,7 +3633,7 @@ let PickleToResource inMem file (g: TcGlobals) scope rName p x = let file = PathMap.apply g.pathMap file { Name = rName - Location = (let bytes = pickleObjWithDanglingCcus inMem file g scope p x in ILResourceLocation.LocalOut bytes) + Location = (let bytes = pickleObjWithDanglingCcus inMem file g scope p x in ILResourceLocation.Local(ByteMemory.FromArray(bytes).AsReadOnly())) Access = ILResourceAccess.Public CustomAttrsStored = storeILCustomAttrs emptyILCustomAttrs MetadataIndex = NoMetadataIdx } @@ -3656,7 +3691,7 @@ type RawFSharpAssemblyDataBackedByFileOnDisk (ilModule: ILModuleDef, ilAssemblyR let sigFileName = Path.ChangeExtension(filename, "sigdata") if not (FileSystem.SafeExists sigFileName) then error(Error(FSComp.SR.buildExpectedSigdataFile (FileSystem.GetFullPathShim sigFileName), m)) - [ (ilShortAssemName, fun () -> FileSystem.ReadAllBytesShim sigFileName)] + [ (ilShortAssemName, fun () -> ByteMemory.FromFile(sigFileName, FileAccess.Read, canShadowCopy=true).AsReadOnly())] else sigDataReaders sigDataReaders @@ -3671,7 +3706,7 @@ type RawFSharpAssemblyDataBackedByFileOnDisk (ilModule: ILModuleDef, ilAssemblyR let optDataFile = Path.ChangeExtension(filename, "optdata") if not (FileSystem.SafeExists optDataFile) then error(Error(FSComp.SR.buildExpectedFileAlongSideFSharpCore(optDataFile, FileSystem.GetFullPathShim optDataFile), m)) - [ (ilShortAssemName, (fun () -> FileSystem.ReadAllBytesShim optDataFile))] + [ (ilShortAssemName, (fun () -> ByteMemory.FromFile(optDataFile, FileAccess.Read, canShadowCopy=true).AsReadOnly()))] else optDataReaders optDataReaders @@ -3721,6 +3756,38 @@ type TcConfigProvider = // TcImports //-------------------------------------------------------------------------- +[] +type TcImportsSafeDisposal + (disposeActions: ResizeArray unit>, +#if !NO_EXTENSIONTYPING + disposeTypeProviderActions: ResizeArray unit>, +#endif + compilationThread: ICompilationThread) = + + let mutable isDisposed = false + + let dispose () = + // disposing deliberately only closes this tcImports, not the ones up the chain + isDisposed <- true + if verbose then + dprintf "disposing of TcImports, %d binaries\n" disposeActions.Count +#if !NO_EXTENSIONTYPING + let actions = disposeTypeProviderActions + if actions.Count > 0 then + compilationThread.EnqueueWork (fun _ -> for action in actions do action()) +#endif + for action in disposeActions do action() + + override _.Finalize() = + dispose () + + interface IDisposable with + + member this.Dispose() = + if not isDisposed then + GC.SuppressFinalize this + dispose () + #if !NO_EXTENSIONTYPING // These are hacks in order to allow TcImports to be held as a weak reference inside a type provider. // The reason is due to older type providers compiled using an older TypeProviderSDK, that SDK used reflection on fields and properties to determine the contract. @@ -3765,34 +3832,24 @@ and [] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse let mutable dllTable: NameMap = NameMap.empty let mutable ccuInfos: ImportedAssembly list = [] let mutable ccuTable: NameMap = NameMap.empty - let mutable disposeActions = [] + let disposeActions = ResizeArray() let mutable disposed = false let mutable ilGlobalsOpt = ilGlobalsOpt let mutable tcGlobals = None #if !NO_EXTENSIONTYPING - let mutable disposeTypeProviderActions = [] + let disposeTypeProviderActions = ResizeArray() let mutable generatedTypeRoots = new System.Collections.Generic.Dictionary() let mutable tcImportsWeak = TcImportsWeakHack (WeakReference<_> this) #endif + + let disposal = new TcImportsSafeDisposal(disposeActions, disposeTypeProviderActions, compilationThread) let CheckDisposed() = if disposed then assert false let dispose () = CheckDisposed() - // disposing deliberately only closes this tcImports, not the ones up the chain - disposed <- true - if verbose then - dprintf "disposing of TcImports, %d binaries\n" disposeActions.Length -#if !NO_EXTENSIONTYPING - let actions = disposeTypeProviderActions - disposeTypeProviderActions <- [] - if actions.Length > 0 then - compilationThread.EnqueueWork (fun _ -> for action in actions do action()) -#endif - let actions = disposeActions - disposeActions <- [] - for action in actions do action() + (disposal :> IDisposable).Dispose() static let ccuHasType (ccu: CcuThunk) (nsname: string list) (tname: string) = let matchNameSpace (entityOpt: Entity option) n = @@ -3944,8 +4001,7 @@ and [] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse let tcConfig = tcConfigP.Get ctok let ilModule, ilAssemblyRefs = let opts: ILReaderOptions = - { ilGlobals = g.ilg - reduceMemoryUsage = tcConfig.reduceMemoryUsage + { reduceMemoryUsage = tcConfig.reduceMemoryUsage pdbDirPath = None metadataOnly = MetadataOnlyFlag.Yes tryGetMetadataSnapshot = tcConfig.tryGetMetadataSnapshot } @@ -4009,12 +4065,12 @@ and [] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse member private tcImports.AttachDisposeAction action = CheckDisposed() - disposeActions <- action :: disposeActions + disposeActions.Add action #if !NO_EXTENSIONTYPING member private tcImports.AttachDisposeTypeProviderAction action = CheckDisposed() - disposeTypeProviderActions <- action :: disposeTypeProviderActions + disposeTypeProviderActions.Add action #endif // Note: the returned binary reader is associated with the tcImports, i.e. when the tcImports are closed @@ -4038,15 +4094,8 @@ and [] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse else None - let ilGlobals = - // ILScopeRef.Local can be used only for primary assembly (mscorlib or System.Runtime) itself - // Remaining assemblies should be opened using existing ilGlobals (so they can properly locate fundamental types) - match ilGlobalsOpt with - | None -> mkILGlobals ILScopeRef.Local - | Some g -> g - let ilILBinaryReader = - OpenILBinary (filename, tcConfig.reduceMemoryUsage, ilGlobals, pdbDirPath, tcConfig.shadowCopyReferences, tcConfig.tryGetMetadataSnapshot) + OpenILBinary (filename, tcConfig.reduceMemoryUsage, pdbDirPath, tcConfig.shadowCopyReferences, tcConfig.tryGetMetadataSnapshot) tcImports.AttachDisposeAction(fun _ -> (ilILBinaryReader :> IDisposable).Dispose()) ilILBinaryReader.ILModuleDef, ilILBinaryReader.ILAssemblyRefs @@ -4209,15 +4258,22 @@ and [] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse let systemRuntimeContainsType = // NOTE: do not touch this, edit: but we did, we had no choice - TPs cannot hold a strong reference on TcImports "ever". let tcImports = tcImportsWeak - let systemRuntimeContainsTypeRef = ref (fun typeName -> tcImports.SystemRuntimeContainsType typeName) - tcImportsStrong.AttachDisposeTypeProviderAction(fun () -> systemRuntimeContainsTypeRef := (fun _ -> raise (System.ObjectDisposedException("The type provider has been disposed")))) - fun arg -> systemRuntimeContainsTypeRef.Value arg - - let providers = - [ for designTimeAssemblyName in designTimeAssemblyNames do - yield! ExtensionTyping.GetTypeProvidersOfAssembly(fileNameOfRuntimeAssembly, ilScopeRefOfRuntimeAssembly, designTimeAssemblyName, typeProviderEnvironment, - tcConfig.isInvalidationSupported, tcConfig.isInteractive, systemRuntimeContainsType, primaryAssemblyVersion, m) ] - + let mutable systemRuntimeContainsTypeRef = fun typeName -> tcImports.SystemRuntimeContainsType typeName + tcImportsStrong.AttachDisposeTypeProviderAction(fun () -> systemRuntimeContainsTypeRef <- fun _ -> raise (System.ObjectDisposedException("The type provider has been disposed"))) + fun arg -> systemRuntimeContainsTypeRef arg + + let providers = [ + for designTimeAssemblyName in designTimeAssemblyNames do + yield! ExtensionTyping.GetTypeProvidersOfAssembly(fileNameOfRuntimeAssembly, + ilScopeRefOfRuntimeAssembly, + designTimeAssemblyName, + typeProviderEnvironment, + tcConfig.isInvalidationSupported, + tcConfig.isInteractive, + systemRuntimeContainsType, + primaryAssemblyVersion, + tcConfig.compilerToolPaths, + m) ] // Note, type providers are disposable objects. The TcImports owns the provider objects - when/if it is disposed, the providers are disposed. // We ignore all exceptions from provider disposal. for provider in providers do @@ -4500,7 +4556,6 @@ and [] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse member tcImports.RegisterAndImportReferencedAssemblies (ctok, nms: AssemblyResolution list) = cancellable { CheckDisposed() - let! results = nms |> Cancellable.each (fun nm -> cancellable { @@ -4635,11 +4690,48 @@ and [] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse | (_, [ResolvedImportedAssembly ccu]) -> ccu.FSharpViewOfMetadata.ILScopeRef | _ -> failwith "unexpected" - let ilGlobals = mkILGlobals primaryScopeRef + let primaryAssemblyResolvedPath = + match primaryAssemblyResolution with + | [primaryAssemblyResolution] -> primaryAssemblyResolution.resolvedPath + | _ -> failwith "unexpected" + + let resolvedAssemblies = tcResolutions.GetAssemblyResolutions() + + let readerSettings: ILReaderOptions = + { pdbDirPath=None + reduceMemoryUsage = tcConfig.reduceMemoryUsage + metadataOnly = MetadataOnlyFlag.Yes + tryGetMetadataSnapshot = tcConfig.tryGetMetadataSnapshot } + + let tryFindAssemblyByExportedType manifest (exportedType: ILExportedTypeOrForwarder) = + match exportedType.ScopeRef, primaryScopeRef with + | ILScopeRef.Assembly aref1, ILScopeRef.Assembly aref2 when aref1.EqualsIgnoringVersion aref2 -> + mkRefToILAssembly manifest + |> Some + | _ -> + None + + let tryFindAssemblyThatForwardsToPrimaryAssembly manifest = + manifest.ExportedTypes.TryFindByName "System.Object" + |> Option.bind (tryFindAssemblyByExportedType manifest) + + // Determine what other assemblies could have been the primary assembly + // by checking to see if "System.Object" is an exported type. + let assembliesThatForwardToPrimaryAssembly = + resolvedAssemblies + |> List.choose (fun resolvedAssembly -> + if primaryAssemblyResolvedPath <> resolvedAssembly.resolvedPath then + let reader = OpenILModuleReader resolvedAssembly.resolvedPath readerSettings + reader.ILModuleDef.Manifest + |> Option.bind tryFindAssemblyThatForwardsToPrimaryAssembly + else + None) + + let ilGlobals = mkILGlobals (primaryScopeRef, assembliesThatForwardToPrimaryAssembly) frameworkTcImports.SetILGlobals ilGlobals // Load the rest of the framework DLLs all at once (they may be mutually recursive) - let! _assemblies = frameworkTcImports.RegisterAndImportReferencedAssemblies (ctok, tcResolutions.GetAssemblyResolutions()) + let! _assemblies = frameworkTcImports.RegisterAndImportReferencedAssemblies (ctok, resolvedAssemblies) // These are the DLLs we can search for well-known types let sysCcus = @@ -4678,11 +4770,12 @@ and [] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse error(InternalError("BuildFrameworkTcImports: no successful import of "+coreLibraryResolution.resolvedPath, coreLibraryResolution.originalReference.Range)) | None -> error(InternalError(sprintf "BuildFrameworkTcImports: no resolution of '%s'" coreLibraryReference.Text, rangeStartup)) - IlxSettings.ilxFsharpCoreLibAssemRef := + IlxSettings.ilxFsharpCoreLibAssemRef <- (let scoref = fslibCcuInfo.ILScopeRef match scoref with | ILScopeRef.Assembly aref -> Some aref - | ILScopeRef.Local | ILScopeRef.Module _ -> error(InternalError("not ILScopeRef.Assembly", rangeStartup))) + | ILScopeRef.Local | ILScopeRef.Module _ | ILScopeRef.PrimaryAssembly -> + error(InternalError("not ILScopeRef.Assembly", rangeStartup))) fslibCcuInfo.FSharpViewOfMetadata // OK, now we have both mscorlib.dll and FSharp.Core.dll we can create TcGlobals @@ -4693,11 +4786,11 @@ and [] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse #if DEBUG // the global_g reference cell is used only for debug printing - global_g := Some tcGlobals + global_g <- Some tcGlobals #endif // do this prior to parsing, since parsing IL assembly code may refer to mscorlib #if !NO_INLINE_IL_PARSER - FSharp.Compiler.AbstractIL.Internal.AsciiConstants.parseILGlobals := tcGlobals.ilg + FSharp.Compiler.AbstractIL.Internal.AsciiConstants.parseILGlobals <- tcGlobals.ilg #endif frameworkTcImports.SetTcGlobals tcGlobals return tcGlobals, frameworkTcImports @@ -4710,9 +4803,6 @@ and [] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse knownUnresolved |> List.map (function UnresolvedAssemblyReference(file, originalReferences) -> file, originalReferences) |> List.iter reportAssemblyNotResolved - - override tcImports.Finalize () = - dispose () static member BuildNonFrameworkTcImports (ctok, tcConfigP: TcConfigProvider, tcGlobals: TcGlobals, baseTcImports, nonFrameworkReferences, knownUnresolved) = cancellable { @@ -4738,7 +4828,6 @@ and [] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse interface System.IDisposable with member tcImports.Dispose() = dispose () - GC.SuppressFinalize tcImports override tcImports.ToString() = "TcImports(...)" @@ -4764,14 +4853,13 @@ let RequireDLL (ctok, tcImports: TcImports, tcEnv, thisAssemblyName, m, file, as let tcEnv = (tcEnv, asms) ||> List.fold buildTcEnv tcEnv, (dllinfos, asms) - - -let ProcessMetaCommandsFromInput - (nowarnF: 'state -> range * string -> 'state, - dllRequireF: 'state -> range * string -> 'state, - loadSourceF: 'state -> range * string -> unit) - (tcConfig: TcConfigBuilder, inp, pathOfMetaCommandSource, state0) = - +let ProcessMetaCommandsFromInput + (nowarnF: 'state -> range * string -> 'state, + dllRequireF: 'state -> range * string -> 'state, + packageRequireF: 'state -> DependencyManagerIntegration.IDependencyManagerProvider * range * string -> 'state, + loadSourceF: 'state -> range * string -> unit) + (tcConfig:TcConfigBuilder, inp, pathOfMetaCommandSource, state0) = + use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind BuildPhase.Parse let canHaveScriptMetaCommands = @@ -4794,18 +4882,34 @@ let ProcessMetaCommandsFromInput | _ -> errorR(Error(FSComp.SR.buildInvalidHashIDirective(), m)) state - | ParsedHashDirective("nowarn", numbers, m) -> - List.fold (fun state d -> nowarnF state (m, d)) state numbers - | ParsedHashDirective(("reference" | "r"), args, m) -> - if not canHaveScriptMetaCommands then + | ParsedHashDirective("nowarn",numbers,m) -> + List.fold (fun state d -> nowarnF state (m,d)) state numbers + + | ParsedHashDirective(("reference" | "r"),args,m) -> + if not canHaveScriptMetaCommands then errorR(HashReferenceNotAllowedInNonScript m) - match args with - | [path] -> - matchedm<-m - dllRequireF state (m, path) - | _ -> + + match args with + | [path] -> + matchedm <- m + match DependencyManagerIntegration.tryFindDependencyManagerInPath tcConfig.compilerToolPaths tcConfig.outputDir m (path:string) with + | DependencyManagerIntegration.ReferenceType.RegisteredDependencyManager packageManager -> + if tcConfig.langVersion.SupportsFeature(LanguageFeature.PackageManagement) then + packageRequireF state (packageManager,m,path) + else + errorR(Error(FSComp.SR.packageManagementRequiresVFive(), m)) + state + + // #r "Assembly" + | DependencyManagerIntegration.ReferenceType.Library path -> + dllRequireF state (m,path) + + | DependencyManagerIntegration.ReferenceType.UnknownType -> + state // error already reported + | _ -> errorR(Error(FSComp.SR.buildInvalidHashrDirective(), m)) state + | ParsedHashDirective("load", args, m) -> if not canHaveScriptMetaCommands then errorR(HashDirectiveNotAllowedInNonScript m) @@ -4879,19 +4983,21 @@ let ProcessMetaCommandsFromInput let ApplyNoWarnsToTcConfig (tcConfig: TcConfig, inp: ParsedInput, pathOfMetaCommandSource) = // Clone let tcConfigB = tcConfig.CloneOfOriginalBuilder - let addNoWarn = fun () (m, s) -> tcConfigB.TurnWarningOff(m, s) - let addReferencedAssemblyByPath = fun () (_m, _s) -> () - let addLoadedSource = fun () (_m, _s) -> () - ProcessMetaCommandsFromInput (addNoWarn, addReferencedAssemblyByPath, addLoadedSource) (tcConfigB, inp, pathOfMetaCommandSource, ()) + let addNoWarn = fun () (m,s) -> tcConfigB.TurnWarningOff(m, s) + let addReferencedAssemblyByPath = fun () (_m,_s) -> () + let addDependencyManagerText = fun () (_prefix,_m,_s) -> () + let addLoadedSource = fun () (_m,_s) -> () + ProcessMetaCommandsFromInput (addNoWarn, addReferencedAssemblyByPath, addDependencyManagerText, addLoadedSource) (tcConfigB, inp, pathOfMetaCommandSource, ()) TcConfig.Create(tcConfigB, validate=false) let ApplyMetaCommandsFromInputToTcConfig (tcConfig: TcConfig, inp: ParsedInput, pathOfMetaCommandSource) = // Clone let tcConfigB = tcConfig.CloneOfOriginalBuilder let getWarningNumber = fun () _ -> () - let addReferencedAssemblyByPath = fun () (m, s) -> tcConfigB.AddReferencedAssemblyByPath(m, s) - let addLoadedSource = fun () (m, s) -> tcConfigB.AddLoadedSource(m, s, pathOfMetaCommandSource) - ProcessMetaCommandsFromInput (getWarningNumber, addReferencedAssemblyByPath, addLoadedSource) (tcConfigB, inp, pathOfMetaCommandSource, ()) + let addReferencedAssemblyByPath = fun () (m,s) -> tcConfigB.AddReferencedAssemblyByPath(m,s) + let addDependencyManagerText = fun () (packageManager, m,s) -> tcConfigB.AddDependencyManagerText(packageManager,m,s) + let addLoadedSource = fun () (m,s) -> tcConfigB.AddLoadedSource(m,s,pathOfMetaCommandSource) + ProcessMetaCommandsFromInput (getWarningNumber, addReferencedAssemblyByPath, addDependencyManagerText, addLoadedSource) (tcConfigB, inp, pathOfMetaCommandSource, ()) TcConfig.Create(tcConfigB, validate=false) //---------------------------------------------------------------------------- @@ -4903,7 +5009,6 @@ let GetAssemblyResolutionInformation(ctok, tcConfig: TcConfig) = let assemblyList = TcAssemblyResolutions.GetAllDllReferences tcConfig let resolutions = TcAssemblyResolutions.ResolveAssemblyReferences (ctok, tcConfig, assemblyList, []) resolutions.GetAssemblyResolutions(), resolutions.GetUnresolvedReferences() - [] type LoadClosureInput = @@ -4923,7 +5028,7 @@ type LoadClosure = /// The list of all sources in the closure with inputs when available Inputs: LoadClosureInput list /// The #load, including those that didn't resolve - OriginalLoadReferences: (range * string) list + OriginalLoadReferences: (range * string * string) list /// The #nowarns NoWarns: (string * range list) list /// Diagnostics seen while processing resolutions @@ -4939,9 +5044,9 @@ type CodeContext = | CompilationAndEvaluation // in fsi.exe | Compilation // in fsc.exe | Editing // in VS - -module private ScriptPreprocessClosure = +module ScriptPreprocessClosure = + open Internal.Utilities.Text.Lexing /// Represents an input to the closure finding process type ClosureSource = ClosureSource of filename: string * referenceRange: range * sourceText: ISourceText * parseRequired: bool @@ -5037,12 +5142,14 @@ module private ScriptPreprocessClosure = (tcConfig: TcConfig, inp: ParsedInput, pathOfMetaCommandSource) = let tcConfigB = tcConfig.CloneOfOriginalBuilder - let nowarns = ref [] - let getWarningNumber = fun () (m, s) -> nowarns := (s, m) :: !nowarns + let mutable nowarns = [] + let getWarningNumber = fun () (m, s) -> nowarns <- (s, m) :: nowarns let addReferencedAssemblyByPath = fun () (m, s) -> tcConfigB.AddReferencedAssemblyByPath(m, s) + let addDependencyManagerText = fun () (packageManagerPrefix,m,s) -> tcConfigB.AddDependencyManagerText(packageManagerPrefix,m,s) + let addLoadedSource = fun () (m, s) -> tcConfigB.AddLoadedSource(m, s, pathOfMetaCommandSource) try - ProcessMetaCommandsFromInput (getWarningNumber, addReferencedAssemblyByPath, addLoadedSource) (tcConfigB, inp, pathOfMetaCommandSource, ()) + ProcessMetaCommandsFromInput (getWarningNumber, addReferencedAssemblyByPath, addDependencyManagerText, addLoadedSource) (tcConfigB, inp, pathOfMetaCommandSource, ()) with ReportedError _ -> // Recover by using whatever did end up in the tcConfig () @@ -5054,40 +5161,86 @@ module private ScriptPreprocessClosure = let tcConfigB = tcConfig.CloneOfOriginalBuilder TcConfig.Create(tcConfigB, validate=false), nowarns - let FindClosureFiles - (closureSources, tcConfig: TcConfig, codeContext, - lexResourceManager: Lexhelp.LexResourceManager) = - - let tcConfig = ref tcConfig + let FindClosureFiles(mainFile, _m, closureSources, origTcConfig:TcConfig, codeContext, lexResourceManager: Lexhelp.LexResourceManager) = + let mutable tcConfig = origTcConfig let observedSources = Observed() - let rec loop (ClosureSource(filename, m, sourceText, parseRequired)) = - [ if not (observedSources.HaveSeen(filename)) then + let loadScripts = HashSet<_>() + + // Resolve the packages + let rec resolveDependencyManagerSources scriptName = + if not (loadScripts.Contains scriptName) then + [ for kv in tcConfig.packageManagerLines do + let packageManagerKey, packageManagerLines = kv.Key, kv.Value + match packageManagerLines with + | [] -> () + | (_, _, m)::_ -> + match tcConfig.packageManagerLines |> Map.tryFind packageManagerKey with + | Some oldDependencyManagerLines when oldDependencyManagerLines = packageManagerLines -> () + | _ -> + match DependencyManagerIntegration.tryFindDependencyManagerByKey tcConfig.compilerToolPaths tcConfig.outputDir m packageManagerKey with + | None -> + errorR(DependencyManagerIntegration.createPackageManagerUnknownError tcConfig.compilerToolPaths tcConfig.outputDir packageManagerKey m) + | Some packageManager -> + let inline snd3 (_, b, _) = b + let packageManagerTextLines = packageManagerLines |> List.map snd3 + + match DependencyManagerIntegration.resolve packageManager tcConfig.implicitIncludeDir mainFile scriptName m packageManagerTextLines with + | None -> () // error already reported + | Some (succeeded, generatedScripts, additionalIncludeFolders) -> //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + // This may incrementally update tcConfig too with new #r references + // New package text is ignored on this second phase + match succeeded with + | true -> + // Resolution produced no errors + if not (isNil additionalIncludeFolders) then + let tcConfigB = tcConfig.CloneOfOriginalBuilder + for folder in additionalIncludeFolders do + tcConfigB.AddIncludePath(m, folder, "") + tcConfigB.packageManagerLines <- tcConfigB.packageManagerLines |> Map.map(fun _ l -> l |> List.map(fun (_, p, m) -> true, p, m)) + tcConfig <- TcConfig.Create(tcConfigB, validate=false) + for script in generatedScripts do + let scriptText = File.ReadAllText script + loadScripts.Add script |> ignore + let iSourceText = SourceText.ofString scriptText + yield! loop (ClosureSource(script, m, iSourceText, true)) + | false -> + // Resolution produced errors update packagerManagerLines entries to note these failure + // failed resolutions will no longer be considered + let tcConfigB = tcConfig.CloneOfOriginalBuilder + tcConfigB.packageManagerLines <- tcConfigB.packageManagerLines |> Map.map(fun _ l -> l |> List.filter(fun (tried, _, _) -> tried)) + tcConfig <- TcConfig.Create(tcConfigB, validate=false)] + else [] + + and loop (ClosureSource(filename, m, sourceText, parseRequired)) = + [ if not (observedSources.HaveSeen(filename)) then observedSources.SetSeen(filename) //printfn "visiting %s" filename if IsScript filename || parseRequired then let parseResult, parseDiagnostics = - let errorLogger = CapturingErrorLogger("FindClosureParse") + let errorLogger = CapturingErrorLogger("FindClosureParse") use _unwindEL = PushErrorLoggerPhaseUntilUnwind (fun _ -> errorLogger) - let result = ParseScriptText (filename, sourceText, !tcConfig, codeContext, lexResourceManager, errorLogger) + let result = ParseScriptText (filename, sourceText, tcConfig, codeContext, lexResourceManager, errorLogger) result, errorLogger.Diagnostics match parseResult with - | Some parsedScriptAst -> - let errorLogger = CapturingErrorLogger("FindClosureMetaCommands") + | Some parsedScriptAst -> + let errorLogger = CapturingErrorLogger("FindClosureMetaCommands") use _unwindEL = PushErrorLoggerPhaseUntilUnwind (fun _ -> errorLogger) let pathOfMetaCommandSource = Path.GetDirectoryName filename - let preSources = (!tcConfig).GetAvailableLoadedSources() + let preSources = tcConfig.GetAvailableLoadedSources() - let tcConfigResult, noWarns = ApplyMetaCommandsFromInputToTcConfigAndGatherNoWarn (!tcConfig, parsedScriptAst, pathOfMetaCommandSource) - tcConfig := tcConfigResult // We accumulate the tcConfig in order to collect assembly references + let tcConfigResult, noWarns = ApplyMetaCommandsFromInputToTcConfigAndGatherNoWarn (tcConfig, parsedScriptAst, pathOfMetaCommandSource) + tcConfig <- tcConfigResult // We accumulate the tcConfig in order to collect assembly references - let postSources = (!tcConfig).GetAvailableLoadedSources() + let postSources = tcConfig.GetAvailableLoadedSources() let sources = if preSources.Length < postSources.Length then postSources.[preSources.Length..] else [] - //for (_, subFile) in sources do - // printfn "visiting %s - has subsource of %s " filename subFile - + yield! resolveDependencyManagerSources filename +#if DEBUG + for (_,subFile) in sources do + printfn "visiting %s - has subsource of %s " filename subFile +#endif for (m, subFile) in sources do if IsScript subFile then for subSource in ClosureSourceOfFilename(subFile, m, tcConfigResult.inputCodePage, false) do @@ -5096,17 +5249,17 @@ module private ScriptPreprocessClosure = yield ClosureFile(subFile, m, None, [], [], []) //printfn "yielding source %s" filename - yield ClosureFile(filename, m, Some parsedScriptAst, parseDiagnostics, errorLogger.Diagnostics, !noWarns) + yield ClosureFile(filename, m, Some parsedScriptAst, parseDiagnostics, errorLogger.Diagnostics, noWarns) | None -> - //printfn "yielding source %s (failed parse)" filename + printfn "yielding source %s (failed parse)" filename yield ClosureFile(filename, m, None, parseDiagnostics, [], []) else // Don't traverse into .fs leafs. - //printfn "yielding non-script source %s" filename + printfn "yielding non-script source %s" filename yield ClosureFile(filename, m, None, [], [], []) ] - closureSources |> List.collect loop, !tcConfig + closureSources |> List.collect loop, tcConfig /// Reduce the full directive closure into LoadClosure let GetLoadClosure(ctok, rootFilename, closureFiles, tcConfig: TcConfig, codeContext) = @@ -5167,11 +5320,11 @@ module private ScriptPreprocessClosure = let isThisFileName = (0 = String.Compare(rootFilename, m.FileName, StringComparison.OrdinalIgnoreCase)) isArgParameterWhileNotEditing || isThisFileName | None -> true - + // Filter out non-root errors and warnings let allRootDiagnostics = allRootDiagnostics |> List.filter (fst >> isRootRange) - let result: LoadClosure = + let result: LoadClosure = { SourceFiles = List.groupBy fst sourceFiles |> List.map (map2Of2 (List.map snd)) References = List.groupBy fst references |> List.map (map2Of2 (List.map snd)) UnresolvedReferences = unresolvedReferences @@ -5180,7 +5333,7 @@ module private ScriptPreprocessClosure = OriginalLoadReferences = tcConfig.loadedSources ResolutionDiagnostics = resolutionDiagnostics AllRootFileDiagnostics = allRootDiagnostics - LoadClosureRootFileDiagnostics = loadClosureRootDiagnostics } + LoadClosureRootFileDiagnostics = loadClosureRootDiagnostics } result @@ -5215,20 +5368,15 @@ module private ScriptPreprocessClosure = tryGetMetadataSnapshot, reduceMemoryUsage) let closureSources = [ClosureSource(filename, range0, sourceText, true)] - let closureFiles, tcConfig = FindClosureFiles(closureSources, tcConfig, codeContext, lexResourceManager) + let closureFiles, tcConfig = FindClosureFiles(filename, range0, closureSources, tcConfig, codeContext, lexResourceManager) GetLoadClosure(ctok, filename, closureFiles, tcConfig, codeContext) - + /// Given source filename, find the full load closure /// Used from fsi.fs and fsc.fs, for #load and command line - let GetFullClosureOfScriptFiles - (ctok, tcConfig: TcConfig, - files:(string*range) list, - codeContext, - lexResourceManager: Lexhelp.LexResourceManager) = - - let mainFile = fst (List.last files) - let closureSources = files |> List.collect (fun (filename, m) -> ClosureSourceOfFilename(filename, m, tcConfig.inputCodePage, true)) - let closureFiles, tcConfig = FindClosureFiles(closureSources, tcConfig, codeContext, lexResourceManager) + let GetFullClosureOfScriptFiles(ctok, tcConfig:TcConfig, files:(string*range) list,codeContext,lexResourceManager: Lexhelp.LexResourceManager) = + let mainFile, mainFileRange = List.last files + let closureSources = files |> List.collect (fun (filename, m) -> ClosureSourceOfFilename(filename, m,tcConfig.inputCodePage,true)) + let closureFiles,tcConfig = FindClosureFiles(mainFile, mainFileRange, closureSources, tcConfig, codeContext, lexResourceManager) GetLoadClosure(ctok, mainFile, closureFiles, tcConfig, codeContext) type LoadClosure with @@ -5255,8 +5403,6 @@ type LoadClosure with lexResourceManager: Lexhelp.LexResourceManager) = use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind BuildPhase.Parse ScriptPreprocessClosure.GetFullClosureOfScriptFiles (ctok, tcConfig, files, codeContext, lexResourceManager) - - //---------------------------------------------------------------------------- // Initial type checking environment @@ -5553,4 +5699,4 @@ let TypeCheckClosedInputSet (ctok, checkForErrors, tcConfig, tcImports, tcGlobal // Existing public APIs delegate to newer implementations let GetFSharpCoreLibraryName () = getFSharpCoreLibraryName -let DefaultReferencesForScriptsAndOutOfProjectSources assumeDotNetFramework = defaultReferencesForScriptsAndOutOfProjectSources assumeDotNetFramework false +let DefaultReferencesForScriptsAndOutOfProjectSources assumeDotNetFramework = defaultReferencesForScriptsAndOutOfProjectSources (*useFsiAuxLib*)false assumeDotNetFramework (*useSdkRefs*)false diff --git a/src/fsharp/CompileOps.fsi b/src/fsharp/CompileOps.fsi index 51b10bc028..fd95afdd20 100644 --- a/src/fsharp/CompileOps.fsi +++ b/src/fsharp/CompileOps.fsi @@ -11,6 +11,7 @@ open FSharp.Compiler.AbstractIL open FSharp.Compiler.AbstractIL.IL open FSharp.Compiler.AbstractIL.ILBinaryReader open FSharp.Compiler.AbstractIL.ILPdbWriter +open FSharp.Compiler.AbstractIL.Internal open FSharp.Compiler.AbstractIL.Internal.Library open FSharp.Compiler open FSharp.Compiler.TypeChecker @@ -154,9 +155,9 @@ type IRawFSharpAssemblyData = abstract HasAnyFSharpSignatureDataAttribute: bool abstract HasMatchingFSharpSignatureDataAttribute: ILGlobals -> bool /// The raw F# signature data in the assembly, if any - abstract GetRawFSharpSignatureData: range * ilShortAssemName: string * fileName: string -> (string * (unit -> byte[])) list + abstract GetRawFSharpSignatureData: range * ilShortAssemName: string * fileName: string -> (string * (unit -> ReadOnlyByteMemory)) list /// The raw F# optimization data in the assembly, if any - abstract GetRawFSharpOptimizationData: range * ilShortAssemName: string * fileName: string -> (string * (unit -> byte[])) list + abstract GetRawFSharpOptimizationData: range * ilShortAssemName: string * fileName: string -> (string * (unit -> ReadOnlyByteMemory)) list /// The table of type forwarders in the assembly abstract GetRawTypeForwarders: unit -> ILExportedTypesAndForwarders /// The identity of the module @@ -203,7 +204,7 @@ type AssemblyResolution = /// Whether or not this is an installed system assembly (for example, System.dll) sysdir: bool // Lazily populated ilAssemblyRef for this reference. - ilAssemblyRef: ILAssemblyRef option ref } + mutable ilAssemblyRef: ILAssemblyRef option } type UnresolvedAssemblyReference = UnresolvedAssemblyReference of string * AssemblyReference list @@ -267,9 +268,11 @@ type TcConfigBuilder = mutable light: bool option mutable conditionalCompilationDefines: string list /// Sources added into the build with #load - mutable loadedSources: (range * string) list - + mutable loadedSources: (range * string * string) list + mutable compilerToolPaths: string list mutable referencedDLLs: AssemblyReference list + mutable packageManagerLines: Map + mutable projectReferences: IProjectReference list mutable knownUnresolvedReferences: UnresolvedAssemblyReference list reduceMemoryUsage: ReduceMemoryFlag @@ -281,6 +284,7 @@ type TcConfigBuilder = mutable mlCompatibility:bool mutable checkOverflow:bool mutable showReferenceResolutions:bool + mutable outputDir: string option mutable outputFile: string option mutable platform: ILPlatform option mutable prefer32Bit: bool @@ -385,6 +389,8 @@ type TcConfigBuilder = mutable pathMap : PathMap mutable langVersion : LanguageVersion + + mutable includePathAdded : string -> unit } static member Initial: TcConfigBuilder @@ -397,13 +403,15 @@ type TcConfigBuilder = isInteractive: bool * isInvalidationSupported: bool * defaultCopyFSharpCore: CopyFSharpCoreFlag * - tryGetMetadataSnapshot: ILReaderTryGetMetadataSnapshot + tryGetMetadataSnapshot: ILReaderTryGetMetadataSnapshot * + ?includePathAdded: (string -> unit) -> TcConfigBuilder member DecideNames: string list -> outfile: string * pdbfile: string option * assemblyName: string member TurnWarningOff: range * string -> unit member TurnWarningOn: range * string -> unit member AddIncludePath: range * string * string -> unit + member AddCompilerToolsByPath: string -> unit member AddReferencedAssemblyByPath: range * string -> unit member RemoveReferencedAssemblyByPath: range * string -> unit member AddEmbeddedSourceFile: string -> unit @@ -433,6 +441,7 @@ type TcConfig = member conditionalCompilationDefines: string list member subsystemVersion: int * int member useHighEntropyVA: bool + member compilerToolPaths: string list member referencedDLLs: AssemblyReference list member reduceMemoryUsage: ReduceMemoryFlag member inputCodePage: int option @@ -441,6 +450,7 @@ type TcConfig = member mlCompatibility:bool member checkOverflow:bool member showReferenceResolutions:bool + member outputDir: string option member outputFile: string option member platform: ILPlatform option member prefer32Bit: bool @@ -677,8 +687,8 @@ val WriteOptimizationData: TcGlobals * filename: string * inMem: bool * CcuThunk val RequireDLL: CompilationThreadToken * TcImports * TcEnv * thisAssemblyName: string * referenceRange: range * file: string * assemblyReferenceAdded: (string -> unit) -> TcEnv * (ImportedBinary list * ImportedAssembly list) /// Processing # commands -val ProcessMetaCommandsFromInput: - (('T -> range * string -> 'T) * ('T -> range * string -> 'T) * ('T -> range * string -> unit)) +val ProcessMetaCommandsFromInput : + (('T -> range * string -> 'T) * ('T -> range * string -> 'T) * ('T -> DependencyManagerIntegration.IDependencyManagerProvider * range * string -> 'T) * ('T -> range * string -> unit)) -> TcConfigBuilder * Ast.ParsedInput * string * 'T -> 'T @@ -799,7 +809,7 @@ type LoadClosure = Inputs: LoadClosureInput list /// The original #load references, including those that didn't resolve - OriginalLoadReferences: (range * string) list + OriginalLoadReferences: (range * string * string) list /// The #nowarns NoWarns: (string * range list) list diff --git a/src/fsharp/CompileOptions.fs b/src/fsharp/CompileOptions.fs index 29e854a83f..6510790668 100755 --- a/src/fsharp/CompileOptions.fs +++ b/src/fsharp/CompileOptions.fs @@ -6,6 +6,7 @@ module internal FSharp.Compiler.CompileOptions open Internal.Utilities open System +open System.IO open FSharp.Compiler open FSharp.Compiler.AbstractIL open FSharp.Compiler.AbstractIL.IL @@ -502,8 +503,10 @@ let SetDebugSwitch (tcConfigB: TcConfigBuilder) (dtype: string option) (s: Optio let SetEmbedAllSourceSwitch (tcConfigB: TcConfigBuilder) switch = if (switch = OptionSwitch.On) then tcConfigB.embedAllSource <- true else tcConfigB.embedAllSource <- false -let setOutFileName tcConfigB s = - tcConfigB.outputFile <- Some s +let setOutFileName tcConfigB path = + let outputDir = Path.GetDirectoryName(path) + tcConfigB.outputDir <- Some outputDir + tcConfigB.outputFile <- Some path let setSignatureFile tcConfigB s = tcConfigB.printSignature <- true @@ -559,17 +562,24 @@ let PrintOptionInfo (tcConfigB:TcConfigBuilder) = // OptionBlock: Input files //------------------------- -let inputFileFlagsBoth (tcConfigB: TcConfigBuilder) = - [ CompilerOption("reference", tagFile, OptionString (fun s -> tcConfigB.AddReferencedAssemblyByPath (rangeStartup, s)), None, Some (FSComp.SR.optsReference())) +let inputFileFlagsBoth (tcConfigB : TcConfigBuilder) = [ + CompilerOption("reference", tagFile, OptionString (fun s -> tcConfigB.AddReferencedAssemblyByPath (rangeStartup, s)), None, Some (FSComp.SR.optsReference())) + CompilerOption("compilertool", tagFile, OptionString (fun s -> tcConfigB.AddCompilerToolsByPath s), None, Some (FSComp.SR.optsCompilerTool())) ] -let inputFileFlagsFsc tcConfigB = inputFileFlagsBoth tcConfigB +let referenceFlagAbbrev (tcConfigB : TcConfigBuilder) = + CompilerOption("r", tagFile, OptionString (fun s -> tcConfigB.AddReferencedAssemblyByPath (rangeStartup, s)), None, Some(FSComp.SR.optsShortFormOf("--reference"))) + +let compilerToolFlagAbbrev (tcConfigB : TcConfigBuilder) = + CompilerOption("t", tagFile, OptionString (fun s -> tcConfigB.AddCompilerToolsByPath s), None, Some(FSComp.SR.optsShortFormOf("--compilertool"))) + +let inputFileFlagsFsc tcConfigB = inputFileFlagsBoth tcConfigB let inputFileFlagsFsiBase (_tcConfigB: TcConfigBuilder) = #if NETSTANDARD - [ CompilerOption("usesdkrefs", tagNone, OptionSwitch (SetUseSdkSwitch _tcConfigB), None, Some (FSComp.SR.useSdkRefs())) ] + [ CompilerOption("usesdkrefs", tagNone, OptionSwitch (SetUseSdkSwitch _tcConfigB), None, Some (FSComp.SR.useSdkRefs())) ] #else - List.empty + List.empty #endif let inputFileFlagsFsi (tcConfigB: TcConfigBuilder) = @@ -1015,7 +1025,7 @@ let testFlag tcConfigB = match s with | "StackSpan" -> tcConfigB.internalTestSpanStackReferring <- true | "ErrorRanges" -> tcConfigB.errorStyle <- ErrorStyle.TestErrors - | "Tracking" -> Lib.tracking := true (* general purpose on/off diagnostics flag *) + | "Tracking" -> Lib.tracking <- true (* general purpose on/off diagnostics flag *) | "NoNeedToTailcall" -> tcConfigB.optSettings <- { tcConfigB.optSettings with reportNoNeedToTailcall = true } | "FunctionSizes" -> tcConfigB.optSettings <- { tcConfigB.optSettings with reportFunctionSizes = true } | "TotalSizes" -> tcConfigB.optSettings <- { tcConfigB.optSettings with reportTotalSizes = true } @@ -1242,7 +1252,7 @@ let compilingFsLibFlag (tcConfigB: TcConfigBuilder) = tcConfigB.compilingFslib <- true tcConfigB.TurnWarningOff(rangeStartup, "42") ErrorLogger.reportLibraryOnlyFeatures <- false - IlxSettings.ilxCompilingFSharpCoreLib := true), + IlxSettings.ilxCompilingFSharpCoreLib <- true), Some(InternalCommandLineOption("--compiling-fslib", rangeCmdArgs)), None) let compilingFsLib20Flag = @@ -1312,7 +1322,7 @@ let deprecatedFlagsFsc tcConfigB = CompilerOption ("progress", tagNone, - OptionUnit (fun () -> progress := true), + OptionUnit (fun () -> progress <- true), Some(DeprecatedCommandLineOptionNoDescription("--progress", rangeCmdArgs)), None) compilingFsLibFlag tcConfigB @@ -1588,14 +1598,13 @@ let ApplyCommandLineArgs(tcConfigB: TcConfigBuilder, sourceFiles: string list, c // PrintWholeAssemblyImplementation //---------------------------------------------------------------------------- -let showTermFileCount = ref 0 +let mutable showTermFileCount = 0 let PrintWholeAssemblyImplementation g (tcConfig:TcConfig) outfile header expr = if tcConfig.showTerms then if tcConfig.writeTermsToFiles then let filename = outfile + ".terms" - let n = !showTermFileCount - showTermFileCount := n+1 - use f = System.IO.File.CreateText (filename + "-" + string n + "-" + header) + use f = System.IO.File.CreateText (filename + "-" + string showTermFileCount + "-" + header) + showTermFileCount <- showTermFileCount + 1 Layout.outL f (Layout.squashTo 192 (DebugPrint.implFilesL g expr)) else dprintf "\n------------------\nshowTerm: %s:\n" header @@ -1606,11 +1615,11 @@ let PrintWholeAssemblyImplementation g (tcConfig:TcConfig) outfile header expr = // ReportTime //---------------------------------------------------------------------------- -let tPrev = ref None -let nPrev = ref None +let mutable tPrev = None +let mutable nPrev = None let ReportTime (tcConfig:TcConfig) descr = - match !nPrev with + match nPrev with | None -> () | Some prevDescr -> if tcConfig.pause then @@ -1651,7 +1660,7 @@ let ReportTime (tcConfig:TcConfig) descr = let ptime = System.Diagnostics.Process.GetCurrentProcess() let wsNow = ptime.WorkingSet64/1000000L - match !tPrev, !nPrev with + match tPrev, nPrev with | Some (timePrev, gcPrev:int []), Some prevDescr -> let spanGC = [| for i in 0 .. maxGen -> System.GC.CollectionCount i - gcPrev.[i] |] dprintf "TIME: %4.1f Delta: %4.1f Mem: %3d" @@ -1662,9 +1671,9 @@ let ReportTime (tcConfig:TcConfig) descr = prevDescr | _ -> () - tPrev := Some (timeNow, gcNow) + tPrev <- Some (timeNow, gcNow) - nPrev := Some descr + nPrev <- Some descr //---------------------------------------------------------------------------- // OPTIMIZATION - support - addDllToOptEnv @@ -1824,14 +1833,17 @@ let GenerateIlxCode // by the same references. Only used for static linking. //---------------------------------------------------------------------------- -let NormalizeAssemblyRefs (ctok, tcImports:TcImports) scoref = +let NormalizeAssemblyRefs (ctok, ilGlobals: ILGlobals, tcImports:TcImports) scoref = + let normalizeAssemblyRefByName nm = + match tcImports.TryFindDllInfo (ctok, Range.rangeStartup, nm, lookupOnly=false) with + | Some dllInfo -> dllInfo.ILScopeRef + | None -> scoref + match scoref with | ILScopeRef.Local | ILScopeRef.Module _ -> scoref - | ILScopeRef.Assembly aref -> - match tcImports.TryFindDllInfo (ctok, Range.rangeStartup, aref.Name, lookupOnly=false) with - | Some dllInfo -> dllInfo.ILScopeRef - | None -> scoref + | ILScopeRef.PrimaryAssembly -> normalizeAssemblyRefByName ilGlobals.primaryAssemblyName + | ILScopeRef.Assembly aref -> normalizeAssemblyRefByName aref.Name let GetGeneratedILModuleName (t:CompilerTarget) (s:string) = // return the name of the file as a module name diff --git a/src/fsharp/CompileOptions.fsi b/src/fsharp/CompileOptions.fsi index f1ea7d44cd..da86aa4200 100644 --- a/src/fsharp/CompileOptions.fsi +++ b/src/fsharp/CompileOptions.fsi @@ -2,7 +2,9 @@ module internal FSharp.Compiler.CompileOptions +open System open FSharp.Compiler +open FSharp.Compiler.AbstractIL.IL open FSharp.Compiler.AbstractIL.Internal.Library open FSharp.Compiler.CompileOps open FSharp.Compiler.Tast @@ -12,7 +14,7 @@ open FSharp.Compiler.TcGlobals //---------------------------------------------------------------------------- // Compiler Option Parser -//-------------------------------------------------------------------------- +//---------------------------------------------------------------------------- // For command-line options that can be suffixed with +/- [] @@ -84,12 +86,12 @@ val CreateIlxAssemblyGenerator : TcConfig * TcImports * TcGlobals * ConstraintSo val GenerateIlxCode : IlxGen.IlxGenBackend * isInteractiveItExpr:bool * isInteractiveOnMono:bool * TcConfig * TypeChecker.TopAttribs * TypedAssemblyAfterOptimization * fragName:string * IlxGen.IlxAssemblyGenerator -> IlxGen.IlxGenResults // Used during static linking -val NormalizeAssemblyRefs : CompilationThreadToken * TcImports -> (AbstractIL.IL.ILScopeRef -> AbstractIL.IL.ILScopeRef) +val NormalizeAssemblyRefs : CompilationThreadToken * ILGlobals * TcImports -> (AbstractIL.IL.ILScopeRef -> AbstractIL.IL.ILScopeRef) // Miscellany val ignoreFailureOnMono1_1_16 : (unit -> unit) -> unit val mutable enableConsoleColoring : bool -val DoWithColor : System.ConsoleColor -> (unit -> 'a) -> 'a +val DoWithColor : ConsoleColor -> (unit -> 'a) -> 'a val DoWithErrorColor : bool -> (unit -> 'a) -> 'a val ReportTime : TcConfig -> string -> unit val GetAbbrevFlagSet : TcConfigBuilder -> bool -> Set diff --git a/src/fsharp/ConstraintSolver.fs b/src/fsharp/ConstraintSolver.fs index f5aade8400..59b10f7be7 100755 --- a/src/fsharp/ConstraintSolver.fs +++ b/src/fsharp/ConstraintSolver.fs @@ -27,9 +27,19 @@ // can-unify predicates used in method overload resolution and trait constraint // satisfaction. // +// The two main principles are: +// 1. Ensure any solution that is found is sound (no logic is skipped), +// 2. Because of method overloading and SRTP constraints and other constructs, processing of +// constraints is algorithmic and must proceed in a definite, fixed order. +// Once we start doing resolutions in a particular order we must keep doing them +// in the same order. +// +// There is little use of back-tracking/undo or "retry" in the constraint solver, except in the +// limited case ofs of SRTP solving and method overloading, and some other adhoc limited cases +// like checking for "printf" format strings. As a result there are cases involving +// method overloading and SRTP that the solver "can't solve". This is intentional and by-design. //------------------------------------------------------------------------- - module internal FSharp.Compiler.ConstraintSolver open Internal.Utilities.Collections @@ -429,8 +439,39 @@ let ShowAccessDomain ad = exception NonRigidTypar of displayEnv: DisplayEnv * string option * range * TType * TType * range -exception LocallyAbortOperationThatFailsToResolveOverload +/// Signal that there is still an unresolved overload in the constraint problem. The +/// unresolved overload constraint remains in the constraint state, and we skip any +/// further processing related to whichever overall adjustment to constraint solver state +/// is being processed. +/// +// NOTE: The addition of this abort+skip appears to be a mistake which has crept into F# type inference, +// and its status is currently under review. See https://github.com/dotnet/fsharp/pull/8294 and others. +// +// Here is the history: +// 1. The local abort was added as part of an attempted performance optimization https://github.com/dotnet/fsharp/pull/1650 +// This change was released in the VS2017 GA release. +// +// 2. However, it also impacts the logic of type inference, by skipping checking. +// Because of this an attempt was made to revert it in https://github.com/dotnet/fsharp/pull/4173. +// +// Unfortunately, existing code had begun to depend on the new behaviours enabled by the +// change, and the revert was abandoned before release in https://github.com/dotnet/fsharp/pull/4348 +// +// Comments on soundness: +// The use of the abort is normally sound because the SRTP constraint +// will be subject to further processing at a later point. +// +// However, it seems likely that the abort may result in other processing associated +// with an overall constraint being skipped (e.g. the processing related to subsequent elements +// of a tuple constraint). +exception AbortForFailedOverloadResolution + +/// This is used at (nearly all) entry points into the constraint solver to make sure that the +/// AbortForFailedOverloadResolution is caught and processing continues. +let inline TryD_IgnoreAbortForFailedOverloadResolution f1 f2 = + TryD f1 (function AbortForFailedOverloadResolution -> CompleteD | exn -> f2 exn) +/// Represents a very local condition where we prefer to report errors before stripping type abbreviations. exception LocallyAbortOperationThatLosesAbbrevs let localAbortD = ErrorD LocallyAbortOperationThatLosesAbbrevs @@ -835,10 +876,35 @@ and SolveAnonInfoEqualsAnonInfo (csenv: ConstraintSolverEnv) m2 (anonInfo1: Anon (match anonInfo1.Assembly, anonInfo2.Assembly with | ccu1, ccu2 -> if not (ccuEq ccu1 ccu2) then ErrorD (ConstraintSolverError(FSComp.SR.tcAnonRecdCcuMismatch(ccu1.AssemblyName, ccu2.AssemblyName), csenv.m,m2)) else ResultD () ) ++ (fun () -> + if not (anonInfo1.SortedNames = anonInfo2.SortedNames) then - let namesText1 = sprintf "%A" (Array.toList anonInfo1.SortedNames) - let namesText2 = sprintf "%A" (Array.toList anonInfo2.SortedNames) - ErrorD (ConstraintSolverError(FSComp.SR.tcAnonRecdFieldNameMismatch(namesText1, namesText2), csenv.m,m2)) + let (|Subset|Superset|Overlap|CompletelyDifferent|) (first, second) = + let first = Set first + let second = Set second + let secondOnly = Set.toList (second - first) + let firstOnly = Set.toList (first - second) + + if second.IsSubsetOf first then + Subset firstOnly + elif second.IsSupersetOf first then + Superset secondOnly + elif Set.intersect first second <> Set.empty then + Overlap(firstOnly, secondOnly) + else + CompletelyDifferent(Seq.toList first) + + let message = + match anonInfo1.SortedNames, anonInfo2.SortedNames with + | Subset missingFields -> + FSComp.SR.tcAnonRecdFieldNameSubset(string missingFields) + | Superset extraFields -> + FSComp.SR.tcAnonRecdFieldNameSuperset(string extraFields) + | Overlap (missingFields, extraFields) -> + FSComp.SR.tcAnonRecdFieldNameMismatch(string missingFields, string extraFields) + | CompletelyDifferent missingFields -> + FSComp.SR.tcAnonRecdFieldNameDifferent(string missingFields) + + ErrorD (ConstraintSolverError(message, csenv.m,m2)) else ResultD ()) @@ -904,8 +970,9 @@ and private SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m2 trace cxsln t // Back out of expansions of type abbreviations to give improved error messages. // Note: any "normalization" of equations on type variables must respect the trace parameter TryD (fun () -> SolveTypeEqualsType csenv ndeep m2 trace cxsln ty1 ty2) - (function LocallyAbortOperationThatLosesAbbrevs -> ErrorD(ConstraintSolverTypesNotInEqualityRelation(csenv.DisplayEnv, ty1, ty2, csenv.m, m2, csenv.eContextInfo)) - | err -> ErrorD err) + (function + | LocallyAbortOperationThatLosesAbbrevs -> ErrorD(ConstraintSolverTypesNotInEqualityRelation(csenv.DisplayEnv, ty1, ty2, csenv.m, m2, csenv.eContextInfo)) + | err -> ErrorD err) and SolveTypeEqualsTypeEqns csenv ndeep m2 trace cxsln origl1 origl2 = match origl1, origl2 with @@ -1034,8 +1101,9 @@ and SolveTypeSubsumesType (csenv: ConstraintSolverEnv) ndeep m2 (trace: Optional and SolveTypeSubsumesTypeKeepAbbrevs csenv ndeep m2 trace cxsln ty1 ty2 = let denv = csenv.DisplayEnv TryD (fun () -> SolveTypeSubsumesType csenv ndeep m2 trace cxsln ty1 ty2) - (function LocallyAbortOperationThatLosesAbbrevs -> ErrorD(ConstraintSolverTypesNotInSubsumptionRelation(denv, ty1, ty2, csenv.m, m2)) - | err -> ErrorD err) + (function + | LocallyAbortOperationThatLosesAbbrevs -> ErrorD(ConstraintSolverTypesNotInSubsumptionRelation(denv, ty1, ty2, csenv.m, m2)) + | err -> ErrorD err) //------------------------------------------------------------------------- // Solve and record non-equality constraints @@ -1426,7 +1494,9 @@ and SolveMemberConstraint (csenv: ConstraintSolverEnv) ignoreUnresolvedOverload Some(CalledMeth(csenv.InfoReader, None, false, FreshenMethInfo, m, AccessibleFromEverywhere, minfo, minst, minst, None, objtys, [(callerArgs, [])], false, false, None))) let methOverloadResult, errors = - trace.CollectThenUndoOrCommit (fun (a, _) -> Option.isSome a) (fun trace -> ResolveOverloading csenv (WithTrace trace) nm ndeep (Some traitInfo) (0, 0) AccessibleFromEverywhere calledMethGroup false (Some rty)) + trace.CollectThenUndoOrCommit + (fun (a, _) -> Option.isSome a) + (fun trace -> ResolveOverloading csenv (WithTrace trace) nm ndeep (Some traitInfo) (0, 0) AccessibleFromEverywhere calledMethGroup false (Some rty)) match anonRecdPropSearch, recdPropSearch, methOverloadResult with | Some (anonInfo, tinst, i), None, None -> @@ -1472,7 +1542,7 @@ and SolveMemberConstraint (csenv: ConstraintSolverEnv) ignoreUnresolvedOverload match errors with | ErrorResult (_, UnresolvedOverloading _) when not ignoreUnresolvedOverload && (not (nm = "op_Explicit" || nm = "op_Implicit")) -> - return! ErrorD LocallyAbortOperationThatFailsToResolveOverload + return! ErrorD AbortForFailedOverloadResolution | _ -> return TTraitUnsolved } @@ -1710,9 +1780,9 @@ and AddConstraint (csenv: ConstraintSolverEnv) ndeep m2 trace tp newConstraint // This works because the types on the r.h.s. of subtype // constraints are head-types and so any further inferences are equational. let collect ty = - let res = ref [] - IterateEntireHierarchyOfType (fun x -> res := x :: !res) g amap m AllowMultiIntfInstantiations.No ty - List.rev !res + let mutable res = [] + IterateEntireHierarchyOfType (fun x -> res <- x :: res) g amap m AllowMultiIntfInstantiations.No ty + List.rev res let parents1 = collect ty1 let parents2 = collect ty2 trackErrors { @@ -2158,25 +2228,23 @@ and CanMemberSigsMatchUpToCheck // "ty2 casts to ty1" // "a value of type ty2 can be used where a value of type ty1 is expected" and private SolveTypeSubsumesTypeWithReport (csenv: ConstraintSolverEnv) ndeep m trace cxsln ty1 ty2 = - TryD (fun () -> SolveTypeSubsumesTypeKeepAbbrevs csenv ndeep m trace cxsln ty1 ty2) - (function - | LocallyAbortOperationThatFailsToResolveOverload -> CompleteD - | res -> - match csenv.eContextInfo with - | ContextInfo.RuntimeTypeTest isOperator -> - // test if we can cast other way around - match CollectThenUndo (fun newTrace -> SolveTypeSubsumesTypeKeepAbbrevs csenv ndeep m (OptionalTrace.WithTrace newTrace) cxsln ty2 ty1) with - | OkResult _ -> ErrorD (ErrorsFromAddingSubsumptionConstraint(csenv.g, csenv.DisplayEnv, ty1, ty2, res, ContextInfo.DowncastUsedInsteadOfUpcast isOperator, m)) - | _ -> ErrorD (ErrorsFromAddingSubsumptionConstraint(csenv.g, csenv.DisplayEnv, ty1, ty2, res, ContextInfo.NoContext, m)) - | _ -> ErrorD (ErrorsFromAddingSubsumptionConstraint(csenv.g, csenv.DisplayEnv, ty1, ty2, res, csenv.eContextInfo, m))) + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> SolveTypeSubsumesTypeKeepAbbrevs csenv ndeep m trace cxsln ty1 ty2) + (fun res -> + match csenv.eContextInfo with + | ContextInfo.RuntimeTypeTest isOperator -> + // test if we can cast other way around + match CollectThenUndo (fun newTrace -> SolveTypeSubsumesTypeKeepAbbrevs csenv ndeep m (OptionalTrace.WithTrace newTrace) cxsln ty2 ty1) with + | OkResult _ -> ErrorD (ErrorsFromAddingSubsumptionConstraint(csenv.g, csenv.DisplayEnv, ty1, ty2, res, ContextInfo.DowncastUsedInsteadOfUpcast isOperator, m)) + | _ -> ErrorD (ErrorsFromAddingSubsumptionConstraint(csenv.g, csenv.DisplayEnv, ty1, ty2, res, ContextInfo.NoContext, m)) + | _ -> ErrorD (ErrorsFromAddingSubsumptionConstraint(csenv.g, csenv.DisplayEnv, ty1, ty2, res, csenv.eContextInfo, m))) // ty1: actual // ty2: expected and private SolveTypeEqualsTypeWithReport (csenv: ConstraintSolverEnv) ndeep m trace cxsln actual expected = - TryD (fun () -> SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m trace cxsln actual expected) - (function - | LocallyAbortOperationThatFailsToResolveOverload -> CompleteD - | res -> ErrorD (ErrorFromAddingTypeEquation(csenv.g, csenv.DisplayEnv, actual, expected, res, m))) + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> SolveTypeEqualsTypeKeepAbbrevsWithCxsln csenv ndeep m trace cxsln actual expected) + (fun res -> ErrorD (ErrorFromAddingTypeEquation(csenv.g, csenv.DisplayEnv, actual, expected, res, m))) and ArgsMustSubsumeOrConvert (csenv: ConstraintSolverEnv) @@ -2652,16 +2720,22 @@ and ResolveOverloading | None -> None, errors +let ResolveOverloadingForCall denv css m methodName ndeep cx callerArgCounts ad calledMethGroup permitOptArgs reqdRetTyOpt = + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + ResolveOverloading csenv NoTrace methodName ndeep cx callerArgCounts ad calledMethGroup permitOptArgs reqdRetTyOpt /// This is used before analyzing the types of arguments in a single overload resolution let UnifyUniqueOverloading - (csenv: ConstraintSolverEnv) + denv + css + m callerArgCounts methodName ad (calledMethGroup: CalledMeth list) reqdRetTy // The expected return type, if known = + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv let m = csenv.m // See what candidates we have based on name and arity let candidates = calledMethGroup |> List.filter (fun cmeth -> cmeth.IsCandidate(m, ad)) @@ -2691,15 +2765,17 @@ let UnifyUniqueOverloading | _ -> ResultD false -let EliminateConstraintsForGeneralizedTypars csenv (trace: OptionalTrace) (generalizedTypars: Typars) = - // Remove the global constraints where this type variable appears in the support of the constraint - generalizedTypars - |> List.iter (fun tp -> +/// Remove the global constraints where these type variables appear in the support of the constraint +let EliminateConstraintsForGeneralizedTypars denv css m (trace: OptionalTrace) (generalizedTypars: Typars) = + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + for tp in generalizedTypars do let tpn = tp.Stamp let cxst = csenv.SolverState.ExtraCxs let cxs = cxst.FindAll tpn - cxs |> List.iter (fun cx -> trace.Exec (fun () -> cxst.Remove tpn) (fun () -> (csenv.SolverState.ExtraCxs.Add (tpn, cx)))) - ) + for cx in cxs do + trace.Exec + (fun () -> cxst.Remove tpn) + (fun () -> (csenv.SolverState.ExtraCxs.Add (tpn, cx))) //------------------------------------------------------------------------- @@ -2710,7 +2786,8 @@ let EliminateConstraintsForGeneralizedTypars csenv (trace: OptionalTrace) (gener //------------------------------------------------------------------------- let AddCxTypeEqualsType contextInfo denv css m actual expected = - SolveTypeEqualsTypeWithReport (MakeConstraintSolverEnv contextInfo css m denv) 0 m NoTrace None actual expected + let csenv = MakeConstraintSolverEnv contextInfo css m denv + SolveTypeEqualsTypeWithReport csenv 0 m NoTrace None actual expected |> RaiseOperationResult let UndoIfFailed f = @@ -2745,17 +2822,23 @@ let UndoIfFailedOrWarnings f = false let AddCxTypeEqualsTypeUndoIfFailed denv css m ty1 ty2 = - UndoIfFailed (fun trace -> SolveTypeEqualsTypeKeepAbbrevs (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) 0 m (WithTrace trace) ty1 ty2) + UndoIfFailed (fun trace -> + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + SolveTypeEqualsTypeKeepAbbrevs csenv 0 m (WithTrace trace) ty1 ty2) let AddCxTypeEqualsTypeUndoIfFailedOrWarnings denv css m ty1 ty2 = - UndoIfFailedOrWarnings (fun trace -> SolveTypeEqualsTypeKeepAbbrevs (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) 0 m (WithTrace trace) ty1 ty2) + UndoIfFailedOrWarnings (fun trace -> + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + SolveTypeEqualsTypeKeepAbbrevs csenv 0 m (WithTrace trace) ty1 ty2) let AddCxTypeEqualsTypeMatchingOnlyUndoIfFailed denv css m ty1 ty2 = let csenv = { MakeConstraintSolverEnv ContextInfo.NoContext css m denv with MatchingOnly = true } UndoIfFailed (fun trace -> SolveTypeEqualsTypeKeepAbbrevs csenv 0 m (WithTrace trace) ty1 ty2) let AddCxTypeMustSubsumeTypeUndoIfFailed denv css m ty1 ty2 = - UndoIfFailed (fun trace -> SolveTypeSubsumesTypeKeepAbbrevs (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) 0 m (WithTrace trace) None ty1 ty2) + UndoIfFailed (fun trace -> + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + SolveTypeSubsumesTypeKeepAbbrevs csenv 0 m (WithTrace trace) None ty1 ty2) let AddCxTypeMustSubsumeTypeMatchingOnlyUndoIfFailed denv css m ty1 ty2 = let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv @@ -2763,64 +2846,114 @@ let AddCxTypeMustSubsumeTypeMatchingOnlyUndoIfFailed denv css m ty1 ty2 = UndoIfFailed (fun trace -> SolveTypeSubsumesTypeKeepAbbrevs csenv 0 m (WithTrace trace) None ty1 ty2) let AddCxTypeMustSubsumeType contextInfo denv css m trace ty1 ty2 = - SolveTypeSubsumesTypeWithReport (MakeConstraintSolverEnv contextInfo css m denv) 0 m trace None ty1 ty2 + let csenv = MakeConstraintSolverEnv contextInfo css m denv + SolveTypeSubsumesTypeWithReport csenv 0 m trace None ty1 ty2 |> RaiseOperationResult let AddCxMethodConstraint denv css m trace traitInfo = - TryD (fun () -> + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> trackErrors { do! - SolveMemberConstraint (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) true false 0 m trace traitInfo + SolveMemberConstraint csenv true false 0 m trace traitInfo |> OperationResult.ignore }) - (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) + (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) |> RaiseOperationResult let AddCxTypeMustSupportNull denv css m trace ty = - TryD (fun () -> SolveTypeSupportsNull (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) 0 m trace ty) - (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> SolveTypeSupportsNull csenv 0 m trace ty) + (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) |> RaiseOperationResult let AddCxTypeMustSupportComparison denv css m trace ty = - TryD (fun () -> SolveTypeSupportsComparison (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) 0 m trace ty) - (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> SolveTypeSupportsComparison csenv 0 m trace ty) + (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) |> RaiseOperationResult let AddCxTypeMustSupportEquality denv css m trace ty = - TryD (fun () -> SolveTypeSupportsEquality (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) 0 m trace ty) - (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> SolveTypeSupportsEquality csenv 0 m trace ty) + (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) |> RaiseOperationResult let AddCxTypeMustSupportDefaultCtor denv css m trace ty = - TryD (fun () -> SolveTypeRequiresDefaultConstructor (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) 0 m trace ty) - (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> SolveTypeRequiresDefaultConstructor csenv 0 m trace ty) + (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) |> RaiseOperationResult let AddCxTypeIsReferenceType denv css m trace ty = - TryD (fun () -> SolveTypeIsReferenceType (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) 0 m trace ty) - (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> SolveTypeIsReferenceType csenv 0 m trace ty) + (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) |> RaiseOperationResult let AddCxTypeIsValueType denv css m trace ty = - TryD (fun () -> SolveTypeIsNonNullableValueType (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) 0 m trace ty) - (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> SolveTypeIsNonNullableValueType csenv 0 m trace ty) + (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) |> RaiseOperationResult let AddCxTypeIsUnmanaged denv css m trace ty = - TryD (fun () -> SolveTypeIsUnmanaged (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) 0 m trace ty) - (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> SolveTypeIsUnmanaged csenv 0 m trace ty) + (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) |> RaiseOperationResult let AddCxTypeIsEnum denv css m trace ty underlying = - TryD (fun () -> SolveTypeIsEnum (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) 0 m trace ty underlying) - (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> SolveTypeIsEnum csenv 0 m trace ty underlying) + (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) |> RaiseOperationResult let AddCxTypeIsDelegate denv css m trace ty aty bty = - TryD (fun () -> SolveTypeIsDelegate (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) 0 m trace ty aty bty) - (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> SolveTypeIsDelegate csenv 0 m trace ty aty bty) + (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) + |> RaiseOperationResult + +let AddCxTyparDefaultsTo denv css m ctxtInfo tp ridx ty = + let csenv = MakeConstraintSolverEnv ctxtInfo css m denv + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> AddConstraint csenv 0 m NoTrace tp (TyparConstraint.DefaultsTo(ridx, ty, m))) + (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) |> RaiseOperationResult +let SolveTypeAsError denv css m ty = + let ty2 = NewErrorType () + assert((destTyparTy css.g ty2).IsFromError) + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + SolveTypeEqualsTypeKeepAbbrevs csenv 0 m NoTrace ty ty2 |> ignore + +let ApplyTyparDefaultAtPriority denv css priority (tp: Typar) = + tp.Constraints |> List.iter (fun tpc -> + match tpc with + | TyparConstraint.DefaultsTo(priority2, ty2, m) when priority2 = priority -> + let ty1 = mkTyparTy tp + if not tp.IsSolved && not (typeEquiv css.g ty1 ty2) then + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> + SolveTyparEqualsType csenv 0 m NoTrace ty1 ty2) + (fun res -> + SolveTypeAsError denv css m ty1 + ErrorD(ErrorFromApplyingDefault(css.g, denv, tp, ty2, res, m))) + |> RaiseOperationResult + | _ -> ()) + let CodegenWitnessThatTypeSupportsTraitConstraint tcVal g amap m (traitInfo: TraitConstraintInfo) argExprs = trackErrors { let css = { g = g @@ -2927,24 +3060,34 @@ let CodegenWitnessThatTypeSupportsTraitConstraint tcVal g amap m (traitInfo: Tra | Choice5Of5 () -> ResultD None } - let ChooseTyparSolutionAndSolve css denv tp = let g = css.g let amap = css.amap let max, m = ChooseTyparSolutionAndRange g amap tp let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv - TryD (fun () -> SolveTyparEqualsType csenv 0 m NoTrace (mkTyparTy tp) max) - (fun err -> ErrorD(ErrorFromApplyingDefault(g, denv, tp, max, err, m))) + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> SolveTyparEqualsType csenv 0 m NoTrace (mkTyparTy tp) max) + (fun err -> ErrorD(ErrorFromApplyingDefault(g, denv, tp, max, err, m))) |> RaiseOperationResult - let CheckDeclaredTypars denv css m typars1 typars2 = - TryD (fun () -> + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> CollectThenUndo (fun trace -> - SolveTypeEqualsTypeEqns (MakeConstraintSolverEnv ContextInfo.NoContext css m denv) 0 m (WithTrace trace) None + SolveTypeEqualsTypeEqns csenv 0 m (WithTrace trace) None (List.map mkTyparTy typars1) (List.map mkTyparTy typars2))) - (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) + (fun res -> + ErrorD (ErrorFromAddingConstraint(denv, res, m))) + |> RaiseOperationResult + +let CanonicalizePartialInferenceProblem css denv m tps = + // Canonicalize constraints prior to generalization + let csenv = MakeConstraintSolverEnv ContextInfo.NoContext css m denv + TryD_IgnoreAbortForFailedOverloadResolution + (fun () -> CanonicalizeRelevantMemberConstraints csenv 0 NoTrace tps) + (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) |> RaiseOperationResult /// An approximation used during name resolution for intellisense to eliminate extension members which will not diff --git a/src/fsharp/ConstraintSolver.fsi b/src/fsharp/ConstraintSolver.fsi index 1fce009f61..8fdaabf82c 100755 --- a/src/fsharp/ConstraintSolver.fsi +++ b/src/fsharp/ConstraintSolver.fsi @@ -17,64 +17,78 @@ open FSharp.Compiler.MethodCalls open FSharp.Compiler.InfoReader /// Create a type variable representing the use of a "_" in F# code -val NewAnonTypar : TyparKind * range * TyparRigidity * TyparStaticReq * TyparDynamicReq -> Typar +val NewAnonTypar: TyparKind * range * TyparRigidity * TyparStaticReq * TyparDynamicReq -> Typar /// Create an inference type variable -val NewInferenceType : unit -> TType +val NewInferenceType: unit -> TType /// Create an inference type variable for the kind of a byref pointer -val NewByRefKindInferenceType : TcGlobals -> range -> TType +val NewByRefKindInferenceType: TcGlobals -> range -> TType /// Create an inference type variable representing an error condition when checking an expression -val NewErrorType : unit -> TType +val NewErrorType: unit -> TType /// Create an inference type variable representing an error condition when checking a measure -val NewErrorMeasure : unit -> Measure +val NewErrorMeasure: unit -> Measure /// Create a list of inference type variables, one for each element in the input list -val NewInferenceTypes : 'a list -> TType list +val NewInferenceTypes: 'a list -> TType list /// Given a set of formal type parameters and their constraints, make new inference type variables for /// each and ensure that the constraints on the new type variables are adjusted to refer to these. -val FreshenAndFixupTypars : range -> TyparRigidity -> Typars -> TType list -> Typars -> Typars * TyparInst * TType list +val FreshenAndFixupTypars: range -> TyparRigidity -> Typars -> TType list -> Typars -> Typars * TyparInst * TType list -val FreshenTypeInst : range -> Typars -> Typars * TyparInst * TType list +val FreshenTypeInst: range -> Typars -> Typars * TyparInst * TType list -val FreshenTypars : range -> Typars -> TType list +val FreshenTypars: range -> Typars -> TType list -val FreshenMethInfo : range -> MethInfo -> TType list +val FreshenMethInfo: range -> MethInfo -> TType list [] /// Information about the context of a type equation. type ContextInfo = -/// No context was given. -| NoContext -/// The type equation comes from an IF expression. -| IfExpression of range -/// The type equation comes from an omitted else branch. -| OmittedElseBranch of range -/// The type equation comes from a type check of the result of an else branch. -| ElseBranchResult of range -/// The type equation comes from the verification of record fields. -| RecordFields -/// The type equation comes from the verification of a tuple in record fields. -| TupleInRecordFields -/// The type equation comes from a list or array constructor -| CollectionElement of bool * range -/// The type equation comes from a return in a computation expression. -| ReturnInComputationExpression -/// The type equation comes from a yield in a computation expression. -| YieldInComputationExpression -/// The type equation comes from a runtime type test. -| RuntimeTypeTest of bool -/// The type equation comes from an downcast where a upcast could be used. -| DowncastUsedInsteadOfUpcast of bool -/// The type equation comes from a return type of a pattern match clause (not the first clause). -| FollowingPatternMatchClause of range -/// The type equation comes from a pattern match guard. -| PatternMatchGuard of range -/// The type equation comes from a sequence expression. -| SequenceExpression of TType + + /// No context was given. + | NoContext + + /// The type equation comes from an IF expression. + | IfExpression of range + + /// The type equation comes from an omitted else branch. + | OmittedElseBranch of range + + /// The type equation comes from a type check of the result of an else branch. + | ElseBranchResult of range + + /// The type equation comes from the verification of record fields. + | RecordFields + + /// The type equation comes from the verification of a tuple in record fields. + | TupleInRecordFields + + /// The type equation comes from a list or array constructor + | CollectionElement of bool * range + + /// The type equation comes from a return in a computation expression. + | ReturnInComputationExpression + + /// The type equation comes from a yield in a computation expression. + | YieldInComputationExpression + + /// The type equation comes from a runtime type test. + | RuntimeTypeTest of bool + + /// The type equation comes from an downcast where a upcast could be used. + | DowncastUsedInsteadOfUpcast of bool + + /// The type equation comes from a return type of a pattern match clause (not the first clause). + | FollowingPatternMatchClause of range + + /// The type equation comes from a pattern match guard. + | PatternMatchGuard of range + + /// The type equation comes from a sequence expression. + | SequenceExpression of TType exception ConstraintSolverTupleDiffLengths of displayEnv: DisplayEnv * TType list * TType list * range * range exception ConstraintSolverInfiniteTypes of displayEnv: DisplayEnv * contextInfo: ContextInfo * TType * TType * range * range @@ -100,50 +114,70 @@ type TcValF = (ValRef -> ValUseFlag -> TType list -> range -> Expr * TType) type ConstraintSolverState = static member New: TcGlobals * Import.ImportMap * InfoReader * TcValF -> ConstraintSolverState -type ConstraintSolverEnv - -val BakedInTraitConstraintNames : Set - -val MakeConstraintSolverEnv : ContextInfo -> ConstraintSolverState -> range -> DisplayEnv -> ConstraintSolverEnv +val BakedInTraitConstraintNames: Set [] type Trace type OptionalTrace = -| NoTrace -| WithTrace of Trace - -val SimplifyMeasuresInTypeScheme : TcGlobals -> bool -> Typars -> TType -> TyparConstraint list -> Typars -val SolveTyparEqualsType : ConstraintSolverEnv -> int -> range -> OptionalTrace -> TType -> TType -> OperationResult -val SolveTypeEqualsTypeKeepAbbrevs : ConstraintSolverEnv -> int -> range -> OptionalTrace -> TType -> TType -> OperationResult -val CanonicalizeRelevantMemberConstraints : ConstraintSolverEnv -> int -> OptionalTrace -> Typars -> OperationResult -val ResolveOverloading : ConstraintSolverEnv -> OptionalTrace -> string -> ndeep: int -> TraitConstraintInfo option -> int * int -> AccessorDomain -> CalledMeth list -> bool -> TType option -> CalledMeth option * OperationResult -val UnifyUniqueOverloading : ConstraintSolverEnv -> int * int -> string -> AccessorDomain -> CalledMeth list -> TType -> OperationResult -val EliminateConstraintsForGeneralizedTypars : ConstraintSolverEnv -> OptionalTrace -> Typars -> unit - -val CheckDeclaredTypars : DisplayEnv -> ConstraintSolverState -> range -> Typars -> Typars -> unit - -val AddConstraint : ConstraintSolverEnv -> int -> Range.range -> OptionalTrace -> Typar -> TyparConstraint -> OperationResult -val AddCxTypeEqualsType : ContextInfo -> DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> unit -val AddCxTypeEqualsTypeUndoIfFailed : DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> bool -val AddCxTypeEqualsTypeUndoIfFailedOrWarnings : DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> bool -val AddCxTypeEqualsTypeMatchingOnlyUndoIfFailed : DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> bool -val AddCxTypeMustSubsumeType : ContextInfo -> DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> TType -> unit -val AddCxTypeMustSubsumeTypeUndoIfFailed : DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> bool -val AddCxTypeMustSubsumeTypeMatchingOnlyUndoIfFailed : DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> bool -val AddCxMethodConstraint : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TraitConstraintInfo -> unit -val AddCxTypeMustSupportNull : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit -val AddCxTypeMustSupportComparison : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit -val AddCxTypeMustSupportEquality : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit -val AddCxTypeMustSupportDefaultCtor : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit -val AddCxTypeIsReferenceType : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit -val AddCxTypeIsValueType : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit -val AddCxTypeIsUnmanaged : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit -val AddCxTypeIsEnum : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> TType -> unit -val AddCxTypeIsDelegate : DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> TType -> TType -> unit - -val CodegenWitnessThatTypeSupportsTraitConstraint : TcValF -> TcGlobals -> ImportMap -> range -> TraitConstraintInfo -> Expr list -> OperationResult - -val ChooseTyparSolutionAndSolve : ConstraintSolverState -> DisplayEnv -> Typar -> unit - -val IsApplicableMethApprox : TcGlobals -> ImportMap -> range -> MethInfo -> TType -> bool + | NoTrace + | WithTrace of Trace + +val SimplifyMeasuresInTypeScheme: TcGlobals -> bool -> Typars -> TType -> TyparConstraint list -> Typars + +val ResolveOverloadingForCall: DisplayEnv -> ConstraintSolverState -> range -> string -> ndeep: int -> TraitConstraintInfo option -> int * int -> AccessorDomain -> CalledMeth list -> bool -> TType option -> CalledMeth option * OperationResult + +val UnifyUniqueOverloading: DisplayEnv -> ConstraintSolverState -> range -> int * int -> string -> AccessorDomain -> CalledMeth list -> TType -> OperationResult + +/// Remove the global constraints where these type variables appear in the support of the constraint +val EliminateConstraintsForGeneralizedTypars: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> Typars -> unit + +val CheckDeclaredTypars: DisplayEnv -> ConstraintSolverState -> range -> Typars -> Typars -> unit + +val AddCxTypeEqualsType: ContextInfo -> DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> unit + +val AddCxTypeEqualsTypeUndoIfFailed: DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> bool + +val AddCxTypeEqualsTypeUndoIfFailedOrWarnings: DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> bool + +val AddCxTypeEqualsTypeMatchingOnlyUndoIfFailed: DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> bool + +val AddCxTypeMustSubsumeType: ContextInfo -> DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> TType -> unit + +val AddCxTypeMustSubsumeTypeUndoIfFailed: DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> bool + +val AddCxTypeMustSubsumeTypeMatchingOnlyUndoIfFailed: DisplayEnv -> ConstraintSolverState -> range -> TType -> TType -> bool + +val AddCxMethodConstraint: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TraitConstraintInfo -> unit + +val AddCxTypeMustSupportNull: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit + +val AddCxTypeMustSupportComparison: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit + +val AddCxTypeMustSupportEquality: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit + +val AddCxTypeMustSupportDefaultCtor: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit + +val AddCxTypeIsReferenceType: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit + +val AddCxTypeIsValueType: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit + +val AddCxTypeIsUnmanaged: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> unit + +val AddCxTypeIsEnum: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> TType -> unit + +val AddCxTypeIsDelegate: DisplayEnv -> ConstraintSolverState -> range -> OptionalTrace -> TType -> TType -> TType -> unit + +val AddCxTyparDefaultsTo: DisplayEnv -> ConstraintSolverState -> range -> ContextInfo -> Typar -> int -> TType -> unit + +val SolveTypeAsError: DisplayEnv -> ConstraintSolverState -> range -> TType -> unit + +val ApplyTyparDefaultAtPriority: DisplayEnv -> ConstraintSolverState -> priority: int -> Typar -> unit + +val CodegenWitnessThatTypeSupportsTraitConstraint: TcValF -> TcGlobals -> ImportMap -> range -> TraitConstraintInfo -> Expr list -> OperationResult + +val ChooseTyparSolutionAndSolve: ConstraintSolverState -> DisplayEnv -> Typar -> unit + +val IsApplicableMethApprox: TcGlobals -> ImportMap -> range -> MethInfo -> TType -> bool + +val CanonicalizePartialInferenceProblem: ConstraintSolverState -> DisplayEnv -> range -> Typars -> unit \ No newline at end of file diff --git a/src/fsharp/DependencyManager.Integration.fs b/src/fsharp/DependencyManager.Integration.fs new file mode 100644 index 0000000000..9f1ecd35f3 --- /dev/null +++ b/src/fsharp/DependencyManager.Integration.fs @@ -0,0 +1,200 @@ +// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +/// Helper members to integrate DependencyManagers into F# codebase +module internal FSharp.Compiler.DependencyManagerIntegration + +open System +open System.IO +open System.Reflection +open FSharp.Compiler.DotNetFrameworkDependencies +open FSharp.Compiler.ErrorLogger +open Internal.Utilities.FSharpEnvironment + +// Contract strings +let dependencyManagerPattern = "*DependencyManager*.dll" +let dependencyManagerAttributeName= "DependencyManagerAttribute" +let resolveDependenciesMethodName = "ResolveDependencies" +let namePropertyName = "Name" +let keyPropertyName = "Key" + +module ReflectionHelper = + let assemblyHasAttribute (theAssembly: Assembly) attributeName = + try + CustomAttributeExtensions.GetCustomAttributes(theAssembly) + |> Seq.exists (fun a -> a.GetType().Name = attributeName) + with | _ -> false + + let getAttributeNamed (theType: Type) attributeName = + try + theType.GetTypeInfo().GetCustomAttributes false + |> Seq.tryFind (fun a -> a.GetType().Name = attributeName) + with | _ -> None + + let getInstanceProperty<'treturn> (theType: Type) propertyName = + try + let property = theType.GetProperty(propertyName, typeof<'treturn>) + if isNull property then + None + elif not (property.GetGetMethod().IsStatic) + && property.GetIndexParameters() = Array.empty + then + Some property + else + None + with | _ -> None + + let getInstanceMethod<'treturn> (theType: Type) (parameterTypes: Type array) methodName = + try + let theMethod = theType.GetMethod(methodName, parameterTypes) + if isNull theMethod then + None + else + Some theMethod + with | _ -> None + + let stripTieWrapper (e:Exception) = + match e with + | :? TargetInvocationException as e-> + e.InnerException + | _ -> e + +(* Shape of Dependency Manager contract, resolved using reflection *) +type internal IDependencyManagerProvider = + abstract Name: string + abstract Key: string + abstract ResolveDependencies: scriptDir: string * mainScriptName: string * scriptName: string * packageManagerTextLines: string seq * tfm: string -> bool * string list * string list + abstract DependencyAdding: IEvent + abstract DependencyAdded: IEvent + abstract DependencyFailed: IEvent + +[] +type ReferenceType = +| RegisteredDependencyManager of IDependencyManagerProvider +| Library of string +| UnknownType + +type ReflectionDependencyManagerProvider(theType: Type, nameProperty: PropertyInfo, keyProperty: PropertyInfo, resolveDeps: MethodInfo, outputDir: string option) = + let instance = Activator.CreateInstance(theType, [|outputDir :> obj|]) + let nameProperty = nameProperty.GetValue >> string + let keyProperty = keyProperty.GetValue >> string + + let dependencyAddingEvent = Event<_>() + let dependencyAddedEvent = Event<_>() + let dependencyFailedEvent = Event<_>() + + static member InstanceMaker (theType: System.Type, outputDir: string option) = + match ReflectionHelper.getAttributeNamed theType dependencyManagerAttributeName, + ReflectionHelper.getInstanceProperty theType namePropertyName, + ReflectionHelper.getInstanceProperty theType keyPropertyName, + ReflectionHelper.getInstanceMethod theType [| typeof; typeof; typeof; typeof; typeof |] resolveDependenciesMethodName + with + | None, _, _, _ -> None + | _, None, _, _ -> None + | _, _, None, _ -> None + | _, _, _, None -> None + | Some _, Some nameProperty, Some keyProperty, Some resolveDependenciesMethod -> + Some (fun () -> new ReflectionDependencyManagerProvider(theType, nameProperty, keyProperty, resolveDependenciesMethod, outputDir) :> IDependencyManagerProvider) + + interface IDependencyManagerProvider with + member __.Name = instance |> nameProperty + member __.Key = instance |> keyProperty + member this.ResolveDependencies(scriptDir, mainScriptName, scriptName, packageManagerTextLines, tfm) = + let key = (this :> IDependencyManagerProvider).Key + let triggerEvent (evt: Event) = + for prLine in packageManagerTextLines do + evt.Trigger(key, prLine) + triggerEvent dependencyAddingEvent + let arguments = [| box scriptDir; box mainScriptName; box scriptName; box packageManagerTextLines; box tfm |] + let succeeded, generatedScripts, additionalIncludeFolders = resolveDeps.Invoke(instance, arguments) :?> _ + if succeeded then triggerEvent dependencyAddedEvent + else triggerEvent dependencyFailedEvent + succeeded, generatedScripts, additionalIncludeFolders + member __.DependencyAdding = dependencyAddingEvent.Publish + member __.DependencyAdded = dependencyAddedEvent.Publish + member __.DependencyFailed = dependencyFailedEvent.Publish + +// Resolution Path = Location of FSharp.Compiler.Private.dll +let assemblySearchPaths = lazy ( + [ + let assemblyLocation = typeof.GetTypeInfo().Assembly.Location + yield Path.GetDirectoryName assemblyLocation + yield AppDomain.CurrentDomain.BaseDirectory + ]) + +let enumerateDependencyManagerAssemblies compilerTools m = + getCompilerToolsDesignTimeAssemblyPaths compilerTools + |> Seq.append (assemblySearchPaths.Force()) + |> Seq.collect (fun path -> + try + if Directory.Exists(path) then Directory.EnumerateFiles(path, dependencyManagerPattern) + else Seq.empty + with _ -> Seq.empty) + |> Seq.choose (fun path -> + try + Some(AbstractIL.Internal.Library.Shim.FileSystem.AssemblyLoadFrom path) + with + | e -> + let e = ReflectionHelper.stripTieWrapper e + warning(Error(FSComp.SR.couldNotLoadDependencyManagerExtension(path,e.Message),m)) + None) + |> Seq.filter (fun a -> ReflectionHelper.assemblyHasAttribute a dependencyManagerAttributeName) + +let registeredDependencyManagers = ref None + +let RegisteredDependencyManagers (compilerTools: string list) (outputDir: string option) m = + match !registeredDependencyManagers with + | Some managers -> managers + | None -> + let defaultProviders =[] + + let loadedProviders = + enumerateDependencyManagerAssemblies compilerTools m + |> Seq.collect (fun a -> a.GetTypes()) + |> Seq.choose (fun t -> ReflectionDependencyManagerProvider.InstanceMaker(t, outputDir)) + |> Seq.map (fun maker -> maker ()) + + defaultProviders + |> Seq.append loadedProviders + |> Seq.map (fun pm -> pm.Key, pm) + |> Map.ofSeq + +let createPackageManagerUnknownError (compilerTools: string list) (outputDir:string option) packageManagerKey m = + let registeredKeys = String.Join(", ", RegisteredDependencyManagers compilerTools outputDir m |> Seq.map (fun kv -> kv.Value.Key)) + let searchPaths = assemblySearchPaths.Force() + Error(FSComp.SR.packageManagerUnknown(packageManagerKey, String.Join(", ", searchPaths, compilerTools), registeredKeys),m) + +let tryFindDependencyManagerInPath (compilerTools:string list) (outputDir:string option) m (path:string) : ReferenceType = + try + if path.Contains ":" && not (System.IO.Path.IsPathRooted path) then + let managers = RegisteredDependencyManagers compilerTools outputDir m + match managers |> Seq.tryFind (fun kv -> path.StartsWith(kv.Value.Key + ":" )) with + | None -> + errorR(createPackageManagerUnknownError compilerTools outputDir (path.Split(':').[0]) m) + ReferenceType.UnknownType + | Some kv -> ReferenceType.RegisteredDependencyManager kv.Value + else + ReferenceType.Library path + with + | e -> + let e = ReflectionHelper.stripTieWrapper e + errorR(Error(FSComp.SR.packageManagerError(e.Message),m)) + ReferenceType.UnknownType + +let removeDependencyManagerKey (packageManagerKey:string) (path:string) = path.Substring(packageManagerKey.Length + 1).Trim() + +let tryFindDependencyManagerByKey (compilerTools: string list) (outputDir:string option) m (key:string) : IDependencyManagerProvider option = + try + RegisteredDependencyManagers compilerTools outputDir m |> Map.tryFind key + with + | e -> + let e = ReflectionHelper.stripTieWrapper e + errorR(Error(FSComp.SR.packageManagerError(e.Message), m)) + None + +let resolve (packageManager:IDependencyManagerProvider) implicitIncludeDir mainScriptName fileName m packageManagerTextLines = + try + Some(packageManager.ResolveDependencies(implicitIncludeDir, mainScriptName, fileName, packageManagerTextLines, executionTfm)) + with e -> + let e = ReflectionHelper.stripTieWrapper e + errorR(Error(FSComp.SR.packageManagerError(e.Message), m)) + None diff --git a/src/fsharp/DependencyManager.Integration.fsi b/src/fsharp/DependencyManager.Integration.fsi new file mode 100644 index 0000000000..62af44898d --- /dev/null +++ b/src/fsharp/DependencyManager.Integration.fsi @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +/// Helper members to integrate DependencyManagers into F# codebase +module internal FSharp.Compiler.DependencyManagerIntegration + +open FSharp.Compiler.Range + +type IDependencyManagerProvider = + abstract Name: string + abstract Key: string + abstract ResolveDependencies: scriptDir: string * mainScriptName: string * scriptName: string * packageManagerTextLines: string seq * tfm: string -> bool * string list * string list + abstract DependencyAdding: IEvent + abstract DependencyAdded: IEvent + abstract DependencyFailed: IEvent + +[] +type ReferenceType = +| RegisteredDependencyManager of IDependencyManagerProvider +| Library of string +| UnknownType + +val tryFindDependencyManagerInPath: string list -> string option -> range -> string -> ReferenceType +val tryFindDependencyManagerByKey: string list -> string option -> range -> string -> IDependencyManagerProvider option +val removeDependencyManagerKey: string -> string -> string +val createPackageManagerUnknownError: string list -> string option -> string -> range -> exn +val resolve: IDependencyManagerProvider -> string -> string -> string -> range -> string seq -> (bool * string list * string list) option diff --git a/src/fsharp/DotNetFrameworkDependencies.fs b/src/fsharp/DotNetFrameworkDependencies.fs index 8c9c98c16d..a454ec8059 100644 --- a/src/fsharp/DotNetFrameworkDependencies.fs +++ b/src/fsharp/DotNetFrameworkDependencies.fs @@ -1,22 +1,35 @@ // Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. // Functions to retrieve framework dependencies - module internal FSharp.Compiler.DotNetFrameworkDependencies open System open System.Collections.Generic + open System.Diagnostics open System.Globalization open System.IO open System.Reflection + open Internal.Utilities type private TypeInThisAssembly = class end + let fSharpCompilerLocation = + let location = Path.GetDirectoryName(typeof.Assembly.Location) + match FSharpEnvironment.BinFolderOfDefaultFSharpCompiler (Some location) with + | Some path -> path + | None -> +#if DEBUG + Debug.Print(sprintf "FSharpEnvironment.BinFolderOfDefaultFSharpCompiler (Some '%s') returned None Location customized incorrectly: algorithm here: https://github.com/dotnet/fsharp/blob/03f3f1c35f82af26593d025dabca57a6ef3ea9a1/src/utils/CompilerLocationUtils.fs#L171" location) +#endif + // Use the location of this dll + location + let getFSharpCoreLibraryName = "FSharp.Core" let getFsiLibraryName = "FSharp.Compiler.Interactive.Settings" + let getDefaultFSharpCoreLocation = Path.Combine(fSharpCompilerLocation, getFSharpCoreLibraryName + ".dll") + let getDefaultFsiLibraryLocation = Path.Combine(fSharpCompilerLocation, getFsiLibraryName + ".dll") let implementationAssemblyDir = Path.GetDirectoryName(typeof.Assembly.Location) - let getDefaultFSharpCoreReference = typeof.Assembly.Location - let getFSharpCompilerLocation = Path.GetDirectoryName(typeof.Assembly.Location) + let isRunningOnCoreClr = (typeof.Assembly).FullName.StartsWith("System.Private.CoreLib", StringComparison.InvariantCultureIgnoreCase) // Use the ValueTuple that is executing with the compiler if it is from System.ValueTuple // or the System.ValueTuple.dll that sits alongside the compiler. (Note we always ship one with the compiler) @@ -26,15 +39,13 @@ module internal FSharp.Compiler.DotNetFrameworkDependencies if asm.FullName.StartsWith("System.ValueTuple", StringComparison.OrdinalIgnoreCase) then Some asm.Location else - let location = Path.GetDirectoryName(typeof.Assembly.Location) - let valueTuplePath = Path.Combine(location, "System.ValueTuple.dll") + let valueTuplePath = Path.Combine(fSharpCompilerLocation, "System.ValueTuple.dll") if File.Exists(valueTuplePath) then Some valueTuplePath else None with _ -> None - // Algorithm: // use implementation location of obj type, on shared frameworks it will always be in: // @@ -57,6 +68,90 @@ module internal FSharp.Compiler.DotNetFrameworkDependencies Some version, None with | _ -> None, None + // Tries to figure out the tfm for the compiler instance. + // On coreclr it uses the deps.json file + let netcoreTfm = + let file = + try + let asm = Assembly.GetEntryAssembly() + match asm with + | null -> "" + | asm -> + let depsJsonPath = Path.ChangeExtension(asm.Location, "deps.json") + if File.Exists(depsJsonPath) then + File.ReadAllText(depsJsonPath) + else + "" + with _ -> "" + + let tfmPrefix=".NETCoreApp,Version=v" + let pattern = "\"name\": \"" + tfmPrefix + let startPos = + let startPos = file.IndexOf(pattern, StringComparison.OrdinalIgnoreCase) + if startPos >= 0 then startPos + (pattern.Length) else startPos + + let length = + if startPos >= 0 then + let ep = file.IndexOf("\"", startPos) + if ep >= 0 then ep - startPos else ep + else -1 + match startPos, length with + | -1, _ + | _, -1 -> + if isRunningOnCoreClr then + // Running on coreclr but no deps.json was deployed with the host so default to 3.0 + Some "netcoreapp3.0" + else + // Running on desktop + None + | pos, length -> + // use value from the deps.json file + Some ("netcoreapp" + file.Substring(pos, length)) + + // Tries to figure out the tfm for the compiler instance on the Windows desktop. + // On full clr it uses the mscorlib version number + let getWindowsDesktopTfm () = + let defaultMscorlibVersion = 4,8,3815,0 + let desktopProductVersionMonikers = [| + // major, minor, build, revision, moniker + 4, 8, 3815, 0, "net48" + 4, 7, 3190, 0, "net472" + 4, 7, 2600, 0, "net471" + 4, 7, 2053, 0, "net47" + 4, 6, 1590, 0, "net462" + 4, 6, 1055, 0, "net461" + 4, 6, 81, 0, "net46" + 4, 0, 30319, 34209, "net452" + 4, 0, 30319, 18408, "net451" + 4, 0, 30319, 17929, "net45" + 4, 0, 30319, 1, "net4" + |] + + let majorPart, minorPart, buildPart, privatePart= + try + let attrOpt = typeof.Assembly.GetCustomAttributes(typeof) |> Seq.tryHead + match attrOpt with + | Some attr -> + let fv = (downcast attr : AssemblyFileVersionAttribute).Version.Split([|'.'|]) |> Array.map(fun e -> Int32.Parse(e)) + fv.[0], fv.[1], fv.[2], fv.[3] + | _ -> defaultMscorlibVersion + with _ -> defaultMscorlibVersion + + // Get the ProductVersion of this framework compare with table yield compatible monikers + let _, _, _, _, moniker = + desktopProductVersionMonikers + |> Array.find (fun (major, minor, build, revision, _) -> + (majorPart >= major) && + (minorPart >= minor) && + (buildPart >= build) && + (privatePart >= revision)) + moniker + + /// Gets the tfm E.g netcore3.0, net472 + let executionTfm = + match netcoreTfm with + | Some tfm -> tfm + | _ -> getWindowsDesktopTfm () let isInReferenceAssemblyPackDirectory filename = match frameworkRefsPackDirectoryRoot with | Some root -> @@ -130,12 +225,17 @@ module internal FSharp.Compiler.DotNetFrameworkDependencies if not (assemblies.ContainsKey(referenceName)) then try - assemblies.Add(referenceName, path) |> ignore - if referenceName <> "System.Private.CoreLib" then - let asm = System.Reflection.Assembly.LoadFrom(path) - for reference in asm.GetReferencedAssemblies() do - // System.Private.CoreLib doesn't load with reflection - traverseDependencies reference.Name + if File.Exists(path) then + // System.Private.CoreLib doesn't load with reflection + if referenceName = "System.Private.CoreLib" then + assemblies.Add(referenceName, path) + else + try + let asm = System.Reflection.Assembly.LoadFrom(path) + assemblies.Add(referenceName, path) + for reference in asm.GetReferencedAssemblies() do + traverseDependencies reference.Name + with e -> () with e -> () assemblyReferences |> List.iter(traverseDependencies) @@ -156,11 +256,12 @@ module internal FSharp.Compiler.DotNetFrameworkDependencies yield "System.Data" yield "System.Drawing" yield "System.Core" - yield getDefaultFSharpCoreReference + + yield getFSharpCoreLibraryName if useFsiAuxLib then yield getFsiLibraryName // always include a default reference to System.ValueTuple.dll in scripts and out-of-project sources - match getDefaultSystemValueTupleReference() with + match getDefaultSystemValueTupleReference () with | None -> () | Some v -> yield v @@ -193,9 +294,9 @@ module internal FSharp.Compiler.DotNetFrameworkDependencies let getImplementationReferences () = // Coreclr supports netstandard assemblies only for now (getDependenciesOf [ - yield Path.Combine(implementationAssemblyDir, "netstandard.dll") - yield getDefaultFSharpCoreReference - if useFsiAuxLib then yield getFsiLibraryName + yield! Directory.GetFiles(implementationAssemblyDir, "*.dll") + yield getDefaultFSharpCoreLocation + if useFsiAuxLib then yield getDefaultFsiLibraryLocation ]).Values |> Seq.toList if useSdkRefs then @@ -203,8 +304,8 @@ module internal FSharp.Compiler.DotNetFrameworkDependencies match frameworkRefsPackDirectory with | Some path -> try [ yield! Directory.GetFiles(path, "*.dll") - yield getDefaultFSharpCoreReference - if useFsiAuxLib then yield getFsiLibraryName + yield getDefaultFSharpCoreLocation + if useFsiAuxLib then yield getDefaultFsiLibraryLocation ] with | _ -> List.empty | None -> @@ -214,8 +315,8 @@ module internal FSharp.Compiler.DotNetFrameworkDependencies dependencies results - let defaultReferencesForScriptsAndOutOfProjectSources assumeDotNetFramework useSdkRefs = - fetchPathsForDefaultReferencesForScriptsAndOutOfProjectSources false useSdkRefs assumeDotNetFramework + let defaultReferencesForScriptsAndOutOfProjectSources useFsiAuxLib assumeDotNetFramework useSdkRefs = + fetchPathsForDefaultReferencesForScriptsAndOutOfProjectSources useFsiAuxLib useSdkRefs assumeDotNetFramework // A set of assemblies to always consider to be system assemblies. A common set of these can be used a shared // resources between projects in the compiler services. Also all assemblies where well-known system types exist diff --git a/src/fsharp/ErrorLogger.fs b/src/fsharp/ErrorLogger.fs index c37a339512..2f515d566a 100755 --- a/src/fsharp/ErrorLogger.fs +++ b/src/fsharp/ErrorLogger.fs @@ -441,8 +441,8 @@ let PushThreadBuildPhaseUntilUnwind (phase:BuildPhase) = let PushErrorLoggerPhaseUntilUnwind(errorLoggerTransformer : ErrorLogger -> #ErrorLogger) = let oldErrorLogger = CompileThreadStatic.ErrorLogger let newErrorLogger = errorLoggerTransformer oldErrorLogger - let newInstalled = ref true - let newIsInstalled() = if !newInstalled then () else (assert false; (); (*failwith "error logger used after unwind"*)) // REVIEW: ok to throw? + let mutable newInstalled = true + let newIsInstalled() = if newInstalled then () else (assert false; (); (*failwith "error logger used after unwind"*)) // REVIEW: ok to throw? let chkErrorLogger = { new ErrorLogger("PushErrorLoggerPhaseUntilUnwind") with member __.DiagnosticSink(phasedError, isError) = newIsInstalled(); newErrorLogger.DiagnosticSink(phasedError, isError) member __.ErrorCount = newIsInstalled(); newErrorLogger.ErrorCount } @@ -452,7 +452,7 @@ let PushErrorLoggerPhaseUntilUnwind(errorLoggerTransformer : ErrorLogger -> #Err { new System.IDisposable with member __.Dispose() = CompileThreadStatic.ErrorLogger <- oldErrorLogger - newInstalled := false } + newInstalled <- false } let SetThreadBuildPhaseNoUnwind(phase:BuildPhase) = CompileThreadStatic.BuildPhase <- phase let SetThreadErrorLoggerNoUnwind errorLogger = CompileThreadStatic.ErrorLogger <- errorLogger diff --git a/src/fsharp/ExtensionTyping.fs b/src/fsharp/ExtensionTyping.fs old mode 100755 new mode 100644 index 24dc988395..8e73e241fe --- a/src/fsharp/ExtensionTyping.fs +++ b/src/fsharp/ExtensionTyping.fs @@ -16,11 +16,14 @@ module internal ExtensionTyping = open FSharp.Compiler.Range open FSharp.Compiler.AbstractIL.IL open FSharp.Compiler.AbstractIL.Internal.Library // frontAndBack + open Internal.Utilities.FSharpEnvironment type TypeProviderDesignation = TypeProviderDesignation of string - exception ProvidedTypeResolution of range * System.Exception - exception ProvidedTypeResolutionNoRange of System.Exception + exception ProvidedTypeResolution of range * System.Exception + exception ProvidedTypeResolutionNoRange of System.Exception + + let toolingCompatiblePaths() = toolingCompatiblePaths () /// Represents some of the configuration parameters passed to type provider components type ResolutionEnvironment = @@ -28,101 +31,18 @@ module internal ExtensionTyping = outputFile : string option showResolutionMessages : bool referencedAssemblies : string[] - temporaryFolder : string } - - - // Specify the tooling-compatible fragments of a path such as: - // typeproviders/fsharp41/net461/MyProvider.DesignTime.dll - // tools/fsharp41/net461/MyProvider.DesignTime.dll - // See https://github.com/Microsoft/visualfsharp/issues/3736 - - // Represents the FF#-compiler <-> type provider protocol. - // When the API or protocol updates, add a new version moniker to the front of the list here. - let toolingCompatibleTypeProviderProtocolMonikers() = - [ "fsharp41" ] - - // Detect the host tooling context - let toolingCompatibleVersions() = - if typeof.Assembly.GetName().Name = "mscorlib" then - [ "net461"; "net452"; "net451"; "net45"; "netstandard2.0"] - elif typeof.Assembly.GetName().Name = "System.Private.CoreLib" then - [ "netcoreapp2.0"; "netstandard2.0"] - else - System.Diagnostics.Debug.Assert(false, "Couldn't determine runtime tooling context, assuming it supports at least .NET Standard 2.0") - [ "netstandard2.0"] - - - let toolingCompatiblePaths() = - [ for protocol in toolingCompatibleTypeProviderProtocolMonikers() do - for netRuntime in toolingCompatibleVersions() do - yield Path.Combine("typeproviders", protocol, netRuntime) - yield Path.Combine("tools", protocol, netRuntime) - ] + temporaryFolder : string } /// Load a the design-time part of a type-provider into the host process, and look for types /// marked with the TypeProviderAttribute attribute. - let GetTypeProviderImplementationTypes (runTimeAssemblyFileName, designTimeAssemblyNameString, m: range) = + let GetTypeProviderImplementationTypes (runTimeAssemblyFileName, designTimeAssemblyNameString, m:range, compilerToolPaths:string list) = // Report an error, blaming the particular type provider component let raiseError (e: exn) = raise (TypeProviderError(FSComp.SR.etProviderHasWrongDesignerAssembly(typeof.Name, designTimeAssemblyNameString, e.Message), runTimeAssemblyFileName, m)) - // Find and load the designer assembly for the type provider component. - // - // We look in the directories stepping up from the location of the runtime assembly. - - let loadFromLocation designTimeAssemblyPath = - try - Some (FileSystem.AssemblyLoadFrom designTimeAssemblyPath) - with e -> - raiseError e + let designTimeAssemblyOpt = getTypeProviderAssembly (runTimeAssemblyFileName, designTimeAssemblyNameString, compilerToolPaths, raiseError) - let rec searchParentDirChain dir designTimeAssemblyName = - seq { - for subdir in toolingCompatiblePaths() do - let designTimeAssemblyPath = Path.Combine (dir, subdir, designTimeAssemblyName) - if FileSystem.SafeExists designTimeAssemblyPath then - yield loadFromLocation designTimeAssemblyPath - match Path.GetDirectoryName dir with - | s when s = "" || s = null || Path.GetFileName dir = "packages" || s = dir -> () - | parentDir -> yield! searchParentDirChain parentDir designTimeAssemblyName - } - - let loadFromParentDirRelativeToRuntimeAssemblyLocation designTimeAssemblyName = - let runTimeAssemblyPath = Path.GetDirectoryName runTimeAssemblyFileName - searchParentDirChain runTimeAssemblyPath designTimeAssemblyName - |> Seq.tryHead - |> function - | Some res -> res - | None -> - // The search failed, just load from the first location and report an error - let runTimeAssemblyPath = Path.GetDirectoryName runTimeAssemblyFileName - loadFromLocation (Path.Combine (runTimeAssemblyPath, designTimeAssemblyName)) - - let designTimeAssemblyOpt = - - if designTimeAssemblyNameString.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) then - loadFromParentDirRelativeToRuntimeAssemblyLocation designTimeAssemblyNameString - else - // Cover the case where the ".dll" extension has been left off and no version etc. has been used in the assembly - // string specification. The Name=FullName comparison is particularly strange, and was there to support - // design-time DLLs specified using "x.DesignTIme, Version= ..." long assembly names and GAC loads. - // These kind of design-time assembly specifications are no longer used to our knowledge so that comparison is basically legacy - // and will always succeed. - let name = System.Reflection.AssemblyName (Path.GetFileNameWithoutExtension designTimeAssemblyNameString) - if name.Name.Equals(name.FullName, StringComparison.OrdinalIgnoreCase) then - let designTimeAssemblyName = designTimeAssemblyNameString+".dll" - loadFromParentDirRelativeToRuntimeAssemblyLocation designTimeAssemblyName - else - // Load from the GAC using Assembly.Load. This is legacy since type provider design-time components are - // never in the GAC these days and "x.DesignTIme, Version= ..." specifications are never used. - try - let asmName = System.Reflection.AssemblyName designTimeAssemblyNameString - Some (FileSystem.AssemblyLoad asmName) - with e -> - raiseError e - - // If we've find a design-time assembly, look for the public types with TypeProviderAttribute match designTimeAssemblyOpt with | Some loadedDesignTimeAssembly -> try @@ -193,7 +113,8 @@ module internal ExtensionTyping = isInteractive: bool, systemRuntimeContainsType : string -> bool, systemRuntimeAssemblyVersion : System.Version, - m: range) = + compilerToolPaths: string list, + m:range) = let providerSpecs = try @@ -213,7 +134,7 @@ module internal ExtensionTyping = | Some designTimeAssemblyName, Some path when String.Compare(designTimeAssemblyName.Name, Path.GetFileNameWithoutExtension path, StringComparison.OrdinalIgnoreCase) = 0 -> () | Some _, _ -> - for t in GetTypeProviderImplementationTypes (runTimeAssemblyFileName, designTimeAssemblyNameString, m) do + for t in GetTypeProviderImplementationTypes (runTimeAssemblyFileName, designTimeAssemblyNameString, m, compilerToolPaths) do let resolver = CreateTypeProvider (t, runTimeAssemblyFileName, resolutionEnvironment, isInvalidationSupported, isInteractive, systemRuntimeContainsType, systemRuntimeAssemblyVersion, m) match box resolver with | null -> () @@ -222,7 +143,7 @@ module internal ExtensionTyping = () ] with :? TypeProviderError as tpe -> - tpe.Iter(fun e -> errorR(NumberedError((e.Number, e.ContextualErrorMessage), m)) ) + tpe.Iter(fun e -> errorR(NumberedError((e.Number, e.ContextualErrorMessage), m)) ) [] let providers = Tainted<_>.CreateAll providerSpecs diff --git a/src/fsharp/ExtensionTyping.fsi b/src/fsharp/ExtensionTyping.fsi index 5c679fe69e..d6584d4188 100755 --- a/src/fsharp/ExtensionTyping.fsi +++ b/src/fsharp/ExtensionTyping.fsi @@ -54,6 +54,7 @@ module internal ExtensionTyping = * isInteractive: bool * systemRuntimeContainsType : (string -> bool) * systemRuntimeAssemblyVersion : System.Version + * compilerToolsPath : string list * range -> Tainted list /// Given an extension type resolver, supply a human-readable name suitable for error messages. diff --git a/src/fsharp/FSComp.txt b/src/fsharp/FSComp.txt index c1ab22ab6a..de26c9b349 100755 --- a/src/fsharp/FSComp.txt +++ b/src/fsharp/FSComp.txt @@ -845,6 +845,7 @@ optsNoOpt,"Only include optimization information essential for implementing inli optsNoInterface,"Don't add a resource to the generated assembly containing F#-specific metadata" optsSig,"Print the inferred interface of the assembly to a file" optsReference,"Reference an assembly (Short form: -r)" +optsCompilerTool,"Reference an assembly or directory containing a design time tool (Short form: -t)" optsWin32res,"Specify a Win32 resource file (.res)" optsWin32manifest,"Specify a Win32 manifest file" optsNowin32manifest,"Do not include the default Win32 manifest" @@ -1351,8 +1352,13 @@ tcGlobalsSystemTypeNotFound,"The system type '%s' was required but no referenced 3213,typrelMemberHasMultiplePossibleDispatchSlots,"The member '%s' matches multiple overloads of the same method.\nPlease restrict it to one of the following:%s." 3214,methodIsNotStatic,"Method or object constructor '%s' is not static" 3215,parsUnexpectedSymbolEqualsInsteadOfIn,"Unexpected symbol '=' in expression. Did you intend to use 'for x in y .. z do' instead?" +3216,packageManagerUnknown,"Package manager key '%s' was not registered in %s. Currently registered: %s" +3217,packageManagerError,"%s" tcAnonRecdCcuMismatch,"Two anonymous record types are from different assemblies '%s' and '%s'" -tcAnonRecdFieldNameMismatch,"Two anonymous record types have mismatched sets of field names '%s' and '%s'" +tcAnonRecdFieldNameMismatch,"This anonymous record does not exactly match the expected shape. Add the missing fields %s and remove the extra fields %s." +tcAnonRecdFieldNameSubset,"This anonymous record does not have enough fields. Add the missing fields %s." +tcAnonRecdFieldNameSuperset,"This anonymous record has too many fields. Remove the extra fields %s." +tcAnonRecdFieldNameDifferent,"This is the wrong anonymous record. It should have the fields %s." keywordDescriptionAbstract,"Indicates a method that either has no implementation in the type in which it is declared or that is virtual and has a default implementation." keyworkDescriptionAnd,"Used in mutually recursive bindings, in property declarations, and with multiple constraints on generic parameters." keywordDescriptionAs,"Used to give the current class object an object name. Also used to give a name to a whole pattern within a pattern match." @@ -1462,13 +1468,16 @@ notAFunctionButMaybeDeclaration,"This value is not a function and cannot be appl 3244,parsInvalidAnonRecdType,"Invalid anonymous record type" 3245,tcCopyAndUpdateNeedsRecordType,"The input to a copy-and-update expression that creates an anonymous record must be either an anonymous record or a record" 3246,tcAugmentationsCannotHaveAttributes,"Attributes cannot be applied to type extensions." +3247,couldNotLoadDependencyManagerExtension,"The dependency manager extension %s could not be loaded. Message: %s" 3250,expressionHasNoName,"Expression does not have a name." 3251,chkNoFirstClassNameOf,"Using the 'nameof' operator as a first-class function value is not permitted." 3300,chkInvalidFunctionParameterType,"The parameter '%s' has an invalid type '%s'. This is not permitted by the rules of Common IL." 3301,chkInvalidFunctionReturnType,"The function or method has an invalid return type '%s'. This is not permitted by the rules of Common IL." +3302,packageManagementRequiresVFive,"The package management feature requires language version 5.0 use /langversion:preview" +3303,fromEndSlicingRequiresVFive,"From the end slicing with requires language version 5.0, use /langversion:preview." useSdkRefs,"Use reference assemblies for .NET framework references when available (Enabled by default)." fSharpBannerVersion,"%s for F# %s" -nativeResourceFormatError,"Stream does not begin with a null resource and is not in '.RES' format." -nativeResourceHeaderMalformed,"Resource header beginning at offset %s is malformed." optsLangVersion,"Display the allowed values for language version, specify language version such as 'latest' or 'preview'" optsSupportedLangVersions,"Supported language versions:" +nativeResourceFormatError,"Stream does not begin with a null resource and is not in '.RES' format." +nativeResourceHeaderMalformed,"Resource header beginning at offset %s is malformed." diff --git a/src/fsharp/FSStrings.resx b/src/fsharp/FSStrings.resx index 9794e8fb4d..cf3d3c92b2 100755 --- a/src/fsharp/FSStrings.resx +++ b/src/fsharp/FSStrings.resx @@ -324,6 +324,9 @@ symbol '..' + + symbol '..^' + quote symbol diff --git a/src/fsharp/FSharp.Compiler.LanguageServer/Directory.Build.props b/src/fsharp/FSharp.Compiler.LanguageServer/Directory.Build.props deleted file mode 100644 index 7cd41381b5..0000000000 --- a/src/fsharp/FSharp.Compiler.LanguageServer/Directory.Build.props +++ /dev/null @@ -1,9 +0,0 @@ - - - - true - - - - - diff --git a/src/fsharp/FSharp.Compiler.LanguageServer/FSharp.Compiler.LanguageServer.DesignTime.proj b/src/fsharp/FSharp.Compiler.LanguageServer/FSharp.Compiler.LanguageServer.DesignTime.proj deleted file mode 100644 index d02ae419bc..0000000000 --- a/src/fsharp/FSharp.Compiler.LanguageServer/FSharp.Compiler.LanguageServer.DesignTime.proj +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - $(MSBuildThisFileDirectory)FSharp.Compiler.LanguageServer.DesignTime.targets - - - - - - - - - - - - - - diff --git a/src/fsharp/FSharp.Compiler.LanguageServer/FSharp.Compiler.LanguageServer.DesignTime.targets b/src/fsharp/FSharp.Compiler.LanguageServer/FSharp.Compiler.LanguageServer.DesignTime.targets deleted file mode 100644 index ea8f3e2866..0000000000 --- a/src/fsharp/FSharp.Compiler.LanguageServer/FSharp.Compiler.LanguageServer.DesignTime.targets +++ /dev/null @@ -1,52 +0,0 @@ - - - - - true - false - true - true - false - false - false - true - false - true - false - - - - - - - _ComputeTargetFrameworkItems - _PopulateTargetFrameworks - - - - - <_TargetFramework Include="$(TargetFramework)" /> - - - - - - - - - - - - - - diff --git a/src/fsharp/FSharp.Compiler.LanguageServer/FSharp.Compiler.LanguageServer.fsproj b/src/fsharp/FSharp.Compiler.LanguageServer/FSharp.Compiler.LanguageServer.fsproj deleted file mode 100644 index 0bb0899140..0000000000 --- a/src/fsharp/FSharp.Compiler.LanguageServer/FSharp.Compiler.LanguageServer.fsproj +++ /dev/null @@ -1,59 +0,0 @@ - - - - - Exe - .exe - net472;netcoreapp3.0 - netcoreapp3.0 - true - Implements the Language Server Protocol (LSP) for F#. - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_PublishedProjectOutputGroupFiles Include="$(PublishDir)\**" /> - - - - - - - - - - diff --git a/src/fsharp/FSharp.Compiler.LanguageServer/JsonDUConverter.fs b/src/fsharp/FSharp.Compiler.LanguageServer/JsonDUConverter.fs deleted file mode 100644 index ae8575195d..0000000000 --- a/src/fsharp/FSharp.Compiler.LanguageServer/JsonDUConverter.fs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. - -namespace FSharp.Compiler.LanguageServer - -open System -open FSharp.Reflection -open Newtonsoft.Json - -type JsonDUConverter() = - inherit JsonConverter() - override __.CanConvert(typ) = FSharpType.IsUnion(typ) - override __.WriteJson(writer, value, _serializer) = - writer.WriteValue(value.ToString().ToLowerInvariant()) - override __.ReadJson(reader, typ, x, serializer) = - let cases = FSharpType.GetUnionCases(typ) - let str = serializer.Deserialize(reader, typeof) :?> string - let case = cases |> Array.find (fun c -> String.Compare(c.Name, str, StringComparison.OrdinalIgnoreCase) = 0) - FSharpValue.MakeUnion(case, [||]) diff --git a/src/fsharp/FSharp.Compiler.LanguageServer/JsonOptionConverter.fs b/src/fsharp/FSharp.Compiler.LanguageServer/JsonOptionConverter.fs deleted file mode 100644 index 937dda00e4..0000000000 --- a/src/fsharp/FSharp.Compiler.LanguageServer/JsonOptionConverter.fs +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. - -namespace FSharp.Compiler.LanguageServer - -open System -open FSharp.Reflection -open Newtonsoft.Json - -type JsonOptionConverter() = - inherit JsonConverter() - override __.CanConvert(typ) = typ.IsGenericType && typ.GetGenericTypeDefinition() = typedefof> - override __.WriteJson(writer, value, serializer) = - let value = match value with - | null -> null - | _ -> - let _, fields = FSharpValue.GetUnionFields(value, value.GetType()) - fields.[0] - serializer.Serialize(writer, value) - override __.ReadJson(reader, typ, _, serializer) = - let innerType = typ.GetGenericArguments().[0] - let innerType = - if innerType.IsValueType then (typedefof>).MakeGenericType([|innerType|]) - else innerType - let value = serializer.Deserialize(reader, innerType) - let cases = FSharpType.GetUnionCases(typ) - if value = null then FSharpValue.MakeUnion(cases.[0], [||]) - else FSharpValue.MakeUnion(cases.[1], [|value|]) diff --git a/src/fsharp/FSharp.Compiler.LanguageServer/LspExternalAccess.fs b/src/fsharp/FSharp.Compiler.LanguageServer/LspExternalAccess.fs deleted file mode 100644 index 48e4b0b405..0000000000 --- a/src/fsharp/FSharp.Compiler.LanguageServer/LspExternalAccess.fs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. - -namespace FSharp.Compiler.LanguageServer - -open StreamJsonRpc - -[] -module FunctionNames = - [] - let OptionsSet = "options/set" - - [] - let TextDocumentPublishDiagnostics = "textDocument/publishDiagnostics" - -type Options = - { usePreviewTextHover: bool - usePreviewDiagnostics: bool } - static member Default() = - { usePreviewTextHover = false - usePreviewDiagnostics = false } - static member AllOn() = - { usePreviewTextHover = true - usePreviewDiagnostics = true } - -module Extensions = - type JsonRpc with - member jsonRpc.SetOptionsAsync (options: Options) = - async { - do! jsonRpc.InvokeAsync(OptionsSet, options) |> Async.AwaitTask - } diff --git a/src/fsharp/FSharp.Compiler.LanguageServer/LspTypes.fs b/src/fsharp/FSharp.Compiler.LanguageServer/LspTypes.fs deleted file mode 100644 index 264e526fcd..0000000000 --- a/src/fsharp/FSharp.Compiler.LanguageServer/LspTypes.fs +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. - -namespace FSharp.Compiler.LanguageServer - -open Newtonsoft.Json.Linq -open Newtonsoft.Json - -// Interfaces as defined at https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/. -// The properties on these types are camlCased to match the underlying JSON properties to avoid attributes on every -// field: -// [] - -/// Represents a zero-based line and column of a text document. -type Position = - { line: int - character: int } - -type Range = - { start: Position - ``end``: Position } - -type DocumentUri = string - -type Location = - { uri: DocumentUri - range: Range } - -type DiagnosticRelatedInformation = - { location: Location - message: string } - -type Diagnostic = - { range: Range - severity: int option - code: string - source: string option - message: string - relatedInformation: DiagnosticRelatedInformation[] option } - static member Error = 1 - static member Warning = 2 - static member Information = 3 - static member Hint = 4 - -type PublishDiagnosticsParams = - { uri: DocumentUri - diagnostics: Diagnostic[] } - -type ClientCapabilities = - { workspace: JToken option // TODO: WorkspaceClientCapabilities - textDocument: JToken option // TODO: TextDocumentClientCapabilities, publishDiagnostics: { relatedInformation: bool option } - experimental: JToken option - supportsVisualStudioExtensions: bool option } - -[)>] -type Trace = - | Off - | Messages - | Verbose - -type WorkspaceFolder = - { uri: DocumentUri - name: string } - -/// Note, this type has many more optional values that can be expanded as support is added. -type ServerCapabilities = - { hoverProvider: bool } - static member DefaultCapabilities() = - { ServerCapabilities.hoverProvider = true } - -type InitializeResult = - { capabilities: ServerCapabilities } - -[)>] -type MarkupKind = - | PlainText - | Markdown - -type MarkupContent = - { kind: MarkupKind - value: string } - -type Hover = - { contents: MarkupContent - range: Range option } - -type TextDocumentIdentifier = - { uri: DocumentUri } diff --git a/src/fsharp/FSharp.Compiler.LanguageServer/Methods.fs b/src/fsharp/FSharp.Compiler.LanguageServer/Methods.fs deleted file mode 100644 index 453b7f8228..0000000000 --- a/src/fsharp/FSharp.Compiler.LanguageServer/Methods.fs +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. - -namespace FSharp.Compiler.LanguageServer - -open System -open System.Runtime.InteropServices -open System.Threading -open Newtonsoft.Json.Linq -open StreamJsonRpc - -// https://microsoft.github.io/language-server-protocol/specifications/specification-3-14/ -type Methods() = - - let state = State() - - /// Helper to run Async<'T> with a CancellationToken. - let runAsync (cancellationToken: CancellationToken) (computation: Async<'T>) = Async.StartAsTask(computation, cancellationToken=cancellationToken) - - member __.State = state - - //-------------------------------------------------------------------------- - // official LSP methods - //-------------------------------------------------------------------------- - - [] - member __.Initialize - ( - processId: Nullable, - [] rootPath: string, - [] rootUri: DocumentUri, - [] initializationOptions: JToken, - capabilities: ClientCapabilities, - [] trace: string, - [] workspaceFolders: WorkspaceFolder[], - [] cancellationToken: CancellationToken - ) = - state.Initialize rootPath rootUri (fun projectOptions -> TextDocument.PublishDiagnostics(state, projectOptions) |> Async.Start) - { InitializeResult.capabilities = ServerCapabilities.DefaultCapabilities() } - - [] - member __.Initialized () = () - - [] - member __.Shutdown(): obj = state.DoShutdown(); null - - [] - member __.Exit() = state.DoExit() - - [] - member __.cancelRequest (id: JToken) = state.DoCancel() - - [] - member __.TextDocumentHover - ( - textDocument: TextDocumentIdentifier, - position: Position, - [] cancellationToken: CancellationToken - ) = - TextDocument.Hover state textDocument position |> runAsync cancellationToken - - //-------------------------------------------------------------------------- - // unofficial LSP methods that we implement separately - //-------------------------------------------------------------------------- - - [] - member __.OptionsSet - ( - options: Options - ) = - eprintfn "got options %A" options - state.Options <- options - state.InvalidateAllProjects() diff --git a/src/fsharp/FSharp.Compiler.LanguageServer/Program.fs b/src/fsharp/FSharp.Compiler.LanguageServer/Program.fs deleted file mode 100644 index 13d0c9709f..0000000000 --- a/src/fsharp/FSharp.Compiler.LanguageServer/Program.fs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. - -namespace FSharp.Compiler.LanguageServer - -open System - -module Program = - - [] - let main(args: string[]) = - async { - let server = new Server(Console.OpenStandardOutput(), Console.OpenStandardInput()) - server.StartListening() - do! server.WaitForExitAsync() - return 0 - } |> Async.RunSynchronously diff --git a/src/fsharp/FSharp.Compiler.LanguageServer/Server.fs b/src/fsharp/FSharp.Compiler.LanguageServer/Server.fs deleted file mode 100644 index 28d5e49a58..0000000000 --- a/src/fsharp/FSharp.Compiler.LanguageServer/Server.fs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. - -namespace FSharp.Compiler.LanguageServer - -open System -open System.IO -open StreamJsonRpc - -type Server(sendingStream: Stream, receivingStream: Stream) = - - let formatter = JsonMessageFormatter() - let converter = JsonOptionConverter() // special handler to convert between `Option<'T>` and `obj/null`. - do formatter.JsonSerializer.Converters.Add(converter) - let handler = new HeaderDelimitedMessageHandler(sendingStream, receivingStream, formatter) - let methods = Methods() - let rpc = new JsonRpc(handler, methods) - do methods.State.JsonRpc <- Some rpc - - member __.StartListening() = - rpc.StartListening() - - member __.WaitForExitAsync() = - async { - do! Async.AwaitEvent (methods.State.Shutdown) - do! Async.AwaitEvent (methods.State.Exit) - } - - interface IDisposable with - member __.Dispose() = - rpc.Dispose() diff --git a/src/fsharp/FSharp.Compiler.LanguageServer/State.fs b/src/fsharp/FSharp.Compiler.LanguageServer/State.fs deleted file mode 100644 index 0812bb9a7f..0000000000 --- a/src/fsharp/FSharp.Compiler.LanguageServer/State.fs +++ /dev/null @@ -1,233 +0,0 @@ -// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. - -namespace FSharp.Compiler.LanguageServer - -open System -open System.Collections.Concurrent -open System.Collections.Generic -open System.Diagnostics -open System.IO -open System.Text.RegularExpressions -open FSharp.Compiler.SourceCodeServices -open StreamJsonRpc - -module internal Solution = - // easy unit testing - let getProjectPaths (solutionContent: string) (solutionDir: string) = - // This looks scary, but is much more lightweight than carrying along MSBuild just to have it parse the solution file. - // - // A valid line in .sln looks like: - // Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "ConsoleApp2", "ConsoleApp2\ConsoleApp2.fsproj", "{60A4BE67-7E03-4200-AD38-B0E5E8E049C1}" - // and we're hoping to extract this: ------------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - // - // therefore: - // ^Project text 'Project' at the start of the line - // .* any number of characters - // \"" double quote character (it's doubled up to escape from the raw string literal here) - // ( start of capture group - // [^\""] not a quote - // * many of those - // \.fsproj literal string ".fsproj" - // ) end of capture group - // \"" double quote - let pattern = Regex(@"^Project.*\""([^\""]*\.fsproj)\""") - let lines = solutionContent.Split('\n') - let relativeProjects = - lines - |> Array.map pattern.Match - |> Array.filter (fun m -> m.Success) - |> Array.map (fun m -> m.Groups.[1].Value) - // .sln files by convention uses backslashes, which might not be appropriate at runtime - |> Array.map (fun p -> p.Replace('\\', Path.DirectorySeparatorChar)) - let projects = - relativeProjects - |> Array.map (fun p -> if Path.IsPathRooted(p) then p else Path.Combine(solutionDir, p)) - projects - -type State() = - - let checker = FSharpChecker.Create() - - let sourceFileToProjectMap = ConcurrentDictionary() - - let shutdownEvent = new Event<_>() - let exitEvent = new Event<_>() - let cancelEvent = new Event<_>() - let projectInvalidatedEvent = new Event<_>() - - let fileChanged (args: FileSystemEventArgs) = - match sourceFileToProjectMap.TryGetValue args.FullPath with - | true, projectOptions -> projectInvalidatedEvent.Trigger(projectOptions) - | false, _ -> () - let fileRenamed (args: RenamedEventArgs) = - match sourceFileToProjectMap.TryGetValue args.FullPath with - | true, projectOptions -> projectInvalidatedEvent.Trigger(projectOptions) - | false, _ -> () - let fileWatcher = new FileSystemWatcher() - do fileWatcher.IncludeSubdirectories <- true - do fileWatcher.Changed.Add(fileChanged) - do fileWatcher.Created.Add(fileChanged) - do fileWatcher.Deleted.Add(fileChanged) - do fileWatcher.Renamed.Add(fileRenamed) - - let execProcess (name: string) (args: string) = - let startInfo = ProcessStartInfo(name, args) - eprintfn "executing: %s %s" name args - startInfo.CreateNoWindow <- true - startInfo.RedirectStandardOutput <- true - startInfo.UseShellExecute <- false - let lines = List() - use proc = new Process() - proc.StartInfo <- startInfo - proc.OutputDataReceived.Add(fun args -> lines.Add(args.Data)) - proc.Start() |> ignore - proc.BeginOutputReadLine() - proc.WaitForExit() - lines.ToArray() - - let linesWithPrefixClean (prefix: string) (lines: string[]) = - lines - |> Array.filter (isNull >> not) - |> Array.map (fun line -> line.TrimStart(' ')) - |> Array.filter (fun line -> line.StartsWith(prefix)) - |> Array.map (fun line -> line.Substring(prefix.Length)) - - let getProjectOptions (rootDir: string) = - if isNull rootDir then [||] - else - fileWatcher.Path <- rootDir - fileWatcher.EnableRaisingEvents <- true - - /// This function is meant to be temporary. Until we figure out what a language server for a project - /// system looks like, we have to guess based on the files we find in the root. - let getProjectOptions (projectPath: string) = - let projectDir = Path.GetDirectoryName(projectPath) - let normalizePath (path: string) = - if Path.IsPathRooted(path) then path - else Path.Combine(projectDir, path) - - // To avoid essentially re-creating a copy of MSBuild alongside this tool, we instead fake a design- - // time build with this project. The output of building this helper project is text that's easily - // parsable. See the helper project for more information. - let reporterProject = Path.Combine(Path.GetDirectoryName(typeof.Assembly.Location), "FSharp.Compiler.LanguageServer.DesignTime.proj") - let detectedTfmSentinel = "DetectedTargetFramework=" - let detectedCommandLineArgSentinel = "DetectedCommandLineArg=" - - let execTfmReporter = - sprintf "build \"%s\" \"/p:ProjectFile=%s\"" reporterProject projectPath - |> execProcess "dotnet" - - let execArgReporter (tfm: string) = - sprintf "build \"%s\" \"/p:ProjectFile=%s\" \"/p:TargetFramework=%s\"" reporterProject projectPath tfm - |> execProcess "dotnet" - - // find the target frameworks - let targetFrameworks = - execTfmReporter - |> linesWithPrefixClean detectedTfmSentinel - - let getArgs (tfm: string) = - execArgReporter tfm - |> linesWithPrefixClean detectedCommandLineArgSentinel - - let tfmAndArgs = - targetFrameworks - |> Array.map (fun tfm -> tfm, getArgs tfm) - - let separateArgs (args: string[]) = - args - |> Array.partition (fun a -> a.StartsWith("-")) - |> (fun (options, files) -> - let normalizedFiles = files |> Array.map normalizePath - options, normalizedFiles) - - // TODO: for now we're only concerned with the first TFM - let _tfm, args = Array.head tfmAndArgs - - let otherOptions, sourceFiles = separateArgs args - - let projectOptions: FSharpProjectOptions = - { ProjectFileName = projectPath - ProjectId = None - SourceFiles = sourceFiles - OtherOptions = otherOptions - ReferencedProjects = [||] // TODO: populate from @(ProjectReference) - IsIncompleteTypeCheckEnvironment = false - UseScriptResolutionRules = false - LoadTime = DateTime.Now - UnresolvedReferences = None - OriginalLoadReferences = [] - ExtraProjectInfo = None - Stamp = None } - projectOptions - let topLevelProjects = Directory.GetFiles(rootDir, "*.fsproj") - let watchableProjectPaths = - match topLevelProjects with - | [||] -> - match Directory.GetFiles(rootDir, "*.sln") with - // TODO: what to do with multiple .sln or a combo of .sln/.fsproj? - | [| singleSolution |] -> - let content = File.ReadAllText(singleSolution) - let solutionDir = Path.GetDirectoryName(singleSolution) - Solution.getProjectPaths content solutionDir - | _ -> [||] - | _ -> topLevelProjects - let watchableProjectOptions = - watchableProjectPaths - |> Array.map getProjectOptions - - // associate source files with project options - let watchFile file projectOptions = - sourceFileToProjectMap.AddOrUpdate(file, projectOptions, fun _ _ -> projectOptions) - - for projectOptions in watchableProjectOptions do - // watch .fsproj - watchFile projectOptions.ProjectFileName projectOptions |> ignore - // TODO: watch .deps.json - for sourceFile in projectOptions.SourceFiles do - let sourceFileFullPath = - if Path.IsPathRooted(sourceFile) then sourceFile - else - let projectDir = Path.GetDirectoryName(projectOptions.ProjectFileName) - Path.Combine(projectDir, sourceFile) - watchFile sourceFileFullPath projectOptions |> ignore - - watchableProjectOptions - - member __.Checker = checker - - /// Initialize the LSP at the specified location. According to the spec, `rootUri` is to be preferred over `rootPath`. - member __.Initialize (rootPath: string) (rootUri: DocumentUri) (computeDiagnostics: FSharpProjectOptions -> unit) = - let rootDir = - if not (isNull rootUri) then Uri(rootUri).LocalPath - else rootPath - let projectOptions = getProjectOptions rootDir - projectInvalidatedEvent.Publish.Add computeDiagnostics // compute diagnostics on project invalidation - for projectOption in projectOptions do - computeDiagnostics projectOption // compute initial set of diagnostics - - [] - member __.Shutdown = shutdownEvent.Publish - - [] - member __.Exit = exitEvent.Publish - - [] - member __.Cancel = cancelEvent.Publish - - [] - member __.ProjectInvalidated = projectInvalidatedEvent.Publish - - member __.DoShutdown() = shutdownEvent.Trigger() - - member __.DoExit() = exitEvent.Trigger() - - member __.DoCancel() = cancelEvent.Trigger() - - member __.InvalidateAllProjects() = - for projectOptions in sourceFileToProjectMap.Values do - projectInvalidatedEvent.Trigger(projectOptions) - - member val Options = Options.Default() with get, set - - member val JsonRpc: JsonRpc option = None with get, set diff --git a/src/fsharp/FSharp.Compiler.LanguageServer/TextDocument.fs b/src/fsharp/FSharp.Compiler.LanguageServer/TextDocument.fs deleted file mode 100644 index 489b55ebce..0000000000 --- a/src/fsharp/FSharp.Compiler.LanguageServer/TextDocument.fs +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. - -namespace FSharp.Compiler.LanguageServer - -open System.Threading - -module TextDocument = - - let mutable publishDiagnosticsCancellationTokenSource = new CancellationTokenSource() - - let Hover (state: State) (textDocument: TextDocumentIdentifier) (position: Position) = - async { - eprintfn "hover at %d, %d" position.line position.character - if not state.Options.usePreviewTextHover then return None - else - let startCol, endCol = - if position.character = 0 then 0, 1 - else position.character, position.character + 1 - return Some { contents = { kind = MarkupKind.PlainText - value = "serving textDocument/hover from LSP" } - range = Some { start = { line = position.line; character = startCol } - ``end`` = { line = position.line; character = endCol } } - } - } - - let PublishDiagnostics(state: State, projectOptions: FSharp.Compiler.SourceCodeServices.FSharpProjectOptions) = - // TODO: honor TextDocumentClientCapabilities.publishDiagnostics.relatedInformation - // cancel any existing request to publish diagnostics - publishDiagnosticsCancellationTokenSource.Cancel() - publishDiagnosticsCancellationTokenSource <- new CancellationTokenSource() - async { - if not state.Options.usePreviewDiagnostics then return () - else - eprintfn "starting diagnostics computation" - match state.JsonRpc with - | None -> eprintfn "state.JsonRpc was null; should not be?" - | Some jsonRpc -> - let! results = state.Checker.ParseAndCheckProject projectOptions - let diagnostics = results.Errors - let diagnosticsPerFile = - diagnostics - |> Array.fold (fun state t -> - let existing = Map.tryFind t.FileName state |> Option.defaultValue [] - Map.add t.FileName (t :: existing) state) Map.empty - for sourceFile in projectOptions.SourceFiles do - let diagnostics = - Map.tryFind sourceFile diagnosticsPerFile - |> Option.defaultValue [] - |> List.map (fun d -> - // F# errors count lines starting at 1, but LSP starts at 0 - let range: Range = - { start = { line = d.StartLineAlternate - 1; character = d.StartColumn } - ``end`` = { line = d.EndLineAlternate - 1; character = d.EndColumn } } - let severity = - match d.Severity with - | FSharp.Compiler.SourceCodeServices.FSharpErrorSeverity.Warning -> Diagnostic.Warning - | FSharp.Compiler.SourceCodeServices.FSharpErrorSeverity.Error -> Diagnostic.Error - let res: Diagnostic = - { range = range - severity = Some severity - code = "FS" + d.ErrorNumber.ToString("0000") - source = Some d.FileName - message = d.Message - relatedInformation = None } - res) - |> List.toArray - let args: PublishDiagnosticsParams = - { uri = System.Uri(sourceFile).AbsoluteUri - diagnostics = diagnostics } - - // fire each notification separately - jsonRpc.NotifyAsync(TextDocumentPublishDiagnostics, args) |> Async.AwaitTask |> Async.Start - } - |> (fun computation -> Async.StartAsTask(computation, cancellationToken=publishDiagnosticsCancellationTokenSource.Token)) - |> Async.AwaitTask diff --git a/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.fsproj b/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.fsproj index 710cf8a8e5..8a49e311df 100644 --- a/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.fsproj +++ b/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.fsproj @@ -9,18 +9,19 @@ - - - + + + + diff --git a/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.nuspec b/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.nuspec index fb54c7f393..42a7c538eb 100644 --- a/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.nuspec +++ b/src/fsharp/FSharp.Compiler.Private.Scripting/FSharp.Compiler.Private.Scripting.nuspec @@ -5,15 +5,20 @@ en-US - $CommonFileElements$ + + + + + + diff --git a/src/fsharp/FSharp.Compiler.Private.Scripting/FSharpScript.fs b/src/fsharp/FSharp.Compiler.Private.Scripting/FSharpScript.fs index d260bd2ccd..0ba6a72827 100644 --- a/src/fsharp/FSharp.Compiler.Private.Scripting/FSharpScript.fs +++ b/src/fsharp/FSharp.Compiler.Private.Scripting/FSharpScript.fs @@ -3,44 +3,39 @@ namespace FSharp.Compiler.Scripting open System -======= open System.Threading open FSharp.Compiler open FSharp.Compiler.Interactive.Shell -type FSharpScript(?captureInput: bool, ?captureOutput: bool, ?additionalArgs: string[]) as this = - let outputProduced = Event() - let errorProduced = Event() - - // handle stdin/stdout - let stdin = new CapturedTextReader() - let stdout = new EventedTextWriter() - let stderr = new EventedTextWriter() - do stdout.LineWritten.Add outputProduced.Trigger - do stderr.LineWritten.Add errorProduced.Trigger - let captureInput = defaultArg captureInput false - let captureOutput = defaultArg captureOutput false - let additionalArgs = defaultArg additionalArgs [||] - let savedInput = Console.In - let savedOutput = Console.Out - let savedError = Console.Error - do (fun () -> - if captureInput then - Console.SetIn(stdin) - if captureOutput then - Console.SetOut(stdout) - Console.SetError(stderr) - ())() +type FSharpScript(?additionalArgs: string[]) = + let additionalArgs = defaultArg additionalArgs [||] let config = FsiEvaluationSession.GetDefaultConfiguration() - let baseArgs = [| this.GetType().Assembly.Location; "--noninteractive"; "--targetprofile:netcore"; "--quiet" |] + let computedProfile = + // If we are being executed on the desktop framework (we can tell because the assembly containing int is mscorlib) then profile must be mscorlib otherwise use netcore + if typeof.Assembly.GetName().Name = "mscorlib" then "mscorlib" + else "netcore" + let baseArgs = [| typeof.Assembly.Location; "--noninteractive"; "--targetprofile:" + computedProfile; "--quiet" |] let argv = Array.append baseArgs additionalArgs - let fsi = FsiEvaluationSession.Create (config, argv, stdin, stdout, stderr, collectible=true) + let fsi = FsiEvaluationSession.Create (config, argv, stdin, stdout, stderr) + [] member __.AssemblyReferenceAdded = fsi.AssemblyReferenceAdded member __.ValueBound = fsi.ValueBound + [] + member __.IncludePathAdded = fsi.IncludePathAdded + + [] + member __.DependencyAdding = fsi.DependencyAdding + + [] + member __.DependencyAdded = fsi.DependencyAdded + + [] + member __.DependencyFailed = fsi.DependencyFailed + member __.ProvideInput = stdin.ProvideInput member __.OutputProduced = outputProduced.Publish @@ -72,11 +67,4 @@ type FSharpScript(?captureInput: bool, ?captureOutput: bool, ?additionalArgs: st interface IDisposable with member __.Dispose() = - if captureInput then - Console.SetIn(savedInput) - if captureOutput then - Console.SetOut(savedOutput) - Console.SetError(savedError) - stdin.Dispose() - stdout.Dispose() - stderr.Dispose() + (fsi :> IDisposable).Dispose() diff --git a/src/fsharp/FSharp.Compiler.Private.Scripting/TextHelpers.fs b/src/fsharp/FSharp.Compiler.Private.Scripting/TextHelpers.fs deleted file mode 100644 index 87e846b400..0000000000 --- a/src/fsharp/FSharp.Compiler.Private.Scripting/TextHelpers.fs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. - -namespace FSharp.Compiler.Scripting - -open System.Collections.Generic -open System.IO -open System.Text - -type internal CapturedTextReader() = - inherit TextReader() - let queue = Queue() - member __.ProvideInput(text: string) = - for c in text.ToCharArray() do - queue.Enqueue(c) - override __.Peek() = - if queue.Count > 0 then queue.Peek() |> int - else -1 - override __.Read() = - if queue.Count > 0 then queue.Dequeue() |> int - else -1 - -type internal EventedTextWriter() = - inherit TextWriter() - let sb = StringBuilder() - let lineWritten = Event() - member __.LineWritten = lineWritten.Publish - override __.Encoding = Encoding.UTF8 - override __.Write(c: char) = - if c = '\n' then - let line = - let v = sb.ToString() - if v.EndsWith("\r") then v.Substring(0, v.Length - 1) - else v - sb.Clear() |> ignore - lineWritten.Trigger(line) - else sb.Append(c) |> ignore diff --git a/src/fsharp/FSharp.Compiler.Private/illex.fs b/src/fsharp/FSharp.Compiler.Private/illex.fs new file mode 100644 index 0000000000..fd14cd1ab2 --- /dev/null +++ b/src/fsharp/FSharp.Compiler.Private/illex.fs @@ -0,0 +1,526 @@ +# 3 "../../absil/illex.fsl" + + +module internal FSharp.Compiler.AbstractIL.Internal.AsciiLexer + +open Internal.Utilities +open Internal.Utilities.Collections +open Internal.Utilities.Text +open Internal.Utilities.Text.Lexing +open FSharp.Compiler.AbstractIL +open FSharp.Compiler.AbstractIL.Internal +open FSharp.Compiler.AbstractIL.Internal.Library + +open FSharp.Compiler.AbstractIL.Internal.AsciiParser +open FSharp.Compiler.AbstractIL.Internal.AsciiConstants + + +let lexeme (lexbuf : LexBuffer) = new System.String(lexbuf.Lexeme) + +let unexpectedChar _lexbuf = + raise Parsing.RecoverableParseError ;; + +// -------------------------------------------------------------------- +// Keywords +// -------------------------------------------------------------------- + +let keywords = + lazy [ "void",VOID; + "bool",BOOL; + "bytearray",BYTEARRAY; + "char",CHAR; + "class",CLASS; + "default",DEFAULT; + "explicit",EXPLICIT; + "float32",FLOAT32; + "float64",FLOAT64; + "instance",INSTANCE; + "int",INT; + "int16",INT16; + "int32",INT32; + "int64",INT64; + "int8",INT8; + "method",METHOD; + "native",NATIVE; + "object", OBJECT; + "string",STRING; + "uint",UINT; + "uint16",UINT16; + "uint32",UINT32; + "uint64",UINT64; + "uint8",UINT8; + "unmanaged",UNMANAGED; + "unsigned",UNSIGNED; + "value",VALUE; + "valuetype",VALUETYPE; + "vararg",VARARG ] + +// -------------------------------------------------------------------- +// Instructions +// -------------------------------------------------------------------- + +let kwdInstrTable = + lazy + (let t = HashMultiMap(1000, HashIdentity.Structural) + List.iter t.Add (Lazy.force keywords); + let addTable f l = List.iter (fun (x,i) -> t.Add (String.concat "." x,f i)) (Lazy.force l) + addTable (fun i -> INSTR_NONE i) NoArgInstrs; + addTable (fun i -> INSTR_I i) Int32Instrs; + addTable (fun i -> INSTR_I32_I32 i) Int32Int32Instrs; + addTable (fun i -> INSTR_I8 i) Int64Instrs; + addTable (fun i -> INSTR_R i) DoubleInstrs; + addTable (fun i -> INSTR_TYPE i) TypeInstrs; + addTable (fun i -> INSTR_INT_TYPE i) IntTypeInstrs; + addTable (fun i -> INSTR_VALUETYPE i) ValueTypeInstrs; + addTable (fun i -> INSTR_STRING i) StringInstrs; + addTable (fun i -> INSTR_TOK i) TokenInstrs; + t) + +let kwdOrInstr s = (Lazy.force kwdInstrTable).[s] (* words *) + +let eval = function + | '0' -> 0 | '1' -> 1 | '2' -> 2 | '3' -> 3 | '4' -> 4 | '5' -> 5 + | '6' -> 6 | '7' -> 7 | '8' -> 8 | '9' -> 9 + | 'A' -> 10 | 'B' -> 11 | 'C' -> 12 | 'D' -> 13 | 'E' -> 14 | 'F' -> 15 + | 'a' -> 10 | 'b' -> 11 | 'c' -> 12 | 'd' -> 13 | 'e' -> 14 | 'f' -> 15 + | _ -> failwith "bad hexbyte" + +let kwdOrInstrOrId s = match (Lazy.force kwdInstrTable).TryFind s with Some v -> v | _ -> VAL_ID s + + +# 91 "illex.fs" +let trans : uint16[] array = + [| + (* State 0 *) + [| 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 32us; 32us; 33us; 33us; 32us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 32us; 4us; 33us; 33us; 31us; 33us; 5us; 33us; 6us; 7us; 3us; 14us; 1us; 23us; 2us; 10us; 15us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 13us; 33us; 11us; 33us; 12us; 31us; 31us; 17us; 17us; 17us; 17us; 17us; 18us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 8us; 33us; 9us; 33us; 31us; 31us; 19us; 20us; 21us; 22us; 17us; 17us; 31us; 31us; 30us; 31us; 31us; 27us; 26us; 28us; 31us; 31us; 31us; 25us; 24us; 31us; 29us; 31us; 31us; 31us; 31us; 31us; 33us; 33us; 33us; 33us; 33us; 128us; 31us; 129us; 31us; 130us; 31us; 131us; 31us; 132us; 31us; 133us; 31us; 134us; 31us; 135us; 31us; 136us; 31us; 137us; 31us; 138us; 31us; 139us; 31us; 140us; 31us; 141us; 31us; 142us; 31us; 143us; 31us; 144us; 31us; 145us; 31us; 146us; 31us; 147us; 31us; 148us; 31us; 149us; 31us; 150us; 31us; 151us; 31us; 152us; 31us; 153us; 31us; 154us; 31us; 155us; 31us; 156us; 31us; 157us; 31us; 158us; 31us; 159us; 31us; 160us; 31us; 161us; 31us; 162us; 31us; 163us; 31us; 164us; 31us; 165us; 31us; 166us; 31us; 167us; 31us; 168us; 31us; 169us; 31us; 170us; 31us; 171us; 31us; 172us; 31us; 173us; 31us; 174us; 31us; 175us; 31us; 176us; 31us; 177us; 31us; 178us; 31us; 179us; 31us; 180us; 31us; 181us; 31us; 182us; 31us; 183us; 31us; 184us; 31us; 185us; 31us; 186us; 31us; 187us; 31us; 188us; 31us; 189us; 31us; 190us; 31us; 191us; 31us; 192us; 31us; 193us; 31us; 194us; 31us; 195us; 31us; 196us; 31us; 197us; 31us; 198us; 31us; 199us; 31us; 200us; 31us; 201us; 31us; 202us; 31us; 203us; 31us; 204us; 31us; 205us; 31us; 206us; 31us; 207us; 31us; 208us; 31us; 209us; 31us; 210us; 31us; 211us; 31us; 212us; 31us; 213us; 31us; 214us; 31us; 215us; 31us; 216us; 31us; 217us; 31us; 218us; 31us; 219us; 31us; 220us; 31us; 221us; 31us; 222us; 31us; 223us; 31us; 224us; 31us; 225us; 31us; 226us; 31us; 227us; 31us; 228us; 31us; 229us; 31us; 230us; 31us; 231us; 31us; 232us; 31us; 233us; 31us; 234us; 31us; 235us; 31us; 236us; 31us; 237us; 31us; 238us; 31us; 239us; 31us; 240us; 31us; 241us; 31us; 242us; 31us; 243us; 31us; 244us; 31us; 245us; 31us; 246us; 31us; 247us; 31us; 248us; 31us; 249us; 31us; 250us; 31us; 251us; 31us; 252us; 31us; 253us; 31us; 254us; 31us; 255us; 31us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 34us; |]; + (* State 1 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 2 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 135us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 3 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 4 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 5 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 6 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 7 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 8 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 9 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 10 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 11 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 12 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 13 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 134us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 14 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 132us; 132us; 132us; 132us; 132us; 132us; 132us; 132us; 132us; 132us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 15 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 122us; 65535us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 123us; 123us; 123us; 123us; 124us; 123us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 123us; 123us; 123us; 123us; 124us; 123us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 129us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 16 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 122us; 65535us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 123us; 123us; 123us; 123us; 124us; 123us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 123us; 123us; 123us; 123us; 124us; 123us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 17 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 102us; 102us; 102us; 102us; 102us; 102us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 102us; 102us; 102us; 102us; 102us; 102us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 35us; 129us; 35us; 130us; 35us; 131us; 35us; 132us; 35us; 133us; 35us; 134us; 35us; 135us; 35us; 136us; 35us; 137us; 35us; 138us; 35us; 139us; 35us; 140us; 35us; 141us; 35us; 142us; 35us; 143us; 35us; 144us; 35us; 145us; 35us; 146us; 35us; 147us; 35us; 148us; 35us; 149us; 35us; 150us; 35us; 151us; 35us; 152us; 35us; 153us; 35us; 154us; 35us; 155us; 35us; 156us; 35us; 157us; 35us; 158us; 35us; 159us; 35us; 160us; 35us; 161us; 35us; 162us; 35us; 163us; 35us; 164us; 35us; 165us; 35us; 166us; 35us; 167us; 35us; 168us; 35us; 169us; 35us; 170us; 35us; 171us; 35us; 172us; 35us; 173us; 35us; 174us; 35us; 175us; 35us; 176us; 35us; 177us; 35us; 178us; 35us; 179us; 35us; 180us; 35us; 181us; 35us; 182us; 35us; 183us; 35us; 184us; 35us; 185us; 35us; 186us; 35us; 187us; 35us; 188us; 35us; 189us; 35us; 190us; 35us; 191us; 35us; 192us; 35us; 193us; 35us; 194us; 35us; 195us; 35us; 196us; 35us; 197us; 35us; 198us; 35us; 199us; 35us; 200us; 35us; 201us; 35us; 202us; 35us; 203us; 35us; 204us; 35us; 205us; 35us; 206us; 35us; 207us; 35us; 208us; 35us; 209us; 35us; 210us; 35us; 211us; 35us; 212us; 35us; 213us; 35us; 214us; 35us; 215us; 35us; 216us; 35us; 217us; 35us; 218us; 35us; 219us; 35us; 220us; 35us; 221us; 35us; 222us; 35us; 223us; 35us; 224us; 35us; 225us; 35us; 226us; 35us; 227us; 35us; 228us; 35us; 229us; 35us; 230us; 35us; 231us; 35us; 232us; 35us; 233us; 35us; 234us; 35us; 235us; 35us; 236us; 35us; 237us; 35us; 238us; 35us; 239us; 35us; 240us; 35us; 241us; 35us; 242us; 35us; 243us; 35us; 244us; 35us; 245us; 35us; 246us; 35us; 247us; 35us; 248us; 35us; 249us; 35us; 250us; 35us; 251us; 35us; 252us; 35us; 253us; 35us; 254us; 35us; 255us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 18 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 102us; 102us; 102us; 102us; 102us; 114us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 102us; 102us; 102us; 102us; 102us; 102us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 35us; 129us; 35us; 130us; 35us; 131us; 35us; 132us; 35us; 133us; 35us; 134us; 35us; 135us; 35us; 136us; 35us; 137us; 35us; 138us; 35us; 139us; 35us; 140us; 35us; 141us; 35us; 142us; 35us; 143us; 35us; 144us; 35us; 145us; 35us; 146us; 35us; 147us; 35us; 148us; 35us; 149us; 35us; 150us; 35us; 151us; 35us; 152us; 35us; 153us; 35us; 154us; 35us; 155us; 35us; 156us; 35us; 157us; 35us; 158us; 35us; 159us; 35us; 160us; 35us; 161us; 35us; 162us; 35us; 163us; 35us; 164us; 35us; 165us; 35us; 166us; 35us; 167us; 35us; 168us; 35us; 169us; 35us; 170us; 35us; 171us; 35us; 172us; 35us; 173us; 35us; 174us; 35us; 175us; 35us; 176us; 35us; 177us; 35us; 178us; 35us; 179us; 35us; 180us; 35us; 181us; 35us; 182us; 35us; 183us; 35us; 184us; 35us; 185us; 35us; 186us; 35us; 187us; 35us; 188us; 35us; 189us; 35us; 190us; 35us; 191us; 35us; 192us; 35us; 193us; 35us; 194us; 35us; 195us; 35us; 196us; 35us; 197us; 35us; 198us; 35us; 199us; 35us; 200us; 35us; 201us; 35us; 202us; 35us; 203us; 35us; 204us; 35us; 205us; 35us; 206us; 35us; 207us; 35us; 208us; 35us; 209us; 35us; 210us; 35us; 211us; 35us; 212us; 35us; 213us; 35us; 214us; 35us; 215us; 35us; 216us; 35us; 217us; 35us; 218us; 35us; 219us; 35us; 220us; 35us; 221us; 35us; 222us; 35us; 223us; 35us; 224us; 35us; 225us; 35us; 226us; 35us; 227us; 35us; 228us; 35us; 229us; 35us; 230us; 35us; 231us; 35us; 232us; 35us; 233us; 35us; 234us; 35us; 235us; 35us; 236us; 35us; 237us; 35us; 238us; 35us; 239us; 35us; 240us; 35us; 241us; 35us; 242us; 35us; 243us; 35us; 244us; 35us; 245us; 35us; 246us; 35us; 247us; 35us; 248us; 35us; 249us; 35us; 250us; 35us; 251us; 35us; 252us; 35us; 253us; 35us; 254us; 35us; 255us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 19 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 102us; 102us; 102us; 102us; 102us; 102us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 102us; 102us; 102us; 113us; 102us; 102us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 35us; 129us; 35us; 130us; 35us; 131us; 35us; 132us; 35us; 133us; 35us; 134us; 35us; 135us; 35us; 136us; 35us; 137us; 35us; 138us; 35us; 139us; 35us; 140us; 35us; 141us; 35us; 142us; 35us; 143us; 35us; 144us; 35us; 145us; 35us; 146us; 35us; 147us; 35us; 148us; 35us; 149us; 35us; 150us; 35us; 151us; 35us; 152us; 35us; 153us; 35us; 154us; 35us; 155us; 35us; 156us; 35us; 157us; 35us; 158us; 35us; 159us; 35us; 160us; 35us; 161us; 35us; 162us; 35us; 163us; 35us; 164us; 35us; 165us; 35us; 166us; 35us; 167us; 35us; 168us; 35us; 169us; 35us; 170us; 35us; 171us; 35us; 172us; 35us; 173us; 35us; 174us; 35us; 175us; 35us; 176us; 35us; 177us; 35us; 178us; 35us; 179us; 35us; 180us; 35us; 181us; 35us; 182us; 35us; 183us; 35us; 184us; 35us; 185us; 35us; 186us; 35us; 187us; 35us; 188us; 35us; 189us; 35us; 190us; 35us; 191us; 35us; 192us; 35us; 193us; 35us; 194us; 35us; 195us; 35us; 196us; 35us; 197us; 35us; 198us; 35us; 199us; 35us; 200us; 35us; 201us; 35us; 202us; 35us; 203us; 35us; 204us; 35us; 205us; 35us; 206us; 35us; 207us; 35us; 208us; 35us; 209us; 35us; 210us; 35us; 211us; 35us; 212us; 35us; 213us; 35us; 214us; 35us; 215us; 35us; 216us; 35us; 217us; 35us; 218us; 35us; 219us; 35us; 220us; 35us; 221us; 35us; 222us; 35us; 223us; 35us; 224us; 35us; 225us; 35us; 226us; 35us; 227us; 35us; 228us; 35us; 229us; 35us; 230us; 35us; 231us; 35us; 232us; 35us; 233us; 35us; 234us; 35us; 235us; 35us; 236us; 35us; 237us; 35us; 238us; 35us; 239us; 35us; 240us; 35us; 241us; 35us; 242us; 35us; 243us; 35us; 244us; 35us; 245us; 35us; 246us; 35us; 247us; 35us; 248us; 35us; 249us; 35us; 250us; 35us; 251us; 35us; 252us; 35us; 253us; 35us; 254us; 35us; 255us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 20 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 102us; 102us; 102us; 102us; 102us; 102us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 102us; 102us; 102us; 102us; 110us; 102us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 111us; 112us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 35us; 129us; 35us; 130us; 35us; 131us; 35us; 132us; 35us; 133us; 35us; 134us; 35us; 135us; 35us; 136us; 35us; 137us; 35us; 138us; 35us; 139us; 35us; 140us; 35us; 141us; 35us; 142us; 35us; 143us; 35us; 144us; 35us; 145us; 35us; 146us; 35us; 147us; 35us; 148us; 35us; 149us; 35us; 150us; 35us; 151us; 35us; 152us; 35us; 153us; 35us; 154us; 35us; 155us; 35us; 156us; 35us; 157us; 35us; 158us; 35us; 159us; 35us; 160us; 35us; 161us; 35us; 162us; 35us; 163us; 35us; 164us; 35us; 165us; 35us; 166us; 35us; 167us; 35us; 168us; 35us; 169us; 35us; 170us; 35us; 171us; 35us; 172us; 35us; 173us; 35us; 174us; 35us; 175us; 35us; 176us; 35us; 177us; 35us; 178us; 35us; 179us; 35us; 180us; 35us; 181us; 35us; 182us; 35us; 183us; 35us; 184us; 35us; 185us; 35us; 186us; 35us; 187us; 35us; 188us; 35us; 189us; 35us; 190us; 35us; 191us; 35us; 192us; 35us; 193us; 35us; 194us; 35us; 195us; 35us; 196us; 35us; 197us; 35us; 198us; 35us; 199us; 35us; 200us; 35us; 201us; 35us; 202us; 35us; 203us; 35us; 204us; 35us; 205us; 35us; 206us; 35us; 207us; 35us; 208us; 35us; 209us; 35us; 210us; 35us; 211us; 35us; 212us; 35us; 213us; 35us; 214us; 35us; 215us; 35us; 216us; 35us; 217us; 35us; 218us; 35us; 219us; 35us; 220us; 35us; 221us; 35us; 222us; 35us; 223us; 35us; 224us; 35us; 225us; 35us; 226us; 35us; 227us; 35us; 228us; 35us; 229us; 35us; 230us; 35us; 231us; 35us; 232us; 35us; 233us; 35us; 234us; 35us; 235us; 35us; 236us; 35us; 237us; 35us; 238us; 35us; 239us; 35us; 240us; 35us; 241us; 35us; 242us; 35us; 243us; 35us; 244us; 35us; 245us; 35us; 246us; 35us; 247us; 35us; 248us; 35us; 249us; 35us; 250us; 35us; 251us; 35us; 252us; 35us; 253us; 35us; 254us; 35us; 255us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 21 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 102us; 102us; 102us; 102us; 102us; 102us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 102us; 102us; 102us; 102us; 104us; 102us; 106us; 35us; 35us; 35us; 35us; 107us; 35us; 108us; 105us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 35us; 129us; 35us; 130us; 35us; 131us; 35us; 132us; 35us; 133us; 35us; 134us; 35us; 135us; 35us; 136us; 35us; 137us; 35us; 138us; 35us; 139us; 35us; 140us; 35us; 141us; 35us; 142us; 35us; 143us; 35us; 144us; 35us; 145us; 35us; 146us; 35us; 147us; 35us; 148us; 35us; 149us; 35us; 150us; 35us; 151us; 35us; 152us; 35us; 153us; 35us; 154us; 35us; 155us; 35us; 156us; 35us; 157us; 35us; 158us; 35us; 159us; 35us; 160us; 35us; 161us; 35us; 162us; 35us; 163us; 35us; 164us; 35us; 165us; 35us; 166us; 35us; 167us; 35us; 168us; 35us; 169us; 35us; 170us; 35us; 171us; 35us; 172us; 35us; 173us; 35us; 174us; 35us; 175us; 35us; 176us; 35us; 177us; 35us; 178us; 35us; 179us; 35us; 180us; 35us; 181us; 35us; 182us; 35us; 183us; 35us; 184us; 35us; 185us; 35us; 186us; 35us; 187us; 35us; 188us; 35us; 189us; 35us; 190us; 35us; 191us; 35us; 192us; 35us; 193us; 35us; 194us; 35us; 195us; 35us; 196us; 35us; 197us; 35us; 198us; 35us; 199us; 35us; 200us; 35us; 201us; 35us; 202us; 35us; 203us; 35us; 204us; 35us; 205us; 35us; 206us; 35us; 207us; 35us; 208us; 35us; 209us; 35us; 210us; 35us; 211us; 35us; 212us; 35us; 213us; 35us; 214us; 35us; 215us; 35us; 216us; 35us; 217us; 35us; 218us; 35us; 219us; 35us; 220us; 35us; 221us; 35us; 222us; 35us; 223us; 35us; 224us; 35us; 225us; 35us; 226us; 35us; 227us; 35us; 228us; 35us; 229us; 35us; 230us; 35us; 231us; 35us; 232us; 35us; 233us; 35us; 234us; 35us; 235us; 35us; 236us; 35us; 237us; 35us; 238us; 35us; 239us; 35us; 240us; 35us; 241us; 35us; 242us; 35us; 243us; 35us; 244us; 35us; 245us; 35us; 246us; 35us; 247us; 35us; 248us; 35us; 249us; 35us; 250us; 35us; 251us; 35us; 252us; 35us; 253us; 35us; 254us; 35us; 255us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 22 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 102us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 102us; 102us; 102us; 102us; 102us; 102us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 102us; 102us; 102us; 102us; 102us; 102us; 35us; 35us; 103us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 35us; 129us; 35us; 130us; 35us; 131us; 35us; 132us; 35us; 133us; 35us; 134us; 35us; 135us; 35us; 136us; 35us; 137us; 35us; 138us; 35us; 139us; 35us; 140us; 35us; 141us; 35us; 142us; 35us; 143us; 35us; 144us; 35us; 145us; 35us; 146us; 35us; 147us; 35us; 148us; 35us; 149us; 35us; 150us; 35us; 151us; 35us; 152us; 35us; 153us; 35us; 154us; 35us; 155us; 35us; 156us; 35us; 157us; 35us; 158us; 35us; 159us; 35us; 160us; 35us; 161us; 35us; 162us; 35us; 163us; 35us; 164us; 35us; 165us; 35us; 166us; 35us; 167us; 35us; 168us; 35us; 169us; 35us; 170us; 35us; 171us; 35us; 172us; 35us; 173us; 35us; 174us; 35us; 175us; 35us; 176us; 35us; 177us; 35us; 178us; 35us; 179us; 35us; 180us; 35us; 181us; 35us; 182us; 35us; 183us; 35us; 184us; 35us; 185us; 35us; 186us; 35us; 187us; 35us; 188us; 35us; 189us; 35us; 190us; 35us; 191us; 35us; 192us; 35us; 193us; 35us; 194us; 35us; 195us; 35us; 196us; 35us; 197us; 35us; 198us; 35us; 199us; 35us; 200us; 35us; 201us; 35us; 202us; 35us; 203us; 35us; 204us; 35us; 205us; 35us; 206us; 35us; 207us; 35us; 208us; 35us; 209us; 35us; 210us; 35us; 211us; 35us; 212us; 35us; 213us; 35us; 214us; 35us; 215us; 35us; 216us; 35us; 217us; 35us; 218us; 35us; 219us; 35us; 220us; 35us; 221us; 35us; 222us; 35us; 223us; 35us; 224us; 35us; 225us; 35us; 226us; 35us; 227us; 35us; 228us; 35us; 229us; 35us; 230us; 35us; 231us; 35us; 232us; 35us; 233us; 35us; 234us; 35us; 235us; 35us; 236us; 35us; 237us; 35us; 238us; 35us; 239us; 35us; 240us; 35us; 241us; 35us; 242us; 35us; 243us; 35us; 244us; 35us; 245us; 35us; 246us; 35us; 247us; 35us; 248us; 35us; 249us; 35us; 250us; 35us; 251us; 35us; 252us; 35us; 253us; 35us; 254us; 35us; 255us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 23 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 94us; 94us; 94us; 94us; 94us; 94us; 94us; 94us; 94us; 94us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 24 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 85us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 86us; 84us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 35us; 129us; 35us; 130us; 35us; 131us; 35us; 132us; 35us; 133us; 35us; 134us; 35us; 135us; 35us; 136us; 35us; 137us; 35us; 138us; 35us; 139us; 35us; 140us; 35us; 141us; 35us; 142us; 35us; 143us; 35us; 144us; 35us; 145us; 35us; 146us; 35us; 147us; 35us; 148us; 35us; 149us; 35us; 150us; 35us; 151us; 35us; 152us; 35us; 153us; 35us; 154us; 35us; 155us; 35us; 156us; 35us; 157us; 35us; 158us; 35us; 159us; 35us; 160us; 35us; 161us; 35us; 162us; 35us; 163us; 35us; 164us; 35us; 165us; 35us; 166us; 35us; 167us; 35us; 168us; 35us; 169us; 35us; 170us; 35us; 171us; 35us; 172us; 35us; 173us; 35us; 174us; 35us; 175us; 35us; 176us; 35us; 177us; 35us; 178us; 35us; 179us; 35us; 180us; 35us; 181us; 35us; 182us; 35us; 183us; 35us; 184us; 35us; 185us; 35us; 186us; 35us; 187us; 35us; 188us; 35us; 189us; 35us; 190us; 35us; 191us; 35us; 192us; 35us; 193us; 35us; 194us; 35us; 195us; 35us; 196us; 35us; 197us; 35us; 198us; 35us; 199us; 35us; 200us; 35us; 201us; 35us; 202us; 35us; 203us; 35us; 204us; 35us; 205us; 35us; 206us; 35us; 207us; 35us; 208us; 35us; 209us; 35us; 210us; 35us; 211us; 35us; 212us; 35us; 213us; 35us; 214us; 35us; 215us; 35us; 216us; 35us; 217us; 35us; 218us; 35us; 219us; 35us; 220us; 35us; 221us; 35us; 222us; 35us; 223us; 35us; 224us; 35us; 225us; 35us; 226us; 35us; 227us; 35us; 228us; 35us; 229us; 35us; 230us; 35us; 231us; 35us; 232us; 35us; 233us; 35us; 234us; 35us; 235us; 35us; 236us; 35us; 237us; 35us; 238us; 35us; 239us; 35us; 240us; 35us; 241us; 35us; 242us; 35us; 243us; 35us; 244us; 35us; 245us; 35us; 246us; 35us; 247us; 35us; 248us; 35us; 249us; 35us; 250us; 35us; 251us; 35us; 252us; 35us; 253us; 35us; 254us; 35us; 255us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 25 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 83us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 35us; 129us; 35us; 130us; 35us; 131us; 35us; 132us; 35us; 133us; 35us; 134us; 35us; 135us; 35us; 136us; 35us; 137us; 35us; 138us; 35us; 139us; 35us; 140us; 35us; 141us; 35us; 142us; 35us; 143us; 35us; 144us; 35us; 145us; 35us; 146us; 35us; 147us; 35us; 148us; 35us; 149us; 35us; 150us; 35us; 151us; 35us; 152us; 35us; 153us; 35us; 154us; 35us; 155us; 35us; 156us; 35us; 157us; 35us; 158us; 35us; 159us; 35us; 160us; 35us; 161us; 35us; 162us; 35us; 163us; 35us; 164us; 35us; 165us; 35us; 166us; 35us; 167us; 35us; 168us; 35us; 169us; 35us; 170us; 35us; 171us; 35us; 172us; 35us; 173us; 35us; 174us; 35us; 175us; 35us; 176us; 35us; 177us; 35us; 178us; 35us; 179us; 35us; 180us; 35us; 181us; 35us; 182us; 35us; 183us; 35us; 184us; 35us; 185us; 35us; 186us; 35us; 187us; 35us; 188us; 35us; 189us; 35us; 190us; 35us; 191us; 35us; 192us; 35us; 193us; 35us; 194us; 35us; 195us; 35us; 196us; 35us; 197us; 35us; 198us; 35us; 199us; 35us; 200us; 35us; 201us; 35us; 202us; 35us; 203us; 35us; 204us; 35us; 205us; 35us; 206us; 35us; 207us; 35us; 208us; 35us; 209us; 35us; 210us; 35us; 211us; 35us; 212us; 35us; 213us; 35us; 214us; 35us; 215us; 35us; 216us; 35us; 217us; 35us; 218us; 35us; 219us; 35us; 220us; 35us; 221us; 35us; 222us; 35us; 223us; 35us; 224us; 35us; 225us; 35us; 226us; 35us; 227us; 35us; 228us; 35us; 229us; 35us; 230us; 35us; 231us; 35us; 232us; 35us; 233us; 35us; 234us; 35us; 235us; 35us; 236us; 35us; 237us; 35us; 238us; 35us; 239us; 35us; 240us; 35us; 241us; 35us; 242us; 35us; 243us; 35us; 244us; 35us; 245us; 35us; 246us; 35us; 247us; 35us; 248us; 35us; 249us; 35us; 250us; 35us; 251us; 35us; 252us; 35us; 253us; 35us; 254us; 35us; 255us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 26 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 82us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 35us; 129us; 35us; 130us; 35us; 131us; 35us; 132us; 35us; 133us; 35us; 134us; 35us; 135us; 35us; 136us; 35us; 137us; 35us; 138us; 35us; 139us; 35us; 140us; 35us; 141us; 35us; 142us; 35us; 143us; 35us; 144us; 35us; 145us; 35us; 146us; 35us; 147us; 35us; 148us; 35us; 149us; 35us; 150us; 35us; 151us; 35us; 152us; 35us; 153us; 35us; 154us; 35us; 155us; 35us; 156us; 35us; 157us; 35us; 158us; 35us; 159us; 35us; 160us; 35us; 161us; 35us; 162us; 35us; 163us; 35us; 164us; 35us; 165us; 35us; 166us; 35us; 167us; 35us; 168us; 35us; 169us; 35us; 170us; 35us; 171us; 35us; 172us; 35us; 173us; 35us; 174us; 35us; 175us; 35us; 176us; 35us; 177us; 35us; 178us; 35us; 179us; 35us; 180us; 35us; 181us; 35us; 182us; 35us; 183us; 35us; 184us; 35us; 185us; 35us; 186us; 35us; 187us; 35us; 188us; 35us; 189us; 35us; 190us; 35us; 191us; 35us; 192us; 35us; 193us; 35us; 194us; 35us; 195us; 35us; 196us; 35us; 197us; 35us; 198us; 35us; 199us; 35us; 200us; 35us; 201us; 35us; 202us; 35us; 203us; 35us; 204us; 35us; 205us; 35us; 206us; 35us; 207us; 35us; 208us; 35us; 209us; 35us; 210us; 35us; 211us; 35us; 212us; 35us; 213us; 35us; 214us; 35us; 215us; 35us; 216us; 35us; 217us; 35us; 218us; 35us; 219us; 35us; 220us; 35us; 221us; 35us; 222us; 35us; 223us; 35us; 224us; 35us; 225us; 35us; 226us; 35us; 227us; 35us; 228us; 35us; 229us; 35us; 230us; 35us; 231us; 35us; 232us; 35us; 233us; 35us; 234us; 35us; 235us; 35us; 236us; 35us; 237us; 35us; 238us; 35us; 239us; 35us; 240us; 35us; 241us; 35us; 242us; 35us; 243us; 35us; 244us; 35us; 245us; 35us; 246us; 35us; 247us; 35us; 248us; 35us; 249us; 35us; 250us; 35us; 251us; 35us; 252us; 35us; 253us; 35us; 254us; 35us; 255us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 27 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 68us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 35us; 129us; 35us; 130us; 35us; 131us; 35us; 132us; 35us; 133us; 35us; 134us; 35us; 135us; 35us; 136us; 35us; 137us; 35us; 138us; 35us; 139us; 35us; 140us; 35us; 141us; 35us; 142us; 35us; 143us; 35us; 144us; 35us; 145us; 35us; 146us; 35us; 147us; 35us; 148us; 35us; 149us; 35us; 150us; 35us; 151us; 35us; 152us; 35us; 153us; 35us; 154us; 35us; 155us; 35us; 156us; 35us; 157us; 35us; 158us; 35us; 159us; 35us; 160us; 35us; 161us; 35us; 162us; 35us; 163us; 35us; 164us; 35us; 165us; 35us; 166us; 35us; 167us; 35us; 168us; 35us; 169us; 35us; 170us; 35us; 171us; 35us; 172us; 35us; 173us; 35us; 174us; 35us; 175us; 35us; 176us; 35us; 177us; 35us; 178us; 35us; 179us; 35us; 180us; 35us; 181us; 35us; 182us; 35us; 183us; 35us; 184us; 35us; 185us; 35us; 186us; 35us; 187us; 35us; 188us; 35us; 189us; 35us; 190us; 35us; 191us; 35us; 192us; 35us; 193us; 35us; 194us; 35us; 195us; 35us; 196us; 35us; 197us; 35us; 198us; 35us; 199us; 35us; 200us; 35us; 201us; 35us; 202us; 35us; 203us; 35us; 204us; 35us; 205us; 35us; 206us; 35us; 207us; 35us; 208us; 35us; 209us; 35us; 210us; 35us; 211us; 35us; 212us; 35us; 213us; 35us; 214us; 35us; 215us; 35us; 216us; 35us; 217us; 35us; 218us; 35us; 219us; 35us; 220us; 35us; 221us; 35us; 222us; 35us; 223us; 35us; 224us; 35us; 225us; 35us; 226us; 35us; 227us; 35us; 228us; 35us; 229us; 35us; 230us; 35us; 231us; 35us; 232us; 35us; 233us; 35us; 234us; 35us; 235us; 35us; 236us; 35us; 237us; 35us; 238us; 35us; 239us; 35us; 240us; 35us; 241us; 35us; 242us; 35us; 243us; 35us; 244us; 35us; 245us; 35us; 246us; 35us; 247us; 35us; 248us; 35us; 249us; 35us; 250us; 35us; 251us; 35us; 252us; 35us; 253us; 35us; 254us; 35us; 255us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 28 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 64us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 35us; 129us; 35us; 130us; 35us; 131us; 35us; 132us; 35us; 133us; 35us; 134us; 35us; 135us; 35us; 136us; 35us; 137us; 35us; 138us; 35us; 139us; 35us; 140us; 35us; 141us; 35us; 142us; 35us; 143us; 35us; 144us; 35us; 145us; 35us; 146us; 35us; 147us; 35us; 148us; 35us; 149us; 35us; 150us; 35us; 151us; 35us; 152us; 35us; 153us; 35us; 154us; 35us; 155us; 35us; 156us; 35us; 157us; 35us; 158us; 35us; 159us; 35us; 160us; 35us; 161us; 35us; 162us; 35us; 163us; 35us; 164us; 35us; 165us; 35us; 166us; 35us; 167us; 35us; 168us; 35us; 169us; 35us; 170us; 35us; 171us; 35us; 172us; 35us; 173us; 35us; 174us; 35us; 175us; 35us; 176us; 35us; 177us; 35us; 178us; 35us; 179us; 35us; 180us; 35us; 181us; 35us; 182us; 35us; 183us; 35us; 184us; 35us; 185us; 35us; 186us; 35us; 187us; 35us; 188us; 35us; 189us; 35us; 190us; 35us; 191us; 35us; 192us; 35us; 193us; 35us; 194us; 35us; 195us; 35us; 196us; 35us; 197us; 35us; 198us; 35us; 199us; 35us; 200us; 35us; 201us; 35us; 202us; 35us; 203us; 35us; 204us; 35us; 205us; 35us; 206us; 35us; 207us; 35us; 208us; 35us; 209us; 35us; 210us; 35us; 211us; 35us; 212us; 35us; 213us; 35us; 214us; 35us; 215us; 35us; 216us; 35us; 217us; 35us; 218us; 35us; 219us; 35us; 220us; 35us; 221us; 35us; 222us; 35us; 223us; 35us; 224us; 35us; 225us; 35us; 226us; 35us; 227us; 35us; 228us; 35us; 229us; 35us; 230us; 35us; 231us; 35us; 232us; 35us; 233us; 35us; 234us; 35us; 235us; 35us; 236us; 35us; 237us; 35us; 238us; 35us; 239us; 35us; 240us; 35us; 241us; 35us; 242us; 35us; 243us; 35us; 244us; 35us; 245us; 35us; 246us; 35us; 247us; 35us; 248us; 35us; 249us; 35us; 250us; 35us; 251us; 35us; 252us; 35us; 253us; 35us; 254us; 35us; 255us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 29 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 61us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 35us; 129us; 35us; 130us; 35us; 131us; 35us; 132us; 35us; 133us; 35us; 134us; 35us; 135us; 35us; 136us; 35us; 137us; 35us; 138us; 35us; 139us; 35us; 140us; 35us; 141us; 35us; 142us; 35us; 143us; 35us; 144us; 35us; 145us; 35us; 146us; 35us; 147us; 35us; 148us; 35us; 149us; 35us; 150us; 35us; 151us; 35us; 152us; 35us; 153us; 35us; 154us; 35us; 155us; 35us; 156us; 35us; 157us; 35us; 158us; 35us; 159us; 35us; 160us; 35us; 161us; 35us; 162us; 35us; 163us; 35us; 164us; 35us; 165us; 35us; 166us; 35us; 167us; 35us; 168us; 35us; 169us; 35us; 170us; 35us; 171us; 35us; 172us; 35us; 173us; 35us; 174us; 35us; 175us; 35us; 176us; 35us; 177us; 35us; 178us; 35us; 179us; 35us; 180us; 35us; 181us; 35us; 182us; 35us; 183us; 35us; 184us; 35us; 185us; 35us; 186us; 35us; 187us; 35us; 188us; 35us; 189us; 35us; 190us; 35us; 191us; 35us; 192us; 35us; 193us; 35us; 194us; 35us; 195us; 35us; 196us; 35us; 197us; 35us; 198us; 35us; 199us; 35us; 200us; 35us; 201us; 35us; 202us; 35us; 203us; 35us; 204us; 35us; 205us; 35us; 206us; 35us; 207us; 35us; 208us; 35us; 209us; 35us; 210us; 35us; 211us; 35us; 212us; 35us; 213us; 35us; 214us; 35us; 215us; 35us; 216us; 35us; 217us; 35us; 218us; 35us; 219us; 35us; 220us; 35us; 221us; 35us; 222us; 35us; 223us; 35us; 224us; 35us; 225us; 35us; 226us; 35us; 227us; 35us; 228us; 35us; 229us; 35us; 230us; 35us; 231us; 35us; 232us; 35us; 233us; 35us; 234us; 35us; 235us; 35us; 236us; 35us; 237us; 35us; 238us; 35us; 239us; 35us; 240us; 35us; 241us; 35us; 242us; 35us; 243us; 35us; 244us; 35us; 245us; 35us; 246us; 35us; 247us; 35us; 248us; 35us; 249us; 35us; 250us; 35us; 251us; 35us; 252us; 35us; 253us; 35us; 254us; 35us; 255us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 30 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 45us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 35us; 129us; 35us; 130us; 35us; 131us; 35us; 132us; 35us; 133us; 35us; 134us; 35us; 135us; 35us; 136us; 35us; 137us; 35us; 138us; 35us; 139us; 35us; 140us; 35us; 141us; 35us; 142us; 35us; 143us; 35us; 144us; 35us; 145us; 35us; 146us; 35us; 147us; 35us; 148us; 35us; 149us; 35us; 150us; 35us; 151us; 35us; 152us; 35us; 153us; 35us; 154us; 35us; 155us; 35us; 156us; 35us; 157us; 35us; 158us; 35us; 159us; 35us; 160us; 35us; 161us; 35us; 162us; 35us; 163us; 35us; 164us; 35us; 165us; 35us; 166us; 35us; 167us; 35us; 168us; 35us; 169us; 35us; 170us; 35us; 171us; 35us; 172us; 35us; 173us; 35us; 174us; 35us; 175us; 35us; 176us; 35us; 177us; 35us; 178us; 35us; 179us; 35us; 180us; 35us; 181us; 35us; 182us; 35us; 183us; 35us; 184us; 35us; 185us; 35us; 186us; 35us; 187us; 35us; 188us; 35us; 189us; 35us; 190us; 35us; 191us; 35us; 192us; 35us; 193us; 35us; 194us; 35us; 195us; 35us; 196us; 35us; 197us; 35us; 198us; 35us; 199us; 35us; 200us; 35us; 201us; 35us; 202us; 35us; 203us; 35us; 204us; 35us; 205us; 35us; 206us; 35us; 207us; 35us; 208us; 35us; 209us; 35us; 210us; 35us; 211us; 35us; 212us; 35us; 213us; 35us; 214us; 35us; 215us; 35us; 216us; 35us; 217us; 35us; 218us; 35us; 219us; 35us; 220us; 35us; 221us; 35us; 222us; 35us; 223us; 35us; 224us; 35us; 225us; 35us; 226us; 35us; 227us; 35us; 228us; 35us; 229us; 35us; 230us; 35us; 231us; 35us; 232us; 35us; 233us; 35us; 234us; 35us; 235us; 35us; 236us; 35us; 237us; 35us; 238us; 35us; 239us; 35us; 240us; 35us; 241us; 35us; 242us; 35us; 243us; 35us; 244us; 35us; 245us; 35us; 246us; 35us; 247us; 35us; 248us; 35us; 249us; 35us; 250us; 35us; 251us; 35us; 252us; 35us; 253us; 35us; 254us; 35us; 255us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 31 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 35us; 129us; 35us; 130us; 35us; 131us; 35us; 132us; 35us; 133us; 35us; 134us; 35us; 135us; 35us; 136us; 35us; 137us; 35us; 138us; 35us; 139us; 35us; 140us; 35us; 141us; 35us; 142us; 35us; 143us; 35us; 144us; 35us; 145us; 35us; 146us; 35us; 147us; 35us; 148us; 35us; 149us; 35us; 150us; 35us; 151us; 35us; 152us; 35us; 153us; 35us; 154us; 35us; 155us; 35us; 156us; 35us; 157us; 35us; 158us; 35us; 159us; 35us; 160us; 35us; 161us; 35us; 162us; 35us; 163us; 35us; 164us; 35us; 165us; 35us; 166us; 35us; 167us; 35us; 168us; 35us; 169us; 35us; 170us; 35us; 171us; 35us; 172us; 35us; 173us; 35us; 174us; 35us; 175us; 35us; 176us; 35us; 177us; 35us; 178us; 35us; 179us; 35us; 180us; 35us; 181us; 35us; 182us; 35us; 183us; 35us; 184us; 35us; 185us; 35us; 186us; 35us; 187us; 35us; 188us; 35us; 189us; 35us; 190us; 35us; 191us; 35us; 192us; 35us; 193us; 35us; 194us; 35us; 195us; 35us; 196us; 35us; 197us; 35us; 198us; 35us; 199us; 35us; 200us; 35us; 201us; 35us; 202us; 35us; 203us; 35us; 204us; 35us; 205us; 35us; 206us; 35us; 207us; 35us; 208us; 35us; 209us; 35us; 210us; 35us; 211us; 35us; 212us; 35us; 213us; 35us; 214us; 35us; 215us; 35us; 216us; 35us; 217us; 35us; 218us; 35us; 219us; 35us; 220us; 35us; 221us; 35us; 222us; 35us; 223us; 35us; 224us; 35us; 225us; 35us; 226us; 35us; 227us; 35us; 228us; 35us; 229us; 35us; 230us; 35us; 231us; 35us; 232us; 35us; 233us; 35us; 234us; 35us; 235us; 35us; 236us; 35us; 237us; 35us; 238us; 35us; 239us; 35us; 240us; 35us; 241us; 35us; 242us; 35us; 243us; 35us; 244us; 35us; 245us; 35us; 246us; 35us; 247us; 35us; 248us; 35us; 249us; 35us; 250us; 35us; 251us; 35us; 252us; 35us; 253us; 35us; 254us; 35us; 255us; 35us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 32 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 33 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 34 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 35 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 36 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 37 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 38us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 65535us; 65535us; 65535us; 65535us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 38us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 38us; 129us; 38us; 130us; 38us; 131us; 38us; 132us; 38us; 133us; 38us; 134us; 38us; 135us; 38us; 136us; 38us; 137us; 38us; 138us; 38us; 139us; 38us; 140us; 38us; 141us; 38us; 142us; 38us; 143us; 38us; 144us; 38us; 145us; 38us; 146us; 38us; 147us; 38us; 148us; 38us; 149us; 38us; 150us; 38us; 151us; 38us; 152us; 38us; 153us; 38us; 154us; 38us; 155us; 38us; 156us; 38us; 157us; 38us; 158us; 38us; 159us; 38us; 160us; 38us; 161us; 38us; 162us; 38us; 163us; 38us; 164us; 38us; 165us; 38us; 166us; 38us; 167us; 38us; 168us; 38us; 169us; 38us; 170us; 38us; 171us; 38us; 172us; 38us; 173us; 38us; 174us; 38us; 175us; 38us; 176us; 38us; 177us; 38us; 178us; 38us; 179us; 38us; 180us; 38us; 181us; 38us; 182us; 38us; 183us; 38us; 184us; 38us; 185us; 38us; 186us; 38us; 187us; 38us; 188us; 38us; 189us; 38us; 190us; 38us; 191us; 38us; 192us; 38us; 193us; 38us; 194us; 38us; 195us; 38us; 196us; 38us; 197us; 38us; 198us; 38us; 199us; 38us; 200us; 38us; 201us; 38us; 202us; 38us; 203us; 38us; 204us; 38us; 205us; 38us; 206us; 38us; 207us; 38us; 208us; 38us; 209us; 38us; 210us; 38us; 211us; 38us; 212us; 38us; 213us; 38us; 214us; 38us; 215us; 38us; 216us; 38us; 217us; 38us; 218us; 38us; 219us; 38us; 220us; 38us; 221us; 38us; 222us; 38us; 223us; 38us; 224us; 38us; 225us; 38us; 226us; 38us; 227us; 38us; 228us; 38us; 229us; 38us; 230us; 38us; 231us; 38us; 232us; 38us; 233us; 38us; 234us; 38us; 235us; 38us; 236us; 38us; 237us; 38us; 238us; 38us; 239us; 38us; 240us; 38us; 241us; 38us; 242us; 38us; 243us; 38us; 244us; 38us; 245us; 38us; 246us; 38us; 247us; 38us; 248us; 38us; 249us; 38us; 250us; 38us; 251us; 38us; 252us; 38us; 253us; 38us; 254us; 38us; 255us; 38us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 38 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 39us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 39us; 65535us; 65535us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 65535us; 65535us; 65535us; 65535us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 39us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 39us; 129us; 39us; 130us; 39us; 131us; 39us; 132us; 39us; 133us; 39us; 134us; 39us; 135us; 39us; 136us; 39us; 137us; 39us; 138us; 39us; 139us; 39us; 140us; 39us; 141us; 39us; 142us; 39us; 143us; 39us; 144us; 39us; 145us; 39us; 146us; 39us; 147us; 39us; 148us; 39us; 149us; 39us; 150us; 39us; 151us; 39us; 152us; 39us; 153us; 39us; 154us; 39us; 155us; 39us; 156us; 39us; 157us; 39us; 158us; 39us; 159us; 39us; 160us; 39us; 161us; 39us; 162us; 39us; 163us; 39us; 164us; 39us; 165us; 39us; 166us; 39us; 167us; 39us; 168us; 39us; 169us; 39us; 170us; 39us; 171us; 39us; 172us; 39us; 173us; 39us; 174us; 39us; 175us; 39us; 176us; 39us; 177us; 39us; 178us; 39us; 179us; 39us; 180us; 39us; 181us; 39us; 182us; 39us; 183us; 39us; 184us; 39us; 185us; 39us; 186us; 39us; 187us; 39us; 188us; 39us; 189us; 39us; 190us; 39us; 191us; 39us; 192us; 39us; 193us; 39us; 194us; 39us; 195us; 39us; 196us; 39us; 197us; 39us; 198us; 39us; 199us; 39us; 200us; 39us; 201us; 39us; 202us; 39us; 203us; 39us; 204us; 39us; 205us; 39us; 206us; 39us; 207us; 39us; 208us; 39us; 209us; 39us; 210us; 39us; 211us; 39us; 212us; 39us; 213us; 39us; 214us; 39us; 215us; 39us; 216us; 39us; 217us; 39us; 218us; 39us; 219us; 39us; 220us; 39us; 221us; 39us; 222us; 39us; 223us; 39us; 224us; 39us; 225us; 39us; 226us; 39us; 227us; 39us; 228us; 39us; 229us; 39us; 230us; 39us; 231us; 39us; 232us; 39us; 233us; 39us; 234us; 39us; 235us; 39us; 236us; 39us; 237us; 39us; 238us; 39us; 239us; 39us; 240us; 39us; 241us; 39us; 242us; 39us; 243us; 39us; 244us; 39us; 245us; 39us; 246us; 39us; 247us; 39us; 248us; 39us; 249us; 39us; 250us; 39us; 251us; 39us; 252us; 39us; 253us; 39us; 254us; 39us; 255us; 39us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 39 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 40us; 65535us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 65535us; 65535us; 65535us; 65535us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 41us; 129us; 41us; 130us; 41us; 131us; 41us; 132us; 41us; 133us; 41us; 134us; 41us; 135us; 41us; 136us; 41us; 137us; 41us; 138us; 41us; 139us; 41us; 140us; 41us; 141us; 41us; 142us; 41us; 143us; 41us; 144us; 41us; 145us; 41us; 146us; 41us; 147us; 41us; 148us; 41us; 149us; 41us; 150us; 41us; 151us; 41us; 152us; 41us; 153us; 41us; 154us; 41us; 155us; 41us; 156us; 41us; 157us; 41us; 158us; 41us; 159us; 41us; 160us; 41us; 161us; 41us; 162us; 41us; 163us; 41us; 164us; 41us; 165us; 41us; 166us; 41us; 167us; 41us; 168us; 41us; 169us; 41us; 170us; 41us; 171us; 41us; 172us; 41us; 173us; 41us; 174us; 41us; 175us; 41us; 176us; 41us; 177us; 41us; 178us; 41us; 179us; 41us; 180us; 41us; 181us; 41us; 182us; 41us; 183us; 41us; 184us; 41us; 185us; 41us; 186us; 41us; 187us; 41us; 188us; 41us; 189us; 41us; 190us; 41us; 191us; 41us; 192us; 41us; 193us; 41us; 194us; 41us; 195us; 41us; 196us; 41us; 197us; 41us; 198us; 41us; 199us; 41us; 200us; 41us; 201us; 41us; 202us; 41us; 203us; 41us; 204us; 41us; 205us; 41us; 206us; 41us; 207us; 41us; 208us; 41us; 209us; 41us; 210us; 41us; 211us; 41us; 212us; 41us; 213us; 41us; 214us; 41us; 215us; 41us; 216us; 41us; 217us; 41us; 218us; 41us; 219us; 41us; 220us; 41us; 221us; 41us; 222us; 41us; 223us; 41us; 224us; 41us; 225us; 41us; 226us; 41us; 227us; 41us; 228us; 41us; 229us; 41us; 230us; 41us; 231us; 41us; 232us; 41us; 233us; 41us; 234us; 41us; 235us; 41us; 236us; 41us; 237us; 41us; 238us; 41us; 239us; 41us; 240us; 41us; 241us; 41us; 242us; 41us; 243us; 41us; 244us; 41us; 245us; 41us; 246us; 41us; 247us; 41us; 248us; 41us; 249us; 41us; 250us; 41us; 251us; 41us; 252us; 41us; 253us; 41us; 254us; 41us; 255us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 40 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 42us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 65535us; 65535us; 65535us; 65535us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 42us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 42us; 129us; 42us; 130us; 42us; 131us; 42us; 132us; 42us; 133us; 42us; 134us; 42us; 135us; 42us; 136us; 42us; 137us; 42us; 138us; 42us; 139us; 42us; 140us; 42us; 141us; 42us; 142us; 42us; 143us; 42us; 144us; 42us; 145us; 42us; 146us; 42us; 147us; 42us; 148us; 42us; 149us; 42us; 150us; 42us; 151us; 42us; 152us; 42us; 153us; 42us; 154us; 42us; 155us; 42us; 156us; 42us; 157us; 42us; 158us; 42us; 159us; 42us; 160us; 42us; 161us; 42us; 162us; 42us; 163us; 42us; 164us; 42us; 165us; 42us; 166us; 42us; 167us; 42us; 168us; 42us; 169us; 42us; 170us; 42us; 171us; 42us; 172us; 42us; 173us; 42us; 174us; 42us; 175us; 42us; 176us; 42us; 177us; 42us; 178us; 42us; 179us; 42us; 180us; 42us; 181us; 42us; 182us; 42us; 183us; 42us; 184us; 42us; 185us; 42us; 186us; 42us; 187us; 42us; 188us; 42us; 189us; 42us; 190us; 42us; 191us; 42us; 192us; 42us; 193us; 42us; 194us; 42us; 195us; 42us; 196us; 42us; 197us; 42us; 198us; 42us; 199us; 42us; 200us; 42us; 201us; 42us; 202us; 42us; 203us; 42us; 204us; 42us; 205us; 42us; 206us; 42us; 207us; 42us; 208us; 42us; 209us; 42us; 210us; 42us; 211us; 42us; 212us; 42us; 213us; 42us; 214us; 42us; 215us; 42us; 216us; 42us; 217us; 42us; 218us; 42us; 219us; 42us; 220us; 42us; 221us; 42us; 222us; 42us; 223us; 42us; 224us; 42us; 225us; 42us; 226us; 42us; 227us; 42us; 228us; 42us; 229us; 42us; 230us; 42us; 231us; 42us; 232us; 42us; 233us; 42us; 234us; 42us; 235us; 42us; 236us; 42us; 237us; 42us; 238us; 42us; 239us; 42us; 240us; 42us; 241us; 42us; 242us; 42us; 243us; 42us; 244us; 42us; 245us; 42us; 246us; 42us; 247us; 42us; 248us; 42us; 249us; 42us; 250us; 42us; 251us; 42us; 252us; 42us; 253us; 42us; 254us; 42us; 255us; 42us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 41 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 40us; 65535us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 65535us; 65535us; 65535us; 65535us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 41us; 129us; 41us; 130us; 41us; 131us; 41us; 132us; 41us; 133us; 41us; 134us; 41us; 135us; 41us; 136us; 41us; 137us; 41us; 138us; 41us; 139us; 41us; 140us; 41us; 141us; 41us; 142us; 41us; 143us; 41us; 144us; 41us; 145us; 41us; 146us; 41us; 147us; 41us; 148us; 41us; 149us; 41us; 150us; 41us; 151us; 41us; 152us; 41us; 153us; 41us; 154us; 41us; 155us; 41us; 156us; 41us; 157us; 41us; 158us; 41us; 159us; 41us; 160us; 41us; 161us; 41us; 162us; 41us; 163us; 41us; 164us; 41us; 165us; 41us; 166us; 41us; 167us; 41us; 168us; 41us; 169us; 41us; 170us; 41us; 171us; 41us; 172us; 41us; 173us; 41us; 174us; 41us; 175us; 41us; 176us; 41us; 177us; 41us; 178us; 41us; 179us; 41us; 180us; 41us; 181us; 41us; 182us; 41us; 183us; 41us; 184us; 41us; 185us; 41us; 186us; 41us; 187us; 41us; 188us; 41us; 189us; 41us; 190us; 41us; 191us; 41us; 192us; 41us; 193us; 41us; 194us; 41us; 195us; 41us; 196us; 41us; 197us; 41us; 198us; 41us; 199us; 41us; 200us; 41us; 201us; 41us; 202us; 41us; 203us; 41us; 204us; 41us; 205us; 41us; 206us; 41us; 207us; 41us; 208us; 41us; 209us; 41us; 210us; 41us; 211us; 41us; 212us; 41us; 213us; 41us; 214us; 41us; 215us; 41us; 216us; 41us; 217us; 41us; 218us; 41us; 219us; 41us; 220us; 41us; 221us; 41us; 222us; 41us; 223us; 41us; 224us; 41us; 225us; 41us; 226us; 41us; 227us; 41us; 228us; 41us; 229us; 41us; 230us; 41us; 231us; 41us; 232us; 41us; 233us; 41us; 234us; 41us; 235us; 41us; 236us; 41us; 237us; 41us; 238us; 41us; 239us; 41us; 240us; 41us; 241us; 41us; 242us; 41us; 243us; 41us; 244us; 41us; 245us; 41us; 246us; 41us; 247us; 41us; 248us; 41us; 249us; 41us; 250us; 41us; 251us; 41us; 252us; 41us; 253us; 41us; 254us; 41us; 255us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 42 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 43us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 43us; 65535us; 65535us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 65535us; 65535us; 65535us; 65535us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 43us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 43us; 129us; 43us; 130us; 43us; 131us; 43us; 132us; 43us; 133us; 43us; 134us; 43us; 135us; 43us; 136us; 43us; 137us; 43us; 138us; 43us; 139us; 43us; 140us; 43us; 141us; 43us; 142us; 43us; 143us; 43us; 144us; 43us; 145us; 43us; 146us; 43us; 147us; 43us; 148us; 43us; 149us; 43us; 150us; 43us; 151us; 43us; 152us; 43us; 153us; 43us; 154us; 43us; 155us; 43us; 156us; 43us; 157us; 43us; 158us; 43us; 159us; 43us; 160us; 43us; 161us; 43us; 162us; 43us; 163us; 43us; 164us; 43us; 165us; 43us; 166us; 43us; 167us; 43us; 168us; 43us; 169us; 43us; 170us; 43us; 171us; 43us; 172us; 43us; 173us; 43us; 174us; 43us; 175us; 43us; 176us; 43us; 177us; 43us; 178us; 43us; 179us; 43us; 180us; 43us; 181us; 43us; 182us; 43us; 183us; 43us; 184us; 43us; 185us; 43us; 186us; 43us; 187us; 43us; 188us; 43us; 189us; 43us; 190us; 43us; 191us; 43us; 192us; 43us; 193us; 43us; 194us; 43us; 195us; 43us; 196us; 43us; 197us; 43us; 198us; 43us; 199us; 43us; 200us; 43us; 201us; 43us; 202us; 43us; 203us; 43us; 204us; 43us; 205us; 43us; 206us; 43us; 207us; 43us; 208us; 43us; 209us; 43us; 210us; 43us; 211us; 43us; 212us; 43us; 213us; 43us; 214us; 43us; 215us; 43us; 216us; 43us; 217us; 43us; 218us; 43us; 219us; 43us; 220us; 43us; 221us; 43us; 222us; 43us; 223us; 43us; 224us; 43us; 225us; 43us; 226us; 43us; 227us; 43us; 228us; 43us; 229us; 43us; 230us; 43us; 231us; 43us; 232us; 43us; 233us; 43us; 234us; 43us; 235us; 43us; 236us; 43us; 237us; 43us; 238us; 43us; 239us; 43us; 240us; 43us; 241us; 43us; 242us; 43us; 243us; 43us; 244us; 43us; 245us; 43us; 246us; 43us; 247us; 43us; 248us; 43us; 249us; 43us; 250us; 43us; 251us; 43us; 252us; 43us; 253us; 43us; 254us; 43us; 255us; 43us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 43 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 40us; 65535us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 65535us; 65535us; 65535us; 65535us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 44us; 129us; 44us; 130us; 44us; 131us; 44us; 132us; 44us; 133us; 44us; 134us; 44us; 135us; 44us; 136us; 44us; 137us; 44us; 138us; 44us; 139us; 44us; 140us; 44us; 141us; 44us; 142us; 44us; 143us; 44us; 144us; 44us; 145us; 44us; 146us; 44us; 147us; 44us; 148us; 44us; 149us; 44us; 150us; 44us; 151us; 44us; 152us; 44us; 153us; 44us; 154us; 44us; 155us; 44us; 156us; 44us; 157us; 44us; 158us; 44us; 159us; 44us; 160us; 44us; 161us; 44us; 162us; 44us; 163us; 44us; 164us; 44us; 165us; 44us; 166us; 44us; 167us; 44us; 168us; 44us; 169us; 44us; 170us; 44us; 171us; 44us; 172us; 44us; 173us; 44us; 174us; 44us; 175us; 44us; 176us; 44us; 177us; 44us; 178us; 44us; 179us; 44us; 180us; 44us; 181us; 44us; 182us; 44us; 183us; 44us; 184us; 44us; 185us; 44us; 186us; 44us; 187us; 44us; 188us; 44us; 189us; 44us; 190us; 44us; 191us; 44us; 192us; 44us; 193us; 44us; 194us; 44us; 195us; 44us; 196us; 44us; 197us; 44us; 198us; 44us; 199us; 44us; 200us; 44us; 201us; 44us; 202us; 44us; 203us; 44us; 204us; 44us; 205us; 44us; 206us; 44us; 207us; 44us; 208us; 44us; 209us; 44us; 210us; 44us; 211us; 44us; 212us; 44us; 213us; 44us; 214us; 44us; 215us; 44us; 216us; 44us; 217us; 44us; 218us; 44us; 219us; 44us; 220us; 44us; 221us; 44us; 222us; 44us; 223us; 44us; 224us; 44us; 225us; 44us; 226us; 44us; 227us; 44us; 228us; 44us; 229us; 44us; 230us; 44us; 231us; 44us; 232us; 44us; 233us; 44us; 234us; 44us; 235us; 44us; 236us; 44us; 237us; 44us; 238us; 44us; 239us; 44us; 240us; 44us; 241us; 44us; 242us; 44us; 243us; 44us; 244us; 44us; 245us; 44us; 246us; 44us; 247us; 44us; 248us; 44us; 249us; 44us; 250us; 44us; 251us; 44us; 252us; 44us; 253us; 44us; 254us; 44us; 255us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 44 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 40us; 65535us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 65535us; 65535us; 65535us; 65535us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 44us; 129us; 44us; 130us; 44us; 131us; 44us; 132us; 44us; 133us; 44us; 134us; 44us; 135us; 44us; 136us; 44us; 137us; 44us; 138us; 44us; 139us; 44us; 140us; 44us; 141us; 44us; 142us; 44us; 143us; 44us; 144us; 44us; 145us; 44us; 146us; 44us; 147us; 44us; 148us; 44us; 149us; 44us; 150us; 44us; 151us; 44us; 152us; 44us; 153us; 44us; 154us; 44us; 155us; 44us; 156us; 44us; 157us; 44us; 158us; 44us; 159us; 44us; 160us; 44us; 161us; 44us; 162us; 44us; 163us; 44us; 164us; 44us; 165us; 44us; 166us; 44us; 167us; 44us; 168us; 44us; 169us; 44us; 170us; 44us; 171us; 44us; 172us; 44us; 173us; 44us; 174us; 44us; 175us; 44us; 176us; 44us; 177us; 44us; 178us; 44us; 179us; 44us; 180us; 44us; 181us; 44us; 182us; 44us; 183us; 44us; 184us; 44us; 185us; 44us; 186us; 44us; 187us; 44us; 188us; 44us; 189us; 44us; 190us; 44us; 191us; 44us; 192us; 44us; 193us; 44us; 194us; 44us; 195us; 44us; 196us; 44us; 197us; 44us; 198us; 44us; 199us; 44us; 200us; 44us; 201us; 44us; 202us; 44us; 203us; 44us; 204us; 44us; 205us; 44us; 206us; 44us; 207us; 44us; 208us; 44us; 209us; 44us; 210us; 44us; 211us; 44us; 212us; 44us; 213us; 44us; 214us; 44us; 215us; 44us; 216us; 44us; 217us; 44us; 218us; 44us; 219us; 44us; 220us; 44us; 221us; 44us; 222us; 44us; 223us; 44us; 224us; 44us; 225us; 44us; 226us; 44us; 227us; 44us; 228us; 44us; 229us; 44us; 230us; 44us; 231us; 44us; 232us; 44us; 233us; 44us; 234us; 44us; 235us; 44us; 236us; 44us; 237us; 44us; 238us; 44us; 239us; 44us; 240us; 44us; 241us; 44us; 242us; 44us; 243us; 44us; 244us; 44us; 245us; 44us; 246us; 44us; 247us; 44us; 248us; 44us; 249us; 44us; 250us; 44us; 251us; 44us; 252us; 44us; 253us; 44us; 254us; 44us; 255us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 45 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 46us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 46 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 47us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 47 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 48us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 48 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 49us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 49 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 50 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 51us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 51 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 38us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 52us; 65535us; 52us; 52us; 52us; 52us; 52us; 52us; 52us; 52us; 52us; 52us; 65535us; 65535us; 65535us; 65535us; 65535us; 38us; 38us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 65535us; 65535us; 65535us; 65535us; 38us; 38us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 38us; 129us; 38us; 130us; 38us; 131us; 38us; 132us; 38us; 133us; 38us; 134us; 38us; 135us; 38us; 136us; 38us; 137us; 38us; 138us; 38us; 139us; 38us; 140us; 38us; 141us; 38us; 142us; 38us; 143us; 38us; 144us; 38us; 145us; 38us; 146us; 38us; 147us; 38us; 148us; 38us; 149us; 38us; 150us; 38us; 151us; 38us; 152us; 38us; 153us; 38us; 154us; 38us; 155us; 38us; 156us; 38us; 157us; 38us; 158us; 38us; 159us; 38us; 160us; 38us; 161us; 38us; 162us; 38us; 163us; 38us; 164us; 38us; 165us; 38us; 166us; 38us; 167us; 38us; 168us; 38us; 169us; 38us; 170us; 38us; 171us; 38us; 172us; 38us; 173us; 38us; 174us; 38us; 175us; 38us; 176us; 38us; 177us; 38us; 178us; 38us; 179us; 38us; 180us; 38us; 181us; 38us; 182us; 38us; 183us; 38us; 184us; 38us; 185us; 38us; 186us; 38us; 187us; 38us; 188us; 38us; 189us; 38us; 190us; 38us; 191us; 38us; 192us; 38us; 193us; 38us; 194us; 38us; 195us; 38us; 196us; 38us; 197us; 38us; 198us; 38us; 199us; 38us; 200us; 38us; 201us; 38us; 202us; 38us; 203us; 38us; 204us; 38us; 205us; 38us; 206us; 38us; 207us; 38us; 208us; 38us; 209us; 38us; 210us; 38us; 211us; 38us; 212us; 38us; 213us; 38us; 214us; 38us; 215us; 38us; 216us; 38us; 217us; 38us; 218us; 38us; 219us; 38us; 220us; 38us; 221us; 38us; 222us; 38us; 223us; 38us; 224us; 38us; 225us; 38us; 226us; 38us; 227us; 38us; 228us; 38us; 229us; 38us; 230us; 38us; 231us; 38us; 232us; 38us; 233us; 38us; 234us; 38us; 235us; 38us; 236us; 38us; 237us; 38us; 238us; 38us; 239us; 38us; 240us; 38us; 241us; 38us; 242us; 38us; 243us; 38us; 244us; 38us; 245us; 38us; 246us; 38us; 247us; 38us; 248us; 38us; 249us; 38us; 250us; 38us; 251us; 38us; 252us; 38us; 253us; 38us; 254us; 38us; 255us; 38us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 52 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 54us; 65535us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 53 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 39us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 39us; 54us; 65535us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 39us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 65535us; 65535us; 65535us; 65535us; 39us; 39us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 39us; 129us; 39us; 130us; 39us; 131us; 39us; 132us; 39us; 133us; 39us; 134us; 39us; 135us; 39us; 136us; 39us; 137us; 39us; 138us; 39us; 139us; 39us; 140us; 39us; 141us; 39us; 142us; 39us; 143us; 39us; 144us; 39us; 145us; 39us; 146us; 39us; 147us; 39us; 148us; 39us; 149us; 39us; 150us; 39us; 151us; 39us; 152us; 39us; 153us; 39us; 154us; 39us; 155us; 39us; 156us; 39us; 157us; 39us; 158us; 39us; 159us; 39us; 160us; 39us; 161us; 39us; 162us; 39us; 163us; 39us; 164us; 39us; 165us; 39us; 166us; 39us; 167us; 39us; 168us; 39us; 169us; 39us; 170us; 39us; 171us; 39us; 172us; 39us; 173us; 39us; 174us; 39us; 175us; 39us; 176us; 39us; 177us; 39us; 178us; 39us; 179us; 39us; 180us; 39us; 181us; 39us; 182us; 39us; 183us; 39us; 184us; 39us; 185us; 39us; 186us; 39us; 187us; 39us; 188us; 39us; 189us; 39us; 190us; 39us; 191us; 39us; 192us; 39us; 193us; 39us; 194us; 39us; 195us; 39us; 196us; 39us; 197us; 39us; 198us; 39us; 199us; 39us; 200us; 39us; 201us; 39us; 202us; 39us; 203us; 39us; 204us; 39us; 205us; 39us; 206us; 39us; 207us; 39us; 208us; 39us; 209us; 39us; 210us; 39us; 211us; 39us; 212us; 39us; 213us; 39us; 214us; 39us; 215us; 39us; 216us; 39us; 217us; 39us; 218us; 39us; 219us; 39us; 220us; 39us; 221us; 39us; 222us; 39us; 223us; 39us; 224us; 39us; 225us; 39us; 226us; 39us; 227us; 39us; 228us; 39us; 229us; 39us; 230us; 39us; 231us; 39us; 232us; 39us; 233us; 39us; 234us; 39us; 235us; 39us; 236us; 39us; 237us; 39us; 238us; 39us; 239us; 39us; 240us; 39us; 241us; 39us; 242us; 39us; 243us; 39us; 244us; 39us; 245us; 39us; 246us; 39us; 247us; 39us; 248us; 39us; 249us; 39us; 250us; 39us; 251us; 39us; 252us; 39us; 253us; 39us; 254us; 39us; 255us; 39us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 54 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 54us; 65535us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 55 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 56us; 65535us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 65535us; 65535us; 65535us; 65535us; 41us; 41us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 41us; 129us; 41us; 130us; 41us; 131us; 41us; 132us; 41us; 133us; 41us; 134us; 41us; 135us; 41us; 136us; 41us; 137us; 41us; 138us; 41us; 139us; 41us; 140us; 41us; 141us; 41us; 142us; 41us; 143us; 41us; 144us; 41us; 145us; 41us; 146us; 41us; 147us; 41us; 148us; 41us; 149us; 41us; 150us; 41us; 151us; 41us; 152us; 41us; 153us; 41us; 154us; 41us; 155us; 41us; 156us; 41us; 157us; 41us; 158us; 41us; 159us; 41us; 160us; 41us; 161us; 41us; 162us; 41us; 163us; 41us; 164us; 41us; 165us; 41us; 166us; 41us; 167us; 41us; 168us; 41us; 169us; 41us; 170us; 41us; 171us; 41us; 172us; 41us; 173us; 41us; 174us; 41us; 175us; 41us; 176us; 41us; 177us; 41us; 178us; 41us; 179us; 41us; 180us; 41us; 181us; 41us; 182us; 41us; 183us; 41us; 184us; 41us; 185us; 41us; 186us; 41us; 187us; 41us; 188us; 41us; 189us; 41us; 190us; 41us; 191us; 41us; 192us; 41us; 193us; 41us; 194us; 41us; 195us; 41us; 196us; 41us; 197us; 41us; 198us; 41us; 199us; 41us; 200us; 41us; 201us; 41us; 202us; 41us; 203us; 41us; 204us; 41us; 205us; 41us; 206us; 41us; 207us; 41us; 208us; 41us; 209us; 41us; 210us; 41us; 211us; 41us; 212us; 41us; 213us; 41us; 214us; 41us; 215us; 41us; 216us; 41us; 217us; 41us; 218us; 41us; 219us; 41us; 220us; 41us; 221us; 41us; 222us; 41us; 223us; 41us; 224us; 41us; 225us; 41us; 226us; 41us; 227us; 41us; 228us; 41us; 229us; 41us; 230us; 41us; 231us; 41us; 232us; 41us; 233us; 41us; 234us; 41us; 235us; 41us; 236us; 41us; 237us; 41us; 238us; 41us; 239us; 41us; 240us; 41us; 241us; 41us; 242us; 41us; 243us; 41us; 244us; 41us; 245us; 41us; 246us; 41us; 247us; 41us; 248us; 41us; 249us; 41us; 250us; 41us; 251us; 41us; 252us; 41us; 253us; 41us; 254us; 41us; 255us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 56 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 42us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 54us; 65535us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 54us; 65535us; 65535us; 65535us; 65535us; 65535us; 42us; 42us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 65535us; 65535us; 65535us; 65535us; 42us; 42us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 42us; 129us; 42us; 130us; 42us; 131us; 42us; 132us; 42us; 133us; 42us; 134us; 42us; 135us; 42us; 136us; 42us; 137us; 42us; 138us; 42us; 139us; 42us; 140us; 42us; 141us; 42us; 142us; 42us; 143us; 42us; 144us; 42us; 145us; 42us; 146us; 42us; 147us; 42us; 148us; 42us; 149us; 42us; 150us; 42us; 151us; 42us; 152us; 42us; 153us; 42us; 154us; 42us; 155us; 42us; 156us; 42us; 157us; 42us; 158us; 42us; 159us; 42us; 160us; 42us; 161us; 42us; 162us; 42us; 163us; 42us; 164us; 42us; 165us; 42us; 166us; 42us; 167us; 42us; 168us; 42us; 169us; 42us; 170us; 42us; 171us; 42us; 172us; 42us; 173us; 42us; 174us; 42us; 175us; 42us; 176us; 42us; 177us; 42us; 178us; 42us; 179us; 42us; 180us; 42us; 181us; 42us; 182us; 42us; 183us; 42us; 184us; 42us; 185us; 42us; 186us; 42us; 187us; 42us; 188us; 42us; 189us; 42us; 190us; 42us; 191us; 42us; 192us; 42us; 193us; 42us; 194us; 42us; 195us; 42us; 196us; 42us; 197us; 42us; 198us; 42us; 199us; 42us; 200us; 42us; 201us; 42us; 202us; 42us; 203us; 42us; 204us; 42us; 205us; 42us; 206us; 42us; 207us; 42us; 208us; 42us; 209us; 42us; 210us; 42us; 211us; 42us; 212us; 42us; 213us; 42us; 214us; 42us; 215us; 42us; 216us; 42us; 217us; 42us; 218us; 42us; 219us; 42us; 220us; 42us; 221us; 42us; 222us; 42us; 223us; 42us; 224us; 42us; 225us; 42us; 226us; 42us; 227us; 42us; 228us; 42us; 229us; 42us; 230us; 42us; 231us; 42us; 232us; 42us; 233us; 42us; 234us; 42us; 235us; 42us; 236us; 42us; 237us; 42us; 238us; 42us; 239us; 42us; 240us; 42us; 241us; 42us; 242us; 42us; 243us; 42us; 244us; 42us; 245us; 42us; 246us; 42us; 247us; 42us; 248us; 42us; 249us; 42us; 250us; 42us; 251us; 42us; 252us; 42us; 253us; 42us; 254us; 42us; 255us; 42us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 57 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 56us; 65535us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 65535us; 65535us; 65535us; 65535us; 41us; 41us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 57us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 41us; 129us; 41us; 130us; 41us; 131us; 41us; 132us; 41us; 133us; 41us; 134us; 41us; 135us; 41us; 136us; 41us; 137us; 41us; 138us; 41us; 139us; 41us; 140us; 41us; 141us; 41us; 142us; 41us; 143us; 41us; 144us; 41us; 145us; 41us; 146us; 41us; 147us; 41us; 148us; 41us; 149us; 41us; 150us; 41us; 151us; 41us; 152us; 41us; 153us; 41us; 154us; 41us; 155us; 41us; 156us; 41us; 157us; 41us; 158us; 41us; 159us; 41us; 160us; 41us; 161us; 41us; 162us; 41us; 163us; 41us; 164us; 41us; 165us; 41us; 166us; 41us; 167us; 41us; 168us; 41us; 169us; 41us; 170us; 41us; 171us; 41us; 172us; 41us; 173us; 41us; 174us; 41us; 175us; 41us; 176us; 41us; 177us; 41us; 178us; 41us; 179us; 41us; 180us; 41us; 181us; 41us; 182us; 41us; 183us; 41us; 184us; 41us; 185us; 41us; 186us; 41us; 187us; 41us; 188us; 41us; 189us; 41us; 190us; 41us; 191us; 41us; 192us; 41us; 193us; 41us; 194us; 41us; 195us; 41us; 196us; 41us; 197us; 41us; 198us; 41us; 199us; 41us; 200us; 41us; 201us; 41us; 202us; 41us; 203us; 41us; 204us; 41us; 205us; 41us; 206us; 41us; 207us; 41us; 208us; 41us; 209us; 41us; 210us; 41us; 211us; 41us; 212us; 41us; 213us; 41us; 214us; 41us; 215us; 41us; 216us; 41us; 217us; 41us; 218us; 41us; 219us; 41us; 220us; 41us; 221us; 41us; 222us; 41us; 223us; 41us; 224us; 41us; 225us; 41us; 226us; 41us; 227us; 41us; 228us; 41us; 229us; 41us; 230us; 41us; 231us; 41us; 232us; 41us; 233us; 41us; 234us; 41us; 235us; 41us; 236us; 41us; 237us; 41us; 238us; 41us; 239us; 41us; 240us; 41us; 241us; 41us; 242us; 41us; 243us; 41us; 244us; 41us; 245us; 41us; 246us; 41us; 247us; 41us; 248us; 41us; 249us; 41us; 250us; 41us; 251us; 41us; 252us; 41us; 253us; 41us; 254us; 41us; 255us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 58 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 43us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 43us; 54us; 65535us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 43us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 65535us; 65535us; 65535us; 65535us; 43us; 43us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 59us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 43us; 129us; 43us; 130us; 43us; 131us; 43us; 132us; 43us; 133us; 43us; 134us; 43us; 135us; 43us; 136us; 43us; 137us; 43us; 138us; 43us; 139us; 43us; 140us; 43us; 141us; 43us; 142us; 43us; 143us; 43us; 144us; 43us; 145us; 43us; 146us; 43us; 147us; 43us; 148us; 43us; 149us; 43us; 150us; 43us; 151us; 43us; 152us; 43us; 153us; 43us; 154us; 43us; 155us; 43us; 156us; 43us; 157us; 43us; 158us; 43us; 159us; 43us; 160us; 43us; 161us; 43us; 162us; 43us; 163us; 43us; 164us; 43us; 165us; 43us; 166us; 43us; 167us; 43us; 168us; 43us; 169us; 43us; 170us; 43us; 171us; 43us; 172us; 43us; 173us; 43us; 174us; 43us; 175us; 43us; 176us; 43us; 177us; 43us; 178us; 43us; 179us; 43us; 180us; 43us; 181us; 43us; 182us; 43us; 183us; 43us; 184us; 43us; 185us; 43us; 186us; 43us; 187us; 43us; 188us; 43us; 189us; 43us; 190us; 43us; 191us; 43us; 192us; 43us; 193us; 43us; 194us; 43us; 195us; 43us; 196us; 43us; 197us; 43us; 198us; 43us; 199us; 43us; 200us; 43us; 201us; 43us; 202us; 43us; 203us; 43us; 204us; 43us; 205us; 43us; 206us; 43us; 207us; 43us; 208us; 43us; 209us; 43us; 210us; 43us; 211us; 43us; 212us; 43us; 213us; 43us; 214us; 43us; 215us; 43us; 216us; 43us; 217us; 43us; 218us; 43us; 219us; 43us; 220us; 43us; 221us; 43us; 222us; 43us; 223us; 43us; 224us; 43us; 225us; 43us; 226us; 43us; 227us; 43us; 228us; 43us; 229us; 43us; 230us; 43us; 231us; 43us; 232us; 43us; 233us; 43us; 234us; 43us; 235us; 43us; 236us; 43us; 237us; 43us; 238us; 43us; 239us; 43us; 240us; 43us; 241us; 43us; 242us; 43us; 243us; 43us; 244us; 43us; 245us; 43us; 246us; 43us; 247us; 43us; 248us; 43us; 249us; 43us; 250us; 43us; 251us; 43us; 252us; 43us; 253us; 43us; 254us; 43us; 255us; 43us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 59 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 56us; 65535us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 65535us; 65535us; 65535us; 65535us; 44us; 44us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 44us; 129us; 44us; 130us; 44us; 131us; 44us; 132us; 44us; 133us; 44us; 134us; 44us; 135us; 44us; 136us; 44us; 137us; 44us; 138us; 44us; 139us; 44us; 140us; 44us; 141us; 44us; 142us; 44us; 143us; 44us; 144us; 44us; 145us; 44us; 146us; 44us; 147us; 44us; 148us; 44us; 149us; 44us; 150us; 44us; 151us; 44us; 152us; 44us; 153us; 44us; 154us; 44us; 155us; 44us; 156us; 44us; 157us; 44us; 158us; 44us; 159us; 44us; 160us; 44us; 161us; 44us; 162us; 44us; 163us; 44us; 164us; 44us; 165us; 44us; 166us; 44us; 167us; 44us; 168us; 44us; 169us; 44us; 170us; 44us; 171us; 44us; 172us; 44us; 173us; 44us; 174us; 44us; 175us; 44us; 176us; 44us; 177us; 44us; 178us; 44us; 179us; 44us; 180us; 44us; 181us; 44us; 182us; 44us; 183us; 44us; 184us; 44us; 185us; 44us; 186us; 44us; 187us; 44us; 188us; 44us; 189us; 44us; 190us; 44us; 191us; 44us; 192us; 44us; 193us; 44us; 194us; 44us; 195us; 44us; 196us; 44us; 197us; 44us; 198us; 44us; 199us; 44us; 200us; 44us; 201us; 44us; 202us; 44us; 203us; 44us; 204us; 44us; 205us; 44us; 206us; 44us; 207us; 44us; 208us; 44us; 209us; 44us; 210us; 44us; 211us; 44us; 212us; 44us; 213us; 44us; 214us; 44us; 215us; 44us; 216us; 44us; 217us; 44us; 218us; 44us; 219us; 44us; 220us; 44us; 221us; 44us; 222us; 44us; 223us; 44us; 224us; 44us; 225us; 44us; 226us; 44us; 227us; 44us; 228us; 44us; 229us; 44us; 230us; 44us; 231us; 44us; 232us; 44us; 233us; 44us; 234us; 44us; 235us; 44us; 236us; 44us; 237us; 44us; 238us; 44us; 239us; 44us; 240us; 44us; 241us; 44us; 242us; 44us; 243us; 44us; 244us; 44us; 245us; 44us; 246us; 44us; 247us; 44us; 248us; 44us; 249us; 44us; 250us; 44us; 251us; 44us; 252us; 44us; 253us; 44us; 254us; 44us; 255us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 60 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 56us; 65535us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 65535us; 65535us; 65535us; 65535us; 44us; 44us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 60us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 44us; 129us; 44us; 130us; 44us; 131us; 44us; 132us; 44us; 133us; 44us; 134us; 44us; 135us; 44us; 136us; 44us; 137us; 44us; 138us; 44us; 139us; 44us; 140us; 44us; 141us; 44us; 142us; 44us; 143us; 44us; 144us; 44us; 145us; 44us; 146us; 44us; 147us; 44us; 148us; 44us; 149us; 44us; 150us; 44us; 151us; 44us; 152us; 44us; 153us; 44us; 154us; 44us; 155us; 44us; 156us; 44us; 157us; 44us; 158us; 44us; 159us; 44us; 160us; 44us; 161us; 44us; 162us; 44us; 163us; 44us; 164us; 44us; 165us; 44us; 166us; 44us; 167us; 44us; 168us; 44us; 169us; 44us; 170us; 44us; 171us; 44us; 172us; 44us; 173us; 44us; 174us; 44us; 175us; 44us; 176us; 44us; 177us; 44us; 178us; 44us; 179us; 44us; 180us; 44us; 181us; 44us; 182us; 44us; 183us; 44us; 184us; 44us; 185us; 44us; 186us; 44us; 187us; 44us; 188us; 44us; 189us; 44us; 190us; 44us; 191us; 44us; 192us; 44us; 193us; 44us; 194us; 44us; 195us; 44us; 196us; 44us; 197us; 44us; 198us; 44us; 199us; 44us; 200us; 44us; 201us; 44us; 202us; 44us; 203us; 44us; 204us; 44us; 205us; 44us; 206us; 44us; 207us; 44us; 208us; 44us; 209us; 44us; 210us; 44us; 211us; 44us; 212us; 44us; 213us; 44us; 214us; 44us; 215us; 44us; 216us; 44us; 217us; 44us; 218us; 44us; 219us; 44us; 220us; 44us; 221us; 44us; 222us; 44us; 223us; 44us; 224us; 44us; 225us; 44us; 226us; 44us; 227us; 44us; 228us; 44us; 229us; 44us; 230us; 44us; 231us; 44us; 232us; 44us; 233us; 44us; 234us; 44us; 235us; 44us; 236us; 44us; 237us; 44us; 238us; 44us; 239us; 44us; 240us; 44us; 241us; 44us; 242us; 44us; 243us; 44us; 244us; 44us; 245us; 44us; 246us; 44us; 247us; 44us; 248us; 44us; 249us; 44us; 250us; 44us; 251us; 44us; 252us; 44us; 253us; 44us; 254us; 44us; 255us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 61 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 62us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 62 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 63us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 63 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 64 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 65 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 66us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 66 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 67us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 67 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 68 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 69us; 36us; 36us; 36us; 72us; 36us; 36us; 36us; 71us; 36us; 36us; 70us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 69 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 80us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 70 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 78us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 77us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 71 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 76us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 72 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 73us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 73 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 74us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 74 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 75us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 75 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 51us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 76 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 77 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 79us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 78 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 79 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 80 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 81us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 81 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 82 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 83 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 84 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 85 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 86 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 87us; 36us; 36us; 36us; 89us; 36us; 36us; 36us; 88us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 87 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 93us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 88 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 92us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 89 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 90us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 90 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 91us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 91 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 92 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 93 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 94 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 97us; 65535us; 95us; 95us; 95us; 95us; 95us; 95us; 95us; 95us; 95us; 95us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 95 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 97us; 65535us; 95us; 95us; 95us; 95us; 95us; 95us; 95us; 95us; 95us; 95us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 96 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 100us; 65535us; 100us; 65535us; 65535us; 99us; 99us; 99us; 99us; 99us; 99us; 99us; 99us; 99us; 99us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 97 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 98us; 98us; 98us; 98us; 98us; 98us; 98us; 98us; 98us; 98us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 98 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 98us; 98us; 98us; 98us; 98us; 98us; 98us; 98us; 98us; 98us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 99 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 100 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 99us; 99us; 99us; 99us; 99us; 99us; 99us; 99us; 99us; 99us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 101 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 102 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 103 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 104 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 105 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 109us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 106 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 107 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 108 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 109 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 110 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 111 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 112 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 113 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 50us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 114 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 115us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 115 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 116us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 116 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 117us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 117 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 118us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 118 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 119us; 119us; 119us; 119us; 119us; 119us; 119us; 119us; 119us; 119us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 119us; 119us; 119us; 119us; 119us; 119us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 119us; 119us; 119us; 119us; 119us; 119us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 119 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 120us; 120us; 120us; 120us; 120us; 120us; 120us; 120us; 120us; 120us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 120us; 120us; 120us; 120us; 120us; 120us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 120us; 120us; 120us; 120us; 120us; 120us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 120 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 37us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 36us; 129us; 36us; 130us; 36us; 131us; 36us; 132us; 36us; 133us; 36us; 134us; 36us; 135us; 36us; 136us; 36us; 137us; 36us; 138us; 36us; 139us; 36us; 140us; 36us; 141us; 36us; 142us; 36us; 143us; 36us; 144us; 36us; 145us; 36us; 146us; 36us; 147us; 36us; 148us; 36us; 149us; 36us; 150us; 36us; 151us; 36us; 152us; 36us; 153us; 36us; 154us; 36us; 155us; 36us; 156us; 36us; 157us; 36us; 158us; 36us; 159us; 36us; 160us; 36us; 161us; 36us; 162us; 36us; 163us; 36us; 164us; 36us; 165us; 36us; 166us; 36us; 167us; 36us; 168us; 36us; 169us; 36us; 170us; 36us; 171us; 36us; 172us; 36us; 173us; 36us; 174us; 36us; 175us; 36us; 176us; 36us; 177us; 36us; 178us; 36us; 179us; 36us; 180us; 36us; 181us; 36us; 182us; 36us; 183us; 36us; 184us; 36us; 185us; 36us; 186us; 36us; 187us; 36us; 188us; 36us; 189us; 36us; 190us; 36us; 191us; 36us; 192us; 36us; 193us; 36us; 194us; 36us; 195us; 36us; 196us; 36us; 197us; 36us; 198us; 36us; 199us; 36us; 200us; 36us; 201us; 36us; 202us; 36us; 203us; 36us; 204us; 36us; 205us; 36us; 206us; 36us; 207us; 36us; 208us; 36us; 209us; 36us; 210us; 36us; 211us; 36us; 212us; 36us; 213us; 36us; 214us; 36us; 215us; 36us; 216us; 36us; 217us; 36us; 218us; 36us; 219us; 36us; 220us; 36us; 221us; 36us; 222us; 36us; 223us; 36us; 224us; 36us; 225us; 36us; 226us; 36us; 227us; 36us; 228us; 36us; 229us; 36us; 230us; 36us; 231us; 36us; 232us; 36us; 233us; 36us; 234us; 36us; 235us; 36us; 236us; 36us; 237us; 36us; 238us; 36us; 239us; 36us; 240us; 36us; 241us; 36us; 242us; 36us; 243us; 36us; 244us; 36us; 245us; 36us; 246us; 36us; 247us; 36us; 248us; 36us; 249us; 36us; 250us; 36us; 251us; 36us; 252us; 36us; 253us; 36us; 254us; 36us; 255us; 36us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 121 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 97us; 65535us; 127us; 127us; 127us; 127us; 127us; 127us; 127us; 127us; 127us; 127us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 122 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 125us; 65535us; 98us; 98us; 98us; 98us; 98us; 98us; 98us; 98us; 98us; 98us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 123 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 124 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 100us; 65535us; 100us; 65535us; 65535us; 99us; 99us; 99us; 99us; 99us; 99us; 99us; 99us; 99us; 99us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 125 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 126us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 126 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 127 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 122us; 65535us; 128us; 128us; 128us; 128us; 128us; 128us; 128us; 128us; 128us; 128us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 128 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 122us; 65535us; 128us; 128us; 128us; 128us; 128us; 128us; 128us; 128us; 128us; 128us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 129 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 130us; 130us; 130us; 130us; 130us; 130us; 130us; 130us; 130us; 130us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 130us; 130us; 130us; 130us; 130us; 130us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 130us; 130us; 130us; 130us; 130us; 130us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 130 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 131us; 131us; 131us; 131us; 131us; 131us; 131us; 131us; 131us; 131us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 131us; 131us; 131us; 131us; 131us; 131us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 131us; 131us; 131us; 131us; 131us; 131us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 131 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 131us; 131us; 131us; 131us; 131us; 131us; 131us; 131us; 131us; 131us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 131us; 131us; 131us; 131us; 131us; 131us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 131us; 131us; 131us; 131us; 131us; 131us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 132 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 97us; 65535us; 133us; 133us; 133us; 133us; 133us; 133us; 133us; 133us; 133us; 133us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 133 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 97us; 65535us; 133us; 133us; 133us; 133us; 133us; 133us; 133us; 133us; 133us; 133us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 96us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 134 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 135 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 136us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 136 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 65535us; 129us; 65535us; 130us; 65535us; 131us; 65535us; 132us; 65535us; 133us; 65535us; 134us; 65535us; 135us; 65535us; 136us; 65535us; 137us; 65535us; 138us; 65535us; 139us; 65535us; 140us; 65535us; 141us; 65535us; 142us; 65535us; 143us; 65535us; 144us; 65535us; 145us; 65535us; 146us; 65535us; 147us; 65535us; 148us; 65535us; 149us; 65535us; 150us; 65535us; 151us; 65535us; 152us; 65535us; 153us; 65535us; 154us; 65535us; 155us; 65535us; 156us; 65535us; 157us; 65535us; 158us; 65535us; 159us; 65535us; 160us; 65535us; 161us; 65535us; 162us; 65535us; 163us; 65535us; 164us; 65535us; 165us; 65535us; 166us; 65535us; 167us; 65535us; 168us; 65535us; 169us; 65535us; 170us; 65535us; 171us; 65535us; 172us; 65535us; 173us; 65535us; 174us; 65535us; 175us; 65535us; 176us; 65535us; 177us; 65535us; 178us; 65535us; 179us; 65535us; 180us; 65535us; 181us; 65535us; 182us; 65535us; 183us; 65535us; 184us; 65535us; 185us; 65535us; 186us; 65535us; 187us; 65535us; 188us; 65535us; 189us; 65535us; 190us; 65535us; 191us; 65535us; 192us; 65535us; 193us; 65535us; 194us; 65535us; 195us; 65535us; 196us; 65535us; 197us; 65535us; 198us; 65535us; 199us; 65535us; 200us; 65535us; 201us; 65535us; 202us; 65535us; 203us; 65535us; 204us; 65535us; 205us; 65535us; 206us; 65535us; 207us; 65535us; 208us; 65535us; 209us; 65535us; 210us; 65535us; 211us; 65535us; 212us; 65535us; 213us; 65535us; 214us; 65535us; 215us; 65535us; 216us; 65535us; 217us; 65535us; 218us; 65535us; 219us; 65535us; 220us; 65535us; 221us; 65535us; 222us; 65535us; 223us; 65535us; 224us; 65535us; 225us; 65535us; 226us; 65535us; 227us; 65535us; 228us; 65535us; 229us; 65535us; 230us; 65535us; 231us; 65535us; 232us; 65535us; 233us; 65535us; 234us; 65535us; 235us; 65535us; 236us; 65535us; 237us; 65535us; 238us; 65535us; 239us; 65535us; 240us; 65535us; 241us; 65535us; 242us; 65535us; 243us; 65535us; 244us; 65535us; 245us; 65535us; 246us; 65535us; 247us; 65535us; 248us; 65535us; 249us; 65535us; 250us; 65535us; 251us; 65535us; 252us; 65535us; 253us; 65535us; 254us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + |] +let actions : uint16[] = [|65535us; 0us; 1us; 2us; 3us; 4us; 5us; 6us; 7us; 8us; 9us; 10us; 11us; 26us; 14us; 15us; 15us; 23us; 23us; 23us; 23us; 23us; 23us; 26us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 25us; 26us; 27us; 23us; 23us; 65535us; 65535us; 24us; 65535us; 24us; 65535us; 24us; 24us; 23us; 23us; 23us; 23us; 23us; 23us; 65535us; 22us; 22us; 22us; 22us; 22us; 22us; 22us; 22us; 22us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 23us; 20us; 20us; 65535us; 21us; 21us; 21us; 65535us; 21us; 17us; 23us; 17us; 23us; 23us; 23us; 23us; 23us; 17us; 23us; 23us; 17us; 17us; 23us; 23us; 23us; 23us; 23us; 19us; 17us; 21us; 17us; 17us; 65535us; 16us; 15us; 15us; 65535us; 18us; 18us; 21us; 21us; 13us; 65535us; 12us; |] +let _fslex_tables = Internal.Utilities.Text.Lexing.UnicodeTables.Create(trans,actions) +let rec _fslex_dummy () = _fslex_dummy() +// Rule token +and token lexbuf = + match _fslex_tables.Interpret(0,lexbuf) with + | 0 -> ( +# 97 "../../absil/illex.fsl" + COMMA +# 378 "illex.fs" + ) + | 1 -> ( +# 98 "../../absil/illex.fsl" + DOT +# 383 "illex.fs" + ) + | 2 -> ( +# 99 "../../absil/illex.fsl" + STAR +# 388 "illex.fs" + ) + | 3 -> ( +# 100 "../../absil/illex.fsl" + BANG +# 393 "illex.fs" + ) + | 4 -> ( +# 101 "../../absil/illex.fsl" + AMP +# 398 "illex.fs" + ) + | 5 -> ( +# 102 "../../absil/illex.fsl" + LPAREN +# 403 "illex.fs" + ) + | 6 -> ( +# 103 "../../absil/illex.fsl" + RPAREN +# 408 "illex.fs" + ) + | 7 -> ( +# 104 "../../absil/illex.fsl" + LBRACK +# 413 "illex.fs" + ) + | 8 -> ( +# 105 "../../absil/illex.fsl" + RBRACK +# 418 "illex.fs" + ) + | 9 -> ( +# 106 "../../absil/illex.fsl" + SLASH +# 423 "illex.fs" + ) + | 10 -> ( +# 107 "../../absil/illex.fsl" + LESS +# 428 "illex.fs" + ) + | 11 -> ( +# 108 "../../absil/illex.fsl" + GREATER +# 433 "illex.fs" + ) + | 12 -> ( +# 109 "../../absil/illex.fsl" + ELIPSES +# 438 "illex.fs" + ) + | 13 -> ( +# 110 "../../absil/illex.fsl" + DCOLON +# 443 "illex.fs" + ) + | 14 -> ( +# 111 "../../absil/illex.fsl" + PLUS +# 448 "illex.fs" + ) + | 15 -> ( +# 113 "../../absil/illex.fsl" + VAL_INT64(int64(lexeme lexbuf)) +# 453 "illex.fs" + ) + | 16 -> ( +# 122 "../../absil/illex.fsl" + let b = lexeme lexbuf in + VAL_INT32_ELIPSES(int32(String.sub b 0 (String.length b - 3))) +# 459 "illex.fs" + ) + | 17 -> ( +# 125 "../../absil/illex.fsl" + let c1 = String.get (lexeme lexbuf) 0 in + let c2 = String.get (lexeme lexbuf) 1 in + if c1 >= '0' && c1 <= '9' && c2 >= '0' && c2 <= '9' then + VAL_INT64(int64 (10*eval c1 + eval c2) ) + else VAL_ID(lexeme lexbuf) +# 468 "illex.fs" + ) + | 18 -> ( +# 131 "../../absil/illex.fsl" + VAL_INT64(int64(lexeme lexbuf)) +# 473 "illex.fs" + ) + | 19 -> ( +# 133 "../../absil/illex.fsl" + let c1 = (lexeme lexbuf).[6] in + let c2 = (lexeme lexbuf).[7] in + if c1 >= '0' && c1 <= '9' && c2 >= '0' && c2 <= '9' then + VAL_INT64(int64 (10*eval c1 + eval c2)) + else VAL_ID(lexeme lexbuf) +# 482 "illex.fs" + ) + | 20 -> ( +# 140 "../../absil/illex.fsl" + VAL_INT64(int64(lexeme lexbuf)) +# 487 "illex.fs" + ) + | 21 -> ( +# 142 "../../absil/illex.fsl" + VAL_FLOAT64( (float (lexeme lexbuf)) ) +# 492 "illex.fs" + ) + | 22 -> ( +# 145 "../../absil/illex.fsl" + let s = (lexeme lexbuf) in kwdOrInstr s +# 497 "illex.fs" + ) + | 23 -> ( +# 147 "../../absil/illex.fsl" + kwdOrInstrOrId (lexeme lexbuf) +# 502 "illex.fs" + ) + | 24 -> ( +# 150 "../../absil/illex.fsl" + VAL_DOTTEDNAME(lexeme lexbuf) +# 507 "illex.fs" + ) + | 25 -> ( +# 153 "../../absil/illex.fsl" + token lexbuf +# 512 "illex.fs" + ) + | 26 -> ( +# 155 "../../absil/illex.fsl" + unexpectedChar lexbuf +# 517 "illex.fs" + ) + | 27 -> ( +# 157 "../../absil/illex.fsl" + EOF +# 522 "illex.fs" + ) + | _ -> failwith "token" + +# 3000000 "illex.fs" diff --git a/src/fsharp/FSharp.Compiler.Private/ilpars.fs b/src/fsharp/FSharp.Compiler.Private/ilpars.fs new file mode 100644 index 0000000000..de358ccb16 --- /dev/null +++ b/src/fsharp/FSharp.Compiler.Private/ilpars.fs @@ -0,0 +1,1569 @@ +// Implementation file for parser generated by fsyacc +module internal FSharp.Compiler.AbstractIL.Internal.AsciiParser +#nowarn "64";; // turn off warnings that type variables used in production annotations are instantiated to concrete type +open FSharp.Compiler.AbstractIL +open Internal.Utilities.Text.Lexing +open Internal.Utilities.Text.Parsing.ParseHelpers +# 3 "../../absil/ilpars.fsy" + + +#nowarn "1182" // the generated code often has unused variable "parseState" + +open Internal.Utilities +open Internal.Utilities.Text + +open FSharp.Compiler.AbstractIL +open FSharp.Compiler.AbstractIL.Internal +open FSharp.Compiler.AbstractIL.Internal.AsciiConstants +open FSharp.Compiler.AbstractIL.Diagnostics +open FSharp.Compiler.AbstractIL.Extensions.ILX.Types +open FSharp.Compiler.AbstractIL.IL +open FSharp.Compiler.AbstractIL.Internal.Library + + +let pfailwith s = + stderr.WriteLine ("*** error: "+s); + raise Parsing.RecoverableParseError + +type ResolvedAtMethodSpecScope<'T> = + ResolvedAtMethodSpecScope of (ILGenericParameterDefs -> 'T) + +let noMethodSpecScope x = ResolvedAtMethodSpecScope (fun _cgparams -> x) +let resolveMethodSpecScope (ResolvedAtMethodSpecScope f) x = f x +let resolveMethodSpecScopeThen (ResolvedAtMethodSpecScope f) g = + ResolvedAtMethodSpecScope (fun x -> resolveMethodSpecScope (g(f x)) x) + +let resolveCurrentMethodSpecScope obj = + resolveMethodSpecScope obj mkILEmptyGenericParams + + +let findSystemRuntimeAssemblyRef() = + match (!parseILGlobals).primaryAssemblyScopeRef with + | ILScopeRef.Assembly aref -> aref + | _ -> pfailwith "systemRuntimeScopeRef not set to valid assembly reference in parseILGlobals" + +let findAssemblyRef nm = + if nm = "mscorlib" then findSystemRuntimeAssemblyRef() + else + pfailwith ("Undefined assembly ref '" + nm + "'") + + +# 51 "ilpars.fs" +// This type is the type of tokens accepted by the parser +type token = + | VOID + | VARARG + | VALUETYPE + | VALUE + | UNSIGNED + | UNMANAGED + | UINT8 + | UINT64 + | UINT32 + | UINT16 + | UINT + | STRING + | STAR + | SLASH + | RPAREN + | RBRACK + | PLUS + | OBJECT + | NATIVE + | METHOD + | LPAREN + | LESS + | LBRACK + | INT8 + | INT64 + | INT32 + | INT16 + | INT + | INSTANCE + | GREATER + | FLOAT64 + | FLOAT32 + | FIELD + | EXPLICIT + | EOF + | ELIPSES + | DOT + | DEFAULT + | DCOLON + | COMMA + | CLASS + | CHAR + | BYTEARRAY + | BOOL + | BANG + | AMP + | VAL_SQSTRING of (string) + | VAL_QSTRING of (string) + | VAL_DOTTEDNAME of (string) + | VAL_ID of (string) + | VAL_HEXBYTE of (int) + | INSTR_VALUETYPE of (ValueTypeInstr) + | INSTR_INT_TYPE of (IntTypeInstr) + | INSTR_TYPE of (TypeInstr) + | INSTR_TOK of (TokenInstr) + | INSTR_STRING of (StringInstr) + | INSTR_NONE of (NoArgInstr) + | INSTR_R of (DoubleInstr) + | INSTR_I8 of (Int64Instr) + | INSTR_I32_I32 of (Int32Int32Instr) + | INSTR_I of (Int32Instr) + | VAL_FLOAT64 of (double) + | VAL_INT32_ELIPSES of (int32) + | VAL_INT64 of (int64) +// This type is used to give symbolic names to token indexes, useful for error messages +type tokenId = + | TOKEN_VOID + | TOKEN_VARARG + | TOKEN_VALUETYPE + | TOKEN_VALUE + | TOKEN_UNSIGNED + | TOKEN_UNMANAGED + | TOKEN_UINT8 + | TOKEN_UINT64 + | TOKEN_UINT32 + | TOKEN_UINT16 + | TOKEN_UINT + | TOKEN_STRING + | TOKEN_STAR + | TOKEN_SLASH + | TOKEN_RPAREN + | TOKEN_RBRACK + | TOKEN_PLUS + | TOKEN_OBJECT + | TOKEN_NATIVE + | TOKEN_METHOD + | TOKEN_LPAREN + | TOKEN_LESS + | TOKEN_LBRACK + | TOKEN_INT8 + | TOKEN_INT64 + | TOKEN_INT32 + | TOKEN_INT16 + | TOKEN_INT + | TOKEN_INSTANCE + | TOKEN_GREATER + | TOKEN_FLOAT64 + | TOKEN_FLOAT32 + | TOKEN_FIELD + | TOKEN_EXPLICIT + | TOKEN_EOF + | TOKEN_ELIPSES + | TOKEN_DOT + | TOKEN_DEFAULT + | TOKEN_DCOLON + | TOKEN_COMMA + | TOKEN_CLASS + | TOKEN_CHAR + | TOKEN_BYTEARRAY + | TOKEN_BOOL + | TOKEN_BANG + | TOKEN_AMP + | TOKEN_VAL_SQSTRING + | TOKEN_VAL_QSTRING + | TOKEN_VAL_DOTTEDNAME + | TOKEN_VAL_ID + | TOKEN_VAL_HEXBYTE + | TOKEN_INSTR_VALUETYPE + | TOKEN_INSTR_INT_TYPE + | TOKEN_INSTR_TYPE + | TOKEN_INSTR_TOK + | TOKEN_INSTR_STRING + | TOKEN_INSTR_NONE + | TOKEN_INSTR_R + | TOKEN_INSTR_I8 + | TOKEN_INSTR_I32_I32 + | TOKEN_INSTR_I + | TOKEN_VAL_FLOAT64 + | TOKEN_VAL_INT32_ELIPSES + | TOKEN_VAL_INT64 + | TOKEN_end_of_input + | TOKEN_error +// This type is used to give symbolic names to token indexes, useful for error messages +type nonTerminalId = + | NONTERM__startilInstrs + | NONTERM__startilType + | NONTERM_ilType + | NONTERM_ilInstrs + | NONTERM_compQstring + | NONTERM_methodName + | NONTERM_instrs2 + | NONTERM_instr + | NONTERM_name1 + | NONTERM_className + | NONTERM_slashedName + | NONTERM_typeNameInst + | NONTERM_typeName + | NONTERM_typSpec + | NONTERM_callConv + | NONTERM_callKind + | NONTERM_typ + | NONTERM_bounds1 + | NONTERM_bound + | NONTERM_id + | NONTERM_int32 + | NONTERM_int64 + | NONTERM_float64 + | NONTERM_opt_actual_tyargs + | NONTERM_actual_tyargs + | NONTERM_actualTypSpecs + +// This function maps tokens to integer indexes +let tagOfToken (t:token) = + match t with + | VOID -> 0 + | VARARG -> 1 + | VALUETYPE -> 2 + | VALUE -> 3 + | UNSIGNED -> 4 + | UNMANAGED -> 5 + | UINT8 -> 6 + | UINT64 -> 7 + | UINT32 -> 8 + | UINT16 -> 9 + | UINT -> 10 + | STRING -> 11 + | STAR -> 12 + | SLASH -> 13 + | RPAREN -> 14 + | RBRACK -> 15 + | PLUS -> 16 + | OBJECT -> 17 + | NATIVE -> 18 + | METHOD -> 19 + | LPAREN -> 20 + | LESS -> 21 + | LBRACK -> 22 + | INT8 -> 23 + | INT64 -> 24 + | INT32 -> 25 + | INT16 -> 26 + | INT -> 27 + | INSTANCE -> 28 + | GREATER -> 29 + | FLOAT64 -> 30 + | FLOAT32 -> 31 + | FIELD -> 32 + | EXPLICIT -> 33 + | EOF -> 34 + | ELIPSES -> 35 + | DOT -> 36 + | DEFAULT -> 37 + | DCOLON -> 38 + | COMMA -> 39 + | CLASS -> 40 + | CHAR -> 41 + | BYTEARRAY -> 42 + | BOOL -> 43 + | BANG -> 44 + | AMP -> 45 + | VAL_SQSTRING _ -> 46 + | VAL_QSTRING _ -> 47 + | VAL_DOTTEDNAME _ -> 48 + | VAL_ID _ -> 49 + | VAL_HEXBYTE _ -> 50 + | INSTR_VALUETYPE _ -> 51 + | INSTR_INT_TYPE _ -> 52 + | INSTR_TYPE _ -> 53 + | INSTR_TOK _ -> 54 + | INSTR_STRING _ -> 55 + | INSTR_NONE _ -> 56 + | INSTR_R _ -> 57 + | INSTR_I8 _ -> 58 + | INSTR_I32_I32 _ -> 59 + | INSTR_I _ -> 60 + | VAL_FLOAT64 _ -> 61 + | VAL_INT32_ELIPSES _ -> 62 + | VAL_INT64 _ -> 63 + +// This function maps integer indexes to symbolic token ids +let tokenTagToTokenId (tokenIdx:int) = + match tokenIdx with + | 0 -> TOKEN_VOID + | 1 -> TOKEN_VARARG + | 2 -> TOKEN_VALUETYPE + | 3 -> TOKEN_VALUE + | 4 -> TOKEN_UNSIGNED + | 5 -> TOKEN_UNMANAGED + | 6 -> TOKEN_UINT8 + | 7 -> TOKEN_UINT64 + | 8 -> TOKEN_UINT32 + | 9 -> TOKEN_UINT16 + | 10 -> TOKEN_UINT + | 11 -> TOKEN_STRING + | 12 -> TOKEN_STAR + | 13 -> TOKEN_SLASH + | 14 -> TOKEN_RPAREN + | 15 -> TOKEN_RBRACK + | 16 -> TOKEN_PLUS + | 17 -> TOKEN_OBJECT + | 18 -> TOKEN_NATIVE + | 19 -> TOKEN_METHOD + | 20 -> TOKEN_LPAREN + | 21 -> TOKEN_LESS + | 22 -> TOKEN_LBRACK + | 23 -> TOKEN_INT8 + | 24 -> TOKEN_INT64 + | 25 -> TOKEN_INT32 + | 26 -> TOKEN_INT16 + | 27 -> TOKEN_INT + | 28 -> TOKEN_INSTANCE + | 29 -> TOKEN_GREATER + | 30 -> TOKEN_FLOAT64 + | 31 -> TOKEN_FLOAT32 + | 32 -> TOKEN_FIELD + | 33 -> TOKEN_EXPLICIT + | 34 -> TOKEN_EOF + | 35 -> TOKEN_ELIPSES + | 36 -> TOKEN_DOT + | 37 -> TOKEN_DEFAULT + | 38 -> TOKEN_DCOLON + | 39 -> TOKEN_COMMA + | 40 -> TOKEN_CLASS + | 41 -> TOKEN_CHAR + | 42 -> TOKEN_BYTEARRAY + | 43 -> TOKEN_BOOL + | 44 -> TOKEN_BANG + | 45 -> TOKEN_AMP + | 46 -> TOKEN_VAL_SQSTRING + | 47 -> TOKEN_VAL_QSTRING + | 48 -> TOKEN_VAL_DOTTEDNAME + | 49 -> TOKEN_VAL_ID + | 50 -> TOKEN_VAL_HEXBYTE + | 51 -> TOKEN_INSTR_VALUETYPE + | 52 -> TOKEN_INSTR_INT_TYPE + | 53 -> TOKEN_INSTR_TYPE + | 54 -> TOKEN_INSTR_TOK + | 55 -> TOKEN_INSTR_STRING + | 56 -> TOKEN_INSTR_NONE + | 57 -> TOKEN_INSTR_R + | 58 -> TOKEN_INSTR_I8 + | 59 -> TOKEN_INSTR_I32_I32 + | 60 -> TOKEN_INSTR_I + | 61 -> TOKEN_VAL_FLOAT64 + | 62 -> TOKEN_VAL_INT32_ELIPSES + | 63 -> TOKEN_VAL_INT64 + | 66 -> TOKEN_end_of_input + | 64 -> TOKEN_error + | _ -> failwith "tokenTagToTokenId: bad token" + +/// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that production +let prodIdxToNonTerminal (prodIdx:int) = + match prodIdx with + | 0 -> NONTERM__startilInstrs + | 1 -> NONTERM__startilType + | 2 -> NONTERM_ilType + | 3 -> NONTERM_ilInstrs + | 4 -> NONTERM_compQstring + | 5 -> NONTERM_compQstring + | 6 -> NONTERM_methodName + | 7 -> NONTERM_instrs2 + | 8 -> NONTERM_instrs2 + | 9 -> NONTERM_instr + | 10 -> NONTERM_instr + | 11 -> NONTERM_instr + | 12 -> NONTERM_instr + | 13 -> NONTERM_instr + | 14 -> NONTERM_instr + | 15 -> NONTERM_instr + | 16 -> NONTERM_instr + | 17 -> NONTERM_instr + | 18 -> NONTERM_instr + | 19 -> NONTERM_name1 + | 20 -> NONTERM_name1 + | 21 -> NONTERM_name1 + | 22 -> NONTERM_className + | 23 -> NONTERM_className + | 24 -> NONTERM_slashedName + | 25 -> NONTERM_slashedName + | 26 -> NONTERM_typeNameInst + | 27 -> NONTERM_typeName + | 28 -> NONTERM_typSpec + | 29 -> NONTERM_typSpec + | 30 -> NONTERM_typSpec + | 31 -> NONTERM_callConv + | 32 -> NONTERM_callConv + | 33 -> NONTERM_callConv + | 34 -> NONTERM_callKind + | 35 -> NONTERM_callKind + | 36 -> NONTERM_callKind + | 37 -> NONTERM_typ + | 38 -> NONTERM_typ + | 39 -> NONTERM_typ + | 40 -> NONTERM_typ + | 41 -> NONTERM_typ + | 42 -> NONTERM_typ + | 43 -> NONTERM_typ + | 44 -> NONTERM_typ + | 45 -> NONTERM_typ + | 46 -> NONTERM_typ + | 47 -> NONTERM_typ + | 48 -> NONTERM_typ + | 49 -> NONTERM_typ + | 50 -> NONTERM_typ + | 51 -> NONTERM_typ + | 52 -> NONTERM_typ + | 53 -> NONTERM_typ + | 54 -> NONTERM_typ + | 55 -> NONTERM_typ + | 56 -> NONTERM_typ + | 57 -> NONTERM_typ + | 58 -> NONTERM_typ + | 59 -> NONTERM_typ + | 60 -> NONTERM_typ + | 61 -> NONTERM_typ + | 62 -> NONTERM_typ + | 63 -> NONTERM_typ + | 64 -> NONTERM_typ + | 65 -> NONTERM_typ + | 66 -> NONTERM_typ + | 67 -> NONTERM_bounds1 + | 68 -> NONTERM_bounds1 + | 69 -> NONTERM_bound + | 70 -> NONTERM_bound + | 71 -> NONTERM_bound + | 72 -> NONTERM_bound + | 73 -> NONTERM_bound + | 74 -> NONTERM_bound + | 75 -> NONTERM_id + | 76 -> NONTERM_id + | 77 -> NONTERM_int32 + | 78 -> NONTERM_int64 + | 79 -> NONTERM_float64 + | 80 -> NONTERM_float64 + | 81 -> NONTERM_opt_actual_tyargs + | 82 -> NONTERM_opt_actual_tyargs + | 83 -> NONTERM_actual_tyargs + | 84 -> NONTERM_actualTypSpecs + | 85 -> NONTERM_actualTypSpecs + | _ -> failwith "prodIdxToNonTerminal: bad production index" + +let _fsyacc_endOfInputTag = 66 +let _fsyacc_tagOfErrorTerminal = 64 + +// This function gets the name of a token as a string +let token_to_string (t:token) = + match t with + | VOID -> "VOID" + | VARARG -> "VARARG" + | VALUETYPE -> "VALUETYPE" + | VALUE -> "VALUE" + | UNSIGNED -> "UNSIGNED" + | UNMANAGED -> "UNMANAGED" + | UINT8 -> "UINT8" + | UINT64 -> "UINT64" + | UINT32 -> "UINT32" + | UINT16 -> "UINT16" + | UINT -> "UINT" + | STRING -> "STRING" + | STAR -> "STAR" + | SLASH -> "SLASH" + | RPAREN -> "RPAREN" + | RBRACK -> "RBRACK" + | PLUS -> "PLUS" + | OBJECT -> "OBJECT" + | NATIVE -> "NATIVE" + | METHOD -> "METHOD" + | LPAREN -> "LPAREN" + | LESS -> "LESS" + | LBRACK -> "LBRACK" + | INT8 -> "INT8" + | INT64 -> "INT64" + | INT32 -> "INT32" + | INT16 -> "INT16" + | INT -> "INT" + | INSTANCE -> "INSTANCE" + | GREATER -> "GREATER" + | FLOAT64 -> "FLOAT64" + | FLOAT32 -> "FLOAT32" + | FIELD -> "FIELD" + | EXPLICIT -> "EXPLICIT" + | EOF -> "EOF" + | ELIPSES -> "ELIPSES" + | DOT -> "DOT" + | DEFAULT -> "DEFAULT" + | DCOLON -> "DCOLON" + | COMMA -> "COMMA" + | CLASS -> "CLASS" + | CHAR -> "CHAR" + | BYTEARRAY -> "BYTEARRAY" + | BOOL -> "BOOL" + | BANG -> "BANG" + | AMP -> "AMP" + | VAL_SQSTRING _ -> "VAL_SQSTRING" + | VAL_QSTRING _ -> "VAL_QSTRING" + | VAL_DOTTEDNAME _ -> "VAL_DOTTEDNAME" + | VAL_ID _ -> "VAL_ID" + | VAL_HEXBYTE _ -> "VAL_HEXBYTE" + | INSTR_VALUETYPE _ -> "INSTR_VALUETYPE" + | INSTR_INT_TYPE _ -> "INSTR_INT_TYPE" + | INSTR_TYPE _ -> "INSTR_TYPE" + | INSTR_TOK _ -> "INSTR_TOK" + | INSTR_STRING _ -> "INSTR_STRING" + | INSTR_NONE _ -> "INSTR_NONE" + | INSTR_R _ -> "INSTR_R" + | INSTR_I8 _ -> "INSTR_I8" + | INSTR_I32_I32 _ -> "INSTR_I32_I32" + | INSTR_I _ -> "INSTR_I" + | VAL_FLOAT64 _ -> "VAL_FLOAT64" + | VAL_INT32_ELIPSES _ -> "VAL_INT32_ELIPSES" + | VAL_INT64 _ -> "VAL_INT64" + +// This function gets the data carried by a token as an object +let _fsyacc_dataOfToken (t:token) = + match t with + | VOID -> (null : System.Object) + | VARARG -> (null : System.Object) + | VALUETYPE -> (null : System.Object) + | VALUE -> (null : System.Object) + | UNSIGNED -> (null : System.Object) + | UNMANAGED -> (null : System.Object) + | UINT8 -> (null : System.Object) + | UINT64 -> (null : System.Object) + | UINT32 -> (null : System.Object) + | UINT16 -> (null : System.Object) + | UINT -> (null : System.Object) + | STRING -> (null : System.Object) + | STAR -> (null : System.Object) + | SLASH -> (null : System.Object) + | RPAREN -> (null : System.Object) + | RBRACK -> (null : System.Object) + | PLUS -> (null : System.Object) + | OBJECT -> (null : System.Object) + | NATIVE -> (null : System.Object) + | METHOD -> (null : System.Object) + | LPAREN -> (null : System.Object) + | LESS -> (null : System.Object) + | LBRACK -> (null : System.Object) + | INT8 -> (null : System.Object) + | INT64 -> (null : System.Object) + | INT32 -> (null : System.Object) + | INT16 -> (null : System.Object) + | INT -> (null : System.Object) + | INSTANCE -> (null : System.Object) + | GREATER -> (null : System.Object) + | FLOAT64 -> (null : System.Object) + | FLOAT32 -> (null : System.Object) + | FIELD -> (null : System.Object) + | EXPLICIT -> (null : System.Object) + | EOF -> (null : System.Object) + | ELIPSES -> (null : System.Object) + | DOT -> (null : System.Object) + | DEFAULT -> (null : System.Object) + | DCOLON -> (null : System.Object) + | COMMA -> (null : System.Object) + | CLASS -> (null : System.Object) + | CHAR -> (null : System.Object) + | BYTEARRAY -> (null : System.Object) + | BOOL -> (null : System.Object) + | BANG -> (null : System.Object) + | AMP -> (null : System.Object) + | VAL_SQSTRING _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | VAL_QSTRING _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | VAL_DOTTEDNAME _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | VAL_ID _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | VAL_HEXBYTE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INSTR_VALUETYPE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INSTR_INT_TYPE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INSTR_TYPE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INSTR_TOK _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INSTR_STRING _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INSTR_NONE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INSTR_R _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INSTR_I8 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INSTR_I32_I32 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INSTR_I _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | VAL_FLOAT64 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | VAL_INT32_ELIPSES _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | VAL_INT64 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x +let _fsyacc_gotos = [| 0us; 65535us; 0us; 65535us; 1us; 65535us; 2us; 3us; 1us; 65535us; 0us; 1us; 0us; 65535us; 0us; 65535us; 2us; 65535us; 0us; 6us; 8us; 9us; 2us; 65535us; 0us; 8us; 8us; 8us; 12us; 65535us; 21us; 33us; 24us; 33us; 26us; 33us; 28us; 33us; 36us; 32us; 37us; 33us; 40us; 33us; 52us; 33us; 55us; 33us; 57us; 33us; 108us; 33us; 112us; 33us; 9us; 65535us; 21us; 44us; 24us; 44us; 26us; 44us; 28us; 44us; 52us; 42us; 55us; 42us; 57us; 42us; 108us; 44us; 112us; 44us; 11us; 65535us; 21us; 39us; 24us; 39us; 26us; 39us; 28us; 39us; 37us; 38us; 40us; 41us; 52us; 39us; 55us; 39us; 57us; 39us; 108us; 39us; 112us; 39us; 3us; 65535us; 52us; 53us; 55us; 56us; 57us; 58us; 6us; 65535us; 21us; 45us; 24us; 45us; 26us; 45us; 28us; 45us; 108us; 45us; 112us; 45us; 6us; 65535us; 21us; 22us; 24us; 25us; 26us; 27us; 28us; 29us; 108us; 111us; 112us; 113us; 0us; 65535us; 0us; 65535us; 8us; 65535us; 2us; 4us; 21us; 46us; 24us; 46us; 26us; 46us; 28us; 46us; 47us; 48us; 108us; 46us; 112us; 46us; 1us; 65535us; 59us; 61us; 2us; 65535us; 59us; 90us; 91us; 92us; 13us; 65535us; 21us; 30us; 24us; 30us; 26us; 30us; 28us; 30us; 34us; 35us; 36us; 30us; 37us; 30us; 40us; 30us; 52us; 30us; 55us; 30us; 57us; 30us; 108us; 30us; 112us; 30us; 9us; 65535us; 11us; 12us; 13us; 14us; 14us; 15us; 23us; 24us; 59us; 93us; 88us; 89us; 91us; 93us; 94us; 95us; 96us; 97us; 3us; 65535us; 16us; 17us; 18us; 20us; 104us; 105us; 1us; 65535us; 18us; 19us; 1us; 65535us; 42us; 43us; 1us; 65535us; 42us; 107us; 1us; 65535us; 108us; 109us; |] +let _fsyacc_sparseGotoTableRowOffsets = [|0us; 1us; 2us; 4us; 6us; 7us; 8us; 11us; 14us; 27us; 37us; 49us; 53us; 60us; 67us; 68us; 69us; 78us; 80us; 83us; 97us; 107us; 111us; 113us; 115us; 117us; |] +let _fsyacc_stateToProdIdxsTableElements = [| 1us; 0us; 1us; 0us; 1us; 1us; 1us; 1us; 5us; 2us; 42us; 43us; 44us; 45us; 1us; 2us; 1us; 3us; 1us; 3us; 1us; 7us; 1us; 7us; 1us; 9us; 1us; 10us; 1us; 10us; 1us; 11us; 1us; 11us; 1us; 11us; 1us; 12us; 1us; 12us; 2us; 13us; 14us; 1us; 13us; 1us; 14us; 1us; 15us; 1us; 15us; 1us; 16us; 1us; 16us; 1us; 16us; 1us; 17us; 1us; 17us; 1us; 18us; 1us; 18us; 1us; 19us; 1us; 20us; 2us; 21us; 22us; 3us; 21us; 24us; 25us; 1us; 21us; 1us; 21us; 1us; 22us; 1us; 22us; 1us; 22us; 1us; 23us; 1us; 25us; 1us; 25us; 1us; 26us; 1us; 26us; 1us; 27us; 1us; 28us; 5us; 29us; 42us; 43us; 44us; 45us; 1us; 30us; 5us; 30us; 42us; 43us; 44us; 45us; 1us; 30us; 1us; 37us; 1us; 38us; 1us; 39us; 1us; 39us; 1us; 40us; 1us; 40us; 1us; 40us; 1us; 41us; 1us; 41us; 2us; 42us; 43us; 1us; 42us; 2us; 43us; 68us; 1us; 43us; 1us; 44us; 1us; 45us; 1us; 46us; 1us; 47us; 1us; 48us; 1us; 49us; 1us; 50us; 1us; 51us; 1us; 52us; 1us; 53us; 1us; 54us; 4us; 55us; 56us; 57us; 58us; 1us; 55us; 1us; 56us; 1us; 57us; 1us; 58us; 1us; 59us; 1us; 60us; 1us; 61us; 1us; 62us; 3us; 63us; 64us; 65us; 1us; 63us; 1us; 64us; 1us; 64us; 1us; 65us; 1us; 66us; 1us; 66us; 1us; 67us; 1us; 68us; 1us; 68us; 3us; 70us; 71us; 72us; 2us; 71us; 72us; 1us; 71us; 2us; 73us; 74us; 1us; 73us; 1us; 75us; 1us; 76us; 1us; 77us; 1us; 78us; 1us; 79us; 1us; 80us; 1us; 80us; 1us; 80us; 1us; 80us; 1us; 82us; 1us; 83us; 2us; 83us; 85us; 1us; 83us; 1us; 84us; 1us; 85us; 1us; 85us; |] +let _fsyacc_stateToProdIdxsTableRowOffsets = [|0us; 2us; 4us; 6us; 8us; 14us; 16us; 18us; 20us; 22us; 24us; 26us; 28us; 30us; 32us; 34us; 36us; 38us; 40us; 43us; 45us; 47us; 49us; 51us; 53us; 55us; 57us; 59us; 61us; 63us; 65us; 67us; 69us; 72us; 76us; 78us; 80us; 82us; 84us; 86us; 88us; 90us; 92us; 94us; 96us; 98us; 100us; 106us; 108us; 114us; 116us; 118us; 120us; 122us; 124us; 126us; 128us; 130us; 132us; 134us; 137us; 139us; 142us; 144us; 146us; 148us; 150us; 152us; 154us; 156us; 158us; 160us; 162us; 164us; 166us; 171us; 173us; 175us; 177us; 179us; 181us; 183us; 185us; 187us; 191us; 193us; 195us; 197us; 199us; 201us; 203us; 205us; 207us; 209us; 213us; 216us; 218us; 221us; 223us; 225us; 227us; 229us; 231us; 233us; 235us; 237us; 239us; 241us; 243us; 245us; 248us; 250us; 252us; 254us; |] +let _fsyacc_action_rows = 114 +let _fsyacc_actionTableElements = [|9us; 16392us; 51us; 26us; 52us; 23us; 53us; 21us; 54us; 28us; 56us; 10us; 57us; 18us; 58us; 16us; 59us; 13us; 60us; 11us; 0us; 49152us; 21us; 32768us; 0us; 66us; 2us; 57us; 3us; 54us; 4us; 74us; 6us; 79us; 7us; 82us; 8us; 81us; 9us; 80us; 11us; 50us; 17us; 51us; 18us; 83us; 23us; 68us; 24us; 71us; 25us; 70us; 26us; 69us; 30us; 73us; 31us; 72us; 40us; 52us; 41us; 65us; 43us; 67us; 44us; 88us; 0us; 49152us; 4us; 32768us; 12us; 64us; 22us; 59us; 34us; 5us; 45us; 63us; 0us; 16386us; 1us; 32768us; 34us; 7us; 0us; 16387us; 9us; 16392us; 51us; 26us; 52us; 23us; 53us; 21us; 54us; 28us; 56us; 10us; 57us; 18us; 58us; 16us; 59us; 13us; 60us; 11us; 0us; 16391us; 0us; 16393us; 1us; 32768us; 63us; 100us; 0us; 16394us; 1us; 32768us; 63us; 100us; 1us; 32768us; 63us; 100us; 0us; 16395us; 1us; 32768us; 63us; 101us; 0us; 16396us; 3us; 32768us; 30us; 103us; 61us; 102us; 63us; 101us; 0us; 16397us; 0us; 16398us; 26us; 32768us; 0us; 66us; 2us; 57us; 3us; 54us; 4us; 74us; 6us; 79us; 7us; 82us; 8us; 81us; 9us; 80us; 11us; 50us; 17us; 51us; 18us; 83us; 20us; 47us; 22us; 36us; 23us; 68us; 24us; 71us; 25us; 70us; 26us; 69us; 30us; 73us; 31us; 72us; 40us; 52us; 41us; 65us; 43us; 67us; 44us; 88us; 46us; 99us; 48us; 31us; 49us; 98us; 0us; 16399us; 1us; 32768us; 63us; 100us; 26us; 32768us; 0us; 66us; 2us; 57us; 3us; 54us; 4us; 74us; 6us; 79us; 7us; 82us; 8us; 81us; 9us; 80us; 11us; 50us; 17us; 51us; 18us; 83us; 20us; 47us; 22us; 36us; 23us; 68us; 24us; 71us; 25us; 70us; 26us; 69us; 30us; 73us; 31us; 72us; 40us; 52us; 41us; 65us; 43us; 67us; 44us; 88us; 46us; 99us; 48us; 31us; 49us; 98us; 0us; 16400us; 26us; 32768us; 0us; 66us; 2us; 57us; 3us; 54us; 4us; 74us; 6us; 79us; 7us; 82us; 8us; 81us; 9us; 80us; 11us; 50us; 17us; 51us; 18us; 83us; 20us; 47us; 22us; 36us; 23us; 68us; 24us; 71us; 25us; 70us; 26us; 69us; 30us; 73us; 31us; 72us; 40us; 52us; 41us; 65us; 43us; 67us; 44us; 88us; 46us; 99us; 48us; 31us; 49us; 98us; 0us; 16401us; 26us; 32768us; 0us; 66us; 2us; 57us; 3us; 54us; 4us; 74us; 6us; 79us; 7us; 82us; 8us; 81us; 9us; 80us; 11us; 50us; 17us; 51us; 18us; 83us; 20us; 47us; 22us; 36us; 23us; 68us; 24us; 71us; 25us; 70us; 26us; 69us; 30us; 73us; 31us; 72us; 40us; 52us; 41us; 65us; 43us; 67us; 44us; 88us; 46us; 99us; 48us; 31us; 49us; 98us; 0us; 16402us; 0us; 16403us; 0us; 16404us; 2us; 32768us; 15us; 37us; 36us; 34us; 2us; 16408us; 13us; 40us; 36us; 34us; 2us; 32768us; 46us; 99us; 49us; 98us; 0us; 16405us; 3us; 32768us; 46us; 99us; 48us; 31us; 49us; 98us; 3us; 32768us; 46us; 99us; 48us; 31us; 49us; 98us; 0us; 16406us; 0us; 16407us; 3us; 32768us; 46us; 99us; 48us; 31us; 49us; 98us; 0us; 16409us; 1us; 16465us; 21us; 108us; 0us; 16410us; 0us; 16411us; 0us; 16412us; 3us; 16413us; 12us; 64us; 22us; 59us; 45us; 63us; 21us; 32768us; 0us; 66us; 2us; 57us; 3us; 54us; 4us; 74us; 6us; 79us; 7us; 82us; 8us; 81us; 9us; 80us; 11us; 50us; 17us; 51us; 18us; 83us; 23us; 68us; 24us; 71us; 25us; 70us; 26us; 69us; 30us; 73us; 31us; 72us; 40us; 52us; 41us; 65us; 43us; 67us; 44us; 88us; 4us; 32768us; 12us; 64us; 14us; 49us; 22us; 59us; 45us; 63us; 0us; 16414us; 0us; 16421us; 0us; 16422us; 4us; 32768us; 22us; 36us; 46us; 99us; 48us; 31us; 49us; 98us; 0us; 16423us; 1us; 32768us; 40us; 55us; 4us; 32768us; 22us; 36us; 46us; 99us; 48us; 31us; 49us; 98us; 0us; 16424us; 4us; 32768us; 22us; 36us; 46us; 99us; 48us; 31us; 49us; 98us; 0us; 16425us; 3us; 16453us; 15us; 60us; 62us; 96us; 63us; 100us; 0us; 16426us; 2us; 32768us; 15us; 62us; 39us; 91us; 0us; 16427us; 0us; 16428us; 0us; 16429us; 0us; 16430us; 0us; 16431us; 0us; 16432us; 0us; 16433us; 0us; 16434us; 0us; 16435us; 0us; 16436us; 0us; 16437us; 0us; 16438us; 4us; 32768us; 23us; 75us; 24us; 78us; 25us; 77us; 26us; 76us; 0us; 16439us; 0us; 16440us; 0us; 16441us; 0us; 16442us; 0us; 16443us; 0us; 16444us; 0us; 16445us; 0us; 16446us; 3us; 32768us; 4us; 85us; 10us; 87us; 27us; 84us; 0us; 16447us; 1us; 32768us; 27us; 86us; 0us; 16448us; 0us; 16449us; 1us; 32768us; 63us; 100us; 0us; 16450us; 0us; 16451us; 2us; 16453us; 62us; 96us; 63us; 100us; 0us; 16452us; 1us; 16454us; 35us; 94us; 1us; 16456us; 63us; 100us; 0us; 16455us; 1us; 16458us; 63us; 100us; 0us; 16457us; 0us; 16459us; 0us; 16460us; 0us; 16461us; 0us; 16462us; 0us; 16463us; 1us; 32768us; 20us; 104us; 1us; 32768us; 63us; 101us; 1us; 32768us; 14us; 106us; 0us; 16464us; 0us; 16466us; 26us; 32768us; 0us; 66us; 2us; 57us; 3us; 54us; 4us; 74us; 6us; 79us; 7us; 82us; 8us; 81us; 9us; 80us; 11us; 50us; 17us; 51us; 18us; 83us; 20us; 47us; 22us; 36us; 23us; 68us; 24us; 71us; 25us; 70us; 26us; 69us; 30us; 73us; 31us; 72us; 40us; 52us; 41us; 65us; 43us; 67us; 44us; 88us; 46us; 99us; 48us; 31us; 49us; 98us; 2us; 32768us; 29us; 110us; 39us; 112us; 0us; 16467us; 0us; 16468us; 26us; 32768us; 0us; 66us; 2us; 57us; 3us; 54us; 4us; 74us; 6us; 79us; 7us; 82us; 8us; 81us; 9us; 80us; 11us; 50us; 17us; 51us; 18us; 83us; 20us; 47us; 22us; 36us; 23us; 68us; 24us; 71us; 25us; 70us; 26us; 69us; 30us; 73us; 31us; 72us; 40us; 52us; 41us; 65us; 43us; 67us; 44us; 88us; 46us; 99us; 48us; 31us; 49us; 98us; 0us; 16469us; |] +let _fsyacc_actionTableRowOffsets = [|0us; 10us; 11us; 33us; 34us; 39us; 40us; 42us; 43us; 53us; 54us; 55us; 57us; 58us; 60us; 62us; 63us; 65us; 66us; 70us; 71us; 72us; 99us; 100us; 102us; 129us; 130us; 157us; 158us; 185us; 186us; 187us; 188us; 191us; 194us; 197us; 198us; 202us; 206us; 207us; 208us; 212us; 213us; 215us; 216us; 217us; 218us; 222us; 244us; 249us; 250us; 251us; 252us; 257us; 258us; 260us; 265us; 266us; 271us; 272us; 276us; 277us; 280us; 281us; 282us; 283us; 284us; 285us; 286us; 287us; 288us; 289us; 290us; 291us; 292us; 297us; 298us; 299us; 300us; 301us; 302us; 303us; 304us; 305us; 309us; 310us; 312us; 313us; 314us; 316us; 317us; 318us; 321us; 322us; 324us; 326us; 327us; 329us; 330us; 331us; 332us; 333us; 334us; 335us; 337us; 339us; 341us; 342us; 343us; 370us; 373us; 374us; 375us; 402us; |] +let _fsyacc_reductionSymbolCounts = [|1us; 1us; 2us; 2us; 1us; 3us; 1us; 2us; 0us; 1us; 2us; 3us; 2us; 2us; 2us; 2us; 3us; 2us; 2us; 1us; 1us; 3us; 4us; 1us; 1us; 3us; 2us; 1us; 1us; 1us; 3us; 2us; 2us; 1us; 0us; 1us; 1us; 1us; 1us; 2us; 3us; 2us; 3us; 4us; 2us; 2us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 2us; 2us; 2us; 2us; 1us; 1us; 1us; 1us; 2us; 3us; 2us; 2us; 1us; 3us; 0us; 1us; 3us; 2us; 2us; 1us; 1us; 1us; 1us; 1us; 1us; 4us; 0us; 1us; 3us; 1us; 3us; |] +let _fsyacc_productionToNonTerminalTable = [|0us; 1us; 2us; 3us; 4us; 4us; 5us; 6us; 6us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 8us; 8us; 8us; 9us; 9us; 10us; 10us; 11us; 12us; 13us; 13us; 13us; 14us; 14us; 14us; 15us; 15us; 15us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 17us; 17us; 18us; 18us; 18us; 18us; 18us; 18us; 19us; 19us; 20us; 21us; 22us; 22us; 23us; 23us; 24us; 25us; 25us; |] +let _fsyacc_immediateActions = [|65535us; 49152us; 65535us; 49152us; 65535us; 16386us; 65535us; 16387us; 65535us; 16391us; 16393us; 65535us; 16394us; 65535us; 65535us; 16395us; 65535us; 16396us; 65535us; 16397us; 16398us; 65535us; 16399us; 65535us; 65535us; 16400us; 65535us; 16401us; 65535us; 16402us; 16403us; 16404us; 65535us; 65535us; 65535us; 16405us; 65535us; 65535us; 16406us; 16407us; 65535us; 16409us; 65535us; 16410us; 16411us; 16412us; 65535us; 65535us; 65535us; 16414us; 16421us; 16422us; 65535us; 16423us; 65535us; 65535us; 16424us; 65535us; 16425us; 65535us; 16426us; 65535us; 16427us; 16428us; 16429us; 16430us; 16431us; 16432us; 16433us; 16434us; 16435us; 16436us; 16437us; 16438us; 65535us; 16439us; 16440us; 16441us; 16442us; 16443us; 16444us; 16445us; 16446us; 65535us; 16447us; 65535us; 16448us; 16449us; 65535us; 16450us; 16451us; 65535us; 16452us; 65535us; 65535us; 16455us; 65535us; 16457us; 16459us; 16460us; 16461us; 16462us; 16463us; 65535us; 65535us; 65535us; 16464us; 16466us; 65535us; 65535us; 16467us; 16468us; 65535us; 16469us; |] +let _fsyacc_reductions () = [| +# 594 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : ILInstr array)) in + Microsoft.FSharp.Core.Operators.box + ( + ( + raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) + ) + : '_startilInstrs)); +# 603 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : ILType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( + raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) + ) + : '_startilType)); +# 612 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : ILType ResolvedAtMethodSpecScope)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 127 "../../absil/ilpars.fsy" + resolveMethodSpecScope _1 [] + ) +# 127 "../../absil/ilpars.fsy" + : ILType)); +# 623 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'instrs2)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 131 "../../absil/ilpars.fsy" + Array.ofList _1 + ) +# 131 "../../absil/ilpars.fsy" + : ILInstr array)); +# 634 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 135 "../../absil/ilpars.fsy" + _1 + ) +# 135 "../../absil/ilpars.fsy" + : 'compQstring)); +# 645 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'compQstring)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 136 "../../absil/ilpars.fsy" + _1 + _3 + ) +# 136 "../../absil/ilpars.fsy" + : 'compQstring)); +# 657 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 138 "../../absil/ilpars.fsy" + _1 + ) +# 138 "../../absil/ilpars.fsy" + : 'methodName)); +# 668 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'instr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'instrs2)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 142 "../../absil/ilpars.fsy" + _1 :: _2 + ) +# 142 "../../absil/ilpars.fsy" + : 'instrs2)); +# 680 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 143 "../../absil/ilpars.fsy" + [] + ) +# 143 "../../absil/ilpars.fsy" + : 'instrs2)); +# 690 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : NoArgInstr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 147 "../../absil/ilpars.fsy" + (_1 ()) + ) +# 147 "../../absil/ilpars.fsy" + : 'instr)); +# 701 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Int32Instr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'int32)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 149 "../../absil/ilpars.fsy" + (_1 _2) + ) +# 149 "../../absil/ilpars.fsy" + : 'instr)); +# 713 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Int32Int32Instr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'int32)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'int32)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 151 "../../absil/ilpars.fsy" + (_1 (_2,_3)) + ) +# 151 "../../absil/ilpars.fsy" + : 'instr)); +# 726 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Int64Instr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'int64)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 153 "../../absil/ilpars.fsy" + (_1 _2) + ) +# 153 "../../absil/ilpars.fsy" + : 'instr)); +# 738 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : DoubleInstr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'float64)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 155 "../../absil/ilpars.fsy" + (_1 (ILConst.R8 _2)) + ) +# 155 "../../absil/ilpars.fsy" + : 'instr)); +# 750 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : DoubleInstr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'int64)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 157 "../../absil/ilpars.fsy" + (_1 (ILConst.R8 (float _2))) + ) +# 157 "../../absil/ilpars.fsy" + : 'instr)); +# 762 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : TypeInstr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typSpec)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 159 "../../absil/ilpars.fsy" + _1 (resolveCurrentMethodSpecScope _2) + ) +# 159 "../../absil/ilpars.fsy" + : 'instr)); +# 774 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : IntTypeInstr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'int32)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typSpec)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 161 "../../absil/ilpars.fsy" + _1 ( _2,resolveCurrentMethodSpecScope _3) + ) +# 161 "../../absil/ilpars.fsy" + : 'instr)); +# 787 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : ValueTypeInstr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typSpec)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 163 "../../absil/ilpars.fsy" + _1 (resolveCurrentMethodSpecScope _2) + ) +# 163 "../../absil/ilpars.fsy" + : 'instr)); +# 799 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : TokenInstr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typSpec)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 165 "../../absil/ilpars.fsy" + (_1 (ILToken.ILType (resolveCurrentMethodSpecScope _2))) + ) +# 165 "../../absil/ilpars.fsy" + : 'instr)); +# 811 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'id)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 172 "../../absil/ilpars.fsy" + _1 + ) +# 172 "../../absil/ilpars.fsy" + : string)); +# 822 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 174 "../../absil/ilpars.fsy" + _1 + ) +# 174 "../../absil/ilpars.fsy" + : string)); +# 833 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'id)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 176 "../../absil/ilpars.fsy" + _1 + "." + _3 + ) +# 176 "../../absil/ilpars.fsy" + : string)); +# 845 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'slashedName)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 180 "../../absil/ilpars.fsy" + let (enc,nm) = _4 + let aref = findAssemblyRef _2 + ILScopeRef.Assembly aref, enc, nm + ) +# 180 "../../absil/ilpars.fsy" + : 'className)); +# 859 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'slashedName)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 184 "../../absil/ilpars.fsy" + let enc, nm = _1 in (ILScopeRef.Local, enc, nm) + ) +# 184 "../../absil/ilpars.fsy" + : 'className)); +# 870 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 188 "../../absil/ilpars.fsy" + ([],_1) + ) +# 188 "../../absil/ilpars.fsy" + : 'slashedName)); +# 881 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'slashedName)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 190 "../../absil/ilpars.fsy" + let (enc,nm) = _3 in (_1 :: enc, nm) + ) +# 190 "../../absil/ilpars.fsy" + : 'slashedName)); +# 893 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'className)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_actual_tyargs)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 194 "../../absil/ilpars.fsy" + let (a,b,c) = _1 + resolveMethodSpecScopeThen _2 (fun inst -> + noMethodSpecScope ( (mkILTySpec ( (mkILNestedTyRef (a,b,c)), inst)))) + ) +# 194 "../../absil/ilpars.fsy" + : 'typeNameInst)); +# 907 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'className)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 201 "../../absil/ilpars.fsy" + let (a,b,c) = _1 + noMethodSpecScope ( (mkILTySpec ( (mkILNestedTyRef (a,b,c)), []))) + ) +# 201 "../../absil/ilpars.fsy" + : 'typeName)); +# 919 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeName)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 207 "../../absil/ilpars.fsy" + resolveMethodSpecScopeThen _1 (fun tref -> + noMethodSpecScope (mkILBoxedType tref)) + ) +# 207 "../../absil/ilpars.fsy" + : 'typSpec)); +# 931 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : ILType ResolvedAtMethodSpecScope)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 210 "../../absil/ilpars.fsy" + _1 + ) +# 210 "../../absil/ilpars.fsy" + : 'typSpec)); +# 942 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : ILType ResolvedAtMethodSpecScope)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 212 "../../absil/ilpars.fsy" + _2 + ) +# 212 "../../absil/ilpars.fsy" + : 'typSpec)); +# 953 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'callKind)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 217 "../../absil/ilpars.fsy" + Callconv (ILThisConvention.Instance,_2) + ) +# 217 "../../absil/ilpars.fsy" + : 'callConv)); +# 964 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'callKind)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 219 "../../absil/ilpars.fsy" + Callconv (ILThisConvention.InstanceExplicit,_2) + ) +# 219 "../../absil/ilpars.fsy" + : 'callConv)); +# 975 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'callKind)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 221 "../../absil/ilpars.fsy" + Callconv (ILThisConvention.Static,_1) + ) +# 221 "../../absil/ilpars.fsy" + : 'callConv)); +# 986 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 225 "../../absil/ilpars.fsy" + ILArgConvention.Default + ) +# 225 "../../absil/ilpars.fsy" + : 'callKind)); +# 996 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 227 "../../absil/ilpars.fsy" + ILArgConvention.Default + ) +# 227 "../../absil/ilpars.fsy" + : 'callKind)); +# 1006 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 229 "../../absil/ilpars.fsy" + ILArgConvention.VarArg + ) +# 229 "../../absil/ilpars.fsy" + : 'callKind)); +# 1016 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 238 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_String + ) +# 238 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1026 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 240 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_Object + ) +# 240 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1036 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeNameInst)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 242 "../../absil/ilpars.fsy" + resolveMethodSpecScopeThen _2 (fun tspec -> + noMethodSpecScope (mkILBoxedType tspec)) + ) +# 242 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1048 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeNameInst)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 245 "../../absil/ilpars.fsy" + resolveMethodSpecScopeThen _3 (fun tspec -> + noMethodSpecScope (ILType.Value tspec)) + ) +# 245 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1060 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeNameInst)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 248 "../../absil/ilpars.fsy" + resolveMethodSpecScopeThen _2 (fun tspec -> + noMethodSpecScope (ILType.Value tspec)) + ) +# 248 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1072 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : ILType ResolvedAtMethodSpecScope)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 251 "../../absil/ilpars.fsy" + resolveMethodSpecScopeThen _1 (fun ty -> noMethodSpecScope (mkILArr1DTy ty)) + ) +# 251 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1083 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : ILType ResolvedAtMethodSpecScope)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'bounds1)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 253 "../../absil/ilpars.fsy" + resolveMethodSpecScopeThen _1 (fun ty -> noMethodSpecScope (mkILArrTy (ty,ILArrayShape _3))) + ) +# 253 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1095 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : ILType ResolvedAtMethodSpecScope)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 255 "../../absil/ilpars.fsy" + resolveMethodSpecScopeThen _1 (fun ty -> noMethodSpecScope (ILType.Byref ty)) + ) +# 255 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1106 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : ILType ResolvedAtMethodSpecScope)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 257 "../../absil/ilpars.fsy" + resolveMethodSpecScopeThen _1 (fun ty -> noMethodSpecScope (ILType.Ptr ty)) + ) +# 257 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1117 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 259 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_Char + ) +# 259 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1127 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 261 "../../absil/ilpars.fsy" + noMethodSpecScope ILType.Void + ) +# 261 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1137 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 263 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_Bool + ) +# 263 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1147 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 265 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_SByte + ) +# 265 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1157 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 267 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_Int16 + ) +# 267 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1167 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 269 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_Int32 + ) +# 269 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1177 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 271 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_Int64 + ) +# 271 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1187 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 273 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_Single + ) +# 273 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1197 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 275 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_Double + ) +# 275 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1207 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 277 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_Byte + ) +# 277 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1217 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 279 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_UInt16 + ) +# 279 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1227 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 281 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_UInt32 + ) +# 281 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1237 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 283 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_UInt64 + ) +# 283 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1247 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 285 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_Byte + ) +# 285 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1257 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 287 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_UInt16 + ) +# 287 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1267 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 289 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_UInt32 + ) +# 289 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1277 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 291 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_UInt64 + ) +# 291 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1287 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 293 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_IntPtr + ) +# 293 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1297 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 295 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_UIntPtr + ) +# 295 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1307 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 297 "../../absil/ilpars.fsy" + noMethodSpecScope (!parseILGlobals).typ_UIntPtr + ) +# 297 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1317 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'int32)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 300 "../../absil/ilpars.fsy" + noMethodSpecScope (ILType.TypeVar (uint16 ( _2))) + ) +# 300 "../../absil/ilpars.fsy" + : ILType ResolvedAtMethodSpecScope)); +# 1328 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'bound)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 305 "../../absil/ilpars.fsy" + [_1] + ) +# 305 "../../absil/ilpars.fsy" + : 'bounds1)); +# 1339 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'bounds1)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'bound)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 307 "../../absil/ilpars.fsy" + _1 @ [_3] + ) +# 307 "../../absil/ilpars.fsy" + : 'bounds1)); +# 1351 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 311 "../../absil/ilpars.fsy" + (None, None) + ) +# 311 "../../absil/ilpars.fsy" + : 'bound)); +# 1361 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'int32)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 313 "../../absil/ilpars.fsy" + (None, Some _1) + ) +# 313 "../../absil/ilpars.fsy" + : 'bound)); +# 1372 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'int32)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'int32)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 315 "../../absil/ilpars.fsy" + (Some _1, Some (_3 - _1 + 1)) + ) +# 315 "../../absil/ilpars.fsy" + : 'bound)); +# 1384 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'int32)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 317 "../../absil/ilpars.fsy" + (Some _1, None) + ) +# 317 "../../absil/ilpars.fsy" + : 'bound)); +# 1395 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : int32)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'int32)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 324 "../../absil/ilpars.fsy" + (Some _1, Some (_2 - _1 + 1)) + ) +# 324 "../../absil/ilpars.fsy" + : 'bound)); +# 1407 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : int32)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 326 "../../absil/ilpars.fsy" + (Some _1, None) + ) +# 326 "../../absil/ilpars.fsy" + : 'bound)); +# 1418 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 330 "../../absil/ilpars.fsy" + _1 + ) +# 330 "../../absil/ilpars.fsy" + : 'id)); +# 1429 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 332 "../../absil/ilpars.fsy" + _1 + ) +# 332 "../../absil/ilpars.fsy" + : 'id)); +# 1440 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : int64)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 336 "../../absil/ilpars.fsy" + int32 _1 + ) +# 336 "../../absil/ilpars.fsy" + : 'int32)); +# 1451 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : int64)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 340 "../../absil/ilpars.fsy" + _1 + ) +# 340 "../../absil/ilpars.fsy" + : 'int64)); +# 1462 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : double)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 344 "../../absil/ilpars.fsy" + _1 + ) +# 344 "../../absil/ilpars.fsy" + : 'float64)); +# 1473 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'int64)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 346 "../../absil/ilpars.fsy" + System.BitConverter.Int64BitsToDouble _3 + ) +# 346 "../../absil/ilpars.fsy" + : 'float64)); +# 1484 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 350 "../../absil/ilpars.fsy" + noMethodSpecScope [] + ) +# 350 "../../absil/ilpars.fsy" + : 'opt_actual_tyargs)); +# 1494 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'actual_tyargs)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 352 "../../absil/ilpars.fsy" + resolveMethodSpecScopeThen _1 (fun res -> + noMethodSpecScope res) + ) +# 352 "../../absil/ilpars.fsy" + : 'opt_actual_tyargs)); +# 1506 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'actualTypSpecs)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 357 "../../absil/ilpars.fsy" + _2 + ) +# 357 "../../absil/ilpars.fsy" + : 'actual_tyargs)); +# 1517 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typSpec)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 361 "../../absil/ilpars.fsy" + resolveMethodSpecScopeThen _1 (fun res -> + noMethodSpecScope [ res]) + ) +# 361 "../../absil/ilpars.fsy" + : 'actualTypSpecs)); +# 1529 "ilpars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'actualTypSpecs)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typSpec)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 364 "../../absil/ilpars.fsy" + resolveMethodSpecScopeThen _1 (fun x -> + resolveMethodSpecScopeThen _3 (fun y -> + noMethodSpecScope (x @ [ y]))) + ) +# 364 "../../absil/ilpars.fsy" + : 'actualTypSpecs)); +|] +# 1544 "ilpars.fs" +let tables () : Internal.Utilities.Text.Parsing.Tables<_> = + { reductions= _fsyacc_reductions (); + endOfInputTag = _fsyacc_endOfInputTag; + tagOfToken = tagOfToken; + dataOfToken = _fsyacc_dataOfToken; + actionTableElements = _fsyacc_actionTableElements; + actionTableRowOffsets = _fsyacc_actionTableRowOffsets; + stateToProdIdxsTableElements = _fsyacc_stateToProdIdxsTableElements; + stateToProdIdxsTableRowOffsets = _fsyacc_stateToProdIdxsTableRowOffsets; + reductionSymbolCounts = _fsyacc_reductionSymbolCounts; + immediateActions = _fsyacc_immediateActions; + gotos = _fsyacc_gotos; + sparseGotoTableRowOffsets = _fsyacc_sparseGotoTableRowOffsets; + tagOfErrorTerminal = _fsyacc_tagOfErrorTerminal; + parseError = (fun (ctxt:Internal.Utilities.Text.Parsing.ParseErrorContext<_>) -> + match parse_error_rich with + | Some f -> f ctxt + | None -> parse_error ctxt.Message); + numTerminals = 67; + productionToNonTerminalTable = _fsyacc_productionToNonTerminalTable } +let engine lexer lexbuf startState = (tables ()).Interpret(lexer, lexbuf, startState) +let ilInstrs lexer lexbuf : ILInstr array = + Microsoft.FSharp.Core.Operators.unbox ((tables ()).Interpret(lexer, lexbuf, 0)) +let ilType lexer lexbuf : ILType = + Microsoft.FSharp.Core.Operators.unbox ((tables ()).Interpret(lexer, lexbuf, 2)) diff --git a/src/fsharp/FSharp.Compiler.Private/ilpars.fsi b/src/fsharp/FSharp.Compiler.Private/ilpars.fsi new file mode 100644 index 0000000000..db5a8b6ce6 --- /dev/null +++ b/src/fsharp/FSharp.Compiler.Private/ilpars.fsi @@ -0,0 +1,175 @@ +// Signature file for parser generated by fsyacc +module internal FSharp.Compiler.AbstractIL.Internal.AsciiParser +open FSharp.Compiler.AbstractIL +type token = + | VOID + | VARARG + | VALUETYPE + | VALUE + | UNSIGNED + | UNMANAGED + | UINT8 + | UINT64 + | UINT32 + | UINT16 + | UINT + | STRING + | STAR + | SLASH + | RPAREN + | RBRACK + | PLUS + | OBJECT + | NATIVE + | METHOD + | LPAREN + | LESS + | LBRACK + | INT8 + | INT64 + | INT32 + | INT16 + | INT + | INSTANCE + | GREATER + | FLOAT64 + | FLOAT32 + | FIELD + | EXPLICIT + | EOF + | ELIPSES + | DOT + | DEFAULT + | DCOLON + | COMMA + | CLASS + | CHAR + | BYTEARRAY + | BOOL + | BANG + | AMP + | VAL_SQSTRING of (string) + | VAL_QSTRING of (string) + | VAL_DOTTEDNAME of (string) + | VAL_ID of (string) + | VAL_HEXBYTE of (int) + | INSTR_VALUETYPE of (ValueTypeInstr) + | INSTR_INT_TYPE of (IntTypeInstr) + | INSTR_TYPE of (TypeInstr) + | INSTR_TOK of (TokenInstr) + | INSTR_STRING of (StringInstr) + | INSTR_NONE of (NoArgInstr) + | INSTR_R of (DoubleInstr) + | INSTR_I8 of (Int64Instr) + | INSTR_I32_I32 of (Int32Int32Instr) + | INSTR_I of (Int32Instr) + | VAL_FLOAT64 of (double) + | VAL_INT32_ELIPSES of (int32) + | VAL_INT64 of (int64) +type tokenId = + | TOKEN_VOID + | TOKEN_VARARG + | TOKEN_VALUETYPE + | TOKEN_VALUE + | TOKEN_UNSIGNED + | TOKEN_UNMANAGED + | TOKEN_UINT8 + | TOKEN_UINT64 + | TOKEN_UINT32 + | TOKEN_UINT16 + | TOKEN_UINT + | TOKEN_STRING + | TOKEN_STAR + | TOKEN_SLASH + | TOKEN_RPAREN + | TOKEN_RBRACK + | TOKEN_PLUS + | TOKEN_OBJECT + | TOKEN_NATIVE + | TOKEN_METHOD + | TOKEN_LPAREN + | TOKEN_LESS + | TOKEN_LBRACK + | TOKEN_INT8 + | TOKEN_INT64 + | TOKEN_INT32 + | TOKEN_INT16 + | TOKEN_INT + | TOKEN_INSTANCE + | TOKEN_GREATER + | TOKEN_FLOAT64 + | TOKEN_FLOAT32 + | TOKEN_FIELD + | TOKEN_EXPLICIT + | TOKEN_EOF + | TOKEN_ELIPSES + | TOKEN_DOT + | TOKEN_DEFAULT + | TOKEN_DCOLON + | TOKEN_COMMA + | TOKEN_CLASS + | TOKEN_CHAR + | TOKEN_BYTEARRAY + | TOKEN_BOOL + | TOKEN_BANG + | TOKEN_AMP + | TOKEN_VAL_SQSTRING + | TOKEN_VAL_QSTRING + | TOKEN_VAL_DOTTEDNAME + | TOKEN_VAL_ID + | TOKEN_VAL_HEXBYTE + | TOKEN_INSTR_VALUETYPE + | TOKEN_INSTR_INT_TYPE + | TOKEN_INSTR_TYPE + | TOKEN_INSTR_TOK + | TOKEN_INSTR_STRING + | TOKEN_INSTR_NONE + | TOKEN_INSTR_R + | TOKEN_INSTR_I8 + | TOKEN_INSTR_I32_I32 + | TOKEN_INSTR_I + | TOKEN_VAL_FLOAT64 + | TOKEN_VAL_INT32_ELIPSES + | TOKEN_VAL_INT64 + | TOKEN_end_of_input + | TOKEN_error +type nonTerminalId = + | NONTERM__startilInstrs + | NONTERM__startilType + | NONTERM_ilType + | NONTERM_ilInstrs + | NONTERM_compQstring + | NONTERM_methodName + | NONTERM_instrs2 + | NONTERM_instr + | NONTERM_name1 + | NONTERM_className + | NONTERM_slashedName + | NONTERM_typeNameInst + | NONTERM_typeName + | NONTERM_typSpec + | NONTERM_callConv + | NONTERM_callKind + | NONTERM_typ + | NONTERM_bounds1 + | NONTERM_bound + | NONTERM_id + | NONTERM_int32 + | NONTERM_int64 + | NONTERM_float64 + | NONTERM_opt_actual_tyargs + | NONTERM_actual_tyargs + | NONTERM_actualTypSpecs +/// This function maps tokens to integer indexes +val tagOfToken: token -> int + +/// This function maps integer indexes to symbolic token ids +val tokenTagToTokenId: int -> tokenId + +/// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that production +val prodIdxToNonTerminal: int -> nonTerminalId + +/// This function gets the name of a token as a string +val token_to_string: token -> string +val ilInstrs : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> (ILInstr array) +val ilType : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> (ILType) diff --git a/src/fsharp/FSharp.Compiler.Private/lex.fs b/src/fsharp/FSharp.Compiler.Private/lex.fs new file mode 100644 index 0000000000..4cd5958fc7 --- /dev/null +++ b/src/fsharp/FSharp.Compiler.Private/lex.fs @@ -0,0 +1,3072 @@ +# 3 "../lex.fsl" + + +module internal FSharp.Compiler.Lexer + +//------------------------------------------------------------------------ +// The Lexer. Some of the complication arises from the fact it is +// reused by the Visual Studio mode to do partial lexing reporting +// whitespace etc. +//----------------------------------------------------------------------- + +open System +open System.Globalization +open System.Text +open Internal.Utilities + +open FSharp.Compiler.AbstractIL +open FSharp.Compiler.AbstractIL.Internal +open FSharp.Compiler.AbstractIL.Internal.Library +open FSharp.Compiler + +open FSharp.Compiler.Range +open FSharp.Compiler.Ast +open FSharp.Compiler.ErrorLogger +open FSharp.Compiler.Features +open FSharp.Compiler.Parser +open FSharp.Compiler.Lexhelp +open FSharp.Compiler.Lib +open Internal.Utilities.Text.Lexing + +let lexeme (lexbuf : UnicodeLexing.Lexbuf) = UnicodeLexing.Lexbuf.LexemeString lexbuf + +let trimBoth (s:string) n m = s.Substring(n, s.Length - (n+m)) +let lexemeTrimBoth lexbuf n m = trimBoth (lexeme lexbuf) n m +let lexemeTrimRight lexbuf n = lexemeTrimBoth lexbuf 0 n +let lexemeTrimLeft lexbuf n = lexemeTrimBoth lexbuf n 0 + +let fail args (lexbuf:UnicodeLexing.Lexbuf) msg dflt = + let m = lexbuf.LexemeRange + args.errorLogger.ErrorR(Error(msg,m)) + dflt + +//-------------------------- +// Integer parsing + +// Parsing integers is common in bootstrap runs (parsing +// the parser tables, no doubt). So this is an optimized +// version of the F# core library parsing code with the call to "Trim" +// removed, which appears in profiling runs as a small but significant cost. + +let getSign32 (s:string) (p:byref) l = + if (l >= p + 1 && s.[p] = '-') + then p <- p + 1; -1 + else 1 + +let isOXB c = + let c = Char.ToLowerInvariant c + c = 'x' || c = 'o' || c = 'b' + +let is0OXB (s:string) p l = + l >= p + 2 && s.[p] = '0' && isOXB s.[p+1] +let get0OXB (s:string) (p:byref) l = + if is0OXB s p l + then let r = Char.ToLowerInvariant s.[p+1] in p <- p + 2; r + else 'd' + +let formatError() = raise (new System.FormatException(SR.GetString("bad format string"))) + +let parseBinaryUInt64 (s:string) = + Convert.ToUInt64(s, 2) + +let parseOctalUInt64 (s:string) = + Convert.ToUInt64(s, 8) + +let removeUnderscores (s:string) = + match s with + | null -> null + | s -> s.Replace("_", "") + +let parseInt32 (s:string) = + let s = removeUnderscores s + let l = s.Length + let mutable p = 0 + let sign = getSign32 s &p l + let specifier = get0OXB s &p l + match Char.ToLower(specifier,CultureInfo.InvariantCulture) with + | 'x' -> sign * (int32 (Convert.ToUInt32(UInt64.Parse(s.Substring(p), NumberStyles.AllowHexSpecifier,CultureInfo.InvariantCulture)))) + | 'b' -> sign * (int32 (Convert.ToUInt32(parseBinaryUInt64 (s.Substring(p))))) + | 'o' -> sign * (int32 (Convert.ToUInt32(parseOctalUInt64 (s.Substring(p))))) + | _ -> Int32.Parse(s, NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture) + +let lexemeTrimRightToInt32 args lexbuf n = + try parseInt32 (lexemeTrimRight lexbuf n) + with _ -> fail args lexbuf (FSComp.SR.lexOutsideIntegerRange()) 0 + +//-------------------------- +// Checks + +let checkExprOp (lexbuf:UnicodeLexing.Lexbuf) = + if String.contains (lexeme lexbuf) ':' then + deprecatedWithError (FSComp.SR.lexCharNotAllowedInOperatorNames(":")) lexbuf.LexemeRange + if String.contains (lexeme lexbuf) '$' then + deprecatedWithError (FSComp.SR.lexCharNotAllowedInOperatorNames("$")) lexbuf.LexemeRange + +let unexpectedChar lexbuf = + LEX_FAILURE (FSComp.SR.lexUnexpectedChar(lexeme lexbuf)) + +let startString args (lexbuf: UnicodeLexing.Lexbuf) = + let buf = ByteBuffer.Create 100 + let m = lexbuf.LexemeRange + let startp = lexbuf.StartPos + let fin = (fun _m2 b s -> + // Adjust the start-of-token mark back to the true start of the token + lexbuf.StartPos <- startp + if b then + if Lexhelp.stringBufferIsBytes buf then + BYTEARRAY (Lexhelp.stringBufferAsBytes buf) + else ( + fail args lexbuf (FSComp.SR.lexByteArrayCannotEncode()) () + BYTEARRAY (Lexhelp.stringBufferAsBytes buf) + ) + else + STRING (Lexhelp.stringBufferAsString s)) + buf,fin,m + +// Utility functions for processing XML documentation + +let trySaveXmlDoc lexbuf (buff:option) = + match buff with + | None -> () + | Some sb -> LexbufLocalXmlDocStore.SaveXmlDocLine (lexbuf, sb.ToString(), posOfLexPosition lexbuf.StartPos) + +let tryAppendXmlDoc (buff:option) (s:string) = + match buff with + | None -> () + | Some sb -> ignore(sb.Append s) + +// Utilities for parsing #if/#else/#endif + +let shouldStartLine args lexbuf (m:range) err tok = + if (m.StartColumn <> 0) then fail args lexbuf err tok + else tok + +let shouldStartFile args lexbuf (m:range) err tok = + if (m.StartColumn <> 0 || m.StartLine <> 1) then fail args lexbuf err tok + else tok + +let evalIfDefExpression startPos isFeatureSupported args (lookup:string->bool) (lexed:string) = + let lexbuf = LexBuffer.FromChars (isFeatureSupported, lexed.ToCharArray ()) + lexbuf.StartPos <- startPos + lexbuf.EndPos <- startPos + let tokenStream = FSharp.Compiler.PPLexer.tokenstream args + let expr = FSharp.Compiler.PPParser.start tokenStream lexbuf + LexerIfdefEval lookup expr + + +# 157 "lex.fs" +let trans : uint16[] array = + [| + (* State 0 *) + [| 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 2us; 5us; 5us; 3us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 1us; 5us; 5us; 5us; 5us; 5us; 4us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 6us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 7us; |]; + (* State 1 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 2 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 3 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 30us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 4 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 10us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 5 *) + [| 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 65535us; 8us; 8us; 65535us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 65535us; 8us; 8us; 8us; 8us; 8us; 65535us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 65535us; |]; + (* State 6 *) + [| 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 65535us; 8us; 8us; 65535us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 65535us; 8us; 8us; 8us; 8us; 8us; 65535us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 9us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 65535us; |]; + (* State 7 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 8 *) + [| 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 65535us; 8us; 8us; 65535us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 65535us; 8us; 8us; 8us; 8us; 8us; 65535us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 65535us; |]; + (* State 9 *) + [| 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 65535us; 8us; 8us; 65535us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 65535us; 8us; 8us; 8us; 8us; 8us; 65535us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 8us; 65535us; |]; + (* State 10 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 11us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 11 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 12us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 12 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 13us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 13 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 14us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 14 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 15us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 15 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 16 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 17us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 18us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 17 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 25us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 18 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 19us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 19 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 20us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 20 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 21us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 21 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 22us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 22 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 23us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 23 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 24us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 24 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 25 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 26us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 26 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 27us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 27 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 28us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 28 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 29us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 29 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 30 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 31 *) + [| 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 36us; 37us; 41us; 41us; 38us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 36us; 41us; 32us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 35us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 34us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 41us; 41us; 41us; 41us; 33us; 41us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 41us; 41us; 41us; 41us; 41us; 33us; 33us; 33us; 33us; 33us; 41us; 41us; 41us; 34us; 33us; 41us; 41us; 41us; 41us; 41us; 41us; 40us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 41us; 39us; |]; + (* State 32 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 59us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 33 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 58us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 65535us; 65535us; 65535us; 65535us; 58us; 65535us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 65535us; 65535us; 65535us; 65535us; 65535us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 65535us; 58us; 58us; 65535us; 65535us; 65535us; 65535us; 65535us; 58us; 65535us; 65535us; 58us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 34 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 45us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 35 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 48us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 47us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 46us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 45us; 65535us; 65535us; 48us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 47us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 46us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 36 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 43us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 43us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 37 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 38 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 42us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 39 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 40 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 41us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 41 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 42 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 43 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 43us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 43us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 44 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 45us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 45 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 45us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 44us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 46 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 55us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 55us; 55us; 55us; 55us; 55us; 55us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 55us; 55us; 55us; 55us; 55us; 55us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 47 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 52us; 52us; 52us; 52us; 52us; 52us; 52us; 52us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 48 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 49us; 49us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 49 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 50us; 50us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 51us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 50 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 50us; 50us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 51us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 51 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 50us; 50us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 51us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 52 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 54us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 53 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 54us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 54 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 53us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 54us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 55 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 56us; 56us; 56us; 56us; 56us; 56us; 56us; 56us; 56us; 56us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 56us; 56us; 56us; 56us; 56us; 56us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 57us; 65535us; 56us; 56us; 56us; 56us; 56us; 56us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 56 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 56us; 56us; 56us; 56us; 56us; 56us; 56us; 56us; 56us; 56us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 56us; 56us; 56us; 56us; 56us; 56us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 57us; 65535us; 56us; 56us; 56us; 56us; 56us; 56us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 57 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 56us; 56us; 56us; 56us; 56us; 56us; 56us; 56us; 56us; 56us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 56us; 56us; 56us; 56us; 56us; 56us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 57us; 65535us; 56us; 56us; 56us; 56us; 56us; 56us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 58 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 58us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 65535us; 65535us; 65535us; 65535us; 58us; 65535us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 65535us; 65535us; 65535us; 65535us; 65535us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 65535us; 58us; 58us; 65535us; 65535us; 65535us; 65535us; 65535us; 58us; 65535us; 65535us; 58us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 59 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 60us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 60 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 61 *) + [| 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 66us; 67us; 71us; 71us; 68us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 66us; 71us; 62us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 65us; 64us; 64us; 64us; 64us; 64us; 64us; 64us; 64us; 64us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 71us; 71us; 71us; 71us; 63us; 71us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 63us; 71us; 71us; 71us; 71us; 71us; 63us; 63us; 63us; 63us; 63us; 71us; 71us; 71us; 64us; 63us; 71us; 71us; 71us; 71us; 71us; 71us; 70us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 71us; 69us; |]; + (* State 62 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 89us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 63 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 88us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 65535us; 65535us; 65535us; 65535us; 88us; 65535us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 65535us; 65535us; 65535us; 65535us; 65535us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 65535us; 88us; 88us; 65535us; 65535us; 65535us; 65535us; 65535us; 88us; 65535us; 65535us; 88us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 64 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 75us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 74us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 65 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 78us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 77us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 76us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 75us; 65535us; 65535us; 78us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 77us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 76us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 74us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 66 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 73us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 73us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 67 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 68 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 72us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 69 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 70 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 71us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 71 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 72 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 73 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 73us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 73us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 74 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 75us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 74us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 75 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 74us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 75us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 74us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 76 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 85us; 85us; 85us; 85us; 85us; 85us; 85us; 85us; 85us; 85us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 85us; 85us; 85us; 85us; 85us; 85us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 85us; 85us; 85us; 85us; 85us; 85us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 77 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 82us; 82us; 82us; 82us; 82us; 82us; 82us; 82us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 78 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 79us; 79us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 79 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 80us; 80us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 81us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 80 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 80us; 80us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 81us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 81 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 80us; 80us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 81us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 82 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 83us; 83us; 83us; 83us; 83us; 83us; 83us; 83us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 84us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 83 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 83us; 83us; 83us; 83us; 83us; 83us; 83us; 83us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 84us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 84 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 83us; 83us; 83us; 83us; 83us; 83us; 83us; 83us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 84us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 85 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 86us; 86us; 86us; 86us; 86us; 86us; 86us; 86us; 86us; 86us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 86us; 86us; 86us; 86us; 86us; 86us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 87us; 65535us; 86us; 86us; 86us; 86us; 86us; 86us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 86 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 86us; 86us; 86us; 86us; 86us; 86us; 86us; 86us; 86us; 86us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 86us; 86us; 86us; 86us; 86us; 86us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 87us; 65535us; 86us; 86us; 86us; 86us; 86us; 86us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 87 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 86us; 86us; 86us; 86us; 86us; 86us; 86us; 86us; 86us; 86us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 86us; 86us; 86us; 86us; 86us; 86us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 87us; 65535us; 86us; 86us; 86us; 86us; 86us; 86us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 88 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 88us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 65535us; 65535us; 65535us; 65535us; 88us; 65535us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 65535us; 65535us; 65535us; 65535us; 65535us; 88us; 88us; 88us; 88us; 88us; 88us; 88us; 65535us; 88us; 88us; 65535us; 65535us; 65535us; 65535us; 65535us; 88us; 65535us; 65535us; 88us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 89 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 90 *) + [| 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 95us; 97us; 101us; 101us; 98us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 95us; 101us; 96us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 94us; 93us; 93us; 93us; 93us; 93us; 93us; 93us; 93us; 93us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 101us; 91us; 101us; 101us; 92us; 101us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 92us; 101us; 101us; 101us; 101us; 101us; 92us; 92us; 92us; 92us; 92us; 101us; 101us; 101us; 93us; 92us; 101us; 101us; 101us; 101us; 101us; 101us; 100us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 101us; 99us; |]; + (* State 91 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 119us; 65535us; 65535us; 120us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 65535us; 65535us; 65535us; 65535us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 122us; 122us; 122us; 122us; 122us; 122us; 122us; 122us; 122us; 122us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 125us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 65535us; 65535us; 65535us; 65535us; 121us; 121us; 65535us; 65535us; 65535us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 65535us; 65535us; 65535us; 121us; 65535us; 121us; 124us; 121us; 65535us; 123us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 122us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 92 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 118us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 65535us; 65535us; 65535us; 65535us; 118us; 65535us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 65535us; 65535us; 65535us; 65535us; 65535us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 65535us; 118us; 118us; 65535us; 65535us; 65535us; 65535us; 65535us; 118us; 65535us; 65535us; 118us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 93 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 105us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 104us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 94 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 108us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 107us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 106us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 105us; 65535us; 65535us; 108us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 107us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 106us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 104us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 95 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 103us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 103us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 96 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 97 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 98 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 102us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 99 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 100 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 101us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 101 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 102 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 103 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 103us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 103us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 104 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 105us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 104us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 105 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 104us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 105us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 104us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 106 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 115us; 115us; 115us; 115us; 115us; 115us; 115us; 115us; 115us; 115us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 115us; 115us; 115us; 115us; 115us; 115us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 115us; 115us; 115us; 115us; 115us; 115us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 107 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 112us; 112us; 112us; 112us; 112us; 112us; 112us; 112us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 108 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 109us; 109us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 109 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 110us; 110us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 111us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 110 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 110us; 110us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 111us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 111 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 110us; 110us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 111us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 112 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 113us; 113us; 113us; 113us; 113us; 113us; 113us; 113us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 114us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 113 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 113us; 113us; 113us; 113us; 113us; 113us; 113us; 113us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 114us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 114 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 113us; 113us; 113us; 113us; 113us; 113us; 113us; 113us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 114us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 115 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 116us; 116us; 116us; 116us; 116us; 116us; 116us; 116us; 116us; 116us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 116us; 116us; 116us; 116us; 116us; 116us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 117us; 65535us; 116us; 116us; 116us; 116us; 116us; 116us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 116 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 116us; 116us; 116us; 116us; 116us; 116us; 116us; 116us; 116us; 116us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 116us; 116us; 116us; 116us; 116us; 116us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 117us; 65535us; 116us; 116us; 116us; 116us; 116us; 116us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 117 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 116us; 116us; 116us; 116us; 116us; 116us; 116us; 116us; 116us; 116us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 116us; 116us; 116us; 116us; 116us; 116us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 117us; 65535us; 116us; 116us; 116us; 116us; 116us; 116us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 118 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 118us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 65535us; 65535us; 65535us; 65535us; 118us; 65535us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 65535us; 65535us; 65535us; 65535us; 65535us; 118us; 118us; 118us; 118us; 118us; 118us; 118us; 65535us; 118us; 118us; 65535us; 65535us; 65535us; 65535us; 65535us; 118us; 65535us; 65535us; 118us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 119 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 138us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 138us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 120 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 119us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 121 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 122 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 137us; 137us; 137us; 137us; 137us; 137us; 137us; 137us; 137us; 137us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 137us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 123 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 136us; 136us; 136us; 136us; 136us; 136us; 136us; 136us; 136us; 136us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 136us; 136us; 136us; 136us; 136us; 136us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 136us; 136us; 136us; 136us; 136us; 136us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 124 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 133us; 133us; 133us; 133us; 133us; 133us; 133us; 133us; 133us; 133us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 133us; 133us; 133us; 133us; 133us; 133us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 133us; 133us; 133us; 133us; 133us; 133us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 125 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 126us; 126us; 126us; 126us; 126us; 126us; 126us; 126us; 126us; 126us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 126us; 126us; 126us; 126us; 126us; 126us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 126us; 126us; 126us; 126us; 126us; 126us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 126 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 127us; 127us; 127us; 127us; 127us; 127us; 127us; 127us; 127us; 127us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 127us; 127us; 127us; 127us; 127us; 127us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 127us; 127us; 127us; 127us; 127us; 127us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 127 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 128us; 128us; 128us; 128us; 128us; 128us; 128us; 128us; 128us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 128us; 128us; 128us; 128us; 128us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 128us; 128us; 128us; 128us; 128us; 128us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 128 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 129us; 129us; 129us; 129us; 129us; 129us; 129us; 129us; 129us; 129us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 129us; 129us; 129us; 129us; 129us; 129us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 129us; 129us; 129us; 129us; 129us; 129us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 129 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 130us; 130us; 130us; 130us; 130us; 130us; 130us; 130us; 130us; 130us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 130us; 130us; 130us; 130us; 130us; 130us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 130us; 130us; 130us; 130us; 130us; 130us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 130 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 131us; 131us; 131us; 131us; 131us; 131us; 131us; 131us; 131us; 131us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 131us; 131us; 131us; 131us; 131us; 131us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 131us; 131us; 131us; 131us; 131us; 131us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 131 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 132us; 132us; 132us; 132us; 132us; 132us; 132us; 132us; 132us; 132us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 132us; 132us; 132us; 132us; 132us; 132us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 132us; 132us; 132us; 132us; 132us; 132us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 132 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 121us; 121us; 121us; 121us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 121us; 121us; 121us; 121us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 133 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 134us; 134us; 134us; 134us; 134us; 134us; 134us; 134us; 134us; 134us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 134us; 134us; 134us; 134us; 134us; 134us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 134us; 134us; 134us; 134us; 134us; 134us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 134 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 135us; 135us; 135us; 135us; 135us; 135us; 135us; 135us; 135us; 135us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 135us; 135us; 135us; 135us; 135us; 135us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 135us; 135us; 135us; 135us; 135us; 135us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 135 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 121us; 121us; 121us; 121us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 121us; 121us; 121us; 121us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 136 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 121us; 121us; 121us; 121us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 121us; 121us; 121us; 121us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 137 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 138 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 138us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 138us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 139 *) + [| 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 147us; 144us; 148us; 148us; 145us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 147us; 148us; 141us; 148us; 148us; 148us; 148us; 140us; 143us; 151us; 146us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 142us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 149us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 148us; 150us; |]; + (* State 140 *) + [| 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 65535us; 65535us; 65535us; 162us; 162us; 65535us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 163us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 162us; 65535us; |]; + (* State 141 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 160us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 142 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 159us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 143 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 157us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 144 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 145 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 156us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 146 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 155us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 147 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 154us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 154us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 148 *) + [| 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; 65535us; 152us; 152us; 65535us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; 152us; 65535us; 152us; 152us; 152us; 152us; 65535us; 65535us; 65535us; 65535us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; |]; + (* State 149 *) + [| 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; 65535us; 152us; 152us; 65535us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; 152us; 65535us; 152us; 152us; 152us; 152us; 65535us; 65535us; 65535us; 65535us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 153us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; |]; + (* State 150 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 151 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 152 *) + [| 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; 65535us; 152us; 152us; 65535us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; 152us; 65535us; 152us; 152us; 152us; 152us; 65535us; 65535us; 65535us; 65535us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; |]; + (* State 153 *) + [| 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; 65535us; 152us; 152us; 65535us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; 152us; 65535us; 152us; 152us; 152us; 152us; 65535us; 65535us; 65535us; 65535us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 152us; 65535us; |]; + (* State 154 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 154us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 154us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 155 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 156 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 157 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 158us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 158 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 159 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 160 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 161us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 161 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 162 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 164us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 163 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 162us; 65535us; 65535us; 65535us; 65535us; 162us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 162us; 65535us; 65535us; 65535us; 65535us; 162us; 162us; 65535us; 65535us; 65535us; 162us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 162us; 65535us; 65535us; 65535us; 162us; 65535us; 162us; 65535us; 162us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 164 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 165 *) + [| 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 170us; 166us; 169us; 169us; 167us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 172us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 171us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 169us; 168us; |]; + (* State 166 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 167 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 177us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 168 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 169 *) + [| 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 65535us; 174us; 174us; 65535us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 65535us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 65535us; |]; + (* State 170 *) + [| 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 176us; 65535us; 174us; 174us; 65535us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 173us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 65535us; |]; + (* State 171 *) + [| 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 65535us; 174us; 174us; 65535us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 65535us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 175us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 65535us; |]; + (* State 172 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 173us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 173us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 173 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 173us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 173us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 174 *) + [| 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 65535us; 174us; 174us; 65535us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 65535us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 65535us; |]; + (* State 175 *) + [| 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 65535us; 174us; 174us; 65535us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 65535us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 65535us; |]; + (* State 176 *) + [| 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 176us; 65535us; 174us; 174us; 65535us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 173us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 174us; 65535us; |]; + (* State 177 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 178 *) + [| 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 185us; 180us; 188us; 188us; 181us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 185us; 188us; 179us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 184us; 183us; 183us; 183us; 183us; 183us; 183us; 183us; 183us; 183us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 188us; 188us; 188us; 188us; 182us; 188us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 188us; 188us; 188us; 188us; 188us; 182us; 182us; 182us; 182us; 182us; 188us; 188us; 188us; 183us; 182us; 188us; 188us; 188us; 188us; 188us; 188us; 187us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 188us; 186us; |]; + (* State 179 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 206us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 180 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 181 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 205us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 182 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 204us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 65535us; 65535us; 65535us; 65535us; 204us; 65535us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 65535us; 65535us; 65535us; 65535us; 65535us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 65535us; 204us; 204us; 65535us; 65535us; 65535us; 65535us; 65535us; 204us; 65535us; 65535us; 204us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 183 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 191us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 190us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 184 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 194us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 193us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 192us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 191us; 65535us; 65535us; 194us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 193us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 192us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 190us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 185 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 189us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 189us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 186 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 187 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 188us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 188 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 189 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 189us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 189us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 190 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 191us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 190us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 191 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 190us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 191us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 190us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 192 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 201us; 201us; 201us; 201us; 201us; 201us; 201us; 201us; 201us; 201us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 201us; 201us; 201us; 201us; 201us; 201us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 201us; 201us; 201us; 201us; 201us; 201us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 193 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 198us; 198us; 198us; 198us; 198us; 198us; 198us; 198us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 194 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 195us; 195us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 195 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 196us; 196us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 197us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 196 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 196us; 196us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 197us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 197 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 196us; 196us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 197us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 198 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 199us; 199us; 199us; 199us; 199us; 199us; 199us; 199us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 200us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 199 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 199us; 199us; 199us; 199us; 199us; 199us; 199us; 199us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 200us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 200 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 199us; 199us; 199us; 199us; 199us; 199us; 199us; 199us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 200us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 201 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 202us; 202us; 202us; 202us; 202us; 202us; 202us; 202us; 202us; 202us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 202us; 202us; 202us; 202us; 202us; 202us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 203us; 65535us; 202us; 202us; 202us; 202us; 202us; 202us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 202 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 202us; 202us; 202us; 202us; 202us; 202us; 202us; 202us; 202us; 202us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 202us; 202us; 202us; 202us; 202us; 202us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 203us; 65535us; 202us; 202us; 202us; 202us; 202us; 202us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 203 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 202us; 202us; 202us; 202us; 202us; 202us; 202us; 202us; 202us; 202us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 202us; 202us; 202us; 202us; 202us; 202us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 203us; 65535us; 202us; 202us; 202us; 202us; 202us; 202us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 204 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 204us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 65535us; 65535us; 65535us; 65535us; 204us; 65535us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 65535us; 65535us; 65535us; 65535us; 65535us; 204us; 204us; 204us; 204us; 204us; 204us; 204us; 65535us; 204us; 204us; 65535us; 65535us; 65535us; 65535us; 65535us; 204us; 65535us; 65535us; 204us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 205 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 206 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 207us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 207 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 208 *) + [| 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 215us; 210us; 218us; 218us; 211us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 215us; 218us; 209us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 214us; 213us; 213us; 213us; 213us; 213us; 213us; 213us; 213us; 213us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 218us; 218us; 218us; 218us; 212us; 218us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 212us; 218us; 218us; 218us; 218us; 218us; 212us; 212us; 212us; 212us; 212us; 218us; 218us; 218us; 213us; 212us; 218us; 218us; 218us; 218us; 218us; 218us; 217us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 218us; 216us; |]; + (* State 209 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 236us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 237us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 210 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 211 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 235us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 212 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 234us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 65535us; 65535us; 65535us; 65535us; 234us; 65535us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 65535us; 65535us; 65535us; 65535us; 65535us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 65535us; 234us; 234us; 65535us; 65535us; 65535us; 65535us; 65535us; 234us; 65535us; 65535us; 234us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 213 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 221us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 220us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 214 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 224us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 223us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 222us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 221us; 65535us; 65535us; 224us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 223us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 222us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 220us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 215 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 219us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 219us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 216 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 217 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 218us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 218 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 219 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 219us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 219us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 220 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 221us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 220us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 221 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 220us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 221us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 220us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 222 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 231us; 231us; 231us; 231us; 231us; 231us; 231us; 231us; 231us; 231us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 231us; 231us; 231us; 231us; 231us; 231us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 231us; 231us; 231us; 231us; 231us; 231us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 223 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 228us; 228us; 228us; 228us; 228us; 228us; 228us; 228us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 224 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 225us; 225us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 225 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 226us; 226us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 227us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 226 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 226us; 226us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 227us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 227 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 226us; 226us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 227us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 228 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 229us; 229us; 229us; 229us; 229us; 229us; 229us; 229us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 230us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 229 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 229us; 229us; 229us; 229us; 229us; 229us; 229us; 229us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 230us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 230 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 229us; 229us; 229us; 229us; 229us; 229us; 229us; 229us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 230us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 231 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 232us; 232us; 232us; 232us; 232us; 232us; 232us; 232us; 232us; 232us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 232us; 232us; 232us; 232us; 232us; 232us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 233us; 65535us; 232us; 232us; 232us; 232us; 232us; 232us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 232 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 232us; 232us; 232us; 232us; 232us; 232us; 232us; 232us; 232us; 232us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 232us; 232us; 232us; 232us; 232us; 232us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 233us; 65535us; 232us; 232us; 232us; 232us; 232us; 232us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 233 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 232us; 232us; 232us; 232us; 232us; 232us; 232us; 232us; 232us; 232us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 232us; 232us; 232us; 232us; 232us; 232us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 233us; 65535us; 232us; 232us; 232us; 232us; 232us; 232us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 234 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 234us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 65535us; 65535us; 65535us; 65535us; 234us; 65535us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 65535us; 65535us; 65535us; 65535us; 65535us; 234us; 234us; 234us; 234us; 234us; 234us; 234us; 65535us; 234us; 234us; 65535us; 65535us; 65535us; 65535us; 65535us; 234us; 65535us; 65535us; 234us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 235 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 236 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 237 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 238 *) + [| 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 246us; 241us; 249us; 249us; 242us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 246us; 249us; 240us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 245us; 244us; 244us; 244us; 244us; 244us; 244us; 244us; 244us; 244us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 249us; 239us; 249us; 249us; 243us; 249us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 243us; 249us; 249us; 249us; 249us; 249us; 243us; 243us; 243us; 243us; 243us; 249us; 249us; 249us; 244us; 243us; 249us; 249us; 249us; 249us; 249us; 249us; 248us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 249us; 247us; |]; + (* State 239 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 268us; 65535us; 65535us; 269us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 270us; 65535us; 65535us; 65535us; 65535us; 270us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 271us; 271us; 271us; 271us; 271us; 271us; 271us; 271us; 271us; 271us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 274us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 270us; 65535us; 65535us; 65535us; 65535us; 270us; 270us; 65535us; 65535us; 65535us; 270us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 270us; 65535us; 65535us; 65535us; 270us; 65535us; 270us; 273us; 270us; 65535us; 272us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 271us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 240 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 267us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 241 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 242 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 266us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 243 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 265us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 65535us; 65535us; 65535us; 65535us; 265us; 65535us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 65535us; 65535us; 65535us; 65535us; 65535us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 65535us; 265us; 265us; 65535us; 65535us; 65535us; 65535us; 65535us; 265us; 65535us; 65535us; 265us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 244 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 252us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 251us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 245 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 254us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 253us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 252us; 65535us; 65535us; 255us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 254us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 253us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 251us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 246 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 250us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 250us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 247 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 248 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 249us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 249 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 250 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 250us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 250us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 251 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 252us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 251us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 252 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 251us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 252us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 251us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 253 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 262us; 262us; 262us; 262us; 262us; 262us; 262us; 262us; 262us; 262us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 262us; 262us; 262us; 262us; 262us; 262us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 262us; 262us; 262us; 262us; 262us; 262us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 254 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 259us; 259us; 259us; 259us; 259us; 259us; 259us; 259us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 255 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 256us; 256us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 256 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 257us; 257us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 258us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 257 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 257us; 257us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 258us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 258 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 257us; 257us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 258us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 259 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 260us; 260us; 260us; 260us; 260us; 260us; 260us; 260us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 261us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 260 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 260us; 260us; 260us; 260us; 260us; 260us; 260us; 260us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 261us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 261 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 260us; 260us; 260us; 260us; 260us; 260us; 260us; 260us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 261us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 262 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 263us; 263us; 263us; 263us; 263us; 263us; 263us; 263us; 263us; 263us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 263us; 263us; 263us; 263us; 263us; 263us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 264us; 65535us; 263us; 263us; 263us; 263us; 263us; 263us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 263 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 263us; 263us; 263us; 263us; 263us; 263us; 263us; 263us; 263us; 263us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 263us; 263us; 263us; 263us; 263us; 263us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 264us; 65535us; 263us; 263us; 263us; 263us; 263us; 263us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 264 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 263us; 263us; 263us; 263us; 263us; 263us; 263us; 263us; 263us; 263us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 263us; 263us; 263us; 263us; 263us; 263us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 264us; 65535us; 263us; 263us; 263us; 263us; 263us; 263us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 265 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 265us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 65535us; 65535us; 65535us; 65535us; 265us; 65535us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 65535us; 65535us; 65535us; 65535us; 65535us; 265us; 265us; 265us; 265us; 265us; 265us; 265us; 65535us; 265us; 265us; 65535us; 65535us; 65535us; 65535us; 65535us; 265us; 65535us; 65535us; 265us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 266 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 267 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 268 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 291us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 291us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 269 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 268us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 270 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 271 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 289us; 289us; 289us; 289us; 289us; 289us; 289us; 289us; 289us; 289us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 289us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 272 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 287us; 287us; 287us; 287us; 287us; 287us; 287us; 287us; 287us; 287us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 287us; 287us; 287us; 287us; 287us; 287us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 287us; 287us; 287us; 287us; 287us; 287us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 273 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 283us; 283us; 283us; 283us; 283us; 283us; 283us; 283us; 283us; 283us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 283us; 283us; 283us; 283us; 283us; 283us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 283us; 283us; 283us; 283us; 283us; 283us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 274 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 275us; 275us; 275us; 275us; 275us; 275us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 275us; 275us; 275us; 275us; 275us; 275us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 275 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 276us; 276us; 276us; 276us; 276us; 276us; 276us; 276us; 276us; 276us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 276us; 276us; 276us; 276us; 276us; 276us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 276us; 276us; 276us; 276us; 276us; 276us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 276 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 277us; 277us; 277us; 277us; 277us; 277us; 277us; 277us; 277us; 277us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 277us; 277us; 277us; 277us; 277us; 277us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 277us; 277us; 277us; 277us; 277us; 277us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 277 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 278us; 278us; 278us; 278us; 278us; 278us; 278us; 278us; 278us; 278us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 278us; 278us; 278us; 278us; 278us; 278us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 278us; 278us; 278us; 278us; 278us; 278us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 278 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 279us; 279us; 279us; 279us; 279us; 279us; 279us; 279us; 279us; 279us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 279us; 279us; 279us; 279us; 279us; 279us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 279us; 279us; 279us; 279us; 279us; 279us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 279 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 280us; 280us; 280us; 280us; 280us; 280us; 280us; 280us; 280us; 280us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 280us; 280us; 280us; 280us; 280us; 280us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 280us; 280us; 280us; 280us; 280us; 280us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 280 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 281us; 281us; 281us; 281us; 281us; 281us; 281us; 281us; 281us; 281us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 281us; 281us; 281us; 281us; 281us; 281us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 281us; 281us; 281us; 281us; 281us; 281us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 281 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 282us; 282us; 282us; 282us; 282us; 282us; 282us; 282us; 282us; 282us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 282us; 282us; 282us; 282us; 282us; 282us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 282us; 282us; 282us; 282us; 282us; 282us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 282 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 283 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 284us; 284us; 284us; 284us; 284us; 284us; 284us; 284us; 284us; 284us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 284us; 284us; 284us; 284us; 284us; 284us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 284us; 284us; 284us; 284us; 284us; 284us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 284 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 285us; 285us; 285us; 285us; 285us; 285us; 285us; 285us; 285us; 285us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 285us; 285us; 285us; 285us; 285us; 285us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 285us; 285us; 285us; 285us; 285us; 285us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 285 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 286us; 286us; 286us; 286us; 286us; 286us; 286us; 286us; 286us; 286us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 286us; 286us; 286us; 286us; 286us; 286us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 286us; 286us; 286us; 286us; 286us; 286us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 286 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 287 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 288us; 288us; 288us; 288us; 288us; 288us; 288us; 288us; 288us; 288us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 288us; 288us; 288us; 288us; 288us; 288us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 288us; 288us; 288us; 288us; 288us; 288us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 288 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 289 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 290us; 290us; 290us; 290us; 290us; 290us; 290us; 290us; 290us; 290us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 290us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 290 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 291 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 291us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 291us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 292 *) + [| 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 293us; 296us; 296us; 294us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 296us; 295us; |]; + (* State 293 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 294 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 298us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 295 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 296 *) + [| 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 65535us; 297us; 297us; 65535us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 65535us; |]; + (* State 297 *) + [| 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 65535us; 297us; 297us; 65535us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 297us; 65535us; |]; + (* State 298 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 299 *) + [| 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 302us; 303us; 305us; 305us; 304us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 301us; 305us; 305us; 300us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 306us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 305us; 307us; |]; + (* State 300 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 336us; 308us; 308us; 308us; 335us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 301 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 311us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 311us; 65535us; 65535us; 313us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 302 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 312us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 311us; 308us; 308us; 310us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 303 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 304 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 309us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 305 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 306 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 307 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 308 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 309 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 310 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 336us; 308us; 308us; 308us; 335us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 311 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 311us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 311us; 65535us; 65535us; 313us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 312 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 312us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 311us; 308us; 308us; 310us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 313 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 315us; 65535us; 65535us; 65535us; 314us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 314 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 331us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 315 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 316us; 65535us; 317us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 316 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 325us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 317 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 318us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 318 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 319us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 319 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 320us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 320 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 322us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 322us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 321us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 321 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 323us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 322 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 322us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 322us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 321us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 323 *) + [| 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 65535us; 324us; 324us; 65535us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 65535us; |]; + (* State 324 *) + [| 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 65535us; 324us; 324us; 65535us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 324us; 65535us; |]; + (* State 325 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 326us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 326 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 328us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 328us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 327us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 327 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 329us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 328 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 328us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 328us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 327us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 329 *) + [| 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 65535us; 330us; 330us; 65535us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 65535us; |]; + (* State 330 *) + [| 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 65535us; 330us; 330us; 65535us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 330us; 65535us; |]; + (* State 331 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 332us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 332us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 332 *) + [| 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 334us; 65535us; 333us; 333us; 65535us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 334us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 65535us; |]; + (* State 333 *) + [| 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 65535us; 333us; 333us; 65535us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 65535us; |]; + (* State 334 *) + [| 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 334us; 65535us; 333us; 333us; 65535us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 334us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 333us; 65535us; |]; + (* State 335 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 352us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 336 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 337us; 308us; 338us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 337 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 346us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 338 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 339us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 339 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 340us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 340 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 341us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 341 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 343us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 322us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 342us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 342 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 344us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 343 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 343us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 322us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 342us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 344 *) + [| 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 65535us; 345us; 345us; 65535us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 324us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 65535us; |]; + (* State 345 *) + [| 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 65535us; 345us; 345us; 65535us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 324us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 345us; 65535us; |]; + (* State 346 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 347us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 347 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 349us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 328us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 348us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 348 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 350us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 349 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 349us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 328us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 348us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 350 *) + [| 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 65535us; 351us; 351us; 65535us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 330us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 65535us; |]; + (* State 351 *) + [| 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 65535us; 351us; 351us; 65535us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 330us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 351us; 65535us; |]; + (* State 352 *) + [| 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 353us; 65535us; 308us; 308us; 65535us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 332us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 308us; 65535us; |]; + (* State 353 *) + [| 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 355us; 65535us; 354us; 354us; 65535us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 334us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 65535us; |]; + (* State 354 *) + [| 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 65535us; 354us; 354us; 65535us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 333us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 65535us; |]; + (* State 355 *) + [| 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 355us; 65535us; 354us; 354us; 65535us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 334us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 354us; 65535us; |]; + (* State 356 *) + [| 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 372us; 374us; 401us; 401us; 375us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 371us; 399us; 368us; 377us; 369us; 395us; 379us; 366us; 367us; 381us; 382us; 397us; 383us; 384us; 386us; 373us; 365us; 364us; 364us; 364us; 364us; 364us; 364us; 364us; 364us; 364us; 387us; 389us; 378us; 390us; 388us; 385us; 370us; 357us; 357us; 357us; 357us; 358us; 359us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 391us; 401us; 393us; 398us; 357us; 376us; 357us; 357us; 357us; 360us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 357us; 361us; 357us; 357us; 357us; 357us; 362us; 357us; 357us; 357us; 357us; 357us; 357us; 363us; 357us; 392us; 380us; 394us; 396us; 401us; 357us; 357us; 357us; 357us; 357us; 401us; 401us; 401us; 364us; 357us; 401us; 401us; 401us; 401us; 401us; 401us; 400us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 401us; 402us; |]; + (* State 357 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 358 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 738us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 359 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 735us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 360 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 733us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 361 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 728us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 362 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 722us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 363 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 717us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 364 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 643us; 65535us; 639us; 639us; 639us; 639us; 639us; 639us; 639us; 639us; 639us; 639us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 651us; 651us; 651us; 648us; 651us; 650us; 651us; 650us; 651us; 651us; 645us; 649us; 650us; 651us; 651us; 650us; 650us; 651us; 651us; 646us; 651us; 651us; 651us; 651us; 650us; 65535us; 65535us; 65535us; 65535us; 640us; 65535us; 651us; 651us; 651us; 651us; 648us; 651us; 651us; 651us; 651us; 651us; 651us; 644us; 649us; 647us; 651us; 651us; 651us; 651us; 642us; 651us; 641us; 651us; 651us; 651us; 638us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 65535us; 639us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 65535us; 65535us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 365 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 643us; 65535us; 639us; 639us; 639us; 639us; 639us; 639us; 639us; 639us; 639us; 639us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 692us; 651us; 651us; 648us; 651us; 650us; 651us; 650us; 651us; 651us; 645us; 649us; 650us; 691us; 651us; 650us; 650us; 651us; 651us; 646us; 651us; 651us; 690us; 651us; 650us; 65535us; 65535us; 65535us; 65535us; 640us; 65535us; 651us; 692us; 651us; 651us; 648us; 651us; 651us; 651us; 651us; 651us; 651us; 644us; 649us; 647us; 691us; 651us; 651us; 651us; 642us; 651us; 641us; 651us; 651us; 690us; 638us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 65535us; 639us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 65535us; 65535us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 366 *) + [| 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 65535us; 65535us; 65535us; 608us; 608us; 65535us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 609us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 608us; 65535us; |]; + (* State 367 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 583us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 368 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 581us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 369 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 470us; 580us; 65535us; 466us; 467us; 471us; 65535us; 65535us; 65535us; 464us; 468us; 65535us; 468us; 465us; 467us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 472us; 472us; 472us; 465us; 469us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 469us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 473us; 65535us; 474us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 370 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 574us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 406us; 406us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 406us; 575us; 406us; 576us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 371 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 570us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 573us; 65535us; 65535us; 569us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 372 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 568us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 570us; 65535us; 65535us; 569us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 373 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 65535us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 409us; 409us; 65535us; 409us; 409us; 562us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 409us; 409us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 374 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 375 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 561us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 376 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 555us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 377 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 496us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 496us; 498us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 500us; 65535us; 65535us; 65535us; 499us; 65535us; 65535us; 497us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 495us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 378 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 413us; 413us; 65535us; 493us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 413us; 413us; 413us; 492us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 379 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 65535us; 463us; 463us; 491us; 65535us; 65535us; 65535us; 463us; 463us; 65535us; 463us; 463us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 463us; 463us; 463us; 463us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 380 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 462us; 65535us; 65535us; 462us; 462us; 462us; 65535us; 65535us; 65535us; 462us; 462us; 65535us; 462us; 462us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 462us; 65535us; 462us; 462us; 462us; 462us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 489us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 488us; 490us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 381 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 382 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 65535us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 483us; 409us; 65535us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 409us; 409us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 383 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 384 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 65535us; 407us; 407us; 407us; 65535us; 65535us; 65535us; 407us; 407us; 65535us; 407us; 407us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 407us; 407us; 487us; 407us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 385 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 431us; 65535us; 65535us; 425us; 427us; 432us; 65535us; 65535us; 65535us; 424us; 428us; 65535us; 428us; 426us; 427us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 430us; 430us; 430us; 486us; 429us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 429us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 433us; 65535us; 434us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 386 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 431us; 65535us; 65535us; 425us; 427us; 432us; 65535us; 436us; 65535us; 424us; 428us; 65535us; 428us; 423us; 427us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 430us; 430us; 430us; 426us; 429us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 435us; 65535us; 65535us; 429us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 433us; 65535us; 434us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 387 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 418us; 65535us; 65535us; 421us; 419us; 420us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 388 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 413us; 413us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 413us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 416us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 415us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 389 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 414us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 390 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 413us; 413us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 413us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 391 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 412us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 411us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 392 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 410us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 393 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 394 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 395 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 65535us; 409us; 408us; 409us; 65535us; 65535us; 65535us; 409us; 409us; 65535us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 409us; 409us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 396 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 65535us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 404us; 404us; 65535us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 404us; 404us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 397 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 65535us; 407us; 407us; 407us; 65535us; 65535us; 65535us; 407us; 407us; 65535us; 407us; 407us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 407us; 407us; 407us; 407us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 398 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 406us; 406us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 406us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 399 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 65535us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 404us; 404us; 65535us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 404us; 403us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 400 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 401us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 401 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 402 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 403 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 65535us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 405us; 405us; 65535us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 405us; 405us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 404 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 65535us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 404us; 404us; 65535us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 404us; 404us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 405 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 65535us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 405us; 405us; 65535us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 405us; 405us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 406 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 406us; 406us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 406us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 407 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 65535us; 407us; 407us; 407us; 65535us; 65535us; 65535us; 407us; 407us; 65535us; 407us; 407us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 407us; 407us; 407us; 407us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 408 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 65535us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 409us; 409us; 65535us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 409us; 409us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 409 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 65535us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 409us; 409us; 65535us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 409us; 409us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 410 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 411 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 412 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 413 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 413us; 413us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 413us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 414 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 415 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 413us; 413us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 413us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 417us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 416 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 417 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 418 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 419 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 420 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 422us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 421 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 422 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 423 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 431us; 65535us; 65535us; 425us; 427us; 432us; 65535us; 65535us; 65535us; 424us; 428us; 65535us; 428us; 426us; 427us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 430us; 430us; 430us; 426us; 429us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 485us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 433us; 65535us; 434us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 424 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 65535us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 483us; 409us; 65535us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 409us; 409us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 425 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 470us; 65535us; 65535us; 466us; 467us; 471us; 65535us; 65535us; 65535us; 464us; 468us; 65535us; 468us; 465us; 467us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 472us; 472us; 472us; 465us; 469us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 469us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 473us; 65535us; 474us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 426 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 431us; 65535us; 65535us; 425us; 427us; 432us; 65535us; 65535us; 65535us; 424us; 428us; 65535us; 428us; 426us; 427us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 430us; 430us; 430us; 426us; 429us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 429us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 433us; 65535us; 434us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 427 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 65535us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 409us; 409us; 65535us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 409us; 409us; 409us; 409us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 409us; 65535us; 409us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 428 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 65535us; 407us; 407us; 407us; 65535us; 65535us; 65535us; 407us; 407us; 65535us; 407us; 407us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 407us; 407us; 407us; 407us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 429 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 406us; 406us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 406us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 430 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 413us; 413us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 413us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 431 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 65535us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 404us; 404us; 65535us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 404us; 403us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 432 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 65535us; 463us; 463us; 463us; 65535us; 65535us; 65535us; 463us; 463us; 65535us; 463us; 463us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 463us; 463us; 463us; 463us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 433 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 462us; 65535us; 65535us; 462us; 462us; 462us; 65535us; 65535us; 65535us; 462us; 462us; 65535us; 462us; 462us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 462us; 65535us; 462us; 462us; 462us; 462us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 462us; 65535us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 434 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 65535us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 404us; 404us; 65535us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 404us; 404us; 404us; 404us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 404us; 65535us; 404us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 435 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 441us; 65535us; 442us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 440us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 436 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 437us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 437 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 438us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 438 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 439us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 439 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 440 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 461us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 441 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 454us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 453us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 442 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 443us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 443 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 444us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 439us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 444 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 445us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 445 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 446us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 446 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 447us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 439us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 447 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 448us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 448 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 449us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 449 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 450us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 439us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 450 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 451us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 451 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 452us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 452 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 439us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 453 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 460us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 454 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 456us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 455us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 455 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 459us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 456 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 457us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 457 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 458us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 458 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 439us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 459 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 439us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 460 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 439us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 461 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 439us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 462 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 462us; 65535us; 65535us; 462us; 462us; 462us; 65535us; 65535us; 65535us; 462us; 462us; 65535us; 462us; 462us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 462us; 65535us; 462us; 462us; 462us; 462us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 462us; 65535us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 463 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 65535us; 463us; 463us; 463us; 65535us; 65535us; 65535us; 463us; 463us; 65535us; 463us; 463us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 463us; 463us; 463us; 463us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 464 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 480us; 65535us; 65535us; 480us; 480us; 480us; 65535us; 65535us; 65535us; 481us; 480us; 65535us; 480us; 480us; 480us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 480us; 65535us; 480us; 480us; 480us; 480us; 480us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 480us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 480us; 65535us; 480us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 465 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 470us; 65535us; 65535us; 466us; 467us; 471us; 65535us; 65535us; 65535us; 464us; 468us; 65535us; 468us; 465us; 467us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 472us; 472us; 472us; 465us; 469us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 469us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 473us; 65535us; 474us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 466 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 470us; 65535us; 65535us; 466us; 467us; 471us; 65535us; 65535us; 65535us; 464us; 468us; 65535us; 468us; 465us; 467us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 472us; 472us; 472us; 465us; 469us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 469us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 473us; 65535us; 474us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 467 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 480us; 65535us; 65535us; 480us; 480us; 480us; 65535us; 65535us; 65535us; 480us; 480us; 65535us; 480us; 480us; 480us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 480us; 65535us; 480us; 480us; 480us; 480us; 480us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 480us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 480us; 65535us; 480us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 468 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 479us; 65535us; 65535us; 479us; 479us; 479us; 65535us; 65535us; 65535us; 479us; 479us; 65535us; 479us; 479us; 479us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 479us; 65535us; 479us; 479us; 479us; 479us; 479us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 479us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 479us; 65535us; 479us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 469 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 478us; 65535us; 65535us; 478us; 478us; 478us; 65535us; 65535us; 65535us; 478us; 478us; 65535us; 478us; 478us; 478us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 478us; 65535us; 478us; 478us; 478us; 478us; 478us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 478us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 478us; 65535us; 478us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 470 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 65535us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 405us; 405us; 65535us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 405us; 477us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 471 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 476us; 65535us; 65535us; 476us; 476us; 476us; 65535us; 65535us; 65535us; 476us; 476us; 65535us; 476us; 476us; 476us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 476us; 65535us; 476us; 476us; 476us; 476us; 476us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 476us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 476us; 65535us; 476us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 472 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 413us; 413us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 413us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 473 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 475us; 65535us; 65535us; 475us; 475us; 475us; 65535us; 65535us; 65535us; 475us; 475us; 65535us; 475us; 475us; 475us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 475us; 65535us; 475us; 475us; 475us; 475us; 475us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 475us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 475us; 65535us; 475us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 474 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 65535us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 405us; 405us; 65535us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 405us; 405us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 475 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 475us; 65535us; 65535us; 475us; 475us; 475us; 65535us; 65535us; 65535us; 475us; 475us; 65535us; 475us; 475us; 475us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 475us; 65535us; 475us; 475us; 475us; 475us; 475us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 475us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 475us; 65535us; 475us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 476 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 476us; 65535us; 65535us; 476us; 476us; 476us; 65535us; 65535us; 65535us; 476us; 476us; 65535us; 476us; 476us; 476us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 476us; 65535us; 476us; 476us; 476us; 476us; 476us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 476us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 476us; 65535us; 476us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 477 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 65535us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 405us; 405us; 65535us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 405us; 405us; 405us; 405us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 405us; 65535us; 405us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 478 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 478us; 65535us; 65535us; 478us; 478us; 478us; 65535us; 65535us; 65535us; 478us; 478us; 65535us; 478us; 478us; 478us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 478us; 65535us; 478us; 478us; 478us; 478us; 478us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 478us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 478us; 65535us; 478us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 479 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 479us; 65535us; 65535us; 479us; 479us; 479us; 65535us; 65535us; 65535us; 479us; 479us; 65535us; 479us; 479us; 479us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 479us; 65535us; 479us; 479us; 479us; 479us; 479us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 479us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 479us; 65535us; 479us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 480 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 480us; 65535us; 65535us; 480us; 480us; 480us; 65535us; 65535us; 65535us; 480us; 480us; 65535us; 480us; 480us; 480us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 480us; 65535us; 480us; 480us; 480us; 480us; 480us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 480us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 480us; 65535us; 480us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 481 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 482us; 65535us; 65535us; 482us; 482us; 482us; 65535us; 65535us; 65535us; 482us; 482us; 65535us; 482us; 482us; 482us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 482us; 65535us; 482us; 482us; 482us; 482us; 482us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 482us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 482us; 65535us; 482us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 482 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 482us; 65535us; 65535us; 482us; 482us; 482us; 65535us; 65535us; 65535us; 482us; 482us; 65535us; 482us; 482us; 482us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 482us; 65535us; 482us; 482us; 482us; 482us; 482us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 482us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 482us; 65535us; 482us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 483 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 484us; 65535us; 65535us; 484us; 484us; 484us; 65535us; 65535us; 65535us; 484us; 484us; 65535us; 484us; 484us; 484us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 484us; 65535us; 484us; 484us; 484us; 484us; 484us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 484us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 484us; 65535us; 484us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 484 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 484us; 65535us; 65535us; 484us; 484us; 484us; 65535us; 65535us; 65535us; 484us; 484us; 65535us; 484us; 484us; 484us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 484us; 65535us; 484us; 484us; 484us; 484us; 484us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 484us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 484us; 65535us; 484us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 485 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 406us; 406us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 406us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 486 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 431us; 65535us; 65535us; 425us; 427us; 432us; 65535us; 65535us; 65535us; 424us; 428us; 65535us; 428us; 426us; 427us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 430us; 430us; 430us; 426us; 429us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 429us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 433us; 65535us; 434us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 487 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 65535us; 407us; 407us; 407us; 65535us; 65535us; 65535us; 407us; 407us; 65535us; 407us; 407us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 407us; 407us; 407us; 407us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 407us; 65535us; 407us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 488 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 462us; 65535us; 65535us; 462us; 462us; 462us; 65535us; 65535us; 65535us; 462us; 462us; 65535us; 462us; 462us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 462us; 65535us; 462us; 462us; 462us; 462us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 462us; 65535us; 462us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 489 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 490 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 491 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 65535us; 463us; 463us; 463us; 65535us; 65535us; 65535us; 463us; 463us; 65535us; 463us; 463us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 463us; 463us; 463us; 463us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 463us; 65535us; 463us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 492 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 413us; 413us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 413us; 413us; 413us; 494us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 493 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 413us; 413us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 413us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 494 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 413us; 413us; 65535us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 413us; 413us; 413us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 413us; 65535us; 413us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 495 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 547us; 545us; 65535us; 65535us; 546us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 547us; 65535us; 548us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 550us; 550us; 550us; 550us; 550us; 550us; 550us; 550us; 550us; 550us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 549us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 550us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 496 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 496us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 496us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 495us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 497 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 498 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 534us; 65535us; 65535us; 534us; 534us; 534us; 65535us; 65535us; 65535us; 534us; 534us; 65535us; 534us; 534us; 534us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 534us; 65535us; 534us; 534us; 534us; 534us; 534us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 534us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 534us; 65535us; 534us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 499 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 517us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 516us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 500 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 501us; 65535us; 502us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 501 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 510us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 502 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 503us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 503 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 504us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 504 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 505us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 505 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 507us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 507us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 506us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 506 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 508us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 507 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 507us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 507us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 506us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 508 *) + [| 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 65535us; 509us; 509us; 65535us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 65535us; |]; + (* State 509 *) + [| 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 65535us; 509us; 509us; 65535us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 509us; 65535us; |]; + (* State 510 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 511us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 511 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 513us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 513us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 512us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 512 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 514us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 513 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 513us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 513us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 512us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 514 *) + [| 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 65535us; 515us; 515us; 65535us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 65535us; |]; + (* State 515 *) + [| 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 65535us; 515us; 515us; 65535us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 515us; 65535us; |]; + (* State 516 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 521us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 517 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 518us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 518us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 518 *) + [| 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 520us; 65535us; 519us; 519us; 65535us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 520us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 65535us; |]; + (* State 519 *) + [| 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 65535us; 519us; 519us; 65535us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 65535us; |]; + (* State 520 *) + [| 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 520us; 65535us; 519us; 519us; 65535us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 520us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 519us; 65535us; |]; + (* State 521 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 522us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 522 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 523us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 523 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 524us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 524 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 525us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 525us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 525 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 527us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 527us; 65535us; 526us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 526 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 528us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 527 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 527us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 527us; 65535us; 526us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 528 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 530us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 529us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 529 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 533us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 530 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 531us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 531 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 532us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 532 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 533 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 534 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 534us; 65535us; 65535us; 534us; 534us; 534us; 65535us; 65535us; 65535us; 534us; 534us; 65535us; 534us; 534us; 534us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 534us; 65535us; 534us; 534us; 534us; 534us; 534us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 534us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 534us; 65535us; 534us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 535 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 537us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 536us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 536 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 542us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 537 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 538us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 538 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 539us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 539 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 540us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 540us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 540 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 541us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 541us; 65535us; 526us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 541 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 541us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 541us; 65535us; 526us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 542 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 543us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 543us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 543 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 544us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 544us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 495us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 544 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 544us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 544us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 495us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 495us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 545 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 546 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 545us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 547 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 547us; 545us; 65535us; 65535us; 546us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 547us; 65535us; 548us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 549us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 548 *) + [| 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 65535us; 551us; 551us; 65535us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 65535us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 551us; 65535us; |]; + (* State 549 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 548us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 550 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 547us; 545us; 65535us; 65535us; 546us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 547us; 65535us; 548us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 550us; 550us; 550us; 550us; 550us; 550us; 550us; 550us; 550us; 550us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 549us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 550us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 551 *) + [| 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 65535us; 553us; 553us; 65535us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 552us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 65535us; |]; + (* State 552 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 554us; 545us; 65535us; 65535us; 546us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 554us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 553 *) + [| 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 65535us; 553us; 553us; 65535us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 552us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 553us; 65535us; |]; + (* State 554 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 554us; 545us; 65535us; 65535us; 546us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 554us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 555 *) + [| 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 65535us; 65535us; 556us; 556us; 65535us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 557us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 65535us; |]; + (* State 556 *) + [| 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 65535us; 65535us; 559us; 559us; 65535us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 558us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 65535us; |]; + (* State 557 *) + [| 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 65535us; 65535us; 556us; 556us; 65535us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 65535us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 556us; 65535us; |]; + (* State 558 *) + [| 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 65535us; 65535us; 559us; 559us; 65535us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 560us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 65535us; |]; + (* State 559 *) + [| 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 65535us; 65535us; 559us; 559us; 65535us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 558us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 559us; 65535us; |]; + (* State 560 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 561 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 562 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 564us; 65535us; 65535us; 564us; 564us; 564us; 65535us; 65535us; 65535us; 564us; 564us; 65535us; 564us; 564us; 563us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 564us; 65535us; 564us; 564us; 564us; 564us; 564us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 564us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 564us; 65535us; 564us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 563 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 566us; 65535us; 65535us; 566us; 566us; 566us; 65535us; 65535us; 65535us; 566us; 566us; 65535us; 566us; 566us; 565us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 566us; 65535us; 566us; 566us; 566us; 566us; 566us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 566us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 566us; 65535us; 566us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 564 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 564us; 65535us; 65535us; 564us; 564us; 564us; 65535us; 65535us; 65535us; 564us; 564us; 65535us; 564us; 564us; 564us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 564us; 65535us; 564us; 564us; 564us; 564us; 564us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 564us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 564us; 65535us; 564us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 565 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 567us; 65535us; 65535us; 567us; 567us; 567us; 65535us; 65535us; 65535us; 567us; 567us; 65535us; 567us; 567us; 567us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 567us; 65535us; 567us; 567us; 567us; 567us; 567us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 567us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 567us; 65535us; 567us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 566 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 566us; 65535us; 65535us; 566us; 566us; 566us; 65535us; 65535us; 65535us; 566us; 566us; 65535us; 566us; 566us; 566us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 566us; 65535us; 566us; 566us; 566us; 566us; 566us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 566us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 566us; 65535us; 566us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 567 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 567us; 65535us; 65535us; 567us; 567us; 567us; 65535us; 65535us; 65535us; 567us; 567us; 65535us; 567us; 567us; 567us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 567us; 65535us; 567us; 567us; 567us; 567us; 567us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 567us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 567us; 65535us; 567us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 568 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 568us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 570us; 65535us; 65535us; 569us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 569 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 500us; 65535us; 65535us; 65535us; 571us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 570 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 570us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 570us; 65535us; 65535us; 569us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 571 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 572us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 572 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 518us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 518us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 573 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 570us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 573us; 65535us; 65535us; 569us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 574 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 575 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 406us; 406us; 65535us; 406us; 579us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 406us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 576 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 406us; 406us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 406us; 577us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 577 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 406us; 406us; 65535us; 406us; 578us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 406us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 578 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 406us; 406us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 406us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 579 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 406us; 406us; 65535us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 406us; 406us; 406us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 406us; 65535us; 406us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 580 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 581 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 582us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 582 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 583 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 586us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 585us; 65535us; 65535us; 584us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 584 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 588us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 585 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 587us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 586 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 587 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 588 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 589us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 589 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 591us; 65535us; 65535us; 590us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 592us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 590 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 603us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 591 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 599us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 592 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 593us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 593 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 594us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 594 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 595us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 595 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 596us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 596 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 597us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 597 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 598us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 598 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 599 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 600us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 600 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 601us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 601 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 602us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 602 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 598us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 603 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 604us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 604 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 605us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 605 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 606us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 606 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 607us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 607 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 608 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 636us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 609 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 608us; 65535us; 65535us; 65535us; 65535us; 608us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 610us; 610us; 610us; 610us; 610us; 610us; 610us; 610us; 610us; 610us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 613us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 608us; 65535us; 65535us; 65535us; 65535us; 608us; 608us; 65535us; 65535us; 65535us; 608us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 608us; 65535us; 65535us; 65535us; 608us; 65535us; 608us; 611us; 608us; 65535us; 612us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 610us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 610 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 632us; 632us; 632us; 632us; 632us; 632us; 632us; 632us; 632us; 632us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 632us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 611 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 626us; 626us; 626us; 626us; 626us; 626us; 626us; 626us; 626us; 626us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 626us; 626us; 626us; 626us; 626us; 626us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 626us; 626us; 626us; 626us; 626us; 626us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 612 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 623us; 623us; 623us; 623us; 623us; 623us; 623us; 623us; 623us; 623us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 623us; 623us; 623us; 623us; 623us; 623us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 623us; 623us; 623us; 623us; 623us; 623us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 613 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 614us; 614us; 614us; 614us; 614us; 614us; 614us; 614us; 614us; 614us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 614us; 614us; 614us; 614us; 614us; 614us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 614us; 614us; 614us; 614us; 614us; 614us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 614 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 615us; 615us; 615us; 615us; 615us; 615us; 615us; 615us; 615us; 615us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 615us; 615us; 615us; 615us; 615us; 615us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 615us; 615us; 615us; 615us; 615us; 615us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 615 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 616us; 616us; 616us; 616us; 616us; 616us; 616us; 616us; 616us; 616us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 616us; 616us; 616us; 616us; 616us; 616us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 616us; 616us; 616us; 616us; 616us; 616us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 616 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 617us; 617us; 617us; 617us; 617us; 617us; 617us; 617us; 617us; 617us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 617us; 617us; 617us; 617us; 617us; 617us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 617us; 617us; 617us; 617us; 617us; 617us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 617 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 618us; 618us; 618us; 618us; 618us; 618us; 618us; 618us; 618us; 618us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 618us; 618us; 618us; 618us; 618us; 618us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 618us; 618us; 618us; 618us; 618us; 618us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 618 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 619us; 619us; 619us; 619us; 619us; 619us; 619us; 619us; 619us; 619us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 619us; 619us; 619us; 619us; 619us; 619us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 619us; 619us; 619us; 619us; 619us; 619us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 619 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 620us; 620us; 620us; 620us; 620us; 620us; 620us; 620us; 620us; 620us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 620us; 620us; 620us; 620us; 620us; 620us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 620us; 620us; 620us; 620us; 620us; 620us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 620 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 621us; 621us; 621us; 621us; 621us; 621us; 621us; 621us; 621us; 621us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 621us; 621us; 621us; 621us; 621us; 621us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 621us; 621us; 621us; 621us; 621us; 621us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 621 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 622us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 622 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 623 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 624us; 624us; 624us; 624us; 624us; 624us; 624us; 624us; 624us; 624us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 624us; 624us; 624us; 624us; 624us; 624us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 624us; 624us; 624us; 624us; 624us; 624us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 624 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 625us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 625 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 626 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 627us; 627us; 627us; 627us; 627us; 627us; 627us; 627us; 627us; 627us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 627us; 627us; 627us; 627us; 627us; 627us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 627us; 627us; 627us; 627us; 627us; 627us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 627 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 628us; 628us; 628us; 628us; 628us; 628us; 628us; 628us; 628us; 628us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 628us; 628us; 628us; 628us; 628us; 628us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 628us; 628us; 628us; 628us; 628us; 628us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 628 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 629us; 629us; 629us; 629us; 629us; 629us; 629us; 629us; 629us; 629us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 629us; 629us; 629us; 629us; 629us; 629us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 629us; 629us; 629us; 629us; 629us; 629us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 629 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 630us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 630 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 631us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 631 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 632 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 633us; 633us; 633us; 633us; 633us; 633us; 633us; 633us; 633us; 633us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 633us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 633 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 634us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 634 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 635us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 635 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 636 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 637us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 637 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 638 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 639 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 643us; 65535us; 681us; 681us; 681us; 681us; 681us; 681us; 681us; 681us; 681us; 681us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 671us; 665us; 689us; 665us; 689us; 665us; 665us; 686us; 664us; 689us; 665us; 665us; 689us; 689us; 665us; 665us; 687us; 665us; 665us; 665us; 665us; 689us; 65535us; 65535us; 65535us; 65535us; 682us; 65535us; 665us; 665us; 665us; 665us; 671us; 665us; 665us; 665us; 665us; 665us; 665us; 685us; 664us; 688us; 665us; 665us; 665us; 665us; 684us; 665us; 683us; 665us; 665us; 665us; 680us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 681us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 640 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 678us; 678us; 678us; 678us; 678us; 678us; 678us; 678us; 678us; 678us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 679us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 678us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 641 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 666us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 676us; 652us; 677us; 652us; 652us; 652us; 652us; 675us; 652us; 652us; 652us; 652us; 652us; 674us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 642 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 643 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 667us; 65535us; 668us; 668us; 668us; 668us; 668us; 668us; 668us; 668us; 668us; 668us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 651us; 651us; 651us; 648us; 656us; 651us; 651us; 651us; 651us; 651us; 651us; 649us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 65535us; 65535us; 65535us; 65535us; 651us; 65535us; 651us; 651us; 651us; 651us; 648us; 656us; 651us; 651us; 651us; 651us; 651us; 651us; 649us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 65535us; 668us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 65535us; 65535us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 644 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 645 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 646 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 666us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 647 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 648 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 654us; 65535us; 654us; 65535us; 65535us; 653us; 653us; 653us; 653us; 653us; 653us; 653us; 653us; 653us; 653us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 653us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 649 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 650 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 651 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 652 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 653 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 661us; 665us; 665us; 665us; 665us; 665us; 665us; 664us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 663us; 65535us; 665us; 665us; 665us; 665us; 665us; 661us; 665us; 665us; 665us; 665us; 665us; 665us; 664us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 662us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 654 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 655us; 655us; 655us; 655us; 655us; 655us; 655us; 655us; 655us; 655us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 655us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 655 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 657us; 657us; 657us; 657us; 657us; 657us; 657us; 657us; 657us; 657us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 651us; 651us; 651us; 651us; 656us; 651us; 651us; 651us; 651us; 651us; 651us; 649us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 65535us; 65535us; 65535us; 65535us; 658us; 65535us; 651us; 651us; 651us; 651us; 651us; 656us; 651us; 651us; 651us; 651us; 651us; 651us; 649us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 651us; 651us; 651us; 651us; 651us; 651us; 65535us; 657us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 651us; 65535us; 65535us; 651us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 656 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 657 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 661us; 665us; 665us; 665us; 665us; 665us; 665us; 664us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 663us; 65535us; 665us; 665us; 665us; 665us; 665us; 661us; 665us; 665us; 665us; 665us; 665us; 665us; 664us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 662us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 658 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 659us; 659us; 659us; 659us; 659us; 659us; 659us; 659us; 659us; 659us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 660us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 659us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 659 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 661us; 665us; 665us; 665us; 665us; 665us; 665us; 664us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 663us; 65535us; 665us; 665us; 665us; 665us; 665us; 661us; 665us; 665us; 665us; 665us; 665us; 665us; 664us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 662us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 660 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 659us; 659us; 659us; 659us; 659us; 659us; 659us; 659us; 659us; 659us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 660us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 659us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 661 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 662 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 662us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 661us; 665us; 665us; 665us; 665us; 665us; 665us; 664us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 663us; 65535us; 665us; 665us; 665us; 665us; 665us; 661us; 665us; 665us; 665us; 665us; 665us; 665us; 664us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 662us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 663 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 659us; 659us; 659us; 659us; 659us; 659us; 659us; 659us; 659us; 659us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 660us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 659us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 664 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 665 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 666 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 667 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 668 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 669us; 669us; 669us; 669us; 669us; 669us; 669us; 669us; 669us; 669us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 671us; 661us; 665us; 665us; 665us; 665us; 665us; 665us; 664us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 670us; 65535us; 665us; 665us; 665us; 665us; 671us; 661us; 665us; 665us; 665us; 665us; 665us; 665us; 664us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 669us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 669 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 669us; 669us; 669us; 669us; 669us; 669us; 669us; 669us; 669us; 669us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 671us; 661us; 665us; 665us; 665us; 665us; 665us; 665us; 664us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 670us; 65535us; 665us; 665us; 665us; 665us; 671us; 661us; 665us; 665us; 665us; 665us; 665us; 665us; 664us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 669us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 670 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 672us; 672us; 672us; 672us; 672us; 672us; 672us; 672us; 672us; 672us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 673us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 672us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 671 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 654us; 65535us; 654us; 65535us; 65535us; 653us; 653us; 653us; 653us; 653us; 653us; 653us; 653us; 653us; 653us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 653us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 672 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 669us; 669us; 669us; 669us; 669us; 669us; 669us; 669us; 669us; 669us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 671us; 661us; 665us; 665us; 665us; 665us; 665us; 665us; 664us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 670us; 65535us; 665us; 665us; 665us; 665us; 671us; 661us; 665us; 665us; 665us; 665us; 665us; 665us; 664us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 669us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 673 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 672us; 672us; 672us; 672us; 672us; 672us; 672us; 672us; 672us; 672us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 673us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 672us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 674 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 675 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 676 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 677 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 678 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 643us; 65535us; 681us; 681us; 681us; 681us; 681us; 681us; 681us; 681us; 681us; 681us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 671us; 665us; 689us; 665us; 689us; 665us; 665us; 686us; 664us; 689us; 665us; 665us; 689us; 689us; 665us; 665us; 687us; 665us; 665us; 665us; 665us; 689us; 65535us; 65535us; 65535us; 65535us; 682us; 65535us; 665us; 665us; 665us; 665us; 671us; 665us; 665us; 665us; 665us; 665us; 665us; 685us; 664us; 688us; 665us; 665us; 665us; 665us; 684us; 665us; 683us; 665us; 665us; 665us; 680us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 681us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 679 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 678us; 678us; 678us; 678us; 678us; 678us; 678us; 678us; 678us; 678us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 679us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 678us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 680 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 681 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 643us; 65535us; 681us; 681us; 681us; 681us; 681us; 681us; 681us; 681us; 681us; 681us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 671us; 665us; 689us; 665us; 689us; 665us; 665us; 686us; 664us; 689us; 665us; 665us; 689us; 689us; 665us; 665us; 687us; 665us; 665us; 665us; 665us; 689us; 65535us; 65535us; 65535us; 65535us; 682us; 65535us; 665us; 665us; 665us; 665us; 671us; 665us; 665us; 665us; 665us; 665us; 665us; 685us; 664us; 688us; 665us; 665us; 665us; 665us; 684us; 665us; 683us; 665us; 665us; 665us; 680us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 681us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 682 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 678us; 678us; 678us; 678us; 678us; 678us; 678us; 678us; 678us; 678us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 679us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 678us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 683 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 666us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 676us; 652us; 677us; 652us; 652us; 652us; 652us; 675us; 652us; 652us; 652us; 652us; 652us; 674us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 684 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 685 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 686 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 687 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 666us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 688 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 689 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 690 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 709us; 709us; 709us; 709us; 709us; 709us; 709us; 709us; 709us; 709us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 709us; 709us; 709us; 709us; 709us; 709us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 709us; 709us; 709us; 709us; 709us; 709us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 691 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 704us; 704us; 704us; 704us; 704us; 704us; 704us; 704us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 692 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 693us; 693us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 693 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 695us; 695us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 699us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 687us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 696us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 698us; 665us; 688us; 665us; 665us; 665us; 665us; 697us; 665us; 683us; 665us; 665us; 665us; 694us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 694 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 695 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 695us; 695us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 699us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 687us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 696us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 698us; 665us; 688us; 665us; 665us; 665us; 665us; 697us; 665us; 683us; 665us; 665us; 665us; 694us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 696 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 702us; 702us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 703us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 697 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 698 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 701us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 699 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 700us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 700 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 701 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 702 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 695us; 695us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 699us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 687us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 696us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 698us; 665us; 688us; 665us; 665us; 665us; 665us; 697us; 665us; 683us; 665us; 665us; 665us; 694us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 703 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 702us; 702us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 703us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 704 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 705us; 705us; 705us; 705us; 705us; 705us; 705us; 705us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 699us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 687us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 706us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 698us; 665us; 688us; 665us; 665us; 665us; 665us; 697us; 665us; 683us; 665us; 665us; 665us; 694us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 705 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 705us; 705us; 705us; 705us; 705us; 705us; 705us; 705us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 699us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 687us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 706us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 698us; 665us; 688us; 665us; 665us; 665us; 665us; 697us; 665us; 683us; 665us; 665us; 665us; 694us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 706 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 707us; 707us; 707us; 707us; 707us; 707us; 707us; 707us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 708us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 707 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 705us; 705us; 705us; 705us; 705us; 705us; 705us; 705us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 699us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 687us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 706us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 698us; 665us; 688us; 665us; 665us; 665us; 665us; 697us; 665us; 683us; 665us; 665us; 665us; 694us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 708 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 707us; 707us; 707us; 707us; 707us; 707us; 707us; 707us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 708us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 709 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 710us; 710us; 710us; 710us; 710us; 710us; 710us; 710us; 710us; 710us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 710us; 710us; 710us; 710us; 710us; 710us; 665us; 665us; 665us; 665us; 665us; 699us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 687us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 711us; 65535us; 710us; 710us; 710us; 710us; 710us; 710us; 665us; 665us; 665us; 665us; 665us; 698us; 665us; 688us; 665us; 665us; 665us; 665us; 697us; 665us; 683us; 665us; 665us; 665us; 694us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 710 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 710us; 710us; 710us; 710us; 710us; 710us; 710us; 710us; 710us; 710us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 710us; 710us; 710us; 710us; 710us; 710us; 665us; 665us; 665us; 665us; 665us; 699us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 687us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 711us; 65535us; 710us; 710us; 710us; 710us; 710us; 710us; 665us; 665us; 665us; 665us; 665us; 698us; 665us; 688us; 665us; 665us; 665us; 665us; 697us; 665us; 683us; 665us; 665us; 665us; 694us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 711 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 712us; 712us; 712us; 712us; 712us; 712us; 712us; 712us; 712us; 712us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 712us; 712us; 712us; 712us; 712us; 712us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 713us; 65535us; 712us; 712us; 712us; 712us; 712us; 712us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 712 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 710us; 710us; 710us; 710us; 710us; 710us; 710us; 710us; 710us; 710us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 710us; 710us; 710us; 710us; 710us; 710us; 665us; 665us; 665us; 665us; 665us; 699us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 687us; 665us; 665us; 665us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 711us; 65535us; 710us; 710us; 710us; 710us; 710us; 710us; 665us; 665us; 665us; 665us; 665us; 698us; 665us; 688us; 665us; 665us; 665us; 665us; 697us; 665us; 683us; 665us; 665us; 665us; 694us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 665us; 665us; 665us; 665us; 665us; 665us; 65535us; 665us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 665us; 65535us; 65535us; 665us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 713 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 712us; 712us; 712us; 712us; 712us; 712us; 712us; 712us; 712us; 712us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 712us; 712us; 712us; 712us; 712us; 712us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 713us; 65535us; 712us; 712us; 712us; 712us; 712us; 712us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 652us; 652us; 652us; 652us; 652us; 652us; 65535us; 652us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 652us; 65535us; 65535us; 652us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 714 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 715 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 716 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 717 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 718us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 718 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 719us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 719 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 720us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 720 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 721us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 721 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 722 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 723us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 723 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 724us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 724 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 725us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 725 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 726us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 726 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 727us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 727 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 728 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 729us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 729 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 730us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 730 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 731us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 731 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 732us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 732 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 733 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 734us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 734 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 735 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 736us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 736 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 737us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 737 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 738 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 739us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 739 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 740us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 740 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 741us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 741 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 715us; 65535us; 716us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 742us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 714us; 714us; 714us; 714us; 714us; 714us; 65535us; 714us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 714us; 65535us; 65535us; 714us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 742 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 743us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 743 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 744us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 744 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 745us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 745 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 746us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 746 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 747us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 747 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 748us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 748 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 749us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 749 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 750us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 750 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + |] +let actions : uint16[] = [|65535us; 0us; 1us; 6us; 6us; 4us; 4us; 5us; 4us; 4us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 3us; 65535us; 65535us; 65535us; 65535us; 2us; 1us; 65535us; 4us; 1us; 1us; 1us; 1us; 2us; 4us; 3us; 4us; 4us; 2us; 1us; 1us; 65535us; 65535us; 65535us; 65535us; 1us; 1us; 65535us; 1us; 1us; 65535us; 1us; 1us; 65535us; 1us; 65535us; 0us; 65535us; 1us; 2us; 2us; 2us; 2us; 3us; 5us; 4us; 5us; 5us; 3us; 2us; 2us; 65535us; 65535us; 65535us; 65535us; 2us; 2us; 65535us; 2us; 2us; 65535us; 2us; 2us; 65535us; 2us; 0us; 65535us; 5us; 1us; 1us; 1us; 1us; 2us; 3us; 5us; 4us; 5us; 5us; 3us; 1us; 1us; 65535us; 65535us; 65535us; 65535us; 1us; 1us; 65535us; 1us; 1us; 65535us; 1us; 1us; 65535us; 1us; 0us; 65535us; 1us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 0us; 65535us; 10us; 1us; 10us; 10us; 6us; 10us; 10us; 8us; 8us; 8us; 9us; 10us; 8us; 8us; 8us; 7us; 6us; 5us; 4us; 3us; 65535us; 2us; 65535us; 65535us; 0us; 65535us; 0us; 3us; 1us; 2us; 2us; 2us; 2us; 2us; 2us; 2us; 2us; 0us; 65535us; 6us; 1us; 6us; 2us; 3us; 3us; 4us; 5us; 6us; 6us; 4us; 3us; 65535us; 65535us; 65535us; 65535us; 3us; 3us; 65535us; 3us; 3us; 65535us; 3us; 3us; 65535us; 2us; 1us; 65535us; 0us; 65535us; 1us; 3us; 8us; 4us; 5us; 5us; 6us; 7us; 8us; 8us; 6us; 5us; 65535us; 65535us; 65535us; 65535us; 5us; 5us; 65535us; 5us; 5us; 65535us; 5us; 5us; 65535us; 4us; 3us; 0us; 2us; 65535us; 13us; 6us; 8us; 13us; 9us; 10us; 10us; 11us; 12us; 13us; 13us; 11us; 10us; 65535us; 65535us; 65535us; 65535us; 10us; 10us; 65535us; 10us; 10us; 65535us; 10us; 10us; 65535us; 9us; 8us; 7us; 0us; 65535us; 1us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 5us; 65535us; 65535us; 65535us; 4us; 65535us; 3us; 65535us; 2us; 0us; 65535us; 0us; 2us; 1us; 2us; 2us; 0us; 65535us; 4us; 4us; 4us; 3us; 4us; 4us; 4us; 5us; 4us; 3us; 4us; 4us; 4us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 2us; 65535us; 2us; 2us; 2us; 65535us; 1us; 65535us; 1us; 1us; 1us; 65535us; 0us; 0us; 0us; 4us; 4us; 4us; 4us; 4us; 4us; 2us; 4us; 2us; 2us; 2us; 4us; 1us; 4us; 1us; 1us; 1us; 4us; 0us; 0us; 0us; 65535us; 0us; 0us; 0us; 0us; 0us; 0us; 0us; 14us; 14us; 64us; 65us; 44us; 101us; 110us; 48us; 49us; 108us; 53us; 123us; 106us; 60us; 91us; 61us; 99us; 66us; 67us; 68us; 104us; 70us; 74us; 75us; 92us; 85us; 87us; 88us; 98us; 94us; 100us; 102us; 105us; 109us; 110us; 114us; 123us; 123us; 124us; 111us; 114us; 111us; 110us; 109us; 103us; 108us; 90us; 89us; 93us; 111us; 84us; 111us; 97us; 80us; 76us; 77us; 82us; 83us; 81us; 72us; 108us; 111us; 65535us; 108us; 109us; 110us; 111us; 114us; 112us; 113us; 114us; 65535us; 65535us; 115us; 65535us; 115us; 115us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 115us; 65535us; 115us; 65535us; 115us; 65535us; 65535us; 65535us; 65535us; 113us; 112us; 108us; 111us; 111us; 108us; 109us; 110us; 111us; 111us; 111us; 111us; 111us; 111us; 111us; 111us; 110us; 109us; 108us; 107us; 107us; 107us; 107us; 73us; 71us; 69us; 63us; 95us; 96us; 62us; 56us; 86us; 57us; 65535us; 65535us; 65535us; 116us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 121us; 65535us; 121us; 121us; 121us; 65535us; 120us; 65535us; 120us; 120us; 120us; 65535us; 122us; 119us; 119us; 119us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 118us; 117us; 116us; 65535us; 65535us; 65535us; 65535us; 117us; 117us; 117us; 65535us; 65535us; 65535us; 55us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 54us; 53us; 52us; 51us; 52us; 50us; 51us; 50us; 49us; 65535us; 65535us; 65535us; 65535us; 48us; 47us; 58us; 110us; 59us; 79us; 78us; 46us; 65535us; 45us; 42us; 65535us; 65535us; 41us; 38us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 43us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 37us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 36us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 65535us; 35us; 33us; 65535us; 65535us; 31us; 32us; 29us; 30us; 7us; 14us; 28us; 16us; 10us; 23us; 15us; 18us; 28us; 20us; 28us; 24us; 27us; 28us; 28us; 23us; 65535us; 23us; 22us; 23us; 28us; 23us; 28us; 22us; 23us; 28us; 24us; 28us; 19us; 13us; 23us; 23us; 28us; 28us; 23us; 28us; 9us; 12us; 17us; 21us; 14us; 28us; 7us; 14us; 28us; 16us; 10us; 15us; 18us; 28us; 20us; 27us; 28us; 28us; 28us; 14us; 8us; 14us; 28us; 11us; 15us; 18us; 26us; 25us; 14us; 28us; 14us; 14us; 28us; 14us; 28us; 14us; 14us; 28us; 14us; 28us; 0us; 5us; 6us; 0us; 0us; 0us; 0us; 2us; 0us; 0us; 0us; 0us; 0us; 3us; 0us; 0us; 0us; 0us; 4us; 0us; 1us; 6us; 65535us; 40us; 0us; 0us; 0us; 0us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 39us; |] +let _fslex_tables = Internal.Utilities.Text.Lexing.UnicodeTables.Create(trans,actions) +let rec _fslex_dummy () = _fslex_dummy() +// Rule token +and token args skip lexbuf = + match _fslex_tables.Interpret(356,lexbuf) with + | 0 -> ( +# 227 "../lex.fsl" + Keywords.KeywordOrIdentifierToken args lexbuf (lexeme lexbuf) +# 1672 "lex.fs" + ) + | 1 -> ( +# 229 "../lex.fsl" + DO_BANG +# 1677 "lex.fs" + ) + | 2 -> ( +# 231 "../lex.fsl" + YIELD_BANG(true) +# 1682 "lex.fs" + ) + | 3 -> ( +# 233 "../lex.fsl" + YIELD_BANG(false) +# 1687 "lex.fs" + ) + | 4 -> ( +# 235 "../lex.fsl" + MATCH_BANG +# 1692 "lex.fs" + ) + | 5 -> ( +# 237 "../lex.fsl" + let tok = Keywords.KeywordOrIdentifierToken args lexbuf (lexemeTrimRight lexbuf 1) + match tok with + | LET _ -> BINDER (lexemeTrimRight lexbuf 1) + | _ -> fail args lexbuf (FSComp.SR.lexIdentEndInMarkReserved("!")) (Keywords.KeywordOrIdentifierToken args lexbuf (lexeme lexbuf)) +# 1700 "lex.fs" + ) + | 6 -> ( +# 242 "../lex.fsl" + fail args lexbuf (FSComp.SR.lexIdentEndInMarkReserved("#")) (Keywords.KeywordOrIdentifierToken args lexbuf (lexeme lexbuf)) +# 1705 "lex.fs" + ) + | 7 -> ( +# 244 "../lex.fsl" + let n = lexemeTrimRightToInt32 args lexbuf 1 + if n > 0x80 || n < -0x80 then fail args lexbuf (FSComp.SR.lexOutsideEightBitSigned()) (INT8(0y,false)) + // Allow to parse as min_int. Allowed only because we parse '-' as an operator. + else if n = 0x80 then INT8(sbyte(-0x80), true (* 'true' = 'bad'*) ) + else INT8(sbyte n,false) +# 1714 "lex.fs" + ) + | 8 -> ( +# 250 "../lex.fsl" + let n = lexemeTrimRightToInt32 args lexbuf 1 + if n > 0xFF || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideEightBitSignedHex()) (INT8(0y,false)) + else INT8(sbyte(byte(n)),false) +# 1721 "lex.fs" + ) + | 9 -> ( +# 254 "../lex.fsl" + let n = lexemeTrimRightToInt32 args lexbuf 2 + if n > 0xFF || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideEightBitUnsigned()) (UINT8(0uy)) + else UINT8(byte n) +# 1728 "lex.fs" + ) + | 10 -> ( +# 258 "../lex.fsl" + let n = lexemeTrimRightToInt32 args lexbuf 1 + if n > 0x8000 || n < -0x8000 then fail args lexbuf (FSComp.SR.lexOutsideSixteenBitSigned()) (INT16(0s,false)) + // Allow to parse as min_int. Allowed only because we parse '-' as an operator. + else if n = 0x8000 then INT16(-0x8000s,true) + else INT16(int16 n,false) +# 1737 "lex.fs" + ) + | 11 -> ( +# 264 "../lex.fsl" + let n = lexemeTrimRightToInt32 args lexbuf 1 + if n > 0xFFFF || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideSixteenBitSigned()) (INT16(0s,false)) + else INT16(int16(uint16(n)),false) +# 1744 "lex.fs" + ) + | 12 -> ( +# 268 "../lex.fsl" + let n = lexemeTrimRightToInt32 args lexbuf 2 + if n > 0xFFFF || n < 0 then fail args lexbuf (FSComp.SR.lexOutsideSixteenBitUnsigned()) (UINT16(0us)) + else UINT16(uint16 n) +# 1751 "lex.fs" + ) + | 13 -> ( +# 272 "../lex.fsl" + let s = removeUnderscores (lexemeTrimRight lexbuf 2) + // Allow to parse as min_int. Allowed only because we parse '-' as an operator. + if s = "2147483648" then INT32_DOT_DOT(-2147483648,true) else + let n = try int32 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitSigned()) 0 + INT32_DOT_DOT(n,false) + +# 1761 "lex.fs" + ) + | 14 -> ( +# 280 "../lex.fsl" + let s = removeUnderscores (lexeme lexbuf) + // Allow to parse as min_int. Allowed only because we parse '-' as an operator. + if s = "2147483648" then INT32(-2147483648,true) else + let n = + try int32 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitSigned()) 0 + INT32(n,false) + +# 1772 "lex.fs" + ) + | 15 -> ( +# 289 "../lex.fsl" + let s = removeUnderscores (lexemeTrimRight lexbuf 1) + // Allow to parse as min_int. Allowed only because we parse '-' as an operator. + if s = "2147483648" then INT32(-2147483648,true) else + let n = + try int32 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitSigned()) 0 + INT32(n,false) + +# 1783 "lex.fs" + ) + | 16 -> ( +# 298 "../lex.fsl" + + let s = removeUnderscores (lexemeTrimRight lexbuf 1) + let n = + try int64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) 0L + if n > 0xFFFFFFFFL || n < 0L then fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) (UINT32(0u)) else + UINT32(uint32 (uint64 n)) +# 1793 "lex.fs" + ) + | 17 -> ( +# 306 "../lex.fsl" + + let s = removeUnderscores (lexemeTrimRight lexbuf 2) + let n = + try int64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) 0L + if n > 0xFFFFFFFFL || n < 0L then fail args lexbuf (FSComp.SR.lexOutsideThirtyTwoBitUnsigned()) (UINT32(0u)) else + UINT32(uint32 (uint64 n)) +# 1803 "lex.fs" + ) + | 18 -> ( +# 314 "../lex.fsl" + let s = removeUnderscores (lexemeTrimRight lexbuf 1) + // Allow to parse as min_int. Stupid but allowed because we parse '-' as an operator. + if s = "9223372036854775808" then INT64(-9223372036854775808L,true) else + let n = + try int64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideSixtyFourBitSigned()) 0L + INT64(n,false) + +# 1814 "lex.fs" + ) + | 19 -> ( +# 323 "../lex.fsl" + let s = removeUnderscores (lexemeTrimRight lexbuf 2) + let n = + try uint64 s with _ -> fail args lexbuf (FSComp.SR.lexOutsideSixtyFourBitUnsigned()) 0UL + UINT64(n) +# 1822 "lex.fs" + ) + | 20 -> ( +# 329 "../lex.fsl" + try + NATIVEINT(int64 (removeUnderscores (lexemeTrimRight lexbuf 1))) + with _ -> fail args lexbuf (FSComp.SR.lexOutsideNativeSigned()) (NATIVEINT(0L)) +# 1829 "lex.fs" + ) + | 21 -> ( +# 334 "../lex.fsl" + try + UNATIVEINT(uint64 (removeUnderscores (lexemeTrimRight lexbuf 2))) + with _ -> fail args lexbuf (FSComp.SR.lexOutsideNativeUnsigned()) (UNATIVEINT(0UL)) +# 1836 "lex.fs" + ) + | 22 -> ( +# 339 "../lex.fsl" + IEEE32 (try float32(removeUnderscores (lexemeTrimRight lexbuf 1)) with _ -> fail args lexbuf (FSComp.SR.lexInvalidFloat()) 0.0f) +# 1841 "lex.fs" + ) + | 23 -> ( +# 341 "../lex.fsl" + IEEE64 (try float(lexeme lexbuf) with _ -> fail args lexbuf (FSComp.SR.lexInvalidFloat()) 0.0) +# 1846 "lex.fs" + ) + | 24 -> ( +# 344 "../lex.fsl" + try + let s = removeUnderscores (lexemeTrimRight lexbuf 1) + // This implements a range check for decimal literals + let d = System.Decimal.Parse(s,System.Globalization.NumberStyles.AllowExponent ||| System.Globalization.NumberStyles.Number,System.Globalization.CultureInfo.InvariantCulture) + DECIMAL d + with + e -> fail args lexbuf (FSComp.SR.lexOusideDecimal()) (DECIMAL (decimal 0)) + +# 1858 "lex.fs" + ) + | 25 -> ( +# 353 "../lex.fsl" + + let s = removeUnderscores (lexemeTrimRight lexbuf 2) + // Even though the intermediate step is an int64, display the "invalid float" message, since it will be less confusing to the user + let n64 = (try (int64 s) with _ -> fail args lexbuf (FSComp.SR.lexInvalidFloat()) 0L) + if n64 > 0xFFFFFFFFL || n64 < 0L then fail args lexbuf (FSComp.SR.lexOusideThirtyTwoBitFloat()) (IEEE32 0.0f) else + IEEE32 (System.BitConverter.ToSingle(System.BitConverter.GetBytes(int32 (uint32 (uint64 n64))),0)) +# 1868 "lex.fs" + ) + | 26 -> ( +# 361 "../lex.fsl" + + let n64 = (try int64 (removeUnderscores (lexemeTrimRight lexbuf 2)) with _ -> fail args lexbuf (FSComp.SR.lexInvalidFloat()) 0L) + IEEE64 (System.BitConverter.Int64BitsToDouble(n64)) +# 1875 "lex.fs" + ) + | 27 -> ( +# 366 "../lex.fsl" + let s = lexeme lexbuf + BIGNUM (removeUnderscores (lexemeTrimRight lexbuf 1), s.[s.Length-1..s.Length-1]) +# 1881 "lex.fs" + ) + | 28 -> ( +# 370 "../lex.fsl" + fail args lexbuf (FSComp.SR.lexInvalidNumericLiteral()) (INT32(0,false)) +# 1886 "lex.fs" + ) + | 29 -> ( +# 373 "../lex.fsl" + let s = lexeme lexbuf + CHAR (if s.[1] = '\\' then escape s.[2] else s.[1]) +# 1892 "lex.fs" + ) + | 30 -> ( +# 377 "../lex.fsl" + let s = lexeme lexbuf + let x = int32 (if s.[1] = '\\' then escape s.[2] else s.[1]) + if x < 0 || x > 127 then + fail args lexbuf (FSComp.SR.lexInvalidByteLiteral()) (UINT8(byte 0)) + else + UINT8 (byte(x)) +# 1902 "lex.fs" + ) + | 31 -> ( +# 385 "../lex.fsl" + let s = lexeme lexbuf + let c = trigraph s.[2] s.[3] s.[4] + let x = int32 c + if x < 0 || x > 255 then + fail args lexbuf (FSComp.SR.lexInvalidCharLiteral()) (CHAR c) + else + CHAR c +# 1913 "lex.fs" + ) + | 32 -> ( +# 394 "../lex.fsl" + let s = lexeme lexbuf + let x = int32 (trigraph s.[2] s.[3] s.[4]) + if x < 0 || x > 255 then + fail args lexbuf (FSComp.SR.lexInvalidByteLiteral()) (UINT8(byte 0)) + else + UINT8 (byte(x)) +# 1923 "lex.fs" + ) + | 33 -> ( +# 402 "../lex.fsl" + let x = int32 (unicodeGraphShort (lexemeTrimBoth lexbuf 3 2)) + if x < 0 || x > 127 then + fail args lexbuf (FSComp.SR.lexInvalidByteLiteral()) (UINT8(byte 0)) + else + UINT8 (byte(x)) +# 1932 "lex.fs" + ) + | 34 -> ( +# 408 "../lex.fsl" + CHAR (char (int32 (hexGraphShort (lexemeTrimBoth lexbuf 3 1)))) +# 1937 "lex.fs" + ) + | 35 -> ( +# 409 "../lex.fsl" + CHAR (char (int32 (unicodeGraphShort (lexemeTrimBoth lexbuf 3 1)))) +# 1942 "lex.fs" + ) + | 36 -> ( +# 411 "../lex.fsl" + match unicodeGraphLong (lexemeTrimBoth lexbuf 3 1) with + | SingleChar(c) -> CHAR (char c) + | _ -> fail args lexbuf (FSComp.SR.lexThisUnicodeOnlyInStringLiterals()) (CHAR (char 0)) +# 1949 "lex.fs" + ) + | 37 -> ( +# 415 "../lex.fsl" + if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf +# 1954 "lex.fs" + ) + | 38 -> ( +# 417 "../lex.fsl" + if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf +# 1959 "lex.fs" + ) + | 39 -> ( +# 419 "../lex.fsl" + if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf +# 1964 "lex.fs" + ) + | 40 -> ( +# 421 "../lex.fsl" + if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf +# 1969 "lex.fs" + ) + | 41 -> ( +# 424 "../lex.fsl" + LPAREN_STAR_RPAREN +# 1974 "lex.fs" + ) + | 42 -> ( +# 427 "../lex.fsl" + let m = lexbuf.LexemeRange + if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,1,m))) else comment (1,m,args) skip lexbuf +# 1980 "lex.fs" + ) + | 43 -> ( +# 431 "../lex.fsl" + let m = lexbuf.LexemeRange + if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf +# 1986 "lex.fs" + ) + | 44 -> ( +# 435 "../lex.fsl" + let buf,fin,m = startString args lexbuf + if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string (buf,fin,m,args) skip lexbuf +# 1992 "lex.fs" + ) + | 45 -> ( +# 439 "../lex.fsl" + let buf,fin,m = startString args lexbuf + if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString (buf,fin,m,args) skip lexbuf +# 1998 "lex.fs" + ) + | 46 -> ( +# 443 "../lex.fsl" + fail args lexbuf (FSComp.SR.lexTokenReserved()) (WHITESPACE (LexCont.Token !args.ifdefStack)) +# 2003 "lex.fs" + ) + | 47 -> ( +# 446 "../lex.fsl" + let buf,fin,m = startString args lexbuf + if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString (buf,fin,m,args) skip lexbuf +# 2009 "lex.fs" + ) + | 48 -> ( +# 450 "../lex.fsl" + if skip then token args skip lexbuf + else WHITESPACE (LexCont.Token !args.ifdefStack) +# 2015 "lex.fs" + ) + | 49 -> ( +# 454 "../lex.fsl" + if args.lightSyntaxStatus.Status then errorR(Error(FSComp.SR.lexTabsNotAllowed(),lexbuf.LexemeRange)) + if not skip then (WHITESPACE (LexCont.Token !args.ifdefStack)) else token args skip lexbuf +# 2021 "lex.fs" + ) + | 50 -> ( +# 458 "../lex.fsl" + // 4+ slash are 1-line comments, online 3 slash are XmlDoc + let m = lexbuf.LexemeRange + if not skip then (LINE_COMMENT (LexCont.SingleLineComment(!args.ifdefStack,1,m))) else singleLineComment (None,1,m,args) skip lexbuf +# 2028 "lex.fs" + ) + | 51 -> ( +# 463 "../lex.fsl" + // Match exactly 3 slash, 4+ slash caught by preceding rule + let m = lexbuf.LexemeRange + let doc = lexemeTrimLeft lexbuf 3 + let sb = (new StringBuilder(100)).Append(doc) + if not skip then (LINE_COMMENT (LexCont.SingleLineComment(!args.ifdefStack,1,m))) else singleLineComment (Some sb,1,m,args) skip lexbuf +# 2037 "lex.fs" + ) + | 52 -> ( +# 470 "../lex.fsl" + // Need to read all operator symbols too, otherwise it might be parsed by a rule below + let m = lexbuf.LexemeRange + if not skip then (LINE_COMMENT (LexCont.SingleLineComment(!args.ifdefStack,1,m))) else singleLineComment (None,1,m,args) skip lexbuf +# 2044 "lex.fs" + ) + | 53 -> ( +# 475 "../lex.fsl" + newline lexbuf; if not skip then (WHITESPACE (LexCont.Token !args.ifdefStack)) else token args skip lexbuf +# 2049 "lex.fs" + ) + | 54 -> ( +# 478 "../lex.fsl" + Keywords.IdentifierToken args lexbuf (lexemeTrimBoth lexbuf 2 2) +# 2054 "lex.fs" + ) + | 55 -> ( +# 481 "../lex.fsl" + let pos = lexbuf.EndPos + if skip then + let s = lexeme lexbuf + let rec parseLeadingDirective n = + match s.[n] with + | c when c >= 'a' && c <= 'z' -> parseLeadingDirective (n+1) + | _ -> parseLeadingWhitespace n // goto the next state + + and parseLeadingWhitespace n = + match s.[n] with + | ' ' | '\t' -> parseLeadingWhitespace (n+1) + | _ -> parseLineNumber n n // goto the next state + + and parseLineNumber start n = + match s.[n] with + | c when c >= '0' && c <= '9' -> parseLineNumber start (n+1) + | _ -> let text = (String.sub s start (n-start)) + let lineNumber = + try int32 text + with err -> errorR(Error(FSComp.SR.lexInvalidLineNumber(text),lexbuf.LexemeRange)); 0 + lineNumber, parseWhitespaceBeforeFile n // goto the next state + + and parseWhitespaceBeforeFile n = + match s.[n] with + | ' ' | '\t' | '@' -> parseWhitespaceBeforeFile (n+1) + | '"' -> Some (parseFile (n+1) (n+1)) + | _ -> None + + and parseFile start n = + match s.[n] with + | '"' -> String.sub s start (n-start) + | _ -> parseFile start (n+1) + // Call the parser + let line,file = parseLeadingDirective 1 + // Construct the new position + if args.applyLineDirectives then + lexbuf.EndPos <- pos.ApplyLineDirective((match file with Some f -> fileIndexOfFile f | None -> pos.FileIndex), line) + else + // add a newline when we don't apply a directive since we consumed a newline getting here + newline lexbuf + token args skip lexbuf + else + // add a newline when we don't apply a directive since we consumed a newline getting here + newline lexbuf + (HASH_LINE (LexCont.Token !args.ifdefStack)) +# 2103 "lex.fs" + ) + | 56 -> ( +# 529 "../lex.fsl" + checkExprOp lexbuf; LQUOTE ("<@ @>", false) +# 2108 "lex.fs" + ) + | 57 -> ( +# 530 "../lex.fsl" + checkExprOp lexbuf; LQUOTE ("<@@ @@>", true) +# 2113 "lex.fs" + ) + | 58 -> ( +# 531 "../lex.fsl" + checkExprOp lexbuf; RQUOTE ("<@ @>", false) +# 2118 "lex.fs" + ) + | 59 -> ( +# 532 "../lex.fsl" + checkExprOp lexbuf; RQUOTE ("<@@ @@>", true) +# 2123 "lex.fs" + ) + | 60 -> ( +# 533 "../lex.fsl" + HASH +# 2128 "lex.fs" + ) + | 61 -> ( +# 534 "../lex.fsl" + AMP +# 2133 "lex.fs" + ) + | 62 -> ( +# 535 "../lex.fsl" + AMP_AMP +# 2138 "lex.fs" + ) + | 63 -> ( +# 536 "../lex.fsl" + BAR_BAR +# 2143 "lex.fs" + ) + | 64 -> ( +# 537 "../lex.fsl" + QUOTE +# 2148 "lex.fs" + ) + | 65 -> ( +# 538 "../lex.fsl" + LPAREN +# 2153 "lex.fs" + ) + | 66 -> ( +# 539 "../lex.fsl" + RPAREN +# 2158 "lex.fs" + ) + | 67 -> ( +# 540 "../lex.fsl" + STAR +# 2163 "lex.fs" + ) + | 68 -> ( +# 541 "../lex.fsl" + COMMA +# 2168 "lex.fs" + ) + | 69 -> ( +# 542 "../lex.fsl" + RARROW +# 2173 "lex.fs" + ) + | 70 -> ( +# 543 "../lex.fsl" + QMARK +# 2178 "lex.fs" + ) + | 71 -> ( +# 544 "../lex.fsl" + QMARK_QMARK +# 2183 "lex.fs" + ) + | 72 -> ( +# 545 "../lex.fsl" + DOT_DOT +# 2188 "lex.fs" + ) + | 73 -> ( +# 546 "../lex.fsl" + DOT_DOT_HAT +# 2193 "lex.fs" + ) + | 74 -> ( +# 547 "../lex.fsl" + DOT +# 2198 "lex.fs" + ) + | 75 -> ( +# 548 "../lex.fsl" + COLON +# 2203 "lex.fs" + ) + | 76 -> ( +# 549 "../lex.fsl" + COLON_COLON +# 2208 "lex.fs" + ) + | 77 -> ( +# 550 "../lex.fsl" + COLON_GREATER +# 2213 "lex.fs" + ) + | 78 -> ( +# 551 "../lex.fsl" + RQUOTE_DOT ("<@ @>",false) +# 2218 "lex.fs" + ) + | 79 -> ( +# 552 "../lex.fsl" + RQUOTE_DOT ("<@@ @@>",true) +# 2223 "lex.fs" + ) + | 80 -> ( +# 553 "../lex.fsl" + GREATER_BAR_RBRACK +# 2228 "lex.fs" + ) + | 81 -> ( +# 554 "../lex.fsl" + COLON_QMARK_GREATER +# 2233 "lex.fs" + ) + | 82 -> ( +# 555 "../lex.fsl" + COLON_QMARK +# 2238 "lex.fs" + ) + | 83 -> ( +# 556 "../lex.fsl" + COLON_EQUALS +# 2243 "lex.fs" + ) + | 84 -> ( +# 557 "../lex.fsl" + SEMICOLON_SEMICOLON +# 2248 "lex.fs" + ) + | 85 -> ( +# 558 "../lex.fsl" + SEMICOLON +# 2253 "lex.fs" + ) + | 86 -> ( +# 559 "../lex.fsl" + LARROW +# 2258 "lex.fs" + ) + | 87 -> ( +# 560 "../lex.fsl" + EQUALS +# 2263 "lex.fs" + ) + | 88 -> ( +# 561 "../lex.fsl" + LBRACK +# 2268 "lex.fs" + ) + | 89 -> ( +# 562 "../lex.fsl" + LBRACK_BAR +# 2273 "lex.fs" + ) + | 90 -> ( +# 563 "../lex.fsl" + LBRACE_BAR +# 2278 "lex.fs" + ) + | 91 -> ( +# 564 "../lex.fsl" + LESS false +# 2283 "lex.fs" + ) + | 92 -> ( +# 565 "../lex.fsl" + GREATER false +# 2288 "lex.fs" + ) + | 93 -> ( +# 566 "../lex.fsl" + LBRACK_LESS +# 2293 "lex.fs" + ) + | 94 -> ( +# 567 "../lex.fsl" + RBRACK +# 2298 "lex.fs" + ) + | 95 -> ( +# 568 "../lex.fsl" + BAR_RBRACK +# 2303 "lex.fs" + ) + | 96 -> ( +# 569 "../lex.fsl" + BAR_RBRACE +# 2308 "lex.fs" + ) + | 97 -> ( +# 570 "../lex.fsl" + GREATER_RBRACK +# 2313 "lex.fs" + ) + | 98 -> ( +# 571 "../lex.fsl" + LBRACE +# 2318 "lex.fs" + ) + | 99 -> ( +# 572 "../lex.fsl" + BAR +# 2323 "lex.fs" + ) + | 100 -> ( +# 573 "../lex.fsl" + RBRACE +# 2328 "lex.fs" + ) + | 101 -> ( +# 574 "../lex.fsl" + DOLLAR +# 2333 "lex.fs" + ) + | 102 -> ( +# 575 "../lex.fsl" + PERCENT_OP("%") +# 2338 "lex.fs" + ) + | 103 -> ( +# 576 "../lex.fsl" + PERCENT_OP("%%") +# 2343 "lex.fs" + ) + | 104 -> ( +# 577 "../lex.fsl" + MINUS +# 2348 "lex.fs" + ) + | 105 -> ( +# 578 "../lex.fsl" + RESERVED +# 2353 "lex.fs" + ) + | 106 -> ( +# 579 "../lex.fsl" + RESERVED +# 2358 "lex.fs" + ) + | 107 -> ( +# 580 "../lex.fsl" + checkExprOp lexbuf; INFIX_STAR_STAR_OP(lexeme lexbuf) +# 2363 "lex.fs" + ) + | 108 -> ( +# 581 "../lex.fsl" + checkExprOp lexbuf; INFIX_STAR_DIV_MOD_OP(lexeme lexbuf) +# 2368 "lex.fs" + ) + | 109 -> ( +# 582 "../lex.fsl" + checkExprOp lexbuf; PLUS_MINUS_OP(lexeme lexbuf) +# 2373 "lex.fs" + ) + | 110 -> ( +# 583 "../lex.fsl" + checkExprOp lexbuf; INFIX_AT_HAT_OP(lexeme lexbuf) +# 2378 "lex.fs" + ) + | 111 -> ( +# 584 "../lex.fsl" + checkExprOp lexbuf; INFIX_COMPARE_OP(lexeme lexbuf) +# 2383 "lex.fs" + ) + | 112 -> ( +# 585 "../lex.fsl" + checkExprOp lexbuf; INFIX_AMP_OP(lexeme lexbuf) +# 2388 "lex.fs" + ) + | 113 -> ( +# 586 "../lex.fsl" + checkExprOp lexbuf; INFIX_BAR_OP(lexeme lexbuf) +# 2393 "lex.fs" + ) + | 114 -> ( +# 587 "../lex.fsl" + checkExprOp lexbuf; PREFIX_OP(lexeme lexbuf) +# 2398 "lex.fs" + ) + | 115 -> ( +# 589 "../lex.fsl" + FUNKY_OPERATOR_NAME(lexeme lexbuf) +# 2403 "lex.fs" + ) + | 116 -> ( +# 591 "../lex.fsl" + // Treat shebangs like regular comments, but they are only allowed at the start of a file + let m = lexbuf.LexemeRange + let tok = shouldStartFile args lexbuf m (0,FSComp.SR.lexHashBangMustBeFirstInFile()) (LINE_COMMENT (LexCont.SingleLineComment(!args.ifdefStack,1,m))) + if not skip then tok else singleLineComment (None,1,m,args) skip lexbuf +# 2411 "lex.fs" + ) + | 117 -> ( +# 598 "../lex.fsl" + if args.lightSyntaxStatus.ExplicitlySet && args.lightSyntaxStatus.WarnOnMultipleTokens then + warning(Error((0,"#light should only occur as the first non-comment text in an F# source file"),lexbuf.LexemeRange)) + // TODO unreachable error above, I think? - brianmcn + args.lightSyntaxStatus.Status <- true + if not skip then (HASH_LIGHT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf +# 2420 "lex.fs" + ) + | 118 -> ( +# 605 "../lex.fsl" + args.lightSyntaxStatus.Status <- false + mlCompatWarning (FSComp.SR.lexIndentOffForML()) lexbuf.LexemeRange + if not skip then (HASH_LIGHT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf +# 2427 "lex.fs" + ) + | 119 -> ( +# 610 "../lex.fsl" + let m = lexbuf.LexemeRange + let lookup id = List.contains id args.defines + let lexed = lexeme lexbuf + let isTrue = evalIfDefExpression lexbuf.StartPos lexbuf.SupportsFeature args lookup lexed + args.ifdefStack := (IfDefIf,m) :: !(args.ifdefStack) + + // Get the token; make sure it starts at zero position & return + let cont, f = + ( if isTrue then (LexCont.EndLine(LexerEndlineContinuation.Token(!args.ifdefStack)), endline (LexerEndlineContinuation.Token !args.ifdefStack) args skip) + else (LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,0,m)), endline (LexerEndlineContinuation.Skip(!args.ifdefStack,0,m)) args skip) ) + let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashIfMustBeFirst()) (HASH_IF(m,lexed,cont)) + if not skip then tok else f lexbuf +# 2443 "lex.fs" + ) + | 120 -> ( +# 624 "../lex.fsl" + let lexed = (lexeme lexbuf) + match !(args.ifdefStack) with + | [] -> LEX_FAILURE (FSComp.SR.lexHashElseNoMatchingIf()) + | (IfDefElse,_) :: _rest -> LEX_FAILURE (FSComp.SR.lexHashEndifRequiredForElse()) + | (IfDefIf,_) :: rest -> + let m = lexbuf.LexemeRange + args.ifdefStack := (IfDefElse,m) :: rest + let tok = HASH_ELSE(m,lexed, LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,0,m))) + let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashElseMustBeFirst()) tok + if not skip then tok else endline (LexerEndlineContinuation.Skip(!args.ifdefStack,0,m)) args skip lexbuf +# 2457 "lex.fs" + ) + | 121 -> ( +# 636 "../lex.fsl" + let lexed = (lexeme lexbuf) + let m = lexbuf.LexemeRange + match !(args.ifdefStack) with + | []-> LEX_FAILURE (FSComp.SR.lexHashEndingNoMatchingIf()) + | _ :: rest -> + args.ifdefStack := rest + let tok = HASH_ENDIF(m,lexed,LexCont.EndLine(LexerEndlineContinuation.Token(!args.ifdefStack))) + let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashEndifMustBeFirst()) tok + if not skip then tok else endline (LexerEndlineContinuation.Token(!args.ifdefStack)) args skip lexbuf +# 2470 "lex.fs" + ) + | 122 -> ( +# 647 "../lex.fsl" + let tok = fail args lexbuf (FSComp.SR.lexHashIfMustHaveIdent()) (WHITESPACE (LexCont.Token !args.ifdefStack)) + if not skip then tok else token args skip lexbuf +# 2476 "lex.fs" + ) + | 123 -> ( +# 652 "../lex.fsl" + unexpectedChar lexbuf +# 2481 "lex.fs" + ) + | 124 -> ( +# 654 "../lex.fsl" + EOF (LexCont.Token !args.ifdefStack) +# 2486 "lex.fs" + ) + | _ -> failwith "token" +// Rule ifdefSkip +and ifdefSkip n m args skip lexbuf = + match _fslex_tables.Interpret(299,lexbuf) with + | 0 -> ( +# 660 "../lex.fsl" + let m = lexbuf.LexemeRange + + // If #if is the first thing on the line then increase depth, otherwise skip, because it is invalid (e.g. "(**) #if ...") + if (m.StartColumn <> 0) then + if not skip then (INACTIVECODE (LexCont.IfDefSkip(!args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf + else + let tok = INACTIVECODE(LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,n+1,m))) + if not skip then tok else endline (LexerEndlineContinuation.Skip(!args.ifdefStack,n+1,m)) args skip lexbuf +# 2502 "lex.fs" + ) + | 1 -> ( +# 670 "../lex.fsl" + let lexed = (lexeme lexbuf) + let m = lexbuf.LexemeRange + + // If #else is the first thing on the line then process it, otherwise ignore, because it is invalid (e.g. "(**) #else ...") + if (m.StartColumn <> 0) then + if not skip then (INACTIVECODE (LexCont.IfDefSkip(!args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf + elif n = 0 then + match !(args.ifdefStack) with + | []-> LEX_FAILURE (FSComp.SR.lexHashElseNoMatchingIf()) + | (IfDefElse,_) :: _rest -> LEX_FAILURE (FSComp.SR.lexHashEndifRequiredForElse()) + | (IfDefIf,_) :: rest -> + let m = lexbuf.LexemeRange + args.ifdefStack := (IfDefElse,m) :: rest + if not skip then (HASH_ELSE(m,lexed,LexCont.EndLine(LexerEndlineContinuation.Token(!args.ifdefStack)))) else endline (LexerEndlineContinuation.Token(!args.ifdefStack)) args skip lexbuf + else + if not skip then (INACTIVECODE(LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,n,m)))) else endline (LexerEndlineContinuation.Skip(!args.ifdefStack,n,m)) args skip lexbuf +# 2522 "lex.fs" + ) + | 2 -> ( +# 688 "../lex.fsl" + let lexed = lexeme lexbuf + let m = lexbuf.LexemeRange + + // If #endif is the first thing on the line then process it, otherwise ignore, because it is invalid (e.g. "(**) #endif ...") + if (m.StartColumn <> 0) then + if not skip then (INACTIVECODE (LexCont.IfDefSkip(!args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf + elif n = 0 then + match !(args.ifdefStack) with + | [] -> LEX_FAILURE (FSComp.SR.lexHashEndingNoMatchingIf()) + | _ :: rest -> + args.ifdefStack := rest + if not skip then (HASH_ENDIF(m,lexed,LexCont.EndLine(LexerEndlineContinuation.Token(!args.ifdefStack)))) else endline (LexerEndlineContinuation.Token(!args.ifdefStack)) args skip lexbuf + else + let tok = INACTIVECODE(LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,n-1,m))) + let tok = shouldStartLine args lexbuf m (FSComp.SR.lexWrongNestedHashEndif()) tok + if not skip then tok else endline (LexerEndlineContinuation.Skip(!args.ifdefStack,(n-1),m)) args skip lexbuf +# 2542 "lex.fs" + ) + | 3 -> ( +# 706 "../lex.fsl" + newline lexbuf; ifdefSkip n m args skip lexbuf +# 2547 "lex.fs" + ) + | 4 -> ( +# 712 "../lex.fsl" + // This tries to be nice and get tokens as 'words' because VS uses this when selecting stuff + if not skip then (INACTIVECODE (LexCont.IfDefSkip(!args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf +# 2553 "lex.fs" + ) + | 5 -> ( +# 715 "../lex.fsl" + EOF (LexCont.IfDefSkip(!args.ifdefStack,n,m)) +# 2558 "lex.fs" + ) + | _ -> failwith "ifdefSkip" +// Rule endline +and endline cont args skip lexbuf = + match _fslex_tables.Interpret(292,lexbuf) with + | 0 -> ( +# 721 "../lex.fsl" + newline lexbuf + match cont with + | LexerEndlineContinuation.Token(ifdefStack) -> if not skip then (WHITESPACE(LexCont.Token ifdefStack)) else token args skip lexbuf + | LexerEndlineContinuation.Skip(ifdefStack, n, m) -> if not skip then (INACTIVECODE (LexCont.IfDefSkip(ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf + +# 2571 "lex.fs" + ) + | 1 -> ( +# 727 "../lex.fsl" + match cont with + | LexerEndlineContinuation.Token(ifdefStack) -> (EOF(LexCont.Token ifdefStack)) + | LexerEndlineContinuation.Skip(ifdefStack, n, m) -> (EOF(LexCont.IfDefSkip(ifdefStack,n,m))) + +# 2579 "lex.fs" + ) + | 2 -> ( +# 733 "../lex.fsl" + let tok = fail args lexbuf (FSComp.SR.pplexExpectedSingleLineComment()) (WHITESPACE (LexCont.Token !args.ifdefStack)) + if not skip then tok else token args skip lexbuf +# 2585 "lex.fs" + ) + | _ -> failwith "endline" +// Rule string +and string sargs skip lexbuf = + match _fslex_tables.Interpret(238,lexbuf) with + | 0 -> ( +# 738 "../lex.fsl" + let (_buf,_fin,m,args) = sargs + newline lexbuf + if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf +# 2596 "lex.fs" + ) + | 1 -> ( +# 743 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addByteChar buf (escape (lexeme lexbuf).[1]) + if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf +# 2603 "lex.fs" + ) + | 2 -> ( +# 748 "../lex.fsl" + let (buf,_fin,m,args) = sargs + let s = lexeme lexbuf + addByteChar buf (trigraph s.[1] s.[2] s.[3]) + if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf +# 2611 "lex.fs" + ) + | 3 -> ( +# 754 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addUnicodeChar buf (int (hexGraphShort (lexemeTrimLeft lexbuf 2))) + if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf +# 2618 "lex.fs" + ) + | 4 -> ( +# 759 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addUnicodeChar buf (int (unicodeGraphShort (lexemeTrimLeft lexbuf 2))) + if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf +# 2625 "lex.fs" + ) + | 5 -> ( +# 764 "../lex.fsl" + let (buf,_fin,m,args) = sargs + let hexChars = lexemeTrimLeft lexbuf 2 + let result () = if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf + match unicodeGraphLong hexChars with + | Invalid -> + fail args lexbuf (FSComp.SR.lexInvalidUnicodeLiteral hexChars) (result ()) + | SingleChar(c) -> + addUnicodeChar buf (int c) + result () + | SurrogatePair(hi, lo) -> + addUnicodeChar buf (int hi) + addUnicodeChar buf (int lo) + result () +# 2642 "lex.fs" + ) + | 6 -> ( +# 779 "../lex.fsl" + let (buf,fin,_m,_args) = sargs + let m2 = lexbuf.LexemeRange + callStringFinisher fin buf m2 false +# 2649 "lex.fs" + ) + | 7 -> ( +# 784 "../lex.fsl" + let (buf,fin,_m,_args) = sargs + let m2 = lexbuf.LexemeRange + callStringFinisher fin buf m2 true +# 2656 "lex.fs" + ) + | 8 -> ( +# 789 "../lex.fsl" + let (buf,_fin,m,args) = sargs + newline lexbuf + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf +# 2664 "lex.fs" + ) + | 9 -> ( +# 795 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf +# 2671 "lex.fs" + ) + | 10 -> ( +# 801 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf +# 2678 "lex.fs" + ) + | 11 -> ( +# 806 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf +# 2685 "lex.fs" + ) + | 12 -> ( +# 811 "../lex.fsl" + let (_buf,_fin,m,args) = sargs + EOF (LexCont.String(!args.ifdefStack,m)) +# 2691 "lex.fs" + ) + | 13 -> ( +# 815 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf +# 2698 "lex.fs" + ) + | _ -> failwith "string" +// Rule verbatimString +and verbatimString sargs skip lexbuf = + match _fslex_tables.Interpret(208,lexbuf) with + | 0 -> ( +# 821 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addByteChar buf '\"' + if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf +# 2709 "lex.fs" + ) + | 1 -> ( +# 826 "../lex.fsl" + let (buf,fin,_m,_args) = sargs + let m2 = lexbuf.LexemeRange + callStringFinisher fin buf m2 false +# 2716 "lex.fs" + ) + | 2 -> ( +# 831 "../lex.fsl" + let (buf,fin,_m,_args) = sargs + let m2 = lexbuf.LexemeRange + callStringFinisher fin buf m2 true +# 2723 "lex.fs" + ) + | 3 -> ( +# 836 "../lex.fsl" + let (buf,_fin,m,args) = sargs + newline lexbuf + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf +# 2731 "lex.fs" + ) + | 4 -> ( +# 842 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf +# 2738 "lex.fs" + ) + | 5 -> ( +# 848 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf +# 2745 "lex.fs" + ) + | 6 -> ( +# 853 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf +# 2752 "lex.fs" + ) + | 7 -> ( +# 858 "../lex.fsl" + let (_buf,_fin,m,args) = sargs + EOF (LexCont.VerbatimString(!args.ifdefStack,m)) +# 2758 "lex.fs" + ) + | 8 -> ( +# 862 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf +# 2765 "lex.fs" + ) + | _ -> failwith "verbatimString" +// Rule tripleQuoteString +and tripleQuoteString sargs skip lexbuf = + match _fslex_tables.Interpret(178,lexbuf) with + | 0 -> ( +# 868 "../lex.fsl" + let (buf,fin,_m,_args) = sargs + let m2 = lexbuf.LexemeRange + callStringFinisher fin buf m2 false +# 2776 "lex.fs" + ) + | 1 -> ( +# 873 "../lex.fsl" + let (buf,_fin,m,args) = sargs + newline lexbuf + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf +# 2784 "lex.fs" + ) + | 2 -> ( +# 880 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf +# 2791 "lex.fs" + ) + | 3 -> ( +# 886 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf +# 2798 "lex.fs" + ) + | 4 -> ( +# 891 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf +# 2805 "lex.fs" + ) + | 5 -> ( +# 896 "../lex.fsl" + let (_buf,_fin,m,args) = sargs + EOF (LexCont.TripleQuoteString(!args.ifdefStack,m)) +# 2811 "lex.fs" + ) + | 6 -> ( +# 900 "../lex.fsl" + let (buf,_fin,m,args) = sargs + addUnicodeString buf (lexeme lexbuf) + if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf +# 2818 "lex.fs" + ) + | _ -> failwith "tripleQuoteString" +// Rule singleLineComment +and singleLineComment cargs skip lexbuf = + match _fslex_tables.Interpret(165,lexbuf) with + | 0 -> ( +# 907 "../lex.fsl" + let buff,_n,_m,args = cargs + trySaveXmlDoc lexbuf buff + newline lexbuf + // Saves the documentation (if we're collecting any) into a buffer-local variable. + if not skip then (LINE_COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf +# 2831 "lex.fs" + ) + | 1 -> ( +# 914 "../lex.fsl" + let _, _n,_m,args = cargs + // NOTE: it is legal to end a file with this comment, so we'll return EOF as a token + EOF (LexCont.Token !args.ifdefStack) +# 2838 "lex.fs" + ) + | 2 -> ( +# 920 "../lex.fsl" + let buff,n,m,args = cargs + // Append the current token to the XML documentation if we're collecting it + tryAppendXmlDoc buff (lexeme lexbuf) + if not skip then (LINE_COMMENT (LexCont.SingleLineComment(!args.ifdefStack,n,m))) else singleLineComment (buff,n,m,args) skip lexbuf +# 2846 "lex.fs" + ) + | 3 -> ( +# 926 "../lex.fsl" + let _, _n,_m,args = cargs + if not skip then (LINE_COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf +# 2852 "lex.fs" + ) + | _ -> failwith "singleLineComment" +// Rule comment +and comment cargs skip lexbuf = + match _fslex_tables.Interpret(139,lexbuf) with + | 0 -> ( +# 932 "../lex.fsl" + let n,m,args = cargs + if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf +# 2862 "lex.fs" + ) + | 1 -> ( +# 936 "../lex.fsl" + let n,m,args = cargs + if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf +# 2868 "lex.fs" + ) + | 2 -> ( +# 940 "../lex.fsl" + let n,m,args = cargs + if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf +# 2874 "lex.fs" + ) + | 3 -> ( +# 944 "../lex.fsl" + let n,m,args = cargs + if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf +# 2880 "lex.fs" + ) + | 4 -> ( +# 948 "../lex.fsl" + let n,m,args = cargs + if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment cargs skip lexbuf +# 2886 "lex.fs" + ) + | 5 -> ( +# 952 "../lex.fsl" + let n,m,args = cargs + if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n+1,m))) else comment (n+1,m,args) skip lexbuf +# 2892 "lex.fs" + ) + | 6 -> ( +# 956 "../lex.fsl" + let n,m,args = cargs + newline lexbuf + if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment cargs skip lexbuf +# 2899 "lex.fs" + ) + | 7 -> ( +# 960 "../lex.fsl" + + let n,m,args = cargs + if n > 1 then if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n-1,m))) else comment (n-1,m,args) skip lexbuf + else if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf +# 2907 "lex.fs" + ) + | 8 -> ( +# 967 "../lex.fsl" + let n,m,args = cargs + if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment cargs skip lexbuf +# 2913 "lex.fs" + ) + | 9 -> ( +# 971 "../lex.fsl" + let n,m,args = cargs + EOF (LexCont.Comment(!args.ifdefStack,n,m)) +# 2919 "lex.fs" + ) + | 10 -> ( +# 975 "../lex.fsl" + let n,m,args = cargs + if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf +# 2925 "lex.fs" + ) + | _ -> failwith "comment" +// Rule stringInComment +and stringInComment n m args skip lexbuf = + match _fslex_tables.Interpret(90,lexbuf) with + | 0 -> ( +# 981 "../lex.fsl" + newline lexbuf + if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf +# 2935 "lex.fs" + ) + | 1 -> ( +# 993 "../lex.fsl" + if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf +# 2940 "lex.fs" + ) + | 2 -> ( +# 997 "../lex.fsl" + if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf +# 2945 "lex.fs" + ) + | 3 -> ( +# 1000 "../lex.fsl" + newline lexbuf + if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf +# 2951 "lex.fs" + ) + | 4 -> ( +# 1004 "../lex.fsl" + EOF (LexCont.StringInComment(!args.ifdefStack,n,m)) +# 2956 "lex.fs" + ) + | 5 -> ( +# 1008 "../lex.fsl" + if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf +# 2961 "lex.fs" + ) + | _ -> failwith "stringInComment" +// Rule verbatimStringInComment +and verbatimStringInComment n m args skip lexbuf = + match _fslex_tables.Interpret(61,lexbuf) with + | 0 -> ( +# 1013 "../lex.fsl" + if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf +# 2970 "lex.fs" + ) + | 1 -> ( +# 1016 "../lex.fsl" + if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf +# 2975 "lex.fs" + ) + | 2 -> ( +# 1022 "../lex.fsl" + if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf +# 2980 "lex.fs" + ) + | 3 -> ( +# 1025 "../lex.fsl" + newline lexbuf + if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf +# 2986 "lex.fs" + ) + | 4 -> ( +# 1029 "../lex.fsl" + EOF (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m)) +# 2991 "lex.fs" + ) + | 5 -> ( +# 1033 "../lex.fsl" + if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf +# 2996 "lex.fs" + ) + | _ -> failwith "verbatimStringInComment" +// Rule tripleQuoteStringInComment +and tripleQuoteStringInComment n m args skip lexbuf = + match _fslex_tables.Interpret(31,lexbuf) with + | 0 -> ( +# 1038 "../lex.fsl" + if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf +# 3005 "lex.fs" + ) + | 1 -> ( +# 1044 "../lex.fsl" + if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf +# 3010 "lex.fs" + ) + | 2 -> ( +# 1047 "../lex.fsl" + newline lexbuf + if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf +# 3016 "lex.fs" + ) + | 3 -> ( +# 1051 "../lex.fsl" + EOF (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m)) +# 3021 "lex.fs" + ) + | 4 -> ( +# 1055 "../lex.fsl" + if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf +# 3026 "lex.fs" + ) + | _ -> failwith "tripleQuoteStringInComment" +// Rule mlOnly +and mlOnly m args skip lexbuf = + match _fslex_tables.Interpret(0,lexbuf) with + | 0 -> ( +# 1060 "../lex.fsl" + let buf = ByteBuffer.Create 100 + let m2 = lexbuf.LexemeRange + let _ = string (buf,defaultStringFinisher,m2,args) skip lexbuf + if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf +# 3038 "lex.fs" + ) + | 1 -> ( +# 1065 "../lex.fsl" + newline lexbuf; if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf +# 3043 "lex.fs" + ) + | 2 -> ( +# 1067 "../lex.fsl" + if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf +# 3048 "lex.fs" + ) + | 3 -> ( +# 1069 "../lex.fsl" + if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf +# 3053 "lex.fs" + ) + | 4 -> ( +# 1071 "../lex.fsl" + if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf +# 3058 "lex.fs" + ) + | 5 -> ( +# 1073 "../lex.fsl" + EOF (LexCont.MLOnly(!args.ifdefStack,m)) +# 3063 "lex.fs" + ) + | 6 -> ( +# 1076 "../lex.fsl" + if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf +# 3068 "lex.fs" + ) + | _ -> failwith "mlOnly" + +# 3000000 "lex.fs" diff --git a/src/fsharp/FSharp.Compiler.Private/pars.fs b/src/fsharp/FSharp.Compiler.Private/pars.fs new file mode 100644 index 0000000000..dd4a72a872 --- /dev/null +++ b/src/fsharp/FSharp.Compiler.Private/pars.fs @@ -0,0 +1,16360 @@ +// Implementation file for parser generated by fsyacc +module internal FSharp.Compiler.Parser +#nowarn "64";; // turn off warnings that type variables used in production annotations are instantiated to concrete type +open FSharp.Compiler +open Internal.Utilities.Text.Lexing +open Internal.Utilities.Text.Parsing.ParseHelpers +# 3 "../pars.fsy" + + +#nowarn "1182" // generated code has lots of unused "parseState" + +open Internal.Utilities + +open FSharp.Compiler.AbstractIL +open FSharp.Compiler.AbstractIL.Internal +open FSharp.Compiler.AbstractIL.Internal.Library +open FSharp.Compiler +open Internal.Utilities.Text.Parsing + +open System +open FSharp.Compiler.Range +open FSharp.Compiler.Ast +open FSharp.Compiler.Lib +open FSharp.Compiler.PrettyNaming +open FSharp.Compiler.ErrorLogger +open FSharp.Compiler.Features + +#if DEBUG +let debugPrint(s) = + if Internal.Utilities.Text.Parsing.Flags.debug then + printfn "\n%s" s +#else +let debugPrint(s) = ignore s +#endif + +let exprFromParseError (e:SynExpr) = SynExpr.FromParseError (e,e.Range) +let patFromParseError (e:SynPat) = SynPat.FromParseError(e, e.Range) + +let mkSynOptionalExpr (m: range) xopt = + let m = m.MakeSynthetic() + match xopt with + | None -> mkSynLidGet m Ast.FSharpLib.CorePath "None" + | Some x -> SynExpr.App (ExprAtomicFlag.NonAtomic, false, mkSynLidGet m Ast.FSharpLib.CorePath "Some",x,m) + +// record bindings returned by the recdExprBindings rule has shape: +// (binding, separator-before-this-binding) +// this function converts arguments from form +// binding1 (binding2*sep1, binding3*sep2...) sepN +// to form +// binding1*sep1, binding2*sep2 +let rebindRanges first fields lastSep = + let rec run (name, value) l acc = + match l with + | [] -> List.rev ((name, value, lastSep) :: acc) + | (f, m) :: xs -> run f xs ((name, value, m) :: acc) + run first fields [] + +let mkUnderscoreRecdField m = LongIdentWithDots([ident("_", m)], []), false +let mkRecdField lidwd = lidwd, true + +let mkSynDoBinding (vis,strict,expr,m) = + match vis with + | Some vis -> errorR(Error(FSComp.SR.parsDoCannotHaveVisibilityDeclarations (vis.ToString()),m)) + | None -> () + Binding (None, + (if strict then DoBinding else StandaloneExpression), + false,false,[],PreXmlDoc.Empty,SynInfo.emptySynValData, + (if strict then SynPat.Const(SynConst.Unit,m) else SynPat.Wild m), + None,expr,m,NoSequencePointAtDoBinding) + +let mkSynDoDecl (e: SynExpr) = + let spExpr = if IsControlFlowExpression e then NoSequencePointAtDoBinding else SequencePointAtBinding e.Range in + SynModuleDecl.DoExpr(spExpr, e, e.Range) + +let addAttribs attrs p = SynPat.Attrib(p,attrs,p.Range) + + +// This function is called by the generated parser code. Returning initiates error recovery +// It must be called precisely "parse_error_rich" +let parse_error_rich = Some (fun (ctxt: ParseErrorContext<_>) -> + errorR(SyntaxError(box ctxt, ctxt.ParseState.LexBuffer.LexemeRange))) + +let reportParseErrorAt m s = errorR(Error(s,m)) + +let unionRangeWithPos (r:range) p = + let r2 = mkRange r.FileName p p + unionRanges r r2 + +let raiseParseErrorAt m s = + reportParseErrorAt m s; + // This initiates error recovery + raise RecoverableParseError + +let checkEndOfFileError t = + match t with + | LexCont.IfDefSkip(_,_,m) -> reportParseErrorAt m (FSComp.SR.parsEofInHashIf()) + | LexCont.String (_,m) -> reportParseErrorAt m (FSComp.SR.parsEofInString()) + | LexCont.TripleQuoteString (_,m) -> reportParseErrorAt m (FSComp.SR.parsEofInTripleQuoteString()) + | LexCont.VerbatimString (_,m) -> reportParseErrorAt m (FSComp.SR.parsEofInVerbatimString()) + | LexCont.Comment (_,_,m) -> reportParseErrorAt m (FSComp.SR.parsEofInComment()) + | LexCont.SingleLineComment (_,_,m) -> reportParseErrorAt m (FSComp.SR.parsEofInComment()) + | LexCont.StringInComment (_,_,m) -> reportParseErrorAt m (FSComp.SR.parsEofInStringInComment()) + | LexCont.VerbatimStringInComment (_,_,m) -> reportParseErrorAt m (FSComp.SR.parsEofInVerbatimStringInComment()) + | LexCont.TripleQuoteStringInComment (_,_,m) -> reportParseErrorAt m (FSComp.SR.parsEofInTripleQuoteStringInComment()) + | LexCont.MLOnly (_,m) -> reportParseErrorAt m (FSComp.SR.parsEofInIfOcaml()) + | LexCont.EndLine(LexerEndlineContinuation.Skip(_,_,m)) -> reportParseErrorAt m (FSComp.SR.parsEofInDirective()) + | LexCont.EndLine(LexerEndlineContinuation.Token(stack)) + | LexCont.Token(stack) -> + match stack with + | [] -> () + | (_,m) :: _ -> reportParseErrorAt m (FSComp.SR.parsNoHashEndIfFound()) + +// BindingSetPreAttrs(letRange, isRec, isUse, builderFunction, wholeRange) +type BindingSet = BindingSetPreAttrs of range * bool * bool * (SynAttributes -> SynAccess option -> SynAttributes * SynBinding list) * range + +let mkClassMemberLocalBindings(isStatic,initialRangeOpt,attrs,vis,BindingSetPreAttrs(_,isRec,isUse,declsPreAttrs,bindingSetRange)) = + let ignoredFreeAttrs,decls = declsPreAttrs attrs vis + let wholeRange = + match initialRangeOpt with + | None -> bindingSetRange + | Some m -> unionRanges m bindingSetRange + if not (isNil ignoredFreeAttrs) then warning(Error(FSComp.SR.parsAttributesIgnored(),wholeRange)); + if isUse then errorR(Error(FSComp.SR.parsUseBindingsIllegalInImplicitClassConstructors(),wholeRange)) + SynMemberDefn.LetBindings (decls,isStatic,isRec,wholeRange) + +let mkLocalBindings (mWhole,BindingSetPreAttrs(_,isRec,isUse,declsPreAttrs,_),body) = + let ignoredFreeAttrs,decls = declsPreAttrs [] None + if not (isNil ignoredFreeAttrs) then warning(Error(FSComp.SR.parsAttributesIgnored(),mWhole)) + SynExpr.LetOrUse (isRec,isUse,decls,body,mWhole) + +let mkDefnBindings (mWhole,BindingSetPreAttrs(_,isRec,isUse,declsPreAttrs,_bindingSetRange),attrs,vis,attrsm) = + if isUse then warning(Error(FSComp.SR.parsUseBindingsIllegalInModules(),mWhole)) + let freeAttrs,decls = declsPreAttrs attrs vis + let letDecls = [ SynModuleDecl.Let (isRec,decls,mWhole) ] + let attrDecls = if not (isNil freeAttrs) then [ SynModuleDecl.Attributes (freeAttrs,attrsm) ] else [] + attrDecls @ letDecls + +let idOfPat (parseState:IParseState) m p = + match p with + | SynPat.Wild r when parseState.LexBuffer.SupportsFeature LanguageFeature.WildCardInForLoop -> + mkSynId r "_" + | SynPat.Named (SynPat.Wild _,id,false,_,_) -> id + | SynPat.LongIdent(LongIdentWithDots([id],_),_,None, SynConstructorArgs.Pats [], None,_) -> id + | _ -> raiseParseErrorAt m (FSComp.SR.parsIntegerForLoopRequiresSimpleIdentifier()) + +let checkForMultipleAugmentations m a1 a2 = + if not (isNil a1) && not (isNil a2) then raiseParseErrorAt m (FSComp.SR.parsOnlyOneWithAugmentationAllowed()) + a1 @ a2 + +let grabXmlDoc(parseState:IParseState,elemIdx) = + LexbufLocalXmlDocStore.GrabXmlDocBeforeMarker(parseState.LexBuffer,rhs parseState elemIdx) + +let unionRangeWithListBy projectRangeFromThing m listOfThing = + (m, listOfThing) ||> List.fold (fun m thing -> unionRanges m (projectRangeFromThing thing)) + +let rangeOfNonNilAttrs(attrs:SynAttributes) = + (attrs.Head.Range,attrs.Tail) ||> unionRangeWithListBy (fun a -> a.Range) + +let rangeOfLongIdent(lid:LongIdent) = + System.Diagnostics.Debug.Assert(not lid.IsEmpty, "the parser should never produce a long-id that is the empty list") + (lid.Head.idRange,lid) ||> unionRangeWithListBy (fun id -> id.idRange) + + +# 164 "pars.fs" +// This type is the type of tokens accepted by the parser +type token = + | HASH_IF of (range * string * Ast.LexerWhitespaceContinuation) + | HASH_ELSE of (range * string * Ast.LexerWhitespaceContinuation) + | HASH_ENDIF of (range * string * Ast.LexerWhitespaceContinuation) + | COMMENT of (Ast.LexerWhitespaceContinuation) + | WHITESPACE of (Ast.LexerWhitespaceContinuation) + | HASH_LINE of (Ast.LexerWhitespaceContinuation) + | HASH_LIGHT of (Ast.LexerWhitespaceContinuation) + | INACTIVECODE of (Ast.LexerWhitespaceContinuation) + | LINE_COMMENT of (Ast.LexerWhitespaceContinuation) + | STRING_TEXT of (Ast.LexerWhitespaceContinuation) + | EOF of (Ast.LexerWhitespaceContinuation) + | LEX_FAILURE of (string) + | ODUMMY of (token) + | FIXED + | OINTERFACE_MEMBER + | OBLOCKEND + | OBLOCKEND_COMING_SOON + | OBLOCKEND_IS_HERE + | ORIGHT_BLOCK_END + | ODECLEND + | OEND + | OBLOCKSEP + | OBLOCKBEGIN + | ORESET + | OFUN + | OFUNCTION + | OWITH + | OELSE + | OTHEN + | ODO_BANG + | ODO + | OBINDER of (string) + | OLET of (bool) + | HIGH_PRECEDENCE_TYAPP + | HIGH_PRECEDENCE_PAREN_APP + | HIGH_PRECEDENCE_BRACK_APP + | TYPE_COMING_SOON + | TYPE_IS_HERE + | MODULE_COMING_SOON + | MODULE_IS_HERE + | EXTERN + | VOID + | PUBLIC + | PRIVATE + | INTERNAL + | GLOBAL + | STATIC + | MEMBER + | CLASS + | ABSTRACT + | OVERRIDE + | DEFAULT + | CONSTRUCTOR + | INHERIT + | GREATER_RBRACK + | STRUCT + | SIG + | BAR + | RBRACK + | RBRACE + | RBRACE_COMING_SOON + | RBRACE_IS_HERE + | MINUS + | DOLLAR + | BAR_RBRACK + | BAR_RBRACE + | UNDERSCORE + | SEMICOLON_SEMICOLON + | LARROW + | EQUALS + | LBRACK + | LBRACK_BAR + | LBRACE_BAR + | LBRACK_LESS + | LBRACE + | QMARK + | QMARK_QMARK + | DOT + | COLON + | COLON_COLON + | COLON_GREATER + | COLON_QMARK_GREATER + | COLON_QMARK + | COLON_EQUALS + | SEMICOLON + | WHEN + | WHILE + | WITH + | HASH + | AMP + | AMP_AMP + | QUOTE + | LPAREN + | RPAREN + | RPAREN_COMING_SOON + | RPAREN_IS_HERE + | STAR + | COMMA + | RARROW + | GREATER_BAR_RBRACK + | LPAREN_STAR_RPAREN + | OPEN + | OR + | REC + | THEN + | TO + | TRUE + | TRY + | TYPE + | VAL + | INLINE + | INTERFACE + | INSTANCE + | CONST + | LAZY + | OLAZY + | MATCH + | MATCH_BANG + | MUTABLE + | NEW + | OF + | EXCEPTION + | FALSE + | FOR + | FUN + | FUNCTION + | IF + | IN + | JOIN_IN + | FINALLY + | DO_BANG + | AND + | AS + | ASSERT + | OASSERT + | ASR + | BEGIN + | DO + | DONE + | DOWNTO + | ELSE + | ELIF + | END + | DOT_DOT + | DOT_DOT_HAT + | BAR_BAR + | UPCAST + | DOWNCAST + | NULL + | RESERVED + | MODULE + | NAMESPACE + | DELEGATE + | CONSTRAINT + | BASE + | LQUOTE of (string * bool) + | RQUOTE of (string * bool) + | RQUOTE_DOT of (string * bool) + | PERCENT_OP of (string) + | BINDER of (string) + | LESS of (bool) + | GREATER of (bool) + | LET of (bool) + | YIELD of (bool) + | YIELD_BANG of (bool) + | BIGNUM of ((string * string)) + | DECIMAL of (System.Decimal) + | CHAR of (char) + | IEEE64 of (double) + | IEEE32 of (single) + | NATIVEINT of (int64) + | UNATIVEINT of (uint64) + | UINT64 of (uint64) + | UINT32 of (uint32) + | UINT16 of (uint16) + | UINT8 of (byte) + | INT64 of (int64 * bool) + | INT32 of (int32 * bool) + | INT32_DOT_DOT of (int32 * bool) + | INT16 of (int16 * bool) + | INT8 of (sbyte * bool) + | FUNKY_OPERATOR_NAME of (string) + | ADJACENT_PREFIX_OP of (string) + | PLUS_MINUS_OP of (string) + | INFIX_AMP_OP of (string) + | INFIX_STAR_DIV_MOD_OP of (string) + | PREFIX_OP of (string) + | INFIX_BAR_OP of (string) + | INFIX_AT_HAT_OP of (string) + | INFIX_COMPARE_OP of (string) + | INFIX_STAR_STAR_OP of (string) + | IDENT of (string) + | KEYWORD_STRING of (string) + | STRING of (string) + | BYTEARRAY of (byte[]) +// This type is used to give symbolic names to token indexes, useful for error messages +type tokenId = + | TOKEN_HASH_IF + | TOKEN_HASH_ELSE + | TOKEN_HASH_ENDIF + | TOKEN_COMMENT + | TOKEN_WHITESPACE + | TOKEN_HASH_LINE + | TOKEN_HASH_LIGHT + | TOKEN_INACTIVECODE + | TOKEN_LINE_COMMENT + | TOKEN_STRING_TEXT + | TOKEN_EOF + | TOKEN_LEX_FAILURE + | TOKEN_ODUMMY + | TOKEN_FIXED + | TOKEN_OINTERFACE_MEMBER + | TOKEN_OBLOCKEND + | TOKEN_OBLOCKEND_COMING_SOON + | TOKEN_OBLOCKEND_IS_HERE + | TOKEN_ORIGHT_BLOCK_END + | TOKEN_ODECLEND + | TOKEN_OEND + | TOKEN_OBLOCKSEP + | TOKEN_OBLOCKBEGIN + | TOKEN_ORESET + | TOKEN_OFUN + | TOKEN_OFUNCTION + | TOKEN_OWITH + | TOKEN_OELSE + | TOKEN_OTHEN + | TOKEN_ODO_BANG + | TOKEN_ODO + | TOKEN_OBINDER + | TOKEN_OLET + | TOKEN_HIGH_PRECEDENCE_TYAPP + | TOKEN_HIGH_PRECEDENCE_PAREN_APP + | TOKEN_HIGH_PRECEDENCE_BRACK_APP + | TOKEN_TYPE_COMING_SOON + | TOKEN_TYPE_IS_HERE + | TOKEN_MODULE_COMING_SOON + | TOKEN_MODULE_IS_HERE + | TOKEN_EXTERN + | TOKEN_VOID + | TOKEN_PUBLIC + | TOKEN_PRIVATE + | TOKEN_INTERNAL + | TOKEN_GLOBAL + | TOKEN_STATIC + | TOKEN_MEMBER + | TOKEN_CLASS + | TOKEN_ABSTRACT + | TOKEN_OVERRIDE + | TOKEN_DEFAULT + | TOKEN_CONSTRUCTOR + | TOKEN_INHERIT + | TOKEN_GREATER_RBRACK + | TOKEN_STRUCT + | TOKEN_SIG + | TOKEN_BAR + | TOKEN_RBRACK + | TOKEN_RBRACE + | TOKEN_RBRACE_COMING_SOON + | TOKEN_RBRACE_IS_HERE + | TOKEN_MINUS + | TOKEN_DOLLAR + | TOKEN_BAR_RBRACK + | TOKEN_BAR_RBRACE + | TOKEN_UNDERSCORE + | TOKEN_SEMICOLON_SEMICOLON + | TOKEN_LARROW + | TOKEN_EQUALS + | TOKEN_LBRACK + | TOKEN_LBRACK_BAR + | TOKEN_LBRACE_BAR + | TOKEN_LBRACK_LESS + | TOKEN_LBRACE + | TOKEN_QMARK + | TOKEN_QMARK_QMARK + | TOKEN_DOT + | TOKEN_COLON + | TOKEN_COLON_COLON + | TOKEN_COLON_GREATER + | TOKEN_COLON_QMARK_GREATER + | TOKEN_COLON_QMARK + | TOKEN_COLON_EQUALS + | TOKEN_SEMICOLON + | TOKEN_WHEN + | TOKEN_WHILE + | TOKEN_WITH + | TOKEN_HASH + | TOKEN_AMP + | TOKEN_AMP_AMP + | TOKEN_QUOTE + | TOKEN_LPAREN + | TOKEN_RPAREN + | TOKEN_RPAREN_COMING_SOON + | TOKEN_RPAREN_IS_HERE + | TOKEN_STAR + | TOKEN_COMMA + | TOKEN_RARROW + | TOKEN_GREATER_BAR_RBRACK + | TOKEN_LPAREN_STAR_RPAREN + | TOKEN_OPEN + | TOKEN_OR + | TOKEN_REC + | TOKEN_THEN + | TOKEN_TO + | TOKEN_TRUE + | TOKEN_TRY + | TOKEN_TYPE + | TOKEN_VAL + | TOKEN_INLINE + | TOKEN_INTERFACE + | TOKEN_INSTANCE + | TOKEN_CONST + | TOKEN_LAZY + | TOKEN_OLAZY + | TOKEN_MATCH + | TOKEN_MATCH_BANG + | TOKEN_MUTABLE + | TOKEN_NEW + | TOKEN_OF + | TOKEN_EXCEPTION + | TOKEN_FALSE + | TOKEN_FOR + | TOKEN_FUN + | TOKEN_FUNCTION + | TOKEN_IF + | TOKEN_IN + | TOKEN_JOIN_IN + | TOKEN_FINALLY + | TOKEN_DO_BANG + | TOKEN_AND + | TOKEN_AS + | TOKEN_ASSERT + | TOKEN_OASSERT + | TOKEN_ASR + | TOKEN_BEGIN + | TOKEN_DO + | TOKEN_DONE + | TOKEN_DOWNTO + | TOKEN_ELSE + | TOKEN_ELIF + | TOKEN_END + | TOKEN_DOT_DOT + | TOKEN_DOT_DOT_HAT + | TOKEN_BAR_BAR + | TOKEN_UPCAST + | TOKEN_DOWNCAST + | TOKEN_NULL + | TOKEN_RESERVED + | TOKEN_MODULE + | TOKEN_NAMESPACE + | TOKEN_DELEGATE + | TOKEN_CONSTRAINT + | TOKEN_BASE + | TOKEN_LQUOTE + | TOKEN_RQUOTE + | TOKEN_RQUOTE_DOT + | TOKEN_PERCENT_OP + | TOKEN_BINDER + | TOKEN_LESS + | TOKEN_GREATER + | TOKEN_LET + | TOKEN_YIELD + | TOKEN_YIELD_BANG + | TOKEN_BIGNUM + | TOKEN_DECIMAL + | TOKEN_CHAR + | TOKEN_IEEE64 + | TOKEN_IEEE32 + | TOKEN_NATIVEINT + | TOKEN_UNATIVEINT + | TOKEN_UINT64 + | TOKEN_UINT32 + | TOKEN_UINT16 + | TOKEN_UINT8 + | TOKEN_INT64 + | TOKEN_INT32 + | TOKEN_INT32_DOT_DOT + | TOKEN_INT16 + | TOKEN_INT8 + | TOKEN_FUNKY_OPERATOR_NAME + | TOKEN_ADJACENT_PREFIX_OP + | TOKEN_PLUS_MINUS_OP + | TOKEN_INFIX_AMP_OP + | TOKEN_INFIX_STAR_DIV_MOD_OP + | TOKEN_PREFIX_OP + | TOKEN_INFIX_BAR_OP + | TOKEN_INFIX_AT_HAT_OP + | TOKEN_INFIX_COMPARE_OP + | TOKEN_INFIX_STAR_STAR_OP + | TOKEN_IDENT + | TOKEN_KEYWORD_STRING + | TOKEN_STRING + | TOKEN_BYTEARRAY + | TOKEN_end_of_input + | TOKEN_error +// This type is used to give symbolic names to token indexes, useful for error messages +type nonTerminalId = + | NONTERM__startsignatureFile + | NONTERM__startimplementationFile + | NONTERM__startinteraction + | NONTERM__starttypedSeqExprEOF + | NONTERM__starttypEOF + | NONTERM_interaction + | NONTERM_interactiveTerminator + | NONTERM_interactiveItemsTerminator + | NONTERM_interactiveDefns + | NONTERM_interactiveExpr + | NONTERM_interactiveHash + | NONTERM_interactiveSeparators + | NONTERM_interactiveSeparator + | NONTERM_hashDirective + | NONTERM_hashDirectiveArgs + | NONTERM_hashDirectiveArg + | NONTERM_signatureFile + | NONTERM_moduleIntro + | NONTERM_namespaceIntro + | NONTERM_fileNamespaceSpecs + | NONTERM_fileNamespaceSpecList + | NONTERM_fileNamespaceSpec + | NONTERM_fileModuleSpec + | NONTERM_moduleSpfnsPossiblyEmptyBlock + | NONTERM_moduleSpfnsPossiblyEmpty + | NONTERM_moduleSpfns + | NONTERM_moduleSpfn + | NONTERM_valSpfn + | NONTERM_optLiteralValueSpfn + | NONTERM_moduleSpecBlock + | NONTERM_tyconSpfns + | NONTERM_tyconSpfnList + | NONTERM_tyconSpfn + | NONTERM_tyconSpfnRhsBlock + | NONTERM_tyconSpfnRhs + | NONTERM_tyconClassSpfn + | NONTERM_classSpfnBlockKindUnspecified + | NONTERM_classSpfnBlock + | NONTERM_classSpfnMembers + | NONTERM_classSpfnMembersAtLeastOne + | NONTERM_classMemberSpfn + | NONTERM_classMemberSpfnGetSet + | NONTERM_classMemberSpfnGetSetElements + | NONTERM_memberSpecFlags + | NONTERM_exconSpfn + | NONTERM_opt_classSpfn + | NONTERM_implementationFile + | NONTERM_fileNamespaceImpls + | NONTERM_fileNamespaceImplList + | NONTERM_fileNamespaceImpl + | NONTERM_fileModuleImpl + | NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock + | NONTERM_moduleDefnsOrExprPossiblyEmpty + | NONTERM_moduleDefnsOrExpr + | NONTERM_moduleDefns + | NONTERM_moduleDefnOrDirective + | NONTERM_moduleDefn + | NONTERM_namedModuleAbbrevBlock + | NONTERM_namedModuleDefnBlock + | NONTERM_wrappedNamedModuleDefn + | NONTERM_tyconDefnAugmentation + | NONTERM_opt_attributes + | NONTERM_attributes + | NONTERM_attributeList + | NONTERM_attributeListElements + | NONTERM_attribute + | NONTERM_attributeTarget + | NONTERM_memberFlags + | NONTERM_typeNameInfo + | NONTERM_tyconDefnList + | NONTERM_tyconDefn + | NONTERM_tyconDefnRhsBlock + | NONTERM_tyconDefnRhs + | NONTERM_tyconClassDefn + | NONTERM_classDefnBlockKindUnspecified + | NONTERM_classDefnBlock + | NONTERM_classDefnMembers + | NONTERM_classDefnMembersAtLeastOne + | NONTERM_classDefnMemberGetSet + | NONTERM_classDefnMemberGetSetElements + | NONTERM_classDefnMemberGetSetElement + | NONTERM_memberCore + | NONTERM_abstractMemberFlags + | NONTERM_classDefnMember + | NONTERM_valDefnDecl + | NONTERM_autoPropsDefnDecl + | NONTERM_opt_typ + | NONTERM_atomicPatternLongIdent + | NONTERM_opt_access + | NONTERM_access + | NONTERM_opt_declVisibility + | NONTERM_opt_interfaceImplDefn + | NONTERM_opt_classDefn + | NONTERM_inheritsDefn + | NONTERM_optAsSpec + | NONTERM_asSpec + | NONTERM_optBaseSpec + | NONTERM_baseSpec + | NONTERM_objectImplementationBlock + | NONTERM_objectImplementationMembers + | NONTERM_objectImplementationMember + | NONTERM_memberOrOverride + | NONTERM_tyconDefnOrSpfnSimpleRepr + | NONTERM_braceFieldDeclList + | NONTERM_anonRecdType + | NONTERM_braceBarFieldDeclListCore + | NONTERM_inlineAssemblyTyconRepr + | NONTERM_classOrInterfaceOrStruct + | NONTERM_interfaceMember + | NONTERM_tyconNameAndTyparDecls + | NONTERM_prefixTyparDecls + | NONTERM_typarDeclList + | NONTERM_typarDecl + | NONTERM_postfixTyparDecls + | NONTERM_explicitValTyparDeclsCore + | NONTERM_explicitValTyparDecls + | NONTERM_opt_explicitValTyparDecls + | NONTERM_opt_explicitValTyparDecls2 + | NONTERM_opt_typeConstraints + | NONTERM_typeConstraints + | NONTERM_typeConstraint + | NONTERM_typarAlts + | NONTERM_unionTypeRepr + | NONTERM_barAndgrabXmlDoc + | NONTERM_attrUnionCaseDecls + | NONTERM_attrUnionCaseDecl + | NONTERM_unionCaseName + | NONTERM_firstUnionCaseDeclOfMany + | NONTERM_firstUnionCaseDecl + | NONTERM_unionCaseReprElements + | NONTERM_unionCaseReprElement + | NONTERM_unionCaseRepr + | NONTERM_recdFieldDeclList + | NONTERM_recdFieldDecl + | NONTERM_fieldDecl + | NONTERM_exconDefn + | NONTERM_exceptionAndGrabDoc + | NONTERM_exconCore + | NONTERM_exconIntro + | NONTERM_exconRepr + | NONTERM_openDecl + | NONTERM_defnBindings + | NONTERM_doBinding + | NONTERM_hardwhiteLetBindings + | NONTERM_hardwhiteDoBinding + | NONTERM_classDefnBindings + | NONTERM_hardwhiteDefnBindingsTerminator + | NONTERM_cPrototype + | NONTERM_cArgs + | NONTERM_cMoreArgs + | NONTERM_cArg + | NONTERM_cType + | NONTERM_cRetType + | NONTERM_localBindings + | NONTERM_moreLocalBindings + | NONTERM_attr_localBinding + | NONTERM_localBinding + | NONTERM_typedExprWithStaticOptimizationsBlock + | NONTERM_typedExprWithStaticOptimizations + | NONTERM_opt_staticOptimizations + | NONTERM_staticOptimization + | NONTERM_staticOptimizationConditions + | NONTERM_staticOptimizationCondition + | NONTERM_rawConstant + | NONTERM_rationalConstant + | NONTERM_atomicUnsignedRationalConstant + | NONTERM_atomicRationalConstant + | NONTERM_constant + | NONTERM_bindingPattern + | NONTERM_simplePattern + | NONTERM_simplePatternCommaList + | NONTERM_simplePatterns + | NONTERM_headBindingPattern + | NONTERM_tuplePatternElements + | NONTERM_conjPatternElements + | NONTERM_namePatPairs + | NONTERM_namePatPair + | NONTERM_constrPattern + | NONTERM_atomicPatsOrNamePatPairs + | NONTERM_atomicPatterns + | NONTERM_atomicPattern + | NONTERM_parenPatternBody + | NONTERM_parenPattern + | NONTERM_tupleParenPatternElements + | NONTERM_conjParenPatternElements + | NONTERM_recordPatternElementsAux + | NONTERM_recordPatternElement + | NONTERM_listPatternElements + | NONTERM_typedSeqExprBlock + | NONTERM_declExprBlock + | NONTERM_typedSeqExprBlockR + | NONTERM_typedSeqExpr + | NONTERM_typedSeqExprEOF + | NONTERM_seqExpr + | NONTERM_recover + | NONTERM_declExpr + | NONTERM_dynamicArg + | NONTERM_withClauses + | NONTERM_withPatternClauses + | NONTERM_patternAndGuard + | NONTERM_patternClauses + | NONTERM_patternGuard + | NONTERM_patternResult + | NONTERM_ifExprCases + | NONTERM_ifExprThen + | NONTERM_ifExprElifs + | NONTERM_tupleExpr + | NONTERM_minusExpr + | NONTERM_appExpr + | NONTERM_argExpr + | NONTERM_atomicExpr + | NONTERM_atomicExprQualification + | NONTERM_optRangeSeqExpr + | NONTERM_optRange + | NONTERM_rangeDeclExpr + | NONTERM_atomicExprAfterType + | NONTERM_beginEndExpr + | NONTERM_quoteExpr + | NONTERM_arrayExpr + | NONTERM_parenExpr + | NONTERM_parenExprBody + | NONTERM_staticallyKnownHeadTypars + | NONTERM_staticallyKnownHeadTyparAlts + | NONTERM_braceExpr + | NONTERM_braceExprBody + | NONTERM_listExprElements + | NONTERM_monadicExprInitial + | NONTERM_rangeSequenceExpr + | NONTERM_arrowThenExprR + | NONTERM_forLoopBinder + | NONTERM_forLoopRange + | NONTERM_forLoopDirection + | NONTERM_inlineAssemblyExpr + | NONTERM_opt_curriedArgExprs + | NONTERM_opt_atomicExprAfterType + | NONTERM_opt_inlineAssemblyTypeArg + | NONTERM_opt_inlineAssemblyReturnTypes + | NONTERM_recdExpr + | NONTERM_recdExprCore + | NONTERM_opt_seps_recd + | NONTERM_seps_recd + | NONTERM_pathOrUnderscore + | NONTERM_recdExprBindings + | NONTERM_recdBinding + | NONTERM_objExpr + | NONTERM_objExprBaseCall + | NONTERM_opt_objExprBindings + | NONTERM_objExprBindings + | NONTERM_objExprInterfaces + | NONTERM_opt_objExprInterfaces + | NONTERM_objExprInterface + | NONTERM_braceBarExpr + | NONTERM_braceBarExprCore + | NONTERM_anonLambdaExpr + | NONTERM_anonMatchingExpr + | NONTERM_typeWithTypeConstraints + | NONTERM_topTypeWithTypeConstraints + | NONTERM_opt_topReturnTypeWithTypeConstraints + | NONTERM_topType + | NONTERM_topTupleType + | NONTERM_topTupleTypeElements + | NONTERM_topAppType + | NONTERM_typ + | NONTERM_typEOF + | NONTERM_tupleType + | NONTERM_tupleOrQuotTypeElements + | NONTERM_appTypeCon + | NONTERM_appTypeConPower + | NONTERM_appType + | NONTERM_arrayTypeSuffix + | NONTERM_appTypePrefixArguments + | NONTERM_typeArgListElements + | NONTERM_powerType + | NONTERM_atomTypeNonAtomicDeprecated + | NONTERM_atomTypeOrAnonRecdType + | NONTERM_atomType + | NONTERM_typeArgsNoHpaDeprecated + | NONTERM_typeArgsActual + | NONTERM_typeArgActual + | NONTERM_typeArgActualOrDummyIfEmpty + | NONTERM_dummyTypeArg + | NONTERM_measureTypeArg + | NONTERM_measureTypeAtom + | NONTERM_measureTypePower + | NONTERM_measureTypeSeq + | NONTERM_measureTypeExpr + | NONTERM_typar + | NONTERM_staticallyKnownHeadTypar + | NONTERM_ident + | NONTERM_path + | NONTERM_opName + | NONTERM_operatorName + | NONTERM_activePatternCaseName + | NONTERM_activePatternCaseNames + | NONTERM_identOrOp + | NONTERM_pathOp + | NONTERM_nameop + | NONTERM_topSeparator + | NONTERM_topSeparators + | NONTERM_opt_topSeparators + | NONTERM_seps + | NONTERM_declEnd + | NONTERM_opt_declEnd + | NONTERM_opt_ODECLEND + | NONTERM_deprecated_opt_equals + | NONTERM_opt_OBLOCKSEP + | NONTERM_opt_seps + | NONTERM_opt_rec + | NONTERM_opt_bar + | NONTERM_opt_inline + | NONTERM_opt_mutable + | NONTERM_doToken + | NONTERM_doneDeclEnd + | NONTERM_structOrBegin + | NONTERM_sigOrBegin + | NONTERM_colonOrEquals + | NONTERM_stringOrKeywordString + | NONTERM_opt_HIGH_PRECEDENCE_APP + | NONTERM_opt_HIGH_PRECEDENCE_TYAPP + | NONTERM_typeKeyword + | NONTERM_moduleKeyword + | NONTERM_rbrace + | NONTERM_bar_rbrace + | NONTERM_rparen + | NONTERM_oblockend + | NONTERM_ends_other_than_rparen_coming_soon_or_recover + | NONTERM_ends_coming_soon_or_recover + +// This function maps tokens to integer indexes +let tagOfToken (t:token) = + match t with + | HASH_IF _ -> 0 + | HASH_ELSE _ -> 1 + | HASH_ENDIF _ -> 2 + | COMMENT _ -> 3 + | WHITESPACE _ -> 4 + | HASH_LINE _ -> 5 + | HASH_LIGHT _ -> 6 + | INACTIVECODE _ -> 7 + | LINE_COMMENT _ -> 8 + | STRING_TEXT _ -> 9 + | EOF _ -> 10 + | LEX_FAILURE _ -> 11 + | ODUMMY _ -> 12 + | FIXED -> 13 + | OINTERFACE_MEMBER -> 14 + | OBLOCKEND -> 15 + | OBLOCKEND_COMING_SOON -> 16 + | OBLOCKEND_IS_HERE -> 17 + | ORIGHT_BLOCK_END -> 18 + | ODECLEND -> 19 + | OEND -> 20 + | OBLOCKSEP -> 21 + | OBLOCKBEGIN -> 22 + | ORESET -> 23 + | OFUN -> 24 + | OFUNCTION -> 25 + | OWITH -> 26 + | OELSE -> 27 + | OTHEN -> 28 + | ODO_BANG -> 29 + | ODO -> 30 + | OBINDER _ -> 31 + | OLET _ -> 32 + | HIGH_PRECEDENCE_TYAPP -> 33 + | HIGH_PRECEDENCE_PAREN_APP -> 34 + | HIGH_PRECEDENCE_BRACK_APP -> 35 + | TYPE_COMING_SOON -> 36 + | TYPE_IS_HERE -> 37 + | MODULE_COMING_SOON -> 38 + | MODULE_IS_HERE -> 39 + | EXTERN -> 40 + | VOID -> 41 + | PUBLIC -> 42 + | PRIVATE -> 43 + | INTERNAL -> 44 + | GLOBAL -> 45 + | STATIC -> 46 + | MEMBER -> 47 + | CLASS -> 48 + | ABSTRACT -> 49 + | OVERRIDE -> 50 + | DEFAULT -> 51 + | CONSTRUCTOR -> 52 + | INHERIT -> 53 + | GREATER_RBRACK -> 54 + | STRUCT -> 55 + | SIG -> 56 + | BAR -> 57 + | RBRACK -> 58 + | RBRACE -> 59 + | RBRACE_COMING_SOON -> 60 + | RBRACE_IS_HERE -> 61 + | MINUS -> 62 + | DOLLAR -> 63 + | BAR_RBRACK -> 64 + | BAR_RBRACE -> 65 + | UNDERSCORE -> 66 + | SEMICOLON_SEMICOLON -> 67 + | LARROW -> 68 + | EQUALS -> 69 + | LBRACK -> 70 + | LBRACK_BAR -> 71 + | LBRACE_BAR -> 72 + | LBRACK_LESS -> 73 + | LBRACE -> 74 + | QMARK -> 75 + | QMARK_QMARK -> 76 + | DOT -> 77 + | COLON -> 78 + | COLON_COLON -> 79 + | COLON_GREATER -> 80 + | COLON_QMARK_GREATER -> 81 + | COLON_QMARK -> 82 + | COLON_EQUALS -> 83 + | SEMICOLON -> 84 + | WHEN -> 85 + | WHILE -> 86 + | WITH -> 87 + | HASH -> 88 + | AMP -> 89 + | AMP_AMP -> 90 + | QUOTE -> 91 + | LPAREN -> 92 + | RPAREN -> 93 + | RPAREN_COMING_SOON -> 94 + | RPAREN_IS_HERE -> 95 + | STAR -> 96 + | COMMA -> 97 + | RARROW -> 98 + | GREATER_BAR_RBRACK -> 99 + | LPAREN_STAR_RPAREN -> 100 + | OPEN -> 101 + | OR -> 102 + | REC -> 103 + | THEN -> 104 + | TO -> 105 + | TRUE -> 106 + | TRY -> 107 + | TYPE -> 108 + | VAL -> 109 + | INLINE -> 110 + | INTERFACE -> 111 + | INSTANCE -> 112 + | CONST -> 113 + | LAZY -> 114 + | OLAZY -> 115 + | MATCH -> 116 + | MATCH_BANG -> 117 + | MUTABLE -> 118 + | NEW -> 119 + | OF -> 120 + | EXCEPTION -> 121 + | FALSE -> 122 + | FOR -> 123 + | FUN -> 124 + | FUNCTION -> 125 + | IF -> 126 + | IN -> 127 + | JOIN_IN -> 128 + | FINALLY -> 129 + | DO_BANG -> 130 + | AND -> 131 + | AS -> 132 + | ASSERT -> 133 + | OASSERT -> 134 + | ASR -> 135 + | BEGIN -> 136 + | DO -> 137 + | DONE -> 138 + | DOWNTO -> 139 + | ELSE -> 140 + | ELIF -> 141 + | END -> 142 + | DOT_DOT -> 143 + | DOT_DOT_HAT -> 144 + | BAR_BAR -> 145 + | UPCAST -> 146 + | DOWNCAST -> 147 + | NULL -> 148 + | RESERVED -> 149 + | MODULE -> 150 + | NAMESPACE -> 151 + | DELEGATE -> 152 + | CONSTRAINT -> 153 + | BASE -> 154 + | LQUOTE _ -> 155 + | RQUOTE _ -> 156 + | RQUOTE_DOT _ -> 157 + | PERCENT_OP _ -> 158 + | BINDER _ -> 159 + | LESS _ -> 160 + | GREATER _ -> 161 + | LET _ -> 162 + | YIELD _ -> 163 + | YIELD_BANG _ -> 164 + | BIGNUM _ -> 165 + | DECIMAL _ -> 166 + | CHAR _ -> 167 + | IEEE64 _ -> 168 + | IEEE32 _ -> 169 + | NATIVEINT _ -> 170 + | UNATIVEINT _ -> 171 + | UINT64 _ -> 172 + | UINT32 _ -> 173 + | UINT16 _ -> 174 + | UINT8 _ -> 175 + | INT64 _ -> 176 + | INT32 _ -> 177 + | INT32_DOT_DOT _ -> 178 + | INT16 _ -> 179 + | INT8 _ -> 180 + | FUNKY_OPERATOR_NAME _ -> 181 + | ADJACENT_PREFIX_OP _ -> 182 + | PLUS_MINUS_OP _ -> 183 + | INFIX_AMP_OP _ -> 184 + | INFIX_STAR_DIV_MOD_OP _ -> 185 + | PREFIX_OP _ -> 186 + | INFIX_BAR_OP _ -> 187 + | INFIX_AT_HAT_OP _ -> 188 + | INFIX_COMPARE_OP _ -> 189 + | INFIX_STAR_STAR_OP _ -> 190 + | IDENT _ -> 191 + | KEYWORD_STRING _ -> 192 + | STRING _ -> 193 + | BYTEARRAY _ -> 194 + +// This function maps integer indexes to symbolic token ids +let tokenTagToTokenId (tokenIdx:int) = + match tokenIdx with + | 0 -> TOKEN_HASH_IF + | 1 -> TOKEN_HASH_ELSE + | 2 -> TOKEN_HASH_ENDIF + | 3 -> TOKEN_COMMENT + | 4 -> TOKEN_WHITESPACE + | 5 -> TOKEN_HASH_LINE + | 6 -> TOKEN_HASH_LIGHT + | 7 -> TOKEN_INACTIVECODE + | 8 -> TOKEN_LINE_COMMENT + | 9 -> TOKEN_STRING_TEXT + | 10 -> TOKEN_EOF + | 11 -> TOKEN_LEX_FAILURE + | 12 -> TOKEN_ODUMMY + | 13 -> TOKEN_FIXED + | 14 -> TOKEN_OINTERFACE_MEMBER + | 15 -> TOKEN_OBLOCKEND + | 16 -> TOKEN_OBLOCKEND_COMING_SOON + | 17 -> TOKEN_OBLOCKEND_IS_HERE + | 18 -> TOKEN_ORIGHT_BLOCK_END + | 19 -> TOKEN_ODECLEND + | 20 -> TOKEN_OEND + | 21 -> TOKEN_OBLOCKSEP + | 22 -> TOKEN_OBLOCKBEGIN + | 23 -> TOKEN_ORESET + | 24 -> TOKEN_OFUN + | 25 -> TOKEN_OFUNCTION + | 26 -> TOKEN_OWITH + | 27 -> TOKEN_OELSE + | 28 -> TOKEN_OTHEN + | 29 -> TOKEN_ODO_BANG + | 30 -> TOKEN_ODO + | 31 -> TOKEN_OBINDER + | 32 -> TOKEN_OLET + | 33 -> TOKEN_HIGH_PRECEDENCE_TYAPP + | 34 -> TOKEN_HIGH_PRECEDENCE_PAREN_APP + | 35 -> TOKEN_HIGH_PRECEDENCE_BRACK_APP + | 36 -> TOKEN_TYPE_COMING_SOON + | 37 -> TOKEN_TYPE_IS_HERE + | 38 -> TOKEN_MODULE_COMING_SOON + | 39 -> TOKEN_MODULE_IS_HERE + | 40 -> TOKEN_EXTERN + | 41 -> TOKEN_VOID + | 42 -> TOKEN_PUBLIC + | 43 -> TOKEN_PRIVATE + | 44 -> TOKEN_INTERNAL + | 45 -> TOKEN_GLOBAL + | 46 -> TOKEN_STATIC + | 47 -> TOKEN_MEMBER + | 48 -> TOKEN_CLASS + | 49 -> TOKEN_ABSTRACT + | 50 -> TOKEN_OVERRIDE + | 51 -> TOKEN_DEFAULT + | 52 -> TOKEN_CONSTRUCTOR + | 53 -> TOKEN_INHERIT + | 54 -> TOKEN_GREATER_RBRACK + | 55 -> TOKEN_STRUCT + | 56 -> TOKEN_SIG + | 57 -> TOKEN_BAR + | 58 -> TOKEN_RBRACK + | 59 -> TOKEN_RBRACE + | 60 -> TOKEN_RBRACE_COMING_SOON + | 61 -> TOKEN_RBRACE_IS_HERE + | 62 -> TOKEN_MINUS + | 63 -> TOKEN_DOLLAR + | 64 -> TOKEN_BAR_RBRACK + | 65 -> TOKEN_BAR_RBRACE + | 66 -> TOKEN_UNDERSCORE + | 67 -> TOKEN_SEMICOLON_SEMICOLON + | 68 -> TOKEN_LARROW + | 69 -> TOKEN_EQUALS + | 70 -> TOKEN_LBRACK + | 71 -> TOKEN_LBRACK_BAR + | 72 -> TOKEN_LBRACE_BAR + | 73 -> TOKEN_LBRACK_LESS + | 74 -> TOKEN_LBRACE + | 75 -> TOKEN_QMARK + | 76 -> TOKEN_QMARK_QMARK + | 77 -> TOKEN_DOT + | 78 -> TOKEN_COLON + | 79 -> TOKEN_COLON_COLON + | 80 -> TOKEN_COLON_GREATER + | 81 -> TOKEN_COLON_QMARK_GREATER + | 82 -> TOKEN_COLON_QMARK + | 83 -> TOKEN_COLON_EQUALS + | 84 -> TOKEN_SEMICOLON + | 85 -> TOKEN_WHEN + | 86 -> TOKEN_WHILE + | 87 -> TOKEN_WITH + | 88 -> TOKEN_HASH + | 89 -> TOKEN_AMP + | 90 -> TOKEN_AMP_AMP + | 91 -> TOKEN_QUOTE + | 92 -> TOKEN_LPAREN + | 93 -> TOKEN_RPAREN + | 94 -> TOKEN_RPAREN_COMING_SOON + | 95 -> TOKEN_RPAREN_IS_HERE + | 96 -> TOKEN_STAR + | 97 -> TOKEN_COMMA + | 98 -> TOKEN_RARROW + | 99 -> TOKEN_GREATER_BAR_RBRACK + | 100 -> TOKEN_LPAREN_STAR_RPAREN + | 101 -> TOKEN_OPEN + | 102 -> TOKEN_OR + | 103 -> TOKEN_REC + | 104 -> TOKEN_THEN + | 105 -> TOKEN_TO + | 106 -> TOKEN_TRUE + | 107 -> TOKEN_TRY + | 108 -> TOKEN_TYPE + | 109 -> TOKEN_VAL + | 110 -> TOKEN_INLINE + | 111 -> TOKEN_INTERFACE + | 112 -> TOKEN_INSTANCE + | 113 -> TOKEN_CONST + | 114 -> TOKEN_LAZY + | 115 -> TOKEN_OLAZY + | 116 -> TOKEN_MATCH + | 117 -> TOKEN_MATCH_BANG + | 118 -> TOKEN_MUTABLE + | 119 -> TOKEN_NEW + | 120 -> TOKEN_OF + | 121 -> TOKEN_EXCEPTION + | 122 -> TOKEN_FALSE + | 123 -> TOKEN_FOR + | 124 -> TOKEN_FUN + | 125 -> TOKEN_FUNCTION + | 126 -> TOKEN_IF + | 127 -> TOKEN_IN + | 128 -> TOKEN_JOIN_IN + | 129 -> TOKEN_FINALLY + | 130 -> TOKEN_DO_BANG + | 131 -> TOKEN_AND + | 132 -> TOKEN_AS + | 133 -> TOKEN_ASSERT + | 134 -> TOKEN_OASSERT + | 135 -> TOKEN_ASR + | 136 -> TOKEN_BEGIN + | 137 -> TOKEN_DO + | 138 -> TOKEN_DONE + | 139 -> TOKEN_DOWNTO + | 140 -> TOKEN_ELSE + | 141 -> TOKEN_ELIF + | 142 -> TOKEN_END + | 143 -> TOKEN_DOT_DOT + | 144 -> TOKEN_DOT_DOT_HAT + | 145 -> TOKEN_BAR_BAR + | 146 -> TOKEN_UPCAST + | 147 -> TOKEN_DOWNCAST + | 148 -> TOKEN_NULL + | 149 -> TOKEN_RESERVED + | 150 -> TOKEN_MODULE + | 151 -> TOKEN_NAMESPACE + | 152 -> TOKEN_DELEGATE + | 153 -> TOKEN_CONSTRAINT + | 154 -> TOKEN_BASE + | 155 -> TOKEN_LQUOTE + | 156 -> TOKEN_RQUOTE + | 157 -> TOKEN_RQUOTE_DOT + | 158 -> TOKEN_PERCENT_OP + | 159 -> TOKEN_BINDER + | 160 -> TOKEN_LESS + | 161 -> TOKEN_GREATER + | 162 -> TOKEN_LET + | 163 -> TOKEN_YIELD + | 164 -> TOKEN_YIELD_BANG + | 165 -> TOKEN_BIGNUM + | 166 -> TOKEN_DECIMAL + | 167 -> TOKEN_CHAR + | 168 -> TOKEN_IEEE64 + | 169 -> TOKEN_IEEE32 + | 170 -> TOKEN_NATIVEINT + | 171 -> TOKEN_UNATIVEINT + | 172 -> TOKEN_UINT64 + | 173 -> TOKEN_UINT32 + | 174 -> TOKEN_UINT16 + | 175 -> TOKEN_UINT8 + | 176 -> TOKEN_INT64 + | 177 -> TOKEN_INT32 + | 178 -> TOKEN_INT32_DOT_DOT + | 179 -> TOKEN_INT16 + | 180 -> TOKEN_INT8 + | 181 -> TOKEN_FUNKY_OPERATOR_NAME + | 182 -> TOKEN_ADJACENT_PREFIX_OP + | 183 -> TOKEN_PLUS_MINUS_OP + | 184 -> TOKEN_INFIX_AMP_OP + | 185 -> TOKEN_INFIX_STAR_DIV_MOD_OP + | 186 -> TOKEN_PREFIX_OP + | 187 -> TOKEN_INFIX_BAR_OP + | 188 -> TOKEN_INFIX_AT_HAT_OP + | 189 -> TOKEN_INFIX_COMPARE_OP + | 190 -> TOKEN_INFIX_STAR_STAR_OP + | 191 -> TOKEN_IDENT + | 192 -> TOKEN_KEYWORD_STRING + | 193 -> TOKEN_STRING + | 194 -> TOKEN_BYTEARRAY + | 197 -> TOKEN_end_of_input + | 195 -> TOKEN_error + | _ -> failwith "tokenTagToTokenId: bad token" + +/// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that production +let prodIdxToNonTerminal (prodIdx:int) = + match prodIdx with + | 0 -> NONTERM__startsignatureFile + | 1 -> NONTERM__startimplementationFile + | 2 -> NONTERM__startinteraction + | 3 -> NONTERM__starttypedSeqExprEOF + | 4 -> NONTERM__starttypEOF + | 5 -> NONTERM_interaction + | 6 -> NONTERM_interaction + | 7 -> NONTERM_interaction + | 8 -> NONTERM_interactiveTerminator + | 9 -> NONTERM_interactiveTerminator + | 10 -> NONTERM_interactiveItemsTerminator + | 11 -> NONTERM_interactiveItemsTerminator + | 12 -> NONTERM_interactiveItemsTerminator + | 13 -> NONTERM_interactiveItemsTerminator + | 14 -> NONTERM_interactiveItemsTerminator + | 15 -> NONTERM_interactiveItemsTerminator + | 16 -> NONTERM_interactiveItemsTerminator + | 17 -> NONTERM_interactiveDefns + | 18 -> NONTERM_interactiveDefns + | 19 -> NONTERM_interactiveExpr + | 20 -> NONTERM_interactiveHash + | 21 -> NONTERM_interactiveSeparators + | 22 -> NONTERM_interactiveSeparators + | 23 -> NONTERM_interactiveSeparator + | 24 -> NONTERM_interactiveSeparator + | 25 -> NONTERM_hashDirective + | 26 -> NONTERM_hashDirectiveArgs + | 27 -> NONTERM_hashDirectiveArgs + | 28 -> NONTERM_hashDirectiveArg + | 29 -> NONTERM_signatureFile + | 30 -> NONTERM_signatureFile + | 31 -> NONTERM_signatureFile + | 32 -> NONTERM_moduleIntro + | 33 -> NONTERM_namespaceIntro + | 34 -> NONTERM_fileNamespaceSpecs + | 35 -> NONTERM_fileNamespaceSpecs + | 36 -> NONTERM_fileNamespaceSpecList + | 37 -> NONTERM_fileNamespaceSpecList + | 38 -> NONTERM_fileNamespaceSpec + | 39 -> NONTERM_fileModuleSpec + | 40 -> NONTERM_fileModuleSpec + | 41 -> NONTERM_moduleSpfnsPossiblyEmptyBlock + | 42 -> NONTERM_moduleSpfnsPossiblyEmptyBlock + | 43 -> NONTERM_moduleSpfnsPossiblyEmptyBlock + | 44 -> NONTERM_moduleSpfnsPossiblyEmptyBlock + | 45 -> NONTERM_moduleSpfnsPossiblyEmpty + | 46 -> NONTERM_moduleSpfnsPossiblyEmpty + | 47 -> NONTERM_moduleSpfnsPossiblyEmpty + | 48 -> NONTERM_moduleSpfns + | 49 -> NONTERM_moduleSpfns + | 50 -> NONTERM_moduleSpfns + | 51 -> NONTERM_moduleSpfn + | 52 -> NONTERM_moduleSpfn + | 53 -> NONTERM_moduleSpfn + | 54 -> NONTERM_moduleSpfn + | 55 -> NONTERM_moduleSpfn + | 56 -> NONTERM_moduleSpfn + | 57 -> NONTERM_moduleSpfn + | 58 -> NONTERM_valSpfn + | 59 -> NONTERM_optLiteralValueSpfn + | 60 -> NONTERM_optLiteralValueSpfn + | 61 -> NONTERM_optLiteralValueSpfn + | 62 -> NONTERM_moduleSpecBlock + | 63 -> NONTERM_moduleSpecBlock + | 64 -> NONTERM_moduleSpecBlock + | 65 -> NONTERM_tyconSpfns + | 66 -> NONTERM_tyconSpfnList + | 67 -> NONTERM_tyconSpfnList + | 68 -> NONTERM_tyconSpfn + | 69 -> NONTERM_tyconSpfn + | 70 -> NONTERM_tyconSpfnRhsBlock + | 71 -> NONTERM_tyconSpfnRhsBlock + | 72 -> NONTERM_tyconSpfnRhs + | 73 -> NONTERM_tyconSpfnRhs + | 74 -> NONTERM_tyconSpfnRhs + | 75 -> NONTERM_tyconClassSpfn + | 76 -> NONTERM_tyconClassSpfn + | 77 -> NONTERM_tyconClassSpfn + | 78 -> NONTERM_tyconClassSpfn + | 79 -> NONTERM_classSpfnBlockKindUnspecified + | 80 -> NONTERM_classSpfnBlockKindUnspecified + | 81 -> NONTERM_classSpfnBlockKindUnspecified + | 82 -> NONTERM_classSpfnBlockKindUnspecified + | 83 -> NONTERM_classSpfnBlock + | 84 -> NONTERM_classSpfnBlock + | 85 -> NONTERM_classSpfnBlock + | 86 -> NONTERM_classSpfnMembers + | 87 -> NONTERM_classSpfnMembers + | 88 -> NONTERM_classSpfnMembersAtLeastOne + | 89 -> NONTERM_classMemberSpfn + | 90 -> NONTERM_classMemberSpfn + | 91 -> NONTERM_classMemberSpfn + | 92 -> NONTERM_classMemberSpfn + | 93 -> NONTERM_classMemberSpfn + | 94 -> NONTERM_classMemberSpfn + | 95 -> NONTERM_classMemberSpfn + | 96 -> NONTERM_classMemberSpfnGetSet + | 97 -> NONTERM_classMemberSpfnGetSet + | 98 -> NONTERM_classMemberSpfnGetSet + | 99 -> NONTERM_classMemberSpfnGetSet + | 100 -> NONTERM_classMemberSpfnGetSetElements + | 101 -> NONTERM_classMemberSpfnGetSetElements + | 102 -> NONTERM_memberSpecFlags + | 103 -> NONTERM_memberSpecFlags + | 104 -> NONTERM_memberSpecFlags + | 105 -> NONTERM_exconSpfn + | 106 -> NONTERM_opt_classSpfn + | 107 -> NONTERM_opt_classSpfn + | 108 -> NONTERM_implementationFile + | 109 -> NONTERM_implementationFile + | 110 -> NONTERM_implementationFile + | 111 -> NONTERM_fileNamespaceImpls + | 112 -> NONTERM_fileNamespaceImpls + | 113 -> NONTERM_fileNamespaceImplList + | 114 -> NONTERM_fileNamespaceImplList + | 115 -> NONTERM_fileNamespaceImpl + | 116 -> NONTERM_fileModuleImpl + | 117 -> NONTERM_fileModuleImpl + | 118 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock + | 119 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock + | 120 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock + | 121 -> NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock + | 122 -> NONTERM_moduleDefnsOrExprPossiblyEmpty + | 123 -> NONTERM_moduleDefnsOrExprPossiblyEmpty + | 124 -> NONTERM_moduleDefnsOrExpr + | 125 -> NONTERM_moduleDefnsOrExpr + | 126 -> NONTERM_moduleDefnsOrExpr + | 127 -> NONTERM_moduleDefnsOrExpr + | 128 -> NONTERM_moduleDefnsOrExpr + | 129 -> NONTERM_moduleDefns + | 130 -> NONTERM_moduleDefns + | 131 -> NONTERM_moduleDefns + | 132 -> NONTERM_moduleDefns + | 133 -> NONTERM_moduleDefns + | 134 -> NONTERM_moduleDefnOrDirective + | 135 -> NONTERM_moduleDefnOrDirective + | 136 -> NONTERM_moduleDefn + | 137 -> NONTERM_moduleDefn + | 138 -> NONTERM_moduleDefn + | 139 -> NONTERM_moduleDefn + | 140 -> NONTERM_moduleDefn + | 141 -> NONTERM_moduleDefn + | 142 -> NONTERM_moduleDefn + | 143 -> NONTERM_moduleDefn + | 144 -> NONTERM_namedModuleAbbrevBlock + | 145 -> NONTERM_namedModuleAbbrevBlock + | 146 -> NONTERM_namedModuleDefnBlock + | 147 -> NONTERM_namedModuleDefnBlock + | 148 -> NONTERM_namedModuleDefnBlock + | 149 -> NONTERM_namedModuleDefnBlock + | 150 -> NONTERM_namedModuleDefnBlock + | 151 -> NONTERM_namedModuleDefnBlock + | 152 -> NONTERM_namedModuleDefnBlock + | 153 -> NONTERM_wrappedNamedModuleDefn + | 154 -> NONTERM_wrappedNamedModuleDefn + | 155 -> NONTERM_wrappedNamedModuleDefn + | 156 -> NONTERM_tyconDefnAugmentation + | 157 -> NONTERM_opt_attributes + | 158 -> NONTERM_opt_attributes + | 159 -> NONTERM_attributes + | 160 -> NONTERM_attributes + | 161 -> NONTERM_attributeList + | 162 -> NONTERM_attributeList + | 163 -> NONTERM_attributeList + | 164 -> NONTERM_attributeList + | 165 -> NONTERM_attributeListElements + | 166 -> NONTERM_attributeListElements + | 167 -> NONTERM_attribute + | 168 -> NONTERM_attribute + | 169 -> NONTERM_attribute + | 170 -> NONTERM_attributeTarget + | 171 -> NONTERM_attributeTarget + | 172 -> NONTERM_attributeTarget + | 173 -> NONTERM_attributeTarget + | 174 -> NONTERM_memberFlags + | 175 -> NONTERM_memberFlags + | 176 -> NONTERM_memberFlags + | 177 -> NONTERM_memberFlags + | 178 -> NONTERM_typeNameInfo + | 179 -> NONTERM_tyconDefnList + | 180 -> NONTERM_tyconDefnList + | 181 -> NONTERM_tyconDefn + | 182 -> NONTERM_tyconDefn + | 183 -> NONTERM_tyconDefn + | 184 -> NONTERM_tyconDefn + | 185 -> NONTERM_tyconDefnRhsBlock + | 186 -> NONTERM_tyconDefnRhsBlock + | 187 -> NONTERM_tyconDefnRhsBlock + | 188 -> NONTERM_tyconDefnRhs + | 189 -> NONTERM_tyconDefnRhs + | 190 -> NONTERM_tyconDefnRhs + | 191 -> NONTERM_tyconClassDefn + | 192 -> NONTERM_tyconClassDefn + | 193 -> NONTERM_tyconClassDefn + | 194 -> NONTERM_tyconClassDefn + | 195 -> NONTERM_classDefnBlockKindUnspecified + | 196 -> NONTERM_classDefnBlockKindUnspecified + | 197 -> NONTERM_classDefnBlock + | 198 -> NONTERM_classDefnBlock + | 199 -> NONTERM_classDefnBlock + | 200 -> NONTERM_classDefnMembers + | 201 -> NONTERM_classDefnMembers + | 202 -> NONTERM_classDefnMembers + | 203 -> NONTERM_classDefnMembersAtLeastOne + | 204 -> NONTERM_classDefnMemberGetSet + | 205 -> NONTERM_classDefnMemberGetSet + | 206 -> NONTERM_classDefnMemberGetSet + | 207 -> NONTERM_classDefnMemberGetSetElements + | 208 -> NONTERM_classDefnMemberGetSetElements + | 209 -> NONTERM_classDefnMemberGetSetElement + | 210 -> NONTERM_memberCore + | 211 -> NONTERM_memberCore + | 212 -> NONTERM_abstractMemberFlags + | 213 -> NONTERM_abstractMemberFlags + | 214 -> NONTERM_classDefnMember + | 215 -> NONTERM_classDefnMember + | 216 -> NONTERM_classDefnMember + | 217 -> NONTERM_classDefnMember + | 218 -> NONTERM_classDefnMember + | 219 -> NONTERM_classDefnMember + | 220 -> NONTERM_classDefnMember + | 221 -> NONTERM_classDefnMember + | 222 -> NONTERM_classDefnMember + | 223 -> NONTERM_classDefnMember + | 224 -> NONTERM_classDefnMember + | 225 -> NONTERM_valDefnDecl + | 226 -> NONTERM_autoPropsDefnDecl + | 227 -> NONTERM_opt_typ + | 228 -> NONTERM_opt_typ + | 229 -> NONTERM_atomicPatternLongIdent + | 230 -> NONTERM_atomicPatternLongIdent + | 231 -> NONTERM_atomicPatternLongIdent + | 232 -> NONTERM_atomicPatternLongIdent + | 233 -> NONTERM_atomicPatternLongIdent + | 234 -> NONTERM_opt_access + | 235 -> NONTERM_opt_access + | 236 -> NONTERM_access + | 237 -> NONTERM_access + | 238 -> NONTERM_access + | 239 -> NONTERM_opt_declVisibility + | 240 -> NONTERM_opt_declVisibility + | 241 -> NONTERM_opt_interfaceImplDefn + | 242 -> NONTERM_opt_interfaceImplDefn + | 243 -> NONTERM_opt_classDefn + | 244 -> NONTERM_opt_classDefn + | 245 -> NONTERM_inheritsDefn + | 246 -> NONTERM_inheritsDefn + | 247 -> NONTERM_inheritsDefn + | 248 -> NONTERM_optAsSpec + | 249 -> NONTERM_optAsSpec + | 250 -> NONTERM_asSpec + | 251 -> NONTERM_optBaseSpec + | 252 -> NONTERM_optBaseSpec + | 253 -> NONTERM_baseSpec + | 254 -> NONTERM_baseSpec + | 255 -> NONTERM_objectImplementationBlock + | 256 -> NONTERM_objectImplementationBlock + | 257 -> NONTERM_objectImplementationBlock + | 258 -> NONTERM_objectImplementationMembers + | 259 -> NONTERM_objectImplementationMembers + | 260 -> NONTERM_objectImplementationMember + | 261 -> NONTERM_objectImplementationMember + | 262 -> NONTERM_objectImplementationMember + | 263 -> NONTERM_objectImplementationMember + | 264 -> NONTERM_memberOrOverride + | 265 -> NONTERM_memberOrOverride + | 266 -> NONTERM_tyconDefnOrSpfnSimpleRepr + | 267 -> NONTERM_tyconDefnOrSpfnSimpleRepr + | 268 -> NONTERM_tyconDefnOrSpfnSimpleRepr + | 269 -> NONTERM_tyconDefnOrSpfnSimpleRepr + | 270 -> NONTERM_tyconDefnOrSpfnSimpleRepr + | 271 -> NONTERM_braceFieldDeclList + | 272 -> NONTERM_braceFieldDeclList + | 273 -> NONTERM_braceFieldDeclList + | 274 -> NONTERM_anonRecdType + | 275 -> NONTERM_anonRecdType + | 276 -> NONTERM_braceBarFieldDeclListCore + | 277 -> NONTERM_braceBarFieldDeclListCore + | 278 -> NONTERM_braceBarFieldDeclListCore + | 279 -> NONTERM_inlineAssemblyTyconRepr + | 280 -> NONTERM_classOrInterfaceOrStruct + | 281 -> NONTERM_classOrInterfaceOrStruct + | 282 -> NONTERM_classOrInterfaceOrStruct + | 283 -> NONTERM_interfaceMember + | 284 -> NONTERM_interfaceMember + | 285 -> NONTERM_tyconNameAndTyparDecls + | 286 -> NONTERM_tyconNameAndTyparDecls + | 287 -> NONTERM_tyconNameAndTyparDecls + | 288 -> NONTERM_prefixTyparDecls + | 289 -> NONTERM_prefixTyparDecls + | 290 -> NONTERM_typarDeclList + | 291 -> NONTERM_typarDeclList + | 292 -> NONTERM_typarDecl + | 293 -> NONTERM_postfixTyparDecls + | 294 -> NONTERM_explicitValTyparDeclsCore + | 295 -> NONTERM_explicitValTyparDeclsCore + | 296 -> NONTERM_explicitValTyparDeclsCore + | 297 -> NONTERM_explicitValTyparDecls + | 298 -> NONTERM_opt_explicitValTyparDecls + | 299 -> NONTERM_opt_explicitValTyparDecls + | 300 -> NONTERM_opt_explicitValTyparDecls2 + | 301 -> NONTERM_opt_explicitValTyparDecls2 + | 302 -> NONTERM_opt_typeConstraints + | 303 -> NONTERM_opt_typeConstraints + | 304 -> NONTERM_typeConstraints + | 305 -> NONTERM_typeConstraints + | 306 -> NONTERM_typeConstraint + | 307 -> NONTERM_typeConstraint + | 308 -> NONTERM_typeConstraint + | 309 -> NONTERM_typeConstraint + | 310 -> NONTERM_typeConstraint + | 311 -> NONTERM_typeConstraint + | 312 -> NONTERM_typeConstraint + | 313 -> NONTERM_typeConstraint + | 314 -> NONTERM_typeConstraint + | 315 -> NONTERM_typeConstraint + | 316 -> NONTERM_typarAlts + | 317 -> NONTERM_typarAlts + | 318 -> NONTERM_unionTypeRepr + | 319 -> NONTERM_unionTypeRepr + | 320 -> NONTERM_unionTypeRepr + | 321 -> NONTERM_barAndgrabXmlDoc + | 322 -> NONTERM_attrUnionCaseDecls + | 323 -> NONTERM_attrUnionCaseDecls + | 324 -> NONTERM_attrUnionCaseDecl + | 325 -> NONTERM_attrUnionCaseDecl + | 326 -> NONTERM_attrUnionCaseDecl + | 327 -> NONTERM_attrUnionCaseDecl + | 328 -> NONTERM_unionCaseName + | 329 -> NONTERM_unionCaseName + | 330 -> NONTERM_unionCaseName + | 331 -> NONTERM_firstUnionCaseDeclOfMany + | 332 -> NONTERM_firstUnionCaseDeclOfMany + | 333 -> NONTERM_firstUnionCaseDeclOfMany + | 334 -> NONTERM_firstUnionCaseDecl + | 335 -> NONTERM_firstUnionCaseDecl + | 336 -> NONTERM_unionCaseReprElements + | 337 -> NONTERM_unionCaseReprElements + | 338 -> NONTERM_unionCaseReprElement + | 339 -> NONTERM_unionCaseReprElement + | 340 -> NONTERM_unionCaseRepr + | 341 -> NONTERM_unionCaseRepr + | 342 -> NONTERM_recdFieldDeclList + | 343 -> NONTERM_recdFieldDeclList + | 344 -> NONTERM_recdFieldDecl + | 345 -> NONTERM_fieldDecl + | 346 -> NONTERM_exconDefn + | 347 -> NONTERM_exceptionAndGrabDoc + | 348 -> NONTERM_exconCore + | 349 -> NONTERM_exconIntro + | 350 -> NONTERM_exconIntro + | 351 -> NONTERM_exconRepr + | 352 -> NONTERM_exconRepr + | 353 -> NONTERM_openDecl + | 354 -> NONTERM_defnBindings + | 355 -> NONTERM_defnBindings + | 356 -> NONTERM_doBinding + | 357 -> NONTERM_hardwhiteLetBindings + | 358 -> NONTERM_hardwhiteDoBinding + | 359 -> NONTERM_classDefnBindings + | 360 -> NONTERM_classDefnBindings + | 361 -> NONTERM_classDefnBindings + | 362 -> NONTERM_classDefnBindings + | 363 -> NONTERM_hardwhiteDefnBindingsTerminator + | 364 -> NONTERM_hardwhiteDefnBindingsTerminator + | 365 -> NONTERM_cPrototype + | 366 -> NONTERM_cArgs + | 367 -> NONTERM_cArgs + | 368 -> NONTERM_cArgs + | 369 -> NONTERM_cMoreArgs + | 370 -> NONTERM_cMoreArgs + | 371 -> NONTERM_cArg + | 372 -> NONTERM_cArg + | 373 -> NONTERM_cType + | 374 -> NONTERM_cType + | 375 -> NONTERM_cType + | 376 -> NONTERM_cType + | 377 -> NONTERM_cType + | 378 -> NONTERM_cRetType + | 379 -> NONTERM_cRetType + | 380 -> NONTERM_localBindings + | 381 -> NONTERM_moreLocalBindings + | 382 -> NONTERM_moreLocalBindings + | 383 -> NONTERM_attr_localBinding + | 384 -> NONTERM_attr_localBinding + | 385 -> NONTERM_localBinding + | 386 -> NONTERM_localBinding + | 387 -> NONTERM_localBinding + | 388 -> NONTERM_typedExprWithStaticOptimizationsBlock + | 389 -> NONTERM_typedExprWithStaticOptimizationsBlock + | 390 -> NONTERM_typedExprWithStaticOptimizationsBlock + | 391 -> NONTERM_typedExprWithStaticOptimizations + | 392 -> NONTERM_opt_staticOptimizations + | 393 -> NONTERM_opt_staticOptimizations + | 394 -> NONTERM_staticOptimization + | 395 -> NONTERM_staticOptimizationConditions + | 396 -> NONTERM_staticOptimizationConditions + | 397 -> NONTERM_staticOptimizationCondition + | 398 -> NONTERM_staticOptimizationCondition + | 399 -> NONTERM_rawConstant + | 400 -> NONTERM_rawConstant + | 401 -> NONTERM_rawConstant + | 402 -> NONTERM_rawConstant + | 403 -> NONTERM_rawConstant + | 404 -> NONTERM_rawConstant + | 405 -> NONTERM_rawConstant + | 406 -> NONTERM_rawConstant + | 407 -> NONTERM_rawConstant + | 408 -> NONTERM_rawConstant + | 409 -> NONTERM_rawConstant + | 410 -> NONTERM_rawConstant + | 411 -> NONTERM_rawConstant + | 412 -> NONTERM_rawConstant + | 413 -> NONTERM_rawConstant + | 414 -> NONTERM_rawConstant + | 415 -> NONTERM_rawConstant + | 416 -> NONTERM_rationalConstant + | 417 -> NONTERM_rationalConstant + | 418 -> NONTERM_rationalConstant + | 419 -> NONTERM_rationalConstant + | 420 -> NONTERM_atomicUnsignedRationalConstant + | 421 -> NONTERM_atomicUnsignedRationalConstant + | 422 -> NONTERM_atomicRationalConstant + | 423 -> NONTERM_atomicRationalConstant + | 424 -> NONTERM_constant + | 425 -> NONTERM_constant + | 426 -> NONTERM_bindingPattern + | 427 -> NONTERM_simplePattern + | 428 -> NONTERM_simplePattern + | 429 -> NONTERM_simplePattern + | 430 -> NONTERM_simplePattern + | 431 -> NONTERM_simplePatternCommaList + | 432 -> NONTERM_simplePatternCommaList + | 433 -> NONTERM_simplePatterns + | 434 -> NONTERM_simplePatterns + | 435 -> NONTERM_simplePatterns + | 436 -> NONTERM_simplePatterns + | 437 -> NONTERM_simplePatterns + | 438 -> NONTERM_headBindingPattern + | 439 -> NONTERM_headBindingPattern + | 440 -> NONTERM_headBindingPattern + | 441 -> NONTERM_headBindingPattern + | 442 -> NONTERM_headBindingPattern + | 443 -> NONTERM_headBindingPattern + | 444 -> NONTERM_tuplePatternElements + | 445 -> NONTERM_tuplePatternElements + | 446 -> NONTERM_conjPatternElements + | 447 -> NONTERM_conjPatternElements + | 448 -> NONTERM_namePatPairs + | 449 -> NONTERM_namePatPairs + | 450 -> NONTERM_namePatPair + | 451 -> NONTERM_constrPattern + | 452 -> NONTERM_constrPattern + | 453 -> NONTERM_constrPattern + | 454 -> NONTERM_constrPattern + | 455 -> NONTERM_constrPattern + | 456 -> NONTERM_constrPattern + | 457 -> NONTERM_atomicPatsOrNamePatPairs + | 458 -> NONTERM_atomicPatsOrNamePatPairs + | 459 -> NONTERM_atomicPatterns + | 460 -> NONTERM_atomicPatterns + | 461 -> NONTERM_atomicPatterns + | 462 -> NONTERM_atomicPatterns + | 463 -> NONTERM_atomicPattern + | 464 -> NONTERM_atomicPattern + | 465 -> NONTERM_atomicPattern + | 466 -> NONTERM_atomicPattern + | 467 -> NONTERM_atomicPattern + | 468 -> NONTERM_atomicPattern + | 469 -> NONTERM_atomicPattern + | 470 -> NONTERM_atomicPattern + | 471 -> NONTERM_atomicPattern + | 472 -> NONTERM_atomicPattern + | 473 -> NONTERM_atomicPattern + | 474 -> NONTERM_atomicPattern + | 475 -> NONTERM_atomicPattern + | 476 -> NONTERM_atomicPattern + | 477 -> NONTERM_atomicPattern + | 478 -> NONTERM_atomicPattern + | 479 -> NONTERM_atomicPattern + | 480 -> NONTERM_atomicPattern + | 481 -> NONTERM_atomicPattern + | 482 -> NONTERM_atomicPattern + | 483 -> NONTERM_parenPatternBody + | 484 -> NONTERM_parenPatternBody + | 485 -> NONTERM_parenPattern + | 486 -> NONTERM_parenPattern + | 487 -> NONTERM_parenPattern + | 488 -> NONTERM_parenPattern + | 489 -> NONTERM_parenPattern + | 490 -> NONTERM_parenPattern + | 491 -> NONTERM_parenPattern + | 492 -> NONTERM_parenPattern + | 493 -> NONTERM_tupleParenPatternElements + | 494 -> NONTERM_tupleParenPatternElements + | 495 -> NONTERM_conjParenPatternElements + | 496 -> NONTERM_conjParenPatternElements + | 497 -> NONTERM_recordPatternElementsAux + | 498 -> NONTERM_recordPatternElementsAux + | 499 -> NONTERM_recordPatternElement + | 500 -> NONTERM_listPatternElements + | 501 -> NONTERM_listPatternElements + | 502 -> NONTERM_listPatternElements + | 503 -> NONTERM_typedSeqExprBlock + | 504 -> NONTERM_typedSeqExprBlock + | 505 -> NONTERM_typedSeqExprBlock + | 506 -> NONTERM_declExprBlock + | 507 -> NONTERM_declExprBlock + | 508 -> NONTERM_typedSeqExprBlockR + | 509 -> NONTERM_typedSeqExprBlockR + | 510 -> NONTERM_typedSeqExpr + | 511 -> NONTERM_typedSeqExpr + | 512 -> NONTERM_typedSeqExprEOF + | 513 -> NONTERM_seqExpr + | 514 -> NONTERM_seqExpr + | 515 -> NONTERM_seqExpr + | 516 -> NONTERM_seqExpr + | 517 -> NONTERM_seqExpr + | 518 -> NONTERM_seqExpr + | 519 -> NONTERM_recover + | 520 -> NONTERM_recover + | 521 -> NONTERM_declExpr + | 522 -> NONTERM_declExpr + | 523 -> NONTERM_declExpr + | 524 -> NONTERM_declExpr + | 525 -> NONTERM_declExpr + | 526 -> NONTERM_declExpr + | 527 -> NONTERM_declExpr + | 528 -> NONTERM_declExpr + | 529 -> NONTERM_declExpr + | 530 -> NONTERM_declExpr + | 531 -> NONTERM_declExpr + | 532 -> NONTERM_declExpr + | 533 -> NONTERM_declExpr + | 534 -> NONTERM_declExpr + | 535 -> NONTERM_declExpr + | 536 -> NONTERM_declExpr + | 537 -> NONTERM_declExpr + | 538 -> NONTERM_declExpr + | 539 -> NONTERM_declExpr + | 540 -> NONTERM_declExpr + | 541 -> NONTERM_declExpr + | 542 -> NONTERM_declExpr + | 543 -> NONTERM_declExpr + | 544 -> NONTERM_declExpr + | 545 -> NONTERM_declExpr + | 546 -> NONTERM_declExpr + | 547 -> NONTERM_declExpr + | 548 -> NONTERM_declExpr + | 549 -> NONTERM_declExpr + | 550 -> NONTERM_declExpr + | 551 -> NONTERM_declExpr + | 552 -> NONTERM_declExpr + | 553 -> NONTERM_declExpr + | 554 -> NONTERM_declExpr + | 555 -> NONTERM_declExpr + | 556 -> NONTERM_declExpr + | 557 -> NONTERM_declExpr + | 558 -> NONTERM_declExpr + | 559 -> NONTERM_declExpr + | 560 -> NONTERM_declExpr + | 561 -> NONTERM_declExpr + | 562 -> NONTERM_declExpr + | 563 -> NONTERM_declExpr + | 564 -> NONTERM_declExpr + | 565 -> NONTERM_declExpr + | 566 -> NONTERM_declExpr + | 567 -> NONTERM_declExpr + | 568 -> NONTERM_declExpr + | 569 -> NONTERM_declExpr + | 570 -> NONTERM_declExpr + | 571 -> NONTERM_declExpr + | 572 -> NONTERM_declExpr + | 573 -> NONTERM_declExpr + | 574 -> NONTERM_declExpr + | 575 -> NONTERM_declExpr + | 576 -> NONTERM_declExpr + | 577 -> NONTERM_declExpr + | 578 -> NONTERM_declExpr + | 579 -> NONTERM_declExpr + | 580 -> NONTERM_declExpr + | 581 -> NONTERM_declExpr + | 582 -> NONTERM_declExpr + | 583 -> NONTERM_declExpr + | 584 -> NONTERM_declExpr + | 585 -> NONTERM_declExpr + | 586 -> NONTERM_declExpr + | 587 -> NONTERM_declExpr + | 588 -> NONTERM_declExpr + | 589 -> NONTERM_declExpr + | 590 -> NONTERM_declExpr + | 591 -> NONTERM_declExpr + | 592 -> NONTERM_declExpr + | 593 -> NONTERM_declExpr + | 594 -> NONTERM_declExpr + | 595 -> NONTERM_declExpr + | 596 -> NONTERM_declExpr + | 597 -> NONTERM_declExpr + | 598 -> NONTERM_declExpr + | 599 -> NONTERM_declExpr + | 600 -> NONTERM_declExpr + | 601 -> NONTERM_declExpr + | 602 -> NONTERM_declExpr + | 603 -> NONTERM_declExpr + | 604 -> NONTERM_declExpr + | 605 -> NONTERM_declExpr + | 606 -> NONTERM_declExpr + | 607 -> NONTERM_declExpr + | 608 -> NONTERM_declExpr + | 609 -> NONTERM_declExpr + | 610 -> NONTERM_declExpr + | 611 -> NONTERM_declExpr + | 612 -> NONTERM_declExpr + | 613 -> NONTERM_declExpr + | 614 -> NONTERM_declExpr + | 615 -> NONTERM_declExpr + | 616 -> NONTERM_declExpr + | 617 -> NONTERM_declExpr + | 618 -> NONTERM_declExpr + | 619 -> NONTERM_declExpr + | 620 -> NONTERM_declExpr + | 621 -> NONTERM_declExpr + | 622 -> NONTERM_declExpr + | 623 -> NONTERM_declExpr + | 624 -> NONTERM_dynamicArg + | 625 -> NONTERM_dynamicArg + | 626 -> NONTERM_withClauses + | 627 -> NONTERM_withClauses + | 628 -> NONTERM_withClauses + | 629 -> NONTERM_withPatternClauses + | 630 -> NONTERM_withPatternClauses + | 631 -> NONTERM_withPatternClauses + | 632 -> NONTERM_withPatternClauses + | 633 -> NONTERM_patternAndGuard + | 634 -> NONTERM_patternClauses + | 635 -> NONTERM_patternClauses + | 636 -> NONTERM_patternClauses + | 637 -> NONTERM_patternClauses + | 638 -> NONTERM_patternClauses + | 639 -> NONTERM_patternGuard + | 640 -> NONTERM_patternGuard + | 641 -> NONTERM_patternResult + | 642 -> NONTERM_ifExprCases + | 643 -> NONTERM_ifExprThen + | 644 -> NONTERM_ifExprThen + | 645 -> NONTERM_ifExprThen + | 646 -> NONTERM_ifExprElifs + | 647 -> NONTERM_ifExprElifs + | 648 -> NONTERM_ifExprElifs + | 649 -> NONTERM_ifExprElifs + | 650 -> NONTERM_ifExprElifs + | 651 -> NONTERM_ifExprElifs + | 652 -> NONTERM_tupleExpr + | 653 -> NONTERM_tupleExpr + | 654 -> NONTERM_tupleExpr + | 655 -> NONTERM_tupleExpr + | 656 -> NONTERM_minusExpr + | 657 -> NONTERM_minusExpr + | 658 -> NONTERM_minusExpr + | 659 -> NONTERM_minusExpr + | 660 -> NONTERM_minusExpr + | 661 -> NONTERM_minusExpr + | 662 -> NONTERM_minusExpr + | 663 -> NONTERM_minusExpr + | 664 -> NONTERM_minusExpr + | 665 -> NONTERM_minusExpr + | 666 -> NONTERM_minusExpr + | 667 -> NONTERM_minusExpr + | 668 -> NONTERM_appExpr + | 669 -> NONTERM_appExpr + | 670 -> NONTERM_argExpr + | 671 -> NONTERM_argExpr + | 672 -> NONTERM_atomicExpr + | 673 -> NONTERM_atomicExpr + | 674 -> NONTERM_atomicExpr + | 675 -> NONTERM_atomicExpr + | 676 -> NONTERM_atomicExpr + | 677 -> NONTERM_atomicExpr + | 678 -> NONTERM_atomicExpr + | 679 -> NONTERM_atomicExpr + | 680 -> NONTERM_atomicExpr + | 681 -> NONTERM_atomicExpr + | 682 -> NONTERM_atomicExpr + | 683 -> NONTERM_atomicExpr + | 684 -> NONTERM_atomicExpr + | 685 -> NONTERM_atomicExpr + | 686 -> NONTERM_atomicExpr + | 687 -> NONTERM_atomicExpr + | 688 -> NONTERM_atomicExpr + | 689 -> NONTERM_atomicExprQualification + | 690 -> NONTERM_atomicExprQualification + | 691 -> NONTERM_atomicExprQualification + | 692 -> NONTERM_atomicExprQualification + | 693 -> NONTERM_atomicExprQualification + | 694 -> NONTERM_atomicExprQualification + | 695 -> NONTERM_atomicExprQualification + | 696 -> NONTERM_atomicExprQualification + | 697 -> NONTERM_atomicExprQualification + | 698 -> NONTERM_atomicExprQualification + | 699 -> NONTERM_atomicExprQualification + | 700 -> NONTERM_optRangeSeqExpr + | 701 -> NONTERM_optRangeSeqExpr + | 702 -> NONTERM_optRange + | 703 -> NONTERM_optRange + | 704 -> NONTERM_optRange + | 705 -> NONTERM_optRange + | 706 -> NONTERM_optRange + | 707 -> NONTERM_rangeDeclExpr + | 708 -> NONTERM_rangeDeclExpr + | 709 -> NONTERM_atomicExprAfterType + | 710 -> NONTERM_atomicExprAfterType + | 711 -> NONTERM_atomicExprAfterType + | 712 -> NONTERM_atomicExprAfterType + | 713 -> NONTERM_atomicExprAfterType + | 714 -> NONTERM_atomicExprAfterType + | 715 -> NONTERM_atomicExprAfterType + | 716 -> NONTERM_atomicExprAfterType + | 717 -> NONTERM_atomicExprAfterType + | 718 -> NONTERM_atomicExprAfterType + | 719 -> NONTERM_beginEndExpr + | 720 -> NONTERM_beginEndExpr + | 721 -> NONTERM_beginEndExpr + | 722 -> NONTERM_beginEndExpr + | 723 -> NONTERM_quoteExpr + | 724 -> NONTERM_quoteExpr + | 725 -> NONTERM_quoteExpr + | 726 -> NONTERM_quoteExpr + | 727 -> NONTERM_arrayExpr + | 728 -> NONTERM_arrayExpr + | 729 -> NONTERM_arrayExpr + | 730 -> NONTERM_arrayExpr + | 731 -> NONTERM_parenExpr + | 732 -> NONTERM_parenExpr + | 733 -> NONTERM_parenExpr + | 734 -> NONTERM_parenExpr + | 735 -> NONTERM_parenExpr + | 736 -> NONTERM_parenExpr + | 737 -> NONTERM_parenExpr + | 738 -> NONTERM_parenExpr + | 739 -> NONTERM_parenExpr + | 740 -> NONTERM_parenExprBody + | 741 -> NONTERM_parenExprBody + | 742 -> NONTERM_parenExprBody + | 743 -> NONTERM_staticallyKnownHeadTypars + | 744 -> NONTERM_staticallyKnownHeadTypars + | 745 -> NONTERM_staticallyKnownHeadTyparAlts + | 746 -> NONTERM_staticallyKnownHeadTyparAlts + | 747 -> NONTERM_braceExpr + | 748 -> NONTERM_braceExpr + | 749 -> NONTERM_braceExpr + | 750 -> NONTERM_braceExpr + | 751 -> NONTERM_braceExpr + | 752 -> NONTERM_braceExprBody + | 753 -> NONTERM_braceExprBody + | 754 -> NONTERM_braceExprBody + | 755 -> NONTERM_listExprElements + | 756 -> NONTERM_listExprElements + | 757 -> NONTERM_monadicExprInitial + | 758 -> NONTERM_monadicExprInitial + | 759 -> NONTERM_rangeSequenceExpr + | 760 -> NONTERM_rangeSequenceExpr + | 761 -> NONTERM_rangeSequenceExpr + | 762 -> NONTERM_arrowThenExprR + | 763 -> NONTERM_forLoopBinder + | 764 -> NONTERM_forLoopBinder + | 765 -> NONTERM_forLoopBinder + | 766 -> NONTERM_forLoopBinder + | 767 -> NONTERM_forLoopRange + | 768 -> NONTERM_forLoopRange + | 769 -> NONTERM_forLoopDirection + | 770 -> NONTERM_forLoopDirection + | 771 -> NONTERM_inlineAssemblyExpr + | 772 -> NONTERM_opt_curriedArgExprs + | 773 -> NONTERM_opt_curriedArgExprs + | 774 -> NONTERM_opt_atomicExprAfterType + | 775 -> NONTERM_opt_atomicExprAfterType + | 776 -> NONTERM_opt_inlineAssemblyTypeArg + | 777 -> NONTERM_opt_inlineAssemblyTypeArg + | 778 -> NONTERM_opt_inlineAssemblyReturnTypes + | 779 -> NONTERM_opt_inlineAssemblyReturnTypes + | 780 -> NONTERM_opt_inlineAssemblyReturnTypes + | 781 -> NONTERM_recdExpr + | 782 -> NONTERM_recdExpr + | 783 -> NONTERM_recdExprCore + | 784 -> NONTERM_recdExprCore + | 785 -> NONTERM_recdExprCore + | 786 -> NONTERM_recdExprCore + | 787 -> NONTERM_recdExprCore + | 788 -> NONTERM_recdExprCore + | 789 -> NONTERM_recdExprCore + | 790 -> NONTERM_opt_seps_recd + | 791 -> NONTERM_opt_seps_recd + | 792 -> NONTERM_seps_recd + | 793 -> NONTERM_seps_recd + | 794 -> NONTERM_seps_recd + | 795 -> NONTERM_seps_recd + | 796 -> NONTERM_pathOrUnderscore + | 797 -> NONTERM_pathOrUnderscore + | 798 -> NONTERM_recdExprBindings + | 799 -> NONTERM_recdExprBindings + | 800 -> NONTERM_recdBinding + | 801 -> NONTERM_recdBinding + | 802 -> NONTERM_recdBinding + | 803 -> NONTERM_recdBinding + | 804 -> NONTERM_recdBinding + | 805 -> NONTERM_objExpr + | 806 -> NONTERM_objExpr + | 807 -> NONTERM_objExpr + | 808 -> NONTERM_objExprBaseCall + | 809 -> NONTERM_objExprBaseCall + | 810 -> NONTERM_objExprBaseCall + | 811 -> NONTERM_opt_objExprBindings + | 812 -> NONTERM_opt_objExprBindings + | 813 -> NONTERM_objExprBindings + | 814 -> NONTERM_objExprBindings + | 815 -> NONTERM_objExprBindings + | 816 -> NONTERM_objExprInterfaces + | 817 -> NONTERM_opt_objExprInterfaces + | 818 -> NONTERM_opt_objExprInterfaces + | 819 -> NONTERM_opt_objExprInterfaces + | 820 -> NONTERM_objExprInterface + | 821 -> NONTERM_braceBarExpr + | 822 -> NONTERM_braceBarExpr + | 823 -> NONTERM_braceBarExprCore + | 824 -> NONTERM_braceBarExprCore + | 825 -> NONTERM_braceBarExprCore + | 826 -> NONTERM_braceBarExprCore + | 827 -> NONTERM_braceBarExprCore + | 828 -> NONTERM_anonLambdaExpr + | 829 -> NONTERM_anonLambdaExpr + | 830 -> NONTERM_anonLambdaExpr + | 831 -> NONTERM_anonLambdaExpr + | 832 -> NONTERM_anonLambdaExpr + | 833 -> NONTERM_anonLambdaExpr + | 834 -> NONTERM_anonLambdaExpr + | 835 -> NONTERM_anonLambdaExpr + | 836 -> NONTERM_anonMatchingExpr + | 837 -> NONTERM_anonMatchingExpr + | 838 -> NONTERM_typeWithTypeConstraints + | 839 -> NONTERM_typeWithTypeConstraints + | 840 -> NONTERM_topTypeWithTypeConstraints + | 841 -> NONTERM_topTypeWithTypeConstraints + | 842 -> NONTERM_opt_topReturnTypeWithTypeConstraints + | 843 -> NONTERM_opt_topReturnTypeWithTypeConstraints + | 844 -> NONTERM_topType + | 845 -> NONTERM_topType + | 846 -> NONTERM_topTupleType + | 847 -> NONTERM_topTupleType + | 848 -> NONTERM_topTupleTypeElements + | 849 -> NONTERM_topTupleTypeElements + | 850 -> NONTERM_topAppType + | 851 -> NONTERM_topAppType + | 852 -> NONTERM_topAppType + | 853 -> NONTERM_topAppType + | 854 -> NONTERM_topAppType + | 855 -> NONTERM_topAppType + | 856 -> NONTERM_typ + | 857 -> NONTERM_typ + | 858 -> NONTERM_typEOF + | 859 -> NONTERM_tupleType + | 860 -> NONTERM_tupleType + | 861 -> NONTERM_tupleType + | 862 -> NONTERM_tupleType + | 863 -> NONTERM_tupleOrQuotTypeElements + | 864 -> NONTERM_tupleOrQuotTypeElements + | 865 -> NONTERM_tupleOrQuotTypeElements + | 866 -> NONTERM_appTypeCon + | 867 -> NONTERM_appTypeCon + | 868 -> NONTERM_appTypeConPower + | 869 -> NONTERM_appTypeConPower + | 870 -> NONTERM_appType + | 871 -> NONTERM_appType + | 872 -> NONTERM_appType + | 873 -> NONTERM_appType + | 874 -> NONTERM_appType + | 875 -> NONTERM_appType + | 876 -> NONTERM_appType + | 877 -> NONTERM_arrayTypeSuffix + | 878 -> NONTERM_arrayTypeSuffix + | 879 -> NONTERM_arrayTypeSuffix + | 880 -> NONTERM_arrayTypeSuffix + | 881 -> NONTERM_appTypePrefixArguments + | 882 -> NONTERM_typeArgListElements + | 883 -> NONTERM_typeArgListElements + | 884 -> NONTERM_typeArgListElements + | 885 -> NONTERM_powerType + | 886 -> NONTERM_powerType + | 887 -> NONTERM_atomTypeNonAtomicDeprecated + | 888 -> NONTERM_atomTypeNonAtomicDeprecated + | 889 -> NONTERM_atomTypeOrAnonRecdType + | 890 -> NONTERM_atomTypeOrAnonRecdType + | 891 -> NONTERM_atomType + | 892 -> NONTERM_atomType + | 893 -> NONTERM_atomType + | 894 -> NONTERM_atomType + | 895 -> NONTERM_atomType + | 896 -> NONTERM_atomType + | 897 -> NONTERM_atomType + | 898 -> NONTERM_atomType + | 899 -> NONTERM_atomType + | 900 -> NONTERM_atomType + | 901 -> NONTERM_atomType + | 902 -> NONTERM_atomType + | 903 -> NONTERM_atomType + | 904 -> NONTERM_atomType + | 905 -> NONTERM_atomType + | 906 -> NONTERM_atomType + | 907 -> NONTERM_atomType + | 908 -> NONTERM_atomType + | 909 -> NONTERM_atomType + | 910 -> NONTERM_atomType + | 911 -> NONTERM_typeArgsNoHpaDeprecated + | 912 -> NONTERM_typeArgsNoHpaDeprecated + | 913 -> NONTERM_typeArgsActual + | 914 -> NONTERM_typeArgsActual + | 915 -> NONTERM_typeArgsActual + | 916 -> NONTERM_typeArgsActual + | 917 -> NONTERM_typeArgsActual + | 918 -> NONTERM_typeArgsActual + | 919 -> NONTERM_typeArgsActual + | 920 -> NONTERM_typeArgActual + | 921 -> NONTERM_typeArgActual + | 922 -> NONTERM_typeArgActual + | 923 -> NONTERM_typeArgActualOrDummyIfEmpty + | 924 -> NONTERM_typeArgActualOrDummyIfEmpty + | 925 -> NONTERM_dummyTypeArg + | 926 -> NONTERM_measureTypeArg + | 927 -> NONTERM_measureTypeArg + | 928 -> NONTERM_measureTypeAtom + | 929 -> NONTERM_measureTypeAtom + | 930 -> NONTERM_measureTypeAtom + | 931 -> NONTERM_measureTypePower + | 932 -> NONTERM_measureTypePower + | 933 -> NONTERM_measureTypePower + | 934 -> NONTERM_measureTypeSeq + | 935 -> NONTERM_measureTypeSeq + | 936 -> NONTERM_measureTypeExpr + | 937 -> NONTERM_measureTypeExpr + | 938 -> NONTERM_measureTypeExpr + | 939 -> NONTERM_measureTypeExpr + | 940 -> NONTERM_typar + | 941 -> NONTERM_typar + | 942 -> NONTERM_staticallyKnownHeadTypar + | 943 -> NONTERM_ident + | 944 -> NONTERM_path + | 945 -> NONTERM_path + | 946 -> NONTERM_path + | 947 -> NONTERM_path + | 948 -> NONTERM_opName + | 949 -> NONTERM_opName + | 950 -> NONTERM_opName + | 951 -> NONTERM_opName + | 952 -> NONTERM_opName + | 953 -> NONTERM_operatorName + | 954 -> NONTERM_operatorName + | 955 -> NONTERM_operatorName + | 956 -> NONTERM_operatorName + | 957 -> NONTERM_operatorName + | 958 -> NONTERM_operatorName + | 959 -> NONTERM_operatorName + | 960 -> NONTERM_operatorName + | 961 -> NONTERM_operatorName + | 962 -> NONTERM_operatorName + | 963 -> NONTERM_operatorName + | 964 -> NONTERM_operatorName + | 965 -> NONTERM_operatorName + | 966 -> NONTERM_operatorName + | 967 -> NONTERM_operatorName + | 968 -> NONTERM_operatorName + | 969 -> NONTERM_operatorName + | 970 -> NONTERM_operatorName + | 971 -> NONTERM_operatorName + | 972 -> NONTERM_operatorName + | 973 -> NONTERM_operatorName + | 974 -> NONTERM_operatorName + | 975 -> NONTERM_operatorName + | 976 -> NONTERM_operatorName + | 977 -> NONTERM_operatorName + | 978 -> NONTERM_operatorName + | 979 -> NONTERM_activePatternCaseName + | 980 -> NONTERM_activePatternCaseNames + | 981 -> NONTERM_activePatternCaseNames + | 982 -> NONTERM_identOrOp + | 983 -> NONTERM_identOrOp + | 984 -> NONTERM_pathOp + | 985 -> NONTERM_pathOp + | 986 -> NONTERM_pathOp + | 987 -> NONTERM_pathOp + | 988 -> NONTERM_nameop + | 989 -> NONTERM_topSeparator + | 990 -> NONTERM_topSeparator + | 991 -> NONTERM_topSeparator + | 992 -> NONTERM_topSeparators + | 993 -> NONTERM_topSeparators + | 994 -> NONTERM_opt_topSeparators + | 995 -> NONTERM_opt_topSeparators + | 996 -> NONTERM_seps + | 997 -> NONTERM_seps + | 998 -> NONTERM_seps + | 999 -> NONTERM_seps + | 1000 -> NONTERM_declEnd + | 1001 -> NONTERM_declEnd + | 1002 -> NONTERM_declEnd + | 1003 -> NONTERM_opt_declEnd + | 1004 -> NONTERM_opt_declEnd + | 1005 -> NONTERM_opt_declEnd + | 1006 -> NONTERM_opt_declEnd + | 1007 -> NONTERM_opt_ODECLEND + | 1008 -> NONTERM_opt_ODECLEND + | 1009 -> NONTERM_deprecated_opt_equals + | 1010 -> NONTERM_deprecated_opt_equals + | 1011 -> NONTERM_opt_OBLOCKSEP + | 1012 -> NONTERM_opt_OBLOCKSEP + | 1013 -> NONTERM_opt_seps + | 1014 -> NONTERM_opt_seps + | 1015 -> NONTERM_opt_rec + | 1016 -> NONTERM_opt_rec + | 1017 -> NONTERM_opt_bar + | 1018 -> NONTERM_opt_bar + | 1019 -> NONTERM_opt_inline + | 1020 -> NONTERM_opt_inline + | 1021 -> NONTERM_opt_mutable + | 1022 -> NONTERM_opt_mutable + | 1023 -> NONTERM_doToken + | 1024 -> NONTERM_doToken + | 1025 -> NONTERM_doneDeclEnd + | 1026 -> NONTERM_doneDeclEnd + | 1027 -> NONTERM_structOrBegin + | 1028 -> NONTERM_structOrBegin + | 1029 -> NONTERM_sigOrBegin + | 1030 -> NONTERM_sigOrBegin + | 1031 -> NONTERM_colonOrEquals + | 1032 -> NONTERM_colonOrEquals + | 1033 -> NONTERM_stringOrKeywordString + | 1034 -> NONTERM_stringOrKeywordString + | 1035 -> NONTERM_opt_HIGH_PRECEDENCE_APP + | 1036 -> NONTERM_opt_HIGH_PRECEDENCE_APP + | 1037 -> NONTERM_opt_HIGH_PRECEDENCE_APP + | 1038 -> NONTERM_opt_HIGH_PRECEDENCE_TYAPP + | 1039 -> NONTERM_opt_HIGH_PRECEDENCE_TYAPP + | 1040 -> NONTERM_typeKeyword + | 1041 -> NONTERM_typeKeyword + | 1042 -> NONTERM_typeKeyword + | 1043 -> NONTERM_moduleKeyword + | 1044 -> NONTERM_moduleKeyword + | 1045 -> NONTERM_moduleKeyword + | 1046 -> NONTERM_rbrace + | 1047 -> NONTERM_rbrace + | 1048 -> NONTERM_rbrace + | 1049 -> NONTERM_bar_rbrace + | 1050 -> NONTERM_rparen + | 1051 -> NONTERM_rparen + | 1052 -> NONTERM_rparen + | 1053 -> NONTERM_oblockend + | 1054 -> NONTERM_oblockend + | 1055 -> NONTERM_oblockend + | 1056 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover + | 1057 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover + | 1058 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover + | 1059 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover + | 1060 -> NONTERM_ends_other_than_rparen_coming_soon_or_recover + | 1061 -> NONTERM_ends_coming_soon_or_recover + | 1062 -> NONTERM_ends_coming_soon_or_recover + | 1063 -> NONTERM_ends_coming_soon_or_recover + | 1064 -> NONTERM_ends_coming_soon_or_recover + | 1065 -> NONTERM_ends_coming_soon_or_recover + | 1066 -> NONTERM_ends_coming_soon_or_recover + | _ -> failwith "prodIdxToNonTerminal: bad production index" + +let _fsyacc_endOfInputTag = 197 +let _fsyacc_tagOfErrorTerminal = 195 + +// This function gets the name of a token as a string +let token_to_string (t:token) = + match t with + | HASH_IF _ -> "HASH_IF" + | HASH_ELSE _ -> "HASH_ELSE" + | HASH_ENDIF _ -> "HASH_ENDIF" + | COMMENT _ -> "COMMENT" + | WHITESPACE _ -> "WHITESPACE" + | HASH_LINE _ -> "HASH_LINE" + | HASH_LIGHT _ -> "HASH_LIGHT" + | INACTIVECODE _ -> "INACTIVECODE" + | LINE_COMMENT _ -> "LINE_COMMENT" + | STRING_TEXT _ -> "STRING_TEXT" + | EOF _ -> "EOF" + | LEX_FAILURE _ -> "LEX_FAILURE" + | ODUMMY _ -> "ODUMMY" + | FIXED -> "FIXED" + | OINTERFACE_MEMBER -> "OINTERFACE_MEMBER" + | OBLOCKEND -> "OBLOCKEND" + | OBLOCKEND_COMING_SOON -> "OBLOCKEND_COMING_SOON" + | OBLOCKEND_IS_HERE -> "OBLOCKEND_IS_HERE" + | ORIGHT_BLOCK_END -> "ORIGHT_BLOCK_END" + | ODECLEND -> "ODECLEND" + | OEND -> "OEND" + | OBLOCKSEP -> "OBLOCKSEP" + | OBLOCKBEGIN -> "OBLOCKBEGIN" + | ORESET -> "ORESET" + | OFUN -> "OFUN" + | OFUNCTION -> "OFUNCTION" + | OWITH -> "OWITH" + | OELSE -> "OELSE" + | OTHEN -> "OTHEN" + | ODO_BANG -> "ODO_BANG" + | ODO -> "ODO" + | OBINDER _ -> "OBINDER" + | OLET _ -> "OLET" + | HIGH_PRECEDENCE_TYAPP -> "HIGH_PRECEDENCE_TYAPP" + | HIGH_PRECEDENCE_PAREN_APP -> "HIGH_PRECEDENCE_PAREN_APP" + | HIGH_PRECEDENCE_BRACK_APP -> "HIGH_PRECEDENCE_BRACK_APP" + | TYPE_COMING_SOON -> "TYPE_COMING_SOON" + | TYPE_IS_HERE -> "TYPE_IS_HERE" + | MODULE_COMING_SOON -> "MODULE_COMING_SOON" + | MODULE_IS_HERE -> "MODULE_IS_HERE" + | EXTERN -> "EXTERN" + | VOID -> "VOID" + | PUBLIC -> "PUBLIC" + | PRIVATE -> "PRIVATE" + | INTERNAL -> "INTERNAL" + | GLOBAL -> "GLOBAL" + | STATIC -> "STATIC" + | MEMBER -> "MEMBER" + | CLASS -> "CLASS" + | ABSTRACT -> "ABSTRACT" + | OVERRIDE -> "OVERRIDE" + | DEFAULT -> "DEFAULT" + | CONSTRUCTOR -> "CONSTRUCTOR" + | INHERIT -> "INHERIT" + | GREATER_RBRACK -> "GREATER_RBRACK" + | STRUCT -> "STRUCT" + | SIG -> "SIG" + | BAR -> "BAR" + | RBRACK -> "RBRACK" + | RBRACE -> "RBRACE" + | RBRACE_COMING_SOON -> "RBRACE_COMING_SOON" + | RBRACE_IS_HERE -> "RBRACE_IS_HERE" + | MINUS -> "MINUS" + | DOLLAR -> "DOLLAR" + | BAR_RBRACK -> "BAR_RBRACK" + | BAR_RBRACE -> "BAR_RBRACE" + | UNDERSCORE -> "UNDERSCORE" + | SEMICOLON_SEMICOLON -> "SEMICOLON_SEMICOLON" + | LARROW -> "LARROW" + | EQUALS -> "EQUALS" + | LBRACK -> "LBRACK" + | LBRACK_BAR -> "LBRACK_BAR" + | LBRACE_BAR -> "LBRACE_BAR" + | LBRACK_LESS -> "LBRACK_LESS" + | LBRACE -> "LBRACE" + | QMARK -> "QMARK" + | QMARK_QMARK -> "QMARK_QMARK" + | DOT -> "DOT" + | COLON -> "COLON" + | COLON_COLON -> "COLON_COLON" + | COLON_GREATER -> "COLON_GREATER" + | COLON_QMARK_GREATER -> "COLON_QMARK_GREATER" + | COLON_QMARK -> "COLON_QMARK" + | COLON_EQUALS -> "COLON_EQUALS" + | SEMICOLON -> "SEMICOLON" + | WHEN -> "WHEN" + | WHILE -> "WHILE" + | WITH -> "WITH" + | HASH -> "HASH" + | AMP -> "AMP" + | AMP_AMP -> "AMP_AMP" + | QUOTE -> "QUOTE" + | LPAREN -> "LPAREN" + | RPAREN -> "RPAREN" + | RPAREN_COMING_SOON -> "RPAREN_COMING_SOON" + | RPAREN_IS_HERE -> "RPAREN_IS_HERE" + | STAR -> "STAR" + | COMMA -> "COMMA" + | RARROW -> "RARROW" + | GREATER_BAR_RBRACK -> "GREATER_BAR_RBRACK" + | LPAREN_STAR_RPAREN -> "LPAREN_STAR_RPAREN" + | OPEN -> "OPEN" + | OR -> "OR" + | REC -> "REC" + | THEN -> "THEN" + | TO -> "TO" + | TRUE -> "TRUE" + | TRY -> "TRY" + | TYPE -> "TYPE" + | VAL -> "VAL" + | INLINE -> "INLINE" + | INTERFACE -> "INTERFACE" + | INSTANCE -> "INSTANCE" + | CONST -> "CONST" + | LAZY -> "LAZY" + | OLAZY -> "OLAZY" + | MATCH -> "MATCH" + | MATCH_BANG -> "MATCH_BANG" + | MUTABLE -> "MUTABLE" + | NEW -> "NEW" + | OF -> "OF" + | EXCEPTION -> "EXCEPTION" + | FALSE -> "FALSE" + | FOR -> "FOR" + | FUN -> "FUN" + | FUNCTION -> "FUNCTION" + | IF -> "IF" + | IN -> "IN" + | JOIN_IN -> "JOIN_IN" + | FINALLY -> "FINALLY" + | DO_BANG -> "DO_BANG" + | AND -> "AND" + | AS -> "AS" + | ASSERT -> "ASSERT" + | OASSERT -> "OASSERT" + | ASR -> "ASR" + | BEGIN -> "BEGIN" + | DO -> "DO" + | DONE -> "DONE" + | DOWNTO -> "DOWNTO" + | ELSE -> "ELSE" + | ELIF -> "ELIF" + | END -> "END" + | DOT_DOT -> "DOT_DOT" + | DOT_DOT_HAT -> "DOT_DOT_HAT" + | BAR_BAR -> "BAR_BAR" + | UPCAST -> "UPCAST" + | DOWNCAST -> "DOWNCAST" + | NULL -> "NULL" + | RESERVED -> "RESERVED" + | MODULE -> "MODULE" + | NAMESPACE -> "NAMESPACE" + | DELEGATE -> "DELEGATE" + | CONSTRAINT -> "CONSTRAINT" + | BASE -> "BASE" + | LQUOTE _ -> "LQUOTE" + | RQUOTE _ -> "RQUOTE" + | RQUOTE_DOT _ -> "RQUOTE_DOT" + | PERCENT_OP _ -> "PERCENT_OP" + | BINDER _ -> "BINDER" + | LESS _ -> "LESS" + | GREATER _ -> "GREATER" + | LET _ -> "LET" + | YIELD _ -> "YIELD" + | YIELD_BANG _ -> "YIELD_BANG" + | BIGNUM _ -> "BIGNUM" + | DECIMAL _ -> "DECIMAL" + | CHAR _ -> "CHAR" + | IEEE64 _ -> "IEEE64" + | IEEE32 _ -> "IEEE32" + | NATIVEINT _ -> "NATIVEINT" + | UNATIVEINT _ -> "UNATIVEINT" + | UINT64 _ -> "UINT64" + | UINT32 _ -> "UINT32" + | UINT16 _ -> "UINT16" + | UINT8 _ -> "UINT8" + | INT64 _ -> "INT64" + | INT32 _ -> "INT32" + | INT32_DOT_DOT _ -> "INT32_DOT_DOT" + | INT16 _ -> "INT16" + | INT8 _ -> "INT8" + | FUNKY_OPERATOR_NAME _ -> "FUNKY_OPERATOR_NAME" + | ADJACENT_PREFIX_OP _ -> "ADJACENT_PREFIX_OP" + | PLUS_MINUS_OP _ -> "PLUS_MINUS_OP" + | INFIX_AMP_OP _ -> "INFIX_AMP_OP" + | INFIX_STAR_DIV_MOD_OP _ -> "INFIX_STAR_DIV_MOD_OP" + | PREFIX_OP _ -> "PREFIX_OP" + | INFIX_BAR_OP _ -> "INFIX_BAR_OP" + | INFIX_AT_HAT_OP _ -> "INFIX_AT_HAT_OP" + | INFIX_COMPARE_OP _ -> "INFIX_COMPARE_OP" + | INFIX_STAR_STAR_OP _ -> "INFIX_STAR_STAR_OP" + | IDENT _ -> "IDENT" + | KEYWORD_STRING _ -> "KEYWORD_STRING" + | STRING _ -> "STRING" + | BYTEARRAY _ -> "BYTEARRAY" + +// This function gets the data carried by a token as an object +let _fsyacc_dataOfToken (t:token) = + match t with + | HASH_IF _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | HASH_ELSE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | HASH_ENDIF _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | COMMENT _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | WHITESPACE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | HASH_LINE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | HASH_LIGHT _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INACTIVECODE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | LINE_COMMENT _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | STRING_TEXT _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | EOF _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | LEX_FAILURE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | ODUMMY _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | FIXED -> (null : System.Object) + | OINTERFACE_MEMBER -> (null : System.Object) + | OBLOCKEND -> (null : System.Object) + | OBLOCKEND_COMING_SOON -> (null : System.Object) + | OBLOCKEND_IS_HERE -> (null : System.Object) + | ORIGHT_BLOCK_END -> (null : System.Object) + | ODECLEND -> (null : System.Object) + | OEND -> (null : System.Object) + | OBLOCKSEP -> (null : System.Object) + | OBLOCKBEGIN -> (null : System.Object) + | ORESET -> (null : System.Object) + | OFUN -> (null : System.Object) + | OFUNCTION -> (null : System.Object) + | OWITH -> (null : System.Object) + | OELSE -> (null : System.Object) + | OTHEN -> (null : System.Object) + | ODO_BANG -> (null : System.Object) + | ODO -> (null : System.Object) + | OBINDER _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | OLET _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | HIGH_PRECEDENCE_TYAPP -> (null : System.Object) + | HIGH_PRECEDENCE_PAREN_APP -> (null : System.Object) + | HIGH_PRECEDENCE_BRACK_APP -> (null : System.Object) + | TYPE_COMING_SOON -> (null : System.Object) + | TYPE_IS_HERE -> (null : System.Object) + | MODULE_COMING_SOON -> (null : System.Object) + | MODULE_IS_HERE -> (null : System.Object) + | EXTERN -> (null : System.Object) + | VOID -> (null : System.Object) + | PUBLIC -> (null : System.Object) + | PRIVATE -> (null : System.Object) + | INTERNAL -> (null : System.Object) + | GLOBAL -> (null : System.Object) + | STATIC -> (null : System.Object) + | MEMBER -> (null : System.Object) + | CLASS -> (null : System.Object) + | ABSTRACT -> (null : System.Object) + | OVERRIDE -> (null : System.Object) + | DEFAULT -> (null : System.Object) + | CONSTRUCTOR -> (null : System.Object) + | INHERIT -> (null : System.Object) + | GREATER_RBRACK -> (null : System.Object) + | STRUCT -> (null : System.Object) + | SIG -> (null : System.Object) + | BAR -> (null : System.Object) + | RBRACK -> (null : System.Object) + | RBRACE -> (null : System.Object) + | RBRACE_COMING_SOON -> (null : System.Object) + | RBRACE_IS_HERE -> (null : System.Object) + | MINUS -> (null : System.Object) + | DOLLAR -> (null : System.Object) + | BAR_RBRACK -> (null : System.Object) + | BAR_RBRACE -> (null : System.Object) + | UNDERSCORE -> (null : System.Object) + | SEMICOLON_SEMICOLON -> (null : System.Object) + | LARROW -> (null : System.Object) + | EQUALS -> (null : System.Object) + | LBRACK -> (null : System.Object) + | LBRACK_BAR -> (null : System.Object) + | LBRACE_BAR -> (null : System.Object) + | LBRACK_LESS -> (null : System.Object) + | LBRACE -> (null : System.Object) + | QMARK -> (null : System.Object) + | QMARK_QMARK -> (null : System.Object) + | DOT -> (null : System.Object) + | COLON -> (null : System.Object) + | COLON_COLON -> (null : System.Object) + | COLON_GREATER -> (null : System.Object) + | COLON_QMARK_GREATER -> (null : System.Object) + | COLON_QMARK -> (null : System.Object) + | COLON_EQUALS -> (null : System.Object) + | SEMICOLON -> (null : System.Object) + | WHEN -> (null : System.Object) + | WHILE -> (null : System.Object) + | WITH -> (null : System.Object) + | HASH -> (null : System.Object) + | AMP -> (null : System.Object) + | AMP_AMP -> (null : System.Object) + | QUOTE -> (null : System.Object) + | LPAREN -> (null : System.Object) + | RPAREN -> (null : System.Object) + | RPAREN_COMING_SOON -> (null : System.Object) + | RPAREN_IS_HERE -> (null : System.Object) + | STAR -> (null : System.Object) + | COMMA -> (null : System.Object) + | RARROW -> (null : System.Object) + | GREATER_BAR_RBRACK -> (null : System.Object) + | LPAREN_STAR_RPAREN -> (null : System.Object) + | OPEN -> (null : System.Object) + | OR -> (null : System.Object) + | REC -> (null : System.Object) + | THEN -> (null : System.Object) + | TO -> (null : System.Object) + | TRUE -> (null : System.Object) + | TRY -> (null : System.Object) + | TYPE -> (null : System.Object) + | VAL -> (null : System.Object) + | INLINE -> (null : System.Object) + | INTERFACE -> (null : System.Object) + | INSTANCE -> (null : System.Object) + | CONST -> (null : System.Object) + | LAZY -> (null : System.Object) + | OLAZY -> (null : System.Object) + | MATCH -> (null : System.Object) + | MATCH_BANG -> (null : System.Object) + | MUTABLE -> (null : System.Object) + | NEW -> (null : System.Object) + | OF -> (null : System.Object) + | EXCEPTION -> (null : System.Object) + | FALSE -> (null : System.Object) + | FOR -> (null : System.Object) + | FUN -> (null : System.Object) + | FUNCTION -> (null : System.Object) + | IF -> (null : System.Object) + | IN -> (null : System.Object) + | JOIN_IN -> (null : System.Object) + | FINALLY -> (null : System.Object) + | DO_BANG -> (null : System.Object) + | AND -> (null : System.Object) + | AS -> (null : System.Object) + | ASSERT -> (null : System.Object) + | OASSERT -> (null : System.Object) + | ASR -> (null : System.Object) + | BEGIN -> (null : System.Object) + | DO -> (null : System.Object) + | DONE -> (null : System.Object) + | DOWNTO -> (null : System.Object) + | ELSE -> (null : System.Object) + | ELIF -> (null : System.Object) + | END -> (null : System.Object) + | DOT_DOT -> (null : System.Object) + | DOT_DOT_HAT -> (null : System.Object) + | BAR_BAR -> (null : System.Object) + | UPCAST -> (null : System.Object) + | DOWNCAST -> (null : System.Object) + | NULL -> (null : System.Object) + | RESERVED -> (null : System.Object) + | MODULE -> (null : System.Object) + | NAMESPACE -> (null : System.Object) + | DELEGATE -> (null : System.Object) + | CONSTRAINT -> (null : System.Object) + | BASE -> (null : System.Object) + | LQUOTE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | RQUOTE _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | RQUOTE_DOT _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | PERCENT_OP _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | BINDER _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | LESS _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | GREATER _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | LET _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | YIELD _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | YIELD_BANG _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | BIGNUM _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | DECIMAL _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | CHAR _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | IEEE64 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | IEEE32 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | NATIVEINT _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | UNATIVEINT _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | UINT64 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | UINT32 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | UINT16 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | UINT8 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INT64 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INT32 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INT32_DOT_DOT _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INT16 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INT8 _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | FUNKY_OPERATOR_NAME _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | ADJACENT_PREFIX_OP _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | PLUS_MINUS_OP _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INFIX_AMP_OP _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INFIX_STAR_DIV_MOD_OP _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | PREFIX_OP _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INFIX_BAR_OP _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INFIX_AT_HAT_OP _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INFIX_COMPARE_OP _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | INFIX_STAR_STAR_OP _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | IDENT _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | KEYWORD_STRING _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | STRING _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x + | BYTEARRAY _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x +let _fsyacc_gotos = [| 0us; 65535us; 0us; 65535us; 0us; 65535us; 0us; 65535us; 0us; 65535us; 1us; 65535us; 4us; 5us; 7us; 65535us; 4us; 15us; 16us; 17us; 18us; 19us; 20us; 21us; 22us; 15us; 24us; 15us; 26us; 15us; 4us; 65535us; 4us; 10us; 22us; 23us; 24us; 25us; 26us; 27us; 5us; 65535us; 4us; 16us; 22us; 16us; 24us; 16us; 26us; 16us; 28us; 29us; 4us; 65535us; 4us; 18us; 22us; 18us; 24us; 18us; 26us; 18us; 4us; 65535us; 4us; 20us; 22us; 20us; 24us; 20us; 26us; 20us; 4us; 65535us; 16us; 22us; 18us; 24us; 20us; 26us; 34us; 35us; 4us; 65535us; 16us; 34us; 18us; 34us; 20us; 34us; 34us; 34us; 23us; 65535us; 0us; 84us; 2us; 257us; 4us; 33us; 22us; 33us; 24us; 33us; 26us; 33us; 61us; 84us; 65us; 84us; 69us; 84us; 79us; 84us; 82us; 84us; 112us; 84us; 115us; 84us; 119us; 84us; 224us; 257us; 228us; 257us; 231us; 257us; 243us; 257us; 247us; 257us; 249us; 257us; 254us; 257us; 278us; 257us; 288us; 257us; 1us; 65535us; 39us; 40us; 1us; 65535us; 40us; 41us; 1us; 65535us; 0us; 1us; 6us; 65535us; 31us; 269us; 64us; 65us; 87us; 88us; 227us; 228us; 241us; 269us; 259us; 269us; 4us; 65535us; 56us; 60us; 58us; 60us; 219us; 223us; 221us; 223us; 1us; 65535us; 0us; 43us; 2us; 65535us; 56us; 57us; 58us; 59us; 2us; 65535us; 56us; 58us; 58us; 58us; 2us; 65535us; 0us; 56us; 61us; 62us; 3us; 65535us; 0us; 67us; 61us; 67us; 65us; 66us; 6us; 65535us; 0us; 68us; 61us; 68us; 65us; 68us; 69us; 70us; 115us; 116us; 119us; 120us; 9us; 65535us; 0us; 76us; 61us; 76us; 65us; 76us; 69us; 76us; 79us; 80us; 82us; 83us; 112us; 113us; 115us; 76us; 119us; 76us; 9us; 65535us; 0us; 78us; 61us; 78us; 65us; 78us; 69us; 78us; 79us; 78us; 82us; 78us; 112us; 78us; 115us; 78us; 119us; 78us; 9us; 65535us; 0us; 85us; 61us; 85us; 65us; 85us; 69us; 85us; 79us; 85us; 82us; 85us; 112us; 85us; 115us; 85us; 119us; 85us; 2us; 65535us; 104us; 105us; 180us; 181us; 1us; 65535us; 89us; 91us; 2us; 65535us; 64us; 92us; 87us; 92us; 2us; 65535us; 122us; 123us; 125us; 126us; 3us; 65535us; 122us; 124us; 125us; 124us; 191us; 192us; 1us; 65535us; 128us; 129us; 2us; 65535us; 128us; 138us; 131us; 132us; 2us; 65535us; 128us; 141us; 131us; 141us; 2us; 65535us; 128us; 145us; 131us; 145us; 3us; 65535us; 146us; 147us; 156us; 157us; 210us; 211us; 8us; 65535us; 131us; 153us; 133us; 134us; 146us; 164us; 152us; 153us; 156us; 164us; 160us; 161us; 167us; 168us; 210us; 164us; 8us; 65535us; 131us; 165us; 133us; 165us; 146us; 165us; 152us; 165us; 156us; 165us; 160us; 165us; 167us; 165us; 210us; 165us; 11us; 65535us; 131us; 166us; 133us; 166us; 146us; 166us; 152us; 166us; 156us; 166us; 160us; 166us; 167us; 166us; 210us; 166us; 606us; 607us; 613us; 614us; 1379us; 1380us; 3us; 65535us; 179us; 180us; 431us; 432us; 461us; 462us; 2us; 65535us; 196us; 197us; 198us; 199us; 2us; 65535us; 171us; 173us; 172us; 173us; 2us; 65535us; 64us; 93us; 87us; 93us; 5us; 65535us; 127us; 130us; 134us; 135us; 136us; 137us; 138us; 139us; 208us; 209us; 1us; 65535us; 2us; 3us; 1us; 65535us; 2us; 213us; 2us; 65535us; 219us; 220us; 221us; 222us; 2us; 65535us; 219us; 221us; 221us; 221us; 2us; 65535us; 2us; 219us; 224us; 225us; 3us; 65535us; 2us; 230us; 224us; 230us; 228us; 229us; 5us; 65535us; 2us; 238us; 224us; 238us; 228us; 238us; 231us; 232us; 288us; 289us; 9us; 65535us; 2us; 239us; 224us; 239us; 228us; 239us; 231us; 239us; 243us; 244us; 249us; 250us; 254us; 255us; 278us; 282us; 288us; 239us; 10us; 65535us; 2us; 245us; 224us; 245us; 228us; 245us; 231us; 245us; 243us; 245us; 247us; 248us; 249us; 245us; 254us; 245us; 278us; 245us; 288us; 245us; 10us; 65535us; 2us; 247us; 224us; 247us; 228us; 247us; 231us; 247us; 243us; 247us; 247us; 247us; 249us; 247us; 254us; 247us; 278us; 247us; 288us; 247us; 15us; 65535us; 2us; 256us; 4us; 28us; 22us; 28us; 24us; 28us; 26us; 28us; 28us; 28us; 224us; 256us; 228us; 256us; 231us; 256us; 243us; 256us; 247us; 256us; 249us; 256us; 254us; 256us; 278us; 256us; 288us; 256us; 1us; 65535us; 89us; 90us; 1us; 65535us; 270us; 271us; 2us; 65535us; 270us; 286us; 278us; 279us; 1us; 65535us; 343us; 346us; 81us; 65535us; 0us; 63us; 2us; 226us; 4us; 30us; 22us; 30us; 24us; 30us; 26us; 30us; 28us; 258us; 61us; 63us; 65us; 86us; 69us; 86us; 79us; 86us; 82us; 86us; 96us; 97us; 112us; 86us; 115us; 86us; 119us; 86us; 122us; 337us; 125us; 337us; 128us; 523us; 131us; 170us; 133us; 169us; 146us; 169us; 152us; 169us; 156us; 169us; 160us; 169us; 167us; 169us; 191us; 337us; 210us; 169us; 224us; 226us; 228us; 240us; 231us; 240us; 243us; 240us; 247us; 258us; 249us; 240us; 254us; 240us; 265us; 337us; 278us; 240us; 288us; 240us; 293us; 414us; 340us; 337us; 343us; 347us; 344us; 523us; 352us; 523us; 354us; 415us; 356us; 414us; 370us; 414us; 374us; 414us; 376us; 414us; 380us; 414us; 386us; 414us; 389us; 414us; 400us; 401us; 447us; 337us; 482us; 510us; 485us; 414us; 502us; 510us; 508us; 510us; 535us; 673us; 544us; 673us; 564us; 573us; 569us; 573us; 570us; 573us; 576us; 573us; 581us; 573us; 606us; 169us; 613us; 169us; 622us; 632us; 625us; 632us; 630us; 632us; 670us; 673us; 683us; 684us; 696us; 747us; 702us; 747us; 714us; 741us; 719us; 728us; 724us; 728us; 726us; 728us; 744us; 747us; 1379us; 169us; 1483us; 511us; 1485us; 747us; 118us; 65535us; 0us; 296us; 2us; 272us; 4us; 272us; 22us; 272us; 24us; 272us; 26us; 272us; 28us; 272us; 61us; 296us; 65us; 296us; 69us; 296us; 79us; 296us; 82us; 296us; 96us; 296us; 103us; 1549us; 112us; 296us; 115us; 296us; 119us; 296us; 122us; 296us; 125us; 296us; 128us; 296us; 131us; 296us; 133us; 296us; 143us; 1549us; 146us; 296us; 152us; 296us; 156us; 296us; 160us; 296us; 167us; 296us; 178us; 1549us; 191us; 296us; 194us; 1549us; 210us; 296us; 224us; 272us; 228us; 272us; 231us; 272us; 243us; 272us; 247us; 272us; 249us; 272us; 254us; 272us; 265us; 296us; 278us; 272us; 288us; 272us; 293us; 296us; 297us; 298us; 340us; 296us; 343us; 296us; 344us; 296us; 352us; 296us; 354us; 296us; 356us; 296us; 367us; 1549us; 370us; 296us; 374us; 296us; 376us; 296us; 380us; 296us; 386us; 296us; 389us; 296us; 400us; 296us; 430us; 1549us; 447us; 296us; 482us; 296us; 485us; 296us; 502us; 296us; 508us; 296us; 535us; 296us; 544us; 296us; 564us; 296us; 569us; 296us; 570us; 296us; 576us; 296us; 581us; 296us; 606us; 296us; 613us; 296us; 622us; 296us; 625us; 296us; 630us; 296us; 639us; 1549us; 670us; 296us; 683us; 296us; 696us; 296us; 702us; 296us; 714us; 296us; 719us; 296us; 724us; 296us; 726us; 296us; 744us; 296us; 820us; 820us; 821us; 820us; 823us; 820us; 856us; 933us; 868us; 933us; 884us; 933us; 887us; 933us; 898us; 933us; 906us; 933us; 928us; 933us; 933us; 933us; 934us; 933us; 936us; 933us; 937us; 933us; 938us; 933us; 939us; 933us; 945us; 933us; 947us; 933us; 1043us; 933us; 1189us; 933us; 1191us; 933us; 1196us; 933us; 1203us; 933us; 1379us; 296us; 1483us; 296us; 1485us; 296us; 1529us; 933us; 1531us; 933us; 1538us; 1549us; 1541us; 1549us; 1544us; 1549us; 1547us; 1549us; 118us; 65535us; 0us; 297us; 2us; 297us; 4us; 297us; 22us; 297us; 24us; 297us; 26us; 297us; 28us; 297us; 61us; 297us; 65us; 297us; 69us; 297us; 79us; 297us; 82us; 297us; 96us; 297us; 103us; 297us; 112us; 297us; 115us; 297us; 119us; 297us; 122us; 297us; 125us; 297us; 128us; 297us; 131us; 297us; 133us; 297us; 143us; 297us; 146us; 297us; 152us; 297us; 156us; 297us; 160us; 297us; 167us; 297us; 178us; 297us; 191us; 297us; 194us; 297us; 210us; 297us; 224us; 297us; 228us; 297us; 231us; 297us; 243us; 297us; 247us; 297us; 249us; 297us; 254us; 297us; 265us; 297us; 278us; 297us; 288us; 297us; 293us; 297us; 297us; 297us; 340us; 297us; 343us; 297us; 344us; 297us; 352us; 297us; 354us; 297us; 356us; 297us; 367us; 297us; 370us; 297us; 374us; 297us; 376us; 297us; 380us; 297us; 386us; 297us; 389us; 297us; 400us; 297us; 430us; 297us; 447us; 297us; 482us; 297us; 485us; 297us; 502us; 297us; 508us; 297us; 535us; 297us; 544us; 297us; 564us; 297us; 569us; 297us; 570us; 297us; 576us; 297us; 581us; 297us; 606us; 297us; 613us; 297us; 622us; 297us; 625us; 297us; 630us; 297us; 639us; 297us; 670us; 297us; 683us; 297us; 696us; 297us; 702us; 297us; 714us; 297us; 719us; 297us; 724us; 297us; 726us; 297us; 744us; 297us; 820us; 297us; 821us; 297us; 823us; 297us; 856us; 297us; 868us; 297us; 884us; 297us; 887us; 297us; 898us; 297us; 906us; 297us; 928us; 297us; 933us; 297us; 934us; 297us; 936us; 297us; 937us; 297us; 938us; 297us; 939us; 297us; 945us; 297us; 947us; 297us; 1043us; 297us; 1189us; 297us; 1191us; 297us; 1196us; 297us; 1203us; 297us; 1379us; 297us; 1483us; 297us; 1485us; 297us; 1529us; 297us; 1531us; 297us; 1538us; 297us; 1541us; 297us; 1544us; 297us; 1547us; 297us; 1us; 65535us; 299us; 300us; 2us; 65535us; 299us; 309us; 310us; 311us; 2us; 65535us; 299us; 315us; 310us; 315us; 4us; 65535us; 171us; 205us; 172us; 205us; 416us; 420us; 417us; 420us; 6us; 65535us; 122us; 127us; 125us; 127us; 191us; 127us; 265us; 343us; 340us; 343us; 447us; 343us; 2us; 65535us; 266us; 267us; 341us; 342us; 3us; 65535us; 265us; 266us; 340us; 341us; 447us; 448us; 2us; 65535us; 344us; 345us; 352us; 353us; 3us; 65535us; 344us; 362us; 352us; 362us; 354us; 355us; 3us; 65535us; 344us; 365us; 352us; 365us; 354us; 365us; 3us; 65535us; 344us; 369us; 352us; 369us; 354us; 369us; 3us; 65535us; 293us; 294us; 370us; 371us; 485us; 486us; 10us; 65535us; 293us; 384us; 354us; 377us; 356us; 357us; 370us; 384us; 374us; 387us; 376us; 377us; 380us; 381us; 386us; 387us; 389us; 390us; 485us; 384us; 10us; 65535us; 293us; 385us; 354us; 385us; 356us; 385us; 370us; 385us; 374us; 385us; 376us; 385us; 380us; 385us; 386us; 385us; 389us; 385us; 485us; 385us; 1us; 65535us; 408us; 411us; 2us; 65535us; 391us; 392us; 393us; 394us; 3us; 65535us; 391us; 397us; 393us; 397us; 398us; 399us; 3us; 65535us; 420us; 421us; 512us; 513us; 518us; 519us; 2us; 65535us; 416us; 426us; 417us; 426us; 10us; 65535us; 293us; 388us; 354us; 388us; 356us; 388us; 370us; 388us; 374us; 388us; 376us; 388us; 380us; 388us; 386us; 388us; 389us; 388us; 485us; 388us; 3us; 65535us; 332us; 437us; 416us; 435us; 417us; 435us; 2us; 65535us; 420us; 439us; 512us; 515us; 1us; 65535us; 458us; 459us; 42us; 65535us; 401us; 858us; 406us; 858us; 441us; 893us; 751us; 858us; 841us; 858us; 842us; 858us; 846us; 858us; 847us; 858us; 848us; 858us; 849us; 858us; 856us; 858us; 859us; 893us; 861us; 893us; 863us; 893us; 868us; 858us; 872us; 893us; 874us; 893us; 876us; 893us; 884us; 858us; 887us; 858us; 898us; 858us; 906us; 858us; 928us; 858us; 933us; 858us; 934us; 858us; 936us; 858us; 937us; 858us; 938us; 858us; 939us; 858us; 945us; 858us; 947us; 858us; 1043us; 858us; 1070us; 858us; 1076us; 858us; 1189us; 858us; 1191us; 858us; 1196us; 858us; 1203us; 858us; 1511us; 893us; 1516us; 893us; 1529us; 858us; 1531us; 858us; 10us; 65535us; 49us; 50us; 99us; 100us; 174us; 175us; 337us; 558us; 450us; 451us; 456us; 457us; 632us; 633us; 675us; 676us; 684us; 685us; 715us; 716us; 64us; 65535us; 30us; 481us; 49us; 477us; 63us; 481us; 86us; 481us; 99us; 477us; 169us; 481us; 170us; 481us; 174us; 477us; 226us; 481us; 240us; 481us; 258us; 481us; 337us; 477us; 347us; 481us; 401us; 472us; 406us; 472us; 414us; 481us; 415us; 481us; 441us; 472us; 450us; 477us; 456us; 477us; 523us; 481us; 632us; 477us; 675us; 477us; 684us; 477us; 715us; 477us; 751us; 472us; 841us; 472us; 842us; 472us; 846us; 472us; 847us; 472us; 848us; 472us; 849us; 472us; 856us; 472us; 859us; 472us; 861us; 472us; 863us; 472us; 868us; 472us; 872us; 472us; 874us; 472us; 876us; 472us; 884us; 472us; 887us; 472us; 898us; 472us; 906us; 472us; 928us; 472us; 933us; 472us; 934us; 472us; 936us; 472us; 937us; 472us; 938us; 472us; 939us; 472us; 945us; 472us; 947us; 472us; 1043us; 472us; 1070us; 472us; 1076us; 472us; 1189us; 472us; 1191us; 472us; 1196us; 472us; 1203us; 472us; 1511us; 472us; 1516us; 472us; 1529us; 472us; 1531us; 472us; 12us; 65535us; 30us; 31us; 63us; 64us; 86us; 87us; 169us; 171us; 170us; 172us; 226us; 227us; 240us; 241us; 258us; 259us; 347us; 348us; 414us; 416us; 415us; 417us; 523us; 524us; 1us; 65535us; 424us; 425us; 4us; 65535us; 357us; 358us; 359us; 360us; 362us; 363us; 680us; 681us; 2us; 65535us; 416us; 434us; 417us; 434us; 2us; 65535us; 350us; 351us; 442us; 443us; 2us; 65535us; 350us; 495us; 442us; 495us; 2us; 65535us; 489us; 490us; 492us; 493us; 3us; 65535us; 489us; 498us; 492us; 498us; 1257us; 1481us; 2us; 65535us; 482us; 483us; 1483us; 1488us; 4us; 65535us; 482us; 506us; 502us; 503us; 508us; 509us; 1483us; 506us; 4us; 65535us; 482us; 507us; 502us; 507us; 508us; 507us; 1483us; 507us; 2us; 65535us; 510us; 512us; 511us; 512us; 5us; 65535us; 128us; 140us; 131us; 140us; 344us; 364us; 352us; 364us; 354us; 364us; 6us; 65535us; 172us; 531us; 417us; 531us; 524us; 531us; 636us; 667us; 658us; 667us; 689us; 667us; 66us; 65535us; 8us; 1628us; 103us; 1628us; 143us; 1628us; 172us; 1628us; 178us; 1628us; 182us; 1628us; 184us; 1628us; 194us; 1628us; 367us; 1628us; 417us; 1628us; 423us; 1628us; 430us; 1628us; 453us; 1628us; 463us; 1628us; 524us; 1628us; 532us; 1628us; 596us; 1628us; 599us; 1628us; 609us; 1628us; 619us; 1628us; 636us; 1628us; 639us; 1628us; 658us; 1628us; 661us; 1628us; 664us; 1628us; 678us; 1628us; 689us; 1628us; 774us; 1628us; 818us; 1628us; 865us; 1628us; 931us; 1628us; 961us; 1628us; 1132us; 1628us; 1134us; 1628us; 1136us; 1628us; 1427us; 1628us; 1430us; 1628us; 1432us; 1628us; 1496us; 1628us; 1538us; 1628us; 1541us; 1628us; 1544us; 1628us; 1547us; 1628us; 1549us; 1628us; 1551us; 1628us; 1555us; 1628us; 1558us; 1628us; 1562us; 1628us; 1565us; 1628us; 1570us; 1628us; 1572us; 1628us; 1574us; 1628us; 1577us; 1628us; 1579us; 1628us; 1593us; 1628us; 1598us; 1628us; 1601us; 1628us; 1612us; 1628us; 1616us; 1628us; 1622us; 1628us; 1633us; 1628us; 1639us; 1628us; 1640us; 1628us; 1663us; 1628us; 1665us; 1628us; 1676us; 1628us; 67us; 65535us; 8us; 543us; 103us; 543us; 143us; 543us; 172us; 543us; 178us; 543us; 182us; 543us; 184us; 543us; 194us; 543us; 367us; 543us; 417us; 543us; 423us; 543us; 430us; 543us; 453us; 543us; 463us; 543us; 524us; 543us; 532us; 543us; 541us; 542us; 596us; 543us; 599us; 543us; 609us; 543us; 619us; 543us; 636us; 543us; 639us; 543us; 658us; 543us; 661us; 543us; 664us; 543us; 678us; 543us; 689us; 543us; 774us; 543us; 818us; 543us; 865us; 543us; 931us; 543us; 961us; 543us; 1132us; 543us; 1134us; 543us; 1136us; 543us; 1427us; 543us; 1430us; 543us; 1432us; 543us; 1496us; 543us; 1538us; 543us; 1541us; 543us; 1544us; 543us; 1547us; 543us; 1549us; 543us; 1551us; 543us; 1555us; 543us; 1558us; 543us; 1562us; 543us; 1565us; 543us; 1570us; 543us; 1572us; 543us; 1574us; 543us; 1577us; 543us; 1579us; 543us; 1593us; 543us; 1598us; 543us; 1601us; 543us; 1612us; 543us; 1616us; 543us; 1622us; 543us; 1633us; 543us; 1639us; 543us; 1640us; 543us; 1663us; 543us; 1665us; 543us; 1676us; 543us; 1us; 65535us; 532us; 533us; 5us; 65535us; 128us; 146us; 131us; 146us; 344us; 370us; 352us; 370us; 354us; 370us; 9us; 65535us; 171us; 182us; 172us; 182us; 416us; 423us; 417us; 423us; 1477us; 1496us; 1479us; 1496us; 1490us; 1496us; 1492us; 1496us; 1494us; 1496us; 1us; 65535us; 337us; 338us; 1us; 65535us; 558us; 560us; 3us; 65535us; 564us; 565us; 576us; 567us; 581us; 568us; 5us; 65535us; 564us; 572us; 569us; 571us; 570us; 571us; 576us; 572us; 581us; 572us; 1us; 65535us; 559us; 562us; 1us; 65535us; 581us; 582us; 4us; 65535us; 101us; 585us; 176us; 585us; 428us; 585us; 858us; 586us; 3us; 65535us; 101us; 102us; 176us; 177us; 428us; 429us; 1us; 65535us; 858us; 859us; 3us; 65535us; 338us; 339us; 567us; 577us; 582us; 583us; 3us; 65535us; 587us; 588us; 1535us; 589us; 1537us; 590us; 4us; 65535us; 587us; 593us; 591us; 592us; 1535us; 593us; 1537us; 593us; 1us; 65535us; 609us; 610us; 3us; 65535us; 172us; 530us; 417us; 530us; 524us; 530us; 5us; 65535us; 172us; 622us; 417us; 622us; 524us; 622us; 624us; 625us; 629us; 630us; 3us; 65535us; 622us; 623us; 625us; 626us; 630us; 631us; 3us; 65535us; 622us; 629us; 625us; 629us; 630us; 629us; 1us; 65535us; 633us; 634us; 3us; 65535us; 172us; 624us; 417us; 624us; 524us; 624us; 3us; 65535us; 172us; 627us; 417us; 627us; 524us; 627us; 4us; 65535us; 636us; 668us; 658us; 668us; 661us; 662us; 689us; 668us; 4us; 65535us; 636us; 660us; 658us; 660us; 661us; 660us; 689us; 660us; 3us; 65535us; 636us; 637us; 658us; 659us; 689us; 690us; 3us; 65535us; 535us; 536us; 544us; 545us; 670us; 671us; 3us; 65535us; 535us; 669us; 544us; 669us; 670us; 669us; 3us; 65535us; 186us; 187us; 189us; 190us; 673us; 674us; 4us; 65535us; 31us; 268us; 227us; 268us; 241us; 268us; 259us; 268us; 6us; 65535us; 31us; 683us; 64us; 683us; 87us; 683us; 227us; 683us; 241us; 683us; 259us; 683us; 6us; 65535us; 31us; 680us; 64us; 208us; 87us; 208us; 227us; 680us; 241us; 680us; 259us; 680us; 1us; 65535us; 685us; 686us; 1us; 65535us; 686us; 687us; 15us; 65535us; 2us; 274us; 4us; 274us; 22us; 274us; 24us; 274us; 26us; 274us; 28us; 274us; 224us; 274us; 228us; 274us; 231us; 274us; 243us; 274us; 247us; 274us; 249us; 274us; 254us; 274us; 278us; 274us; 288us; 274us; 114us; 65535us; 6us; 992us; 31us; 261us; 106us; 992us; 108us; 992us; 227us; 261us; 241us; 261us; 259us; 260us; 263us; 992us; 332us; 708us; 404us; 992us; 409us; 992us; 416us; 708us; 417us; 708us; 444us; 992us; 460us; 992us; 699us; 992us; 705us; 992us; 754us; 992us; 758us; 992us; 768us; 992us; 949us; 992us; 954us; 992us; 968us; 992us; 970us; 992us; 973us; 992us; 976us; 992us; 993us; 992us; 996us; 992us; 999us; 992us; 1005us; 992us; 1009us; 992us; 1013us; 992us; 1017us; 992us; 1019us; 992us; 1024us; 992us; 1026us; 992us; 1028us; 992us; 1030us; 992us; 1032us; 992us; 1034us; 992us; 1045us; 992us; 1053us; 992us; 1060us; 992us; 1066us; 992us; 1068us; 992us; 1071us; 992us; 1074us; 992us; 1077us; 992us; 1080us; 992us; 1083us; 992us; 1086us; 992us; 1088us; 992us; 1093us; 992us; 1095us; 992us; 1138us; 992us; 1140us; 992us; 1144us; 992us; 1145us; 992us; 1146us; 992us; 1147us; 992us; 1148us; 992us; 1149us; 992us; 1150us; 992us; 1151us; 992us; 1152us; 992us; 1153us; 992us; 1154us; 992us; 1156us; 992us; 1157us; 992us; 1158us; 992us; 1159us; 992us; 1160us; 992us; 1161us; 992us; 1162us; 992us; 1163us; 992us; 1164us; 992us; 1186us; 992us; 1208us; 992us; 1209us; 992us; 1213us; 992us; 1215us; 992us; 1219us; 992us; 1221us; 992us; 1225us; 992us; 1228us; 992us; 1230us; 992us; 1294us; 992us; 1301us; 992us; 1308us; 992us; 1315us; 992us; 1324us; 992us; 1327us; 992us; 1329us; 992us; 1332us; 992us; 1343us; 992us; 1350us; 992us; 1351us; 992us; 1357us; 992us; 1363us; 992us; 1364us; 992us; 1365us; 992us; 1381us; 992us; 1391us; 992us; 1404us; 992us; 1405us; 992us; 1407us; 992us; 1409us; 992us; 1413us; 992us; 1414us; 992us; 1441us; 992us; 1446us; 992us; 1471us; 992us; 1513us; 992us; 1518us; 992us; 7us; 65535us; 31us; 264us; 227us; 264us; 241us; 264us; 259us; 264us; 332us; 709us; 416us; 709us; 417us; 709us; 114us; 65535us; 6us; 976us; 31us; 263us; 106us; 996us; 108us; 996us; 227us; 263us; 241us; 263us; 259us; 262us; 263us; 976us; 332us; 710us; 404us; 976us; 409us; 976us; 416us; 710us; 417us; 710us; 444us; 976us; 460us; 976us; 699us; 976us; 705us; 976us; 754us; 976us; 758us; 976us; 768us; 976us; 949us; 976us; 954us; 976us; 968us; 976us; 970us; 976us; 973us; 976us; 976us; 976us; 993us; 976us; 996us; 976us; 999us; 976us; 1005us; 976us; 1009us; 976us; 1013us; 976us; 1017us; 976us; 1019us; 996us; 1024us; 996us; 1026us; 996us; 1028us; 996us; 1030us; 996us; 1032us; 996us; 1034us; 976us; 1045us; 976us; 1053us; 976us; 1060us; 976us; 1066us; 996us; 1068us; 996us; 1071us; 976us; 1074us; 976us; 1077us; 976us; 1080us; 976us; 1083us; 976us; 1086us; 976us; 1088us; 976us; 1093us; 996us; 1095us; 976us; 1138us; 996us; 1140us; 996us; 1144us; 996us; 1145us; 996us; 1146us; 996us; 1147us; 996us; 1148us; 996us; 1149us; 996us; 1150us; 996us; 1151us; 996us; 1152us; 996us; 1153us; 996us; 1154us; 996us; 1156us; 996us; 1157us; 996us; 1158us; 996us; 1159us; 996us; 1160us; 996us; 1161us; 996us; 1162us; 996us; 1163us; 996us; 1164us; 996us; 1186us; 976us; 1208us; 996us; 1209us; 976us; 1213us; 996us; 1215us; 976us; 1219us; 996us; 1221us; 976us; 1225us; 996us; 1228us; 996us; 1230us; 996us; 1294us; 976us; 1301us; 996us; 1308us; 976us; 1315us; 976us; 1324us; 996us; 1327us; 996us; 1329us; 996us; 1332us; 996us; 1343us; 976us; 1350us; 976us; 1351us; 976us; 1357us; 976us; 1363us; 976us; 1364us; 976us; 1365us; 976us; 1381us; 976us; 1391us; 976us; 1404us; 996us; 1405us; 996us; 1407us; 976us; 1409us; 996us; 1413us; 996us; 1414us; 996us; 1441us; 996us; 1446us; 996us; 1471us; 996us; 1513us; 976us; 1518us; 976us; 113us; 65535us; 6us; 1002us; 31us; 1002us; 106us; 1002us; 108us; 1002us; 227us; 1002us; 241us; 1002us; 263us; 1002us; 332us; 711us; 404us; 1002us; 409us; 1002us; 416us; 711us; 417us; 711us; 444us; 1002us; 460us; 1002us; 699us; 1002us; 705us; 1002us; 754us; 1002us; 758us; 1002us; 768us; 1002us; 949us; 1002us; 954us; 1002us; 968us; 1002us; 970us; 1002us; 973us; 1002us; 976us; 1002us; 993us; 1002us; 996us; 1002us; 999us; 1002us; 1005us; 1002us; 1009us; 1002us; 1013us; 1002us; 1017us; 1002us; 1019us; 1002us; 1024us; 1002us; 1026us; 1002us; 1028us; 1002us; 1030us; 1002us; 1032us; 1002us; 1034us; 1002us; 1045us; 1002us; 1053us; 1002us; 1060us; 1002us; 1066us; 1002us; 1068us; 1002us; 1071us; 1002us; 1074us; 1002us; 1077us; 1002us; 1080us; 1002us; 1083us; 1002us; 1086us; 1002us; 1088us; 1002us; 1093us; 1002us; 1095us; 1002us; 1138us; 1002us; 1140us; 1002us; 1144us; 1002us; 1145us; 1002us; 1146us; 1002us; 1147us; 1002us; 1148us; 1002us; 1149us; 1002us; 1150us; 1002us; 1151us; 1002us; 1152us; 1002us; 1153us; 1002us; 1154us; 1002us; 1156us; 1002us; 1157us; 1002us; 1158us; 1002us; 1159us; 1002us; 1160us; 1002us; 1161us; 1002us; 1162us; 1002us; 1163us; 1002us; 1164us; 1002us; 1186us; 1002us; 1208us; 1002us; 1209us; 1002us; 1213us; 1002us; 1215us; 1002us; 1219us; 1002us; 1221us; 1002us; 1225us; 1002us; 1228us; 1002us; 1230us; 1002us; 1294us; 1002us; 1301us; 1002us; 1308us; 1002us; 1315us; 1002us; 1324us; 1002us; 1327us; 1002us; 1329us; 1002us; 1332us; 1002us; 1343us; 1002us; 1350us; 1002us; 1351us; 1002us; 1357us; 1002us; 1363us; 1002us; 1364us; 1002us; 1365us; 1002us; 1381us; 1002us; 1391us; 1002us; 1404us; 1002us; 1405us; 1002us; 1407us; 1002us; 1409us; 1002us; 1413us; 1002us; 1414us; 1002us; 1441us; 1002us; 1446us; 1002us; 1471us; 1002us; 1513us; 1002us; 1518us; 1002us; 3us; 65535us; 332us; 419us; 416us; 418us; 417us; 418us; 4us; 65535us; 703us; 704us; 706us; 707us; 1078us; 1079us; 1089us; 1090us; 114us; 65535us; 6us; 698us; 31us; 698us; 106us; 698us; 108us; 698us; 227us; 698us; 241us; 698us; 259us; 698us; 263us; 698us; 332us; 698us; 404us; 698us; 409us; 698us; 416us; 698us; 417us; 698us; 444us; 698us; 460us; 698us; 699us; 698us; 705us; 698us; 754us; 698us; 758us; 698us; 768us; 698us; 949us; 698us; 954us; 698us; 968us; 698us; 970us; 698us; 973us; 698us; 976us; 698us; 993us; 698us; 996us; 698us; 999us; 698us; 1005us; 698us; 1009us; 698us; 1013us; 698us; 1017us; 698us; 1019us; 698us; 1024us; 698us; 1026us; 698us; 1028us; 698us; 1030us; 698us; 1032us; 698us; 1034us; 698us; 1045us; 698us; 1053us; 698us; 1060us; 698us; 1066us; 698us; 1068us; 698us; 1071us; 698us; 1074us; 698us; 1077us; 698us; 1080us; 698us; 1083us; 698us; 1086us; 698us; 1088us; 698us; 1093us; 698us; 1095us; 698us; 1138us; 698us; 1140us; 698us; 1144us; 698us; 1145us; 698us; 1146us; 698us; 1147us; 698us; 1148us; 698us; 1149us; 698us; 1150us; 698us; 1151us; 698us; 1152us; 698us; 1153us; 698us; 1154us; 698us; 1156us; 698us; 1157us; 698us; 1158us; 698us; 1159us; 698us; 1160us; 698us; 1161us; 698us; 1162us; 698us; 1163us; 698us; 1164us; 698us; 1186us; 698us; 1208us; 698us; 1209us; 698us; 1213us; 698us; 1215us; 698us; 1219us; 698us; 1221us; 698us; 1225us; 698us; 1228us; 698us; 1230us; 698us; 1294us; 698us; 1301us; 698us; 1308us; 698us; 1315us; 698us; 1324us; 698us; 1327us; 698us; 1329us; 698us; 1332us; 698us; 1343us; 698us; 1350us; 698us; 1351us; 698us; 1357us; 698us; 1363us; 698us; 1364us; 698us; 1365us; 698us; 1381us; 698us; 1391us; 698us; 1404us; 698us; 1405us; 698us; 1407us; 698us; 1409us; 698us; 1413us; 698us; 1414us; 698us; 1441us; 698us; 1446us; 698us; 1471us; 698us; 1513us; 698us; 1518us; 698us; 1us; 65535us; 719us; 720us; 1us; 65535us; 719us; 722us; 3us; 65535us; 719us; 723us; 724us; 725us; 726us; 727us; 2us; 65535us; 728us; 729us; 741us; 732us; 1us; 65535us; 714us; 715us; 4us; 65535us; 696us; 697us; 702us; 703us; 1483us; 1484us; 1485us; 1486us; 2us; 65535us; 742us; 743us; 745us; 746us; 5us; 65535us; 696us; 742us; 702us; 742us; 744us; 745us; 1483us; 742us; 1485us; 742us; 2us; 65535us; 511us; 748us; 747us; 748us; 1us; 65535us; 754us; 755us; 2us; 65535us; 754us; 762us; 758us; 759us; 1us; 65535us; 763us; 764us; 1us; 65535us; 764us; 765us; 1us; 65535us; 766us; 767us; 2us; 65535us; 766us; 772us; 770us; 771us; 258us; 65535us; 6us; 809us; 8us; 1647us; 31us; 809us; 103us; 1647us; 106us; 809us; 108us; 809us; 143us; 1647us; 172us; 1647us; 178us; 1647us; 182us; 1647us; 184us; 1647us; 194us; 1647us; 227us; 809us; 241us; 809us; 263us; 809us; 313us; 809us; 317us; 809us; 322us; 809us; 367us; 1647us; 401us; 809us; 404us; 809us; 406us; 809us; 409us; 809us; 417us; 1647us; 423us; 1647us; 430us; 1647us; 441us; 809us; 444us; 809us; 453us; 1647us; 460us; 809us; 463us; 1647us; 488us; 1647us; 491us; 809us; 524us; 1647us; 532us; 1647us; 550us; 1647us; 596us; 1647us; 599us; 1647us; 609us; 1647us; 619us; 1647us; 636us; 1647us; 639us; 1647us; 642us; 809us; 654us; 809us; 658us; 1647us; 661us; 1647us; 664us; 1647us; 678us; 1647us; 689us; 1647us; 699us; 809us; 705us; 809us; 751us; 809us; 754us; 809us; 758us; 809us; 768us; 809us; 774us; 1647us; 818us; 1647us; 841us; 809us; 842us; 809us; 846us; 809us; 847us; 809us; 848us; 809us; 849us; 809us; 856us; 809us; 859us; 809us; 861us; 809us; 863us; 809us; 865us; 1647us; 868us; 809us; 872us; 809us; 874us; 809us; 876us; 809us; 884us; 809us; 887us; 809us; 898us; 809us; 906us; 809us; 928us; 809us; 931us; 1647us; 933us; 809us; 934us; 809us; 936us; 809us; 937us; 809us; 938us; 809us; 939us; 809us; 945us; 809us; 947us; 809us; 949us; 809us; 954us; 809us; 961us; 1647us; 968us; 809us; 970us; 809us; 973us; 809us; 976us; 809us; 993us; 809us; 996us; 809us; 999us; 809us; 1005us; 809us; 1009us; 809us; 1013us; 809us; 1017us; 809us; 1019us; 809us; 1024us; 809us; 1026us; 809us; 1028us; 809us; 1030us; 809us; 1032us; 809us; 1034us; 809us; 1043us; 809us; 1045us; 809us; 1053us; 809us; 1060us; 809us; 1066us; 809us; 1068us; 809us; 1070us; 809us; 1071us; 809us; 1074us; 809us; 1076us; 809us; 1077us; 809us; 1080us; 809us; 1083us; 809us; 1086us; 809us; 1088us; 809us; 1093us; 809us; 1095us; 809us; 1132us; 1647us; 1134us; 1647us; 1136us; 1647us; 1138us; 809us; 1140us; 809us; 1144us; 809us; 1145us; 809us; 1146us; 809us; 1147us; 809us; 1148us; 809us; 1149us; 809us; 1150us; 809us; 1151us; 809us; 1152us; 809us; 1153us; 809us; 1154us; 809us; 1156us; 809us; 1157us; 809us; 1158us; 809us; 1159us; 809us; 1160us; 809us; 1161us; 809us; 1162us; 809us; 1163us; 809us; 1164us; 809us; 1186us; 809us; 1189us; 809us; 1191us; 809us; 1196us; 809us; 1203us; 809us; 1208us; 809us; 1209us; 809us; 1213us; 809us; 1215us; 809us; 1219us; 809us; 1221us; 809us; 1225us; 809us; 1228us; 809us; 1230us; 809us; 1232us; 809us; 1233us; 809us; 1235us; 809us; 1236us; 809us; 1238us; 809us; 1239us; 809us; 1241us; 809us; 1242us; 809us; 1244us; 809us; 1245us; 809us; 1247us; 809us; 1248us; 809us; 1250us; 1647us; 1251us; 1647us; 1254us; 809us; 1255us; 809us; 1260us; 809us; 1262us; 809us; 1264us; 809us; 1265us; 809us; 1266us; 809us; 1269us; 809us; 1276us; 809us; 1277us; 809us; 1280us; 809us; 1281us; 809us; 1294us; 809us; 1301us; 809us; 1308us; 809us; 1315us; 809us; 1324us; 809us; 1327us; 809us; 1329us; 809us; 1332us; 809us; 1343us; 809us; 1350us; 809us; 1351us; 809us; 1357us; 809us; 1363us; 809us; 1364us; 809us; 1365us; 809us; 1381us; 809us; 1391us; 809us; 1404us; 809us; 1405us; 809us; 1407us; 809us; 1409us; 809us; 1413us; 809us; 1414us; 809us; 1421us; 809us; 1427us; 1647us; 1430us; 1647us; 1432us; 1647us; 1434us; 1647us; 1436us; 809us; 1441us; 809us; 1446us; 809us; 1471us; 809us; 1496us; 1647us; 1504us; 809us; 1511us; 809us; 1513us; 809us; 1516us; 809us; 1518us; 809us; 1529us; 809us; 1531us; 809us; 1538us; 1647us; 1541us; 1647us; 1544us; 1647us; 1547us; 1647us; 1549us; 1647us; 1551us; 1647us; 1555us; 1647us; 1558us; 1647us; 1562us; 1647us; 1565us; 1647us; 1570us; 1647us; 1572us; 1647us; 1574us; 1647us; 1577us; 1647us; 1579us; 1647us; 1593us; 1647us; 1598us; 1647us; 1601us; 1647us; 1612us; 1647us; 1616us; 1647us; 1622us; 1647us; 1629us; 1647us; 1633us; 1647us; 1639us; 1647us; 1640us; 1647us; 1649us; 809us; 1663us; 1647us; 1665us; 1647us; 1676us; 1647us; 1us; 65535us; 803us; 804us; 4us; 65535us; 807us; 808us; 1586us; 806us; 1620us; 806us; 1691us; 806us; 3us; 65535us; 1586us; 1587us; 1620us; 1621us; 1691us; 1692us; 186us; 65535us; 6us; 1333us; 31us; 1333us; 106us; 1333us; 108us; 1333us; 227us; 1333us; 241us; 1333us; 263us; 1333us; 313us; 1333us; 317us; 1333us; 322us; 1333us; 401us; 894us; 404us; 1333us; 406us; 894us; 409us; 1333us; 441us; 894us; 444us; 1333us; 460us; 1333us; 491us; 1333us; 642us; 643us; 654us; 655us; 699us; 1333us; 705us; 1333us; 751us; 894us; 754us; 1333us; 758us; 1333us; 768us; 1333us; 841us; 894us; 842us; 894us; 846us; 894us; 847us; 894us; 848us; 894us; 849us; 894us; 856us; 894us; 859us; 894us; 861us; 894us; 863us; 894us; 868us; 894us; 872us; 894us; 874us; 894us; 876us; 894us; 884us; 894us; 887us; 894us; 898us; 894us; 906us; 894us; 928us; 894us; 933us; 894us; 934us; 894us; 936us; 894us; 937us; 894us; 938us; 894us; 939us; 894us; 945us; 894us; 947us; 894us; 949us; 1333us; 954us; 1333us; 968us; 1333us; 970us; 1333us; 973us; 1333us; 976us; 1333us; 993us; 1333us; 996us; 1333us; 999us; 1333us; 1005us; 1333us; 1009us; 1333us; 1013us; 1333us; 1017us; 1333us; 1019us; 1333us; 1024us; 1333us; 1026us; 1333us; 1028us; 1333us; 1030us; 1333us; 1032us; 1333us; 1034us; 1333us; 1043us; 894us; 1045us; 1333us; 1053us; 1333us; 1060us; 1333us; 1066us; 1333us; 1068us; 1333us; 1070us; 894us; 1071us; 1333us; 1074us; 1333us; 1076us; 894us; 1077us; 1333us; 1080us; 1333us; 1083us; 1333us; 1086us; 1333us; 1088us; 1333us; 1093us; 1333us; 1095us; 1333us; 1138us; 1333us; 1140us; 1333us; 1144us; 1333us; 1145us; 1333us; 1146us; 1333us; 1147us; 1333us; 1148us; 1333us; 1149us; 1333us; 1150us; 1333us; 1151us; 1333us; 1152us; 1333us; 1153us; 1333us; 1154us; 1333us; 1156us; 1333us; 1157us; 1333us; 1158us; 1333us; 1159us; 1333us; 1160us; 1333us; 1161us; 1333us; 1162us; 1333us; 1163us; 1333us; 1164us; 1333us; 1186us; 1333us; 1189us; 894us; 1191us; 894us; 1196us; 894us; 1203us; 894us; 1208us; 1333us; 1209us; 1333us; 1213us; 1333us; 1215us; 1333us; 1219us; 1333us; 1221us; 1333us; 1225us; 1333us; 1228us; 1333us; 1230us; 1333us; 1232us; 1333us; 1233us; 1333us; 1235us; 1333us; 1236us; 1333us; 1238us; 1333us; 1239us; 1333us; 1241us; 1333us; 1242us; 1333us; 1244us; 1333us; 1245us; 1333us; 1247us; 1333us; 1248us; 1333us; 1254us; 1333us; 1255us; 1333us; 1260us; 1333us; 1262us; 1333us; 1264us; 1333us; 1265us; 1333us; 1266us; 1333us; 1269us; 1333us; 1276us; 1333us; 1277us; 1333us; 1280us; 1333us; 1281us; 1333us; 1294us; 1333us; 1301us; 1333us; 1308us; 1333us; 1315us; 1333us; 1324us; 1333us; 1327us; 1333us; 1329us; 1333us; 1332us; 1333us; 1343us; 1333us; 1350us; 1333us; 1351us; 1333us; 1357us; 1333us; 1363us; 1333us; 1364us; 1333us; 1365us; 1333us; 1381us; 1333us; 1391us; 1333us; 1404us; 1333us; 1405us; 1333us; 1407us; 1333us; 1409us; 1333us; 1413us; 1333us; 1414us; 1333us; 1421us; 1333us; 1436us; 1333us; 1441us; 1333us; 1446us; 1333us; 1471us; 1333us; 1504us; 1333us; 1511us; 894us; 1513us; 1333us; 1516us; 894us; 1518us; 1333us; 1529us; 894us; 1531us; 894us; 1649us; 1333us; 3us; 65535us; 401us; 402us; 406us; 407us; 751us; 752us; 3us; 65535us; 820us; 816us; 821us; 817us; 823us; 817us; 2us; 65535us; 821us; 822us; 823us; 824us; 1us; 65535us; 349us; 350us; 11us; 65535us; 401us; 812us; 406us; 812us; 751us; 812us; 841us; 831us; 842us; 832us; 846us; 833us; 847us; 834us; 848us; 835us; 849us; 836us; 1070us; 837us; 1076us; 838us; 11us; 65535us; 401us; 843us; 406us; 843us; 751us; 843us; 841us; 843us; 842us; 843us; 846us; 843us; 847us; 843us; 848us; 843us; 849us; 843us; 1070us; 843us; 1076us; 843us; 11us; 65535us; 401us; 844us; 406us; 844us; 751us; 844us; 841us; 844us; 842us; 844us; 846us; 844us; 847us; 844us; 848us; 844us; 849us; 844us; 1070us; 844us; 1076us; 844us; 2us; 65535us; 852us; 853us; 868us; 869us; 2us; 65535us; 852us; 850us; 868us; 850us; 33us; 65535us; 401us; 845us; 406us; 845us; 751us; 845us; 841us; 845us; 842us; 845us; 846us; 845us; 847us; 845us; 848us; 845us; 849us; 845us; 856us; 935us; 868us; 935us; 884us; 935us; 887us; 935us; 898us; 935us; 906us; 935us; 928us; 935us; 933us; 935us; 934us; 935us; 936us; 935us; 937us; 935us; 938us; 935us; 939us; 935us; 945us; 935us; 947us; 935us; 1043us; 935us; 1070us; 845us; 1076us; 845us; 1189us; 935us; 1191us; 935us; 1196us; 935us; 1203us; 935us; 1529us; 935us; 1531us; 935us; 3us; 65535us; 859us; 860us; 861us; 862us; 863us; 864us; 8us; 65535us; 859us; 871us; 861us; 871us; 863us; 871us; 872us; 873us; 874us; 875us; 876us; 877us; 1511us; 1512us; 1516us; 1517us; 42us; 65535us; 401us; 867us; 406us; 867us; 441us; 442us; 751us; 867us; 841us; 867us; 842us; 867us; 846us; 867us; 847us; 867us; 848us; 867us; 849us; 867us; 856us; 867us; 859us; 872us; 861us; 872us; 863us; 872us; 868us; 867us; 872us; 872us; 874us; 872us; 876us; 872us; 884us; 867us; 887us; 867us; 898us; 867us; 906us; 867us; 928us; 867us; 933us; 867us; 934us; 867us; 936us; 867us; 937us; 867us; 938us; 867us; 939us; 867us; 945us; 867us; 947us; 867us; 1043us; 867us; 1070us; 867us; 1076us; 867us; 1189us; 867us; 1191us; 867us; 1196us; 867us; 1203us; 867us; 1511us; 872us; 1516us; 872us; 1529us; 867us; 1531us; 867us; 2us; 65535us; 868us; 899us; 898us; 899us; 22us; 65535us; 856us; 857us; 868us; 913us; 884us; 923us; 887us; 923us; 898us; 913us; 906us; 920us; 928us; 914us; 933us; 915us; 934us; 916us; 936us; 917us; 937us; 918us; 938us; 919us; 939us; 921us; 945us; 922us; 947us; 923us; 1043us; 924us; 1189us; 925us; 1191us; 925us; 1196us; 925us; 1203us; 925us; 1529us; 925us; 1531us; 925us; 22us; 65535us; 856us; 929us; 868us; 929us; 884us; 929us; 887us; 929us; 898us; 929us; 906us; 907us; 928us; 929us; 933us; 929us; 934us; 929us; 936us; 929us; 937us; 929us; 938us; 929us; 939us; 929us; 945us; 929us; 947us; 929us; 1043us; 929us; 1189us; 929us; 1191us; 929us; 1196us; 929us; 1203us; 929us; 1529us; 929us; 1531us; 929us; 22us; 65535us; 856us; 930us; 868us; 930us; 884us; 930us; 887us; 930us; 898us; 930us; 906us; 930us; 928us; 930us; 933us; 930us; 934us; 930us; 936us; 930us; 937us; 930us; 938us; 930us; 939us; 930us; 945us; 930us; 947us; 930us; 1043us; 930us; 1189us; 930us; 1191us; 930us; 1196us; 930us; 1203us; 930us; 1529us; 930us; 1531us; 930us; 2us; 65535us; 881us; 882us; 942us; 943us; 2us; 65535us; 881us; 940us; 942us; 940us; 3us; 65535us; 884us; 885us; 887us; 888us; 947us; 948us; 23us; 65535us; 263us; 997us; 404us; 405us; 409us; 410us; 444us; 445us; 460us; 461us; 699us; 700us; 705us; 706us; 768us; 769us; 976us; 997us; 996us; 997us; 999us; 1000us; 1017us; 1018us; 1034us; 1035us; 1045us; 1046us; 1053us; 1054us; 1060us; 1061us; 1071us; 1072us; 1074us; 1075us; 1077us; 1078us; 1080us; 1081us; 1086us; 1087us; 1088us; 1089us; 1513us; 1514us; 6us; 65535us; 1028us; 1029us; 1030us; 1031us; 1140us; 1141us; 1441us; 1442us; 1446us; 1447us; 1471us; 1472us; 5us; 65535us; 1013us; 1014us; 1095us; 1096us; 1209us; 1210us; 1407us; 1408us; 1518us; 1519us; 50us; 65535us; 6us; 963us; 263us; 953us; 404us; 953us; 409us; 953us; 444us; 953us; 460us; 953us; 699us; 953us; 705us; 953us; 754us; 763us; 758us; 763us; 768us; 953us; 949us; 950us; 954us; 955us; 973us; 974us; 976us; 953us; 993us; 994us; 996us; 953us; 999us; 953us; 1005us; 1006us; 1009us; 1010us; 1013us; 958us; 1017us; 953us; 1034us; 953us; 1045us; 953us; 1053us; 953us; 1060us; 953us; 1071us; 953us; 1074us; 953us; 1077us; 953us; 1080us; 953us; 1083us; 1084us; 1086us; 953us; 1088us; 953us; 1095us; 958us; 1186us; 1187us; 1209us; 958us; 1215us; 1216us; 1221us; 1222us; 1308us; 1313us; 1315us; 1316us; 1343us; 1344us; 1350us; 1352us; 1351us; 1352us; 1363us; 1383us; 1364us; 1383us; 1365us; 1383us; 1381us; 1382us; 1407us; 958us; 1513us; 953us; 1518us; 958us; 1us; 65535us; 6us; 7us; 55us; 65535us; 6us; 960us; 263us; 960us; 404us; 960us; 409us; 960us; 444us; 960us; 460us; 960us; 699us; 960us; 705us; 960us; 754us; 960us; 758us; 960us; 768us; 960us; 949us; 960us; 954us; 960us; 968us; 969us; 970us; 971us; 973us; 960us; 976us; 960us; 993us; 960us; 996us; 960us; 999us; 960us; 1005us; 960us; 1009us; 960us; 1013us; 960us; 1017us; 960us; 1034us; 960us; 1045us; 960us; 1053us; 960us; 1060us; 960us; 1071us; 960us; 1074us; 960us; 1077us; 960us; 1080us; 960us; 1083us; 960us; 1086us; 960us; 1088us; 960us; 1095us; 960us; 1186us; 960us; 1209us; 960us; 1215us; 960us; 1221us; 960us; 1294us; 1402us; 1308us; 960us; 1315us; 960us; 1343us; 960us; 1350us; 960us; 1351us; 960us; 1357us; 1402us; 1363us; 960us; 1364us; 960us; 1365us; 960us; 1381us; 960us; 1391us; 1402us; 1407us; 960us; 1513us; 960us; 1518us; 960us; 98us; 65535us; 70us; 73us; 147us; 149us; 153us; 155us; 157us; 159us; 161us; 163us; 232us; 235us; 272us; 273us; 279us; 281us; 282us; 284us; 289us; 291us; 299us; 1838us; 301us; 1838us; 358us; 361us; 371us; 373us; 377us; 378us; 381us; 382us; 488us; 1838us; 503us; 505us; 527us; 528us; 536us; 538us; 545us; 547us; 703us; 713us; 706us; 713us; 753us; 757us; 759us; 761us; 823us; 830us; 824us; 827us; 868us; 904us; 898us; 904us; 899us; 901us; 906us; 912us; 907us; 909us; 924us; 1065us; 950us; 952us; 1006us; 1008us; 1010us; 1012us; 1014us; 1016us; 1019us; 1023us; 1020us; 1022us; 1032us; 1041us; 1033us; 1040us; 1035us; 1037us; 1043us; 1838us; 1044us; 1838us; 1045us; 1838us; 1046us; 1838us; 1052us; 1059us; 1053us; 1058us; 1054us; 1056us; 1078us; 713us; 1089us; 713us; 1121us; 1227us; 1143us; 1303us; 1154us; 1155us; 1192us; 1194us; 1216us; 1218us; 1222us; 1224us; 1228us; 1838us; 1230us; 1838us; 1282us; 1307us; 1285us; 1307us; 1294us; 1299us; 1295us; 1297us; 1315us; 1322us; 1316us; 1317us; 1318us; 1320us; 1344us; 1346us; 1350us; 1356us; 1351us; 1356us; 1352us; 1354us; 1357us; 1362us; 1358us; 1360us; 1363us; 1376us; 1364us; 1376us; 1365us; 1376us; 1367us; 1832us; 1391us; 1396us; 1392us; 1394us; 1404us; 1406us; 1409us; 1838us; 1470us; 1838us; 1471us; 1838us; 1504us; 1509us; 1505us; 1507us; 1518us; 1524us; 1519us; 1521us; 1588us; 1645us; 1615us; 1668us; 1634us; 1637us; 1635us; 1637us; 1639us; 1646us; 1640us; 1644us; 1641us; 1643us; 1658us; 1838us; 1663us; 1674us; 1665us; 1838us; 1670us; 1838us; 1712us; 1838us; 110us; 65535us; 6us; 965us; 31us; 32us; 106us; 107us; 108us; 109us; 227us; 242us; 241us; 242us; 263us; 965us; 404us; 965us; 409us; 965us; 444us; 965us; 460us; 965us; 699us; 965us; 705us; 965us; 754us; 965us; 758us; 965us; 768us; 965us; 949us; 965us; 954us; 965us; 968us; 965us; 970us; 965us; 973us; 965us; 976us; 965us; 993us; 965us; 996us; 965us; 999us; 965us; 1005us; 965us; 1009us; 965us; 1013us; 965us; 1017us; 965us; 1019us; 1020us; 1024us; 1025us; 1026us; 1027us; 1028us; 957us; 1030us; 957us; 1032us; 1033us; 1034us; 965us; 1045us; 965us; 1053us; 965us; 1060us; 965us; 1066us; 1067us; 1068us; 1069us; 1071us; 965us; 1074us; 965us; 1077us; 965us; 1080us; 965us; 1083us; 965us; 1086us; 965us; 1088us; 965us; 1093us; 1094us; 1095us; 965us; 1138us; 1097us; 1140us; 957us; 1144us; 1098us; 1145us; 1099us; 1146us; 1100us; 1147us; 1101us; 1148us; 1102us; 1149us; 1103us; 1150us; 1104us; 1151us; 1105us; 1152us; 1106us; 1153us; 1107us; 1154us; 1108us; 1156us; 1109us; 1157us; 1110us; 1158us; 1111us; 1159us; 1112us; 1160us; 1113us; 1161us; 1114us; 1162us; 1115us; 1163us; 1116us; 1164us; 1117us; 1186us; 965us; 1208us; 1118us; 1209us; 965us; 1213us; 1119us; 1215us; 965us; 1219us; 1120us; 1221us; 965us; 1225us; 1121us; 1228us; 1122us; 1230us; 1124us; 1294us; 967us; 1301us; 1123us; 1308us; 965us; 1315us; 966us; 1324us; 1125us; 1327us; 1125us; 1329us; 1125us; 1332us; 1126us; 1343us; 965us; 1350us; 965us; 1351us; 965us; 1357us; 967us; 1363us; 965us; 1364us; 965us; 1365us; 965us; 1381us; 965us; 1391us; 967us; 1404us; 1129us; 1405us; 1130us; 1407us; 965us; 1409us; 1127us; 1413us; 1128us; 1414us; 1131us; 1441us; 957us; 1446us; 957us; 1471us; 957us; 1513us; 965us; 1518us; 965us; 1us; 65535us; 1290us; 1291us; 3us; 65535us; 1006us; 1007us; 1010us; 1011us; 1014us; 1015us; 4us; 65535us; 1189us; 1190us; 1191us; 1192us; 1529us; 1530us; 1531us; 1532us; 6us; 65535us; 1189us; 1201us; 1191us; 1201us; 1196us; 1201us; 1203us; 1201us; 1529us; 1201us; 1531us; 1201us; 6us; 65535us; 1189us; 1195us; 1191us; 1195us; 1196us; 1197us; 1203us; 1204us; 1529us; 1195us; 1531us; 1195us; 1us; 65535us; 925us; 1200us; 1us; 65535us; 1201us; 1202us; 2us; 65535us; 1020us; 1021us; 1121us; 1226us; 2us; 65535us; 1020us; 1211us; 1121us; 1211us; 1us; 65535us; 1211us; 1212us; 110us; 65535us; 6us; 1142us; 31us; 1142us; 106us; 1142us; 108us; 1142us; 227us; 1142us; 241us; 1142us; 263us; 1142us; 404us; 1142us; 409us; 1142us; 444us; 1142us; 460us; 1142us; 699us; 1142us; 705us; 1142us; 754us; 1142us; 758us; 1142us; 768us; 1142us; 949us; 1142us; 954us; 1142us; 968us; 1142us; 970us; 1142us; 973us; 1142us; 976us; 1142us; 993us; 1142us; 996us; 1142us; 999us; 1142us; 1005us; 1142us; 1009us; 1142us; 1013us; 1142us; 1017us; 1142us; 1019us; 1142us; 1024us; 1142us; 1026us; 1142us; 1028us; 1142us; 1030us; 1142us; 1032us; 1142us; 1034us; 1142us; 1045us; 1142us; 1053us; 1142us; 1060us; 1142us; 1066us; 1142us; 1068us; 1142us; 1071us; 1142us; 1074us; 1142us; 1077us; 1142us; 1080us; 1142us; 1083us; 1142us; 1086us; 1142us; 1088us; 1142us; 1093us; 1142us; 1095us; 1142us; 1138us; 1142us; 1140us; 1142us; 1144us; 1142us; 1145us; 1142us; 1146us; 1142us; 1147us; 1142us; 1148us; 1142us; 1149us; 1142us; 1150us; 1142us; 1151us; 1142us; 1152us; 1142us; 1153us; 1142us; 1154us; 1142us; 1156us; 1142us; 1157us; 1142us; 1158us; 1142us; 1159us; 1142us; 1160us; 1142us; 1161us; 1142us; 1162us; 1142us; 1163us; 1142us; 1164us; 1142us; 1186us; 1142us; 1208us; 1142us; 1209us; 1142us; 1213us; 1142us; 1215us; 1142us; 1219us; 1142us; 1221us; 1142us; 1225us; 1142us; 1228us; 1142us; 1230us; 1142us; 1294us; 1142us; 1301us; 1143us; 1308us; 1142us; 1315us; 1142us; 1324us; 1142us; 1327us; 1142us; 1329us; 1142us; 1332us; 1142us; 1343us; 1142us; 1350us; 1142us; 1351us; 1142us; 1357us; 1142us; 1363us; 1142us; 1364us; 1142us; 1365us; 1142us; 1381us; 1142us; 1391us; 1142us; 1404us; 1142us; 1405us; 1142us; 1407us; 1142us; 1409us; 1142us; 1413us; 1142us; 1414us; 1142us; 1441us; 1142us; 1446us; 1142us; 1471us; 1142us; 1513us; 1142us; 1518us; 1142us; 124us; 65535us; 6us; 1139us; 31us; 1139us; 106us; 1139us; 108us; 1139us; 227us; 1139us; 241us; 1139us; 263us; 1139us; 404us; 1139us; 409us; 1139us; 444us; 1139us; 460us; 1139us; 699us; 1139us; 705us; 1139us; 754us; 1139us; 758us; 1139us; 768us; 1139us; 949us; 1139us; 954us; 1139us; 968us; 1139us; 970us; 1139us; 973us; 1139us; 976us; 1139us; 993us; 1139us; 996us; 1139us; 999us; 1139us; 1005us; 1139us; 1009us; 1139us; 1013us; 1139us; 1017us; 1139us; 1019us; 1139us; 1024us; 1139us; 1026us; 1139us; 1028us; 1139us; 1030us; 1139us; 1032us; 1139us; 1034us; 1139us; 1045us; 1139us; 1053us; 1139us; 1060us; 1139us; 1066us; 1139us; 1068us; 1139us; 1071us; 1139us; 1074us; 1139us; 1077us; 1139us; 1080us; 1139us; 1083us; 1139us; 1086us; 1139us; 1088us; 1139us; 1093us; 1139us; 1095us; 1139us; 1138us; 1139us; 1140us; 1139us; 1144us; 1139us; 1145us; 1139us; 1146us; 1139us; 1147us; 1139us; 1148us; 1139us; 1149us; 1139us; 1150us; 1139us; 1151us; 1139us; 1152us; 1139us; 1153us; 1139us; 1154us; 1139us; 1156us; 1139us; 1157us; 1139us; 1158us; 1139us; 1159us; 1139us; 1160us; 1139us; 1161us; 1139us; 1162us; 1139us; 1163us; 1139us; 1164us; 1139us; 1186us; 1139us; 1208us; 1139us; 1209us; 1139us; 1213us; 1139us; 1215us; 1139us; 1219us; 1139us; 1221us; 1139us; 1225us; 1139us; 1228us; 1139us; 1230us; 1139us; 1232us; 1234us; 1233us; 1234us; 1235us; 1237us; 1236us; 1237us; 1238us; 1240us; 1239us; 1240us; 1241us; 1243us; 1242us; 1243us; 1244us; 1246us; 1245us; 1246us; 1247us; 1249us; 1248us; 1249us; 1260us; 1261us; 1262us; 1263us; 1294us; 1139us; 1301us; 1139us; 1308us; 1139us; 1315us; 1139us; 1324us; 1139us; 1327us; 1139us; 1329us; 1139us; 1332us; 1139us; 1343us; 1139us; 1350us; 1139us; 1351us; 1139us; 1357us; 1139us; 1363us; 1139us; 1364us; 1139us; 1365us; 1139us; 1381us; 1139us; 1391us; 1139us; 1404us; 1139us; 1405us; 1139us; 1407us; 1139us; 1409us; 1139us; 1413us; 1139us; 1414us; 1139us; 1441us; 1139us; 1446us; 1139us; 1471us; 1139us; 1513us; 1139us; 1518us; 1139us; 125us; 65535us; 6us; 1264us; 31us; 1264us; 106us; 1264us; 108us; 1264us; 227us; 1264us; 241us; 1264us; 263us; 1264us; 404us; 1264us; 409us; 1264us; 444us; 1264us; 460us; 1264us; 699us; 1264us; 705us; 1264us; 754us; 1264us; 758us; 1264us; 768us; 1264us; 949us; 1264us; 954us; 1264us; 968us; 1264us; 970us; 1264us; 973us; 1264us; 976us; 1264us; 993us; 1264us; 996us; 1264us; 999us; 1264us; 1005us; 1264us; 1009us; 1264us; 1013us; 1264us; 1017us; 1264us; 1019us; 1264us; 1024us; 1264us; 1026us; 1264us; 1028us; 1264us; 1030us; 1264us; 1032us; 1264us; 1034us; 1264us; 1045us; 1264us; 1053us; 1264us; 1060us; 1264us; 1066us; 1264us; 1068us; 1264us; 1071us; 1264us; 1074us; 1264us; 1077us; 1264us; 1080us; 1264us; 1083us; 1264us; 1086us; 1264us; 1088us; 1264us; 1093us; 1264us; 1095us; 1264us; 1138us; 1264us; 1140us; 1264us; 1144us; 1264us; 1145us; 1264us; 1146us; 1264us; 1147us; 1264us; 1148us; 1264us; 1149us; 1264us; 1150us; 1264us; 1151us; 1264us; 1152us; 1264us; 1153us; 1264us; 1154us; 1264us; 1156us; 1264us; 1157us; 1264us; 1158us; 1264us; 1159us; 1264us; 1160us; 1264us; 1161us; 1264us; 1162us; 1264us; 1163us; 1264us; 1164us; 1264us; 1186us; 1264us; 1208us; 1264us; 1209us; 1264us; 1213us; 1264us; 1215us; 1264us; 1219us; 1264us; 1221us; 1264us; 1225us; 1264us; 1228us; 1264us; 1230us; 1264us; 1232us; 1264us; 1233us; 1264us; 1235us; 1264us; 1236us; 1264us; 1238us; 1264us; 1239us; 1264us; 1241us; 1264us; 1242us; 1264us; 1244us; 1264us; 1245us; 1264us; 1247us; 1264us; 1248us; 1264us; 1260us; 1264us; 1262us; 1264us; 1294us; 1264us; 1301us; 1264us; 1308us; 1264us; 1315us; 1264us; 1324us; 1264us; 1327us; 1264us; 1329us; 1264us; 1332us; 1264us; 1343us; 1264us; 1350us; 1264us; 1351us; 1264us; 1357us; 1264us; 1363us; 1264us; 1364us; 1264us; 1365us; 1264us; 1381us; 1264us; 1391us; 1265us; 1404us; 1264us; 1405us; 1264us; 1407us; 1264us; 1409us; 1264us; 1413us; 1264us; 1414us; 1264us; 1441us; 1264us; 1446us; 1264us; 1471us; 1264us; 1504us; 1266us; 1513us; 1264us; 1518us; 1264us; 4us; 65535us; 1264us; 1267us; 1265us; 1267us; 1266us; 1267us; 1421us; 1424us; 135us; 65535us; 6us; 1268us; 31us; 1268us; 106us; 1268us; 108us; 1268us; 227us; 1268us; 241us; 1268us; 263us; 1268us; 404us; 1268us; 409us; 1268us; 444us; 1268us; 460us; 1268us; 699us; 1268us; 705us; 1268us; 754us; 1268us; 758us; 1268us; 768us; 1268us; 949us; 1268us; 954us; 1268us; 968us; 1268us; 970us; 1268us; 973us; 1268us; 976us; 1268us; 993us; 1268us; 996us; 1268us; 999us; 1268us; 1005us; 1268us; 1009us; 1268us; 1013us; 1268us; 1017us; 1268us; 1019us; 1268us; 1024us; 1268us; 1026us; 1268us; 1028us; 1268us; 1030us; 1268us; 1032us; 1268us; 1034us; 1268us; 1045us; 1268us; 1053us; 1268us; 1060us; 1268us; 1066us; 1268us; 1068us; 1268us; 1071us; 1268us; 1074us; 1268us; 1077us; 1268us; 1080us; 1268us; 1083us; 1268us; 1086us; 1268us; 1088us; 1268us; 1093us; 1268us; 1095us; 1268us; 1138us; 1268us; 1140us; 1268us; 1144us; 1268us; 1145us; 1268us; 1146us; 1268us; 1147us; 1268us; 1148us; 1268us; 1149us; 1268us; 1150us; 1268us; 1151us; 1268us; 1152us; 1268us; 1153us; 1268us; 1154us; 1268us; 1156us; 1268us; 1157us; 1268us; 1158us; 1268us; 1159us; 1268us; 1160us; 1268us; 1161us; 1268us; 1162us; 1268us; 1163us; 1268us; 1164us; 1268us; 1186us; 1268us; 1208us; 1268us; 1209us; 1268us; 1213us; 1268us; 1215us; 1268us; 1219us; 1268us; 1221us; 1268us; 1225us; 1268us; 1228us; 1268us; 1230us; 1268us; 1232us; 1268us; 1233us; 1268us; 1235us; 1268us; 1236us; 1268us; 1238us; 1268us; 1239us; 1268us; 1241us; 1268us; 1242us; 1268us; 1244us; 1268us; 1245us; 1268us; 1247us; 1268us; 1248us; 1268us; 1260us; 1268us; 1262us; 1268us; 1264us; 1271us; 1265us; 1271us; 1266us; 1271us; 1269us; 1270us; 1276us; 1272us; 1277us; 1273us; 1280us; 1274us; 1281us; 1274us; 1294us; 1268us; 1301us; 1268us; 1308us; 1268us; 1315us; 1268us; 1324us; 1268us; 1327us; 1268us; 1329us; 1268us; 1332us; 1268us; 1343us; 1268us; 1350us; 1268us; 1351us; 1268us; 1357us; 1268us; 1363us; 1268us; 1364us; 1268us; 1365us; 1268us; 1381us; 1268us; 1391us; 1268us; 1404us; 1268us; 1405us; 1268us; 1407us; 1268us; 1409us; 1268us; 1413us; 1268us; 1414us; 1268us; 1421us; 1271us; 1441us; 1268us; 1446us; 1268us; 1471us; 1268us; 1504us; 1268us; 1513us; 1268us; 1518us; 1268us; 1649us; 1275us; 2us; 65535us; 1282us; 1283us; 1285us; 1286us; 2us; 65535us; 1315us; 1318us; 1324us; 1325us; 2us; 65535us; 1315us; 1323us; 1324us; 1323us; 4us; 65535us; 1315us; 1326us; 1324us; 1326us; 1327us; 1328us; 1329us; 1330us; 142us; 65535us; 6us; 1304us; 31us; 1304us; 106us; 1304us; 108us; 1304us; 227us; 1304us; 241us; 1304us; 263us; 1304us; 313us; 1425us; 317us; 1425us; 322us; 1425us; 404us; 1304us; 409us; 1304us; 444us; 1304us; 460us; 1304us; 491us; 492us; 699us; 1304us; 705us; 1304us; 754us; 1304us; 758us; 1304us; 768us; 1304us; 949us; 1304us; 954us; 1304us; 968us; 1304us; 970us; 1304us; 973us; 1304us; 976us; 1304us; 993us; 1304us; 996us; 1304us; 999us; 1304us; 1005us; 1304us; 1009us; 1304us; 1013us; 1304us; 1017us; 1304us; 1019us; 1304us; 1024us; 1304us; 1026us; 1304us; 1028us; 1304us; 1030us; 1304us; 1032us; 1304us; 1034us; 1304us; 1045us; 1304us; 1053us; 1304us; 1060us; 1304us; 1066us; 1304us; 1068us; 1304us; 1071us; 1304us; 1074us; 1304us; 1077us; 1304us; 1080us; 1304us; 1083us; 1304us; 1086us; 1304us; 1088us; 1304us; 1093us; 1304us; 1095us; 1304us; 1138us; 1304us; 1140us; 1304us; 1144us; 1304us; 1145us; 1304us; 1146us; 1304us; 1147us; 1304us; 1148us; 1304us; 1149us; 1304us; 1150us; 1304us; 1151us; 1304us; 1152us; 1304us; 1153us; 1304us; 1154us; 1304us; 1156us; 1304us; 1157us; 1304us; 1158us; 1304us; 1159us; 1304us; 1160us; 1304us; 1161us; 1304us; 1162us; 1304us; 1163us; 1304us; 1164us; 1304us; 1186us; 1304us; 1208us; 1304us; 1209us; 1304us; 1213us; 1304us; 1215us; 1304us; 1219us; 1304us; 1221us; 1304us; 1225us; 1304us; 1228us; 1304us; 1230us; 1304us; 1232us; 1304us; 1233us; 1304us; 1235us; 1304us; 1236us; 1304us; 1238us; 1304us; 1239us; 1304us; 1241us; 1304us; 1242us; 1304us; 1244us; 1304us; 1245us; 1304us; 1247us; 1304us; 1248us; 1304us; 1254us; 1256us; 1255us; 1257us; 1260us; 1304us; 1262us; 1304us; 1264us; 1304us; 1265us; 1304us; 1266us; 1304us; 1269us; 1304us; 1276us; 1304us; 1277us; 1304us; 1280us; 1304us; 1281us; 1304us; 1294us; 1304us; 1301us; 1304us; 1308us; 1304us; 1315us; 1304us; 1324us; 1304us; 1327us; 1304us; 1329us; 1304us; 1332us; 1304us; 1343us; 1304us; 1350us; 1304us; 1351us; 1304us; 1357us; 1304us; 1363us; 1304us; 1364us; 1304us; 1365us; 1304us; 1381us; 1304us; 1391us; 1304us; 1404us; 1304us; 1405us; 1304us; 1407us; 1304us; 1409us; 1304us; 1413us; 1304us; 1414us; 1304us; 1421us; 1304us; 1436us; 1425us; 1441us; 1304us; 1446us; 1304us; 1471us; 1304us; 1504us; 1304us; 1513us; 1304us; 1518us; 1304us; 1649us; 1304us; 142us; 65535us; 6us; 1342us; 31us; 1342us; 106us; 1342us; 108us; 1342us; 227us; 1342us; 241us; 1342us; 263us; 1342us; 313us; 1342us; 317us; 1342us; 322us; 1342us; 404us; 1342us; 409us; 1342us; 444us; 1342us; 460us; 1342us; 491us; 1342us; 699us; 1342us; 705us; 1342us; 754us; 1342us; 758us; 1342us; 768us; 1342us; 949us; 1342us; 954us; 1342us; 968us; 1342us; 970us; 1342us; 973us; 1342us; 976us; 1342us; 993us; 1342us; 996us; 1342us; 999us; 1342us; 1005us; 1342us; 1009us; 1342us; 1013us; 1342us; 1017us; 1342us; 1019us; 1342us; 1024us; 1342us; 1026us; 1342us; 1028us; 1342us; 1030us; 1342us; 1032us; 1342us; 1034us; 1342us; 1045us; 1342us; 1053us; 1342us; 1060us; 1342us; 1066us; 1342us; 1068us; 1342us; 1071us; 1342us; 1074us; 1342us; 1077us; 1342us; 1080us; 1342us; 1083us; 1342us; 1086us; 1342us; 1088us; 1342us; 1093us; 1342us; 1095us; 1342us; 1138us; 1342us; 1140us; 1342us; 1144us; 1342us; 1145us; 1342us; 1146us; 1342us; 1147us; 1342us; 1148us; 1342us; 1149us; 1342us; 1150us; 1342us; 1151us; 1342us; 1152us; 1342us; 1153us; 1342us; 1154us; 1342us; 1156us; 1342us; 1157us; 1342us; 1158us; 1342us; 1159us; 1342us; 1160us; 1342us; 1161us; 1342us; 1162us; 1342us; 1163us; 1342us; 1164us; 1342us; 1186us; 1342us; 1208us; 1342us; 1209us; 1342us; 1213us; 1342us; 1215us; 1342us; 1219us; 1342us; 1221us; 1342us; 1225us; 1342us; 1228us; 1342us; 1230us; 1342us; 1232us; 1342us; 1233us; 1342us; 1235us; 1342us; 1236us; 1342us; 1238us; 1342us; 1239us; 1342us; 1241us; 1342us; 1242us; 1342us; 1244us; 1342us; 1245us; 1342us; 1247us; 1342us; 1248us; 1342us; 1254us; 1342us; 1255us; 1342us; 1260us; 1342us; 1262us; 1342us; 1264us; 1342us; 1265us; 1342us; 1266us; 1342us; 1269us; 1342us; 1276us; 1342us; 1277us; 1342us; 1280us; 1342us; 1281us; 1342us; 1294us; 1342us; 1301us; 1342us; 1308us; 1342us; 1315us; 1342us; 1324us; 1342us; 1327us; 1342us; 1329us; 1342us; 1332us; 1342us; 1343us; 1342us; 1350us; 1342us; 1351us; 1342us; 1357us; 1342us; 1363us; 1342us; 1364us; 1342us; 1365us; 1342us; 1381us; 1342us; 1391us; 1342us; 1404us; 1342us; 1405us; 1342us; 1407us; 1342us; 1409us; 1342us; 1413us; 1342us; 1414us; 1342us; 1421us; 1342us; 1436us; 1342us; 1441us; 1342us; 1446us; 1342us; 1471us; 1342us; 1504us; 1342us; 1513us; 1342us; 1518us; 1342us; 1649us; 1342us; 184us; 65535us; 6us; 1340us; 31us; 1340us; 106us; 1340us; 108us; 1340us; 227us; 1340us; 241us; 1340us; 263us; 1340us; 313us; 1340us; 317us; 1340us; 322us; 1340us; 401us; 878us; 404us; 1340us; 406us; 878us; 409us; 1340us; 441us; 878us; 444us; 1340us; 460us; 1340us; 491us; 1340us; 699us; 1340us; 705us; 1340us; 751us; 878us; 754us; 1340us; 758us; 1340us; 768us; 1340us; 841us; 878us; 842us; 878us; 846us; 878us; 847us; 878us; 848us; 878us; 849us; 878us; 856us; 878us; 859us; 878us; 861us; 878us; 863us; 878us; 868us; 878us; 872us; 878us; 874us; 878us; 876us; 878us; 884us; 878us; 887us; 878us; 898us; 878us; 906us; 878us; 928us; 878us; 933us; 878us; 934us; 878us; 936us; 878us; 937us; 878us; 938us; 878us; 939us; 878us; 945us; 878us; 947us; 878us; 949us; 1340us; 954us; 1340us; 968us; 1340us; 970us; 1340us; 973us; 1340us; 976us; 1340us; 993us; 1340us; 996us; 1340us; 999us; 1340us; 1005us; 1340us; 1009us; 1340us; 1013us; 1340us; 1017us; 1340us; 1019us; 1340us; 1024us; 1340us; 1026us; 1340us; 1028us; 1340us; 1030us; 1340us; 1032us; 1340us; 1034us; 1340us; 1043us; 878us; 1045us; 1340us; 1053us; 1340us; 1060us; 1340us; 1066us; 1340us; 1068us; 1340us; 1070us; 878us; 1071us; 1340us; 1074us; 1340us; 1076us; 878us; 1077us; 1340us; 1080us; 1340us; 1083us; 1340us; 1086us; 1340us; 1088us; 1340us; 1093us; 1340us; 1095us; 1340us; 1138us; 1340us; 1140us; 1340us; 1144us; 1340us; 1145us; 1340us; 1146us; 1340us; 1147us; 1340us; 1148us; 1340us; 1149us; 1340us; 1150us; 1340us; 1151us; 1340us; 1152us; 1340us; 1153us; 1340us; 1154us; 1340us; 1156us; 1340us; 1157us; 1340us; 1158us; 1340us; 1159us; 1340us; 1160us; 1340us; 1161us; 1340us; 1162us; 1340us; 1163us; 1340us; 1164us; 1340us; 1186us; 1340us; 1189us; 878us; 1191us; 878us; 1196us; 878us; 1203us; 878us; 1208us; 1340us; 1209us; 1340us; 1213us; 1340us; 1215us; 1340us; 1219us; 1340us; 1221us; 1340us; 1225us; 1340us; 1228us; 1340us; 1230us; 1340us; 1232us; 1340us; 1233us; 1340us; 1235us; 1340us; 1236us; 1340us; 1238us; 1340us; 1239us; 1340us; 1241us; 1340us; 1242us; 1340us; 1244us; 1340us; 1245us; 1340us; 1247us; 1340us; 1248us; 1340us; 1254us; 1340us; 1255us; 1340us; 1260us; 1340us; 1262us; 1340us; 1264us; 1340us; 1265us; 1340us; 1266us; 1340us; 1269us; 1340us; 1276us; 1340us; 1277us; 1340us; 1280us; 1340us; 1281us; 1340us; 1294us; 1340us; 1301us; 1340us; 1308us; 1340us; 1315us; 1340us; 1324us; 1340us; 1327us; 1340us; 1329us; 1340us; 1332us; 1340us; 1343us; 1340us; 1350us; 1340us; 1351us; 1340us; 1357us; 1340us; 1363us; 1340us; 1364us; 1340us; 1365us; 1340us; 1381us; 1340us; 1391us; 1340us; 1404us; 1340us; 1405us; 1340us; 1407us; 1340us; 1409us; 1340us; 1413us; 1340us; 1414us; 1340us; 1421us; 1340us; 1436us; 1340us; 1441us; 1340us; 1446us; 1340us; 1471us; 1340us; 1504us; 1340us; 1511us; 878us; 1513us; 1340us; 1516us; 878us; 1518us; 1340us; 1529us; 878us; 1531us; 878us; 1649us; 1340us; 142us; 65535us; 6us; 1341us; 31us; 1341us; 106us; 1341us; 108us; 1341us; 227us; 1341us; 241us; 1341us; 263us; 1341us; 313us; 1341us; 317us; 1341us; 322us; 1341us; 404us; 1341us; 409us; 1341us; 444us; 1341us; 460us; 1341us; 491us; 1341us; 699us; 1341us; 705us; 1341us; 754us; 1341us; 758us; 1341us; 768us; 1341us; 949us; 1341us; 954us; 1341us; 968us; 1341us; 970us; 1341us; 973us; 1341us; 976us; 1341us; 993us; 1341us; 996us; 1341us; 999us; 1341us; 1005us; 1341us; 1009us; 1341us; 1013us; 1341us; 1017us; 1341us; 1019us; 1341us; 1024us; 1341us; 1026us; 1341us; 1028us; 1341us; 1030us; 1341us; 1032us; 1341us; 1034us; 1341us; 1045us; 1341us; 1053us; 1341us; 1060us; 1341us; 1066us; 1341us; 1068us; 1341us; 1071us; 1341us; 1074us; 1341us; 1077us; 1341us; 1080us; 1341us; 1083us; 1341us; 1086us; 1341us; 1088us; 1341us; 1093us; 1341us; 1095us; 1341us; 1138us; 1341us; 1140us; 1341us; 1144us; 1341us; 1145us; 1341us; 1146us; 1341us; 1147us; 1341us; 1148us; 1341us; 1149us; 1341us; 1150us; 1341us; 1151us; 1341us; 1152us; 1341us; 1153us; 1341us; 1154us; 1341us; 1156us; 1341us; 1157us; 1341us; 1158us; 1341us; 1159us; 1341us; 1160us; 1341us; 1161us; 1341us; 1162us; 1341us; 1163us; 1341us; 1164us; 1341us; 1186us; 1341us; 1208us; 1341us; 1209us; 1341us; 1213us; 1341us; 1215us; 1341us; 1219us; 1341us; 1221us; 1341us; 1225us; 1341us; 1228us; 1341us; 1230us; 1341us; 1232us; 1341us; 1233us; 1341us; 1235us; 1341us; 1236us; 1341us; 1238us; 1341us; 1239us; 1341us; 1241us; 1341us; 1242us; 1341us; 1244us; 1341us; 1245us; 1341us; 1247us; 1341us; 1248us; 1341us; 1254us; 1341us; 1255us; 1341us; 1260us; 1341us; 1262us; 1341us; 1264us; 1341us; 1265us; 1341us; 1266us; 1341us; 1269us; 1341us; 1276us; 1341us; 1277us; 1341us; 1280us; 1341us; 1281us; 1341us; 1294us; 1341us; 1301us; 1341us; 1308us; 1341us; 1315us; 1341us; 1324us; 1341us; 1327us; 1341us; 1329us; 1341us; 1332us; 1341us; 1343us; 1341us; 1350us; 1341us; 1351us; 1341us; 1357us; 1341us; 1363us; 1341us; 1364us; 1341us; 1365us; 1341us; 1381us; 1341us; 1391us; 1341us; 1404us; 1341us; 1405us; 1341us; 1407us; 1341us; 1409us; 1341us; 1413us; 1341us; 1414us; 1341us; 1421us; 1341us; 1436us; 1341us; 1441us; 1341us; 1446us; 1341us; 1471us; 1341us; 1504us; 1341us; 1513us; 1341us; 1518us; 1341us; 1649us; 1341us; 142us; 65535us; 6us; 1334us; 31us; 1334us; 106us; 1334us; 108us; 1334us; 227us; 1334us; 241us; 1334us; 263us; 1334us; 313us; 1334us; 317us; 1334us; 322us; 1334us; 404us; 1334us; 409us; 1334us; 444us; 1334us; 460us; 1334us; 491us; 1334us; 699us; 1334us; 705us; 1334us; 754us; 1334us; 758us; 1334us; 768us; 1334us; 949us; 1334us; 954us; 1334us; 968us; 1334us; 970us; 1334us; 973us; 1334us; 976us; 1334us; 993us; 1334us; 996us; 1334us; 999us; 1334us; 1005us; 1334us; 1009us; 1334us; 1013us; 1334us; 1017us; 1334us; 1019us; 1334us; 1024us; 1334us; 1026us; 1334us; 1028us; 1334us; 1030us; 1334us; 1032us; 1334us; 1034us; 1334us; 1045us; 1334us; 1053us; 1334us; 1060us; 1334us; 1066us; 1334us; 1068us; 1334us; 1071us; 1334us; 1074us; 1334us; 1077us; 1334us; 1080us; 1334us; 1083us; 1334us; 1086us; 1334us; 1088us; 1334us; 1093us; 1334us; 1095us; 1334us; 1138us; 1334us; 1140us; 1334us; 1144us; 1334us; 1145us; 1334us; 1146us; 1334us; 1147us; 1334us; 1148us; 1334us; 1149us; 1334us; 1150us; 1334us; 1151us; 1334us; 1152us; 1334us; 1153us; 1334us; 1154us; 1334us; 1156us; 1334us; 1157us; 1334us; 1158us; 1334us; 1159us; 1334us; 1160us; 1334us; 1161us; 1334us; 1162us; 1334us; 1163us; 1334us; 1164us; 1334us; 1186us; 1334us; 1208us; 1334us; 1209us; 1334us; 1213us; 1334us; 1215us; 1334us; 1219us; 1334us; 1221us; 1334us; 1225us; 1334us; 1228us; 1334us; 1230us; 1334us; 1232us; 1334us; 1233us; 1334us; 1235us; 1334us; 1236us; 1334us; 1238us; 1334us; 1239us; 1334us; 1241us; 1334us; 1242us; 1334us; 1244us; 1334us; 1245us; 1334us; 1247us; 1334us; 1248us; 1334us; 1254us; 1334us; 1255us; 1334us; 1260us; 1334us; 1262us; 1334us; 1264us; 1334us; 1265us; 1334us; 1266us; 1334us; 1269us; 1334us; 1276us; 1334us; 1277us; 1334us; 1280us; 1334us; 1281us; 1334us; 1294us; 1334us; 1301us; 1334us; 1308us; 1334us; 1315us; 1334us; 1324us; 1334us; 1327us; 1334us; 1329us; 1334us; 1332us; 1334us; 1343us; 1334us; 1350us; 1334us; 1351us; 1334us; 1357us; 1334us; 1363us; 1334us; 1364us; 1334us; 1365us; 1334us; 1381us; 1334us; 1391us; 1334us; 1404us; 1334us; 1405us; 1334us; 1407us; 1334us; 1409us; 1334us; 1413us; 1334us; 1414us; 1334us; 1421us; 1334us; 1436us; 1334us; 1441us; 1334us; 1446us; 1334us; 1471us; 1334us; 1504us; 1334us; 1513us; 1334us; 1518us; 1334us; 1649us; 1334us; 3us; 65535us; 1363us; 1367us; 1364us; 1367us; 1365us; 1367us; 3us; 65535us; 1363us; 1377us; 1364us; 1377us; 1365us; 1377us; 1us; 65535us; 1364us; 1387us; 142us; 65535us; 6us; 1335us; 31us; 1335us; 106us; 1335us; 108us; 1335us; 227us; 1335us; 241us; 1335us; 263us; 1335us; 313us; 1335us; 317us; 1335us; 322us; 1335us; 404us; 1335us; 409us; 1335us; 444us; 1335us; 460us; 1335us; 491us; 1335us; 699us; 1335us; 705us; 1335us; 754us; 1335us; 758us; 1335us; 768us; 1335us; 949us; 1335us; 954us; 1335us; 968us; 1335us; 970us; 1335us; 973us; 1335us; 976us; 1335us; 993us; 1335us; 996us; 1335us; 999us; 1335us; 1005us; 1335us; 1009us; 1335us; 1013us; 1335us; 1017us; 1335us; 1019us; 1335us; 1024us; 1335us; 1026us; 1335us; 1028us; 1335us; 1030us; 1335us; 1032us; 1335us; 1034us; 1335us; 1045us; 1335us; 1053us; 1335us; 1060us; 1335us; 1066us; 1335us; 1068us; 1335us; 1071us; 1335us; 1074us; 1335us; 1077us; 1335us; 1080us; 1335us; 1083us; 1335us; 1086us; 1335us; 1088us; 1335us; 1093us; 1335us; 1095us; 1335us; 1138us; 1335us; 1140us; 1335us; 1144us; 1335us; 1145us; 1335us; 1146us; 1335us; 1147us; 1335us; 1148us; 1335us; 1149us; 1335us; 1150us; 1335us; 1151us; 1335us; 1152us; 1335us; 1153us; 1335us; 1154us; 1335us; 1156us; 1335us; 1157us; 1335us; 1158us; 1335us; 1159us; 1335us; 1160us; 1335us; 1161us; 1335us; 1162us; 1335us; 1163us; 1335us; 1164us; 1335us; 1186us; 1335us; 1208us; 1335us; 1209us; 1335us; 1213us; 1335us; 1215us; 1335us; 1219us; 1335us; 1221us; 1335us; 1225us; 1335us; 1228us; 1335us; 1230us; 1335us; 1232us; 1335us; 1233us; 1335us; 1235us; 1335us; 1236us; 1335us; 1238us; 1335us; 1239us; 1335us; 1241us; 1335us; 1242us; 1335us; 1244us; 1335us; 1245us; 1335us; 1247us; 1335us; 1248us; 1335us; 1254us; 1335us; 1255us; 1335us; 1260us; 1335us; 1262us; 1335us; 1264us; 1335us; 1265us; 1335us; 1266us; 1335us; 1269us; 1335us; 1276us; 1335us; 1277us; 1335us; 1280us; 1335us; 1281us; 1335us; 1294us; 1335us; 1301us; 1335us; 1308us; 1335us; 1315us; 1335us; 1324us; 1335us; 1327us; 1335us; 1329us; 1335us; 1332us; 1335us; 1343us; 1335us; 1350us; 1335us; 1351us; 1335us; 1357us; 1335us; 1363us; 1335us; 1364us; 1335us; 1365us; 1335us; 1381us; 1335us; 1391us; 1335us; 1404us; 1335us; 1405us; 1335us; 1407us; 1335us; 1409us; 1335us; 1413us; 1335us; 1414us; 1335us; 1421us; 1335us; 1436us; 1335us; 1441us; 1335us; 1446us; 1335us; 1471us; 1335us; 1504us; 1335us; 1513us; 1335us; 1518us; 1335us; 1649us; 1335us; 1us; 65535us; 1391us; 1392us; 2us; 65535us; 1294us; 1295us; 1357us; 1358us; 3us; 65535us; 1294us; 1401us; 1357us; 1401us; 1391us; 1400us; 5us; 65535us; 1294us; 1403us; 1357us; 1403us; 1391us; 1403us; 1409us; 1410us; 1413us; 1415us; 1us; 65535us; 1091us; 1092us; 1us; 65535us; 1043us; 1044us; 1us; 65535us; 1043us; 1052us; 1us; 65535us; 1128us; 1414us; 3us; 65535us; 1363us; 1384us; 1364us; 1384us; 1365us; 1384us; 1us; 65535us; 1420us; 1421us; 4us; 65535us; 313us; 314us; 317us; 318us; 322us; 323us; 1436us; 1437us; 1us; 65535us; 1419us; 1420us; 1us; 65535us; 1421us; 1422us; 1us; 65535us; 1391us; 1398us; 2us; 65535us; 1391us; 1440us; 1504us; 1505us; 6us; 65535us; 1438us; 1439us; 1443us; 1444us; 1448us; 1449us; 1452us; 1453us; 1454us; 1455us; 1458us; 1459us; 6us; 65535us; 1438us; 1462us; 1443us; 1462us; 1448us; 1462us; 1452us; 1462us; 1454us; 1461us; 1458us; 1462us; 3us; 65535us; 1450us; 1470us; 1454us; 1470us; 1462us; 1470us; 5us; 65535us; 1437us; 1438us; 1442us; 1443us; 1447us; 1448us; 1451us; 1452us; 1457us; 1458us; 3us; 65535us; 1450us; 1451us; 1454us; 1457us; 1462us; 1469us; 1us; 65535us; 1391us; 1399us; 1us; 65535us; 1391us; 1475us; 1us; 65535us; 1497us; 1498us; 2us; 65535us; 1475us; 1476us; 1497us; 1482us; 1us; 65535us; 1479us; 1480us; 4us; 65535us; 1477us; 1478us; 1490us; 1491us; 1492us; 1493us; 1494us; 1495us; 5us; 65535us; 1477us; 1492us; 1479us; 1490us; 1490us; 1492us; 1492us; 1492us; 1494us; 1492us; 142us; 65535us; 6us; 1336us; 31us; 1336us; 106us; 1336us; 108us; 1336us; 227us; 1336us; 241us; 1336us; 263us; 1336us; 313us; 1336us; 317us; 1336us; 322us; 1336us; 404us; 1336us; 409us; 1336us; 444us; 1336us; 460us; 1336us; 491us; 1336us; 699us; 1336us; 705us; 1336us; 754us; 1336us; 758us; 1336us; 768us; 1336us; 949us; 1336us; 954us; 1336us; 968us; 1336us; 970us; 1336us; 973us; 1336us; 976us; 1336us; 993us; 1336us; 996us; 1336us; 999us; 1336us; 1005us; 1336us; 1009us; 1336us; 1013us; 1336us; 1017us; 1336us; 1019us; 1336us; 1024us; 1336us; 1026us; 1336us; 1028us; 1336us; 1030us; 1336us; 1032us; 1336us; 1034us; 1336us; 1045us; 1336us; 1053us; 1336us; 1060us; 1336us; 1066us; 1336us; 1068us; 1336us; 1071us; 1336us; 1074us; 1336us; 1077us; 1336us; 1080us; 1336us; 1083us; 1336us; 1086us; 1336us; 1088us; 1336us; 1093us; 1336us; 1095us; 1336us; 1138us; 1336us; 1140us; 1336us; 1144us; 1336us; 1145us; 1336us; 1146us; 1336us; 1147us; 1336us; 1148us; 1336us; 1149us; 1336us; 1150us; 1336us; 1151us; 1336us; 1152us; 1336us; 1153us; 1336us; 1154us; 1336us; 1156us; 1336us; 1157us; 1336us; 1158us; 1336us; 1159us; 1336us; 1160us; 1336us; 1161us; 1336us; 1162us; 1336us; 1163us; 1336us; 1164us; 1336us; 1186us; 1336us; 1208us; 1336us; 1209us; 1336us; 1213us; 1336us; 1215us; 1336us; 1219us; 1336us; 1221us; 1336us; 1225us; 1336us; 1228us; 1336us; 1230us; 1336us; 1232us; 1336us; 1233us; 1336us; 1235us; 1336us; 1236us; 1336us; 1238us; 1336us; 1239us; 1336us; 1241us; 1336us; 1242us; 1336us; 1244us; 1336us; 1245us; 1336us; 1247us; 1336us; 1248us; 1336us; 1254us; 1336us; 1255us; 1336us; 1260us; 1336us; 1262us; 1336us; 1264us; 1336us; 1265us; 1336us; 1266us; 1336us; 1269us; 1336us; 1276us; 1336us; 1277us; 1336us; 1280us; 1336us; 1281us; 1336us; 1294us; 1336us; 1301us; 1336us; 1308us; 1336us; 1315us; 1336us; 1324us; 1336us; 1327us; 1336us; 1329us; 1336us; 1332us; 1336us; 1343us; 1336us; 1350us; 1336us; 1351us; 1336us; 1357us; 1336us; 1363us; 1336us; 1364us; 1336us; 1365us; 1336us; 1381us; 1336us; 1391us; 1336us; 1404us; 1336us; 1405us; 1336us; 1407us; 1336us; 1409us; 1336us; 1413us; 1336us; 1414us; 1336us; 1421us; 1336us; 1436us; 1336us; 1441us; 1336us; 1446us; 1336us; 1471us; 1336us; 1504us; 1336us; 1513us; 1336us; 1518us; 1336us; 1649us; 1336us; 144us; 65535us; 6us; 1503us; 31us; 1503us; 106us; 1503us; 108us; 1503us; 227us; 1503us; 241us; 1503us; 263us; 1503us; 313us; 1503us; 317us; 1503us; 322us; 1503us; 404us; 1503us; 409us; 1503us; 444us; 1503us; 460us; 1503us; 491us; 1503us; 699us; 1503us; 705us; 1503us; 754us; 1503us; 758us; 1503us; 768us; 1503us; 949us; 1503us; 954us; 1503us; 968us; 1503us; 970us; 1503us; 973us; 1503us; 976us; 1503us; 993us; 1503us; 996us; 1503us; 999us; 1503us; 1005us; 1503us; 1009us; 1503us; 1013us; 1503us; 1017us; 1503us; 1019us; 1503us; 1024us; 1503us; 1026us; 1503us; 1028us; 1503us; 1030us; 1503us; 1032us; 1503us; 1034us; 1503us; 1045us; 1503us; 1053us; 1503us; 1060us; 1503us; 1066us; 1503us; 1068us; 1503us; 1071us; 1503us; 1074us; 1503us; 1077us; 1503us; 1080us; 1503us; 1083us; 1503us; 1086us; 1503us; 1088us; 1503us; 1093us; 1503us; 1095us; 1503us; 1138us; 1503us; 1140us; 1503us; 1144us; 1503us; 1145us; 1503us; 1146us; 1503us; 1147us; 1503us; 1148us; 1503us; 1149us; 1503us; 1150us; 1503us; 1151us; 1503us; 1152us; 1503us; 1153us; 1503us; 1154us; 1503us; 1156us; 1503us; 1157us; 1503us; 1158us; 1503us; 1159us; 1503us; 1160us; 1503us; 1161us; 1503us; 1162us; 1503us; 1163us; 1503us; 1164us; 1503us; 1186us; 1503us; 1208us; 1503us; 1209us; 1503us; 1213us; 1503us; 1215us; 1503us; 1219us; 1503us; 1221us; 1503us; 1225us; 1503us; 1228us; 1503us; 1230us; 1503us; 1232us; 1503us; 1233us; 1503us; 1235us; 1503us; 1236us; 1503us; 1238us; 1503us; 1239us; 1503us; 1241us; 1503us; 1242us; 1503us; 1244us; 1503us; 1245us; 1503us; 1247us; 1503us; 1248us; 1503us; 1254us; 1503us; 1255us; 1503us; 1260us; 1503us; 1262us; 1503us; 1264us; 1503us; 1265us; 1503us; 1266us; 1503us; 1269us; 1503us; 1276us; 1503us; 1277us; 1503us; 1280us; 1503us; 1281us; 1503us; 1294us; 1503us; 1300us; 1502us; 1301us; 1503us; 1308us; 1503us; 1315us; 1503us; 1324us; 1503us; 1327us; 1503us; 1329us; 1503us; 1332us; 1503us; 1343us; 1503us; 1350us; 1503us; 1351us; 1503us; 1357us; 1503us; 1363us; 1503us; 1364us; 1503us; 1365us; 1503us; 1381us; 1503us; 1391us; 1503us; 1404us; 1503us; 1405us; 1503us; 1407us; 1503us; 1409us; 1503us; 1413us; 1503us; 1414us; 1503us; 1421us; 1503us; 1436us; 1503us; 1441us; 1503us; 1446us; 1503us; 1471us; 1503us; 1501us; 1502us; 1504us; 1503us; 1513us; 1503us; 1518us; 1503us; 1649us; 1503us; 110us; 65535us; 6us; 1004us; 31us; 1004us; 106us; 1004us; 108us; 1004us; 227us; 1004us; 241us; 1004us; 263us; 1004us; 404us; 1004us; 409us; 1004us; 444us; 1004us; 460us; 1004us; 699us; 1004us; 705us; 1004us; 754us; 1004us; 758us; 1004us; 768us; 1004us; 949us; 1004us; 954us; 1004us; 968us; 1004us; 970us; 1004us; 973us; 1004us; 976us; 1004us; 993us; 1004us; 996us; 1004us; 999us; 1004us; 1005us; 1004us; 1009us; 1004us; 1013us; 1004us; 1017us; 1004us; 1019us; 1004us; 1024us; 1004us; 1026us; 1004us; 1028us; 1004us; 1030us; 1004us; 1032us; 1004us; 1034us; 1004us; 1045us; 1004us; 1053us; 1004us; 1060us; 1004us; 1066us; 1004us; 1068us; 1004us; 1071us; 1004us; 1074us; 1004us; 1077us; 1004us; 1080us; 1004us; 1083us; 1004us; 1086us; 1004us; 1088us; 1004us; 1093us; 1004us; 1095us; 1004us; 1138us; 1004us; 1140us; 1004us; 1144us; 1004us; 1145us; 1004us; 1146us; 1004us; 1147us; 1004us; 1148us; 1004us; 1149us; 1004us; 1150us; 1004us; 1151us; 1004us; 1152us; 1004us; 1153us; 1004us; 1154us; 1004us; 1156us; 1004us; 1157us; 1004us; 1158us; 1004us; 1159us; 1004us; 1160us; 1004us; 1161us; 1004us; 1162us; 1004us; 1163us; 1004us; 1164us; 1004us; 1186us; 1004us; 1208us; 1004us; 1209us; 1004us; 1213us; 1004us; 1215us; 1004us; 1219us; 1004us; 1221us; 1004us; 1225us; 1004us; 1228us; 1004us; 1230us; 1004us; 1294us; 1004us; 1301us; 1004us; 1308us; 1004us; 1315us; 1004us; 1324us; 1004us; 1327us; 1004us; 1329us; 1004us; 1332us; 1004us; 1343us; 1004us; 1350us; 1004us; 1351us; 1004us; 1357us; 1004us; 1363us; 1004us; 1364us; 1004us; 1365us; 1004us; 1381us; 1004us; 1391us; 1004us; 1404us; 1004us; 1405us; 1004us; 1407us; 1004us; 1409us; 1004us; 1413us; 1004us; 1414us; 1004us; 1441us; 1004us; 1446us; 1004us; 1471us; 1004us; 1513us; 1004us; 1518us; 1004us; 110us; 65535us; 6us; 1003us; 31us; 1003us; 106us; 1003us; 108us; 1003us; 227us; 1003us; 241us; 1003us; 263us; 1003us; 404us; 1003us; 409us; 1003us; 444us; 1003us; 460us; 1003us; 699us; 1003us; 705us; 1003us; 754us; 1003us; 758us; 1003us; 768us; 1003us; 949us; 1003us; 954us; 1003us; 968us; 1003us; 970us; 1003us; 973us; 1003us; 976us; 1003us; 993us; 1003us; 996us; 1003us; 999us; 1003us; 1005us; 1003us; 1009us; 1003us; 1013us; 1003us; 1017us; 1003us; 1019us; 1003us; 1024us; 1003us; 1026us; 1003us; 1028us; 1003us; 1030us; 1003us; 1032us; 1003us; 1034us; 1003us; 1045us; 1003us; 1053us; 1003us; 1060us; 1003us; 1066us; 1003us; 1068us; 1003us; 1071us; 1003us; 1074us; 1003us; 1077us; 1003us; 1080us; 1003us; 1083us; 1003us; 1086us; 1003us; 1088us; 1003us; 1093us; 1003us; 1095us; 1003us; 1138us; 1003us; 1140us; 1003us; 1144us; 1003us; 1145us; 1003us; 1146us; 1003us; 1147us; 1003us; 1148us; 1003us; 1149us; 1003us; 1150us; 1003us; 1151us; 1003us; 1152us; 1003us; 1153us; 1003us; 1154us; 1003us; 1156us; 1003us; 1157us; 1003us; 1158us; 1003us; 1159us; 1003us; 1160us; 1003us; 1161us; 1003us; 1162us; 1003us; 1163us; 1003us; 1164us; 1003us; 1186us; 1003us; 1208us; 1003us; 1209us; 1003us; 1213us; 1003us; 1215us; 1003us; 1219us; 1003us; 1221us; 1003us; 1225us; 1003us; 1228us; 1003us; 1230us; 1003us; 1294us; 1003us; 1301us; 1003us; 1308us; 1003us; 1315us; 1003us; 1324us; 1003us; 1327us; 1003us; 1329us; 1003us; 1332us; 1003us; 1343us; 1003us; 1350us; 1003us; 1351us; 1003us; 1357us; 1003us; 1363us; 1003us; 1364us; 1003us; 1365us; 1003us; 1381us; 1003us; 1391us; 1003us; 1404us; 1003us; 1405us; 1003us; 1407us; 1003us; 1409us; 1003us; 1413us; 1003us; 1414us; 1003us; 1441us; 1003us; 1446us; 1003us; 1471us; 1003us; 1513us; 1003us; 1518us; 1003us; 3us; 65535us; 818us; 819us; 931us; 932us; 961us; 962us; 5us; 65535us; 103us; 104us; 178us; 179us; 194us; 195us; 430us; 431us; 1538us; 1539us; 3us; 65535us; 402us; 403us; 407us; 408us; 752us; 753us; 9us; 65535us; 103us; 1536us; 143us; 144us; 178us; 1536us; 194us; 1536us; 367us; 368us; 430us; 1536us; 639us; 640us; 1538us; 1536us; 1541us; 1542us; 9us; 65535us; 103us; 1540us; 143us; 1540us; 178us; 1540us; 194us; 1540us; 367us; 1540us; 430us; 1540us; 639us; 1540us; 1538us; 1540us; 1541us; 1540us; 2us; 65535us; 1544us; 1545us; 1547us; 1548us; 11us; 65535us; 103us; 1543us; 143us; 1543us; 178us; 1543us; 194us; 1543us; 367us; 1543us; 430us; 1543us; 639us; 1543us; 1538us; 1543us; 1541us; 1543us; 1544us; 1546us; 1547us; 1546us; 31us; 65535us; 8us; 1567us; 172us; 529us; 417us; 529us; 453us; 454us; 463us; 464us; 524us; 529us; 532us; 1635us; 596us; 597us; 599us; 600us; 678us; 679us; 774us; 775us; 818us; 1534us; 931us; 1534us; 961us; 1534us; 1132us; 1133us; 1134us; 1135us; 1136us; 1137us; 1427us; 1428us; 1430us; 1431us; 1432us; 1635us; 1565us; 1566us; 1593us; 1635us; 1598us; 1599us; 1601us; 1602us; 1612us; 1675us; 1616us; 1675us; 1622us; 1635us; 1633us; 1634us; 1663us; 1675us; 1665us; 1675us; 1676us; 1677us; 1us; 65535us; 8us; 9us; 31us; 65535us; 8us; 1564us; 172us; 1564us; 417us; 1564us; 453us; 1564us; 463us; 1564us; 524us; 1564us; 532us; 1564us; 596us; 1564us; 599us; 1564us; 678us; 1564us; 774us; 1564us; 818us; 1564us; 931us; 1564us; 961us; 1564us; 1132us; 1564us; 1134us; 1564us; 1136us; 1564us; 1427us; 1564us; 1430us; 1564us; 1432us; 1564us; 1565us; 1564us; 1593us; 1564us; 1598us; 1564us; 1601us; 1564us; 1612us; 1564us; 1616us; 1564us; 1622us; 1564us; 1633us; 1564us; 1663us; 1564us; 1665us; 1564us; 1676us; 1564us; 6us; 65535us; 1570us; 1571us; 1572us; 1573us; 1574us; 1575us; 1577us; 1578us; 1579us; 1580us; 1640us; 1641us; 91us; 65535us; 8us; 1585us; 103us; 1585us; 143us; 1585us; 172us; 1585us; 178us; 1585us; 182us; 1585us; 183us; 1584us; 184us; 1585us; 185us; 1584us; 194us; 1585us; 367us; 1585us; 417us; 1585us; 423us; 1585us; 424us; 1584us; 430us; 1585us; 453us; 1585us; 463us; 1585us; 488us; 1585us; 524us; 1585us; 532us; 1585us; 550us; 1585us; 596us; 1585us; 599us; 1585us; 609us; 1585us; 619us; 1585us; 620us; 1584us; 621us; 1584us; 636us; 1585us; 639us; 1585us; 658us; 1585us; 661us; 1585us; 664us; 1585us; 665us; 1584us; 666us; 1584us; 678us; 1585us; 689us; 1585us; 774us; 1585us; 818us; 1585us; 865us; 1585us; 931us; 1585us; 961us; 1585us; 1132us; 1585us; 1134us; 1585us; 1136us; 1585us; 1250us; 1585us; 1251us; 1585us; 1427us; 1585us; 1430us; 1585us; 1432us; 1585us; 1434us; 1585us; 1496us; 1585us; 1497us; 1584us; 1538us; 1585us; 1541us; 1585us; 1544us; 1585us; 1547us; 1585us; 1549us; 1585us; 1550us; 1584us; 1551us; 1585us; 1552us; 1584us; 1555us; 1585us; 1556us; 1584us; 1557us; 1584us; 1558us; 1585us; 1559us; 1584us; 1562us; 1585us; 1563us; 1584us; 1565us; 1585us; 1569us; 1584us; 1570us; 1585us; 1572us; 1585us; 1574us; 1585us; 1576us; 1584us; 1577us; 1585us; 1579us; 1585us; 1588us; 1584us; 1593us; 1585us; 1595us; 1584us; 1598us; 1585us; 1601us; 1585us; 1612us; 1585us; 1616us; 1585us; 1622us; 1585us; 1624us; 1584us; 1629us; 1585us; 1633us; 1585us; 1639us; 1585us; 1640us; 1585us; 1663us; 1585us; 1665us; 1585us; 1676us; 1585us; 91us; 65535us; 8us; 1631us; 103us; 1631us; 143us; 1631us; 172us; 1631us; 178us; 1631us; 182us; 1631us; 183us; 1592us; 184us; 1631us; 185us; 1592us; 194us; 1631us; 367us; 1631us; 417us; 1631us; 423us; 1631us; 424us; 1592us; 430us; 1631us; 453us; 1631us; 463us; 1631us; 488us; 1631us; 524us; 1631us; 532us; 1631us; 550us; 1631us; 596us; 1631us; 599us; 1631us; 609us; 1631us; 619us; 1631us; 620us; 1592us; 621us; 1592us; 636us; 1631us; 639us; 1631us; 658us; 1631us; 661us; 1631us; 664us; 1631us; 665us; 1592us; 666us; 1592us; 678us; 1631us; 689us; 1631us; 774us; 1631us; 818us; 1631us; 865us; 1631us; 931us; 1631us; 961us; 1631us; 1132us; 1631us; 1134us; 1631us; 1136us; 1631us; 1250us; 1631us; 1251us; 1631us; 1427us; 1631us; 1430us; 1631us; 1432us; 1631us; 1434us; 1631us; 1496us; 1631us; 1497us; 1592us; 1538us; 1631us; 1541us; 1631us; 1544us; 1631us; 1547us; 1631us; 1549us; 1631us; 1550us; 1592us; 1551us; 1631us; 1552us; 1592us; 1555us; 1631us; 1556us; 1592us; 1557us; 1592us; 1558us; 1631us; 1559us; 1592us; 1562us; 1631us; 1563us; 1592us; 1565us; 1631us; 1569us; 1592us; 1570us; 1631us; 1572us; 1631us; 1574us; 1631us; 1576us; 1592us; 1577us; 1631us; 1579us; 1631us; 1588us; 1592us; 1593us; 1631us; 1595us; 1596us; 1598us; 1631us; 1601us; 1631us; 1612us; 1631us; 1616us; 1631us; 1622us; 1631us; 1624us; 1625us; 1629us; 1631us; 1633us; 1631us; 1639us; 1631us; 1640us; 1631us; 1663us; 1631us; 1665us; 1631us; 1676us; 1631us; 65us; 65535us; 8us; 1569us; 103us; 1557us; 143us; 1557us; 172us; 1569us; 178us; 1557us; 182us; 183us; 184us; 185us; 194us; 1557us; 367us; 1557us; 417us; 1569us; 423us; 424us; 430us; 1557us; 453us; 1569us; 463us; 1569us; 524us; 1569us; 532us; 1569us; 596us; 1569us; 599us; 1569us; 609us; 621us; 619us; 620us; 636us; 666us; 639us; 1557us; 658us; 666us; 661us; 666us; 664us; 665us; 678us; 1569us; 689us; 666us; 774us; 1569us; 818us; 1569us; 931us; 1569us; 961us; 1569us; 1132us; 1569us; 1134us; 1569us; 1136us; 1569us; 1427us; 1569us; 1430us; 1569us; 1432us; 1569us; 1496us; 1497us; 1538us; 1557us; 1541us; 1557us; 1544us; 1557us; 1547us; 1557us; 1549us; 1550us; 1551us; 1552us; 1555us; 1556us; 1558us; 1559us; 1562us; 1563us; 1565us; 1569us; 1570us; 1576us; 1572us; 1576us; 1574us; 1576us; 1577us; 1576us; 1579us; 1576us; 1593us; 1569us; 1598us; 1569us; 1601us; 1569us; 1612us; 1569us; 1616us; 1569us; 1622us; 1569us; 1633us; 1569us; 1639us; 1588us; 1640us; 1576us; 1663us; 1569us; 1665us; 1569us; 1676us; 1569us; 18us; 65535us; 183us; 1589us; 185us; 1589us; 424us; 1589us; 620us; 1589us; 621us; 1589us; 665us; 1589us; 666us; 1589us; 1497us; 1589us; 1550us; 1589us; 1552us; 1589us; 1556us; 1589us; 1557us; 1589us; 1559us; 1589us; 1563us; 1589us; 1569us; 1589us; 1576us; 1589us; 1588us; 1589us; 1590us; 1591us; 4us; 65535us; 532us; 1594us; 1432us; 1594us; 1593us; 1594us; 1622us; 1623us; 2us; 65535us; 1613us; 1614us; 1666us; 1615us; 65us; 65535us; 8us; 1597us; 103us; 1597us; 143us; 1597us; 172us; 1597us; 178us; 1597us; 182us; 1597us; 184us; 1597us; 194us; 1597us; 367us; 1597us; 417us; 1597us; 423us; 1597us; 430us; 1597us; 453us; 1597us; 463us; 1597us; 524us; 1597us; 532us; 1597us; 596us; 1597us; 599us; 1597us; 609us; 1597us; 619us; 1597us; 636us; 1597us; 639us; 1597us; 658us; 1597us; 661us; 1597us; 664us; 1597us; 678us; 1597us; 689us; 1597us; 774us; 1597us; 818us; 1597us; 931us; 1597us; 961us; 1597us; 1132us; 1597us; 1134us; 1597us; 1136us; 1597us; 1427us; 1597us; 1430us; 1597us; 1432us; 1597us; 1496us; 1597us; 1538us; 1597us; 1541us; 1597us; 1544us; 1597us; 1547us; 1597us; 1549us; 1597us; 1551us; 1597us; 1555us; 1597us; 1558us; 1597us; 1562us; 1597us; 1565us; 1597us; 1570us; 1597us; 1572us; 1597us; 1574us; 1597us; 1577us; 1597us; 1579us; 1597us; 1593us; 1597us; 1598us; 1597us; 1601us; 1597us; 1612us; 1597us; 1616us; 1597us; 1622us; 1597us; 1633us; 1597us; 1639us; 1597us; 1640us; 1597us; 1663us; 1597us; 1665us; 1597us; 1676us; 1597us; 4us; 65535us; 488us; 489us; 1250us; 1252us; 1251us; 1253us; 1434us; 1435us; 66us; 65535us; 8us; 1619us; 103us; 1619us; 143us; 1619us; 172us; 1619us; 178us; 1619us; 182us; 1619us; 184us; 1619us; 194us; 1619us; 367us; 1619us; 417us; 1619us; 423us; 1619us; 430us; 1619us; 453us; 1619us; 463us; 1619us; 524us; 1619us; 532us; 1619us; 596us; 1619us; 599us; 1619us; 609us; 1619us; 619us; 1619us; 636us; 1619us; 639us; 1619us; 658us; 1619us; 661us; 1619us; 664us; 1619us; 678us; 1619us; 689us; 1619us; 774us; 1619us; 818us; 1619us; 865us; 866us; 931us; 1619us; 961us; 1619us; 1132us; 1619us; 1134us; 1619us; 1136us; 1619us; 1427us; 1619us; 1430us; 1619us; 1432us; 1619us; 1496us; 1619us; 1538us; 1619us; 1541us; 1619us; 1544us; 1619us; 1547us; 1619us; 1549us; 1619us; 1551us; 1619us; 1555us; 1619us; 1558us; 1619us; 1562us; 1619us; 1565us; 1619us; 1570us; 1619us; 1572us; 1619us; 1574us; 1619us; 1577us; 1619us; 1579us; 1619us; 1593us; 1619us; 1598us; 1619us; 1601us; 1619us; 1612us; 1619us; 1616us; 1619us; 1622us; 1619us; 1633us; 1619us; 1639us; 1619us; 1640us; 1619us; 1663us; 1619us; 1665us; 1619us; 1676us; 1619us; 72us; 65535us; 8us; 1627us; 103us; 1627us; 143us; 1627us; 172us; 1627us; 178us; 1627us; 182us; 1627us; 184us; 1627us; 194us; 1627us; 367us; 1627us; 417us; 1627us; 423us; 1627us; 430us; 1627us; 453us; 1627us; 463us; 1627us; 488us; 1626us; 524us; 1627us; 532us; 1627us; 550us; 1630us; 596us; 1627us; 599us; 1627us; 609us; 1627us; 619us; 1627us; 636us; 1627us; 639us; 1627us; 658us; 1627us; 661us; 1627us; 664us; 1627us; 678us; 1627us; 689us; 1627us; 774us; 1627us; 818us; 1627us; 865us; 1627us; 931us; 1627us; 961us; 1627us; 1132us; 1627us; 1134us; 1627us; 1136us; 1627us; 1250us; 1626us; 1251us; 1626us; 1427us; 1627us; 1430us; 1627us; 1432us; 1627us; 1434us; 1626us; 1496us; 1627us; 1538us; 1627us; 1541us; 1627us; 1544us; 1627us; 1547us; 1627us; 1549us; 1627us; 1551us; 1627us; 1555us; 1627us; 1558us; 1627us; 1562us; 1627us; 1565us; 1627us; 1570us; 1627us; 1572us; 1627us; 1574us; 1627us; 1577us; 1627us; 1579us; 1627us; 1593us; 1627us; 1598us; 1627us; 1601us; 1627us; 1612us; 1627us; 1616us; 1627us; 1622us; 1627us; 1629us; 1630us; 1633us; 1627us; 1639us; 1627us; 1640us; 1627us; 1663us; 1627us; 1665us; 1627us; 1676us; 1627us; 4us; 65535us; 603us; 618us; 616us; 617us; 1585us; 1654us; 1656us; 1657us; 6us; 65535us; 603us; 1660us; 616us; 1660us; 1278us; 1279us; 1585us; 1660us; 1656us; 1660us; 1661us; 1662us; 8us; 65535us; 532us; 1611us; 1432us; 1611us; 1593us; 1611us; 1612us; 1613us; 1616us; 1617us; 1622us; 1611us; 1663us; 1670us; 1665us; 1678us; 2us; 65535us; 1663us; 1664us; 1665us; 1666us; 3us; 65535us; 1616us; 1618us; 1663us; 1679us; 1665us; 1679us; 1us; 65535us; 810us; 811us; 6us; 65535us; 1680us; 1690us; 1687us; 1690us; 1694us; 1690us; 1700us; 1690us; 1701us; 1690us; 1702us; 1690us; 6us; 65535us; 1680us; 1694us; 1687us; 1694us; 1694us; 1694us; 1700us; 1694us; 1701us; 1694us; 1702us; 1694us; 6us; 65535us; 1680us; 1696us; 1687us; 1696us; 1694us; 1695us; 1700us; 1696us; 1701us; 1696us; 1702us; 1696us; 5us; 65535us; 1680us; 1681us; 1687us; 1688us; 1700us; 1697us; 1701us; 1698us; 1702us; 1699us; 106us; 65535us; 8us; 1583us; 103us; 1583us; 143us; 1583us; 172us; 1583us; 178us; 1583us; 182us; 1583us; 183us; 1582us; 184us; 1583us; 185us; 1582us; 194us; 1583us; 367us; 1583us; 417us; 1583us; 423us; 1583us; 424us; 1582us; 430us; 1583us; 453us; 1583us; 463us; 1583us; 488us; 1582us; 524us; 1583us; 532us; 1583us; 550us; 1582us; 558us; 563us; 573us; 574us; 587us; 598us; 591us; 598us; 594us; 595us; 596us; 1583us; 599us; 1583us; 609us; 1583us; 619us; 1583us; 620us; 1582us; 621us; 1582us; 636us; 1583us; 639us; 1583us; 658us; 1583us; 661us; 1583us; 664us; 1583us; 665us; 1582us; 666us; 1582us; 678us; 1583us; 689us; 1583us; 766us; 773us; 770us; 773us; 774us; 1583us; 818us; 1583us; 865us; 1582us; 931us; 1583us; 961us; 1583us; 1132us; 1583us; 1134us; 1583us; 1136us; 1583us; 1250us; 1582us; 1251us; 1582us; 1427us; 1583us; 1430us; 1583us; 1432us; 1583us; 1434us; 1582us; 1496us; 1583us; 1497us; 1582us; 1535us; 598us; 1537us; 598us; 1538us; 1583us; 1541us; 1583us; 1544us; 1583us; 1547us; 1583us; 1549us; 1583us; 1550us; 1582us; 1551us; 1583us; 1552us; 1582us; 1555us; 1583us; 1556us; 1582us; 1557us; 1582us; 1558us; 1583us; 1559us; 1582us; 1562us; 1583us; 1563us; 1582us; 1565us; 1583us; 1569us; 1582us; 1570us; 1583us; 1572us; 1583us; 1574us; 1583us; 1576us; 1582us; 1577us; 1583us; 1579us; 1583us; 1588us; 1582us; 1593us; 1583us; 1595us; 1582us; 1598us; 1583us; 1601us; 1583us; 1612us; 1583us; 1616us; 1583us; 1622us; 1583us; 1624us; 1582us; 1629us; 1582us; 1633us; 1583us; 1639us; 1583us; 1640us; 1583us; 1663us; 1583us; 1665us; 1583us; 1676us; 1583us; 1680us; 1686us; 1687us; 1686us; 1694us; 1686us; 1700us; 1686us; 1701us; 1686us; 1702us; 1686us; 110us; 65535us; 8us; 1705us; 103us; 1705us; 143us; 1705us; 172us; 1705us; 178us; 1705us; 182us; 1705us; 183us; 1705us; 184us; 1705us; 185us; 1705us; 194us; 1705us; 367us; 1705us; 417us; 1705us; 423us; 1705us; 424us; 1705us; 430us; 1705us; 453us; 1705us; 463us; 1705us; 488us; 1705us; 524us; 1705us; 532us; 1705us; 550us; 1705us; 558us; 1705us; 573us; 1705us; 587us; 1705us; 591us; 1705us; 594us; 1705us; 596us; 1705us; 599us; 1705us; 609us; 1705us; 619us; 1705us; 620us; 1705us; 621us; 1705us; 636us; 1705us; 639us; 1705us; 658us; 1705us; 661us; 1705us; 664us; 1705us; 665us; 1705us; 666us; 1705us; 678us; 1705us; 689us; 1705us; 766us; 1705us; 770us; 1705us; 774us; 1705us; 818us; 1705us; 865us; 1705us; 931us; 1705us; 961us; 1705us; 1132us; 1705us; 1134us; 1705us; 1136us; 1705us; 1250us; 1705us; 1251us; 1705us; 1363us; 1385us; 1364us; 1386us; 1365us; 1385us; 1389us; 1390us; 1427us; 1705us; 1430us; 1705us; 1432us; 1705us; 1434us; 1705us; 1496us; 1705us; 1497us; 1705us; 1535us; 1705us; 1537us; 1705us; 1538us; 1705us; 1541us; 1705us; 1544us; 1705us; 1547us; 1705us; 1549us; 1705us; 1550us; 1705us; 1551us; 1705us; 1552us; 1705us; 1555us; 1705us; 1556us; 1705us; 1557us; 1705us; 1558us; 1705us; 1559us; 1705us; 1562us; 1705us; 1563us; 1705us; 1565us; 1705us; 1569us; 1705us; 1570us; 1705us; 1572us; 1705us; 1574us; 1705us; 1576us; 1705us; 1577us; 1705us; 1579us; 1705us; 1588us; 1705us; 1593us; 1705us; 1595us; 1705us; 1598us; 1705us; 1601us; 1705us; 1612us; 1705us; 1616us; 1705us; 1622us; 1705us; 1624us; 1705us; 1629us; 1705us; 1633us; 1705us; 1639us; 1705us; 1640us; 1705us; 1663us; 1705us; 1665us; 1705us; 1676us; 1705us; 1680us; 1705us; 1687us; 1705us; 1694us; 1705us; 1700us; 1705us; 1701us; 1705us; 1702us; 1705us; 335us; 65535us; 6us; 1758us; 8us; 1711us; 31us; 1758us; 51us; 1711us; 54us; 1711us; 89us; 1711us; 94us; 1711us; 100us; 1758us; 103us; 1711us; 106us; 1758us; 108us; 1758us; 112us; 1711us; 143us; 1711us; 172us; 652us; 175us; 1758us; 178us; 1711us; 182us; 1711us; 183us; 1711us; 184us; 1711us; 185us; 1711us; 194us; 1711us; 196us; 1758us; 198us; 1758us; 203us; 1758us; 227us; 1758us; 241us; 1758us; 263us; 1758us; 270us; 1711us; 299us; 328us; 310us; 328us; 315us; 1711us; 319us; 1711us; 367us; 1711us; 401us; 1760us; 404us; 1758us; 406us; 1760us; 409us; 1758us; 417us; 652us; 423us; 1711us; 424us; 1711us; 427us; 1758us; 430us; 1711us; 441us; 1760us; 444us; 1758us; 451us; 452us; 453us; 1711us; 457us; 458us; 460us; 1758us; 463us; 1711us; 466us; 1760us; 469us; 1760us; 472us; 1760us; 474us; 1760us; 488us; 1711us; 496us; 497us; 499us; 500us; 524us; 652us; 532us; 1711us; 550us; 1711us; 558us; 1711us; 560us; 1711us; 596us; 1711us; 599us; 1711us; 609us; 1711us; 619us; 1711us; 620us; 1711us; 621us; 1711us; 633us; 1758us; 636us; 663us; 639us; 1711us; 658us; 663us; 661us; 663us; 664us; 1711us; 665us; 1711us; 666us; 1711us; 676us; 677us; 678us; 1711us; 685us; 688us; 689us; 663us; 691us; 1711us; 693us; 1711us; 699us; 1758us; 705us; 1758us; 716us; 717us; 728us; 1711us; 729us; 730us; 741us; 1711us; 751us; 1760us; 754us; 1758us; 758us; 1758us; 768us; 1758us; 774us; 1711us; 814us; 815us; 818us; 1711us; 820us; 813us; 821us; 813us; 823us; 813us; 839us; 840us; 841us; 1760us; 842us; 1760us; 846us; 1760us; 847us; 1760us; 848us; 1760us; 849us; 1760us; 852us; 854us; 856us; 1760us; 859us; 1760us; 861us; 1760us; 863us; 1760us; 865us; 1711us; 868us; 855us; 872us; 1760us; 874us; 1760us; 876us; 1760us; 881us; 1711us; 884us; 1760us; 887us; 1760us; 890us; 892us; 891us; 892us; 898us; 1760us; 906us; 1760us; 926us; 927us; 928us; 1760us; 931us; 1711us; 933us; 1760us; 934us; 1760us; 936us; 1760us; 937us; 1760us; 938us; 1760us; 939us; 1760us; 942us; 1711us; 945us; 1760us; 947us; 1760us; 949us; 1758us; 954us; 1758us; 961us; 1711us; 968us; 1758us; 970us; 1758us; 973us; 1758us; 976us; 1758us; 993us; 1758us; 996us; 1758us; 999us; 1758us; 1005us; 1758us; 1009us; 1758us; 1013us; 1758us; 1017us; 1758us; 1019us; 1758us; 1024us; 1758us; 1026us; 1758us; 1028us; 1758us; 1030us; 1758us; 1032us; 1758us; 1034us; 1758us; 1043us; 1760us; 1045us; 1758us; 1053us; 1758us; 1060us; 1758us; 1066us; 1758us; 1068us; 1758us; 1070us; 1760us; 1071us; 1758us; 1074us; 1758us; 1076us; 1760us; 1077us; 1758us; 1080us; 1758us; 1083us; 1758us; 1086us; 1758us; 1088us; 1758us; 1093us; 1758us; 1095us; 1758us; 1132us; 1711us; 1134us; 1711us; 1136us; 1711us; 1138us; 1758us; 1140us; 1758us; 1144us; 1758us; 1145us; 1758us; 1146us; 1758us; 1147us; 1758us; 1148us; 1758us; 1149us; 1758us; 1150us; 1758us; 1151us; 1758us; 1152us; 1758us; 1153us; 1758us; 1154us; 1758us; 1156us; 1758us; 1157us; 1758us; 1158us; 1758us; 1159us; 1758us; 1160us; 1758us; 1161us; 1758us; 1162us; 1758us; 1163us; 1758us; 1164us; 1758us; 1186us; 1758us; 1189us; 1760us; 1191us; 1760us; 1196us; 1760us; 1203us; 1760us; 1208us; 1758us; 1209us; 1758us; 1213us; 1758us; 1215us; 1758us; 1219us; 1758us; 1221us; 1758us; 1225us; 1758us; 1228us; 1758us; 1230us; 1758us; 1232us; 1758us; 1233us; 1758us; 1235us; 1758us; 1236us; 1758us; 1238us; 1758us; 1239us; 1758us; 1241us; 1758us; 1242us; 1758us; 1244us; 1758us; 1245us; 1758us; 1247us; 1758us; 1248us; 1758us; 1250us; 1711us; 1251us; 1711us; 1260us; 1758us; 1262us; 1758us; 1264us; 1758us; 1265us; 1758us; 1266us; 1758us; 1269us; 1758us; 1276us; 1758us; 1277us; 1758us; 1280us; 1758us; 1281us; 1758us; 1282us; 1758us; 1285us; 1758us; 1287us; 1758us; 1288us; 1758us; 1294us; 1758us; 1301us; 1758us; 1308us; 1758us; 1315us; 1758us; 1324us; 1758us; 1327us; 1758us; 1329us; 1758us; 1332us; 1758us; 1343us; 1758us; 1350us; 1758us; 1351us; 1758us; 1357us; 1758us; 1363us; 1758us; 1364us; 1758us; 1365us; 1758us; 1381us; 1758us; 1391us; 1758us; 1404us; 1758us; 1405us; 1758us; 1407us; 1758us; 1409us; 1758us; 1413us; 1758us; 1414us; 1758us; 1421us; 1758us; 1427us; 1711us; 1430us; 1711us; 1432us; 1711us; 1434us; 1711us; 1441us; 1758us; 1446us; 1758us; 1450us; 1711us; 1454us; 1711us; 1462us; 1711us; 1471us; 1758us; 1496us; 1711us; 1497us; 1711us; 1504us; 1758us; 1511us; 1760us; 1513us; 1758us; 1516us; 1760us; 1518us; 1758us; 1529us; 1760us; 1531us; 1760us; 1538us; 1711us; 1541us; 1711us; 1544us; 1711us; 1547us; 1711us; 1549us; 1711us; 1550us; 1711us; 1551us; 1711us; 1552us; 1711us; 1553us; 1554us; 1555us; 1711us; 1556us; 1711us; 1557us; 1711us; 1558us; 1711us; 1559us; 1711us; 1560us; 1561us; 1562us; 1711us; 1563us; 1711us; 1565us; 1711us; 1569us; 1711us; 1570us; 1711us; 1572us; 1711us; 1574us; 1711us; 1576us; 1711us; 1577us; 1711us; 1579us; 1711us; 1588us; 1711us; 1593us; 1711us; 1595us; 1711us; 1598us; 1711us; 1601us; 1711us; 1612us; 1711us; 1616us; 1711us; 1622us; 1711us; 1624us; 1711us; 1629us; 1711us; 1633us; 1711us; 1639us; 1711us; 1640us; 1711us; 1649us; 1758us; 1655us; 1711us; 1663us; 1711us; 1665us; 1711us; 1676us; 1711us; 1680us; 1711us; 1687us; 1711us; 1694us; 1711us; 1700us; 1711us; 1701us; 1711us; 1702us; 1711us; 1703us; 1704us; 1706us; 1708us; 1707us; 1708us; 1712us; 1713us; 1762us; 1760us; 119us; 65535us; 8us; 1581us; 51us; 52us; 54us; 55us; 89us; 277us; 94us; 95us; 103us; 1581us; 112us; 275us; 143us; 1581us; 172us; 525us; 178us; 1581us; 182us; 1581us; 183us; 1581us; 184us; 1581us; 185us; 1581us; 194us; 1581us; 270us; 287us; 299us; 312us; 310us; 312us; 315us; 316us; 319us; 320us; 367us; 1581us; 417us; 525us; 423us; 1581us; 424us; 1581us; 430us; 1581us; 453us; 1581us; 463us; 1581us; 488us; 1581us; 524us; 525us; 532us; 1581us; 550us; 1581us; 558us; 559us; 560us; 561us; 596us; 1581us; 599us; 1581us; 609us; 1581us; 619us; 1581us; 620us; 1581us; 621us; 1581us; 636us; 1581us; 639us; 1581us; 658us; 1581us; 661us; 1581us; 664us; 1581us; 665us; 1581us; 666us; 1581us; 678us; 1581us; 689us; 1581us; 691us; 692us; 693us; 694us; 728us; 731us; 741us; 731us; 774us; 1581us; 818us; 1581us; 865us; 1581us; 881us; 944us; 931us; 1581us; 942us; 944us; 961us; 1581us; 1132us; 1581us; 1134us; 1581us; 1136us; 1581us; 1250us; 1581us; 1251us; 1581us; 1427us; 1581us; 1430us; 1581us; 1432us; 1581us; 1434us; 1581us; 1450us; 1467us; 1454us; 1467us; 1462us; 1467us; 1496us; 1581us; 1497us; 1581us; 1538us; 1581us; 1541us; 1581us; 1544us; 1581us; 1547us; 1581us; 1549us; 1581us; 1550us; 1581us; 1551us; 1581us; 1552us; 1581us; 1555us; 1581us; 1556us; 1581us; 1557us; 1581us; 1558us; 1581us; 1559us; 1581us; 1562us; 1581us; 1563us; 1581us; 1565us; 1581us; 1569us; 1581us; 1570us; 1581us; 1572us; 1581us; 1574us; 1581us; 1576us; 1581us; 1577us; 1581us; 1579us; 1581us; 1588us; 1581us; 1593us; 1581us; 1595us; 1581us; 1598us; 1581us; 1601us; 1581us; 1612us; 1581us; 1616us; 1581us; 1622us; 1581us; 1624us; 1581us; 1629us; 1581us; 1633us; 1581us; 1639us; 1581us; 1640us; 1581us; 1655us; 1656us; 1663us; 1581us; 1665us; 1581us; 1676us; 1581us; 1680us; 1685us; 1687us; 1685us; 1694us; 1685us; 1700us; 1685us; 1701us; 1685us; 1702us; 1685us; 193us; 65535us; 6us; 1759us; 31us; 1759us; 100us; 1759us; 106us; 1759us; 108us; 1759us; 175us; 1759us; 196us; 1759us; 198us; 1759us; 203us; 1759us; 227us; 1759us; 241us; 1759us; 263us; 1759us; 401us; 1761us; 404us; 1759us; 406us; 1761us; 409us; 1759us; 427us; 1759us; 441us; 1761us; 444us; 1759us; 460us; 1759us; 466us; 1761us; 469us; 1761us; 472us; 1761us; 474us; 1761us; 633us; 1759us; 699us; 1759us; 705us; 1759us; 751us; 1761us; 754us; 1759us; 758us; 1759us; 768us; 1759us; 841us; 1761us; 842us; 1761us; 846us; 1761us; 847us; 1761us; 848us; 1761us; 849us; 1761us; 856us; 1761us; 859us; 1761us; 861us; 1761us; 863us; 1761us; 868us; 1761us; 872us; 1761us; 874us; 1761us; 876us; 1761us; 884us; 1761us; 887us; 1761us; 898us; 1761us; 906us; 1761us; 928us; 1761us; 933us; 1761us; 934us; 1761us; 936us; 1761us; 937us; 1761us; 938us; 1761us; 939us; 1761us; 945us; 1761us; 947us; 1761us; 949us; 1759us; 954us; 1759us; 968us; 1759us; 970us; 1759us; 973us; 1759us; 976us; 1759us; 993us; 1759us; 996us; 1759us; 999us; 1759us; 1005us; 1759us; 1009us; 1759us; 1013us; 1759us; 1017us; 1759us; 1019us; 1759us; 1024us; 1759us; 1026us; 1759us; 1028us; 1759us; 1030us; 1759us; 1032us; 1759us; 1034us; 1759us; 1043us; 1761us; 1045us; 1759us; 1053us; 1759us; 1060us; 1759us; 1066us; 1759us; 1068us; 1759us; 1070us; 1761us; 1071us; 1759us; 1074us; 1759us; 1076us; 1761us; 1077us; 1759us; 1080us; 1759us; 1083us; 1759us; 1086us; 1759us; 1088us; 1759us; 1093us; 1759us; 1095us; 1759us; 1138us; 1759us; 1140us; 1759us; 1144us; 1759us; 1145us; 1759us; 1146us; 1759us; 1147us; 1759us; 1148us; 1759us; 1149us; 1759us; 1150us; 1759us; 1151us; 1759us; 1152us; 1759us; 1153us; 1759us; 1154us; 1759us; 1156us; 1759us; 1157us; 1759us; 1158us; 1759us; 1159us; 1759us; 1160us; 1759us; 1161us; 1759us; 1162us; 1759us; 1163us; 1759us; 1164us; 1759us; 1186us; 1759us; 1189us; 1761us; 1191us; 1761us; 1196us; 1761us; 1203us; 1761us; 1208us; 1759us; 1209us; 1759us; 1213us; 1759us; 1215us; 1759us; 1219us; 1759us; 1221us; 1759us; 1225us; 1759us; 1228us; 1759us; 1230us; 1759us; 1232us; 1759us; 1233us; 1759us; 1235us; 1759us; 1236us; 1759us; 1238us; 1759us; 1239us; 1759us; 1241us; 1759us; 1242us; 1759us; 1244us; 1759us; 1245us; 1759us; 1247us; 1759us; 1248us; 1759us; 1260us; 1759us; 1262us; 1759us; 1264us; 1759us; 1265us; 1759us; 1266us; 1759us; 1269us; 1759us; 1276us; 1759us; 1277us; 1759us; 1280us; 1759us; 1281us; 1759us; 1282us; 1759us; 1285us; 1759us; 1287us; 1759us; 1288us; 1759us; 1294us; 1759us; 1301us; 1759us; 1308us; 1759us; 1315us; 1759us; 1324us; 1759us; 1327us; 1759us; 1329us; 1759us; 1332us; 1759us; 1343us; 1759us; 1350us; 1759us; 1351us; 1759us; 1357us; 1759us; 1363us; 1759us; 1364us; 1759us; 1365us; 1759us; 1381us; 1759us; 1391us; 1759us; 1404us; 1759us; 1405us; 1759us; 1407us; 1759us; 1409us; 1759us; 1413us; 1759us; 1414us; 1759us; 1421us; 1759us; 1441us; 1759us; 1446us; 1759us; 1471us; 1759us; 1504us; 1759us; 1511us; 1761us; 1513us; 1759us; 1516us; 1761us; 1518us; 1759us; 1529us; 1761us; 1531us; 1761us; 1649us; 1759us; 1762us; 1761us; 7us; 65535us; 646us; 1716us; 868us; 1716us; 898us; 1716us; 1308us; 1716us; 1364us; 1716us; 1365us; 1716us; 1715us; 1716us; 2us; 65535us; 1722us; 1757us; 1755us; 1756us; 7us; 65535us; 646us; 1721us; 868us; 1721us; 898us; 1721us; 1308us; 1721us; 1364us; 1721us; 1365us; 1721us; 1715us; 1721us; 146us; 65535us; 6us; 1765us; 31us; 1765us; 100us; 1765us; 106us; 1765us; 108us; 1765us; 175us; 1765us; 196us; 1765us; 198us; 1765us; 203us; 1765us; 227us; 1765us; 241us; 1765us; 263us; 1765us; 404us; 1765us; 409us; 1765us; 427us; 1765us; 444us; 1765us; 460us; 1765us; 633us; 1765us; 699us; 1765us; 705us; 1765us; 754us; 1765us; 758us; 1765us; 768us; 1765us; 949us; 1765us; 954us; 1765us; 968us; 1765us; 970us; 1765us; 973us; 1765us; 976us; 1765us; 993us; 1765us; 996us; 1765us; 999us; 1765us; 1005us; 1765us; 1009us; 1765us; 1013us; 1765us; 1017us; 1765us; 1019us; 1765us; 1024us; 1765us; 1026us; 1765us; 1028us; 1765us; 1030us; 1765us; 1032us; 1765us; 1034us; 1765us; 1045us; 1765us; 1053us; 1765us; 1060us; 1765us; 1066us; 1765us; 1068us; 1765us; 1071us; 1765us; 1074us; 1765us; 1077us; 1765us; 1080us; 1765us; 1083us; 1765us; 1086us; 1765us; 1088us; 1765us; 1093us; 1765us; 1095us; 1765us; 1138us; 1765us; 1140us; 1765us; 1144us; 1765us; 1145us; 1765us; 1146us; 1765us; 1147us; 1765us; 1148us; 1765us; 1149us; 1765us; 1150us; 1765us; 1151us; 1765us; 1152us; 1765us; 1153us; 1765us; 1154us; 1765us; 1156us; 1765us; 1157us; 1765us; 1158us; 1765us; 1159us; 1765us; 1160us; 1765us; 1161us; 1765us; 1162us; 1765us; 1163us; 1765us; 1164us; 1765us; 1186us; 1765us; 1208us; 1765us; 1209us; 1765us; 1213us; 1765us; 1215us; 1765us; 1219us; 1765us; 1221us; 1765us; 1225us; 1765us; 1228us; 1765us; 1230us; 1765us; 1232us; 1765us; 1233us; 1765us; 1235us; 1765us; 1236us; 1765us; 1238us; 1765us; 1239us; 1765us; 1241us; 1765us; 1242us; 1765us; 1244us; 1765us; 1245us; 1765us; 1247us; 1765us; 1248us; 1765us; 1260us; 1765us; 1262us; 1765us; 1264us; 1765us; 1265us; 1765us; 1266us; 1765us; 1269us; 1765us; 1276us; 1765us; 1277us; 1765us; 1280us; 1765us; 1281us; 1765us; 1282us; 1305us; 1285us; 1305us; 1287us; 1765us; 1288us; 1765us; 1294us; 1765us; 1301us; 1765us; 1308us; 1765us; 1315us; 1765us; 1324us; 1765us; 1327us; 1765us; 1329us; 1765us; 1332us; 1765us; 1343us; 1765us; 1350us; 1765us; 1351us; 1765us; 1357us; 1765us; 1363us; 1765us; 1364us; 1765us; 1365us; 1765us; 1381us; 1765us; 1391us; 1765us; 1404us; 1765us; 1405us; 1765us; 1407us; 1765us; 1409us; 1765us; 1413us; 1765us; 1414us; 1765us; 1421us; 1765us; 1441us; 1765us; 1446us; 1765us; 1471us; 1765us; 1504us; 1765us; 1513us; 1765us; 1518us; 1765us; 1649us; 1765us; 47us; 65535us; 401us; 471us; 406us; 471us; 441us; 471us; 466us; 467us; 469us; 470us; 472us; 476us; 474us; 475us; 751us; 471us; 841us; 471us; 842us; 471us; 846us; 471us; 847us; 471us; 848us; 471us; 849us; 471us; 856us; 471us; 859us; 471us; 861us; 471us; 863us; 471us; 868us; 471us; 872us; 471us; 874us; 471us; 876us; 471us; 884us; 471us; 887us; 471us; 898us; 471us; 906us; 471us; 928us; 471us; 933us; 471us; 934us; 471us; 936us; 471us; 937us; 471us; 938us; 471us; 939us; 471us; 945us; 471us; 947us; 471us; 1043us; 471us; 1070us; 471us; 1076us; 471us; 1189us; 471us; 1191us; 471us; 1196us; 471us; 1203us; 471us; 1511us; 471us; 1516us; 471us; 1529us; 471us; 1531us; 471us; 1762us; 1763us; 144us; 65535us; 6us; 1293us; 31us; 1293us; 100us; 101us; 106us; 1293us; 108us; 1293us; 175us; 176us; 196us; 202us; 198us; 202us; 203us; 204us; 227us; 1293us; 241us; 1293us; 263us; 1293us; 404us; 1293us; 409us; 1293us; 427us; 428us; 444us; 1293us; 460us; 1293us; 633us; 645us; 699us; 1293us; 705us; 1293us; 754us; 1293us; 758us; 1293us; 768us; 1293us; 949us; 1293us; 954us; 1293us; 968us; 1293us; 970us; 1293us; 973us; 1293us; 976us; 1293us; 993us; 1293us; 996us; 1293us; 999us; 1293us; 1005us; 1293us; 1009us; 1293us; 1013us; 1293us; 1017us; 1293us; 1019us; 1293us; 1024us; 1293us; 1026us; 1293us; 1028us; 1293us; 1030us; 1293us; 1032us; 1293us; 1034us; 1293us; 1045us; 1293us; 1053us; 1293us; 1060us; 1293us; 1066us; 1293us; 1068us; 1293us; 1071us; 1293us; 1074us; 1293us; 1077us; 1293us; 1080us; 1293us; 1083us; 1293us; 1086us; 1293us; 1088us; 1293us; 1093us; 1293us; 1095us; 1293us; 1138us; 1293us; 1140us; 1293us; 1144us; 1293us; 1145us; 1293us; 1146us; 1293us; 1147us; 1293us; 1148us; 1293us; 1149us; 1293us; 1150us; 1293us; 1151us; 1293us; 1152us; 1293us; 1153us; 1293us; 1154us; 1293us; 1156us; 1293us; 1157us; 1293us; 1158us; 1293us; 1159us; 1293us; 1160us; 1293us; 1161us; 1293us; 1162us; 1293us; 1163us; 1293us; 1164us; 1293us; 1186us; 1293us; 1208us; 1293us; 1209us; 1293us; 1213us; 1293us; 1215us; 1293us; 1219us; 1293us; 1221us; 1293us; 1225us; 1293us; 1228us; 1293us; 1230us; 1293us; 1232us; 1293us; 1233us; 1293us; 1235us; 1293us; 1236us; 1293us; 1238us; 1293us; 1239us; 1293us; 1241us; 1293us; 1242us; 1293us; 1244us; 1293us; 1245us; 1293us; 1247us; 1293us; 1248us; 1293us; 1260us; 1293us; 1262us; 1293us; 1264us; 1293us; 1265us; 1293us; 1266us; 1293us; 1269us; 1293us; 1276us; 1293us; 1277us; 1293us; 1280us; 1293us; 1281us; 1293us; 1287us; 1289us; 1288us; 1289us; 1294us; 1293us; 1301us; 1293us; 1308us; 1293us; 1315us; 1293us; 1324us; 1293us; 1327us; 1293us; 1329us; 1293us; 1332us; 1293us; 1343us; 1293us; 1350us; 1293us; 1351us; 1293us; 1357us; 1293us; 1363us; 1293us; 1364us; 1293us; 1365us; 1293us; 1381us; 1293us; 1391us; 1293us; 1404us; 1293us; 1405us; 1293us; 1407us; 1293us; 1409us; 1293us; 1413us; 1293us; 1414us; 1293us; 1421us; 1293us; 1441us; 1293us; 1446us; 1293us; 1471us; 1293us; 1504us; 1293us; 1513us; 1293us; 1518us; 1293us; 1649us; 1293us; 14us; 65535us; 47us; 1769us; 74us; 1769us; 77us; 1769us; 78us; 1771us; 81us; 1769us; 217us; 1769us; 236us; 1769us; 242us; 1769us; 247us; 1769us; 251us; 1769us; 252us; 1769us; 253us; 1769us; 1769us; 1769us; 1771us; 1771us; 12us; 65535us; 47us; 82us; 74us; 82us; 77us; 82us; 81us; 82us; 217us; 254us; 236us; 254us; 242us; 243us; 247us; 249us; 251us; 254us; 252us; 254us; 253us; 254us; 1769us; 1770us; 2us; 65535us; 78us; 79us; 1771us; 1772us; 11us; 65535us; 166us; 1786us; 300us; 310us; 388us; 1786us; 507us; 1786us; 669us; 670us; 850us; 852us; 923us; 947us; 940us; 942us; 965us; 968us; 966us; 968us; 967us; 968us; 4us; 65535us; 211us; 212us; 294us; 295us; 483us; 484us; 486us; 487us; 2us; 65535us; 1488us; 1489us; 1498us; 1499us; 10us; 65535us; 110us; 111us; 421us; 422us; 432us; 433us; 435us; 436us; 437us; 438us; 439us; 440us; 445us; 446us; 513us; 514us; 515us; 516us; 519us; 520us; 2us; 65535us; 60us; 61us; 223us; 224us; 20us; 65535us; 71us; 72us; 132us; 133us; 233us; 234us; 302us; 303us; 305us; 306us; 355us; 356us; 627us; 657us; 634us; 635us; 637us; 638us; 640us; 641us; 643us; 644us; 652us; 653us; 655us; 656us; 1044us; 1091us; 1073us; 1074us; 1079us; 1080us; 1085us; 1086us; 1475us; 1479us; 1476us; 1477us; 1499us; 1500us; 8us; 65535us; 166us; 167us; 300us; 301us; 388us; 389us; 507us; 508us; 669us; 672us; 850us; 851us; 923us; 946us; 940us; 941us; 4us; 65535us; 50us; 51us; 53us; 54us; 695us; 696us; 701us; 702us; 0us; 65535us; 11us; 65535us; 97us; 98us; 173us; 174us; 391us; 400us; 393us; 400us; 398us; 400us; 420us; 406us; 426us; 427us; 511us; 750us; 512us; 406us; 518us; 406us; 747us; 750us; 7us; 65535us; 98us; 99us; 186us; 675us; 189us; 675us; 449us; 450us; 455us; 456us; 673us; 675us; 750us; 751us; 4us; 65535us; 981us; 1060us; 1033us; 1034us; 1044us; 1045us; 1052us; 1053us; 9us; 65535us; 978us; 1042us; 979us; 1049us; 980us; 1057us; 982us; 1064us; 1035us; 1036us; 1038us; 1039us; 1046us; 1047us; 1054us; 1055us; 1061us; 1062us; 2us; 65535us; 270us; 288us; 278us; 288us; 2us; 65535us; 89us; 119us; 112us; 115us; 2us; 65535us; 65us; 89us; 88us; 89us; 260us; 65535us; 6us; 793us; 8us; 793us; 31us; 793us; 40us; 42us; 103us; 793us; 106us; 793us; 108us; 793us; 143us; 793us; 172us; 793us; 178us; 793us; 182us; 793us; 184us; 793us; 194us; 793us; 227us; 793us; 241us; 793us; 263us; 793us; 313us; 793us; 317us; 793us; 322us; 793us; 367us; 793us; 401us; 793us; 404us; 793us; 406us; 793us; 409us; 793us; 417us; 793us; 423us; 793us; 430us; 793us; 441us; 793us; 444us; 793us; 453us; 793us; 460us; 793us; 463us; 793us; 488us; 793us; 491us; 793us; 524us; 793us; 532us; 793us; 550us; 551us; 596us; 793us; 599us; 793us; 609us; 793us; 619us; 793us; 636us; 793us; 639us; 793us; 642us; 793us; 654us; 793us; 658us; 793us; 661us; 793us; 664us; 793us; 678us; 793us; 689us; 793us; 699us; 793us; 705us; 793us; 751us; 793us; 754us; 793us; 758us; 793us; 768us; 793us; 774us; 793us; 818us; 793us; 841us; 793us; 842us; 793us; 846us; 793us; 847us; 793us; 848us; 793us; 849us; 793us; 856us; 793us; 859us; 793us; 861us; 793us; 863us; 793us; 865us; 793us; 868us; 793us; 872us; 793us; 874us; 793us; 876us; 793us; 884us; 793us; 887us; 793us; 898us; 793us; 906us; 793us; 928us; 793us; 931us; 793us; 933us; 793us; 934us; 793us; 936us; 793us; 937us; 793us; 938us; 793us; 939us; 793us; 945us; 793us; 947us; 793us; 949us; 793us; 954us; 793us; 961us; 793us; 968us; 793us; 970us; 793us; 973us; 793us; 976us; 793us; 993us; 793us; 996us; 793us; 999us; 793us; 1005us; 793us; 1009us; 793us; 1013us; 793us; 1017us; 793us; 1019us; 793us; 1024us; 793us; 1026us; 793us; 1028us; 793us; 1030us; 793us; 1032us; 793us; 1034us; 793us; 1043us; 793us; 1045us; 793us; 1053us; 793us; 1060us; 793us; 1066us; 793us; 1068us; 793us; 1070us; 793us; 1071us; 793us; 1074us; 793us; 1076us; 793us; 1077us; 793us; 1080us; 793us; 1083us; 793us; 1086us; 793us; 1088us; 793us; 1093us; 793us; 1095us; 793us; 1132us; 793us; 1134us; 793us; 1136us; 793us; 1138us; 793us; 1140us; 793us; 1144us; 793us; 1145us; 793us; 1146us; 793us; 1147us; 793us; 1148us; 793us; 1149us; 793us; 1150us; 793us; 1151us; 793us; 1152us; 793us; 1153us; 793us; 1154us; 793us; 1156us; 793us; 1157us; 793us; 1158us; 793us; 1159us; 793us; 1160us; 793us; 1161us; 793us; 1162us; 793us; 1163us; 793us; 1164us; 793us; 1186us; 793us; 1189us; 793us; 1191us; 793us; 1196us; 793us; 1203us; 793us; 1208us; 793us; 1209us; 793us; 1213us; 793us; 1215us; 793us; 1219us; 793us; 1221us; 793us; 1225us; 793us; 1228us; 793us; 1230us; 793us; 1232us; 793us; 1233us; 793us; 1235us; 793us; 1236us; 793us; 1238us; 793us; 1239us; 793us; 1241us; 793us; 1242us; 793us; 1244us; 793us; 1245us; 793us; 1247us; 793us; 1248us; 793us; 1250us; 793us; 1251us; 793us; 1254us; 793us; 1255us; 793us; 1260us; 793us; 1262us; 793us; 1264us; 793us; 1265us; 793us; 1266us; 793us; 1269us; 793us; 1276us; 793us; 1277us; 793us; 1280us; 793us; 1281us; 793us; 1294us; 793us; 1301us; 793us; 1308us; 793us; 1315us; 793us; 1324us; 793us; 1327us; 793us; 1329us; 793us; 1332us; 793us; 1343us; 793us; 1350us; 793us; 1351us; 793us; 1357us; 793us; 1363us; 793us; 1364us; 793us; 1365us; 793us; 1381us; 793us; 1391us; 793us; 1404us; 793us; 1405us; 793us; 1407us; 793us; 1409us; 793us; 1413us; 793us; 1414us; 793us; 1418us; 1419us; 1421us; 793us; 1427us; 793us; 1430us; 793us; 1432us; 793us; 1434us; 793us; 1436us; 793us; 1441us; 793us; 1446us; 793us; 1471us; 793us; 1496us; 793us; 1504us; 793us; 1511us; 793us; 1513us; 793us; 1516us; 793us; 1518us; 793us; 1529us; 793us; 1531us; 793us; 1538us; 793us; 1541us; 793us; 1544us; 793us; 1547us; 793us; 1549us; 793us; 1551us; 793us; 1555us; 793us; 1558us; 793us; 1562us; 793us; 1565us; 793us; 1570us; 793us; 1572us; 793us; 1574us; 793us; 1577us; 793us; 1579us; 793us; 1593us; 793us; 1598us; 793us; 1601us; 793us; 1612us; 793us; 1616us; 793us; 1622us; 793us; 1629us; 793us; 1633us; 793us; 1639us; 793us; 1640us; 793us; 1649us; 793us; 1663us; 793us; 1665us; 793us; 1676us; 793us; 11us; 65535us; 312us; 313us; 316us; 317us; 321us; 322us; 348us; 349us; 489us; 491us; 717us; 718us; 729us; 733us; 732us; 733us; 1252us; 1254us; 1253us; 1255us; 1435us; 1436us; 5us; 65535us; 101us; 580us; 176us; 580us; 428us; 580us; 559us; 575us; 858us; 580us; 13us; 65535us; 31us; 265us; 64us; 122us; 87us; 122us; 188us; 191us; 227us; 265us; 241us; 265us; 259us; 265us; 299us; 326us; 310us; 326us; 332us; 447us; 1419us; 1426us; 1805us; 1807us; 1806us; 1807us; 10us; 65535us; 31us; 49us; 64us; 49us; 87us; 49us; 227us; 49us; 241us; 49us; 259us; 49us; 299us; 324us; 310us; 324us; 1810us; 1812us; 1811us; 1812us; 7us; 65535us; 536us; 537us; 539us; 540us; 882us; 883us; 989us; 1395us; 1391us; 1397us; 1392us; 1393us; 1815us; 1816us; 5us; 65535us; 545us; 546us; 548us; 549us; 990us; 1508us; 1504us; 1510us; 1505us; 1506us; 43us; 65535us; 533us; 534us; 565us; 566us; 607us; 608us; 610us; 611us; 614us; 615us; 647us; 648us; 650us; 651us; 720us; 721us; 804us; 805us; 823us; 826us; 824us; 825us; 828us; 829us; 869us; 870us; 899us; 900us; 902us; 903us; 907us; 908us; 910us; 911us; 987us; 1370us; 988us; 1371us; 1143us; 1302us; 1187us; 1188us; 1309us; 1310us; 1313us; 1314us; 1363us; 1366us; 1364us; 1366us; 1365us; 1366us; 1367us; 1368us; 1380us; 1381us; 1387us; 1388us; 1428us; 1429us; 1432us; 1433us; 1594us; 1595us; 1623us; 1624us; 1634us; 1636us; 1635us; 1636us; 1641us; 1642us; 1652us; 1653us; 1688us; 1689us; 1716us; 1717us; 1718us; 1719us; 1722us; 1723us; 1725us; 1726us; 1820us; 1821us; 26us; 65535us; 70us; 71us; 74us; 75us; 109us; 110us; 113us; 114us; 117us; 118us; 135us; 136us; 153us; 154us; 161us; 162us; 232us; 233us; 236us; 237us; 252us; 285us; 275us; 276us; 279us; 280us; 282us; 283us; 320us; 321us; 358us; 359us; 377us; 379us; 381us; 383us; 503us; 504us; 759us; 760us; 950us; 951us; 955us; 956us; 974us; 975us; 1216us; 1217us; 1222us; 1223us; 1824us; 1825us; 1us; 65535us; 1367us; 1369us; 17us; 65535us; 299us; 308us; 301us; 307us; 488us; 494us; 924us; 1412us; 1043us; 1063us; 1044us; 1051us; 1045us; 1050us; 1046us; 1048us; 1228us; 1229us; 1230us; 1231us; 1409us; 1411us; 1470us; 1474us; 1471us; 1473us; 1658us; 1659us; 1665us; 1669us; 1670us; 1672us; 1712us; 1714us; |] +let _fsyacc_sparseGotoTableRowOffsets = [|0us; 1us; 2us; 3us; 4us; 5us; 7us; 15us; 20us; 26us; 31us; 36us; 41us; 46us; 70us; 72us; 74us; 76us; 83us; 88us; 90us; 93us; 96us; 99us; 103us; 110us; 120us; 130us; 140us; 143us; 145us; 148us; 151us; 155us; 157us; 160us; 163us; 166us; 170us; 179us; 188us; 200us; 204us; 207us; 210us; 213us; 219us; 221us; 223us; 226us; 229us; 232us; 236us; 242us; 252us; 263us; 274us; 290us; 292us; 294us; 297us; 299us; 381us; 500us; 619us; 621us; 624us; 627us; 632us; 639us; 642us; 646us; 649us; 653us; 657us; 661us; 665us; 676us; 687us; 689us; 692us; 696us; 700us; 703us; 714us; 718us; 721us; 723us; 766us; 777us; 842us; 855us; 857us; 862us; 865us; 868us; 871us; 874us; 878us; 881us; 886us; 891us; 894us; 900us; 907us; 974us; 1042us; 1044us; 1050us; 1060us; 1062us; 1064us; 1068us; 1074us; 1076us; 1078us; 1083us; 1087us; 1089us; 1093us; 1097us; 1102us; 1104us; 1108us; 1114us; 1118us; 1122us; 1124us; 1128us; 1132us; 1137us; 1142us; 1146us; 1150us; 1154us; 1158us; 1163us; 1170us; 1177us; 1179us; 1181us; 1197us; 1312us; 1320us; 1435us; 1549us; 1553us; 1558us; 1673us; 1675us; 1677us; 1681us; 1684us; 1686us; 1691us; 1694us; 1700us; 1703us; 1705us; 1708us; 1710us; 1712us; 1714us; 1717us; 1976us; 1978us; 1983us; 1987us; 2174us; 2178us; 2182us; 2185us; 2187us; 2199us; 2211us; 2223us; 2226us; 2229us; 2263us; 2267us; 2276us; 2319us; 2322us; 2345us; 2368us; 2391us; 2394us; 2397us; 2401us; 2425us; 2432us; 2438us; 2489us; 2491us; 2547us; 2646us; 2757us; 2759us; 2763us; 2768us; 2775us; 2782us; 2784us; 2786us; 2789us; 2792us; 2794us; 2905us; 3030us; 3156us; 3161us; 3297us; 3300us; 3303us; 3306us; 3311us; 3454us; 3597us; 3782us; 3925us; 4068us; 4072us; 4076us; 4078us; 4221us; 4223us; 4226us; 4230us; 4236us; 4238us; 4240us; 4242us; 4244us; 4248us; 4250us; 4255us; 4257us; 4259us; 4261us; 4264us; 4271us; 4278us; 4282us; 4288us; 4292us; 4294us; 4296us; 4298us; 4301us; 4303us; 4308us; 4314us; 4457us; 4602us; 4713us; 4824us; 4828us; 4834us; 4838us; 4848us; 4858us; 4861us; 4873us; 4905us; 4907us; 4939us; 4946us; 5038us; 5130us; 5196us; 5215us; 5220us; 5223us; 5289us; 5294us; 5361us; 5434us; 5439us; 5446us; 5455us; 5458us; 5462us; 5464us; 5471us; 5478us; 5485us; 5491us; 5598us; 5709us; 6045us; 6165us; 6359us; 6367us; 6370us; 6378us; 6525us; 6573us; 6718us; 6733us; 6746us; 6749us; 6761us; 6766us; 6769us; 6780us; 6783us; 6804us; 6813us; 6818us; 6819us; 6831us; 6839us; 6844us; 6854us; 6857us; 6860us; 6863us; 7124us; 7136us; 7142us; 7156us; 7167us; 7175us; 7181us; 7225us; 7252us; 7254us; |] +let _fsyacc_stateToProdIdxsTableElements = [| 1us; 0us; 1us; 0us; 1us; 1us; 1us; 1us; 1us; 2us; 1us; 2us; 1us; 3us; 1us; 3us; 1us; 4us; 1us; 4us; 1us; 5us; 1us; 6us; 1us; 7us; 1us; 8us; 1us; 9us; 1us; 10us; 2us; 11us; 14us; 1us; 11us; 2us; 12us; 15us; 1us; 12us; 2us; 13us; 16us; 1us; 13us; 1us; 14us; 1us; 14us; 1us; 15us; 1us; 15us; 1us; 16us; 1us; 16us; 2us; 17us; 18us; 1us; 18us; 7us; 19us; 136us; 137us; 138us; 139us; 140us; 141us; 7us; 19us; 136us; 137us; 138us; 139us; 140us; 141us; 48us; 19us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 1us; 20us; 2us; 21us; 22us; 1us; 22us; 1us; 23us; 1us; 24us; 1us; 25us; 1us; 25us; 2us; 25us; 27us; 1us; 27us; 1us; 28us; 2us; 29us; 30us; 1us; 29us; 1us; 30us; 1us; 30us; 3us; 31us; 46us; 49us; 1us; 31us; 1us; 32us; 1us; 32us; 1us; 32us; 3us; 32us; 946us; 947us; 1us; 33us; 1us; 33us; 3us; 33us; 946us; 947us; 2us; 34us; 35us; 1us; 35us; 2us; 36us; 37us; 1us; 36us; 1us; 38us; 1us; 38us; 1us; 38us; 6us; 39us; 53us; 54us; 55us; 56us; 58us; 6us; 39us; 53us; 54us; 55us; 56us; 58us; 3us; 39us; 53us; 54us; 1us; 39us; 1us; 40us; 1us; 41us; 3us; 42us; 43us; 44us; 2us; 42us; 43us; 1us; 42us; 1us; 42us; 1us; 43us; 3us; 44us; 46us; 49us; 1us; 44us; 1us; 45us; 2us; 46us; 49us; 2us; 48us; 50us; 2us; 48us; 50us; 1us; 48us; 1us; 49us; 1us; 49us; 1us; 49us; 1us; 51us; 1us; 52us; 5us; 53us; 54us; 55us; 56us; 58us; 5us; 53us; 54us; 55us; 56us; 58us; 2us; 53us; 54us; 2us; 53us; 54us; 1us; 53us; 1us; 54us; 1us; 55us; 1us; 56us; 1us; 57us; 3us; 57us; 946us; 947us; 1us; 58us; 1us; 58us; 1us; 58us; 1us; 58us; 1us; 58us; 1us; 58us; 1us; 58us; 1us; 58us; 1us; 58us; 1us; 58us; 2us; 60us; 61us; 48us; 60us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 1us; 61us; 48us; 61us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 1us; 61us; 1us; 61us; 3us; 62us; 63us; 144us; 1us; 62us; 1us; 62us; 1us; 63us; 1us; 63us; 1us; 63us; 1us; 63us; 1us; 64us; 1us; 64us; 1us; 64us; 1us; 65us; 1us; 65us; 2us; 66us; 67us; 1us; 66us; 1us; 66us; 2us; 68us; 69us; 1us; 68us; 1us; 68us; 1us; 69us; 3us; 70us; 79us; 80us; 1us; 70us; 1us; 70us; 1us; 70us; 1us; 70us; 1us; 70us; 1us; 70us; 1us; 71us; 1us; 71us; 1us; 72us; 1us; 73us; 1us; 74us; 1us; 74us; 1us; 74us; 1us; 75us; 3us; 76us; 77us; 78us; 2us; 76us; 77us; 1us; 76us; 1us; 77us; 1us; 78us; 1us; 78us; 2us; 79us; 80us; 2us; 79us; 80us; 1us; 79us; 1us; 80us; 2us; 81us; 82us; 2us; 81us; 82us; 1us; 81us; 1us; 82us; 2us; 83us; 84us; 2us; 83us; 84us; 1us; 83us; 1us; 84us; 1us; 85us; 1us; 86us; 1us; 88us; 1us; 88us; 1us; 88us; 7us; 89us; 90us; 91us; 92us; 93us; 94us; 95us; 12us; 89us; 90us; 91us; 92us; 93us; 94us; 95us; 266us; 267us; 268us; 269us; 270us; 7us; 89us; 90us; 91us; 92us; 93us; 94us; 95us; 12us; 89us; 90us; 91us; 92us; 93us; 94us; 95us; 266us; 267us; 268us; 269us; 270us; 1us; 89us; 1us; 89us; 1us; 89us; 1us; 89us; 1us; 89us; 1us; 89us; 1us; 89us; 1us; 89us; 1us; 89us; 1us; 90us; 4us; 90us; 870us; 871us; 872us; 1us; 91us; 4us; 91us; 870us; 871us; 872us; 1us; 92us; 1us; 92us; 3us; 93us; 94us; 174us; 1us; 93us; 1us; 93us; 1us; 94us; 1us; 94us; 1us; 95us; 1us; 95us; 1us; 95us; 1us; 97us; 1us; 97us; 2us; 98us; 99us; 2us; 98us; 99us; 1us; 98us; 1us; 99us; 2us; 100us; 101us; 1us; 101us; 1us; 101us; 1us; 102us; 2us; 103us; 104us; 1us; 104us; 1us; 105us; 1us; 105us; 1us; 106us; 1us; 106us; 1us; 106us; 2us; 108us; 109us; 1us; 108us; 1us; 109us; 1us; 109us; 2us; 110us; 133us; 1us; 110us; 2us; 111us; 112us; 1us; 112us; 2us; 113us; 114us; 1us; 113us; 1us; 115us; 1us; 115us; 1us; 115us; 11us; 116us; 124us; 125us; 126us; 128us; 136us; 137us; 138us; 139us; 140us; 141us; 10us; 116us; 124us; 125us; 126us; 136us; 137us; 138us; 139us; 140us; 141us; 2us; 116us; 141us; 1us; 116us; 1us; 117us; 3us; 118us; 119us; 120us; 2us; 118us; 119us; 1us; 118us; 1us; 118us; 1us; 119us; 2us; 120us; 133us; 1us; 120us; 1us; 121us; 1us; 122us; 10us; 124us; 125us; 126us; 128us; 136us; 137us; 138us; 139us; 140us; 141us; 9us; 124us; 125us; 126us; 136us; 137us; 138us; 139us; 140us; 141us; 50us; 124us; 125us; 126us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 2us; 124us; 125us; 1us; 124us; 1us; 127us; 1us; 128us; 4us; 129us; 130us; 131us; 132us; 1us; 129us; 2us; 130us; 132us; 1us; 130us; 1us; 133us; 2us; 133us; 150us; 2us; 133us; 155us; 1us; 133us; 1us; 133us; 1us; 134us; 1us; 135us; 6us; 136us; 137us; 138us; 139us; 140us; 141us; 6us; 136us; 137us; 138us; 139us; 140us; 141us; 1us; 136us; 3us; 136us; 521us; 522us; 1us; 137us; 5us; 137us; 523us; 524us; 525us; 526us; 1us; 138us; 1us; 139us; 1us; 139us; 1us; 139us; 1us; 140us; 1us; 141us; 1us; 141us; 1us; 141us; 2us; 142us; 157us; 1us; 142us; 1us; 143us; 3us; 144us; 946us; 947us; 1us; 144us; 3us; 145us; 946us; 947us; 5us; 146us; 147us; 148us; 149us; 150us; 2us; 146us; 147us; 1us; 146us; 1us; 147us; 2us; 148us; 149us; 1us; 148us; 1us; 149us; 1us; 150us; 1us; 151us; 3us; 152us; 946us; 947us; 3us; 153us; 154us; 155us; 2us; 153us; 154us; 1us; 153us; 1us; 154us; 1us; 155us; 1us; 156us; 1us; 156us; 1us; 156us; 1us; 157us; 2us; 159us; 160us; 1us; 160us; 4us; 161us; 162us; 163us; 164us; 3us; 161us; 163us; 166us; 2us; 161us; 163us; 1us; 161us; 1us; 161us; 2us; 162us; 519us; 1us; 162us; 1us; 162us; 1us; 163us; 1us; 164us; 1us; 165us; 2us; 166us; 1013us; 1us; 166us; 3us; 167us; 946us; 947us; 1us; 167us; 1us; 167us; 2us; 168us; 169us; 3us; 168us; 946us; 947us; 1us; 168us; 1us; 168us; 1us; 169us; 3us; 169us; 946us; 947us; 1us; 169us; 1us; 169us; 1us; 169us; 1us; 170us; 1us; 170us; 1us; 171us; 1us; 171us; 2us; 172us; 945us; 1us; 172us; 1us; 173us; 1us; 173us; 4us; 174us; 215us; 221us; 224us; 1us; 174us; 1us; 175us; 1us; 176us; 1us; 177us; 1us; 178us; 1us; 178us; 1us; 178us; 1us; 179us; 1us; 179us; 1us; 179us; 4us; 181us; 182us; 183us; 184us; 1us; 182us; 1us; 182us; 1us; 183us; 1us; 184us; 1us; 184us; 1us; 184us; 1us; 184us; 1us; 184us; 1us; 184us; 1us; 184us; 4us; 185us; 186us; 195us; 196us; 2us; 185us; 186us; 2us; 185us; 186us; 2us; 185us; 186us; 2us; 185us; 186us; 1us; 185us; 1us; 185us; 1us; 186us; 1us; 187us; 1us; 187us; 1us; 188us; 1us; 189us; 1us; 190us; 1us; 190us; 1us; 190us; 1us; 191us; 3us; 192us; 193us; 194us; 2us; 192us; 193us; 1us; 192us; 1us; 193us; 2us; 194us; 201us; 1us; 194us; 2us; 195us; 196us; 2us; 195us; 196us; 1us; 195us; 1us; 196us; 2us; 197us; 198us; 2us; 197us; 198us; 1us; 197us; 1us; 198us; 1us; 199us; 1us; 200us; 1us; 201us; 1us; 201us; 1us; 203us; 1us; 203us; 1us; 203us; 1us; 204us; 1us; 204us; 2us; 205us; 206us; 2us; 205us; 206us; 1us; 205us; 1us; 206us; 2us; 207us; 208us; 1us; 208us; 1us; 208us; 1us; 209us; 1us; 209us; 1us; 209us; 1us; 209us; 1us; 209us; 1us; 209us; 2us; 210us; 211us; 2us; 210us; 211us; 2us; 210us; 211us; 1us; 210us; 1us; 210us; 1us; 211us; 2us; 212us; 213us; 1us; 213us; 11us; 214us; 215us; 216us; 217us; 218us; 219us; 220us; 221us; 222us; 223us; 224us; 16us; 214us; 215us; 216us; 217us; 218us; 219us; 220us; 221us; 222us; 223us; 224us; 266us; 267us; 268us; 269us; 270us; 11us; 214us; 215us; 216us; 217us; 218us; 219us; 220us; 221us; 222us; 223us; 224us; 16us; 214us; 215us; 216us; 217us; 218us; 219us; 220us; 221us; 222us; 223us; 224us; 266us; 267us; 268us; 269us; 270us; 1us; 214us; 1us; 215us; 2us; 216us; 222us; 1us; 216us; 1us; 216us; 1us; 217us; 4us; 217us; 870us; 871us; 872us; 1us; 217us; 1us; 218us; 1us; 218us; 1us; 218us; 1us; 218us; 1us; 218us; 1us; 218us; 1us; 218us; 1us; 218us; 1us; 219us; 1us; 220us; 1us; 220us; 1us; 221us; 1us; 221us; 1us; 222us; 1us; 222us; 1us; 223us; 1us; 223us; 1us; 223us; 1us; 223us; 1us; 223us; 1us; 223us; 1us; 224us; 1us; 224us; 1us; 225us; 1us; 225us; 1us; 225us; 1us; 225us; 1us; 225us; 1us; 225us; 1us; 226us; 1us; 226us; 1us; 226us; 1us; 226us; 1us; 226us; 1us; 226us; 1us; 226us; 1us; 226us; 1us; 228us; 1us; 228us; 2us; 229us; 468us; 1us; 229us; 1us; 229us; 1us; 230us; 1us; 230us; 1us; 230us; 1us; 231us; 2us; 232us; 233us; 1us; 232us; 1us; 232us; 1us; 232us; 1us; 233us; 1us; 235us; 1us; 236us; 1us; 237us; 1us; 238us; 1us; 239us; 1us; 241us; 1us; 241us; 1us; 241us; 1us; 243us; 1us; 243us; 1us; 243us; 3us; 245us; 246us; 247us; 2us; 245us; 246us; 1us; 245us; 1us; 246us; 1us; 246us; 1us; 246us; 1us; 247us; 1us; 248us; 1us; 250us; 1us; 250us; 1us; 251us; 2us; 253us; 254us; 1us; 253us; 1us; 254us; 2us; 255us; 256us; 2us; 255us; 256us; 1us; 255us; 1us; 256us; 1us; 257us; 2us; 258us; 259us; 2us; 258us; 259us; 1us; 258us; 4us; 260us; 261us; 262us; 263us; 5us; 260us; 261us; 262us; 263us; 383us; 3us; 260us; 261us; 262us; 1us; 260us; 1us; 260us; 1us; 261us; 1us; 261us; 1us; 262us; 1us; 263us; 1us; 263us; 1us; 263us; 1us; 264us; 1us; 265us; 5us; 266us; 267us; 268us; 269us; 270us; 5us; 266us; 267us; 268us; 269us; 270us; 4us; 266us; 866us; 946us; 947us; 1us; 266us; 1us; 266us; 1us; 266us; 1us; 267us; 1us; 268us; 1us; 269us; 5us; 270us; 873us; 894us; 895us; 906us; 1us; 270us; 1us; 270us; 3us; 271us; 272us; 273us; 2us; 271us; 272us; 1us; 271us; 1us; 272us; 1us; 273us; 1us; 273us; 6us; 274us; 896us; 897us; 898us; 899us; 900us; 1us; 274us; 1us; 275us; 3us; 276us; 277us; 278us; 2us; 276us; 277us; 1us; 276us; 1us; 277us; 1us; 278us; 1us; 278us; 2us; 279us; 891us; 2us; 279us; 414us; 1us; 279us; 1us; 280us; 1us; 281us; 1us; 282us; 1us; 283us; 1us; 284us; 3us; 285us; 286us; 287us; 4us; 285us; 287us; 946us; 947us; 1us; 286us; 3us; 286us; 946us; 947us; 1us; 287us; 1us; 288us; 1us; 289us; 2us; 289us; 290us; 1us; 289us; 2us; 290us; 293us; 3us; 290us; 294us; 295us; 1us; 290us; 2us; 290us; 294us; 1us; 290us; 1us; 291us; 1us; 292us; 1us; 292us; 1us; 293us; 1us; 293us; 1us; 293us; 1us; 293us; 1us; 294us; 1us; 297us; 1us; 297us; 1us; 297us; 1us; 297us; 1us; 297us; 1us; 298us; 2us; 300us; 451us; 1us; 303us; 2us; 303us; 304us; 2us; 304us; 839us; 2us; 304us; 841us; 1us; 304us; 1us; 304us; 1us; 305us; 1us; 306us; 1us; 306us; 1us; 306us; 1us; 306us; 8us; 307us; 308us; 309us; 310us; 311us; 313us; 314us; 315us; 1us; 307us; 1us; 307us; 7us; 308us; 309us; 310us; 311us; 313us; 314us; 315us; 1us; 308us; 3us; 309us; 314us; 315us; 1us; 309us; 1us; 310us; 1us; 311us; 1us; 311us; 1us; 311us; 1us; 312us; 2us; 312us; 316us; 1us; 312us; 1us; 312us; 1us; 312us; 1us; 312us; 1us; 312us; 1us; 313us; 1us; 313us; 1us; 314us; 1us; 316us; 4us; 316us; 870us; 871us; 872us; 4us; 317us; 870us; 871us; 872us; 1us; 318us; 1us; 318us; 1us; 319us; 1us; 319us; 1us; 319us; 2us; 320us; 333us; 1us; 321us; 2us; 322us; 323us; 1us; 322us; 1us; 322us; 4us; 324us; 325us; 326us; 327us; 4us; 324us; 325us; 326us; 327us; 4us; 324us; 325us; 326us; 327us; 1us; 324us; 1us; 325us; 1us; 325us; 1us; 325us; 1us; 326us; 1us; 326us; 1us; 326us; 1us; 327us; 1us; 327us; 1us; 327us; 1us; 328us; 6us; 329us; 330us; 948us; 949us; 951us; 952us; 1us; 329us; 1us; 329us; 1us; 330us; 1us; 330us; 1us; 330us; 5us; 331us; 332us; 334us; 335us; 945us; 1us; 331us; 2us; 332us; 335us; 2us; 332us; 335us; 2us; 332us; 335us; 1us; 333us; 1us; 334us; 1us; 334us; 2us; 336us; 337us; 1us; 336us; 1us; 336us; 2us; 338us; 945us; 1us; 338us; 4us; 338us; 870us; 871us; 872us; 4us; 339us; 870us; 871us; 872us; 1us; 340us; 1us; 341us; 2us; 342us; 343us; 2us; 342us; 1013us; 1us; 342us; 1us; 343us; 1us; 344us; 1us; 344us; 1us; 345us; 1us; 345us; 1us; 345us; 1us; 345us; 1us; 345us; 1us; 346us; 1us; 346us; 1us; 347us; 1us; 348us; 1us; 348us; 1us; 348us; 1us; 348us; 1us; 348us; 2us; 349us; 350us; 1us; 350us; 1us; 350us; 1us; 352us; 3us; 352us; 946us; 947us; 1us; 353us; 3us; 353us; 946us; 947us; 1us; 354us; 1us; 354us; 1us; 354us; 1us; 355us; 1us; 356us; 1us; 356us; 1us; 357us; 1us; 357us; 1us; 357us; 1us; 357us; 1us; 358us; 1us; 358us; 1us; 358us; 1us; 359us; 1us; 360us; 1us; 361us; 1us; 362us; 1us; 363us; 1us; 364us; 1us; 365us; 1us; 365us; 1us; 365us; 1us; 365us; 1us; 365us; 1us; 365us; 1us; 365us; 1us; 365us; 2us; 366us; 369us; 2us; 367us; 370us; 1us; 369us; 1us; 369us; 1us; 370us; 1us; 370us; 2us; 371us; 372us; 5us; 371us; 372us; 374us; 375us; 376us; 1us; 372us; 3us; 373us; 946us; 947us; 4us; 374us; 375us; 376us; 378us; 1us; 374us; 1us; 374us; 1us; 374us; 1us; 375us; 1us; 376us; 1us; 377us; 2us; 377us; 379us; 1us; 377us; 2us; 378us; 379us; 1us; 380us; 1us; 380us; 1us; 381us; 1us; 381us; 1us; 381us; 1us; 383us; 1us; 383us; 1us; 384us; 3us; 385us; 386us; 387us; 3us; 385us; 386us; 387us; 3us; 385us; 386us; 387us; 3us; 385us; 386us; 387us; 2us; 385us; 386us; 1us; 385us; 1us; 386us; 1us; 387us; 2us; 388us; 389us; 2us; 388us; 389us; 1us; 388us; 1us; 389us; 1us; 390us; 1us; 391us; 2us; 391us; 392us; 1us; 392us; 1us; 394us; 2us; 394us; 395us; 1us; 394us; 1us; 394us; 1us; 395us; 1us; 395us; 1us; 396us; 2us; 397us; 398us; 1us; 397us; 1us; 397us; 1us; 398us; 1us; 399us; 1us; 400us; 1us; 401us; 1us; 402us; 1us; 403us; 1us; 404us; 1us; 405us; 1us; 406us; 1us; 407us; 1us; 408us; 1us; 409us; 1us; 410us; 1us; 411us; 2us; 411us; 464us; 1us; 412us; 1us; 413us; 1us; 414us; 1us; 415us; 2us; 416us; 418us; 1us; 416us; 1us; 416us; 2us; 417us; 419us; 2us; 417us; 419us; 1us; 417us; 1us; 417us; 1us; 420us; 1us; 421us; 1us; 421us; 1us; 421us; 1us; 422us; 1us; 423us; 1us; 423us; 2us; 424us; 425us; 1us; 425us; 1us; 425us; 6us; 426us; 438us; 439us; 440us; 445us; 447us; 1us; 427us; 1us; 428us; 1us; 428us; 2us; 429us; 430us; 3us; 429us; 431us; 432us; 1us; 429us; 1us; 429us; 1us; 430us; 1us; 432us; 1us; 432us; 5us; 433us; 434us; 435us; 436us; 437us; 2us; 433us; 435us; 1us; 433us; 1us; 434us; 1us; 435us; 2us; 436us; 519us; 1us; 436us; 1us; 437us; 6us; 438us; 439us; 439us; 440us; 445us; 447us; 6us; 438us; 439us; 440us; 440us; 445us; 447us; 6us; 438us; 439us; 440us; 444us; 445us; 447us; 6us; 438us; 439us; 440us; 445us; 445us; 447us; 6us; 438us; 439us; 440us; 445us; 446us; 447us; 6us; 438us; 439us; 440us; 445us; 447us; 447us; 6us; 438us; 439us; 440us; 445us; 447us; 568us; 7us; 438us; 439us; 440us; 445us; 447us; 569us; 570us; 1us; 438us; 1us; 438us; 1us; 439us; 1us; 440us; 2us; 441us; 444us; 2us; 442us; 446us; 1us; 443us; 1us; 444us; 1us; 445us; 1us; 446us; 1us; 447us; 2us; 448us; 449us; 1us; 448us; 2us; 449us; 1013us; 1us; 449us; 1us; 450us; 4us; 450us; 984us; 986us; 987us; 1us; 450us; 7us; 450us; 485us; 486us; 489us; 491us; 494us; 496us; 5us; 451us; 452us; 453us; 454us; 470us; 3us; 452us; 453us; 454us; 1us; 452us; 1us; 453us; 1us; 453us; 1us; 454us; 1us; 454us; 1us; 455us; 1us; 455us; 1us; 456us; 9us; 457us; 475us; 476us; 477us; 478us; 948us; 949us; 951us; 952us; 1us; 457us; 1us; 457us; 1us; 458us; 4us; 459us; 460us; 461us; 462us; 1us; 459us; 1us; 460us; 1us; 460us; 1us; 461us; 1us; 461us; 1us; 463us; 1us; 464us; 1us; 464us; 1us; 465us; 1us; 465us; 1us; 465us; 1us; 466us; 1us; 466us; 1us; 466us; 1us; 467us; 1us; 467us; 1us; 467us; 1us; 469us; 2us; 469us; 969us; 1us; 469us; 1us; 470us; 1us; 471us; 1us; 472us; 1us; 473us; 1us; 474us; 8us; 475us; 476us; 477us; 478us; 948us; 949us; 951us; 952us; 2us; 475us; 476us; 1us; 475us; 1us; 476us; 3us; 477us; 519us; 949us; 2us; 477us; 949us; 1us; 478us; 4us; 479us; 480us; 481us; 482us; 4us; 479us; 480us; 481us; 482us; 4us; 479us; 480us; 487us; 493us; 1us; 479us; 1us; 480us; 2us; 481us; 519us; 1us; 481us; 1us; 482us; 7us; 483us; 485us; 486us; 489us; 491us; 494us; 496us; 7us; 485us; 486us; 486us; 489us; 491us; 494us; 496us; 7us; 485us; 486us; 489us; 490us; 491us; 494us; 496us; 7us; 485us; 486us; 489us; 491us; 491us; 494us; 496us; 7us; 485us; 486us; 489us; 491us; 493us; 494us; 496us; 7us; 485us; 486us; 489us; 491us; 494us; 494us; 496us; 7us; 485us; 486us; 489us; 491us; 494us; 495us; 496us; 6us; 485us; 486us; 489us; 491us; 494us; 496us; 7us; 485us; 486us; 489us; 491us; 494us; 496us; 496us; 7us; 485us; 486us; 489us; 491us; 494us; 496us; 499us; 8us; 485us; 486us; 489us; 491us; 494us; 496us; 501us; 502us; 14us; 485us; 486us; 489us; 491us; 494us; 496us; 564us; 565us; 763us; 764us; 765us; 766us; 767us; 768us; 7us; 485us; 486us; 489us; 491us; 494us; 496us; 633us; 1us; 485us; 1us; 485us; 1us; 486us; 2us; 487us; 493us; 2us; 488us; 495us; 1us; 489us; 1us; 489us; 1us; 490us; 1us; 491us; 1us; 492us; 1us; 493us; 1us; 494us; 1us; 495us; 1us; 496us; 2us; 497us; 498us; 1us; 497us; 2us; 498us; 1013us; 1us; 498us; 3us; 499us; 946us; 947us; 1us; 499us; 1us; 501us; 2us; 502us; 1013us; 1us; 502us; 2us; 503us; 504us; 2us; 503us; 504us; 1us; 503us; 1us; 504us; 1us; 505us; 1us; 506us; 1us; 506us; 1us; 506us; 48us; 507us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 2us; 508us; 509us; 1us; 508us; 2us; 510us; 511us; 1us; 510us; 1us; 510us; 1us; 512us; 1us; 512us; 52us; 513us; 514us; 515us; 516us; 517us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 53us; 513us; 514us; 515us; 516us; 517us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 707us; 55us; 513us; 514us; 515us; 516us; 517us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 759us; 760us; 761us; 2us; 513us; 514us; 1us; 513us; 1us; 516us; 1us; 516us; 1us; 517us; 1us; 517us; 1us; 517us; 1us; 517us; 5us; 518us; 523us; 524us; 525us; 526us; 1us; 519us; 2us; 519us; 551us; 2us; 519us; 554us; 2us; 519us; 559us; 2us; 519us; 562us; 2us; 519us; 564us; 2us; 519us; 684us; 2us; 519us; 698us; 2us; 519us; 725us; 2us; 519us; 729us; 2us; 519us; 734us; 3us; 519us; 734us; 949us; 2us; 519us; 749us; 2us; 519us; 825us; 1us; 520us; 2us; 521us; 522us; 2us; 521us; 522us; 1us; 521us; 1us; 522us; 4us; 523us; 524us; 525us; 526us; 1us; 523us; 1us; 524us; 2us; 525us; 526us; 1us; 525us; 1us; 526us; 1us; 527us; 1us; 528us; 1us; 529us; 2us; 530us; 531us; 2us; 530us; 531us; 1us; 530us; 1us; 531us; 2us; 532us; 533us; 2us; 532us; 533us; 1us; 532us; 1us; 533us; 3us; 534us; 535us; 536us; 3us; 534us; 535us; 536us; 1us; 534us; 1us; 535us; 1us; 536us; 1us; 536us; 3us; 537us; 538us; 539us; 49us; 537us; 538us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 1us; 537us; 1us; 538us; 1us; 539us; 1us; 540us; 48us; 540us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 2us; 541us; 542us; 48us; 541us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 1us; 543us; 1us; 543us; 2us; 544us; 545us; 1us; 544us; 6us; 546us; 547us; 548us; 549us; 550us; 551us; 51us; 546us; 547us; 548us; 549us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 3us; 546us; 547us; 548us; 2us; 546us; 547us; 1us; 546us; 1us; 547us; 1us; 548us; 1us; 548us; 1us; 549us; 1us; 550us; 1us; 551us; 15us; 552us; 553us; 554us; 555us; 556us; 557us; 558us; 559us; 560us; 561us; 562us; 563us; 564us; 565us; 573us; 6us; 552us; 553us; 554us; 555us; 556us; 573us; 4us; 552us; 553us; 554us; 555us; 2us; 552us; 553us; 1us; 552us; 1us; 553us; 1us; 554us; 1us; 555us; 1us; 556us; 5us; 557us; 558us; 559us; 560us; 561us; 4us; 557us; 558us; 559us; 560us; 2us; 557us; 558us; 1us; 557us; 1us; 558us; 1us; 559us; 1us; 560us; 1us; 561us; 1us; 562us; 1us; 562us; 1us; 562us; 1us; 563us; 1us; 564us; 2us; 565us; 1066us; 1us; 566us; 48us; 566us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 1us; 567us; 48us; 567us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 1us; 568us; 1us; 568us; 1us; 568us; 1us; 568us; 1us; 568us; 1us; 568us; 2us; 569us; 570us; 2us; 569us; 570us; 2us; 569us; 570us; 2us; 569us; 570us; 2us; 569us; 570us; 1us; 569us; 1us; 570us; 1us; 571us; 1us; 571us; 1us; 571us; 1us; 571us; 1us; 571us; 1us; 572us; 1us; 572us; 1us; 572us; 1us; 573us; 1us; 573us; 1us; 574us; 48us; 574us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 1us; 575us; 1us; 575us; 48us; 576us; 577us; 578us; 579us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 639us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 643us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 647us; 654us; 655us; 49us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 650us; 651us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 652us; 654us; 655us; 47us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 655us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 707us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 708us; 51us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 759us; 760us; 761us; 763us; 51us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 759us; 760us; 761us; 767us; 49us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 759us; 760us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 760us; 48us; 576us; 577us; 578us; 579us; 582us; 583us; 584us; 585us; 586us; 587us; 588us; 589us; 590us; 591us; 592us; 593us; 594us; 595us; 596us; 597us; 598us; 599us; 600us; 601us; 602us; 603us; 604us; 605us; 606us; 607us; 608us; 609us; 610us; 611us; 612us; 613us; 614us; 615us; 616us; 617us; 618us; 619us; 620us; 621us; 622us; 654us; 655us; 767us; 1us; 576us; 1us; 576us; 1us; 577us; 1us; 577us; 1us; 578us; 1us; 578us; 1us; 579us; 2us; 580us; 623us; 1us; 580us; 1us; 580us; 3us; 581us; 652us; 653us; 5us; 581us; 652us; 653us; 686us; 687us; 2us; 582us; 603us; 2us; 583us; 604us; 2us; 584us; 605us; 2us; 585us; 606us; 2us; 586us; 607us; 2us; 587us; 608us; 2us; 588us; 609us; 2us; 589us; 610us; 2us; 590us; 611us; 2us; 591us; 612us; 3us; 592us; 593us; 613us; 1us; 593us; 2us; 594us; 614us; 2us; 595us; 615us; 2us; 596us; 616us; 2us; 597us; 617us; 2us; 598us; 618us; 2us; 599us; 619us; 2us; 600us; 620us; 2us; 601us; 621us; 2us; 602us; 622us; 1us; 603us; 1us; 604us; 1us; 605us; 1us; 606us; 1us; 607us; 1us; 608us; 1us; 609us; 1us; 610us; 1us; 611us; 1us; 612us; 1us; 613us; 1us; 614us; 1us; 615us; 1us; 616us; 1us; 617us; 1us; 618us; 1us; 619us; 1us; 620us; 1us; 621us; 1us; 622us; 1us; 624us; 1us; 625us; 1us; 625us; 1us; 625us; 1us; 626us; 1us; 626us; 2us; 627us; 628us; 2us; 627us; 628us; 1us; 627us; 1us; 628us; 1us; 629us; 2us; 630us; 631us; 1us; 630us; 1us; 631us; 1us; 632us; 1us; 633us; 5us; 634us; 635us; 636us; 637us; 638us; 4us; 634us; 635us; 636us; 637us; 2us; 635us; 636us; 1us; 635us; 1us; 636us; 1us; 637us; 1us; 638us; 1us; 639us; 1us; 641us; 1us; 641us; 1us; 642us; 1us; 642us; 1us; 643us; 2us; 644us; 645us; 2us; 644us; 645us; 2us; 644us; 645us; 1us; 644us; 1us; 645us; 1us; 647us; 2us; 648us; 649us; 2us; 648us; 649us; 2us; 648us; 649us; 1us; 648us; 1us; 649us; 2us; 650us; 651us; 1us; 650us; 1us; 651us; 2us; 652us; 653us; 1us; 653us; 2us; 654us; 655us; 1us; 654us; 1us; 656us; 2us; 656us; 963us; 1us; 656us; 1us; 657us; 2us; 657us; 959us; 1us; 657us; 1us; 658us; 2us; 658us; 962us; 1us; 658us; 1us; 659us; 2us; 659us; 975us; 1us; 659us; 1us; 660us; 2us; 660us; 970us; 1us; 660us; 1us; 661us; 2us; 661us; 971us; 1us; 661us; 3us; 662us; 663us; 664us; 7us; 662us; 663us; 664us; 807us; 808us; 809us; 810us; 2us; 662us; 663us; 6us; 662us; 663us; 807us; 808us; 809us; 810us; 2us; 662us; 663us; 4us; 662us; 663us; 808us; 809us; 1us; 662us; 3us; 662us; 808us; 809us; 1us; 663us; 1us; 664us; 1us; 665us; 1us; 665us; 1us; 666us; 1us; 666us; 2us; 667us; 668us; 6us; 667us; 668us; 783us; 787us; 788us; 789us; 5us; 668us; 783us; 787us; 788us; 789us; 1us; 668us; 6us; 669us; 672us; 673us; 674us; 676us; 679us; 1us; 670us; 6us; 670us; 672us; 673us; 674us; 676us; 679us; 6us; 671us; 672us; 673us; 674us; 676us; 679us; 6us; 672us; 672us; 673us; 674us; 676us; 679us; 6us; 672us; 673us; 673us; 674us; 676us; 679us; 6us; 672us; 673us; 674us; 675us; 676us; 679us; 6us; 672us; 673us; 674us; 676us; 679us; 903us; 1us; 672us; 1us; 673us; 1us; 674us; 1us; 674us; 1us; 675us; 2us; 675us; 953us; 1us; 676us; 1us; 676us; 1us; 677us; 1us; 677us; 1us; 677us; 1us; 678us; 2us; 678us; 969us; 1us; 678us; 1us; 679us; 1us; 679us; 1us; 680us; 1us; 681us; 4us; 682us; 683us; 684us; 685us; 2us; 682us; 683us; 1us; 682us; 1us; 683us; 1us; 684us; 1us; 685us; 3us; 686us; 687us; 821us; 2us; 686us; 687us; 1us; 686us; 1us; 687us; 1us; 688us; 1us; 689us; 1us; 690us; 1us; 692us; 6us; 693us; 694us; 948us; 949us; 951us; 952us; 1us; 693us; 1us; 693us; 1us; 693us; 1us; 693us; 1us; 694us; 1us; 694us; 5us; 695us; 696us; 697us; 698us; 699us; 1us; 695us; 1us; 695us; 2us; 696us; 697us; 1us; 696us; 1us; 697us; 1us; 698us; 1us; 699us; 2us; 700us; 701us; 1us; 700us; 1us; 700us; 3us; 702us; 703us; 706us; 2us; 702us; 703us; 1us; 702us; 1us; 704us; 1us; 704us; 1us; 705us; 1us; 708us; 1us; 709us; 1us; 710us; 1us; 711us; 1us; 712us; 1us; 713us; 1us; 714us; 1us; 715us; 1us; 716us; 1us; 717us; 1us; 718us; 4us; 719us; 720us; 721us; 722us; 2us; 719us; 720us; 1us; 719us; 1us; 720us; 1us; 721us; 1us; 721us; 1us; 722us; 4us; 723us; 724us; 725us; 726us; 5us; 723us; 724us; 725us; 726us; 978us; 2us; 723us; 724us; 1us; 723us; 1us; 724us; 1us; 725us; 1us; 726us; 4us; 727us; 728us; 729us; 730us; 2us; 727us; 728us; 1us; 727us; 1us; 728us; 1us; 729us; 1us; 730us; 9us; 731us; 732us; 733us; 734us; 735us; 736us; 737us; 738us; 739us; 14us; 731us; 732us; 733us; 734us; 735us; 736us; 737us; 738us; 739us; 744us; 948us; 949us; 951us; 952us; 13us; 731us; 732us; 733us; 734us; 735us; 736us; 737us; 738us; 739us; 948us; 949us; 951us; 952us; 1us; 731us; 2us; 732us; 733us; 1us; 732us; 1us; 733us; 1us; 734us; 2us; 734us; 949us; 1us; 735us; 1us; 736us; 1us; 737us; 1us; 738us; 1us; 739us; 1us; 740us; 1us; 740us; 1us; 740us; 1us; 740us; 1us; 740us; 1us; 740us; 1us; 741us; 1us; 742us; 1us; 743us; 2us; 743us; 746us; 2us; 744us; 745us; 1us; 744us; 1us; 745us; 1us; 745us; 5us; 747us; 748us; 749us; 750us; 751us; 2us; 747us; 748us; 1us; 747us; 1us; 748us; 1us; 749us; 1us; 750us; 1us; 751us; 1us; 752us; 1us; 753us; 1us; 754us; 1us; 755us; 1us; 757us; 1us; 758us; 3us; 759us; 760us; 761us; 1us; 760us; 1us; 761us; 1us; 762us; 1us; 762us; 3us; 763us; 764us; 765us; 1us; 764us; 1us; 765us; 1us; 766us; 2us; 767us; 768us; 1us; 767us; 1us; 768us; 1us; 769us; 1us; 770us; 1us; 771us; 1us; 771us; 1us; 771us; 2us; 771us; 772us; 1us; 771us; 1us; 771us; 1us; 772us; 1us; 775us; 1us; 777us; 1us; 777us; 1us; 777us; 1us; 777us; 2us; 779us; 780us; 1us; 779us; 5us; 780us; 873us; 894us; 895us; 906us; 1us; 780us; 1us; 781us; 1us; 781us; 1us; 781us; 1us; 781us; 2us; 781us; 798us; 1us; 781us; 1us; 782us; 1us; 783us; 1us; 783us; 2us; 783us; 798us; 1us; 783us; 3us; 784us; 785us; 786us; 2us; 785us; 786us; 1us; 786us; 2us; 786us; 798us; 1us; 786us; 1us; 787us; 1us; 787us; 2us; 787us; 798us; 1us; 787us; 2us; 788us; 789us; 1us; 788us; 1us; 788us; 1us; 789us; 2us; 789us; 798us; 1us; 789us; 1us; 789us; 1us; 790us; 2us; 790us; 798us; 2us; 792us; 795us; 2us; 793us; 794us; 1us; 794us; 1us; 795us; 3us; 796us; 946us; 947us; 1us; 797us; 1us; 798us; 5us; 800us; 801us; 802us; 803us; 804us; 3us; 800us; 801us; 802us; 1us; 800us; 1us; 802us; 1us; 804us; 2us; 805us; 806us; 1us; 805us; 1us; 805us; 1us; 805us; 1us; 806us; 1us; 806us; 1us; 808us; 1us; 811us; 2us; 813us; 815us; 1us; 813us; 1us; 814us; 1us; 814us; 1us; 814us; 1us; 815us; 1us; 815us; 1us; 816us; 1us; 816us; 1us; 818us; 1us; 818us; 1us; 819us; 1us; 819us; 1us; 820us; 4us; 820us; 870us; 871us; 872us; 1us; 820us; 1us; 820us; 1us; 820us; 1us; 821us; 1us; 821us; 1us; 822us; 5us; 823us; 824us; 825us; 826us; 827us; 2us; 823us; 824us; 1us; 823us; 1us; 824us; 1us; 825us; 1us; 826us; 1us; 827us; 2us; 828us; 829us; 2us; 828us; 829us; 2us; 828us; 829us; 1us; 828us; 1us; 829us; 6us; 830us; 831us; 832us; 833us; 834us; 835us; 5us; 830us; 831us; 832us; 833us; 834us; 4us; 830us; 831us; 832us; 833us; 2us; 830us; 831us; 1us; 830us; 1us; 831us; 1us; 832us; 1us; 832us; 1us; 833us; 1us; 834us; 1us; 834us; 1us; 835us; 1us; 835us; 1us; 836us; 1us; 836us; 1us; 837us; 1us; 837us; 1us; 837us; 2us; 838us; 839us; 1us; 839us; 2us; 840us; 841us; 1us; 841us; 1us; 843us; 1us; 843us; 2us; 844us; 845us; 1us; 844us; 1us; 844us; 2us; 846us; 847us; 1us; 846us; 1us; 846us; 2us; 848us; 849us; 1us; 848us; 1us; 848us; 3us; 850us; 851us; 852us; 5us; 850us; 852us; 870us; 871us; 872us; 1us; 850us; 4us; 850us; 870us; 871us; 872us; 1us; 851us; 1us; 851us; 1us; 851us; 4us; 851us; 870us; 871us; 872us; 5us; 853us; 855us; 870us; 871us; 872us; 1us; 853us; 4us; 853us; 870us; 871us; 872us; 1us; 854us; 1us; 854us; 1us; 854us; 4us; 854us; 870us; 871us; 872us; 2us; 856us; 857us; 1us; 856us; 1us; 856us; 1us; 858us; 1us; 858us; 6us; 859us; 861us; 862us; 870us; 871us; 872us; 1us; 859us; 1us; 859us; 1us; 860us; 1us; 860us; 1us; 861us; 1us; 861us; 6us; 863us; 864us; 865us; 870us; 871us; 872us; 1us; 863us; 1us; 863us; 1us; 864us; 1us; 864us; 3us; 866us; 946us; 947us; 1us; 867us; 2us; 867us; 875us; 2us; 868us; 869us; 4us; 868us; 869us; 907us; 910us; 1us; 868us; 1us; 868us; 7us; 870us; 871us; 872us; 896us; 897us; 898us; 899us; 1us; 870us; 1us; 871us; 1us; 871us; 1us; 872us; 4us; 873us; 894us; 895us; 906us; 1us; 873us; 1us; 873us; 1us; 873us; 1us; 874us; 1us; 875us; 1us; 875us; 2us; 876us; 893us; 1us; 876us; 1us; 876us; 4us; 877us; 878us; 879us; 880us; 1us; 877us; 3us; 878us; 879us; 880us; 1us; 878us; 2us; 879us; 880us; 1us; 879us; 1us; 880us; 1us; 880us; 1us; 881us; 1us; 881us; 1us; 881us; 3us; 881us; 882us; 883us; 4us; 882us; 883us; 913us; 914us; 2us; 882us; 883us; 1us; 882us; 1us; 883us; 2us; 885us; 886us; 1us; 886us; 1us; 886us; 4us; 887us; 894us; 895us; 906us; 1us; 887us; 1us; 887us; 1us; 887us; 3us; 888us; 908us; 909us; 3us; 889us; 908us; 909us; 1us; 890us; 1us; 891us; 3us; 891us; 908us; 909us; 1us; 892us; 1us; 893us; 3us; 894us; 895us; 906us; 2us; 894us; 895us; 5us; 894us; 895us; 920us; 921us; 922us; 1us; 894us; 1us; 895us; 5us; 896us; 897us; 898us; 899us; 900us; 5us; 896us; 897us; 898us; 899us; 900us; 3us; 896us; 897us; 898us; 2us; 896us; 897us; 1us; 896us; 1us; 897us; 1us; 898us; 1us; 899us; 1us; 900us; 1us; 901us; 1us; 902us; 1us; 903us; 1us; 904us; 1us; 905us; 1us; 906us; 1us; 906us; 1us; 907us; 2us; 908us; 909us; 4us; 908us; 909us; 946us; 947us; 1us; 909us; 1us; 910us; 1us; 910us; 1us; 911us; 1us; 912us; 1us; 912us; 7us; 913us; 914us; 915us; 916us; 917us; 918us; 919us; 3us; 913us; 914us; 915us; 3us; 913us; 914us; 915us; 2us; 913us; 914us; 1us; 913us; 1us; 914us; 1us; 915us; 3us; 916us; 917us; 923us; 1us; 916us; 1us; 917us; 1us; 918us; 1us; 919us; 3us; 920us; 921us; 922us; 2us; 921us; 922us; 1us; 921us; 1us; 923us; 1us; 924us; 2us; 926us; 927us; 3us; 926us; 937us; 938us; 1us; 926us; 1us; 927us; 1us; 927us; 3us; 928us; 946us; 947us; 1us; 929us; 1us; 930us; 3us; 930us; 937us; 938us; 1us; 930us; 2us; 931us; 932us; 1us; 932us; 1us; 932us; 1us; 933us; 2us; 934us; 935us; 1us; 935us; 1us; 936us; 3us; 937us; 937us; 938us; 3us; 937us; 938us; 938us; 3us; 937us; 938us; 939us; 1us; 937us; 1us; 938us; 1us; 939us; 1us; 940us; 1us; 940us; 1us; 941us; 1us; 942us; 2us; 942us; 956us; 1us; 942us; 1us; 943us; 1us; 944us; 1us; 945us; 2us; 946us; 947us; 1us; 946us; 1us; 947us; 4us; 948us; 949us; 951us; 952us; 1us; 948us; 1us; 948us; 1us; 949us; 1us; 949us; 1us; 950us; 3us; 951us; 952us; 981us; 3us; 951us; 952us; 981us; 1us; 951us; 1us; 952us; 1us; 952us; 1us; 952us; 1us; 953us; 1us; 954us; 1us; 955us; 1us; 956us; 1us; 957us; 1us; 958us; 1us; 959us; 1us; 960us; 1us; 961us; 1us; 962us; 1us; 963us; 1us; 964us; 1us; 965us; 1us; 966us; 1us; 967us; 1us; 968us; 1us; 969us; 1us; 970us; 1us; 971us; 1us; 972us; 1us; 973us; 1us; 974us; 1us; 975us; 2us; 976us; 977us; 1us; 977us; 1us; 978us; 1us; 978us; 1us; 979us; 1us; 980us; 1us; 980us; 1us; 981us; 1us; 982us; 1us; 983us; 3us; 984us; 986us; 987us; 1us; 985us; 2us; 986us; 987us; 1us; 986us; 1us; 987us; 1us; 988us; 1us; 989us; 1us; 990us; 1us; 991us; 2us; 992us; 993us; 1us; 993us; 1us; 994us; 1us; 994us; 2us; 996us; 998us; 2us; 997us; 999us; 1us; 998us; 1us; 999us; 1us; 1000us; 1us; 1001us; 1us; 1002us; 1us; 1003us; 1us; 1004us; 1us; 1005us; 1us; 1007us; 1us; 1009us; 1us; 1011us; 1us; 1013us; 1us; 1015us; 1us; 1019us; 1us; 1021us; 1us; 1023us; 1us; 1024us; 1us; 1025us; 1us; 1026us; 1us; 1027us; 1us; 1028us; 1us; 1029us; 1us; 1030us; 1us; 1031us; 1us; 1032us; 1us; 1033us; 1us; 1034us; 1us; 1035us; 1us; 1036us; 1us; 1038us; 1us; 1040us; 2us; 1040us; 1061us; 1us; 1040us; 1us; 1041us; 1us; 1042us; 1us; 1043us; 2us; 1043us; 1062us; 1us; 1043us; 1us; 1044us; 1us; 1045us; 1us; 1046us; 1us; 1046us; 1us; 1047us; 1us; 1048us; 1us; 1049us; 1us; 1050us; 1us; 1050us; 1us; 1051us; 1us; 1052us; 1us; 1053us; 1us; 1053us; 1us; 1054us; 1us; 1055us; 1us; 1056us; 1us; 1057us; 1us; 1058us; 1us; 1059us; 1us; 1060us; 1us; 1061us; 1us; 1062us; 1us; 1063us; 1us; 1064us; 1us; 1065us; 1us; 1066us; |] +let _fsyacc_stateToProdIdxsTableRowOffsets = [|0us; 2us; 4us; 6us; 8us; 10us; 12us; 14us; 16us; 18us; 20us; 22us; 24us; 26us; 28us; 30us; 32us; 35us; 37us; 40us; 42us; 45us; 47us; 49us; 51us; 53us; 55us; 57us; 59us; 62us; 64us; 72us; 80us; 129us; 131us; 134us; 136us; 138us; 140us; 142us; 144us; 147us; 149us; 151us; 154us; 156us; 158us; 160us; 164us; 166us; 168us; 170us; 172us; 176us; 178us; 180us; 184us; 187us; 189us; 192us; 194us; 196us; 198us; 200us; 207us; 214us; 218us; 220us; 222us; 224us; 228us; 231us; 233us; 235us; 237us; 241us; 243us; 245us; 248us; 251us; 254us; 256us; 258us; 260us; 262us; 264us; 266us; 272us; 278us; 281us; 284us; 286us; 288us; 290us; 292us; 294us; 298us; 300us; 302us; 304us; 306us; 308us; 310us; 312us; 314us; 316us; 318us; 321us; 370us; 372us; 421us; 423us; 425us; 429us; 431us; 433us; 435us; 437us; 439us; 441us; 443us; 445us; 447us; 449us; 451us; 454us; 456us; 458us; 461us; 463us; 465us; 467us; 471us; 473us; 475us; 477us; 479us; 481us; 483us; 485us; 487us; 489us; 491us; 493us; 495us; 497us; 499us; 503us; 506us; 508us; 510us; 512us; 514us; 517us; 520us; 522us; 524us; 527us; 530us; 532us; 534us; 537us; 540us; 542us; 544us; 546us; 548us; 550us; 552us; 554us; 562us; 575us; 583us; 596us; 598us; 600us; 602us; 604us; 606us; 608us; 610us; 612us; 614us; 616us; 621us; 623us; 628us; 630us; 632us; 636us; 638us; 640us; 642us; 644us; 646us; 648us; 650us; 652us; 654us; 657us; 660us; 662us; 664us; 667us; 669us; 671us; 673us; 676us; 678us; 680us; 682us; 684us; 686us; 688us; 691us; 693us; 695us; 697us; 700us; 702us; 705us; 707us; 710us; 712us; 714us; 716us; 718us; 730us; 741us; 744us; 746us; 748us; 752us; 755us; 757us; 759us; 761us; 764us; 766us; 768us; 770us; 781us; 791us; 842us; 845us; 847us; 849us; 851us; 856us; 858us; 861us; 863us; 865us; 868us; 871us; 873us; 875us; 877us; 879us; 886us; 893us; 895us; 899us; 901us; 907us; 909us; 911us; 913us; 915us; 917us; 919us; 921us; 923us; 926us; 928us; 930us; 934us; 936us; 940us; 946us; 949us; 951us; 953us; 956us; 958us; 960us; 962us; 964us; 968us; 972us; 975us; 977us; 979us; 981us; 983us; 985us; 987us; 989us; 992us; 994us; 999us; 1003us; 1006us; 1008us; 1010us; 1013us; 1015us; 1017us; 1019us; 1021us; 1023us; 1026us; 1028us; 1032us; 1034us; 1036us; 1039us; 1043us; 1045us; 1047us; 1049us; 1053us; 1055us; 1057us; 1059us; 1061us; 1063us; 1065us; 1067us; 1070us; 1072us; 1074us; 1076us; 1081us; 1083us; 1085us; 1087us; 1089us; 1091us; 1093us; 1095us; 1097us; 1099us; 1101us; 1106us; 1108us; 1110us; 1112us; 1114us; 1116us; 1118us; 1120us; 1122us; 1124us; 1126us; 1131us; 1134us; 1137us; 1140us; 1143us; 1145us; 1147us; 1149us; 1151us; 1153us; 1155us; 1157us; 1159us; 1161us; 1163us; 1165us; 1169us; 1172us; 1174us; 1176us; 1179us; 1181us; 1184us; 1187us; 1189us; 1191us; 1194us; 1197us; 1199us; 1201us; 1203us; 1205us; 1207us; 1209us; 1211us; 1213us; 1215us; 1217us; 1219us; 1222us; 1225us; 1227us; 1229us; 1232us; 1234us; 1236us; 1238us; 1240us; 1242us; 1244us; 1246us; 1248us; 1251us; 1254us; 1257us; 1259us; 1261us; 1263us; 1266us; 1268us; 1280us; 1297us; 1309us; 1326us; 1328us; 1330us; 1333us; 1335us; 1337us; 1339us; 1344us; 1346us; 1348us; 1350us; 1352us; 1354us; 1356us; 1358us; 1360us; 1362us; 1364us; 1366us; 1368us; 1370us; 1372us; 1374us; 1376us; 1378us; 1380us; 1382us; 1384us; 1386us; 1388us; 1390us; 1392us; 1394us; 1396us; 1398us; 1400us; 1402us; 1404us; 1406us; 1408us; 1410us; 1412us; 1414us; 1416us; 1418us; 1420us; 1422us; 1424us; 1427us; 1429us; 1431us; 1433us; 1435us; 1437us; 1439us; 1442us; 1444us; 1446us; 1448us; 1450us; 1452us; 1454us; 1456us; 1458us; 1460us; 1462us; 1464us; 1466us; 1468us; 1470us; 1472us; 1476us; 1479us; 1481us; 1483us; 1485us; 1487us; 1489us; 1491us; 1493us; 1495us; 1497us; 1500us; 1502us; 1504us; 1507us; 1510us; 1512us; 1514us; 1516us; 1519us; 1522us; 1524us; 1529us; 1535us; 1539us; 1541us; 1543us; 1545us; 1547us; 1549us; 1551us; 1553us; 1555us; 1557us; 1559us; 1565us; 1571us; 1576us; 1578us; 1580us; 1582us; 1584us; 1586us; 1588us; 1594us; 1596us; 1598us; 1602us; 1605us; 1607us; 1609us; 1611us; 1613us; 1620us; 1622us; 1624us; 1628us; 1631us; 1633us; 1635us; 1637us; 1639us; 1642us; 1645us; 1647us; 1649us; 1651us; 1653us; 1655us; 1657us; 1661us; 1666us; 1668us; 1672us; 1674us; 1676us; 1678us; 1681us; 1683us; 1686us; 1690us; 1692us; 1695us; 1697us; 1699us; 1701us; 1703us; 1705us; 1707us; 1709us; 1711us; 1713us; 1715us; 1717us; 1719us; 1721us; 1723us; 1725us; 1728us; 1730us; 1733us; 1736us; 1739us; 1741us; 1743us; 1745us; 1747us; 1749us; 1751us; 1753us; 1762us; 1764us; 1766us; 1774us; 1776us; 1780us; 1782us; 1784us; 1786us; 1788us; 1790us; 1792us; 1795us; 1797us; 1799us; 1801us; 1803us; 1805us; 1807us; 1809us; 1811us; 1813us; 1818us; 1823us; 1825us; 1827us; 1829us; 1831us; 1833us; 1836us; 1838us; 1841us; 1843us; 1845us; 1850us; 1855us; 1860us; 1862us; 1864us; 1866us; 1868us; 1870us; 1872us; 1874us; 1876us; 1878us; 1880us; 1882us; 1889us; 1891us; 1893us; 1895us; 1897us; 1899us; 1905us; 1907us; 1910us; 1913us; 1916us; 1918us; 1920us; 1922us; 1925us; 1927us; 1929us; 1932us; 1934us; 1939us; 1944us; 1946us; 1948us; 1951us; 1954us; 1956us; 1958us; 1960us; 1962us; 1964us; 1966us; 1968us; 1970us; 1972us; 1974us; 1976us; 1978us; 1980us; 1982us; 1984us; 1986us; 1988us; 1991us; 1993us; 1995us; 1997us; 2001us; 2003us; 2007us; 2009us; 2011us; 2013us; 2015us; 2017us; 2019us; 2021us; 2023us; 2025us; 2027us; 2029us; 2031us; 2033us; 2035us; 2037us; 2039us; 2041us; 2043us; 2045us; 2047us; 2049us; 2051us; 2053us; 2055us; 2057us; 2059us; 2061us; 2064us; 2067us; 2069us; 2071us; 2073us; 2075us; 2078us; 2084us; 2086us; 2090us; 2095us; 2097us; 2099us; 2101us; 2103us; 2105us; 2107us; 2110us; 2112us; 2115us; 2117us; 2119us; 2121us; 2123us; 2125us; 2127us; 2129us; 2131us; 2135us; 2139us; 2143us; 2147us; 2150us; 2152us; 2154us; 2156us; 2159us; 2162us; 2164us; 2166us; 2168us; 2170us; 2173us; 2175us; 2177us; 2180us; 2182us; 2184us; 2186us; 2188us; 2190us; 2193us; 2195us; 2197us; 2199us; 2201us; 2203us; 2205us; 2207us; 2209us; 2211us; 2213us; 2215us; 2217us; 2219us; 2221us; 2223us; 2225us; 2228us; 2230us; 2232us; 2234us; 2236us; 2239us; 2241us; 2243us; 2246us; 2249us; 2251us; 2253us; 2255us; 2257us; 2259us; 2261us; 2263us; 2265us; 2267us; 2270us; 2272us; 2274us; 2281us; 2283us; 2285us; 2287us; 2290us; 2294us; 2296us; 2298us; 2300us; 2302us; 2304us; 2310us; 2313us; 2315us; 2317us; 2319us; 2322us; 2324us; 2326us; 2333us; 2340us; 2347us; 2354us; 2361us; 2368us; 2375us; 2383us; 2385us; 2387us; 2389us; 2391us; 2394us; 2397us; 2399us; 2401us; 2403us; 2405us; 2407us; 2410us; 2412us; 2415us; 2417us; 2419us; 2424us; 2426us; 2434us; 2440us; 2444us; 2446us; 2448us; 2450us; 2452us; 2454us; 2456us; 2458us; 2460us; 2470us; 2472us; 2474us; 2476us; 2481us; 2483us; 2485us; 2487us; 2489us; 2491us; 2493us; 2495us; 2497us; 2499us; 2501us; 2503us; 2505us; 2507us; 2509us; 2511us; 2513us; 2515us; 2517us; 2520us; 2522us; 2524us; 2526us; 2528us; 2530us; 2532us; 2541us; 2544us; 2546us; 2548us; 2552us; 2555us; 2557us; 2562us; 2567us; 2572us; 2574us; 2576us; 2579us; 2581us; 2583us; 2591us; 2599us; 2607us; 2615us; 2623us; 2631us; 2639us; 2646us; 2654us; 2662us; 2671us; 2686us; 2694us; 2696us; 2698us; 2700us; 2703us; 2706us; 2708us; 2710us; 2712us; 2714us; 2716us; 2718us; 2720us; 2722us; 2724us; 2727us; 2729us; 2732us; 2734us; 2738us; 2740us; 2742us; 2745us; 2747us; 2750us; 2753us; 2755us; 2757us; 2759us; 2761us; 2763us; 2765us; 2814us; 2817us; 2819us; 2822us; 2824us; 2826us; 2828us; 2830us; 2883us; 2937us; 2993us; 2996us; 2998us; 3000us; 3002us; 3004us; 3006us; 3008us; 3010us; 3016us; 3018us; 3021us; 3024us; 3027us; 3030us; 3033us; 3036us; 3039us; 3042us; 3045us; 3048us; 3052us; 3055us; 3058us; 3060us; 3063us; 3066us; 3068us; 3070us; 3075us; 3077us; 3079us; 3082us; 3084us; 3086us; 3088us; 3090us; 3092us; 3095us; 3098us; 3100us; 3102us; 3105us; 3108us; 3110us; 3112us; 3116us; 3120us; 3122us; 3124us; 3126us; 3128us; 3132us; 3182us; 3184us; 3186us; 3188us; 3190us; 3239us; 3242us; 3291us; 3293us; 3295us; 3298us; 3300us; 3307us; 3359us; 3363us; 3366us; 3368us; 3370us; 3372us; 3374us; 3376us; 3378us; 3380us; 3396us; 3403us; 3408us; 3411us; 3413us; 3415us; 3417us; 3419us; 3421us; 3427us; 3432us; 3435us; 3437us; 3439us; 3441us; 3443us; 3445us; 3447us; 3449us; 3451us; 3453us; 3455us; 3458us; 3460us; 3509us; 3511us; 3560us; 3562us; 3564us; 3566us; 3568us; 3570us; 3572us; 3575us; 3578us; 3581us; 3584us; 3587us; 3589us; 3591us; 3593us; 3595us; 3597us; 3599us; 3601us; 3603us; 3605us; 3607us; 3609us; 3611us; 3613us; 3662us; 3664us; 3666us; 3715us; 3764us; 3813us; 3862us; 3911us; 3960us; 4009us; 4058us; 4107us; 4156us; 4205us; 4254us; 4303us; 4352us; 4401us; 4450us; 4499us; 4548us; 4597us; 4646us; 4695us; 4744us; 4793us; 4842us; 4892us; 4941us; 4989us; 5038us; 5087us; 5136us; 5188us; 5240us; 5290us; 5339us; 5388us; 5390us; 5392us; 5394us; 5396us; 5398us; 5400us; 5402us; 5405us; 5407us; 5409us; 5413us; 5419us; 5422us; 5425us; 5428us; 5431us; 5434us; 5437us; 5440us; 5443us; 5446us; 5449us; 5453us; 5455us; 5458us; 5461us; 5464us; 5467us; 5470us; 5473us; 5476us; 5479us; 5482us; 5484us; 5486us; 5488us; 5490us; 5492us; 5494us; 5496us; 5498us; 5500us; 5502us; 5504us; 5506us; 5508us; 5510us; 5512us; 5514us; 5516us; 5518us; 5520us; 5522us; 5524us; 5526us; 5528us; 5530us; 5532us; 5534us; 5537us; 5540us; 5542us; 5544us; 5546us; 5549us; 5551us; 5553us; 5555us; 5557us; 5563us; 5568us; 5571us; 5573us; 5575us; 5577us; 5579us; 5581us; 5583us; 5585us; 5587us; 5589us; 5591us; 5594us; 5597us; 5600us; 5602us; 5604us; 5606us; 5609us; 5612us; 5615us; 5617us; 5619us; 5622us; 5624us; 5626us; 5629us; 5631us; 5634us; 5636us; 5638us; 5641us; 5643us; 5645us; 5648us; 5650us; 5652us; 5655us; 5657us; 5659us; 5662us; 5664us; 5666us; 5669us; 5671us; 5673us; 5676us; 5678us; 5682us; 5690us; 5693us; 5700us; 5703us; 5708us; 5710us; 5714us; 5716us; 5718us; 5720us; 5722us; 5724us; 5726us; 5729us; 5736us; 5742us; 5744us; 5751us; 5753us; 5760us; 5767us; 5774us; 5781us; 5788us; 5795us; 5797us; 5799us; 5801us; 5803us; 5805us; 5808us; 5810us; 5812us; 5814us; 5816us; 5818us; 5820us; 5823us; 5825us; 5827us; 5829us; 5831us; 5833us; 5838us; 5841us; 5843us; 5845us; 5847us; 5849us; 5853us; 5856us; 5858us; 5860us; 5862us; 5864us; 5866us; 5868us; 5875us; 5877us; 5879us; 5881us; 5883us; 5885us; 5887us; 5893us; 5895us; 5897us; 5900us; 5902us; 5904us; 5906us; 5908us; 5911us; 5913us; 5915us; 5919us; 5922us; 5924us; 5926us; 5928us; 5930us; 5932us; 5934us; 5936us; 5938us; 5940us; 5942us; 5944us; 5946us; 5948us; 5950us; 5952us; 5957us; 5960us; 5962us; 5964us; 5966us; 5968us; 5970us; 5975us; 5981us; 5984us; 5986us; 5988us; 5990us; 5992us; 5997us; 6000us; 6002us; 6004us; 6006us; 6008us; 6018us; 6033us; 6047us; 6049us; 6052us; 6054us; 6056us; 6058us; 6061us; 6063us; 6065us; 6067us; 6069us; 6071us; 6073us; 6075us; 6077us; 6079us; 6081us; 6083us; 6085us; 6087us; 6089us; 6092us; 6095us; 6097us; 6099us; 6101us; 6107us; 6110us; 6112us; 6114us; 6116us; 6118us; 6120us; 6122us; 6124us; 6126us; 6128us; 6130us; 6132us; 6136us; 6138us; 6140us; 6142us; 6144us; 6148us; 6150us; 6152us; 6154us; 6157us; 6159us; 6161us; 6163us; 6165us; 6167us; 6169us; 6171us; 6174us; 6176us; 6178us; 6180us; 6182us; 6184us; 6186us; 6188us; 6190us; 6193us; 6195us; 6201us; 6203us; 6205us; 6207us; 6209us; 6211us; 6214us; 6216us; 6218us; 6220us; 6222us; 6225us; 6227us; 6231us; 6234us; 6236us; 6239us; 6241us; 6243us; 6245us; 6248us; 6250us; 6253us; 6255us; 6257us; 6259us; 6262us; 6264us; 6266us; 6268us; 6271us; 6274us; 6277us; 6279us; 6281us; 6285us; 6287us; 6289us; 6295us; 6299us; 6301us; 6303us; 6305us; 6308us; 6310us; 6312us; 6314us; 6316us; 6318us; 6320us; 6322us; 6325us; 6327us; 6329us; 6331us; 6333us; 6335us; 6337us; 6339us; 6341us; 6343us; 6345us; 6347us; 6349us; 6351us; 6356us; 6358us; 6360us; 6362us; 6364us; 6366us; 6368us; 6374us; 6377us; 6379us; 6381us; 6383us; 6385us; 6387us; 6390us; 6393us; 6396us; 6398us; 6400us; 6407us; 6413us; 6418us; 6421us; 6423us; 6425us; 6427us; 6429us; 6431us; 6433us; 6435us; 6437us; 6439us; 6441us; 6443us; 6445us; 6447us; 6449us; 6452us; 6454us; 6457us; 6459us; 6461us; 6463us; 6466us; 6468us; 6470us; 6473us; 6475us; 6477us; 6480us; 6482us; 6484us; 6488us; 6494us; 6496us; 6501us; 6503us; 6505us; 6507us; 6512us; 6518us; 6520us; 6525us; 6527us; 6529us; 6531us; 6536us; 6539us; 6541us; 6543us; 6545us; 6547us; 6554us; 6556us; 6558us; 6560us; 6562us; 6564us; 6566us; 6573us; 6575us; 6577us; 6579us; 6581us; 6585us; 6587us; 6590us; 6593us; 6598us; 6600us; 6602us; 6610us; 6612us; 6614us; 6616us; 6618us; 6623us; 6625us; 6627us; 6629us; 6631us; 6633us; 6635us; 6638us; 6640us; 6642us; 6647us; 6649us; 6653us; 6655us; 6658us; 6660us; 6662us; 6664us; 6666us; 6668us; 6670us; 6674us; 6679us; 6682us; 6684us; 6686us; 6689us; 6691us; 6693us; 6698us; 6700us; 6702us; 6704us; 6708us; 6712us; 6714us; 6716us; 6720us; 6722us; 6724us; 6728us; 6731us; 6737us; 6739us; 6741us; 6747us; 6753us; 6757us; 6760us; 6762us; 6764us; 6766us; 6768us; 6770us; 6772us; 6774us; 6776us; 6778us; 6780us; 6782us; 6784us; 6786us; 6789us; 6794us; 6796us; 6798us; 6800us; 6802us; 6804us; 6806us; 6814us; 6818us; 6822us; 6825us; 6827us; 6829us; 6831us; 6835us; 6837us; 6839us; 6841us; 6843us; 6847us; 6850us; 6852us; 6854us; 6856us; 6859us; 6863us; 6865us; 6867us; 6869us; 6873us; 6875us; 6877us; 6881us; 6883us; 6886us; 6888us; 6890us; 6892us; 6895us; 6897us; 6899us; 6903us; 6907us; 6911us; 6913us; 6915us; 6917us; 6919us; 6921us; 6923us; 6925us; 6928us; 6930us; 6932us; 6934us; 6936us; 6939us; 6941us; 6943us; 6948us; 6950us; 6952us; 6954us; 6956us; 6958us; 6962us; 6966us; 6968us; 6970us; 6972us; 6974us; 6976us; 6978us; 6980us; 6982us; 6984us; 6986us; 6988us; 6990us; 6992us; 6994us; 6996us; 6998us; 7000us; 7002us; 7004us; 7006us; 7008us; 7010us; 7012us; 7014us; 7016us; 7018us; 7020us; 7023us; 7025us; 7027us; 7029us; 7031us; 7033us; 7035us; 7037us; 7039us; 7041us; 7045us; 7047us; 7050us; 7052us; 7054us; 7056us; 7058us; 7060us; 7062us; 7065us; 7067us; 7069us; 7071us; 7074us; 7077us; 7079us; 7081us; 7083us; 7085us; 7087us; 7089us; 7091us; 7093us; 7095us; 7097us; 7099us; 7101us; 7103us; 7105us; 7107us; 7109us; 7111us; 7113us; 7115us; 7117us; 7119us; 7121us; 7123us; 7125us; 7127us; 7129us; 7131us; 7133us; 7135us; 7137us; 7139us; 7142us; 7144us; 7146us; 7148us; 7150us; 7153us; 7155us; 7157us; 7159us; 7161us; 7163us; 7165us; 7167us; 7169us; 7171us; 7173us; 7175us; 7177us; 7179us; 7181us; 7183us; 7185us; 7187us; 7189us; 7191us; 7193us; 7195us; 7197us; 7199us; 7201us; 7203us; 7205us; |] +let _fsyacc_action_rows = 1839 +let _fsyacc_actionTableElements = [|16us; 16431us; 22us; 69us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 73us; 299us; 88us; 38us; 101us; 94us; 108us; 16542us; 109us; 16542us; 121us; 16542us; 150us; 16542us; 195us; 47us; 0us; 49152us; 86us; 16507us; 13us; 16542us; 22us; 231us; 24us; 16542us; 25us; 16542us; 29us; 16542us; 30us; 16542us; 31us; 16542us; 32us; 16542us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 40us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 45us; 16542us; 55us; 16542us; 62us; 16542us; 70us; 16542us; 71us; 16542us; 72us; 16542us; 73us; 299us; 74us; 16542us; 75us; 16542us; 86us; 16542us; 88us; 38us; 89us; 16542us; 90us; 16542us; 92us; 16542us; 98us; 16542us; 100us; 16542us; 101us; 693us; 106us; 16542us; 107us; 16542us; 108us; 16542us; 114us; 16542us; 115us; 16542us; 116us; 16542us; 117us; 16542us; 119us; 16542us; 121us; 16542us; 122us; 16542us; 123us; 16542us; 124us; 16542us; 125us; 16542us; 126us; 16542us; 130us; 16542us; 133us; 16542us; 134us; 16542us; 136us; 16542us; 137us; 16542us; 146us; 16542us; 147us; 16542us; 148us; 16542us; 150us; 16542us; 154us; 16542us; 155us; 16542us; 158us; 16542us; 159us; 16542us; 162us; 16542us; 163us; 16542us; 164us; 16542us; 165us; 16542us; 166us; 16542us; 167us; 16542us; 168us; 16542us; 169us; 16542us; 170us; 16542us; 171us; 16542us; 172us; 16542us; 173us; 16542us; 174us; 16542us; 175us; 16542us; 176us; 16542us; 177us; 16542us; 179us; 16542us; 180us; 16542us; 182us; 16542us; 183us; 16542us; 186us; 16542us; 191us; 16542us; 192us; 16542us; 193us; 16542us; 194us; 16542us; 195us; 217us; 0us; 49152us; 7us; 16542us; 10us; 14us; 21us; 12us; 67us; 13us; 73us; 299us; 84us; 11us; 88us; 38us; 101us; 693us; 0us; 49152us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 49152us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 49152us; 0us; 16389us; 0us; 16390us; 0us; 16391us; 0us; 16392us; 0us; 16393us; 0us; 16394us; 4us; 32768us; 10us; 14us; 21us; 37us; 67us; 13us; 84us; 36us; 0us; 16395us; 4us; 32768us; 10us; 14us; 21us; 37us; 67us; 13us; 84us; 36us; 0us; 16396us; 4us; 32768us; 10us; 14us; 21us; 37us; 67us; 13us; 84us; 36us; 0us; 16397us; 5us; 16542us; 10us; 14us; 67us; 13us; 73us; 299us; 88us; 38us; 101us; 693us; 0us; 16398us; 5us; 16542us; 10us; 14us; 67us; 13us; 73us; 299us; 88us; 38us; 101us; 693us; 0us; 16399us; 5us; 16542us; 10us; 14us; 67us; 13us; 73us; 299us; 88us; 38us; 101us; 693us; 0us; 16400us; 16us; 16401us; 32us; 16542us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 40us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 73us; 299us; 101us; 693us; 108us; 16542us; 121us; 16542us; 137us; 16542us; 150us; 16542us; 162us; 16542us; 0us; 16402us; 3us; 16624us; 42us; 479us; 43us; 478us; 44us; 480us; 78us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 36us; 1805us; 37us; 1808us; 38us; 1810us; 39us; 1813us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 108us; 1809us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 121us; 682us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 137us; 699us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 150us; 1814us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 25us; 16403us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 0us; 16404us; 2us; 16405us; 21us; 37us; 84us; 36us; 0us; 16406us; 0us; 16407us; 0us; 16408us; 1us; 32768us; 191us; 39us; 0us; 16410us; 2us; 16409us; 192us; 1801us; 193us; 1800us; 0us; 16411us; 0us; 16412us; 2us; 32768us; 10us; 44us; 195us; 45us; 0us; 16413us; 1us; 32768us; 10us; 46us; 0us; 16414us; 4us; 16430us; 10us; 48us; 21us; 1768us; 67us; 1767us; 84us; 1766us; 0us; 16415us; 3us; 16618us; 42us; 479us; 43us; 478us; 44us; 480us; 1us; 17400us; 103us; 1787us; 2us; 32768us; 45us; 1710us; 191us; 1709us; 1us; 16416us; 77us; 1712us; 1us; 17400us; 103us; 1787us; 2us; 32768us; 45us; 1710us; 191us; 1709us; 1us; 16417us; 77us; 1712us; 1us; 16418us; 151us; 53us; 0us; 16419us; 1us; 16421us; 151us; 53us; 0us; 16420us; 1us; 17394us; 69us; 1784us; 16us; 16431us; 22us; 69us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 73us; 299us; 88us; 38us; 101us; 94us; 108us; 16542us; 109us; 16542us; 121us; 16542us; 150us; 16542us; 195us; 77us; 0us; 16422us; 3us; 16624us; 42us; 479us; 43us; 478us; 44us; 480us; 8us; 32768us; 36us; 1805us; 37us; 1808us; 38us; 1810us; 39us; 1813us; 108us; 1809us; 109us; 96us; 121us; 682us; 150us; 1814us; 18us; 16431us; 22us; 69us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 69us; 1799us; 73us; 299us; 78us; 1798us; 88us; 38us; 101us; 94us; 108us; 16542us; 109us; 16542us; 121us; 16542us; 150us; 16542us; 195us; 77us; 0us; 16423us; 0us; 16424us; 0us; 16425us; 15us; 16431us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 73us; 299us; 88us; 38us; 101us; 94us; 108us; 16542us; 109us; 16542us; 121us; 16542us; 150us; 16542us; 195us; 74us; 5us; 32768us; 10us; 991us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 195us; 977us; 1us; 17396us; 21us; 1785us; 0us; 16426us; 0us; 16427us; 6us; 16430us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 21us; 1768us; 67us; 1767us; 84us; 1766us; 0us; 16428us; 0us; 16429us; 3us; 16430us; 21us; 1768us; 67us; 1767us; 84us; 1766us; 3us; 17379us; 21us; 1768us; 67us; 1767us; 84us; 1766us; 15us; 16434us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 73us; 299us; 88us; 38us; 101us; 94us; 108us; 16542us; 109us; 16542us; 121us; 16542us; 150us; 16542us; 195us; 81us; 0us; 16432us; 3us; 32768us; 21us; 1768us; 67us; 1767us; 84us; 1766us; 4us; 16542us; 73us; 299us; 88us; 38us; 101us; 94us; 195us; 81us; 0us; 16433us; 0us; 16435us; 0us; 16436us; 3us; 16624us; 42us; 479us; 43us; 478us; 44us; 480us; 8us; 32768us; 36us; 1805us; 37us; 1808us; 38us; 1810us; 39us; 1813us; 108us; 1809us; 109us; 96us; 121us; 682us; 150us; 1814us; 2us; 32768us; 69us; 1799us; 78us; 1798us; 5us; 32768us; 22us; 112us; 45us; 1710us; 56us; 1796us; 136us; 1797us; 191us; 1709us; 0us; 16437us; 0us; 16438us; 0us; 16439us; 0us; 16440us; 2us; 32768us; 45us; 1710us; 191us; 1709us; 1us; 16441us; 77us; 1712us; 1us; 16542us; 73us; 299us; 1us; 17404us; 110us; 1788us; 1us; 17406us; 118us; 1789us; 3us; 16618us; 42us; 479us; 43us; 478us; 44us; 480us; 3us; 32768us; 92us; 1715us; 100us; 1720us; 191us; 1709us; 2us; 16683us; 33us; 1804us; 160us; 17423us; 1us; 32768us; 78us; 103us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 73us; 299us; 75us; 1560us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 16443us; 69us; 106us; 0us; 16442us; 71us; 32768us; 13us; 1093us; 22us; 108us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 25us; 16444us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 28us; 32768us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 1us; 17392us; 19us; 1783us; 0us; 16445us; 8us; 16542us; 45us; 1710us; 56us; 1796us; 73us; 299us; 88us; 38us; 101us; 94us; 136us; 1797us; 191us; 1709us; 195us; 81us; 3us; 32768us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 0us; 16446us; 15us; 16431us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 73us; 299us; 88us; 38us; 101us; 94us; 108us; 16542us; 109us; 16542us; 121us; 16542us; 150us; 16542us; 195us; 77us; 1us; 32768us; 142us; 117us; 3us; 32768us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 0us; 16447us; 15us; 16431us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 73us; 299us; 88us; 38us; 101us; 94us; 108us; 16542us; 109us; 16542us; 121us; 16542us; 150us; 16542us; 195us; 77us; 1us; 32768us; 142us; 121us; 0us; 16448us; 1us; 16542us; 73us; 299us; 0us; 16449us; 1us; 16451us; 131us; 125us; 1us; 16542us; 73us; 299us; 0us; 16450us; 2us; 16491us; 69us; 128us; 87us; 210us; 7us; 16542us; 22us; 131us; 48us; 553us; 55us; 555us; 73us; 299us; 111us; 554us; 136us; 156us; 152us; 142us; 0us; 16452us; 0us; 16453us; 52us; 16471us; 14us; 16542us; 22us; 152us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 45us; 16542us; 46us; 16542us; 47us; 16542us; 48us; 553us; 49us; 16542us; 50us; 16542us; 51us; 16542us; 53us; 16542us; 55us; 555us; 57us; 16542us; 66us; 16542us; 72us; 16542us; 73us; 299us; 74us; 16542us; 88us; 16542us; 91us; 16542us; 92us; 16542us; 106us; 16542us; 109us; 16542us; 111us; 554us; 113us; 16542us; 119us; 16542us; 122us; 16542us; 136us; 156us; 148us; 16542us; 152us; 142us; 165us; 16542us; 166us; 16542us; 167us; 16542us; 168us; 16542us; 169us; 16542us; 170us; 16542us; 171us; 16542us; 172us; 16542us; 173us; 16542us; 174us; 16542us; 175us; 16542us; 176us; 16542us; 177us; 16542us; 179us; 16542us; 180us; 16542us; 185us; 16542us; 188us; 16542us; 191us; 16542us; 192us; 16542us; 193us; 16542us; 194us; 16542us; 1us; 17396us; 21us; 1785us; 14us; 16471us; 14us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 46us; 16542us; 47us; 16542us; 49us; 16542us; 50us; 16542us; 51us; 16542us; 53us; 16542us; 73us; 299us; 109us; 16542us; 111us; 16542us; 119us; 16542us; 1us; 16491us; 87us; 210us; 3us; 32768us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 1us; 16491us; 87us; 210us; 0us; 16454us; 1us; 16491us; 87us; 210us; 0us; 16455us; 0us; 16456us; 0us; 16457us; 1us; 32768us; 120us; 143us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 73us; 299us; 75us; 1560us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16458us; 0us; 16459us; 16us; 16471us; 14us; 16542us; 22us; 160us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 46us; 16542us; 47us; 16542us; 49us; 16542us; 50us; 16542us; 51us; 16542us; 53us; 16542us; 73us; 299us; 109us; 16542us; 111us; 16542us; 119us; 16542us; 195us; 150us; 3us; 32768us; 10us; 991us; 142us; 148us; 195us; 977us; 0us; 16460us; 0us; 16461us; 1us; 32768us; 142us; 151us; 0us; 16462us; 14us; 16471us; 14us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 46us; 16542us; 47us; 16542us; 49us; 16542us; 50us; 16542us; 51us; 16542us; 53us; 16542us; 73us; 299us; 109us; 16542us; 111us; 16542us; 119us; 16542us; 5us; 32768us; 10us; 991us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 195us; 977us; 0us; 16463us; 0us; 16464us; 15us; 16471us; 14us; 16542us; 22us; 160us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 46us; 16542us; 47us; 16542us; 49us; 16542us; 50us; 16542us; 51us; 16542us; 53us; 16542us; 73us; 299us; 109us; 16542us; 111us; 16542us; 119us; 16542us; 3us; 32768us; 10us; 991us; 142us; 158us; 195us; 977us; 0us; 16465us; 0us; 16466us; 14us; 16471us; 14us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 46us; 16542us; 47us; 16542us; 49us; 16542us; 50us; 16542us; 51us; 16542us; 53us; 16542us; 73us; 299us; 109us; 16542us; 111us; 16542us; 119us; 16542us; 5us; 32768us; 10us; 991us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 195us; 977us; 0us; 16467us; 0us; 16468us; 0us; 16469us; 0us; 16470us; 2us; 17398us; 21us; 1773us; 84us; 1774us; 14us; 16471us; 14us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 46us; 16542us; 47us; 16542us; 49us; 16542us; 50us; 16542us; 51us; 16542us; 53us; 16542us; 73us; 299us; 109us; 16542us; 111us; 16542us; 119us; 16542us; 0us; 16472us; 3us; 16624us; 42us; 479us; 43us; 478us; 44us; 480us; 3us; 16624us; 42us; 479us; 43us; 478us; 44us; 480us; 10us; 32768us; 14us; 557us; 46us; 188us; 47us; 334us; 49us; 206us; 50us; 335us; 51us; 336us; 53us; 184us; 109us; 186us; 111us; 556us; 119us; 193us; 44us; 32768us; 14us; 557us; 45us; 1710us; 46us; 188us; 47us; 334us; 49us; 206us; 50us; 335us; 51us; 336us; 53us; 184us; 55us; 541us; 57us; 628us; 66us; 1600us; 72us; 544us; 74us; 535us; 88us; 1629us; 91us; 1703us; 92us; 532us; 106us; 1651us; 109us; 186us; 111us; 556us; 113us; 1649us; 119us; 193us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 17404us; 110us; 1788us; 3us; 16618us; 42us; 479us; 43us; 478us; 44us; 480us; 3us; 32768us; 92us; 1715us; 100us; 1720us; 191us; 1709us; 2us; 16683us; 33us; 1804us; 160us; 17423us; 1us; 32768us; 78us; 178us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 73us; 299us; 75us; 1560us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 2us; 16480us; 26us; 198us; 87us; 196us; 1us; 16443us; 69us; 106us; 0us; 16473us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 6us; 16474us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 6us; 16475us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 1us; 17406us; 118us; 1789us; 0us; 16476us; 5us; 32768us; 36us; 1805us; 37us; 1808us; 47us; 333us; 108us; 1809us; 109us; 189us; 1us; 17406us; 118us; 1789us; 0us; 16477us; 1us; 16542us; 73us; 299us; 0us; 16478us; 1us; 32768us; 78us; 194us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 73us; 299us; 75us; 1560us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16479us; 3us; 32768us; 92us; 1715us; 100us; 1720us; 191us; 1709us; 0us; 16481us; 3us; 32768us; 92us; 1715us; 100us; 1720us; 191us; 1709us; 2us; 32768us; 20us; 200us; 195us; 201us; 0us; 16482us; 0us; 16483us; 1us; 16484us; 97us; 203us; 3us; 32768us; 92us; 1715us; 100us; 1720us; 191us; 1709us; 0us; 16485us; 0us; 16486us; 1us; 16487us; 47us; 207us; 0us; 16488us; 1us; 16491us; 87us; 210us; 0us; 16489us; 15us; 16471us; 14us; 16542us; 22us; 160us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 46us; 16542us; 47us; 16542us; 49us; 16542us; 50us; 16542us; 51us; 16542us; 53us; 16542us; 73us; 299us; 109us; 16542us; 111us; 16542us; 119us; 16542us; 3us; 32768us; 19us; 1777us; 20us; 1778us; 142us; 1779us; 0us; 16490us; 2us; 32768us; 10us; 214us; 195us; 215us; 0us; 16492us; 1us; 32768us; 10us; 216us; 0us; 16493us; 4us; 32768us; 10us; 218us; 21us; 1768us; 67us; 1767us; 84us; 1766us; 0us; 16494us; 1us; 16495us; 151us; 53us; 0us; 16496us; 1us; 16498us; 151us; 53us; 0us; 16497us; 1us; 17394us; 69us; 1784us; 86us; 16507us; 13us; 16542us; 22us; 231us; 24us; 16542us; 25us; 16542us; 29us; 16542us; 30us; 16542us; 31us; 16542us; 32us; 16542us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 40us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 45us; 16542us; 55us; 16542us; 62us; 16542us; 70us; 16542us; 71us; 16542us; 72us; 16542us; 73us; 299us; 74us; 16542us; 75us; 16542us; 86us; 16542us; 88us; 38us; 89us; 16542us; 90us; 16542us; 92us; 16542us; 98us; 16542us; 100us; 16542us; 101us; 693us; 106us; 16542us; 107us; 16542us; 108us; 16542us; 114us; 16542us; 115us; 16542us; 116us; 16542us; 117us; 16542us; 119us; 16542us; 121us; 16542us; 122us; 16542us; 123us; 16542us; 124us; 16542us; 125us; 16542us; 126us; 16542us; 130us; 16542us; 133us; 16542us; 134us; 16542us; 136us; 16542us; 137us; 16542us; 146us; 16542us; 147us; 16542us; 148us; 16542us; 150us; 16542us; 154us; 16542us; 155us; 16542us; 158us; 16542us; 159us; 16542us; 162us; 16542us; 163us; 16542us; 164us; 16542us; 165us; 16542us; 166us; 16542us; 167us; 16542us; 168us; 16542us; 169us; 16542us; 170us; 16542us; 171us; 16542us; 172us; 16542us; 173us; 16542us; 174us; 16542us; 175us; 16542us; 176us; 16542us; 177us; 16542us; 179us; 16542us; 180us; 16542us; 182us; 16542us; 183us; 16542us; 186us; 16542us; 191us; 16542us; 192us; 16542us; 193us; 16542us; 194us; 16542us; 195us; 251us; 0us; 16499us; 4us; 16624us; 42us; 479us; 43us; 478us; 44us; 480us; 195us; 246us; 78us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 36us; 1805us; 37us; 1808us; 38us; 1810us; 39us; 1813us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 108us; 1809us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 121us; 682us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 137us; 699us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 150us; 1814us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 87us; 16507us; 13us; 16542us; 22us; 231us; 24us; 16542us; 25us; 16542us; 29us; 16542us; 30us; 16542us; 31us; 16542us; 32us; 16542us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 40us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 45us; 16542us; 55us; 16542us; 62us; 16542us; 69us; 270us; 70us; 16542us; 71us; 16542us; 72us; 16542us; 73us; 299us; 74us; 16542us; 75us; 16542us; 86us; 16542us; 88us; 38us; 89us; 16542us; 90us; 16542us; 92us; 16542us; 98us; 16542us; 100us; 16542us; 101us; 693us; 106us; 16542us; 107us; 16542us; 108us; 16542us; 114us; 16542us; 115us; 16542us; 116us; 16542us; 117us; 16542us; 119us; 16542us; 121us; 16542us; 122us; 16542us; 123us; 16542us; 124us; 16542us; 125us; 16542us; 126us; 16542us; 130us; 16542us; 133us; 16542us; 134us; 16542us; 136us; 16542us; 137us; 16542us; 146us; 16542us; 147us; 16542us; 148us; 16542us; 150us; 16542us; 154us; 16542us; 155us; 16542us; 158us; 16542us; 159us; 16542us; 162us; 16542us; 163us; 16542us; 164us; 16542us; 165us; 16542us; 166us; 16542us; 167us; 16542us; 168us; 16542us; 169us; 16542us; 170us; 16542us; 171us; 16542us; 172us; 16542us; 173us; 16542us; 174us; 16542us; 175us; 16542us; 176us; 16542us; 177us; 16542us; 179us; 16542us; 180us; 16542us; 182us; 16542us; 183us; 16542us; 186us; 16542us; 191us; 16542us; 192us; 16542us; 193us; 16542us; 194us; 16542us; 195us; 251us; 0us; 16500us; 0us; 16501us; 85us; 16507us; 13us; 16542us; 24us; 16542us; 25us; 16542us; 29us; 16542us; 30us; 16542us; 31us; 16542us; 32us; 16542us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 40us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 45us; 16542us; 55us; 16542us; 62us; 16542us; 70us; 16542us; 71us; 16542us; 72us; 16542us; 73us; 299us; 74us; 16542us; 75us; 16542us; 86us; 16542us; 88us; 38us; 89us; 16542us; 90us; 16542us; 92us; 16542us; 98us; 16542us; 100us; 16542us; 101us; 693us; 106us; 16542us; 107us; 16542us; 108us; 16542us; 114us; 16542us; 115us; 16542us; 116us; 16542us; 117us; 16542us; 119us; 16542us; 121us; 16542us; 122us; 16542us; 123us; 16542us; 124us; 16542us; 125us; 16542us; 126us; 16542us; 130us; 16542us; 133us; 16542us; 134us; 16542us; 136us; 16542us; 137us; 16542us; 146us; 16542us; 147us; 16542us; 148us; 16542us; 150us; 16542us; 154us; 16542us; 155us; 16542us; 158us; 16542us; 159us; 16542us; 162us; 16542us; 163us; 16542us; 164us; 16542us; 165us; 16542us; 166us; 16542us; 167us; 16542us; 168us; 16542us; 169us; 16542us; 170us; 16542us; 171us; 16542us; 172us; 16542us; 173us; 16542us; 174us; 16542us; 175us; 16542us; 176us; 16542us; 177us; 16542us; 179us; 16542us; 180us; 16542us; 182us; 16542us; 183us; 16542us; 186us; 16542us; 191us; 16542us; 192us; 16542us; 193us; 16542us; 194us; 16542us; 195us; 236us; 5us; 32768us; 10us; 991us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 195us; 977us; 1us; 17396us; 21us; 1785us; 0us; 16502us; 0us; 16503us; 6us; 32768us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 21us; 1768us; 67us; 1767us; 84us; 1766us; 0us; 16504us; 0us; 16505us; 0us; 16506us; 4us; 16624us; 42us; 479us; 43us; 478us; 44us; 480us; 195us; 246us; 78us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 36us; 1805us; 37us; 1808us; 38us; 1810us; 39us; 1813us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 108us; 1809us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 121us; 682us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 137us; 699us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 150us; 1814us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 28us; 16510us; 21us; 1768us; 62us; 1161us; 63us; 1153us; 67us; 1767us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 84us; 1766us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 85us; 16509us; 13us; 16542us; 24us; 16542us; 25us; 16542us; 29us; 16542us; 30us; 16542us; 31us; 16542us; 32us; 16542us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 40us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 45us; 16542us; 55us; 16542us; 62us; 16542us; 70us; 16542us; 71us; 16542us; 72us; 16542us; 73us; 299us; 74us; 16542us; 75us; 16542us; 86us; 16542us; 88us; 38us; 89us; 16542us; 90us; 16542us; 92us; 16542us; 98us; 16542us; 100us; 16542us; 101us; 693us; 106us; 16542us; 107us; 16542us; 108us; 16542us; 114us; 16542us; 115us; 16542us; 116us; 16542us; 117us; 16542us; 119us; 16542us; 121us; 16542us; 122us; 16542us; 123us; 16542us; 124us; 16542us; 125us; 16542us; 126us; 16542us; 130us; 16542us; 133us; 16542us; 134us; 16542us; 136us; 16542us; 137us; 16542us; 146us; 16542us; 147us; 16542us; 148us; 16542us; 150us; 16542us; 154us; 16542us; 155us; 16542us; 158us; 16542us; 159us; 16542us; 162us; 16542us; 163us; 16542us; 164us; 16542us; 165us; 16542us; 166us; 16542us; 167us; 16542us; 168us; 16542us; 169us; 16542us; 170us; 16542us; 171us; 16542us; 172us; 16542us; 173us; 16542us; 174us; 16542us; 175us; 16542us; 176us; 16542us; 177us; 16542us; 179us; 16542us; 180us; 16542us; 182us; 16542us; 183us; 16542us; 186us; 16542us; 191us; 16542us; 192us; 16542us; 193us; 16542us; 194us; 16542us; 195us; 251us; 0us; 16508us; 0us; 16511us; 0us; 16512us; 21us; 16515us; 21us; 1768us; 32us; 16542us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 40us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 67us; 1767us; 73us; 299us; 84us; 1766us; 88us; 38us; 101us; 693us; 108us; 16542us; 121us; 16542us; 137us; 16542us; 150us; 16542us; 162us; 16542us; 195us; 251us; 0us; 16513us; 85us; 16516us; 13us; 16542us; 24us; 16542us; 25us; 16542us; 29us; 16542us; 30us; 16542us; 31us; 16542us; 32us; 16542us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 40us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 45us; 16542us; 55us; 16542us; 62us; 16542us; 70us; 16542us; 71us; 16542us; 72us; 16542us; 73us; 299us; 74us; 16542us; 75us; 16542us; 86us; 16542us; 88us; 38us; 89us; 16542us; 90us; 16542us; 92us; 16542us; 98us; 16542us; 100us; 16542us; 101us; 693us; 106us; 16542us; 107us; 16542us; 108us; 16542us; 114us; 16542us; 115us; 16542us; 116us; 16542us; 117us; 16542us; 119us; 16542us; 121us; 16542us; 122us; 16542us; 123us; 16542us; 124us; 16542us; 125us; 16542us; 126us; 16542us; 130us; 16542us; 133us; 16542us; 134us; 16542us; 136us; 16542us; 137us; 16542us; 146us; 16542us; 147us; 16542us; 148us; 16542us; 150us; 16542us; 154us; 16542us; 155us; 16542us; 158us; 16542us; 159us; 16542us; 162us; 16542us; 163us; 16542us; 164us; 16542us; 165us; 16542us; 166us; 16542us; 167us; 16542us; 168us; 16542us; 169us; 16542us; 170us; 16542us; 171us; 16542us; 172us; 16542us; 173us; 16542us; 174us; 16542us; 175us; 16542us; 176us; 16542us; 177us; 16542us; 179us; 16542us; 180us; 16542us; 182us; 16542us; 183us; 16542us; 186us; 16542us; 191us; 16542us; 192us; 16542us; 193us; 16542us; 194us; 16542us; 195us; 251us; 0us; 16514us; 3us; 32768us; 21us; 1768us; 67us; 1767us; 84us; 1766us; 6us; 32768us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 21us; 1768us; 67us; 1767us; 84us; 1766us; 4us; 32768us; 21us; 1768us; 67us; 1767us; 84us; 1766us; 142us; 292us; 4us; 16542us; 73us; 299us; 88us; 38us; 101us; 693us; 195us; 251us; 0us; 16517us; 0us; 16518us; 0us; 16519us; 3us; 16624us; 42us; 479us; 43us; 478us; 44us; 480us; 11us; 32768us; 32us; 701us; 36us; 1805us; 37us; 1808us; 38us; 1810us; 39us; 1813us; 40us; 714us; 108us; 1809us; 121us; 682us; 137us; 699us; 150us; 1814us; 162us; 695us; 0us; 16520us; 1us; 16520us; 127us; 993us; 0us; 16521us; 71us; 16521us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 998us; 0us; 16522us; 1us; 16542us; 73us; 299us; 1us; 16564us; 131us; 340us; 0us; 16523us; 0us; 16524us; 1us; 32768us; 69us; 270us; 5us; 32768us; 22us; 278us; 45us; 1710us; 55us; 1794us; 136us; 1795us; 191us; 1709us; 0us; 16525us; 2us; 16541us; 10us; 991us; 195us; 977us; 0us; 16526us; 0us; 16527us; 4us; 32768us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 77us; 1712us; 0us; 16528us; 1us; 16529us; 77us; 1712us; 6us; 16542us; 55us; 1794us; 73us; 299us; 88us; 38us; 101us; 693us; 136us; 1795us; 195us; 252us; 5us; 32768us; 10us; 991us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 195us; 977us; 0us; 16530us; 0us; 16531us; 5us; 32768us; 10us; 991us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 195us; 977us; 0us; 16532us; 0us; 16533us; 0us; 16534us; 0us; 16535us; 1us; 16536us; 77us; 1712us; 85us; 16507us; 13us; 16542us; 24us; 16542us; 25us; 16542us; 29us; 16542us; 30us; 16542us; 31us; 16542us; 32us; 16542us; 36us; 16542us; 37us; 16542us; 38us; 16542us; 39us; 16542us; 40us; 16542us; 42us; 16542us; 43us; 16542us; 44us; 16542us; 45us; 16542us; 55us; 16542us; 62us; 16542us; 70us; 16542us; 71us; 16542us; 72us; 16542us; 73us; 299us; 74us; 16542us; 75us; 16542us; 86us; 16542us; 88us; 38us; 89us; 16542us; 90us; 16542us; 92us; 16542us; 98us; 16542us; 100us; 16542us; 101us; 693us; 106us; 16542us; 107us; 16542us; 108us; 16542us; 114us; 16542us; 115us; 16542us; 116us; 16542us; 117us; 16542us; 119us; 16542us; 121us; 16542us; 122us; 16542us; 123us; 16542us; 124us; 16542us; 125us; 16542us; 126us; 16542us; 130us; 16542us; 133us; 16542us; 134us; 16542us; 136us; 16542us; 137us; 16542us; 146us; 16542us; 147us; 16542us; 148us; 16542us; 150us; 16542us; 154us; 16542us; 155us; 16542us; 158us; 16542us; 159us; 16542us; 162us; 16542us; 163us; 16542us; 164us; 16542us; 165us; 16542us; 166us; 16542us; 167us; 16542us; 168us; 16542us; 169us; 16542us; 170us; 16542us; 171us; 16542us; 172us; 16542us; 173us; 16542us; 174us; 16542us; 175us; 16542us; 176us; 16542us; 177us; 16542us; 179us; 16542us; 180us; 16542us; 182us; 16542us; 183us; 16542us; 186us; 16542us; 191us; 16542us; 192us; 16542us; 193us; 16542us; 194us; 16542us; 195us; 253us; 3us; 32768us; 10us; 991us; 142us; 290us; 195us; 977us; 0us; 16537us; 0us; 16538us; 0us; 16539us; 6us; 16542us; 19us; 16586us; 20us; 16586us; 22us; 380us; 73us; 299us; 142us; 16586us; 195us; 386us; 3us; 32768us; 19us; 1777us; 20us; 1778us; 142us; 1779us; 0us; 16540us; 0us; 16541us; 1us; 16543us; 73us; 299us; 0us; 16544us; 14us; 32768us; 10us; 991us; 16us; 1837us; 36us; 1806us; 37us; 1808us; 38us; 1811us; 39us; 1813us; 45us; 1710us; 60us; 1835us; 94us; 1836us; 108us; 1809us; 150us; 1814us; 163us; 330us; 191us; 1709us; 195us; 304us; 2us; 17398us; 21us; 1773us; 84us; 1774us; 8us; 32768us; 10us; 991us; 16us; 1837us; 36us; 1833us; 38us; 1834us; 54us; 302us; 60us; 1835us; 94us; 1836us; 195us; 977us; 1us; 17396us; 21us; 1785us; 0us; 16545us; 1us; 16903us; 54us; 305us; 1us; 17396us; 21us; 1785us; 0us; 16546us; 0us; 16547us; 0us; 16548us; 0us; 16549us; 9us; 17397us; 36us; 1805us; 37us; 1808us; 38us; 1810us; 39us; 1813us; 45us; 1710us; 108us; 1809us; 150us; 1814us; 163us; 330us; 191us; 1709us; 0us; 16550us; 3us; 17421us; 34us; 1803us; 35us; 1802us; 77us; 1712us; 28us; 17158us; 55us; 1501us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 92us; 1363us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16551us; 3us; 32768us; 22us; 319us; 45us; 1710us; 191us; 1709us; 3us; 17421us; 34us; 1803us; 35us; 1802us; 77us; 1712us; 28us; 17158us; 55us; 1501us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 92us; 1363us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16552us; 2us; 32768us; 45us; 1710us; 191us; 1709us; 4us; 32768us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 77us; 1712us; 2us; 17421us; 34us; 1803us; 35us; 1802us; 28us; 17158us; 55us; 1501us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 92us; 1363us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16553us; 1us; 32768us; 78us; 325us; 0us; 16554us; 1us; 32768us; 78us; 327us; 0us; 16555us; 1us; 17329us; 78us; 329us; 0us; 16556us; 1us; 32768us; 78us; 331us; 0us; 16557us; 10us; 32768us; 30us; 705us; 32us; 701us; 36us; 1805us; 37us; 1808us; 40us; 714us; 47us; 333us; 108us; 1809us; 109us; 449us; 137us; 699us; 162us; 695us; 0us; 16558us; 0us; 16559us; 0us; 16560us; 0us; 16561us; 3us; 16618us; 42us; 479us; 43us; 478us; 44us; 480us; 1us; 16686us; 85us; 587us; 0us; 16562us; 1us; 16542us; 73us; 299us; 1us; 16564us; 131us; 340us; 0us; 16563us; 40us; 16542us; 10us; 16565us; 14us; 16565us; 15us; 16565us; 16us; 16565us; 17us; 16565us; 19us; 16565us; 20us; 16565us; 21us; 16565us; 30us; 16565us; 32us; 16565us; 36us; 16565us; 37us; 16565us; 38us; 16565us; 39us; 16565us; 40us; 16565us; 46us; 16565us; 47us; 16565us; 49us; 16565us; 50us; 16565us; 51us; 16565us; 53us; 16565us; 67us; 16565us; 69us; 344us; 73us; 299us; 84us; 16565us; 87us; 293us; 88us; 16565us; 101us; 16565us; 108us; 16565us; 109us; 16565us; 111us; 16565us; 119us; 16565us; 121us; 16565us; 131us; 16565us; 137us; 16565us; 142us; 16565us; 150us; 16565us; 151us; 16565us; 162us; 16565us; 195us; 16565us; 6us; 16542us; 22us; 354us; 48us; 553us; 55us; 555us; 73us; 299us; 111us; 554us; 152us; 366us; 0us; 16566us; 0us; 16567us; 3us; 16624us; 42us; 479us; 43us; 478us; 44us; 480us; 2us; 17421us; 34us; 1803us; 35us; 1802us; 1us; 32768us; 92us; 823us; 1us; 16633us; 132us; 496us; 1us; 32768us; 69us; 352us; 6us; 16542us; 22us; 354us; 48us; 553us; 55us; 555us; 73us; 299us; 111us; 554us; 152us; 366us; 0us; 16568us; 11us; 16542us; 10us; 16586us; 15us; 16586us; 16us; 16586us; 17us; 16586us; 22us; 376us; 48us; 553us; 55us; 555us; 73us; 299us; 111us; 554us; 152us; 366us; 195us; 386us; 1us; 17396us; 21us; 1785us; 7us; 16542us; 10us; 16586us; 15us; 16586us; 16us; 16586us; 17us; 16586us; 73us; 299us; 87us; 16586us; 195us; 386us; 1us; 16628us; 87us; 485us; 5us; 32768us; 10us; 991us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 195us; 977us; 1us; 16628us; 87us; 485us; 0us; 16569us; 0us; 16570us; 1us; 16628us; 87us; 485us; 0us; 16571us; 0us; 16572us; 0us; 16573us; 1us; 32768us; 120us; 367us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 73us; 299us; 75us; 1560us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16574us; 0us; 16575us; 5us; 16542us; 10us; 16586us; 22us; 380us; 73us; 299us; 142us; 16586us; 195us; 374us; 3us; 32768us; 10us; 991us; 142us; 372us; 195us; 977us; 0us; 16576us; 0us; 16577us; 4us; 16542us; 10us; 16586us; 73us; 299us; 142us; 375us; 195us; 386us; 0us; 16578us; 6us; 16542us; 10us; 16586us; 15us; 16586us; 16us; 16586us; 17us; 16586us; 73us; 299us; 195us; 386us; 5us; 32768us; 10us; 991us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 195us; 977us; 0us; 16579us; 0us; 16580us; 6us; 16542us; 10us; 16586us; 15us; 16586us; 16us; 16586us; 17us; 16586us; 73us; 299us; 195us; 386us; 5us; 32768us; 10us; 991us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 195us; 977us; 0us; 16581us; 0us; 16582us; 0us; 16583us; 0us; 16584us; 10us; 16542us; 10us; 16586us; 15us; 16586us; 16us; 16586us; 17us; 16586us; 19us; 16586us; 20us; 16586us; 73us; 299us; 87us; 16586us; 142us; 16586us; 195us; 386us; 0us; 16585us; 2us; 17398us; 21us; 1773us; 84us; 1774us; 10us; 16542us; 10us; 16586us; 15us; 16586us; 16us; 16586us; 17us; 16586us; 19us; 16586us; 20us; 16586us; 73us; 299us; 87us; 16586us; 142us; 16586us; 195us; 386us; 0us; 16587us; 1us; 17404us; 110us; 1788us; 0us; 16588us; 1us; 17404us; 110us; 1788us; 2us; 32768us; 20us; 395us; 195us; 396us; 0us; 16589us; 0us; 16590us; 1us; 16591us; 131us; 398us; 1us; 17404us; 110us; 1788us; 0us; 16592us; 1us; 16542us; 73us; 299us; 36us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 17226us; 78us; 1538us; 1us; 32768us; 69us; 404us; 71us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16593us; 36us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 17226us; 78us; 1538us; 3us; 32768us; 26us; 393us; 69us; 409us; 87us; 391us; 71us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16594us; 0us; 16595us; 1us; 16596us; 47us; 413us; 0us; 16597us; 3us; 16624us; 42us; 479us; 43us; 478us; 44us; 480us; 3us; 16624us; 42us; 479us; 43us; 478us; 44us; 480us; 15us; 32768us; 14us; 557us; 30us; 705us; 32us; 701us; 40us; 714us; 46us; 332us; 47us; 334us; 49us; 412us; 50us; 335us; 51us; 336us; 53us; 488us; 109us; 449us; 111us; 556us; 119us; 441us; 137us; 699us; 162us; 695us; 49us; 32768us; 14us; 557us; 30us; 705us; 32us; 701us; 40us; 714us; 45us; 1710us; 46us; 332us; 47us; 334us; 49us; 412us; 50us; 335us; 51us; 336us; 53us; 488us; 55us; 541us; 57us; 628us; 66us; 1600us; 72us; 544us; 74us; 535us; 88us; 1629us; 91us; 1703us; 92us; 532us; 106us; 1651us; 109us; 449us; 111us; 556us; 113us; 1649us; 119us; 441us; 122us; 1650us; 137us; 699us; 148us; 1648us; 162us; 695us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16598us; 0us; 16599us; 2us; 17404us; 109us; 455us; 110us; 1788us; 1us; 17392us; 19us; 1783us; 0us; 16600us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 7us; 16626us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 87us; 482us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 0us; 16601us; 1us; 17404us; 110us; 1788us; 3us; 32768us; 92us; 1715us; 100us; 1720us; 191us; 1709us; 2us; 16683us; 33us; 1804us; 160us; 17423us; 1us; 32768us; 78us; 430us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 73us; 299us; 75us; 1560us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 2us; 16480us; 26us; 198us; 87us; 196us; 1us; 17392us; 19us; 1783us; 0us; 16602us; 0us; 16603us; 1us; 17392us; 19us; 1783us; 0us; 16604us; 1us; 17392us; 19us; 1783us; 0us; 16605us; 1us; 17392us; 19us; 1783us; 0us; 16606us; 35us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 16633us; 132us; 496us; 1us; 32768us; 69us; 444us; 71us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 17392us; 19us; 1783us; 0us; 16607us; 1us; 16542us; 73us; 299us; 0us; 16608us; 1us; 17406us; 118us; 1789us; 3us; 16618us; 42us; 479us; 43us; 478us; 44us; 480us; 1us; 32768us; 191us; 1709us; 1us; 32768us; 78us; 453us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16609us; 1us; 17406us; 118us; 1789us; 3us; 16618us; 42us; 479us; 43us; 478us; 44us; 480us; 1us; 32768us; 191us; 1709us; 1us; 16611us; 78us; 463us; 1us; 32768us; 69us; 460us; 71us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 2us; 16480us; 26us; 198us; 87us; 196us; 0us; 16610us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16612us; 1us; 16852us; 77us; 466us; 3us; 32768us; 92us; 1715us; 100us; 1720us; 191us; 1709us; 0us; 16613us; 1us; 32768us; 77us; 469us; 3us; 32768us; 92us; 1715us; 100us; 1720us; 191us; 1709us; 0us; 16614us; 0us; 16615us; 4us; 32768us; 66us; 473us; 92us; 1715us; 100us; 1720us; 191us; 1709us; 1us; 32768us; 77us; 474us; 3us; 32768us; 92us; 1715us; 100us; 1720us; 191us; 1709us; 0us; 16616us; 0us; 16617us; 0us; 16619us; 0us; 16620us; 0us; 16621us; 0us; 16622us; 0us; 16623us; 2us; 16542us; 22us; 502us; 73us; 299us; 3us; 32768us; 19us; 1777us; 20us; 1778us; 142us; 1779us; 0us; 16625us; 6us; 16542us; 19us; 16586us; 20us; 16586us; 22us; 380us; 73us; 299us; 142us; 16586us; 195us; 386us; 3us; 32768us; 19us; 1777us; 20us; 1778us; 142us; 1779us; 0us; 16627us; 37us; 32768us; 10us; 991us; 16us; 1837us; 36us; 1833us; 38us; 1834us; 45us; 1710us; 55us; 1638us; 60us; 1835us; 66us; 1632us; 88us; 1629us; 91us; 1703us; 92us; 1622us; 94us; 1836us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 977us; 31us; 16636us; 34us; 1803us; 35us; 1802us; 55us; 17421us; 71us; 17421us; 72us; 17421us; 74us; 17421us; 92us; 17421us; 106us; 17421us; 122us; 17421us; 132us; 499us; 136us; 17421us; 148us; 17421us; 155us; 17421us; 165us; 17421us; 166us; 17421us; 167us; 17421us; 168us; 17421us; 169us; 17421us; 170us; 17421us; 171us; 17421us; 172us; 17421us; 173us; 17421us; 174us; 17421us; 175us; 17421us; 176us; 17421us; 177us; 17421us; 179us; 17421us; 180us; 17421us; 192us; 17421us; 193us; 17421us; 194us; 17421us; 0us; 16629us; 28us; 32768us; 55us; 1501us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 92us; 1363us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 16636us; 132us; 499us; 0us; 16630us; 0us; 16631us; 0us; 16632us; 1us; 32768us; 191us; 1709us; 0us; 16634us; 0us; 16635us; 2us; 32768us; 154us; 501us; 191us; 1709us; 0us; 16637us; 0us; 16638us; 1us; 16542us; 73us; 299us; 5us; 32768us; 10us; 991us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 195us; 977us; 0us; 16639us; 0us; 16640us; 0us; 16641us; 2us; 17398us; 21us; 1773us; 84us; 1774us; 14us; 16542us; 10us; 16643us; 14us; 16643us; 15us; 16643us; 16us; 16643us; 17us; 16643us; 19us; 16643us; 20us; 16643us; 21us; 16643us; 59us; 16643us; 60us; 16643us; 61us; 16643us; 73us; 299us; 111us; 16643us; 142us; 16643us; 0us; 16642us; 3us; 32768us; 47us; 521us; 50us; 522us; 195us; 518us; 4us; 17404us; 47us; 521us; 50us; 522us; 110us; 1788us; 195us; 518us; 3us; 17404us; 109us; 455us; 110us; 1788us; 195us; 517us; 1us; 17392us; 19us; 1783us; 0us; 16644us; 1us; 17392us; 19us; 1783us; 0us; 16645us; 0us; 16646us; 1us; 17404us; 110us; 1788us; 1us; 17392us; 19us; 1783us; 0us; 16647us; 0us; 16648us; 0us; 16649us; 3us; 16624us; 42us; 479us; 43us; 478us; 44us; 480us; 34us; 32768us; 45us; 1710us; 55us; 541us; 57us; 628us; 66us; 1600us; 72us; 544us; 74us; 535us; 88us; 1629us; 91us; 1703us; 92us; 532us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 2us; 17250us; 77us; 1712us; 155us; 526us; 1us; 32768us; 193us; 527us; 2us; 32768us; 10us; 991us; 195us; 977us; 0us; 16650us; 0us; 16651us; 0us; 16652us; 0us; 16653us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 550us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1652us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 16654us; 2us; 16542us; 73us; 299us; 195us; 539us; 5us; 32768us; 10us; 991us; 59us; 1818us; 60us; 1815us; 61us; 1817us; 195us; 977us; 0us; 16655us; 0us; 16656us; 3us; 32768us; 59us; 1818us; 60us; 1815us; 61us; 1817us; 0us; 16657us; 2us; 32768us; 72us; 544us; 92us; 1639us; 0us; 16658us; 0us; 16659us; 2us; 16542us; 73us; 299us; 195us; 548us; 3us; 32768us; 10us; 991us; 65us; 1819us; 195us; 977us; 0us; 16660us; 0us; 16661us; 1us; 32768us; 65us; 1819us; 0us; 16662us; 30us; 32768us; 45us; 1710us; 55us; 1638us; 66us; 1632us; 88us; 1629us; 91us; 1703us; 92us; 1633us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 16798us; 88us; 552us; 0us; 16663us; 0us; 16664us; 0us; 16665us; 0us; 16666us; 0us; 16667us; 0us; 16668us; 5us; 32768us; 45us; 1710us; 91us; 1703us; 92us; 564us; 188us; 1706us; 191us; 1709us; 3us; 16669us; 33us; 1804us; 77us; 1712us; 160us; 17423us; 2us; 32768us; 45us; 1710us; 191us; 1709us; 1us; 16670us; 77us; 1712us; 0us; 16671us; 0us; 16672us; 1us; 16542us; 73us; 299us; 4us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 97us; 569us; 0us; 16673us; 2us; 16686us; 85us; 587us; 97us; 569us; 1us; 16679us; 97us; 570us; 1us; 16542us; 73us; 299us; 2us; 16542us; 73us; 299us; 143us; 579us; 0us; 16674us; 0us; 16675us; 2us; 32768us; 91us; 1703us; 188us; 1706us; 0us; 16676us; 1us; 32768us; 160us; 576us; 1us; 16542us; 73us; 299us; 1us; 32768us; 161us; 578us; 0us; 16677us; 0us; 16678us; 1us; 32768us; 160us; 581us; 3us; 16542us; 73us; 299us; 85us; 16680us; 161us; 16680us; 1us; 16686us; 85us; 587us; 1us; 32768us; 161us; 584us; 0us; 16681us; 0us; 16682us; 27us; 16684us; 10us; 16835us; 16us; 16835us; 21us; 16835us; 26us; 16835us; 36us; 16835us; 38us; 16835us; 57us; 16835us; 58us; 16835us; 59us; 16835us; 60us; 16835us; 61us; 16835us; 64us; 16835us; 69us; 16835us; 78us; 16835us; 79us; 16835us; 84us; 16835us; 85us; 16835us; 87us; 16835us; 89us; 16835us; 93us; 16835us; 94us; 16835us; 95us; 16835us; 97us; 16835us; 98us; 16835us; 127us; 16835us; 132us; 16835us; 195us; 16835us; 4us; 32768us; 51us; 594us; 91us; 1703us; 92us; 609us; 188us; 1706us; 1us; 16687us; 131us; 591us; 1us; 17223us; 131us; 591us; 1us; 17225us; 131us; 591us; 4us; 32768us; 51us; 594us; 91us; 1703us; 92us; 609us; 188us; 1706us; 0us; 16688us; 0us; 16689us; 2us; 32768us; 91us; 1703us; 188us; 1706us; 1us; 32768us; 78us; 596us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16690us; 2us; 32768us; 78us; 601us; 80us; 599us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16691us; 5us; 32768us; 55us; 602us; 92us; 606us; 148us; 605us; 152us; 616us; 191us; 603us; 0us; 16692us; 3us; 16699us; 33us; 1661us; 55us; 604us; 160us; 1663us; 0us; 16693us; 0us; 16694us; 1us; 16542us; 73us; 299us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 16695us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 4us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 102us; 619us; 1us; 32768us; 78us; 612us; 1us; 32768us; 92us; 613us; 1us; 16542us; 73us; 299us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 16696us; 2us; 32768us; 33us; 1661us; 160us; 1663us; 0us; 16697us; 0us; 16698us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 6us; 16700us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 6us; 16701us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 1us; 16542us; 73us; 299us; 0us; 16702us; 1us; 32768us; 57us; 628us; 1us; 16542us; 73us; 299us; 0us; 16703us; 2us; 16704us; 21us; 1785us; 57us; 17396us; 0us; 16705us; 1us; 16707us; 57us; 628us; 1us; 16542us; 73us; 299us; 0us; 16706us; 3us; 16618us; 42us; 479us; 43us; 478us; 44us; 480us; 3us; 32768us; 92us; 646us; 100us; 1720us; 191us; 1709us; 4us; 17396us; 21us; 1785us; 69us; 642us; 78us; 639us; 120us; 636us; 0us; 16708us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 74us; 535us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 17396us; 21us; 1785us; 0us; 16709us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 73us; 299us; 75us; 1560us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 17396us; 21us; 1785us; 0us; 16710us; 18us; 32768us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 17396us; 21us; 1785us; 0us; 16711us; 0us; 16712us; 29us; 32768us; 57us; 1755us; 62us; 1737us; 63us; 1735us; 69us; 1739us; 70us; 649us; 75us; 1743us; 79us; 647us; 83us; 1747us; 89us; 1744us; 90us; 1745us; 96us; 1738us; 102us; 1740us; 143us; 1750us; 145us; 1746us; 155us; 1752us; 158us; 1749us; 160us; 1741us; 161us; 1742us; 181us; 1748us; 182us; 1736us; 183us; 1733us; 184us; 1732us; 185us; 1734us; 186us; 1727us; 187us; 1731us; 188us; 1730us; 189us; 1729us; 190us; 1728us; 195us; 1718us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 16713us; 1us; 32768us; 58us; 650us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 16714us; 4us; 17329us; 21us; 1785us; 57us; 17396us; 69us; 654us; 120us; 658us; 0us; 16715us; 18us; 32768us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 17396us; 21us; 1785us; 45us; 16716us; 10us; 16719us; 14us; 16719us; 15us; 16719us; 16us; 16719us; 17us; 16719us; 19us; 16719us; 20us; 16719us; 21us; 16719us; 30us; 16719us; 32us; 16719us; 36us; 16719us; 37us; 16719us; 38us; 16719us; 39us; 16719us; 40us; 16719us; 42us; 16719us; 43us; 16719us; 44us; 16719us; 46us; 16719us; 47us; 16719us; 49us; 16719us; 50us; 16719us; 51us; 16719us; 53us; 16719us; 67us; 16719us; 73us; 16719us; 84us; 16719us; 87us; 16719us; 88us; 16719us; 93us; 16719us; 94us; 16719us; 95us; 16719us; 101us; 16719us; 108us; 16719us; 109us; 16719us; 111us; 16719us; 119us; 16719us; 121us; 16719us; 131us; 16719us; 137us; 16719us; 142us; 16719us; 150us; 16719us; 151us; 16719us; 162us; 16719us; 195us; 16719us; 0us; 16717us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 74us; 535us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16718us; 1us; 16721us; 96us; 661us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16720us; 1us; 17329us; 78us; 664us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 6us; 16722us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 6us; 16723us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 0us; 16724us; 0us; 16725us; 2us; 17398us; 21us; 1773us; 84us; 1774us; 7us; 16542us; 10us; 17397us; 59us; 17397us; 60us; 17397us; 61us; 17397us; 65us; 17397us; 73us; 299us; 195us; 17397us; 0us; 16726us; 0us; 16727us; 1us; 17406us; 118us; 1789us; 0us; 16728us; 3us; 16618us; 42us; 479us; 43us; 478us; 44us; 480us; 1us; 32768us; 191us; 1709us; 1us; 32768us; 78us; 678us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16729us; 1us; 16628us; 87us; 485us; 0us; 16730us; 0us; 16731us; 1us; 16542us; 73us; 299us; 3us; 16618us; 42us; 479us; 43us; 478us; 44us; 480us; 1us; 32768us; 191us; 1709us; 1us; 16735us; 69us; 691us; 0us; 16732us; 1us; 16733us; 120us; 689us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 74us; 535us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16734us; 2us; 32768us; 45us; 1710us; 191us; 1709us; 1us; 16736us; 77us; 1712us; 2us; 32768us; 45us; 1710us; 191us; 1709us; 1us; 16737us; 77us; 1712us; 1us; 17400us; 103us; 1787us; 2us; 16542us; 73us; 299us; 195us; 749us; 0us; 16738us; 0us; 16739us; 71us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16740us; 1us; 17400us; 103us; 1787us; 2us; 16542us; 73us; 299us; 195us; 749us; 3us; 32768us; 10us; 991us; 19us; 712us; 195us; 977us; 0us; 16741us; 71us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 3us; 32768us; 10us; 991us; 19us; 712us; 195us; 977us; 0us; 16742us; 0us; 16743us; 0us; 16744us; 0us; 16745us; 0us; 16746us; 0us; 16747us; 0us; 16748us; 1us; 16542us; 73us; 299us; 3us; 16618us; 42us; 479us; 43us; 478us; 44us; 480us; 1us; 32768us; 191us; 1709us; 2us; 17421us; 34us; 1803us; 35us; 1802us; 1us; 32768us; 92us; 719us; 4us; 16542us; 73us; 299us; 93us; 16752us; 94us; 16752us; 95us; 16752us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 16749us; 1us; 16750us; 97us; 724us; 1us; 16751us; 97us; 726us; 1us; 16542us; 73us; 299us; 0us; 16753us; 1us; 16542us; 73us; 299us; 0us; 16754us; 3us; 32768us; 41us; 738us; 45us; 1710us; 191us; 1709us; 6us; 16755us; 34us; 1803us; 35us; 1802us; 70us; 17421us; 89us; 737us; 96us; 736us; 191us; 1709us; 0us; 16756us; 1us; 16757us; 77us; 1712us; 5us; 16762us; 34us; 1803us; 35us; 1802us; 70us; 17421us; 89us; 737us; 96us; 736us; 1us; 32768us; 70us; 734us; 1us; 32768us; 58us; 735us; 0us; 16758us; 0us; 16759us; 0us; 16760us; 1us; 32768us; 96us; 740us; 1us; 16763us; 96us; 740us; 0us; 16761us; 3us; 32768us; 41us; 739us; 45us; 1710us; 191us; 1709us; 1us; 16766us; 131us; 744us; 0us; 16764us; 2us; 16542us; 73us; 299us; 195us; 749us; 1us; 16766us; 131us; 744us; 0us; 16765us; 1us; 17404us; 110us; 1788us; 0us; 16767us; 0us; 16768us; 1us; 17406us; 118us; 1789us; 36us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 17226us; 78us; 1538us; 3us; 32768us; 10us; 991us; 69us; 754us; 195us; 977us; 72us; 32768us; 13us; 1093us; 22us; 758us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 756us; 0us; 16769us; 0us; 16770us; 0us; 16771us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 5us; 32768us; 10us; 991us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 195us; 977us; 0us; 16772us; 0us; 16773us; 0us; 16774us; 0us; 16777us; 1us; 16775us; 85us; 766us; 0us; 16776us; 2us; 32768us; 91us; 1703us; 188us; 1706us; 2us; 32768us; 69us; 768us; 131us; 770us; 71us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16778us; 2us; 32768us; 91us; 1703us; 188us; 1706us; 0us; 16779us; 0us; 16780us; 2us; 32768us; 55us; 776us; 78us; 774us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16781us; 0us; 16782us; 0us; 16783us; 0us; 16784us; 0us; 16785us; 0us; 16786us; 0us; 16787us; 0us; 16788us; 0us; 16789us; 0us; 16790us; 0us; 16791us; 0us; 16792us; 0us; 16793us; 0us; 16794us; 0us; 16795us; 1us; 16795us; 143us; 879us; 0us; 16796us; 0us; 16797us; 0us; 16798us; 0us; 16799us; 1us; 16802us; 185us; 796us; 1us; 32768us; 177us; 797us; 0us; 16800us; 1us; 32768us; 177us; 799us; 1us; 16803us; 185us; 800us; 1us; 32768us; 177us; 801us; 0us; 16801us; 0us; 16804us; 2us; 32768us; 62us; 798us; 177us; 795us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 16805us; 0us; 16806us; 2us; 32768us; 92us; 803us; 177us; 802us; 0us; 16807us; 1us; 16808us; 33us; 810us; 1us; 32768us; 160us; 1680us; 0us; 16809us; 5us; 16810us; 57us; 841us; 79us; 842us; 89us; 849us; 97us; 847us; 132us; 839us; 0us; 16811us; 1us; 32768us; 191us; 1709us; 0us; 16812us; 1us; 16814us; 78us; 818us; 2us; 16815us; 78us; 818us; 97us; 821us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16813us; 3us; 32768us; 73us; 299us; 75us; 814us; 191us; 1709us; 3us; 32768us; 73us; 299us; 75us; 814us; 191us; 1709us; 0us; 16816us; 8us; 32768us; 10us; 991us; 73us; 299us; 75us; 814us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 191us; 1709us; 195us; 828us; 5us; 32768us; 10us; 991us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 195us; 977us; 0us; 16817us; 0us; 16818us; 0us; 16819us; 3us; 16903us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 16820us; 0us; 16821us; 3us; 16823us; 79us; 842us; 89us; 849us; 97us; 847us; 1us; 16824us; 79us; 842us; 2us; 16828us; 79us; 842us; 89us; 849us; 2us; 16829us; 79us; 842us; 89us; 849us; 1us; 16830us; 79us; 842us; 1us; 16831us; 79us; 842us; 6us; 32768us; 57us; 841us; 69us; 1071us; 79us; 842us; 89us; 849us; 97us; 847us; 132us; 839us; 6us; 32768us; 57us; 841us; 69us; 1077us; 79us; 842us; 89us; 849us; 97us; 847us; 132us; 839us; 1us; 32768us; 191us; 1709us; 0us; 16822us; 36us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 36us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 16825us; 97us; 846us; 0us; 16826us; 0us; 16827us; 36us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 36us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 36us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 36us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 2us; 17398us; 21us; 1773us; 84us; 1774us; 0us; 16832us; 1us; 17397us; 191us; 1709us; 0us; 16833us; 1us; 32768us; 69us; 856us; 2us; 17368us; 69us; 856us; 77us; 1762us; 37us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 6us; 16834us; 57us; 928us; 78us; 931us; 79us; 934us; 89us; 939us; 97us; 937us; 132us; 926us; 29us; 16685us; 10us; 16854us; 16us; 16854us; 21us; 16854us; 26us; 16854us; 33us; 1804us; 36us; 16854us; 38us; 16854us; 57us; 16854us; 58us; 16854us; 59us; 16854us; 60us; 16854us; 61us; 16854us; 64us; 16854us; 69us; 16854us; 78us; 16854us; 79us; 16854us; 84us; 16854us; 85us; 16854us; 87us; 16854us; 89us; 16854us; 93us; 16854us; 94us; 16854us; 95us; 16854us; 97us; 16854us; 98us; 16854us; 127us; 16854us; 132us; 16854us; 160us; 17423us; 195us; 16854us; 37us; 32768us; 34us; 861us; 35us; 863us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 92us; 868us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16836us; 35us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 92us; 868us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16837us; 35us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 92us; 868us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16838us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1632us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1633us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16839us; 0us; 16840us; 63us; 16868us; 10us; 991us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 57us; 1755us; 62us; 1737us; 63us; 1735us; 66us; 465us; 69us; 1739us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 891us; 82us; 865us; 83us; 1747us; 89us; 1744us; 90us; 1745us; 92us; 898us; 96us; 1738us; 100us; 1720us; 102us; 1740us; 106us; 896us; 122us; 895us; 143us; 1750us; 145us; 1746us; 148us; 897us; 155us; 1351us; 158us; 1749us; 160us; 1741us; 161us; 1742us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 181us; 1748us; 182us; 1736us; 183us; 1733us; 184us; 1732us; 185us; 1734us; 186us; 1727us; 187us; 1731us; 188us; 1730us; 189us; 1729us; 190us; 1728us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 902us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 16841us; 0us; 16842us; 37us; 16846us; 34us; 876us; 35us; 874us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16843us; 35us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16844us; 35us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16845us; 0us; 16847us; 1us; 32768us; 167us; 880us; 0us; 16848us; 2us; 32768us; 45us; 1710us; 191us; 1709us; 3us; 32768us; 59us; 1818us; 60us; 1815us; 61us; 1817us; 0us; 16849us; 37us; 16884us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 32768us; 58us; 886us; 0us; 16850us; 37us; 16884us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 32768us; 64us; 889us; 0us; 16851us; 1us; 32768us; 191us; 1709us; 1us; 17353us; 191us; 1709us; 0us; 16853us; 0us; 16854us; 0us; 16855us; 0us; 16856us; 0us; 16857us; 0us; 16858us; 63us; 16868us; 10us; 991us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 57us; 1755us; 62us; 1737us; 63us; 1735us; 66us; 465us; 69us; 1739us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 891us; 82us; 865us; 83us; 1747us; 89us; 1744us; 90us; 1745us; 92us; 898us; 96us; 1738us; 100us; 1720us; 102us; 1740us; 106us; 896us; 122us; 895us; 143us; 1750us; 145us; 1746us; 148us; 897us; 155us; 1351us; 158us; 1749us; 160us; 1741us; 161us; 1742us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 181us; 1748us; 182us; 1736us; 183us; 1733us; 184us; 1732us; 185us; 1734us; 186us; 1727us; 187us; 1731us; 188us; 1730us; 189us; 1729us; 190us; 1728us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 902us; 5us; 32768us; 10us; 991us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 195us; 977us; 0us; 16859us; 0us; 16860us; 3us; 16903us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 2us; 16861us; 33us; 17333us; 160us; 17333us; 0us; 16862us; 1us; 32768us; 92us; 906us; 39us; 32768us; 10us; 991us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 910us; 6us; 16871us; 10us; 991us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 97us; 936us; 195us; 977us; 0us; 16863us; 0us; 16864us; 3us; 16903us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 16865us; 0us; 16866us; 6us; 16867us; 57us; 928us; 78us; 931us; 79us; 934us; 89us; 939us; 97us; 937us; 132us; 926us; 4us; 16870us; 78us; 931us; 79us; 934us; 89us; 939us; 97us; 937us; 3us; 16874us; 78us; 931us; 79us; 934us; 89us; 939us; 2us; 16875us; 78us; 931us; 79us; 934us; 3us; 16877us; 78us; 931us; 79us; 934us; 89us; 939us; 3us; 16878us; 78us; 931us; 79us; 934us; 89us; 939us; 2us; 16879us; 78us; 931us; 79us; 934us; 6us; 32768us; 57us; 928us; 78us; 931us; 79us; 934us; 89us; 939us; 97us; 937us; 132us; 926us; 2us; 16880us; 78us; 931us; 79us; 934us; 6us; 16883us; 57us; 928us; 78us; 931us; 79us; 934us; 89us; 939us; 97us; 937us; 132us; 926us; 8us; 17398us; 21us; 1773us; 57us; 928us; 78us; 931us; 79us; 934us; 84us; 1774us; 89us; 939us; 97us; 937us; 132us; 926us; 15us; 32768us; 10us; 991us; 16us; 1837us; 36us; 1833us; 38us; 1834us; 57us; 928us; 60us; 1835us; 69us; 1413us; 78us; 931us; 79us; 934us; 89us; 939us; 94us; 1836us; 97us; 937us; 127us; 1409us; 132us; 926us; 195us; 982us; 7us; 17024us; 57us; 928us; 78us; 931us; 79us; 934us; 85us; 1208us; 89us; 939us; 97us; 937us; 132us; 926us; 1us; 32768us; 191us; 1709us; 0us; 16869us; 37us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 16871us; 97us; 936us; 1us; 16872us; 89us; 938us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16873us; 37us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 37us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16876us; 37us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 37us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 37us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 37us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 2us; 17398us; 21us; 1773us; 84us; 1774us; 0us; 16881us; 2us; 17397us; 45us; 1710us; 191us; 1709us; 0us; 16882us; 2us; 32768us; 69us; 945us; 77us; 1712us; 37us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16885us; 37us; 16884us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16886us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 5us; 32768us; 10us; 991us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 195us; 977us; 0us; 16887us; 0us; 16888us; 0us; 16889us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 3us; 32768us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 0us; 16890us; 25us; 16891us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 1us; 16893us; 18us; 959us; 0us; 16892us; 1us; 16895us; 78us; 961us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16894us; 1us; 32768us; 10us; 964us; 0us; 16896us; 29us; 16899us; 21us; 1773us; 28us; 972us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 84us; 1774us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 104us; 970us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 31us; 16899us; 21us; 1773us; 28us; 972us; 58us; 17091us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 84us; 1774us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 17091us; 102us; 1147us; 104us; 970us; 128us; 1144us; 143us; 17091us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 30us; 16899us; 21us; 1773us; 28us; 972us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 84us; 1774us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 104us; 970us; 128us; 1144us; 143us; 1404us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 70us; 16898us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16897us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16900us; 1us; 32768us; 22us; 973us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 3us; 32768us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 0us; 16901us; 73us; 16902us; 13us; 1093us; 21us; 999us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 998us; 0us; 16903us; 2us; 16903us; 19us; 1793us; 138us; 1792us; 2us; 16903us; 19us; 1793us; 138us; 1792us; 2us; 16903us; 19us; 1793us; 138us; 1792us; 2us; 16903us; 30us; 1791us; 137us; 1790us; 2us; 16903us; 19us; 1793us; 138us; 1792us; 1us; 16903us; 58us; 1298us; 1us; 16903us; 58us; 1321us; 1us; 16903us; 156us; 1355us; 1us; 16903us; 64us; 1361us; 3us; 16903us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 3us; 16903us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 3us; 16903us; 59us; 1818us; 60us; 1815us; 61us; 1817us; 1us; 16903us; 65us; 1819us; 0us; 16904us; 1us; 32768us; 127us; 993us; 71us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 995us; 0us; 16905us; 0us; 16906us; 73us; 32768us; 13us; 1093us; 21us; 999us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 998us; 0us; 16907us; 0us; 16908us; 72us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1001us; 0us; 16909us; 0us; 16910us; 0us; 16911us; 0us; 16912us; 0us; 16913us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 4us; 32768us; 10us; 991us; 26us; 1191us; 87us; 1189us; 195us; 977us; 0us; 16914us; 0us; 16915us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 4us; 32768us; 10us; 991us; 26us; 1191us; 87us; 1189us; 195us; 977us; 0us; 16916us; 0us; 16917us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 5us; 32768us; 10us; 991us; 26us; 1191us; 87us; 1189us; 129us; 1017us; 195us; 977us; 0us; 16918us; 0us; 16919us; 71us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16920us; 72us; 32768us; 10us; 991us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 977us; 29us; 32768us; 10us; 991us; 28us; 1214us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 104us; 1213us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 195us; 977us; 0us; 16921us; 0us; 16922us; 0us; 16923us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16924us; 62us; 16926us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 159us; 1070us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16925us; 71us; 32768us; 13us; 1093us; 22us; 954us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16927us; 63us; 16929us; 13us; 1093us; 22us; 954us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 159us; 1070us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16928us; 72us; 32768us; 10us; 991us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 978us; 29us; 32768us; 10us; 991us; 30us; 1791us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 137us; 1790us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 195us; 977us; 72us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1038us; 4us; 32768us; 10us; 991us; 19us; 1793us; 138us; 1792us; 195us; 977us; 0us; 16930us; 0us; 16931us; 2us; 32768us; 19us; 1793us; 138us; 1792us; 0us; 16932us; 0us; 16933us; 0us; 16934us; 0us; 16935us; 44us; 32768us; 10us; 991us; 16us; 1837us; 36us; 1833us; 38us; 1834us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 60us; 1835us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 94us; 1836us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 981us; 10us; 17396us; 10us; 991us; 16us; 1837us; 21us; 1785us; 30us; 1791us; 36us; 1833us; 38us; 1834us; 60us; 1835us; 94us; 1836us; 137us; 1790us; 195us; 977us; 78us; 32768us; 10us; 991us; 13us; 1093us; 16us; 1837us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 36us; 1833us; 38us; 1834us; 40us; 714us; 45us; 1292us; 55us; 1300us; 60us; 1835us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 94us; 1836us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 979us; 9us; 32768us; 10us; 991us; 16us; 1837us; 19us; 1793us; 36us; 1833us; 38us; 1834us; 60us; 1835us; 94us; 1836us; 138us; 1792us; 195us; 977us; 0us; 16936us; 0us; 16937us; 0us; 16938us; 0us; 16939us; 0us; 16940us; 4us; 32768us; 10us; 991us; 30us; 1791us; 137us; 1790us; 195us; 977us; 73us; 32768us; 10us; 991us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 980us; 4us; 32768us; 10us; 991us; 19us; 1793us; 138us; 1792us; 195us; 977us; 0us; 16941us; 0us; 16942us; 0us; 16943us; 0us; 16944us; 0us; 16945us; 71us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 2us; 32768us; 19us; 1793us; 138us; 1792us; 0us; 16946us; 0us; 16947us; 0us; 16948us; 0us; 16949us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 25us; 16950us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 25us; 16951us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 36us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 32768us; 127us; 1073us; 1us; 17396us; 21us; 1785us; 71us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16952us; 36us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 3us; 32768us; 10us; 991us; 19us; 712us; 195us; 977us; 1us; 17396us; 21us; 1785us; 72us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1082us; 0us; 16953us; 0us; 16954us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 32768us; 127us; 1085us; 1us; 17396us; 21us; 1785us; 71us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16955us; 71us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 3us; 32768us; 10us; 991us; 19us; 712us; 195us; 977us; 0us; 16956us; 1us; 32768us; 98us; 1407us; 0us; 16957us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 25us; 16958us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16959us; 25us; 16963us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 20us; 16966us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 20us; 16967us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 9us; 16968us; 62us; 1161us; 79us; 1159us; 82us; 1132us; 96us; 1162us; 158us; 1158us; 183us; 1160us; 185us; 1163us; 188us; 1157us; 190us; 1164us; 20us; 16969us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 18us; 16970us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 96us; 1162us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 18us; 16971us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 96us; 1162us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 9us; 16972us; 62us; 1161us; 79us; 1159us; 82us; 1132us; 96us; 1162us; 158us; 1158us; 183us; 1160us; 185us; 1163us; 188us; 1157us; 190us; 1164us; 9us; 16973us; 62us; 1161us; 79us; 1159us; 82us; 1132us; 96us; 1162us; 158us; 1158us; 183us; 1160us; 185us; 1163us; 188us; 1157us; 190us; 1164us; 9us; 16974us; 62us; 1161us; 79us; 1159us; 82us; 1132us; 96us; 1162us; 158us; 1158us; 183us; 1160us; 185us; 1163us; 188us; 1157us; 190us; 1164us; 9us; 16975us; 62us; 1161us; 79us; 1159us; 82us; 1132us; 96us; 1162us; 158us; 1158us; 183us; 1160us; 185us; 1163us; 188us; 1157us; 190us; 1164us; 9us; 16976us; 62us; 1161us; 79us; 1159us; 82us; 1132us; 96us; 1162us; 158us; 1158us; 183us; 1160us; 185us; 1163us; 188us; 1157us; 190us; 1164us; 9us; 16978us; 62us; 1161us; 79us; 1159us; 82us; 1132us; 96us; 1162us; 158us; 1158us; 183us; 1160us; 185us; 1163us; 188us; 1157us; 190us; 1164us; 9us; 16979us; 62us; 1161us; 79us; 1159us; 82us; 1132us; 96us; 1162us; 158us; 1158us; 183us; 1160us; 185us; 1163us; 188us; 1157us; 190us; 1164us; 1us; 16980us; 190us; 1164us; 8us; 16981us; 62us; 1161us; 79us; 1159us; 82us; 1132us; 96us; 1162us; 158us; 1158us; 183us; 1160us; 185us; 1163us; 190us; 1164us; 4us; 16982us; 96us; 1162us; 158us; 1158us; 185us; 1163us; 190us; 1164us; 4us; 16983us; 96us; 1162us; 158us; 1158us; 185us; 1163us; 190us; 1164us; 1us; 16984us; 190us; 1164us; 1us; 16985us; 190us; 1164us; 1us; 16986us; 190us; 1164us; 25us; 17023us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 25us; 17027us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 25us; 17031us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 29us; 32768us; 10us; 991us; 28us; 1214us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 104us; 1213us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 195us; 977us; 23us; 17036us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 25us; 32768us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 23us; 17039us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 24us; 17091us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 24us; 17092us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 26us; 17147us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 143us; 1404us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 28us; 32768us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 105us; 1416us; 128us; 1144us; 139us; 1417us; 143us; 1404us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 26us; 17143us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 143us; 1405us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 25us; 17144us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 25us; 17151us; 62us; 1161us; 63us; 1153us; 69us; 1151us; 79us; 1159us; 80us; 1134us; 81us; 1136us; 82us; 1132us; 83us; 1138us; 89us; 1148us; 90us; 1149us; 96us; 1162us; 97us; 1230us; 102us; 1147us; 128us; 1144us; 145us; 1145us; 158us; 1158us; 160us; 1154us; 161us; 1156us; 183us; 1160us; 184us; 1150us; 185us; 1163us; 187us; 1146us; 188us; 1157us; 189us; 1152us; 190us; 1164us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16960us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16961us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16962us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 17007us; 68us; 1140us; 71us; 32768us; 13us; 1093us; 22us; 954us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16964us; 1us; 16965us; 97us; 1228us; 6us; 16965us; 10us; 991us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 97us; 1228us; 195us; 977us; 71us; 32768us; 13us; 1093us; 16us; 1165us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1166us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1167us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1168us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1169us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1170us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1171us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1172us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1173us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1174us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 73us; 32768us; 10us; 991us; 13us; 1093us; 16us; 1175us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 977us; 0us; 16977us; 71us; 32768us; 13us; 1093us; 16us; 1176us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1177us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1178us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1179us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1180us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1181us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1182us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1183us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 71us; 32768us; 13us; 1093us; 16us; 1184us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 16987us; 0us; 16988us; 0us; 16989us; 0us; 16990us; 0us; 16991us; 0us; 16992us; 0us; 16993us; 0us; 16994us; 0us; 16995us; 0us; 16996us; 0us; 16997us; 0us; 16998us; 0us; 16999us; 0us; 17000us; 0us; 17001us; 0us; 17002us; 0us; 17003us; 0us; 17004us; 0us; 17005us; 0us; 17006us; 0us; 17008us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 17009us; 39us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 57us; 1196us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1199us; 0us; 17010us; 39us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 57us; 1196us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1199us; 3us; 32768us; 10us; 991us; 20us; 1193us; 195us; 977us; 0us; 17011us; 0us; 17012us; 0us; 17013us; 38us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1198us; 0us; 17014us; 0us; 17015us; 0us; 17016us; 0us; 17017us; 2us; 32768us; 98us; 1209us; 195us; 1207us; 2us; 17018us; 57us; 1203us; 195us; 1206us; 38us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1205us; 0us; 17019us; 0us; 17020us; 0us; 17021us; 0us; 17022us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17025us; 3us; 17030us; 27us; 1220us; 140us; 1219us; 141us; 1225us; 0us; 17026us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 32768us; 22us; 1215us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 5us; 32768us; 10us; 991us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 195us; 977us; 0us; 17028us; 0us; 17029us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 32768us; 22us; 1221us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 5us; 32768us; 10us; 991us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 195us; 977us; 0us; 17032us; 0us; 17033us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17034us; 0us; 17035us; 77us; 32768us; 10us; 991us; 13us; 1093us; 16us; 1837us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 36us; 1833us; 38us; 1834us; 40us; 714us; 45us; 1292us; 55us; 1300us; 60us; 1835us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 94us; 1836us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 977us; 0us; 17037us; 77us; 32768us; 10us; 991us; 13us; 1093us; 16us; 1837us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 36us; 1833us; 38us; 1834us; 40us; 714us; 45us; 1292us; 55us; 1300us; 60us; 1835us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 94us; 1836us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 977us; 0us; 17038us; 44us; 32768us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 119us; 1250us; 122us; 1338us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 44us; 17347us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 119us; 1250us; 122us; 1338us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17040us; 44us; 32768us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 119us; 1250us; 122us; 1338us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 44us; 17343us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 119us; 1250us; 122us; 1338us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17041us; 44us; 32768us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 119us; 1250us; 122us; 1338us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 44us; 17346us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 119us; 1250us; 122us; 1338us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17042us; 44us; 32768us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 119us; 1250us; 122us; 1338us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 44us; 17359us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 119us; 1250us; 122us; 1338us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17043us; 44us; 32768us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 119us; 1250us; 122us; 1338us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 44us; 17354us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 119us; 1250us; 122us; 1338us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17044us; 44us; 32768us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 119us; 1250us; 122us; 1338us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 44us; 17355us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 119us; 1250us; 122us; 1338us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17045us; 31us; 32768us; 45us; 1710us; 55us; 1638us; 66us; 1632us; 88us; 1629us; 91us; 1703us; 92us; 1622us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1259us; 31us; 32768us; 45us; 1710us; 55us; 1638us; 66us; 1632us; 88us; 1629us; 91us; 1703us; 92us; 1622us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1259us; 2us; 17421us; 34us; 1803us; 35us; 1802us; 35us; 17191us; 14us; 17194us; 21us; 17194us; 26us; 17194us; 34us; 1803us; 35us; 1802us; 55us; 17421us; 71us; 17421us; 72us; 17421us; 74us; 17421us; 87us; 17194us; 92us; 17421us; 106us; 17421us; 111us; 17194us; 122us; 17421us; 136us; 17421us; 148us; 17421us; 155us; 17421us; 165us; 17421us; 166us; 17421us; 167us; 17421us; 168us; 17421us; 169us; 17421us; 170us; 17421us; 171us; 17421us; 172us; 17421us; 173us; 17421us; 174us; 17421us; 175us; 17421us; 176us; 17421us; 177us; 17421us; 179us; 17421us; 180us; 17421us; 192us; 17421us; 193us; 17421us; 194us; 17421us; 29us; 32768us; 55us; 1501us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 92us; 1363us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1258us; 29us; 32768us; 55us; 1501us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 92us; 1363us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1258us; 0us; 17046us; 5us; 17046us; 14us; 17193us; 26us; 17193us; 87us; 17193us; 111us; 17193us; 132us; 499us; 0us; 17047us; 0us; 17048us; 44us; 32768us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 119us; 1250us; 122us; 1338us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17049us; 44us; 32768us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 119us; 1250us; 122us; 1338us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17050us; 36us; 17051us; 45us; 1292us; 55us; 1300us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1269us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 39us; 17051us; 26us; 1454us; 45us; 1292us; 55us; 1300us; 69us; 1441us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 87us; 1450us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1269us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 39us; 32768us; 26us; 1454us; 45us; 1292us; 55us; 1300us; 69us; 1441us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 87us; 1450us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1269us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17052us; 5us; 17053us; 33us; 1278us; 34us; 1277us; 35us; 1276us; 75us; 1290us; 77us; 1282us; 35us; 32768us; 45us; 1292us; 55us; 1300us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 5us; 17054us; 33us; 1278us; 34us; 1277us; 35us; 1276us; 75us; 1290us; 77us; 1282us; 5us; 17055us; 33us; 1278us; 34us; 1277us; 35us; 1276us; 75us; 1290us; 77us; 1282us; 2us; 17056us; 33us; 1278us; 34us; 1277us; 1us; 17057us; 33us; 1278us; 5us; 17059us; 33us; 1278us; 34us; 1277us; 35us; 1276us; 75us; 1290us; 77us; 1282us; 5us; 17287us; 33us; 1278us; 34us; 1277us; 35us; 1276us; 75us; 1290us; 77us; 1282us; 35us; 32768us; 45us; 1292us; 55us; 1300us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 35us; 32768us; 45us; 1292us; 55us; 1300us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 32768us; 160us; 1663us; 0us; 17058us; 35us; 32768us; 45us; 1292us; 55us; 1300us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 35us; 17337us; 45us; 1292us; 55us; 1300us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 7us; 17075us; 10us; 991us; 45us; 1306us; 70us; 1315us; 92us; 1308us; 100us; 1720us; 191us; 1709us; 195us; 977us; 0us; 17060us; 1us; 32768us; 77us; 1285us; 7us; 17075us; 10us; 991us; 45us; 1306us; 70us; 1315us; 92us; 1308us; 100us; 1720us; 191us; 1709us; 195us; 977us; 0us; 17061us; 3us; 32768us; 92us; 1715us; 100us; 1720us; 191us; 1709us; 3us; 17353us; 92us; 1715us; 100us; 1720us; 191us; 1709us; 0us; 17062us; 2us; 32768us; 92us; 1186us; 191us; 1185us; 0us; 17063us; 0us; 17064us; 0us; 17065us; 72us; 17140us; 10us; 991us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 983us; 3us; 32768us; 10us; 991us; 58us; 1296us; 195us; 977us; 0us; 17066us; 0us; 17067us; 0us; 17068us; 0us; 17069us; 2us; 32768us; 72us; 1504us; 92us; 1301us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17070us; 0us; 17071us; 0us; 17072us; 0us; 17073us; 0us; 17074us; 0us; 17076us; 89us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 57us; 1755us; 62us; 1233us; 63us; 1735us; 69us; 1739us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1288us; 79us; 1309us; 83us; 1747us; 86us; 1032us; 89us; 1245us; 90us; 1248us; 92us; 1365us; 96us; 1738us; 98us; 1095us; 100us; 1720us; 102us; 1740us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 143us; 1750us; 145us; 1746us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1351us; 158us; 1242us; 159us; 1070us; 160us; 1741us; 161us; 1742us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 181us; 1748us; 182us; 1239us; 183us; 1236us; 184us; 1732us; 185us; 1734us; 186us; 1281us; 187us; 1731us; 188us; 1730us; 189us; 1729us; 190us; 1728us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1718us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 1us; 32768us; 77us; 1311us; 1us; 32768us; 177us; 1312us; 0us; 17077us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 17078us; 75us; 32768us; 10us; 991us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 96us; 1331us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 143us; 1329us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 188us; 1332us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 984us; 2us; 32768us; 10us; 991us; 195us; 977us; 0us; 17079us; 3us; 32768us; 10us; 991us; 58us; 1319us; 195us; 977us; 0us; 17080us; 0us; 17081us; 0us; 17082us; 0us; 17083us; 1us; 17085us; 97us; 1324us; 73us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 96us; 1331us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 143us; 1329us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 188us; 1332us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17084us; 1us; 17090us; 143us; 1327us; 71us; 17087us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 188us; 1332us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17086us; 71us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 188us; 1332us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17088us; 0us; 17089us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17093us; 0us; 17094us; 0us; 17095us; 0us; 17096us; 0us; 17097us; 0us; 17098us; 0us; 17099us; 0us; 17100us; 0us; 17101us; 0us; 17102us; 72us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 142us; 1349us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1347us; 3us; 32768us; 10us; 991us; 142us; 1345us; 195us; 977us; 0us; 17103us; 0us; 17104us; 1us; 32768us; 142us; 1348us; 0us; 17105us; 0us; 17106us; 72us; 32768us; 10us; 991us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 985us; 73us; 32768us; 10us; 991us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 156us; 1753us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 985us; 3us; 32768us; 10us; 991us; 156us; 1353us; 195us; 977us; 0us; 17107us; 0us; 17108us; 0us; 17109us; 0us; 17110us; 72us; 17140us; 10us; 991us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 986us; 3us; 32768us; 10us; 991us; 64us; 1359us; 195us; 977us; 0us; 17111us; 0us; 17112us; 0us; 17113us; 0us; 17114us; 81us; 32768us; 10us; 991us; 13us; 1093us; 16us; 1375us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 36us; 1372us; 38us; 1373us; 40us; 714us; 45us; 1292us; 55us; 1300us; 60us; 1374us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 88us; 1418us; 89us; 1244us; 90us; 1247us; 92us; 1364us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 987us; 97us; 32768us; 10us; 991us; 13us; 1093us; 16us; 1375us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 36us; 1372us; 38us; 1373us; 40us; 714us; 45us; 1292us; 55us; 1300us; 57us; 1755us; 60us; 1374us; 62us; 1233us; 63us; 1735us; 69us; 1739us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1288us; 83us; 1747us; 86us; 1032us; 88us; 1418us; 89us; 1245us; 90us; 1248us; 92us; 1364us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 96us; 1738us; 98us; 1095us; 100us; 1720us; 102us; 1740us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 143us; 1750us; 145us; 1746us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1351us; 158us; 1242us; 159us; 1070us; 160us; 1741us; 161us; 1742us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 181us; 1748us; 182us; 1239us; 183us; 1236us; 184us; 1732us; 185us; 1734us; 186us; 1281us; 187us; 1731us; 188us; 1707us; 189us; 1729us; 190us; 1728us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 988us; 97us; 32768us; 10us; 991us; 13us; 1093us; 16us; 1375us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 36us; 1372us; 38us; 1373us; 40us; 714us; 45us; 1292us; 55us; 1300us; 57us; 1755us; 60us; 1374us; 62us; 1233us; 63us; 1735us; 69us; 1739us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1288us; 83us; 1747us; 86us; 1032us; 88us; 1418us; 89us; 1245us; 90us; 1248us; 92us; 1364us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 96us; 1738us; 98us; 1095us; 100us; 1720us; 102us; 1740us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 143us; 1750us; 145us; 1746us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1351us; 158us; 1242us; 159us; 1070us; 160us; 1741us; 161us; 1742us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 181us; 1748us; 182us; 1239us; 183us; 1236us; 184us; 1732us; 185us; 1734us; 186us; 1281us; 187us; 1731us; 188us; 1707us; 189us; 1729us; 190us; 1728us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 988us; 0us; 17115us; 9us; 32768us; 10us; 991us; 16us; 1831us; 36us; 1828us; 38us; 1829us; 60us; 1830us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 195us; 977us; 0us; 17116us; 0us; 17117us; 0us; 17118us; 0us; 17118us; 0us; 17119us; 0us; 17120us; 0us; 17121us; 0us; 17122us; 0us; 17123us; 1us; 32768us; 78us; 1378us; 1us; 32768us; 92us; 1379us; 1us; 16542us; 73us; 299us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17124us; 0us; 17125us; 0us; 17126us; 0us; 17127us; 4us; 17127us; 93us; 17130us; 94us; 17130us; 95us; 17130us; 102us; 17130us; 4us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 102us; 1389us; 0us; 17128us; 1us; 32768us; 188us; 1706us; 0us; 17129us; 77us; 32768us; 10us; 991us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 53us; 1434us; 55us; 1300us; 59us; 1818us; 60us; 1815us; 61us; 1817us; 62us; 1232us; 66us; 1445us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1251us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 989us; 5us; 32768us; 10us; 991us; 59us; 1818us; 60us; 1815us; 61us; 1817us; 195us; 977us; 0us; 17131us; 0us; 17132us; 0us; 17133us; 0us; 17134us; 0us; 17135us; 0us; 17136us; 0us; 17137us; 0us; 17138us; 0us; 17139us; 0us; 17141us; 0us; 17142us; 72us; 32768us; 10us; 991us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 977us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17145us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17146us; 77us; 32768us; 10us; 991us; 13us; 1093us; 16us; 1837us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 36us; 1833us; 38us; 1834us; 40us; 714us; 45us; 1292us; 55us; 1300us; 60us; 1835us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 94us; 1836us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 977us; 0us; 17148us; 0us; 17149us; 0us; 17150us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 70us; 32768us; 13us; 1093us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17152us; 0us; 17153us; 0us; 17154us; 2us; 32768us; 192us; 1801us; 193us; 1800us; 3us; 17160us; 36us; 1805us; 37us; 1808us; 108us; 1809us; 0us; 17157us; 37us; 17162us; 45us; 1292us; 55us; 1300us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 78us; 1430us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1269us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 32768us; 88us; 1423us; 0us; 17155us; 0us; 17156us; 0us; 17159us; 1us; 32768us; 92us; 1427us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 17161us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1432us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17163us; 36us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1652us; 0us; 17164us; 30us; 32768us; 45us; 1710us; 55us; 1638us; 66us; 1632us; 88us; 1629us; 91us; 1703us; 92us; 1622us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 2us; 17421us; 34us; 1803us; 35us; 1802us; 28us; 17158us; 55us; 1501us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 92us; 1363us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17183us; 2us; 17175us; 21us; 1463us; 84us; 1464us; 0us; 17165us; 0us; 17166us; 71us; 32768us; 13us; 1093us; 22us; 954us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17183us; 2us; 17175us; 21us; 1463us; 84us; 1464us; 0us; 17167us; 1us; 17168us; 69us; 1446us; 71us; 17169us; 13us; 1093us; 22us; 954us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17183us; 2us; 17175us; 21us; 1463us; 84us; 1464us; 0us; 17170us; 3us; 32768us; 45us; 1710us; 66us; 1468us; 191us; 1709us; 0us; 17183us; 2us; 17175us; 21us; 1463us; 84us; 1464us; 0us; 17171us; 5us; 17175us; 21us; 1463us; 45us; 1710us; 66us; 1468us; 84us; 1464us; 191us; 1709us; 1us; 32768us; 20us; 1456us; 0us; 17172us; 0us; 17183us; 2us; 17175us; 21us; 1463us; 84us; 1464us; 1us; 32768us; 20us; 1460us; 0us; 17173us; 0us; 17174us; 3us; 17174us; 45us; 1710us; 66us; 1468us; 191us; 1709us; 1us; 17176us; 84us; 1466us; 1us; 17177us; 21us; 1465us; 0us; 17178us; 0us; 17179us; 1us; 17180us; 77us; 1712us; 0us; 17181us; 0us; 17182us; 8us; 17187us; 10us; 991us; 16us; 1837us; 36us; 1833us; 38us; 1834us; 60us; 1835us; 69us; 1471us; 94us; 1836us; 195us; 977us; 78us; 17185us; 10us; 991us; 13us; 1093us; 16us; 1837us; 22us; 954us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 36us; 1833us; 38us; 1834us; 40us; 714us; 45us; 1292us; 55us; 1300us; 60us; 1835us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 94us; 1836us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 977us; 0us; 17184us; 0us; 17186us; 0us; 17188us; 3us; 17396us; 21us; 1785us; 26us; 1485us; 87us; 1483us; 1us; 17396us; 21us; 1785us; 3us; 17201us; 14us; 557us; 111us; 556us; 195us; 1494us; 0us; 17189us; 2us; 32768us; 14us; 557us; 111us; 556us; 0us; 17190us; 0us; 17192us; 0us; 17195us; 3us; 16542us; 22us; 502us; 73us; 299us; 195us; 749us; 0us; 17197us; 2us; 16542us; 73us; 299us; 195us; 749us; 1us; 32768us; 20us; 1487us; 0us; 17198us; 3us; 17390us; 19us; 1780us; 20us; 1781us; 142us; 1782us; 0us; 17199us; 3us; 17201us; 14us; 557us; 111us; 556us; 195us; 1494us; 0us; 17200us; 3us; 17201us; 14us; 557us; 111us; 556us; 195us; 1494us; 0us; 17202us; 3us; 17201us; 14us; 557us; 111us; 556us; 195us; 1494us; 0us; 17203us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 8us; 17196us; 26us; 1485us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 87us; 1483us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 3us; 17390us; 19us; 1780us; 20us; 1781us; 142us; 1782us; 1us; 17396us; 21us; 1785us; 0us; 17204us; 1us; 32768us; 72us; 1504us; 0us; 17205us; 0us; 17206us; 39us; 32768us; 10us; 991us; 45us; 1292us; 55us; 1300us; 65us; 1819us; 66us; 1445us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 990us; 3us; 32768us; 10us; 991us; 65us; 1819us; 195us; 977us; 0us; 17207us; 0us; 17208us; 0us; 17209us; 0us; 17210us; 0us; 17211us; 35us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 32768us; 98us; 1513us; 72us; 32768us; 13us; 1093us; 22us; 949us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1515us; 0us; 17212us; 0us; 17213us; 36us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 66us; 465us; 70us; 884us; 71us; 887us; 74us; 881us; 75us; 890us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1527us; 2us; 32768us; 98us; 1518us; 195us; 1525us; 73us; 32768us; 10us; 991us; 13us; 1093us; 18us; 1522us; 24us; 1516us; 25us; 1531us; 29us; 1088us; 30us; 705us; 31us; 1076us; 32us; 701us; 40us; 714us; 45us; 1292us; 55us; 1300us; 62us; 1232us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 86us; 1032us; 89us; 1244us; 90us; 1247us; 92us; 1365us; 98us; 1095us; 100us; 1720us; 106us; 1339us; 107us; 1013us; 114us; 1024us; 115us; 1028us; 116us; 1005us; 117us; 1009us; 119us; 1250us; 122us; 1338us; 123us; 1043us; 124us; 1511us; 125us; 1529us; 126us; 1019us; 130us; 1083us; 133us; 1026us; 134us; 1030us; 136us; 1343us; 146us; 1260us; 147us; 1262us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 158us; 1241us; 159us; 1070us; 162us; 695us; 163us; 1066us; 164us; 1068us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 182us; 1238us; 183us; 1235us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 977us; 3us; 32768us; 10us; 991us; 20us; 1520us; 195us; 977us; 0us; 17214us; 0us; 17215us; 1us; 32768us; 20us; 1523us; 0us; 17216us; 0us; 17217us; 1us; 32768us; 20us; 1526us; 0us; 17218us; 1us; 32768us; 20us; 1528us; 0us; 17219us; 39us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 57us; 1196us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1199us; 0us; 17220us; 39us; 32768us; 42us; 479us; 43us; 478us; 44us; 480us; 45us; 468us; 55us; 905us; 57us; 1196us; 66us; 465us; 70us; 884us; 71us; 887us; 73us; 299us; 74us; 881us; 75us; 890us; 82us; 865us; 92us; 898us; 100us; 1720us; 106us; 896us; 122us; 895us; 148us; 897us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 790us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1199us; 1us; 32768us; 20us; 1533us; 0us; 17221us; 1us; 17222us; 85us; 1535us; 4us; 32768us; 51us; 594us; 91us; 1703us; 92us; 609us; 188us; 1706us; 1us; 17224us; 85us; 1537us; 4us; 32768us; 51us; 594us; 91us; 1703us; 92us; 609us; 188us; 1706us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 73us; 299us; 75us; 1560us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17227us; 1us; 17229us; 98us; 1541us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 73us; 299us; 75us; 1560us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17228us; 1us; 17231us; 96us; 1544us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 73us; 299us; 75us; 1560us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17230us; 1us; 17233us; 96us; 1547us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 73us; 299us; 75us; 1560us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17232us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 75us; 1553us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 7us; 17236us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 78us; 1551us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 6us; 17234us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 1us; 32768us; 191us; 1709us; 1us; 32768us; 78us; 1555us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 6us; 17235us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 7us; 17239us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 78us; 1558us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 6us; 17237us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 1us; 32768us; 191us; 1709us; 1us; 32768us; 78us; 1562us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 6us; 17238us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 1us; 17241us; 98us; 1565us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17240us; 1us; 32768us; 10us; 1568us; 0us; 17242us; 8us; 17246us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 91us; 1703us; 96us; 1570us; 185us; 1574us; 188us; 1706us; 191us; 1709us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17243us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17244us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17245us; 8us; 17249us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 91us; 1703us; 96us; 1577us; 185us; 1579us; 188us; 1706us; 191us; 1709us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17247us; 31us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17248us; 1us; 17250us; 77us; 1712us; 0us; 17251us; 1us; 17251us; 80us; 1598us; 1us; 17253us; 188us; 1586us; 4us; 17253us; 33us; 1661us; 77us; 1658us; 160us; 1663us; 188us; 1586us; 3us; 32768us; 62us; 807us; 92us; 803us; 177us; 802us; 0us; 17252us; 9us; 32768us; 10us; 991us; 35us; 1590us; 45us; 1710us; 70us; 1603us; 91us; 1703us; 96us; 1640us; 188us; 1706us; 191us; 1709us; 195us; 977us; 0us; 17254us; 1us; 32768us; 70us; 1603us; 0us; 17255us; 0us; 17256us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1652us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 4us; 32768us; 45us; 1710us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 0us; 17257us; 0us; 17258us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17259us; 1us; 17277us; 80us; 1601us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17260us; 2us; 32768us; 58us; 1604us; 97us; 1605us; 0us; 17261us; 2us; 32768us; 58us; 1606us; 97us; 1607us; 0us; 17262us; 2us; 32768us; 58us; 1608us; 97us; 1609us; 0us; 17263us; 1us; 32768us; 58us; 1610us; 0us; 17264us; 1us; 32768us; 97us; 1612us; 32us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17268us; 1us; 17265us; 97us; 1616us; 4us; 32768us; 10us; 991us; 97us; 1616us; 161us; 1667us; 195us; 977us; 32us; 17309us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17266us; 0us; 17267us; 1us; 17269us; 188us; 1620us; 3us; 32768us; 62us; 807us; 92us; 803us; 177us; 802us; 0us; 17270us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1652us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 4us; 32768us; 45us; 1710us; 91us; 1703us; 188us; 1706us; 191us; 1709us; 0us; 17271us; 1us; 17272us; 77us; 1655us; 1us; 17273us; 77us; 1655us; 0us; 17274us; 30us; 32768us; 45us; 1710us; 55us; 1638us; 66us; 1632us; 88us; 1629us; 91us; 1703us; 92us; 1633us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 1us; 17275us; 77us; 1655us; 0us; 17276us; 0us; 17277us; 33us; 32768us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 1652us; 5us; 32768us; 10us; 991us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 195us; 977us; 6us; 17304us; 10us; 991us; 69us; 1676us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 195us; 977us; 0us; 17278us; 0us; 17279us; 1us; 32768us; 92us; 1639us; 33us; 32768us; 10us; 991us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 977us; 33us; 32768us; 10us; 991us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 977us; 5us; 32768us; 10us; 991us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 195us; 977us; 0us; 17280us; 0us; 17281us; 0us; 17282us; 0us; 17283us; 0us; 17284us; 0us; 17285us; 0us; 17286us; 35us; 32768us; 45us; 1292us; 55us; 1300us; 70us; 1294us; 71us; 1357us; 72us; 1504us; 74us; 1391us; 75us; 1287us; 92us; 1365us; 100us; 1720us; 106us; 1339us; 122us; 1338us; 136us; 1343us; 148us; 1337us; 154us; 1284us; 155us; 1350us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 186us; 1280us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17288us; 0us; 17289us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 17290us; 0us; 17291us; 2us; 32768us; 45us; 1710us; 191us; 1709us; 3us; 17292us; 33us; 1661us; 77us; 1712us; 160us; 1663us; 0us; 17293us; 7us; 32768us; 10us; 991us; 16us; 1837us; 36us; 1833us; 38us; 1834us; 60us; 1835us; 94us; 1836us; 195us; 977us; 0us; 17294us; 0us; 17295us; 1us; 32768us; 160us; 1663us; 0us; 17296us; 35us; 17309us; 10us; 991us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 161us; 1673us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 977us; 1us; 32768us; 97us; 1665us; 39us; 17309us; 10us; 991us; 16us; 1837us; 36us; 1833us; 38us; 1834us; 45us; 1710us; 55us; 541us; 60us; 1835us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 94us; 1836us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 195us; 977us; 0us; 17268us; 0us; 17297us; 0us; 17298us; 0us; 17299us; 8us; 17307us; 10us; 991us; 16us; 1837us; 36us; 1833us; 38us; 1834us; 60us; 1835us; 94us; 1836us; 161us; 1671us; 195us; 977us; 0us; 17300us; 0us; 17301us; 0us; 17302us; 0us; 17303us; 1us; 17304us; 69us; 1676us; 32us; 17306us; 45us; 1710us; 55us; 541us; 66us; 1600us; 72us; 544us; 88us; 1629us; 91us; 1703us; 92us; 1593us; 106us; 1651us; 113us; 1649us; 122us; 1650us; 148us; 1648us; 165us; 792us; 166us; 791us; 167us; 789us; 168us; 788us; 169us; 787us; 170us; 785us; 171us; 786us; 172us; 784us; 173us; 782us; 174us; 780us; 175us; 778us; 176us; 783us; 177us; 781us; 179us; 779us; 180us; 777us; 185us; 1572us; 188us; 1706us; 191us; 1709us; 192us; 1801us; 193us; 1800us; 194us; 794us; 0us; 17305us; 0us; 17307us; 0us; 17308us; 8us; 32768us; 45us; 1710us; 66us; 1683us; 91us; 1703us; 92us; 1687us; 177us; 1693us; 185us; 1702us; 188us; 1706us; 191us; 1709us; 3us; 32768us; 96us; 1700us; 161us; 1682us; 185us; 1701us; 0us; 17310us; 1us; 32768us; 161us; 1684us; 0us; 17311us; 1us; 17312us; 77us; 1712us; 0us; 17313us; 7us; 32768us; 45us; 1710us; 91us; 1703us; 92us; 1687us; 177us; 1693us; 185us; 1702us; 188us; 1706us; 191us; 1709us; 5us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 96us; 1700us; 185us; 1701us; 0us; 17314us; 1us; 17315us; 188us; 1691us; 3us; 32768us; 62us; 807us; 92us; 803us; 177us; 802us; 0us; 17316us; 0us; 17317us; 6us; 17318us; 45us; 1710us; 91us; 1703us; 92us; 1687us; 177us; 1693us; 188us; 1706us; 191us; 1709us; 0us; 17319us; 0us; 17320us; 0us; 17321us; 0us; 17322us; 0us; 17323us; 7us; 32768us; 45us; 1710us; 91us; 1703us; 92us; 1687us; 177us; 1693us; 185us; 1702us; 188us; 1706us; 191us; 1709us; 7us; 32768us; 45us; 1710us; 91us; 1703us; 92us; 1687us; 177us; 1693us; 185us; 1702us; 188us; 1706us; 191us; 1709us; 7us; 32768us; 45us; 1710us; 91us; 1703us; 92us; 1687us; 177us; 1693us; 185us; 1702us; 188us; 1706us; 191us; 1709us; 1us; 32768us; 191us; 1709us; 0us; 17324us; 0us; 17325us; 1us; 32768us; 191us; 1709us; 1us; 17340us; 191us; 1709us; 0us; 17326us; 0us; 17327us; 0us; 17328us; 0us; 17329us; 8us; 32768us; 10us; 991us; 16us; 1837us; 36us; 1833us; 38us; 1834us; 60us; 1835us; 94us; 1836us; 191us; 1709us; 195us; 977us; 0us; 17330us; 0us; 17331us; 27us; 32768us; 57us; 1755us; 62us; 1737us; 63us; 1735us; 69us; 1739us; 75us; 1743us; 83us; 1747us; 89us; 1744us; 90us; 1745us; 96us; 1738us; 102us; 1740us; 143us; 1750us; 145us; 1746us; 155us; 1752us; 158us; 1749us; 160us; 1741us; 161us; 1742us; 181us; 1748us; 182us; 1736us; 183us; 1733us; 184us; 1732us; 185us; 1734us; 186us; 1727us; 187us; 1731us; 188us; 1730us; 189us; 1729us; 190us; 1728us; 195us; 1718us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 17332us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 17333us; 0us; 17334us; 1us; 32768us; 57us; 1722us; 5us; 32768us; 66us; 1724us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 191us; 1754us; 0us; 17335us; 1us; 32768us; 57us; 1725us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 17336us; 0us; 17337us; 0us; 17338us; 0us; 17339us; 0us; 17340us; 0us; 17341us; 0us; 17342us; 0us; 17343us; 0us; 17344us; 0us; 17345us; 0us; 17346us; 0us; 17347us; 0us; 17348us; 0us; 17349us; 0us; 17350us; 0us; 17351us; 0us; 17352us; 0us; 17353us; 0us; 17354us; 0us; 17355us; 0us; 17356us; 0us; 17357us; 0us; 17358us; 0us; 17359us; 1us; 17360us; 143us; 1751us; 0us; 17361us; 1us; 32768us; 156us; 1753us; 0us; 17362us; 0us; 17363us; 1us; 32768us; 191us; 1754us; 0us; 17364us; 0us; 17365us; 0us; 17366us; 0us; 17367us; 1us; 17368us; 77us; 1762us; 0us; 17369us; 4us; 32768us; 92us; 1715us; 100us; 1720us; 191us; 1709us; 195us; 1764us; 0us; 17370us; 0us; 17371us; 0us; 17372us; 0us; 17373us; 0us; 17374us; 0us; 17375us; 3us; 17376us; 21us; 1768us; 67us; 1767us; 84us; 1766us; 0us; 17377us; 3us; 17379us; 21us; 1768us; 67us; 1767us; 84us; 1766us; 0us; 17378us; 1us; 17380us; 84us; 1775us; 1us; 17381us; 21us; 1776us; 0us; 17382us; 0us; 17383us; 0us; 17384us; 0us; 17385us; 0us; 17386us; 0us; 17387us; 0us; 17388us; 0us; 17389us; 0us; 17391us; 0us; 17393us; 0us; 17395us; 0us; 17397us; 0us; 17399us; 0us; 17403us; 0us; 17405us; 0us; 17407us; 0us; 17408us; 0us; 17409us; 0us; 17410us; 0us; 17411us; 0us; 17412us; 0us; 17413us; 0us; 17414us; 0us; 17415us; 0us; 17416us; 0us; 17417us; 0us; 17418us; 0us; 17419us; 0us; 17420us; 0us; 17422us; 3us; 32768us; 36us; 1805us; 37us; 1808us; 108us; 1809us; 3us; 17445us; 36us; 1805us; 37us; 1808us; 108us; 1809us; 0us; 17424us; 0us; 17425us; 0us; 17426us; 3us; 32768us; 38us; 1810us; 39us; 1813us; 150us; 1814us; 3us; 17446us; 38us; 1810us; 39us; 1813us; 150us; 1814us; 0us; 17427us; 0us; 17428us; 0us; 17429us; 3us; 32768us; 59us; 1818us; 60us; 1815us; 61us; 1817us; 0us; 17430us; 0us; 17431us; 0us; 17432us; 0us; 17433us; 3us; 32768us; 93us; 1823us; 94us; 1820us; 95us; 1822us; 0us; 17434us; 0us; 17435us; 0us; 17436us; 3us; 32768us; 15us; 1827us; 16us; 1824us; 17us; 1826us; 0us; 17437us; 0us; 17438us; 0us; 17439us; 0us; 17440us; 0us; 17441us; 0us; 17442us; 0us; 17443us; 0us; 17444us; 0us; 17445us; 0us; 17446us; 0us; 17447us; 0us; 17448us; 0us; 17449us; 0us; 17450us; |] +let _fsyacc_actionTableRowOffsets = [|0us; 17us; 18us; 105us; 106us; 114us; 115us; 186us; 187us; 220us; 221us; 222us; 223us; 224us; 225us; 226us; 227us; 232us; 233us; 238us; 239us; 244us; 245us; 251us; 252us; 258us; 259us; 265us; 266us; 283us; 284us; 288us; 367us; 393us; 394us; 397us; 398us; 399us; 400us; 402us; 403us; 406us; 407us; 408us; 411us; 412us; 414us; 415us; 420us; 421us; 425us; 427us; 430us; 432us; 434us; 437us; 439us; 441us; 442us; 444us; 445us; 447us; 464us; 465us; 469us; 478us; 497us; 498us; 499us; 500us; 516us; 522us; 524us; 525us; 526us; 533us; 534us; 535us; 539us; 543us; 559us; 560us; 564us; 569us; 570us; 571us; 572us; 576us; 585us; 588us; 594us; 595us; 596us; 597us; 598us; 601us; 603us; 605us; 607us; 609us; 613us; 617us; 620us; 622us; 656us; 658us; 659us; 731us; 757us; 828us; 857us; 859us; 860us; 869us; 873us; 874us; 890us; 892us; 896us; 897us; 913us; 915us; 916us; 918us; 919us; 921us; 923us; 924us; 927us; 935us; 936us; 937us; 990us; 992us; 1007us; 1009us; 1013us; 1015us; 1016us; 1018us; 1019us; 1020us; 1021us; 1023us; 1057us; 1058us; 1059us; 1076us; 1080us; 1081us; 1082us; 1084us; 1085us; 1100us; 1106us; 1107us; 1108us; 1124us; 1128us; 1129us; 1130us; 1145us; 1151us; 1152us; 1153us; 1154us; 1155us; 1158us; 1173us; 1174us; 1178us; 1182us; 1193us; 1238us; 1240us; 1244us; 1248us; 1251us; 1253us; 1287us; 1290us; 1292us; 1293us; 1325us; 1332us; 1364us; 1371us; 1373us; 1374us; 1380us; 1382us; 1383us; 1385us; 1386us; 1388us; 1422us; 1423us; 1427us; 1428us; 1432us; 1435us; 1436us; 1437us; 1439us; 1443us; 1444us; 1445us; 1447us; 1448us; 1450us; 1451us; 1467us; 1471us; 1472us; 1475us; 1476us; 1478us; 1479us; 1484us; 1485us; 1487us; 1488us; 1490us; 1491us; 1493us; 1580us; 1581us; 1586us; 1665us; 1753us; 1754us; 1755us; 1841us; 1847us; 1849us; 1850us; 1851us; 1858us; 1859us; 1860us; 1861us; 1866us; 1945us; 1974us; 2060us; 2061us; 2062us; 2063us; 2085us; 2086us; 2172us; 2173us; 2177us; 2184us; 2189us; 2194us; 2195us; 2196us; 2197us; 2201us; 2213us; 2214us; 2216us; 2217us; 2289us; 2290us; 2292us; 2294us; 2295us; 2296us; 2298us; 2304us; 2305us; 2308us; 2309us; 2310us; 2315us; 2316us; 2318us; 2325us; 2331us; 2332us; 2333us; 2339us; 2340us; 2341us; 2342us; 2343us; 2345us; 2431us; 2435us; 2436us; 2437us; 2438us; 2445us; 2449us; 2450us; 2451us; 2453us; 2454us; 2469us; 2472us; 2481us; 2483us; 2484us; 2486us; 2488us; 2489us; 2490us; 2491us; 2492us; 2502us; 2503us; 2507us; 2536us; 2537us; 2541us; 2545us; 2574us; 2575us; 2578us; 2583us; 2586us; 2615us; 2616us; 2618us; 2619us; 2621us; 2622us; 2624us; 2625us; 2627us; 2628us; 2639us; 2640us; 2641us; 2642us; 2643us; 2647us; 2649us; 2650us; 2652us; 2654us; 2655us; 2696us; 2703us; 2704us; 2705us; 2709us; 2712us; 2714us; 2716us; 2718us; 2725us; 2726us; 2738us; 2740us; 2748us; 2750us; 2756us; 2758us; 2759us; 2760us; 2762us; 2763us; 2764us; 2765us; 2767us; 2801us; 2802us; 2803us; 2809us; 2813us; 2814us; 2815us; 2820us; 2821us; 2828us; 2834us; 2835us; 2836us; 2843us; 2849us; 2850us; 2851us; 2852us; 2853us; 2864us; 2865us; 2868us; 2879us; 2880us; 2882us; 2883us; 2885us; 2888us; 2889us; 2890us; 2892us; 2894us; 2895us; 2897us; 2934us; 2936us; 2938us; 3010us; 3011us; 3048us; 3050us; 3054us; 3126us; 3127us; 3128us; 3130us; 3131us; 3135us; 3139us; 3155us; 3205us; 3206us; 3207us; 3210us; 3212us; 3213us; 3245us; 3253us; 3254us; 3256us; 3260us; 3263us; 3265us; 3299us; 3302us; 3304us; 3305us; 3306us; 3308us; 3309us; 3311us; 3312us; 3314us; 3315us; 3351us; 3353us; 3355us; 3427us; 3429us; 3430us; 3432us; 3433us; 3435us; 3439us; 3441us; 3443us; 3476us; 3477us; 3479us; 3483us; 3485us; 3487us; 3489us; 3561us; 3564us; 3565us; 3598us; 3599us; 3601us; 3605us; 3606us; 3608us; 3612us; 3613us; 3614us; 3619us; 3621us; 3625us; 3626us; 3627us; 3628us; 3629us; 3630us; 3631us; 3632us; 3635us; 3639us; 3640us; 3647us; 3651us; 3652us; 3690us; 3722us; 3723us; 3752us; 3754us; 3755us; 3756us; 3757us; 3759us; 3760us; 3761us; 3764us; 3765us; 3766us; 3768us; 3774us; 3775us; 3776us; 3777us; 3780us; 3795us; 3796us; 3800us; 3805us; 3809us; 3811us; 3812us; 3814us; 3815us; 3816us; 3818us; 3820us; 3821us; 3822us; 3823us; 3827us; 3862us; 3865us; 3867us; 3870us; 3871us; 3872us; 3873us; 3874us; 3908us; 3912us; 3913us; 3916us; 3922us; 3923us; 3924us; 3928us; 3929us; 3932us; 3933us; 3934us; 3937us; 3941us; 3942us; 3943us; 3945us; 3946us; 3977us; 3979us; 3980us; 3981us; 3982us; 3983us; 3984us; 3985us; 3991us; 3995us; 3998us; 4000us; 4001us; 4002us; 4004us; 4009us; 4010us; 4013us; 4015us; 4017us; 4020us; 4021us; 4022us; 4025us; 4026us; 4028us; 4030us; 4032us; 4033us; 4034us; 4036us; 4040us; 4042us; 4044us; 4045us; 4046us; 4074us; 4079us; 4081us; 4083us; 4085us; 4090us; 4091us; 4092us; 4095us; 4097us; 4130us; 4131us; 4134us; 4167us; 4168us; 4174us; 4175us; 4179us; 4180us; 4181us; 4183us; 4187us; 4188us; 4220us; 4225us; 4227us; 4229us; 4231us; 4235us; 4236us; 4239us; 4240us; 4241us; 4273us; 4280us; 4287us; 4289us; 4290us; 4292us; 4294us; 4295us; 4298us; 4299us; 4301us; 4303us; 4304us; 4308us; 4312us; 4317us; 4318us; 4351us; 4353us; 4354us; 4388us; 4390us; 4391us; 4410us; 4412us; 4413us; 4414us; 4444us; 4448us; 4449us; 4451us; 4455us; 4456us; 4461us; 4462us; 4481us; 4483us; 4529us; 4530us; 4563us; 4564us; 4566us; 4598us; 4599us; 4601us; 4633us; 4640us; 4647us; 4648us; 4649us; 4652us; 4660us; 4661us; 4662us; 4664us; 4665us; 4669us; 4671us; 4673us; 4706us; 4707us; 4709us; 4710us; 4711us; 4713us; 4717us; 4719us; 4721us; 4722us; 4724us; 4757us; 4758us; 4761us; 4763us; 4766us; 4768us; 4770us; 4773us; 4774us; 4775us; 4847us; 4848us; 4850us; 4853us; 4857us; 4858us; 4930us; 4934us; 4935us; 4936us; 4937us; 4938us; 4939us; 4940us; 4941us; 4943us; 4947us; 4949us; 4952us; 4954us; 4959us; 4963us; 4964us; 4966us; 4968us; 4970us; 4971us; 4973us; 4974us; 4978us; 4985us; 4986us; 4988us; 4994us; 4996us; 4998us; 4999us; 5000us; 5001us; 5003us; 5005us; 5006us; 5010us; 5012us; 5013us; 5016us; 5018us; 5019us; 5021us; 5022us; 5023us; 5025us; 5062us; 5064us; 5068us; 5141us; 5142us; 5143us; 5144us; 5215us; 5221us; 5222us; 5223us; 5224us; 5225us; 5227us; 5228us; 5231us; 5234us; 5306us; 5307us; 5310us; 5311us; 5312us; 5315us; 5348us; 5349us; 5350us; 5351us; 5352us; 5353us; 5354us; 5355us; 5356us; 5357us; 5358us; 5359us; 5360us; 5361us; 5362us; 5363us; 5365us; 5366us; 5367us; 5368us; 5369us; 5371us; 5373us; 5374us; 5376us; 5378us; 5380us; 5381us; 5382us; 5385us; 5389us; 5390us; 5391us; 5394us; 5395us; 5397us; 5399us; 5400us; 5406us; 5407us; 5409us; 5410us; 5412us; 5415us; 5448us; 5449us; 5453us; 5457us; 5458us; 5467us; 5473us; 5474us; 5475us; 5476us; 5480us; 5481us; 5482us; 5486us; 5488us; 5491us; 5494us; 5496us; 5498us; 5505us; 5512us; 5514us; 5515us; 5552us; 5589us; 5591us; 5592us; 5593us; 5630us; 5667us; 5704us; 5741us; 5744us; 5745us; 5747us; 5748us; 5750us; 5753us; 5791us; 5798us; 5828us; 5866us; 5867us; 5903us; 5904us; 5940us; 5941us; 5973us; 5974us; 5975us; 6039us; 6043us; 6044us; 6045us; 6083us; 6084us; 6120us; 6121us; 6157us; 6158us; 6159us; 6161us; 6162us; 6165us; 6169us; 6170us; 6208us; 6210us; 6211us; 6249us; 6251us; 6252us; 6254us; 6256us; 6257us; 6258us; 6259us; 6260us; 6261us; 6262us; 6326us; 6332us; 6333us; 6334us; 6338us; 6341us; 6342us; 6344us; 6384us; 6391us; 6392us; 6393us; 6397us; 6398us; 6399us; 6406us; 6411us; 6415us; 6418us; 6422us; 6426us; 6429us; 6436us; 6439us; 6446us; 6455us; 6471us; 6479us; 6481us; 6482us; 6520us; 6522us; 6524us; 6557us; 6558us; 6596us; 6634us; 6635us; 6673us; 6711us; 6749us; 6787us; 6790us; 6791us; 6794us; 6795us; 6798us; 6836us; 6837us; 6875us; 6876us; 6947us; 6953us; 6954us; 6955us; 6956us; 7027us; 7031us; 7032us; 7058us; 7060us; 7061us; 7063us; 7096us; 7097us; 7099us; 7100us; 7130us; 7162us; 7193us; 7264us; 7265us; 7336us; 7337us; 7339us; 7410us; 7414us; 7415us; 7489us; 7490us; 7493us; 7496us; 7499us; 7502us; 7505us; 7507us; 7509us; 7511us; 7513us; 7517us; 7521us; 7525us; 7527us; 7528us; 7530us; 7602us; 7603us; 7604us; 7678us; 7679us; 7680us; 7753us; 7754us; 7755us; 7756us; 7757us; 7758us; 7829us; 7834us; 7835us; 7836us; 7907us; 7912us; 7913us; 7914us; 7985us; 7991us; 7992us; 7993us; 8065us; 8066us; 8139us; 8169us; 8170us; 8171us; 8172us; 8243us; 8244us; 8307us; 8308us; 8380us; 8381us; 8445us; 8446us; 8519us; 8549us; 8622us; 8627us; 8628us; 8629us; 8632us; 8633us; 8634us; 8635us; 8636us; 8681us; 8692us; 8771us; 8781us; 8782us; 8783us; 8784us; 8785us; 8786us; 8791us; 8865us; 8870us; 8871us; 8872us; 8873us; 8874us; 8875us; 8947us; 8950us; 8951us; 8952us; 8953us; 8954us; 9025us; 9051us; 9122us; 9148us; 9185us; 9257us; 9259us; 9261us; 9333us; 9334us; 9371us; 9443us; 9447us; 9449us; 9522us; 9523us; 9524us; 9595us; 9597us; 9599us; 9671us; 9672us; 9744us; 9748us; 9749us; 9751us; 9752us; 9823us; 9849us; 9920us; 9921us; 9947us; 9968us; 9989us; 9999us; 10020us; 10039us; 10058us; 10068us; 10078us; 10088us; 10098us; 10108us; 10118us; 10128us; 10130us; 10139us; 10144us; 10149us; 10151us; 10153us; 10155us; 10181us; 10207us; 10233us; 10263us; 10287us; 10313us; 10337us; 10362us; 10387us; 10414us; 10443us; 10470us; 10496us; 10522us; 10555us; 10556us; 10589us; 10590us; 10623us; 10624us; 10695us; 10697us; 10769us; 10770us; 10772us; 10779us; 10851us; 10923us; 10995us; 11067us; 11139us; 11211us; 11283us; 11355us; 11427us; 11499us; 11573us; 11574us; 11646us; 11718us; 11790us; 11862us; 11934us; 12006us; 12078us; 12150us; 12222us; 12223us; 12224us; 12225us; 12226us; 12227us; 12228us; 12229us; 12230us; 12231us; 12232us; 12233us; 12234us; 12235us; 12236us; 12237us; 12238us; 12239us; 12240us; 12241us; 12242us; 12243us; 12314us; 12318us; 12319us; 12359us; 12360us; 12400us; 12404us; 12405us; 12406us; 12407us; 12446us; 12447us; 12448us; 12449us; 12450us; 12453us; 12456us; 12495us; 12496us; 12497us; 12498us; 12499us; 12570us; 12641us; 12642us; 12646us; 12647us; 12718us; 12720us; 12791us; 12797us; 12798us; 12799us; 12870us; 12872us; 12943us; 12949us; 12950us; 12951us; 13022us; 13023us; 13024us; 13102us; 13103us; 13181us; 13182us; 13227us; 13272us; 13273us; 13318us; 13363us; 13364us; 13409us; 13454us; 13455us; 13500us; 13545us; 13546us; 13591us; 13636us; 13637us; 13682us; 13727us; 13728us; 13760us; 13792us; 13795us; 13831us; 13861us; 13891us; 13892us; 13898us; 13899us; 13900us; 13945us; 13946us; 13991us; 13992us; 14029us; 14069us; 14109us; 14110us; 14116us; 14152us; 14158us; 14164us; 14167us; 14169us; 14175us; 14181us; 14217us; 14253us; 14255us; 14256us; 14292us; 14328us; 14336us; 14337us; 14339us; 14347us; 14348us; 14352us; 14356us; 14357us; 14360us; 14361us; 14362us; 14363us; 14436us; 14440us; 14441us; 14442us; 14443us; 14444us; 14447us; 14518us; 14519us; 14520us; 14521us; 14522us; 14523us; 14524us; 14614us; 14618us; 14620us; 14622us; 14623us; 14627us; 14628us; 14704us; 14707us; 14708us; 14712us; 14713us; 14714us; 14715us; 14716us; 14718us; 14792us; 14793us; 14795us; 14867us; 14868us; 14940us; 14941us; 14942us; 15013us; 15014us; 15015us; 15016us; 15017us; 15018us; 15019us; 15020us; 15021us; 15022us; 15023us; 15096us; 15100us; 15101us; 15102us; 15104us; 15105us; 15106us; 15179us; 15253us; 15257us; 15258us; 15259us; 15260us; 15261us; 15334us; 15338us; 15339us; 15340us; 15341us; 15342us; 15424us; 15522us; 15620us; 15621us; 15631us; 15632us; 15633us; 15634us; 15635us; 15636us; 15637us; 15638us; 15639us; 15640us; 15642us; 15644us; 15646us; 15650us; 15721us; 15722us; 15723us; 15724us; 15725us; 15730us; 15735us; 15736us; 15738us; 15739us; 15817us; 15823us; 15824us; 15825us; 15826us; 15827us; 15828us; 15829us; 15830us; 15831us; 15832us; 15833us; 15834us; 15907us; 15978us; 15979us; 16050us; 16051us; 16129us; 16130us; 16131us; 16132us; 16203us; 16274us; 16275us; 16276us; 16277us; 16280us; 16284us; 16285us; 16323us; 16325us; 16326us; 16327us; 16328us; 16330us; 16363us; 16367us; 16368us; 16401us; 16402us; 16439us; 16440us; 16471us; 16474us; 16503us; 16504us; 16507us; 16508us; 16509us; 16581us; 16582us; 16585us; 16586us; 16588us; 16660us; 16661us; 16664us; 16665us; 16669us; 16670us; 16673us; 16674us; 16680us; 16682us; 16683us; 16684us; 16687us; 16689us; 16690us; 16691us; 16695us; 16697us; 16699us; 16700us; 16701us; 16703us; 16704us; 16705us; 16714us; 16793us; 16794us; 16795us; 16796us; 16800us; 16802us; 16806us; 16807us; 16810us; 16811us; 16812us; 16813us; 16817us; 16818us; 16821us; 16823us; 16824us; 16828us; 16829us; 16833us; 16834us; 16838us; 16839us; 16843us; 16844us; 16876us; 16885us; 16889us; 16891us; 16892us; 16894us; 16895us; 16896us; 16936us; 16940us; 16941us; 16942us; 16943us; 16944us; 16945us; 16981us; 16983us; 17056us; 17057us; 17058us; 17095us; 17098us; 17172us; 17176us; 17177us; 17178us; 17180us; 17181us; 17182us; 17184us; 17185us; 17187us; 17188us; 17228us; 17229us; 17269us; 17271us; 17272us; 17274us; 17279us; 17281us; 17286us; 17320us; 17321us; 17323us; 17357us; 17358us; 17360us; 17394us; 17395us; 17397us; 17431us; 17432us; 17465us; 17473us; 17505us; 17512us; 17514us; 17516us; 17548us; 17555us; 17563us; 17595us; 17602us; 17604us; 17606us; 17638us; 17645us; 17647us; 17680us; 17681us; 17683us; 17684us; 17693us; 17725us; 17726us; 17758us; 17759us; 17791us; 17792us; 17801us; 17833us; 17834us; 17866us; 17867us; 17869us; 17870us; 17872us; 17874us; 17879us; 17883us; 17884us; 17894us; 17895us; 17897us; 17898us; 17899us; 17933us; 17937us; 17942us; 17943us; 17944us; 17977us; 17978us; 17980us; 18013us; 18014us; 18017us; 18018us; 18021us; 18022us; 18025us; 18026us; 18028us; 18029us; 18031us; 18064us; 18065us; 18067us; 18072us; 18105us; 18106us; 18107us; 18109us; 18113us; 18114us; 18148us; 18152us; 18157us; 18158us; 18160us; 18162us; 18163us; 18194us; 18196us; 18197us; 18198us; 18232us; 18238us; 18245us; 18246us; 18247us; 18249us; 18283us; 18317us; 18323us; 18324us; 18325us; 18326us; 18327us; 18328us; 18329us; 18330us; 18366us; 18367us; 18368us; 18372us; 18373us; 18374us; 18377us; 18381us; 18382us; 18390us; 18391us; 18392us; 18394us; 18395us; 18431us; 18433us; 18473us; 18474us; 18475us; 18476us; 18477us; 18486us; 18487us; 18488us; 18489us; 18490us; 18492us; 18525us; 18526us; 18527us; 18528us; 18537us; 18541us; 18542us; 18544us; 18545us; 18547us; 18548us; 18556us; 18562us; 18563us; 18565us; 18569us; 18570us; 18571us; 18578us; 18579us; 18580us; 18581us; 18582us; 18583us; 18591us; 18599us; 18607us; 18609us; 18610us; 18611us; 18613us; 18615us; 18616us; 18617us; 18618us; 18619us; 18628us; 18629us; 18630us; 18658us; 18662us; 18663us; 18667us; 18668us; 18669us; 18671us; 18677us; 18678us; 18680us; 18684us; 18685us; 18686us; 18687us; 18688us; 18689us; 18690us; 18691us; 18692us; 18693us; 18694us; 18695us; 18696us; 18697us; 18698us; 18699us; 18700us; 18701us; 18702us; 18703us; 18704us; 18705us; 18706us; 18707us; 18708us; 18710us; 18711us; 18713us; 18714us; 18715us; 18717us; 18718us; 18719us; 18720us; 18721us; 18723us; 18724us; 18729us; 18730us; 18731us; 18732us; 18733us; 18734us; 18735us; 18739us; 18740us; 18744us; 18745us; 18747us; 18749us; 18750us; 18751us; 18752us; 18753us; 18754us; 18755us; 18756us; 18757us; 18758us; 18759us; 18760us; 18761us; 18762us; 18763us; 18764us; 18765us; 18766us; 18767us; 18768us; 18769us; 18770us; 18771us; 18772us; 18773us; 18774us; 18775us; 18776us; 18777us; 18778us; 18779us; 18783us; 18787us; 18788us; 18789us; 18790us; 18794us; 18798us; 18799us; 18800us; 18801us; 18805us; 18806us; 18807us; 18808us; 18809us; 18813us; 18814us; 18815us; 18816us; 18820us; 18821us; 18822us; 18823us; 18824us; 18825us; 18826us; 18827us; 18828us; 18829us; 18830us; 18831us; 18832us; 18833us; |] +let _fsyacc_reductionSymbolCounts = [|1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 2us; 2us; 2us; 3us; 3us; 3us; 1us; 2us; 3us; 1us; 1us; 2us; 1us; 1us; 3us; 0us; 2us; 1us; 2us; 3us; 2us; 4us; 3us; 1us; 2us; 2us; 1us; 3us; 4us; 1us; 1us; 4us; 3us; 3us; 1us; 1us; 0us; 3us; 3us; 2us; 1us; 1us; 5us; 5us; 3us; 3us; 2us; 12us; 0us; 2us; 5us; 3us; 5us; 3us; 2us; 3us; 1us; 3us; 2us; 7us; 2us; 1us; 1us; 3us; 1us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 1us; 1us; 0us; 3us; 11us; 4us; 4us; 4us; 5us; 5us; 5us; 0us; 2us; 3us; 3us; 1us; 3us; 1us; 1us; 2us; 2us; 3us; 0us; 2us; 3us; 2us; 1us; 2us; 2us; 1us; 3us; 4us; 1us; 4us; 3us; 3us; 1us; 1us; 0us; 5us; 4us; 3us; 1us; 2us; 2us; 3us; 1us; 2us; 3us; 1us; 1us; 3us; 3us; 3us; 5us; 3us; 5us; 2us; 1us; 3us; 1us; 3us; 3us; 3us; 3us; 3us; 1us; 1us; 3us; 3us; 3us; 3us; 1us; 0us; 1us; 2us; 5us; 4us; 4us; 2us; 1us; 3us; 3us; 4us; 6us; 2us; 2us; 2us; 2us; 2us; 1us; 1us; 1us; 3us; 3us; 0us; 1us; 3us; 2us; 8us; 7us; 6us; 2us; 1us; 1us; 3us; 1us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 1us; 1us; 2us; 0us; 3us; 2us; 3us; 3us; 1us; 3us; 6us; 5us; 4us; 1us; 2us; 3us; 4us; 5us; 5us; 10us; 3us; 4us; 5us; 5us; 8us; 5us; 6us; 8us; 0us; 2us; 3us; 3us; 1us; 4us; 2us; 0us; 1us; 1us; 1us; 1us; 1us; 0us; 3us; 0us; 3us; 0us; 3us; 5us; 2us; 1us; 0us; 2us; 1us; 0us; 2us; 2us; 3us; 3us; 1us; 3us; 2us; 4us; 4us; 3us; 4us; 1us; 1us; 6us; 3us; 3us; 3us; 5us; 3us; 3us; 3us; 2us; 1us; 3us; 3us; 3us; 3us; 1us; 1us; 1us; 1us; 1us; 2us; 3us; 3us; 1us; 3us; 3us; 1us; 2us; 5us; 3us; 1us; 0us; 5us; 1us; 0us; 1us; 0us; 0us; 2us; 3us; 1us; 4us; 3us; 3us; 4us; 3us; 5us; 7us; 4us; 4us; 3us; 3us; 1us; 2us; 3us; 1us; 1us; 3us; 1us; 4us; 6us; 6us; 6us; 1us; 3us; 4us; 2us; 4us; 2us; 3us; 4us; 3us; 1us; 3us; 1us; 1us; 1us; 3us; 2us; 2us; 5us; 2us; 1us; 5us; 1us; 3us; 0us; 2us; 2us; 3us; 1us; 2us; 4us; 3us; 1us; 1us; 1us; 1us; 1us; 1us; 8us; 1us; 1us; 0us; 3us; 3us; 2us; 3us; 1us; 4us; 2us; 2us; 2us; 2us; 2us; 2us; 3us; 0us; 2us; 1us; 6us; 6us; 5us; 3us; 3us; 1us; 2us; 2us; 0us; 4us; 3us; 1us; 3us; 2us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 3us; 4us; 1us; 2us; 1us; 3us; 1us; 2us; 1us; 3us; 1us; 1us; 2us; 3us; 2us; 1us; 3us; 3us; 2us; 3us; 3us; 2us; 3us; 3us; 3us; 1us; 1us; 1us; 3us; 3us; 3us; 3us; 2us; 3us; 3us; 2us; 3us; 4us; 4us; 2us; 1us; 3us; 1us; 2us; 3us; 3us; 1us; 1us; 3us; 3us; 3us; 3us; 1us; 2us; 1us; 1us; 1us; 1us; 1us; 3us; 3us; 3us; 2us; 4us; 4us; 4us; 3us; 1us; 0us; 3us; 3us; 1us; 1us; 3us; 2us; 3us; 1us; 3us; 3us; 3us; 3us; 2us; 3us; 3us; 0us; 2us; 3us; 3us; 3us; 1us; 3us; 1us; 2us; 1us; 3us; 1us; 2us; 3us; 2us; 1us; 3us; 5us; 1us; 1us; 1us; 3us; 3us; 2us; 2us; 3us; 3us; 1us; 1us; 1us; 3us; 3us; 3us; 3us; 3us; 3us; 4us; 3us; 3us; 2us; 2us; 2us; 1us; 2us; 2us; 1us; 5us; 5us; 5us; 3us; 2us; 3us; 5us; 5us; 5us; 4us; 3us; 5us; 5us; 5us; 4us; 3us; 5us; 2us; 4us; 3us; 2us; 2us; 7us; 7us; 7us; 5us; 3us; 4us; 2us; 2us; 3us; 3us; 3us; 3us; 3us; 1us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 3us; 1us; 1us; 3us; 2us; 3us; 3us; 1us; 2us; 2us; 1us; 2us; 2us; 4us; 4us; 3us; 2us; 2us; 0us; 2us; 2us; 2us; 4us; 4us; 0us; 2us; 4us; 4us; 3us; 3us; 3us; 3us; 3us; 3us; 2us; 2us; 2us; 2us; 2us; 2us; 4us; 4us; 2us; 2us; 2us; 1us; 2us; 1us; 2us; 1us; 3us; 3us; 3us; 2us; 3us; 3us; 2us; 3us; 1us; 1us; 3us; 3us; 3us; 2us; 4us; 4us; 1us; 1us; 1us; 0us; 1us; 5us; 3us; 3us; 3us; 3us; 3us; 2us; 3us; 1us; 3us; 2us; 2us; 1us; 1us; 1us; 2us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 3us; 3us; 3us; 2us; 3us; 3us; 3us; 2us; 3us; 3us; 3us; 2us; 2us; 3us; 3us; 3us; 2us; 2us; 2us; 2us; 2us; 6us; 1us; 1us; 1us; 3us; 3us; 1us; 3us; 3us; 3us; 2us; 2us; 1us; 1us; 1us; 1us; 0us; 1us; 1us; 3us; 5us; 3us; 2us; 3us; 3us; 3us; 2us; 5us; 3us; 1us; 1us; 6us; 2us; 0us; 0us; 1us; 0us; 4us; 0us; 2us; 3us; 6us; 1us; 5us; 1us; 2us; 5us; 5us; 4us; 6us; 1us; 0us; 1us; 1us; 2us; 2us; 1us; 1us; 3us; 0us; 3us; 2us; 3us; 1us; 2us; 4us; 3us; 2us; 5us; 4us; 2us; 1us; 0us; 2us; 3us; 3us; 2us; 0us; 2us; 2us; 5us; 2us; 1us; 3us; 3us; 3us; 2us; 2us; 4us; 4us; 5us; 5us; 5us; 4us; 4us; 3us; 2us; 3us; 1us; 3us; 1us; 3us; 0us; 2us; 3us; 1us; 3us; 1us; 3us; 1us; 4us; 5us; 2us; 3us; 4us; 1us; 3us; 1us; 2us; 3us; 2us; 3us; 1us; 3us; 3us; 1us; 1us; 1us; 3us; 1us; 2us; 3us; 2us; 4us; 1us; 3us; 3us; 2us; 3us; 4us; 5us; 4us; 3us; 3us; 0us; 1us; 3us; 4us; 1us; 1us; 1us; 2us; 1us; 1us; 3us; 3us; 6us; 6us; 5us; 4us; 3us; 1us; 1us; 2us; 1us; 1us; 3us; 2us; 3us; 4us; 3us; 1us; 2us; 6us; 6us; 4us; 3us; 3us; 2us; 2us; 1us; 3us; 2us; 1us; 1us; 0us; 3us; 3us; 1us; 1us; 3us; 1us; 3us; 1us; 1us; 2us; 1us; 3us; 3us; 2us; 2us; 1us; 2us; 1us; 1us; 1us; 3us; 3us; 3us; 3us; 1us; 4us; 6us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 2us; 2us; 1us; 2us; 3us; 1us; 1us; 1us; 1us; 3us; 3us; 1us; 1us; 1us; 1us; 1us; 2us; 2us; 0us; 1us; 1us; 2us; 2us; 1us; 1us; 1us; 1us; 1us; 1us; 0us; 1us; 0us; 1us; 0us; 1us; 0us; 1us; 0us; 1us; 0us; 1us; 0us; 1us; 0us; 1us; 0us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 0us; 1us; 0us; 2us; 1us; 1us; 2us; 1us; 1us; 2us; 1us; 1us; 1us; 2us; 1us; 1us; 2us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; |] +let _fsyacc_productionToNonTerminalTable = [|0us; 1us; 2us; 3us; 4us; 5us; 5us; 5us; 6us; 6us; 7us; 7us; 7us; 7us; 7us; 7us; 7us; 8us; 8us; 9us; 10us; 11us; 11us; 12us; 12us; 13us; 14us; 14us; 15us; 16us; 16us; 16us; 17us; 18us; 19us; 19us; 20us; 20us; 21us; 22us; 22us; 23us; 23us; 23us; 23us; 24us; 24us; 24us; 25us; 25us; 25us; 26us; 26us; 26us; 26us; 26us; 26us; 26us; 27us; 28us; 28us; 28us; 29us; 29us; 29us; 30us; 31us; 31us; 32us; 32us; 33us; 33us; 34us; 34us; 34us; 35us; 35us; 35us; 35us; 36us; 36us; 36us; 36us; 37us; 37us; 37us; 38us; 38us; 39us; 40us; 40us; 40us; 40us; 40us; 40us; 40us; 41us; 41us; 41us; 41us; 42us; 42us; 43us; 43us; 43us; 44us; 45us; 45us; 46us; 46us; 46us; 47us; 47us; 48us; 48us; 49us; 50us; 50us; 51us; 51us; 51us; 51us; 52us; 52us; 53us; 53us; 53us; 53us; 53us; 54us; 54us; 54us; 54us; 54us; 55us; 55us; 56us; 56us; 56us; 56us; 56us; 56us; 56us; 56us; 57us; 57us; 58us; 58us; 58us; 58us; 58us; 58us; 58us; 59us; 59us; 59us; 60us; 61us; 61us; 62us; 62us; 63us; 63us; 63us; 63us; 64us; 64us; 65us; 65us; 65us; 66us; 66us; 66us; 66us; 67us; 67us; 67us; 67us; 68us; 69us; 69us; 70us; 70us; 70us; 70us; 71us; 71us; 71us; 72us; 72us; 72us; 73us; 73us; 73us; 73us; 74us; 74us; 75us; 75us; 75us; 76us; 76us; 76us; 77us; 78us; 78us; 78us; 79us; 79us; 80us; 81us; 81us; 82us; 82us; 83us; 83us; 83us; 83us; 83us; 83us; 83us; 83us; 83us; 83us; 83us; 84us; 85us; 86us; 86us; 87us; 87us; 87us; 87us; 87us; 88us; 88us; 89us; 89us; 89us; 90us; 90us; 91us; 91us; 92us; 92us; 93us; 93us; 93us; 94us; 94us; 95us; 96us; 96us; 97us; 97us; 98us; 98us; 98us; 99us; 99us; 100us; 100us; 100us; 100us; 101us; 101us; 102us; 102us; 102us; 102us; 102us; 103us; 103us; 103us; 104us; 104us; 105us; 105us; 105us; 106us; 107us; 107us; 107us; 108us; 108us; 109us; 109us; 109us; 110us; 110us; 111us; 111us; 112us; 113us; 114us; 114us; 114us; 115us; 116us; 116us; 117us; 117us; 118us; 118us; 119us; 119us; 120us; 120us; 120us; 120us; 120us; 120us; 120us; 120us; 120us; 120us; 121us; 121us; 122us; 122us; 122us; 123us; 124us; 124us; 125us; 125us; 125us; 125us; 126us; 126us; 126us; 127us; 127us; 127us; 128us; 128us; 129us; 129us; 130us; 130us; 131us; 131us; 132us; 132us; 133us; 134us; 135us; 136us; 137us; 138us; 138us; 139us; 139us; 140us; 141us; 141us; 142us; 143us; 144us; 145us; 145us; 145us; 145us; 146us; 146us; 147us; 148us; 148us; 148us; 149us; 149us; 150us; 150us; 151us; 151us; 151us; 151us; 151us; 152us; 152us; 153us; 154us; 154us; 155us; 155us; 156us; 156us; 156us; 157us; 157us; 157us; 158us; 159us; 159us; 160us; 161us; 161us; 162us; 162us; 163us; 163us; 163us; 163us; 163us; 163us; 163us; 163us; 163us; 163us; 163us; 163us; 163us; 163us; 163us; 163us; 163us; 164us; 164us; 164us; 164us; 165us; 165us; 166us; 166us; 167us; 167us; 168us; 169us; 169us; 169us; 169us; 170us; 170us; 171us; 171us; 171us; 171us; 171us; 172us; 172us; 172us; 172us; 172us; 172us; 173us; 173us; 174us; 174us; 175us; 175us; 176us; 177us; 177us; 177us; 177us; 177us; 177us; 178us; 178us; 179us; 179us; 179us; 179us; 180us; 180us; 180us; 180us; 180us; 180us; 180us; 180us; 180us; 180us; 180us; 180us; 180us; 180us; 180us; 180us; 180us; 180us; 180us; 180us; 181us; 181us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 182us; 183us; 183us; 184us; 184us; 185us; 185us; 186us; 187us; 187us; 187us; 188us; 188us; 188us; 189us; 189us; 190us; 190us; 191us; 191us; 192us; 193us; 193us; 193us; 193us; 193us; 193us; 194us; 194us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 195us; 196us; 196us; 197us; 197us; 197us; 198us; 198us; 198us; 198us; 199us; 200us; 200us; 200us; 200us; 200us; 201us; 201us; 202us; 203us; 204us; 204us; 204us; 205us; 205us; 205us; 205us; 205us; 205us; 206us; 206us; 206us; 206us; 207us; 207us; 207us; 207us; 207us; 207us; 207us; 207us; 207us; 207us; 207us; 207us; 208us; 208us; 209us; 209us; 210us; 210us; 210us; 210us; 210us; 210us; 210us; 210us; 210us; 210us; 210us; 210us; 210us; 210us; 210us; 210us; 210us; 211us; 211us; 211us; 211us; 211us; 211us; 211us; 211us; 211us; 211us; 211us; 212us; 212us; 213us; 213us; 213us; 213us; 213us; 214us; 214us; 215us; 215us; 215us; 215us; 215us; 215us; 215us; 215us; 215us; 215us; 216us; 216us; 216us; 216us; 217us; 217us; 217us; 217us; 218us; 218us; 218us; 218us; 219us; 219us; 219us; 219us; 219us; 219us; 219us; 219us; 219us; 220us; 220us; 220us; 221us; 221us; 222us; 222us; 223us; 223us; 223us; 223us; 223us; 224us; 224us; 224us; 225us; 225us; 226us; 226us; 227us; 227us; 227us; 228us; 229us; 229us; 229us; 229us; 230us; 230us; 231us; 231us; 232us; 233us; 233us; 234us; 234us; 235us; 235us; 236us; 236us; 236us; 237us; 237us; 238us; 238us; 238us; 238us; 238us; 238us; 238us; 239us; 239us; 240us; 240us; 240us; 240us; 241us; 241us; 242us; 242us; 243us; 243us; 243us; 243us; 243us; 244us; 244us; 244us; 245us; 245us; 245us; 246us; 246us; 247us; 247us; 247us; 248us; 249us; 249us; 249us; 250us; 251us; 251us; 252us; 252us; 252us; 252us; 252us; 253us; 253us; 253us; 253us; 253us; 253us; 253us; 253us; 254us; 254us; 255us; 255us; 256us; 256us; 257us; 257us; 258us; 258us; 259us; 259us; 260us; 260us; 261us; 261us; 261us; 261us; 261us; 261us; 262us; 262us; 263us; 264us; 264us; 264us; 264us; 265us; 265us; 265us; 266us; 266us; 267us; 267us; 268us; 268us; 268us; 268us; 268us; 268us; 268us; 269us; 269us; 269us; 269us; 270us; 271us; 271us; 271us; 272us; 272us; 273us; 273us; 274us; 274us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 275us; 276us; 276us; 277us; 277us; 277us; 277us; 277us; 277us; 277us; 278us; 278us; 278us; 279us; 279us; 280us; 281us; 281us; 282us; 282us; 282us; 283us; 283us; 283us; 284us; 284us; 285us; 285us; 285us; 285us; 286us; 286us; 287us; 288us; 289us; 289us; 289us; 289us; 290us; 290us; 290us; 290us; 290us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 291us; 292us; 293us; 293us; 294us; 294us; 295us; 295us; 295us; 295us; 296us; 297us; 297us; 297us; 298us; 298us; 299us; 299us; 300us; 300us; 300us; 300us; 301us; 301us; 301us; 302us; 302us; 302us; 302us; 303us; 303us; 304us; 304us; 305us; 305us; 306us; 306us; 307us; 307us; 308us; 308us; 309us; 309us; 310us; 310us; 311us; 311us; 312us; 312us; 313us; 313us; 314us; 314us; 315us; 315us; 316us; 316us; 317us; 317us; 317us; 318us; 318us; 319us; 319us; 319us; 320us; 320us; 320us; 321us; 321us; 321us; 322us; 323us; 323us; 323us; 324us; 324us; 324us; 325us; 325us; 325us; 325us; 325us; 326us; 326us; 326us; 326us; 326us; 326us; |] +let _fsyacc_immediateActions = [|65535us; 49152us; 65535us; 49152us; 65535us; 49152us; 65535us; 49152us; 65535us; 49152us; 16389us; 16390us; 16391us; 16392us; 16393us; 16394us; 65535us; 16395us; 65535us; 16396us; 65535us; 16397us; 65535us; 16398us; 65535us; 16399us; 65535us; 16400us; 65535us; 16402us; 65535us; 65535us; 65535us; 16404us; 65535us; 16406us; 16407us; 16408us; 65535us; 65535us; 65535us; 16411us; 16412us; 65535us; 16413us; 65535us; 16414us; 65535us; 16415us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16419us; 65535us; 16420us; 65535us; 65535us; 16422us; 65535us; 65535us; 65535us; 16423us; 16424us; 16425us; 65535us; 65535us; 65535us; 16426us; 16427us; 65535us; 16428us; 16429us; 65535us; 65535us; 65535us; 16432us; 65535us; 65535us; 16433us; 16435us; 16436us; 65535us; 65535us; 65535us; 65535us; 16437us; 16438us; 16439us; 16440us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16442us; 65535us; 65535us; 65535us; 65535us; 65535us; 16445us; 65535us; 65535us; 16446us; 65535us; 65535us; 65535us; 16447us; 65535us; 65535us; 16448us; 65535us; 16449us; 65535us; 65535us; 16450us; 65535us; 65535us; 16452us; 16453us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16454us; 65535us; 16455us; 16456us; 16457us; 65535us; 65535us; 16458us; 16459us; 65535us; 65535us; 16460us; 16461us; 65535us; 16462us; 65535us; 65535us; 16463us; 16464us; 65535us; 65535us; 16465us; 16466us; 65535us; 65535us; 16467us; 16468us; 16469us; 16470us; 65535us; 65535us; 16472us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16473us; 65535us; 65535us; 65535us; 65535us; 65535us; 16476us; 65535us; 65535us; 16477us; 65535us; 16478us; 65535us; 65535us; 16479us; 65535us; 16481us; 65535us; 65535us; 16482us; 16483us; 65535us; 65535us; 16485us; 16486us; 65535us; 16488us; 65535us; 16489us; 65535us; 65535us; 16490us; 65535us; 16492us; 65535us; 16493us; 65535us; 16494us; 65535us; 16496us; 65535us; 16497us; 65535us; 65535us; 16499us; 65535us; 65535us; 65535us; 16500us; 16501us; 65535us; 65535us; 65535us; 16502us; 16503us; 65535us; 16504us; 16505us; 16506us; 65535us; 65535us; 65535us; 65535us; 16508us; 16511us; 16512us; 65535us; 16513us; 65535us; 16514us; 65535us; 65535us; 65535us; 65535us; 16517us; 16518us; 16519us; 65535us; 65535us; 16520us; 65535us; 16521us; 65535us; 16522us; 65535us; 65535us; 16523us; 16524us; 65535us; 65535us; 16525us; 65535us; 16526us; 16527us; 65535us; 16528us; 65535us; 65535us; 65535us; 16530us; 16531us; 65535us; 16532us; 16533us; 16534us; 16535us; 65535us; 65535us; 65535us; 16537us; 16538us; 16539us; 65535us; 65535us; 16540us; 16541us; 65535us; 16544us; 65535us; 65535us; 65535us; 65535us; 16545us; 65535us; 65535us; 16546us; 16547us; 16548us; 16549us; 65535us; 16550us; 65535us; 65535us; 16551us; 65535us; 65535us; 65535us; 16552us; 65535us; 65535us; 65535us; 65535us; 16553us; 65535us; 16554us; 65535us; 16555us; 65535us; 16556us; 65535us; 16557us; 65535us; 16558us; 16559us; 16560us; 16561us; 65535us; 65535us; 16562us; 65535us; 65535us; 16563us; 65535us; 65535us; 16566us; 16567us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16568us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16569us; 16570us; 65535us; 16571us; 16572us; 16573us; 65535us; 65535us; 16574us; 16575us; 65535us; 65535us; 16576us; 16577us; 65535us; 16578us; 65535us; 65535us; 16579us; 16580us; 65535us; 65535us; 16581us; 16582us; 16583us; 16584us; 65535us; 16585us; 65535us; 65535us; 16587us; 65535us; 16588us; 65535us; 65535us; 16589us; 16590us; 65535us; 65535us; 16592us; 65535us; 65535us; 65535us; 65535us; 65535us; 16593us; 65535us; 65535us; 65535us; 65535us; 16594us; 16595us; 65535us; 16597us; 65535us; 65535us; 65535us; 65535us; 16598us; 16599us; 65535us; 65535us; 16600us; 65535us; 65535us; 16601us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16602us; 16603us; 65535us; 16604us; 65535us; 16605us; 65535us; 16606us; 65535us; 65535us; 65535us; 65535us; 65535us; 16607us; 65535us; 16608us; 65535us; 65535us; 65535us; 65535us; 65535us; 16609us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16610us; 65535us; 16612us; 65535us; 65535us; 16613us; 65535us; 65535us; 16614us; 16615us; 65535us; 65535us; 65535us; 16616us; 16617us; 16619us; 16620us; 16621us; 16622us; 16623us; 65535us; 65535us; 16625us; 65535us; 65535us; 16627us; 65535us; 65535us; 16629us; 65535us; 65535us; 16630us; 16631us; 16632us; 65535us; 16634us; 16635us; 65535us; 16637us; 16638us; 65535us; 65535us; 16639us; 16640us; 16641us; 65535us; 65535us; 16642us; 65535us; 65535us; 65535us; 65535us; 16644us; 65535us; 16645us; 16646us; 65535us; 65535us; 16647us; 16648us; 16649us; 65535us; 65535us; 65535us; 65535us; 65535us; 16650us; 16651us; 16652us; 16653us; 65535us; 65535us; 16654us; 65535us; 65535us; 16655us; 16656us; 65535us; 16657us; 65535us; 16658us; 16659us; 65535us; 65535us; 16660us; 16661us; 65535us; 16662us; 65535us; 65535us; 16663us; 16664us; 16665us; 16666us; 16667us; 16668us; 65535us; 65535us; 65535us; 65535us; 16671us; 16672us; 65535us; 65535us; 16673us; 65535us; 65535us; 65535us; 65535us; 16674us; 16675us; 65535us; 16676us; 65535us; 65535us; 65535us; 16677us; 16678us; 65535us; 65535us; 65535us; 65535us; 16681us; 16682us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16688us; 16689us; 65535us; 65535us; 65535us; 16690us; 65535us; 65535us; 16691us; 65535us; 16692us; 65535us; 16693us; 16694us; 65535us; 65535us; 16695us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16696us; 65535us; 16697us; 16698us; 65535us; 65535us; 65535us; 65535us; 16702us; 65535us; 65535us; 16703us; 65535us; 16705us; 65535us; 65535us; 16706us; 65535us; 65535us; 65535us; 16708us; 65535us; 65535us; 16709us; 65535us; 65535us; 16710us; 65535us; 65535us; 16711us; 16712us; 65535us; 65535us; 16713us; 65535us; 65535us; 16714us; 65535us; 16715us; 65535us; 65535us; 65535us; 16717us; 65535us; 16718us; 65535us; 65535us; 16720us; 65535us; 65535us; 65535us; 65535us; 16724us; 16725us; 65535us; 65535us; 16726us; 16727us; 65535us; 16728us; 65535us; 65535us; 65535us; 65535us; 16729us; 65535us; 16730us; 16731us; 65535us; 65535us; 65535us; 65535us; 16732us; 65535us; 65535us; 16734us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16738us; 16739us; 65535us; 16740us; 65535us; 65535us; 65535us; 16741us; 65535us; 65535us; 16742us; 16743us; 16744us; 16745us; 16746us; 16747us; 16748us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16749us; 65535us; 65535us; 65535us; 16753us; 65535us; 16754us; 65535us; 65535us; 16756us; 65535us; 65535us; 65535us; 65535us; 16758us; 16759us; 16760us; 65535us; 65535us; 16761us; 65535us; 65535us; 16764us; 65535us; 65535us; 16765us; 65535us; 16767us; 16768us; 65535us; 65535us; 65535us; 65535us; 65535us; 16769us; 16770us; 16771us; 65535us; 65535us; 16772us; 16773us; 16774us; 65535us; 65535us; 16776us; 65535us; 65535us; 65535us; 16778us; 65535us; 16779us; 16780us; 65535us; 65535us; 16781us; 16782us; 16783us; 16784us; 16785us; 16786us; 16787us; 16788us; 16789us; 16790us; 16791us; 16792us; 16793us; 16794us; 16795us; 65535us; 16796us; 16797us; 16798us; 16799us; 65535us; 65535us; 16800us; 65535us; 65535us; 65535us; 16801us; 16804us; 65535us; 65535us; 16805us; 16806us; 65535us; 16807us; 65535us; 65535us; 16809us; 65535us; 16811us; 65535us; 16812us; 65535us; 65535us; 65535us; 16813us; 65535us; 65535us; 16816us; 65535us; 65535us; 16817us; 16818us; 16819us; 65535us; 16820us; 16821us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16822us; 65535us; 65535us; 65535us; 65535us; 16827us; 65535us; 65535us; 65535us; 65535us; 65535us; 16832us; 65535us; 16833us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16836us; 65535us; 16837us; 65535us; 16838us; 65535us; 16839us; 16840us; 65535us; 65535us; 16841us; 16842us; 65535us; 16843us; 65535us; 16844us; 65535us; 16845us; 16847us; 65535us; 16848us; 65535us; 65535us; 16849us; 65535us; 65535us; 16850us; 65535us; 65535us; 16851us; 65535us; 65535us; 16853us; 16854us; 16855us; 16856us; 16857us; 16858us; 65535us; 65535us; 16859us; 16860us; 65535us; 65535us; 16862us; 65535us; 65535us; 65535us; 16863us; 16864us; 65535us; 16865us; 16866us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16869us; 65535us; 65535us; 65535us; 65535us; 16873us; 65535us; 65535us; 16876us; 65535us; 65535us; 65535us; 65535us; 65535us; 16881us; 65535us; 16882us; 65535us; 65535us; 16885us; 65535us; 16886us; 65535us; 65535us; 16887us; 16888us; 16889us; 65535us; 65535us; 16890us; 65535us; 65535us; 16892us; 65535us; 65535us; 16894us; 65535us; 16896us; 65535us; 65535us; 65535us; 65535us; 16897us; 65535us; 16900us; 65535us; 65535us; 65535us; 16901us; 65535us; 16903us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16904us; 65535us; 65535us; 16905us; 16906us; 65535us; 16907us; 16908us; 65535us; 16909us; 16910us; 16911us; 16912us; 16913us; 65535us; 65535us; 16914us; 16915us; 65535us; 65535us; 16916us; 16917us; 65535us; 65535us; 16918us; 16919us; 65535us; 16920us; 65535us; 65535us; 16921us; 16922us; 16923us; 65535us; 65535us; 65535us; 65535us; 65535us; 16927us; 65535us; 16928us; 65535us; 65535us; 65535us; 65535us; 16930us; 16931us; 65535us; 16932us; 16933us; 16934us; 16935us; 65535us; 65535us; 65535us; 65535us; 16936us; 16937us; 16938us; 16939us; 16940us; 65535us; 65535us; 65535us; 16941us; 16942us; 16943us; 16944us; 16945us; 65535us; 65535us; 16946us; 16947us; 16948us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16952us; 65535us; 65535us; 65535us; 65535us; 65535us; 16953us; 16954us; 65535us; 65535us; 65535us; 65535us; 16955us; 65535us; 65535us; 16956us; 65535us; 16957us; 65535us; 65535us; 65535us; 16959us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16960us; 65535us; 16961us; 65535us; 16962us; 65535us; 65535us; 65535us; 16964us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16977us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16987us; 16988us; 16989us; 16990us; 16991us; 16992us; 16993us; 16994us; 16995us; 16996us; 16997us; 16998us; 16999us; 17000us; 17001us; 17002us; 17003us; 17004us; 17005us; 17006us; 17008us; 65535us; 65535us; 17009us; 65535us; 17010us; 65535us; 65535us; 17011us; 17012us; 17013us; 65535us; 17014us; 17015us; 17016us; 17017us; 65535us; 65535us; 65535us; 17019us; 17020us; 17021us; 17022us; 65535us; 65535us; 17025us; 65535us; 17026us; 65535us; 65535us; 65535us; 65535us; 17028us; 17029us; 65535us; 65535us; 65535us; 65535us; 17032us; 17033us; 65535us; 17034us; 17035us; 65535us; 17037us; 65535us; 17038us; 65535us; 65535us; 17040us; 65535us; 65535us; 17041us; 65535us; 65535us; 17042us; 65535us; 65535us; 17043us; 65535us; 65535us; 17044us; 65535us; 65535us; 17045us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 17046us; 65535us; 17047us; 17048us; 65535us; 17049us; 65535us; 17050us; 65535us; 65535us; 65535us; 17052us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 17058us; 65535us; 65535us; 65535us; 17060us; 65535us; 65535us; 17061us; 65535us; 65535us; 17062us; 65535us; 17063us; 17064us; 17065us; 65535us; 65535us; 17066us; 17067us; 17068us; 17069us; 65535us; 65535us; 17070us; 17071us; 17072us; 17073us; 17074us; 17076us; 65535us; 65535us; 65535us; 65535us; 17077us; 65535us; 17078us; 65535us; 65535us; 17079us; 65535us; 17080us; 17081us; 17082us; 17083us; 65535us; 65535us; 17084us; 65535us; 65535us; 17086us; 65535us; 17088us; 17089us; 65535us; 17093us; 17094us; 17095us; 17096us; 17097us; 17098us; 17099us; 17100us; 17101us; 17102us; 65535us; 65535us; 17103us; 17104us; 65535us; 17105us; 17106us; 65535us; 65535us; 65535us; 17107us; 17108us; 17109us; 17110us; 65535us; 65535us; 17111us; 17112us; 17113us; 17114us; 65535us; 65535us; 65535us; 17115us; 65535us; 17116us; 17117us; 17118us; 65535us; 17119us; 17120us; 17121us; 17122us; 17123us; 65535us; 65535us; 65535us; 65535us; 65535us; 17124us; 17125us; 17126us; 17127us; 65535us; 65535us; 17128us; 65535us; 17129us; 65535us; 65535us; 17131us; 17132us; 17133us; 17134us; 17135us; 17136us; 17137us; 17138us; 17139us; 17141us; 17142us; 65535us; 65535us; 17145us; 65535us; 17146us; 65535us; 17148us; 17149us; 17150us; 65535us; 65535us; 17152us; 17153us; 17154us; 65535us; 65535us; 65535us; 65535us; 65535us; 17155us; 17156us; 17159us; 65535us; 65535us; 65535us; 17161us; 65535us; 17163us; 65535us; 17164us; 65535us; 65535us; 65535us; 65535us; 65535us; 17165us; 17166us; 65535us; 65535us; 65535us; 17167us; 65535us; 65535us; 65535us; 65535us; 17170us; 65535us; 65535us; 65535us; 17171us; 65535us; 65535us; 17172us; 65535us; 65535us; 65535us; 17173us; 17174us; 65535us; 65535us; 65535us; 17178us; 17179us; 65535us; 17181us; 17182us; 65535us; 65535us; 17184us; 17186us; 17188us; 65535us; 65535us; 65535us; 17189us; 65535us; 17190us; 17192us; 17195us; 65535us; 17197us; 65535us; 65535us; 17198us; 65535us; 17199us; 65535us; 17200us; 65535us; 17202us; 65535us; 17203us; 65535us; 65535us; 65535us; 65535us; 17204us; 65535us; 17205us; 17206us; 65535us; 65535us; 17207us; 17208us; 17209us; 17210us; 17211us; 65535us; 65535us; 65535us; 17212us; 17213us; 65535us; 65535us; 65535us; 65535us; 17214us; 17215us; 65535us; 17216us; 17217us; 65535us; 17218us; 65535us; 17219us; 65535us; 17220us; 65535us; 65535us; 17221us; 65535us; 65535us; 65535us; 65535us; 65535us; 17227us; 65535us; 65535us; 17228us; 65535us; 65535us; 17230us; 65535us; 65535us; 17232us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 17240us; 65535us; 17242us; 65535us; 65535us; 17243us; 65535us; 17244us; 65535us; 17245us; 65535us; 65535us; 17247us; 65535us; 17248us; 65535us; 17251us; 65535us; 65535us; 65535us; 65535us; 17252us; 65535us; 17254us; 65535us; 17255us; 17256us; 65535us; 65535us; 65535us; 17257us; 17258us; 65535us; 17259us; 65535us; 65535us; 17260us; 65535us; 17261us; 65535us; 17262us; 65535us; 17263us; 65535us; 17264us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 17266us; 17267us; 65535us; 65535us; 17270us; 65535us; 65535us; 65535us; 17271us; 65535us; 65535us; 17274us; 65535us; 65535us; 17276us; 17277us; 65535us; 65535us; 65535us; 17278us; 17279us; 65535us; 65535us; 65535us; 65535us; 17280us; 17281us; 17282us; 17283us; 17284us; 17285us; 17286us; 65535us; 17288us; 17289us; 65535us; 17290us; 17291us; 65535us; 65535us; 17293us; 65535us; 17294us; 17295us; 65535us; 17296us; 65535us; 65535us; 65535us; 65535us; 17297us; 17298us; 17299us; 65535us; 17300us; 17301us; 17302us; 17303us; 65535us; 65535us; 17305us; 17307us; 17308us; 65535us; 65535us; 17310us; 65535us; 17311us; 65535us; 17313us; 65535us; 65535us; 17314us; 65535us; 65535us; 17316us; 17317us; 65535us; 17319us; 17320us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 17324us; 17325us; 65535us; 65535us; 17326us; 17327us; 17328us; 17329us; 65535us; 17330us; 17331us; 65535us; 65535us; 17332us; 65535us; 17333us; 17334us; 65535us; 65535us; 17335us; 65535us; 65535us; 17336us; 17337us; 17338us; 17339us; 17340us; 17341us; 17342us; 17343us; 17344us; 17345us; 17346us; 17347us; 17348us; 17349us; 17350us; 17351us; 17352us; 17353us; 17354us; 17355us; 17356us; 17357us; 17358us; 17359us; 65535us; 17361us; 65535us; 17362us; 17363us; 65535us; 17364us; 17365us; 17366us; 17367us; 65535us; 17369us; 65535us; 17370us; 17371us; 17372us; 17373us; 17374us; 17375us; 65535us; 17377us; 65535us; 17378us; 65535us; 65535us; 17382us; 17383us; 17384us; 17385us; 17386us; 17387us; 17388us; 17389us; 17391us; 17393us; 17395us; 17397us; 17399us; 17403us; 17405us; 17407us; 17408us; 17409us; 17410us; 17411us; 17412us; 17413us; 17414us; 17415us; 17416us; 17417us; 17418us; 17419us; 17420us; 17422us; 65535us; 65535us; 17424us; 17425us; 17426us; 65535us; 65535us; 17427us; 17428us; 17429us; 65535us; 17430us; 17431us; 17432us; 17433us; 65535us; 17434us; 17435us; 17436us; 65535us; 17437us; 17438us; 17439us; 17440us; 17441us; 17442us; 17443us; 17444us; 17445us; 17446us; 17447us; 17448us; 17449us; 17450us; |] +let _fsyacc_reductions () = [| +# 2775 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.ParsedSigFile)) in + Microsoft.FSharp.Core.Operators.box + ( + ( + raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) + ) + : '_startsignatureFile)); +# 2784 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.ParsedImplFile)) in + Microsoft.FSharp.Core.Operators.box + ( + ( + raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) + ) + : '_startimplementationFile)); +# 2793 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.ParsedFsiInteraction)) in + Microsoft.FSharp.Core.Operators.box + ( + ( + raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) + ) + : '_startinteraction)); +# 2802 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( + raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) + ) + : '_starttypedSeqExprEOF)); +# 2811 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( + raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) + ) + : '_starttypEOF)); +# 2820 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveItemsTerminator)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 497 "../pars.fsy" + IDefns (_1,lhs parseState) + ) +# 497 "../pars.fsy" + : Ast.ParsedFsiInteraction)); +# 2831 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 500 "../pars.fsy" + warning(Error(FSComp.SR.parsUnexpectedSemicolon(),rhs parseState 1)) + IDefns ([],lhs parseState) + ) +# 500 "../pars.fsy" + : Ast.ParsedFsiInteraction)); +# 2842 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 504 "../pars.fsy" + IDefns ([],lhs parseState) + ) +# 504 "../pars.fsy" + : Ast.ParsedFsiInteraction)); +# 2852 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 508 "../pars.fsy" + + ) +# 508 "../pars.fsy" + : 'interactiveTerminator)); +# 2862 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LexerWhitespaceContinuation)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 509 "../pars.fsy" + checkEndOfFileError _1 + ) +# 509 "../pars.fsy" + : 'interactiveTerminator)); +# 2873 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveTerminator)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 523 "../pars.fsy" + [] + ) +# 523 "../pars.fsy" + : 'interactiveItemsTerminator)); +# 2884 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveDefns)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveTerminator)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 526 "../pars.fsy" + _1 + ) +# 526 "../pars.fsy" + : 'interactiveItemsTerminator)); +# 2896 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveTerminator)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 529 "../pars.fsy" + _1 + ) +# 529 "../pars.fsy" + : 'interactiveItemsTerminator)); +# 2908 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveHash)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveTerminator)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 532 "../pars.fsy" + _1 + ) +# 532 "../pars.fsy" + : 'interactiveItemsTerminator)); +# 2920 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveDefns)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveSeparators)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveItemsTerminator)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 535 "../pars.fsy" + _1 @ _3 + ) +# 535 "../pars.fsy" + : 'interactiveItemsTerminator)); +# 2933 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveSeparators)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveItemsTerminator)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 538 "../pars.fsy" + _1 @ _3 + ) +# 538 "../pars.fsy" + : 'interactiveItemsTerminator)); +# 2946 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveHash)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveSeparators)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveItemsTerminator)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 541 "../pars.fsy" + _1 @ _3 + ) +# 541 "../pars.fsy" + : 'interactiveItemsTerminator)); +# 2959 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 547 "../pars.fsy" + _1 + ) +# 547 "../pars.fsy" + : 'interactiveDefns)); +# 2970 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefn)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveDefns)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 550 "../pars.fsy" + _1 @ _2 + ) +# 550 "../pars.fsy" + : 'interactiveDefns)); +# 2982 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 556 "../pars.fsy" + match _2 with + | Some vis -> errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(vis.ToString()),rhs parseState 3)) + | _ -> () + let attrDecls = if not (isNil _1) then [ SynModuleDecl.Attributes (_1, rangeOfNonNilAttrs _1) ] else [] in + attrDecls @ [ mkSynDoDecl(_3)] + ) +# 556 "../pars.fsy" + : 'interactiveExpr)); +# 2999 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'hashDirective)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 566 "../pars.fsy" + [SynModuleDecl.HashDirective(_1,rhs parseState 1)] + ) +# 566 "../pars.fsy" + : 'interactiveHash)); +# 3010 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveSeparator)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 571 "../pars.fsy" + + ) +# 571 "../pars.fsy" + : 'interactiveSeparators)); +# 3021 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveSeparator)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'interactiveSeparators)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 572 "../pars.fsy" + + ) +# 572 "../pars.fsy" + : 'interactiveSeparators)); +# 3033 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 577 "../pars.fsy" + + ) +# 577 "../pars.fsy" + : 'interactiveSeparator)); +# 3043 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 578 "../pars.fsy" + + ) +# 578 "../pars.fsy" + : 'interactiveSeparator)); +# 3053 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'hashDirectiveArgs)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 588 "../pars.fsy" + ParsedHashDirective (_2,_3,lhs parseState) + ) +# 588 "../pars.fsy" + : 'hashDirective)); +# 3065 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 594 "../pars.fsy" + [] + ) +# 594 "../pars.fsy" + : 'hashDirectiveArgs)); +# 3075 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'hashDirectiveArgs)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'hashDirectiveArg)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 597 "../pars.fsy" + _1 @ [_2] + ) +# 597 "../pars.fsy" + : 'hashDirectiveArgs)); +# 3087 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'stringOrKeywordString)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 603 "../pars.fsy" + _1 + ) +# 603 "../pars.fsy" + : 'hashDirectiveArg)); +# 3098 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileNamespaceSpecs)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LexerWhitespaceContinuation)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 612 "../pars.fsy" + checkEndOfFileError _2; _1 + ) +# 612 "../pars.fsy" + : Ast.ParsedSigFile)); +# 3110 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileNamespaceSpecs)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LexerWhitespaceContinuation)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 615 "../pars.fsy" + _1 + ) +# 615 "../pars.fsy" + : Ast.ParsedSigFile)); +# 3122 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LexerWhitespaceContinuation)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 621 "../pars.fsy" + let emptySigFileFrag = ParsedSigFileFragment.AnonModule([],rhs parseState 1) in + ParsedSigFile ([],[emptySigFileFrag]) + ) +# 621 "../pars.fsy" + : Ast.ParsedSigFile)); +# 3134 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleKeyword)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_rec)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 629 "../pars.fsy" + _3, _4.Lid, grabXmlDoc(parseState,1), _2 + ) +# 629 "../pars.fsy" + : 'moduleIntro)); +# 3148 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_rec)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 635 "../pars.fsy" + _2, _3.Lid, grabXmlDoc(parseState,1) + ) +# 635 "../pars.fsy" + : 'namespaceIntro)); +# 3160 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileModuleSpec)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 641 "../pars.fsy" + ParsedSigFile ([],[ (_1 (false,[],PreXmlDoc.Empty)) ]) + ) +# 641 "../pars.fsy" + : 'fileNamespaceSpecs)); +# 3171 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileModuleSpec)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileNamespaceSpecList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 644 "../pars.fsy" + // If there are namespaces, the first fileModuleImpl may only contain # directives + let decls = + match (_1 (false,[],PreXmlDoc.Empty)) with + | ParsedSigFileFragment.AnonModule(decls,m) -> decls + | ParsedSigFileFragment.NamespaceFragment(_,_,_, decls, _,_,_) -> decls + | ParsedSigFileFragment.NamedModule(SynModuleOrNamespaceSig(_,_,_,_,_,_,_,m)) -> + raiseParseErrorAt m (FSComp.SR.parsOnlyHashDirectivesAllowed()) + let decls = + decls |> List.collect (function + | (SynModuleSigDecl.HashDirective (hd,_)) -> [hd] + | d -> + reportParseErrorAt d.Range (FSComp.SR.parsOnlyHashDirectivesAllowed()) + []) + ParsedSigFile (decls, _2) + ) +# 644 "../pars.fsy" + : 'fileNamespaceSpecs)); +# 3196 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileNamespaceSpec)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileNamespaceSpecList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 662 "../pars.fsy" + _1 :: _2 + ) +# 662 "../pars.fsy" + : 'fileNamespaceSpecList)); +# 3208 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileNamespaceSpec)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 665 "../pars.fsy" + [_1] + ) +# 665 "../pars.fsy" + : 'fileNamespaceSpecList)); +# 3219 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'namespaceIntro)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'deprecated_opt_equals)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileModuleSpec)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 669 "../pars.fsy" + let isRec,path,xml = _1 in (_3 (isRec,path,xml)) + ) +# 669 "../pars.fsy" + : 'fileNamespaceSpec)); +# 3232 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleIntro)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleSpfnsPossiblyEmptyBlock)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 675 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + let m2 = rhs parseState 3 + let m = (rhs2 parseState 3 4) + let isRec,path2,xml,vis = _3 + (fun (isRec2,path,_) -> + if not (isNil path) then errorR(Error(FSComp.SR.parsNamespaceOrModuleNotBoth(),m2)) + let lid = path@path2 + ParsedSigFileFragment.NamedModule(SynModuleOrNamespaceSig(lid, (isRec || isRec2), NamedModule, _4, xml,_1,vis,m))) + ) +# 675 "../pars.fsy" + : 'fileModuleSpec)); +# 3253 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleSpfnsPossiblyEmptyBlock)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 685 "../pars.fsy" + let m = (rhs parseState 1) + (fun (isRec, path, xml) -> + match path with + | [] -> ParsedSigFileFragment.AnonModule(_1, m) + | _ -> ParsedSigFileFragment.NamespaceFragment(path, isRec, DeclaredNamespace, _1, xml,[],m)) + ) +# 685 "../pars.fsy" + : 'fileModuleSpec)); +# 3268 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleSpfnsPossiblyEmpty)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 694 "../pars.fsy" + _1 + ) +# 694 "../pars.fsy" + : 'moduleSpfnsPossiblyEmptyBlock)); +# 3279 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleSpfnsPossiblyEmpty)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 697 "../pars.fsy" + _2 + ) +# 697 "../pars.fsy" + : 'moduleSpfnsPossiblyEmptyBlock)); +# 3292 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleSpfnsPossiblyEmpty)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 700 "../pars.fsy" + // The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error + // reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnClosedBlockInHashLight()) + _2 + + ) +# 700 "../pars.fsy" + : 'moduleSpfnsPossiblyEmptyBlock)); +# 3307 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 706 "../pars.fsy" + [] + ) +# 706 "../pars.fsy" + : 'moduleSpfnsPossiblyEmptyBlock)); +# 3318 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleSpfns)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 711 "../pars.fsy" + _1 + ) +# 711 "../pars.fsy" + : 'moduleSpfnsPossiblyEmpty)); +# 3329 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 714 "../pars.fsy" + [] + ) +# 714 "../pars.fsy" + : 'moduleSpfnsPossiblyEmpty)); +# 3339 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 717 "../pars.fsy" + [] + ) +# 717 "../pars.fsy" + : 'moduleSpfnsPossiblyEmpty)); +# 3349 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleSpfn)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_topSeparators)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleSpfns)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 722 "../pars.fsy" + _1 :: _3 + ) +# 722 "../pars.fsy" + : 'moduleSpfns)); +# 3362 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'topSeparators)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleSpfns)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 725 "../pars.fsy" + (* silent recovery *) _3 + ) +# 725 "../pars.fsy" + : 'moduleSpfns)); +# 3374 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleSpfn)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_topSeparators)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 728 "../pars.fsy" + [_1] + ) +# 728 "../pars.fsy" + : 'moduleSpfns)); +# 3386 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'hashDirective)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 733 "../pars.fsy" + SynModuleSigDecl.HashDirective (_1,rhs2 parseState 1 1) + ) +# 733 "../pars.fsy" + : 'moduleSpfn)); +# 3397 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'valSpfn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 736 "../pars.fsy" + _1 + ) +# 736 "../pars.fsy" + : 'moduleSpfn)); +# 3408 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleIntro)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'colonOrEquals)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'namedModuleAbbrevBlock)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 739 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + let isRec, path, xml, vis = _3 + if isRec then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsInvalidUseOfRec()) + if not (isSingleton path) then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsModuleAbbreviationMustBeSimpleName()) + if not (isNil _1) then raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsIgnoreAttributesOnModuleAbbreviation()) + match vis with + | Some vis -> raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsIgnoreVisibilityOnModuleAbbreviationAlwaysPrivate(vis.ToString())) + | _ -> SynModuleSigDecl.ModuleAbbrev(List.head path,_5,rhs2 parseState 3 5) + ) +# 739 "../pars.fsy" + : 'moduleSpfn)); +# 3430 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleIntro)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'colonOrEquals)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleSpecBlock)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 749 "../pars.fsy" + let isRec, path, xml, vis = _3 + if not (isSingleton path) then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsModuleDefnMustBeSimpleName()) + if isRec then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsInvalidUseOfRec()) + let info = ComponentInfo(_1,[],[],path,xml,false,vis,rhs parseState 3) + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + SynModuleSigDecl.NestedModule(info, isRec, _5, rhs2 parseState 3 5) + ) +# 749 "../pars.fsy" + : 'moduleSpfn)); +# 3450 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypeDefnSig list)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 757 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + let (TypeDefnSig(ComponentInfo(cas,a,cs,b,c,d,d2,d3),e,f,g)),rest = + match _3 with + | [] -> raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEmptyModuleDefn()) + | h :: t -> h,t + let tc = (TypeDefnSig(ComponentInfo(_1@cas,a,cs,b,c,d,d2,d3),e,f,g))in + SynModuleSigDecl.Types (tc :: rest,rhs parseState 3) + ) +# 757 "../pars.fsy" + : 'moduleSpfn)); +# 3469 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'exconSpfn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 766 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + let (SynExceptionSig(SynExceptionDefnRepr(cas,a,b,c,d,d2),e,f)) = _3 + let ec = (SynExceptionSig(SynExceptionDefnRepr(_1@cas,a,b,c,d,d2),e,f)) + SynModuleSigDecl.Exception(ec, rhs parseState 3) + ) +# 766 "../pars.fsy" + : 'moduleSpfn)); +# 3485 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 772 "../pars.fsy" + SynModuleSigDecl.Open (_2.Lid, unionRanges (rhs parseState 1) _2.Range) + ) +# 772 "../pars.fsy" + : 'moduleSpfn)); +# 3496 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_inline)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_mutable)) in + let _7 = (let data = parseState.GetInput(7) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _8 = (let data = parseState.GetInput(8) in (Microsoft.FSharp.Core.Operators.unbox data : 'nameop)) in + let _9 = (let data = parseState.GetInput(9) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_explicitValTyparDecls)) in + let _11 = (let data = parseState.GetInput(11) in (Microsoft.FSharp.Core.Operators.unbox data : 'topTypeWithTypeConstraints)) in + let _12 = (let data = parseState.GetInput(12) in (Microsoft.FSharp.Core.Operators.unbox data : 'optLiteralValueSpfn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 776 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + let attr1,attr2,isInline,isMutable,vis2,id,doc,explicitValTyparDecls,(ty,arity),konst = (_1),(_4),(_5),(_6),(_7),(_8),grabXmlDoc(parseState,3),(_9),(_11),(_12) + if not (isNil attr2) then errorR(Deprecated(FSComp.SR.parsAttributesMustComeBeforeVal(),rhs parseState 4)) + let m = rhs2 parseState 3 11 + let valSpfn = ValSpfn((attr1@attr2),id,explicitValTyparDecls,ty,arity,isInline,isMutable,doc, vis2,konst,m) + SynModuleSigDecl.Val(valSpfn,m) + + ) +# 776 "../pars.fsy" + : 'valSpfn)); +# 3522 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 787 "../pars.fsy" + None + ) +# 787 "../pars.fsy" + : 'optLiteralValueSpfn)); +# 3532 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 790 "../pars.fsy" + Some(_2) + ) +# 790 "../pars.fsy" + : 'optLiteralValueSpfn)); +# 3543 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_ODECLEND)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 793 "../pars.fsy" + Some(_3) + ) +# 793 "../pars.fsy" + : 'optLiteralValueSpfn)); +# 3556 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleSpfns)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 801 "../pars.fsy" + _2 + ) +# 801 "../pars.fsy" + : 'moduleSpecBlock)); +# 3568 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'sigOrBegin)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleSpfnsPossiblyEmpty)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 805 "../pars.fsy" + _3 + ) +# 805 "../pars.fsy" + : 'moduleSpecBlock)); +# 3581 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'sigOrBegin)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleSpfnsPossiblyEmpty)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 809 "../pars.fsy" + _2 + ) +# 809 "../pars.fsy" + : 'moduleSpecBlock)); +# 3593 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeKeyword)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconSpfnList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 815 "../pars.fsy" + _2 + ) +# 815 "../pars.fsy" + : Ast.SynTypeDefnSig list)); +# 3605 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconSpfn)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconSpfnList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 820 "../pars.fsy" + _1 :: _3 + ) +# 820 "../pars.fsy" + : 'tyconSpfnList)); +# 3617 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconSpfn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 823 "../pars.fsy" + [_1] + ) +# 823 "../pars.fsy" + : 'tyconSpfnList)); +# 3628 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeNameInfo)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconSpfnRhsBlock)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 829 "../pars.fsy" + let lhsm = rhs parseState 1 + _3 lhsm _1 + ) +# 829 "../pars.fsy" + : 'tyconSpfn)); +# 3641 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeNameInfo)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_classSpfn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 832 "../pars.fsy" + TypeDefnSig(_1,SynTypeDefnSigRepr.Simple (SynTypeDefnSimpleRepr.None (lhs parseState),lhs parseState),_2,lhs parseState) + ) +# 832 "../pars.fsy" + : 'tyconSpfn)); +# 3653 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconSpfnRhs)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'classSpfnMembers)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_classSpfn)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + let _7 = (let data = parseState.GetInput(7) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_classSpfn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 846 "../pars.fsy" + let m = lhs parseState + (fun lhsm nameInfo -> + _2 lhsm nameInfo (checkForMultipleAugmentations m (_4 @ _5) _7)) + ) +# 846 "../pars.fsy" + : 'tyconSpfnRhsBlock)); +# 3671 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconSpfnRhs)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_classSpfn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 851 "../pars.fsy" + let m = lhs parseState + (fun lhsm nameInfo -> + _1 lhsm nameInfo _2) + ) +# 851 "../pars.fsy" + : 'tyconSpfnRhsBlock)); +# 3685 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypeDefnSimpleRepr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 859 "../pars.fsy" + let m = _1.Range + (fun lhsm nameInfo augmentation -> + TypeDefnSig(nameInfo,SynTypeDefnSigRepr.Simple (_1,m),augmentation,m)) + ) +# 859 "../pars.fsy" + : 'tyconSpfnRhs)); +# 3698 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconClassSpfn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 864 "../pars.fsy" + let m = lhs parseState + let needsCheck,(kind,decls) = _1 + (fun nameRange nameInfo augmentation -> + if needsCheck && isNil decls then + reportParseErrorAt nameRange (FSComp.SR.parsEmptyTypeDefinition()) + TypeDefnSig(nameInfo,SynTypeDefnSigRepr.ObjectModel (kind,decls,m),augmentation,m)) + ) +# 864 "../pars.fsy" + : 'tyconSpfnRhs)); +# 3714 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'topType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 872 "../pars.fsy" + let m = lhs parseState + let ty,arity = _3 + let invoke = SynMemberSig.Member(ValSpfn([],mkSynId m "Invoke",inferredTyparDecls,ty,arity,false,false,PreXmlDoc.Empty,None,None,m),AbstractMemberFlags MemberKind.Member,m) + (fun nameRange nameInfo augmentation -> + if not (isNil augmentation) then raiseParseErrorAt m (FSComp.SR.parsAugmentationsIllegalOnDelegateType()) + TypeDefnSig(nameInfo,SynTypeDefnSigRepr.ObjectModel (TyconDelegate (ty,arity),[invoke],m),[],m)) + ) +# 872 "../pars.fsy" + : 'tyconSpfnRhs)); +# 3730 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classSpfnBlockKindUnspecified)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 883 "../pars.fsy" + let needsCheck,decls = _1 + needsCheck,(TyconUnspecified, decls) + ) +# 883 "../pars.fsy" + : 'tyconClassSpfn)); +# 3742 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classOrInterfaceOrStruct)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classSpfnBlock)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 887 "../pars.fsy" + false,(_1,_2) + ) +# 887 "../pars.fsy" + : 'tyconClassSpfn)); +# 3754 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classOrInterfaceOrStruct)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classSpfnBlock)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 890 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedClassInterfaceOrStruct()) + false,(_1,_2) + ) +# 890 "../pars.fsy" + : 'tyconClassSpfn)); +# 3768 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classOrInterfaceOrStruct)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 894 "../pars.fsy" + // silent recovery + false,(_1,[]) + ) +# 894 "../pars.fsy" + : 'tyconClassSpfn)); +# 3780 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classSpfnMembers)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 901 "../pars.fsy" + true, _2 + ) +# 901 "../pars.fsy" + : 'classSpfnBlockKindUnspecified)); +# 3792 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classSpfnMembers)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 904 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeSignature()) + false, _2 + ) +# 904 "../pars.fsy" + : 'classSpfnBlockKindUnspecified)); +# 3805 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classSpfnBlock)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 909 "../pars.fsy" + false, _2 + ) +# 909 "../pars.fsy" + : 'classSpfnBlockKindUnspecified)); +# 3816 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classSpfnBlock)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 912 "../pars.fsy" + false, _2 + ) +# 912 "../pars.fsy" + : 'classSpfnBlockKindUnspecified)); +# 3828 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classSpfnMembers)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 918 "../pars.fsy" + _2 + ) +# 918 "../pars.fsy" + : 'classSpfnBlock)); +# 3840 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classSpfnMembers)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 921 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeSignature()) + _2 + ) +# 921 "../pars.fsy" + : 'classSpfnBlock)); +# 3853 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classSpfnMembers)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 924 "../pars.fsy" + _1 + ) +# 924 "../pars.fsy" + : 'classSpfnBlock)); +# 3864 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classSpfnMembersAtLeastOne)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 929 "../pars.fsy" + _1 + ) +# 929 "../pars.fsy" + : 'classSpfnMembers)); +# 3875 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 932 "../pars.fsy" + [] + ) +# 932 "../pars.fsy" + : 'classSpfnMembers)); +# 3885 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classMemberSpfn)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'classSpfnMembers)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 938 "../pars.fsy" + _1 :: _3 + ) +# 938 "../pars.fsy" + : 'classSpfnMembersAtLeastOne)); +# 3898 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'memberSpecFlags)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_inline)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'nameop)) in + let _7 = (let data = parseState.GetInput(7) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_explicitValTyparDecls)) in + let _9 = (let data = parseState.GetInput(9) in (Microsoft.FSharp.Core.Operators.unbox data : 'topTypeWithTypeConstraints)) in + let _10 = (let data = parseState.GetInput(10) in (Microsoft.FSharp.Core.Operators.unbox data : 'classMemberSpfnGetSet)) in + let _11 = (let data = parseState.GetInput(11) in (Microsoft.FSharp.Core.Operators.unbox data : 'optLiteralValueSpfn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 944 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + let isInline,doc,vis2,id,explicitValTyparDecls,(ty,arity),optLiteralValue = _4,grabXmlDoc(parseState,3),_5,_6,_7,_9,_11 + let getSetRangeOpt, getSet = _10 + let getSetAdjuster arity = match arity,getSet with SynValInfo([],_),MemberKind.Member -> MemberKind.PropertyGet | _ -> getSet + let wholeRange = + let m = rhs parseState 3 + match getSetRangeOpt with + | None -> unionRanges m ty.Range + | Some m2 -> unionRanges m m2 + let valSpfn = ValSpfn(_1,id,explicitValTyparDecls,ty,arity, isInline,false,doc, vis2,optLiteralValue,wholeRange) + let _,flags = _3 + SynMemberSig.Member(valSpfn, flags (getSetAdjuster arity),wholeRange) + ) +# 944 "../pars.fsy" + : 'classMemberSpfn)); +# 3929 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'interfaceMember)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 958 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + SynMemberSig.Interface (_4,unionRanges (rhs parseState 3) (_4).Range) + ) +# 958 "../pars.fsy" + : 'classMemberSpfn)); +# 3944 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 962 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + SynMemberSig.Inherit (_4,unionRanges (rhs parseState 3) (_4).Range) + ) +# 962 "../pars.fsy" + : 'classMemberSpfn)); +# 3958 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'fieldDecl)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 966 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + let fld = _4 _1 false + SynMemberSig.ValField(fld,rhs2 parseState 3 4) + ) +# 966 "../pars.fsy" + : 'classMemberSpfn)); +# 3973 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'fieldDecl)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 971 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + SynMemberSig.ValField(_5 _1 true,rhs2 parseState 3 5) + ) +# 971 "../pars.fsy" + : 'classMemberSpfn)); +# 3987 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeKeyword)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconSpfn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 975 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + SynMemberSig.NestedType(_5,rhs2 parseState 3 5) + ) +# 975 "../pars.fsy" + : 'classMemberSpfn)); +# 4002 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'topTypeWithTypeConstraints)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 979 "../pars.fsy" + let vis,doc,(ty,valSynInfo) = _2,grabXmlDoc(parseState,3),_5 + let m = unionRanges (rhs parseState 3) ty.Range + let isInline = false + let valSpfn = ValSpfn (_1, mkSynId (rhs parseState 3) "new", noInferredTypars, ty, valSynInfo, isInline, false, doc, vis, None, m) + SynMemberSig.Member(valSpfn, CtorMemberFlags,m) + ) +# 979 "../pars.fsy" + : 'classMemberSpfn)); +# 4019 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 989 "../pars.fsy" + None, MemberKind.Member + ) +# 989 "../pars.fsy" + : 'classMemberSpfnGetSet)); +# 4029 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classMemberSpfnGetSetElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 992 "../pars.fsy" + Some (rhs2 parseState 1 2), _2 + ) +# 992 "../pars.fsy" + : 'classMemberSpfnGetSet)); +# 4040 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classMemberSpfnGetSetElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 995 "../pars.fsy" + Some (rhs2 parseState 1 2), _2 + ) +# 995 "../pars.fsy" + : 'classMemberSpfnGetSet)); +# 4051 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classMemberSpfnGetSetElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 998 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedWith()) + Some (rhs2 parseState 1 2), _2 + ) +# 998 "../pars.fsy" + : 'classMemberSpfnGetSet)); +# 4063 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'nameop)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1005 "../pars.fsy" + (let (id:Ident) = _1 + if id.idText = "get" then MemberKind.PropertyGet + else if id.idText = "set" then MemberKind.PropertySet + else raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsGetOrSetRequired())) + ) +# 1005 "../pars.fsy" + : 'classMemberSpfnGetSetElements)); +# 4077 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'nameop)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'nameop)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1011 "../pars.fsy" + let (id:Ident) = _1 + if not ((id.idText = "get" && _3.idText = "set") || + (id.idText = "set" && _3.idText = "get")) then + raiseParseErrorAt (rhs2 parseState 1 3) (FSComp.SR.parsGetOrSetRequired()) + MemberKind.PropertyGetSet + ) +# 1011 "../pars.fsy" + : 'classMemberSpfnGetSetElements)); +# 4093 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'memberFlags)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1018 "../pars.fsy" + _1 + ) +# 1018 "../pars.fsy" + : 'memberSpecFlags)); +# 4104 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1019 "../pars.fsy" + (false,AbstractMemberFlags) + ) +# 1019 "../pars.fsy" + : 'memberSpecFlags)); +# 4114 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1020 "../pars.fsy" + (false,AbstractMemberFlags) + ) +# 1020 "../pars.fsy" + : 'memberSpecFlags)); +# 4124 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExceptionDefnRepr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_classSpfn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1026 "../pars.fsy" + SynExceptionSig(_1,_2,lhs parseState) + ) +# 1026 "../pars.fsy" + : 'exconSpfn)); +# 4136 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classSpfnBlock)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'declEnd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1032 "../pars.fsy" + _2 + ) +# 1032 "../pars.fsy" + : 'opt_classSpfn)); +# 4148 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1035 "../pars.fsy" + [] + ) +# 1035 "../pars.fsy" + : 'opt_classSpfn)); +# 4158 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileNamespaceImpls)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LexerWhitespaceContinuation)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1044 "../pars.fsy" + checkEndOfFileError _2; _1 + ) +# 1044 "../pars.fsy" + : Ast.ParsedImplFile)); +# 4170 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileNamespaceImpls)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LexerWhitespaceContinuation)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1047 "../pars.fsy" + _1 + ) +# 1047 "../pars.fsy" + : Ast.ParsedImplFile)); +# 4182 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LexerWhitespaceContinuation)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1053 "../pars.fsy" + let emptyImplFileFrag = ParsedImplFileFragment.AnonModule([],rhs parseState 1) in + ParsedImplFile ([],[emptyImplFileFrag]) + ) +# 1053 "../pars.fsy" + : Ast.ParsedImplFile)); +# 4194 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileModuleImpl)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1060 "../pars.fsy" + ParsedImplFile ([], [ (_1 (false,[],PreXmlDoc.Empty)) ]) + ) +# 1060 "../pars.fsy" + : 'fileNamespaceImpls)); +# 4205 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileModuleImpl)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileNamespaceImplList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1063 "../pars.fsy" + // If there are namespaces, the first fileModuleImpl may only contain # directives + let decls = + match (_1 (false,[],PreXmlDoc.Empty)) with + | ParsedImplFileFragment.AnonModule(decls,m) -> decls + | ParsedImplFileFragment.NamespaceFragment(_,_,_, decls, _,_,_) -> decls + | ParsedImplFileFragment.NamedModule(SynModuleOrNamespace(_,_,_,_,_,_,_,m)) -> + raiseParseErrorAt m (FSComp.SR.parsOnlyHashDirectivesAllowed()) + let decls = + decls |> List.collect (function + | (SynModuleDecl.HashDirective (hd,_)) -> [hd] + | d -> + reportParseErrorAt d.Range (FSComp.SR.parsOnlyHashDirectivesAllowed()) + []) + ParsedImplFile (decls, _2) + ) +# 1063 "../pars.fsy" + : 'fileNamespaceImpls)); +# 4230 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileNamespaceImpl)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileNamespaceImplList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1082 "../pars.fsy" + _1 :: _2 + ) +# 1082 "../pars.fsy" + : 'fileNamespaceImplList)); +# 4242 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileNamespaceImpl)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1085 "../pars.fsy" + [_1] + ) +# 1085 "../pars.fsy" + : 'fileNamespaceImplList)); +# 4253 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'namespaceIntro)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'deprecated_opt_equals)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'fileModuleImpl)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1091 "../pars.fsy" + let isRec, path, xml = _1 in (_3 (isRec, path, xml)) + ) +# 1091 "../pars.fsy" + : 'fileNamespaceImpl)); +# 4266 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleIntro)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynModuleDecl list)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1097 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + let m2 = rhs parseState 3 + let m = (m2, _4) ||> unionRangeWithListBy (fun modu -> modu.Range) + let isRec2,path2,xml,vis = _3 + (fun (isRec, path, _) -> + if not (isNil path) then errorR(Error(FSComp.SR.parsNamespaceOrModuleNotBoth(),m2)) + let lid = path@path2 + ParsedImplFileFragment.NamedModule(SynModuleOrNamespace(lid, (isRec || isRec2), NamedModule, _4, xml,_1,vis,m))) + ) +# 1097 "../pars.fsy" + : 'fileModuleImpl)); +# 4287 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynModuleDecl list)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1107 "../pars.fsy" + let m = (rhs parseState 1) + (fun (isRec, path, xml) -> + match path with + | [] -> ParsedImplFileFragment.AnonModule(_1,m) + | _ -> ParsedImplFileFragment.NamespaceFragment(path, isRec, DeclaredNamespace, _1, xml,[],m)) + ) +# 1107 "../pars.fsy" + : 'fileModuleImpl)); +# 4302 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnsOrExprPossiblyEmpty)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1117 "../pars.fsy" + _2 + ) +# 1117 "../pars.fsy" + : Ast.SynModuleDecl list)); +# 4315 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnsOrExprPossiblyEmpty)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1120 "../pars.fsy" + // The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error + // reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnClosedBlockInHashLight()) + _2 + ) +# 1120 "../pars.fsy" + : Ast.SynModuleDecl list)); +# 4329 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1125 "../pars.fsy" + [] + ) +# 1125 "../pars.fsy" + : Ast.SynModuleDecl list)); +# 4340 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnsOrExprPossiblyEmpty)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1128 "../pars.fsy" + _1 + ) +# 1128 "../pars.fsy" + : Ast.SynModuleDecl list)); +# 4351 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnsOrExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1134 "../pars.fsy" + _1 + ) +# 1134 "../pars.fsy" + : 'moduleDefnsOrExprPossiblyEmpty)); +# 4362 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1137 "../pars.fsy" + [] + ) +# 1137 "../pars.fsy" + : 'moduleDefnsOrExprPossiblyEmpty)); +# 4372 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'topSeparators)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnsOrExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1144 "../pars.fsy" + match _2 with + | Some vis -> errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(vis.ToString()),rhs parseState 3)) + | _ -> () + let attrDecls = if not (isNil _1) then [ SynModuleDecl.Attributes (_1, rangeOfNonNilAttrs _1) ] else [] + attrDecls @ mkSynDoDecl (_3) :: _5 + ) +# 1144 "../pars.fsy" + : 'moduleDefnsOrExpr)); +# 4391 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'topSeparators)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1151 "../pars.fsy" + match _2 with + | Some vis -> errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(vis.ToString()),rhs parseState 3)) + | _ -> () + let attrDecls = if not (isNil _1) then [ SynModuleDecl.Attributes (_1, rangeOfNonNilAttrs _1) ] else [] + attrDecls @ [ mkSynDoDecl(_3) ] + ) +# 1151 "../pars.fsy" + : 'moduleDefnsOrExpr)); +# 4409 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1158 "../pars.fsy" + match _2 with + | Some vis -> errorR(Error(FSComp.SR.parsUnexpectedVisibilityDeclaration(vis.ToString()),rhs parseState 3)) + | _ -> () + let attrDecls = if not (isNil _1) then [ SynModuleDecl.Attributes (_1, rangeOfNonNilAttrs _1) ] else [] + attrDecls @ [ mkSynDoDecl(_3) ] + ) +# 1158 "../pars.fsy" + : 'moduleDefnsOrExpr)); +# 4426 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefns)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1165 "../pars.fsy" + _1 + ) +# 1165 "../pars.fsy" + : 'moduleDefnsOrExpr)); +# 4437 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1168 "../pars.fsy" + if not (isNil _1) then [ SynModuleDecl.Attributes (_1, rangeOfNonNilAttrs _1) ] else [] + ) +# 1168 "../pars.fsy" + : 'moduleDefnsOrExpr)); +# 4448 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnOrDirective)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefns)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1174 "../pars.fsy" + _1 @ _2 + ) +# 1174 "../pars.fsy" + : 'moduleDefns)); +# 4460 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnOrDirective)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'topSeparators)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnsOrExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1177 "../pars.fsy" + _1 @ _3 + ) +# 1177 "../pars.fsy" + : 'moduleDefns)); +# 4473 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnOrDirective)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1180 "../pars.fsy" + _1 + ) +# 1180 "../pars.fsy" + : 'moduleDefns)); +# 4484 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnOrDirective)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'topSeparators)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1183 "../pars.fsy" + _1 + ) +# 1183 "../pars.fsy" + : 'moduleDefns)); +# 4496 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'topSeparators)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnsOrExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1186 "../pars.fsy" + _3 + ) +# 1186 "../pars.fsy" + : 'moduleDefns)); +# 4508 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1192 "../pars.fsy" + _1 + ) +# 1192 "../pars.fsy" + : 'moduleDefnOrDirective)); +# 4519 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'hashDirective)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1195 "../pars.fsy" + [ SynModuleDecl.HashDirective (_1,rhs2 parseState 1 1) ] + ) +# 1195 "../pars.fsy" + : 'moduleDefnOrDirective)); +# 4530 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'defnBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1204 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + parseState.ResetSynArgNameGenerator() + let (BindingSetPreAttrs(_,_,_,_,mWhole)) = _3 + mkDefnBindings (mWhole,_3,_1,_2,mWhole) + ) +# 1204 "../pars.fsy" + : 'moduleDefn)); +# 4546 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'hardwhiteLetBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1211 "../pars.fsy" + let hwlb,m = _3 + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + parseState.ResetSynArgNameGenerator() + mkDefnBindings (m,hwlb,_1,_2,m) + ) +# 1211 "../pars.fsy" + : 'moduleDefn)); +# 4562 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'doBinding)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1218 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + let mWhole = rhs parseState 3 + mkDefnBindings (mWhole,_3,_1,_2,mWhole) + ) +# 1218 "../pars.fsy" + : 'moduleDefn)); +# 4577 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeKeyword)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconDefn)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconDefnList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1224 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + let (TypeDefn(ComponentInfo(cas,a,cs,b,c,d,d2,d3),e,f,g)) = _4 + let tc = (TypeDefn(ComponentInfo(_1@cas,a,cs,b,c,d,d2,d3),e,f,g)) + let types = tc :: _5 + [ SynModuleDecl.Types(types, (rhs parseState 3, types) ||> unionRangeWithListBy (fun t -> t.Range) ) ] + ) +# 1224 "../pars.fsy" + : 'moduleDefn)); +# 4596 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExceptionDefn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1232 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + let (SynExceptionDefn(SynExceptionDefnRepr(cas,a,b,c,d,d2),e,f)) = _3 + let f = (f, _1) ||> unionRangeWithListBy (fun a -> a.Range) + let ec = (SynExceptionDefn(SynExceptionDefnRepr(_1@cas,a,b,c,d,d2),e,f)) + [ SynModuleDecl.Exception(ec, f) ] + ) +# 1232 "../pars.fsy" + : 'moduleDefn)); +# 4613 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleIntro)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'namedModuleDefnBlock)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1240 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + let attribs, (isRec, path, xml, vis) = _1,_3 + match _5 with + | Choice1Of2 eqn -> + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + if isRec then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsInvalidUseOfRec()) + if not (isSingleton path) then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsModuleAbbreviationMustBeSimpleName()) + if not (isNil _1) then raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsIgnoreAttributesOnModuleAbbreviation()) + match vis with + | Some vis -> raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsIgnoreAttributesOnModuleAbbreviationAlwaysPrivate(vis.ToString())) + | _ -> () + [ SynModuleDecl.ModuleAbbrev(List.head path,eqn,(rhs parseState 3, eqn) ||> unionRangeWithListBy (fun id -> id.idRange) ) ] + | Choice2Of2 def -> + if not (isSingleton path) then raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsModuleAbbreviationMustBeSimpleName()) + let info = ComponentInfo(attribs,[],[],path,xml,false,vis,rhs parseState 3) + [ SynModuleDecl.NestedModule(info, isRec, def, false,(rhs2 parseState 3 4, def) ||> unionRangeWithListBy (fun d -> d.Range) ) ] + ) +# 1240 "../pars.fsy" + : 'moduleDefn)); +# 4642 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1259 "../pars.fsy" + errorR(Error(FSComp.SR.parsAttributeOnIncompleteCode(),rhs parseState 1)) + [] + ) +# 1259 "../pars.fsy" + : 'moduleDefn)); +# 4655 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1264 "../pars.fsy" + [SynModuleDecl.Open(_1, _1.Range)] + ) +# 1264 "../pars.fsy" + : 'moduleDefn)); +# 4666 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1272 "../pars.fsy" + _2.Lid + ) +# 1272 "../pars.fsy" + : 'namedModuleAbbrevBlock)); +# 4678 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1275 "../pars.fsy" + _1.Lid + ) +# 1275 "../pars.fsy" + : 'namedModuleAbbrevBlock)); +# 4689 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'wrappedNamedModuleDefn)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1281 "../pars.fsy" + Choice2Of2 _2 + ) +# 1281 "../pars.fsy" + : 'namedModuleDefnBlock)); +# 4701 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'wrappedNamedModuleDefn)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1284 "../pars.fsy" + // The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error + Choice2Of2 _2 + ) +# 1284 "../pars.fsy" + : 'namedModuleDefnBlock)); +# 4714 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnsOrExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1288 "../pars.fsy" + // There is an ambiguity here + // In particular, consider the following two: + // + // module M2 = + // System.DateTime.Now + // module M2 = + // Microsoft.FSharp.Core.List + // The second is a module abbreviation, the first a module containing a single expression. + // The resolution is in favour of the module abbreviation, i.e. anything of the form + // module M2 = ID.ID.ID.ID + // will be taken as a module abbreviation, regardles of the identifiers themselves. + // + // This is similar to the ambiguitty between + // type X = int + // and + // type X = OneValue + // However in that case we do use type name lookup to make the resolution. + match _2 with + | [ SynModuleDecl.DoExpr (_,LongOrSingleIdent(false,LongIdentWithDots(path,_),None,_),_) ] -> + Choice1Of2 path + | _ -> + Choice2Of2 _2 + + ) +# 1288 "../pars.fsy" + : 'namedModuleDefnBlock)); +# 4748 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnsOrExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1314 "../pars.fsy" + // The lex filter ensures we can only get a mismatch in OBLOCKBEGIN/OBLOCKEND tokens if there was some other kind of error, hence we don't need to report this error + // reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnClosedBlockInHashLight()) + Choice2Of2 _2 + ) +# 1314 "../pars.fsy" + : 'namedModuleDefnBlock)); +# 4762 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1319 "../pars.fsy" + Choice2Of2 [] + ) +# 1319 "../pars.fsy" + : 'namedModuleDefnBlock)); +# 4773 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'wrappedNamedModuleDefn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1322 "../pars.fsy" + Choice2Of2 _1 + ) +# 1322 "../pars.fsy" + : 'namedModuleDefnBlock)); +# 4784 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1325 "../pars.fsy" + Choice1Of2 _1.Lid + ) +# 1325 "../pars.fsy" + : 'namedModuleDefnBlock)); +# 4795 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'structOrBegin)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnsOrExprPossiblyEmpty)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1331 "../pars.fsy" + _2 + ) +# 1331 "../pars.fsy" + : 'wrappedNamedModuleDefn)); +# 4807 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'structOrBegin)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleDefnsOrExprPossiblyEmpty)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1334 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBeginOrStruct()) + _2 + ) +# 1334 "../pars.fsy" + : 'wrappedNamedModuleDefn)); +# 4821 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'structOrBegin)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1338 "../pars.fsy" + [] + ) +# 1338 "../pars.fsy" + : 'wrappedNamedModuleDefn)); +# 4832 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnBlock)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'declEnd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1343 "../pars.fsy" + _2 + ) +# 1343 "../pars.fsy" + : Ast.SynMemberDefns)); +# 4844 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributes)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1349 "../pars.fsy" + _1 + ) +# 1349 "../pars.fsy" + : 'opt_attributes)); +# 4855 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1352 "../pars.fsy" + [] + ) +# 1352 "../pars.fsy" + : 'opt_attributes)); +# 4865 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributeList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1357 "../pars.fsy" + _1 + ) +# 1357 "../pars.fsy" + : 'attributes)); +# 4876 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributeList)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributes)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1360 "../pars.fsy" + _1 @ _2 + ) +# 1360 "../pars.fsy" + : 'attributes)); +# 4888 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributeListElements)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1366 "../pars.fsy" + mkAttributeList _2 (rhs2 parseState 1 3) + ) +# 1366 "../pars.fsy" + : 'attributeList)); +# 4901 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1369 "../pars.fsy" + mkAttributeList [] (rhs2 parseState 1 3) + ) +# 1369 "../pars.fsy" + : 'attributeList)); +# 4912 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributeListElements)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1372 "../pars.fsy" + if not _4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedLBrackLess()) + mkAttributeList _2 (rhs2 parseState 1 2) + ) +# 1372 "../pars.fsy" + : 'attributeList)); +# 4926 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1376 "../pars.fsy" + if not _2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedLBrackLess()) + mkAttributeList [] (rhs parseState 1) + ) +# 1376 "../pars.fsy" + : 'attributeList)); +# 4938 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attribute)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1383 "../pars.fsy" + [_1] + ) +# 1383 "../pars.fsy" + : 'attributeListElements)); +# 4949 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributeListElements)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'seps)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'attribute)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1386 "../pars.fsy" + _1 @ [_3] + ) +# 1386 "../pars.fsy" + : 'attributeListElements)); +# 4962 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_HIGH_PRECEDENCE_APP)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_atomicExprAfterType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1393 "../pars.fsy" + let arg = match _3 with None -> mkSynUnit _1.Range | Some e -> e + ({ TypeName=_1; ArgExpr=arg; Target=None; AppliesToGetterAndSetter=false; Range=_1.Range } : SynAttribute) + ) +# 1393 "../pars.fsy" + : 'attribute)); +# 4976 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributeTarget)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_HIGH_PRECEDENCE_APP)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_atomicExprAfterType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1398 "../pars.fsy" + let arg = match _4 with None -> mkSynUnit _2.Range | Some e -> e + ({ TypeName=_2; ArgExpr=arg; Target=_1; AppliesToGetterAndSetter=false; Range=_2.Range } : SynAttribute) + ) +# 1398 "../pars.fsy" + : 'attribute)); +# 4991 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributeTarget)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_HIGH_PRECEDENCE_APP)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_atomicExprAfterType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1403 "../pars.fsy" + let arg = match _6 with None -> mkSynUnit _3.Range | Some e -> e + ({ TypeName=_3; ArgExpr=arg; Target=_1; AppliesToGetterAndSetter=false; Range=_3.Range } : SynAttribute) + ) +# 1403 "../pars.fsy" + : 'attribute)); +# 5007 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleKeyword)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1410 "../pars.fsy" + Some(ident("module",(rhs parseState 1))) + ) +# 1410 "../pars.fsy" + : 'attributeTarget)); +# 5018 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeKeyword)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1413 "../pars.fsy" + Some(ident("type",(rhs parseState 1))) + ) +# 1413 "../pars.fsy" + : 'attributeTarget)); +# 5029 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1415 "../pars.fsy" + Some(_1) + ) +# 1415 "../pars.fsy" + : 'attributeTarget)); +# 5040 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1419 "../pars.fsy" + if _1 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSyntaxError()) + Some(ident("return",(rhs parseState 1))) + ) +# 1419 "../pars.fsy" + : 'attributeTarget)); +# 5052 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1424 "../pars.fsy" + (true,StaticMemberFlags) + ) +# 1424 "../pars.fsy" + : 'memberFlags)); +# 5062 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1425 "../pars.fsy" + (false,NonVirtualMemberFlags) + ) +# 1425 "../pars.fsy" + : 'memberFlags)); +# 5072 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1426 "../pars.fsy" + (false,OverrideMemberFlags) + ) +# 1426 "../pars.fsy" + : 'memberFlags)); +# 5082 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1427 "../pars.fsy" + (false,OverrideMemberFlags) + ) +# 1427 "../pars.fsy" + : 'memberFlags)); +# 5092 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconNameAndTyparDecls)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_typeConstraints)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1432 "../pars.fsy" + let typars,lid,fixity,tpcs1,vis,xmlDoc = _2 + let tpcs2 = _3 + ComponentInfo(_1,typars,(tpcs1 @ tpcs2),lid,xmlDoc,fixity,vis,rangeOfLid lid) + ) +# 1432 "../pars.fsy" + : 'typeNameInfo)); +# 5107 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconDefn)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconDefnList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1439 "../pars.fsy" + _2 :: _3 + ) +# 1439 "../pars.fsy" + : 'tyconDefnList)); +# 5119 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1441 "../pars.fsy" + [] + ) +# 1441 "../pars.fsy" + : 'tyconDefnList)); +# 5129 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeNameInfo)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1446 "../pars.fsy" + TypeDefn(_1,SynTypeDefnRepr.Simple(SynTypeDefnSimpleRepr.None(_1.Range),_1.Range),[],_1.Range) + ) +# 1446 "../pars.fsy" + : 'tyconDefn)); +# 5140 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeNameInfo)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconDefnRhsBlock)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1449 "../pars.fsy" + let nameRange = rhs parseState 1 + let (tcDefRepr:SynTypeDefnRepr),members = _3 nameRange + let declRange = unionRanges (rhs parseState 1) tcDefRepr.Range + let mWhole = (declRange, members) ||> unionRangeWithListBy (fun (mem:SynMemberDefn) -> mem.Range) + TypeDefn(_1, tcDefRepr, members, mWhole) + ) +# 1449 "../pars.fsy" + : 'tyconDefn)); +# 5156 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeNameInfo)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynMemberDefns)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1456 "../pars.fsy" + let m = (rhs parseState 1, _2) ||> unionRangeWithListBy (fun mem -> mem.Range) + TypeDefn(_1,SynTypeDefnRepr.ObjectModel(TyconAugmentation,[],m),_2,m) + ) +# 1456 "../pars.fsy" + : 'tyconDefn)); +# 5169 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeNameInfo)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_HIGH_PRECEDENCE_APP)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'simplePatterns)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'optAsSpec)) in + let _8 = (let data = parseState.GetInput(8) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconDefnRhsBlock)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1460 "../pars.fsy" + let vis,spats, az = _3,_5,_6 + let nameRange = rhs parseState 1 + let (tcDefRepr,members) = _8 nameRange + let (ComponentInfo(_,_,_,lid,_,_,_,_)) = _1 + let memberCtorPattern = SynMemberDefn.ImplicitCtor (vis,_2,spats,az,rangeOfLid lid) + let tcDefRepr = + match tcDefRepr with + | SynTypeDefnRepr.ObjectModel (k,cspec,m) -> SynTypeDefnRepr.ObjectModel (k,memberCtorPattern :: cspec,m) + | _ -> reportParseErrorAt (rhs2 parseState 1 5) (FSComp.SR.parsOnlyClassCanTakeValueArguments()); tcDefRepr + let declRange = unionRanges (rhs parseState 1) tcDefRepr.Range + let mWhole = (declRange, members) ||> unionRangeWithListBy (fun (mem:SynMemberDefn) -> mem.Range) + + TypeDefn(_1,tcDefRepr,members,mWhole) + ) +# 1460 "../pars.fsy" + : 'tyconDefn)); +# 5198 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconDefnRhs)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMembers)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_classDefn)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + let _7 = (let data = parseState.GetInput(7) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_classDefn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1486 "../pars.fsy" + let m = unionRanges (rhs parseState 1) (match _7 with [] -> (match _5 with [] -> (rhs parseState 4) | _ -> (rhs parseState 5)) | _ -> (rhs parseState 7)) + (fun nameRange -> _2 nameRange (checkForMultipleAugmentations m (_4 @ _5) _7)) + ) +# 1486 "../pars.fsy" + : 'tyconDefnRhsBlock)); +# 5215 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconDefnRhs)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMembers)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_classDefn)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1490 "../pars.fsy" + if not _6 then reportParseErrorAt (rhs parseState 6) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition()) + let m = unionRanges (rhs parseState 1) (match _5 with [] -> (rhs parseState 4) | _ -> (rhs parseState 5)) + (fun nameRange -> _2 nameRange (checkForMultipleAugmentations m (_4 @ _5) [])) + ) +# 1490 "../pars.fsy" + : 'tyconDefnRhsBlock)); +# 5232 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconDefnRhs)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_classDefn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1495 "../pars.fsy" + let m = rhs parseState 1 + (fun nameRange -> _1 nameRange _2) + ) +# 1495 "../pars.fsy" + : 'tyconDefnRhsBlock)); +# 5245 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypeDefnSimpleRepr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1504 "../pars.fsy" + let m = _1.Range + (fun nameRange augmentation -> SynTypeDefnRepr.Simple (_1,m),augmentation) + ) +# 1504 "../pars.fsy" + : 'tyconDefnRhs)); +# 5257 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconClassDefn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1509 "../pars.fsy" + let needsCheck,(kind,decls),mopt = _1 + let m = match mopt with + | None -> (lhs parseState).StartRange // create a zero-width range + | Some m -> m + (fun nameRange augmentation -> + if needsCheck && isNil decls then + reportParseErrorAt nameRange (FSComp.SR.parsEmptyTypeDefinition()) + SynTypeDefnRepr.ObjectModel (kind,decls,m),augmentation) + ) +# 1509 "../pars.fsy" + : 'tyconDefnRhs)); +# 5275 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'topType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1520 "../pars.fsy" + let m = lhs parseState + let ty,arity = _3 + (fun nameRange augmentation -> + let valSpfn = ValSpfn([],mkSynId m "Invoke",inferredTyparDecls,ty,arity,false,false,PreXmlDoc.Empty,None,None,m) + let invoke = SynMemberDefn.AbstractSlot(valSpfn,AbstractMemberFlags MemberKind.Member,m) + if not (isNil augmentation) then raiseParseErrorAt m (FSComp.SR.parsAugmentationsIllegalOnDelegateType()) + SynTypeDefnRepr.ObjectModel (TyconDelegate (ty,arity),[invoke],m),[]) + ) +# 1520 "../pars.fsy" + : 'tyconDefnRhs)); +# 5292 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnBlockKindUnspecified)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1532 "../pars.fsy" + let needsCheck,decls,mopt = _1 + needsCheck,(TyconUnspecified, decls),mopt + ) +# 1532 "../pars.fsy" + : 'tyconClassDefn)); +# 5304 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classOrInterfaceOrStruct)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnBlock)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1536 "../pars.fsy" + let m = (rhs parseState 1, _2) ||> unionRangeWithListBy (fun (d:SynMemberDefn) -> d.Range) + false,(_1,_2),Some(m) + ) +# 1536 "../pars.fsy" + : 'tyconClassDefn)); +# 5317 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classOrInterfaceOrStruct)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnBlock)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1540 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedClassInterfaceOrStruct()) + let m = (rhs parseState 1, _2) ||> unionRangeWithListBy (fun (d:SynMemberDefn) -> d.Range) + false,(_1,_2),Some(m) + ) +# 1540 "../pars.fsy" + : 'tyconClassDefn)); +# 5332 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classOrInterfaceOrStruct)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1545 "../pars.fsy" + // silent recovery + false,(_1,[]),Some(rhs parseState 1) + ) +# 1545 "../pars.fsy" + : 'tyconClassDefn)); +# 5344 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMembers)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1552 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition()) + let mopt = + match _2 with + | _ :: _ -> Some( (rhs parseState 1, _2) ||> unionRangeWithListBy (fun (d:SynMemberDefn) -> d.Range) ) + | _ -> None + false,_2,mopt + ) +# 1552 "../pars.fsy" + : 'classDefnBlockKindUnspecified)); +# 5361 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMembers)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1560 "../pars.fsy" + let mopt = + match _2 with + | _ :: _ -> Some( (rhs parseState 1, _2) ||> unionRangeWithListBy (fun (d:SynMemberDefn) -> d.Range) ) + | _ -> None + true, _2, mopt + ) +# 1560 "../pars.fsy" + : 'classDefnBlockKindUnspecified)); +# 5377 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMembers)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1570 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileTypeDefinition()) + _2 + ) +# 1570 "../pars.fsy" + : 'classDefnBlock)); +# 5390 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMembers)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1574 "../pars.fsy" + _2 + ) +# 1574 "../pars.fsy" + : 'classDefnBlock)); +# 5402 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMembers)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1577 "../pars.fsy" + _1 + ) +# 1577 "../pars.fsy" + : 'classDefnBlock)); +# 5413 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMembersAtLeastOne)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1583 "../pars.fsy" + _1 + ) +# 1583 "../pars.fsy" + : 'classDefnMembers)); +# 5424 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMembers)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1587 "../pars.fsy" + _2 + ) +# 1587 "../pars.fsy" + : 'classDefnMembers)); +# 5435 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1590 "../pars.fsy" + [] + ) +# 1590 "../pars.fsy" + : 'classDefnMembers)); +# 5445 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMember)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMembers)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1596 "../pars.fsy" + _1 @ _3 + ) +# 1596 "../pars.fsy" + : 'classDefnMembersAtLeastOne)); +# 5458 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMemberGetSetElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1602 "../pars.fsy" + _2 + ) +# 1602 "../pars.fsy" + : 'classDefnMemberGetSet)); +# 5469 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMemberGetSetElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1605 "../pars.fsy" + _2 + ) +# 1605 "../pars.fsy" + : 'classDefnMemberGetSet)); +# 5480 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMemberGetSetElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1608 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedWith()) + _2 + ) +# 1608 "../pars.fsy" + : 'classDefnMemberGetSet)); +# 5492 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMemberGetSetElement)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1614 "../pars.fsy" + [_1] + ) +# 1614 "../pars.fsy" + : 'classDefnMemberGetSetElements)); +# 5503 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMemberGetSetElement)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMemberGetSetElement)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1616 "../pars.fsy" + [_1;_3] + ) +# 1616 "../pars.fsy" + : 'classDefnMemberGetSetElements)); +# 5515 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_inline)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'bindingPattern)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_topReturnTypeWithTypeConstraints)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1620 "../pars.fsy" + let mRhs = (_6 : SynExpr).Range + (_1,_2,_3,_4,_6,mRhs) + ) +# 1620 "../pars.fsy" + : 'classDefnMemberGetSetElement)); +# 5531 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_inline)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'bindingPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_topReturnTypeWithTypeConstraints)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1628 "../pars.fsy" + let mRhs = _5.Range + let optReturnType = _3 + let bindingBuilder, mBindLhs = _2 + (fun vis memFlagsBuilder attrs rangeStart -> + let memberFlags = Some (memFlagsBuilder MemberKind.Member) + let binding = bindingBuilder (vis, _1, false, mBindLhs, NoSequencePointAtInvisibleBinding, optReturnType, _5, mRhs, [], attrs, memberFlags) + let memberRange = unionRanges rangeStart mRhs + [ SynMemberDefn.Member (binding, memberRange) ]) + ) +# 1628 "../pars.fsy" + : 'memberCore)); +# 5552 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_inline)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'bindingPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_topReturnTypeWithTypeConstraints)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnMemberGetSet)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1639 "../pars.fsy" + let mWhole = (rhs parseState 2, _4) ||> unionRangeWithListBy (fun (_,_,_,_,_,m2) -> m2) + let propertyNameBindingBuilder, _ = _2 + let optPropertyType = _3 + let isMutable = false + (fun visNoLongerUsed memFlagsBuilder attrs rangeStart -> + let hasGet = ref false + let hasSet = ref false + // Iterate over 1 or 2 'get'/'set' entries + _4 |> List.choose (fun (optInline,optAttrs,(bindingBuilder,mBindLhs),optReturnType,expr,exprm) -> + let optInline = _1 || optInline + // optional attributes are only applied to getters and setters + // the "top level" attrs will be applied to both + let optAttrs = + optAttrs |> List.map (fun attrList -> + { attrList with Attributes = attrList.Attributes |> List.map (fun a -> { a with AppliesToGetterAndSetter = true } ) }) + let attrs = attrs @ optAttrs + + let binding = bindingBuilder (visNoLongerUsed,optInline,isMutable,mBindLhs,NoSequencePointAtInvisibleBinding,optReturnType,expr,exprm,[],attrs,Some (memFlagsBuilder MemberKind.Member)) + let (Binding (vis, _, isInline, _, attrs, doc, valSynData, pv, _, _, mBindLhs, spBind)) = binding + let memberKind = + let getset = + let rec go p = + match p with + | SynPat.LongIdent (LongIdentWithDots([id],_),_,_,_,_,_) -> id.idText + | SynPat.Named (_,nm,_,_,_) -> nm.idText + | SynPat.Typed (p,_,_) -> go p + | SynPat.Attrib (p,_,_) -> go p + | _ -> raiseParseErrorAt mBindLhs (FSComp.SR.parsInvalidDeclarationSyntax()) + go pv + if getset = "get" then + if !hasGet then + reportParseErrorAt mBindLhs (FSComp.SR.parsGetAndOrSetRequired()) + None + else + hasGet := true + Some MemberKind.PropertyGet + else if getset = "set" then + if !hasSet then + reportParseErrorAt mBindLhs (FSComp.SR.parsGetAndOrSetRequired()) + None + else + hasSet := true + Some MemberKind.PropertySet + else + raiseParseErrorAt mBindLhs (FSComp.SR.parsGetAndOrSetRequired()) + match memberKind with + | None -> None + | Some memberKind -> + // REVIEW: It's hard not to ignore the optPropertyType type annotation for 'set' properties. To apply it, + // we should apply it to the last argument, but at this point we've already pushed the patterns that + // make up the arguments onto the RHS. So we just always give a warning. + begin match optPropertyType with + | Some _ -> errorR(Error(FSComp.SR.parsTypeAnnotationsOnGetSet(),mBindLhs)) + | None -> () + end + + let optReturnType = + match (memberKind, optReturnType) with + | MemberKind.PropertySet, _ -> optReturnType + | _, None -> optPropertyType + | _ -> optReturnType + // REDO with the correct member kind + let binding = bindingBuilder(vis,isInline,isMutable,mBindLhs,NoSequencePointAtInvisibleBinding,optReturnType,expr,exprm,[],attrs,Some(memFlagsBuilder memberKind)) + let (Binding (vis, _, isInline, _, attrs, doc, valSynData, pv, rhsRetInfo, rhsExpr, mBindLhs, spBind)) = binding + + let (SynValData(_,valSynInfo,_)) = valSynData + // Setters have all arguments tupled in their internal TAST form, though they don't appear to be + // tupled from the syntax + let memFlags = memFlagsBuilder memberKind + let valSynInfo = + let adjustValueArg valueArg = + match valueArg with + | [_] -> valueArg + | _ -> SynInfo.unnamedTopArg + match memberKind, valSynInfo, memFlags.IsInstance with + | MemberKind.PropertyGet, SynValInfo ([], _ret), false + | MemberKind.PropertyGet, SynValInfo ([_], _ret), true -> + raiseParseErrorAt mBindLhs (FSComp.SR.parsGetterMustHaveAtLeastOneArgument()) + | MemberKind.PropertyGet, SynValInfo (thisArg :: indexOrUnitArgs :: rest, ret), true -> + if not rest.IsEmpty then + reportParseErrorAt mBindLhs (FSComp.SR.parsGetterAtMostOneArgument ()) + SynValInfo ([thisArg; indexOrUnitArgs], ret) + | MemberKind.PropertyGet, SynValInfo (indexOrUnitArgs :: rest,ret), false -> + if not rest.IsEmpty then + reportParseErrorAt mBindLhs (FSComp.SR.parsGetterAtMostOneArgument ()) + SynValInfo ([indexOrUnitArgs], ret) + | MemberKind.PropertySet, SynValInfo ([thisArg;valueArg], ret), true -> + SynValInfo ([thisArg; adjustValueArg valueArg], ret) + | MemberKind.PropertySet, SynValInfo (thisArg :: indexArgs :: valueArg :: rest, ret), true -> + if not rest.IsEmpty then + reportParseErrorAt mBindLhs (FSComp.SR.parsSetterAtMostTwoArguments ()) + SynValInfo ([thisArg; indexArgs @ adjustValueArg valueArg], ret) + | MemberKind.PropertySet, SynValInfo ([valueArg], ret), false -> + SynValInfo ([adjustValueArg valueArg], ret) + | MemberKind.PropertySet, SynValInfo (indexArgs :: valueArg :: rest,ret), _ -> + if not rest.IsEmpty then + reportParseErrorAt mBindLhs (FSComp.SR.parsSetterAtMostTwoArguments ()) + SynValInfo ([indexArgs @ adjustValueArg valueArg], ret) + | _ -> + // should be unreachable, cover just in case + raiseParseErrorAt mBindLhs (FSComp.SR.parsInvalidProperty ()) + let valSynData = SynValData(Some(memFlags), valSynInfo,None) + // Fold together the information from the first lambda pattern and the get/set binding + // This uses the 'this' variable from the first and the patterns for the get/set binding, + // replacing the get/set identifier. A little gross. + let bindingPatAdjusted, xmlDocAdjusted = + let bindingOuter = propertyNameBindingBuilder(vis,optInline,isMutable,mBindLhs,spBind,optReturnType,expr,exprm,[],attrs,Some(memFlagsBuilder MemberKind.Member)) + let (Binding (_,_,_,_,_,doc2,_,bindingPatOuter,_,_,_,_)) = bindingOuter + + + let lidOuter,lidVisOuter = + match bindingPatOuter with + | SynPat.LongIdent (lid,None,None, SynConstructorArgs.Pats [],lidVisOuter,m) -> lid,lidVisOuter + | SynPat.Named (_,id,_,visOuter,m) -> LongIdentWithDots([id],[]),visOuter + | p -> raiseParseErrorAt mBindLhs (FSComp.SR.parsInvalidDeclarationSyntax()) + // Merge the visibility from the outer point with the inner point, e.g. + // member this.Size with get () = m_size + + let mergeLidVisOuter lidVisInner = + match lidVisInner,lidVisOuter with + | None,None -> None + | Some lidVisInner,None | None,Some lidVisInner -> Some lidVisInner + | Some _, Some _ -> + errorR(Error(FSComp.SR.parsMultipleAccessibilitiesForGetSet(),mBindLhs)) + lidVisInner + + // Replace the "get" or the "set" with the right name + let rec go p = + match p with + | SynPat.LongIdent (LongIdentWithDots([id],_),_,tyargs,SynConstructorArgs.Pats args,lidVisInner,m) -> + // Setters have all arguments tupled in their internal form, though they don't + // appear to be tupled from the syntax. Somewhat unfortunate + let args = + if id.idText = "set" then + match args with + | [SynPat.Paren(SynPat.Tuple (false,indexPats,_),indexPatRange);valuePat] when id.idText = "set" -> + [SynPat.Tuple(false,indexPats@[valuePat],unionRanges indexPatRange valuePat.Range)] + | [indexPat;valuePat] -> + [SynPat.Tuple(false,args,unionRanges indexPat.Range valuePat.Range)] + | [valuePat] -> + [valuePat] + | _ -> + raiseParseErrorAt m (FSComp.SR.parsSetSyntax()) + else + args + // let idTool : Ident list = lidOuter |> List.map (fun (li:Ident) -> ident(li.idText,id.idRange)) |> List.rev |> List.take 1 + SynPat.LongIdent (lidOuter,Some(id),tyargs, SynConstructorArgs.Pats args,mergeLidVisOuter lidVisInner,m) + | SynPat.Named (_,nm,_,lidVisInner,m) -> SynPat.LongIdent (lidOuter,None,None, SynConstructorArgs.Pats [], mergeLidVisOuter lidVisInner,m) + | SynPat.Typed (p,ty,m) -> SynPat.Typed(go p,ty,m) + | SynPat.Attrib (p,attribs,m) -> SynPat.Attrib(go p,attribs,m) + | SynPat.Wild(m) -> SynPat.Wild(m) + | _ -> raiseParseErrorAt mBindLhs (FSComp.SR.parsInvalidDeclarationSyntax()) + go pv,PreXmlDoc.Merge doc2 doc + let binding = Binding (vis, NormalBinding, isInline, isMutable, attrs, xmlDocAdjusted, valSynData, bindingPatAdjusted, rhsRetInfo, rhsExpr, mBindLhs, spBind) + let memberRange = unionRanges rangeStart mWhole + Some (SynMemberDefn.Member (binding, memberRange)))) + + ) +# 1639 "../pars.fsy" + : 'memberCore)); +# 5722 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1825 "../pars.fsy" + + ) +# 1825 "../pars.fsy" + : 'abstractMemberFlags)); +# 5732 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1826 "../pars.fsy" + + ) +# 1826 "../pars.fsy" + : 'abstractMemberFlags)); +# 5742 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1832 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + [mkClassMemberLocalBindings(false,None,_1,_2,_3)] + ) +# 1832 "../pars.fsy" + : 'classDefnMember)); +# 5756 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1836 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + [mkClassMemberLocalBindings(true,Some (rhs parseState 3),_1,_2,_4)] + ) +# 1836 "../pars.fsy" + : 'classDefnMember)); +# 5770 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'memberFlags)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'memberCore)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_ODECLEND)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1840 "../pars.fsy" + let rangeStart = rhs parseState 1 + if Option.isSome _2 then + errorR (Error (FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier (), rhs parseState 2)) + let _, flags = _3 + _4 _2 flags _1 rangeStart + ) +# 1840 "../pars.fsy" + : 'classDefnMember)); +# 5789 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'interfaceMember)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_interfaceImplDefn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1847 "../pars.fsy" + if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesAreNotPermittedOnInterfaceImplementations(),rhs parseState 1)) + if Option.isSome _2 then errorR(Error(FSComp.SR.parsInterfacesHaveSameVisibilityAsEnclosingType(),rhs parseState 3)) + let mWhole = + match _5 with + | None -> rhs2 parseState 3 4 + | Some(mems) -> (rhs2 parseState 3 4, mems) ||> unionRangeWithListBy (fun (mem:SynMemberDefn) -> mem.Range) + [ SynMemberDefn.Interface (_4, _5, mWhole) ] + ) +# 1847 "../pars.fsy" + : 'classDefnMember)); +# 5810 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'abstractMemberFlags)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_inline)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'nameop)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_explicitValTyparDecls)) in + let _8 = (let data = parseState.GetInput(8) in (Microsoft.FSharp.Core.Operators.unbox data : 'topTypeWithTypeConstraints)) in + let _9 = (let data = parseState.GetInput(9) in (Microsoft.FSharp.Core.Operators.unbox data : 'classMemberSpfnGetSet)) in + let _10 = (let data = parseState.GetInput(10) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_ODECLEND)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1856 "../pars.fsy" + let ty,arity = _8 + let isInline,doc,id,explicitValTyparDecls = _4,grabXmlDoc(parseState,3),_5,_6 + let getSetRangeOpt, getSet = _9 + let getSetAdjuster arity = match arity,getSet with SynValInfo([],_),MemberKind.Member -> MemberKind.PropertyGet | _ -> getSet + let wholeRange = + let m = rhs parseState 3 + match getSetRangeOpt with + | None -> unionRanges m ty.Range + | Some m2 -> unionRanges m m2 + if Option.isSome _2 then errorR(Error(FSComp.SR.parsAccessibilityModsIllegalForAbstract(),wholeRange)) + let valSpfn = ValSpfn(_1,id,explicitValTyparDecls,ty,arity, isInline,false,doc, None,None,wholeRange) + [ SynMemberDefn.AbstractSlot(valSpfn,AbstractMemberFlags (getSetAdjuster arity), wholeRange) ] + ) +# 1856 "../pars.fsy" + : 'classDefnMember)); +# 5840 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'inheritsDefn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1870 "../pars.fsy" + if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalOnInherit(),rhs parseState 1)) + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityIllegalOnInherit(),rhs parseState 1)) + [ _3 ] + ) +# 1870 "../pars.fsy" + : 'classDefnMember)); +# 5855 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'valDefnDecl)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_ODECLEND)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1875 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + _3 None _1 false + ) +# 1875 "../pars.fsy" + : 'classDefnMember)); +# 5870 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'valDefnDecl)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_ODECLEND)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1879 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + _4 (Some (rhs parseState 3)) _1 true + ) +# 1879 "../pars.fsy" + : 'classDefnMember)); +# 5885 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'memberFlags)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'autoPropsDefnDecl)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_ODECLEND)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1883 "../pars.fsy" + let rangeStart = rhs parseState 1 + if Option.isSome _2 then + errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + let isStatic, flags = _3 + _4 _1 isStatic flags rangeStart + ) +# 1883 "../pars.fsy" + : 'classDefnMember)); +# 5904 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPattern)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'optAsSpec)) in + let _7 = (let data = parseState.GetInput(7) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _8 = (let data = parseState.GetInput(8) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_ODECLEND)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1890 "../pars.fsy" + let m = unionRanges (rhs2 parseState 3 6) _7.Range + let expr = _7 + let valSynData = SynValData (Some CtorMemberFlags, SynValInfo([SynInfo.InferSynArgInfoFromPat _4],SynInfo.unnamedRetVal), _5) + let vis = _2 + let declPat = SynPat.LongIdent (LongIdentWithDots([mkSynId (rhs parseState 3) "new"],[]),None,Some noInferredTypars, SynConstructorArgs.Pats [_4],vis,rhs parseState 3) + // Check that 'SynPatForConstructorDecl' matches this correctly + assert (match declPat with SynPatForConstructorDecl _ -> true | _ -> false) + [ SynMemberDefn.Member(Binding (None,NormalBinding,false,false,_1,grabXmlDoc(parseState,3),valSynData, declPat,None,expr,m,NoSequencePointAtInvisibleBinding),m) ] + ) +# 1890 "../pars.fsy" + : 'classDefnMember)); +# 5927 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeKeyword)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'tyconDefn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1900 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsVisibilityDeclarationsShouldComePriorToIdentifier(),rhs parseState 2)) + [ SynMemberDefn.NestedType(_5,None,rhs2 parseState 3 5) ] + ) +# 1900 "../pars.fsy" + : 'classDefnMember)); +# 5942 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_mutable)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1907 "../pars.fsy" + let mRhs = rhs2 parseState 4 6 + let doc = grabXmlDoc(parseState,4) + let mValDecl = rhs2 parseState 1 6 + (fun mLeft attribs isStatic -> + let mValDecl = match mLeft with None -> mValDecl | Some m -> unionRanges m mValDecl + let fld = Field(attribs,isStatic,Some _4,_6,_2,doc,_3,mRhs) + [ SynMemberDefn.ValField(fld, mValDecl) ]) + ) +# 1907 "../pars.fsy" + : 'valDefnDecl)); +# 5962 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_mutable)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_typ)) in + let _7 = (let data = parseState.GetInput(7) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _8 = (let data = parseState.GetInput(8) in (Microsoft.FSharp.Core.Operators.unbox data : 'classMemberSpfnGetSet)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1919 "../pars.fsy" + let doc = grabXmlDoc(parseState, 5) + let mGetSetOpt, getSet = _8 + if _2 then + errorR (Error (FSComp.SR.parsMutableOnAutoPropertyShouldBeGetSet (), rhs parseState 3)) + (fun attribs isStatic flags rangeStart -> + let memberRange = unionRanges rangeStart _7.Range + [ SynMemberDefn.AutoProperty(attribs, isStatic, _4, _5, getSet, flags, doc, _3, _7, mGetSetOpt, memberRange) ]) + ) +# 1919 "../pars.fsy" + : 'autoPropsDefnDecl)); +# 5984 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1930 "../pars.fsy" + None + ) +# 1930 "../pars.fsy" + : 'opt_typ)); +# 5994 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1931 "../pars.fsy" + Some _2 + ) +# 1931 "../pars.fsy" + : 'opt_typ)); +# 6005 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1934 "../pars.fsy" + + if not (parseState.LexBuffer.SupportsFeature LanguageFeature.SingleUnderscorePattern) then + raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedSymbolDot()) + let (LongIdentWithDots(lid,dotms)) = _3 in (None,LongIdentWithDots(ident("_",rhs parseState 1)::lid, rhs parseState 2::dotms)) + + ) +# 1934 "../pars.fsy" + : 'atomicPatternLongIdent)); +# 6020 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1939 "../pars.fsy" + let (LongIdentWithDots(lid,dotms)) = _3 in (None,LongIdentWithDots(ident(MangledGlobalName,rhs parseState 1) :: lid, rhs parseState 2 :: dotms)) + ) +# 1939 "../pars.fsy" + : 'atomicPatternLongIdent)); +# 6031 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1940 "../pars.fsy" + (None,_1) + ) +# 1940 "../pars.fsy" + : 'atomicPatternLongIdent)); +# 6042 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'access)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1941 "../pars.fsy" + + if not (parseState.LexBuffer.SupportsFeature LanguageFeature.SingleUnderscorePattern) then + raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedSymbolDot()) + let (LongIdentWithDots(lid,dotms)) = _4 in (Some(_1),LongIdentWithDots(ident("_",rhs parseState 1)::lid, rhs parseState 2::dotms)) + + ) +# 1941 "../pars.fsy" + : 'atomicPatternLongIdent)); +# 6058 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'access)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1946 "../pars.fsy" + (Some(_1), _2) + ) +# 1946 "../pars.fsy" + : 'atomicPatternLongIdent)); +# 6070 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1950 "../pars.fsy" + None + ) +# 1950 "../pars.fsy" + : 'opt_access)); +# 6080 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'access)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1951 "../pars.fsy" + Some(_1) + ) +# 1951 "../pars.fsy" + : 'opt_access)); +# 6091 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1955 "../pars.fsy" + SynAccess.Private + ) +# 1955 "../pars.fsy" + : 'access)); +# 6101 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1956 "../pars.fsy" + SynAccess.Public + ) +# 1956 "../pars.fsy" + : 'access)); +# 6111 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1957 "../pars.fsy" + SynAccess.Internal + ) +# 1957 "../pars.fsy" + : 'access)); +# 6121 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'access)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1961 "../pars.fsy" + Some(_1) + ) +# 1961 "../pars.fsy" + : 'opt_declVisibility)); +# 6132 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1962 "../pars.fsy" + None + ) +# 1962 "../pars.fsy" + : 'opt_declVisibility)); +# 6142 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'objectImplementationBlock)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'declEnd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1966 "../pars.fsy" + Some(_2) + ) +# 1966 "../pars.fsy" + : 'opt_interfaceImplDefn)); +# 6154 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1967 "../pars.fsy" + None + ) +# 1967 "../pars.fsy" + : 'opt_interfaceImplDefn)); +# 6164 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'classDefnBlock)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'declEnd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1971 "../pars.fsy" + _2 + ) +# 1971 "../pars.fsy" + : 'opt_classDefn)); +# 6176 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1972 "../pars.fsy" + [] + ) +# 1972 "../pars.fsy" + : 'opt_classDefn)); +# 6186 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomTypeNonAtomicDeprecated)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'optBaseSpec)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1978 "../pars.fsy" + let mDecl = unionRanges (rhs parseState 1) ((_2): SynType).Range + SynMemberDefn.Inherit(_2,_3,mDecl) + ) +# 1978 "../pars.fsy" + : 'inheritsDefn)); +# 6199 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomTypeNonAtomicDeprecated)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_HIGH_PRECEDENCE_APP)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'optBaseSpec)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1982 "../pars.fsy" + let mDecl = unionRanges (rhs parseState 1) _4.Range + SynMemberDefn.ImplicitInherit(_2,_4,_5,mDecl) + ) +# 1982 "../pars.fsy" + : 'inheritsDefn)); +# 6214 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1986 "../pars.fsy" + let mDecl = (rhs parseState 1) + if not _2 then errorR(Error(FSComp.SR.parsTypeNameCannotBeEmpty(), mDecl)) + SynMemberDefn.Inherit(SynType.LongIdent(LongIdentWithDots([], [])), None,mDecl) + ) +# 1986 "../pars.fsy" + : 'inheritsDefn)); +# 6227 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'asSpec)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1991 "../pars.fsy" + Some(_1) + ) +# 1991 "../pars.fsy" + : 'optAsSpec)); +# 6238 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1992 "../pars.fsy" + None + ) +# 1992 "../pars.fsy" + : 'optAsSpec)); +# 6248 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1995 "../pars.fsy" + _2 + ) +# 1995 "../pars.fsy" + : 'asSpec)); +# 6259 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'baseSpec)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 1999 "../pars.fsy" + Some(_1) + ) +# 1999 "../pars.fsy" + : 'optBaseSpec)); +# 6270 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2000 "../pars.fsy" + None + ) +# 2000 "../pars.fsy" + : 'optBaseSpec)); +# 6280 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2005 "../pars.fsy" + if (_2).idText <> "base" then + errorR(Error(FSComp.SR.parsInheritDeclarationsCannotHaveAsBindings(),rhs2 parseState 1 2)) + ident("base",rhs parseState 2) + ) +# 2005 "../pars.fsy" + : 'baseSpec)); +# 6293 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2010 "../pars.fsy" + errorR(Error(FSComp.SR.parsInheritDeclarationsCannotHaveAsBindings(),rhs2 parseState 1 2)) + ident("base",rhs parseState 2) + ) +# 2010 "../pars.fsy" + : 'baseSpec)); +# 6304 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'objectImplementationMembers)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2017 "../pars.fsy" + _2 + ) +# 2017 "../pars.fsy" + : 'objectImplementationBlock)); +# 6316 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'objectImplementationMembers)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2020 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileObjectMembers()) + _2 + ) +# 2020 "../pars.fsy" + : 'objectImplementationBlock)); +# 6329 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'objectImplementationMembers)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2024 "../pars.fsy" + _1 + ) +# 2024 "../pars.fsy" + : 'objectImplementationBlock)); +# 6340 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'objectImplementationMember)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'objectImplementationMembers)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2030 "../pars.fsy" + _1 @ _3 + ) +# 2030 "../pars.fsy" + : 'objectImplementationMembers)); +# 6353 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'objectImplementationMember)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2033 "../pars.fsy" + _1 + ) +# 2033 "../pars.fsy" + : 'objectImplementationMembers)); +# 6365 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'memberOrOverride)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'memberCore)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_ODECLEND)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2039 "../pars.fsy" + let rangeStart = rhs parseState 1 + _3 None OverrideMemberFlags _1 rangeStart + ) +# 2039 "../pars.fsy" + : 'objectImplementationMember)); +# 6380 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'memberOrOverride)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'autoPropsDefnDecl)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_ODECLEND)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2043 "../pars.fsy" + let rangeStart = rhs parseState 1 + _3 _1 false OverrideMemberFlags rangeStart + ) +# 2043 "../pars.fsy" + : 'objectImplementationMember)); +# 6395 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'memberOrOverride)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2047 "../pars.fsy" + [] + ) +# 2047 "../pars.fsy" + : 'objectImplementationMember)); +# 6407 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'memberCore)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_ODECLEND)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2050 "../pars.fsy" + [] + ) +# 2050 "../pars.fsy" + : 'objectImplementationMember)); +# 6420 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2054 "../pars.fsy" + + ) +# 2054 "../pars.fsy" + : 'memberOrOverride)); +# 6430 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2055 "../pars.fsy" + + ) +# 2055 "../pars.fsy" + : 'memberOrOverride)); +# 6440 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : string * bool)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2063 "../pars.fsy" + errorR(Error(FSComp.SR.parsUnexpectedQuotationOperatorInTypeAliasDidYouMeanVerbatimString(), rhs parseState 4)) + SynTypeDefnSimpleRepr.TypeAbbrev (ParserDetail.ThereWereSignificantParseErrorsSoDoNotTypecheckThisNode, SynType.LongIdent(_3), unionRanges (rhs parseState 1) _3.Range) + ) +# 2063 "../pars.fsy" + : Ast.SynTypeDefnSimpleRepr)); +# 6457 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2068 "../pars.fsy" + if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalHere(),rhs parseState 1)) + if Option.isSome _2 then errorR(Error(FSComp.SR.parsTypeAbbreviationsCannotHaveVisibilityDeclarations(),rhs parseState 2)) + SynTypeDefnSimpleRepr.TypeAbbrev (ParserDetail.Ok, _3, unionRanges (rhs parseState 1) _3.Range) + ) +# 2068 "../pars.fsy" + : Ast.SynTypeDefnSimpleRepr)); +# 6472 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : (Ast.SynEnumCase, Ast.SynUnionCase) Choice list)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2074 "../pars.fsy" + if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalHere(),rhs parseState 1)) + let rangesOf3 = _3 |> List.map (function |Choice1Of2(ec)->ec.Range | Choice2Of2(uc)->uc.Range) + let mWhole = (rhs2 parseState 1 2, rangesOf3) ||> List.fold unionRanges + if _3 |> List.exists (function Choice1Of2 _ -> true | _ -> false) then ( + if Option.isSome _2 then errorR(Error(FSComp.SR.parsEnumTypesCannotHaveVisibilityDeclarations(),rhs parseState 2)); + SynTypeDefnSimpleRepr.Enum (_3 |> List.choose (function + | Choice1Of2 data -> + Some(data) + | Choice2Of2(UnionCase(_,_,_,_,_,m)) -> + errorR(Error(FSComp.SR.parsAllEnumFieldsRequireValues(),m)); None), + mWhole) + ) else + SynTypeDefnSimpleRepr.Union (_2, + _3 |> List.choose (function Choice2Of2 data -> Some(data) | Choice1Of2 _ -> failwith "huh?"), + mWhole) + ) +# 2074 "../pars.fsy" + : Ast.SynTypeDefnSimpleRepr)); +# 6499 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'braceFieldDeclList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2092 "../pars.fsy" + if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalHere(),rhs parseState 1)) + SynTypeDefnSimpleRepr.Record (_2,_3,lhs parseState) + ) +# 2092 "../pars.fsy" + : Ast.SynTypeDefnSimpleRepr)); +# 6513 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declVisibility)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'inlineAssemblyTyconRepr)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2097 "../pars.fsy" + if not (isNil _1) then errorR(Error(FSComp.SR.parsAttributesIllegalHere(),rhs parseState 1)) + libraryOnlyError (lhs parseState) + if Option.isSome _2 then errorR(Error(FSComp.SR.parsInlineAssemblyCannotHaveVisibilityDeclarations(),rhs parseState 2)) + _4 + ) +# 2097 "../pars.fsy" + : Ast.SynTypeDefnSimpleRepr)); +# 6530 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdFieldDeclList)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rbrace)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2106 "../pars.fsy" + _2 + ) +# 2106 "../pars.fsy" + : 'braceFieldDeclList)); +# 6542 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdFieldDeclList)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2109 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBrace()) + _2 + ) +# 2109 "../pars.fsy" + : 'braceFieldDeclList)); +# 6555 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rbrace)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2113 "../pars.fsy" + [] + ) +# 2113 "../pars.fsy" + : 'braceFieldDeclList)); +# 6566 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'braceBarFieldDeclListCore)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2117 "../pars.fsy" + _2,true + ) +# 2117 "../pars.fsy" + : 'anonRecdType)); +# 6577 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'braceBarFieldDeclListCore)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2119 "../pars.fsy" + _1,false + ) +# 2119 "../pars.fsy" + : 'anonRecdType)); +# 6588 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdFieldDeclList)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'bar_rbrace)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2124 "../pars.fsy" + _2 + ) +# 2124 "../pars.fsy" + : 'braceBarFieldDeclListCore)); +# 6600 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdFieldDeclList)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2127 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBraceBar()) + _2 + ) +# 2127 "../pars.fsy" + : 'braceBarFieldDeclListCore)); +# 6613 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'bar_rbrace)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2131 "../pars.fsy" + [] + ) +# 2131 "../pars.fsy" + : 'braceBarFieldDeclListCore)); +# 6624 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'stringOrKeywordString)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2135 "../pars.fsy" + libraryOnlyError (lhs parseState) + let lhsm = lhs parseState + SynTypeDefnSimpleRepr.LibraryOnlyILAssembly (internalParseAssemblyCodeType _2 parseState.LexBuffer.SupportsFeature (rhs parseState 2),lhsm) + ) +# 2135 "../pars.fsy" + : 'inlineAssemblyTyconRepr)); +# 6637 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2140 "../pars.fsy" + TyconClass + ) +# 2140 "../pars.fsy" + : 'classOrInterfaceOrStruct)); +# 6647 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2141 "../pars.fsy" + TyconInterface + ) +# 2141 "../pars.fsy" + : 'classOrInterfaceOrStruct)); +# 6657 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2142 "../pars.fsy" + TyconStruct + ) +# 2142 "../pars.fsy" + : 'classOrInterfaceOrStruct)); +# 6667 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2145 "../pars.fsy" + + ) +# 2145 "../pars.fsy" + : 'interfaceMember)); +# 6677 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2146 "../pars.fsy" + + ) +# 2146 "../pars.fsy" + : 'interfaceMember)); +# 6687 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2150 "../pars.fsy" + [], _2.Lid,false,[],_1,grabXmlDoc(parseState,2) + ) +# 2150 "../pars.fsy" + : 'tyconNameAndTyparDecls)); +# 6699 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'prefixTyparDecls)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2153 "../pars.fsy" + _2, _3.Lid,false,[],_1,grabXmlDoc(parseState,2) + ) +# 2153 "../pars.fsy" + : 'tyconNameAndTyparDecls)); +# 6712 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'postfixTyparDecls)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2156 "../pars.fsy" + let tps,tpcs = _3 + tps, _2.Lid,true,tpcs,_1,grabXmlDoc(parseState,2) + ) +# 2156 "../pars.fsy" + : 'tyconNameAndTyparDecls)); +# 6726 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2160 "../pars.fsy" + [ TyparDecl([],_1) ] + ) +# 2160 "../pars.fsy" + : 'prefixTyparDecls)); +# 6737 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typarDeclList)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2161 "../pars.fsy" + List.rev _2 + ) +# 2161 "../pars.fsy" + : 'prefixTyparDecls)); +# 6749 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typarDeclList)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typarDecl)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2164 "../pars.fsy" + _3 :: _1 + ) +# 2164 "../pars.fsy" + : 'typarDeclList)); +# 6761 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typarDecl)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2165 "../pars.fsy" + [_1] + ) +# 2165 "../pars.fsy" + : 'typarDeclList)); +# 6772 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2169 "../pars.fsy" + TyparDecl(_1,_2) + ) +# 2169 "../pars.fsy" + : 'typarDecl)); +# 6784 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_HIGH_PRECEDENCE_TYAPP)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typarDeclList)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_typeConstraints)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2175 "../pars.fsy" + if not _2 then warning(Error(FSComp.SR.parsNonAdjacentTypars(),rhs2 parseState 2 5)) + List.rev _3, _4 + ) +# 2175 "../pars.fsy" + : 'postfixTyparDecls)); +# 6800 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typarDeclList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2182 "../pars.fsy" + (List.rev _1,true) + ) +# 2182 "../pars.fsy" + : 'explicitValTyparDeclsCore)); +# 6811 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typarDeclList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2184 "../pars.fsy" + (List.rev _1,false) + ) +# 2184 "../pars.fsy" + : 'explicitValTyparDeclsCore)); +# 6822 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2186 "../pars.fsy" + ([],false) + ) +# 2186 "../pars.fsy" + : 'explicitValTyparDeclsCore)); +# 6832 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_HIGH_PRECEDENCE_TYAPP)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'explicitValTyparDeclsCore)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_typeConstraints)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2190 "../pars.fsy" + if not _2 then warning(Error(FSComp.SR.parsNonAdjacentTypars(),rhs2 parseState 2 5)) + let tps,flex = _3 + SynValTyparDecls(tps,flex,_4) + ) +# 2190 "../pars.fsy" + : 'explicitValTyparDecls)); +# 6849 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'explicitValTyparDecls)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2196 "../pars.fsy" + _1 + ) +# 2196 "../pars.fsy" + : 'opt_explicitValTyparDecls)); +# 6860 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2198 "../pars.fsy" + SynValTyparDecls([],true,[]) + ) +# 2198 "../pars.fsy" + : 'opt_explicitValTyparDecls)); +# 6870 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'explicitValTyparDecls)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2202 "../pars.fsy" + Some _1 + ) +# 2202 "../pars.fsy" + : 'opt_explicitValTyparDecls2)); +# 6881 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2204 "../pars.fsy" + None + ) +# 2204 "../pars.fsy" + : 'opt_explicitValTyparDecls2)); +# 6891 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2210 "../pars.fsy" + [] + ) +# 2210 "../pars.fsy" + : 'opt_typeConstraints)); +# 6901 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeConstraints)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2212 "../pars.fsy" + List.rev _2 + ) +# 2212 "../pars.fsy" + : 'opt_typeConstraints)); +# 6912 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeConstraints)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeConstraint)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2217 "../pars.fsy" + _3 :: _1 + ) +# 2217 "../pars.fsy" + : 'typeConstraints)); +# 6924 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeConstraint)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2218 "../pars.fsy" + [_1] + ) +# 2218 "../pars.fsy" + : 'typeConstraints)); +# 6935 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2224 "../pars.fsy" + libraryOnlyError (lhs parseState); WhereTyparDefaultsToType(_2,_4,lhs parseState) + ) +# 2224 "../pars.fsy" + : 'typeConstraint)); +# 6947 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2227 "../pars.fsy" + WhereTyparSubtypeOfType(_1,_3,lhs parseState) + ) +# 2227 "../pars.fsy" + : 'typeConstraint)); +# 6959 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2230 "../pars.fsy" + WhereTyparIsValueType(_1,lhs parseState) + ) +# 2230 "../pars.fsy" + : 'typeConstraint)); +# 6970 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2233 "../pars.fsy" + if _3 <> "not" then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(_3)) + WhereTyparIsReferenceType(_1,lhs parseState) + ) +# 2233 "../pars.fsy" + : 'typeConstraint)); +# 6983 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2237 "../pars.fsy" + WhereTyparSupportsNull(_1,lhs parseState) + ) +# 2237 "../pars.fsy" + : 'typeConstraint)); +# 6994 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'classMemberSpfn)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2240 "../pars.fsy" + let tp = _1 + WhereTyparSupportsMember([ SynType.Var(tp, tp.Range) ],_4,lhs parseState) + ) +# 2240 "../pars.fsy" + : 'typeConstraint)); +# 7008 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typarAlts)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'classMemberSpfn)) in + let _7 = (let data = parseState.GetInput(7) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2244 "../pars.fsy" + WhereTyparSupportsMember(List.rev(_2),_6,lhs parseState) + ) +# 2244 "../pars.fsy" + : 'typeConstraint)); +# 7022 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : range * range option * Ast.SynType list * range list * range)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2247 "../pars.fsy" + let _ltm,_gtm,args,_commas,mWhole = _4 in WhereTyparIsDelegate(_1, args, unionRanges _1.Range mWhole) + ) +# 2247 "../pars.fsy" + : 'typeConstraint)); +# 7034 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : range * range option * Ast.SynType list * range list * range)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2250 "../pars.fsy" + match _3 with + | "enum" -> let _ltm,_gtm,args,_commas,mWhole = _4 in WhereTyparIsEnum(_1, args, unionRanges _1.Range mWhole) + | nm -> raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(nm)) + ) +# 2250 "../pars.fsy" + : 'typeConstraint)); +# 7049 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2255 "../pars.fsy" + match _3 with + | "comparison" -> WhereTyparIsComparable(_1,lhs parseState) + | "equality" -> WhereTyparIsEquatable(_1,lhs parseState) + | "unmanaged" -> WhereTyparIsUnmanaged(_1,lhs parseState) + | nm -> raiseParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedIdentifier(nm)) + ) +# 2255 "../pars.fsy" + : 'typeConstraint)); +# 7065 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typarAlts)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2262 "../pars.fsy" + _3 :: _1 + ) +# 2262 "../pars.fsy" + : 'typarAlts)); +# 7077 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2263 "../pars.fsy" + [_1] + ) +# 2263 "../pars.fsy" + : 'typarAlts)); +# 7088 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'barAndgrabXmlDoc)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'attrUnionCaseDecls)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2270 "../pars.fsy" + _2 _1 + ) +# 2270 "../pars.fsy" + : (Ast.SynEnumCase, Ast.SynUnionCase) Choice list)); +# 7100 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'firstUnionCaseDeclOfMany)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'barAndgrabXmlDoc)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'attrUnionCaseDecls)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2273 "../pars.fsy" + _1 :: _3 _2 + ) +# 2273 "../pars.fsy" + : (Ast.SynEnumCase, Ast.SynUnionCase) Choice list)); +# 7113 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'firstUnionCaseDecl)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2276 "../pars.fsy" + [_1] + ) +# 2276 "../pars.fsy" + : (Ast.SynEnumCase, Ast.SynUnionCase) Choice list)); +# 7124 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2279 "../pars.fsy" + grabXmlDoc(parseState,1) + ) +# 2279 "../pars.fsy" + : 'barAndgrabXmlDoc)); +# 7134 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attrUnionCaseDecl)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'barAndgrabXmlDoc)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'attrUnionCaseDecls)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2282 "../pars.fsy" + (fun xmlDoc -> _1 xmlDoc :: _3 _2) + ) +# 2282 "../pars.fsy" + : 'attrUnionCaseDecls)); +# 7147 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attrUnionCaseDecl)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2283 "../pars.fsy" + (fun xmlDoc -> [ _1 xmlDoc ]) + ) +# 2283 "../pars.fsy" + : 'attrUnionCaseDecls)); +# 7158 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'unionCaseName)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2288 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(),rhs parseState 2)) + let mDecl = rhs parseState 3 + (fun xmlDoc -> Choice2Of2 (UnionCase ( _1, _3,UnionCaseFields [],xmlDoc,None,mDecl))) + + ) +# 2288 "../pars.fsy" + : 'attrUnionCaseDecl)); +# 7175 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'unionCaseName)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'unionCaseRepr)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2294 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(),rhs parseState 2)) + let mDecl = rhs2 parseState 3 5 + (fun xmlDoc -> Choice2Of2 (UnionCase ( _1, _3,UnionCaseFields _5,xmlDoc,None,mDecl))) + + ) +# 2294 "../pars.fsy" + : 'attrUnionCaseDecl)); +# 7193 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'unionCaseName)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'topType)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2300 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsUnionCasesCannotHaveVisibilityDeclarations(),rhs parseState 2)) + libraryOnlyWarning(lhs parseState) + let mDecl = rhs2 parseState 3 5 + (fun xmlDoc -> Choice2Of2 (UnionCase ( _1, _3,UnionCaseFullType _5,xmlDoc,None,mDecl))) + + ) +# 2300 "../pars.fsy" + : 'attrUnionCaseDecl)); +# 7212 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'unionCaseName)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'constant)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2307 "../pars.fsy" + if Option.isSome _2 then errorR(Error(FSComp.SR.parsEnumFieldsCannotHaveVisibilityDeclarations(),rhs parseState 2)) + let mDecl = rhs2 parseState 3 5 + (fun xmlDoc -> Choice1Of2 (EnumCase ( _1, _3,_5,xmlDoc,mDecl))) + + ) +# 2307 "../pars.fsy" + : 'attrUnionCaseDecl)); +# 7230 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'nameop)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2315 "../pars.fsy" + _1 + ) +# 2315 "../pars.fsy" + : 'unionCaseName)); +# 7241 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2318 "../pars.fsy" + ident(opNameCons,rhs parseState 2) + ) +# 2318 "../pars.fsy" + : 'unionCaseName)); +# 7252 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2321 "../pars.fsy" + ident(opNameNil,rhs2 parseState 2 3) + ) +# 2321 "../pars.fsy" + : 'unionCaseName)); +# 7263 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2325 "../pars.fsy" + Choice2Of2 (UnionCase ( [], _1,UnionCaseFields [],PreXmlDoc.Empty,None,rhs parseState 1)) + ) +# 2325 "../pars.fsy" + : 'firstUnionCaseDeclOfMany)); +# 7275 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'constant)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2328 "../pars.fsy" + Choice1Of2 (EnumCase ([],_1,_3,PreXmlDoc.Empty,rhs2 parseState 1 3)) + ) +# 2328 "../pars.fsy" + : 'firstUnionCaseDeclOfMany)); +# 7288 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'firstUnionCaseDecl)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2331 "../pars.fsy" + _1 + ) +# 2331 "../pars.fsy" + : 'firstUnionCaseDeclOfMany)); +# 7300 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'unionCaseRepr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2335 "../pars.fsy" + Choice2Of2 (UnionCase ( [],_1,UnionCaseFields _3,PreXmlDoc.Empty,None,rhs2 parseState 1 3)) + ) +# 2335 "../pars.fsy" + : 'firstUnionCaseDecl)); +# 7312 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'constant)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2338 "../pars.fsy" + Choice1Of2 (EnumCase ([],_1,_3,PreXmlDoc.Empty,rhs2 parseState 1 3)) + ) +# 2338 "../pars.fsy" + : 'firstUnionCaseDecl)); +# 7325 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'unionCaseReprElement)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'unionCaseReprElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2341 "../pars.fsy" + _1 :: _3 + ) +# 2341 "../pars.fsy" + : 'unionCaseReprElements)); +# 7337 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'unionCaseReprElement)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2342 "../pars.fsy" + [_1] + ) +# 2342 "../pars.fsy" + : 'unionCaseReprElements)); +# 7348 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2345 "../pars.fsy" + mkNamedField(_1, _3) + ) +# 2345 "../pars.fsy" + : 'unionCaseReprElement)); +# 7360 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2346 "../pars.fsy" + mkAnonField _1 + ) +# 2346 "../pars.fsy" + : 'unionCaseReprElement)); +# 7371 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'braceFieldDeclList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2350 "../pars.fsy" + errorR(Deprecated(FSComp.SR.parsConsiderUsingSeparateRecordType(),lhs parseState)) + _1 + ) +# 2350 "../pars.fsy" + : 'unionCaseRepr)); +# 7383 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'unionCaseReprElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2354 "../pars.fsy" + _1 + ) +# 2354 "../pars.fsy" + : 'unionCaseRepr)); +# 7394 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdFieldDecl)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'seps)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdFieldDeclList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2359 "../pars.fsy" + _1 :: _3 + ) +# 2359 "../pars.fsy" + : 'recdFieldDeclList)); +# 7407 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdFieldDecl)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2362 "../pars.fsy" + [_1] + ) +# 2362 "../pars.fsy" + : 'recdFieldDeclList)); +# 7419 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'fieldDecl)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2367 "../pars.fsy" + let fld = _2 _1 false + let (Field(a,b,c,d,e,f,vis,g)) = fld + if Option.isSome vis then errorR(Error(FSComp.SR.parsRecordFieldsCannotHaveVisibilityDeclarations(),rhs parseState 2)) + Field(a,b,c,d,e,f,None,g) + ) +# 2367 "../pars.fsy" + : 'recdFieldDecl)); +# 7434 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_mutable)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2375 "../pars.fsy" + let mRhs = rhs2 parseState 3 5 + let xmlDoc = grabXmlDoc(parseState,3) + (fun attrs stat -> Field(attrs, stat,Some _3,_5,_1,xmlDoc,_2,mRhs)) + ) +# 2375 "../pars.fsy" + : 'fieldDecl)); +# 7450 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExceptionDefnRepr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_classDefn)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2383 "../pars.fsy" + SynExceptionDefn(_1,_2, (_1.Range,_2) ||> unionRangeWithListBy (fun cd -> cd.Range) ) + ) +# 2383 "../pars.fsy" + : Ast.SynExceptionDefn)); +# 7462 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2387 "../pars.fsy" + grabXmlDoc(parseState,1) + ) +# 2387 "../pars.fsy" + : 'exceptionAndGrabDoc)); +# 7472 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'exceptionAndGrabDoc)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'exconIntro)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'exconRepr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2392 "../pars.fsy" + SynExceptionDefnRepr(_2,_4,_5,_1,_3,(match _5 with None -> rhs2 parseState 1 4 | Some p -> unionRanges (rangeOfLongIdent p) (rhs2 parseState 1 4))) + ) +# 2392 "../pars.fsy" + : Ast.SynExceptionDefnRepr)); +# 7487 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2397 "../pars.fsy" + UnionCase ( [], _1,UnionCaseFields [],PreXmlDoc.Empty,None,lhs parseState) + ) +# 2397 "../pars.fsy" + : 'exconIntro)); +# 7498 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'unionCaseRepr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2400 "../pars.fsy" + UnionCase ( [], _1,UnionCaseFields _3,PreXmlDoc.Empty,None,lhs parseState) + ) +# 2400 "../pars.fsy" + : 'exconIntro)); +# 7510 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2403 "../pars.fsy" + None + ) +# 2403 "../pars.fsy" + : 'exconRepr)); +# 7520 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2404 "../pars.fsy" + Some (_2.Lid) + ) +# 2404 "../pars.fsy" + : 'exconRepr)); +# 7531 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2407 "../pars.fsy" + _2 + ) +# 2407 "../pars.fsy" + : Ast.LongIdentWithDots)); +# 7542 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_rec)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'localBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2416 "../pars.fsy" + let mLetKwd = rhs parseState 1 + let isUse = _1 + let isRec = _2 + let localBindingsLastRangeOpt, localBindingsBuilder = _3 + + // Calculate the precise range of the binding set, up to the end of the last r.h.s. expression + let bindingSetRange = + match localBindingsLastRangeOpt with + | None -> rhs2 parseState 1 2 (* there was some error - this will be an approximate range *) + | Some lastRange -> unionRanges mLetKwd lastRange + // The first binding swallows any attributes prior to the 'let' + BindingSetPreAttrs(mLetKwd,isRec,isUse, + (fun attrs vis -> + // apply the builder + let binds = localBindingsBuilder attrs vis mLetKwd + if not isRec && not (isNilOrSingleton binds) then + reportParseErrorAt mLetKwd (FSComp.SR.parsLetAndForNonRecBindings()) + [],binds), + bindingSetRange) + ) +# 2416 "../pars.fsy" + : 'defnBindings)); +# 7573 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'cPrototype)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2438 "../pars.fsy" + let bindRange = lhs parseState + BindingSetPreAttrs(bindRange, false,false,_1,bindRange) + ) +# 2438 "../pars.fsy" + : 'defnBindings)); +# 7585 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2445 "../pars.fsy" + let mDoKwd = rhs parseState 1 + let mWhole = unionRanges mDoKwd _2.Range + // any attributes prior to the 'let' are left free, e.g. become top-level attributes + // associated with the module, 'main' function or assembly depending on their target + BindingSetPreAttrs(mDoKwd,false,false,(fun attrs vis -> attrs,[mkSynDoBinding (vis,true,_2,mWhole)]), mWhole) + ) +# 2445 "../pars.fsy" + : 'doBinding)); +# 7600 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_rec)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'localBindings)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'hardwhiteDefnBindingsTerminator)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2455 "../pars.fsy" + let mLetKwd = rhs parseState 1 + let isUse = _1 + let isRec = _2 + _4 (if isUse then "use" else "let") mLetKwd // report unterminated error + + let localBindingsLastRangeOpt, localBindingsBuilder = _3 + + // Calculate the precise range of the binding set, up to the end of the last r.h.s. expression + let bindingSetRange = + match localBindingsLastRangeOpt with + | None -> rhs parseState 1 (* there was some error - this will be an approximate range *) + | Some lastRange -> unionRanges mLetKwd lastRange + // the first binding swallow any attributes prior to the 'let' + BindingSetPreAttrs(mLetKwd,isRec,isUse, + (fun attrs vis -> + let binds = localBindingsBuilder attrs vis mLetKwd + if not isRec && not (isNilOrSingleton binds) then + reportParseErrorAt mLetKwd (FSComp.SR.parsLetAndForNonRecBindings()) + [],binds), + bindingSetRange), (unionRanges mLetKwd bindingSetRange) + ) +# 2455 "../pars.fsy" + : 'hardwhiteLetBindings)); +# 7633 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'hardwhiteDefnBindingsTerminator)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2481 "../pars.fsy" + let mLetKwd = rhs parseState 1 + let bindingSetRange = unionRanges mLetKwd _2.Range + let seqPt = NoSequencePointAtDoBinding + // any attributes prior to the 'let' are left free, e.g. become top-level attributes + // associated with the module, 'main' function or assembly depending on their target + BindingSetPreAttrs(mLetKwd,false,false,(fun attrs vis -> attrs,[mkSynDoBinding (vis,true,_2,bindingSetRange)]),bindingSetRange), _2 + ) +# 2481 "../pars.fsy" + : 'hardwhiteDoBinding)); +# 7650 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'defnBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2491 "../pars.fsy" + _1 + ) +# 2491 "../pars.fsy" + : 'classDefnBindings)); +# 7661 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'doBinding)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2492 "../pars.fsy" + _1 + ) +# 2492 "../pars.fsy" + : 'classDefnBindings)); +# 7672 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'hardwhiteLetBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2493 "../pars.fsy" + let b,m = _1 in b + ) +# 2493 "../pars.fsy" + : 'classDefnBindings)); +# 7683 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'hardwhiteDoBinding)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2494 "../pars.fsy" + fst _1 + ) +# 2494 "../pars.fsy" + : 'classDefnBindings)); +# 7694 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2500 "../pars.fsy" + (fun _ m -> ()) + ) +# 2500 "../pars.fsy" + : 'hardwhiteDefnBindingsTerminator)); +# 7704 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2502 "../pars.fsy" + (fun kwd m -> reportParseErrorAt m (match kwd with + | "let!" -> FSComp.SR.parsUnmatchedLetBang() + | "use!" -> FSComp.SR.parsUnmatchedUseBang() + | "use" -> FSComp.SR.parsUnmatchedUse() + | _ (*"let" *) -> FSComp.SR.parsUnmatchedLet())) + ) +# 2502 "../pars.fsy" + : 'hardwhiteDefnBindingsTerminator)); +# 7719 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'cRetType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_access)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_HIGH_PRECEDENCE_APP)) in + let _7 = (let data = parseState.GetInput(7) in (Microsoft.FSharp.Core.Operators.unbox data : 'cArgs)) in + let _8 = (let data = parseState.GetInput(8) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2511 "../pars.fsy" + let rty,vis,nm,args = _2,_3,_4,_7 + let xmlDoc = grabXmlDoc(parseState,1) + let nmm = rhs parseState 3 + let argsm = rhs parseState 6 + let mBindLhs = lhs parseState + let mWhole = lhs parseState + let mRhs = lhs parseState + let rhsExpr = SynExpr.App (ExprAtomicFlag.NonAtomic, + false, + SynExpr.Ident (ident("failwith",rhs parseState 6)), + SynExpr.Const (SynConst.String("extern was not given a DllImport attribute",rhs parseState 8),rhs parseState 8), + mRhs) + (fun attrs vis -> + let bindingId = SynPat.LongIdent (LongIdentWithDots([nm],[]), None, Some noInferredTypars, SynConstructorArgs.Pats [SynPat.Tuple(false,args,argsm)], vis, nmm) + let binding = mkSynBinding + (xmlDoc, bindingId) + (vis, false, false, mBindLhs, NoSequencePointAtInvisibleBinding, Some rty, rhsExpr, mRhs, [], attrs, None) + [], [binding]) + ) +# 2511 "../pars.fsy" + : 'cPrototype)); +# 7752 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'cMoreArgs)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2533 "../pars.fsy" + List.rev _1 + ) +# 2533 "../pars.fsy" + : 'cArgs)); +# 7763 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'cArg)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2536 "../pars.fsy" + [_1] + ) +# 2536 "../pars.fsy" + : 'cArgs)); +# 7774 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2538 "../pars.fsy" + [] + ) +# 2538 "../pars.fsy" + : 'cArgs)); +# 7784 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'cMoreArgs)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'cArg)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2544 "../pars.fsy" + _3 :: _1 + ) +# 2544 "../pars.fsy" + : 'cMoreArgs)); +# 7796 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'cArg)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'cArg)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2547 "../pars.fsy" + [_3; _1] + ) +# 2547 "../pars.fsy" + : 'cMoreArgs)); +# 7808 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'cType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2553 "../pars.fsy" + let m = lhs parseState in SynPat.Typed(SynPat.Wild m,_2,m) |> addAttribs _1 + ) +# 2553 "../pars.fsy" + : 'cArg)); +# 7820 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'cType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2556 "../pars.fsy" + let m = lhs parseState in SynPat.Typed(SynPat.Named (SynPat.Wild m,_3,false,None,m),_2,m) |> addAttribs _1 + ) +# 2556 "../pars.fsy" + : 'cArg)); +# 7833 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2561 "../pars.fsy" + let m = _1.Range + SynType.App(SynType.LongIdent(_1),None,[],[],None,false,m) + ) +# 2561 "../pars.fsy" + : 'cType)); +# 7845 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'cType)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_HIGH_PRECEDENCE_APP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2565 "../pars.fsy" + let m = lhs parseState + SynType.App(SynType.LongIdent(LongIdentWithDots([ident("[]",m)],[])),None,[_1],[],None,true,m) + ) +# 2565 "../pars.fsy" + : 'cType)); +# 7858 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'cType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2569 "../pars.fsy" + let m = lhs parseState + SynType.App(SynType.LongIdent(LongIdentWithDots([ident("nativeptr",m)],[])),None,[_1],[],None,true,m) + ) +# 2569 "../pars.fsy" + : 'cType)); +# 7870 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'cType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2573 "../pars.fsy" + let m = lhs parseState + SynType.App(SynType.LongIdent(LongIdentWithDots([ident("byref",m)],[])),None,[_1],[],None,true,m) + ) +# 2573 "../pars.fsy" + : 'cType)); +# 7882 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2577 "../pars.fsy" + let m = lhs parseState + SynType.App(SynType.LongIdent(LongIdentWithDots([ident("nativeint",m)],[])),None,[],[],None,true,m) + ) +# 2577 "../pars.fsy" + : 'cType)); +# 7893 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'cType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2584 "../pars.fsy" + SynReturnInfo((_2,SynArgInfo(_1,false,None)),rhs parseState 2) + ) +# 2584 "../pars.fsy" + : 'cRetType)); +# 7905 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2587 "../pars.fsy" + let m = rhs parseState 2 + SynReturnInfo((SynType.App(SynType.LongIdent(LongIdentWithDots([ident("unit",m)],[])),None,[],[],None,false,m),SynArgInfo(_1,false,None)),m) + ) +# 2587 "../pars.fsy" + : 'cRetType)); +# 7917 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attr_localBinding)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'moreLocalBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2593 "../pars.fsy" + let (moreBindings, moreBindingRanges) = List.unzip _2 + let moreLocalBindingsLastRange = if moreBindingRanges.IsEmpty then None else Some (List.last moreBindingRanges) + match _1 with + | Some (localBindingRange,attrLocalBindingBuilder) -> + let lastRange = + match moreLocalBindingsLastRange with + | None -> localBindingRange + | Some m -> m + Some lastRange, (fun attrs vis mLetKwd -> attrLocalBindingBuilder attrs vis mLetKwd true :: moreBindings) + | None -> + moreLocalBindingsLastRange, (fun _attrs _vis _letm -> moreBindings) + ) +# 2593 "../pars.fsy" + : 'localBindings)); +# 7939 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'attr_localBinding)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'moreLocalBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2608 "../pars.fsy" + let mLetKwd = rhs parseState 1 + (match _2 with + | Some (localBindingRange,attrLocalBindingBuilder) -> (attrLocalBindingBuilder [] None mLetKwd false,localBindingRange) :: _3 + | None -> _3) + ) +# 2608 "../pars.fsy" + : 'moreLocalBindings)); +# 7954 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2614 "../pars.fsy" + [] + ) +# 2614 "../pars.fsy" + : 'moreLocalBindings)); +# 7964 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'localBinding)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2620 "../pars.fsy" + let attrs2 = _1 + let localBindingRange,localBindingBuilder = _2 + let attrLocalBindingBuilder = (fun attrs vis mLetKwd _ -> localBindingBuilder (attrs@attrs2) vis mLetKwd) + Some(localBindingRange,attrLocalBindingBuilder) + ) +# 2620 "../pars.fsy" + : 'attr_localBinding)); +# 7979 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2626 "../pars.fsy" + None + ) +# 2626 "../pars.fsy" + : 'attr_localBinding)); +# 7989 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_inline)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_mutable)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'bindingPattern)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_topReturnTypeWithTypeConstraints)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedExprWithStaticOptimizationsBlock)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2632 "../pars.fsy" + let (expr:SynExpr),opts = _6 + let eqm = rhs parseState 5 + let mRhs = expr.Range + let optReturnType = _4 + let bindingBuilder, mBindLhs = _3 + let localBindingRange = unionRanges (rhs2 parseState 3 5) mRhs + let localBindingBuilder = + (fun attrs vis mLetKwd -> + let mWhole = unionRanges mLetKwd mRhs + let spBind = if IsControlFlowExpression expr then NoSequencePointAtLetBinding else SequencePointAtBinding(mWhole) + bindingBuilder (vis,_1,_2,mBindLhs,spBind,optReturnType,expr,mRhs,opts,attrs,None)) + localBindingRange,localBindingBuilder + ) +# 2632 "../pars.fsy" + : 'localBinding)); +# 8015 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_inline)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_mutable)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'bindingPattern)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_topReturnTypeWithTypeConstraints)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2646 "../pars.fsy" + let mWhole = rhs2 parseState 3 5 + let mRhs = rhs parseState 5 + let optReturnType = _4 + let bindingBuilder,mBindLhs = _3 + let localBindingBuilder = + (fun attrs vis mLetKwd -> + let spBind = SequencePointAtBinding(unionRanges mLetKwd mRhs) + let eqm = rhs parseState 5 + let zeroWidthAtEnd = eqm.EndRange + bindingBuilder (vis,_1,_2,mBindLhs,spBind,optReturnType,arbExpr("localBinding1",zeroWidthAtEnd),mRhs,[],attrs,None)) + mWhole,localBindingBuilder + ) +# 2646 "../pars.fsy" + : 'localBinding)); +# 8039 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_inline)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_mutable)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'bindingPattern)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_topReturnTypeWithTypeConstraints)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2659 "../pars.fsy" + if not _5 then reportParseErrorAt (rhs parseState 5) (FSComp.SR.parsUnexpectedEndOfFileDefinition()) + let optReturnType = _4 + let mWhole = match optReturnType with None -> rhs parseState 3 | Some _ -> rhs2 parseState 3 4 + let mRhs = mWhole.EndRange // zero-width range at end of last good token + let bindingBuilder,mBindLhs = _3 + let localBindingBuilder = + (fun attrs vis mLetKwd -> + let spBind = SequencePointAtBinding(unionRanges mLetKwd mRhs) + bindingBuilder (vis,_1,_2,mBindLhs,spBind,optReturnType,arbExpr("localBinding2",mRhs),mRhs,[],attrs,None)) + mWhole,localBindingBuilder + ) +# 2659 "../pars.fsy" + : 'localBinding)); +# 8063 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedExprWithStaticOptimizations)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2674 "../pars.fsy" + _2 + ) +# 2674 "../pars.fsy" + : 'typedExprWithStaticOptimizationsBlock)); +# 8075 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedExprWithStaticOptimizations)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2677 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFile()) + let a,b = _2 + (exprFromParseError a, b) + ) +# 2677 "../pars.fsy" + : 'typedExprWithStaticOptimizationsBlock)); +# 8089 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedExprWithStaticOptimizations)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2682 "../pars.fsy" + _1 + ) +# 2682 "../pars.fsy" + : 'typedExprWithStaticOptimizationsBlock)); +# 8100 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_staticOptimizations)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2685 "../pars.fsy" + _1, List.rev _2 + ) +# 2685 "../pars.fsy" + : 'typedExprWithStaticOptimizations)); +# 8112 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_staticOptimizations)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'staticOptimization)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2688 "../pars.fsy" + _2 :: _1 + ) +# 2688 "../pars.fsy" + : 'opt_staticOptimizations)); +# 8124 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2689 "../pars.fsy" + [] + ) +# 2689 "../pars.fsy" + : 'opt_staticOptimizations)); +# 8134 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'staticOptimizationConditions)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2692 "../pars.fsy" + (_2,_4) + ) +# 2692 "../pars.fsy" + : 'staticOptimization)); +# 8146 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'staticOptimizationConditions)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'staticOptimizationCondition)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2695 "../pars.fsy" + _3 :: _1 + ) +# 2695 "../pars.fsy" + : 'staticOptimizationConditions)); +# 8158 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'staticOptimizationCondition)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2696 "../pars.fsy" + [_1 ] + ) +# 2696 "../pars.fsy" + : 'staticOptimizationConditions)); +# 8169 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2699 "../pars.fsy" + WhenTyparTyconEqualsTycon(_1,_3,lhs parseState) + ) +# 2699 "../pars.fsy" + : 'staticOptimizationCondition)); +# 8181 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2700 "../pars.fsy" + WhenTyparIsStruct(_1,lhs parseState) + ) +# 2700 "../pars.fsy" + : 'staticOptimizationCondition)); +# 8192 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : sbyte * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2703 "../pars.fsy" + if snd _1 then errorR(Error(FSComp.SR.lexOutsideEightBitSigned(), lhs parseState)) + SynConst.SByte (fst _1) + ) +# 2703 "../pars.fsy" + : 'rawConstant)); +# 8204 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : byte)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2705 "../pars.fsy" + SynConst.Byte _1 + ) +# 2705 "../pars.fsy" + : 'rawConstant)); +# 8215 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : int16 * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2706 "../pars.fsy" + if snd _1 then errorR(Error(FSComp.SR.lexOutsideSixteenBitSigned(), lhs parseState)) + SynConst.Int16 (fst _1) + ) +# 2706 "../pars.fsy" + : 'rawConstant)); +# 8227 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : uint16)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2708 "../pars.fsy" + SynConst.UInt16 _1 + ) +# 2708 "../pars.fsy" + : 'rawConstant)); +# 8238 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : int32 * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2709 "../pars.fsy" + if snd _1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) + SynConst.Int32 (fst _1) + ) +# 2709 "../pars.fsy" + : 'rawConstant)); +# 8250 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : uint32)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2711 "../pars.fsy" + SynConst.UInt32 _1 + ) +# 2711 "../pars.fsy" + : 'rawConstant)); +# 8261 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : int64 * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2712 "../pars.fsy" + if snd _1 then errorR(Error(FSComp.SR.lexOutsideSixtyFourBitSigned(), lhs parseState)) + SynConst.Int64 (fst _1) + ) +# 2712 "../pars.fsy" + : 'rawConstant)); +# 8273 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : uint64)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2714 "../pars.fsy" + SynConst.UInt64 _1 + ) +# 2714 "../pars.fsy" + : 'rawConstant)); +# 8284 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : int64)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2715 "../pars.fsy" + SynConst.IntPtr _1 + ) +# 2715 "../pars.fsy" + : 'rawConstant)); +# 8295 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : uint64)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2716 "../pars.fsy" + SynConst.UIntPtr _1 + ) +# 2716 "../pars.fsy" + : 'rawConstant)); +# 8306 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : single)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2717 "../pars.fsy" + SynConst.Single _1 + ) +# 2717 "../pars.fsy" + : 'rawConstant)); +# 8317 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : double)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2718 "../pars.fsy" + SynConst.Double _1 + ) +# 2718 "../pars.fsy" + : 'rawConstant)); +# 8328 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : char)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2719 "../pars.fsy" + SynConst.Char _1 + ) +# 2719 "../pars.fsy" + : 'rawConstant)); +# 8339 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : System.Decimal)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2720 "../pars.fsy" + SynConst.Decimal _1 + ) +# 2720 "../pars.fsy" + : 'rawConstant)); +# 8350 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : (string * string))) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2721 "../pars.fsy" + SynConst.UserNum _1 + ) +# 2721 "../pars.fsy" + : 'rawConstant)); +# 8361 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'stringOrKeywordString)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2722 "../pars.fsy" + SynConst.String (_1,lhs parseState) + ) +# 2722 "../pars.fsy" + : 'rawConstant)); +# 8372 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : byte[])) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2723 "../pars.fsy" + SynConst.Bytes (_1,lhs parseState) + ) +# 2723 "../pars.fsy" + : 'rawConstant)); +# 8383 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : int32 * bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : int32 * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2727 "../pars.fsy" + if _2 <> "/" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()) + if fst _3 = 0 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsIllegalDenominatorForMeasureExponent()) + if (snd _1) || (snd _3) then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) + SynRationalConst.Rational(fst _1, fst _3, lhs parseState) + ) +# 2727 "../pars.fsy" + : 'rationalConstant)); +# 8399 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : int32 * bool)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : int32 * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2733 "../pars.fsy" + if _3 <> "/" then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()) + if fst _4 = 0 then reportParseErrorAt (rhs parseState 4) (FSComp.SR.parsIllegalDenominatorForMeasureExponent()) + if (snd _2) || (snd _4) then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) + SynRationalConst.Negate(SynRationalConst.Rational(fst _2, fst _4, lhs parseState)) + ) +# 2733 "../pars.fsy" + : 'rationalConstant)); +# 8415 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : int32 * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2738 "../pars.fsy" + if snd _1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) + SynRationalConst.Integer(fst _1) + ) +# 2738 "../pars.fsy" + : 'rationalConstant)); +# 8427 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : int32 * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2741 "../pars.fsy" + if snd _2 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) + SynRationalConst.Negate(SynRationalConst.Integer(fst _2)) + ) +# 2741 "../pars.fsy" + : 'rationalConstant)); +# 8439 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : int32 * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2745 "../pars.fsy" + if snd _1 then errorR(Error(FSComp.SR.lexOutsideThirtyTwoBitSigned(), lhs parseState)) + SynRationalConst.Integer(fst _1) + ) +# 2745 "../pars.fsy" + : 'atomicUnsignedRationalConstant)); +# 8451 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'rationalConstant)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2749 "../pars.fsy" + _2 + ) +# 2749 "../pars.fsy" + : 'atomicUnsignedRationalConstant)); +# 8463 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicUnsignedRationalConstant)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2752 "../pars.fsy" + _1 + ) +# 2752 "../pars.fsy" + : 'atomicRationalConstant)); +# 8474 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicUnsignedRationalConstant)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2755 "../pars.fsy" + SynRationalConst.Negate(_2) + ) +# 2755 "../pars.fsy" + : 'atomicRationalConstant)); +# 8485 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'rawConstant)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2758 "../pars.fsy" + _1 + ) +# 2758 "../pars.fsy" + : 'constant)); +# 8496 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'rawConstant)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'measureTypeArg)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2759 "../pars.fsy" + SynConst.Measure(_1, _3) + ) +# 2759 "../pars.fsy" + : 'constant)); +# 8508 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2763 "../pars.fsy" + let xmlDoc = grabXmlDoc(parseState,1) + mkSynBinding (xmlDoc,_1), rhs parseState 1 + ) +# 2763 "../pars.fsy" + : 'bindingPattern)); +# 8520 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2771 "../pars.fsy" + let m = rhs parseState 1 + SynPat.Named(SynPat.Wild m, _1, false, None, m) + ) +# 2771 "../pars.fsy" + : 'simplePattern)); +# 8532 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2774 "../pars.fsy" + SynPat.OptionalVal(_2, rhs parseState 2) + ) +# 2774 "../pars.fsy" + : 'simplePattern)); +# 8543 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'simplePattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeWithTypeConstraints)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2776 "../pars.fsy" + SynPat.Typed(_1, _3, lhs parseState) + ) +# 2776 "../pars.fsy" + : 'simplePattern)); +# 8555 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'simplePattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2778 "../pars.fsy" + SynPat.Attrib(_2, _1, lhs parseState) + ) +# 2778 "../pars.fsy" + : 'simplePattern)); +# 8567 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'simplePattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2782 "../pars.fsy" + _1 + ) +# 2782 "../pars.fsy" + : 'simplePatternCommaList)); +# 8578 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'simplePattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'simplePatternCommaList)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2784 "../pars.fsy" + match _3 with + | SynPat.Tuple(_, pats, _) -> SynPat.Tuple(false, _1 :: pats, rhs2 parseState 1 3) + | _ -> SynPat.Tuple(false, [_1; _3], rhs2 parseState 1 3) + ) +# 2784 "../pars.fsy" + : 'simplePatternCommaList)); +# 8592 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'simplePatternCommaList)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2790 "../pars.fsy" + let parenPat = SynPat.Paren(_2, rhs2 parseState 1 3) + let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator parenPat + simplePats + ) +# 2790 "../pars.fsy" + : 'simplePatterns)); +# 8606 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2794 "../pars.fsy" + let pat = SynPat.Const(SynConst.Unit, rhs2 parseState 1 2) + let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator pat + simplePats + ) +# 2794 "../pars.fsy" + : 'simplePatterns)); +# 8619 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'simplePatternCommaList)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2798 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) + let parenPat = SynPat.Paren(SynPat.Tuple(false, [], rhs2 parseState 1 2), rhs2 parseState 1 2) // todo: report parsed pats anyway? + let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator parenPat + simplePats + ) +# 2798 "../pars.fsy" + : 'simplePatterns)); +# 8634 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2803 "../pars.fsy" + let parenPat = SynPat.Paren(SynPat.Wild(rhs parseState 2), rhs2 parseState 1 3) // silent recovery + let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator parenPat + simplePats + ) +# 2803 "../pars.fsy" + : 'simplePatterns)); +# 8647 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2807 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) + let pat = SynPat.Wild(lhs parseState) + let simplePats, _ = SimplePatsOfPat parseState.SynArgNameGenerator pat + simplePats + ) +# 2807 "../pars.fsy" + : 'simplePatterns)); +# 8661 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2815 "../pars.fsy" + SynPat.Named (_1,_3,false,None,rhs2 parseState 1 3) + ) +# 2815 "../pars.fsy" + : Ast.SynPat)); +# 8673 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2817 "../pars.fsy" + SynPat.Or(_1,_3,rhs2 parseState 1 3) + ) +# 2817 "../pars.fsy" + : Ast.SynPat)); +# 8685 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2819 "../pars.fsy" + SynPat.LongIdent (LongIdentWithDots(mkSynCaseName (rhs parseState 2) opNameCons,[]), None, None, SynConstructorArgs.Pats [SynPat.Tuple (false,[_1;_3],rhs2 parseState 1 3)],None,lhs parseState) + ) +# 2819 "../pars.fsy" + : Ast.SynPat)); +# 8697 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tuplePatternElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2821 "../pars.fsy" + SynPat.Tuple(false,List.rev _1, lhs parseState) + ) +# 2821 "../pars.fsy" + : Ast.SynPat)); +# 8708 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'conjPatternElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2823 "../pars.fsy" + SynPat.Ands(List.rev _1, lhs parseState) + ) +# 2823 "../pars.fsy" + : Ast.SynPat)); +# 8719 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'constrPattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2825 "../pars.fsy" + _1 + ) +# 2825 "../pars.fsy" + : Ast.SynPat)); +# 8730 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tuplePatternElements)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2829 "../pars.fsy" + _3 :: _1 + ) +# 2829 "../pars.fsy" + : 'tuplePatternElements)); +# 8742 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2831 "../pars.fsy" + _3 :: _1 :: [] + ) +# 2831 "../pars.fsy" + : 'tuplePatternElements)); +# 8754 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'conjPatternElements)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2835 "../pars.fsy" + _3 :: _1 + ) +# 2835 "../pars.fsy" + : 'conjPatternElements)); +# 8766 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2837 "../pars.fsy" + _3 :: _1 :: [] + ) +# 2837 "../pars.fsy" + : 'conjPatternElements)); +# 8778 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'namePatPair)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2840 "../pars.fsy" + [_1], lhs parseState + ) +# 2840 "../pars.fsy" + : 'namePatPairs)); +# 8790 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'namePatPair)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'seps)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'namePatPairs)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2841 "../pars.fsy" + let (rs, _) = _3 in (_1 :: rs), lhs parseState + ) +# 2841 "../pars.fsy" + : 'namePatPairs)); +# 8803 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2844 "../pars.fsy" + (_1, _3) + ) +# 2844 "../pars.fsy" + : 'namePatPair)); +# 8815 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatternLongIdent)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'explicitValTyparDecls)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2848 "../pars.fsy" + let vis,lid = _1 in SynPat.LongIdent (lid,None,Some _2, SynConstructorArgs.Pats [],vis,lhs parseState) + ) +# 2848 "../pars.fsy" + : 'constrPattern)); +# 8827 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatternLongIdent)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_explicitValTyparDecls2)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatsOrNamePatPairs)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2850 "../pars.fsy" + let vis,lid = _1 in SynPat.LongIdent (lid,None,_2, _3,vis,lhs parseState) + ) +# 2850 "../pars.fsy" + : 'constrPattern)); +# 8840 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatternLongIdent)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_explicitValTyparDecls2)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatsOrNamePatPairs)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2852 "../pars.fsy" + let vis,lid = _1 in SynPat.LongIdent (lid,None,_2, _4,vis,lhs parseState) + ) +# 2852 "../pars.fsy" + : 'constrPattern)); +# 8853 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatternLongIdent)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_explicitValTyparDecls2)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatsOrNamePatPairs)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2854 "../pars.fsy" + let vis,lid = _1 in SynPat.LongIdent (lid,None,_2, _4,vis,lhs parseState) + ) +# 2854 "../pars.fsy" + : 'constrPattern)); +# 8866 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomTypeOrAnonRecdType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2856 "../pars.fsy" + SynPat.IsInst(_2,lhs parseState) + ) +# 2856 "../pars.fsy" + : 'constrPattern)); +# 8877 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2858 "../pars.fsy" + _1 + ) +# 2858 "../pars.fsy" + : 'constrPattern)); +# 8888 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'namePatPairs)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2861 "../pars.fsy" + SynConstructorArgs.NamePatPairs _2 + ) +# 2861 "../pars.fsy" + : 'atomicPatsOrNamePatPairs)); +# 8900 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatterns)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2862 "../pars.fsy" + SynConstructorArgs.Pats _1 + ) +# 2862 "../pars.fsy" + : 'atomicPatsOrNamePatPairs)); +# 8911 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPattern)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatterns)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2866 "../pars.fsy" + _1 :: _2 + ) +# 2866 "../pars.fsy" + : 'atomicPatterns)); +# 8923 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatterns)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2868 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSuccessivePatternsShouldBeSpacedOrTupled()) + _1 :: _3 + ) +# 2868 "../pars.fsy" + : 'atomicPatterns)); +# 8936 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatterns)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2871 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSuccessivePatternsShouldBeSpacedOrTupled()) + _1 :: _3 + ) +# 2871 "../pars.fsy" + : 'atomicPatterns)); +# 8949 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2873 "../pars.fsy" + [_1] + ) +# 2873 "../pars.fsy" + : 'atomicPatterns)); +# 8960 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'quoteExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2878 "../pars.fsy" + SynPat.QuoteExpr(_1,lhs parseState) + ) +# 2878 "../pars.fsy" + : 'atomicPattern)); +# 8971 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : char)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : char)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2879 "../pars.fsy" + SynPat.DeprecatedCharRange (_1,_3,rhs2 parseState 1 3) + ) +# 2879 "../pars.fsy" + : 'atomicPattern)); +# 8983 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recordPatternElementsAux)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rbrace)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2881 "../pars.fsy" + let rs, m = _2 in SynPat.Record (rs, rhs2 parseState 1 3) + ) +# 2881 "../pars.fsy" + : 'atomicPattern)); +# 8995 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'listPatternElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2883 "../pars.fsy" + SynPat.ArrayOrList(false,_2,lhs parseState) + ) +# 2883 "../pars.fsy" + : 'atomicPattern)); +# 9006 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'listPatternElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2885 "../pars.fsy" + SynPat.ArrayOrList(true,_2, lhs parseState) + ) +# 2885 "../pars.fsy" + : 'atomicPattern)); +# 9017 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2887 "../pars.fsy" + SynPat.Wild (lhs parseState) + ) +# 2887 "../pars.fsy" + : 'atomicPattern)); +# 9027 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2889 "../pars.fsy" + SynPat.OptionalVal(_2,lhs parseState) + ) +# 2889 "../pars.fsy" + : 'atomicPattern)); +# 9038 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatternLongIdent)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2891 "../pars.fsy" + let vis,lidwd = _1 + if not (isNilOrSingleton lidwd.Lid) || (let c = (List.head lidwd.Lid).idText.[0] in Char.IsUpper(c) && not (Char.IsLower c)) + then mkSynPatMaybeVar lidwd vis (lhs parseState) + else mkSynPatVar vis (List.head lidwd.Lid) + ) +# 2891 "../pars.fsy" + : 'atomicPattern)); +# 9052 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'constant)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2896 "../pars.fsy" + SynPat.Const (_1,_1.Range (lhs parseState)) + ) +# 2896 "../pars.fsy" + : 'atomicPattern)); +# 9063 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2898 "../pars.fsy" + SynPat.Const(SynConst.Bool false,lhs parseState) + ) +# 2898 "../pars.fsy" + : 'atomicPattern)); +# 9073 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2900 "../pars.fsy" + SynPat.Const(SynConst.Bool true,lhs parseState) + ) +# 2900 "../pars.fsy" + : 'atomicPattern)); +# 9083 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2902 "../pars.fsy" + SynPat.Null(lhs parseState) + ) +# 2902 "../pars.fsy" + : 'atomicPattern)); +# 9093 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPatternBody)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2904 "../pars.fsy" + let m = (lhs parseState) + SynPat.Paren(_2 m,m) + ) +# 2904 "../pars.fsy" + : 'atomicPattern)); +# 9106 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPatternBody)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2907 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) + patFromParseError (_2 (rhs2 parseState 1 2)) + ) +# 2907 "../pars.fsy" + : 'atomicPattern)); +# 9119 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2910 "../pars.fsy" + (* silent recovery *) SynPat.Wild (lhs parseState) + ) +# 2910 "../pars.fsy" + : 'atomicPattern)); +# 9130 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2912 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) + SynPat.Wild (lhs parseState) + ) +# 2912 "../pars.fsy" + : 'atomicPattern)); +# 9142 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleParenPatternElements)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2915 "../pars.fsy" + SynPat.Tuple(true, List.rev _3,lhs parseState) + ) +# 2915 "../pars.fsy" + : 'atomicPattern)); +# 9154 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleParenPatternElements)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2917 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()); + SynPat.Tuple(true, List.rev _3,lhs parseState) + ) +# 2917 "../pars.fsy" + : 'atomicPattern)); +# 9167 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2920 "../pars.fsy" + (* silent recovery *) SynPat.Wild (lhs parseState) + ) +# 2920 "../pars.fsy" + : 'atomicPattern)); +# 9178 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2922 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()); + SynPat.Wild (lhs parseState) + ) +# 2922 "../pars.fsy" + : 'atomicPattern)); +# 9190 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2929 "../pars.fsy" + (fun m -> _1) + ) +# 2929 "../pars.fsy" + : 'parenPatternBody)); +# 9201 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2931 "../pars.fsy" + (fun m -> SynPat.Const(SynConst.Unit,m)) + ) +# 2931 "../pars.fsy" + : 'parenPatternBody)); +# 9211 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2960 "../pars.fsy" + SynPat.Named (_1,_3,false,None,rhs2 parseState 1 3) + ) +# 2960 "../pars.fsy" + : 'parenPattern)); +# 9223 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2962 "../pars.fsy" + SynPat.Or(_1,_3,rhs2 parseState 1 3) + ) +# 2962 "../pars.fsy" + : 'parenPattern)); +# 9235 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleParenPatternElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2964 "../pars.fsy" + SynPat.Tuple(false,List.rev _1,lhs parseState) + ) +# 2964 "../pars.fsy" + : 'parenPattern)); +# 9246 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'conjParenPatternElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2966 "../pars.fsy" + SynPat.Ands(List.rev _1,rhs2 parseState 1 3) + ) +# 2966 "../pars.fsy" + : 'parenPattern)); +# 9257 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeWithTypeConstraints)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2968 "../pars.fsy" + let lhsm = lhs parseState + SynPat.Typed(_1,_3,lhsm) + ) +# 2968 "../pars.fsy" + : 'parenPattern)); +# 9270 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2971 "../pars.fsy" + let lhsm = lhs parseState + SynPat.Attrib(_2,_1,lhsm) + ) +# 2971 "../pars.fsy" + : 'parenPattern)); +# 9283 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2974 "../pars.fsy" + SynPat.LongIdent (LongIdentWithDots(mkSynCaseName (rhs parseState 2) opNameCons,[]), None, None, SynConstructorArgs.Pats [ SynPat.Tuple (false,[_1;_3],rhs2 parseState 1 3) ],None,lhs parseState) + ) +# 2974 "../pars.fsy" + : 'parenPattern)); +# 9295 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'constrPattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2975 "../pars.fsy" + _1 + ) +# 2975 "../pars.fsy" + : 'parenPattern)); +# 9306 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleParenPatternElements)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2979 "../pars.fsy" + _3 :: _1 + ) +# 2979 "../pars.fsy" + : 'tupleParenPatternElements)); +# 9318 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2981 "../pars.fsy" + _3 :: _1 :: [] + ) +# 2981 "../pars.fsy" + : 'tupleParenPatternElements)); +# 9330 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'conjParenPatternElements)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2985 "../pars.fsy" + _3 :: _1 + ) +# 2985 "../pars.fsy" + : 'conjParenPatternElements)); +# 9342 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2987 "../pars.fsy" + _3 :: _1 :: [] + ) +# 2987 "../pars.fsy" + : 'conjParenPatternElements)); +# 9354 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'recordPatternElement)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2991 "../pars.fsy" + [_1],lhs parseState + ) +# 2991 "../pars.fsy" + : 'recordPatternElementsAux)); +# 9366 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'recordPatternElement)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'seps)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recordPatternElementsAux)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2993 "../pars.fsy" + let r = _1 in let (rs,dropMark) = _3 in (r :: rs),lhs parseState + ) +# 2993 "../pars.fsy" + : 'recordPatternElementsAux)); +# 9379 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 2996 "../pars.fsy" + (List.frontAndBack _1.Lid,_3) + ) +# 2996 "../pars.fsy" + : 'recordPatternElement)); +# 9391 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3000 "../pars.fsy" + [] + ) +# 3000 "../pars.fsy" + : 'listPatternElements)); +# 9401 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3002 "../pars.fsy" + [_1] + ) +# 3002 "../pars.fsy" + : 'listPatternElements)); +# 9413 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'seps)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'listPatternElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3004 "../pars.fsy" + _1 :: _3 + ) +# 3004 "../pars.fsy" + : 'listPatternElements)); +# 9426 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3009 "../pars.fsy" + _2 + ) +# 3009 "../pars.fsy" + : Ast.SynExpr)); +# 9438 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3011 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileExpression()) + exprFromParseError _2 + ) +# 3011 "../pars.fsy" + : Ast.SynExpr)); +# 9451 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3014 "../pars.fsy" + _1 + ) +# 3014 "../pars.fsy" + : Ast.SynExpr)); +# 9462 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3019 "../pars.fsy" + _2 + ) +# 3019 "../pars.fsy" + : Ast.SynExpr)); +# 9474 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3021 "../pars.fsy" + _1 + ) +# 3021 "../pars.fsy" + : Ast.SynExpr)); +# 9485 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3026 "../pars.fsy" + _1 + ) +# 3026 "../pars.fsy" + : 'typedSeqExprBlockR)); +# 9496 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3027 "../pars.fsy" + _1 + ) +# 3027 "../pars.fsy" + : 'typedSeqExprBlockR)); +# 9507 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'seqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeWithTypeConstraints)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3030 "../pars.fsy" + SynExpr.Typed (_1,_3, unionRanges _1.Range _3.Range) + ) +# 3030 "../pars.fsy" + : 'typedSeqExpr)); +# 9519 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'seqExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3031 "../pars.fsy" + _1 + ) +# 3031 "../pars.fsy" + : 'typedSeqExpr)); +# 9530 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LexerWhitespaceContinuation)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3034 "../pars.fsy" + checkEndOfFileError _2; _1 + ) +# 3034 "../pars.fsy" + : Ast.SynExpr)); +# 9542 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'seps)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'seqExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3038 "../pars.fsy" + SynExpr.Sequential (SequencePointsAtSeq,true,_1,_3,unionRanges _1.Range _3.Range) + ) +# 3038 "../pars.fsy" + : 'seqExpr)); +# 9555 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'seps)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3040 "../pars.fsy" + _1 + ) +# 3040 "../pars.fsy" + : 'seqExpr)); +# 9567 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3042 "../pars.fsy" + _1 + ) +# 3042 "../pars.fsy" + : 'seqExpr)); +# 9578 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'seqExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3044 "../pars.fsy" + SynExpr.Sequential (SequencePointsAtSeq,false,_1,_3,unionRanges _1.Range _3.Range ) + ) +# 3044 "../pars.fsy" + : 'seqExpr)); +# 9590 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3046 "../pars.fsy" + SynExpr.Sequential (SequencePointsAtSeq,false,_1,_4,unionRanges _1.Range _4.Range) + ) +# 3046 "../pars.fsy" + : 'seqExpr)); +# 9603 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'hardwhiteLetBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3048 "../pars.fsy" + let hwlb,m = _1 + let mLetKwd,isUse = match hwlb with (BindingSetPreAttrs(m,_,isUse,_,_)) -> m,isUse + let usedKeyword = if isUse then "use" else "let" + reportParseErrorAt mLetKwd (FSComp.SR.parsExpectedExpressionAfterLet(usedKeyword,usedKeyword)) + let fauxRange = m.EndRange // zero width range at end of m + mkLocalBindings (m,hwlb,arbExpr("seqExpr",fauxRange)) + ) +# 3048 "../pars.fsy" + : 'seqExpr)); +# 9619 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3060 "../pars.fsy" + debugPrint("recovering via error"); true + ) +# 3060 "../pars.fsy" + : 'recover)); +# 9629 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LexerWhitespaceContinuation)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3061 "../pars.fsy" + debugPrint("recovering via EOF"); false + ) +# 3061 "../pars.fsy" + : 'recover)); +# 9640 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'defnBindings)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3066 "../pars.fsy" + mkLocalBindings (unionRanges (rhs2 parseState 1 2) _3.Range,_1,_3) + ) +# 3066 "../pars.fsy" + : Ast.SynExpr)); +# 9652 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'defnBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3069 "../pars.fsy" + mkLocalBindings (rhs2 parseState 1 2,_1,arbExpr("declExpr1",(rhs parseState 3))) + ) +# 3069 "../pars.fsy" + : Ast.SynExpr)); +# 9663 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'hardwhiteLetBindings)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3075 "../pars.fsy" + let hwlb,m = _1 + mkLocalBindings (unionRanges m _2.Range,hwlb,_2) + ) +# 3075 "../pars.fsy" + : Ast.SynExpr)); +# 9676 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'hardwhiteLetBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3079 "../pars.fsy" + let hwlb,m = _1 + reportParseErrorAt (match hwlb with (BindingSetPreAttrs(m,_,_,_,_)) -> m) (FSComp.SR.parsErrorInReturnForLetIncorrectIndentation()) + mkLocalBindings (m,hwlb,arbExpr("declExpr2",(rhs parseState 2))) + ) +# 3079 "../pars.fsy" + : Ast.SynExpr)); +# 9689 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'hardwhiteLetBindings)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3084 "../pars.fsy" + let hwlb,m = _1 + mkLocalBindings (unionRanges m _3.Range, hwlb, _3) + ) +# 3084 "../pars.fsy" + : Ast.SynExpr)); +# 9702 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'hardwhiteLetBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3088 "../pars.fsy" + let hwlb,m = _1 + //reportParseErrorAt (match hwlb with (BindingSetPreAttrs(m,_,_,_,_)) -> m) (FSComp.SR.parsErrorInReturnForLetIncorrectIndentation()) + mkLocalBindings (unionRanges m (rhs parseState 3),hwlb,arbExpr("declExpr3",(rhs parseState 3))) + ) +# 3088 "../pars.fsy" + : Ast.SynExpr)); +# 9715 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'hardwhiteDoBinding)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3093 "../pars.fsy" + let e = snd _1 + SynExpr.Do (e,e.Range) + ) +# 3093 "../pars.fsy" + : Ast.SynExpr)); +# 9727 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'anonMatchingExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3097 "../pars.fsy" + _1 + ) +# 3097 "../pars.fsy" + : Ast.SynExpr)); +# 9738 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'anonLambdaExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3100 "../pars.fsy" + _1 + ) +# 3100 "../pars.fsy" + : Ast.SynExpr)); +# 9749 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'withClauses)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3103 "../pars.fsy" + let mMatch = (rhs parseState 1) + let mWith,(clauses,mLast) = _3 + let spBind = SequencePointAtBinding(unionRanges mMatch mWith) + SynExpr.Match (spBind, _2,clauses,unionRanges mMatch mLast) + ) +# 3103 "../pars.fsy" + : Ast.SynExpr)); +# 9764 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3109 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileMatch()) + // Produce approximate expression during error recovery + exprFromParseError _2 + ) +# 3109 "../pars.fsy" + : Ast.SynExpr)); +# 9778 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'withClauses)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3114 "../pars.fsy" + let mMatch = (rhs parseState 1) + let mWith,(clauses,mLast) = _3 + let spBind = SequencePointAtBinding(unionRanges mMatch mWith) + SynExpr.MatchBang (spBind, _2,clauses,unionRanges mMatch mLast) + ) +# 3114 "../pars.fsy" + : Ast.SynExpr)); +# 9793 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3120 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileMatch()) + // Produce approximate expression during error recovery + exprFromParseError _2 + ) +# 3120 "../pars.fsy" + : Ast.SynExpr)); +# 9807 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExprBlockR)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'withClauses)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3125 "../pars.fsy" + let mTry = (rhs parseState 1) + let spTry = SequencePointAtTry(mTry) + let mWith,(clauses,mLast) = _3 + let spWith = SequencePointAtWith(mWith) + let mTryToWith = unionRanges mTry mWith + let mWithToLast = unionRanges mWith mLast + let mTryToLast = unionRanges mTry mLast + SynExpr.TryWith (_2, mTryToWith, clauses,mWithToLast, mTryToLast,spTry,spWith) + ) +# 3125 "../pars.fsy" + : Ast.SynExpr)); +# 9826 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExprBlockR)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3135 "../pars.fsy" + // Produce approximate expression during error recovery + // Include any expressions to make sure they gets type checked in case that generates useful results for intellisense + if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileTry()) + exprFromParseError _2 + ) +# 3135 "../pars.fsy" + : Ast.SynExpr)); +# 9841 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExprBlockR)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3141 "../pars.fsy" + let mTry = rhs parseState 1 + let spTry = SequencePointAtTry(mTry) + let spFinally = SequencePointAtFinally(rhs parseState 3) + let mTryToLast = unionRanges mTry _4.Range + SynExpr.TryFinally (_2, _4,mTryToLast,spTry,spFinally) + ) +# 3141 "../pars.fsy" + : Ast.SynExpr)); +# 9857 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'ifExprCases)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3148 "../pars.fsy" + let mIf = (rhs parseState 1) + _3 _2 mIf + ) +# 3148 "../pars.fsy" + : Ast.SynExpr)); +# 9870 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3152 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIncompleteIf()) + // Produce an approximate expression during error recovery. + // Include expressions to make sure they get type checked in case that generates useful results for intellisense. + // Generate a throwAway for the expression so it isn't forced to have a type 'bool' + // from the context it is used in. + exprFromParseError _2 + ) +# 3152 "../pars.fsy" + : Ast.SynExpr)); +# 9887 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3160 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsIncompleteIf()) + // Produce an approximate expression during error recovery. There can still be value in doing this even + // for this pathological case. + let m = (rhs parseState 1) + let mEnd = m.EndRange + let spIfToThen = SequencePointAtBinding mEnd + exprFromParseError (SynExpr.IfThenElse (arbExpr("ifGuard1",mEnd),arbExpr("thenBody1",mEnd),None,spIfToThen,true,m,m)) + ) +# 3160 "../pars.fsy" + : Ast.SynExpr)); +# 9904 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3169 "../pars.fsy" + SynExpr.Lazy (_2,unionRanges (rhs parseState 1) _2.Range) + ) +# 3169 "../pars.fsy" + : Ast.SynExpr)); +# 9915 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3172 "../pars.fsy" + SynExpr.Assert (_2, unionRanges (rhs parseState 1) _2.Range) + ) +# 3172 "../pars.fsy" + : Ast.SynExpr)); +# 9926 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3175 "../pars.fsy" + raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsAssertIsNotFirstClassValue()) + ) +# 3175 "../pars.fsy" + : Ast.SynExpr)); +# 9936 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3178 "../pars.fsy" + SynExpr.Lazy (_2,unionRanges (rhs parseState 1) _2.Range) + ) +# 3178 "../pars.fsy" + : Ast.SynExpr)); +# 9947 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3181 "../pars.fsy" + SynExpr.Assert (_2, unionRanges (rhs parseState 1) _2.Range) + ) +# 3181 "../pars.fsy" + : Ast.SynExpr)); +# 9958 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3184 "../pars.fsy" + raiseParseErrorAt (rhs parseState 1) (FSComp.SR.parsAssertIsNotFirstClassValue()) + ) +# 3184 "../pars.fsy" + : Ast.SynExpr)); +# 9968 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'doToken)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'doneDeclEnd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3187 "../pars.fsy" + let mWhileHeader = unionRanges (rhs parseState 1) _2.Range + let spWhile = SequencePointAtWhileLoop mWhileHeader + let mWhileAll = unionRanges (rhs parseState 1) _4.Range + SynExpr.While (spWhile,_2,_4,mWhileAll) + ) +# 3187 "../pars.fsy" + : Ast.SynExpr)); +# 9985 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'doToken)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3193 "../pars.fsy" + if not _5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWhile()) + let mWhileHeader = unionRanges (rhs parseState 1) _2.Range + let spWhile = SequencePointAtWhileLoop mWhileHeader + let mWhileAll = unionRanges (rhs parseState 1) _4.Range + exprFromParseError (SynExpr.While (spWhile,_2,_4,mWhileAll)) + ) +# 3193 "../pars.fsy" + : Ast.SynExpr)); +# 10003 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'doToken)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'doneDeclEnd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3200 "../pars.fsy" + // silent recovery + let mWhileHeader = unionRanges (rhs parseState 1) _2.Range + let spWhile = SequencePointAtWhileLoop mWhileHeader + let mWhileBodyArb = unionRanges (rhs parseState 4) (rhs parseState 5) + let mWhileAll = unionRanges (rhs parseState 1) (rhs parseState 5) + SynExpr.While (spWhile,_2,arbExpr("whileBody1",mWhileBodyArb),mWhileAll) + ) +# 3200 "../pars.fsy" + : Ast.SynExpr)); +# 10021 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3208 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsWhileDoExpected()) + let mWhileHeader = unionRanges (rhs parseState 1) _2.Range + let spWhile = SequencePointAtWhileLoop mWhileHeader + let mWhileBodyArb = rhs parseState 3 + let mWhileAll = unionRanges (rhs parseState 1) (rhs parseState 3) + exprFromParseError (SynExpr.While (spWhile,_2,arbExpr("whileBody2",mWhileBodyArb),mWhileAll)) + ) +# 3208 "../pars.fsy" + : Ast.SynExpr)); +# 10038 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3216 "../pars.fsy" + if not _2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWhile()) + arbExpr("whileLoop1",rhs parseState 1) + ) +# 3216 "../pars.fsy" + : Ast.SynExpr)); +# 10050 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'doneDeclEnd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3220 "../pars.fsy" + //silent recovery + let mWhileHeader = rhs parseState 1 + let spWhile = SequencePointAtWhileLoop mWhileHeader + let mWhileBodyArb = rhs parseState 3 + let mWhileAll = unionRanges (rhs parseState 1) (rhs parseState 3) + exprFromParseError (SynExpr.While (spWhile,arbExpr("whileGuard1",mWhileHeader),arbExpr("whileBody3",mWhileBodyArb),mWhileAll)) + ) +# 3220 "../pars.fsy" + : Ast.SynExpr)); +# 10066 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'forLoopBinder)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'doToken)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'doneDeclEnd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3228 "../pars.fsy" + let spBind = SequencePointAtForLoop(rhs2 parseState 1 3) + let (a,b,_) = _2 + SynExpr.ForEach (spBind,SeqExprOnly false,true,a,b,_4,unionRanges (rhs parseState 1) _4.Range) + ) +# 3228 "../pars.fsy" + : Ast.SynExpr)); +# 10082 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'forLoopBinder)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'doToken)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3233 "../pars.fsy" + if not _5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor()) + let spBind = SequencePointAtForLoop(rhs2 parseState 1 3) + let (a,b,_) = _2 + let mForLoopAll = unionRanges (rhs parseState 1) _4.Range + SynExpr.ForEach (spBind,SeqExprOnly false,true,a,b,_4,mForLoopAll) + ) +# 3233 "../pars.fsy" + : Ast.SynExpr)); +# 10100 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'forLoopBinder)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'doToken)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'doneDeclEnd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3240 "../pars.fsy" + // Silent recovery + let mForLoopHeader = rhs2 parseState 1 3 + let spBind = SequencePointAtForLoop mForLoopHeader + let (a,b,_) = _2 + let mForLoopBodyArb = rhs parseState 5 + let mForLoopAll = rhs2 parseState 1 5 + SynExpr.ForEach (spBind,SeqExprOnly false,true,a,b,arbExpr("forLoopBody2a",mForLoopBodyArb),mForLoopAll) + ) +# 3240 "../pars.fsy" + : Ast.SynExpr)); +# 10119 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'forLoopBinder)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'doToken)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3249 "../pars.fsy" + if not _4 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsExpectedExpressionAfterToken()) + let mForLoopHeader = rhs2 parseState 1 3 + let spBind = SequencePointAtForLoop mForLoopHeader + let (a,b,_) = _2 + let mForLoopBodyArb = rhs parseState 3 + let mForLoopAll = rhs2 parseState 1 3 + SynExpr.ForEach (spBind,SeqExprOnly false,true,a,b,arbExpr("forLoopBody2",mForLoopBodyArb),mForLoopAll) + ) +# 3249 "../pars.fsy" + : Ast.SynExpr)); +# 10138 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'forLoopBinder)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3258 "../pars.fsy" + let (a,b,ok) = _2 + if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsForDoExpected()) + let mForLoopHeader = rhs2 parseState 1 3 + let spBind = SequencePointAtForLoop mForLoopHeader + let mForLoopBodyArb = rhs parseState 3 + let mForLoopAll = rhs2 parseState 1 3 + SynExpr.ForEach (spBind,SeqExprOnly false,true,a,b,arbExpr("forLoopBody1",mForLoopBodyArb),mForLoopAll) + ) +# 3258 "../pars.fsy" + : Ast.SynExpr)); +# 10156 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'forLoopRange)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'doToken)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'doneDeclEnd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3267 "../pars.fsy" + let mForLoopHeader = rhs2 parseState 1 3 + let spBind = SequencePointAtForLoop mForLoopHeader + let (a,b,c,d) = _2 + let mForLoopAll = unionRanges (rhs parseState 1) _4.Range + SynExpr.For (spBind,a,b,c,d,_4,mForLoopAll) + ) +# 3267 "../pars.fsy" + : Ast.SynExpr)); +# 10174 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'forLoopRange)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'doToken)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3274 "../pars.fsy" + if not _5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor()) + // Still produce an expression + let mForLoopHeader = rhs2 parseState 1 3 + let spBind = SequencePointAtForLoop mForLoopHeader + let (a,b,c,d) = _2 + let mForLoopAll = unionRanges (rhs parseState 1) _4.Range + exprFromParseError (SynExpr.For (spBind,a,b,c,d,_4,mForLoopAll)) + ) +# 3274 "../pars.fsy" + : Ast.SynExpr)); +# 10194 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'forLoopRange)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'doToken)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'doneDeclEnd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3283 "../pars.fsy" + // silent recovery + let mForLoopHeader = rhs2 parseState 1 3 + let spBind = SequencePointAtForLoop mForLoopHeader + let (a,b,c,d) = _2 + let mForLoopBodyArb = rhs parseState 5 + let mForLoopAll = rhs2 parseState 1 5 + SynExpr.For (spBind,a,b,c,d,arbExpr("declExpr11",mForLoopBodyArb),mForLoopAll) + ) +# 3283 "../pars.fsy" + : Ast.SynExpr)); +# 10213 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'forLoopRange)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'doToken)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3292 "../pars.fsy" + if not _4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor()) + let mForLoopHeader = rhs2 parseState 1 3 + let spBind = SequencePointAtForLoop mForLoopHeader + let (a,b,c,d) = _2 + let mForLoopBodyArb = rhs parseState 3 + let mForLoopAll = rhs2 parseState 1 3 + exprFromParseError (SynExpr.For (spBind,a,b,c,d,arbExpr("declExpr11",mForLoopBodyArb),mForLoopAll)) + ) +# 3292 "../pars.fsy" + : Ast.SynExpr)); +# 10232 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'forLoopRange)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3301 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor()) + let mForLoopHeader = rhs2 parseState 1 2 + let spBind = SequencePointAtForLoop mForLoopHeader + let (a,b,c,d) = _2 + let mForLoopBodyArb = (rhs parseState 2).EndRange + let mForLoopAll = rhs2 parseState 1 2 + exprFromParseError (SynExpr.For (spBind,a,b,c,d,arbExpr("declExpr11",mForLoopBodyArb),mForLoopAll)) + ) +# 3301 "../pars.fsy" + : Ast.SynExpr)); +# 10250 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'doToken)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'doneDeclEnd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3311 "../pars.fsy" + // silent recovery + let mForLoopHeader = rhs2 parseState 1 2 + let mForLoopAll = unionRanges (rhs parseState 1) _4.Range + let spBind = SequencePointAtForLoop(mForLoopHeader) + SynExpr.For (spBind,mkSynId mForLoopHeader "_loopVar",arbExpr("startLoopRange1",mForLoopHeader),true,arbExpr("endLoopRange1",rhs parseState 3),_4,mForLoopAll) + ) +# 3311 "../pars.fsy" + : Ast.SynExpr)); +# 10267 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3330 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsIdentifierExpected()) + arbExpr("declExpr12",(rhs parseState 1)) + ) +# 3330 "../pars.fsy" + : Ast.SynExpr)); +# 10279 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'doneDeclEnd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3334 "../pars.fsy" + reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsInOrEqualExpected()) + let mForLoopHeader = rhs2 parseState 1 2 + let spBind = SequencePointAtForLoop mForLoopHeader + let mForLoopBodyArb = rhs parseState 4 + let mForLoopAll = rhs2 parseState 1 4 + SynExpr.ForEach (spBind,SeqExprOnly false,true,_2,arbExpr("forLoopCollection",mForLoopHeader),arbExpr("forLoopBody3",mForLoopBodyArb),mForLoopAll) + ) +# 3334 "../pars.fsy" + : Ast.SynExpr)); +# 10296 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3342 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFor()) + let mForLoopHeader = rhs2 parseState 1 2 + let spBind = SequencePointAtForLoop mForLoopHeader + let mForLoopBodyArb = (rhs parseState 2).EndRange + let mForLoopAll = rhs2 parseState 1 2 + exprFromParseError (SynExpr.ForEach (spBind,SeqExprOnly false,true,_2,arbExpr("forLoopCollection",mForLoopHeader),arbExpr("forLoopBody3",mForLoopBodyArb),mForLoopAll)) + ) +# 3342 "../pars.fsy" + : Ast.SynExpr)); +# 10313 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3351 "../pars.fsy" + SynExpr.YieldOrReturn ((_1,not _1),_2, unionRanges (rhs parseState 1) _2.Range) + ) +# 3351 "../pars.fsy" + : Ast.SynExpr)); +# 10325 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3354 "../pars.fsy" + SynExpr.YieldOrReturnFrom ((_1,not _1), _2, unionRanges (rhs parseState 1) _2.Range) + ) +# 3354 "../pars.fsy" + : Ast.SynExpr)); +# 10337 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + let _7 = (let data = parseState.GetInput(7) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3357 "../pars.fsy" + let spBind = SequencePointAtBinding(rhs2 parseState 1 5) + let m = unionRanges (rhs parseState 1) _7.Range + SynExpr.LetOrUseBang (spBind,(_1 = "use"),true,_2,_4,_7,m) + ) +# 3357 "../pars.fsy" + : Ast.SynExpr)); +# 10354 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'hardwhiteDefnBindingsTerminator)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + let _7 = (let data = parseState.GetInput(7) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3362 "../pars.fsy" + _5 (if _1 = "use" then "use!" else "let!") (rhs parseState 1) // report unterminated error + let spBind = SequencePointAtBinding(unionRanges (rhs parseState 1) _4.Range) + let m = unionRanges (rhs parseState 1) _7.Range + SynExpr.LetOrUseBang (spBind,(_1 = "use"),true,_2,_4,_7,m) + ) +# 3362 "../pars.fsy" + : Ast.SynExpr)); +# 10373 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynPat)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'hardwhiteDefnBindingsTerminator)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3368 "../pars.fsy" + // error recovery that allows intellisense when writing incomplete computation expressions + let spBind = SequencePointAtBinding(unionRanges (rhs parseState 1) _4.Range) + let mAll = unionRanges (rhs parseState 1) (rhs parseState 7) + let m = _4.Range.EndRange // zero-width range + SynExpr.LetOrUseBang (spBind,(_1 = "use"),true,_2,_4, SynExpr.ImplicitZero m, mAll) + ) +# 3368 "../pars.fsy" + : Ast.SynExpr)); +# 10392 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3375 "../pars.fsy" + let spBind = NoSequencePointAtDoBinding + SynExpr.LetOrUseBang (spBind,false,true,SynPat.Const(SynConst.Unit,_2.Range),_2,_5, unionRanges (rhs parseState 1) _5.Range) + ) +# 3375 "../pars.fsy" + : Ast.SynExpr)); +# 10406 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'hardwhiteDefnBindingsTerminator)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3379 "../pars.fsy" + SynExpr.DoBang (_2, unionRanges (rhs parseState 1) _2.Range) + ) +# 3379 "../pars.fsy" + : Ast.SynExpr)); +# 10418 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'forLoopBinder)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'arrowThenExprR)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3382 "../pars.fsy" + let spBind = SequencePointAtForLoop(rhs2 parseState 1 2) + let (a,b,_) = _2 in SynExpr.ForEach (spBind,SeqExprOnly true,true,a,b,_4,unionRanges (rhs parseState 1) _4.Range) + ) +# 3382 "../pars.fsy" + : Ast.SynExpr)); +# 10432 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3386 "../pars.fsy" + SynExpr.Fixed (_2, (unionRanges (rhs parseState 1) _2.Range)) + ) +# 3386 "../pars.fsy" + : Ast.SynExpr)); +# 10443 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExprBlockR)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3389 "../pars.fsy" + errorR(Error(FSComp.SR.parsArrowUseIsLimited(),lhs parseState)) + SynExpr.YieldOrReturn ((true,true),_2, (unionRanges (rhs parseState 1) _2.Range)) + ) +# 3389 "../pars.fsy" + : Ast.SynExpr)); +# 10455 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3394 "../pars.fsy" + SynExpr.TypeTest (_1,_3, unionRanges _1.Range _3.Range) + ) +# 3394 "../pars.fsy" + : Ast.SynExpr)); +# 10467 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3395 "../pars.fsy" + SynExpr.Upcast (_1,_3, unionRanges _1.Range _3.Range) + ) +# 3395 "../pars.fsy" + : Ast.SynExpr)); +# 10479 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3396 "../pars.fsy" + SynExpr.Downcast (_1,_3, unionRanges _1.Range _3.Range) + ) +# 3396 "../pars.fsy" + : Ast.SynExpr)); +# 10491 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3399 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 ":=" _3 + ) +# 3399 "../pars.fsy" + : Ast.SynExpr)); +# 10503 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3400 "../pars.fsy" + mkSynAssign _1 _3 + ) +# 3400 "../pars.fsy" + : Ast.SynExpr)); +# 10515 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3402 "../pars.fsy" + let exprs,commas = _1 in SynExpr.Tuple (false, List.rev exprs, List.rev commas, (commas.Head, exprs) ||> unionRangeWithListBy (fun e -> e.Range) ) + ) +# 3402 "../pars.fsy" + : Ast.SynExpr)); +# 10526 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3403 "../pars.fsy" + SynExpr.JoinIn (_1,rhs parseState 2,_3,unionRanges _1.Range _3.Range) + ) +# 3403 "../pars.fsy" + : Ast.SynExpr)); +# 10538 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3404 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 "||" _3 + ) +# 3404 "../pars.fsy" + : Ast.SynExpr)); +# 10550 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3405 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 _2 _3 + ) +# 3405 "../pars.fsy" + : Ast.SynExpr)); +# 10563 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3406 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 "or" _3 + ) +# 3406 "../pars.fsy" + : Ast.SynExpr)); +# 10575 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3407 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 "&" _3 + ) +# 3407 "../pars.fsy" + : Ast.SynExpr)); +# 10587 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3408 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 "&&" _3 + ) +# 3408 "../pars.fsy" + : Ast.SynExpr)); +# 10599 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3409 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 _2 _3 + ) +# 3409 "../pars.fsy" + : Ast.SynExpr)); +# 10612 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3410 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 "=" _3 + ) +# 3410 "../pars.fsy" + : Ast.SynExpr)); +# 10624 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3411 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 _2 _3 + ) +# 3411 "../pars.fsy" + : Ast.SynExpr)); +# 10637 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3412 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 "$" _3 + ) +# 3412 "../pars.fsy" + : Ast.SynExpr)); +# 10649 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3413 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 "<" _3 + ) +# 3413 "../pars.fsy" + : Ast.SynExpr)); +# 10662 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3414 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("<")) + exprFromParseError (mkSynInfix (rhs parseState 2) _1 "<" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3414 "../pars.fsy" + : Ast.SynExpr)); +# 10676 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3416 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 ">" _3 + ) +# 3416 "../pars.fsy" + : Ast.SynExpr)); +# 10689 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3417 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 _2 _3 + ) +# 3417 "../pars.fsy" + : Ast.SynExpr)); +# 10702 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3418 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 _2 _3 + ) +# 3418 "../pars.fsy" + : Ast.SynExpr)); +# 10715 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3419 "../pars.fsy" + SynExpr.App (ExprAtomicFlag.NonAtomic, true, mkSynIdGet (rhs parseState 2) opNameCons,SynExpr.Tuple (false,[_1;_3],[rhs parseState 2],unionRanges _1.Range _3.Range),unionRanges _1.Range _3.Range) + ) +# 3419 "../pars.fsy" + : Ast.SynExpr)); +# 10727 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3420 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 _2 _3 + ) +# 3420 "../pars.fsy" + : Ast.SynExpr)); +# 10740 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3421 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 "-" _3 + ) +# 3421 "../pars.fsy" + : Ast.SynExpr)); +# 10752 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3422 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 "*" _3 + ) +# 3422 "../pars.fsy" + : Ast.SynExpr)); +# 10764 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3423 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 _2 _3 + ) +# 3423 "../pars.fsy" + : Ast.SynExpr)); +# 10777 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3424 "../pars.fsy" + mkSynInfix (rhs parseState 2) _1 _2 _3 + ) +# 3424 "../pars.fsy" + : Ast.SynExpr)); +# 10790 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3426 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("in")) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 "@in" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3426 "../pars.fsy" + : Ast.SynExpr)); +# 10802 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3428 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("||")) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 "||" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3428 "../pars.fsy" + : Ast.SynExpr)); +# 10814 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3430 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3430 "../pars.fsy" + : Ast.SynExpr)); +# 10827 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3432 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("or")) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 "or" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3432 "../pars.fsy" + : Ast.SynExpr)); +# 10839 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3434 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("&")) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 "&" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3434 "../pars.fsy" + : Ast.SynExpr)); +# 10851 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3436 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("&&")) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 "&&" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3436 "../pars.fsy" + : Ast.SynExpr)); +# 10863 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3438 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3438 "../pars.fsy" + : Ast.SynExpr)); +# 10876 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3440 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("=")) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 "=" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3440 "../pars.fsy" + : Ast.SynExpr)); +# 10888 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3442 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3442 "../pars.fsy" + : Ast.SynExpr)); +# 10901 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3444 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("$")) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 "$" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3444 "../pars.fsy" + : Ast.SynExpr)); +# 10913 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3446 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("<")) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 "<" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3446 "../pars.fsy" + : Ast.SynExpr)); +# 10926 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3448 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(">")) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 ">" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3448 "../pars.fsy" + : Ast.SynExpr)); +# 10939 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3450 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3450 "../pars.fsy" + : Ast.SynExpr)); +# 10952 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3452 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3452 "../pars.fsy" + : Ast.SynExpr)); +# 10965 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3454 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("::")) + SynExpr.App (ExprAtomicFlag.NonAtomic, true, mkSynIdGet (rhs parseState 2) opNameCons,SynExpr.Tuple (false,[_1;(arbExpr("declExprInfix",(rhs parseState 3).StartRange))],[rhs parseState 2],unionRanges _1.Range (rhs parseState 3).StartRange),unionRanges _1.Range (rhs parseState 3).StartRange) + ) +# 3454 "../pars.fsy" + : Ast.SynExpr)); +# 10977 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3456 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3456 "../pars.fsy" + : Ast.SynExpr)); +# 10990 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3458 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("-")) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 "-" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3458 "../pars.fsy" + : Ast.SynExpr)); +# 11002 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3460 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression("*")) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 "*" (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3460 "../pars.fsy" + : Ast.SynExpr)); +# 11014 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3462 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3462 "../pars.fsy" + : Ast.SynExpr)); +# 11027 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3464 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnfinishedExpression(_2)) + exprFromParseError(mkSynInfix (rhs parseState 2) _1 _2 (arbExpr("declExprInfix",(rhs parseState 3).StartRange))) + ) +# 3464 "../pars.fsy" + : Ast.SynExpr)); +# 11040 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3467 "../pars.fsy" + _1 + ) +# 3467 "../pars.fsy" + : Ast.SynExpr)); +# 11051 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3471 "../pars.fsy" + let con = SynConst.String (_1,rhs parseState 1) + let arg2 = SynExpr.Const (con,con.Range (rhs parseState 1)) + arg2 + ) +# 3471 "../pars.fsy" + : 'dynamicArg)); +# 11064 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3475 "../pars.fsy" + _2 + ) +# 3475 "../pars.fsy" + : 'dynamicArg)); +# 11076 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'withPatternClauses)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3479 "../pars.fsy" + rhs parseState 1, _2 + ) +# 3479 "../pars.fsy" + : 'withClauses)); +# 11087 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'withPatternClauses)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3481 "../pars.fsy" + rhs parseState 1, _2 + ) +# 3481 "../pars.fsy" + : 'withClauses)); +# 11098 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'withPatternClauses)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3483 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileWith()) + rhs parseState 1, _2 + ) +# 3483 "../pars.fsy" + : 'withClauses)); +# 11111 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'patternClauses)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3488 "../pars.fsy" + _1 + ) +# 3488 "../pars.fsy" + : 'withPatternClauses)); +# 11122 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'patternClauses)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3490 "../pars.fsy" + _2 + ) +# 3490 "../pars.fsy" + : 'withPatternClauses)); +# 11133 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3492 "../pars.fsy" + // silent recovery + let mLast = rhs parseState 1 + [], mLast + ) +# 3492 "../pars.fsy" + : 'withPatternClauses)); +# 11145 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3496 "../pars.fsy" + // silent recovery + let mLast = rhs parseState 1 + [], mLast + ) +# 3496 "../pars.fsy" + : 'withPatternClauses)); +# 11157 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'patternGuard)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3503 "../pars.fsy" + _1, _2, rhs parseState 1 + ) +# 3503 "../pars.fsy" + : 'patternAndGuard)); +# 11169 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'patternAndGuard)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3507 "../pars.fsy" + let pat,guard,patm = _1 + let mLast = _2.Range + [Clause(pat,guard,_2,patm,SequencePointAtTarget)], mLast + ) +# 3507 "../pars.fsy" + : 'patternClauses)); +# 11183 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'patternAndGuard)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'patternClauses)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3511 "../pars.fsy" + let pat,guard,patm = _1 + let clauses,mLast = _4 + (Clause(pat,guard,_2,patm,SequencePointAtTarget) :: clauses), mLast + ) +# 3511 "../pars.fsy" + : 'patternClauses)); +# 11198 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'patternAndGuard)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3515 "../pars.fsy" + let pat,guard,patm = _1 + let mLast = rhs parseState 3 + // silent recovery + [Clause(pat,guard,_2,patm,SequencePointAtTarget)], mLast + ) +# 3515 "../pars.fsy" + : 'patternClauses)); +# 11213 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'patternAndGuard)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3520 "../pars.fsy" + let pat,guard,patm = _1 + let mLast = _2.Range + // silent recovery + [Clause(pat,guard,_2,patm,SequencePointAtTarget)], mLast + ) +# 3520 "../pars.fsy" + : 'patternClauses)); +# 11228 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'patternAndGuard)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3525 "../pars.fsy" + let pat,guard,patm = _1 + let mLast = rhs parseState 2 + // silent recovery + [Clause(pat,guard,SynExpr.Const (SynConst.Unit,mLast.EndRange),patm,SequencePointAtTarget)], mLast + ) +# 3525 "../pars.fsy" + : 'patternClauses)); +# 11242 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3532 "../pars.fsy" + Some _2 + ) +# 3532 "../pars.fsy" + : 'patternGuard)); +# 11253 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3534 "../pars.fsy" + None + ) +# 3534 "../pars.fsy" + : 'patternGuard)); +# 11263 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExprBlockR)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3538 "../pars.fsy" + _2 + ) +# 3538 "../pars.fsy" + : Ast.SynExpr)); +# 11274 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'ifExprThen)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'ifExprElifs)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3542 "../pars.fsy" + let exprThen,mThen = _1 + (fun exprGuard mIf -> + let mIfToThen = unionRanges mIf mThen + let lastBranch : SynExpr = match _2 with None -> exprThen | Some e -> e + let mIfToEndOfLastBranch = unionRanges mIf lastBranch.Range + let spIfToThen = SequencePointAtBinding(mIfToThen) + SynExpr.IfThenElse (exprGuard,exprThen,_2,spIfToThen,false,mIfToThen,mIfToEndOfLastBranch)) + ) +# 3542 "../pars.fsy" + : 'ifExprCases)); +# 11292 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3552 "../pars.fsy" + _2, rhs parseState 1 + ) +# 3552 "../pars.fsy" + : 'ifExprThen)); +# 11303 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3554 "../pars.fsy" + _3,rhs parseState 1 + ) +# 3554 "../pars.fsy" + : 'ifExprThen)); +# 11315 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3556 "../pars.fsy" + if not _4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileThen()) + exprFromParseError _3,rhs parseState 1 + ) +# 3556 "../pars.fsy" + : 'ifExprThen)); +# 11328 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3561 "../pars.fsy" + None + ) +# 3561 "../pars.fsy" + : 'ifExprElifs)); +# 11338 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3564 "../pars.fsy" + Some _2 + ) +# 3564 "../pars.fsy" + : 'ifExprElifs)); +# 11349 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3567 "../pars.fsy" + Some _3 + ) +# 3567 "../pars.fsy" + : 'ifExprElifs)); +# 11361 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3570 "../pars.fsy" + if not _4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileElse()) + Some (exprFromParseError _3) + ) +# 3570 "../pars.fsy" + : 'ifExprElifs)); +# 11374 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'ifExprCases)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3574 "../pars.fsy" + let mElif = rhs parseState 1 + Some (_3 _2 mElif) + ) +# 3574 "../pars.fsy" + : 'ifExprElifs)); +# 11387 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3578 "../pars.fsy" + Some (exprFromParseError _2) + ) +# 3578 "../pars.fsy" + : 'ifExprElifs)); +# 11399 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3582 "../pars.fsy" + let exprs,commas = _1 in (_3 :: exprs),((rhs parseState 2) :: commas) + ) +# 3582 "../pars.fsy" + : 'tupleExpr)); +# 11411 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3585 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedExpressionAfterToken()) + let exprs,commas = _1 + let zeroWidthAtNextToken = (rhs parseState 3).StartRange + ((arbExpr("tupleExpr1",zeroWidthAtNextToken)) :: exprs), (rhs parseState 2) :: commas + ) +# 3585 "../pars.fsy" + : 'tupleExpr)); +# 11426 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3591 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedExpressionAfterToken()) + let zeroWidthAtNextToken = (rhs parseState 3).StartRange + ((arbExpr("tupleExpr2",zeroWidthAtNextToken)) :: [_1]), [rhs parseState 2] + ) +# 3591 "../pars.fsy" + : 'tupleExpr)); +# 11440 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3596 "../pars.fsy" + [_3 ; _1], [rhs parseState 2] + ) +# 3596 "../pars.fsy" + : 'tupleExpr)); +# 11452 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3600 "../pars.fsy" + mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) _2.Range) "~-" _2 + ) +# 3600 "../pars.fsy" + : Ast.SynExpr)); +# 11463 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3603 "../pars.fsy" + if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt _2.Range (FSComp.SR.parsInvalidPrefixOperator()) + mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) _2.Range) ("~"^(_1)) _2 + ) +# 3603 "../pars.fsy" + : Ast.SynExpr)); +# 11476 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3607 "../pars.fsy" + if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt _2.Range (FSComp.SR.parsInvalidPrefixOperator()) + mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) _2.Range) ("~"^(_1)) _2 + ) +# 3607 "../pars.fsy" + : Ast.SynExpr)); +# 11489 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3611 "../pars.fsy" + if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt _2.Range (FSComp.SR.parsInvalidPrefixOperator()) + mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) _2.Range) ("~"^(_1)) _2 + ) +# 3611 "../pars.fsy" + : Ast.SynExpr)); +# 11502 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3615 "../pars.fsy" + SynExpr.AddressOf (true,_2,rhs parseState 1,unionRanges (rhs parseState 1) _2.Range) + ) +# 3615 "../pars.fsy" + : Ast.SynExpr)); +# 11513 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3618 "../pars.fsy" + SynExpr.AddressOf (false,_2,rhs parseState 1, unionRanges (rhs parseState 1) _2.Range) + ) +# 3618 "../pars.fsy" + : Ast.SynExpr)); +# 11524 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomTypeNonAtomicDeprecated)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_HIGH_PRECEDENCE_APP)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3621 "../pars.fsy" + SynExpr.New (false,_2,_4,unionRanges (rhs parseState 1) _4.Range) + ) +# 3621 "../pars.fsy" + : Ast.SynExpr)); +# 11537 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomTypeNonAtomicDeprecated)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_HIGH_PRECEDENCE_APP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3624 "../pars.fsy" + SynExpr.New (false,_2,arbExpr("minusExpr",(rhs parseState 4)),unionRanges (rhs parseState 1) (_2).Range) + ) +# 3624 "../pars.fsy" + : Ast.SynExpr)); +# 11549 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3627 "../pars.fsy" + arbExpr("minusExpr2",(rhs parseState 1)) + ) +# 3627 "../pars.fsy" + : Ast.SynExpr)); +# 11559 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3630 "../pars.fsy" + SynExpr.InferredUpcast (_2,unionRanges (rhs parseState 1) _2.Range) + ) +# 3630 "../pars.fsy" + : Ast.SynExpr)); +# 11570 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3633 "../pars.fsy" + SynExpr.InferredDowncast (_2,unionRanges (rhs parseState 1) _2.Range) + ) +# 3633 "../pars.fsy" + : Ast.SynExpr)); +# 11581 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3636 "../pars.fsy" + _1 + ) +# 3636 "../pars.fsy" + : Ast.SynExpr)); +# 11592 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3640 "../pars.fsy" + SynExpr.App (ExprAtomicFlag.NonAtomic, false, _1,_2,unionRanges _1.Range _2.Range) + ) +# 3640 "../pars.fsy" + : Ast.SynExpr)); +# 11604 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3643 "../pars.fsy" + let arg,_ = _1 + arg + ) +# 3643 "../pars.fsy" + : Ast.SynExpr)); +# 11616 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3648 "../pars.fsy" + let arg2,hpa2 = _2 + if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt arg2.Range (FSComp.SR.parsInvalidPrefixOperator()) + if hpa2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsSuccessiveArgsShouldBeSpacedOrTupled()) + mkSynPrefix (rhs parseState 1) (unionRanges (rhs parseState 1) arg2.Range) ("~"^(_1)) arg2 + ) +# 3648 "../pars.fsy" + : Ast.SynExpr)); +# 11631 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3654 "../pars.fsy" + let arg,hpa = _1 + if hpa then reportParseErrorAt arg.Range (FSComp.SR.parsSuccessiveArgsShouldBeSpacedOrTupled()) + arg + ) +# 3654 "../pars.fsy" + : Ast.SynExpr)); +# 11644 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr * bool)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3660 "../pars.fsy" + let arg1,_ = _1 + let arg2,_ = _3 + SynExpr.App (ExprAtomicFlag.Atomic, false, arg1,arg2,unionRanges arg1.Range arg2.Range),true + ) +# 3660 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11658 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr * bool)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3665 "../pars.fsy" + let arg1,_ = _1 + let arg2,_ = _3 + SynExpr.App (ExprAtomicFlag.Atomic, false, arg1,arg2,unionRanges arg1.Range arg2.Range),true + ) +# 3665 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11672 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr * bool)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : range * range option * bool * Ast.SynType list * range list * range)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3670 "../pars.fsy" + let arg1,_ = _1 + let mLessThan,mGreaterThan,_,args,commas,mTypeArgs = _3 + let mWholeExpr = unionRanges arg1.Range mTypeArgs + SynExpr.TypeApp (arg1, mLessThan, args, commas, mGreaterThan, mTypeArgs, mWholeExpr), false + ) +# 3670 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11687 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3676 "../pars.fsy" + let arg2,hpa2 = _2 + if not (IsValidPrefixOperatorUse _1) then reportParseErrorAt arg2.Range (FSComp.SR.parsInvalidPrefixOperator()) + mkSynPrefixPrim (rhs parseState 1) (unionRanges (rhs parseState 1) arg2.Range) _1 arg2,hpa2 + ) +# 3676 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11701 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr * bool)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicExprQualification)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3681 "../pars.fsy" + let arg1,hpa1 = _1 + _3 arg1 (lhs parseState) (rhs parseState 2),hpa1 + ) +# 3681 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11714 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicExprQualification)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3685 "../pars.fsy" + let arg1 = SynExpr.Ident (ident("base",rhs parseState 1)) + _3 arg1 (lhs parseState) (rhs parseState 2),false + ) +# 3685 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11726 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'nameop)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3689 "../pars.fsy" + SynExpr.LongIdent (true,LongIdentWithDots([_2],[]),None,rhs parseState 2),false + ) +# 3689 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11737 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr * bool)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'dynamicArg)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3692 "../pars.fsy" + let arg1,hpa1 = _1 + mkSynInfix (rhs parseState 2) arg1 "?" _3, hpa1 + ) +# 3692 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11750 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3696 "../pars.fsy" + SynExpr.Ident (ident(MangledGlobalName,rhs parseState 1)), false + ) +# 3696 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11760 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'nameop)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3699 "../pars.fsy" + SynExpr.Ident (_1),false + ) +# 3699 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11771 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'listExprElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3702 "../pars.fsy" + _2 (lhs parseState) false,false + ) +# 3702 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11782 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'listExprElements)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3705 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()) + exprFromParseError (_2 (rhs2 parseState 1 2) false), false + ) +# 3705 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11795 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3709 "../pars.fsy" + // silent recovery + SynExpr.ArrayOrList (false,[ ], lhs parseState),false + ) +# 3709 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11806 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3713 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()) + // silent recovery + exprFromParseError (SynExpr.ArrayOrList (false,[ ], rhs parseState 1)),false + ) +# 3713 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11819 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3718 "../pars.fsy" + let exprs,commas = _3 in SynExpr.Tuple (true, List.rev exprs, List.rev commas, (commas.Head, exprs) ||> unionRangeWithListBy (fun e -> e.Range) ), false + ) +# 3718 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11831 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3721 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedBracket()); + let exprs,commas = _3 in SynExpr.Tuple (true, List.rev exprs, List.rev commas, (commas.Head, exprs) ||> unionRangeWithListBy (fun e -> e.Range) ), false + ) +# 3721 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11844 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3725 "../pars.fsy" + _1,false + ) +# 3725 "../pars.fsy" + : Ast.SynExpr * bool)); +# 11855 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'identOrOp)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3729 "../pars.fsy" + let idm = rhs parseState 1 + (fun e lhsm dotm -> mkSynDot dotm lhsm e _1) + ) +# 3729 "../pars.fsy" + : 'atomicExprQualification)); +# 11867 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3733 "../pars.fsy" + (fun e lhsm dotm -> + reportParseErrorAt (rhs parseState 3) (FSComp.SR.nrGlobalUsedOnlyAsFirstName()) + let fixedLhsm = mkRange lhsm.FileName lhsm.Start dotm.End // previous lhsm is wrong after 'recover' + mkSynDotMissing dotm fixedLhsm e) + ) +# 3733 "../pars.fsy" + : 'atomicExprQualification)); +# 11880 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3739 "../pars.fsy" + (fun e lhsm dotm -> + reportParseErrorAt dotm (FSComp.SR.parsMissingQualificationAfterDot()) + let fixedLhsm = mkRange lhsm.FileName lhsm.Start dotm.End // previous lhsm is wrong after 'recover' + mkSynDotMissing dotm fixedLhsm e) + ) +# 3739 "../pars.fsy" + : 'atomicExprQualification)); +# 11893 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3744 "../pars.fsy" + (fun e lhsm dotm -> + reportParseErrorAt dotm (FSComp.SR.parsMissingQualificationAfterDot()) + let fixedLhsm = mkRange lhsm.FileName lhsm.Start dotm.End // previous lhsm is wrong after 'recover' + // Include 'e' in the returned expression but throw it away + SynExpr.DiscardAfterMissingQualificationAfterDot (e,fixedLhsm)) + ) +# 3744 "../pars.fsy" + : 'atomicExprQualification)); +# 11908 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : int32 * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3750 "../pars.fsy" + (fun e lhsm dotm -> + libraryOnlyError(lhs parseState) + SynExpr.LibraryOnlyUnionCaseFieldGet (e,mkSynCaseName lhsm opNameCons,(fst _5),lhsm)) + ) +# 3750 "../pars.fsy" + : 'atomicExprQualification)); +# 11922 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3755 "../pars.fsy" + (fun e lhsm dotm -> + mlCompatWarning (FSComp.SR.parsParenFormIsForML()) (lhs parseState) + mkSynDotParenGet lhsm dotm e _2) + ) +# 3755 "../pars.fsy" + : 'atomicExprQualification)); +# 11936 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3760 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()) + (fun e lhsm dotm -> exprFromParseError (mkSynDotBrackGet lhsm dotm e _2 false)) + ) +# 3760 "../pars.fsy" + : 'atomicExprQualification)); +# 11949 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'optRangeSeqExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3764 "../pars.fsy" + (fun e lhsm dotm -> mkSynDotBrackSeqSliceGet lhsm dotm e _2) + ) +# 3764 "../pars.fsy" + : 'atomicExprQualification)); +# 11960 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'optRangeSeqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3767 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()) + (fun e lhsm dotm -> exprFromParseError (mkSynDotBrackSeqSliceGet lhsm dotm e _2)) + ) +# 3767 "../pars.fsy" + : 'atomicExprQualification)); +# 11973 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3771 "../pars.fsy" + let mArg = rhs2 parseState 1 3 + (fun e lhsm dotm -> mkSynDotBrackGet lhsm dotm e (arbExpr("indexerExpr1",mArg)) false) + ) +# 3771 "../pars.fsy" + : 'atomicExprQualification)); +# 11984 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3775 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()) + let mArg = (rhs parseState 1).EndRange + (fun e lhsm dotm -> exprFromParseError (mkSynDotBrackGet lhsm dotm e (arbExpr("indexerExpr2",mArg)) false)) + ) +# 3775 "../pars.fsy" + : 'atomicExprQualification)); +# 11997 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'optRange)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'optRangeSeqExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3780 "../pars.fsy" + _1 :: _3 + ) +# 3780 "../pars.fsy" + : 'optRangeSeqExpr)); +# 12009 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'optRange)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3781 "../pars.fsy" + [_1] + ) +# 3781 "../pars.fsy" + : 'optRangeSeqExpr)); +# 12020 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'rangeDeclExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rangeDeclExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3785 "../pars.fsy" + SynIndexerArg.Two( + mkSynOptionalExpr (rhs parseState 1) (Some (fst _1)), + (snd _1), + mkSynOptionalExpr (rhs parseState 3) (Some (fst _3)), + (snd _3), + (rhs parseState 1), + (rhs parseState 3)) + ) +# 3785 "../pars.fsy" + : 'optRange)); +# 12038 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'rangeDeclExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3794 "../pars.fsy" + SynIndexerArg.Two( + mkSynOptionalExpr (rhs parseState 1) (Some (fst _1)), + (snd _1), + mkSynOptionalExpr (rhs parseState 2) None, + false, + (rhs parseState 1), + (rhs parseState 2)) + ) +# 3794 "../pars.fsy" + : 'optRange)); +# 12055 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'rangeDeclExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3803 "../pars.fsy" + SynIndexerArg.Two( + mkSynOptionalExpr (rhs parseState 1) None, + false, + mkSynOptionalExpr (rhs parseState 2) (Some (fst _2)), + (snd _2), + (rhs parseState 2), + (rhs parseState 1)) + ) +# 3803 "../pars.fsy" + : 'optRange)); +# 12072 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3812 "../pars.fsy" + SynIndexerArg.Two( + mkSynOptionalExpr (rhs parseState 1) None, + false, + (mkSynOptionalExpr (rhs parseState 1) None), + false, + (rhs parseState 1), + (rhs parseState 1)) + ) +# 3812 "../pars.fsy" + : 'optRange)); +# 12088 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'rangeDeclExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3821 "../pars.fsy" + SynIndexerArg.One((fst _1), (snd _1), (rhs parseState 1)) + ) +# 3821 "../pars.fsy" + : 'optRange)); +# 12099 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3825 "../pars.fsy" + _1, false + ) +# 3825 "../pars.fsy" + : 'rangeDeclExpr)); +# 12110 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3828 "../pars.fsy" + if not (parseState.LexBuffer.SupportsFeature LanguageFeature.FromEndSlicing) then + raiseParseErrorAt (rhs parseState 1) (FSComp.SR.fromEndSlicingRequiresVFive()) + if _1 <> "^" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInvalidPrefixOperator()) + _2, true + ) +# 3828 "../pars.fsy" + : 'rangeDeclExpr)); +# 12125 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'constant)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3836 "../pars.fsy" + SynExpr.Const (_1,_1.Range (lhs parseState)) + ) +# 3836 "../pars.fsy" + : Ast.SynExpr)); +# 12136 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3838 "../pars.fsy" + _1 + ) +# 3838 "../pars.fsy" + : Ast.SynExpr)); +# 12147 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'braceExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3840 "../pars.fsy" + _1 + ) +# 3840 "../pars.fsy" + : Ast.SynExpr)); +# 12158 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'braceBarExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3842 "../pars.fsy" + _1 + ) +# 3842 "../pars.fsy" + : Ast.SynExpr)); +# 12169 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3844 "../pars.fsy" + SynExpr.Null (lhs parseState) + ) +# 3844 "../pars.fsy" + : Ast.SynExpr)); +# 12179 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3846 "../pars.fsy" + SynExpr.Const (SynConst.Bool false,lhs parseState) + ) +# 3846 "../pars.fsy" + : Ast.SynExpr)); +# 12189 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3848 "../pars.fsy" + SynExpr.Const (SynConst.Bool true,lhs parseState) + ) +# 3848 "../pars.fsy" + : Ast.SynExpr)); +# 12199 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'quoteExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3850 "../pars.fsy" + _1 + ) +# 3850 "../pars.fsy" + : Ast.SynExpr)); +# 12210 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'arrayExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3852 "../pars.fsy" + _1 + ) +# 3852 "../pars.fsy" + : Ast.SynExpr)); +# 12221 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'beginEndExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3854 "../pars.fsy" + _1 + ) +# 3854 "../pars.fsy" + : Ast.SynExpr)); +# 12232 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3858 "../pars.fsy" + SynExpr.Paren (_2, rhs parseState 1, Some(rhs parseState 3), rhs2 parseState 1 3) + ) +# 3858 "../pars.fsy" + : 'beginEndExpr)); +# 12243 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3861 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBegin()); exprFromParseError _2 + ) +# 3861 "../pars.fsy" + : 'beginEndExpr)); +# 12255 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3864 "../pars.fsy" + (* silent recovery *) arbExpr("beginEndExpr",(lhs parseState)) + ) +# 3864 "../pars.fsy" + : 'beginEndExpr)); +# 12265 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3867 "../pars.fsy" + mkSynUnit (lhs parseState) + ) +# 3867 "../pars.fsy" + : 'beginEndExpr)); +# 12275 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string * bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : string * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3871 "../pars.fsy" + if _1 <> _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMismatchedQuote(fst _1)) + (SynExpr.Quote (mkSynIdGet (lhs parseState) (CompileOpName (fst _1)), snd _1, _2, false, lhs parseState)) + ) +# 3871 "../pars.fsy" + : 'quoteExpr)); +# 12289 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string * bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3875 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatched(fst _1)) + let mExpr = rhs2 parseState 1 2 + exprFromParseError (SynExpr.Quote (mkSynIdGet (lhs parseState) (CompileOpName (fst _1)),snd _1, _2, false, mExpr)) + ) +# 3875 "../pars.fsy" + : 'quoteExpr)); +# 12304 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string * bool)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : string * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3880 "../pars.fsy" + (* silent recovery *) SynExpr.Quote (mkSynIdGet (lhs parseState) (CompileOpName (fst _1)),snd _1, arbExpr("quoteExpr",(rhs parseState 2)), false, lhs parseState) + ) +# 3880 "../pars.fsy" + : 'quoteExpr)); +# 12316 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string * bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3883 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatched(fst _1)) + exprFromParseError (SynExpr.Quote (mkSynIdGet (lhs parseState) (CompileOpName (fst _1)),snd _1, arbExpr("quoteExpr2",(rhs parseState 1).EndRange), false, rhs parseState 1)) + ) +# 3883 "../pars.fsy" + : 'quoteExpr)); +# 12329 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'listExprElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3888 "../pars.fsy" + _2 (lhs parseState) true + ) +# 3888 "../pars.fsy" + : 'arrayExpr)); +# 12340 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'listExprElements)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3891 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracketBar()) + exprFromParseError (_2 (rhs2 parseState 1 2) true) + ) +# 3891 "../pars.fsy" + : 'arrayExpr)); +# 12353 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3895 "../pars.fsy" + (* silent recovery *) SynExpr.ArrayOrList (true,[ ], lhs parseState) + ) +# 3895 "../pars.fsy" + : 'arrayExpr)); +# 12363 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3898 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracketBar()) + (* silent recovery *) + exprFromParseError (SynExpr.ArrayOrList (true,[ ], rhs parseState 1)) + ) +# 3898 "../pars.fsy" + : 'arrayExpr)); +# 12376 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3904 "../pars.fsy" + SynExpr.Const (SynConst.Unit,(rhs2 parseState 1 2)) + ) +# 3904 "../pars.fsy" + : 'parenExpr)); +# 12387 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenExprBody)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3907 "../pars.fsy" + let m = rhs2 parseState 1 3 + SynExpr.Paren (_2 m, rhs parseState 1, Some(rhs parseState 3), m) + ) +# 3907 "../pars.fsy" + : 'parenExpr)); +# 12400 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenExprBody)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_other_than_rparen_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3911 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) + let lhsm = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).End + SynExpr.Paren (exprFromParseError (_2 lhsm), rhs parseState 1, None, lhsm) + ) +# 3911 "../pars.fsy" + : 'parenExpr)); +# 12414 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3916 "../pars.fsy" + // silent recovery + SynExpr.Paren (arbExpr("parenExpr1",(rhs parseState 1).EndRange),(rhs parseState 1),Some(rhs parseState 3),(rhs2 parseState 1 3)) + ) +# 3916 "../pars.fsy" + : 'parenExpr)); +# 12426 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3920 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) + let lhsm = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start + arbExpr("parenExpr2tcs", lhsm) + ) +# 3920 "../pars.fsy" + : 'parenExpr)); +# 12438 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3925 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) + let lhsm = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start + arbExpr("parenExpr2mcs", lhsm) + ) +# 3925 "../pars.fsy" + : 'parenExpr)); +# 12450 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3930 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) + let lhsm = unionRangeWithPos (rhs parseState 1) (rhs parseState 2).Start + arbExpr("parenExpr2rbcs", lhsm) + ) +# 3930 "../pars.fsy" + : 'parenExpr)); +# 12462 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3935 "../pars.fsy" + let lparenRange = (rhs parseState 1) + reportParseErrorAt lparenRange (FSComp.SR.parsUnmatchedParen()) + SynExpr.Paren(arbExpr("parenExpr2obecs", lparenRange.EndRange), lparenRange, None, lparenRange) + ) +# 3935 "../pars.fsy" + : 'parenExpr)); +# 12474 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3940 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) + arbExpr("parenExpr2",(lhs parseState)) + ) +# 3940 "../pars.fsy" + : 'parenExpr)); +# 12486 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'staticallyKnownHeadTypars)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'classMemberSpfn)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3952 "../pars.fsy" + (fun m -> SynExpr.TraitCall (_1,_4,_6,m)) + ) +# 3952 "../pars.fsy" + : 'parenExprBody)); +# 12500 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3954 "../pars.fsy" + (fun _m -> _1) + ) +# 3954 "../pars.fsy" + : 'parenExprBody)); +# 12511 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'inlineAssemblyExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3956 "../pars.fsy" + _1 + ) +# 3956 "../pars.fsy" + : 'parenExprBody)); +# 12522 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'staticallyKnownHeadTypar)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3960 "../pars.fsy" + [_1] + ) +# 3960 "../pars.fsy" + : 'staticallyKnownHeadTypars)); +# 12533 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'staticallyKnownHeadTyparAlts)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3963 "../pars.fsy" + List.rev _2 + ) +# 3963 "../pars.fsy" + : 'staticallyKnownHeadTypars)); +# 12545 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'staticallyKnownHeadTyparAlts)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'staticallyKnownHeadTypar)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3967 "../pars.fsy" + _3 :: _1 + ) +# 3967 "../pars.fsy" + : 'staticallyKnownHeadTyparAlts)); +# 12557 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'staticallyKnownHeadTypar)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3970 "../pars.fsy" + [_1] + ) +# 3970 "../pars.fsy" + : 'staticallyKnownHeadTyparAlts)); +# 12568 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'braceExprBody)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rbrace)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3974 "../pars.fsy" + let m,r = _2 in r (rhs2 parseState 1 3) + ) +# 3974 "../pars.fsy" + : 'braceExpr)); +# 12580 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'braceExprBody)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3977 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBrace()) + let m,r = _2 + // Note, we can't use 'exprFromParseError' because the extra syntax node interferes with some syntax-directed transformations for computation expressions + r (unionRanges (rhs parseState 1) m) + ) +# 3977 "../pars.fsy" + : 'braceExpr)); +# 12595 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rbrace)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3983 "../pars.fsy" + // silent recovery + arbExpr("braceExpr",rhs2 parseState 1 3) + ) +# 3983 "../pars.fsy" + : 'braceExpr)); +# 12607 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3987 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBrace()) + // Note, we can't use 'exprFromParseError' because the extra syntax node interferes with some syntax-directed transformations for computation expressions + SynExpr.Record (None,None,[],rhs parseState 1) + ) +# 3987 "../pars.fsy" + : 'braceExpr)); +# 12620 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'rbrace)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3992 "../pars.fsy" + let m = rhs2 parseState 1 2 + SynExpr.Record (None,None,[],m) + ) +# 3992 "../pars.fsy" + : 'braceExpr)); +# 12632 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 3997 "../pars.fsy" + (lhs parseState), (fun m -> let a,b,c = _1 in SynExpr.Record (a,b,c,m)) + ) +# 3997 "../pars.fsy" + : 'braceExprBody)); +# 12643 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'objExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4000 "../pars.fsy" + _1 + ) +# 4000 "../pars.fsy" + : 'braceExprBody)); +# 12654 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'monadicExprInitial)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4003 "../pars.fsy" + let m,r = _1 in (m, r false) + ) +# 4003 "../pars.fsy" + : 'braceExprBody)); +# 12665 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'monadicExprInitial)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4007 "../pars.fsy" + let m,r = _1 in (fun lhsm isArray -> SynExpr.ArrayOrListOfSeqExpr (isArray, r true m, lhsm)) + ) +# 4007 "../pars.fsy" + : 'listExprElements)); +# 12676 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4009 "../pars.fsy" + (fun lhsm isArray -> SynExpr.ArrayOrList (isArray,[ ], lhsm)) + ) +# 4009 "../pars.fsy" + : 'listExprElements)); +# 12686 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'seqExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4013 "../pars.fsy" + _1.Range, (fun isArrayOrList lhsm -> SynExpr.CompExpr (isArrayOrList,ref(isArrayOrList),_1,lhsm)) + ) +# 4013 "../pars.fsy" + : 'monadicExprInitial)); +# 12697 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'rangeSequenceExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4016 "../pars.fsy" + _1 + ) +# 4016 "../pars.fsy" + : 'monadicExprInitial)); +# 12708 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4020 "../pars.fsy" + let opm = (rhs parseState 2) + (unionRanges _1.Range _3.Range),(fun _isArray wholem -> + // in the case of "{ 1 .. 10 }", we want the range of the expression to include the curlies, that comes from a higher level rule in the grammar, + // passed down as 'wholem', so patch up that range here + match (mkSynInfix opm _1 ".." _3) with + | SynExpr.App (a,b,c,d,_) -> SynExpr.App (a,b,c,d,wholem) + | _ -> failwith "impossible") + ) +# 4020 "../pars.fsy" + : 'rangeSequenceExpr)); +# 12726 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4028 "../pars.fsy" + (unionRanges _1.Range _5.Range),(fun _isArray wholem -> mkSynTrifix wholem ".. .." _1 _3 _5) + ) +# 4028 "../pars.fsy" + : 'rangeSequenceExpr)); +# 12739 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4031 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 3) (FSComp.SR.parsUnexpectedEndOfFileExpression()) + let opm = (rhs parseState 2) + let e = arbExpr("rangeSeqError1", (rhs parseState 3).StartRange) + (unionRanges _1.Range e.Range),(fun _isArray wholem -> + // in the case of "{ 1 .. 10 }", we want the range of the expression to include the curlies, that comes from a higher level rule in the grammar, + // passed down as 'wholem', so patch up that range here + match (mkSynInfix opm _1 ".." e) with + | SynExpr.App (a,b,c,d,_) -> SynExpr.App (a,b,c,d,wholem) + | _ -> failwith "impossible") + ) +# 4031 "../pars.fsy" + : 'rangeSequenceExpr)); +# 12759 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExprBlockR)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4044 "../pars.fsy" + SynExpr.YieldOrReturn ((true,false), _2, unionRanges (rhs parseState 1) _2.Range) + ) +# 4044 "../pars.fsy" + : 'arrowThenExprR)); +# 12770 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4049 "../pars.fsy" + (_1, _3, true) + ) +# 4049 "../pars.fsy" + : 'forLoopBinder)); +# 12782 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rangeSequenceExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4052 "../pars.fsy" + let m,r = _3 in (_1, r false m, true) + ) +# 4052 "../pars.fsy" + : 'forLoopBinder)); +# 12794 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4055 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedExpressionAfterToken()) + (_1, arbExpr("forLoopBinder",(rhs parseState 2)), false) + ) +# 4055 "../pars.fsy" + : 'forLoopBinder)); +# 12807 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4059 "../pars.fsy" + if not _2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInOrEqualExpected()) + (_1, arbExpr("forLoopBinder2",(rhs parseState 1).EndRange), false) + ) +# 4059 "../pars.fsy" + : 'forLoopBinder)); +# 12820 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'forLoopDirection)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4064 "../pars.fsy" + idOfPat parseState (rhs parseState 1) _1,_3,_4,_5 + ) +# 4064 "../pars.fsy" + : 'forLoopRange)); +# 12834 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'parenPattern)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rangeSequenceExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4067 "../pars.fsy" + raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedSymbolEqualsInsteadOfIn()) + ) +# 4067 "../pars.fsy" + : 'forLoopRange)); +# 12846 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4070 "../pars.fsy" + true + ) +# 4070 "../pars.fsy" + : 'forLoopDirection)); +# 12856 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4071 "../pars.fsy" + false + ) +# 4071 "../pars.fsy" + : 'forLoopDirection)); +# 12866 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'stringOrKeywordString)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_inlineAssemblyTypeArg)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_curriedArgExprs)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_inlineAssemblyReturnTypes)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4075 "../pars.fsy" + libraryOnlyWarning (lhs parseState) + let s,sm = _2,rhs parseState 2 + (fun m -> SynExpr.LibraryOnlyILAssembly (internalParseAssemblyCodeInstructions s parseState.LexBuffer.SupportsFeature sm, _3, List.rev _4, _5, m)) + ) +# 4075 "../pars.fsy" + : 'inlineAssemblyExpr)); +# 12882 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_curriedArgExprs)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4081 "../pars.fsy" + _2 :: _1 + ) +# 4081 "../pars.fsy" + : 'opt_curriedArgExprs)); +# 12894 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4084 "../pars.fsy" + [] + ) +# 4084 "../pars.fsy" + : 'opt_curriedArgExprs)); +# 12904 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4088 "../pars.fsy" + None + ) +# 4088 "../pars.fsy" + : 'opt_atomicExprAfterType)); +# 12914 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4091 "../pars.fsy" + Some(_1) + ) +# 4091 "../pars.fsy" + : 'opt_atomicExprAfterType)); +# 12925 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4094 "../pars.fsy" + [] + ) +# 4094 "../pars.fsy" + : 'opt_inlineAssemblyTypeArg)); +# 12935 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeKeyword)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4095 "../pars.fsy" + [_3] + ) +# 4095 "../pars.fsy" + : 'opt_inlineAssemblyTypeArg)); +# 12948 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4099 "../pars.fsy" + [] + ) +# 4099 "../pars.fsy" + : 'opt_inlineAssemblyReturnTypes)); +# 12958 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4102 "../pars.fsy" + [_2] + ) +# 4102 "../pars.fsy" + : 'opt_inlineAssemblyReturnTypes)); +# 12969 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4105 "../pars.fsy" + [] + ) +# 4105 "../pars.fsy" + : 'opt_inlineAssemblyReturnTypes)); +# 12980 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomTypeNonAtomicDeprecated)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_HIGH_PRECEDENCE_APP)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_atomicExprAfterType)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdExprBindings)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps_recd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4109 "../pars.fsy" + let arg = match _4 with None -> mkSynUnit (lhs parseState) | Some e -> e + let l = List.rev _5 + let dummyField = mkRecdField (LongIdentWithDots([], [])) // dummy identifier, it will be discarded + let l = rebindRanges (dummyField, None) l _6 + let (_, _, inheritsSep) = List.head l + let bindings = List.tail l + (Some (_2,arg,rhs2 parseState 2 4, inheritsSep, rhs parseState 1), None, bindings) + ) +# 4109 "../pars.fsy" + : 'recdExpr)); +# 13001 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdExprCore)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4117 "../pars.fsy" + let a,b = _1 in (None, a, b) + ) +# 4117 "../pars.fsy" + : 'recdExpr)); +# 13012 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdExprBindings)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps_recd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4121 "../pars.fsy" + match _1 with + | LongOrSingleIdent(false, (LongIdentWithDots(_,_) as f),None,m) -> + let f = mkRecdField f + let l = List.rev _4 + let l = rebindRanges (f, Some _3) l _5 + (None, l) + | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsFieldBinding()) + ) +# 4121 "../pars.fsy" + : 'recdExprCore)); +# 13032 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4134 "../pars.fsy" + let m = rhs parseState 1 + reportParseErrorAt m (FSComp.SR.parsUnderscoreInvalidFieldName()) + reportParseErrorAt m (FSComp.SR.parsFieldBinding()) + let f = mkUnderscoreRecdField m + (None, [ (f, None, None) ]) + ) +# 4134 "../pars.fsy" + : 'recdExprCore)); +# 13046 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4141 "../pars.fsy" + let m = rhs parseState 1 + reportParseErrorAt m (FSComp.SR.parsUnderscoreInvalidFieldName()) + let f = mkUnderscoreRecdField m + reportParseErrorAt (rhs2 parseState 1 2) (FSComp.SR.parsFieldBinding()) + + (None, [ (f, None, None) ]) + ) +# 4141 "../pars.fsy" + : 'recdExprCore)); +# 13061 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdExprBindings)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps_recd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4150 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnderscoreInvalidFieldName()) + let f = mkUnderscoreRecdField (rhs parseState 1) + let l = List.rev _4 + let l = rebindRanges (f, Some _3) l _5 + (None, l) + ) +# 4150 "../pars.fsy" + : 'recdExprCore)); +# 13078 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdBinding)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdExprBindings)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps_recd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4158 "../pars.fsy" + let l = List.rev _4 + let l = rebindRanges _3 l _5 + (Some (_1, (rhs parseState 2, None)), l) + ) +# 4158 "../pars.fsy" + : 'recdExprCore)); +# 13094 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps_recd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4163 "../pars.fsy" + (Some (_1, (rhs parseState 2, None)), []) + ) +# 4163 "../pars.fsy" + : 'recdExprCore)); +# 13106 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdBinding)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdExprBindings)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_seps_recd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4166 "../pars.fsy" + let l = List.rev _4 + let l = rebindRanges _3 l _5 + (Some (_1, (rhs parseState 2, None)), l) + ) +# 4166 "../pars.fsy" + : 'recdExprCore)); +# 13122 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'seps_recd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4171 "../pars.fsy" + Some _1 + ) +# 4171 "../pars.fsy" + : 'opt_seps_recd)); +# 13133 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4172 "../pars.fsy" + None + ) +# 4172 "../pars.fsy" + : 'opt_seps_recd)); +# 13143 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4175 "../pars.fsy" + (rhs parseState 1), None + ) +# 4175 "../pars.fsy" + : 'seps_recd)); +# 13153 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4176 "../pars.fsy" + let m = (rhs parseState 1) in (m, Some m.End) + ) +# 4176 "../pars.fsy" + : 'seps_recd)); +# 13163 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4177 "../pars.fsy" + (rhs2 parseState 1 2), Some (rhs parseState 1).End + ) +# 4177 "../pars.fsy" + : 'seps_recd)); +# 13173 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4178 "../pars.fsy" + (rhs2 parseState 1 2), Some (rhs parseState 2).End + ) +# 4178 "../pars.fsy" + : 'seps_recd)); +# 13183 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4185 "../pars.fsy" + mkRecdField _1 + ) +# 4185 "../pars.fsy" + : 'pathOrUnderscore)); +# 13194 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4187 "../pars.fsy" + let m = rhs parseState 1 + reportParseErrorAt m (FSComp.SR.parsUnderscoreInvalidFieldName()) + mkUnderscoreRecdField m + ) +# 4187 "../pars.fsy" + : 'pathOrUnderscore)); +# 13206 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdExprBindings)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'seps_recd)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdBinding)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4193 "../pars.fsy" + (_3, Some _2) :: _1 + ) +# 4193 "../pars.fsy" + : 'recdExprBindings)); +# 13219 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4194 "../pars.fsy" + [] + ) +# 4194 "../pars.fsy" + : 'recdExprBindings)); +# 13229 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'pathOrUnderscore)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4198 "../pars.fsy" + (_1, Some _3) + ) +# 4198 "../pars.fsy" + : 'recdBinding)); +# 13241 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'pathOrUnderscore)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4201 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding()) + (_1, None) + ) +# 4201 "../pars.fsy" + : 'recdBinding)); +# 13253 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'pathOrUnderscore)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4205 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding()) + (_1, None) + ) +# 4205 "../pars.fsy" + : 'recdBinding)); +# 13266 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'pathOrUnderscore)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4209 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding()) + (_1, None) + ) +# 4209 "../pars.fsy" + : 'recdBinding)); +# 13278 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'pathOrUnderscore)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4213 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsFieldBinding()) + (_1, None) + ) +# 4213 "../pars.fsy" + : 'recdBinding)); +# 13291 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'objExprBaseCall)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'objExprBindings)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_objExprInterfaces)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4224 "../pars.fsy" + let mNewExpr = rhs parseState 1 + let fullRange = match _4 with [] -> (rhs parseState 1) | _ -> (rhs2 parseState 1 4) + fullRange, (fun m -> let (a,b) = _1 in SynExpr.ObjExpr (a,b,_2,_4, mNewExpr, m)) + ) +# 4224 "../pars.fsy" + : 'objExpr)); +# 13307 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'objExprBaseCall)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'objExprInterfaces)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4229 "../pars.fsy" + let mNewExpr = rhs parseState 1 + let fullRange = match _3 with [] -> (rhs parseState 1) | _ -> (rhs2 parseState 1 3) + fullRange, (fun m -> let (a,b) = _1 in SynExpr.ObjExpr (a,b,[],_3, mNewExpr, m)) + ) +# 4229 "../pars.fsy" + : 'objExpr)); +# 13322 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomTypeNonAtomicDeprecated)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4234 "../pars.fsy" + let mNewExpr = rhs parseState 1 + (rhs2 parseState 1 2), (fun m -> let (a,b) = _2,None in SynExpr.ObjExpr (a,b,[],[], mNewExpr, m)) + ) +# 4234 "../pars.fsy" + : 'objExpr)); +# 13334 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomTypeNonAtomicDeprecated)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_HIGH_PRECEDENCE_APP)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'baseSpec)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4240 "../pars.fsy" + (_2, Some(_4,Some(_5))) + ) +# 4240 "../pars.fsy" + : 'objExprBaseCall)); +# 13348 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomTypeNonAtomicDeprecated)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_HIGH_PRECEDENCE_APP)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4243 "../pars.fsy" + (_2, Some(_4,None)) + ) +# 4243 "../pars.fsy" + : 'objExprBaseCall)); +# 13361 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomTypeNonAtomicDeprecated)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4246 "../pars.fsy" + _2,None + ) +# 4246 "../pars.fsy" + : 'objExprBaseCall)); +# 13372 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'objExprBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4251 "../pars.fsy" + _1 + ) +# 4251 "../pars.fsy" + : 'opt_objExprBindings)); +# 13383 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4252 "../pars.fsy" + [] + ) +# 4252 "../pars.fsy" + : 'opt_objExprBindings)); +# 13393 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'localBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4256 "../pars.fsy" + let mWithKwd = (rhs parseState 1) + let _localBindingsLastRange, localBindingsBuilder = _2 + localBindingsBuilder [] None mWithKwd + ) +# 4256 "../pars.fsy" + : 'objExprBindings)); +# 13406 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'localBindings)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4261 "../pars.fsy" + let mWithKwd = (rhs parseState 1) + let _localBindingsLastRange, localBindingsBuilder = _2 + localBindingsBuilder [] None mWithKwd + ) +# 4261 "../pars.fsy" + : 'objExprBindings)); +# 13419 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'objectImplementationBlock)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declEnd)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4266 "../pars.fsy" + _2 |> + (List.choose (function + | SynMemberDefn.Member(b,m) -> Some b + | SynMemberDefn.AutoProperty(_,_,_,_,_,_,_,_,_,_,m) -> errorR(Error(FSComp.SR.parsIllegalMemberVarInObjectImplementation(),m)); None + | x -> errorR(Error(FSComp.SR.parsMemberIllegalInObjectImplementation(),x.Range)); None)) + ) +# 4266 "../pars.fsy" + : 'objExprBindings)); +# 13435 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'objExprInterface)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_objExprInterfaces)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4273 "../pars.fsy" + _1 :: _2 + ) +# 4273 "../pars.fsy" + : 'objExprInterfaces)); +# 13447 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4277 "../pars.fsy" + [] + ) +# 4277 "../pars.fsy" + : 'opt_objExprInterfaces)); +# 13457 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'objExprInterface)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_objExprInterfaces)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4280 "../pars.fsy" + _1 :: _2 + ) +# 4280 "../pars.fsy" + : 'opt_objExprInterfaces)); +# 13469 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_objExprInterfaces)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4283 "../pars.fsy" + (* silent recovery *) _2 + ) +# 4283 "../pars.fsy" + : 'opt_objExprInterfaces)); +# 13480 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'interfaceMember)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_objExprBindings)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_declEnd)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_OBLOCKSEP)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4287 "../pars.fsy" + InterfaceImpl(_2, _3, lhs parseState) + ) +# 4287 "../pars.fsy" + : 'objExprInterface)); +# 13495 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'braceBarExprCore)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4291 "../pars.fsy" + _2 true + ) +# 4291 "../pars.fsy" + : 'braceBarExpr)); +# 13506 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'braceBarExprCore)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4293 "../pars.fsy" + _1 false + ) +# 4293 "../pars.fsy" + : 'braceBarExpr)); +# 13517 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdExprCore)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'bar_rbrace)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4297 "../pars.fsy" + let orig, flds = _2 + let flds = + flds |> List.choose (function + | ((LongIdentWithDots([id],_),_),Some e,_) -> Some (id,e) + | ((LongIdentWithDots([id],_),_),None,_) -> Some (id, arbExpr("anonField",id.idRange)) + | _ -> reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInvalidAnonRecdType()); None) + let m = rhs2 parseState 1 3 + (fun isStruct -> SynExpr.AnonRecd (isStruct,orig,flds,m)) + ) +# 4297 "../pars.fsy" + : 'braceBarExprCore)); +# 13536 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recdExprCore)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4307 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBraceBar()) + let orig, flds = _2 + let flds = + flds |> List.choose (function + | ((LongIdentWithDots([id],_),_),Some e,_) -> Some (id,e) + | ((LongIdentWithDots([id],_),_),None,_) -> Some (id, arbExpr("anonField",id.idRange)) + | _ -> reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInvalidAnonRecdType()); None) + let m = rhs2 parseState 1 2 + (fun isStruct -> SynExpr.AnonRecd (isStruct,orig,flds,m)) + ) +# 4307 "../pars.fsy" + : 'braceBarExprCore)); +# 13556 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'bar_rbrace)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4318 "../pars.fsy" + // silent recovery + let m = rhs2 parseState 1 3 + (fun _ -> arbExpr("braceBarExpr",m)) + ) +# 4318 "../pars.fsy" + : 'braceBarExprCore)); +# 13569 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4323 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBraceBar()) + let m = rhs2 parseState 1 1 + (fun isStruct -> SynExpr.AnonRecd (isStruct,None,[],m)) + ) +# 4323 "../pars.fsy" + : 'braceBarExprCore)); +# 13582 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'bar_rbrace)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4328 "../pars.fsy" + let m = rhs2 parseState 1 2 + (fun isStruct -> SynExpr.AnonRecd (isStruct,None,[],m)) + ) +# 4328 "../pars.fsy" + : 'braceBarExprCore)); +# 13594 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatterns)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4333 "../pars.fsy" + let mAll = unionRanges (rhs parseState 1) _4.Range + mkSynFunMatchLambdas parseState.SynArgNameGenerator false mAll _2 _4 + ) +# 4333 "../pars.fsy" + : 'anonLambdaExpr)); +# 13607 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatterns)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4337 "../pars.fsy" + let mAll = rhs2 parseState 1 3 + mkSynFunMatchLambdas parseState.SynArgNameGenerator false mAll _2 (arbExpr("anonLambdaExpr1",(rhs parseState 4))) + ) +# 4337 "../pars.fsy" + : 'anonLambdaExpr)); +# 13619 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatterns)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExprBlockR)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4341 "../pars.fsy" + let mAll = unionRanges (rhs parseState 1) _4.Range + mkSynFunMatchLambdas parseState.SynArgNameGenerator false mAll _2 _4 + ) +# 4341 "../pars.fsy" + : 'anonLambdaExpr)); +# 13632 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatterns)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'typedSeqExprBlockR)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4345 "../pars.fsy" + if not _5 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFunBody()); + let mAll = unionRanges (rhs parseState 1) _4.Range + exprFromParseError (mkSynFunMatchLambdas parseState.SynArgNameGenerator false mAll _2 _4) + ) +# 4345 "../pars.fsy" + : 'anonLambdaExpr)); +# 13647 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatterns)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4350 "../pars.fsy" + reportParseErrorAt (rhs2 parseState 1 3) (FSComp.SR.parsMissingFunctionBody()) + mkSynFunMatchLambdas parseState.SynArgNameGenerator false (rhs2 parseState 1 3) _2 (arbExpr("anonLambdaExpr2",(rhs parseState 4))) + ) +# 4350 "../pars.fsy" + : 'anonLambdaExpr)); +# 13659 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatterns)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4354 "../pars.fsy" + if not _4 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileFunBody()) + exprFromParseError (mkSynFunMatchLambdas parseState.SynArgNameGenerator false (rhs2 parseState 1 3) _2 (arbExpr("anonLambdaExpr3",(rhs parseState 4)))) + ) +# 4354 "../pars.fsy" + : 'anonLambdaExpr)); +# 13672 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicPatterns)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4358 "../pars.fsy" + exprFromParseError (mkSynFunMatchLambdas parseState.SynArgNameGenerator false (rhs2 parseState 1 2) _2 (arbExpr("anonLambdaExpr4",(rhs parseState 3)))) + ) +# 4358 "../pars.fsy" + : 'anonLambdaExpr)); +# 13683 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4361 "../pars.fsy" + exprFromParseError (mkSynFunMatchLambdas parseState.SynArgNameGenerator false (rhs parseState 1) [] (arbExpr("anonLambdaExpr5",(rhs parseState 2)))) + ) +# 4361 "../pars.fsy" + : 'anonLambdaExpr)); +# 13693 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'withPatternClauses)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4365 "../pars.fsy" + let clauses,mLast = _2 + let mAll = unionRanges (rhs parseState 1) mLast + SynExpr.MatchLambda (false,(rhs parseState 1),clauses,NoSequencePointAtInvisibleBinding,mAll) + ) +# 4365 "../pars.fsy" + : 'anonMatchingExpr)); +# 13706 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'withPatternClauses)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4370 "../pars.fsy" + let clauses,mLast = _2 + let mAll = unionRanges (rhs parseState 1) mLast + SynExpr.MatchLambda (false,(rhs parseState 1),clauses,NoSequencePointAtInvisibleBinding,mAll) + ) +# 4370 "../pars.fsy" + : 'anonMatchingExpr)); +# 13719 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4379 "../pars.fsy" + _1 + ) +# 4379 "../pars.fsy" + : 'typeWithTypeConstraints)); +# 13730 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeConstraints)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4382 "../pars.fsy" + SynType.WithGlobalConstraints(_1, List.rev _3,lhs parseState) + ) +# 4382 "../pars.fsy" + : 'typeWithTypeConstraints)); +# 13742 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'topType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4386 "../pars.fsy" + _1 + ) +# 4386 "../pars.fsy" + : 'topTypeWithTypeConstraints)); +# 13753 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'topType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeConstraints)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4389 "../pars.fsy" + let ty,arity = _1 + // nb. it doesn't matter where the constraints go in the structure of the type. + SynType.WithGlobalConstraints(ty,List.rev _3,lhs parseState), arity + ) +# 4389 "../pars.fsy" + : 'topTypeWithTypeConstraints)); +# 13767 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4395 "../pars.fsy" + None + ) +# 4395 "../pars.fsy" + : 'opt_topReturnTypeWithTypeConstraints)); +# 13777 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'topTypeWithTypeConstraints)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4398 "../pars.fsy" + let ty,arity = _2 + let arity = (match arity with SynValInfo([],rmdata)-> rmdata | _ -> SynInfo.unnamedRetVal) + Some (SynReturnInfo((ty,arity),rhs parseState 2)) + ) +# 4398 "../pars.fsy" + : 'opt_topReturnTypeWithTypeConstraints)); +# 13790 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'topTupleType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'topType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4404 "../pars.fsy" + let dty,dmdata= _1 + let rty,(SynValInfo(dmdatas,rmdata)) = _3 + SynType.Fun(dty,rty,lhs parseState), (SynValInfo(dmdata :: dmdatas, rmdata)) + ) +# 4404 "../pars.fsy" + : 'topType)); +# 13804 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'topTupleType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4409 "../pars.fsy" + let ty,rmdata = _1 in ty, (SynValInfo([],(match rmdata with [md] -> md | _ -> SynInfo.unnamedRetVal))) + ) +# 4409 "../pars.fsy" + : 'topType)); +# 13815 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'topAppType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'topTupleTypeElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4413 "../pars.fsy" + let ty,mdata = _1 in let tys,mdatas = List.unzip _3 in (SynType.Tuple(false,List.map (fun ty -> (false,ty)) (ty :: tys), lhs parseState)),(mdata :: mdatas) + ) +# 4413 "../pars.fsy" + : 'topTupleType)); +# 13827 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'topAppType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4416 "../pars.fsy" + let ty,mdata = _1 in ty,[mdata] + ) +# 4416 "../pars.fsy" + : 'topTupleType)); +# 13838 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'topAppType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'topTupleTypeElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4420 "../pars.fsy" + _1 :: _3 + ) +# 4420 "../pars.fsy" + : 'topTupleTypeElements)); +# 13850 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'topAppType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4423 "../pars.fsy" + [_1] + ) +# 4423 "../pars.fsy" + : 'topTupleTypeElements)); +# 13861 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4427 "../pars.fsy" + match _2 with + | SynType.LongIdent(LongIdentWithDots([id],_)) -> _4,SynArgInfo(_1,false,Some id) + | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsSyntaxErrorInLabeledType()) + ) +# 4427 "../pars.fsy" + : 'topAppType)); +# 13876 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributes)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4432 "../pars.fsy" + _5,SynArgInfo(_1,true,Some _3) + ) +# 4432 "../pars.fsy" + : 'topAppType)); +# 13889 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'attributes)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4435 "../pars.fsy" + (_2,SynArgInfo(_1,false,None)) + ) +# 4435 "../pars.fsy" + : 'topAppType)); +# 13901 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4438 "../pars.fsy" + match _1 with + | SynType.LongIdent(LongIdentWithDots([id],_)) -> _3,SynArgInfo([],false,Some id) + | _ -> raiseParseErrorAt (rhs parseState 2) (FSComp.SR.parsSyntaxErrorInLabeledType()) + ) +# 4438 "../pars.fsy" + : 'topAppType)); +# 13915 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4443 "../pars.fsy" + _4,SynArgInfo([],true,Some _2) + ) +# 4443 "../pars.fsy" + : 'topAppType)); +# 13927 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4446 "../pars.fsy" + _1,SynArgInfo([],false,None) + ) +# 4446 "../pars.fsy" + : 'topAppType)); +# 13938 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4452 "../pars.fsy" + SynType.Fun(_1,_3,lhs parseState) + ) +# 4452 "../pars.fsy" + : Ast.SynType)); +# 13950 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4455 "../pars.fsy" + _1 + ) +# 4455 "../pars.fsy" + : Ast.SynType)); +# 13961 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LexerWhitespaceContinuation)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4458 "../pars.fsy" + checkEndOfFileError _2; _1 + ) +# 4458 "../pars.fsy" + : Ast.SynType)); +# 13973 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleOrQuotTypeElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4463 "../pars.fsy" + SynType.Tuple(false,(false,_1) :: _3,lhs parseState) + ) +# 4463 "../pars.fsy" + : 'tupleType)); +# 13985 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleOrQuotTypeElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4466 "../pars.fsy" + if _1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator()); + SynType.Tuple(false,(true, SynType.StaticConstant (SynConst.Int32 1, lhs parseState)) :: _2, lhs parseState) + ) +# 4466 "../pars.fsy" + : 'tupleType)); +# 13998 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleOrQuotTypeElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4470 "../pars.fsy" + if _2 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator()); + SynType.Tuple(false,(true,_1) :: _3, lhs parseState) + ) +# 4470 "../pars.fsy" + : 'tupleType)); +# 14012 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4474 "../pars.fsy" + _1 + ) +# 4474 "../pars.fsy" + : 'tupleType)); +# 14023 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleOrQuotTypeElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4478 "../pars.fsy" + (false,_1) :: _3 + ) +# 4478 "../pars.fsy" + : 'tupleOrQuotTypeElements)); +# 14035 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleOrQuotTypeElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4481 "../pars.fsy" + if _2 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedInfixOperator()); + (true,_1) :: _3 + ) +# 4481 "../pars.fsy" + : 'tupleOrQuotTypeElements)); +# 14049 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4485 "../pars.fsy" + [(false,_1)] + ) +# 4485 "../pars.fsy" + : 'tupleOrQuotTypeElements)); +# 14060 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4489 "../pars.fsy" + SynType.LongIdent(_1) + ) +# 4489 "../pars.fsy" + : 'appTypeCon)); +# 14071 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4492 "../pars.fsy" + SynType.Var(_1, lhs parseState) + ) +# 4492 "../pars.fsy" + : 'appTypeCon)); +# 14082 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appTypeCon)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicRationalConstant)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4496 "../pars.fsy" + if _2 <> "^" && _2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator()); + if _2 = "^-" then SynType.MeasurePower(_1, SynRationalConst.Negate(_3), lhs parseState) + else SynType.MeasurePower(_1, _3, lhs parseState) + ) +# 4496 "../pars.fsy" + : 'appTypeConPower)); +# 14097 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appTypeCon)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4501 "../pars.fsy" + _1 + ) +# 4501 "../pars.fsy" + : 'appTypeConPower)); +# 14108 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'arrayTypeSuffix)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4505 "../pars.fsy" + SynType.Array(_2,_1,lhs parseState) + ) +# 4505 "../pars.fsy" + : 'appType)); +# 14120 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'arrayTypeSuffix)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4508 "../pars.fsy" + SynType.Array(_3,_1,lhs parseState) + ) +# 4508 "../pars.fsy" + : 'appType)); +# 14132 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'appTypeConPower)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4511 "../pars.fsy" + SynType.App(_2, None, [_1], [], None, true, unionRanges (rhs parseState 1) _2.Range) + ) +# 4511 "../pars.fsy" + : 'appType)); +# 14144 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'appTypePrefixArguments)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'appTypeConPower)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4514 "../pars.fsy" + let args, commas = _2 + mlCompatWarning (FSComp.SR.parsMultiArgumentGenericTypeFormDeprecated()) (unionRanges (rhs parseState 1) _4.Range); + SynType.App(_4, None, args, commas, None, true, unionRanges (rhs parseState 1) _4.Range) + ) +# 4514 "../pars.fsy" + : 'appType)); +# 14159 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'powerType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4519 "../pars.fsy" + _1 + ) +# 4519 "../pars.fsy" + : 'appType)); +# 14170 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4522 "../pars.fsy" + let tp,typ = _1,_3 + let m = lhs parseState + SynType.WithGlobalConstraints(SynType.Var (tp, rhs parseState 1), [WhereTyparSubtypeOfType(tp,typ,m)],m) + ) +# 4522 "../pars.fsy" + : 'appType)); +# 14184 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4527 "../pars.fsy" + SynType.HashConstraint(_3, lhs parseState) + ) +# 4527 "../pars.fsy" + : 'appType)); +# 14195 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4531 "../pars.fsy" + 1 + ) +# 4531 "../pars.fsy" + : 'arrayTypeSuffix)); +# 14205 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4534 "../pars.fsy" + 2 + ) +# 4534 "../pars.fsy" + : 'arrayTypeSuffix)); +# 14215 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4537 "../pars.fsy" + 3 + ) +# 4537 "../pars.fsy" + : 'arrayTypeSuffix)); +# 14225 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4540 "../pars.fsy" + 4 + ) +# 4540 "../pars.fsy" + : 'arrayTypeSuffix)); +# 14235 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgActual)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgActual)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgListElements)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4544 "../pars.fsy" + let typeArgs, commas = _4 in _1 :: _3 :: List.rev typeArgs, (rhs parseState 2) :: (List.rev commas) + ) +# 4544 "../pars.fsy" + : 'appTypePrefixArguments)); +# 14248 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgListElements)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgActual)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4548 "../pars.fsy" + let typeArgs, commas = _1 + _3 :: typeArgs, (rhs parseState 2) :: commas + ) +# 4548 "../pars.fsy" + : 'typeArgListElements)); +# 14261 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgListElements)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'dummyTypeArg)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4552 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsMissingTypeArgs()) + let typeArgs, commas = _1 + _3 :: typeArgs, (rhs parseState 2) :: commas + ) +# 4552 "../pars.fsy" + : 'typeArgListElements)); +# 14275 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4557 "../pars.fsy" + [], [] + ) +# 4557 "../pars.fsy" + : 'typeArgListElements)); +# 14285 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomTypeOrAnonRecdType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4561 "../pars.fsy" + _1 + ) +# 4561 "../pars.fsy" + : 'powerType)); +# 14296 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomTypeOrAnonRecdType)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicRationalConstant)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4564 "../pars.fsy" + if _2 <> "^" && _2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedInfixOperator()); + if _2 = "^-" then SynType.MeasurePower(_1, SynRationalConst.Negate(_3), lhs parseState) + else SynType.MeasurePower(_1, _3, lhs parseState) + ) +# 4564 "../pars.fsy" + : 'powerType)); +# 14311 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'appTypePrefixArguments)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'appTypeConPower)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4573 "../pars.fsy" + let args, commas = _2 + mlCompatWarning (FSComp.SR.parsMultiArgumentGenericTypeFormDeprecated()) (unionRanges (rhs parseState 1) _4.Range); + SynType.App(_4, None, args, commas, None, true, unionRanges (rhs parseState 1) _4.Range) + ) +# 4573 "../pars.fsy" + : 'atomTypeNonAtomicDeprecated)); +# 14326 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4578 "../pars.fsy" + _1 + ) +# 4578 "../pars.fsy" + : 'atomTypeNonAtomicDeprecated)); +# 14337 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4582 "../pars.fsy" + _1 + ) +# 4582 "../pars.fsy" + : 'atomTypeOrAnonRecdType)); +# 14348 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'anonRecdType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4584 "../pars.fsy" + let flds,isStruct = _1 + let flds2 = + flds |> List.choose (function + | (Field([],false,Some id,ty,false,_xmldoc,None,_m)) -> Some (id,ty) + | _ -> reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInvalidAnonRecdType()); None) + SynType.AnonRecd (isStruct,flds2, rhs parseState 1) + ) +# 4584 "../pars.fsy" + : 'atomTypeOrAnonRecdType)); +# 14364 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4597 "../pars.fsy" + SynType.HashConstraint(_2, lhs parseState) + ) +# 4597 "../pars.fsy" + : 'atomType)); +# 14375 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appTypeConPower)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4600 "../pars.fsy" + _1 + ) +# 4600 "../pars.fsy" + : 'atomType)); +# 14386 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4603 "../pars.fsy" + SynType.Anon (lhs parseState) + ) +# 4603 "../pars.fsy" + : 'atomType)); +# 14396 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4606 "../pars.fsy" + _2 + ) +# 4606 "../pars.fsy" + : 'atomType)); +# 14408 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4609 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedParen()) + _2 + ) +# 4609 "../pars.fsy" + : 'atomType)); +# 14421 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleOrQuotTypeElements)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4613 "../pars.fsy" + SynType.Tuple(true, (false,_3) :: _5,lhs parseState) + ) +# 4613 "../pars.fsy" + : 'atomType)); +# 14434 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'tupleOrQuotTypeElements)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4616 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) + SynType.Tuple(true, (false,_3) :: _5,lhs parseState) + ) +# 4616 "../pars.fsy" + : 'atomType)); +# 14448 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4620 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) + SynType.Anon (lhs parseState) + ) +# 4620 "../pars.fsy" + : 'atomType)); +# 14461 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'appType)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4624 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) + SynType.Anon (lhs parseState) + ) +# 4624 "../pars.fsy" + : 'atomType)); +# 14474 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4628 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnmatchedParen()) + SynType.Anon (lhs parseState) + ) +# 4628 "../pars.fsy" + : 'atomType)); +# 14486 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'rawConstant)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4632 "../pars.fsy" + SynType.StaticConstant(_1, rhs parseState 1) + ) +# 4632 "../pars.fsy" + : 'atomType)); +# 14497 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4635 "../pars.fsy" + let m = rhs parseState 1 + SynType.StaticConstant(SynConst.String (null, m), m) + ) +# 4635 "../pars.fsy" + : 'atomType)); +# 14508 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynExpr * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4639 "../pars.fsy" + let e,_ = _2 + SynType.StaticConstantExpr(e, e.Range) + ) +# 4639 "../pars.fsy" + : 'atomType)); +# 14520 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4643 "../pars.fsy" + SynType.StaticConstant(SynConst.Bool false,lhs parseState) + ) +# 4643 "../pars.fsy" + : 'atomType)); +# 14530 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4646 "../pars.fsy" + SynType.StaticConstant(SynConst.Bool true,lhs parseState) + ) +# 4646 "../pars.fsy" + : 'atomType)); +# 14540 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4649 "../pars.fsy" + (* silent recovery *) SynType.Anon (lhs parseState) + ) +# 4649 "../pars.fsy" + : 'atomType)); +# 14551 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appTypeCon)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : range * range option * Ast.SynType list * range list * range)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4652 "../pars.fsy" + let mLessThan,mGreaterThan,args,commas,mWhole = _2 in SynType.App(_1, Some(mLessThan), args, commas, mGreaterThan, false, unionRanges _1.Range mWhole) + ) +# 4652 "../pars.fsy" + : 'atomType)); +# 14563 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4655 "../pars.fsy" + SynType.LongIdentApp(_1, _3, None, [], [], None, unionRanges (rhs parseState 1) _3.Range) + ) +# 4655 "../pars.fsy" + : 'atomType)); +# 14575 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : range * range option * Ast.SynType list * range list * range)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4658 "../pars.fsy" + let mLessThan,mGreaterThan,args,commas,mWhole = _4 + SynType.LongIdentApp(_1, _3, Some(mLessThan), args, commas, mGreaterThan, unionRanges _1.Range mWhole) + ) +# 4658 "../pars.fsy" + : 'atomType)); +# 14589 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'appTypeCon)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4662 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedNameAfterToken()) + _1 + ) +# 4662 "../pars.fsy" + : 'atomType)); +# 14602 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : range * range option * bool * Ast.SynType list * range list * range)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4668 "../pars.fsy" + let mLessThan, mGreaterThan, parsedOk, args, commas, mAll = _1 + if parsedOk then // if someone has "foo + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : range * range option * bool * Ast.SynType list * range list * range)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4674 "../pars.fsy" + let mLessThan, mGreaterThan, _, args, commas, mAll = _2 + mLessThan, mGreaterThan, args, commas, mAll + ) +# 4674 "../pars.fsy" + : range * range option * Ast.SynType list * range list * range)); +# 14628 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgActualOrDummyIfEmpty)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgActualOrDummyIfEmpty)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgListElements)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4679 "../pars.fsy" + let typeArgs, commas = _5 + (rhs parseState 1), Some(rhs parseState 6), true, (_2 :: _4 :: List.rev typeArgs), (rhs parseState 3) :: (List.rev commas), lhs parseState + ) +# 4679 "../pars.fsy" + : range * range option * bool * Ast.SynType list * range list * range)); +# 14644 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgActualOrDummyIfEmpty)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgActualOrDummyIfEmpty)) in + let _5 = (let data = parseState.GetInput(5) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgListElements)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4683 "../pars.fsy" + if not _6 then + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedEndOfFileTypeArgs()) + else + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMissingGreaterThan()) + let typeArgs, commas = _5 + let nextToken = rhs parseState 6 + let zeroWidthAtStartOfNextToken = nextToken.StartRange + (rhs parseState 1), None, false, (_2 :: _4 :: List.rev typeArgs), (rhs parseState 3) :: (List.rev commas), unionRanges (rhs parseState 1) zeroWidthAtStartOfNextToken + ) +# 4683 "../pars.fsy" + : range * range option * bool * Ast.SynType list * range list * range)); +# 14666 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgActualOrDummyIfEmpty)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4693 "../pars.fsy" + if not _4 then reportParseErrorAt (rhs parseState 4) (FSComp.SR.parsMissingTypeArgs()) + let nextToken = rhs parseState 4 + let zeroWidthAtStartOfNextToken = nextToken.StartRange + (rhs parseState 1), None, false, [_2], [rhs parseState 3], unionRanges (rhs parseState 1) zeroWidthAtStartOfNextToken + ) +# 4693 "../pars.fsy" + : range * range option * bool * Ast.SynType list * range list * range)); +# 14682 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgActual)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4699 "../pars.fsy" + (rhs parseState 1), Some(rhs parseState 3), true, [_2], [], lhs parseState + ) +# 4699 "../pars.fsy" + : range * range option * bool * Ast.SynType list * range list * range)); +# 14695 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgActual)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4702 "../pars.fsy" + let nextToken = rhs parseState 3 + if not _3 then reportParseErrorAt nextToken (FSComp.SR.parsMissingTypeArgs()) + let zeroWidthAtStartOfNextToken = nextToken.StartRange + (rhs parseState 1), None, false, [_2], [], unionRanges (rhs parseState 1) zeroWidthAtStartOfNextToken + ) +# 4702 "../pars.fsy" + : range * range option * bool * Ast.SynType list * range list * range)); +# 14711 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4708 "../pars.fsy" + (rhs parseState 1), Some(rhs parseState 2), true, [], [], lhs parseState + ) +# 4708 "../pars.fsy" + : range * range option * bool * Ast.SynType list * range list * range)); +# 14723 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4711 "../pars.fsy" + if not _2 then + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsExpectedTypeAfterToken()) + else + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsMissingTypeArgs()) + let nextToken = rhs parseState 2 + let zeroWidthAtStartOfNextToken = nextToken.StartRange + (rhs parseState 1), None, false, [], [], unionRanges (rhs parseState 1) zeroWidthAtStartOfNextToken + ) +# 4711 "../pars.fsy" + : range * range option * bool * Ast.SynType list * range list * range)); +# 14741 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4721 "../pars.fsy" + _1 + ) +# 4721 "../pars.fsy" + : 'typeArgActual)); +# 14752 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4724 "../pars.fsy" + SynType.StaticConstantNamed(_1, _3, unionRanges _1.Range _3.Range) + ) +# 4724 "../pars.fsy" + : 'typeArgActual)); +# 14764 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynType)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4727 "../pars.fsy" + reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsMissingTypeArgs()) + let dummy = SynType.StaticConstant(SynConst.Int32(0), rhs parseState 2) + SynType.StaticConstantNamed(_1, dummy, (rhs2 parseState 1 2)) + + ) +# 4727 "../pars.fsy" + : 'typeArgActual)); +# 14778 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeArgActual)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4734 "../pars.fsy" + _1 + ) +# 4734 "../pars.fsy" + : 'typeArgActualOrDummyIfEmpty)); +# 14789 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'dummyTypeArg)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4737 "../pars.fsy" + reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMissingTypeArgs()) + _1 + ) +# 4737 "../pars.fsy" + : 'typeArgActualOrDummyIfEmpty)); +# 14801 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4742 "../pars.fsy" + let m = rhs parseState 1 + let dummyStatVal = SynType.StaticConstant(SynConst.Int32(0), m) + let dummyName = SynType.LongIdent(LongIdentWithDots([ident("",m)],[])) + let dummyTypeArg = SynType.StaticConstantNamed(dummyName, dummyStatVal, m) + dummyTypeArg + ) +# 4742 "../pars.fsy" + : 'dummyTypeArg)); +# 14815 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'measureTypeExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4751 "../pars.fsy" + _2 + ) +# 4751 "../pars.fsy" + : 'measureTypeArg)); +# 14828 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4754 "../pars.fsy" + SynMeasure.Anon (lhs parseState) + ) +# 4754 "../pars.fsy" + : 'measureTypeArg)); +# 14840 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4758 "../pars.fsy" + SynMeasure.Named(_1.Lid, _1.Range) + ) +# 4758 "../pars.fsy" + : 'measureTypeAtom)); +# 14851 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.SynTypar)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4761 "../pars.fsy" + SynMeasure.Var(_1, lhs parseState) + ) +# 4761 "../pars.fsy" + : 'measureTypeAtom)); +# 14862 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'measureTypeExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4764 "../pars.fsy" + _2 + ) +# 4764 "../pars.fsy" + : 'measureTypeAtom)); +# 14874 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'measureTypeAtom)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4768 "../pars.fsy" + _1 + ) +# 4768 "../pars.fsy" + : 'measureTypePower)); +# 14885 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'measureTypeAtom)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'atomicRationalConstant)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4771 "../pars.fsy" + if _2 <> "^" && _2 <> "^-" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()); + if _2 = "^-" then SynMeasure.Power(_1, SynRationalConst.Negate(_3), lhs parseState) + else SynMeasure.Power(_1, _3, lhs parseState) + ) +# 4771 "../pars.fsy" + : 'measureTypePower)); +# 14900 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : int32 * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4776 "../pars.fsy" + if fst _1 <> 1 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedIntegerLiteralForUnitOfMeasure()); + SynMeasure.One + ) +# 4776 "../pars.fsy" + : 'measureTypePower)); +# 14912 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'measureTypePower)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4781 "../pars.fsy" + [_1] + ) +# 4781 "../pars.fsy" + : 'measureTypeSeq)); +# 14923 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'measureTypePower)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'measureTypeSeq)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4784 "../pars.fsy" + _1 :: _2 + ) +# 4784 "../pars.fsy" + : 'measureTypeSeq)); +# 14935 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'measureTypeSeq)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4788 "../pars.fsy" + SynMeasure.Seq(_1, lhs parseState) + ) +# 4788 "../pars.fsy" + : 'measureTypeExpr)); +# 14946 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'measureTypeExpr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'measureTypeExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4791 "../pars.fsy" + SynMeasure.Product(_1, _3, lhs parseState) + ) +# 4791 "../pars.fsy" + : 'measureTypeExpr)); +# 14958 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'measureTypeExpr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'measureTypeExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4794 "../pars.fsy" + if _2 <> "*" && _2 <> "/" then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()); + if _2 = "*" then SynMeasure.Product(_1, _3, lhs parseState) + else SynMeasure.Divide(_1, _3, lhs parseState) + ) +# 4794 "../pars.fsy" + : 'measureTypeExpr)); +# 14973 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'measureTypeExpr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4799 "../pars.fsy" + if _1 <> "/" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedOperatorForUnitOfMeasure()); + SynMeasure.Divide(SynMeasure.One, _2, lhs parseState) + ) +# 4799 "../pars.fsy" + : 'measureTypeExpr)); +# 14986 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4804 "../pars.fsy" + let id = mkSynId (lhs parseState) (_2).idText + Typar(id, NoStaticReq,false) + ) +# 4804 "../pars.fsy" + : Ast.SynTypar)); +# 14998 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'staticallyKnownHeadTypar)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4808 "../pars.fsy" + _1 + ) +# 4808 "../pars.fsy" + : Ast.SynTypar)); +# 15009 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4812 "../pars.fsy" + if _1 <> "^" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnexpectedTypeParameter()); + let id = mkSynId (lhs parseState) (_2).idText + Typar(id,HeadTypeStaticReq,false) + ) +# 4812 "../pars.fsy" + : 'staticallyKnownHeadTypar)); +# 15023 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4820 "../pars.fsy" + ident(_1,rhs parseState 1) + ) +# 4820 "../pars.fsy" + : Ast.Ident)); +# 15034 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4826 "../pars.fsy" + LongIdentWithDots([ident(MangledGlobalName,rhs parseState 1)],[]) + ) +# 4826 "../pars.fsy" + : Ast.LongIdentWithDots)); +# 15044 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4829 "../pars.fsy" + LongIdentWithDots([_1],[]) + ) +# 4829 "../pars.fsy" + : Ast.LongIdentWithDots)); +# 15055 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4832 "../pars.fsy" + let (LongIdentWithDots(lid,dotms)) = _1 in LongIdentWithDots(lid @ [_3], dotms @ [rhs parseState 2]) + ) +# 4832 "../pars.fsy" + : Ast.LongIdentWithDots)); +# 15067 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'ends_coming_soon_or_recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4835 "../pars.fsy" + if not _3 then reportParseErrorAt (rhs parseState 2) (FSComp.SR.parsExpectedNameAfterToken()) + let (LongIdentWithDots(lid,dotms)) = _1 in LongIdentWithDots(lid, dotms @ [rhs parseState 2]) + ) +# 4835 "../pars.fsy" + : Ast.LongIdentWithDots)); +# 15080 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'operatorName)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4842 "../pars.fsy" + ident(CompileOpName _2,rhs parseState 2) + ) +# 4842 "../pars.fsy" + : 'opName)); +# 15092 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4845 "../pars.fsy" + reportParseErrorAt (lhs parseState) (FSComp.SR.parsErrorParsingAsOperatorName()); ident(CompileOpName "****",rhs parseState 2) + ) +# 4845 "../pars.fsy" + : 'opName)); +# 15103 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4848 "../pars.fsy" + ident(CompileOpName "*",rhs parseState 1) + ) +# 4848 "../pars.fsy" + : 'opName)); +# 15113 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'activePatternCaseNames)) in + let _4 = (let data = parseState.GetInput(4) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4852 "../pars.fsy" + let text = ("|" + String.concat "|" (List.rev _2) + "|") + ident(text,rhs2 parseState 2 3) + ) +# 4852 "../pars.fsy" + : 'opName)); +# 15126 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'activePatternCaseNames)) in + let _6 = (let data = parseState.GetInput(6) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4857 "../pars.fsy" + let text = ("|" + String.concat "|" (List.rev _2) + "|_|" ) + ident(text,rhs2 parseState 2 5) + ) +# 4857 "../pars.fsy" + : 'opName)); +# 15139 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4863 "../pars.fsy" + if not (IsValidPrefixOperatorDefinitionName _1) then + reportParseErrorAt (lhs parseState) (FSComp.SR.parsInvalidPrefixOperatorDefinition()); + _1 + ) +# 4863 "../pars.fsy" + : 'operatorName)); +# 15152 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4867 "../pars.fsy" + _1 + ) +# 4867 "../pars.fsy" + : 'operatorName)); +# 15163 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4869 "../pars.fsy" + _1 + ) +# 4869 "../pars.fsy" + : 'operatorName)); +# 15174 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4871 "../pars.fsy" + _1 + ) +# 4871 "../pars.fsy" + : 'operatorName)); +# 15185 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4873 "../pars.fsy" + _1 + ) +# 4873 "../pars.fsy" + : 'operatorName)); +# 15196 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4875 "../pars.fsy" + _1 + ) +# 4875 "../pars.fsy" + : 'operatorName)); +# 15207 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4877 "../pars.fsy" + _1 + ) +# 4877 "../pars.fsy" + : 'operatorName)); +# 15218 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4879 "../pars.fsy" + _1 + ) +# 4879 "../pars.fsy" + : 'operatorName)); +# 15229 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4881 "../pars.fsy" + "$" + ) +# 4881 "../pars.fsy" + : 'operatorName)); +# 15239 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4883 "../pars.fsy" + _1 + ) +# 4883 "../pars.fsy" + : 'operatorName)); +# 15250 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4885 "../pars.fsy" + "-" + ) +# 4885 "../pars.fsy" + : 'operatorName)); +# 15260 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4887 "../pars.fsy" + "*" + ) +# 4887 "../pars.fsy" + : 'operatorName)); +# 15270 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4889 "../pars.fsy" + "=" + ) +# 4889 "../pars.fsy" + : 'operatorName)); +# 15280 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4891 "../pars.fsy" + "or" + ) +# 4891 "../pars.fsy" + : 'operatorName)); +# 15290 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4893 "../pars.fsy" + "<" + ) +# 4893 "../pars.fsy" + : 'operatorName)); +# 15301 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4895 "../pars.fsy" + ">" + ) +# 4895 "../pars.fsy" + : 'operatorName)); +# 15312 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4897 "../pars.fsy" + "?" + ) +# 4897 "../pars.fsy" + : 'operatorName)); +# 15322 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4899 "../pars.fsy" + "&" + ) +# 4899 "../pars.fsy" + : 'operatorName)); +# 15332 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4901 "../pars.fsy" + "&&" + ) +# 4901 "../pars.fsy" + : 'operatorName)); +# 15342 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4903 "../pars.fsy" + "||" + ) +# 4903 "../pars.fsy" + : 'operatorName)); +# 15352 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4905 "../pars.fsy" + ":=" + ) +# 4905 "../pars.fsy" + : 'operatorName)); +# 15362 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4908 "../pars.fsy" + if _1 <> ".[]" && _1 <> ".()" && _1 <> ".()<-" then + deprecatedOperator (lhs parseState); + _1 + ) +# 4908 "../pars.fsy" + : 'operatorName)); +# 15375 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4912 "../pars.fsy" + _1 + ) +# 4912 "../pars.fsy" + : 'operatorName)); +# 15386 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4914 "../pars.fsy" + ".." + ) +# 4914 "../pars.fsy" + : 'operatorName)); +# 15396 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4916 "../pars.fsy" + ".. .." + ) +# 4916 "../pars.fsy" + : 'operatorName)); +# 15406 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string * bool)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : string * bool)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4919 "../pars.fsy" + if _1 <> _2 then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsMismatchedQuotationName(fst _1)); + fst _1 + ) +# 4919 "../pars.fsy" + : 'operatorName)); +# 15419 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4925 "../pars.fsy" + if not (String.isUpper _1) then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsActivePatternCaseMustBeginWithUpperCase()); + if (_1.IndexOf('|') <> -1) then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsActivePatternCaseContainsPipe()); + _1 + ) +# 4925 "../pars.fsy" + : 'activePatternCaseName)); +# 15432 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'activePatternCaseName)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4932 "../pars.fsy" + [_2] + ) +# 4932 "../pars.fsy" + : 'activePatternCaseNames)); +# 15443 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'activePatternCaseNames)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'activePatternCaseName)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4935 "../pars.fsy" + _3 :: _1 + ) +# 4935 "../pars.fsy" + : 'activePatternCaseNames)); +# 15455 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4940 "../pars.fsy" + _1 + ) +# 4940 "../pars.fsy" + : 'identOrOp)); +# 15466 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opName)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4943 "../pars.fsy" + _1 + ) +# 4943 "../pars.fsy" + : 'identOrOp)); +# 15477 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4949 "../pars.fsy" + LongIdentWithDots([_1],[]) + ) +# 4949 "../pars.fsy" + : Ast.LongIdentWithDots)); +# 15488 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'opName)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4952 "../pars.fsy" + LongIdentWithDots([_1],[]) + ) +# 4952 "../pars.fsy" + : Ast.LongIdentWithDots)); +# 15499 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.LongIdentWithDots)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4955 "../pars.fsy" + let (LongIdentWithDots(lid,dotms)) = _3 in LongIdentWithDots(_1 :: lid, rhs parseState 2 :: dotms) + ) +# 4955 "../pars.fsy" + : Ast.LongIdentWithDots)); +# 15511 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : Ast.Ident)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4958 "../pars.fsy" + (* silent recovery *) LongIdentWithDots([_1],[rhs parseState 2]) + ) +# 4958 "../pars.fsy" + : Ast.LongIdentWithDots)); +# 15522 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'identOrOp)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4963 "../pars.fsy" + _1 + ) +# 4963 "../pars.fsy" + : 'nameop)); +# 15533 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4966 "../pars.fsy" + + ) +# 4966 "../pars.fsy" + : 'topSeparator)); +# 15543 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4967 "../pars.fsy" + + ) +# 4967 "../pars.fsy" + : 'topSeparator)); +# 15553 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4968 "../pars.fsy" + + ) +# 4968 "../pars.fsy" + : 'topSeparator)); +# 15563 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'topSeparator)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4971 "../pars.fsy" + + ) +# 4971 "../pars.fsy" + : 'topSeparators)); +# 15574 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'topSeparator)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'topSeparators)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4972 "../pars.fsy" + + ) +# 4972 "../pars.fsy" + : 'topSeparators)); +# 15586 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'topSeparator)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'opt_topSeparators)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4975 "../pars.fsy" + + ) +# 4975 "../pars.fsy" + : 'opt_topSeparators)); +# 15598 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4976 "../pars.fsy" + + ) +# 4976 "../pars.fsy" + : 'opt_topSeparators)); +# 15608 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4980 "../pars.fsy" + + ) +# 4980 "../pars.fsy" + : 'seps)); +# 15618 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4981 "../pars.fsy" + + ) +# 4981 "../pars.fsy" + : 'seps)); +# 15628 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4982 "../pars.fsy" + + ) +# 4982 "../pars.fsy" + : 'seps)); +# 15638 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4983 "../pars.fsy" + + ) +# 4983 "../pars.fsy" + : 'seps)); +# 15648 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4988 "../pars.fsy" + + ) +# 4988 "../pars.fsy" + : 'declEnd)); +# 15658 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4990 "../pars.fsy" + + ) +# 4990 "../pars.fsy" + : 'declEnd)); +# 15668 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4992 "../pars.fsy" + + ) +# 4992 "../pars.fsy" + : 'declEnd)); +# 15678 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4997 "../pars.fsy" + + ) +# 4997 "../pars.fsy" + : 'opt_declEnd)); +# 15688 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 4999 "../pars.fsy" + + ) +# 4999 "../pars.fsy" + : 'opt_declEnd)); +# 15698 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5001 "../pars.fsy" + + ) +# 5001 "../pars.fsy" + : 'opt_declEnd)); +# 15708 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5003 "../pars.fsy" + + ) +# 5003 "../pars.fsy" + : 'opt_declEnd)); +# 15718 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5006 "../pars.fsy" + + ) +# 5006 "../pars.fsy" + : 'opt_ODECLEND)); +# 15728 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5007 "../pars.fsy" + + ) +# 5007 "../pars.fsy" + : 'opt_ODECLEND)); +# 15738 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5010 "../pars.fsy" + deprecatedWithError (FSComp.SR.parsNoEqualShouldFollowNamespace()) (lhs parseState); () + ) +# 5010 "../pars.fsy" + : 'deprecated_opt_equals)); +# 15748 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5011 "../pars.fsy" + + ) +# 5011 "../pars.fsy" + : 'deprecated_opt_equals)); +# 15758 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5014 "../pars.fsy" + + ) +# 5014 "../pars.fsy" + : 'opt_OBLOCKSEP)); +# 15768 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5015 "../pars.fsy" + + ) +# 5015 "../pars.fsy" + : 'opt_OBLOCKSEP)); +# 15778 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'seps)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5018 "../pars.fsy" + + ) +# 5018 "../pars.fsy" + : 'opt_seps)); +# 15789 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5019 "../pars.fsy" + + ) +# 5019 "../pars.fsy" + : 'opt_seps)); +# 15799 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5022 "../pars.fsy" + true + ) +# 5022 "../pars.fsy" + : 'opt_rec)); +# 15809 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5023 "../pars.fsy" + false + ) +# 5023 "../pars.fsy" + : 'opt_rec)); +# 15819 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5026 "../pars.fsy" + + ) +# 5026 "../pars.fsy" + : 'opt_bar)); +# 15829 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5027 "../pars.fsy" + + ) +# 5027 "../pars.fsy" + : 'opt_bar)); +# 15839 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5030 "../pars.fsy" + true + ) +# 5030 "../pars.fsy" + : 'opt_inline)); +# 15849 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5031 "../pars.fsy" + false + ) +# 5031 "../pars.fsy" + : 'opt_inline)); +# 15859 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5034 "../pars.fsy" + true + ) +# 5034 "../pars.fsy" + : 'opt_mutable)); +# 15869 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5035 "../pars.fsy" + false + ) +# 5035 "../pars.fsy" + : 'opt_mutable)); +# 15879 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5039 "../pars.fsy" + + ) +# 5039 "../pars.fsy" + : 'doToken)); +# 15889 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5040 "../pars.fsy" + + ) +# 5040 "../pars.fsy" + : 'doToken)); +# 15899 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5043 "../pars.fsy" + + ) +# 5043 "../pars.fsy" + : 'doneDeclEnd)); +# 15909 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5044 "../pars.fsy" + + ) +# 5044 "../pars.fsy" + : 'doneDeclEnd)); +# 15919 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5047 "../pars.fsy" + mlCompatWarning (FSComp.SR.parsSyntaxModuleStructEndDeprecated()) (lhs parseState); + ) +# 5047 "../pars.fsy" + : 'structOrBegin)); +# 15929 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5048 "../pars.fsy" + + ) +# 5048 "../pars.fsy" + : 'structOrBegin)); +# 15939 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5051 "../pars.fsy" + mlCompatWarning (FSComp.SR.parsSyntaxModuleSigEndDeprecated()) (lhs parseState); + ) +# 5051 "../pars.fsy" + : 'sigOrBegin)); +# 15949 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5052 "../pars.fsy" + + ) +# 5052 "../pars.fsy" + : 'sigOrBegin)); +# 15959 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5055 "../pars.fsy" + mlCompatWarning (FSComp.SR.parsSyntaxModuleSigEndDeprecated()) (lhs parseState); + ) +# 5055 "../pars.fsy" + : 'colonOrEquals)); +# 15969 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5056 "../pars.fsy" + + ) +# 5056 "../pars.fsy" + : 'colonOrEquals)); +# 15979 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5060 "../pars.fsy" + _1 + ) +# 5060 "../pars.fsy" + : 'stringOrKeywordString)); +# 15990 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5061 "../pars.fsy" + _1 + ) +# 5061 "../pars.fsy" + : 'stringOrKeywordString)); +# 16001 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5064 "../pars.fsy" + + ) +# 5064 "../pars.fsy" + : 'opt_HIGH_PRECEDENCE_APP)); +# 16011 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5065 "../pars.fsy" + + ) +# 5065 "../pars.fsy" + : 'opt_HIGH_PRECEDENCE_APP)); +# 16021 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5066 "../pars.fsy" + + ) +# 5066 "../pars.fsy" + : 'opt_HIGH_PRECEDENCE_APP)); +# 16031 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5069 "../pars.fsy" + + ) +# 5069 "../pars.fsy" + : 'opt_HIGH_PRECEDENCE_TYAPP)); +# 16041 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5070 "../pars.fsy" + + ) +# 5070 "../pars.fsy" + : 'opt_HIGH_PRECEDENCE_TYAPP)); +# 16051 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'typeKeyword)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5074 "../pars.fsy" + + ) +# 5074 "../pars.fsy" + : 'typeKeyword)); +# 16062 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5075 "../pars.fsy" + + ) +# 5075 "../pars.fsy" + : 'typeKeyword)); +# 16072 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5076 "../pars.fsy" + + ) +# 5076 "../pars.fsy" + : 'typeKeyword)); +# 16082 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'moduleKeyword)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5080 "../pars.fsy" + + ) +# 5080 "../pars.fsy" + : 'moduleKeyword)); +# 16093 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5081 "../pars.fsy" + + ) +# 5081 "../pars.fsy" + : 'moduleKeyword)); +# 16103 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5082 "../pars.fsy" + + ) +# 5082 "../pars.fsy" + : 'moduleKeyword)); +# 16113 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'rbrace)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5085 "../pars.fsy" + + ) +# 5085 "../pars.fsy" + : 'rbrace)); +# 16124 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5086 "../pars.fsy" + + ) +# 5086 "../pars.fsy" + : 'rbrace)); +# 16134 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5087 "../pars.fsy" + + ) +# 5087 "../pars.fsy" + : 'rbrace)); +# 16144 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5090 "../pars.fsy" + + ) +# 5090 "../pars.fsy" + : 'bar_rbrace)); +# 16154 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'rparen)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5093 "../pars.fsy" + + ) +# 5093 "../pars.fsy" + : 'rparen)); +# 16165 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5094 "../pars.fsy" + + ) +# 5094 "../pars.fsy" + : 'rparen)); +# 16175 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5095 "../pars.fsy" + + ) +# 5095 "../pars.fsy" + : 'rparen)); +# 16185 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'oblockend)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5098 "../pars.fsy" + + ) +# 5098 "../pars.fsy" + : 'oblockend)); +# 16196 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5099 "../pars.fsy" + + ) +# 5099 "../pars.fsy" + : 'oblockend)); +# 16206 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5100 "../pars.fsy" + + ) +# 5100 "../pars.fsy" + : 'oblockend)); +# 16216 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5103 "../pars.fsy" + false + ) +# 5103 "../pars.fsy" + : 'ends_other_than_rparen_coming_soon_or_recover)); +# 16226 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5104 "../pars.fsy" + false + ) +# 5104 "../pars.fsy" + : 'ends_other_than_rparen_coming_soon_or_recover)); +# 16236 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5105 "../pars.fsy" + false + ) +# 5105 "../pars.fsy" + : 'ends_other_than_rparen_coming_soon_or_recover)); +# 16246 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5106 "../pars.fsy" + false + ) +# 5106 "../pars.fsy" + : 'ends_other_than_rparen_coming_soon_or_recover)); +# 16256 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5107 "../pars.fsy" + _1 + ) +# 5107 "../pars.fsy" + : 'ends_other_than_rparen_coming_soon_or_recover)); +# 16267 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5110 "../pars.fsy" + false + ) +# 5110 "../pars.fsy" + : 'ends_coming_soon_or_recover)); +# 16277 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5111 "../pars.fsy" + false + ) +# 5111 "../pars.fsy" + : 'ends_coming_soon_or_recover)); +# 16287 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5112 "../pars.fsy" + false + ) +# 5112 "../pars.fsy" + : 'ends_coming_soon_or_recover)); +# 16297 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5113 "../pars.fsy" + false + ) +# 5113 "../pars.fsy" + : 'ends_coming_soon_or_recover)); +# 16307 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5114 "../pars.fsy" + false + ) +# 5114 "../pars.fsy" + : 'ends_coming_soon_or_recover)); +# 16317 "pars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 5115 "../pars.fsy" + _1 + ) +# 5115 "../pars.fsy" + : 'ends_coming_soon_or_recover)); +|] +# 16329 "pars.fs" +let tables () : Internal.Utilities.Text.Parsing.Tables<_> = + { reductions= _fsyacc_reductions (); + endOfInputTag = _fsyacc_endOfInputTag; + tagOfToken = tagOfToken; + dataOfToken = _fsyacc_dataOfToken; + actionTableElements = _fsyacc_actionTableElements; + actionTableRowOffsets = _fsyacc_actionTableRowOffsets; + stateToProdIdxsTableElements = _fsyacc_stateToProdIdxsTableElements; + stateToProdIdxsTableRowOffsets = _fsyacc_stateToProdIdxsTableRowOffsets; + reductionSymbolCounts = _fsyacc_reductionSymbolCounts; + immediateActions = _fsyacc_immediateActions; + gotos = _fsyacc_gotos; + sparseGotoTableRowOffsets = _fsyacc_sparseGotoTableRowOffsets; + tagOfErrorTerminal = _fsyacc_tagOfErrorTerminal; + parseError = (fun (ctxt:Internal.Utilities.Text.Parsing.ParseErrorContext<_>) -> + match parse_error_rich with + | Some f -> f ctxt + | None -> parse_error ctxt.Message); + numTerminals = 198; + productionToNonTerminalTable = _fsyacc_productionToNonTerminalTable } +let engine lexer lexbuf startState = (tables ()).Interpret(lexer, lexbuf, startState) +let signatureFile lexer lexbuf : Ast.ParsedSigFile = + Microsoft.FSharp.Core.Operators.unbox ((tables ()).Interpret(lexer, lexbuf, 0)) +let implementationFile lexer lexbuf : Ast.ParsedImplFile = + Microsoft.FSharp.Core.Operators.unbox ((tables ()).Interpret(lexer, lexbuf, 2)) +let interaction lexer lexbuf : Ast.ParsedFsiInteraction = + Microsoft.FSharp.Core.Operators.unbox ((tables ()).Interpret(lexer, lexbuf, 4)) +let typedSeqExprEOF lexer lexbuf : Ast.SynExpr = + Microsoft.FSharp.Core.Operators.unbox ((tables ()).Interpret(lexer, lexbuf, 6)) +let typEOF lexer lexbuf : Ast.SynType = + Microsoft.FSharp.Core.Operators.unbox ((tables ()).Interpret(lexer, lexbuf, 8)) diff --git a/src/fsharp/FSharp.Compiler.Private/pars.fsi b/src/fsharp/FSharp.Compiler.Private/pars.fsi new file mode 100644 index 0000000000..ca4e02c1c8 --- /dev/null +++ b/src/fsharp/FSharp.Compiler.Private/pars.fsi @@ -0,0 +1,741 @@ +// Signature file for parser generated by fsyacc +module internal FSharp.Compiler.Parser +open FSharp.Compiler +type token = + | HASH_IF of (range * string * Ast.LexerWhitespaceContinuation) + | HASH_ELSE of (range * string * Ast.LexerWhitespaceContinuation) + | HASH_ENDIF of (range * string * Ast.LexerWhitespaceContinuation) + | COMMENT of (Ast.LexerWhitespaceContinuation) + | WHITESPACE of (Ast.LexerWhitespaceContinuation) + | HASH_LINE of (Ast.LexerWhitespaceContinuation) + | HASH_LIGHT of (Ast.LexerWhitespaceContinuation) + | INACTIVECODE of (Ast.LexerWhitespaceContinuation) + | LINE_COMMENT of (Ast.LexerWhitespaceContinuation) + | STRING_TEXT of (Ast.LexerWhitespaceContinuation) + | EOF of (Ast.LexerWhitespaceContinuation) + | LEX_FAILURE of (string) + | ODUMMY of (token) + | FIXED + | OINTERFACE_MEMBER + | OBLOCKEND + | OBLOCKEND_COMING_SOON + | OBLOCKEND_IS_HERE + | ORIGHT_BLOCK_END + | ODECLEND + | OEND + | OBLOCKSEP + | OBLOCKBEGIN + | ORESET + | OFUN + | OFUNCTION + | OWITH + | OELSE + | OTHEN + | ODO_BANG + | ODO + | OBINDER of (string) + | OLET of (bool) + | HIGH_PRECEDENCE_TYAPP + | HIGH_PRECEDENCE_PAREN_APP + | HIGH_PRECEDENCE_BRACK_APP + | TYPE_COMING_SOON + | TYPE_IS_HERE + | MODULE_COMING_SOON + | MODULE_IS_HERE + | EXTERN + | VOID + | PUBLIC + | PRIVATE + | INTERNAL + | GLOBAL + | STATIC + | MEMBER + | CLASS + | ABSTRACT + | OVERRIDE + | DEFAULT + | CONSTRUCTOR + | INHERIT + | GREATER_RBRACK + | STRUCT + | SIG + | BAR + | RBRACK + | RBRACE + | RBRACE_COMING_SOON + | RBRACE_IS_HERE + | MINUS + | DOLLAR + | BAR_RBRACK + | BAR_RBRACE + | UNDERSCORE + | SEMICOLON_SEMICOLON + | LARROW + | EQUALS + | LBRACK + | LBRACK_BAR + | LBRACE_BAR + | LBRACK_LESS + | LBRACE + | QMARK + | QMARK_QMARK + | DOT + | COLON + | COLON_COLON + | COLON_GREATER + | COLON_QMARK_GREATER + | COLON_QMARK + | COLON_EQUALS + | SEMICOLON + | WHEN + | WHILE + | WITH + | HASH + | AMP + | AMP_AMP + | QUOTE + | LPAREN + | RPAREN + | RPAREN_COMING_SOON + | RPAREN_IS_HERE + | STAR + | COMMA + | RARROW + | GREATER_BAR_RBRACK + | LPAREN_STAR_RPAREN + | OPEN + | OR + | REC + | THEN + | TO + | TRUE + | TRY + | TYPE + | VAL + | INLINE + | INTERFACE + | INSTANCE + | CONST + | LAZY + | OLAZY + | MATCH + | MATCH_BANG + | MUTABLE + | NEW + | OF + | EXCEPTION + | FALSE + | FOR + | FUN + | FUNCTION + | IF + | IN + | JOIN_IN + | FINALLY + | DO_BANG + | AND + | AS + | ASSERT + | OASSERT + | ASR + | BEGIN + | DO + | DONE + | DOWNTO + | ELSE + | ELIF + | END + | DOT_DOT + | DOT_DOT_HAT + | BAR_BAR + | UPCAST + | DOWNCAST + | NULL + | RESERVED + | MODULE + | NAMESPACE + | DELEGATE + | CONSTRAINT + | BASE + | LQUOTE of (string * bool) + | RQUOTE of (string * bool) + | RQUOTE_DOT of (string * bool) + | PERCENT_OP of (string) + | BINDER of (string) + | LESS of (bool) + | GREATER of (bool) + | LET of (bool) + | YIELD of (bool) + | YIELD_BANG of (bool) + | BIGNUM of ((string * string)) + | DECIMAL of (System.Decimal) + | CHAR of (char) + | IEEE64 of (double) + | IEEE32 of (single) + | NATIVEINT of (int64) + | UNATIVEINT of (uint64) + | UINT64 of (uint64) + | UINT32 of (uint32) + | UINT16 of (uint16) + | UINT8 of (byte) + | INT64 of (int64 * bool) + | INT32 of (int32 * bool) + | INT32_DOT_DOT of (int32 * bool) + | INT16 of (int16 * bool) + | INT8 of (sbyte * bool) + | FUNKY_OPERATOR_NAME of (string) + | ADJACENT_PREFIX_OP of (string) + | PLUS_MINUS_OP of (string) + | INFIX_AMP_OP of (string) + | INFIX_STAR_DIV_MOD_OP of (string) + | PREFIX_OP of (string) + | INFIX_BAR_OP of (string) + | INFIX_AT_HAT_OP of (string) + | INFIX_COMPARE_OP of (string) + | INFIX_STAR_STAR_OP of (string) + | IDENT of (string) + | KEYWORD_STRING of (string) + | STRING of (string) + | BYTEARRAY of (byte[]) +type tokenId = + | TOKEN_HASH_IF + | TOKEN_HASH_ELSE + | TOKEN_HASH_ENDIF + | TOKEN_COMMENT + | TOKEN_WHITESPACE + | TOKEN_HASH_LINE + | TOKEN_HASH_LIGHT + | TOKEN_INACTIVECODE + | TOKEN_LINE_COMMENT + | TOKEN_STRING_TEXT + | TOKEN_EOF + | TOKEN_LEX_FAILURE + | TOKEN_ODUMMY + | TOKEN_FIXED + | TOKEN_OINTERFACE_MEMBER + | TOKEN_OBLOCKEND + | TOKEN_OBLOCKEND_COMING_SOON + | TOKEN_OBLOCKEND_IS_HERE + | TOKEN_ORIGHT_BLOCK_END + | TOKEN_ODECLEND + | TOKEN_OEND + | TOKEN_OBLOCKSEP + | TOKEN_OBLOCKBEGIN + | TOKEN_ORESET + | TOKEN_OFUN + | TOKEN_OFUNCTION + | TOKEN_OWITH + | TOKEN_OELSE + | TOKEN_OTHEN + | TOKEN_ODO_BANG + | TOKEN_ODO + | TOKEN_OBINDER + | TOKEN_OLET + | TOKEN_HIGH_PRECEDENCE_TYAPP + | TOKEN_HIGH_PRECEDENCE_PAREN_APP + | TOKEN_HIGH_PRECEDENCE_BRACK_APP + | TOKEN_TYPE_COMING_SOON + | TOKEN_TYPE_IS_HERE + | TOKEN_MODULE_COMING_SOON + | TOKEN_MODULE_IS_HERE + | TOKEN_EXTERN + | TOKEN_VOID + | TOKEN_PUBLIC + | TOKEN_PRIVATE + | TOKEN_INTERNAL + | TOKEN_GLOBAL + | TOKEN_STATIC + | TOKEN_MEMBER + | TOKEN_CLASS + | TOKEN_ABSTRACT + | TOKEN_OVERRIDE + | TOKEN_DEFAULT + | TOKEN_CONSTRUCTOR + | TOKEN_INHERIT + | TOKEN_GREATER_RBRACK + | TOKEN_STRUCT + | TOKEN_SIG + | TOKEN_BAR + | TOKEN_RBRACK + | TOKEN_RBRACE + | TOKEN_RBRACE_COMING_SOON + | TOKEN_RBRACE_IS_HERE + | TOKEN_MINUS + | TOKEN_DOLLAR + | TOKEN_BAR_RBRACK + | TOKEN_BAR_RBRACE + | TOKEN_UNDERSCORE + | TOKEN_SEMICOLON_SEMICOLON + | TOKEN_LARROW + | TOKEN_EQUALS + | TOKEN_LBRACK + | TOKEN_LBRACK_BAR + | TOKEN_LBRACE_BAR + | TOKEN_LBRACK_LESS + | TOKEN_LBRACE + | TOKEN_QMARK + | TOKEN_QMARK_QMARK + | TOKEN_DOT + | TOKEN_COLON + | TOKEN_COLON_COLON + | TOKEN_COLON_GREATER + | TOKEN_COLON_QMARK_GREATER + | TOKEN_COLON_QMARK + | TOKEN_COLON_EQUALS + | TOKEN_SEMICOLON + | TOKEN_WHEN + | TOKEN_WHILE + | TOKEN_WITH + | TOKEN_HASH + | TOKEN_AMP + | TOKEN_AMP_AMP + | TOKEN_QUOTE + | TOKEN_LPAREN + | TOKEN_RPAREN + | TOKEN_RPAREN_COMING_SOON + | TOKEN_RPAREN_IS_HERE + | TOKEN_STAR + | TOKEN_COMMA + | TOKEN_RARROW + | TOKEN_GREATER_BAR_RBRACK + | TOKEN_LPAREN_STAR_RPAREN + | TOKEN_OPEN + | TOKEN_OR + | TOKEN_REC + | TOKEN_THEN + | TOKEN_TO + | TOKEN_TRUE + | TOKEN_TRY + | TOKEN_TYPE + | TOKEN_VAL + | TOKEN_INLINE + | TOKEN_INTERFACE + | TOKEN_INSTANCE + | TOKEN_CONST + | TOKEN_LAZY + | TOKEN_OLAZY + | TOKEN_MATCH + | TOKEN_MATCH_BANG + | TOKEN_MUTABLE + | TOKEN_NEW + | TOKEN_OF + | TOKEN_EXCEPTION + | TOKEN_FALSE + | TOKEN_FOR + | TOKEN_FUN + | TOKEN_FUNCTION + | TOKEN_IF + | TOKEN_IN + | TOKEN_JOIN_IN + | TOKEN_FINALLY + | TOKEN_DO_BANG + | TOKEN_AND + | TOKEN_AS + | TOKEN_ASSERT + | TOKEN_OASSERT + | TOKEN_ASR + | TOKEN_BEGIN + | TOKEN_DO + | TOKEN_DONE + | TOKEN_DOWNTO + | TOKEN_ELSE + | TOKEN_ELIF + | TOKEN_END + | TOKEN_DOT_DOT + | TOKEN_DOT_DOT_HAT + | TOKEN_BAR_BAR + | TOKEN_UPCAST + | TOKEN_DOWNCAST + | TOKEN_NULL + | TOKEN_RESERVED + | TOKEN_MODULE + | TOKEN_NAMESPACE + | TOKEN_DELEGATE + | TOKEN_CONSTRAINT + | TOKEN_BASE + | TOKEN_LQUOTE + | TOKEN_RQUOTE + | TOKEN_RQUOTE_DOT + | TOKEN_PERCENT_OP + | TOKEN_BINDER + | TOKEN_LESS + | TOKEN_GREATER + | TOKEN_LET + | TOKEN_YIELD + | TOKEN_YIELD_BANG + | TOKEN_BIGNUM + | TOKEN_DECIMAL + | TOKEN_CHAR + | TOKEN_IEEE64 + | TOKEN_IEEE32 + | TOKEN_NATIVEINT + | TOKEN_UNATIVEINT + | TOKEN_UINT64 + | TOKEN_UINT32 + | TOKEN_UINT16 + | TOKEN_UINT8 + | TOKEN_INT64 + | TOKEN_INT32 + | TOKEN_INT32_DOT_DOT + | TOKEN_INT16 + | TOKEN_INT8 + | TOKEN_FUNKY_OPERATOR_NAME + | TOKEN_ADJACENT_PREFIX_OP + | TOKEN_PLUS_MINUS_OP + | TOKEN_INFIX_AMP_OP + | TOKEN_INFIX_STAR_DIV_MOD_OP + | TOKEN_PREFIX_OP + | TOKEN_INFIX_BAR_OP + | TOKEN_INFIX_AT_HAT_OP + | TOKEN_INFIX_COMPARE_OP + | TOKEN_INFIX_STAR_STAR_OP + | TOKEN_IDENT + | TOKEN_KEYWORD_STRING + | TOKEN_STRING + | TOKEN_BYTEARRAY + | TOKEN_end_of_input + | TOKEN_error +type nonTerminalId = + | NONTERM__startsignatureFile + | NONTERM__startimplementationFile + | NONTERM__startinteraction + | NONTERM__starttypedSeqExprEOF + | NONTERM__starttypEOF + | NONTERM_interaction + | NONTERM_interactiveTerminator + | NONTERM_interactiveItemsTerminator + | NONTERM_interactiveDefns + | NONTERM_interactiveExpr + | NONTERM_interactiveHash + | NONTERM_interactiveSeparators + | NONTERM_interactiveSeparator + | NONTERM_hashDirective + | NONTERM_hashDirectiveArgs + | NONTERM_hashDirectiveArg + | NONTERM_signatureFile + | NONTERM_moduleIntro + | NONTERM_namespaceIntro + | NONTERM_fileNamespaceSpecs + | NONTERM_fileNamespaceSpecList + | NONTERM_fileNamespaceSpec + | NONTERM_fileModuleSpec + | NONTERM_moduleSpfnsPossiblyEmptyBlock + | NONTERM_moduleSpfnsPossiblyEmpty + | NONTERM_moduleSpfns + | NONTERM_moduleSpfn + | NONTERM_valSpfn + | NONTERM_optLiteralValueSpfn + | NONTERM_moduleSpecBlock + | NONTERM_tyconSpfns + | NONTERM_tyconSpfnList + | NONTERM_tyconSpfn + | NONTERM_tyconSpfnRhsBlock + | NONTERM_tyconSpfnRhs + | NONTERM_tyconClassSpfn + | NONTERM_classSpfnBlockKindUnspecified + | NONTERM_classSpfnBlock + | NONTERM_classSpfnMembers + | NONTERM_classSpfnMembersAtLeastOne + | NONTERM_classMemberSpfn + | NONTERM_classMemberSpfnGetSet + | NONTERM_classMemberSpfnGetSetElements + | NONTERM_memberSpecFlags + | NONTERM_exconSpfn + | NONTERM_opt_classSpfn + | NONTERM_implementationFile + | NONTERM_fileNamespaceImpls + | NONTERM_fileNamespaceImplList + | NONTERM_fileNamespaceImpl + | NONTERM_fileModuleImpl + | NONTERM_moduleDefnsOrExprPossiblyEmptyOrBlock + | NONTERM_moduleDefnsOrExprPossiblyEmpty + | NONTERM_moduleDefnsOrExpr + | NONTERM_moduleDefns + | NONTERM_moduleDefnOrDirective + | NONTERM_moduleDefn + | NONTERM_namedModuleAbbrevBlock + | NONTERM_namedModuleDefnBlock + | NONTERM_wrappedNamedModuleDefn + | NONTERM_tyconDefnAugmentation + | NONTERM_opt_attributes + | NONTERM_attributes + | NONTERM_attributeList + | NONTERM_attributeListElements + | NONTERM_attribute + | NONTERM_attributeTarget + | NONTERM_memberFlags + | NONTERM_typeNameInfo + | NONTERM_tyconDefnList + | NONTERM_tyconDefn + | NONTERM_tyconDefnRhsBlock + | NONTERM_tyconDefnRhs + | NONTERM_tyconClassDefn + | NONTERM_classDefnBlockKindUnspecified + | NONTERM_classDefnBlock + | NONTERM_classDefnMembers + | NONTERM_classDefnMembersAtLeastOne + | NONTERM_classDefnMemberGetSet + | NONTERM_classDefnMemberGetSetElements + | NONTERM_classDefnMemberGetSetElement + | NONTERM_memberCore + | NONTERM_abstractMemberFlags + | NONTERM_classDefnMember + | NONTERM_valDefnDecl + | NONTERM_autoPropsDefnDecl + | NONTERM_opt_typ + | NONTERM_atomicPatternLongIdent + | NONTERM_opt_access + | NONTERM_access + | NONTERM_opt_declVisibility + | NONTERM_opt_interfaceImplDefn + | NONTERM_opt_classDefn + | NONTERM_inheritsDefn + | NONTERM_optAsSpec + | NONTERM_asSpec + | NONTERM_optBaseSpec + | NONTERM_baseSpec + | NONTERM_objectImplementationBlock + | NONTERM_objectImplementationMembers + | NONTERM_objectImplementationMember + | NONTERM_memberOrOverride + | NONTERM_tyconDefnOrSpfnSimpleRepr + | NONTERM_braceFieldDeclList + | NONTERM_anonRecdType + | NONTERM_braceBarFieldDeclListCore + | NONTERM_inlineAssemblyTyconRepr + | NONTERM_classOrInterfaceOrStruct + | NONTERM_interfaceMember + | NONTERM_tyconNameAndTyparDecls + | NONTERM_prefixTyparDecls + | NONTERM_typarDeclList + | NONTERM_typarDecl + | NONTERM_postfixTyparDecls + | NONTERM_explicitValTyparDeclsCore + | NONTERM_explicitValTyparDecls + | NONTERM_opt_explicitValTyparDecls + | NONTERM_opt_explicitValTyparDecls2 + | NONTERM_opt_typeConstraints + | NONTERM_typeConstraints + | NONTERM_typeConstraint + | NONTERM_typarAlts + | NONTERM_unionTypeRepr + | NONTERM_barAndgrabXmlDoc + | NONTERM_attrUnionCaseDecls + | NONTERM_attrUnionCaseDecl + | NONTERM_unionCaseName + | NONTERM_firstUnionCaseDeclOfMany + | NONTERM_firstUnionCaseDecl + | NONTERM_unionCaseReprElements + | NONTERM_unionCaseReprElement + | NONTERM_unionCaseRepr + | NONTERM_recdFieldDeclList + | NONTERM_recdFieldDecl + | NONTERM_fieldDecl + | NONTERM_exconDefn + | NONTERM_exceptionAndGrabDoc + | NONTERM_exconCore + | NONTERM_exconIntro + | NONTERM_exconRepr + | NONTERM_openDecl + | NONTERM_defnBindings + | NONTERM_doBinding + | NONTERM_hardwhiteLetBindings + | NONTERM_hardwhiteDoBinding + | NONTERM_classDefnBindings + | NONTERM_hardwhiteDefnBindingsTerminator + | NONTERM_cPrototype + | NONTERM_cArgs + | NONTERM_cMoreArgs + | NONTERM_cArg + | NONTERM_cType + | NONTERM_cRetType + | NONTERM_localBindings + | NONTERM_moreLocalBindings + | NONTERM_attr_localBinding + | NONTERM_localBinding + | NONTERM_typedExprWithStaticOptimizationsBlock + | NONTERM_typedExprWithStaticOptimizations + | NONTERM_opt_staticOptimizations + | NONTERM_staticOptimization + | NONTERM_staticOptimizationConditions + | NONTERM_staticOptimizationCondition + | NONTERM_rawConstant + | NONTERM_rationalConstant + | NONTERM_atomicUnsignedRationalConstant + | NONTERM_atomicRationalConstant + | NONTERM_constant + | NONTERM_bindingPattern + | NONTERM_simplePattern + | NONTERM_simplePatternCommaList + | NONTERM_simplePatterns + | NONTERM_headBindingPattern + | NONTERM_tuplePatternElements + | NONTERM_conjPatternElements + | NONTERM_namePatPairs + | NONTERM_namePatPair + | NONTERM_constrPattern + | NONTERM_atomicPatsOrNamePatPairs + | NONTERM_atomicPatterns + | NONTERM_atomicPattern + | NONTERM_parenPatternBody + | NONTERM_parenPattern + | NONTERM_tupleParenPatternElements + | NONTERM_conjParenPatternElements + | NONTERM_recordPatternElementsAux + | NONTERM_recordPatternElement + | NONTERM_listPatternElements + | NONTERM_typedSeqExprBlock + | NONTERM_declExprBlock + | NONTERM_typedSeqExprBlockR + | NONTERM_typedSeqExpr + | NONTERM_typedSeqExprEOF + | NONTERM_seqExpr + | NONTERM_recover + | NONTERM_declExpr + | NONTERM_dynamicArg + | NONTERM_withClauses + | NONTERM_withPatternClauses + | NONTERM_patternAndGuard + | NONTERM_patternClauses + | NONTERM_patternGuard + | NONTERM_patternResult + | NONTERM_ifExprCases + | NONTERM_ifExprThen + | NONTERM_ifExprElifs + | NONTERM_tupleExpr + | NONTERM_minusExpr + | NONTERM_appExpr + | NONTERM_argExpr + | NONTERM_atomicExpr + | NONTERM_atomicExprQualification + | NONTERM_optRangeSeqExpr + | NONTERM_optRange + | NONTERM_rangeDeclExpr + | NONTERM_atomicExprAfterType + | NONTERM_beginEndExpr + | NONTERM_quoteExpr + | NONTERM_arrayExpr + | NONTERM_parenExpr + | NONTERM_parenExprBody + | NONTERM_staticallyKnownHeadTypars + | NONTERM_staticallyKnownHeadTyparAlts + | NONTERM_braceExpr + | NONTERM_braceExprBody + | NONTERM_listExprElements + | NONTERM_monadicExprInitial + | NONTERM_rangeSequenceExpr + | NONTERM_arrowThenExprR + | NONTERM_forLoopBinder + | NONTERM_forLoopRange + | NONTERM_forLoopDirection + | NONTERM_inlineAssemblyExpr + | NONTERM_opt_curriedArgExprs + | NONTERM_opt_atomicExprAfterType + | NONTERM_opt_inlineAssemblyTypeArg + | NONTERM_opt_inlineAssemblyReturnTypes + | NONTERM_recdExpr + | NONTERM_recdExprCore + | NONTERM_opt_seps_recd + | NONTERM_seps_recd + | NONTERM_pathOrUnderscore + | NONTERM_recdExprBindings + | NONTERM_recdBinding + | NONTERM_objExpr + | NONTERM_objExprBaseCall + | NONTERM_opt_objExprBindings + | NONTERM_objExprBindings + | NONTERM_objExprInterfaces + | NONTERM_opt_objExprInterfaces + | NONTERM_objExprInterface + | NONTERM_braceBarExpr + | NONTERM_braceBarExprCore + | NONTERM_anonLambdaExpr + | NONTERM_anonMatchingExpr + | NONTERM_typeWithTypeConstraints + | NONTERM_topTypeWithTypeConstraints + | NONTERM_opt_topReturnTypeWithTypeConstraints + | NONTERM_topType + | NONTERM_topTupleType + | NONTERM_topTupleTypeElements + | NONTERM_topAppType + | NONTERM_typ + | NONTERM_typEOF + | NONTERM_tupleType + | NONTERM_tupleOrQuotTypeElements + | NONTERM_appTypeCon + | NONTERM_appTypeConPower + | NONTERM_appType + | NONTERM_arrayTypeSuffix + | NONTERM_appTypePrefixArguments + | NONTERM_typeArgListElements + | NONTERM_powerType + | NONTERM_atomTypeNonAtomicDeprecated + | NONTERM_atomTypeOrAnonRecdType + | NONTERM_atomType + | NONTERM_typeArgsNoHpaDeprecated + | NONTERM_typeArgsActual + | NONTERM_typeArgActual + | NONTERM_typeArgActualOrDummyIfEmpty + | NONTERM_dummyTypeArg + | NONTERM_measureTypeArg + | NONTERM_measureTypeAtom + | NONTERM_measureTypePower + | NONTERM_measureTypeSeq + | NONTERM_measureTypeExpr + | NONTERM_typar + | NONTERM_staticallyKnownHeadTypar + | NONTERM_ident + | NONTERM_path + | NONTERM_opName + | NONTERM_operatorName + | NONTERM_activePatternCaseName + | NONTERM_activePatternCaseNames + | NONTERM_identOrOp + | NONTERM_pathOp + | NONTERM_nameop + | NONTERM_topSeparator + | NONTERM_topSeparators + | NONTERM_opt_topSeparators + | NONTERM_seps + | NONTERM_declEnd + | NONTERM_opt_declEnd + | NONTERM_opt_ODECLEND + | NONTERM_deprecated_opt_equals + | NONTERM_opt_OBLOCKSEP + | NONTERM_opt_seps + | NONTERM_opt_rec + | NONTERM_opt_bar + | NONTERM_opt_inline + | NONTERM_opt_mutable + | NONTERM_doToken + | NONTERM_doneDeclEnd + | NONTERM_structOrBegin + | NONTERM_sigOrBegin + | NONTERM_colonOrEquals + | NONTERM_stringOrKeywordString + | NONTERM_opt_HIGH_PRECEDENCE_APP + | NONTERM_opt_HIGH_PRECEDENCE_TYAPP + | NONTERM_typeKeyword + | NONTERM_moduleKeyword + | NONTERM_rbrace + | NONTERM_bar_rbrace + | NONTERM_rparen + | NONTERM_oblockend + | NONTERM_ends_other_than_rparen_coming_soon_or_recover + | NONTERM_ends_coming_soon_or_recover +/// This function maps tokens to integer indexes +val tagOfToken: token -> int + +/// This function maps integer indexes to symbolic token ids +val tokenTagToTokenId: int -> tokenId + +/// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that production +val prodIdxToNonTerminal: int -> nonTerminalId + +/// This function gets the name of a token as a string +val token_to_string: token -> string +val signatureFile : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> (Ast.ParsedSigFile) +val implementationFile : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> (Ast.ParsedImplFile) +val interaction : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> (Ast.ParsedFsiInteraction) +val typedSeqExprEOF : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> (Ast.SynExpr) +val typEOF : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> (Ast.SynType) diff --git a/src/fsharp/FSharp.Compiler.Private/pplex.fs b/src/fsharp/FSharp.Compiler.Private/pplex.fs new file mode 100644 index 0000000000..b6ece265d0 --- /dev/null +++ b/src/fsharp/FSharp.Compiler.Private/pplex.fs @@ -0,0 +1,172 @@ +# 3 "../pplex.fsl" + + +module internal FSharp.Compiler.PPLexer + +open System + +open FSharp.Compiler.Ast +open FSharp.Compiler.ErrorLogger +open FSharp.Compiler.Lexhelp + +open Internal.Utilities.Text.Lexing + +let lexeme (lexbuf : UnicodeLexing.Lexbuf) = UnicodeLexing.Lexbuf.LexemeString lexbuf + +let fail (args : lexargs) (lexbuf:UnicodeLexing.Lexbuf) e = + let m = lexbuf.LexemeRange + args.errorLogger.ErrorR(Error(e,m)) + PPParser.EOF + +# 21 "pplex.fs" +let trans : uint16[] array = + [| + (* State 0 *) + [| 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 1us; 2us; |]; + (* State 1 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 2 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 3 *) + [| 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 11us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 11us; 6us; 13us; 4us; 13us; 13us; 7us; 13us; 9us; 10us; 13us; 13us; 13us; 13us; 13us; 12us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 13us; 13us; 13us; 13us; 5us; 13us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 13us; 8us; 13us; 13us; 13us; 5us; 5us; 5us; 5us; 5us; 13us; 13us; 13us; 13us; 5us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 13us; 14us; |]; + (* State 4 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 23us; 65535us; 65535us; 65535us; 22us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 5 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 21us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 65535us; 65535us; 65535us; 65535us; 21us; 65535us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 65535us; 65535us; 65535us; 65535us; 65535us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 65535us; 21us; 21us; 65535us; 65535us; 65535us; 65535us; 65535us; 21us; 65535us; 65535us; 21us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 6 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 7 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 20us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 8 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 19us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 9 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 17us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 10 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 11 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 12 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 15us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 13 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 14 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 15 *) + [| 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 65535us; |]; + (* State 16 *) + [| 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 16us; 65535us; |]; + (* State 17 *) + [| 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 65535us; |]; + (* State 18 *) + [| 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 18us; 65535us; |]; + (* State 19 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 20 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 21 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 21us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 65535us; 65535us; 65535us; 65535us; 21us; 65535us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 65535us; 65535us; 65535us; 65535us; 65535us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 65535us; 21us; 21us; 65535us; 65535us; 65535us; 65535us; 65535us; 21us; 65535us; 65535us; 21us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 22 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 27us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 23 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 24us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 24 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 25us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 25 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 26us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 26 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + (* State 27 *) + [| 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |]; + |] +let actions : uint16[] = [|65535us; 0us; 1us; 65535us; 11us; 2us; 3us; 11us; 11us; 6us; 7us; 8us; 11us; 11us; 12us; 9us; 9us; 10us; 10us; 5us; 4us; 2us; 65535us; 65535us; 65535us; 65535us; 1us; 0us; |] +let _fslex_tables = Internal.Utilities.Text.Lexing.UnicodeTables.Create(trans,actions) +let rec _fslex_dummy () = _fslex_dummy() +// Rule tokenstream +and tokenstream args lexbuf = + match _fslex_tables.Interpret(3,lexbuf) with + | 0 -> ( +# 47 "../pplex.fsl" + PPParser.PRELUDE +# 90 "pplex.fs" + ) + | 1 -> ( +# 48 "../pplex.fsl" + PPParser.PRELUDE +# 95 "pplex.fs" + ) + | 2 -> ( +# 49 "../pplex.fsl" + PPParser.ID(lexeme lexbuf) +# 100 "pplex.fs" + ) + | 3 -> ( +# 51 "../pplex.fsl" + PPParser.OP_NOT +# 105 "pplex.fs" + ) + | 4 -> ( +# 52 "../pplex.fsl" + PPParser.OP_AND +# 110 "pplex.fs" + ) + | 5 -> ( +# 53 "../pplex.fsl" + PPParser.OP_OR +# 115 "pplex.fs" + ) + | 6 -> ( +# 54 "../pplex.fsl" + PPParser.LPAREN +# 120 "pplex.fs" + ) + | 7 -> ( +# 55 "../pplex.fsl" + PPParser.RPAREN +# 125 "pplex.fs" + ) + | 8 -> ( +# 57 "../pplex.fsl" + tokenstream args lexbuf +# 130 "pplex.fs" + ) + | 9 -> ( +# 59 "../pplex.fsl" + PPParser.EOF +# 135 "pplex.fs" + ) + | 10 -> ( +# 60 "../pplex.fsl" + fail args lexbuf (FSComp.SR.pplexExpectedSingleLineComment()) +# 140 "pplex.fs" + ) + | 11 -> ( +# 61 "../pplex.fsl" + + let lex = lexeme lexbuf + let _ = rest lexbuf + fail args lexbuf (FSComp.SR.pplexUnexpectedChar(lex)) + +# 149 "pplex.fs" + ) + | 12 -> ( +# 66 "../pplex.fsl" + PPParser.EOF +# 154 "pplex.fs" + ) + | _ -> failwith "tokenstream" +// Rule rest +and rest lexbuf = + match _fslex_tables.Interpret(0,lexbuf) with + | 0 -> ( +# 69 "../pplex.fsl" + rest lexbuf +# 163 "pplex.fs" + ) + | 1 -> ( +# 70 "../pplex.fsl" + () +# 168 "pplex.fs" + ) + | _ -> failwith "rest" + +# 3000000 "pplex.fs" diff --git a/src/fsharp/FSharp.Compiler.Private/pppars.fs b/src/fsharp/FSharp.Compiler.Private/pppars.fs new file mode 100644 index 0000000000..fab1429a24 --- /dev/null +++ b/src/fsharp/FSharp.Compiler.Private/pppars.fs @@ -0,0 +1,374 @@ +// Implementation file for parser generated by fsyacc +module internal FSharp.Compiler.PPParser +#nowarn "64";; // turn off warnings that type variables used in production annotations are instantiated to concrete type +open FSharp.Compiler +open Internal.Utilities.Text.Lexing +open Internal.Utilities.Text.Parsing.ParseHelpers +# 3 "../pppars.fsy" + +open FSharp.Compiler.Ast +open FSharp.Compiler.ErrorLogger + +let dummy = IfdefId("DUMMY") + +let doNothing _ dflt= + dflt + +let fail (ps : Internal.Utilities.Text.Parsing.IParseState) i e = + let f,t = ps.InputRange i + let m = mkSynRange f t + errorR(Error(e,m)) + dummy + +# 23 "pppars.fs" +// This type is the type of tokens accepted by the parser +type token = + | OP_NOT + | OP_AND + | OP_OR + | LPAREN + | RPAREN + | PRELUDE + | EOF + | ID of (string) +// This type is used to give symbolic names to token indexes, useful for error messages +type tokenId = + | TOKEN_OP_NOT + | TOKEN_OP_AND + | TOKEN_OP_OR + | TOKEN_LPAREN + | TOKEN_RPAREN + | TOKEN_PRELUDE + | TOKEN_EOF + | TOKEN_ID + | TOKEN_end_of_input + | TOKEN_error +// This type is used to give symbolic names to token indexes, useful for error messages +type nonTerminalId = + | NONTERM__startstart + | NONTERM_start + | NONTERM_Recover + | NONTERM_Full + | NONTERM_Expr + +// This function maps tokens to integer indexes +let tagOfToken (t:token) = + match t with + | OP_NOT -> 0 + | OP_AND -> 1 + | OP_OR -> 2 + | LPAREN -> 3 + | RPAREN -> 4 + | PRELUDE -> 5 + | EOF -> 6 + | ID _ -> 7 + +// This function maps integer indexes to symbolic token ids +let tokenTagToTokenId (tokenIdx:int) = + match tokenIdx with + | 0 -> TOKEN_OP_NOT + | 1 -> TOKEN_OP_AND + | 2 -> TOKEN_OP_OR + | 3 -> TOKEN_LPAREN + | 4 -> TOKEN_RPAREN + | 5 -> TOKEN_PRELUDE + | 6 -> TOKEN_EOF + | 7 -> TOKEN_ID + | 10 -> TOKEN_end_of_input + | 8 -> TOKEN_error + | _ -> failwith "tokenTagToTokenId: bad token" + +/// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that production +let prodIdxToNonTerminal (prodIdx:int) = + match prodIdx with + | 0 -> NONTERM__startstart + | 1 -> NONTERM_start + | 2 -> NONTERM_Recover + | 3 -> NONTERM_Full + | 4 -> NONTERM_Full + | 5 -> NONTERM_Expr + | 6 -> NONTERM_Expr + | 7 -> NONTERM_Expr + | 8 -> NONTERM_Expr + | 9 -> NONTERM_Expr + | 10 -> NONTERM_Expr + | 11 -> NONTERM_Expr + | 12 -> NONTERM_Expr + | 13 -> NONTERM_Expr + | 14 -> NONTERM_Expr + | 15 -> NONTERM_Expr + | 16 -> NONTERM_Expr + | 17 -> NONTERM_Expr + | 18 -> NONTERM_Expr + | _ -> failwith "prodIdxToNonTerminal: bad production index" + +let _fsyacc_endOfInputTag = 10 +let _fsyacc_tagOfErrorTerminal = 8 + +// This function gets the name of a token as a string +let token_to_string (t:token) = + match t with + | OP_NOT -> "OP_NOT" + | OP_AND -> "OP_AND" + | OP_OR -> "OP_OR" + | LPAREN -> "LPAREN" + | RPAREN -> "RPAREN" + | PRELUDE -> "PRELUDE" + | EOF -> "EOF" + | ID _ -> "ID" + +// This function gets the data carried by a token as an object +let _fsyacc_dataOfToken (t:token) = + match t with + | OP_NOT -> (null : System.Object) + | OP_AND -> (null : System.Object) + | OP_OR -> (null : System.Object) + | LPAREN -> (null : System.Object) + | RPAREN -> (null : System.Object) + | PRELUDE -> (null : System.Object) + | EOF -> (null : System.Object) + | ID _fsyacc_x -> Microsoft.FSharp.Core.Operators.box _fsyacc_x +let _fsyacc_gotos = [| 0us; 65535us; 1us; 65535us; 0us; 1us; 11us; 65535us; 0us; 8us; 6us; 29us; 9us; 26us; 10us; 25us; 13us; 23us; 14us; 29us; 15us; 29us; 16us; 29us; 19us; 20us; 21us; 22us; 27us; 28us; 1us; 65535us; 0us; 2us; 5us; 65535us; 5us; 6us; 9us; 10us; 13us; 14us; 17us; 15us; 18us; 16us; |] +let _fsyacc_sparseGotoTableRowOffsets = [|0us; 1us; 3us; 15us; 17us; |] +let _fsyacc_stateToProdIdxsTableElements = [| 1us; 0us; 1us; 0us; 1us; 1us; 1us; 2us; 2us; 2us; 13us; 1us; 3us; 4us; 3us; 8us; 9us; 17us; 1us; 3us; 1us; 4us; 4us; 5us; 13us; 14us; 15us; 5us; 5us; 8us; 9us; 14us; 17us; 1us; 5us; 1us; 6us; 2us; 7us; 12us; 4us; 7us; 8us; 9us; 17us; 4us; 8us; 8us; 9us; 17us; 4us; 8us; 9us; 9us; 17us; 1us; 8us; 1us; 9us; 1us; 10us; 1us; 10us; 1us; 11us; 1us; 11us; 1us; 12us; 1us; 13us; 2us; 14us; 17us; 1us; 15us; 1us; 16us; 1us; 16us; 1us; 17us; 1us; 18us; |] +let _fsyacc_stateToProdIdxsTableRowOffsets = [|0us; 2us; 4us; 6us; 8us; 11us; 13us; 18us; 20us; 22us; 27us; 33us; 35us; 37us; 40us; 45us; 50us; 55us; 57us; 59us; 61us; 63us; 65us; 67us; 69us; 71us; 74us; 76us; 78us; 80us; 82us; |] +let _fsyacc_action_rows = 31 +let _fsyacc_actionTableElements = [|2us; 32768us; 5us; 5us; 8us; 3us; 0us; 49152us; 0us; 16385us; 0us; 16386us; 1us; 16386us; 4us; 24us; 7us; 32768us; 0us; 13us; 1us; 19us; 2us; 21us; 3us; 9us; 4us; 27us; 6us; 30us; 7us; 12us; 4us; 32768us; 1us; 17us; 2us; 18us; 6us; 7us; 8us; 3us; 0us; 16387us; 0us; 16388us; 8us; 32768us; 0us; 13us; 1us; 19us; 2us; 21us; 3us; 9us; 4us; 27us; 6us; 30us; 7us; 12us; 8us; 4us; 4us; 32768us; 1us; 17us; 2us; 18us; 4us; 11us; 8us; 3us; 0us; 16389us; 0us; 16390us; 8us; 32768us; 0us; 13us; 1us; 19us; 2us; 21us; 3us; 9us; 4us; 27us; 6us; 30us; 7us; 12us; 8us; 3us; 1us; 16391us; 8us; 3us; 1us; 16392us; 8us; 3us; 2us; 16393us; 1us; 17us; 8us; 3us; 7us; 32768us; 0us; 13us; 1us; 19us; 2us; 21us; 3us; 9us; 4us; 27us; 6us; 30us; 7us; 12us; 7us; 32768us; 0us; 13us; 1us; 19us; 2us; 21us; 3us; 9us; 4us; 27us; 6us; 30us; 7us; 12us; 1us; 32768us; 8us; 3us; 0us; 16394us; 1us; 32768us; 8us; 3us; 0us; 16395us; 0us; 16396us; 0us; 16397us; 0us; 16398us; 0us; 16399us; 1us; 32768us; 8us; 3us; 0us; 16400us; 0us; 16401us; 0us; 16402us; |] +let _fsyacc_actionTableRowOffsets = [|0us; 3us; 4us; 5us; 6us; 8us; 16us; 21us; 22us; 23us; 32us; 37us; 38us; 39us; 48us; 50us; 52us; 55us; 63us; 71us; 73us; 74us; 76us; 77us; 78us; 79us; 80us; 81us; 83us; 84us; 85us; |] +let _fsyacc_reductionSymbolCounts = [|1us; 1us; 1us; 3us; 1us; 3us; 1us; 2us; 3us; 3us; 2us; 2us; 2us; 3us; 3us; 2us; 2us; 2us; 1us; |] +let _fsyacc_productionToNonTerminalTable = [|0us; 1us; 2us; 3us; 3us; 4us; 4us; 4us; 4us; 4us; 4us; 4us; 4us; 4us; 4us; 4us; 4us; 4us; 4us; |] +let _fsyacc_immediateActions = [|65535us; 49152us; 16385us; 16386us; 65535us; 65535us; 65535us; 16387us; 16388us; 65535us; 65535us; 16389us; 16390us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 16394us; 65535us; 16395us; 16396us; 16397us; 65535us; 16399us; 65535us; 16400us; 16401us; 16402us; |] +let _fsyacc_reductions () = [| +# 142 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : LexerIfdefExpression )) in + Microsoft.FSharp.Core.Operators.box + ( + ( + raise (Internal.Utilities.Text.Parsing.Accept(Microsoft.FSharp.Core.Operators.box _1)) + ) + : '_startstart)); +# 151 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Full)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 37 "../pppars.fsy" + _1 + ) +# 37 "../pppars.fsy" + : LexerIfdefExpression )); +# 162 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 40 "../pppars.fsy" + doNothing parseState () + ) +# 40 "../pppars.fsy" + : 'Recover)); +# 172 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 43 "../pppars.fsy" + _2 + ) +# 43 "../pppars.fsy" + : 'Full)); +# 183 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 44 "../pppars.fsy" + fail parseState 1 (FSComp.SR.ppparsMissingToken("#if/#elif")) + ) +# 44 "../pppars.fsy" + : 'Full)); +# 194 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 47 "../pppars.fsy" + _2 + ) +# 47 "../pppars.fsy" + : 'Expr)); +# 205 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : string)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 48 "../pppars.fsy" + IfdefId(_1) + ) +# 48 "../pppars.fsy" + : 'Expr)); +# 216 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 49 "../pppars.fsy" + IfdefNot(_2) + ) +# 49 "../pppars.fsy" + : 'Expr)); +# 227 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 50 "../pppars.fsy" + IfdefAnd(_1,_3) + ) +# 50 "../pppars.fsy" + : 'Expr)); +# 239 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 51 "../pppars.fsy" + IfdefOr(_1,_3) + ) +# 51 "../pppars.fsy" + : 'Expr)); +# 251 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 53 "../pppars.fsy" + fail parseState 1 (FSComp.SR.ppparsUnexpectedToken("&&")) + ) +# 53 "../pppars.fsy" + : 'Expr)); +# 262 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 54 "../pppars.fsy" + fail parseState 1 (FSComp.SR.ppparsUnexpectedToken("||")) + ) +# 54 "../pppars.fsy" + : 'Expr)); +# 273 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 55 "../pppars.fsy" + fail parseState 1 (FSComp.SR.ppparsUnexpectedToken("!")) + ) +# 55 "../pppars.fsy" + : 'Expr)); +# 284 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 56 "../pppars.fsy" + doNothing parseState dummy + ) +# 56 "../pppars.fsy" + : 'Expr)); +# 294 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in + let _3 = (let data = parseState.GetInput(3) in (Microsoft.FSharp.Core.Operators.unbox data : 'Recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 57 "../pppars.fsy" + fail parseState 3 (FSComp.SR.ppparsMissingToken(")")) + ) +# 57 "../pppars.fsy" + : 'Expr)); +# 306 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 58 "../pppars.fsy" + fail parseState 2 (FSComp.SR.ppparsIncompleteExpression()) + ) +# 58 "../pppars.fsy" + : 'Expr)); +# 317 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 59 "../pppars.fsy" + fail parseState 1 (FSComp.SR.ppparsUnexpectedToken(")")) + ) +# 59 "../pppars.fsy" + : 'Expr)); +# 328 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + let _1 = (let data = parseState.GetInput(1) in (Microsoft.FSharp.Core.Operators.unbox data : 'Expr)) in + let _2 = (let data = parseState.GetInput(2) in (Microsoft.FSharp.Core.Operators.unbox data : 'Recover)) in + Microsoft.FSharp.Core.Operators.box + ( + ( +# 60 "../pppars.fsy" + fail parseState 2 (FSComp.SR.ppparsIncompleteExpression()) + ) +# 60 "../pppars.fsy" + : 'Expr)); +# 340 "pppars.fs" + (fun (parseState : Internal.Utilities.Text.Parsing.IParseState) -> + Microsoft.FSharp.Core.Operators.box + ( + ( +# 61 "../pppars.fsy" + fail parseState 1 (FSComp.SR.ppparsIncompleteExpression()) + ) +# 61 "../pppars.fsy" + : 'Expr)); +|] +# 351 "pppars.fs" +let tables () : Internal.Utilities.Text.Parsing.Tables<_> = + { reductions= _fsyacc_reductions (); + endOfInputTag = _fsyacc_endOfInputTag; + tagOfToken = tagOfToken; + dataOfToken = _fsyacc_dataOfToken; + actionTableElements = _fsyacc_actionTableElements; + actionTableRowOffsets = _fsyacc_actionTableRowOffsets; + stateToProdIdxsTableElements = _fsyacc_stateToProdIdxsTableElements; + stateToProdIdxsTableRowOffsets = _fsyacc_stateToProdIdxsTableRowOffsets; + reductionSymbolCounts = _fsyacc_reductionSymbolCounts; + immediateActions = _fsyacc_immediateActions; + gotos = _fsyacc_gotos; + sparseGotoTableRowOffsets = _fsyacc_sparseGotoTableRowOffsets; + tagOfErrorTerminal = _fsyacc_tagOfErrorTerminal; + parseError = (fun (ctxt:Internal.Utilities.Text.Parsing.ParseErrorContext<_>) -> + match parse_error_rich with + | Some f -> f ctxt + | None -> parse_error ctxt.Message); + numTerminals = 11; + productionToNonTerminalTable = _fsyacc_productionToNonTerminalTable } +let engine lexer lexbuf startState = (tables ()).Interpret(lexer, lexbuf, startState) +let start lexer lexbuf : LexerIfdefExpression = + Microsoft.FSharp.Core.Operators.unbox ((tables ()).Interpret(lexer, lexbuf, 0)) diff --git a/src/fsharp/FSharp.Compiler.Private/pppars.fsi b/src/fsharp/FSharp.Compiler.Private/pppars.fsi new file mode 100644 index 0000000000..a4365fd1d1 --- /dev/null +++ b/src/fsharp/FSharp.Compiler.Private/pppars.fsi @@ -0,0 +1,41 @@ +// Signature file for parser generated by fsyacc +module internal FSharp.Compiler.PPParser +open FSharp.Compiler +type token = + | OP_NOT + | OP_AND + | OP_OR + | LPAREN + | RPAREN + | PRELUDE + | EOF + | ID of (string) +type tokenId = + | TOKEN_OP_NOT + | TOKEN_OP_AND + | TOKEN_OP_OR + | TOKEN_LPAREN + | TOKEN_RPAREN + | TOKEN_PRELUDE + | TOKEN_EOF + | TOKEN_ID + | TOKEN_end_of_input + | TOKEN_error +type nonTerminalId = + | NONTERM__startstart + | NONTERM_start + | NONTERM_Recover + | NONTERM_Full + | NONTERM_Expr +/// This function maps tokens to integer indexes +val tagOfToken: token -> int + +/// This function maps integer indexes to symbolic token ids +val tokenTagToTokenId: int -> tokenId + +/// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that production +val prodIdxToNonTerminal: int -> nonTerminalId + +/// This function gets the name of a token as a string +val token_to_string: token -> string +val start : (Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> token) -> Internal.Utilities.Text.Lexing.LexBuffer<'cty> -> ( LexerIfdefExpression ) diff --git a/src/fsharp/FSharp.Compiler.nuget/Directory.Build.props b/src/fsharp/FSharp.Compiler.nuget/Directory.Build.props deleted file mode 100644 index 7cd41381b5..0000000000 --- a/src/fsharp/FSharp.Compiler.nuget/Directory.Build.props +++ /dev/null @@ -1,9 +0,0 @@ - - - - true - - - - - diff --git a/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.csproj b/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.csproj deleted file mode 100644 index 21c76c5808..0000000000 --- a/src/fsharp/FSharp.Compiler.nuget/Microsoft.FSharp.Compiler.csproj +++ /dev/null @@ -1,28 +0,0 @@ - - - - true - netcoreapp2.1 - Microsoft.FSharp.Compiler.nuspec - true - .NET Core compatible version of the F# compiler fsc.exe. - - - - - TargetFramework=netcoreapp2.1 - - - TargetFramework=netcoreapp2.1 - - - TargetFramework=netcoreapp2.1 - - - TargetFramework=netstandard2.0 - - - - - - diff --git a/src/fsharp/FSharp.Core.nuget/Directory.Build.props b/src/fsharp/FSharp.Core.nuget/Directory.Build.props deleted file mode 100644 index 7509ab35a1..0000000000 --- a/src/fsharp/FSharp.Core.nuget/Directory.Build.props +++ /dev/null @@ -1,9 +0,0 @@ - - - - true - - - - - diff --git a/src/fsharp/FSharp.Core.nuget/FSharp.Core.nuget.csproj b/src/fsharp/FSharp.Core.nuget/FSharp.Core.nuget.csproj deleted file mode 100644 index b55bc2feba..0000000000 --- a/src/fsharp/FSharp.Core.nuget/FSharp.Core.nuget.csproj +++ /dev/null @@ -1,24 +0,0 @@ - - - - true - net45;netstandard2.0 - FSharp.Core - FSharp.Core.nuspec - true - FSharp.Core redistributables from Visual F# Tools version $(FSPackageMajorVersion) For F# $(FSCoreMajorVersion). Contains code from the F# Software Foundation. - - - - - - - - - false - - - - - - diff --git a/src/fsharp/FSharp.Core.nuget/icon.png b/src/fsharp/FSharp.Core.nuget/icon.png deleted file mode 100644 index 8a2b81b9eb..0000000000 Binary files a/src/fsharp/FSharp.Core.nuget/icon.png and /dev/null differ diff --git a/src/fsharp/FSharp.Core/FSharp.Core.fsproj b/src/fsharp/FSharp.Core/FSharp.Core.fsproj index ef68a28e6d..360dc74e37 100644 --- a/src/fsharp/FSharp.Core/FSharp.Core.fsproj +++ b/src/fsharp/FSharp.Core/FSharp.Core.fsproj @@ -10,7 +10,7 @@ true $(DefineConstants);FSHARP_CORE BUILDING_WITH_LKG;$(DefineConstants) - $(OtherFlags) --warnon:1182 --compiling-fslib --compiling-fslib-40 --maxerrors:20 --extraoptimizationloops:1 + $(OtherFlags) --warnon:1182 --compiling-fslib --compiling-fslib-40 --maxerrors:20 --extraoptimizationloops:1 --nowarn:57 true true diff --git a/src/fsharp/FSharp.Core/async.fs b/src/fsharp/FSharp.Core/async.fs index b6ab88a16f..4655b0d73f 100644 --- a/src/fsharp/FSharp.Core/async.fs +++ b/src/fsharp/FSharp.Core/async.fs @@ -1647,19 +1647,19 @@ namespace Microsoft.FSharp.Control let resultCell = new ResultCell<_>() let! cancellationToken = cancellationTokenAsync let innerCTS = new CancellationTokenSource() // innerCTS does not require disposal - let ctsRef = ref innerCTS + let mutable ctsRef = innerCTS let reg = cancellationToken.Register( (fun _ -> - match !ctsRef with + match ctsRef with | null -> () | otherwise -> otherwise.Cancel()), null) do QueueAsync innerCTS.Token // since innerCTS is not ever Disposed, can call reg.Dispose() without a safety Latch - (fun res -> ctsRef := null; reg.Dispose(); resultCell.RegisterResult (Ok res, reuseThread=true)) - (fun edi -> ctsRef := null; reg.Dispose(); resultCell.RegisterResult (Error edi, reuseThread=true)) - (fun err -> ctsRef := null; reg.Dispose(); resultCell.RegisterResult (Canceled err, reuseThread=true)) + (fun res -> ctsRef <- null; reg.Dispose(); resultCell.RegisterResult (Ok res, reuseThread=true)) + (fun edi -> ctsRef <- null; reg.Dispose(); resultCell.RegisterResult (Error edi, reuseThread=true)) + (fun err -> ctsRef <- null; reg.Dispose(); resultCell.RegisterResult (Canceled err, reuseThread=true)) computation |> unfake @@ -1713,10 +1713,10 @@ namespace Microsoft.FSharp.Control [] // give the extension member a 'nice', unmangled compiled name, unique within this module member stream.AsyncRead count = async { let buffer = Array.zeroCreate count - let i = ref 0 - while !i < count do - let! n = stream.AsyncRead(buffer, !i, count - !i) - i := !i + n + let mutable i = 0 + while i < count do + let! n = stream.AsyncRead(buffer, i, count - i) + i <- i + n if n = 0 then raise(System.IO.EndOfStreamException(SR.GetString(SR.failedReadEnoughBytes))) return buffer } @@ -1746,16 +1746,16 @@ namespace Microsoft.FSharp.Control [] // give the extension member a 'nice', unmangled compiled name, unique within this module member req.AsyncGetResponse() : Async= - let canceled = ref false // WebException with Status = WebExceptionStatus.RequestCanceled can be raised in other situations except cancellation, use flag to filter out false positives + let mutable canceled = false // WebException with Status = WebExceptionStatus.RequestCanceled can be raised in other situations except cancellation, use flag to filter out false positives // Use CreateTryWithFilterAsync to allow propagation of exception without losing stack Async.FromBeginEnd(beginAction=req.BeginGetResponse, endAction = req.EndGetResponse, - cancelAction = fun() -> canceled := true; req.Abort()) + cancelAction = fun() -> canceled <- true; req.Abort()) |> CreateTryWithFilterAsync (fun exn -> match exn with | :? System.Net.WebException as webExn - when webExn.Status = System.Net.WebExceptionStatus.RequestCanceled && !canceled -> + when webExn.Status = System.Net.WebExceptionStatus.RequestCanceled && canceled -> Some (Async.BindResult(AsyncResult.Canceled (OperationCanceledException webExn.Message))) | _ -> diff --git a/src/fsharp/FSharp.Core/eventmodule.fs b/src/fsharp/FSharp.Core/eventmodule.fs index 1d615a307c..fe907373f5 100644 --- a/src/fsharp/FSharp.Core/eventmodule.fs +++ b/src/fsharp/FSharp.Core/eventmodule.fs @@ -40,12 +40,12 @@ namespace Microsoft.FSharp.Control [] let scan collector state (sourceEvent: IEvent<'Delegate,'T>) = - let state = ref state + let mutable state = state let ev = new Event<_>() sourceEvent.Add(fun msg -> - let z = !state + let z = state let z = collector z msg - state := z; + state <- z; ev.Trigger(z)) ev.Publish @@ -55,12 +55,12 @@ namespace Microsoft.FSharp.Control [] let pairwise (sourceEvent : IEvent<'Delegate,'T>) : IEvent<'T * 'T> = let ev = new Event<'T * 'T>() - let lastArgs = ref None + let mutable lastArgs = None sourceEvent.Add(fun args2 -> - (match !lastArgs with + (match lastArgs with | None -> () | Some args1 -> ev.Trigger(args1,args2)) - lastArgs := Some args2) + lastArgs <- Some args2) ev.Publish diff --git a/src/fsharp/FSharp.Core/list.fs b/src/fsharp/FSharp.Core/list.fs index 87035fb3c6..920f0f0d9f 100644 --- a/src/fsharp/FSharp.Core/list.fs +++ b/src/fsharp/FSharp.Core/list.fs @@ -100,7 +100,7 @@ namespace Microsoft.FSharp.Collections loop ([], state) (rev list) [] - let iter action list = Microsoft.FSharp.Primitives.Basics.List.iter action list + let inline iter action (list:'T list) = for x in list do action x [] let distinct (list:'T list) = Microsoft.FSharp.Primitives.Basics.List.distinctWithComparer HashIdentity.Structural<'T> list @@ -164,18 +164,20 @@ namespace Microsoft.FSharp.Collections let takeWhile predicate (list: 'T list) = Microsoft.FSharp.Primitives.Basics.List.takeWhile predicate list [] - let iteri action list = Microsoft.FSharp.Primitives.Basics.List.iteri action list + let inline iteri action (list: 'T list) = + let mutable n = 0 + for x in list do action n x; n <- n + 1 [] let init length initializer = Microsoft.FSharp.Primitives.Basics.List.init length initializer - let rec initConstAcc n x acc = - if n <= 0 then acc else initConstAcc (n-1) x (x :: acc) - [] let replicate count initial = if count < 0 then invalidArg "count" (SR.GetString(SR.inputMustBeNonNegative)) - initConstAcc count initial [] + let mutable result = [] + for i in 0..count-1 do + result <- initial :: result + result [] let iter2 action list1 list2 = diff --git a/src/fsharp/FSharp.Core/list.fsi b/src/fsharp/FSharp.Core/list.fsi index aba9b3505b..26c5dad94e 100644 --- a/src/fsharp/FSharp.Core/list.fsi +++ b/src/fsharp/FSharp.Core/list.fsi @@ -380,7 +380,7 @@ namespace Microsoft.FSharp.Collections /// The function to apply to elements from the input list. /// The input list. [] - val iter: action:('T -> unit) -> list:'T list -> unit + val inline iter: action:('T -> unit) -> list:'T list -> unit /// Applies the given function to two collections simultaneously. The /// collections must have identical size. @@ -395,7 +395,7 @@ namespace Microsoft.FSharp.Collections /// The function to apply to the elements of the list along with their index. /// The input list. [] - val iteri: action:(int -> 'T -> unit) -> list:'T list -> unit + val inline iteri: action:(int -> 'T -> unit) -> list:'T list -> unit /// Applies the given function to two collections simultaneously. The /// collections must have identical size. The integer passed to the diff --git a/src/fsharp/FSharp.Core/local.fs b/src/fsharp/FSharp.Core/local.fs index 0e97166352..3d812fc72c 100644 --- a/src/fsharp/FSharp.Core/local.fs +++ b/src/fsharp/FSharp.Core/local.fs @@ -83,13 +83,11 @@ open System.Collections.Generic module internal List = - let arrayZeroCreate (n:int) = (# "newarr !0" type ('T) n : 'T array #) + let inline arrayZeroCreate (n:int) = (# "newarr !0" type ('T) n : 'T array #) [] let nonempty x = match x with [] -> false | _ -> true - let rec iter f x = match x with [] -> () | h :: t -> f h; iter f t - // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let inline setFreshConsTail cons t = cons.( :: ).1 <- t @@ -499,15 +497,6 @@ module internal List = else filter predicate t - let iteri action x = - let f = OptimizedClosures.FSharpFunc<_, _, _>.Adapt(action) - let rec loop n x = - match x with - | [] -> () - | h :: t -> f.Invoke(n, h); loop (n+1) t - - loop 0 x - // optimized mutation-based implementation. This code is only valid in fslib, where mutation of private // tail cons cells is permitted in carefully written library code. let rec concatToFreshConsTail cons h1 l = @@ -1185,13 +1174,13 @@ module internal Array = let count = min count len let res = zeroCreateUnchecked count : 'T[][] let minChunkSize = len / count - let startIndex = ref 0 + let mutable startIndex = 0 for i = 0 to len % count - 1 do - res.[i] <- subUnchecked !startIndex (minChunkSize + 1) array - startIndex := !startIndex + minChunkSize + 1 + res.[i] <- subUnchecked startIndex (minChunkSize + 1) array + startIndex <- startIndex + minChunkSize + 1 for i = len % count to count - 1 do - res.[i] <- subUnchecked !startIndex minChunkSize array - startIndex := !startIndex + minChunkSize + res.[i] <- subUnchecked startIndex minChunkSize array + startIndex <- startIndex + minChunkSize res module internal Seq = diff --git a/src/fsharp/FSharp.Core/local.fsi b/src/fsharp/FSharp.Core/local.fsi index b5bcec9e95..2c9996d4f1 100644 --- a/src/fsharp/FSharp.Core/local.fsi +++ b/src/fsharp/FSharp.Core/local.fsi @@ -32,7 +32,6 @@ module internal List = val distinctWithComparer : System.Collections.Generic.IEqualityComparer<'T> -> 'T list -> 'T list val distinctByWithComparer : System.Collections.Generic.IEqualityComparer<'Key> -> ('T -> 'Key) -> list:'T list -> 'T list when 'Key : equality val init : int -> (int -> 'T) -> 'T list - val iter : ('T -> unit) -> 'T list -> unit val filter : predicate:('T -> bool) -> 'T list -> 'T list val collect : ('T -> 'U list) -> 'T list -> 'U list val partition : predicate:('T -> bool) -> 'T list -> 'T list * 'T list @@ -48,7 +47,6 @@ module internal List = val exists : predicate:('T -> bool) -> 'T list -> bool val rev: 'T list -> 'T list val concat : seq<'T list> -> 'T list - val iteri : action:(int -> 'T -> unit) -> 'T list -> unit val unfold : ('State -> ('T * 'State) option) -> 'State -> 'T list val unzip : ('T1 * 'T2) list -> 'T1 list * 'T2 list val unzip3 : ('T1 * 'T2 * 'T3) list -> 'T1 list * 'T2 list * 'T3 list diff --git a/src/fsharp/FSharp.Core/map.fs b/src/fsharp/FSharp.Core/map.fs index d0fccda1fd..0c7554586f 100644 --- a/src/fsharp/FSharp.Core/map.fs +++ b/src/fsharp/FSharp.Core/map.fs @@ -374,8 +374,8 @@ module MapTree = mkFromEnumerator comparer empty ie let copyToArray m (arr: _[]) i = - let j = ref i - m |> iter (fun x y -> arr.[!j] <- KeyValuePair(x, y); j := !j + 1) + let mutable j = i + m |> iter (fun x y -> arr.[j] <- KeyValuePair(x, y); j <- j + 1) /// Imperative left-to-right iterators. [] diff --git a/src/fsharp/FSharp.Core/prim-types-prelude.fs b/src/fsharp/FSharp.Core/prim-types-prelude.fs index 74c8410170..b95933a7aa 100644 --- a/src/fsharp/FSharp.Core/prim-types-prelude.fs +++ b/src/fsharp/FSharp.Core/prim-types-prelude.fs @@ -28,6 +28,7 @@ namespace Microsoft.FSharp.Core type bool = System.Boolean type decimal = System.Decimal type int = int32 + type uint = uint32 type ``[]``<'T> = (# "!0[]" #) type ``[,]``<'T> = (# "!0[0 ...,0 ...]" #) diff --git a/src/fsharp/FSharp.Core/prim-types-prelude.fsi b/src/fsharp/FSharp.Core/prim-types-prelude.fsi index ed68965bf2..f4dd023159 100644 --- a/src/fsharp/FSharp.Core/prim-types-prelude.fsi +++ b/src/fsharp/FSharp.Core/prim-types-prelude.fsi @@ -78,6 +78,9 @@ namespace Microsoft.FSharp.Core /// An abbreviation for the CLI type System.Int32. type int = int32 + /// An abbreviation for the CLI type System.UInt32. + type uint = uint32 + /// Single dimensional, zero-based arrays, written int[], string[] etc. /// Use the values in the Array module to manipulate values /// of this type, or the notation arr.[x] to get/set array diff --git a/src/fsharp/FSharp.Core/prim-types.fs b/src/fsharp/FSharp.Core/prim-types.fs index 664e1d4c02..4bff05856c 100644 --- a/src/fsharp/FSharp.Core/prim-types.fs +++ b/src/fsharp/FSharp.Core/prim-types.fs @@ -237,11 +237,17 @@ namespace Microsoft.FSharp.Core inherit System.Attribute() member x.Flags = flags + + module internal ExperimentalAttributeMessages = + [] + let RequiresPreview : string = "Experimental library feature, requires '--langversion:preview'" + [] [] type ExperimentalAttribute(message:string) = inherit System.Attribute() - member x.Message = message + + member x.Message = message [] [] @@ -379,7 +385,8 @@ namespace Microsoft.FSharp.Core let inline box (x:'T) = (# "box !0" type ('T) x : obj #) let inline not (b:bool) = (# "ceq" b false : bool #) let inline (=) (x:int) (y:int) = (# "ceq" x y : bool #) - let inline (<>) (x:int) (y:int) = not(# "ceq" x y : bool #) + let inline (<>) (x:int) (y:int) = not(# "ceq" x y : bool #) + let inline (<=) (x:int) (y:int) = not(# "cgt" x y : bool #) let inline (>=) (x:int) (y:int) = not(# "clt" x y : bool #) let inline (>=.) (x:int64) (y:int64) = not(# "clt" x y : bool #) let inline (>=...) (x:char) (y:char) = not(# "clt" x y : bool #) @@ -651,8 +658,15 @@ namespace Microsoft.FSharp.Core let inline GetArray2DLength1 (arr: 'T[,]) = (# "ldlen.multi 2 0" arr : int #) let inline GetArray2DLength2 (arr: 'T[,]) = (# "ldlen.multi 2 1" arr : int #) + let inline GetArray2DLength (arr: 'T[,]) (dim: int) = + match dim with + | 0 -> GetArray2DLength1 arr + | 1 -> GetArray2DLength2 arr + | _ -> raise (System.IndexOutOfRangeException()) + let inline Array2DZeroCreate (n:int) (m:int) = (# "newarr.multi 2 !0" type ('T) n m : 'T[,] #) - let GetArray2DSub (src: 'T[,]) src1 src2 len1 len2 = + + let inline GetArray2DSub (src: 'T[,]) src1 src2 len1 len2 = let len1 = (if len1 < 0 then 0 else len1) let len2 = (if len2 < 0 then 0 else len2) let dst = Array2DZeroCreate len1 len2 @@ -661,7 +675,7 @@ namespace Microsoft.FSharp.Core SetArray2D dst i j (GetArray2D src (src1 + i) (src2 + j)) dst - let SetArray2DSub (dst: 'T[,]) src1 src2 len1 len2 src = + let inline SetArray2DSub (dst: 'T[,]) src1 src2 len1 len2 src = for i = 0 to len1 - 1 do for j = 0 to len2 - 1 do SetArray2D dst (src1+i) (src2+j) (GetArray2D src i j) @@ -679,9 +693,16 @@ namespace Microsoft.FSharp.Core let inline GetArray3DLength3 (arr: 'T[,,]) = (# "ldlen.multi 3 2" arr : int #) + let inline GetArray3DLength (arr: 'T[,,]) (dim: int) = + match dim with + | 0 -> GetArray3DLength1 arr + | 1 -> GetArray3DLength2 arr + | 2 -> GetArray3DLength3 arr + | _ -> raise (System.IndexOutOfRangeException()) + let inline Array3DZeroCreate (n1:int) (n2:int) (n3:int) = (# "newarr.multi 3 !0" type ('T) n1 n2 n3 : 'T[,,] #) - let GetArray3DSub (src: 'T[,,]) src1 src2 src3 len1 len2 len3 = + let inline GetArray3DSub (src: 'T[,,]) src1 src2 src3 len1 len2 len3 = let len1 = (if len1 < 0 then 0 else len1) let len2 = (if len2 < 0 then 0 else len2) let len3 = (if len3 < 0 then 0 else len3) @@ -692,7 +713,7 @@ namespace Microsoft.FSharp.Core SetArray3D dst i j k (GetArray3D src (src1+i) (src2+j) (src3+k)) dst - let SetArray3DSub (dst: 'T[,,]) src1 src2 src3 len1 len2 len3 src = + let inline SetArray3DSub (dst: 'T[,,]) src1 src2 src3 len1 len2 len3 src = for i = 0 to len1 - 1 do for j = 0 to len2 - 1 do for k = 0 to len3 - 1 do @@ -705,17 +726,25 @@ namespace Microsoft.FSharp.Core let inline SetArray4D (target: 'T[,,,]) (index1: int) (index2: int) (index3: int) (index4: int) (value:'T) = (# "stelem.multi 4 !0" type ('T) target index1 index2 index3 index4 value #) - let inline Array4DLength1 (arr: 'T[,,,]) = (# "ldlen.multi 4 0" arr : int #) + let inline GetArray4DLength1 (arr: 'T[,,,]) = (# "ldlen.multi 4 0" arr : int #) + + let inline GetArray4DLength2 (arr: 'T[,,,]) = (# "ldlen.multi 4 1" arr : int #) - let inline Array4DLength2 (arr: 'T[,,,]) = (# "ldlen.multi 4 1" arr : int #) + let inline GetArray4DLength3 (arr: 'T[,,,]) = (# "ldlen.multi 4 2" arr : int #) - let inline Array4DLength3 (arr: 'T[,,,]) = (# "ldlen.multi 4 2" arr : int #) + let inline GetArray4DLength4 (arr: 'T[,,,]) = (# "ldlen.multi 4 3" arr : int #) - let inline Array4DLength4 (arr: 'T[,,,]) = (# "ldlen.multi 4 3" arr : int #) + let inline GetArray4DLength (arr: 'T[,,,]) (dim: int) = + match dim with + | 0 -> GetArray4DLength1 arr + | 1 -> GetArray4DLength2 arr + | 2 -> GetArray4DLength3 arr + | 3 -> GetArray4DLength4 arr + | _ -> raise (System.IndexOutOfRangeException()) let inline Array4DZeroCreate (n1:int) (n2:int) (n3:int) (n4:int) = (# "newarr.multi 4 !0" type ('T) n1 n2 n3 n4 : 'T[,,,] #) - let GetArray4DSub (src: 'T[,,,]) src1 src2 src3 src4 len1 len2 len3 len4 = + let inline GetArray4DSub (src: 'T[,,,]) src1 src2 src3 src4 len1 len2 len3 len4 = let len1 = (if len1 < 0 then 0 else len1) let len2 = (if len2 < 0 then 0 else len2) let len3 = (if len3 < 0 then 0 else len3) @@ -728,7 +757,7 @@ namespace Microsoft.FSharp.Core SetArray4D dst i j k m (GetArray4D src (src1+i) (src2+j) (src3+k) (src4+m)) dst - let SetArray4DSub (dst: 'T[,,,]) src1 src2 src3 src4 len1 len2 len3 len4 src = + let inline SetArray4DSub (dst: 'T[,,,]) src1 src2 src3 src4 len1 len2 len3 len4 src = for i = 0 to len1 - 1 do for j = 0 to len2 - 1 do for k = 0 to len3 - 1 do @@ -1663,11 +1692,10 @@ namespace Microsoft.FSharp.Core let GenericHashWithComparerIntrinsic<'T> (comp : System.Collections.IEqualityComparer) (input : 'T) : int = GenericHashParamObj comp (box input) - /// Direct call to GetHashCode on the string type let inline HashString (s:string) = match s with | null -> 0 - | _ -> (# "call instance int32 [mscorlib]System.String :: GetHashCode()" s : int #) + | _ -> s.GetHashCode() // from mscorlib v4.0.30319 let inline HashChar (x:char) = (# "or" (# "shl" x 16 : int #) x : int #) @@ -3099,36 +3127,32 @@ namespace Microsoft.FSharp.Collections elif n = 0 then h else nth t (n - 1) - // similar to 'takeFreshConsTail' but with exceptions same as array slicing let rec sliceFreshConsTail cons n l = if n = 0 then setFreshConsTail cons [] else match l with - | [] -> outOfRange() + | [] -> setFreshConsTail cons [] | x :: xs -> let cons2 = freshConsNoTail x setFreshConsTail cons cons2 sliceFreshConsTail cons2 (n - 1) xs - // similar to 'take' but with n representing an index, not a number of elements - // and with exceptions matching array slicing let sliceTake n l = if n < 0 then [] else match l with - | [] -> outOfRange() + | [] -> [] | x :: xs -> let cons = freshConsNoTail x sliceFreshConsTail cons n xs cons - // similar to 'skip' but with exceptions same as array slicing let sliceSkip n l = - if n < 0 then outOfRange() + let n2 = if n < 0 then 0 else n let rec loop i lst = match lst with | _ when i = 0 -> lst | _ :: t -> loop (i-1) t - | [] -> outOfRange() - loop n l + | [] -> [] + loop n2 l type List<'T> with [] @@ -3168,7 +3192,11 @@ namespace Microsoft.FSharp.Collections | None, Some(j) -> PrivateListHelpers.sliceTake j l | Some(i), Some(j) -> if i > j then [] else - PrivateListHelpers.sliceTake (j-i) (PrivateListHelpers.sliceSkip i l) + let start = if i < 0 then 0 else i + PrivateListHelpers.sliceTake (j - start) (PrivateListHelpers.sliceSkip start l) + + [] + member l.GetReverseIndex(_: int, offset: int) = l.Length - offset - 1 interface IEnumerable<'T> with member l.GetEnumerator() = PrivateListHelpers.mkListEnumerator l @@ -3203,8 +3231,6 @@ namespace Microsoft.FSharp.Core open Microsoft.FSharp.Core.BasicInlinedOperations open Microsoft.FSharp.Collections - - [] module Operators = @@ -3705,7 +3731,10 @@ namespace Microsoft.FSharp.Core when ^T : byte = (# "conv.i4" value : int32 #) [] - let inline int value = int32 value + let inline int value = int32 value + + [] + let inline uint value = uint32 value [] let inline enum< ^T when ^T : enum > (value:int32) : ^T = EnumOfValue value @@ -4682,14 +4711,14 @@ namespace Microsoft.FSharp.Core else // a constrained, common simple iterator that is fast. let singleStepRangeEnumerator () = - let value : Ref<'T> = ref (n - LanguagePrimitives.GenericOne) + let mutable value = n - LanguagePrimitives.GenericOne let inline current () = // according to IEnumerator.Current documentation, the result of of Current // is undefined prior to the first call of MoveNext and post called to MoveNext // that return false (see https://msdn.microsoft.com/en-us/library/58e146b7%28v=vs.110%29.aspx) // so we should be able to just return value here, which would be faster - let derefValue = !value + let derefValue = value if derefValue < n then notStarted () elif derefValue > m then @@ -4705,14 +4734,14 @@ namespace Microsoft.FSharp.Core interface IEnumerator with member __.Current = box (current ()) - member __.Reset () = value := n - LanguagePrimitives.GenericOne + member __.Reset () = value <- n - LanguagePrimitives.GenericOne member __.MoveNext () = - let derefValue = !value + let derefValue = value if derefValue < m then - value := derefValue + LanguagePrimitives.GenericOne + value <- derefValue + LanguagePrimitives.GenericOne true elif derefValue = m then - value := derefValue + LanguagePrimitives.GenericOne + value <- derefValue + LanguagePrimitives.GenericOne false else false } @@ -4880,12 +4909,16 @@ namespace Microsoft.FSharp.Core let PowGeneric (one, mul, value: 'T, exponent) = ComputePowerGenericInlined one mul value exponent let inline ComputeSlice bound start finish length = - match start, finish with - | None, None -> bound, bound + length - 1 - | None, Some n when n >= bound -> bound, n - | Some m, None when m <= bound + length -> m, bound + length - 1 - | Some m, Some n -> m, n - | _ -> raise (System.IndexOutOfRangeException()) + let low = + match start with + | Some n when n >= bound -> n + | _ -> bound + let high = + match finish with + | Some m when m < bound + length -> m + | _ -> bound + length - 1 + + low, high let inline GetArraySlice (source: _[]) start finish = let start, finish = ComputeSlice 0 start finish source.Length @@ -4896,7 +4929,7 @@ namespace Microsoft.FSharp.Core let finish = (match finish with None -> target.Length - 1 | Some n -> n) SetArraySub target start (finish - start + 1) source - let GetArraySlice2D (source: _[,]) start1 finish1 start2 finish2 = + let inline GetArraySlice2D (source: _[,]) start1 finish1 start2 finish2 = let bound1 = source.GetLowerBound(0) let bound2 = source.GetLowerBound(1) let start1, finish1 = ComputeSlice bound1 start1 finish1 (GetArray2DLength1 source) @@ -4905,41 +4938,41 @@ namespace Microsoft.FSharp.Core let len2 = (finish2 - start2 + 1) GetArray2DSub source start1 start2 len1 len2 - let inline GetArraySlice2DFixed1 (source: _[,]) index1 start2 finish2 = - let bound2 = source.GetLowerBound(1) - let start2, finish2 = ComputeSlice bound2 start2 finish2 (GetArray2DLength2 source) - let len2 = (finish2 - start2 + 1) - let dst = zeroCreate (if len2 < 0 then 0 else len2) - for j = 0 to len2 - 1 do - SetArray dst j (GetArray2D source index1 (start2+j)) + let inline GetArraySlice2DFixed (source: _[,]) start finish index nonFixedDim = + let bound = source.GetLowerBound(nonFixedDim) + let start, finish = ComputeSlice bound start finish (GetArray2DLength source nonFixedDim) + let len = (finish - start + 1) + let dst = zeroCreate (if len < 0 then 0 else len) + let getArrayElem = + match nonFixedDim with + | 1 -> (fun i -> GetArray2D source index (start+i)) + | 0 -> (fun i -> GetArray2D source (start+i) index) + | _ -> raise (System.IndexOutOfRangeException()) + for j = 0 to len - 1 do + SetArray dst j (getArrayElem j) dst - let inline GetArraySlice2DFixed2 (source: _[,]) start1 finish1 index2 = - let bound1 = source.GetLowerBound(0) - let start1, finish1 = ComputeSlice bound1 start1 finish1 (GetArray2DLength1 source) - let len1 = (finish1 - start1 + 1) - let dst = zeroCreate (if len1 < 0 then 0 else len1) - for i = 0 to len1 - 1 do - SetArray dst i (GetArray2D source (start1+i) index2) - dst + let inline GetArraySlice2DFixed1 (source: _[,]) index1 start2 finish2 = GetArraySlice2DFixed source start2 finish2 index1 1 - let inline SetArraySlice2DFixed1 (target: _[,]) index1 start2 finish2 (source: _[]) = - let bound2 = target.GetLowerBound(1) - let start2 = (match start2 with None -> bound2 | Some n -> n) - let finish2 = (match finish2 with None -> bound2 + GetArray2DLength2 target - 1 | Some n -> n) - let len2 = (finish2 - start2 + 1) - for j = 0 to len2 - 1 do - SetArray2D target index1 (bound2+start2+j) (GetArray source j) + let inline GetArraySlice2DFixed2 (source: _[,]) start1 finish1 index2 = GetArraySlice2DFixed source start1 finish1 index2 0 - let inline SetArraySlice2DFixed2 (target: _[,]) start1 finish1 index2 (source:_[]) = - let bound1 = target.GetLowerBound(0) - let start1 = (match start1 with None -> bound1 | Some n -> n) - let finish1 = (match finish1 with None -> bound1 + GetArray2DLength1 target - 1 | Some n -> n) - let len1 = (finish1 - start1 + 1) - for i = 0 to len1 - 1 do - SetArray2D target (bound1+start1+i) index2 (GetArray source i) + let inline SetArraySlice2DFixed (target: _[,]) (source: _[]) index start finish nonFixedDim = + let bound = target.GetLowerBound(nonFixedDim) + let start, finish = ComputeSlice bound start finish (GetArray2DLength target nonFixedDim) + let len = (finish - start + 1) + let setArrayElem = + match nonFixedDim with + | 1 -> (fun j -> SetArray2D target index (bound + start + j) (GetArray source j)) + | 0 -> (fun i -> SetArray2D target (bound + start + i) index (GetArray source i)) + | _ -> raise (System.IndexOutOfRangeException()) + for j = 0 to len - 1 do + setArrayElem j - let SetArraySlice2D (target: _[,]) start1 finish1 start2 finish2 (source: _[,]) = + let inline SetArraySlice2DFixed1 (target: _[,]) index1 start2 finish2 (source: _[]) = SetArraySlice2DFixed target source index1 start2 finish2 1 + + let inline SetArraySlice2DFixed2 (target: _[,]) start1 finish1 index2 (source:_[]) = SetArraySlice2DFixed target source index2 start1 finish1 0 + + let inline SetArraySlice2D (target: _[,]) start1 finish1 start2 finish2 (source: _[,]) = let bound1 = target.GetLowerBound(0) let bound2 = target.GetLowerBound(1) let start1 = (match start1 with None -> bound1 | Some n -> n) @@ -4948,7 +4981,7 @@ namespace Microsoft.FSharp.Core let finish2 = (match finish2 with None -> bound2 + GetArray2DLength2 target - 1 | Some n -> n) SetArray2DSub target start1 start2 (finish1 - start1 + 1) (finish2 - start2 + 1) source - let GetArraySlice3D (source: _[,,]) start1 finish1 start2 finish2 start3 finish3 = + let inline GetArraySlice3D (source: _[,,]) start1 finish1 start2 finish2 start3 finish3 = let bound1 = source.GetLowerBound(0) let bound2 = source.GetLowerBound(1) let bound3 = source.GetLowerBound(2) @@ -4960,7 +4993,65 @@ namespace Microsoft.FSharp.Core let len3 = (finish3 - start3 + 1) GetArray3DSub source start1 start2 start3 len1 len2 len3 - let SetArraySlice3D (target: _[,,]) start1 finish1 start2 finish2 start3 finish3 (source:_[,,]) = + let inline GetArraySlice3DFixedSingle (source: _[,,]) start1 finish1 start2 finish2 index nonFixedDim1 nonFixedDim2 = + let bound1 = source.GetLowerBound(nonFixedDim1) + let bound2 = source.GetLowerBound(nonFixedDim2) + let start1, finish1 = ComputeSlice bound1 start1 finish1 (GetArray3DLength source nonFixedDim1) + let start2, finish2 = ComputeSlice bound2 start2 finish2 (GetArray3DLength source nonFixedDim2) + let len1 = (finish1 - start1 + 1) + let len2 = (finish2 - start2 + 1) + + let dst = Array2DZeroCreate (max 0 len1) (max 0 len2) + let getArrayElem = + match nonFixedDim1, nonFixedDim2 with + | 1, 2 -> (fun i j -> GetArray3D source index (start1 + i) (start2 + j)) + | 0, 2 -> (fun i j -> GetArray3D source (start1 + i) index (start2 + j)) + | 0, 1 -> (fun i j -> GetArray3D source (start1 + i) (start2 + j) index) + | _ -> raise (System.IndexOutOfRangeException()) + + for i = 0 to len1 - 1 do + for j = 0 to len2 - 1 do + SetArray2D dst i j (getArrayElem i j) + + dst + + [] + let inline GetArraySlice3DFixedSingle1 (source: _[,,]) index1 start2 finish2 start3 finish3 = GetArraySlice3DFixedSingle source start2 finish2 start3 finish3 index1 1 2 + + [] + let inline GetArraySlice3DFixedSingle2 (source: _[,,]) start1 finish1 index2 start3 finish3 = GetArraySlice3DFixedSingle source start1 finish1 start3 finish3 index2 0 2 + + [] + let inline GetArraySlice3DFixedSingle3 (source: _[,,]) start1 finish1 start2 finish2 index3 = GetArraySlice3DFixedSingle source start1 finish1 start2 finish2 index3 0 1 + + let inline GetArraySlice3DFixedDouble (source: _[,,]) start finish index1 index2 nonFixedDim = + let bound = source.GetLowerBound(nonFixedDim) + let start, finish = ComputeSlice bound start finish (GetArray3DLength source nonFixedDim) + let len = (finish - start + 1) + let dst = zeroCreate (if len < 0 then 0 else len) + let getArrayElem = + match nonFixedDim with + | 2 -> (fun i -> GetArray3D source index1 index2 i) + | 1 -> (fun i -> GetArray3D source index1 (start + i) index2) + | 0 -> (fun i -> GetArray3D source (start+i) index1 index2) + | _ -> raise (System.IndexOutOfRangeException()) + for j = 0 to len - 1 do + SetArray dst j (getArrayElem j) + dst + + [] + let inline GetArraySlice3DFixedDouble1 (source: _[,,]) index1 index2 start3 finish3 = + GetArraySlice3DFixedDouble source start3 finish3 index1 index2 2 + + [] + let inline GetArraySlice3DFixedDouble2 (source: _[,,]) index1 start2 finish2 index3 = + GetArraySlice3DFixedDouble source start2 finish2 index1 index3 1 + + [] + let inline GetArraySlice3DFixedDouble3 (source: _[,,]) start1 finish1 index2 index3 = + GetArraySlice3DFixedDouble source start1 finish1 index2 index3 0 + + let inline SetArraySlice3D (target: _[,,]) start1 finish1 start2 finish2 start3 finish3 (source:_[,,]) = let bound1 = target.GetLowerBound(0) let bound2 = target.GetLowerBound(1) let bound3 = target.GetLowerBound(2) @@ -4972,22 +5063,200 @@ namespace Microsoft.FSharp.Core let finish3 = (match finish3 with None -> bound3 + GetArray3DLength3 target - 1 | Some n -> n) SetArray3DSub target start1 start2 start3 (finish1 - start1 + 1) (finish2 - start2 + 1) (finish3 - start3 + 1) source - let GetArraySlice4D (source: _[,,,]) start1 finish1 start2 finish2 start3 finish3 start4 finish4 = + let inline SetArraySlice3DFixedSingle (target: _[,,]) (source: _[,]) index start1 finish1 start2 finish2 nonFixedDim1 nonFixedDim2 = + let bound1 = target.GetLowerBound(nonFixedDim1) + let bound2 = target.GetLowerBound(nonFixedDim2) + let start1, finish1 = ComputeSlice bound1 start1 finish1 (GetArray3DLength target nonFixedDim1) + let start2, finish2 = ComputeSlice bound2 start2 finish2 (GetArray3DLength target nonFixedDim2) + let len1 = (finish1 - start1 + 1) + let len2 = (finish2 - start2 + 1) + let setArrayElem = + match nonFixedDim1, nonFixedDim2 with + | 1, 2 -> (fun i j -> SetArray3D target index (bound1 + start1 + i) (bound2 + start2 + j) (GetArray2D source i j)) + | 0, 2 -> (fun i j -> SetArray3D target (bound1 + start1 + i) index (bound2+ start2 + j) (GetArray2D source i j)) + | 0, 1 -> (fun i j -> SetArray3D target (bound1 + start1 + i) (bound2+ start2 + j) index (GetArray2D source i j)) + | _ -> raise (System.IndexOutOfRangeException()) + + for i = 0 to len1 - 1 do + for j = 0 to len2 - 1 do + setArrayElem i j + + [] + let inline SetArraySlice3DFixedSingle1 (target: _[,,]) index start2 finish2 start3 finish3 (source: _[,]) = + SetArraySlice3DFixedSingle target source index start2 finish2 start3 finish3 1 2 + + [] + let inline SetArraySlice3DFixedSingle2 (target: _[,,]) start1 finish1 index start3 finish3 (source: _[,]) = + SetArraySlice3DFixedSingle target source index start1 finish1 start3 finish3 0 2 + + [] + let inline SetArraySlice3DFixedSingle3 (target: _[,,]) start1 finish1 start2 finish2 index (source: _[,]) = + SetArraySlice3DFixedSingle target source index start1 finish1 start2 finish2 0 1 + + let inline SetArraySlice3DFixedDouble (target: _[,,]) (source: _[]) index1 index2 start finish nonFixedDim = + let bound = target.GetLowerBound(nonFixedDim) + let start, finish = ComputeSlice bound start finish (GetArray3DLength target nonFixedDim) + let len = (finish - start + 1) + let setArrayElem = + match nonFixedDim with + | 2 -> (fun k -> SetArray3D target index1 index2 (bound + start + k) (GetArray source k)) + | 1 -> (fun j -> SetArray3D target index1 (bound + start + j) index2 (GetArray source j)) + | 0 -> (fun i -> SetArray3D target (bound + start + i) index1 index2 (GetArray source i)) + | _ -> raise (System.IndexOutOfRangeException()) + for j = 0 to len - 1 do + setArrayElem j + + [] + let inline SetArraySlice3DFixedDouble1 (target: _[,,]) index1 index2 start3 finish3 (source: _[]) = + SetArraySlice3DFixedDouble target source index1 index2 start3 finish3 2 + + [] + let inline SetArraySlice3DFixedDouble2 (target: _[,,]) index1 start2 finish2 index3 (source: _[]) = + SetArraySlice3DFixedDouble target source index1 index3 start2 finish2 1 + + [] + let inline SetArraySlice3DFixedDouble3 (target: _[,,]) start1 finish1 index2 index3 (source: _[]) = + SetArraySlice3DFixedDouble target source index2 index3 start1 finish1 0 + + let inline GetArraySlice4D (source: _[,,,]) start1 finish1 start2 finish2 start3 finish3 start4 finish4 = let bound1 = source.GetLowerBound(0) let bound2 = source.GetLowerBound(1) let bound3 = source.GetLowerBound(2) let bound4 = source.GetLowerBound(3) - let start1, finish1 = ComputeSlice bound1 start1 finish1 (Array4DLength1 source) - let start2, finish2 = ComputeSlice bound2 start2 finish2 (Array4DLength2 source) - let start3, finish3 = ComputeSlice bound3 start3 finish3 (Array4DLength3 source) - let start4, finish4 = ComputeSlice bound4 start4 finish4 (Array4DLength4 source) + let start1, finish1 = ComputeSlice bound1 start1 finish1 (GetArray4DLength1 source) + let start2, finish2 = ComputeSlice bound2 start2 finish2 (GetArray4DLength2 source) + let start3, finish3 = ComputeSlice bound3 start3 finish3 (GetArray4DLength3 source) + let start4, finish4 = ComputeSlice bound4 start4 finish4 (GetArray4DLength4 source) let len1 = (finish1 - start1 + 1) let len2 = (finish2 - start2 + 1) let len3 = (finish3 - start3 + 1) let len4 = (finish4 - start4 + 1) GetArray4DSub source start1 start2 start3 start4 len1 len2 len3 len4 - let SetArraySlice4D (target: _[,,,]) start1 finish1 start2 finish2 start3 finish3 start4 finish4 (source:_[,,,]) = + let inline GetArraySlice4DFixedSingle (source: _[,,,]) start1 finish1 start2 finish2 start3 finish3 index nonFixedDim1 nonFixedDim2 nonFixedDim3 = + let bound1 = source.GetLowerBound(nonFixedDim1) + let bound2 = source.GetLowerBound(nonFixedDim2) + let bound3 = source.GetLowerBound(nonFixedDim3) + let start1, finish1 = ComputeSlice bound1 start1 finish1 (GetArray4DLength source nonFixedDim1) + let start2, finish2 = ComputeSlice bound2 start2 finish2 (GetArray4DLength source nonFixedDim2) + let start3, finish3 = ComputeSlice bound3 start3 finish3 (GetArray4DLength source nonFixedDim3) + let len1 = (finish1 - start1 + 1) + let len2 = (finish2 - start2 + 1) + let len3 = (finish3 - start3 + 1) + + let dst = Array3DZeroCreate (max len1 0) (max len2 0) (max len3 0) + let getArrayElem = + match nonFixedDim1, nonFixedDim2, nonFixedDim3 with + | 1, 2, 3 -> (fun i j k-> GetArray4D source index i j k) + | 0, 2, 3 -> (fun i j k -> GetArray4D source i index j k) + | 0, 1, 3 -> (fun i j k -> GetArray4D source i j index k) + | 0, 1, 2 -> (fun i j k -> GetArray4D source i j k index) + | _ -> raise (System.IndexOutOfRangeException()) + for i = 0 to len1 - 1 do + for j = 0 to len2 - 1 do + for k = 0 to len3 - 1 do + SetArray3D dst i j k (getArrayElem i j k) + + dst + + [] + let inline GetArraySlice4DFixedSingle1 (source: _[,,,]) index1 start2 finish2 start3 finish3 start4 finish4 = + GetArraySlice4DFixedSingle source start2 finish2 start3 finish3 start4 finish4 index1 1 2 3 + + [] + let inline GetArraySlice4DFixedSingle2 (source: _[,,,]) start1 finish1 index2 start3 finish3 start4 finish4 = + GetArraySlice4DFixedSingle source start1 finish1 start3 finish3 start4 finish4 index2 0 2 3 + + [] + let inline GetArraySlice4DFixedSingle3 (source: _[,,,]) start1 finish1 start2 finish2 index3 start4 finish4 = + GetArraySlice4DFixedSingle source start1 finish1 start2 finish2 start4 finish4 index3 0 1 3 + + [] + let inline GetArraySlice4DFixedSingle4 (source: _[,,,]) start1 finish1 start2 finish2 start3 finish3 index4 = + GetArraySlice4DFixedSingle source start1 finish1 start2 finish2 start3 finish3 index4 0 1 2 + + let inline GetArraySlice4DFixedDouble (source: _[,,,]) start1 finish1 start2 finish2 index1 index2 nonFixedDim1 nonFixedDim2 = + let bound1 = source.GetLowerBound(nonFixedDim1) + let bound2 = source.GetLowerBound(nonFixedDim2) + let start1, finish1 = ComputeSlice bound1 start1 finish1 (GetArray4DLength source nonFixedDim1) + let start2, finish2 = ComputeSlice bound2 start2 finish2 (GetArray4DLength source nonFixedDim2) + let len1 = (finish1 - start1 + 1) + let len2 = (finish2 - start2 + 1) + + let dst = Array2DZeroCreate (max len1 0) (max len2 0) + let getArrayElem = + match nonFixedDim1, nonFixedDim2 with + | 2, 3 -> (fun i j -> GetArray4D source index1 index2 i j) + | 1, 3 -> (fun i j -> GetArray4D source index1 i index2 j) + | 1, 2 -> (fun i j -> GetArray4D source index1 i j index2) + | 0, 3 -> (fun i j -> GetArray4D source i index1 index2 j) + | 0, 2 -> (fun i j -> GetArray4D source i index1 j index2) + | 0, 1 -> (fun i j -> GetArray4D source i j index1 index2) + | _ -> raise (System.IndexOutOfRangeException()) + for i = 0 to len1 - 1 do + for j = 0 to len2 - 1 do + SetArray2D dst i j (getArrayElem i j) + + dst + + [] + let inline GetArraySlice4DFixedDouble1 (source: _[,,,]) index1 index2 start3 finish3 start4 finish4 = + GetArraySlice4DFixedDouble source start3 finish3 start4 finish4 index1 index2 2 3 + + [] + let inline GetArraySlice4DFixedDouble2 (source: _[,,,]) index1 start2 finish2 index3 start4 finish4 = + GetArraySlice4DFixedDouble source start2 finish2 start4 finish4 index1 index3 1 3 + + [] + let inline GetArraySlice4DFixedDouble3 (source: _[,,,]) index1 start2 finish2 start3 finish3 index4 = + GetArraySlice4DFixedDouble source start2 finish2 start3 finish3 index1 index4 1 2 + + [] + let inline GetArraySlice4DFixedDouble4 (source: _[,,,]) start1 finish1 index2 index3 start4 finish4 = + GetArraySlice4DFixedDouble source start1 finish1 start4 finish4 index2 index3 0 3 + + [] + let inline GetArraySlice4DFixedDouble5 (source: _[,,,]) start1 finish1 index2 start3 finish3 index4 = + GetArraySlice4DFixedDouble source start1 finish1 start3 finish3 index2 index4 0 2 + + [] + let inline GetArraySlice4DFixedDouble6 (source: _[,,,]) start1 finish1 start2 finish2 index3 index4 = + GetArraySlice4DFixedDouble source start1 finish1 start2 finish2 index3 index4 0 1 + + let inline GetArraySlice4DFixedTriple (source: _[,,,]) start1 finish1 index1 index2 index3 nonFixedDim1 = + let bound1 = source.GetLowerBound(nonFixedDim1) + let start1, finish1 = ComputeSlice bound1 start1 finish1 (GetArray4DLength source nonFixedDim1) + let len1 = (finish1 - start1 + 1) + let dst = zeroCreate (max len1 0) + let getArrayElem = + match nonFixedDim1 with + | 0 -> (fun i -> GetArray4D source i index1 index2 index3) + | 1 -> (fun i -> GetArray4D source index1 i index2 index3) + | 2 -> (fun i -> GetArray4D source index1 index2 i index3) + | 3 -> (fun i -> GetArray4D source index1 index2 index3 i) + | _ -> raise (System.IndexOutOfRangeException()) + for i = 0 to len1 - 1 do + SetArray dst i (getArrayElem i) + + dst + + [] + let inline GetArraySlice4DFixedTriple1 (source: _[,,,]) start1 finish1 index2 index3 index4 = + GetArraySlice4DFixedTriple source start1 finish1 index2 index3 index4 0 + + [] + let inline GetArraySlice4DFixedTriple2 (source: _[,,,]) index1 start2 finish2 index3 index4 = + GetArraySlice4DFixedTriple source start2 finish2 index1 index3 index4 1 + + [] + let inline GetArraySlice4DFixedTriple3 (source: _[,,,]) index1 index2 start3 finish3 index4 = + GetArraySlice4DFixedTriple source start3 finish3 index1 index2 index4 2 + + [] + let inline GetArraySlice4DFixedTriple4 (source: _[,,,]) index1 index2 index3 start4 finish4 = + GetArraySlice4DFixedTriple source start4 finish4 index1 index2 index3 3 + + let inline SetArraySlice4D (target: _[,,,]) start1 finish1 start2 finish2 start3 finish3 start4 finish4 (source:_[,,,]) = let bound1 = target.GetLowerBound(0) let bound2 = target.GetLowerBound(1) let bound3 = target.GetLowerBound(2) @@ -4996,12 +5265,128 @@ namespace Microsoft.FSharp.Core let start2 = (match start2 with None -> bound2 | Some n -> n) let start3 = (match start3 with None -> bound3 | Some n -> n) let start4 = (match start4 with None -> bound4 | Some n -> n) - let finish1 = (match finish1 with None -> bound1 + Array4DLength1 target - 1 | Some n -> n) - let finish2 = (match finish2 with None -> bound2 + Array4DLength2 target - 1 | Some n -> n) - let finish3 = (match finish3 with None -> bound3 + Array4DLength3 target - 1 | Some n -> n) - let finish4 = (match finish4 with None -> bound4 + Array4DLength4 target - 1 | Some n -> n) + let finish1 = (match finish1 with None -> bound1 + GetArray4DLength1 target - 1 | Some n -> n) + let finish2 = (match finish2 with None -> bound2 + GetArray4DLength2 target - 1 | Some n -> n) + let finish3 = (match finish3 with None -> bound3 + GetArray4DLength3 target - 1 | Some n -> n) + let finish4 = (match finish4 with None -> bound4 + GetArray4DLength4 target - 1 | Some n -> n) SetArray4DSub target start1 start2 start3 start4 (finish1 - start1 + 1) (finish2 - start2 + 1) (finish3 - start3 + 1) (finish4 - start4 + 1) source + let inline SetArraySlice4DFixedSingle (target: _[,,,]) (source: _[,,]) index start1 finish1 start2 finish2 start3 finish3 nonFixedDim1 nonFixedDim2 nonFixedDim3 = + let bound1 = target.GetLowerBound(nonFixedDim1) + let bound2 = target.GetLowerBound(nonFixedDim2) + let bound3 = target.GetLowerBound(nonFixedDim3) + let start1, finish1 = ComputeSlice bound1 start1 finish1 (GetArray4DLength target nonFixedDim1) + let start2, finish2 = ComputeSlice bound2 start2 finish2 (GetArray4DLength target nonFixedDim2) + let start3, finish3 = ComputeSlice bound3 start3 finish3 (GetArray4DLength target nonFixedDim3) + let len1 = (finish1 - start1 + 1) + let len2 = (finish2 - start2 + 1) + let len3 = (finish3 - start3 + 1) + + let setArrayElem = + match nonFixedDim1, nonFixedDim2, nonFixedDim3 with + | 1, 2, 3 -> (fun i j k -> SetArray4D target index (bound1 + start1 + i) (bound2 + start2 + j) (bound3 + start3 + k) (GetArray3D source i j k)) + | 0, 2, 3 -> (fun i j k -> SetArray4D target (bound1 + start1 + i) index (bound2 + start2 + j) (bound3 + start3 + k) (GetArray3D source i j k)) + | 0, 1, 3 -> (fun i j k -> SetArray4D target (bound1 + start1 + i) (bound2 + start2 + j) index (bound3 + start3 + k) (GetArray3D source i j k)) + | 0, 1, 2 -> (fun i j k -> SetArray4D target (bound1 + start1 + i) (bound2 + start2 + j) (bound3 + start3 + k) index (GetArray3D source i j k)) + | _ -> raise (System.IndexOutOfRangeException()) + + for i = 0 to len1 - 1 do + for j = 0 to len2 - 1 do + for k = 0 to len3 - 1 do + setArrayElem i j k + + [] + let inline SetArraySlice4DFixedSingle1 (target: _[,,,]) index1 start2 finish2 start3 finish3 start4 finish4 (source: _[,,]) = + SetArraySlice4DFixedSingle target source index1 start2 finish2 start3 finish3 start4 finish4 1 2 3 + + [] + let inline SetArraySlice4DFixedSingle2 (target: _[,,,]) start1 finish1 index2 start3 finish3 start4 finish4 (source: _[,,]) = + SetArraySlice4DFixedSingle target source index2 start1 finish1 start3 finish3 start4 finish4 0 2 3 + + [] + let inline SetArraySlice4DFixedSingle3 (target: _[,,,]) start1 finish1 start2 finish2 index3 start4 finish4 (source: _[,,]) = + SetArraySlice4DFixedSingle target source index3 start1 finish1 start2 finish2 start4 finish4 0 1 3 + + [] + let inline SetArraySlice4DFixedSingle4 (target: _[,,,]) start1 finish1 start2 finish2 start3 finish3 index4 (source: _[,,]) = + SetArraySlice4DFixedSingle target source index4 start1 finish1 start2 finish2 start3 finish3 0 1 2 + + let inline SetArraySlice4DFixedDouble (target: _[,,,]) (source: _[,]) index1 index2 start1 finish1 start2 finish2 nonFixedDim1 nonFixedDim2 = + let bound1 = target.GetLowerBound(nonFixedDim1) + let bound2 = target.GetLowerBound(nonFixedDim2) + let start1, finish1 = ComputeSlice bound1 start1 finish1 (GetArray4DLength target nonFixedDim1) + let start2, finish2 = ComputeSlice bound2 start2 finish2 (GetArray4DLength target nonFixedDim2) + let len1 = (finish1 - start1 + 1) + let len2 = (finish2 - start2 + 1) + + let setArrayElem = + match nonFixedDim1, nonFixedDim2 with + | 2, 3 -> (fun i j -> SetArray4D target index1 index2 (bound1 + start1 + i) (bound2 + start2 + j) (GetArray2D source i j)) + | 1, 3 -> (fun i j -> SetArray4D target index1 (bound1 + start1 + i) index2 (bound2 + start2 + j) (GetArray2D source i j)) + | 1, 2 -> (fun i j -> SetArray4D target index1 (bound1 + start1 + i) (bound2 + start2 + j) index2 (GetArray2D source i j)) + | 0, 3 -> (fun i j -> SetArray4D target (bound1 + start1 + i) index1 index2 (bound2 + start2 + j) (GetArray2D source i j)) + | 0, 2 -> (fun i j -> SetArray4D target (bound1 + start1 + i) index1 (bound2 + start2 + j) index2 (GetArray2D source i j)) + | 0, 1 -> (fun i j -> SetArray4D target (bound1 + start1 + i) (bound2 + start2 + j) index1 index2 (GetArray2D source i j)) + | _ -> raise (System.IndexOutOfRangeException()) + + for i = 0 to len1 - 1 do + for j = 0 to len2 - 1 do + setArrayElem i j + + [] + let inline SetArraySlice4DFixedDouble1 (target: _[,,,]) index1 index2 start3 finish3 start4 finish4 (source: _[,]) = + SetArraySlice4DFixedDouble target source index1 index2 start3 finish3 start4 finish4 2 3 + + [] + let inline SetArraySlice4DFixedDouble2 (target: _[,,,]) index1 start2 finish2 index3 start4 finish4 (source: _[,]) = + SetArraySlice4DFixedDouble target source index1 index3 start2 finish2 start4 finish4 1 3 + + [] + let inline SetArraySlice4DFixedDouble3 (target: _[,,,]) index1 start2 finish2 start3 finish3 index4 (source: _[,]) = + SetArraySlice4DFixedDouble target source index1 index4 start2 finish2 start3 finish3 1 2 + + [] + let inline SetArraySlice4DFixedDouble4 (target: _[,,,]) start1 finish1 index2 index3 start4 finish4 (source: _[,]) = + SetArraySlice4DFixedDouble target source index2 index3 start1 finish1 start4 finish4 0 3 + + [] + let inline SetArraySlice4DFixedDouble5 (target: _[,,,]) start1 finish1 index2 start3 finish3 index4 (source: _[,]) = + SetArraySlice4DFixedDouble target source index2 index4 start1 finish1 start3 finish3 0 2 + + [] + let inline SetArraySlice4DFixedDouble6 (target: _[,,,]) start1 finish1 start2 finish2 index3 index4 (source: _[,]) = + SetArraySlice4DFixedDouble target source index3 index4 start1 finish1 start2 finish2 0 1 + + let inline SetArraySlice4DFixedTriple (target: _[,,,]) (source: _[]) index1 index2 index3 start1 finish1 nonFixedDim1 = + let bound1 = target.GetLowerBound(nonFixedDim1) + let start1, finish1 = ComputeSlice bound1 start1 finish1 (GetArray4DLength target nonFixedDim1) + let len1 = (finish1 - start1 + 1) + let setArrayElem = + match nonFixedDim1 with + | 0 -> (fun i -> SetArray4D target (bound1 + start1 + i) index1 index2 index3 (GetArray source i)) + | 1 -> (fun i -> SetArray4D target index1 (bound1 + start1 + i) index2 index3 (GetArray source i)) + | 2 -> (fun i -> SetArray4D target index1 index2 (bound1 + start1 + i) index3 (GetArray source i)) + | 3 -> (fun i -> SetArray4D target index1 index2 index3 (bound1 + start1 + i) (GetArray source i)) + | _ -> raise (System.IndexOutOfRangeException()) + for i = 0 to len1 - 1 do + setArrayElem i + + [] + let inline SetArraySlice4DFixedTriple1 (target: _[,,,]) start1 finish1 index2 index3 index4 (source: _[]) = + SetArraySlice4DFixedTriple target source index2 index3 index4 start1 finish1 0 + + [] + let inline SetArraySlice4DFixedTriple2 (target: _[,,,]) index1 start2 finish2 index3 index4 (source: _[]) = + SetArraySlice4DFixedTriple target source index1 index3 index4 start2 finish2 1 + + [] + let inline SetArraySlice4DFixedTriple3 (target: _[,,,]) index1 index2 start3 finish3 index4 (source: _[]) = + SetArraySlice4DFixedTriple target source index1 index2 index4 start3 finish3 2 + + [] + let inline SetArraySlice4DFixedTriple4 (target: _[,,,]) index1 index2 index3 start4 finish4 (source: _[]) = + SetArraySlice4DFixedTriple target source index1 index2 index3 start4 finish4 3 + let inline GetStringSlice (source: string) start finish = let start, finish = ComputeSlice 0 start finish source.Length let len = finish-start+1 @@ -5024,7 +5409,7 @@ namespace Microsoft.FSharp.Core when ^T : int16 = let x : int16 = retype x in System.Math.Abs(x) when ^T : sbyte = let x : sbyte = retype x in System.Math.Abs(x) when ^T : decimal = System.Math.Abs(retype x : decimal) - + [] let inline acosImpl(x: ^T) : ^T = (^T: (static member Acos : ^T -> ^T) (x)) @@ -5420,13 +5805,6 @@ namespace Microsoft.FSharp.Core when ^T : byte = RangeByte (retype start) (retype step) (retype finish) - type ``[,]``<'T> with - member arr.GetSlice(x : int, y1 : int option, y2 : int option) = GetArraySlice2DFixed1 arr x y1 y2 - member arr.GetSlice(x1 : int option, x2 : int option, y : int) = GetArraySlice2DFixed2 arr x1 x2 y - - member arr.SetSlice(x : int, y1 : int option, y2 : int option, source:'T[]) = SetArraySlice2DFixed1 arr x y1 y2 source - member arr.SetSlice(x1 : int option, x2 : int option, y : int, source:'T[]) = SetArraySlice2DFixed2 arr x1 x2 y source - [] let inline abs (value: ^T) : ^T = AbsDynamic value @@ -5600,6 +5978,52 @@ namespace Microsoft.FSharp.Core (let x = (retype x : decimal) in if n >= 0 then PowDecimal x n else 1.0M / PowDecimal x n) + [] + [] + module ArrayExtensions = + type ``[,,,]``<'T> with + [] + member arr.GetReverseIndex(dim: int, offset: int) = + let len = + match dim with + | 0 -> GetArray4DLength1 arr + | 1 -> GetArray4DLength2 arr + | 2 -> GetArray4DLength3 arr + | 3 -> GetArray4DLength4 arr + | _ -> raise (System.IndexOutOfRangeException()) + + len - offset - 1 + + type ``[,,]``<'T> with + [] + member arr.GetReverseIndex(dim: int, offset: int) = + let len = + match dim with + | 0 -> GetArray3DLength1 arr + | 1 -> GetArray3DLength2 arr + | 2 -> GetArray3DLength3 arr + | _ -> raise (System.IndexOutOfRangeException()) + + len - offset - 1 + + type ``[,]``<'T> with + [] + member arr.GetReverseIndex(dim: int, offset: int) = + let len = + match dim with + | 0 -> GetArray2DLength1 arr + | 1 -> GetArray2DLength2 arr + | _ -> raise (System.IndexOutOfRangeException()) + + len - offset - 1 + + type ``[]``<'T> with + [] + member arr.GetReverseIndex (_: int, offset: int) = arr.Length - offset - 1 + + type System.String with + [] + member str.GetReverseIndex (_: int, offset: int) = str.Length - offset - 1 namespace Microsoft.FSharp.Control diff --git a/src/fsharp/FSharp.Core/prim-types.fsi b/src/fsharp/FSharp.Core/prim-types.fsi index cd28701e67..afa0719602 100644 --- a/src/fsharp/FSharp.Core/prim-types.fsi +++ b/src/fsharp/FSharp.Core/prim-types.fsi @@ -618,7 +618,7 @@ namespace Microsoft.FSharp.Core /// This attribute is used to tag values that are part of an experimental library /// feature. - [] + [] [] type ExperimentalAttribute = inherit Attribute @@ -1930,7 +1930,14 @@ namespace Microsoft.FSharp.Collections /// The end index. /// The sub list specified by the input indices. member GetSlice : startIndex:int option * endIndex:int option -> 'T list - + + /// Get the index for the element offset elements away from the end of the collection. + /// The rank of the index. + /// The offset from the end. + /// The corresponding index from the start. + [] + member GetReverseIndex: rank: int * offset: int -> int + /// Returns a list with head as its first element and tail as its subsequent elements /// A new head value for the list. /// The existing list. @@ -2632,6 +2639,15 @@ namespace Microsoft.FSharp.Core [] val inline int : value:^T -> int when ^T : (static member op_Explicit : ^T -> int) and default ^T : int + /// Converts the argument to an unsigned 32-bit integer. This is a direct conversion for all + /// primitive numeric types. For strings, the input is converted using UInt32.Parse() + /// with InvariantCulture settings. Otherwise the operation requires an appropriate + /// static conversion method on the input type. + /// The input value. + /// The converted int + [] + val inline uint: value:^T -> uint when ^T: (static member op_Explicit: ^T -> uint) and default ^T: uint + /// Converts the argument to a particular enum type. /// The input value. /// The converted enum type. @@ -2740,6 +2756,50 @@ namespace Microsoft.FSharp.Core [] val ( |KeyValue| ): keyValuePair:KeyValuePair<'Key,'Value> -> 'Key * 'Value + [] + [] + module ArrayExtensions = + type ``[,,,]``<'T> with + /// Get the index for the element offset elements away from the end of the collection. + /// The rank of the index. This refers to the dimension in the 4d array. + /// The offset from the end. + /// The corresponding index from the start. + [] + member GetReverseIndex: rank: int * offset: int -> int + + type ``[,,]``<'T> with + /// Get the index for the element offset elements away from the end of the collection. + /// The rank of the index. This refers to the dimension in the 3d array. + /// The offset from the end. + /// The corresponding index from the start. + [] + member GetReverseIndex: rank: int * offset: int -> int + + type ``[,]``<'T> with + /// Get the index for the element offset elements away from the end of the collection. + /// The rank of the index. This refers to the dimension in the 2d array. + /// The offset from the end. + /// The corresponding index from the start. + [] + member GetReverseIndex: rank: int * offset: int -> int + + type ``[]``<'T> with + /// Get the index for the element offset elements away from the end of the collection. + /// The rank of the index. + /// The offset from the end. + /// The corresponding index from the start. + [] + member GetReverseIndex: rank: int * offset: int -> int + + type System.String with + /// Get the index for the element offset elements away from the end of the collection. + /// The rank of the index. + /// The offset from the end. + /// The corresponding index from the start. + [] + member GetReverseIndex: rank: int * offset: int -> int + + /// A module of compiler intrinsic functions for efficient implementations of F# integer ranges /// and dynamic invocations of other F# operators module OperatorIntrinsics = @@ -2765,7 +2825,7 @@ namespace Microsoft.FSharp.Core /// The start index of the second dimension. /// The end index of the second dimension. /// The two dimensional sub array from the input indices. - val GetArraySlice2D : source:'T[,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> 'T[,] + val inline GetArraySlice2D : source:'T[,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> 'T[,] /// Gets a vector slice of a 2D array. The index of the first dimension is fixed. /// The source array. @@ -2790,7 +2850,7 @@ namespace Microsoft.FSharp.Core /// The start index of the second dimension. /// The end index of the second dimension. /// The source array. - val SetArraySlice2D : target:'T[,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> source:'T[,] -> unit + val inline SetArraySlice2D : target:'T[,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> source:'T[,] -> unit /// Sets a vector slice of a 2D array. The index of the first dimension is fixed. /// The target array. @@ -2817,7 +2877,70 @@ namespace Microsoft.FSharp.Core /// The start index of the third dimension. /// The end index of the third dimension. /// The three dimensional sub array from the given indices. - val GetArraySlice3D : source:'T[,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> start3:int option -> finish3:int option -> 'T[,,] + val inline GetArraySlice3D : source:'T[,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> start3:int option -> finish3:int option -> 'T[,,] + + /// Gets a 2D slice of a 3D array. + /// The source array. + /// The fixed index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The two dimensional sub array from the given indices. + [] + val inline GetArraySlice3DFixedSingle1 : source:'T[,,] -> index1:int -> start2:int option -> finish2:int option -> start3:int option -> finish3:int option -> 'T[,] + + /// Gets a 2D slice of a 3D array. + /// The source array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The fixed index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The two dimensional sub array from the given indices. + [] + val inline GetArraySlice3DFixedSingle2 : source:'T[,,] -> start1:int option -> finish1:int option -> index2: int -> start3:int option -> finish3:int option -> 'T[,] + + /// Gets a 2D slice of a 3D array. + /// The source array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The fixed index of the third dimension. + /// The two dimensional sub array from the given indices. + [] + val inline GetArraySlice3DFixedSingle3 : source:'T[,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> index3: int -> 'T[,] + + /// Gets a 1D slice of a 3D array. + /// The source array. + /// The fixed index of the first dimension. + /// The fixed index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The one dimensional sub array from the given indices. + [] + val inline GetArraySlice3DFixedDouble1 : source:'T[,,] -> index1:int -> index2:int -> start3:int option -> finish3:int option -> 'T[] + + /// Gets a 1D slice of a 3D array. + /// The source array. + /// The fixed index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The fixed index of the third dimension. + /// The one dimensional sub array from the given indices. + [] + val inline GetArraySlice3DFixedDouble2 : source:'T[,,] -> index1:int -> start2:int option -> finish2:int option -> index3:int -> 'T[] + + /// Gets a 1D slice of a 3D array. + /// The source array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The fixed index of the second dimension. + /// The fixed index of the third dimension. + /// The one dimensional sub array from the given indices. + [] + val inline GetArraySlice3DFixedDouble3 : source:'T[,,] -> start1:int option -> finish1:int option -> index2:int -> index3:int -> 'T[] /// Sets a slice of an array /// The target array. @@ -2828,7 +2951,76 @@ namespace Microsoft.FSharp.Core /// The start index of the third dimension. /// The end index of the third dimension. /// The source array. - val SetArraySlice3D : target:'T[,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> start3:int option -> finish3:int option -> source:'T[,,] -> unit + val inline SetArraySlice3D : target:'T[,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> start3:int option -> finish3:int option -> source:'T[,,] -> unit + + /// Sets a 2D slice of a 3D array + /// The target array. + /// The fixed index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The source array. + /// The two dimensional sub array from the given indices. + [] + val inline SetArraySlice3DFixedSingle1 : target: 'T[,,] -> index1: int -> start2: int option -> finish2: int option -> start3: int option -> finish3: int option -> source: 'T[,] -> unit + + /// Sets a 2D slice of a 3D array + /// The target array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The fixed index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The source array. + /// The two dimensional sub array from the given indices. + [] + val inline SetArraySlice3DFixedSingle2 : target: 'T[,,] -> start1: int option -> finish1: int option -> index2: int -> start3: int option -> finish3: int option -> source: 'T[,] -> unit + + /// Sets a 2D slice of a 3D array + /// The target array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The fixed index of the third dimension. + /// The source array. + /// The two dimensional sub array from the given indices. + [] + val inline SetArraySlice3DFixedSingle3 : target: 'T[,,] -> start1: int option -> finish1: int option -> start2: int option -> finish2: int option -> index3: int -> source: 'T[,] -> unit + + /// Sets a 1D slice of a 3D array. + /// The source array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The fixed index of the second dimension. + /// The fixed index of the third dimension. + /// The source array. + /// The one dimensional sub array from the given indices. + [] + val inline SetArraySlice3DFixedDouble1 : target: 'T[,,] -> index1: int -> index2: int -> start3: int option -> finish3: int option -> source: 'T[] -> unit + + /// Sets a 1D slice of a 3D array. + /// The source array. + /// The fixed index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The fixed index of the third dimension. + /// The source array. + /// The one dimensional sub array from the given indices. + [] + val inline SetArraySlice3DFixedDouble2 : target: 'T[,,] -> index1: int -> start2: int option -> finish2: int option -> index3: int -> source: 'T[] -> unit + + /// Sets a 1D slice of a 3D array. + /// The source array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The fixed index of the second dimension. + /// The fixed index of the third dimension. + /// The source array. + /// The one dimensional sub array from the given indices. + [] + val inline SetArraySlice3DFixedDouble3 : target: 'T[,,] -> start1: int option -> finish1: int option -> index2: int -> index3: int -> source: 'T[] -> unit /// Gets a slice of an array /// The source array. @@ -2841,7 +3033,315 @@ namespace Microsoft.FSharp.Core /// The start index of the fourth dimension. /// The end index of the fourth dimension. /// The four dimensional sub array from the given indices. - val GetArraySlice4D : source:'T[,,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> start3:int option -> finish3:int option -> start4:int option -> finish4:int option -> 'T[,,,] + val inline GetArraySlice4D : source:'T[,,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> start3:int option -> finish3:int option -> start4:int option -> finish4:int option -> 'T[,,,] + + /// Gets a 3D slice of a 4D array + /// The source array. + /// The fixed index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The start index of the fourth dimension. + /// The end index of the fourth dimension. + /// The three dimensional sub array from the given indices. + val inline GetArraySlice4DFixedSingle1 : source:'T[,,,] -> index1:int -> start2: int option -> finish2:int option -> start3:int option -> finish3:int option -> start4:int option -> finish4:int option -> 'T[,,] + + /// Gets a 3D slice of a 4D array + /// The source array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The fixed index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The start index of the fourth dimension. + /// The end index of the fourth dimension. + /// The three dimensional sub array from the given indices. + val inline GetArraySlice4DFixedSingle2 : source:'T[,,,] -> start1:int option -> finish1:int option -> index2:int -> start3:int option -> finish3:int option -> start4:int option -> finish4:int option -> 'T[,,] + + /// Gets a 3D slice of a 4D array + /// The source array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The fixed index of the third dimension. + /// The start index of the fourth dimension. + /// The end index of the fourth dimension. + /// The three dimensional sub array from the given indices. + val inline GetArraySlice4DFixedSingle3 : source:'T[,,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> index3:int -> start4:int option -> finish4:int option -> 'T[,,] + + /// Gets a 3D slice of a 4D array + /// The source array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The fixed index of the fourth dimension. + /// The three dimensional sub array from the given indices. + val inline GetArraySlice4DFixedSingle4 : source:'T[,,,] -> start1:int option -> finish1:int option -> start2: int option -> finish2:int option -> start3:int option -> finish3:int option -> index4:int -> 'T[,,] + + /// Gets a 2D slice of a 4D array + /// The source array. + /// The fixed index of the first dimension. + /// The fixed index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The start index of the fourth dimension. + /// The end index of the fourth dimension. + /// The two dimensional sub array from the given indices. + val inline GetArraySlice4DFixedDouble1 : source:'T[,,,] -> index1: int -> index2:int -> start3:int option -> finish3:int option -> start4:int option -> finish4:int option -> 'T[,] + + /// Gets a 2D slice of a 4D array + /// The source array. + /// The fixed index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The fixed index of the third dimension. + /// The start index of the fourth dimension. + /// The end index of the fourth dimension. + /// The two dimensional sub array from the given indices. + val inline GetArraySlice4DFixedDouble2 : source:'T[,,,] -> index1: int -> start2: int option -> finish2:int option -> index3:int -> start4:int option -> finish4:int option -> 'T[,] + + /// Gets a 2D slice of a 4D array + /// The source array. + /// The fixed index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The fixed index of the fourth dimension. + /// The two dimensional sub array from the given indices. + val inline GetArraySlice4DFixedDouble3 : source:'T[,,,] -> index1:int -> start2: int option -> finish2:int option -> start3:int option -> finish3:int option -> index4:int -> 'T[,] + + /// Gets a 2D slice of a 4D array + /// The source array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The fixed index of the second dimension. + /// The fixed index of the third dimension. + /// The start index of the fourth dimension. + /// The end index of the fourth dimension. + /// The two dimensional sub array from the given indices. + val inline GetArraySlice4DFixedDouble4 : source:'T[,,,] -> start1:int option -> finish1:int option -> index2:int -> index3:int -> start4:int option -> finish4:int option -> 'T[,] + + /// Gets a 2D slice of a 4D array + /// The source array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The fixed index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The fixed index of the fourth dimension. + /// The two dimensional sub array from the given indices. + val inline GetArraySlice4DFixedDouble5 : source:'T[,,,] -> start1:int option -> finish1:int option -> index2:int -> start3:int option -> finish3:int option -> index4:int -> 'T[,] + + /// Gets a 2D slice of a 4D array + /// The source array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The fixed index of the third dimension. + /// The fixed index of the fourth dimension. + /// The two dimensional sub array from the given indices. + val inline GetArraySlice4DFixedDouble6 : source:'T[,,,] -> start1:int option -> finish1:int option -> start2: int option -> finish2:int option -> index3:int -> index4:int -> 'T[,] + + /// Gets a 1D slice of a 4D array + /// The source array. + /// The fixed index of the first dimension. + /// The fixed index of the second dimension. + /// The fixed index of the third dimension. + /// The start index of the fourth dimension. + /// The end index of the fourth dimension. + /// The one dimensional sub array from the given indices. + val inline GetArraySlice4DFixedTriple4 : source:'T[,,,] -> index1:int -> index2:int -> index3:int -> start4:int option -> finish4:int option -> 'T[] + + /// Gets a 1D slice of a 4D array + /// The source array. + /// The fixed index of the first dimension. + /// The fixed index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The fixed index of the fourth dimension. + /// The one dimensional sub array from the given indices. + val inline GetArraySlice4DFixedTriple3 : source:'T[,,,] -> index1:int -> index2:int -> start3:int option -> finish3:int option -> index4:int -> 'T[] + + /// Gets a 1D slice of a 4D array + /// The source array. + /// The fixed index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The fixed index of the third dimension. + /// The fixed index of the fourth dimension. + /// The one dimensional sub array from the given indices. + val inline GetArraySlice4DFixedTriple2 : source:'T[,,,] -> index1:int -> start2: int option -> finish2:int option -> index3:int -> index4:int -> 'T[] + + /// Gets a 1D slice of a 4D array + /// The source array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The fixed index of the second dimension. + /// The fixed index of the third dimension. + /// The fixed index of the fourth dimension. + /// The one dimensional sub array from the given indices. + val inline GetArraySlice4DFixedTriple1 : source:'T[,,,] -> start1:int option -> finish1:int option -> index2:int -> index3:int -> index4:int -> 'T[] + + /// Gets a 3D slice of a 4D array + /// The source array. + /// The fixed index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The start index of the fourth dimension. + /// The end index of the fourth dimension. + /// The source array. + val inline SetArraySlice4DFixedSingle1 : target:'T[,,,] -> index1:int -> start2: int option -> finish2:int option -> start3:int option -> finish3:int option -> start4:int option -> finish4:int option -> source: 'T[,,] -> unit + + /// Sets a 3D slice of a 4D array + /// The target array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The fixed index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The start index of the fourth dimension. + /// The end index of the fourth dimension. + /// The source array. + val inline SetArraySlice4DFixedSingle2 : target:'T[,,,] -> start1:int option -> finish1:int option -> index2:int -> start3:int option -> finish3:int option -> start4:int option -> finish4:int option -> source: 'T[,,] -> unit + + /// Sets a 3D slice of a 4D array + /// The target array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The fixed index of the third dimension. + /// The start index of the fourth dimension. + /// The end index of the fourth dimension. + /// The source array. + val inline SetArraySlice4DFixedSingle3 : target:'T[,,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> index3:int -> start4:int option -> finish4:int option -> source: 'T[,,] -> unit + + /// Sets a 3D slice of a 4D array + /// The target array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The fixed index of the fourth dimension. + /// The source array. + val inline SetArraySlice4DFixedSingle4 : target:'T[,,,] -> start1:int option -> finish1:int option -> start2: int option -> finish2:int option -> start3:int option -> finish3:int option -> index4:int -> source: 'T[,,] -> unit + + /// Sets a 2D slice of a 4D array + /// The target array. + /// The fixed index of the first dimension. + /// The fixed index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The start index of the fourth dimension. + /// The end index of the fourth dimension. + /// The source array. + val inline SetArraySlice4DFixedDouble1 : target:'T[,,,] -> index1: int -> index2:int -> start3:int option -> finish3:int option -> start4:int option -> finish4:int option -> source: 'T[,] -> unit + + /// Sets a 2D slice of a 4D array + /// The target array. + /// The fixed index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The fixed index of the third dimension. + /// The start index of the fourth dimension. + /// The end index of the fourth dimension. + /// The source array. + val inline SetArraySlice4DFixedDouble2 : target:'T[,,,] -> index1: int -> start2: int option -> finish2:int option -> index3:int -> start4:int option -> finish4:int option -> source: 'T[,] -> unit + + /// Sets a 2D slice of a 4D array + /// The target array. + /// The fixed index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The fixed index of the fourth dimension. + /// The source array. + val inline SetArraySlice4DFixedDouble3 : target:'T[,,,] -> index1:int -> start2: int option -> finish2:int option -> start3:int option -> finish3:int option -> index4:int -> source: 'T[,] -> unit + + /// Sets a 2D slice of a 4D array + /// The target array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The fixed index of the second dimension. + /// The fixed index of the third dimension. + /// The start index of the fourth dimension. + /// The end index of the fourth dimension. + /// The source array. + val inline SetArraySlice4DFixedDouble4 : target:'T[,,,] -> start1:int option -> finish1:int option -> index2:int -> index3:int -> start4:int option -> finish4:int option -> source: 'T[,] -> unit + + /// Sets a 2D slice of a 4D array + /// The target array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The fixed index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The fixed index of the fourth dimension. + /// The source array. + val inline SetArraySlice4DFixedDouble5 : target:'T[,,,] -> start1:int option -> finish1:int option -> index2:int -> start3:int option -> finish3:int option -> index4:int -> source: 'T[,] -> unit + + /// Sets a 2D slice of a 4D array + /// The target array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The fixed index of the third dimension. + /// The fixed index of the fourth dimension. + /// The source array. + val inline SetArraySlice4DFixedDouble6 : target:'T[,,,] -> start1:int option -> finish1:int option -> start2: int option -> finish2:int option -> index3:int -> index4:int -> source: 'T[,] -> unit + + /// Sets a 1D slice of a 4D array + /// The target array. + /// The fixed index of the first dimension. + /// The fixed index of the second dimension. + /// The fixed index of the third dimension. + /// The start index of the fourth dimension. + /// The end index of the fourth dimension. + /// The source array. + val inline SetArraySlice4DFixedTriple4 : target:'T[,,,] -> index1:int -> index2:int -> index3:int -> start4:int option -> finish4:int option -> source: 'T[] -> unit + + /// Sets a 1D slice of a 4D array + /// The target array. + /// The fixed index of the first dimension. + /// The fixed index of the second dimension. + /// The start index of the third dimension. + /// The end index of the third dimension. + /// The fixed index of the fourth dimension. + /// The source array. + val inline SetArraySlice4DFixedTriple3 : target:'T[,,,] -> index1:int -> index2:int -> start3:int option -> finish3:int option -> index4:int -> source: 'T[] -> unit + + /// Sets a 1D slice of a 4D array + /// The target array. + /// The fixed index of the first dimension. + /// The start index of the second dimension. + /// The end index of the second dimension. + /// The fixed index of the third dimension. + /// The fixed index of the fourth dimension. + /// The source array. + val inline SetArraySlice4DFixedTriple2 : target:'T[,,,] -> index1:int -> start2: int option -> finish2:int option -> index3:int -> index4:int -> source: 'T[] -> unit + + /// Sets a 1D slice of a 4D array + /// The target array. + /// The start index of the first dimension. + /// The end index of the first dimension. + /// The fixed index of the second dimension. + /// The fixed index of the third dimension. + /// The fixed index of the fourth dimension. + /// The source array. + val inline SetArraySlice4DFixedTriple1 : target:'T[,,,] -> start1:int option -> finish1:int option -> index2:int -> index3:int -> index4:int -> source: 'T[] -> unit /// Sets a slice of an array /// The target array. @@ -2854,7 +3354,7 @@ namespace Microsoft.FSharp.Core /// The start index of the fourth dimension. /// The end index of the fourth dimension. /// The source array. - val SetArraySlice4D : target:'T[,,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> start3:int option -> finish3:int option -> start4:int option -> finish4:int option -> source:'T[,,,] -> unit + val inline SetArraySlice4D : target:'T[,,,] -> start1:int option -> finish1:int option -> start2:int option -> finish2:int option -> start3:int option -> finish3:int option -> start4:int option -> finish4:int option -> source:'T[,,,] -> unit /// Gets a slice from a string /// The source string. diff --git a/src/fsharp/FSharp.Core/quotations.fs b/src/fsharp/FSharp.Core/quotations.fs index 974e32c767..f1d2dea11e 100644 --- a/src/fsharp/FSharp.Core/quotations.fs +++ b/src/fsharp/FSharp.Core/quotations.fs @@ -391,6 +391,9 @@ module Patterns = [] let (|NewTuple|_|) input = match input with E(CombTerm(NewTupleOp(_), es)) -> Some es | _ -> None + [] + let (|NewStructTuple|_|) input = match input with E(CombTerm(NewTupleOp(ty), es)) when ty.IsValueType -> Some es | _ -> None + [] let (|DefaultValue|_|) input = match input with E(CombTerm(DefaultValueOp ty, [])) -> Some ty | _ -> None @@ -747,6 +750,10 @@ module Patterns = let ty = FSharpType.MakeTupleType(Array.map typeOf (Array.ofList args)) mkFEN (NewTupleOp ty) args + let mkNewStructTuple (asm, args) = + let ty = FSharpType.MakeStructTupleType(asm, Array.map typeOf (Array.ofList args)) + mkFEN (NewTupleOp ty) args + let mkTupleGet (ty, n, x) = checkTypesSR ty (typeOf x) "tupleGet" (SR.GetString(SR.QtmmExprNotMatchTuple)) let mems = FSharpType.GetTupleElements ty @@ -1820,6 +1827,9 @@ type Expr with static member NewTuple elements = mkNewTuple elements + static member NewStructTuple (asm:Assembly, elements) = + mkNewStructTuple (asm, elements) + static member NewRecord (recordType:Type, elements) = checkNonNull "recordType" recordType mkNewRecord (recordType, elements) diff --git a/src/fsharp/FSharp.Core/quotations.fsi b/src/fsharp/FSharp.Core/quotations.fsi index f9ab5d7089..a782140fe4 100644 --- a/src/fsharp/FSharp.Core/quotations.fsi +++ b/src/fsharp/FSharp.Core/quotations.fsi @@ -181,6 +181,12 @@ type Expr = /// The resulting expression. static member NewTuple: elements:Expr list -> Expr + /// Builds an expression that represents the creation of an F# tuple value + /// Runtime assembly containing System.ValueTuple definitions. + /// The list of elements of the tuple. + /// The resulting expression. + static member NewStructTuple: asm:Assembly * elements:Expr list -> Expr + /// Builds record-construction expressions /// The type of record. /// The list of elements of the record. @@ -545,6 +551,12 @@ module Patterns = [] val (|NewTuple|_|) : input:Expr -> (Expr list) option + /// An active pattern to recognize expressions that represent construction of struct tuple values + /// The input expression to match against. + /// (Expr list) option + [] + val (|NewStructTuple|_|) : input:Expr -> (Expr list) option + /// An active pattern to recognize expressions that represent the read of a static or instance property, or a non-function value declared in a module /// The input expression to match against. /// (Expr option * PropertyInfo * Expr list) option diff --git a/src/fsharp/FSharp.Core/reflect.fs b/src/fsharp/FSharp.Core/reflect.fs index 0dd38fe225..828fddac3d 100644 --- a/src/fsharp/FSharp.Core/reflect.fs +++ b/src/fsharp/FSharp.Core/reflect.fs @@ -391,12 +391,12 @@ module internal Impl = | false, _ -> // the Dictionary<>s here could be ConcurrentDictionary<>'s, but then // that would lock while initializing the Type array (maybe not an issue) - let a = ref (Array.init 8 (fun i -> makeIt (i + 1))) + let mutable a = Array.init 8 (fun i -> makeIt (i + 1)) lock dictionaryLock (fun () -> match tables.TryGetValue asm with - | true, t -> a := t - | false, _ -> tables.Add(asm, !a)) - !a + | true, t -> a <- t + | false, _ -> tables.Add(asm, a)) + a | true, t -> t match tys.Length with diff --git a/src/fsharp/FSharp.Core/reflect.fsi b/src/fsharp/FSharp.Core/reflect.fsi index 359f36af77..465529677a 100644 --- a/src/fsharp/FSharp.Core/reflect.fsi +++ b/src/fsharp/FSharp.Core/reflect.fsi @@ -314,11 +314,13 @@ type FSharpType = static member MakeTupleType: types:Type[] -> Type /// Returns a System.Type representing an F# tuple type with the given element types + /// Runtime assembly containing System.Tuple definitions. /// An array of types for the tuple elements. /// The type representing the tuple containing the input elements. static member MakeTupleType: asm:Assembly * types:Type[] -> Type /// Returns a System.Type representing an F# struct tuple type with the given element types + /// Runtime assembly containing System.ValueTuple definitions. /// An array of types for the tuple elements. /// The type representing the struct tuple containing the input elements. static member MakeStructTupleType: asm:Assembly * types:Type[] -> Type diff --git a/src/fsharp/FSharp.Core/seq.fs b/src/fsharp/FSharp.Core/seq.fs index 0b6e7ed2e5..71f16b6fa2 100644 --- a/src/fsharp/FSharp.Core/seq.fs +++ b/src/fsharp/FSharp.Core/seq.fs @@ -84,13 +84,13 @@ namespace Microsoft.FSharp.Collections let mapi f (e : IEnumerator<_>) : IEnumerator<_> = let f = OptimizedClosures.FSharpFunc<_, _, _>.Adapt(f) - let i = ref (-1) + let mutable i = -1 upcast { new MapEnumerator<_>() with member __.DoMoveNext curr = - i := !i + 1 + i <- i + 1 if e.MoveNext() then - curr <- f.Invoke(!i, e.Current) + curr <- f.Invoke(i, e.Current) true else false @@ -118,13 +118,13 @@ namespace Microsoft.FSharp.Collections let mapi2 f (e1 : IEnumerator<_>) (e2 : IEnumerator<_>) : IEnumerator<_> = let f = OptimizedClosures.FSharpFunc<_, _, _, _>.Adapt(f) - let i = ref (-1) + let mutable i = -1 upcast { new MapEnumerator<_>() with member __.DoMoveNext curr = - i := !i + 1 + i <- i + 1 if (e1.MoveNext() && e2.MoveNext()) then - curr <- f.Invoke(!i, e1.Current, e2.Current) + curr <- f.Invoke(i, e1.Current, e2.Current) true else false @@ -160,11 +160,11 @@ namespace Microsoft.FSharp.Collections } let choose f (e : IEnumerator<'T>) = - let started = ref false - let curr = ref None + let mutable started = false + let mutable curr = None let get() = - check !started - match !curr with + check started + match curr with | None -> alreadyFinished() | Some x -> x @@ -173,25 +173,25 @@ namespace Microsoft.FSharp.Collections interface IEnumerator with member __.Current = box (get()) member __.MoveNext() = - if not !started then started := true - curr := None - while ((!curr).IsNone && e.MoveNext()) do - curr := f e.Current - Option.isSome !curr + if not started then started <- true + curr <- None + while (curr.IsNone && e.MoveNext()) do + curr <- f e.Current + Option.isSome curr member __.Reset() = noReset() interface System.IDisposable with member __.Dispose() = e.Dispose() } let filter f (e : IEnumerator<'T>) = - let started = ref false + let mutable started = false let this = { new IEnumerator<'T> with - member __.Current = check !started; e.Current + member __.Current = check started; e.Current interface IEnumerator with - member __.Current = check !started; box e.Current + member __.Current = check started; box e.Current member __.MoveNext() = let rec next() = - if not !started then started := true + if not started then started <- true e.MoveNext() && (f e.Current || next()) next() member __.Reset() = noReset() @@ -200,15 +200,15 @@ namespace Microsoft.FSharp.Collections this let unfold f x : IEnumerator<_> = - let state = ref x + let mutable state = x upcast { new MapEnumerator<_>() with member __.DoMoveNext curr = - match f !state with + match f state with | None -> false | Some (r,s) -> curr <- r - state := s + state <- s true member __.Dispose() = () } @@ -229,34 +229,36 @@ namespace Microsoft.FSharp.Collections // The lazy creation of the cache nodes means enumerations that skip many Current values are not delayed by GC. // For example, the full enumeration of Seq.initInfinite in the tests. // state - let index = ref unstarted + let mutable index = unstarted // a Lazy node to cache the result/exception - let current = ref (Unchecked.defaultof<_>) - let setIndex i = index := i; current := (Unchecked.defaultof<_>) // cache node unprimed, initialised on demand. + let mutable current = Unchecked.defaultof<_> + let setIndex i = + index <- i + current <- (Unchecked.defaultof<_>) // cache node unprimed, initialised on demand. let getCurrent() = - if !index = unstarted then notStarted() - if !index = completed then alreadyFinished() - match box !current with - | null -> current := Lazy<_>.Create(fun () -> f !index) + if index = unstarted then notStarted() + if index = completed then alreadyFinished() + match box current with + | null -> current <- Lazy<_>.Create(fun () -> f index) | _ -> () // forced or re-forced immediately. - (!current).Force() + current.Force() { new IEnumerator<'U> with member __.Current = getCurrent() interface IEnumerator with member __.Current = box (getCurrent()) member __.MoveNext() = - if !index = completed then + if index = completed then false - elif !index = unstarted then + elif index = unstarted then setIndex 0 true else - if !index = System.Int32.MaxValue then raise <| System.InvalidOperationException (SR.GetString(SR.enumerationPastIntMaxValue)) - if !index = finalIndex then + if index = System.Int32.MaxValue then raise <| System.InvalidOperationException (SR.GetString(SR.enumerationPastIntMaxValue)) + if index = finalIndex then false else - setIndex (!index + 1) + setIndex (index + 1) true member __.Reset() = noReset() @@ -858,10 +860,10 @@ namespace Microsoft.FSharp.Collections let truncate count (source: seq<'T>) = checkNonNull "source" source if count <= 0 then empty else - seq { let i = ref 0 + seq { let mutable i = 0 use ie = source.GetEnumerator() - while !i < count && ie.MoveNext() do - i := !i + 1 + while i < count && ie.MoveNext() do + i <- i + 1 yield ie.Current } [] @@ -869,22 +871,22 @@ namespace Microsoft.FSharp.Collections checkNonNull "source" source seq { use ie = source.GetEnumerator() if ie.MoveNext() then - let iref = ref ie.Current + let mutable iref = ie.Current while ie.MoveNext() do let j = ie.Current - yield (!iref, j) - iref := j } + yield (iref, j) + iref <- j } [] let scan<'T,'State> folder (state:'State) (source : seq<'T>) = checkNonNull "source" source let f = OptimizedClosures.FSharpFunc<_, _, _>.Adapt folder - seq { let zref = ref state - yield !zref + seq { let mutable zref = state + yield zref use ie = source.GetEnumerator() while ie.MoveNext() do - zref := f.Invoke(!zref, ie.Current) - yield !zref } + zref <- f.Invoke(zref, ie.Current) + yield zref } [] let tryFindBack predicate (source : seq<'T>) = @@ -948,21 +950,21 @@ namespace Microsoft.FSharp.Collections [|SR.GetString SR.inputMustBePositive; windowSize|] seq { let arr = Array.zeroCreateUnchecked windowSize - let r = ref (windowSize - 1) - let i = ref 0 + let mutable r =windowSize - 1 + let mutable i = 0 use e = source.GetEnumerator() while e.MoveNext() do - arr.[!i] <- e.Current - i := (!i + 1) % windowSize - if !r = 0 then + arr.[i] <- e.Current + i <- (i + 1) % windowSize + if r = 0 then if windowSize < 32 then - yield Array.init windowSize (fun j -> arr.[(!i+j) % windowSize]) + yield Array.init windowSize (fun j -> arr.[(i+j) % windowSize]) else let result = Array.zeroCreateUnchecked windowSize - Array.Copy(arr, !i, result, 0, windowSize - !i) - Array.Copy(arr, 0, result, windowSize - !i, !i) + Array.Copy(arr, i, result, 0, windowSize - i) + Array.Copy(arr, 0, result, windowSize - i, i) yield result - else r := (!r - 1) + else r <- (r - 1) } [] @@ -978,7 +980,7 @@ namespace Microsoft.FSharp.Collections // * the prefix followed by elts from the enumerator are the initial sequence. // * the prefix contains only as many elements as the longest enumeration so far. let prefix = ResizeArray<_>() - let enumeratorR = ref None : IEnumerator<'T> option option ref // nested options rather than new type... + let enumeratorR = ref None // None = Unstarted. // Some(Some e) = Started. // Some None = Finished. @@ -1014,10 +1016,9 @@ namespace Microsoft.FSharp.Collections let cleanup() = lock enumeratorR (fun () -> prefix.Clear() - begin match !enumeratorR with + match !enumeratorR with | Some (Some e) -> IEnumerator.dispose e | _ -> () - end enumeratorR := None) (new CachedSeq<_>(cleanup, result) :> seq<_>) @@ -1305,9 +1306,9 @@ namespace Microsoft.FSharp.Collections let takeWhile predicate (source: seq<_>) = checkNonNull "source" source seq { use e = source.GetEnumerator() - let latest = ref Unchecked.defaultof<_> - while e.MoveNext() && (latest := e.Current; predicate !latest) do - yield !latest } + let mutable latest = Unchecked.defaultof<_> + while e.MoveNext() && (latest <- e.Current; predicate latest) do + yield latest } [] let skip count (source: seq<_>) = @@ -1324,12 +1325,12 @@ namespace Microsoft.FSharp.Collections let skipWhile predicate (source: seq<_>) = checkNonNull "source" source seq { use e = source.GetEnumerator() - let latest = ref (Unchecked.defaultof<_>) - let ok = ref false + let mutable latest = Unchecked.defaultof<_> + let mutable ok = false while e.MoveNext() do - if (latest := e.Current; (!ok || not (predicate !latest))) then - ok := true - yield !latest } + if (latest <- e.Current; (ok || not (predicate latest))) then + ok <- true + yield latest } [] let forall2 predicate (source1: seq<_>) (source2: seq<_>) = @@ -1469,14 +1470,14 @@ namespace Microsoft.FSharp.Collections let nextChunk() = let res = Array.zeroCreateUnchecked chunkSize res.[0] <- e.Current - let i = ref 1 - while !i < chunkSize && e.MoveNext() do - res.[!i] <- e.Current - i := !i + 1 - if !i = chunkSize then + let mutable i = 1 + while i < chunkSize && e.MoveNext() do + res.[i] <- e.Current + i <- i + 1 + if i = chunkSize then res else - res |> Array.subUnchecked 0 !i + res |> Array.subUnchecked 0 i while e.MoveNext() do yield nextChunk() } diff --git a/src/fsharp/FSharp.Core/seqcore.fs b/src/fsharp/FSharp.Core/seqcore.fs index 05bde3b90d..bc54d01e67 100644 --- a/src/fsharp/FSharp.Core/seqcore.fs +++ b/src/fsharp/FSharp.Core/seqcore.fs @@ -68,16 +68,16 @@ namespace Microsoft.FSharp.Collections lock r (fun () -> match !r with None -> None | Some _ as res -> r := None; res) let generateWhileSome openf compute closef : IEnumerator<'U> = - let started = ref false - let curr = ref None + let mutable started = false + let mutable curr = None let state = ref (Some(openf())) let getCurr() = - check !started - match !curr with None -> alreadyFinished() | Some x -> x - let start() = if not !started then (started := true) + check started + match curr with None -> alreadyFinished() | Some x -> x + let start() = if not started then (started <- true) let dispose() = readAndClear state |> Option.iter closef - let finish() = try dispose() finally curr := None + let finish() = try dispose() finally curr <- None { new IEnumerator<'U> with member __.Current = getCurr() interface IEnumerator with @@ -89,7 +89,7 @@ namespace Microsoft.FSharp.Collections | Some s -> match (try compute s with e -> finish(); reraise()) with | None -> finish(); false - | Some _ as x -> curr := x; true + | Some _ as x -> curr <- x; true member __.Reset() = noReset() interface System.IDisposable with @@ -306,14 +306,14 @@ namespace Microsoft.FSharp.Core.CompilerServices mkSeq (fun () -> new ConcatEnumerator<_,_>(sources) :> IEnumerator<'T>) let EnumerateWhile (guard: unit -> bool) (source: seq<'T>) : seq<'T> = - let started = ref false - let curr = ref None + let mutable started = false + let mutable curr = None let getCurr() = - IEnumerator.check !started - match !curr with None -> IEnumerator.alreadyFinished() | Some x -> x - let start() = if not !started then (started := true) + IEnumerator.check started + match curr with None -> IEnumerator.alreadyFinished() | Some x -> x + let start() = if not started then (started <- true) - let finish() = (curr := None) + let finish() = (curr <- None) mkConcatSeq (mkSeq (fun () -> { new IEnumerator<_> with @@ -324,7 +324,7 @@ namespace Microsoft.FSharp.Core.CompilerServices start() let keepGoing = (try guard() with e -> finish (); reraise ()) in if keepGoing then - curr := Some(source); true + curr <- Some(source); true else finish(); false member x.Reset() = IEnumerator.noReset() diff --git a/src/fsharp/FSharp.Core/set.fs b/src/fsharp/FSharp.Core/set.fs index 5da5152f29..bd6bb97000 100644 --- a/src/fsharp/FSharp.Core/set.fs +++ b/src/fsharp/FSharp.Core/set.fs @@ -429,13 +429,13 @@ module internal SetTree = not i.stack.IsEmpty let mkIEnumerator s = - let i = ref (mkIterator s) + let mutable i = mkIterator s { new IEnumerator<_> with - member __.Current = current !i + member __.Current = current i interface IEnumerator with - member __.Current = box (current !i) - member __.MoveNext() = moveNext !i - member __.Reset() = i := mkIterator s + member __.Current = box (current i) + member __.MoveNext() = moveNext i + member __.Reset() = i <- mkIterator s interface System.IDisposable with member __.Dispose() = () } @@ -486,8 +486,8 @@ module internal SetTree = loop s [] let copyToArray s (arr: _[]) i = - let j = ref i - iter (fun x -> arr.[!j] <- x; j := !j + 1) s + let mutable j = i + iter (fun x -> arr.[j] <- x; j <- j + 1) s let toArray s = let n = (count s) diff --git a/src/fsharp/FSharp.DependencyManager/.gitignore b/src/fsharp/FSharp.DependencyManager/.gitignore new file mode 100644 index 0000000000..b6f8be6985 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/.gitignore @@ -0,0 +1 @@ +FSharp.DependencyManager.nuget.props \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/FSDependencyManager.txt b/src/fsharp/FSharp.DependencyManager/FSDependencyManager.txt new file mode 100644 index 0000000000..a163aafc0f --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/FSDependencyManager.txt @@ -0,0 +1,2 @@ +# FSharp.Build resource strings +notUsed,"Not used." \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/FSharp.DependencyManager.Utilities.fs b/src/fsharp/FSharp.DependencyManager/FSharp.DependencyManager.Utilities.fs new file mode 100644 index 0000000000..d86ceb3dbb --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/FSharp.DependencyManager.Utilities.fs @@ -0,0 +1,343 @@ +// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. +namespace FSharp.DependencyManager + +open System +open System.Collections +open System.Collections.Generic +open System.Diagnostics +open System.IO +open System.Reflection +open System.Runtime.CompilerServices +open System.Runtime.Versioning + +open Internal.Utilities.FSharpEnvironment + +#if !(NETSTANDARD || NETCOREAPP) +open Microsoft.Build.Evaluation +open Microsoft.Build.Framework +#endif + +[] +type DependencyManagerAttribute() = inherit System.Attribute() + +module Utilities = + + /// Return a string array delimited by commas + /// Note that a quoted string is not going to be mangled into pieces. + let trimChars = [| ' '; '\t'; '\''; '\"' |] + + let inline private isNotQuotedQuotation (text: string) n = n > 0 && text.[n-1] <> '\\' + + let getOptions text = + let split (option:string) = + let pos = option.IndexOf('=') + let stringAsOpt text = + if String.IsNullOrEmpty(text) then None + else Some text + let nameOpt = + if pos <= 0 then None + else stringAsOpt (option.Substring(0, pos).Trim(trimChars).ToLowerInvariant()) + let valueOpt = + let valueText = + if pos < 0 then option + else if pos < option.Length then + option.Substring(pos + 1) + else "" + stringAsOpt (valueText.Trim(trimChars)) + nameOpt,valueOpt + + let last = String.length text - 1 + let result = ResizeArray() + let mutable insideSQ = false + let mutable start = 0 + let isSeperator c = c = ',' + for i = 0 to last do + match text.[i], insideSQ with + | c, false when isSeperator c -> // split when seeing a separator + result.Add(text.Substring(start, i - start)) + insideSQ <- false + start <- i + 1 + | _, _ when i = last -> + result.Add(text.Substring(start, i - start + 1)) + | c, true when isSeperator c -> // keep reading if a separator is inside quotation + insideSQ <- true + | '\'', _ when isNotQuotedQuotation text i -> // open or close quotation + insideSQ <- not insideSQ // keep reading + | _ -> () + + result + |> List.ofSeq + |> List.map (fun option -> split option) + + // Path to the directory containing the fsharp compilers + let fsharpCompilerPath = Path.GetDirectoryName(typeof.GetTypeInfo().Assembly.Location) + + // We are running on dotnet core if the executing mscorlib is System.Private.CoreLib + let isRunningOnCoreClr = (typeof.Assembly).FullName.StartsWith("System.Private.CoreLib", StringComparison.InvariantCultureIgnoreCase) + + let isWindows = + match Environment.OSVersion.Platform with + | PlatformID.Unix -> false + | PlatformID.MacOSX -> false + | _ -> true + + let dotnet = + if isWindows then "dotnet.exe" else "dotnet" + + let sdks = "Sdks" + +#if !(NETSTANDARD || NETCOREAPP) + let msbuildExePath = + // Find msbuild.exe when invoked from desktop compiler. + // 1. Look relative to F# compiler location Normal retail build + // 2. Use VSAPPDIR Nightly when started from VS, or F5 + // 3. Use VSINSTALLDIR -- When app is run outside of VS, and + // is not copied relative to a vs install. + let vsRootFromVSAPPIDDIR = + let vsappiddir = Environment.GetEnvironmentVariable("VSAPPIDDIR") + if not (String.IsNullOrEmpty(vsappiddir)) then + Path.GetFullPath(Path.Combine(vsappiddir, "../..")) + else + null + + let roots = [| + Path.GetFullPath(Path.Combine(fsharpCompilerPath, "../../../../..")) + vsRootFromVSAPPIDDIR + Environment.GetEnvironmentVariable("VSINSTALLDIR") + |] + + let msbuildPath root = Path.GetFullPath(Path.Combine(root, "MSBuild/Current/Bin/MSBuild.exe")) + + let msbuildPathExists root = + if String.IsNullOrEmpty(root) then + false + else + File.Exists(msbuildPath root) + + let msbuildOption rootOpt = + match rootOpt with + | Some root -> Some (msbuildPath root) + | _ -> None + + roots |> Array.tryFind(fun root -> msbuildPathExists root) |> msbuildOption +#else + let dotnetHostPath = + // How to find dotnet.exe --- woe is me; probing rules make me sad. + // Algorithm: + // 1. Look for DOTNET_HOST_PATH environment variable + // this is the main user programable override .. provided by user to find a specific dotnet.exe + // 2. Probe for are we part of an .NetSDK install + // In an sdk install we are always installed in: sdk\3.0.100-rc2-014234\FSharp + // dotnet or dotnet.exe will be found in the directory that contains the sdk directory + // 3. We are loaded in-process to some other application ... Eg. try .net + // See if the host is dotnet.exe ... from netcoreapp3.0 on this is fairly unlikely + // 4. If it's none of the above we are going to have to rely on the path containing the way to find dotnet.exe + // + if isRunningOnCoreClr then + match (Environment.GetEnvironmentVariable("DOTNET_HOST_PATH")) with + | value when not (String.IsNullOrEmpty(value)) -> + Some value // Value set externally + | _ -> + // Probe for netsdk install + let dotnetLocation = + let dotnetApp = + let platform = Environment.OSVersion.Platform + if platform = PlatformID.Unix then "dotnet" else "dotnet.exe" + let assemblyLocation = typeof.GetTypeInfo().Assembly.Location + Path.Combine(assemblyLocation, "../../..", dotnetApp) + + if File.Exists(dotnetLocation) then + Some dotnetLocation + else + let main = Process.GetCurrentProcess().MainModule + if main.ModuleName ="dotnet" then + Some main.FileName + else + Some dotnet + else + None +#endif + + let drainStreamToFile (stream: StreamReader) filename = + use file = File.OpenWrite(filename) + use writer = new StreamWriter(file) + let rec copyLines () = + match stream.ReadLine() with + | null -> () + | line -> + writer.WriteLine(line) + copyLines () + copyLines () + + let executeBuild pathToExe arguments workingDir = + match pathToExe with + | Some path -> + + let psi = ProcessStartInfo() + psi.FileName <- path + psi.WorkingDirectory <- workingDir + psi.RedirectStandardOutput <- true + psi.RedirectStandardError <- true + psi.Arguments <- arguments + psi.CreateNoWindow <- true + psi.UseShellExecute <- false + + use p = new Process() + p.StartInfo <- psi + p.Start() |> ignore + + drainStreamToFile p.StandardOutput (Path.Combine(workingDir, "StandardOutput.txt")) + drainStreamToFile p.StandardError (Path.Combine(workingDir, "StandardError.txt")) + + p.WaitForExit() + p.ExitCode = 0 + + | None -> false + + let buildProject projectPath binLogPath = + let binLoggingArguments = + match binLogPath with + | Some(path) -> + let path = match path with + | Some path -> path // specific file + | None -> Path.Combine(Path.GetDirectoryName(projectPath), "msbuild.binlog") // auto-generated file + sprintf "/bl:\"%s\"" path + | None -> "" + + let arguments prefix = + sprintf "%s -restore %s %c%s%c /t:InteractivePackageManagement" prefix binLoggingArguments '\"' projectPath '\"' + + let workingDir = Path.GetDirectoryName projectPath + + let succeeded = +#if !(NETSTANDARD || NETCOREAPP) + // The Desktop build uses "msbuild" to build + executeBuild msbuildExePath (arguments "") workingDir +#else + // The coreclr uses "dotnet msbuild" to build + executeBuild dotnetHostPath (arguments "msbuild") workingDir +#endif + let outputFile = projectPath + ".fsx" + let resultOutFile = if succeeded && File.Exists(outputFile) then Some outputFile else None + succeeded, resultOutFile + + // Generate a project files for dependencymanager projects + let generateLibrarySource = @"// Generated dependencymanager library +namespace lib" + + let generateProjectBody = @" + + + $(TARGETFRAMEWORK) + false + + + 4.7.0 + 4.7.1-* + + + + +$(PACKAGEREFERENCES) + + + + + + + + + + + + fsharp41 + tools + + + + + + + <_ResolvedOutputFiles + Include=""%(_ResolvedProjectReferencePaths.RootDir)%(_ResolvedProjectReferencePaths.Directory)/**/*"" + Exclude=""%(_ResolvedProjectReferencePaths.RootDir)%(_ResolvedProjectReferencePaths.Directory)/**/FSharp.Core.dll;%(_ResolvedProjectReferencePaths.RootDir)%(_ResolvedProjectReferencePaths.Directory)/**/System.ValueTuple.dll"" + Condition=""'%(_ResolvedProjectReferencePaths.IsFSharpDesignTimeProvider)' == 'true'""> + %(_ResolvedProjectReferencePaths.NearestTargetFramework) + + + <_ResolvedOutputFiles + Include=""@(BuiltProjectOutputGroupKeyOutput)"" + Condition=""'$(IsFSharpDesignTimeProvider)' == 'true' and '%(BuiltProjectOutputGroupKeyOutput->Filename)%(BuiltProjectOutputGroupKeyOutput->Extension)' != 'FSharp.Core.dll' and '%(BuiltProjectOutputGroupKeyOutput->Filename)%(BuiltProjectOutputGroupKeyOutput->Extension)' != 'System.ValueTuple.dll'""> + $(TargetFramework) + + + + $(FSharpToolsDirectory)/$(FSharpDesignTimeProtocol)/%(_ResolvedOutputFiles.NearestTargetFramework)/%(_ResolvedOutputFiles.FileName)%(_ResolvedOutputFiles.Extension) + + + + + + + + + $([System.String]::Copy('%(Identity)').Replace('\', '/')) + $([System.String]::Copy('%(ResolvedCompileFileDefinitions.PathInPackage)').Replace('\', '/')) + $([System.String]::Copy('%(InteractiveResolvedFile.NormalizedIdentity)').IndexOf('%(InteractiveResolvedFile.NormalizedPathInPackage)')) + $([System.String]::Copy('%(InteractiveResolvedFile.NormalizedIdentity)').Substring(0, %(InteractiveResolvedFile.PositionPathInPackage))) + %(InteractiveResolvedFile.PackageRoot)content\%(ResolvedCompileFileDefinitions.FileName)%(ResolvedCompileFileDefinitions.Extension).fsx + $([System.String]::Copy('%(ResolvedCompileFileDefinitions.PathInPackage)').StartsWith('ref/')) + %(ResolvedCompileFileDefinitions.NuGetPackageId) + %(ResolvedCompileFileDefinitions.NuGetPackageVersion) + + + $([System.String]::Copy('%(Identity)').Replace('\', '/')) + $([System.String]::Copy('%(RuntimeCopyLocalItems.PathInPackage)').Replace('\', '/')) + $([System.String]::Copy('%(InteractiveResolvedFile.NormalizedIdentity)').IndexOf('%(InteractiveResolvedFile.NormalizedPathInPackage)')) + $([System.String]::Copy('%(InteractiveResolvedFile.NormalizedIdentity)').Substring(0, %(InteractiveResolvedFile.PositionPathInPackage))) + %(InteractiveResolvedFile.PackageRoot)content\%(RuntimeCopyLocalItems.FileName)%(RuntimeCopyLocalItems.Extension).fsx + $([System.String]::Copy('%(RuntimeCopyLocalItems.PathInPackage)').StartsWith('ref/')) + %(RuntimeCopyLocalItems.NuGetPackageId) + %(RuntimeCopyLocalItems.NuGetPackageVersion) + + + $([MSBuild]::EnsureTrailingSlash('$([System.String]::Copy('%(FullPath)').Substring(0, $([System.String]::Copy('%(FullPath)').LastIndexOf('runtimes'))))')) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +" diff --git a/src/fsharp/FSharp.DependencyManager/FSharp.DependencyManager.fs b/src/fsharp/FSharp.DependencyManager/FSharp.DependencyManager.fs new file mode 100644 index 0000000000..9c577e9ca8 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/FSharp.DependencyManager.fs @@ -0,0 +1,172 @@ +// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. + +namespace FSharp.DependencyManager + +open System +open System.Collections.Concurrent +open System.Diagnostics +open System.IO +open FSharp.DependencyManager +open FSharp.DependencyManager.Utilities + +module Attributes = + [] + do () + +type PackageReference = { Include:string; Version:string; RestoreSources:string; Script:string } + +module FSharpDependencyManager = + + let private concat (s:string) (v:string) : string = + match String.IsNullOrEmpty(s), String.IsNullOrEmpty(v) with + | false, false -> s + ";" + v + | false, true -> s + | true, false -> v + | _ -> "" + + let formatPackageReference p = + let { Include=inc; Version=ver; RestoreSources=src; Script=script } = p + seq { + match not (String.IsNullOrEmpty(inc)), not (String.IsNullOrEmpty(ver)), not (String.IsNullOrEmpty(script)) with + | true, true, false -> yield sprintf @" true" inc ver + | true, true, true -> yield sprintf @" true" inc ver script + | true, false, false -> yield sprintf @" true" inc + | true, false, true -> yield sprintf @" true" inc script + | _ -> () + match not (String.IsNullOrEmpty(src)) with + | true -> yield sprintf @" %s" (concat "$(RestoreAdditionalProjectSources)" src) + | _ -> () + } + + let parsePackageReference (lines: string list) = + let mutable binLogPath = None + let parsePackageReferenceOption (line: string) = + let validatePackageName package packageName = + if String.Compare(packageName, package, StringComparison.OrdinalIgnoreCase) = 0 then + raise (ArgumentException(sprintf "PackageManager can not reference the System Package '%s'" packageName)) // @@@@@@@@@@@@@@@@@@@@@@@ Globalize me please + let rec parsePackageReferenceOption' (options: (string option * string option) list) (implicitArgumentCount: int) (packageReference: PackageReference option) = + let current = + match packageReference with + | Some p -> p + | None -> { Include = ""; Version = "*"; RestoreSources = ""; Script = "" } + match options with + | [] -> packageReference + | opt :: rest -> + let addInclude v = + validatePackageName v "mscorlib" + validatePackageName v "FSharp.Core" + validatePackageName v "System.ValueTuple" + validatePackageName v "NETStandard.Library" + Some { current with Include = v } + let setVersion v = Some { current with Version = v } + match opt with + | Some "include", Some v -> addInclude v |> parsePackageReferenceOption' rest implicitArgumentCount + | Some "include", None -> raise (ArgumentException(sprintf "%s requires a value" "Include")) // @@@@@@@@@@@@@@@@@@@@@@@ Globalize me please + | Some "version", Some v -> setVersion v |> parsePackageReferenceOption' rest implicitArgumentCount + | Some "version", None -> raise (ArgumentException(sprintf "%s requires a value" "Version")) // @@@@@@@@@@@@@@@@@@@@@@@ Globalize me please + | Some "restoresources", Some v -> Some { current with RestoreSources = concat current.RestoreSources v } |> parsePackageReferenceOption' rest implicitArgumentCount + | Some "restoresources", None -> raise (ArgumentException(sprintf "%s requires a value" "RestoreSources")) // @@@@@@@@@@@@@@@@@@@@@@@ Globalize me please + | Some "script", Some v -> Some { current with Script = v } |> parsePackageReferenceOption' rest implicitArgumentCount + | Some "bl", value -> + match value with + | Some v when v.ToLowerInvariant() = "true" -> binLogPath <- Some None // auto-generated logging location + | Some v when v.ToLowerInvariant() = "false" -> binLogPath <- None // no logging + | Some path -> binLogPath <- Some(Some path) // explicit logging location + | None -> + // parser shouldn't get here because unkeyed values follow a different path, but for the sake of completeness and keeping the compiler happy, + // this is fine + binLogPath <- Some None // auto-generated logging location + parsePackageReferenceOption' rest implicitArgumentCount packageReference + | None, Some v -> + match v.ToLowerInvariant() with + | "bl" -> + // a bare 'bl' enables binary logging and is NOT interpreted as one of the positional arguments. On the off chance that the user actually wants + // to reference a package named 'bl' they still have the 'Include=bl' syntax as a fallback. + binLogPath <- Some None // auto-generated logging location + parsePackageReferenceOption' rest implicitArgumentCount packageReference + | _ -> + match implicitArgumentCount with + | 0 -> addInclude v + | 1 -> setVersion v + | _ -> raise (ArgumentException(sprintf "Unable to apply implicit argument number %d" (implicitArgumentCount + 1))) // @@@@@@@@@@@@@@@@@@@@@@@ Globalize me please + |> parsePackageReferenceOption' rest (implicitArgumentCount + 1) + | _ -> parsePackageReferenceOption' rest implicitArgumentCount packageReference + let options = getOptions line + parsePackageReferenceOption' options 0 None + lines + |> List.choose parsePackageReferenceOption + |> List.distinct + |> (fun l -> l, binLogPath) + +type [] FSharpDependencyManager (outputDir:string option) = + + let key = "nuget" + let name = "MsBuild Nuget DependencyManager" + let scriptsPath = + let path = Path.Combine(Path.GetTempPath(), key, Process.GetCurrentProcess().Id.ToString()) + match outputDir with + | None -> path + | Some v -> Path.Combine(path, v) + let generatedScripts = new ConcurrentDictionary() + let deleteScripts () = + try + if Directory.Exists(scriptsPath) then + () //Directory.Delete(scriptsPath, true) + with | _ -> () + + let deleteAtExit = + try + if not (File.Exists(scriptsPath)) then + Directory.CreateDirectory(scriptsPath) |> ignore + true + with | _ -> false + + let emitFile filename (body:string) = + try + // Create a file to write to + use sw = File.CreateText(filename) + sw.WriteLine(body) + with | _ -> () + + do if deleteAtExit then AppDomain.CurrentDomain.ProcessExit |> Event.add(fun _ -> deleteScripts () ) + + member __.Name = name + + member __.Key = key + + member __.ResolveDependencies(_scriptDir:string, _mainScriptName:string, _scriptName:string, packageManagerTextLines:string seq, tfm: string) : bool * string list * string list = + + let packageReferences, binLogPath = + packageManagerTextLines + |> List.ofSeq + |> FSharpDependencyManager.parsePackageReference + let packageReferenceLines = + packageReferences + |> List.map FSharpDependencyManager.formatPackageReference + |> Seq.concat + let packageReferenceText = String.Join(Environment.NewLine, packageReferenceLines) + + // Generate a project files + let generateAndBuildProjectArtifacts = + let writeFile path body = + if not (generatedScripts.ContainsKey(body.GetHashCode().ToString())) then + emitFile path body + + let fsProjectPath = Path.Combine(scriptsPath, "Project.fsproj") + + let generateProjBody = + generateProjectBody.Replace("$(TARGETFRAMEWORK)", tfm) + .Replace("$(PACKAGEREFERENCES)", packageReferenceText) + + writeFile (Path.Combine(scriptsPath, "Library.fs")) generateLibrarySource + writeFile fsProjectPath generateProjBody + + let succeeded, resultingFsx = buildProject fsProjectPath binLogPath + let fsx = + match resultingFsx with + | Some fsx -> [fsx] + | None -> [] + + succeeded, fsx, List.empty + + generateAndBuildProjectArtifacts diff --git a/src/fsharp/FSharp.DependencyManager/FSharp.DependencyManager.fsproj b/src/fsharp/FSharp.DependencyManager/FSharp.DependencyManager.fsproj new file mode 100644 index 0000000000..7faf2884f4 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/FSharp.DependencyManager.fsproj @@ -0,0 +1,80 @@ + + + + + + Library + net472;netstandard2.0 + netstandard2.0 + FSharp.DependencyManager + $(NoWarn);45;55;62;75;1204 + true + $(DefineConstants);COMPILER + $(DefineConstants);MSBUILD_AT_LEAST_15 + $(OtherFlags) --warnon:1182 --maxerrors:20 --extraoptimizationloops:1 + true + + + + + $(BaseOutputPath)\$(Configuration)\$(TargetFramework) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.cs.xlf b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.cs.xlf new file mode 100644 index 0000000000..1b2b789124 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.cs.xlf @@ -0,0 +1,12 @@ + + + + + + Not used. + Not used. + + + + + \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.de.xlf b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.de.xlf new file mode 100644 index 0000000000..fad4a92c19 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.de.xlf @@ -0,0 +1,12 @@ + + + + + + Not used. + Not used. + + + + + \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.en.xlf b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.en.xlf new file mode 100644 index 0000000000..486faaceb8 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.en.xlf @@ -0,0 +1,12 @@ + + + + + + Not used. + Not used. + + + + + \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.es.xlf b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.es.xlf new file mode 100644 index 0000000000..af7ece6ad9 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.es.xlf @@ -0,0 +1,12 @@ + + + + + + Not used. + Not used. + + + + + \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.fr.xlf b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.fr.xlf new file mode 100644 index 0000000000..42aa351aa0 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.fr.xlf @@ -0,0 +1,12 @@ + + + + + + Not used. + Not used. + + + + + \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.it.xlf b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.it.xlf new file mode 100644 index 0000000000..da872e4f39 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.it.xlf @@ -0,0 +1,12 @@ + + + + + + Not used. + Not used. + + + + + \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.ja.xlf b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.ja.xlf new file mode 100644 index 0000000000..e9e3444fcf --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.ja.xlf @@ -0,0 +1,12 @@ + + + + + + Not used. + Not used. + + + + + \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.ko.xlf b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.ko.xlf new file mode 100644 index 0000000000..13f0865b93 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.ko.xlf @@ -0,0 +1,12 @@ + + + + + + Not used. + Not used. + + + + + \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.pl.xlf b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.pl.xlf new file mode 100644 index 0000000000..e9718434a1 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.pl.xlf @@ -0,0 +1,12 @@ + + + + + + Not used. + Not used. + + + + + \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.pt-BR.xlf b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.pt-BR.xlf new file mode 100644 index 0000000000..6fb3374c22 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.pt-BR.xlf @@ -0,0 +1,12 @@ + + + + + + Not used. + Not used. + + + + + \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.ru.xlf b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.ru.xlf new file mode 100644 index 0000000000..98624d7996 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.ru.xlf @@ -0,0 +1,12 @@ + + + + + + Not used. + Not used. + + + + + \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.tr.xlf b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.tr.xlf new file mode 100644 index 0000000000..a94d8e068e --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.tr.xlf @@ -0,0 +1,12 @@ + + + + + + Not used. + Not used. + + + + + \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.zh-Hans.xlf b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.zh-Hans.xlf new file mode 100644 index 0000000000..44e599a414 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.zh-Hans.xlf @@ -0,0 +1,12 @@ + + + + + + Not used. + Not used. + + + + + \ No newline at end of file diff --git a/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.zh-Hant.xlf b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.zh-Hant.xlf new file mode 100644 index 0000000000..83fa3521e6 --- /dev/null +++ b/src/fsharp/FSharp.DependencyManager/xlf/FSDependencyManager.txt.zh-Hant.xlf @@ -0,0 +1,12 @@ + + + + + + Not used. + Not used. + + + + + \ No newline at end of file diff --git a/src/fsharp/IlxGen.fs b/src/fsharp/IlxGen.fs index 18be85e72a..412d1a62ac 100755 --- a/src/fsharp/IlxGen.fs +++ b/src/fsharp/IlxGen.fs @@ -2786,32 +2786,30 @@ and GenNewArray cenv cgbuf eenv (elems: Expr list, elemTy, m) sequel = GenNewArraySimple cenv cgbuf eenv (elems, elemTy, m) sequel and GenCoerce cenv cgbuf eenv (e, tgty, m, srcty) sequel = - let g = cenv.g - // Is this an upcast? - if TypeRelations.TypeDefinitelySubsumesTypeNoCoercion 0 g cenv.amap m tgty srcty && - // Do an extra check - should not be needed - TypeRelations.TypeFeasiblySubsumesType 0 g cenv.amap m tgty TypeRelations.NoCoerce srcty then - begin - if (isInterfaceTy g tgty) then ( - GenExpr cenv cgbuf eenv SPSuppress e Continue - let ilToTy = GenType cenv.amap m eenv.tyenv tgty - // Section "III.1.8.1.3 Merging stack states" of ECMA-335 implies that no unboxing - // is required, but we still push the coerced type on to the code gen buffer. - CG.EmitInstrs cgbuf (pop 1) (Push [ilToTy]) [] - GenSequel cenv eenv.cloc cgbuf sequel - ) else ( - GenExpr cenv cgbuf eenv SPSuppress e sequel - ) - end - else - GenExpr cenv cgbuf eenv SPSuppress e Continue - if not (isObjTy g srcty) then - let ilFromTy = GenType cenv.amap m eenv.tyenv srcty - CG.EmitInstrs cgbuf (pop 1) (Push [g.ilg.typ_Object]) [ I_box ilFromTy ] - if not (isObjTy g tgty) then - let ilToTy = GenType cenv.amap m eenv.tyenv tgty - CG.EmitInstrs cgbuf (pop 1) (Push [ilToTy]) [ I_unbox_any ilToTy ] - GenSequel cenv eenv.cloc cgbuf sequel + let g = cenv.g + // Is this an upcast? + if TypeRelations.TypeDefinitelySubsumesTypeNoCoercion 0 g cenv.amap m tgty srcty && + // Do an extra check - should not be needed + TypeRelations.TypeFeasiblySubsumesType 0 g cenv.amap m tgty TypeRelations.NoCoerce srcty + then + if isInterfaceTy g tgty then + GenExpr cenv cgbuf eenv SPSuppress e Continue + let ilToTy = GenType cenv.amap m eenv.tyenv tgty + // Section "III.1.8.1.3 Merging stack states" of ECMA-335 implies that no unboxing + // is required, but we still push the coerced type on to the code gen buffer. + CG.EmitInstrs cgbuf (pop 1) (Push [ilToTy]) [] + GenSequel cenv eenv.cloc cgbuf sequel + else + GenExpr cenv cgbuf eenv SPSuppress e sequel + else + GenExpr cenv cgbuf eenv SPSuppress e Continue + if not (isObjTy g srcty) then + let ilFromTy = GenType cenv.amap m eenv.tyenv srcty + CG.EmitInstrs cgbuf (pop 1) (Push [g.ilg.typ_Object]) [ I_box ilFromTy ] + if not (isObjTy g tgty) then + let ilToTy = GenType cenv.amap m eenv.tyenv tgty + CG.EmitInstrs cgbuf (pop 1) (Push [ilToTy]) [ I_unbox_any ilToTy ] + GenSequel cenv eenv.cloc cgbuf sequel and GenReraise cenv cgbuf eenv (rtnty, m) sequel = let ilReturnTy = GenType cenv.amap m eenv.tyenv rtnty @@ -3398,65 +3396,63 @@ and GenTryCatch cenv cgbuf eenv (e1, vf: Val, ef, vh: Val, eh, m, resty, spTry, let startOfFilter = CG.GenerateMark cgbuf "startOfFilter" let afterFilter = CG.GenerateDelayMark cgbuf "afterFilter" let (sequelOnBranches, afterJoin, stackAfterJoin, sequelAfterJoin) = GenJoinPoint cenv cgbuf "filter" eenv g.int_ty m EndFilter - begin - // We emit the sequence point for the 'with' keyword span on the start of the filter - // block. However the targets of the filter block pattern matching should not get any - // sequence points (they will be 'true'/'false' values indicating if the exception has been - // caught or not). - // - // The targets of the handler block DO get sequence points. Thus the expected behaviour - // for a try/with with a complex pattern is that we hit the "with" before the filter is run - // and then jump to the handler for the successful catch (or continue with exception handling - // if the filter fails) - match spWith with - | SequencePointAtWith m -> CG.EmitSeqPoint cgbuf m - | NoSequencePointAtWith -> () - - - CG.SetStack cgbuf [g.ilg.typ_Object] - let _, eenvinner = AllocLocalVal cenv cgbuf vf eenvinner None (startOfFilter, afterFilter) - CG.EmitInstr cgbuf (pop 1) (Push [g.iltyp_Exception]) (I_castclass g.iltyp_Exception) - - GenStoreVal cenv cgbuf eenvinner vf.Range vf - - // Why SPSuppress? Because we do not emit a sequence point at the start of the List.filter - we've already put one on - // the 'with' keyword above - GenExpr cenv cgbuf eenvinner SPSuppress ef sequelOnBranches - CG.SetMarkToHere cgbuf afterJoin - CG.SetStack cgbuf stackAfterJoin - GenSequel cenv eenv.cloc cgbuf sequelAfterJoin - end + // We emit the sequence point for the 'with' keyword span on the start of the filter + // block. However the targets of the filter block pattern matching should not get any + // sequence points (they will be 'true'/'false' values indicating if the exception has been + // caught or not). + // + // The targets of the handler block DO get sequence points. Thus the expected behaviour + // for a try/with with a complex pattern is that we hit the "with" before the filter is run + // and then jump to the handler for the successful catch (or continue with exception handling + // if the filter fails) + match spWith with + | SequencePointAtWith m -> CG.EmitSeqPoint cgbuf m + | NoSequencePointAtWith -> () + + + CG.SetStack cgbuf [g.ilg.typ_Object] + let _, eenvinner = AllocLocalVal cenv cgbuf vf eenvinner None (startOfFilter, afterFilter) + CG.EmitInstr cgbuf (pop 1) (Push [g.iltyp_Exception]) (I_castclass g.iltyp_Exception) + + GenStoreVal cenv cgbuf eenvinner vf.Range vf + + // Why SPSuppress? Because we do not emit a sequence point at the start of the List.filter - we've already put one on + // the 'with' keyword above + GenExpr cenv cgbuf eenvinner SPSuppress ef sequelOnBranches + CG.SetMarkToHere cgbuf afterJoin + CG.SetStack cgbuf stackAfterJoin + GenSequel cenv eenv.cloc cgbuf sequelAfterJoin let endOfFilter = CG.GenerateMark cgbuf "endOfFilter" let filterMarks = (startOfFilter.CodeLabel, endOfFilter.CodeLabel) CG.SetMarkToHere cgbuf afterFilter let startOfHandler = CG.GenerateMark cgbuf "startOfHandler" - begin - CG.SetStack cgbuf [g.ilg.typ_Object] - let _, eenvinner = AllocLocalVal cenv cgbuf vh eenvinner None (startOfHandler, afterHandler) - CG.EmitInstr cgbuf (pop 1) (Push [g.iltyp_Exception]) (I_castclass g.iltyp_Exception) - GenStoreVal cenv cgbuf eenvinner vh.Range vh - - GenExpr cenv cgbuf eenvinner SPAlways eh (LeaveHandler (false, whereToSave, afterHandler)) - end + + CG.SetStack cgbuf [g.ilg.typ_Object] + let _, eenvinner = AllocLocalVal cenv cgbuf vh eenvinner None (startOfHandler, afterHandler) + CG.EmitInstr cgbuf (pop 1) (Push [g.iltyp_Exception]) (I_castclass g.iltyp_Exception) + GenStoreVal cenv cgbuf eenvinner vh.Range vh + + GenExpr cenv cgbuf eenvinner SPAlways eh (LeaveHandler (false, whereToSave, afterHandler)) + let endOfHandler = CG.GenerateMark cgbuf "endOfHandler" let handlerMarks = (startOfHandler.CodeLabel, endOfHandler.CodeLabel) ILExceptionClause.FilterCatch(filterMarks, handlerMarks) else let startOfHandler = CG.GenerateMark cgbuf "startOfHandler" - begin - match spWith with - | SequencePointAtWith m -> CG.EmitSeqPoint cgbuf m - | NoSequencePointAtWith -> () + + match spWith with + | SequencePointAtWith m -> CG.EmitSeqPoint cgbuf m + | NoSequencePointAtWith -> () - CG.SetStack cgbuf [g.ilg.typ_Object] - let _, eenvinner = AllocLocalVal cenv cgbuf vh eenvinner None (startOfHandler, afterHandler) - CG.EmitInstr cgbuf (pop 1) (Push [g.iltyp_Exception]) (I_castclass g.iltyp_Exception) + CG.SetStack cgbuf [g.ilg.typ_Object] + let _, eenvinner = AllocLocalVal cenv cgbuf vh eenvinner None (startOfHandler, afterHandler) + CG.EmitInstr cgbuf (pop 1) (Push [g.iltyp_Exception]) (I_castclass g.iltyp_Exception) - GenStoreVal cenv cgbuf eenvinner m vh + GenStoreVal cenv cgbuf eenvinner m vh - GenExpr cenv cgbuf eenvinner SPAlways eh (LeaveHandler (false, whereToSave, afterHandler)) - end + GenExpr cenv cgbuf eenvinner SPAlways eh (LeaveHandler (false, whereToSave, afterHandler)) + let endOfHandler = CG.GenerateMark cgbuf "endOfHandler" let handlerMarks = (startOfHandler.CodeLabel, endOfHandler.CodeLabel) ILExceptionClause.TypeCatch(g.ilg.typ_Object, handlerMarks) @@ -5089,7 +5085,6 @@ and GenDecisionTreeSwitch cenv cgbuf inplabOpt stackAtTargets eenv e cases defau | _ -> error(InternalError("these matches should never be needed", switchm)) and GenDecisionTreeCases cenv cgbuf stackAtTargets eenv defaultTargetOpt targets repeatSP targetInfos sequel caseLabels cases (contf: Zmap<_,_> -> FakeUnit) = - assert(cgbuf.GetCurrentStack() = stackAtTargets) // cgbuf stack should be unchanged over tests. [bug://1750]. match defaultTargetOpt with | Some defaultTarget -> @@ -5274,7 +5269,7 @@ and GenBindingAfterSequencePoint cenv cgbuf eenv sp (TBind(vspec, rhsExpr, _)) s // Workaround for .NET and Visual Studio restriction w.r.t debugger type proxys // Mark internal constructors in internal classes as public. let access = - if access = ILMemberAccess.Assembly && vspec.IsConstructor && IsHiddenTycon g eenv.sigToImplRemapInfo vspec.MemberApparentEntity.Deref then + if access = ILMemberAccess.Assembly && vspec.IsConstructor && IsHiddenTycon eenv.sigToImplRemapInfo vspec.MemberApparentEntity.Deref then ILMemberAccess.Public else access @@ -6489,7 +6484,7 @@ and GenModuleBinding cenv (cgbuf: CodeGenBuffer) (qname: QualifiedNameOfFile) la GenLetRecBindings cenv cgbuf eenv ([bind], m) | ModuleOrNamespaceBinding.Module (mspec, mdef) -> - let hidden = IsHiddenTycon cenv.g eenv.sigToImplRemapInfo mspec + let hidden = IsHiddenTycon eenv.sigToImplRemapInfo mspec let eenvinner = if mspec.IsNamespace then eenv else @@ -6594,56 +6589,47 @@ and GenTopImpl cenv (mgbuf: AssemblyBuilder) mainInfoOpt eenv (TImplFile (qname, else [], [] - begin - - match mainInfoOpt with - - // Final file in .EXE - | Some mainInfo -> - - // Generate an explicit main method. If necessary, make a class constructor as - // well for the bindings earlier in the file containing the entry point. - match mgbuf.GetExplicitEntryPointInfo() with - - // Final file, explicit entry point: place the code in a .cctor, and add code to main that forces the .cctor (if topCode has initialization effect). - | Some tref -> - if doesSomething then - lazyInitInfo.Add (fun fspec feefee seqpt -> - // This adds the explicit init of the .cctor to the explicit entry point main method - mgbuf.AddExplicitInitToSpecificMethodDef((fun md -> md.IsEntryPoint), tref, fspec, GenPossibleILSourceMarker cenv m, feefee, seqpt)) - - let cctorMethDef = mkILClassCtor (MethodBody.IL topCode) - mgbuf.AddMethodDef(initClassTy.TypeRef, cctorMethDef) - - // Final file, implicit entry point. We generate no .cctor. - // void main@() { - // - // } - | None -> - - let ilAttrs = mkILCustomAttrs (GenAttrs cenv eenv mainInfo) - if not cenv.opts.isInteractive && not doesSomething then - let errorM = m.EndRange - warning (Error(FSComp.SR.ilMainModuleEmpty(), errorM)) - - // generate main@ - let ilMainMethodDef = - let mdef = mkILNonGenericStaticMethod(mainMethName, ILMemberAccess.Public, [], mkILReturn ILType.Void, MethodBody.IL topCode) - mdef.With(isEntryPoint= true, customAttrs = ilAttrs) - mgbuf.AddMethodDef(initClassTy.TypeRef, ilMainMethodDef) - - - // Library file: generate an optional .cctor if topCode has initialization effect - | None -> + match mainInfoOpt with + // Final file in .EXE + | Some mainInfo -> + // Generate an explicit main method. If necessary, make a class constructor as + // well for the bindings earlier in the file containing the entry point. + match mgbuf.GetExplicitEntryPointInfo() with + // Final file, explicit entry point: place the code in a .cctor, and add code to main that forces the .cctor (if topCode has initialization effect). + | Some tref -> if doesSomething then + lazyInitInfo.Add (fun fspec feefee seqpt -> + // This adds the explicit init of the .cctor to the explicit entry point main method + mgbuf.AddExplicitInitToSpecificMethodDef((fun md -> md.IsEntryPoint), tref, fspec, GenPossibleILSourceMarker cenv m, feefee, seqpt)) - // Add the cctor let cctorMethDef = mkILClassCtor (MethodBody.IL topCode) mgbuf.AddMethodDef(initClassTy.TypeRef, cctorMethDef) + // Final file, implicit entry point. We generate no .cctor. + // void main@() { + // + // } + | None -> + let ilAttrs = mkILCustomAttrs (GenAttrs cenv eenv mainInfo) + if not cenv.opts.isInteractive && not doesSomething then + let errorM = m.EndRange + warning (Error(FSComp.SR.ilMainModuleEmpty(), errorM)) + + // generate main@ + let ilMainMethodDef = + let mdef = mkILNonGenericStaticMethod(mainMethName, ILMemberAccess.Public, [], mkILReturn ILType.Void, MethodBody.IL topCode) + mdef.With(isEntryPoint= true, customAttrs = ilAttrs) - end + mgbuf.AddMethodDef(initClassTy.TypeRef, ilMainMethodDef) + + + // Library file: generate an optional .cctor if topCode has initialization effect + | None -> + if doesSomething then + // Add the cctor + let cctorMethDef = mkILClassCtor (MethodBody.IL topCode) + mgbuf.AddMethodDef(initClassTy.TypeRef, cctorMethDef) // Commit the directed initializations if doesSomething then @@ -6828,8 +6814,8 @@ and GenTypeDef cenv mgbuf lazyInitInfo eenv m (tycon: Tycon) = let ilIntfTys = tycon.ImmediateInterfaceTypesOfFSharpTycon |> List.map (GenType cenv.amap m eenvinner.tyenv) let ilTypeName = tref.Name - let hidden = IsHiddenTycon g eenv.sigToImplRemapInfo tycon - let hiddenRepr = hidden || IsHiddenTyconRepr g eenv.sigToImplRemapInfo tycon + let hidden = IsHiddenTycon eenv.sigToImplRemapInfo tycon + let hiddenRepr = hidden || IsHiddenTyconRepr eenv.sigToImplRemapInfo tycon let access = ComputeTypeAccess tref hidden // The implicit augmentation doesn't actually create CompareTo(object) or Object.Equals @@ -7412,7 +7398,7 @@ and GenExnDef cenv mgbuf eenv m (exnc: Tycon) = | TExnFresh _ -> let ilThisTy = GenExnType cenv.amap m eenv.tyenv exncref let tref = ilThisTy.TypeRef - let isHidden = IsHiddenTycon g eenv.sigToImplRemapInfo exnc + let isHidden = IsHiddenTycon eenv.sigToImplRemapInfo exnc let access = ComputeTypeAccess tref isHidden let reprAccess = ComputeMemberAccess isHidden let fspecs = exnc.TrueInstanceFieldsAsList @@ -7514,29 +7500,27 @@ and GenExnDef cenv mgbuf eenv m (exnc: Tycon) = let CodegenAssembly cenv eenv mgbuf fileImpls = if not (isNil fileImpls) then - let a, b = List.frontAndBack fileImpls - let eenv = List.fold (GenTopImpl cenv mgbuf None) eenv a - let eenv = GenTopImpl cenv mgbuf cenv.opts.mainMethodInfo eenv b - - // Some constructs generate residue types and bindings. Generate these now. They don't result in any - // top-level initialization code. - begin - let extraBindings = mgbuf.GrabExtraBindingsToGenerate() - //printfn "#extraBindings = %d" extraBindings.Length - if extraBindings.Length > 0 then - let mexpr = TMDefs [ for b in extraBindings -> TMDefLet(b, range0) ] - let _emptyTopInstrs, _emptyTopCode = - CodeGenMethod cenv mgbuf ([], "unused", eenv, 0, (fun cgbuf eenv -> - let lazyInitInfo = ResizeArray() - let qname = QualifiedNameOfFile(mkSynId range0 "unused") - LocalScope "module" cgbuf (fun scopeMarks -> - let eenv = AddBindingsForModuleDef (fun cloc v -> AllocTopValWithinExpr cenv cgbuf cloc scopeMarks v) eenv.cloc eenv mexpr - GenModuleDef cenv cgbuf qname lazyInitInfo eenv mexpr)), range0) - //printfn "#_emptyTopInstrs = %d" _emptyTopInstrs.Length - () - end - - mgbuf.AddInitializeScriptsInOrderToEntryPoint() + let a, b = List.frontAndBack fileImpls + let eenv = List.fold (GenTopImpl cenv mgbuf None) eenv a + let eenv = GenTopImpl cenv mgbuf cenv.opts.mainMethodInfo eenv b + + // Some constructs generate residue types and bindings. Generate these now. They don't result in any + // top-level initialization code. + let extraBindings = mgbuf.GrabExtraBindingsToGenerate() + //printfn "#extraBindings = %d" extraBindings.Length + if extraBindings.Length > 0 then + let mexpr = TMDefs [ for b in extraBindings -> TMDefLet(b, range0) ] + let _emptyTopInstrs, _emptyTopCode = + CodeGenMethod cenv mgbuf ([], "unused", eenv, 0, (fun cgbuf eenv -> + let lazyInitInfo = ResizeArray() + let qname = QualifiedNameOfFile(mkSynId range0 "unused") + LocalScope "module" cgbuf (fun scopeMarks -> + let eenv = AddBindingsForModuleDef (fun cloc v -> AllocTopValWithinExpr cenv cgbuf cloc scopeMarks v) eenv.cloc eenv mexpr + GenModuleDef cenv cgbuf qname lazyInitInfo eenv mexpr)), range0) + //printfn "#_emptyTopInstrs = %d" _emptyTopInstrs.Length + () + + mgbuf.AddInitializeScriptsInOrderToEntryPoint() //------------------------------------------------------------------------- // When generating a module we just write into mutable @@ -7770,4 +7754,3 @@ type IlxAssemblyGenerator(amap: ImportMap, tcGlobals: TcGlobals, tcVal: Constrai /// Invert the compilation of the given value and return its current dynamic value and its compiled System.Type member __.LookupGeneratedValue (ctxt, v) = LookupGeneratedValue amap ctxt ilxGenEnv v - diff --git a/src/fsharp/InfoReader.fs b/src/fsharp/InfoReader.fs index 5e655ed0e7..1fac7a0f6e 100644 --- a/src/fsharp/InfoReader.fs +++ b/src/fsharp/InfoReader.fs @@ -19,7 +19,7 @@ open FSharp.Compiler.Tastops open FSharp.Compiler.TcGlobals /// Use the given function to select some of the member values from the members of an F# type -let private SelectImmediateMemberVals g optFilter f (tcref: TyconRef) = +let SelectImmediateMemberVals g optFilter f (tcref: TyconRef) = let chooser (vref: ValRef) = match vref.MemberInfo with // The 'when' condition is a workaround for the fact that values providing diff --git a/src/fsharp/LanguageFeatures.fs b/src/fsharp/LanguageFeatures.fs index 0472582f1b..2170cee8f7 100644 --- a/src/fsharp/LanguageFeatures.fs +++ b/src/fsharp/LanguageFeatures.fs @@ -16,18 +16,18 @@ open System // * When a feature is assigned a release language, we will scrub the code of feature references and apply // the Release Language version. -/// LanguageFeature enumeration [] type LanguageFeature = - | PreviewVersion = 0 - | LanguageVersion46 = 1 - | LanguageVersion47 = 2 - | SingleUnderscorePattern = 3 - | WildCardInForLoop = 4 - | RelaxWhitespace = 5 - | NameOf = 6 - | ImplicitYield = 7 - | OpenStaticClasses = 8 + | SingleUnderscorePattern + | WildCardInForLoop + | RelaxWhitespace + | NameOf + | ImplicitYield + | OpenStaticClasses + | DotlessFloat32Literal + | PackageManagement + | FromEndSlicing + | FixedIndexSlice3d4d /// LanguageVersion management type LanguageVersion (specifiedVersionAsString) = @@ -35,30 +35,32 @@ type LanguageVersion (specifiedVersionAsString) = // When we increment language versions here preview is higher than current RTM version static let languageVersion46 = 4.6m static let languageVersion47 = 4.7m + static let languageVersion50 = 5.0m static let previewVersion = 9999m // Language version when preview specified static let defaultVersion = languageVersion47 // Language version when default specified static let latestVersion = defaultVersion // Language version when latest specified - static let latestMajorVersion = languageVersion46 // Language version when latestmajor specified + static let latestMajorVersion = languageVersion47 // Language version when latestmajor specified static let validOptions = [| "preview"; "default"; "latest"; "latestmajor" |] - static let languageVersions = set [| languageVersion46; languageVersion47 |] + static let languageVersions = set [| languageVersion46; languageVersion47 (*; languageVersion50 *) |] static let features = dict [ - // Add new LanguageVersions here ... - LanguageFeature.LanguageVersion46, languageVersion46 - LanguageFeature.LanguageVersion47, languageVersion47 - LanguageFeature.PreviewVersion, previewVersion - // F# 4.7 LanguageFeature.SingleUnderscorePattern, languageVersion47 LanguageFeature.WildCardInForLoop, languageVersion47 LanguageFeature.RelaxWhitespace, languageVersion47 LanguageFeature.ImplicitYield, languageVersion47 - // Add new Language Features here... + // F# 5.0 + LanguageFeature.FixedIndexSlice3d4d, languageVersion50 + LanguageFeature.FromEndSlicing, languageVersion50 + LanguageFeature.DotlessFloat32Literal, languageVersion50 + + // F# preview LanguageFeature.NameOf, previewVersion LanguageFeature.OpenStaticClasses, previewVersion + LanguageFeature.PackageManagement, previewVersion ] let specified = @@ -70,6 +72,7 @@ type LanguageVersion (specifiedVersionAsString) = | "latestmajor" -> latestMajorVersion | "4.6" -> languageVersion46 | "4.7" -> languageVersion47 +(* | "5.0" -> languageVersion50 *) | _ -> 0m /// Check if this feature is supported by the selected langversion @@ -78,6 +81,10 @@ type LanguageVersion (specifiedVersionAsString) = | true, v -> v <= specified | false, _ -> false + /// Has preview been explicitly specified + member __.IsPreviewEnabled = + specified = previewVersion + /// Does the languageVersion support this version string member __.ContainsVersion version = match version with @@ -88,11 +95,11 @@ type LanguageVersion (specifiedVersionAsString) = member __.ValidOptions = validOptions /// Get a list of valid versions for help text - member __.ValidVersions = [| - for v in languageVersions |> Seq.sort do - let label = if v = defaultVersion then " (Default)" else "" - yield sprintf "%M%s" v label - |] + member __.ValidVersions = + [| + for v in languageVersions |> Seq.sort -> + sprintf "%M%s" v (if v = defaultVersion then " (Default)" else "") + |] /// Get the specified LanguageVersion member __.SpecifiedVersion = specified diff --git a/src/fsharp/LanguageFeatures.fsi b/src/fsharp/LanguageFeatures.fsi index 2b42698dd0..6b44cd878a 100644 --- a/src/fsharp/LanguageFeatures.fsi +++ b/src/fsharp/LanguageFeatures.fsi @@ -6,16 +6,16 @@ module internal FSharp.Compiler.Features /// LanguageFeature enumeration [] type LanguageFeature = - | PreviewVersion = 0 - | LanguageVersion46 = 1 - | LanguageVersion47 = 2 - | SingleUnderscorePattern = 3 - | WildCardInForLoop = 4 - | RelaxWhitespace = 5 - | NameOf = 6 - | ImplicitYield = 7 - | OpenStaticClasses = 8 - + | SingleUnderscorePattern + | WildCardInForLoop + | RelaxWhitespace + | NameOf + | ImplicitYield + | OpenStaticClasses + | DotlessFloat32Literal + | PackageManagement + | FromEndSlicing + | FixedIndexSlice3d4d /// LanguageVersion management type LanguageVersion = @@ -26,7 +26,10 @@ type LanguageVersion = /// Get the list of valid versions member ContainsVersion: string -> bool - /// Does the specified LanguageVersion support the specified feature + /// Has preview been explicitly specified + member IsPreviewEnabled: bool + + /// Does the selected LanguageVersion support the specified feature member SupportsFeature: LanguageFeature -> bool /// Get the list of valid versions diff --git a/src/fsharp/LegacyHostedCompilerForTesting.fs b/src/fsharp/LegacyHostedCompilerForTesting.fs index b793915b5c..821882d84d 100644 --- a/src/fsharp/LegacyHostedCompilerForTesting.fs +++ b/src/fsharp/LegacyHostedCompilerForTesting.fs @@ -61,20 +61,20 @@ type internal InProcCompiler(legacyReferenceResolver) = let ctok = AssumeCompilationThreadWithoutEvidence () let loggerProvider = InProcErrorLoggerProvider() - let exitCode = ref 0 + let mutable exitCode = 0 let exiter = { new Exiter with - member this.Exit n = exitCode := n; raise StopProcessing } + member this.Exit n = exitCode <- n; raise StopProcessing } try typecheckAndCompile(ctok, argv, legacyReferenceResolver, false, ReduceMemoryFlag.Yes, CopyFSharpCoreFlag.Yes, exiter, loggerProvider.Provider, None, None) with | StopProcessing -> () | ReportedError _ | WrappedError(ReportedError _,_) -> - exitCode := 1 + exitCode <- 1 () let output : CompilationOutput = { Warnings = loggerProvider.CapturedWarnings; Errors = loggerProvider.CapturedErrors } - !exitCode = 0, output + exitCode = 0, output /// in-proc version of fsc.exe type internal FscCompiler(legacyReferenceResolver) = diff --git a/src/fsharp/LegacyMSBuildReferenceResolver.fs b/src/fsharp/LegacyMSBuildReferenceResolver.fs index 8425f6197b..a07941509f 100644 --- a/src/fsharp/LegacyMSBuildReferenceResolver.fs +++ b/src/fsharp/LegacyMSBuildReferenceResolver.fs @@ -255,12 +255,12 @@ module LegacyMSBuildReferenceResolver "Software\Microsoft\.NetFramework", "AssemblyFoldersEx" , "" if Array.isEmpty references then [| |] else - let backgroundException = ref false + let mutable backgroundException = false let protect f = - if not !backgroundException then + if not backgroundException then try f() - with _ -> backgroundException := true + with _ -> backgroundException <- true let engine = { new IBuildEngine with diff --git a/src/fsharp/LexFilter.fs b/src/fsharp/LexFilter.fs index a998dfd699..470b54709b 100755 --- a/src/fsharp/LexFilter.fs +++ b/src/fsharp/LexFilter.fs @@ -399,39 +399,66 @@ type LexbufState(startPos: Position, member x.EndPos = endPos member x.PastEOF = pastEOF -[] -type PositionTuple = - val X: Position - val Y: Position - new (x: Position, y: Position) = { X = x; Y = y } - /// Used to save the state related to a token +/// Treat as though this is read-only. [] type TokenTup = - val Token : token - val LexbufState : LexbufState - val LastTokenPos: PositionTuple + // This is mutable for performance reasons. + val mutable Token : token + val mutable LexbufState : LexbufState + val mutable LastTokenPos: Position new (token, state, lastTokenPos) = { Token=token; LexbufState=state;LastTokenPos=lastTokenPos } /// Returns starting position of the token member x.StartPos = x.LexbufState.StartPos /// Returns end position of the token member x.EndPos = x.LexbufState.EndPos - + +type TokenTupPool() = + + /// Arbitrary. + /// When parsing the compiler's source files, the pool didn't come close to reaching this limit. + /// Therefore, this seems like a reasonable limit to handle 99% of cases. + [] + let maxSize = 100 + + let stack = System.Collections.Generic.Stack(Array.init maxSize (fun _ -> TokenTup(Unchecked.defaultof<_>, Unchecked.defaultof<_>, Unchecked.defaultof<_>))) + + member _.Rent() = + if stack.Count = 0 then + assert false + TokenTup(Unchecked.defaultof<_>, Unchecked.defaultof<_>, Unchecked.defaultof<_>) + else + stack.Pop() + + member _.Return(x: TokenTup) = + x.Token <- Unchecked.defaultof<_> + x.LexbufState <- Unchecked.defaultof<_> + x.LastTokenPos <- Unchecked.defaultof<_> + if stack.Count >= maxSize then + assert false + else + stack.Push x + /// Returns a token 'tok' with the same position as this token - member x.UseLocation tok = + member pool.UseLocation(x: TokenTup, tok) = let tokState = x.LexbufState - TokenTup(tok, LexbufState(tokState.StartPos, tokState.EndPos, false), x.LastTokenPos) + let tokTup = pool.Rent() + tokTup.Token <- tok + tokTup.LexbufState <- LexbufState(tokState.StartPos, tokState.EndPos, false) + tokTup.LastTokenPos <- x.LastTokenPos + tokTup /// Returns a token 'tok' with the same position as this token, except that /// it is shifted by specified number of characters from the left and from the right /// Note: positive value means shift to the right in both cases - member x.UseShiftedLocation(tok, shiftLeft, shiftRight) = - let tokState = x.LexbufState - TokenTup(tok, LexbufState(tokState.StartPos.ShiftColumnBy shiftLeft, - tokState.EndPos.ShiftColumnBy shiftRight, false), x.LastTokenPos) - - + member pool.UseShiftedLocation(x: TokenTup, tok, shiftLeft, shiftRight) = + let tokState = x.LexbufState + let tokTup = pool.Rent() + tokTup.Token <- tok + tokTup.LexbufState <- LexbufState(tokState.StartPos.ShiftColumnBy shiftLeft, tokState.EndPos.ShiftColumnBy shiftRight, false) + tokTup.LastTokenPos <- x.LastTokenPos + tokTup //---------------------------------------------------------------------------- // Utilities for the tokenizer that are needed in other places @@ -541,6 +568,12 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, | Parser.EOF _ -> tokenTup.LexbufState.StartPos.ColumnMinusOne | _ -> tokenTup.LexbufState.StartPos + //---------------------------------------------------------------------------- + // TokenTup pool + //-------------------------------------------------------------------------- + + let pool = TokenTupPool() + //---------------------------------------------------------------------------- // Part II. The state of the new lex stream object. //-------------------------------------------------------------------------- @@ -552,7 +585,6 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, let runWrappedLexerInConsistentLexbufState() = let state = if haveLexbufState then savedLexbufState else getLexbufState() setLexbufState state - let lastTokenStart = state.StartPos let lastTokenEnd = state.EndPos let token = lexer lexbuf // Now we've got the token, remember the lexbuf state, associating it with the token @@ -560,7 +592,12 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, let tokenLexbufState = getLexbufState() savedLexbufState <- tokenLexbufState haveLexbufState <- true - TokenTup(token, tokenLexbufState, PositionTuple(lastTokenStart, lastTokenEnd)) + + let tokenTup = pool.Rent() + tokenTup.Token <- token + tokenTup.LexbufState <- tokenLexbufState + tokenTup.LastTokenPos <- lastTokenEnd + tokenTup //---------------------------------------------------------------------------- // Fetch a raw token, either from the old lexer or from our delayedStack @@ -870,11 +907,11 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, | INFIX_COMPARE_OP " let tokenEndPos = tokenTup.LexbufState.EndPos if isAdjacent tokenTup lookaheadTokenTup then - let stack = ref [] + let mutable stack = [] let rec scanAhead nParen = let lookaheadTokenTup = popNextTokenTup() let lookaheadToken = lookaheadTokenTup.Token - stack := (lookaheadTokenTup, true) :: !stack + stack <- (lookaheadTokenTup, true) :: stack let lookaheadTokenStartPos = startPosOfTokenTup lookaheadTokenTup match lookaheadToken with | Parser.EOF _ | SEMICOLON_SEMICOLON -> false @@ -890,7 +927,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, let hasAfterOp = (match lookaheadToken with GREATER _ -> false | _ -> true) if nParen > 0 then // Don't smash the token if there is an after op and we're in a nested paren - stack := (lookaheadTokenTup, not hasAfterOp) :: (!stack).Tail + stack <- (lookaheadTokenTup, not hasAfterOp) :: stack.Tail scanAhead nParen else // On successful parse of a set of type parameters, look for an adjacent (, e.g. @@ -898,13 +935,13 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, // and insert a HIGH_PRECEDENCE_PAREN_APP if not hasAfterOp && (match nextTokenIsAdjacentLParenOrLBrack lookaheadTokenTup with Some LPAREN -> true | _ -> false) then let dotTokenTup = peekNextTokenTup() - stack := (dotTokenTup.UseLocation(HIGH_PRECEDENCE_PAREN_APP), false) :: !stack + stack <- (pool.UseLocation(dotTokenTup, HIGH_PRECEDENCE_PAREN_APP), false) :: stack true | INFIX_COMPARE_OP (TyparsCloseOp(greaters, afterOp)) -> let nParen = nParen - greaters.Length if nParen > 0 then // Don't smash the token if there is an after op and we're in a nested paren - stack := (lookaheadTokenTup, not afterOp.IsSome) :: (!stack).Tail + stack <- (lookaheadTokenTup, not afterOp.IsSome) :: stack.Tail scanAhead nParen else // On successful parse of a set of type parameters, look for an adjacent (, e.g. @@ -912,7 +949,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, // and insert a HIGH_PRECEDENCE_PAREN_APP if afterOp.IsNone && (match nextTokenIsAdjacentLParenOrLBrack lookaheadTokenTup with Some LPAREN -> true | _ -> false) then let dotTokenTup = peekNextTokenTup() - stack := (dotTokenTup.UseLocation(HIGH_PRECEDENCE_PAREN_APP), false) :: !stack + stack <- (pool.UseLocation(dotTokenTup, HIGH_PRECEDENCE_PAREN_APP), false) :: stack true | (LPAREN | LESS _ | LBRACK | LBRACK_LESS | INFIX_COMPARE_OP " scanAhead (nParen+1) @@ -963,26 +1000,31 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, let res = scanAhead 0 // Put the tokens back on and smash them up if needed - !stack |> List.iter (fun (tokenTup, smash) -> + stack |> List.iter (fun (tokenTup, smash) -> if smash then match tokenTup.Token with | INFIX_COMPARE_OP " - delayToken (tokenTup.UseShiftedLocation(INFIX_STAR_DIV_MOD_OP "/", 1, 0)) - delayToken (tokenTup.UseShiftedLocation(LESS res, 0, -1)) + delayToken (pool.UseShiftedLocation(tokenTup, INFIX_STAR_DIV_MOD_OP "/", 1, 0)) + delayToken (pool.UseShiftedLocation(tokenTup, LESS res, 0, -1)) + pool.Return tokenTup | GREATER_BAR_RBRACK -> - delayToken (tokenTup.UseShiftedLocation(BAR_RBRACK, 1, 0)) - delayToken (tokenTup.UseShiftedLocation(GREATER res, 0, -2)) + delayToken (pool.UseShiftedLocation(tokenTup, BAR_RBRACK, 1, 0)) + delayToken (pool.UseShiftedLocation(tokenTup, GREATER res, 0, -2)) + pool.Return tokenTup | GREATER_RBRACK -> - delayToken (tokenTup.UseShiftedLocation(RBRACK, 1, 0)) - delayToken (tokenTup.UseShiftedLocation(GREATER res, 0, -1)) + delayToken (pool.UseShiftedLocation(tokenTup, RBRACK, 1, 0)) + delayToken (pool.UseShiftedLocation(tokenTup, GREATER res, 0, -1)) + pool.Return tokenTup | GREATER _ -> - delayToken (tokenTup.UseLocation(GREATER res)) + delayToken (pool.UseLocation(tokenTup, GREATER res)) + pool.Return tokenTup | (INFIX_COMPARE_OP (TyparsCloseOp(greaters, afterOp) as opstr)) -> match afterOp with | None -> () - | Some tok -> delayToken (tokenTup.UseShiftedLocation(tok, greaters.Length, 0)) + | Some tok -> delayToken (pool.UseShiftedLocation(tokenTup, tok, greaters.Length, 0)) for i = greaters.Length - 1 downto 0 do - delayToken (tokenTup.UseShiftedLocation(greaters.[i] res, i, -opstr.Length + i + 1)) + delayToken (pool.UseShiftedLocation(tokenTup, greaters.[i] res, i, -opstr.Length + i + 1)) + pool.Return tokenTup | _ -> delayToken tokenTup else delayToken tokenTup) @@ -1109,7 +1151,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, // span of inserted token lasts from the col + 1 of the prev token // to the beginning of current token let lastTokenPos = - let pos = tokenTup.LastTokenPos.Y + let pos = tokenTup.LastTokenPos pos.ShiftColumnBy 1 returnToken (lexbufStateForInsertedDummyTokens (lastTokenPos, tokenTup.LexbufState.StartPos)) tok @@ -1235,7 +1277,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, popCtxt() effectsToDo <- (fun() -> if debug then dprintf "--> because %s is coming, inserting OBLOCKEND\n" keywordName - delayTokenNoProcessing (tokenTup.UseLocation OBLOCKEND)) :: effectsToDo + delayTokenNoProcessing (pool.UseLocation(tokenTup, OBLOCKEND))) :: effectsToDo | CtxtSeqBlock(_, _, NoAddBlockEnd) -> if debug then dprintf "--> because %s is coming, popping CtxtSeqBlock\n" keywordName popCtxt() @@ -1243,7 +1285,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, popCtxt() effectsToDo <- (fun() -> if debug then dprintf "--> because %s is coming, inserting ORIGHT_BLOCK_END\n" keywordName - delayTokenNoProcessing (tokenTup.UseLocation(ORIGHT_BLOCK_END))) :: effectsToDo + delayTokenNoProcessing (pool.UseLocation(tokenTup, ORIGHT_BLOCK_END))) :: effectsToDo | CtxtVanilla _ -> if debug then dprintf "--> because %s is coming, popping CtxtVanilla\n" keywordName popCtxt() @@ -1253,12 +1295,16 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, // Why _six_ TYPE_COMING_SOON? It's rather arbitrary, this means we can recover from up to six unmatched parens before failing. The unit tests (with 91609 in the name) demonstrate this. // Don't "delayToken tokenTup", we are replacing it, so consume it. if debug then dprintf "inserting 6 copies of %+A before %+A\n" comingSoon isHere - delayTokenNoProcessing (tokenTup.UseLocation isHere) + delayTokenNoProcessing (pool.UseLocation(tokenTup, isHere)) for i in 1..6 do - delayTokenNoProcessing (tokenTup.UseLocation comingSoon) + delayTokenNoProcessing (pool.UseLocation(tokenTup, comingSoon)) for e in List.rev effectsToDo do e() // push any END tokens after pushing the TYPE_IS_HERE and TYPE_COMING_SOON stuff, so that they come before those in the token stream + let returnToken tokenLexbufState token = + pool.Return tokenTup + returnToken tokenLexbufState token + match token, offsideStack with // inserted faux tokens need no other processing | _ when tokensThatNeedNoProcessingCount > 0 -> @@ -1279,7 +1325,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, // reset on ';;' rule. A ';;' terminates ALL entries | SEMICOLON_SEMICOLON, [] -> if debug then dprintf ";; scheduling a reset\n" - delayToken(tokenTup.UseLocation ORESET) + delayToken(pool.UseLocation(tokenTup, ORESET)) returnToken tokenLexbufState SEMICOLON_SEMICOLON | ORESET, [] -> @@ -1287,6 +1333,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, // NOTE: The parser thread of F# Interactive will often be blocked on this call, e.g. after an entry has been // processed and we're waiting for the first token of the next entry. peekInitial() |> ignore + pool.Return tokenTup hwTokenFetch true @@ -1300,7 +1347,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, if tokenStartCol < offsidePos.Column then warn tokenTup (FSComp.SR.lexfltIncorrentIndentationOfIn()) popCtxt() // Make sure we queue a dummy token at this position to check if any other pop rules apply - delayToken(tokenTup.UseLocation(ODUMMY token)) + delayToken(pool.UseLocation(tokenTup, ODUMMY token)) returnToken tokenLexbufState (if blockLet then ODECLEND else token) // Balancing rule. Encountering a 'done' balances with a 'do'. i.e. even a non-offside 'done' closes a 'do' @@ -1309,7 +1356,8 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, if debug then dprintf "DONE at %a terminates CtxtDo(offsidePos=%a)\n" outputPos tokenStartPos outputPos offsidePos popCtxt() // reprocess as the DONE may close a DO context - delayToken(tokenTup.UseLocation ODECLEND) + delayToken(pool.UseLocation(tokenTup, ODECLEND)) + pool.Return tokenTup hwTokenFetch useBlockRule // Balancing rule. Encountering a ')' or '}' balances with a '(' or '{', even if not offside @@ -1318,7 +1366,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, if debug then dprintf "RPAREN/RBRACE/BAR_RBRACE/RBRACK/BAR_RBRACK/RQUOTE/END at %a terminates CtxtParen()\n" outputPos tokenStartPos popCtxt() // Queue a dummy token at this position to check if any closing rules apply - delayToken(tokenTup.UseLocation(ODUMMY token)) + delayToken(pool.UseLocation(tokenTup, ODUMMY token)) returnToken tokenLexbufState token // Balancing rule. Encountering a 'end' can balance with a 'with' but only when not offside @@ -1326,7 +1374,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, when not (tokenStartCol + 1 <= offsidePos.Column) -> if debug then dprintf "END at %a terminates CtxtWithAsAugment()\n" outputPos tokenStartPos popCtxt() - delayToken(tokenTup.UseLocation(ODUMMY token)) // make sure we queue a dummy token at this position to check if any closing rules apply + delayToken(pool.UseLocation(tokenTup, ODUMMY token)) // make sure we queue a dummy token at this position to check if any closing rules apply returnToken tokenLexbufState OEND // Transition rule. CtxtNamespaceHead ~~~> CtxtSeqBlock @@ -1698,6 +1746,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, insertComingSoonTokens("MODULE", MODULE_COMING_SOON, MODULE_IS_HERE) if debug then dprintf "MODULE: entering CtxtModuleHead, awaiting EQUALS to go to CtxtSeqBlock (%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtModuleHead (tokenStartPos, token)) + pool.Return tokenTup hwTokenFetch useBlockRule // exception ... ~~~> CtxtException @@ -1746,7 +1795,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, | Some tok -> popCtxt() if debug then dprintf "--> inserting %+A\n" tok - delayTokenNoProcessing (tokenTup.UseLocation tok) + delayTokenNoProcessing (pool.UseLocation(tokenTup, tok)) // for the rest, we silently pop them | _ -> popCtxt() popCtxt() // pop CtxtMemberBody @@ -2034,7 +2083,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, // if e1 then e2 // else if e3 then e4 // else if e5 then e6 - let _ = popNextTokenTup() + popNextTokenTup() |> pool.Return if debug then dprintf "ELSE IF: replacing ELSE IF with ELIF, pushing CtxtIf, CtxtVanilla(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtIf tokenStartPos) returnToken tokenLexbufState ELIF @@ -2102,6 +2151,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, insertComingSoonTokens("TYPE", TYPE_COMING_SOON, TYPE_IS_HERE) if debug then dprintf "TYPE, pushing CtxtTypeDefns(%a)\n" outputPos tokenStartPos pushCtxt tokenTup (CtxtTypeDefns tokenStartPos) + pool.Return tokenTup hwTokenFetch useBlockRule | TRY, _ -> @@ -2120,6 +2170,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, | ODUMMY(_), _ -> if debug then dprintf "skipping dummy token as no offside rules apply\n" + pool.Return tokenTup hwTokenFetch (useBlockRule) // Ordinary tokens start a vanilla block @@ -2142,32 +2193,44 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, | Some LPAREN -> HIGH_PRECEDENCE_PAREN_APP | Some LBRACK -> HIGH_PRECEDENCE_BRACK_APP | _ -> failwith "unreachable" - delayToken(dotTokenTup.UseLocation hpa) + delayToken(pool.UseLocation(dotTokenTup, hpa)) delayToken tokenTup true // Insert HIGH_PRECEDENCE_TYAPP if needed | (DELEGATE | IDENT _ | IEEE64 _ | IEEE32 _ | DECIMAL _ | INT8 _ | INT16 _ | INT32 _ | INT64 _ | NATIVEINT _ | UINT8 _ | UINT16 _ | UINT32 _ | UINT64 _ | BIGNUM _) when peekAdjacentTypars false tokenTup -> let lessTokenTup = popNextTokenTup() - delayToken (lessTokenTup.UseLocation(match lessTokenTup.Token with LESS _ -> LESS true | _ -> failwith "unreachable")) + delayToken (pool.UseLocation(lessTokenTup, match lessTokenTup.Token with LESS _ -> LESS true | _ -> failwith "unreachable")) if debug then dprintf "softwhite inserting HIGH_PRECEDENCE_TYAPP at dotTokenPos = %a\n" outputPos (startPosOfTokenTup lessTokenTup) - delayToken (lessTokenTup.UseLocation(HIGH_PRECEDENCE_TYAPP)) + delayToken (pool.UseLocation(lessTokenTup, HIGH_PRECEDENCE_TYAPP)) delayToken (tokenTup) + pool.Return lessTokenTup + true + + // ..^1 will get parsed as DOT_DOT_HAT 1 while 1..^2 will get parsed as 1 DOT_DOT HAT 2 + // because of processing rule underneath this. + | (DOT_DOT_HAT) -> + let hatPos = new LexbufState(tokenTup.EndPos.ShiftColumnBy(-1), tokenTup.EndPos, false) + delayToken(let rented = pool.Rent() in rented.Token <- INFIX_AT_HAT_OP("^"); rented.LexbufState <- hatPos; rented.LastTokenPos <- tokenTup.LastTokenPos; rented) + delayToken(pool.UseShiftedLocation(tokenTup, DOT_DOT, 0, -1)) + pool.Return tokenTup true // Split this token to allow "1..2" for range specification | INT32_DOT_DOT (i, v) -> let dotDotPos = new LexbufState(tokenTup.EndPos.ShiftColumnBy(-2), tokenTup.EndPos, false) - delayToken(new TokenTup(DOT_DOT, dotDotPos, tokenTup.LastTokenPos)) - delayToken(tokenTup.UseShiftedLocation(INT32(i, v), 0, -2)) + delayToken(let rented = pool.Rent() in rented.Token <- DOT_DOT; rented.LexbufState <- dotDotPos; rented.LastTokenPos <- tokenTup.LastTokenPos; rented) + delayToken(pool.UseShiftedLocation(tokenTup, INT32(i, v), 0, -2)) + pool.Return tokenTup true // Split @>. and @@>. into two | RQUOTE_DOT (s, raw) -> let dotPos = new LexbufState(tokenTup.EndPos.ShiftColumnBy(-1), tokenTup.EndPos, false) - delayToken(new TokenTup(DOT, dotPos, tokenTup.LastTokenPos)) - delayToken(tokenTup.UseShiftedLocation(RQUOTE(s, raw), 0, -1)) + delayToken(let rented = pool.Rent() in rented.Token <- DOT; rented.LexbufState <- dotPos; rented.LastTokenPos <- tokenTup.LastTokenPos; rented) + delayToken(pool.UseShiftedLocation(tokenTup, RQUOTE(s, raw), 0, -1)) + pool.Return tokenTup true | MINUS | PLUS_MINUS_OP _ | PERCENT_OP _ | AMP | AMP_AMP @@ -2176,7 +2239,7 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, | PERCENT_OP s -> (s = "%") || (s = "%%") | _ -> true) && nextTokenIsAdjacent tokenTup && - not (prevWasAtomicEnd && (tokenTup.LastTokenPos.Y = startPosOfTokenTup tokenTup))) -> + not (prevWasAtomicEnd && (tokenTup.LastTokenPos = startPosOfTokenTup tokenTup))) -> let plus = match tokenTup.Token with @@ -2189,7 +2252,10 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, | _ -> false let nextTokenTup = popNextTokenTup() /// Merge the location of the prefix token and the literal - let delayMergedToken tok = delayToken(new TokenTup(tok, new LexbufState(tokenTup.LexbufState.StartPos, nextTokenTup.LexbufState.EndPos, nextTokenTup.LexbufState.PastEOF), tokenTup.LastTokenPos)) + let delayMergedToken tok = + delayToken(let rented = pool.Rent() in rented.Token <- tok; rented.LexbufState <- new LexbufState(tokenTup.LexbufState.StartPos, nextTokenTup.LexbufState.EndPos, nextTokenTup.LexbufState.PastEOF); rented.LastTokenPos <- tokenTup.LastTokenPos; rented) + pool.Return nextTokenTup + pool.Return tokenTup let noMerge() = let tokenName = match tokenTup.Token with @@ -2201,7 +2267,8 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, | _ -> failwith "unreachable" let token = ADJACENT_PREFIX_OP tokenName delayToken nextTokenTup - delayToken (tokenTup.UseLocation token) + delayToken (pool.UseLocation(tokenTup, token)) + pool.Return tokenTup if plusOrMinus then match nextTokenTup.Token with @@ -2227,14 +2294,18 @@ type LexFilterImpl (lightSyntaxStatus: LightSyntaxStatus, compilingFsLib, lexer, and pushCtxtSeqBlockAt(p: TokenTup, addBlockBegin, addBlockEnd) = if addBlockBegin then if debug then dprintf "--> insert OBLOCKBEGIN \n" - delayToken(p.UseLocation OBLOCKBEGIN) + delayToken(pool.UseLocation(p, OBLOCKBEGIN)) pushCtxt p (CtxtSeqBlock(FirstInSeqBlock, startPosOfTokenTup p, addBlockEnd)) let rec swTokenFetch() = let tokenTup = popNextTokenTup() let tokenReplaced = rulesForBothSoftWhiteAndHardWhite tokenTup if tokenReplaced then swTokenFetch() - else returnToken tokenTup.LexbufState tokenTup.Token + else + let lexbufState = tokenTup.LexbufState + let tok = tokenTup.Token + pool.Return tokenTup + returnToken lexbufState tok //---------------------------------------------------------------------------- // Part VI. Publish the new lexer function. diff --git a/src/fsharp/MethodCalls.fs b/src/fsharp/MethodCalls.fs index 37f031e782..9b657f6f8b 100644 --- a/src/fsharp/MethodCalls.fs +++ b/src/fsharp/MethodCalls.fs @@ -498,6 +498,8 @@ type CalledMeth<'T> member x.TotalNumAssignedNamedArgs = x.ArgSets |> List.sumBy (fun x -> x.NumAssignedNamedArgs) + override x.ToString() = "call to " + minfo.ToString() + let NamesOfCalledArgs (calledArgs: CalledArg list) = calledArgs |> List.choose (fun x -> x.NameOpt) @@ -1050,15 +1052,20 @@ let BuildFSharpMethodCall g m (ty, vref: ValRef) valUseFlags minst args = /// calls to the type-directed solutions to member constraints. let MakeMethInfoCall amap m minfo minst args = let valUseFlags = NormalValUse // correct unless if we allow wild trait constraints like "T has a ctor and can be used as a parent class" + match minfo with + | ILMeth(g, ilminfo, _) -> let direct = not minfo.IsVirtual let isProp = false // not necessarily correct, but this is only used post-creflect where this flag is irrelevant BuildILMethInfoCall g amap m isProp ilminfo valUseFlags minst direct args |> fst + | FSMeth(g, ty, vref, _) -> BuildFSharpMethodCall g m (ty, vref) valUseFlags minst args |> fst + | DefaultStructCtor(_, ty) -> mkDefault (m, ty) + #if !NO_EXTENSIONTYPING | ProvidedMeth(amap, mi, _, m) -> let isProp = false // not necessarily correct, but this is only used post-creflect where this flag is irrelevant diff --git a/src/fsharp/NameResolution.fs b/src/fsharp/NameResolution.fs index 389c6e16b0..a63c8e6e13 100644 --- a/src/fsharp/NameResolution.fs +++ b/src/fsharp/NameResolution.fs @@ -536,11 +536,11 @@ let ExtensionPropInfosOfTypeInScope collectionSettings (infoReader:InfoReader) ( let extMemsFromHierarchy = infoReader.GetEntireTypeHierarchy(AllowMultiIntfInstantiations.Yes, m, ty) |> List.collect (fun ty -> - if isAppTy g ty then - let tcref = tcrefOfAppTy g ty + match tryDestAppTy g ty with + | ValueSome tcref -> let extMemInfos = nenv.eIndexedExtensionMembers.Find tcref SelectPropInfosFromExtMembers infoReader ad optFilter ty m extMemInfos - else []) + | _ -> []) extMemsDangling @ extMemsFromHierarchy @@ -550,15 +550,30 @@ let AllPropInfosOfTypeInScope collectionSettings infoReader nenv optFilter ad fi @ ExtensionPropInfosOfTypeInScope collectionSettings infoReader nenv optFilter ad m ty /// Get the available methods of a type (both declared and inherited) -let IntrinsicMethInfosOfType (infoReader:InfoReader) optFilter ad allowMultiIntfInst findFlag m ty = +let IntrinsicMethInfosOfType (infoReader: InfoReader) optFilter ad allowMultiIntfInst findFlag m ty = let g = infoReader.g let amap = infoReader.amap let minfos = GetIntrinsicMethInfoSetsOfType infoReader optFilter ad allowMultiIntfInst findFlag m ty let minfos = minfos |> ExcludeHiddenOfMethInfos g amap m minfos +let TrySelectExtensionMethInfoOfILExtMem m amap apparentTy (actualParent, minfo, pri) = + match minfo with + | ILMeth(_,ilminfo,_) -> + MethInfo.CreateILExtensionMeth (amap, m, apparentTy, actualParent, Some pri, ilminfo.RawMetadata) |> Some + // F#-defined IL-style extension methods are not seen as extension methods in F# code + | FSMeth(g,_,vref,_) -> + FSMeth(g, apparentTy, vref, Some pri) |> Some +#if !NO_EXTENSIONTYPING + // // Provided extension methods are not yet supported + | ProvidedMeth(amap,providedMeth,_,m) -> + ProvidedMeth(amap, providedMeth, Some pri,m) |> Some +#endif + | DefaultStructCtor _ -> + None + /// Select from a list of extension methods -let SelectMethInfosFromExtMembers (infoReader:InfoReader) optFilter apparentTy m extMemInfos = +let SelectMethInfosFromExtMembers (infoReader: InfoReader) optFilter apparentTy m extMemInfos = let g = infoReader.g // NOTE: multiple "open"'s push multiple duplicate values into eIndexedExtensionMembers let seen = HashSet(ExtensionMember.Comparer g) @@ -575,24 +590,14 @@ let SelectMethInfosFromExtMembers (infoReader:InfoReader) optFilter apparentTy m | _ -> () | ILExtMem (actualParent, minfo, pri) when (match optFilter with None -> true | Some nm -> nm = minfo.LogicalName) -> // Make a reference to the type containing the extension members - match minfo with - | ILMeth(_, ilminfo, _) -> - yield (MethInfo.CreateILExtensionMeth (infoReader.amap, m, apparentTy, actualParent, Some pri, ilminfo.RawMetadata)) - // F#-defined IL-style extension methods are not seen as extension methods in F# code - | FSMeth(g, _, vref, _) -> - yield (FSMeth(g, apparentTy, vref, Some pri)) -#if !NO_EXTENSIONTYPING - // // Provided extension methods are not yet supported - | ProvidedMeth(amap, providedMeth, _, m) -> - yield (ProvidedMeth(amap, providedMeth, Some pri, m)) -#endif - | DefaultStructCtor _ -> - () + match TrySelectExtensionMethInfoOfILExtMem m infoReader.amap apparentTy (actualParent, minfo, pri) with + | Some minfo -> yield minfo + | None -> () | _ -> () ] /// Query the available extension properties of a methods (including extension methods for inherited types) -let ExtensionMethInfosOfTypeInScope (collectionSettings:ResultCollectionSettings) (infoReader:InfoReader) (nenv: NameResolutionEnv) optFilter m ty = +let ExtensionMethInfosOfTypeInScope (collectionSettings: ResultCollectionSettings) (infoReader: InfoReader) (nenv: NameResolutionEnv) optFilter m ty = let extMemsDangling = SelectMethInfosFromExtMembers infoReader optFilter ty m nenv.eUnindexedExtensionMembers if collectionSettings = ResultCollectionSettings.AtMostOneResult && not (isNil extMemsDangling) then extMemsDangling @@ -601,11 +606,11 @@ let ExtensionMethInfosOfTypeInScope (collectionSettings:ResultCollectionSettings infoReader.GetEntireTypeHierarchy(AllowMultiIntfInstantiations.Yes, m, ty) |> List.collect (fun ty -> let g = infoReader.g - if isAppTy g ty then - let tcref = tcrefOfAppTy g ty + match tryDestAppTy g ty with + | ValueSome tcref -> let extValRefs = nenv.eIndexedExtensionMembers.Find tcref SelectMethInfosFromExtMembers infoReader optFilter ty m extValRefs - else []) + | _ -> []) extMemsDangling @ extMemsFromHierarchy /// Get all the available methods of a type (both intrinsic and extension) @@ -1702,6 +1707,8 @@ type TcSymbolUses(g, capturedNameResolutions: ResizeArray, ResizeArray(), Array.empty) + /// An accumulator for the results being emitted into the tcSink. type TcResultsSinkImpl(g, ?sourceText: ISourceText) = let capturedEnvs = ResizeArray<_>() @@ -2345,10 +2352,11 @@ let rec ResolveLongIdentInTypePrim (ncenv: NameResolver) nenv lookupKind (resInf match lookupKind with | LookupKind.Expr | LookupKind.Pattern -> - if isAppTy g ty then - let tcref = tcrefOfAppTy g ty + match tryDestAppTy g ty with + | ValueSome tcref -> for uc in tcref.UnionCasesArray do addToBuffer uc.DisplayName + | _ -> () | _ -> () raze (UndefinedName (depth, FSComp.SR.undefinedNameFieldConstructorOrMember, id, suggestMembers)) @@ -2356,7 +2364,12 @@ let rec ResolveLongIdentInTypePrim (ncenv: NameResolver) nenv lookupKind (resInf and ResolveLongIdentInNestedTypes (ncenv: NameResolver) nenv lookupKind resInfo depth id m ad (id2: Ident) (rest: Ident list) findFlag typeNameResInfo tys = tys |> CollectAtMostOneResult (fun ty -> - let resInfo = if isAppTy ncenv.g ty then resInfo.AddEntity(id.idRange, tcrefOfAppTy ncenv.g ty) else resInfo + let resInfo = + match tryDestAppTy ncenv.g ty with + | ValueSome tcref -> + resInfo.AddEntity(id.idRange, tcref) + | _ -> + resInfo ResolveLongIdentInTypePrim ncenv nenv lookupKind resInfo depth m ad id2 rest findFlag typeNameResInfo ty |> AtMostOneResult m) @@ -2528,7 +2541,7 @@ let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified ResolveExprLongIdentPrim sink ncenv false FullyQualified m ad nenv typeNameResInfo id2 rest2 isOpenDecl else if isNil rest && fullyQualified <> FullyQualified then - let typeError = ref None + let mutable typeError = None // Single identifier. Lookup the unqualified names in the environment let envSearch = match nenv.eUnqualifiedItems.TryGetValue id.idText with @@ -2549,7 +2562,7 @@ let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified let resInfo, item, rest = ForceRaise res ResolutionInfo.SendEntityPathToSink(sink, ncenv, nenv, ItemOccurence.Use, ad, resInfo, ResultTyparChecker(fun () -> CheckAllTyparsInferrable ncenv.amap m item)) Some(item, rest) - | Exception e -> typeError := Some e; None + | Exception e -> typeError <- Some e; None | true, res -> let fresh = FreshenUnqualifiedItem ncenv m res @@ -2587,7 +2600,7 @@ let rec ResolveExprLongIdentPrim sink (ncenv: NameResolver) first fullyQualified | Result _ as res -> ForceRaise res | _ -> let failingCase = - match !typeError with + match typeError with | Some e -> raze e | _ -> let suggestNamesAndTypes (addToBuffer: string -> unit) = @@ -2871,8 +2884,10 @@ let ResolvePatternLongIdent sink (ncenv: NameResolver) warnOnUpper newDef m ad n // X.ListEnumerator // does not resolve // let ResolveNestedTypeThroughAbbreviation (ncenv: NameResolver) (tcref: TyconRef) m = - if tcref.IsTypeAbbrev && tcref.Typars(m).IsEmpty && isAppTy ncenv.g tcref.TypeAbbrev.Value && isNil (argsOfAppTy ncenv.g tcref.TypeAbbrev.Value) then - tcrefOfAppTy ncenv.g tcref.TypeAbbrev.Value + if tcref.IsTypeAbbrev && tcref.Typars(m).IsEmpty then + match tryAppTy ncenv.g tcref.TypeAbbrev.Value with + | ValueSome (abbrevTcref, []) -> abbrevTcref + | _ -> tcref else tcref @@ -3207,11 +3222,12 @@ let ResolveFieldPrim sink (ncenv: NameResolver) nenv ad ty (mp, id: Ident) allFi |> ListSet.setify (fun fref1 fref2 -> tyconRefEq g fref1.TyconRef fref2.TyconRef) |> List.map (fun x -> ResolutionInfo.Empty, FieldResolution(x, false)) - if isAppTy g ty then + match tryDestAppTy g ty with + | ValueSome tcref -> match ncenv.InfoReader.TryFindRecdOrClassFieldInfoOfType(id.idText, m, ty) with | ValueSome (RecdFieldInfo(_, rfref)) -> [ResolutionInfo.Empty, FieldResolution(rfref, false)] | _ -> - if isRecdTy g ty then + if tcref.IsRecordTycon then // record label doesn't belong to record type -> suggest other labels of same record let suggestLabels (addToBuffer: string -> unit) = for label in SuggestOtherLabelsOfSameRecordType g nenv ty id allFields do @@ -3222,7 +3238,7 @@ let ResolveFieldPrim sink (ncenv: NameResolver) nenv ad ty (mp, id: Ident) allFi error(ErrorWithSuggestions(errorText, m, id.idText, suggestLabels)) else lookup() - else + | _ -> lookup() | _ -> let lid = (mp@[id]) @@ -3519,7 +3535,10 @@ let ItemOfTyconRef ncenv m (x: TyconRef) = Item.Types (x.DisplayName, [FreshenTycon ncenv m x]) let ItemOfTy g x = - let nm = if isAppTy g x then (tcrefOfAppTy g x).DisplayName else "?" + let nm = + match tryDestAppTy g x with + | ValueSome tcref -> tcref.DisplayName + | _ -> "?" Item.Types (nm, [x]) // Filter out 'PrivateImplementationDetail' classes diff --git a/src/fsharp/NameResolution.fsi b/src/fsharp/NameResolution.fsi index ea3bbd8aea..c0121ce153 100755 --- a/src/fsharp/NameResolution.fsi +++ b/src/fsharp/NameResolution.fsi @@ -141,25 +141,68 @@ val ItemWithNoInst : Item -> ItemWithInst type FieldResolution = FieldResolution of RecdFieldRef * bool /// Information about an extension member held in the name resolution environment -[] -type ExtensionMember +type ExtensionMember = + /// F#-style Extrinsic extension member, defined in F# code + | FSExtMem of ValRef * ExtensionMethodPriority + + /// ILExtMem(declaringTyconRef, ilMetadata, pri) + /// + /// IL-style extension member, backed by some kind of method with an [] attribute + | ILExtMem of TyconRef * MethInfo * ExtensionMethodPriority + + /// Describes the sequence order of the introduction of an extension method. Extension methods that are introduced + /// later through 'open' get priority in overload resolution. + member Priority : ExtensionMethodPriority /// The environment of information used to resolve names [] type NameResolutionEnv = - {eDisplayEnv: DisplayEnv - eUnqualifiedItems: LayeredMap - ePatItems: NameMap - eModulesAndNamespaces: NameMultiMap - eFullyQualifiedModulesAndNamespaces: NameMultiMap - eFieldLabels: NameMultiMap - eTyconsByAccessNames: LayeredMultiMap - eFullyQualifiedTyconsByAccessNames: LayeredMultiMap - eTyconsByDemangledNameAndArity: LayeredMap - eFullyQualifiedTyconsByDemangledNameAndArity: LayeredMap - eIndexedExtensionMembers: TyconRefMultiMap - eUnindexedExtensionMembers: ExtensionMember list - eTypars: NameMap } + { /// Display environment information for output + eDisplayEnv: DisplayEnv + + /// Values and Data Tags available by unqualified name + eUnqualifiedItems: LayeredMap + + /// Data Tags and Active Pattern Tags available by unqualified name + ePatItems: NameMap + + /// Modules accessible via "." notation. Note this is a multi-map. + /// Adding a module abbreviation adds it a local entry to this List.map. + /// Likewise adding a ccu or opening a path adds entries to this List.map. + eModulesAndNamespaces: NameMultiMap + + /// Fully qualified modules and namespaces. 'open' does not change this. + eFullyQualifiedModulesAndNamespaces: NameMultiMap + + /// RecdField labels in scope. RecdField labels are those where type are inferred + /// by label rather than by known type annotation. + /// Bools indicate if from a record, where no warning is given on indeterminate lookup + eFieldLabels: NameMultiMap + + /// Tycons indexed by the various names that may be used to access them, e.g. + /// "List" --> multiple TyconRef's for the various tycons accessible by this name. + /// "List`1" --> TyconRef + eTyconsByAccessNames: LayeredMultiMap + + eFullyQualifiedTyconsByAccessNames: LayeredMultiMap + + /// Tycons available by unqualified, demangled names (i.e. (List,1) --> TyconRef) + eTyconsByDemangledNameAndArity: LayeredMap + + /// Tycons available by unqualified, demangled names (i.e. (List,1) --> TyconRef) + eFullyQualifiedTyconsByDemangledNameAndArity: LayeredMap + + /// Extension members by type and name + eIndexedExtensionMembers: TyconRefMultiMap + + /// Other extension members unindexed by type + eUnindexedExtensionMembers: ExtensionMember list + + /// Typars (always available by unqualified names). Further typars can be + /// in the tpenv, a structure folded through each top-level definition. + eTypars: NameMap + + } static member Empty : g:TcGlobals -> NameResolutionEnv member DisplayEnv : DisplayEnv member FindUnqualifiedItem : string -> Item @@ -326,6 +369,9 @@ type internal TcSymbolUses = /// Get the locations of all the printf format specifiers in the file member GetFormatSpecifierLocationsAndArity : unit -> (range * int)[] + /// Empty collection of symbol uses + static member Empty : TcSymbolUses + /// Represents open declaration statement. type internal OpenDeclaration = { /// Long identifier as it's presented in source code. @@ -542,3 +588,6 @@ val ResolveCompletionsInType : NameResolver -> NameResolutionEnv -> Resolv val GetVisibleNamespacesAndModulesAtPoint : NameResolver -> NameResolutionEnv -> range -> AccessorDomain -> ModuleOrNamespaceRef list val IsItemResolvable : NameResolver -> NameResolutionEnv -> range -> AccessorDomain -> string list -> Item -> bool + +val TrySelectExtensionMethInfoOfILExtMem : range -> ImportMap -> TType -> TyconRef * MethInfo * ExtensionMethodPriority -> MethInfo option + \ No newline at end of file diff --git a/src/fsharp/Optimizer.fs b/src/fsharp/Optimizer.fs index 69b7d640a7..37d121cad4 100644 --- a/src/fsharp/Optimizer.fs +++ b/src/fsharp/Optimizer.fs @@ -2070,9 +2070,7 @@ and OptimizeExprOp cenv env (op, tyargs, args, m) = // guarantees to optimize. | TOp.ILCall (_, _, _, _, _, _, _, mref, _enclTypeArgs, _methTypeArgs, _tys), _, [arg] - when (mref.DeclaringTypeRef.Scope.IsAssemblyRef && - mref.DeclaringTypeRef.Scope.AssemblyRef.Name = cenv.g.ilg.typ_Array.TypeRef.Scope.AssemblyRef.Name && - mref.DeclaringTypeRef.Name = cenv.g.ilg.typ_Array.TypeRef.Name && + when (mref.DeclaringTypeRef.Name = cenv.g.ilg.typ_Array.TypeRef.Name && mref.Name = "get_Length" && isArray1DTy cenv.g (tyOfExpr cenv.g arg)) -> OptimizeExpr cenv env (Expr.Op (TOp.ILAsm (i_ldlen, [cenv.g.int_ty]), [], [arg], m)) @@ -2785,7 +2783,10 @@ and TryInlineApplication cenv env finfo (tyargs: TType list, args: Expr list, m) match vref.ApparentEnclosingEntity with | Parent tcr when (tyconRefEq cenv.g cenv.g.lazy_tcr_canon tcr) -> match tcr.CompiledRepresentation with - | CompiledTypeRepr.ILAsmNamed(iltr, _, _) -> iltr.Scope.AssemblyRef.Name = "FSharp.Core" + | CompiledTypeRepr.ILAsmNamed(iltr, _, _) -> + match iltr.Scope with + | ILScopeRef.Assembly aref -> aref.Name = "FSharp.Core" + | _ -> false | _ -> false | _ -> false | _ -> false diff --git a/src/fsharp/PatternMatchCompilation.fs b/src/fsharp/PatternMatchCompilation.fs index 5a8eaa6534..6c5cc67e5a 100755 --- a/src/fsharp/PatternMatchCompilation.fs +++ b/src/fsharp/PatternMatchCompilation.fs @@ -103,16 +103,16 @@ let BindSubExprOfInput g amap gtps (PBind(v, tyscheme)) m (SubExpr(accessf, (ve2 accessf [] ve2 else let tyargs = - let someSolved = ref false + let mutable someSolved = false let freezeVar gtp = if isBeingGeneralized gtp tyscheme then mkTyparTy gtp else - someSolved := true + someSolved <- true TypeRelations.ChooseTyparSolution g amap gtp let solutions = List.map freezeVar gtps - if !someSolved then + if someSolved then TypeRelations.IterativelySubstituteTyparSolutions g gtps solutions else solutions @@ -1268,10 +1268,10 @@ let CompilePatternBasic BindProjectionPatterns newActives s | TPat_range (c1, c2, m) -> - let res = ref [] + let mutable res = [] for i = int c1 to int c2 do - res := BindProjectionPattern (Active(path, subExpr, TPat_const(Const.Char(char i), m))) s @ !res - !res + res <- BindProjectionPattern (Active(path, subExpr, TPat_const(Const.Char(char i), m))) s @ res + res // Assign an identifier to each TPat_query based on our knowledge of the 'identity' of the active pattern, if any | TPat_query ((_, _, apatVrefOpt, _, _), _, _) -> let uniqId = diff --git a/src/fsharp/PostInferenceChecks.fs b/src/fsharp/PostInferenceChecks.fs index c718a94665..aedf7252d9 100755 --- a/src/fsharp/PostInferenceChecks.fs +++ b/src/fsharp/PostInferenceChecks.fs @@ -313,7 +313,7 @@ let RecordAnonRecdInfo cenv (anonInfo: AnonRecdTypeInfo) = // approx walk of type //-------------------------------------------------------------------------- -let rec CheckTypeDeep (cenv: cenv) ((visitTy, visitTyconRefOpt, visitAppTyOpt, visitTraitSolutionOpt, visitTyparOpt) as f) g env isInner ty = +let rec CheckTypeDeep (cenv: cenv) ((visitTy, visitTyconRefOpt, visitAppTyOpt, visitTraitSolutionOpt, visitTyparOpt) as f) (g: TcGlobals) env isInner ty = // We iterate the _solved_ constraints as well, to pick up any record of trait constraint solutions // This means we walk _all_ the constraints _everywhere_ in a type, including // those attached to _solved_ type variables. This is used by PostTypeCheckSemanticChecks to detect uses of @@ -322,17 +322,24 @@ let rec CheckTypeDeep (cenv: cenv) ((visitTy, visitTyconRefOpt, visitAppTyOpt, v // In an ideal world we would, instead, record the solutions to these constraints as "witness variables" in expressions, // rather than solely in types. match ty with - | TType_var tp when tp.Solution.IsSome -> - tp.Constraints |> List.iter (fun cx -> + | TType_var tp when tp.Solution.IsSome -> + for cx in tp.Constraints do match cx with | TyparConstraint.MayResolveMember((TTrait(_, _, _, _, _, soln)), _) -> match visitTraitSolutionOpt, !soln with | Some visitTraitSolution, Some sln -> visitTraitSolution sln | _ -> () - | _ -> ()) + | _ -> () | _ -> () - let ty = stripTyparEqns ty + let ty = + if g.compilingFslib then + match stripTyparEqns ty with + // When compiling FSharp.Core, do not strip type equations at this point if we can't dereference a tycon. + | TType_app (tcref, _) when not tcref.CanDeref -> ty + | _ -> stripTyEqns g ty + else + stripTyEqns g ty visitTy ty match ty with @@ -372,10 +379,12 @@ let rec CheckTypeDeep (cenv: cenv) ((visitTy, visitTyconRefOpt, visitAppTyOpt, v visitTyar (env, tp) and CheckTypesDeep cenv f g env tys = - tys |> List.iter (CheckTypeDeep cenv f g env true) + for ty in tys do + CheckTypeDeep cenv f g env true ty and CheckTypesDeepNoInner cenv f g env tys = - tys |> List.iter (CheckTypeDeep cenv f g env false) + for ty in tys do + CheckTypeDeep cenv f g env false ty and CheckTypeConstraintDeep cenv f g env x = match x with @@ -1917,8 +1926,8 @@ let CheckRecdField isUnion cenv env (tycon: Tycon) (rfield: RecdField) = let m = rfield.Range let fieldTy = stripTyEqns cenv.g rfield.FormalType let isHidden = - IsHiddenTycon cenv.g env.sigToImplRemapInfo tycon || - IsHiddenTyconRepr cenv.g env.sigToImplRemapInfo tycon || + IsHiddenTycon env.sigToImplRemapInfo tycon || + IsHiddenTyconRepr env.sigToImplRemapInfo tycon || (not isUnion && IsHiddenRecdField env.sigToImplRemapInfo (tcref.MakeNestedRecdFieldRef rfield)) let access = AdjustAccess isHidden (fun () -> tycon.CompilationPath) rfield.Accessibility CheckTypeForAccess cenv env (fun () -> rfield.Name) access m fieldTy @@ -2180,7 +2189,7 @@ let CheckEntityDefn cenv env (tycon: Entity) = uc.RecdFieldsArray |> Array.iter (CheckRecdField true cenv env tycon)) // Access checks - let access = AdjustAccess (IsHiddenTycon g env.sigToImplRemapInfo tycon) (fun () -> tycon.CompilationPath) tycon.Accessibility + let access = AdjustAccess (IsHiddenTycon env.sigToImplRemapInfo tycon) (fun () -> tycon.CompilationPath) tycon.Accessibility let visitType ty = CheckTypeForAccess cenv env (fun () -> tycon.DisplayNameWithStaticParametersAndUnderscoreTypars) access tycon.Range ty abstractSlotValsOfTycons [tycon] |> List.iter (typeOfVal >> visitType) diff --git a/src/fsharp/PrettyNaming.fs b/src/fsharp/PrettyNaming.fs index 13ca5e4fc7..4c11b9054d 100755 --- a/src/fsharp/PrettyNaming.fs +++ b/src/fsharp/PrettyNaming.fs @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. //---------------------------------------------------------------------------- -// Some general F# utilities for mangling / demangling / manipulating names. +// Some general F# utilities for mangling / unmangling / manipulating names. //-------------------------------------------------------------------------- /// Anything to do with special names of identifiers and other lexical rules diff --git a/src/fsharp/QuotationTranslator.fs b/src/fsharp/QuotationTranslator.fs index cf4e4e1745..879130ab74 100755 --- a/src/fsharp/QuotationTranslator.fs +++ b/src/fsharp/QuotationTranslator.fs @@ -988,6 +988,7 @@ and ConvILTypeRef cenv (tr: ILTypeRef) = let assemblyRef = match tr.Scope with | ILScopeRef.Local -> "." + | ILScopeRef.PrimaryAssembly -> cenv.g.ilg.primaryAssemblyScopeRef.QualifiedName | _ -> tr.Scope.QualifiedName QP.Named(tr.BasicQualifiedName, assemblyRef) diff --git a/src/fsharp/TastOps.fs b/src/fsharp/TastOps.fs index 94d0bcffae..3d474dadbc 100644 --- a/src/fsharp/TastOps.fs +++ b/src/fsharp/TastOps.fs @@ -95,8 +95,14 @@ let emptyTyparInst = ([]: TyparInst) [] type Remap = { tpinst: TyparInst + + /// Values to remap valRemap: ValRemap + + /// TyconRefs to remap tyconRefRemap: TyconRefRemap + + /// Remove existing trait solutions? removeTraitSolutions: bool } let emptyRemap = @@ -889,7 +895,9 @@ type TypeEquivEnv with static member FromEquivTypars tps1 tps2 = TypeEquivEnv.Empty.BindEquivTypars tps1 tps2 -let rec traitsAEquivAux erasureFlag g aenv (TTrait(tys1, nm, mf1, argtys, rty, _)) (TTrait(tys2, nm2, mf2, argtys2, rty2, _)) = +let rec traitsAEquivAux erasureFlag g aenv traitInfo1 traitInfo2 = + let (TTrait(tys1, nm, mf1, argtys, rty, _)) = traitInfo1 + let (TTrait(tys2, nm2, mf2, argtys2, rty2, _)) = traitInfo2 mf1 = mf2 && nm = nm2 && ListSet.equals (typeAEquivAux erasureFlag g aenv) tys1 tys2 && @@ -909,7 +917,7 @@ and typarConstraintsAEquivAux erasureFlag g aenv tpc1 tpc2 = TyparConstraint.CoercesTo(fcty, _) -> typeAEquivAux erasureFlag g aenv acty fcty - | TyparConstraint.MayResolveMember(trait1, _), + | TyparConstraint.MayResolveMember(trait1, _), TyparConstraint.MayResolveMember(trait2, _) -> traitsAEquivAux erasureFlag g aenv trait1 trait2 @@ -2479,8 +2487,6 @@ module PrettyTypes = computeKeep keep (tp :: change) rest let keep, change = computeKeep [] [] ftps - // change |> List.iter (fun tp -> dprintf "change typar: %s %s %d\n" tp.Name (tp.DisplayName) (stamp_of_typar tp)) - // keep |> List.iter (fun tp -> dprintf "keep typar: %s %s %d\n" tp.Name (tp.DisplayName) (stamp_of_typar tp)) let alreadyInUse = keep |> List.map (fun x -> x.Name) let names = PrettyTyparNames (fun x -> List.memq x change) alreadyInUse ftps @@ -2494,7 +2500,6 @@ module PrettyTypes = let tauThings = mapTys getTauStayTau things let prettyThings = mapTys (instType renaming) tauThings - // niceTypars |> List.iter (fun tp -> dprintf "nice typar: %d\n" (stamp_of_typar tp)); * let tpconstraints = niceTypars |> List.collect (fun tpnice -> List.map (fun tpc -> tpnice, tpc) tpnice.Constraints) prettyThings, tpconstraints @@ -3348,7 +3353,7 @@ module DebugPrint = | TType_measure unt -> #if DEBUG leftL (tagText "{") ^^ - (match !global_g with + (match global_g with | None -> wordL (tagText "") | Some g -> let sortVars (vs:(Typar * Rational) list) = vs |> List.sortBy (fun (v, _) -> v.DisplayName) @@ -3407,7 +3412,7 @@ module DebugPrint = and auxTraitL env (ttrait: TraitConstraintInfo) = #if DEBUG let (TTrait(tys, nm, memFlags, argtys, rty, _)) = ttrait - match !global_g with + match global_g with | None -> wordL (tagText "") | Some g -> let rty = GetFSharpViewOfReturnType g rty @@ -3527,7 +3532,7 @@ module DebugPrint = let slotSigL (slotsig: SlotSig) = #if DEBUG let (TSlotSig(nm, ty, tps1, tps2, pms, rty)) = slotsig - match !global_g with + match global_g with | None -> wordL(tagText "") | Some g -> let rty = GetFSharpViewOfReturnType g rty @@ -4081,7 +4086,6 @@ let accValRemap g aenv (msigty: ModuleOrNamespaceType) (implVal: Val) (mrpi, mhi let vref = mkLocalValRef implVal match sigValOpt with | None -> - if verbose then dprintf "accValRemap, hide = %s#%d\n" implVal.LogicalName implVal.Stamp let mhi = { mhi with HiddenVals = Zset.add implVal mhi.HiddenVals } (mrpi, mhi) | Some (sigVal: Val) -> @@ -4105,7 +4109,6 @@ let rec accValRemapFromModuleOrNamespaceType g aenv (mty: ModuleOrNamespaceType) acc let ComputeRemappingFromInferredSignatureToExplicitSignature g mty msigty = - // dprintf "ComputeRemappingFromInferredSignatureToExplicitSignature, \nmty = %s\nmmsigty=%s\n" (showL(entityTypeL mty)) (showL(entityTypeL msigty)) let ((mrpi, _) as entityRemap) = accEntityRemapFromModuleOrNamespaceType mty msigty (SignatureRepackageInfo.Empty, SignatureHidingInfo.Empty) let aenv = mrpi.ImplToSigMapping let valAndEntityRemap = accValRemapFromModuleOrNamespaceType g aenv mty msigty entityRemap @@ -4166,7 +4169,6 @@ and accValRemapFromModuleOrNamespaceBind g aenv msigty x acc = and accValRemapFromModuleOrNamespaceDefs g aenv msigty mdefs acc = List.foldBack (accValRemapFromModuleOrNamespace g aenv msigty) mdefs acc let ComputeRemappingFromImplementationToSignature g mdef msigty = - //if verbose then dprintf "ComputeRemappingFromImplementationToSignature, \nmdefs = %s\nmsigty=%s\n" (showL(DebugPrint.mdefL mdef)) (showL(DebugPrint.entityTypeL msigty)) let ((mrpi, _) as entityRemap) = accEntityRemapFromModuleOrNamespace msigty mdef (SignatureRepackageInfo.Empty, SignatureHidingInfo.Empty) let aenv = mrpi.ImplToSigMapping @@ -4222,16 +4224,14 @@ let rec accModuleOrNamespaceHidingInfoAtAssemblyBoundary mty acc = acc let ComputeHidingInfoAtAssemblyBoundary mty acc = -// dprintf "ComputeRemappingFromInferredSignatureToExplicitSignature, \nmty = %s\nmmsigty=%s\n" (showL(entityTypeL mty)) (showL(entityTypeL msigty)) accModuleOrNamespaceHidingInfoAtAssemblyBoundary mty acc //-------------------------------------------------------------------------- // Compute instances of the above for mexpr -> mty //-------------------------------------------------------------------------- -let IsHidden setF accessF remapF debugF = +let IsHidden setF accessF remapF = let rec check mrmi x = - if verbose then dprintf "IsHidden %s ??\n" (showL (debugF x)) // Internal/private? not (canAccessFromEverywhere (accessF x)) || (match mrmi with @@ -4242,18 +4242,15 @@ let IsHidden setF accessF remapF debugF = // Recurse... check rest (remapF rpi x)) fun mrmi x -> - let res = check mrmi x - if verbose then dprintf "IsHidden, #mrmi = %d, %s = %b\n" mrmi.Length (showL (debugF x)) res - res + check mrmi x + +let IsHiddenTycon mrmi x = IsHidden (fun mhi -> mhi.HiddenTycons) (fun tc -> tc.Accessibility) (fun rpi x -> (remapTyconRef rpi.tyconRefRemap (mkLocalTyconRef x)).Deref) mrmi x + +let IsHiddenTyconRepr mrmi x = IsHidden (fun mhi -> mhi.HiddenTyconReprs) (fun v -> v.TypeReprAccessibility) (fun rpi x -> (remapTyconRef rpi.tyconRefRemap (mkLocalTyconRef x)).Deref) mrmi x + +let IsHiddenVal mrmi x = IsHidden (fun mhi -> mhi.HiddenVals) (fun v -> v.Accessibility) (fun rpi x -> (remapValRef rpi (mkLocalValRef x)).Deref) mrmi x -let IsHiddenTycon g mrmi x = - let debugPrint x = DebugPrint.tyconL g x - IsHidden (fun mhi -> mhi.HiddenTycons) (fun tc -> tc.Accessibility) (fun rpi x -> (remapTyconRef rpi.tyconRefRemap (mkLocalTyconRef x)).Deref) debugPrint mrmi x -let IsHiddenTyconRepr g mrmi x = - let debugPrint x = DebugPrint.tyconL g x - IsHidden (fun mhi -> mhi.HiddenTyconReprs) (fun v -> v.TypeReprAccessibility) (fun rpi x -> (remapTyconRef rpi.tyconRefRemap (mkLocalTyconRef x)).Deref) debugPrint mrmi x -let IsHiddenVal mrmi x = IsHidden (fun mhi -> mhi.HiddenVals) (fun v -> v.Accessibility) (fun rpi x -> (remapValRef rpi (mkLocalValRef x)).Deref) DebugPrint.valL mrmi x -let IsHiddenRecdField mrmi x = IsHidden (fun mhi -> mhi.HiddenRecdFields) (fun rfref -> rfref.RecdField.Accessibility) (fun rpi x -> remapRecdFieldRef rpi.tyconRefRemap x) DebugPrint.recdFieldRefL mrmi x +let IsHiddenRecdField mrmi x = IsHidden (fun mhi -> mhi.HiddenRecdFields) (fun rfref -> rfref.RecdField.Accessibility) (fun rpi x -> remapRecdFieldRef rpi.tyconRefRemap x) mrmi x //-------------------------------------------------------------------------- // Generic operations on module types @@ -5725,7 +5722,7 @@ let rec tyOfExpr g e = | TOp.LValueOp (LByrefGet, v) -> destByrefTy g v.Type | TOp.LValueOp (LAddrOf readonly, v) -> mkByrefTyWithFlag g readonly v.Type | TOp.RefAddrGet readonly -> (match tinst with [ty] -> mkByrefTyWithFlag g readonly ty | _ -> failwith "bad TOp.RefAddrGet node") - | TOp.TraitCall (TTrait(_, _, _, _, ty, _)) -> GetFSharpViewOfReturnType g ty + | TOp.TraitCall traitInfo -> GetFSharpViewOfReturnType g traitInfo.ReturnType | TOp.Reraise -> (match tinst with [rtn_ty] -> rtn_ty | _ -> failwith "bad TOp.Reraise node") | TOp.Goto _ | TOp.Label _ | TOp.Return -> //assert false @@ -6494,10 +6491,10 @@ let FoldImplFile folders state implFile = ExprFolders(folders).FoldImplFile stat //------------------------------------------------------------------------- let ExprStats x = - let count = ref 0 - let folders = {ExprFolder0 with exprIntercept = (fun _ noInterceptF z x -> (count := !count + 1; noInterceptF z x))} + let mutable count = 0 + let folders = {ExprFolder0 with exprIntercept = (fun _ noInterceptF z x -> (count <- count + 1; noInterceptF z x))} let () = FoldExpr folders () x - string !count + " TExpr nodes" + string count + " TExpr nodes" #endif //------------------------------------------------------------------------- @@ -7782,7 +7779,6 @@ let typarEnc _g (gtpsType, gtpsMethod) typar = "``0" let rec typeEnc g (gtpsType, gtpsMethod) ty = - if verbose then dprintf "--> typeEnc" let stripped = stripTyEqnsAndMeasureEqns g ty match stripped with | TType_forall _ -> diff --git a/src/fsharp/TastOps.fsi b/src/fsharp/TastOps.fsi index 5179b85239..176f64df72 100755 --- a/src/fsharp/TastOps.fsi +++ b/src/fsharp/TastOps.fsi @@ -1208,16 +1208,16 @@ val MakeExportRemapping : CcuThunk -> ModuleOrNamespace -> Remap val ApplyExportRemappingToEntity : TcGlobals -> Remap -> ModuleOrNamespace -> ModuleOrNamespace /// Determine if a type definition is hidden by a signature -val IsHiddenTycon : TcGlobals -> (Remap * SignatureHidingInfo) list -> Tycon -> bool +val IsHiddenTycon: (Remap * SignatureHidingInfo) list -> Tycon -> bool /// Determine if the representation of a type definition is hidden by a signature -val IsHiddenTyconRepr : TcGlobals -> (Remap * SignatureHidingInfo) list -> Tycon -> bool +val IsHiddenTyconRepr: (Remap * SignatureHidingInfo) list -> Tycon -> bool /// Determine if a member, function or value is hidden by a signature -val IsHiddenVal : (Remap * SignatureHidingInfo) list -> Val -> bool +val IsHiddenVal: (Remap * SignatureHidingInfo) list -> Val -> bool /// Determine if a record field is hidden by a signature -val IsHiddenRecdField : (Remap * SignatureHidingInfo) list -> RecdFieldRef -> bool +val IsHiddenRecdField: (Remap * SignatureHidingInfo) list -> RecdFieldRef -> bool /// Adjust marks in expressions, replacing all marks by the given mark. /// Used when inlining. diff --git a/src/fsharp/TastPickle.fs b/src/fsharp/TastPickle.fs index d04a049be9..c1b2cf19b2 100644 --- a/src/fsharp/TastPickle.fs +++ b/src/fsharp/TastPickle.fs @@ -284,10 +284,13 @@ let u_int32 st = assert(b0 = 0xFF) prim_u_int32 st -let u_bytes st = +let u_byte_memory st = let n = (u_int32 st) st.is.ReadBytes n +let u_bytes st = + (u_byte_memory st).ToArray() + let u_prim_string st = let len = (u_int32 st) st.is.ReadUtf8String len @@ -551,12 +554,12 @@ let p_maybe_lazy p (x: MaybeLazy<_>) st = p_lazy_impl p x.Value st let p_hole () = - let h = ref (None : ('T -> WriterState -> unit) option) - (fun f -> h := Some f), (fun x st -> match !h with Some f -> f x st | None -> pfailwith st "p_hole: unfilled hole") + let mutable h = None + (fun f -> h <- Some f), (fun x st -> match h with Some f -> f x st | None -> pfailwith st "p_hole: unfilled hole") let p_hole2 () = - let h = ref (None : ('Arg -> 'T -> WriterState -> unit) option) - (fun f -> h := Some f), (fun arg x st -> match !h with Some f -> f arg x st | None -> pfailwith st "p_hole2: unfilled hole") + let mutable h = None + (fun f -> h <- Some f), (fun arg x st -> match h with Some f -> f arg x st | None -> pfailwith st "p_hole2: unfilled hole") let u_array_core f n st = let res = Array.zeroCreate n @@ -672,8 +675,8 @@ let u_lazy u st = let u_hole () = - let h = ref (None : 'T unpickler option) - (fun f -> h := Some f), (fun st -> match !h with Some f -> f st | None -> ufailwith st "u_hole: unfilled hole") + let mutable h = None + (fun f -> h <- Some f), (fun st -> match h with Some f -> f st | None -> ufailwith st "u_hole: unfilled hole") //--------------------------------------------------------------------------- // Pickle/unpickle F# interface data @@ -832,7 +835,7 @@ let check (ilscope: ILScopeRef) (inMap : NodeInTable<_, _>) = // an identical copy of the source for the DLL containing the data being unpickled. A message will // then be printed indicating the name of the item. -let unpickleObjWithDanglingCcus file ilscope (iILModule: ILModuleDef option) u (phase2bytes: byte[]) = +let unpickleObjWithDanglingCcus file ilscope (iILModule: ILModuleDef option) u (phase2bytes: ReadOnlyByteMemory) = let st2 = { is = ByteStream.FromBytes (phase2bytes, 0, phase2bytes.Length) iilscope= ilscope @@ -858,7 +861,7 @@ let unpickleObjWithDanglingCcus file ilscope (iILModule: ILModuleDef option) u ( (u_array u_encoded_pubpath) (u_array u_encoded_nleref) (u_array u_encoded_simpletyp) - u_bytes + u_byte_memory st2 let ccuTab = new_itbl "iccus" (Array.map (CcuThunk.CreateDelayed) ccuNameTab) let stringTab = new_itbl "istrings" (Array.map decode_string stringTab) @@ -916,9 +919,11 @@ let p_ILAssemblyRef (x: ILAssemblyRef) st = let p_ILScopeRef x st = match x with - | ILScopeRef.Local -> p_byte 0 st - | ILScopeRef.Module mref -> p_byte 1 st; p_ILModuleRef mref st - | ILScopeRef.Assembly aref -> p_byte 2 st; p_ILAssemblyRef aref st + | ILScopeRef.Local -> p_byte 0 st + | ILScopeRef.Module mref -> p_byte 1 st; p_ILModuleRef mref st + | ILScopeRef.Assembly aref -> p_byte 2 st; p_ILAssemblyRef aref st + // Encode primary assembly as a normal assembly ref + | ILScopeRef.PrimaryAssembly -> p_byte 2 st; p_ILAssemblyRef st.oglobals.ilg.primaryAssemblyRef st let u_ILPublicKey st = let tag = u_byte st diff --git a/src/fsharp/TastPickle.fsi b/src/fsharp/TastPickle.fsi index 2b659b0598..e3d9379c07 100644 --- a/src/fsharp/TastPickle.fsi +++ b/src/fsharp/TastPickle.fsi @@ -142,7 +142,7 @@ val internal u_ty : unpickler val internal unpickleCcuInfo : ReaderState -> PickledCcuInfo /// Deserialize an arbitrary object which may have holes referring to other compilation units -val internal unpickleObjWithDanglingCcus : file:string -> viewedScope:ILScopeRef -> ilModule:ILModuleDef option -> ('T unpickler) -> byte[] -> PickledDataWithReferences<'T> +val internal unpickleObjWithDanglingCcus : file:string -> viewedScope:ILScopeRef -> ilModule:ILModuleDef option -> ('T unpickler) -> ReadOnlyByteMemory -> PickledDataWithReferences<'T> diff --git a/src/fsharp/TcGlobals.fs b/src/fsharp/TcGlobals.fs index 339e8b4b7f..c70a378f6f 100755 --- a/src/fsharp/TcGlobals.fs +++ b/src/fsharp/TcGlobals.fs @@ -1491,5 +1491,5 @@ type public TcGlobals(compilingFslib: bool, ilg:ILGlobals, fslibCcu: CcuThunk, d #if DEBUG // This global is only used during debug output -let global_g = ref (None : TcGlobals option) +let mutable global_g = None : TcGlobals option #endif diff --git a/src/fsharp/TypeChecker.fs b/src/fsharp/TypeChecker.fs index 978949fd47..c888057686 100644 --- a/src/fsharp/TypeChecker.fs +++ b/src/fsharp/TypeChecker.fs @@ -223,7 +223,7 @@ type TcEnv = /// Compute the value of this computed, cached field let computeAccessRights eAccessPath eInternalsVisibleCompPaths eFamilyType = - AccessibleFrom (eAccessPath :: eInternalsVisibleCompPaths, eFamilyType) // env.eAccessRights + AccessibleFrom (eAccessPath :: eInternalsVisibleCompPaths, eFamilyType) // env.AccessRights let emptyTcEnv g = let cpath = compPathInternal // allow internal access initially @@ -324,7 +324,7 @@ let AddLocalValMap tcSink scopem (vals: Val NameMap) env = { env with eNameResEnv = AddValMapToNameEnv vals env.eNameResEnv eUngeneralizableItems = NameMap.foldBackRange (typeOfVal >> addFreeItemOfTy) vals env.eUngeneralizableItems } - CallEnvSink tcSink (scopem, env.NameEnv, env.eAccessRights) + CallEnvSink tcSink (scopem, env.NameEnv, env.AccessRights) env /// Add a list of local values to TcEnv and report them to the sink @@ -336,7 +336,7 @@ let AddLocalVals tcSink scopem (vals: Val list) env = { env with eNameResEnv = AddValListToNameEnv vals env.eNameResEnv eUngeneralizableItems = List.foldBack (typeOfVal >> addFreeItemOfTy) vals env.eUngeneralizableItems } - CallEnvSink tcSink (scopem, env.NameEnv, env.eAccessRights) + CallEnvSink tcSink (scopem, env.NameEnv, env.AccessRights) env /// Add a local value to TcEnv and report it to the sink @@ -351,8 +351,8 @@ let AddLocalVal tcSink scopem v env = let AddLocalExnDefnAndReport tcSink scopem env (exnc: Tycon) = let env = { env with eNameResEnv = AddExceptionDeclsToNameEnv BulkAdd.No env.eNameResEnv (mkLocalEntityRef exnc) } // Also make VisualStudio think there is an identifier in scope at the range of the identifier text of its binding location - CallEnvSink tcSink (exnc.Range, env.NameEnv, env.eAccessRights) - CallEnvSink tcSink (scopem, env.NameEnv, env.eAccessRights) + CallEnvSink tcSink (exnc.Range, env.NameEnv, env.AccessRights) + CallEnvSink tcSink (scopem, env.NameEnv, env.AccessRights) env /// Add a list of type definitions to TcEnv @@ -431,7 +431,7 @@ let AddModuleAbbreviationAndReport tcSink scopem id modrefs env = CallEnvSink tcSink (scopem, env.NameEnv, env.eAccessRights) let item = Item.ModuleOrNamespaces modrefs - CallNameResolutionSink tcSink (id.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Use, env.DisplayEnv, env.eAccessRights) + CallNameResolutionSink tcSink (id.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Use, env.DisplayEnv, env.AccessRights) env /// Add a "module X = ..." definition to the TcEnv @@ -558,7 +558,7 @@ let MakeInnerEnvWithAcc env nm mtypeAcc modKind = eCompPath = cpath eAccessPath = cpath eAccessRights = computeAccessRights cpath env.eInternalsVisibleCompPaths env.eFamilyType // update this computed field - eNameResEnv = { env.eNameResEnv with eDisplayEnv = env.DisplayEnv.AddOpenPath (pathOfLid path) } + eNameResEnv = { env.NameEnv with eDisplayEnv = env.DisplayEnv.AddOpenPath (pathOfLid path) } eModuleOrNamespaceTypeAccumulator = mtypeAcc } /// Make an environment suitable for a module or namespace, creating a new accumulator. @@ -863,7 +863,7 @@ module AttributeTargets = let ForNewConstructors tcSink (env: TcEnv) mObjTy methodName meths = let origItem = Item.CtorGroup(methodName, meths) - let callSink (item, minst) = CallNameResolutionSink tcSink (mObjTy, env.NameEnv, item, origItem, minst, ItemOccurence.Use, env.DisplayEnv, env.eAccessRights) + let callSink (item, minst) = CallNameResolutionSink tcSink (mObjTy, env.NameEnv, item, origItem, minst, ItemOccurence.Use, env.DisplayEnv, env.AccessRights) let sendToSink minst refinedMeths = callSink (Item.CtorGroup(methodName, refinedMeths), minst) match meths with | [] -> @@ -1301,7 +1301,7 @@ let PublishModuleDefn cenv env mspec = if intoFslibCcu then mty else mty.AddEntity mspec) let item = Item.ModuleOrNamespaces([mkLocalModRef mspec]) - CallNameResolutionSink cenv.tcSink (mspec.Range, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Binding, env.DisplayEnv, env.eAccessRights) + CallNameResolutionSink cenv.tcSink (mspec.Range, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Binding, env.DisplayEnv, env.AccessRights) let PublishTypeDefn cenv env tycon = UpdateAccModuleOrNamespaceType cenv env (fun _ mty -> @@ -1531,7 +1531,7 @@ let MakeAndPublishVal cenv env (altActualParent, inSig, declKind, vrec, vscheme, baseOrThisInfo = ValBaseOrThisInfo.MemberThisVal && vspec.LogicalName = "__" -> false | _ -> true - match cenv.tcSink.CurrentSink with + match cenv.tcSink.CurrentSink with | Some _ when not vspec.IsCompilerGenerated && shouldNotifySink vspec -> let nenv = AddFakeNamedValRefToNameEnv vspec.DisplayName env.NameEnv (mkLocalValRef vspec) CallEnvSink cenv.tcSink (vspec.Range, nenv, env.eAccessRights) @@ -1931,7 +1931,7 @@ let FreshenPossibleForallTy g m rigid ty = let tps, renaming, tinst = CopyAndFixupTypars m rigid tpsorig tpsorig, tps, tinst, instType renaming tau -let infoOfTyconRef m (tcref: TyconRef) = +let FreshenTyconRef2 m (tcref: TyconRef) = let tps, renaming, tinst = FreshenTypeInst m (tcref.Typars m) tps, renaming, tinst, TType_app (tcref, tinst) @@ -2119,24 +2119,24 @@ module GeneralizationHelpers = let ComputeUnabstractableTycons env = - let acc_in_free_item acc (item: UngeneralizableItem) = + let accInFreeItem acc (item: UngeneralizableItem) = let ftycs = if item.WillNeverHaveFreeTypars then item.CachedFreeLocalTycons else let ftyvs = item.GetFreeTyvars() ftyvs.FreeTycons if ftycs.IsEmpty then acc else unionFreeTycons ftycs acc - List.fold acc_in_free_item emptyFreeTycons env.eUngeneralizableItems + List.fold accInFreeItem emptyFreeTycons env.eUngeneralizableItems let ComputeUnabstractableTraitSolutions env = - let acc_in_free_item acc (item: UngeneralizableItem) = + let accInFreeItem acc (item: UngeneralizableItem) = let ftycs = if item.WillNeverHaveFreeTypars then item.CachedFreeTraitSolutions else let ftyvs = item.GetFreeTyvars() ftyvs.FreeTraitSolutions if ftycs.IsEmpty then acc else unionFreeLocals ftycs acc - List.fold acc_in_free_item emptyFreeLocals env.eUngeneralizableItems + List.fold accInFreeItem emptyFreeLocals env.eUngeneralizableItems let rec IsGeneralizableValue g t = match t with @@ -2284,24 +2284,17 @@ module GeneralizationHelpers = ConstraintSolver.ChooseTyparSolutionAndSolve cenv.css denv tp) generalizedTypars - let CanonicalizePartialInferenceProblem (cenv, denv, m) tps = - // Canonicalize constraints prior to generalization - let csenv = (MakeConstraintSolverEnv ContextInfo.NoContext cenv.css m denv) - TryD (fun () -> ConstraintSolver.CanonicalizeRelevantMemberConstraints csenv 0 NoTrace tps) - (fun res -> ErrorD (ErrorFromAddingConstraint(denv, res, m))) - |> RaiseOperationResult - - let ComputeAndGeneralizeGenericTypars (cenv, - denv: DisplayEnv, - m, - freeInEnv: FreeTypars, - canInferTypars, - genConstrainedTyparFlag, - inlineFlag, - exprOpt, - allDeclaredTypars: Typars, - maxInferredTypars: Typars, - tauTy, + let ComputeAndGeneralizeGenericTypars (cenv, + denv: DisplayEnv, + m, + freeInEnv: FreeTypars, + canInferTypars, + genConstrainedTyparFlag, + inlineFlag, + exprOpt, + allDeclaredTypars: Typars, + maxInferredTypars: Typars, + tauTy, resultFirst) = let allDeclaredTypars = NormalizeDeclaredTyparsForEquiRecursiveInference cenv.g allDeclaredTypars @@ -2333,8 +2326,7 @@ module GeneralizationHelpers = generalizedTypars |> List.iter (SetTyparRigid cenv.g denv m) // Generalization removes constraints related to generalized type variables - let csenv = MakeConstraintSolverEnv ContextInfo.NoContext cenv.css m denv - EliminateConstraintsForGeneralizedTypars csenv NoTrace generalizedTypars + EliminateConstraintsForGeneralizedTypars denv cenv.css m NoTrace generalizedTypars generalizedTypars @@ -2534,7 +2526,7 @@ module BindingNormalization = | _ -> MakeNormalizedInstanceMemberBinding cenv thisId memberId toolId vis m typars args rhsExpr valSynData let private NormalizeBindingPattern cenv nameResolver isObjExprBinding (env: TcEnv) valSynData pat rhsExpr = - let ad = env.eAccessRights + let ad = env.AccessRights let (SynValData(memberFlagsOpt, _, _)) = valSynData let rec normPattern pat = // One major problem with versions of F# prior to 1.9.x was that data constructors easily 'pollute' the namespace @@ -2545,7 +2537,7 @@ module BindingNormalization = let typars = match tyargs with None -> inferredTyparDecls | Some typars -> typars match memberFlagsOpt with | None -> - match ResolvePatternLongIdent cenv.tcSink nameResolver AllIdsOK true m ad env.eNameResEnv TypeNameResolutionInfo.Default longId with + match ResolvePatternLongIdent cenv.tcSink nameResolver AllIdsOK true m ad env.NameEnv TypeNameResolutionInfo.Default longId with | Item.NewDef id -> if id.idText = opNameCons then NormalizedBindingPat(pat, rhsExpr, valSynData, typars) @@ -3278,7 +3270,7 @@ let CompilePatternForMatchClauses cenv env mExpr matchm warnOnUnused actionOnFai // localAlloc is relevant if the enumerator is a mutable struct and indicates // if the enumerator can be allocated as a mutable local variable let AnalyzeArbitraryExprAsEnumerable cenv (env: TcEnv) localAlloc m exprty expr = - let ad = env.eAccessRights + let ad = env.AccessRights let err k ty = let txt = NicePrint.minimalStringOfType env.DisplayEnv ty @@ -3783,11 +3775,11 @@ let EliminateInitializationGraphs hash // The output of the analysis - let outOfOrder = ref false - let runtimeChecks = ref false - let directRecursiveData = ref false - let reportedEager = ref false - let definiteDependencies = ref [] + let mutable outOfOrder = false + let mutable runtimeChecks = false + let mutable directRecursiveData = false + let mutable reportedEager = false + let mutable definiteDependencies = [] let rec stripChooseAndExpr e = match stripExpr e with @@ -3883,21 +3875,21 @@ let EliminateInitializationGraphs | MaybeLazy -> if recursiveVals.TryFind v.Deref |> Option.isSome then warning (RecursiveUseCheckedAtRuntime (denv, v, m)) - if not !reportedEager then - (warning (LetRecCheckedAtRuntime m); reportedEager := true) - runtimeChecks := true + if not reportedEager then + (warning (LetRecCheckedAtRuntime m); reportedEager <- true) + runtimeChecks <- true | Top | DefinitelyStrict -> if recursiveVals.TryFind v.Deref |> Option.isSome then if availIfInOrder.TryFind v.Deref |> Option.isNone then warning (LetRecEvaluatedOutOfOrder (denv, boundv, v, m)) - outOfOrder := true - if not !reportedEager then - (warning (LetRecCheckedAtRuntime m); reportedEager := true) - definiteDependencies := (boundv, v) :: !definiteDependencies + outOfOrder <- true + if not reportedEager then + (warning (LetRecCheckedAtRuntime m); reportedEager <- true) + definiteDependencies <- (boundv, v) :: definiteDependencies | InnerTop -> if recursiveVals.TryFind v.Deref |> Option.isSome then - directRecursiveData := true + directRecursiveData <- true | DefinitelyLazy -> () and checkDelayed st b = match st with @@ -3919,11 +3911,11 @@ let EliminateInitializationGraphs // ddg = definiteDependencyGraph let ddgNodes = recursiveVals.Values |> Seq.toList |> List.map mkLocalValRef - let ddg = Graph((fun v -> v.Stamp), ddgNodes, !definiteDependencies ) + let ddg = Graph((fun v -> v.Stamp), ddgNodes, definiteDependencies ) ddg.IterateCycles (fun path -> error (LetRecUnsound (denv, path, path.Head.Range))) - let requiresLazyBindings = !runtimeChecks || !outOfOrder - if !directRecursiveData && requiresLazyBindings then + let requiresLazyBindings = runtimeChecks || outOfOrder + if directRecursiveData && requiresLazyBindings then error(Error(FSComp.SR.tcInvalidMixtureOfRecursiveForms(), bindsm)) if requiresLazyBindings then @@ -4232,7 +4224,7 @@ type ValSpecResult = ValSpecResult of ParentRef * ValMemberInfoTransient option type RecDefnBindingInfo = RecDefnBindingInfo of ContainerInfo * NewSlotsOK * DeclKind * SynBinding -type MutRecDataForOpen = MutRecDataForOpen of LongIdent * range +type MutRecDataForOpen = MutRecDataForOpen of LongIdent * range * appliedScope: range type MutRecDataForModuleAbbrev = MutRecDataForModuleAbbrev of Ident * LongIdent * range type MutRecSigsInitialData = MutRecShape list @@ -4333,8 +4325,7 @@ let rec TcTyparConstraint ridx cenv newOk checkCxs occ (env: TcEnv) tpenv c = | WhereTyparDefaultsToType(tp, ty, m) -> let ty', tpenv = TcTypeAndRecover cenv newOk checkCxs occ env tpenv ty let tp', tpenv = TcTypar cenv env newOk tpenv tp - let csenv = MakeConstraintSolverEnv env.eContextInfo cenv.css m env.DisplayEnv - AddConstraint csenv 0 m NoTrace tp' (TyparConstraint.DefaultsTo(ridx, ty', m)) |> CommitOperationResult + AddCxTyparDefaultsTo env.DisplayEnv cenv.css m env.eContextInfo tp' ridx ty' tpenv | WhereTyparSubtypeOfType(tp, ty, m) -> @@ -4419,7 +4410,7 @@ and TcPseudoMemberSpec cenv newOk env synTypes tpenv memSpfn m = let logicalCompiledName = ComputeLogicalName id memberFlags let item = Item.ArgName (id, memberConstraintTy, None) - CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Use, env.DisplayEnv, env.eAccessRights) + CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Use, env.DisplayEnv, env.AccessRights) TTrait(tys, logicalCompiledName, memberFlags, argTys, returnTy, ref None), tpenv | _ -> error(Error(FSComp.SR.tcInvalidConstraint(), m)) @@ -4580,7 +4571,7 @@ and TcTyparOrMeasurePar optKind cenv (env: TcEnv) newOk tpenv (Typar(id, _, _) a | Some TyparKind.Type, TyparKind.Measure -> error (Error(FSComp.SR.tcExpectedTypeParameter(), id.idRange)); res, tpenv | _, _ -> let item = Item.TypeVar(id.idText, res) - CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.UseInType, env.DisplayEnv, env.eAccessRights) + CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.UseInType, env.DisplayEnv, env.AccessRights) // record the ' as well for tokenization // CallNameResolutionSink cenv.tcSink (tp.Range.StartRange, env.NameEnv, item, item, ItemOccurence.UseInType, env.DisplayEnv, env.eAccessRights) res, tpenv @@ -4608,7 +4599,7 @@ and TcTyparOrMeasurePar optKind cenv (env: TcEnv) newOk tpenv (Typar(id, _, _) a // The kind defaults to Type let tp' = NewTypar ((match optKind with None -> TyparKind.Type | Some kind -> kind), TyparRigidity.WarnIfNotRigid, tp, false, TyparDynamicReq.Yes, [], false, false) let item = Item.TypeVar(id.idText, tp') - CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.UseInType, env.DisplayEnv, env.eAccessRights) + CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.UseInType, env.DisplayEnv, env.AccessRights) tp', AddUnscopedTypar key tp' tpenv and TcTypar cenv env newOk tpenv tp = @@ -4648,7 +4639,7 @@ and TcTypeOrMeasure optKind cenv newOk checkCxs occ env (tpenv: SyntacticUnscope | SynType.LongIdent(LongIdentWithDots(tc, _) as lidwd) -> let m = lidwd.Range let ad = env.eAccessRights - let tcref = ForceRaise(ResolveTypeLongIdent cenv.tcSink cenv.nameResolver occ OpenQualified env.eNameResEnv ad tc TypeNameResolutionStaticArgsInfo.DefiniteEmpty PermitDirectReferenceToGeneratedType.No) + let tcref = ForceRaise(ResolveTypeLongIdent cenv.tcSink cenv.nameResolver occ OpenQualified env.NameEnv ad tc TypeNameResolutionStaticArgsInfo.DefiniteEmpty PermitDirectReferenceToGeneratedType.No) match optKind, tcref.TypeOrMeasureKind with | Some TyparKind.Type, TyparKind.Measure -> error(Error(FSComp.SR.tcExpectedTypeNotUnitOfMeasure(), m)) @@ -4880,7 +4871,7 @@ and TcStaticConstantParameter cenv (env: TcEnv) tpenv kind (v: SynType) idOpt co match idOpt with | Some id -> let item = Item.ArgName (id, ttype, Some container) - CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Use, env.DisplayEnv, env.eAccessRights) + CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Use, env.DisplayEnv, env.AccessRights) | _ -> () match v with @@ -5060,7 +5051,7 @@ and TcProvidedTypeApp cenv env tpenv tcref args m = /// the prefix of type arguments. and TcTypeApp cenv newOk checkCxs occ env tpenv m tcref pathTypeArgs (synArgTys: SynType list) = let g = cenv.g - CheckTyconAccessible cenv.amap m env.eAccessRights tcref |> ignore + CheckTyconAccessible cenv.amap m env.AccessRights tcref |> ignore CheckEntityAttributes g tcref m |> CommitOperationResult #if !NO_EXTENSIONTYPING @@ -5069,7 +5060,7 @@ and TcTypeApp cenv newOk checkCxs occ env tpenv m tcref pathTypeArgs (synArgTys: if tcref.Deref.IsProvided then TcProvidedTypeApp cenv env tpenv tcref synArgTys m else #endif - let tps, _, tinst, _ = infoOfTyconRef m tcref + let tps, _, tinst, _ = FreshenTyconRef2 m tcref // If we're not checking constraints, i.e. when we first assert the super/interfaces of a type definition, then just // clear the constraint lists of the freshly generated type variables. A little ugly but fairly localized. @@ -5176,9 +5167,9 @@ and ValidateOptArgOrder (spats: SynSimplePats) = let pats, m = getPats spats - let hitOptArg = ref false + let mutable hitOptArg = false - List.iter (fun pat -> if isOptArg pat then hitOptArg := true elif !hitOptArg then error(Error(FSComp.SR.tcOptionalArgsMustComeAfterNonOptionalArgs(), m))) pats + List.iter (fun pat -> if isOptArg pat then hitOptArg <- true elif hitOptArg then error(Error(FSComp.SR.tcOptionalArgsMustComeAfterNonOptionalArgs(), m))) pats /// Bind the patterns used in argument position for a function, method or lambda. @@ -5250,7 +5241,7 @@ and TcPatBindingName cenv env id ty isMemberThis vis1 topValData (inlineFlag, de // For non-left-most paths, we register the name resolutions here if not isLeftMost && not vspec.IsCompilerGenerated && not (vspec.LogicalName.StartsWithOrdinal("_")) then let item = Item.Value(mkLocalValRef vspec) - CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Binding, env.DisplayEnv, env.eAccessRights) + CallNameResolutionSink cenv.tcSink (id.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Binding, env.DisplayEnv, env.AccessRights) PBind(vspec, typeScheme)), names, takenNames @@ -5275,7 +5266,7 @@ and TcPatAndRecover warnOnUpper cenv (env: TcEnv) topValInfo vFlags (tpenv, name /// the second-phase function in terms of a List.map from names to actual /// value specifications. and TcPat warnOnUpper cenv env topValInfo vFlags (tpenv, names, takenNames) ty pat = - let ad = env.eAccessRights + let ad = env.AccessRights match pat with | SynPat.Const (c, m) -> match c with @@ -5354,7 +5345,7 @@ and TcPat warnOnUpper cenv env topValInfo vFlags (tpenv, names, takenNames) ty p | SynConstructorArgs.NamePatPairs (pairs, _) -> pairs.Length if numArgs <> 0 then error(Error(FSComp.SR.tcLiteralDoesNotTakeArguments(), m)) - match ResolvePatternLongIdent cenv.tcSink cenv.nameResolver warnOnUpperForId false m ad env.eNameResEnv TypeNameResolutionInfo.Default longId with + match ResolvePatternLongIdent cenv.tcSink cenv.nameResolver warnOnUpperForId false m ad env.NameEnv TypeNameResolutionInfo.Default longId with | Item.NewDef id -> match args with | SynConstructorArgs.Pats [] @@ -5425,7 +5416,7 @@ and TcPat warnOnUpper cenv env topValInfo vFlags (tpenv, names, takenNames) ty p let activePatIdentity = if isNil activePatArgsAsSynExprs then Some (vref, tinst) else None (fun values -> // Report information about the 'active recognizer' occurrence to IDE - CallNameResolutionSink cenv.tcSink (rangeOfLid longId, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Pattern, env.DisplayEnv, env.eAccessRights) + CallNameResolutionSink cenv.tcSink (rangeOfLid longId, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Pattern, env.DisplayEnv, env.AccessRights) TPat_query((activePatExpr, activePatResTys, activePatIdentity, idx, apinfo), arg' values, m)), (tpenv, names, takenNames) @@ -5482,7 +5473,7 @@ and TcPat warnOnUpper cenv env topValInfo vFlags (tpenv, names, takenNames) ty p | [SynPatErrorSkip(SynPat.Tuple (false, args, _)) | SynPatErrorSkip(SynPat.Paren(SynPatErrorSkip(SynPat.Tuple (false, args, _)), _))] when numArgTys > 1 -> args // note: we allow both 'C _' and 'C (_)' regardless of number of argument of the pattern - | [SynPatErrorSkip(SynPat.Wild _ as e) | SynPatErrorSkip(SynPat.Paren(SynPatErrorSkip(SynPat.Wild _ as e), _))] -> Array.toList (Array.create numArgTys e) + | [SynPatErrorSkip(SynPat.Wild _ as e) | SynPatErrorSkip(SynPat.Paren(SynPatErrorSkip(SynPat.Wild _ as e), _))] -> List.replicate numArgTys e | [arg] -> [arg] | _ when numArgTys = 0 -> error(Error(FSComp.SR.tcUnionCaseDoesNotTakeArguments(), m)) | _ when numArgTys = 1 -> error(Error(FSComp.SR.tcUnionCaseRequiresOneArgument(), m)) @@ -5492,12 +5483,12 @@ and TcPat warnOnUpper cenv env topValInfo vFlags (tpenv, names, takenNames) ty p let args', acc = TcPatterns warnOnUpper cenv env vFlags (tpenv, names, takenNames) argTys args (fun values -> // Report information about the case occurrence to IDE - CallNameResolutionSink cenv.tcSink (rangeOfLid longId, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Pattern, env.DisplayEnv, env.eAccessRights) + CallNameResolutionSink cenv.tcSink (rangeOfLid longId, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Pattern, env.DisplayEnv, env.AccessRights) mkf m (List.map (fun f -> f values) args')), acc | Item.ILField finfo -> // LITERAL .NET FIELDS - CheckILFieldInfoAccessible cenv.g cenv.amap m env.eAccessRights finfo + CheckILFieldInfoAccessible cenv.g cenv.amap m env.AccessRights finfo if not finfo.IsStatic then errorR (Error (FSComp.SR.tcFieldIsNotStatic(finfo.FieldName), m)) CheckILFieldAttributes cenv.g finfo m match finfo.LiteralValue with @@ -5512,7 +5503,7 @@ and TcPat warnOnUpper cenv env topValInfo vFlags (tpenv, names, takenNames) ty p | Item.RecdField rfinfo -> // LITERAL F# FIELDS - CheckRecdFieldInfoAccessible cenv.amap m env.eAccessRights rfinfo + CheckRecdFieldInfoAccessible cenv.amap m env.AccessRights rfinfo if not rfinfo.IsStatic then errorR (Error (FSComp.SR.tcFieldIsNotStatic(rfinfo.Name), m)) CheckRecdFieldInfoAttributes cenv.g rfinfo m |> CommitOperationResult match rfinfo.LiteralValue with @@ -5531,7 +5522,7 @@ and TcPat warnOnUpper cenv env topValInfo vFlags (tpenv, names, takenNames) ty p | None -> error (Error(FSComp.SR.tcNonLiteralCannotBeUsedInPattern(), m)) | Some lit -> let _, _, _, vexpty, _, _ = TcVal true cenv env tpenv vref None None m - CheckValAccessible m env.eAccessRights vref + CheckValAccessible m env.AccessRights vref CheckFSharpAttributes cenv.g vref.Attribs m |> CommitOperationResult checkNoArgsForLiteral() UnifyTypes cenv env m ty vexpty @@ -5563,7 +5554,7 @@ and TcPat warnOnUpper cenv env topValInfo vFlags (tpenv, names, takenNames) ty p | SynPat.Record (flds, m) -> let tcref, fldsmap, _fldsList = BuildFieldMap cenv env true ty flds m // REVIEW: use _fldsList to type check pattern in code order not field defn order - let _, inst, tinst, gtyp = infoOfTyconRef m tcref + let _, inst, tinst, gtyp = FreshenTyconRef2 m tcref UnifyTypes cenv env m ty gtyp let fields = tcref.TrueInstanceFieldsAsList let ftys = fields |> List.map (fun fsp -> actualTyOfRecdField inst fsp, fsp) @@ -5587,6 +5578,7 @@ and TcPat warnOnUpper cenv env topValInfo vFlags (tpenv, names, takenNames) ty p | SynPat.InstanceMember (_, _, _, _, m) -> errorR(Error(FSComp.SR.tcIllegalPattern(), pat.Range)) (fun _ -> TPat_wild m), (tpenv, names, takenNames) + | SynPat.FromParseError (pat, _) -> suppressErrorReporting (fun () -> TcPatAndRecover warnOnUpper cenv env topValInfo vFlags (tpenv, names, takenNames) (NewErrorType()) pat) @@ -5594,11 +5586,7 @@ and TcPatterns warnOnUpper cenv env vFlags s argTys args = assert (List.length args = List.length argTys) List.mapFold (fun s (ty, pat) -> TcPat warnOnUpper cenv env None vFlags s ty pat) s (List.zip argTys args) - -and solveTypAsError cenv denv m ty = - let ty2 = NewErrorType () - assert((destTyparTy cenv.g ty2).IsFromError) - SolveTypeEqualsTypeKeepAbbrevs (MakeConstraintSolverEnv ContextInfo.NoContext cenv.css m denv) 0 m NoTrace ty ty2 |> ignore +and solveTypAsError cenv denv m ty = ConstraintSolver.SolveTypeAsError denv cenv.css m ty and RecordNameAndTypeResolutions_IdeallyWithoutHavingOtherEffects cenv env tpenv expr = // This function is motivated by cases like @@ -5813,7 +5801,7 @@ and TcExprUndelayed cenv overallTy env tpenv (synExpr: SynExpr) = | SynExpr.Paren (expr2, _, _, mWholeExprIncludingParentheses) -> // We invoke CallExprHasTypeSink for every construct which is atomic in the syntax, i.e. where a '.' immediately following the // construct is a dot-lookup for the result of the construct. - CallExprHasTypeSink cenv.tcSink (mWholeExprIncludingParentheses, env.NameEnv, overallTy, env.DisplayEnv, env.eAccessRights) + CallExprHasTypeSink cenv.tcSink (mWholeExprIncludingParentheses, env.NameEnv, overallTy, env.DisplayEnv, env.AccessRights) let env = ShrinkContext env mWholeExprIncludingParentheses expr2.Range TcExpr cenv overallTy env tpenv expr2 @@ -5821,11 +5809,11 @@ and TcExprUndelayed cenv overallTy env tpenv (synExpr: SynExpr) = | SynExpr.TypeApp _ | SynExpr.Ident _ | SynExpr.LongIdent _ | SynExpr.App _ | SynExpr.DotGet _ -> error(Error(FSComp.SR.tcExprUndelayed(), synExpr.Range)) | SynExpr.Const (SynConst.String (s, m), _) -> - CallExprHasTypeSink cenv.tcSink (m, env.NameEnv, overallTy, env.DisplayEnv, env.eAccessRights) + CallExprHasTypeSink cenv.tcSink (m, env.NameEnv, overallTy, env.DisplayEnv, env.AccessRights) TcConstStringExpr cenv overallTy env m tpenv s | SynExpr.Const (synConst, m) -> - CallExprHasTypeSink cenv.tcSink (m, env.NameEnv, overallTy, env.DisplayEnv, env.eAccessRights) + CallExprHasTypeSink cenv.tcSink (m, env.NameEnv, overallTy, env.DisplayEnv, env.AccessRights) TcConstExpr cenv overallTy env m tpenv synConst | SynExpr.Lambda _ -> @@ -5885,7 +5873,7 @@ and TcExprUndelayed cenv overallTy env tpenv (synExpr: SynExpr) = // its use at method calls from the use of the conflicting 'ref' mechanism for passing byref parameters | SynExpr.AddressOf (byref, synInnerExpr, opm, m) -> TcExpr cenv overallTy env tpenv (mkSynPrefixPrim opm m (if byref then "~&" else "~&&") synInnerExpr) - + | SynExpr.Upcast (synInnerExpr, _, m) | SynExpr.InferredUpcast (synInnerExpr, m) -> let innerExpr, srcTy, tpenv = TcExprOfUnknownType cenv env tpenv synInnerExpr let tgtTy, tpenv = @@ -5941,17 +5929,17 @@ and TcExprUndelayed cenv overallTy env tpenv (synExpr: SynExpr) = TcAnonRecdExpr cenv overallTy env tpenv (isStruct, optOrigExpr, unsortedFieldExprs, mWholeExpr) | SynExpr.ArrayOrList (isArray, args, m) -> - CallExprHasTypeSink cenv.tcSink (m, env.NameEnv, overallTy, env.DisplayEnv, env.eAccessRights) + CallExprHasTypeSink cenv.tcSink (m, env.NameEnv, overallTy, env.DisplayEnv, env.AccessRights) let argty = NewInferenceType () UnifyTypes cenv env m overallTy (if isArray then mkArrayType cenv.g argty else Tastops.mkListTy cenv.g argty) // Always allow subsumption if a nominal type is known prior to type checking any arguments let flex = not (isTyparTy cenv.g argty) - let first = ref true + let mutable first = true let getInitEnv m = - if !first then - first := false + if first then + first <- false env else { env with eContextInfo = ContextInfo.CollectionElement (isArray, m) } @@ -5973,7 +5961,7 @@ and TcExprUndelayed cenv overallTy env tpenv (synExpr: SynExpr) = TcObjectExpr cenv overallTy env tpenv (objTy, argopt, binds, extraImpls, mNewExpr, m) | SynExpr.Record (inherits, optOrigExpr, flds, mWholeExpr) -> - CallExprHasTypeSink cenv.tcSink (mWholeExpr, env.NameEnv, overallTy, env.DisplayEnv, env.eAccessRights) + CallExprHasTypeSink cenv.tcSink (mWholeExpr, env.NameEnv, overallTy, env.DisplayEnv, env.AccessRights) TcRecdExpr cenv overallTy env tpenv (inherits, optOrigExpr, flds, mWholeExpr) | SynExpr.While (spWhile, synGuardExpr, synBodyExpr, m) -> @@ -5991,7 +5979,7 @@ and TcExprUndelayed cenv overallTy env tpenv (synExpr: SynExpr) = // notify name resolution sink about loop variable let item = Item.Value(mkLocalValRef idv) - CallNameResolutionSink cenv.tcSink (idv.Range, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Binding, env.DisplayEnv, env.eAccessRights) + CallNameResolutionSink cenv.tcSink (idv.Range, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Binding, env.DisplayEnv, env.AccessRights) let bodyExpr, tpenv = TcStmt cenv envinner tpenv body mkFastForLoop cenv.g (spBind, m, idv, startExpr, dir, finishExpr, bodyExpr), tpenv @@ -6192,11 +6180,12 @@ and TcExprUndelayed cenv overallTy env tpenv (synExpr: SynExpr) = | SynExpr.TraitCall (tps, memSpfn, arg, m) -> let synTypes = tps |> List.map (fun tp -> SynType.Var(tp, m)) - let (TTrait(_, logicalCompiledName, _, argTys, returnTy, _) as traitInfo), tpenv = TcPseudoMemberSpec cenv NewTyparsOK env synTypes tpenv memSpfn m - if BakedInTraitConstraintNames.Contains logicalCompiledName then - warning(BakedInMemberConstraintName(logicalCompiledName, m)) + let traitInfo, tpenv = TcPseudoMemberSpec cenv NewTyparsOK env synTypes tpenv memSpfn m + if BakedInTraitConstraintNames.Contains traitInfo.MemberName then + warning(BakedInMemberConstraintName(traitInfo.MemberName, m)) - let returnTy = GetFSharpViewOfReturnType cenv.g returnTy + let argTys = traitInfo.ArgumentTypes + let returnTy = GetFSharpViewOfReturnType cenv.g traitInfo.ReturnType let args, namedCallerArgs = GetMethodArgs arg if not (isNil namedCallerArgs) then errorR(Error(FSComp.SR.tcNamedArgumentsCannotBeUsedInMemberTraits(), m)) // Subsumption at trait calls if arguments have nominal type prior to unification of any arguments or return type @@ -6243,7 +6232,7 @@ and TcExprUndelayed cenv overallTy env tpenv (synExpr: SynExpr) = mkAsmExpr (Array.toList s, tyargs', args', rtys', m), tpenv | SynExpr.Quote (oper, raw, ast, isFromQueryExpression, m) -> - CallExprHasTypeSink cenv.tcSink (m, env.NameEnv, overallTy, env.DisplayEnv, env.eAccessRights) + CallExprHasTypeSink cenv.tcSink (m, env.NameEnv, overallTy, env.DisplayEnv, env.AccessRights) TcQuotationExpr cenv overallTy env tpenv (oper, raw, ast, isFromQueryExpression, m) | SynExpr.YieldOrReturn ((isTrueYield, _), _, m) @@ -6293,14 +6282,14 @@ and TcIteratedLambdas cenv isFirst (env: TcEnv) overallTy takenNames tpenv e = // .NET metadata. This means we manually typecheck 'e1' and look to see if it has a nominal type. We then // do the right thing in each case. and TcIndexerThen cenv env overallTy mWholeExpr mDot tpenv wholeExpr e1 indexArgs delayed = - let ad = env.eAccessRights + let ad = env.AccessRights let e1', e1ty, tpenv = TcExprOfUnknownType cenv env tpenv e1 // Find the first type in the effective hierarchy that either has a DefaultMember attribute OR // has a member called 'Item' + let isIndex = indexArgs |> List.forall( fun x -> match x with SynIndexerArg.One _ -> true | _ -> false) let propName = - match indexArgs with - | [SynIndexerArg.One _] -> + if isIndex then FoldPrimaryHierarchyOfType (fun ty acc -> match acc with | None -> @@ -6319,7 +6308,7 @@ and TcIndexerThen cenv env overallTy mWholeExpr mDot tpenv wholeExpr e1 indexArg AllowMultiIntfInstantiations.Yes e1ty None - | _ -> Some "GetSlice" + else Some "GetSlice" let isNominal = isAppTy cenv.g e1ty @@ -6327,44 +6316,132 @@ and TcIndexerThen cenv env overallTy mWholeExpr mDot tpenv wholeExpr e1 indexArg let isString = typeEquiv cenv.g cenv.g.string_ty e1ty let idxRange = indexArgs |> List.map (fun e -> e.Range) |> List.reduce unionRanges - let GetIndexArgs (es: SynIndexerArg list) = [ for e in es do yield! e.Exprs ] - let MakeIndexParam vopt = - match indexArgs with - | [] -> failwith "unexpected empty index list" - | [SynIndexerArg.One h] -> SynExpr.Paren (h, range0, None, idxRange) - | _ -> SynExpr.Paren (SynExpr.Tuple (false, GetIndexArgs indexArgs @ Option.toList vopt, [], idxRange), range0, None, idxRange) + + // xs.GetReverseIndex rank offset - 1 + let rewriteReverseExpr (rank: int) (offset: SynExpr) (range: range) = + let rankExpr = SynExpr.Const(SynConst.Int32(rank), range) + let sliceArgs = SynExpr.Paren(SynExpr.Tuple(false, [rankExpr; offset], [], range), range, Some range, range) + let xsId = e1 + + mkSynApp1 + (mkSynDot range range xsId (mkSynId range "GetReverseIndex")) + sliceArgs + range + + let rewriteReverseOption (app: SynExpr) (rank: int) (range: range) = + match app with + | SynExpr.App(atomicFlag, isInfix, funcExpr, e1, outerRange) -> SynExpr.App(atomicFlag, isInfix, funcExpr, rewriteReverseExpr rank e1 range, outerRange) + | _ -> app + + let expandedIndexArgs = + indexArgs + |> List.mapi ( fun pos indexerArg -> + match indexerArg with + | SynIndexerArg.One(expr, fromEnd, range) -> + [ if fromEnd then rewriteReverseExpr pos expr range else expr ] + | SynIndexerArg.Two + ( + a1, + fromEnd1, + a2, + fromEnd2, + range1, + range2) -> + [ + if fromEnd1 then rewriteReverseOption a1 pos range1 else a1 ; + if fromEnd2 then rewriteReverseOption a2 pos range2 else a2 + ] + ) + |> List.collect (id) + + let MakeIndexParam setSliceArrayOption = + match indexArgs with + | [] -> failwith "unexpected empty index list" + | [SynIndexerArg.One _] -> SynExpr.Paren (expandedIndexArgs.Head, range0, None, idxRange) + | _ -> SynExpr.Paren (SynExpr.Tuple (false, expandedIndexArgs @ Option.toList setSliceArrayOption, [], idxRange), range0, None, idxRange) let attemptArrayString = - if isArray || isString then - - let indexOpPath = ["Microsoft";"FSharp";"Core";"LanguagePrimitives";"IntrinsicFunctions"] - let sliceOpPath = ["Microsoft";"FSharp";"Core";"Operators";"OperatorIntrinsics"] - let info = - match isString, isArray, wholeExpr with - | false, true, SynExpr.DotIndexedGet (_, [SynIndexerArg.One(SynExpr.Tuple (false, ([_;_] as idxs), _, _))], _, _) -> Some (indexOpPath, "GetArray2D", idxs) - | false, true, SynExpr.DotIndexedGet (_, [SynIndexerArg.One(SynExpr.Tuple (false, ([_;_;_] as idxs), _, _))], _, _) -> Some (indexOpPath, "GetArray3D", idxs) - | false, true, SynExpr.DotIndexedGet (_, [SynIndexerArg.One(SynExpr.Tuple (false, ([_;_;_;_] as idxs), _, _))], _, _) -> Some (indexOpPath, "GetArray4D", idxs) - | false, true, SynExpr.DotIndexedGet (_, [SynIndexerArg.One idx], _, _) -> Some (indexOpPath, "GetArray", [idx]) - | false, true, SynExpr.DotIndexedSet (_, [SynIndexerArg.One(SynExpr.Tuple (false, ([_;_] as idxs), _, _))], e3, _, _, _) -> Some (indexOpPath, "SetArray2D", (idxs @ [e3])) - | false, true, SynExpr.DotIndexedSet (_, [SynIndexerArg.One(SynExpr.Tuple (false, ([_;_;_] as idxs), _, _))], e3, _, _, _) -> Some (indexOpPath, "SetArray3D", (idxs @ [e3])) - | false, true, SynExpr.DotIndexedSet (_, [SynIndexerArg.One(SynExpr.Tuple (false, ([_;_;_;_] as idxs), _, _))], e3, _, _, _) -> Some (indexOpPath, "SetArray4D", (idxs @ [e3])) - | false, true, SynExpr.DotIndexedSet (_, [SynIndexerArg.One _], e3, _, _, _) -> Some (indexOpPath, "SetArray", (GetIndexArgs indexArgs @ [e3])) - | true, false, SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetStringSlice", GetIndexArgs indexArgs) - | true, false, SynExpr.DotIndexedGet (_, [SynIndexerArg.One _], _, _) -> Some (indexOpPath, "GetString", GetIndexArgs indexArgs) - | false, true, SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice", GetIndexArgs indexArgs) - | false, true, SynExpr.DotIndexedGet (_, [SynIndexerArg.One _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice2DFixed1", GetIndexArgs indexArgs) - | false, true, SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.One _], _, _) -> Some (sliceOpPath, "GetArraySlice2DFixed2", GetIndexArgs indexArgs) - | false, true, SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice2D", GetIndexArgs indexArgs) - | false, true, SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice3D", GetIndexArgs indexArgs) - | false, true, SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice4D", GetIndexArgs indexArgs) - | false, true, SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice", (GetIndexArgs indexArgs @ [e3])) - | false, true, SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice2D", (GetIndexArgs indexArgs @ [e3])) - | false, true, SynExpr.DotIndexedSet (_, [SynIndexerArg.One _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice2DFixed1", (GetIndexArgs indexArgs @ [e3])) - | false, true, SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.One _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice2DFixed2", (GetIndexArgs indexArgs @ [e3])) - | false, true, SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice3D", (GetIndexArgs indexArgs @ [e3])) - | false, true, SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4D", (GetIndexArgs indexArgs @ [e3])) - | _ -> None // error(Error(FSComp.SR.tcInvalidIndexerExpression(), mWholeExpr)) - match info with + let indexOpPath = ["Microsoft";"FSharp";"Core";"LanguagePrimitives";"IntrinsicFunctions"] + let sliceOpPath = ["Microsoft";"FSharp";"Core";"Operators";"OperatorIntrinsics"] + + let info = + if isArray then + let fixedIndex3d4dEnabled = cenv.g.langVersion.SupportsFeature LanguageFeature.FixedIndexSlice3d4d + match wholeExpr with + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _; SynIndexerArg.One _], _, _) -> Some (indexOpPath, "GetArray2D", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _; SynIndexerArg.One _; SynIndexerArg.One _;], _, _) -> Some (indexOpPath, "GetArray3D", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _; SynIndexerArg.One _; SynIndexerArg.One _; SynIndexerArg.One _], _, _) -> Some (indexOpPath, "GetArray4D", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _], _, _) -> Some (indexOpPath, "GetArray", expandedIndexArgs) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _; SynIndexerArg.One _], e3, _, _, _) -> Some (indexOpPath, "SetArray2D", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _; SynIndexerArg.One _; SynIndexerArg.One _;], e3, _, _, _) -> Some (indexOpPath, "SetArray3D", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _; SynIndexerArg.One _; SynIndexerArg.One _; SynIndexerArg.One _], e3, _, _, _) -> Some (indexOpPath, "SetArray4D", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _], e3, _, _, _) -> Some (indexOpPath, "SetArray", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice2DFixed1", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.One _], _, _) -> Some (sliceOpPath, "GetArraySlice2DFixed2", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice2D", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice3D", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice4D", expandedIndexArgs) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice2D", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice2DFixed1", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.One _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice2DFixed2", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice3D", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4D", (expandedIndexArgs @ [e3])) + | _ when fixedIndex3d4dEnabled -> + match wholeExpr with + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice3DFixedSingle1", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice3DFixedSingle2", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.One _], _, _) -> Some (sliceOpPath, "GetArraySlice3DFixedSingle3", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _;SynIndexerArg.One _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice3DFixedDouble1", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.One _], _, _) -> Some (sliceOpPath, "GetArraySlice3DFixedDouble2", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.One _], _, _) -> Some (sliceOpPath, "GetArraySlice3DFixedDouble3", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice4DFixedSingle1", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice4DFixedSingle2", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice4DFixedSingle3", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.One _], _, _) -> Some (sliceOpPath, "GetArraySlice4DFixedSingle4", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _;SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice4DFixedDouble1", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice4DFixedDouble2", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.One _], _, _) -> Some (sliceOpPath, "GetArraySlice4DFixedDouble3", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.One _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice4DFixedDouble4", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.One _], _, _) -> Some (sliceOpPath, "GetArraySlice4DFixedDouble5", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.One _], _, _) -> Some (sliceOpPath, "GetArraySlice4DFixedDouble6", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.One _;SynIndexerArg.One _], _, _) -> Some (sliceOpPath, "GetArraySlice4DFixedTriple1", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.One _], _, _) -> Some (sliceOpPath, "GetArraySlice4DFixedTriple2", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _;SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.One _], _, _) -> Some (sliceOpPath, "GetArraySlice4DFixedTriple3", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _;SynIndexerArg.One _;SynIndexerArg.One _;SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetArraySlice4DFixedTriple4", expandedIndexArgs) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice3DFixedSingle1", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice3DFixedSingle2", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.One _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice3DFixedSingle3", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _;SynIndexerArg.One _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice3DFixedDouble1", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.One _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice3DFixedDouble2", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.One _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice3DFixedDouble3", (expandedIndexArgs @ [e3])) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4DFixedSingle1", expandedIndexArgs @ [e3]) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4DFixedSingle2", expandedIndexArgs @ [e3]) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4DFixedSingle3", expandedIndexArgs @ [e3]) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.One _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4DFixedSingle4", expandedIndexArgs @ [e3]) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _;SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4DFixedDouble1", expandedIndexArgs @ [e3]) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4DFixedDouble2", expandedIndexArgs @ [e3]) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.One _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4DFixedDouble3", expandedIndexArgs @ [e3]) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.One _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4DFixedDouble4", expandedIndexArgs @ [e3]) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.One _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4DFixedDouble5", expandedIndexArgs @ [e3]) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.One _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4DFixedDouble6", expandedIndexArgs @ [e3]) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.One _;SynIndexerArg.One _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4DFixedTriple1", expandedIndexArgs @ [e3]) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.One _;SynIndexerArg.One _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4DFixedTriple2", expandedIndexArgs @ [e3]) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _;SynIndexerArg.One _;SynIndexerArg.Two _;SynIndexerArg.One _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4DFixedTriple3", expandedIndexArgs @ [e3]) + | SynExpr.DotIndexedSet (_, [SynIndexerArg.One _;SynIndexerArg.One _;SynIndexerArg.One _;SynIndexerArg.Two _], e3, _, _, _) -> Some (sliceOpPath, "SetArraySlice4DFixedTriple4", expandedIndexArgs @ [e3]) + | _ -> None + | _ -> None + + elif isString then + match wholeExpr with + | SynExpr.DotIndexedGet (_, [SynIndexerArg.Two _], _, _) -> Some (sliceOpPath, "GetStringSlice", expandedIndexArgs) + | SynExpr.DotIndexedGet (_, [SynIndexerArg.One _], _, _) -> Some (indexOpPath, "GetString", expandedIndexArgs) + | _ -> None + + else None + + match info with | None -> None | Some (path, functionName, indexArgs) -> let operPath = mkSynLidGet mDot path (CompileOpName functionName) @@ -6374,7 +6451,6 @@ and TcIndexerThen cenv env overallTy mWholeExpr mDot tpenv wholeExpr e1 indexArg let f', resultTy = buildApp cenv (MakeApplicableExprNoFlex cenv f) resultTy e1' mWholeExpr let delayed = List.foldBack (fun idx acc -> DelayedApp(ExprAtomicFlag.Atomic, idx, mWholeExpr) :: acc) indexArgs delayed // atomic, otherwise no ar.[1] <- xyz Some (PropagateThenTcDelayed cenv overallTy env tpenv mWholeExpr f' resultTy ExprAtomicFlag.Atomic delayed ) - else None match attemptArrayString with | Some res -> res @@ -6391,9 +6467,9 @@ and TcIndexerThen cenv env overallTy mWholeExpr mDot tpenv wholeExpr e1 indexArg DelayedDotLookup([ident(nm, mWholeExpr)], mWholeExpr) :: DelayedApp(ExprAtomicFlag.Atomic, MakeIndexParam None, mWholeExpr) :: delayed // e1.[e2] <- e3 | SynExpr.DotIndexedSet (_, _, e3, mOfLeftOfSet, _, _) -> - match indexArgs with - | [SynIndexerArg.One(_)] -> DelayedDotLookup([ident(nm, mOfLeftOfSet)], mOfLeftOfSet) :: DelayedApp(ExprAtomicFlag.Atomic, MakeIndexParam None, mOfLeftOfSet) :: MakeDelayedSet(e3, mWholeExpr) :: delayed - | _ -> DelayedDotLookup([ident("SetSlice", mOfLeftOfSet)], mOfLeftOfSet) :: DelayedApp(ExprAtomicFlag.Atomic, MakeIndexParam (Some e3), mWholeExpr) :: delayed + match isIndex with + | true -> DelayedDotLookup([ident(nm, mOfLeftOfSet)], mOfLeftOfSet) :: DelayedApp(ExprAtomicFlag.Atomic, MakeIndexParam None, mOfLeftOfSet) :: MakeDelayedSet(e3, mWholeExpr) :: delayed + | false -> DelayedDotLookup([ident("SetSlice", mOfLeftOfSet)], mOfLeftOfSet) :: DelayedApp(ExprAtomicFlag.Atomic, MakeIndexParam (Some e3), mWholeExpr) :: delayed | _ -> error(InternalError("unreachable", mWholeExpr)) PropagateThenTcDelayed cenv overallTy env tpenv mDot (MakeApplicableExprNoFlex cenv e1') e1ty ExprAtomicFlag.Atomic delayed @@ -6408,7 +6484,7 @@ and TcIndexerThen cenv env overallTy mWholeExpr mDot tpenv wholeExpr e1 indexArg /// For 'inherit Type(args)', mWholeExprOrObjTy is the whole expression /// For an implicit inherit from System.Object or a default constructor, mWholeExprOrObjTy is the type name of the type being defined and TcNewExpr cenv env tpenv objTy mObjTyOpt superInit arg mWholeExprOrObjTy = - let ad = env.eAccessRights + let ad = env.AccessRights // Handle the case 'new 'a()' if (isTyparTy cenv.g objTy) then if superInit then error(Error(FSComp.SR.tcCannotInheritFromVariableType(), mWholeExprOrObjTy)) @@ -6427,7 +6503,7 @@ and TcNewExpr cenv env tpenv objTy mObjTyOpt superInit arg mWholeExprOrObjTy = /// Check an 'inheritedTys declaration in an implicit or explicit class and TcCtorCall isNaked cenv env tpenv overallTy objTy mObjTyOpt item superInit args mWholeCall delayed afterTcOverloadResolutionOpt = - let ad = env.eAccessRights + let ad = env.AccessRights let isSuperInit = (if superInit then CtorValUsedAsSuperInit else NormalValUse) let mItem = match mObjTyOpt with Some m -> m | None -> mWholeCall @@ -6456,7 +6532,7 @@ and TcCtorCall isNaked cenv env tpenv overallTy objTy mObjTyOpt item superInit a | Item.DelegateCtor ty, [arg] -> // Re-record the name resolution since we now know it's a constructor call match mObjTyOpt with - | Some mObjTy -> CallNameResolutionSink cenv.tcSink (mObjTy, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Use, env.DisplayEnv, env.eAccessRights) + | Some mObjTy -> CallNameResolutionSink cenv.tcSink (mObjTy, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Use, env.DisplayEnv, env.AccessRights) | None -> () TcNewDelegateThen cenv objTy env tpenv mItem mWholeCall ty arg ExprAtomicFlag.NonAtomic delayed @@ -6693,7 +6769,7 @@ and TcObjectExprBinding cenv (env: TcEnv) implty tpenv (absSlotInfo, bind) = | _ -> declaredTypars // Canonicalize constraints prior to generalization - GeneralizationHelpers.CanonicalizePartialInferenceProblem (cenv, denv, m) declaredTypars + ConstraintSolver.CanonicalizePartialInferenceProblem cenv.css denv m declaredTypars let freeInEnv = GeneralizationHelpers.ComputeUngeneralizableTypars env @@ -6787,7 +6863,7 @@ and TcObjectExpr cenv overallTy env tpenv (synObjTy, argopt, binds, extraImpls, match tryDestAppTy cenv.g objTy with | ValueNone -> error(Error(FSComp.SR.tcNewMustBeUsedWithNamedType(), mNewExpr)) | ValueSome tcref -> - let isRecordTy = isRecdTy cenv.g objTy + let isRecordTy = tcref.IsRecordTycon if not isRecordTy && not (isInterfaceTy cenv.g objTy) && isSealedTy cenv.g objTy then errorR(Error(FSComp.SR.tcCannotCreateExtensionOfSealedType(), mNewExpr)) CheckSuperType cenv objTy synObjTy.Range @@ -6797,7 +6873,7 @@ and TcObjectExpr cenv overallTy env tpenv (synObjTy, argopt, binds, extraImpls, // Object expression members can access protected members of the implemented type let env = EnterFamilyRegion tcref env - let ad = env.eAccessRights + let ad = env.AccessRights if // record construction ? isRecordTy || @@ -6839,7 +6915,7 @@ and TcObjectExpr cenv overallTy env tpenv (synObjTy, argopt, binds, extraImpls, | Item.CtorGroup(methodName, minfos), Some (arg, baseIdOpt) -> let meths = minfos |> List.map (fun minfo -> minfo, None) let afterResolution = ForNewConstructors cenv.tcSink env synObjTy.Range methodName minfos - let ad = env.eAccessRights + let ad = env.AccessRights let expr, tpenv = TcMethodApplicationThen cenv env objTy None tpenv None [] mWholeExpr mObjTy methodName ad PossiblyMutates false meths afterResolution CtorValUsedAsSuperInit [arg] ExprAtomicFlag.Atomic [] // The 'base' value is always bound @@ -7045,7 +7121,7 @@ and TcRecdExpr cenv overallTy env tpenv (inherits, optOrigExpr, flds, mWholeExpr | [] -> [] | _ -> let tcref, _, fldsList = BuildFieldMap cenv env hasOrigExpr overallTy flds mWholeExpr - let _, _, _, gtyp = infoOfTyconRef mWholeExpr tcref + let _, _, _, gtyp = FreshenTyconRef2 mWholeExpr tcref UnifyTypes cenv env mWholeExpr overallTy gtyp [ for n, v in fldsList do @@ -7176,12 +7252,12 @@ and TcAnonRecdExpr cenv overallTy env tpenv (isStruct, optOrigSynExpr, unsortedF for (i, id) in Array.indexed anonInfo.SortedIds do yield id, Choice2Of2 (mkAnonRecdFieldGetViaExprAddr (anonInfo, oldveaddr, tinst, i, mOrigExpr)) | ValueNone -> - if isRecdTy cenv.g origExprTy then - let tcref, tinst = destAppTy cenv.g origExprTy + match tryAppTy cenv.g origExprTy with + | ValueSome(tcref, tinst) when tcref.IsRecordTycon -> let fspecs = tcref.Deref.TrueInstanceFieldsAsList for fspec in fspecs do yield fspec.Id, Choice2Of2 (mkRecdFieldGetViaExprAddr (oldveaddr, tcref.MakeNestedRecdFieldRef fspec, tinst, mOrigExpr)) - else + | _ -> error (Error (FSComp.SR.tcCopyAndUpdateNeedsRecordType(), mOrigExpr)) |] |> Array.distinctBy (fst >> textOfId) @@ -7636,7 +7712,7 @@ and TcComputationExpression cenv env overallTy mWhole (interpExpr: Expr) builder match e with | SynExpr.App (_, _, SynExpr.App (_, _, e1, SingleIdent opName, _), e2, _) when opName.idText = customOperationJoinConditionWord nm -> let item = Item.CustomOperation (opName.idText, (fun () -> None), None) - CallNameResolutionSink cenv.tcSink (opName.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Use, env.DisplayEnv, env.eAccessRights) + CallNameResolutionSink cenv.tcSink (opName.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Use, env.DisplayEnv, env.AccessRights) Some (e1, e2) | _ -> None @@ -8959,8 +9035,8 @@ and TcItemThen cenv overallTy env tpenv (item, mItem, rest, afterResolution) del mkConstrApp, [ucaseAppTy], [ for (s, m) in apinfo.ActiveTagsWithRanges -> mkSynId m s ] | _ -> let ucref = mkChoiceCaseRef g mItem aparity n - let _, _, tinst, _ = infoOfTyconRef mItem ucref.TyconRef - let ucinfo = UnionCaseInfo(tinst, ucref) + let _, _, tinst, _ = FreshenTyconRef2 mItem ucref.TyconRef + let ucinfo = UnionCaseInfo (tinst, ucref) ApplyUnionCaseOrExnTypes mItem cenv env ucaseAppTy (Item.UnionCase(ucinfo, false)) | _ -> ApplyUnionCaseOrExnTypes mItem cenv env ucaseAppTy item @@ -9214,6 +9290,7 @@ and TcItemThen cenv overallTy env tpenv (item, mItem, rest, afterResolution) del | Item.FakeInterfaceCtor _ -> error(Error(FSComp.SR.tcInvalidUseOfInterfaceType(), mItem)) + | Item.ImplicitOp(id, sln) -> let isPrefix = PrettyNaming.IsPrefixOperator id.idText @@ -9354,8 +9431,8 @@ and TcItemThen cenv overallTy env tpenv (item, mItem, rest, afterResolution) del | DelayedSet(e2, mStmt) :: otherDelayed -> if not (isNil otherDelayed) then error(Error(FSComp.SR.tcInvalidAssignment(), mStmt)) UnifyTypes cenv env mStmt overallTy g.unit_ty - vref.Deref.SetHasBeenReferenced() - CheckValAccessible mItem env.eAccessRights vref + vref.Deref.SetHasBeenReferenced() + CheckValAccessible mItem env.AccessRights vref CheckValAttributes g vref mItem |> CommitOperationResult let vty = vref.Type let vty2 = @@ -9548,9 +9625,9 @@ and TcLookupThen cenv overallTy env tpenv mObjExpr objExpr objExprTy longId dela // Canonicalize inference problem prior to '.' lookup on variable types if isTyparTy cenv.g objExprTy then - GeneralizationHelpers.CanonicalizePartialInferenceProblem (cenv, env.DisplayEnv, mExprAndLongId) (freeInTypeLeftToRight cenv.g false objExprTy) + ConstraintSolver.CanonicalizePartialInferenceProblem cenv.css env.DisplayEnv mExprAndLongId (freeInTypeLeftToRight cenv.g false objExprTy) - let item, mItem, rest, afterResolution = ResolveExprDotLongIdentAndComputeRange cenv.tcSink cenv.nameResolver mExprAndLongId ad env.eNameResEnv objExprTy longId findFlag false + let item, mItem, rest, afterResolution = ResolveExprDotLongIdentAndComputeRange cenv.tcSink cenv.nameResolver mExprAndLongId ad env.NameEnv objExprTy longId findFlag false let mExprAndItem = unionRanges mObjExpr mItem let delayed = delayRest rest mExprAndItem delayed @@ -9998,9 +10075,8 @@ and TcMethodApplication if meth.UsesParamArrayConversion then yield makeOneCalledMeth (minfo, pinfoOpt, false) ] - let uniquelyResolved = - let csenv = MakeConstraintSolverEnv ContextInfo.NoContext cenv.css mMethExpr denv - UnifyUniqueOverloading csenv callerArgCounts methodName ad preArgumentTypeCheckingCalledMethGroup returnTy + let uniquelyResolved = + UnifyUniqueOverloading denv cenv.css mMethExpr callerArgCounts methodName ad preArgumentTypeCheckingCalledMethGroup returnTy uniquelyResolved, preArgumentTypeCheckingCalledMethGroup @@ -10092,17 +10168,15 @@ and TcMethodApplication CalledMeth(cenv.infoReader, Some(env.NameEnv), isCheckingAttributeCall, FreshenMethInfo, mMethExpr, ad, minfo, minst, callerTyArgs, pinfoOpt, callerObjArgTys, callerArgs, usesParamArrayConversion, true, objTyOpt)) let callerArgCounts = (unnamedCurriedCallerArgs.Length, namedCurriedCallerArgs.Length) - let csenv = MakeConstraintSolverEnv ContextInfo.NoContext cenv.css mMethExpr denv // Commit unassociated constraints prior to member overload resolution where there is ambiguity // about the possible target of the call. if not uniquelyResolved then - GeneralizationHelpers.CanonicalizePartialInferenceProblem (cenv, denv, mItem) + ConstraintSolver.CanonicalizePartialInferenceProblem cenv.css denv mItem (//freeInTypeLeftToRight cenv.g false returnTy @ (unnamedCurriedCallerArgs |> List.collectSquared (fun callerArg -> freeInTypeLeftToRight cenv.g false callerArg.Type))) - let result, errors = - ResolveOverloading csenv NoTrace methodName 0 None callerArgCounts ad postArgumentTypeCheckingCalledMethGroup true (Some returnTy) + let result, errors = ResolveOverloadingForCall denv cenv.css mMethExpr methodName 0 None callerArgCounts ad postArgumentTypeCheckingCalledMethGroup true (Some returnTy) match afterResolution, result with | AfterResolution.DoNothing, _ -> () @@ -10524,8 +10598,8 @@ and TcMatchPattern cenv inputTy env tpenv (pat: SynPat, optWhenExpr) = patf' (TcPatPhase2Input (values, true)), optWhenExpr', NameMap.range vspecMap, envinner, tpenv and TcMatchClauses cenv inputTy resultTy env tpenv clauses = - let first = ref true - let isFirst() = if !first then first := false; true else false + let mutable first = true + let isFirst() = if first then first <- false; true else false List.mapFold (fun clause -> TcMatchClause cenv inputTy resultTy env (isFirst()) clause) tpenv clauses and TcMatchClause cenv inputTy resultTy env isFirst tpenv (Clause(pat, optWhenExpr, e, patm, spTgt)) = @@ -10755,7 +10829,7 @@ and TcNormalizedBinding declKind (cenv: cenv) env tpenv overallTy safeThisValOpt apinfo.ActiveTagsWithRanges |> List.iteri (fun i (_tag, tagRange) -> let item = Item.ActivePatternResult(apinfo, cenv.g.unit_ty, i, tagRange) - CallNameResolutionSink cenv.tcSink (tagRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Binding, env.DisplayEnv, env.eAccessRights)) + CallNameResolutionSink cenv.tcSink (tagRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.Binding, env.DisplayEnv, env.AccessRights)) { envinner with eNameResEnv = AddActivePatternResultTagsToNameEnv apinfo envinner.eNameResEnv ty m } | None -> @@ -11060,7 +11134,7 @@ and TcLetBinding cenv isUse env containerInfo declKind tpenv (synBinds, synBinds // Canonicalize constraints prior to generalization let denv = env.DisplayEnv - GeneralizationHelpers.CanonicalizePartialInferenceProblem (cenv, denv, synBindsRange) + ConstraintSolver.CanonicalizePartialInferenceProblem cenv.css denv synBindsRange (checkedBinds |> List.collect (fun tbinfo -> let (CheckedBindingInfo(_, _, _, _, flex, _, _, _, tauTy, _, _, _, _, _)) = tbinfo let (ExplicitTyparInfo(_, declaredTypars, _)) = flex @@ -11663,7 +11737,6 @@ and AnalyzeAndMakeAndPublishRecursiveValue overridesOK isGeneratedEventVal cenv let item = Item.Value (mkLocalValRef vspec) CallNameResolutionSink cenv.tcSink (tid.idRange, env.NameEnv, item, item, emptyTyparInst, ItemOccurence.RelatedText, env.DisplayEnv, env.eAccessRights) | _ -> () - let mangledId = ident(vspec.LogicalName, vspec.Range) // Reconstitute the binding with the unique name @@ -11936,7 +12009,7 @@ and TcIncrementalLetRecGeneralization cenv scopem else let supportForBindings = newGeneralizableBindings |> List.collect (TcLetrecComputeSupportForBinding cenv) - GeneralizationHelpers.CanonicalizePartialInferenceProblem (cenv, denv, scopem) supportForBindings + ConstraintSolver.CanonicalizePartialInferenceProblem cenv.css denv scopem supportForBindings let generalizedTyparsL = newGeneralizableBindings |> List.map (TcLetrecComputeAndGeneralizeGenericTyparsForBinding cenv denv freeInEnv) @@ -14030,7 +14103,7 @@ module MutRecBindingChecking = let tycons = decls |> List.choose (function MutRecShape.Tycon d -> getTyconOpt d | _ -> None) let mspecs = decls |> List.choose (function MutRecShape.Module (MutRecDefnsPhase2DataForModule (_, mspec), _) -> Some mspec | _ -> None) let moduleAbbrevs = decls |> List.choose (function MutRecShape.ModuleAbbrev (MutRecDataForModuleAbbrev (id, mp, m)) -> Some (id, mp, m) | _ -> None) - let opens = decls |> List.choose (function MutRecShape.Open (MutRecDataForOpen (mp, m)) -> Some (mp, m) | _ -> None) + let opens = decls |> List.choose (function MutRecShape.Open (MutRecDataForOpen (mp, m, moduleRange)) -> Some (mp, m, moduleRange) | _ -> None) let lets = decls |> List.collect (function MutRecShape.Lets binds -> getVals binds | _ -> []) let exns = tycons |> List.filter (fun (tycon: Tycon) -> tycon.IsExceptionDecl) @@ -14056,7 +14129,7 @@ module MutRecBindingChecking = // Add the modules being defined let envForDecls = (envForDecls, mspecs) ||> List.fold ((if report then AddLocalSubModuleAndReport cenv.tcSink scopem else AddLocalSubModule) cenv.g cenv.amap m) // Process the 'open' declarations - let envForDecls = (envForDecls, opens) ||> List.fold (fun env (mp, m) -> TcOpenDecl cenv.tcSink cenv.g cenv.amap m scopem env mp) + let envForDecls = (envForDecls, opens) ||> List.fold (fun env (mp, m, moduleRange) -> TcOpenDecl cenv.tcSink cenv.g cenv.amap m moduleRange env mp) // Add the type definitions being defined let envForDecls = (if report then AddLocalTyconsAndReport cenv.tcSink scopem else AddLocalTycons) cenv.g cenv.amap m tycons envForDecls // Add the exception definitions being defined @@ -14456,7 +14529,7 @@ module TyconConstraintInference = // Repeatedly eliminate structural type definitions whose structural component types no longer support // comparison. On the way record type variables which are support the comparison relation. let rec loop (assumedTycons: Set) (assumedTypars: Set) = - let assumedTyparsAcc = ref assumedTypars + let mutable assumedTyparsAcc = assumedTypars // Checks if a field type supports the 'comparison' constraint based on the assumptions about the type constructors // and type parameters. @@ -14472,7 +14545,7 @@ module TyconConstraintInference = // Within structural types, type parameters can be optimistically assumed to have comparison // We record the ones for which we have made this assumption. elif tycon.TyparsNoRange |> List.exists (fun tp2 -> typarRefEq tp tp2) then - assumedTyparsAcc := (!assumedTyparsAcc).Add(tp.Stamp) + assumedTyparsAcc <- assumedTyparsAcc.Add(tp.Stamp) true else @@ -14552,10 +14625,10 @@ module TyconConstraintInference = res) - if newSet = assumedTycons && assumedTypars = !assumedTyparsAcc then - newSet, !assumedTyparsAcc + if newSet = assumedTycons && assumedTypars = assumedTyparsAcc then + newSet, assumedTyparsAcc else - loop newSet !assumedTyparsAcc + loop newSet assumedTyparsAcc let uneliminatedTycons, assumedTyparsActual = loop initialAssumedTycons initialAssumedTypars @@ -14587,7 +14660,7 @@ module TyconConstraintInference = // Repeatedly eliminate structural type definitions whose structural component types no longer support // equality. On the way add type variables which are support the equality relation let rec loop (assumedTycons: Set) (assumedTypars: Set) = - let assumedTyparsAcc = ref assumedTypars + let mutable assumedTyparsAcc = assumedTypars // Checks if a field type supports the 'equality' constraint based on the assumptions about the type constructors // and type parameters. @@ -14601,7 +14674,7 @@ module TyconConstraintInference = // Within structural types, type parameters can be optimistically assumed to have equality // We record the ones for which we have made this assumption. elif tycon.Typars(tycon.Range) |> List.exists (fun tp2 -> typarRefEq tp tp2) then - assumedTyparsAcc := (!assumedTyparsAcc).Add(tp.Stamp) + assumedTyparsAcc <- assumedTyparsAcc.Add(tp.Stamp) true else false @@ -14681,10 +14754,10 @@ module TyconConstraintInference = res) - if newSet = assumedTycons && assumedTypars = !assumedTyparsAcc then - newSet, !assumedTyparsAcc + if newSet = assumedTycons && assumedTypars = assumedTyparsAcc then + newSet, assumedTyparsAcc else - loop newSet !assumedTyparsAcc + loop newSet assumedTyparsAcc let uneliminatedTycons, assumedTyparsActual = loop initialAssumedTycons initialAssumedTypars @@ -16931,13 +17004,13 @@ and TcSignatureElementsNonMutRec cenv parent typeNames endm env defs = return! Eventually.fold (TcSignatureElementNonMutRec cenv parent typeNames endm) env defs } -and TcSignatureElementsMutRec cenv parent typeNames endm mutRecNSInfo envInitial (defs: SynModuleSigDecl list) = +and TcSignatureElementsMutRec cenv parent typeNames m mutRecNSInfo envInitial (defs: SynModuleSigDecl list) = eventually { - let m = match defs with [] -> endm | _ -> defs |> List.map (fun d -> d.Range) |> List.reduce unionRanges - let scopem = (defs, endm) ||> List.foldBack (fun h m -> unionRanges h.Range m) + let m = match defs with [] -> m | _ -> defs |> List.map (fun d -> d.Range) |> List.reduce unionRanges + let scopem = (defs, m) ||> List.foldBack (fun h m -> unionRanges h.Range m) let mutRecDefns = - let rec loop isNamespace defs: MutRecSigsInitialData = + let rec loop isNamespace moduleRange defs: MutRecSigsInitialData = ((true, true), defs) ||> List.collectFold (fun (openOk, moduleAbbrevOk) def -> match def with | SynModuleSigDecl.Types (typeSpecs, _) -> @@ -16946,7 +17019,7 @@ and TcSignatureElementsMutRec cenv parent typeNames endm mutRecNSInfo envInitial | SynModuleSigDecl.Open (lid, m) -> if not openOk then errorR(Error(FSComp.SR.tcOpenFirstInMutRec(), m)) - let decls = [ MutRecShape.Open (MutRecDataForOpen(lid, m)) ] + let decls = [ MutRecShape.Open (MutRecDataForOpen(lid, m, moduleRange)) ] decls, (openOk, moduleAbbrevOk) | SynModuleSigDecl.Exception (SynExceptionSig(exnRepr, members, _), _) -> @@ -16960,9 +17033,9 @@ and TcSignatureElementsMutRec cenv parent typeNames endm mutRecNSInfo envInitial let decls = [ MutRecShape.Lets vspec ] decls, (false, false) - | SynModuleSigDecl.NestedModule(compInfo, isRec, synDefs, _) -> + | SynModuleSigDecl.NestedModule(compInfo, isRec, synDefs, moduleRange) -> if isRec then warning(Error(FSComp.SR.tcRecImplied(), compInfo.Range)) - let mutRecDefs = loop false synDefs + let mutRecDefs = loop false moduleRange synDefs let decls = [MutRecShape.Module (compInfo, mutRecDefs)] decls, (false, false) @@ -16978,7 +17051,7 @@ and TcSignatureElementsMutRec cenv parent typeNames endm mutRecNSInfo envInitial error(Error(FSComp.SR.tcUnsupportedMutRecDecl(), def.Range))) |> fst - loop (match parent with ParentNone -> true | Parent _ -> false) defs + loop (match parent with ParentNone -> true | Parent _ -> false) m defs return TcDeclarations.TcMutRecSignatureDecls cenv envInitial parent typeNames emptyUnscopedTyparEnv m scopem mutRecNSInfo mutRecDefns } @@ -17157,7 +17230,7 @@ let rec TcModuleOrNamespaceElementNonMutRec (cenv: cenv) parent typeNames scopem | SynModuleDecl.NamespaceFragment(SynModuleOrNamespace(longId, isRec, kind, defs, xml, attribs, vis, m)) -> - if !progress then dprintn ("Typecheck implementation " + textOfLid longId) + if progress then dprintn ("Typecheck implementation " + textOfLid longId) let endm = m.EndRange do for id in longId do @@ -17244,14 +17317,14 @@ and TcModuleOrNamespaceElementsNonMutRec cenv parent typeNames endm (defsSoFar, } /// The mutually recursive case for a sequence of declarations (and nested modules) -and TcModuleOrNamespaceElementsMutRec cenv parent typeNames endm envInitial mutRecNSInfo (defs: SynModuleDecl list) = +and TcModuleOrNamespaceElementsMutRec cenv parent typeNames m envInitial mutRecNSInfo (defs: SynModuleDecl list) = eventually { - let m = match defs with [] -> endm | _ -> defs |> List.map (fun d -> d.Range) |> List.reduce unionRanges - let scopem = (defs, endm) ||> List.foldBack (fun h m -> unionRanges h.Range m) + let m = match defs with [] -> m | _ -> defs |> List.map (fun d -> d.Range) |> List.reduce unionRanges + let scopem = (defs, m) ||> List.foldBack (fun h m -> unionRanges h.Range m) let (mutRecDefns, (_, _, Attributes synAttrs)) = - let rec loop isNamespace attrs defs: (MutRecDefnsInitialData * _) = + let rec loop isNamespace moduleRange attrs defs: (MutRecDefnsInitialData * _) = ((true, true, attrs), defs) ||> List.collectFold (fun (openOk, moduleAbbrevOk, attrs) def -> match ElimModuleDoBinding def with @@ -17268,15 +17341,15 @@ and TcModuleOrNamespaceElementsMutRec cenv parent typeNames endm envInitial mutR else List.map (List.singleton >> MutRecShape.Lets) binds binds, (false, false, attrs) - | SynModuleDecl.NestedModule(compInfo, isRec, synDefs, _isContinuingModule, _) -> + | SynModuleDecl.NestedModule(compInfo, isRec, synDefs, _isContinuingModule, moduleRange) -> if isRec then warning(Error(FSComp.SR.tcRecImplied(), compInfo.Range)) - let mutRecDefs, (_, _, attrs) = loop false attrs synDefs + let mutRecDefs, (_, _, attrs) = loop false moduleRange attrs synDefs let decls = [MutRecShape.Module (compInfo, mutRecDefs)] decls, (false, false, attrs) | SynModuleDecl.Open (LongIdentWithDots(lid, _), m) -> if not openOk then errorR(Error(FSComp.SR.tcOpenFirstInMutRec(), m)) - let decls = [ MutRecShape.Open (MutRecDataForOpen(lid, m)) ] + let decls = [ MutRecShape.Open (MutRecDataForOpen(lid, m, moduleRange)) ] decls, (openOk, moduleAbbrevOk, attrs) | SynModuleDecl.Exception (SynExceptionDefn(repr, members, _), _m) -> @@ -17300,7 +17373,7 @@ and TcModuleOrNamespaceElementsMutRec cenv parent typeNames endm envInitial mutR | (SynModuleDecl.NamespaceFragment _ as d) -> error(Error(FSComp.SR.tcUnsupportedMutRecDecl(), d.Range))) - loop (match parent with ParentNone -> true | Parent _ -> false) [] defs + loop (match parent with ParentNone -> true | Parent _ -> false) m [] defs let tpenv = emptyUnscopedTyparEnv let mutRecDefnsChecked, envAfter = TcDeclarations.TcMutRecDefinitions cenv envInitial parent typeNames tpenv m scopem mutRecNSInfo mutRecDefns @@ -17441,27 +17514,15 @@ let ApplyDefaults cenv g denvAtEnd m mexpr extraAttribs = try let unsolved = FSharp.Compiler.FindUnsolved.UnsolvedTyparsOfModuleDef g cenv.amap denvAtEnd (mexpr, extraAttribs) - GeneralizationHelpers.CanonicalizePartialInferenceProblem (cenv, denvAtEnd, m) unsolved + ConstraintSolver.CanonicalizePartialInferenceProblem cenv.css denvAtEnd m unsolved - let applyDefaults priority = - unsolved |> List.iter (fun tp -> + // The priority order comes from the order of declaration of the defaults in FSharp.Core. + for priority = 10 downto 0 do + unsolved |> List.iter (fun tp -> if not tp.IsSolved then // Apply the first default. If we're defaulting one type variable to another then // the defaults will be propagated to the new type variable. - tp.Constraints |> List.iter (fun tpc -> - match tpc with - | TyparConstraint.DefaultsTo(priority2, ty2, m) when priority2 = priority -> - let ty1 = mkTyparTy tp - if not tp.IsSolved && not (typeEquiv cenv.g ty1 ty2) then - let csenv = MakeConstraintSolverEnv ContextInfo.NoContext cenv.css m denvAtEnd - TryD (fun () -> ConstraintSolver.SolveTyparEqualsType csenv 0 m NoTrace ty1 ty2) - (fun e -> solveTypAsError cenv denvAtEnd m ty1 - ErrorD(ErrorFromApplyingDefault(g, denvAtEnd, tp, ty2, e, m))) - |> RaiseOperationResult - | _ -> ())) - - for priority = 10 downto 0 do - applyDefaults priority + ConstraintSolver.ApplyTyparDefaultAtPriority denvAtEnd cenv.css priority tp) // OK, now apply defaults for any unsolved HeadTypeStaticReq unsolved |> List.iter (fun tp -> diff --git a/src/fsharp/TypeRelations.fs b/src/fsharp/TypeRelations.fs index dd32a6ee00..9878880972 100755 --- a/src/fsharp/TypeRelations.fs +++ b/src/fsharp/TypeRelations.fs @@ -133,7 +133,7 @@ let ChooseTyparSolutionAndRange (g: TcGlobals) amap (tp:Typar) = match tpc with | TyparConstraint.CoercesTo(x, m) -> join m x, m - | TyparConstraint.MayResolveMember(TTrait(_, _, _, _, _, _), m) -> + | TyparConstraint.MayResolveMember(_traitInfo, m) -> maxSoFar, m | TyparConstraint.SimpleChoice(_, m) -> errorR(Error(FSComp.SR.typrelCannotResolveAmbiguityInPrintf(), m)) diff --git a/src/fsharp/UnicodeLexing.fs b/src/fsharp/UnicodeLexing.fs index c776a1f1f7..70a253da1b 100755 --- a/src/fsharp/UnicodeLexing.fs +++ b/src/fsharp/UnicodeLexing.fs @@ -22,50 +22,15 @@ let FunctionAsLexbuf (supportsFeature: Features.LanguageFeature -> bool, bufferF let SourceTextAsLexbuf (supportsFeature: Features.LanguageFeature -> bool, sourceText) = LexBuffer.FromSourceText(supportsFeature, sourceText) -// The choice of 60 retries times 50 ms is not arbitrary. The NTFS FILETIME structure -// uses 2 second resolution for LastWriteTime. We retry long enough to surpass this threshold -// plus 1 second. Once past the threshold the incremental builder will be able to retry asynchronously based -// on plain old timestamp checking. -// -// The sleep time of 50ms is chosen so that we can respond to the user more quickly for Intellisense operations. -// -// This is not run on the UI thread for VS but it is on a thread that must be stopped before Intellisense -// can return any result except for pending. -let retryDelayMilliseconds = 50 -let numRetries = 60 - -/// Standard utility to create a Unicode LexBuffer -/// -/// One small annoyance is that LexBuffers and not IDisposable. This means -/// we can't just return the LexBuffer object, since the file it wraps wouldn't -/// get closed when we're finished with the LexBuffer. Hence we return the stream, -/// the reader and the LexBuffer. The caller should dispose the first two when done. -let UnicodeFileAsLexbuf (supportsFeature: Features.LanguageFeature -> bool, filename, codePage: int option, retryLocked: bool): Lexbuf = - // Retry multiple times since other processes may be writing to this file. - let rec getSource retryNumber = - try - // Use the .NET functionality to auto-detect the unicode encoding - use stream = FileSystem.FileStreamReadShim(filename) - use reader = - match codePage with - | None -> new StreamReader(stream,true) - | Some n -> new StreamReader(stream,System.Text.Encoding.GetEncoding(n)) - reader.ReadToEnd() - with - // We can get here if the file is locked--like when VS is saving a file--we don't have direct - // access to the HRESULT to see that this is EONOACCESS. - | :? System.IO.IOException as err when retryLocked && err.GetType() = typeof -> - // This second check is to make sure the exception is exactly IOException and none of these for example: - // DirectoryNotFoundException - // EndOfStreamException - // FileNotFoundException - // FileLoadException - // PathTooLongException - if retryNumber < numRetries then - System.Threading.Thread.Sleep (retryDelayMilliseconds) - getSource (retryNumber + 1) - else - reraise() - let source = getSource 0 - let lexbuf = LexBuffer<_>.FromChars(supportsFeature, source.ToCharArray()) - lexbuf +let StreamReaderAsLexbuf (supportsFeature: Features.LanguageFeature -> bool, reader: StreamReader) = + let mutable isFinished = false + FunctionAsLexbuf (supportsFeature, fun (chars, start, length) -> + if isFinished then 0 + else + let nBytesRead = reader.Read(chars, start, length) + if nBytesRead = 0 then + isFinished <- true + 0 + else + nBytesRead + ) diff --git a/src/fsharp/UnicodeLexing.fsi b/src/fsharp/UnicodeLexing.fsi index 2478c7f857..a3f0fb8fb3 100755 --- a/src/fsharp/UnicodeLexing.fsi +++ b/src/fsharp/UnicodeLexing.fsi @@ -2,6 +2,7 @@ module internal FSharp.Compiler.UnicodeLexing +open System.IO open FSharp.Compiler.Features open FSharp.Compiler.Text open Microsoft.FSharp.Text @@ -10,5 +11,7 @@ open Internal.Utilities.Text.Lexing type Lexbuf = LexBuffer val internal StringAsLexbuf: (Features.LanguageFeature -> bool) * string -> Lexbuf val public FunctionAsLexbuf: (Features.LanguageFeature -> bool) * (char [] * int * int -> int) -> Lexbuf -val public UnicodeFileAsLexbuf: (Features.LanguageFeature -> bool) * string * int option * (*retryLocked*) bool -> Lexbuf val public SourceTextAsLexbuf: (Features.LanguageFeature -> bool) * ISourceText -> Lexbuf + +/// Will not dispose of the stream reader. +val public StreamReaderAsLexbuf: (Features.LanguageFeature -> bool) * StreamReader -> Lexbuf diff --git a/src/fsharp/ast.fs b/src/fsharp/ast.fs index f5a8382505..524f73965e 100644 --- a/src/fsharp/ast.fs +++ b/src/fsharp/ast.fs @@ -898,13 +898,13 @@ and [] SynIndexerArg = - | Two of SynExpr * SynExpr + | Two of SynExpr * fromEnd1: bool * SynExpr * fromEnd2: bool * range1: range * range2: range - | One of SynExpr + | One of SynExpr * fromEnd: bool * range - member x.Range = match x with Two (e1, e2) -> unionRanges e1.Range e2.Range | One e -> e.Range + member x.Range = match x with Two (e1, _, e2, _, _, _) -> unionRanges e1.Range e2.Range | One (e, _, _) -> e.Range - member x.Exprs = match x with Two (e1, e2) -> [e1;e2] | One e -> [e] + member x.Exprs = match x with Two (e1, _, e2, _, _, _) -> [e1;e2] | One (e, _, _) -> [e] and [] @@ -1944,19 +1944,12 @@ let mkSynApp3 f x1 x2 x3 m = mkSynApp1 (mkSynApp2 f x1 x2 m) x3 m let mkSynApp4 f x1 x2 x3 x4 m = mkSynApp1 (mkSynApp3 f x1 x2 x3 m) x4 m let mkSynApp5 f x1 x2 x3 x4 x5 m = mkSynApp1 (mkSynApp4 f x1 x2 x3 x4 m) x5 m let mkSynDotParenSet m a b c = mkSynTrifix m parenSet a b c -let mkSynDotBrackGet m mDot a b = SynExpr.DotIndexedGet (a, [SynIndexerArg.One b], mDot, m) +let mkSynDotBrackGet m mDot a b fromEnd = SynExpr.DotIndexedGet (a, [SynIndexerArg.One (b, fromEnd, m)], mDot, m) let mkSynQMarkSet m a b c = mkSynTrifix m qmarkSet a b c let mkSynDotBrackSliceGet m mDot arr sliceArg = SynExpr.DotIndexedGet (arr, [sliceArg], mDot, m) let mkSynDotBrackSeqSliceGet m mDot arr (argsList: list) = - let notSliced=[ for arg in argsList do - match arg with - | SynIndexerArg.One x -> yield x - | _ -> () ] - if notSliced.Length = argsList.Length then - SynExpr.DotIndexedGet (arr, [SynIndexerArg.One (SynExpr.Tuple (false, notSliced, [], unionRanges (List.head notSliced).Range (List.last notSliced).Range))], mDot, m) - else - SynExpr.DotIndexedGet (arr, argsList, mDot, m) + SynExpr.DotIndexedGet (arr, argsList, mDot, m) let mkSynDotParenGet lhsm dotm a b = match b with @@ -2229,7 +2222,7 @@ let noInferredTypars = SynValTyparDecls([], false, []) type LexerIfdefStackEntry = IfDefIf | IfDefElse type LexerIfdefStackEntries = (LexerIfdefStackEntry * range) list -type LexerIfdefStack = LexerIfdefStackEntries ref +type LexerIfdefStack = LexerIfdefStackEntries /// Specifies how the 'endline' function in the lexer should continue after /// it reaches end of line or eof. The options are to continue with 'token' function diff --git a/src/fsharp/fsc.fs b/src/fsharp/fsc.fs index 2d3f5fd5fc..a12fd76dd3 100755 --- a/src/fsharp/fsc.fs +++ b/src/fsharp/fsc.fs @@ -102,7 +102,7 @@ let ConsoleErrorLoggerUpToMaxErrors (tcConfigB: TcConfigBuilder, exiter : Exiter member __.HandleIssue(tcConfigB, err, isError) = DoWithErrorColor isError (fun () -> let diag = OutputDiagnostic (tcConfigB.implicitIncludeDir, tcConfigB.showFullPaths, tcConfigB.flatErrors, tcConfigB.errorStyle, isError) - writeViaBufferWithEnvironmentNewLines stderr diag err + writeViaBuffer stderr diag err stderr.WriteLine()) } :> ErrorLogger @@ -209,13 +209,13 @@ let AdjustForScriptCompile(ctok, tcConfigB: TcConfigBuilder, commandLineSourceFi commandLineSourceFiles |> List.map combineFilePath - let allSources = ref [] + let mutable allSources = [] let tcConfig = TcConfig.Create(tcConfigB, validate=false) let AddIfNotPresent(filename: string) = - if not(!allSources |> List.contains filename) then - allSources := filename :: !allSources + if not(allSources |> List.contains filename) then + allSources <- filename :: allSources let AppendClosureInformation filename = if IsScript filename then @@ -240,16 +240,16 @@ let AdjustForScriptCompile(ctok, tcConfigB: TcConfigBuilder, commandLineSourceFi // Find closure of .fsx files. commandLineSourceFiles |> List.iter AppendClosureInformation - List.rev !allSources + List.rev allSources let ProcessCommandLineFlags (tcConfigB: TcConfigBuilder, setProcessThreadLocals, lcidFromCodePage, argv) = - let inputFilesRef = ref ([] : string list) + let mutable inputFilesRef = [] let collect name = let lower = String.lowercase name if List.exists (Filename.checkSuffix lower) [".resx"] then error(Error(FSComp.SR.fscResxSourceFileDeprecated name, rangeStartup)) else - inputFilesRef := name :: !inputFilesRef + inputFilesRef <- name :: inputFilesRef let abbrevArgs = GetAbbrevFlagSet tcConfigB true // This is where flags are interpreted by the command line fsc.exe. @@ -268,7 +268,7 @@ let ProcessCommandLineFlags (tcConfigB: TcConfigBuilder, setProcessThreadLocals, if tcConfigB.pathMap <> PathMap.empty then error(Error(FSComp.SR.fscPathMapDebugRequiresPortablePdb(), rangeCmdArgs)) - let inputFiles = List.rev !inputFilesRef + let inputFiles = List.rev inputFilesRef // Check if we have a codepage from the console match tcConfigB.lcid with @@ -316,7 +316,7 @@ module InterfaceFileWriter = for (TImplFile (_, _, mexpr, _, _, _)) in declaredImpls do let denv = BuildInitialDisplayEnvForSigFileGeneration tcGlobals - writeViaBufferWithEnvironmentNewLines os (fun os s -> Printf.bprintf os "%s\n\n" s) + writeViaBuffer os (fun os s -> Printf.bprintf os "%s\n\n" s) (NicePrint.layoutInferredSigOfModuleExpr true denv infoReader AccessibleFromSomewhere range0 mexpr |> Layout.squashTo 80 |> Layout.showL) if tcConfig.printSignatureFile <> "" then os.Dispose() @@ -381,11 +381,11 @@ module XmlDocWriter = if not (Filename.hasSuffixCaseInsensitive "xml" xmlfile ) then error(Error(FSComp.SR.docfileNoXmlSuffix(), Range.rangeStartup)) (* the xmlDocSigOf* functions encode type into string to be used in "id" *) - let members = ref [] + let mutable members = [] let addMember id xmlDoc = if hasDoc xmlDoc then let doc = getDoc xmlDoc - members := (id, doc) :: !members + members <- (id, doc) :: members let doVal (v: Val) = addMember v.XmlDocSig v.XmlDoc let doUnionCase (uc: UnionCase) = addMember uc.XmlDocSig uc.XmlDoc let doField (rf: RecdField) = addMember rf.XmlDocSig rf.XmlDoc @@ -422,7 +422,7 @@ module XmlDocWriter = fprintfn os ("") fprintfn os ("%s") assemblyName fprintfn os ("") - !members |> List.iter (fun (id, doc) -> + members |> List.iter (fun (id, doc) -> fprintfn os "" id fprintfn os "%s" doc fprintfn os "") @@ -442,7 +442,9 @@ let EncodeInterfaceData(tcConfig: TcConfig, tcGlobals, exportRemapping, generate let useDataFiles = (tcConfig.useOptimizationDataFile || tcGlobals.compilingFslib) && not isIncrementalBuild if useDataFiles then let sigDataFileName = (Filename.chopExtension outfile)+".sigdata" - File.WriteAllBytes(sigDataFileName, resource.GetBytes()) + let bytes = resource.GetBytes() + use fileStream = File.Create(sigDataFileName, bytes.Length) + bytes.CopyTo fileStream let resources = [ resource ] let sigAttr = mkSignatureDataVersionAttr tcGlobals (IL.parseILVersion Internal.Utilities.FSharpEnvironment.FSharpBinaryMetadataFormatRevision) @@ -892,7 +894,7 @@ module MainModuleBuilder = [ ] let reflectedDefinitionResource = { Name=reflectedDefinitionResourceName - Location = ILResourceLocation.LocalOut reflectedDefinitionBytes + Location = ILResourceLocation.Local(ByteMemory.FromArray(reflectedDefinitionBytes).AsReadOnly()) Access= ILResourceAccess.Public CustomAttrsStored = storeILCustomAttrs emptyILCustomAttrs MetadataIndex = NoMetadataIdx } @@ -936,7 +938,7 @@ module MainModuleBuilder = let bytes = FileSystem.ReadAllBytesShim file name, bytes, pub yield { Name=name - Location=ILResourceLocation.LocalOut bytes + Location=ILResourceLocation.Local(ByteMemory.FromArray(bytes).AsReadOnly()) Access=pub CustomAttrsStored=storeILCustomAttrs emptyILCustomAttrs MetadataIndex = NoMetadataIdx } @@ -1281,7 +1283,7 @@ module StaticLinker = mutable visited: bool } // Find all IL modules that are to be statically linked given the static linking roots. - let FindDependentILModulesForStaticLinking (ctok, tcConfig: TcConfig, tcImports: TcImports, ilGlobals, ilxMainModule) = + let FindDependentILModulesForStaticLinking (ctok, tcConfig: TcConfig, tcImports: TcImports, ilGlobals: ILGlobals, ilxMainModule) = if not tcConfig.standalone && tcConfig.extraStaticLinkRoots.IsEmpty then [] else @@ -1297,10 +1299,10 @@ module StaticLinker = let assumedIndependentSet = set [ "mscorlib"; "System"; "System.Core"; "System.Xml"; "Microsoft.Build.Framework"; "Microsoft.Build.Utilities" ] begin - let remaining = ref (computeILRefs ilxMainModule).AssemblyReferences - while not (isNil !remaining) do - let ilAssemRef = List.head !remaining - remaining := List.tail !remaining + let mutable remaining = (computeILRefs ilGlobals ilxMainModule).AssemblyReferences + while not (isNil remaining) do + let ilAssemRef = List.head remaining + remaining <- List.tail remaining if assumedIndependentSet.Contains ilAssemRef.Name || (ilAssemRef.PublicKey = Some ecmaPublicKey) then depModuleTable.[ilAssemRef.Name] <- dummyEntry ilAssemRef.Name else @@ -1329,8 +1331,7 @@ module StaticLinker = None let opts : ILReaderOptions = - { ilGlobals = ilGlobals - metadataOnly = MetadataOnlyFlag.No // turn this off here as we need the actual IL code + { metadataOnly = MetadataOnlyFlag.No // turn this off here as we need the actual IL code reduceMemoryUsage = tcConfig.reduceMemoryUsage pdbDirPath = pdbDirPathOption tryGetMetadataSnapshot = (fun _ -> None) } @@ -1357,7 +1358,7 @@ module StaticLinker = visited = false } // Push the new work items - remaining := refs.AssemblyReferences @ !remaining + remaining <- refs.AssemblyReferences @ remaining | None -> warning(Error(FSComp.SR.fscAssumeStaticLinkContainsNoDependencies(ilAssemRef.Name), rangeStartup)) @@ -1383,20 +1384,23 @@ module StaticLinker = | None -> error(Error(FSComp.SR.fscAssemblyNotFoundInDependencySet n, rangeStartup)) ] - let remaining = ref roots - [ while not (isNil !remaining) do - let n = List.head !remaining - remaining := List.tail !remaining + let mutable remaining = roots + [ while not (isNil remaining) do + let n = List.head remaining + remaining <- List.tail remaining if not n.visited then if verbose then dprintn ("Module "+n.name+" depends on "+GetFSharpCoreLibraryName()) n.visited <- true - remaining := n.edges @ !remaining + remaining <- n.edges @ remaining yield (n.ccu, n.data) ] // Add all provider-generated assemblies into the static linking set let FindProviderGeneratedILModules (ctok, tcImports: TcImports, providerGeneratedAssemblies: (ImportedBinary * _) list) = [ for (importedBinary, provAssemStaticLinkInfo) in providerGeneratedAssemblies do - let ilAssemRef = importedBinary.ILScopeRef.AssemblyRef + let ilAssemRef = + match importedBinary.ILScopeRef with + | ILScopeRef.Assembly aref -> aref + | _ -> failwith "Invalid ILScopeRef, expected ILScopeRef.Assembly" if debugStaticLinking then printfn "adding provider-generated assembly '%s' into static linking set" ilAssemRef.Name match tcImports.TryFindDllInfo(ctok, Range.rangeStartup, ilAssemRef.Name, lookupOnly=false) with | Some dllInfo -> @@ -1587,7 +1591,7 @@ module StaticLinker = if (not isMscorlib && name = PrimaryAssembly.Mscorlib.Name) then error (Error(FSComp.SR.fscStaticLinkingNoProfileMismatches(), rangeCmdArgs)) scopeRef - let rewriteAssemblyRefsToMatchLibraries = NormalizeAssemblyRefs (ctok, tcImports) + let rewriteAssemblyRefsToMatchLibraries = NormalizeAssemblyRefs (ctok, ilGlobals, tcImports) Morphs.morphILTypeRefsInILModuleMemoized ilGlobals (Morphs.morphILScopeRefsInILTypeRef (validateTargetPlatform >> rewriteExternalRefsToLocalRefs >> rewriteAssemblyRefsToMatchLibraries)) ilxMainModule ilxMainModule) @@ -1975,7 +1979,7 @@ let main1OfAst (ctok, legacyReferenceResolver, reduceMemoryUsage, assemblyName, use unwindParsePhase = PushThreadBuildPhaseUntilUnwind (BuildPhase.TypeCheck) let tcEnv0 = GetInitialTcEnv (assemblyName, rangeStartup, tcConfig, tcImports, tcGlobals) - let tcState,topAttrs,typedAssembly,_tcEnvAtEnd = + let tcState, topAttrs, typedAssembly, _tcEnvAtEnd = TypeCheck(ctok, tcConfig, tcImports, tcGlobals, errorLogger, assemblyName, NiceNameGenerator(), tcEnv0, inputs,exiter) let generatedCcu = tcState.Ccu @@ -2021,7 +2025,7 @@ let main2a(Args (ctok, tcConfig, tcImports, frameworkTcImports: TcImports, tcGlo use unwindBuildPhase = PushThreadBuildPhaseUntilUnwind BuildPhase.Optimize let optEnv0 = GetInitialOptimizationEnv (tcImports, tcGlobals) - + let importMap = tcImports.GetImportMap() let metadataVersion = match tcConfig.metadataVersion with diff --git a/src/fsharp/fsi/fsi.fs b/src/fsharp/fsi/fsi.fs index c5e71384f1..9f6df3f16a 100644 --- a/src/fsharp/fsi/fsi.fs +++ b/src/fsharp/fsi/fsi.fs @@ -17,6 +17,12 @@ open System.IO open System.Text open System.Threading open System.Reflection +open System.Runtime.CompilerServices +open System.Runtime.InteropServices +#if NETSTANDARD +open System.Runtime.Loader +#endif + open FSharp.Compiler open FSharp.Compiler.AbstractIL open FSharp.Compiler.AbstractIL.Diagnostics @@ -30,6 +36,7 @@ open FSharp.Compiler.Ast open FSharp.Compiler.CompileOptions open FSharp.Compiler.CompileOps open FSharp.Compiler.ErrorLogger +open FSharp.Compiler.Features open FSharp.Compiler.InfoReader open FSharp.Compiler.NameResolution open FSharp.Compiler.IlxGen @@ -495,8 +502,8 @@ type internal FsiStdinSyphon(errorWriter: TextWriter) = let isError = true DoWithErrorColor isError (fun () -> errorWriter.WriteLine(); - writeViaBufferWithEnvironmentNewLines errorWriter (OutputDiagnosticContext " " syphon.GetLine) err; - writeViaBufferWithEnvironmentNewLines errorWriter (OutputDiagnostic (tcConfig.implicitIncludeDir,tcConfig.showFullPaths,tcConfig.flatErrors,tcConfig.errorStyle,isError)) err; + writeViaBuffer errorWriter (OutputDiagnosticContext " " syphon.GetLine) err; + writeViaBuffer errorWriter (OutputDiagnostic (tcConfig.implicitIncludeDir,tcConfig.showFullPaths,tcConfig.flatErrors,tcConfig.errorStyle,isError)) err; errorWriter.WriteLine() errorWriter.WriteLine() errorWriter.Flush())) @@ -541,8 +548,8 @@ type internal ErrorLoggerThatStopsOnFirstError(tcConfigB:TcConfigBuilder, fsiStd DoWithErrorColor isError (fun () -> if ReportWarning tcConfigB.errorSeverityOptions err then fsiConsoleOutput.Error.WriteLine() - writeViaBufferWithEnvironmentNewLines fsiConsoleOutput.Error (OutputDiagnosticContext " " fsiStdinSyphon.GetLine) err - writeViaBufferWithEnvironmentNewLines fsiConsoleOutput.Error (OutputDiagnostic (tcConfigB.implicitIncludeDir,tcConfigB.showFullPaths,tcConfigB.flatErrors,tcConfigB.errorStyle,isError)) err + writeViaBuffer fsiConsoleOutput.Error (OutputDiagnosticContext " " fsiStdinSyphon.GetLine) err + writeViaBuffer fsiConsoleOutput.Error (OutputDiagnostic (tcConfigB.implicitIncludeDir,tcConfigB.showFullPaths,tcConfigB.flatErrors,tcConfigB.errorStyle,isError)) err fsiConsoleOutput.Error.WriteLine() fsiConsoleOutput.Error.WriteLine() fsiConsoleOutput.Error.Flush()) @@ -788,7 +795,7 @@ let internal SetCurrentUICultureForThread (lcid : int option) = //---------------------------------------------------------------------------- let internal InstallErrorLoggingOnThisThread errorLogger = - if !progress then dprintfn "Installing logger on id=%d name=%s" Thread.CurrentThread.ManagedThreadId Thread.CurrentThread.Name + if progress then dprintfn "Installing logger on id=%d name=%s" Thread.CurrentThread.ManagedThreadId Thread.CurrentThread.Name SetThreadErrorLoggerNoUnwind(errorLogger) SetThreadBuildPhaseNoUnwind(BuildPhase.Interactive) @@ -798,7 +805,7 @@ let internal SetServerCodePages(fsiOptions: FsiCommandLineOptions) = match fsiOptions.FsiServerInputCodePage, fsiOptions.FsiServerOutputCodePage with | None,None -> () | inputCodePageOpt,outputCodePageOpt -> - let successful = ref false + let mutable successful = false Async.Start (async { do match inputCodePageOpt with | None -> () | Some(n:int) -> @@ -813,9 +820,9 @@ let internal SetServerCodePages(fsiOptions: FsiCommandLineOptions) = // Note this modifies the real honest-to-goodness settings for the current shell. // and the modifications hang around even after the process has exited. Console.OutputEncoding <- encoding - do successful := true }); + do successful <- true }); for pause in [10;50;100;1000;2000;10000] do - if not !successful then + if not successful then Thread.Sleep(pause); #if LOGGING_GUI if not !successful then @@ -871,17 +878,17 @@ type internal FsiConsoleInput(fsi: FsiEvaluationSessionHostConfig, fsiOptions: F match consoleOpt with | Some console when fsiOptions.EnableConsoleKeyProcessing && not fsiOptions.IsInteractiveServer -> if List.isEmpty fsiOptions.SourceFiles then - if !progress then fprintfn outWriter "first-line-reader-thread reading first line..."; + if progress then fprintfn outWriter "first-line-reader-thread reading first line..."; firstLine <- Some(console()); - if !progress then fprintfn outWriter "first-line-reader-thread got first line = %A..." firstLine; + if progress then fprintfn outWriter "first-line-reader-thread got first line = %A..." firstLine; consoleReaderStartupDone.Set() |> ignore - if !progress then fprintfn outWriter "first-line-reader-thread has set signal and exited." ; + if progress then fprintfn outWriter "first-line-reader-thread has set signal and exited." ; | _ -> ignore(inReader.Peek()); consoleReaderStartupDone.Set() |> ignore )).Start() else - if !progress then fprintfn outWriter "first-line-reader-thread not in use." + if progress then fprintfn outWriter "first-line-reader-thread not in use." consoleReaderStartupDone.Set() |> ignore /// Try to get the first line, if we snarfed it while probing. @@ -951,10 +958,17 @@ type internal FsiDynamicCompiler let assemblyReferenceAddedEvent = Control.Event() let valueBoundEvent = Control.Event<_>() + let dependencyAddingEvent = Control.Event() + let dependencyAddedEvent = Control.Event() + let dependencyFailedEvent = Control.Event() let mutable fragmentId = 0 let mutable prevIt : ValRef option = None + let mutable needsPackageResolution = false + + let mutable subscribedDependencyManagers = HashSet() + let generateDebugInfo = tcConfigB.debuginfo let valuePrinter = FsiValuePrinter(fsi, tcGlobals, generateDebugInfo, resolveAssemblyRef, outWriter) @@ -969,7 +983,7 @@ type internal FsiDynamicCompiler /// Add attributes let CreateModuleFragment (tcConfigB: TcConfigBuilder, assemblyName, codegenResults) = - if !progress then fprintfn fsiConsoleOutput.Out "Creating main module..."; + if progress then fprintfn fsiConsoleOutput.Out "Creating main module..."; let mainModule = mkILSimpleModule assemblyName (GetGeneratedILModuleName tcConfigB.target assemblyName) (tcConfigB.target = CompilerTarget.Dll) tcConfigB.subsystemVersion tcConfigB.useHighEntropyVA (mkILTypeDefs codegenResults.ilTypeDefs) None None 0x0 (mkILExportedTypes []) "" { mainModule with Manifest = @@ -1023,7 +1037,7 @@ type internal FsiDynamicCompiler errorLogger.AbortOnError(fsiConsoleOutput); ReportTime tcConfig "Assembly refs Normalised"; - let mainmod3 = Morphs.morphILScopeRefsInILModuleMemoized ilGlobals (NormalizeAssemblyRefs (ctok, tcImports)) ilxMainModule + let mainmod3 = Morphs.morphILScopeRefsInILModuleMemoized ilGlobals (NormalizeAssemblyRefs (ctok, ilGlobals, tcImports)) ilxMainModule errorLogger.AbortOnError(fsiConsoleOutput); #if DEBUG @@ -1107,6 +1121,7 @@ type internal FsiDynamicCompiler [mkSynId rangeStdin (FsiDynamicModulePrefix + sprintf "%04d" i)] member __.DynamicAssemblyName = assemblyName + member __.DynamicAssembly = (assemblyBuilder :> Assembly) member __.EvalParsedSourceFiles (ctok, errorLogger, istate, inputs) = @@ -1254,6 +1269,58 @@ type internal FsiDynamicCompiler resolutions, { istate with tcState = tcState.NextStateAfterIncrementalFragment(tcEnv); optEnv = optEnv } + + member __.EvalDependencyManagerTextFragment (packageManager:DependencyManagerIntegration.IDependencyManagerProvider,m,path: string) = + let path = DependencyManagerIntegration.removeDependencyManagerKey packageManager.Key path + + match tcConfigB.packageManagerLines |> Map.tryFind packageManager.Key with + | Some lines -> tcConfigB.packageManagerLines <- Map.add packageManager.Key (lines @ [false, path, m]) tcConfigB.packageManagerLines + | _ -> tcConfigB.packageManagerLines <- Map.add packageManager.Key [false, path, m] tcConfigB.packageManagerLines + + needsPackageResolution <- true + + member fsiDynamicCompiler.CommitDependencyManagerText (ctok, istate: FsiDynamicCompilerState, lexResourceManager, errorLogger) = + if not needsPackageResolution then istate else + needsPackageResolution <- false + + tcConfigB.packageManagerLines |> Seq.fold(fun istate kv -> + let inline snd3 (_, b, _) = b + let packageManagerKey, packageManagerLines = kv.Key, kv.Value + match packageManagerLines with + | [] -> istate + | (_, _, m)::_ -> + match DependencyManagerIntegration.tryFindDependencyManagerByKey tcConfigB.compilerToolPaths tcConfigB.outputDir m packageManagerKey with + | None -> + errorR(DependencyManagerIntegration.createPackageManagerUnknownError tcConfigB.compilerToolPaths tcConfigB.outputDir packageManagerKey m) + istate + | Some packageManager -> + let packageManagerTextLines = packageManagerLines |> List.map snd3 + let removeErrorLinesFromScript () = + tcConfigB.packageManagerLines <- tcConfigB.packageManagerLines |> Map.map(fun _ l -> l |> List.filter(fun (tried, _, _) -> tried)) + try + let newDependencyManager = subscribedDependencyManagers.Add(packageManagerKey) + if newDependencyManager then + Event.add dependencyAddingEvent.Trigger packageManager.DependencyAdding + Event.add dependencyAddedEvent.Trigger packageManager.DependencyAdded + Event.add dependencyFailedEvent.Trigger packageManager.DependencyFailed + match DependencyManagerIntegration.resolve packageManager tcConfigB.implicitIncludeDir "stdin.fsx" "stdin.fsx" m packageManagerTextLines with + | None -> istate // error already reported + | Some (succeeded, generatedScripts, additionalIncludeFolders) -> //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + if succeeded then + tcConfigB.packageManagerLines <- tcConfigB.packageManagerLines |> Map.map(fun _ l -> l |> List.map(fun (_, p, m) -> true, p, m)) + else + removeErrorLinesFromScript () + for folder in additionalIncludeFolders do + tcConfigB.AddIncludePath(m, folder, "") + if generatedScripts.Length > 0 then + fsiDynamicCompiler.EvalSourceFiles(ctok, istate, m, generatedScripts, lexResourceManager, errorLogger) + else istate + with _ -> + // An exception occured during processing, so remove the lines causing the error from the package manager list. + removeErrorLinesFromScript () + reraise () + ) istate + member fsiDynamicCompiler.ProcessMetaCommandsFromInputAsInteractiveCommands(ctok, istate, sourceFile, inp) = WithImplicitHome (tcConfigB, directoryName sourceFile) @@ -1261,6 +1328,7 @@ type internal FsiDynamicCompiler ProcessMetaCommandsFromInput ((fun st (m,nm) -> tcConfigB.TurnWarningOff(m,nm); st), (fun st (m,nm) -> snd (fsiDynamicCompiler.EvalRequireReference (ctok, st, m, nm))), + (fun st (packageManagerPrefix,m,nm) -> fsiDynamicCompiler.EvalDependencyManagerTextFragment (packageManagerPrefix,m,nm); st), (fun _ _ -> ())) (tcConfigB, inp, Path.GetDirectoryName sourceFile, istate)) @@ -1338,13 +1406,18 @@ type internal FsiDynamicCompiler member __.ValueBound = valueBoundEvent.Publish + member __.DependencyAdding = dependencyAddingEvent.Publish + + member __.DependencyAdded = dependencyAddedEvent.Publish + + member __.DependencyFailed = dependencyFailedEvent.Publish + //---------------------------------------------------------------------------- // ctrl-c handling //---------------------------------------------------------------------------- type ControlEventHandler = delegate of int -> bool - // One strange case: when a TAE happens a strange thing // occurs the next read from stdin always returns // 0 bytes, i.e. the channel will look as if it has been closed. So we check @@ -1413,7 +1486,7 @@ type internal FsiInterruptController(fsiOptions: FsiCommandLineOptions, fsiConso // Also sleep to give computations a bit of time to terminate Thread.Sleep(pauseMilliseconds) if (killThreadRequest = ThreadAbortRequest) then - if !progress then fsiConsoleOutput.uprintnfn "%s" (FSIstrings.SR.fsiAbortingMainThread()) + if progress then fsiConsoleOutput.uprintnfn "%s" (FSIstrings.SR.fsiAbortingMainThread()) killThreadRequest <- NoRequest threadToKill.Abort() ()),Name="ControlCAbortThread") @@ -1484,10 +1557,27 @@ type internal FsiInterruptController(fsiOptions: FsiCommandLineOptions, fsiConso // - The requesting assembly (that is, the assembly that is returned by the ResolveEventArgs.RequestingAssembly property) // was loaded without context. // +// On the coreclr we add an UnmanagedDll Resoution handler to ensure that native dll's can be searched for, +// the desktop version of the Clr does not support this mechanism. +// // For information about contexts, see the Assembly.LoadFrom(String) method overload. module internal MagicAssemblyResolution = - // FxCop identifies Assembly.LoadFrom. + +#if NETSTANDARD + // Cut down AssemblyLoadContext, for loading native libraries + type FsiNativeAssemblyLoadContext () = + inherit AssemblyLoadContext() + + member this.LoadNativeLibrary(path: string): IntPtr = + base.LoadUnmanagedDllFromPath(path) + + override _.Load(_path: AssemblyName): Assembly = + raise (NotImplementedException()) + + static member NativeLoadContext = new FsiNativeAssemblyLoadContext() +#endif + // See bug 5501 for details on decision to use UnsafeLoadFrom here. // Summary: // It is an explicit user trust decision to load an assembly with #r. Scripts are not run automatically (for example, by double-clicking in explorer). @@ -1498,13 +1588,13 @@ module internal MagicAssemblyResolution = let Install(tcConfigB, tcImports: TcImports, fsiDynamicCompiler: FsiDynamicCompiler, fsiConsoleOutput: FsiConsoleOutput) = - let ResolveAssembly (ctok, m, tcConfigB, tcImports: TcImports, fsiDynamicCompiler: FsiDynamicCompiler, fsiConsoleOutput: FsiConsoleOutput, fullAssemName:string) = + let ResolveAssembly (ctok, m, tcConfigB, tcImports: TcImports, fsiDynamicCompiler: FsiDynamicCompiler, fsiConsoleOutput: FsiConsoleOutput, fullAssemName: string) = try // Grab the name of the assembly let tcConfig = TcConfig.Create(tcConfigB,validate=false) let simpleAssemName = fullAssemName.Split([| ',' |]).[0] - if !progress then fsiConsoleOutput.uprintfn "ATTEMPT MAGIC LOAD ON ASSEMBLY, simpleAssemName = %s" simpleAssemName // "Attempting to load a dynamically required assembly in response to an AssemblyResolve event by using known static assembly references..." + if progress then fsiConsoleOutput.uprintfn "ATTEMPT MAGIC LOAD ON ASSEMBLY, simpleAssemName = %s" simpleAssemName // "Attempting to load a dynamically required assembly in response to an AssemblyResolve event by using known static assembly references..." // Special case: Mono Windows Forms attempts to load an assembly called something like "Windows.Forms.resources" // We can't resolve this, so don't try. @@ -1545,12 +1635,12 @@ module internal MagicAssemblyResolution = | OkResult (warns, [r]) -> OkResult (warns, Choice1Of2 r.resolvedPath) | _ -> - if !progress then fsiConsoleOutput.uprintfn "ATTEMPT LOAD, assemblyReferenceTextDll = %s" assemblyReferenceTextDll + if progress then fsiConsoleOutput.uprintfn "ATTEMPT LOAD, assemblyReferenceTextDll = %s" assemblyReferenceTextDll /// Take a look through the files quoted, perhaps with explicit paths let searchResult = (tcConfig.referencedDLLs |> List.tryPick (fun assemblyReference -> - if !progress then fsiConsoleOutput.uprintfn "ATTEMPT MAGIC LOAD ON FILE, referencedDLL = %s" assemblyReference.Text + if progress then fsiConsoleOutput.uprintfn "ATTEMPT MAGIC LOAD ON FILE, referencedDLL = %s" assemblyReference.Text if System.String.Compare(Filename.fileNameOfPath assemblyReference.Text, assemblyReferenceTextDll,StringComparison.OrdinalIgnoreCase) = 0 || System.String.Compare(Filename.fileNameOfPath assemblyReference.Text, assemblyReferenceTextExe,StringComparison.OrdinalIgnoreCase) = 0 then Some(tcImports.TryResolveAssemblyReference (ctok, assemblyReference, ResolveAssemblyReferenceMode.Speculative)) @@ -1589,18 +1679,127 @@ module internal MagicAssemblyResolution = stopProcessingRecovery e range0 null +#if NETSTANDARD + let probingFileNames (name: string) = + // coreclr native library probing algorithm: https://github.com/dotnet/coreclr/blob/9773db1e7b1acb3ec75c9cc0e36bd62dcbacd6d5/src/System.Private.CoreLib/shared/System/Runtime/Loader/LibraryNameVariation.Unix.cs + let isRooted = Path.IsPathRooted name + let useSuffix s = not (name.Contains(s + ".") || name.EndsWith(s)) // linux devs often append version # to libraries I.e mydll.so.5.3.2 + let usePrefix = name.IndexOf(Path.DirectorySeparatorChar) = -1 // If name has directory information no add no prefix + && name.IndexOf(Path.AltDirectorySeparatorChar) = -1 + && name.IndexOf(Path.PathSeparator) = -1 + && name.IndexOf(Path.VolumeSeparatorChar) = -1 + let prefix = [| "lib" |] + let suffix = [| + if RuntimeInformation.IsOSPlatform(OSPlatform.Windows) then + ".dll" + ".exe" + elif RuntimeInformation.IsOSPlatform(OSPlatform.OSX) then + ".dylib" + else + ".so" + |] + + [| + yield name // Bare name + if not (isRooted) then + for s in suffix do + if useSuffix s then // Suffix without prefix + yield (sprintf "%s%s" name s) + if usePrefix then + for p in prefix do // Suffix with prefix + yield (sprintf "%s%s%s" p name s) + elif usePrefix then + for p in prefix do // Prefix + yield (sprintf "%s%s" p name) + |] + + // Directories to start probing in + // Algorithm: + // Search for native libraries using: + // 1. Include directories + // 2. compilerToolPath directories + // 3. reference dll's + // 4. The implicit include directory + let probingRoots = + seq { + yield! tcConfigB.includes + yield! tcConfigB.compilerToolPaths + yield! (tcConfigB.referencedDLLs |> Seq.map(fun ref -> Path.GetDirectoryName(ref.Text))) + yield tcConfigB.implicitIncludeDir + } |>Seq.distinct + + // Computer valid dotnet-rids for this environment: + // https://docs.microsoft.com/en-us/dotnet/core/rid-catalog + // + // Where rid is: win, win-x64, win-x86, osx-x64, linux-x64 etc ... + let probingRids = + let processArchitecture = RuntimeInformation.ProcessArchitecture + let baseRid = + if RuntimeInformation.IsOSPlatform(OSPlatform.Windows) then "win" + elif RuntimeInformation.IsOSPlatform(OSPlatform.OSX) then "osx" + else "linux" + let platformRid = + match processArchitecture with + | Architecture.X64 -> baseRid + "-x64" + | Architecture.X86 -> baseRid + "-x86" + | Architecture.Arm64 -> baseRid + "-arm64" + | _ -> baseRid + "arm" + [| "any"; baseRid; platformRid |] + + let resolveUnmanagedDll (assembly : Assembly) (name : string) : IntPtr = + ignore assembly + + // Enumerate probing roots looking for a dll that matches the probing name in the probed locations + let probeForNativeLibrary root rid name = + // Look for name in root + probingFileNames name |> Array.tryPick(fun name -> + let path = Path.Combine(root, "runtimes", rid, "native", name) + if File.Exists(path) then + Some path + else + None) + + let probe = + probingRoots |> Seq.tryPick(fun root -> + probingFileNames name |> Seq.tryPick(fun name -> + let path = Path.Combine(root, name) + if File.Exists(path) then + Some path + else + probingRids |> Seq.tryPick(fun rid -> probeForNativeLibrary root rid name))) + + match probe with + | Some path -> FsiNativeAssemblyLoadContext.NativeLoadContext.LoadNativeLibrary(path) + | None -> IntPtr.Zero +#endif + let rangeStdin = rangeN Lexhelp.stdinMockFilename 0 - let handler = new ResolveEventHandler(fun _ args -> + let resolveAssembly = new ResolveEventHandler(fun _ args -> // Explanation: our understanding is that magic assembly resolution happens // during compilation. So we recover the CompilationThreadToken here. let ctok = AssumeCompilationThreadWithoutEvidence () ResolveAssembly (ctok, rangeStdin, tcConfigB, tcImports, fsiDynamicCompiler, fsiConsoleOutput, args.Name)) - AppDomain.CurrentDomain.add_AssemblyResolve(handler) + AppDomain.CurrentDomain.add_AssemblyResolve(resolveAssembly) + +#if NETSTANDARD + // netstandard 2.1 has this property, unfortunately we don't build with that yet + //public event Func ResolvingUnmanagedDll + let resolveUnmanagedHandler = Func (resolveUnmanagedDll) + let eventInfo = typeof.GetEvent("ResolvingUnmanagedDll") + if not (isNull eventInfo) then + eventInfo.AddEventHandler(AssemblyLoadContext.Default, resolveUnmanagedHandler) +#endif - { new System.IDisposable with - member x.Dispose() = AppDomain.CurrentDomain.remove_AssemblyResolve(handler) } + { new System.IDisposable with + member x.Dispose() = + AppDomain.CurrentDomain.remove_AssemblyResolve(resolveAssembly) +#if NETSTANDARD + if not (isNull eventInfo) then + eventInfo.RemoveEventHandler(AssemblyLoadContext.Default, resolveUnmanagedHandler) +#endif + } //---------------------------------------------------------------------------- // Reading stdin @@ -1628,7 +1827,7 @@ type internal FsiStdinLexerProvider inputOption |> Option.iter (fun t -> fsiStdinSyphon.Add (t + "\n")) match inputOption with | Some(null) | None -> - if !progress then fprintfn fsiConsoleOutput.Out "End of file from TextReader.ReadLine" + if progress then fprintfn fsiConsoleOutput.Out "End of file from TextReader.ReadLine" 0 | Some (input:string) -> let input = input + "\n" @@ -1655,7 +1854,7 @@ type internal FsiStdinLexerProvider Lexhelp.resetLexbufPos sourceFileName lexbuf let skip = true // don't report whitespace from lexer let defines = "INTERACTIVE"::tcConfigB.conditionalCompilationDefines - let lexargs = mkLexargs (sourceFileName,defines, interactiveInputLightSyntaxStatus, lexResourceManager, ref [], errorLogger, PathMap.empty) + let lexargs = mkLexargs (sourceFileName,defines, interactiveInputLightSyntaxStatus, lexResourceManager, [], errorLogger, PathMap.empty) let tokenizer = LexFilter.LexFilter(interactiveInputLightSyntaxStatus, tcConfigB.compilingFslib, Lexer.token lexargs skip, lexbuf) tokenizer @@ -1677,8 +1876,8 @@ type internal FsiStdinLexerProvider CreateLexerForLexBuffer (Lexhelp.stdinMockFilename, lexbuf, errorLogger) // Create a new lexer to read an "included" script file - member __.CreateIncludedScriptLexer (sourceFileName, errorLogger) = - let lexbuf = UnicodeLexing.UnicodeFileAsLexbuf(isFeatureSupported, sourceFileName, tcConfigB.inputCodePage, (*retryLocked*)false) + member __.CreateIncludedScriptLexer (sourceFileName, reader, errorLogger) = + let lexbuf = UnicodeLexing.StreamReaderAsLexbuf(isFeatureSupported, reader) CreateLexerForLexBuffer (sourceFileName, lexbuf, errorLogger) // Create a new lexer to read a string @@ -1710,6 +1909,8 @@ type internal FsiInteractionProcessor let referencedAssemblies = Dictionary() + let assemblyReferencedEvent = Control.Event() + let mutable currState = initialInteractiveState let event = Control.Event() let setCurrState s = currState <- s; event.Trigger() @@ -1756,15 +1957,15 @@ type internal FsiInteractionProcessor /// Parse one interaction. Called on the parser thread. let ParseInteraction (tokenizer:LexFilter.LexFilter) = - let lastToken = ref Parser.ELSE // Any token besides SEMICOLON_SEMICOLON will do for initial value + let mutable lastToken = Parser.ELSE // Any token besides SEMICOLON_SEMICOLON will do for initial value try - if !progress then fprintfn fsiConsoleOutput.Out "In ParseInteraction..." + if progress then fprintfn fsiConsoleOutput.Out "In ParseInteraction..." let input = Lexhelp.reusingLexbufForParsing tokenizer.LexBuffer (fun () -> let lexerWhichSavesLastToken lexbuf = let tok = tokenizer.Lexer lexbuf - lastToken := tok + lastToken <- tok tok Parser.interaction lexerWhichSavesLastToken tokenizer.LexBuffer) Some input @@ -1772,7 +1973,7 @@ type internal FsiInteractionProcessor // On error, consume tokens until to ;; or EOF. // Caveat: Unless the error parse ended on ;; - so check the lastToken returned by the lexer function. // Caveat: What if this was a look-ahead? That's fine! Since we need to skip to the ;; anyway. - if (match !lastToken with Parser.SEMICOLON_SEMICOLON -> false | _ -> true) then + if (match lastToken with Parser.SEMICOLON_SEMICOLON -> false | _ -> true) then let mutable tok = Parser.ELSE (* <-- any token <> SEMICOLON_SEMICOLON will do *) while (match tok with Parser.SEMICOLON_SEMICOLON -> false | _ -> true) && not tokenizer.LexBuffer.IsPastEndOfStream do @@ -1783,37 +1984,57 @@ type internal FsiInteractionProcessor /// Execute a single parsed interaction. Called on the GUI/execute/main thread. let ExecInteraction (ctok, tcConfig:TcConfig, istate, action:ParsedFsiInteraction, errorLogger: ErrorLogger) = - istate |> InteractiveCatch errorLogger (fun istate -> + istate |> InteractiveCatch errorLogger (fun istate -> match action with | IDefns ([ ],_) -> + let istate = fsiDynamicCompiler.CommitDependencyManagerText(ctok, istate, lexResourceManager, errorLogger) istate,Completed None + | IDefns ([ SynModuleDecl.DoExpr(_,expr,_)],_) -> + let istate = fsiDynamicCompiler.CommitDependencyManagerText(ctok, istate, lexResourceManager, errorLogger) fsiDynamicCompiler.EvalParsedExpression(ctok, errorLogger, istate, expr) + | IDefns (defs,_) -> + let istate = fsiDynamicCompiler.CommitDependencyManagerText(ctok, istate, lexResourceManager, errorLogger) fsiDynamicCompiler.EvalParsedDefinitions (ctok, errorLogger, istate, true, false, defs) | IHash (ParsedHashDirective("load",sourceFiles,m),_) -> + let istate = fsiDynamicCompiler.CommitDependencyManagerText(ctok, istate, lexResourceManager, errorLogger) fsiDynamicCompiler.EvalSourceFiles (ctok, istate, m, sourceFiles, lexResourceManager, errorLogger),Completed None - | IHash (ParsedHashDirective(("reference" | "r"),[path],m),_) -> - let resolutions,istate = fsiDynamicCompiler.EvalRequireReference(ctok, istate, m, path) - resolutions |> List.iter (fun ar -> - let format = - if tcConfig.shadowCopyReferences then - let resolvedPath = ar.resolvedPath.ToUpperInvariant() - let fileTime = File.GetLastWriteTimeUtc(resolvedPath) - match referencedAssemblies.TryGetValue resolvedPath with - | false, _ -> - referencedAssemblies.Add(resolvedPath, fileTime) - FSIstrings.SR.fsiDidAHashr(ar.resolvedPath) - | true, time when time <> fileTime -> - FSIstrings.SR.fsiDidAHashrWithStaleWarning(ar.resolvedPath) - | _ -> - FSIstrings.SR.fsiDidAHashr(ar.resolvedPath) - else - FSIstrings.SR.fsiDidAHashrWithLockWarning(ar.resolvedPath) - fsiConsoleOutput.uprintnfnn "%s" format) - istate,Completed None + | IHash (ParsedHashDirective(("reference" | "r"), [path], m), _) -> + match DependencyManagerIntegration.tryFindDependencyManagerInPath tcConfigB.compilerToolPaths tcConfigB.outputDir m (path:string) with + | DependencyManagerIntegration.ReferenceType.RegisteredDependencyManager packageManager -> + if tcConfig.langVersion.SupportsFeature(LanguageFeature.PackageManagement) then + fsiDynamicCompiler.EvalDependencyManagerTextFragment(packageManager, m, path) + istate,Completed None + else + errorR(Error(FSComp.SR.packageManagementRequiresVFive(), m)) + istate, Completed None + + | DependencyManagerIntegration.ReferenceType.UnknownType -> + // error already reported + istate,Completed None + + | DependencyManagerIntegration.ReferenceType.Library path -> + let resolutions,istate = fsiDynamicCompiler.EvalRequireReference(ctok, istate, m, path) + resolutions |> List.iter (fun ar -> + let format = + if tcConfig.shadowCopyReferences then + let resolvedPath = ar.resolvedPath.ToUpperInvariant() + let fileTime = File.GetLastWriteTimeUtc(resolvedPath) + match referencedAssemblies.TryGetValue resolvedPath with + | false, _ -> + referencedAssemblies.Add(resolvedPath, fileTime) + FSIstrings.SR.fsiDidAHashr(ar.resolvedPath) + | true, time when time <> fileTime -> + FSIstrings.SR.fsiDidAHashrWithStaleWarning(ar.resolvedPath) + | _ -> + FSIstrings.SR.fsiDidAHashr(ar.resolvedPath) + else + FSIstrings.SR.fsiDidAHashrWithLockWarning(ar.resolvedPath) + fsiConsoleOutput.uprintnfnn "%s" format) + istate,Completed None | IHash (ParsedHashDirective("I",[path],m),_) -> tcConfigB.AddIncludePath (m,path, tcConfig.implicitIncludeDir) @@ -1942,7 +2163,7 @@ type internal FsiInteractionProcessor let mainThreadProcessAction ctok action istate = try let tcConfig = TcConfig.Create(tcConfigB,validate=false) - if !progress then fprintfn fsiConsoleOutput.Out "In mainThreadProcessAction..."; + if progress then fprintfn fsiConsoleOutput.Out "In mainThreadProcessAction..."; fsiInterruptController.InterruptAllowed <- InterruptCanRaiseException; let res = action ctok tcConfig istate fsiInterruptController.ClearInterruptRequest() @@ -2010,19 +2231,19 @@ type internal FsiInteractionProcessor fsiConsolePrompt.Print(); istate |> InteractiveCatch errorLogger (fun istate -> - if !progress then fprintfn fsiConsoleOutput.Out "entering ParseInteraction..."; + if progress then fprintfn fsiConsoleOutput.Out "entering ParseInteraction..."; // Parse the interaction. When FSI.EXE is waiting for input from the console the // parser thread is blocked somewhere deep this call. let action = ParseInteraction tokenizer - if !progress then fprintfn fsiConsoleOutput.Out "returned from ParseInteraction...calling runCodeOnMainThread..."; + if progress then fprintfn fsiConsoleOutput.Out "returned from ParseInteraction...calling runCodeOnMainThread..."; // After we've unblocked and got something to run we switch // over to the run-thread (e.g. the GUI thread) let res = istate |> runCodeOnMainThread (fun ctok istate -> mainThreadProcessParsedInteractions ctok errorLogger (action, istate) cancellationToken) - if !progress then fprintfn fsiConsoleOutput.Out "Just called runCodeOnMainThread, res = %O..." res; + if progress then fprintfn fsiConsoleOutput.Out "Just called runCodeOnMainThread, res = %O..." res; res) member __.CurrentState = currState @@ -2037,7 +2258,8 @@ type internal FsiInteractionProcessor WithImplicitHome (tcConfigB, directoryName sourceFile) (fun () -> // An included script file may contain maybe several interaction blocks. // We repeatedly parse and process these, until an error occurs. - let tokenizer = fsiStdinLexerProvider.CreateIncludedScriptLexer (sourceFile, errorLogger) + use reader = File.OpenReaderAndRetry (sourceFile, tcConfigB.inputCodePage, (*retryLocked*)false) + let tokenizer = fsiStdinLexerProvider.CreateIncludedScriptLexer (sourceFile, reader, errorLogger) let rec run istate = let istate,cont = processor.ParseAndExecOneSetOfInteractionsFromLexbuf ((fun f istate -> f ctok istate), istate, tokenizer, errorLogger) match cont with Completed _ -> run istate | _ -> istate,cont @@ -2136,7 +2358,7 @@ type internal FsiInteractionProcessor // member processor.StartStdinReadAndProcessThread (errorLogger) = - if !progress then fprintfn fsiConsoleOutput.Out "creating stdinReaderThread"; + if progress then fprintfn fsiConsoleOutput.Out "creating stdinReaderThread"; let stdinReaderThread = new Thread(new ThreadStart(fun () -> @@ -2145,12 +2367,12 @@ type internal FsiInteractionProcessor try try let initialTokenizer = fsiStdinLexerProvider.CreateStdinLexer(errorLogger) - if !progress then fprintfn fsiConsoleOutput.Out "READER: stdin thread started..."; + if progress then fprintfn fsiConsoleOutput.Out "READER: stdin thread started..."; // Delay until we've peeked the input or read the entire first line fsiStdinLexerProvider.ConsoleInput.WaitForInitialConsoleInput() - if !progress then fprintfn fsiConsoleOutput.Out "READER: stdin thread got first line..."; + if progress then fprintfn fsiConsoleOutput.Out "READER: stdin thread got first line..."; let runCodeOnMainThread = runCodeOnEventLoop errorLogger @@ -2171,12 +2393,12 @@ type internal FsiInteractionProcessor loop initialTokenizer - if !progress then fprintfn fsiConsoleOutput.Out "- READER: Exiting stdinReaderThread"; + if progress then fprintfn fsiConsoleOutput.Out "- READER: Exiting stdinReaderThread"; with e -> stopProcessingRecovery e range0; finally - if !progress then fprintfn fsiConsoleOutput.Out "- READER: Exiting process because of failure/exit on stdinReaderThread"; + if progress then fprintfn fsiConsoleOutput.Out "- READER: Exiting process because of failure/exit on stdinReaderThread"; // REVIEW: On some flavors of Mono, calling exit may freeze the process if we're using the WinForms event handler // Basically, on Mono 2.6.3, the GUI thread may be left dangling on exit. At that point: // -- System.Environment.Exit will cause the process to stop responding @@ -2199,7 +2421,7 @@ type internal FsiInteractionProcessor ),Name="StdinReaderThread") - if !progress then fprintfn fsiConsoleOutput.Out "MAIN: starting stdin thread..." + if progress then fprintfn fsiConsoleOutput.Out "MAIN: starting stdin thread..." stdinReaderThread.Start() member __.CompletionsForPartialLID (istate, prefix:string) = @@ -2229,6 +2451,9 @@ type internal FsiInteractionProcessor let fsiInteractiveChecker = FsiInteractiveChecker(legacyReferenceResolver, checker, tcConfig, istate.tcGlobals, istate.tcImports, istate.tcState) fsiInteractiveChecker.ParseAndCheckInteraction(ctok, SourceText.ofString text) + member __.AssemblyReferenceAdded = assemblyReferencedEvent.Publish + + //---------------------------------------------------------------------------- // Server mode: //---------------------------------------------------------------------------- @@ -2255,11 +2480,11 @@ let internal SpawnInteractiveServer /// This gives us a last chance to catch an abort on the main execution thread. let internal DriveFsiEventLoop (fsi: FsiEvaluationSessionHostConfig, fsiConsoleOutput: FsiConsoleOutput) = let rec runLoop() = - if !progress then fprintfn fsiConsoleOutput.Out "GUI thread runLoop"; + if progress then fprintfn fsiConsoleOutput.Out "GUI thread runLoop"; let restart = try // BLOCKING POINT: The GUI Thread spends most (all) of its time this event loop - if !progress then fprintfn fsiConsoleOutput.Out "MAIN: entering event loop..."; + if progress then fprintfn fsiConsoleOutput.Out "MAIN: entering event loop..."; fsi.EventLoopRun() with | :? ThreadAbortException -> @@ -2273,7 +2498,7 @@ let internal DriveFsiEventLoop (fsi: FsiEvaluationSessionHostConfig, fsiConsoleO stopProcessingRecovery e range0; true // Try again, just case we can restart - if !progress then fprintfn fsiConsoleOutput.Out "MAIN: exited event loop..."; + if progress then fprintfn fsiConsoleOutput.Out "MAIN: exited event loop..."; if restart then runLoop() runLoop(); @@ -2322,7 +2547,9 @@ type FsiEvaluationSession (fsi: FsiEvaluationSessionHostConfig, argv:string[], i | None -> SimulatedMSBuildReferenceResolver.getResolver() | Some rr -> rr - let tcConfigB = + let includePathAddedEvent = Control.Event<_>() + + let tcConfigB = TcConfigBuilder.CreateNew(legacyReferenceResolver, defaultFSharpBinariesDir=defaultFSharpBinariesDir, reduceMemoryUsage=ReduceMemoryFlag.Yes, @@ -2330,7 +2557,8 @@ type FsiEvaluationSession (fsi: FsiEvaluationSessionHostConfig, argv:string[], i isInteractive=true, isInvalidationSupported=false, defaultCopyFSharpCore=CopyFSharpCoreFlag.No, - tryGetMetadataSnapshot=tryGetMetadataSnapshot) + tryGetMetadataSnapshot=tryGetMetadataSnapshot, + includePathAdded=includePathAddedEvent.Trigger) let tcConfigP = TcConfigProvider.BasedOnMutableBuilder(tcConfigB) do tcConfigB.resolutionEnvironment <- ResolutionEnvironment.CompilationAndEvaluation // See Bug 3608 @@ -2418,8 +2646,8 @@ type FsiEvaluationSession (fsi: FsiEvaluationSessionHostConfig, argv:string[], i /// The lock stops the type checker running at the same time as the server intellisense implementation. let tcLockObject = box 7 // any new object will do - - let resolveAssemblyRef (aref: ILAssemblyRef) = + + let resolveAssemblyRef (aref: ILAssemblyRef) = // Explanation: This callback is invoked during compilation to resolve assembly references // We don't yet propagate the ctok through these calls (though it looks plausible to do so). let ctok = AssumeCompilationThreadWithoutEvidence () @@ -2432,7 +2660,7 @@ type FsiEvaluationSession (fsi: FsiEvaluationSessionHostConfig, argv:string[], i | Some resolvedPath -> Some (Choice1Of2 resolvedPath) | None -> None - let fsiDynamicCompiler = FsiDynamicCompiler(fsi, timeReporter, tcConfigB, tcLockObject, outWriter, tcImports, tcGlobals, fsiOptions, fsiConsoleOutput, fsiCollectible, niceNameGen, resolveAssemblyRef) + let fsiDynamicCompiler = FsiDynamicCompiler(fsi, timeReporter, tcConfigB, tcLockObject, outWriter, tcImports, tcGlobals, fsiOptions, fsiConsoleOutput, fsiCollectible, niceNameGen, resolveAssemblyRef) let fsiInterruptController = FsiInterruptController(fsiOptions, fsiConsoleOutput) @@ -2634,11 +2862,28 @@ type FsiEvaluationSession (fsi: FsiEvaluationSessionHostConfig, argv:string[], i |> commitResultNonThrowing errorOptions scriptPath errorLogger |> function Choice1Of2 (_), errs -> Choice1Of2 (), errs | Choice2Of2 exn, errs -> Choice2Of2 exn, errs + [] /// Event fires every time an assembly reference is added to the execution environment, e.g., via `#r`. member __.AssemblyReferenceAdded = fsiDynamicCompiler.AssemblyReferenceAdded /// Event fires when a root-level value is bound to an identifier, e.g., via `let x = ...`. member __.ValueBound = fsiDynamicCompiler.ValueBound + + [] + /// Event fires every time a path is added to the include search list, e.g., via `#I`. + member __.IncludePathAdded = includePathAddedEvent.Publish + + [] + /// Event fires at the start of adding a dependency via the dependency manager. + member __.DependencyAdding = fsiDynamicCompiler.DependencyAdding + + [] + /// Event fires at the successful completion of adding a dependency via the dependency manager. + member __.DependencyAdded = fsiDynamicCompiler.DependencyAdded + + [] + /// Event fires at the failure to adding a dependency via the dependency manager. + member __.DependencyFailed = fsiDynamicCompiler.DependencyFailed /// Performs these steps: /// - Load the dummy interaction, if any @@ -2655,7 +2900,7 @@ type FsiEvaluationSession (fsi: FsiEvaluationSessionHostConfig, argv:string[], i [] member x.Run() = - progress := condition "FSHARP_INTERACTIVE_PROGRESS" + progress <- condition "FSHARP_INTERACTIVE_PROGRESS" // Explanation: When Run is called we do a bunch of processing. For fsi.exe // and fsiAnyCpu.exe there are no other active threads at this point, so we can assume this is the @@ -2673,7 +2918,7 @@ type FsiEvaluationSession (fsi: FsiEvaluationSessionHostConfig, argv:string[], i if fsiOptions.Interact then // page in the type check env fsiInteractionProcessor.LoadDummyInteraction(ctokStartup, errorLogger) - if !progress then fprintfn fsiConsoleOutput.Out "MAIN: InstallKillThread!"; + if progress then fprintfn fsiConsoleOutput.Out "MAIN: InstallKillThread!"; // Compute how long to pause before a ThreadAbort is actually executed. // A somewhat arbitrary choice. @@ -2681,7 +2926,7 @@ type FsiEvaluationSession (fsi: FsiEvaluationSessionHostConfig, argv:string[], i // Request that ThreadAbort interrupts be performed on this (current) thread fsiInterruptController.InstallKillThread(Thread.CurrentThread, pauseMilliseconds) - if !progress then fprintfn fsiConsoleOutput.Out "MAIN: got initial state, creating form"; + if progress then fprintfn fsiConsoleOutput.Out "MAIN: got initial state, creating form"; #if !FX_NO_APP_DOMAINS // Route background exceptions to the exception handlers @@ -2698,22 +2943,21 @@ type FsiEvaluationSession (fsi: FsiEvaluationSessionHostConfig, argv:string[], i DriveFsiEventLoop (fsi, fsiConsoleOutput ) else // not interact - if !progress then fprintfn fsiConsoleOutput.Out "Run: not interact, loading initial files..." + if progress then fprintfn fsiConsoleOutput.Out "Run: not interact, loading initial files..." fsiInteractionProcessor.LoadInitialFiles(ctokRun, errorLogger) - if !progress then fprintfn fsiConsoleOutput.Out "Run: done..." + if progress then fprintfn fsiConsoleOutput.Out "Run: done..." exit (min errorLogger.ErrorCount 1) // The Ctrl-C exception handler that we've passed to native code has // to be explicitly kept alive. GC.KeepAlive fsiInterruptController.EventHandlers - static member Create(fsiConfig, argv, inReader, outWriter, errorWriter, ?collectible, ?legacyReferenceResolver) = new FsiEvaluationSession(fsiConfig, argv, inReader, outWriter, errorWriter, defaultArg collectible false, legacyReferenceResolver) - + static member GetDefaultConfiguration(fsiObj:obj) = FsiEvaluationSession.GetDefaultConfiguration(fsiObj, true) - + static member GetDefaultConfiguration(fsiObj:obj, useFsiAuxLib: bool) = // We want to avoid modifying FSharp.Compiler.Interactive.Settings to avoid republishing that DLL. // So we access these via reflection @@ -2736,8 +2980,6 @@ type FsiEvaluationSession (fsi: FsiEvaluationSessionHostConfig, argv:string[], i member __.EventLoopScheduleRestart() = callInstanceMethod0 (getInstanceProperty fsiObj "EventLoop") [||] "ScheduleRestart" member __.UseFsiAuxLib = useFsiAuxLib member __.GetOptionalConsoleReadLine(_probe) = None } - - //------------------------------------------------------------------------------- // If no "fsi" object for the configuration is specified, make the default // configuration one which stores the settings in-process @@ -2747,7 +2989,7 @@ module Settings = abstract Run : unit -> bool abstract Invoke : (unit -> 'T) -> 'T abstract ScheduleRestart : unit -> unit - + // fsi.fs in FSHarp.Compiler.Service.dll avoids a hard dependency on FSharp.Compiler.Interactive.Settings.dll // by providing an optional reimplementation of the functionality @@ -2793,7 +3035,6 @@ module Settings = runSignal.Dispose() exitSignal.Dispose() doneSignal.Dispose() - [] diff --git a/src/fsharp/fsi/fsi.fsi b/src/fsharp/fsi/fsi.fsi index c576a33fbd..d9bf96f123 100644 --- a/src/fsharp/fsi/fsi.fsi +++ b/src/fsharp/fsi/fsi.fsi @@ -234,8 +234,25 @@ type FsiEvaluationSession = /// A host calls this to report an unhandled exception in a standard way, e.g. an exception on the GUI thread gets printed to stderr member ReportUnhandledException : exn: exn -> unit + [] /// Event fires every time an assembly reference is added to the execution environment, e.g., via `#r`. - member AssemblyReferenceAdded : IEvent + member AssemblyReferenceAdded: IEvent + + [] + /// Event fires every time a path is added to the include search list, e.g., via `#I`. + member IncludePathAdded: IEvent + + [] + /// Event fires at the start of adding a dependency via the dependency manager. + member DependencyAdding: IEvent + + [] + /// Event fires at the successful completion of adding a dependency via the dependency manager. + member DependencyAdded: IEvent + + [] + /// Event fires at the failure to adding a dependency via the dependency manager. + member DependencyFailed: IEvent /// Event fires when a root-level value is bound to an identifier, e.g., via `let x = ...`. member ValueBound : IEvent diff --git a/src/fsharp/import.fs b/src/fsharp/import.fs index 29943461bd..849d7fff70 100755 --- a/src/fsharp/import.fs +++ b/src/fsharp/import.fs @@ -56,32 +56,38 @@ type ImportMap(g: TcGlobals, assemblyLoader: AssemblyLoader) = member this.ILTypeRefToTyconRefCache = typeRefToTyconRefCache let CanImportILScopeRef (env: ImportMap) m scoref = - match scoref with - | ILScopeRef.Local -> true - | ILScopeRef.Module _ -> true - | ILScopeRef.Assembly assemblyRef -> + let isResolved assemblyRef = // Explanation: This represents an unchecked invariant in the hosted compiler: that any operations // which import types (and resolve assemblies from the tcImports tables) happen on the compilation thread. let ctok = AssumeCompilationThreadWithoutEvidence() - + match env.assemblyLoader.FindCcuFromAssemblyRef (ctok, m, assemblyRef) with - | UnresolvedCcu _ -> false + | UnresolvedCcu _ -> false | ResolvedCcu _ -> true + match scoref with + | ILScopeRef.Local + | ILScopeRef.Module _ -> true + | ILScopeRef.Assembly assemblyRef -> isResolved assemblyRef + | ILScopeRef.PrimaryAssembly -> isResolved env.g.ilg.primaryAssemblyRef /// Import a reference to a type definition, given the AbstractIL data for the type reference let ImportTypeRefData (env: ImportMap) m (scoref, path, typeName) = - - // Explanation: This represents an unchecked invariant in the hosted compiler: that any operations - // which import types (and resolve assemblies from the tcImports tables) happen on the compilation thread. - let ctok = AssumeCompilationThreadWithoutEvidence() - let ccu = + let findCcu assemblyRef = + // Explanation: This represents an unchecked invariant in the hosted compiler: that any operations + // which import types (and resolve assemblies from the tcImports tables) happen on the compilation thread. + let ctok = AssumeCompilationThreadWithoutEvidence() + + env.assemblyLoader.FindCcuFromAssemblyRef (ctok, m, assemblyRef) + + let ccu = match scoref with | ILScopeRef.Local -> error(InternalError("ImportILTypeRef: unexpected local scope", m)) | ILScopeRef.Module _ -> error(InternalError("ImportILTypeRef: reference found to a type in an auxiliary module", m)) - | ILScopeRef.Assembly assemblyRef -> env.assemblyLoader.FindCcuFromAssemblyRef (ctok, m, assemblyRef) // NOTE: only assemblyLoader callsite + | ILScopeRef.Assembly assemblyRef -> findCcu assemblyRef + | ILScopeRef.PrimaryAssembly -> findCcu env.g.ilg.primaryAssemblyRef // Do a dereference of a fake tcref for the type just to check it exists in the target assembly and to find // the corresponding Tycon. diff --git a/src/fsharp/infos.fs b/src/fsharp/infos.fs index 15608fc331..294005f90b 100755 --- a/src/fsharp/infos.fs +++ b/src/fsharp/infos.fs @@ -577,8 +577,7 @@ type ParamNameAndType = [] /// Full information about a parameter returned for use by the type checker and language service. type ParamData = - /// ParamData(isParamArray, isOut, optArgInfo, callerInfo, nameOpt, reflArgInfo, ttype) - ParamData of bool * bool * bool * OptionalArgInfo * CallerInfo * Ident option * ReflectedArgInfo * TType + ParamData of isParamArray: bool * isInArg: bool * isOut: bool * optArgInfo: OptionalArgInfo * callerInfo: CallerInfo * nameOpt: Ident option * reflArgInfo: ReflectedArgInfo * ttype: TType //------------------------------------------------------------------------- @@ -871,9 +870,7 @@ type ILMethInfo = // MethInfo -#if DEBUG [] -#endif /// Describes an F# use of a method [] type MethInfo = @@ -956,7 +953,6 @@ type MethInfo = /// over extension members. member x.ExtensionMemberPriority = defaultArg x.ExtensionMemberPriorityOption System.UInt64.MaxValue -#if DEBUG /// Get the method name in DebuggerDisplayForm member x.DebuggerDisplayName = match x with @@ -966,7 +962,6 @@ type MethInfo = | ProvidedMeth(_, mi, _, m) -> "ProvidedMeth: " + mi.PUntaint((fun mi -> mi.Name), m) #endif | DefaultStructCtor _ -> ".ctor" -#endif /// Get the method name in LogicalName form, i.e. the name as it would be stored in .NET metadata member x.LogicalName = @@ -1541,7 +1536,7 @@ type MethInfo = let formalRetTy = ImportReturnTypeFromMetadata amap m ilminfo.RawMetadata.Return.Type ilminfo.RawMetadata.Return.CustomAttrs ftinfo.ILScopeRef ftinfo.TypeInstOfRawMetadata formalMethTyparTys let formalParams = [ [ for p in ilminfo.RawMetadata.Parameters do - let paramType = ImportILTypeFromMetadata amap m ftinfo.ILScopeRef ftinfo.TypeInstOfRawMetadata formalMethTyparTys p.Type + let paramType = ImportILTypeFromMetadataWithAttributes amap m ftinfo.ILScopeRef ftinfo.TypeInstOfRawMetadata formalMethTyparTys p.Type p.CustomAttrs yield TSlotParam(p.Name, paramType, p.IsIn, p.IsOut, p.IsOptional, []) ] ] formalRetTy, formalParams #if !NO_EXTENSIONTYPING @@ -2248,6 +2243,8 @@ type PropInfo = | ProvidedProp(_, pi, _) -> ProvidedPropertyInfo.TaintedGetHashCode pi #endif + override x.ToString() = "property " + x.PropertyName + //------------------------------------------------------------------------- // ILEventInfo @@ -2495,6 +2492,7 @@ type EventInfo = #if !NO_EXTENSIONTYPING | ProvidedEvent (_, ei, _) -> ProvidedEventInfo.TaintedGetHashCode ei #endif + override x.ToString() = "event " + x.EventName //------------------------------------------------------------------------- // Helpers associated with getting and comparing method signatures diff --git a/src/fsharp/lex.fsl b/src/fsharp/lex.fsl index a3a0003f57..901a203b83 100755 --- a/src/fsharp/lex.fsl +++ b/src/fsharp/lex.fsl @@ -193,8 +193,8 @@ let floate = digit ((digit | separator)* digit)? ('.' (digit ((digit | separator let float = floatp | floate let bignum = integer ('I' | 'N' | 'Z' | 'Q' | 'R' | 'G') let ieee64 = float -let ieee32 = float ('f' | 'F') -let decimal = (float | integer) ('m' | 'M') +let ieee32 = (float | integer) ('f' | 'F') +let decimal = (float | integer) ('m' | 'M') let xieee32 = xinteger 'l' 'f' let xieee64 = xinteger 'L' 'F' let escape_char = ('\\' ( '\\' | "\"" | '\'' | 'a' | 'f' | 'v' | 'n' | 't' | 'b' | 'r')) @@ -335,8 +335,16 @@ rule token args skip = parse UNATIVEINT(uint64 (removeUnderscores (lexemeTrimRight lexbuf 2))) with _ -> fail args lexbuf (FSComp.SR.lexOutsideNativeUnsigned()) (UNATIVEINT(0UL)) } - | ieee32 - { IEEE32 (try float32(removeUnderscores (lexemeTrimRight lexbuf 1)) with _ -> fail args lexbuf (FSComp.SR.lexInvalidFloat()) 0.0f) } + | ieee32 + { let s = lexemeTrimRight lexbuf 1 + if lexbuf.SupportsFeature LanguageFeature.DotlessFloat32Literal || s.Contains "." then + try + IEEE32 (float32 (removeUnderscores s)) + with _ -> fail args lexbuf (FSComp.SR.lexInvalidFloat()) (IEEE32 0.0f) + else + fail args lexbuf (FSComp.SR.lexInvalidFloat()) (IEEE32 0.0f) + } + | ieee64 { IEEE64 (try float(lexeme lexbuf) with _ -> fail args lexbuf (FSComp.SR.lexInvalidFloat()) 0.0) } @@ -412,67 +420,67 @@ rule token args skip = parse | SingleChar(c) -> CHAR (char c) | _ -> fail args lexbuf (FSComp.SR.lexThisUnicodeOnlyInStringLiterals()) (CHAR (char 0)) } | "(*IF-FSHARP" - { if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } + { if not skip then (COMMENT (LexCont.Token args.ifdefStack)) else token args skip lexbuf } | "(*F#" - { if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } + { if not skip then (COMMENT (LexCont.Token args.ifdefStack)) else token args skip lexbuf } | "ENDIF-FSHARP*)" - { if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } + { if not skip then (COMMENT (LexCont.Token args.ifdefStack)) else token args skip lexbuf } | "F#*)" - { if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } + { if not skip then (COMMENT (LexCont.Token args.ifdefStack)) else token args skip lexbuf } | "(*)" { LPAREN_STAR_RPAREN } | "(*" { let m = lexbuf.LexemeRange - if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,1,m))) else comment (1,m,args) skip lexbuf } + if not skip then (COMMENT (LexCont.Comment(args.ifdefStack,1,m))) else comment (1,m,args) skip lexbuf } | "(*IF-CAML*)" | "(*IF-OCAML*)" { let m = lexbuf.LexemeRange - if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf } + if not skip then (COMMENT (LexCont.MLOnly(args.ifdefStack,m))) else mlOnly m args skip lexbuf } | '"' { let buf,fin,m = startString args lexbuf - if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string (buf,fin,m,args) skip lexbuf } + if not skip then (STRING_TEXT (LexCont.String(args.ifdefStack,m))) else string (buf,fin,m,args) skip lexbuf } | '"' '"' '"' { let buf,fin,m = startString args lexbuf - if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString (buf,fin,m,args) skip lexbuf } + if not skip then (STRING_TEXT (LexCont.TripleQuoteString(args.ifdefStack,m))) else tripleQuoteString (buf,fin,m,args) skip lexbuf } | '$' '"' - { fail args lexbuf (FSComp.SR.lexTokenReserved()) (WHITESPACE (LexCont.Token !args.ifdefStack)) } + { fail args lexbuf (FSComp.SR.lexTokenReserved()) (WHITESPACE (LexCont.Token args.ifdefStack)) } | '@' '"' { let buf,fin,m = startString args lexbuf - if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString (buf,fin,m,args) skip lexbuf } + if not skip then (STRING_TEXT (LexCont.VerbatimString(args.ifdefStack,m))) else verbatimString (buf,fin,m,args) skip lexbuf } | truewhite+ { if skip then token args skip lexbuf - else WHITESPACE (LexCont.Token !args.ifdefStack) } + else WHITESPACE (LexCont.Token args.ifdefStack) } | offwhite+ { if args.lightSyntaxStatus.Status then errorR(Error(FSComp.SR.lexTabsNotAllowed(),lexbuf.LexemeRange)) - if not skip then (WHITESPACE (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } + if not skip then (WHITESPACE (LexCont.Token args.ifdefStack)) else token args skip lexbuf } | "////" op_char* { // 4+ slash are 1-line comments, online 3 slash are XmlDoc let m = lexbuf.LexemeRange - if not skip then (LINE_COMMENT (LexCont.SingleLineComment(!args.ifdefStack,1,m))) else singleLineComment (None,1,m,args) skip lexbuf } + if not skip then (LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack,1,m))) else singleLineComment (None,1,m,args) skip lexbuf } | "///" op_char* { // Match exactly 3 slash, 4+ slash caught by preceding rule let m = lexbuf.LexemeRange let doc = lexemeTrimLeft lexbuf 3 let sb = (new StringBuilder(100)).Append(doc) - if not skip then (LINE_COMMENT (LexCont.SingleLineComment(!args.ifdefStack,1,m))) else singleLineComment (Some sb,1,m,args) skip lexbuf } + if not skip then (LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack,1,m))) else singleLineComment (Some sb,1,m,args) skip lexbuf } | "//" op_char* { // Need to read all operator symbols too, otherwise it might be parsed by a rule below let m = lexbuf.LexemeRange - if not skip then (LINE_COMMENT (LexCont.SingleLineComment(!args.ifdefStack,1,m))) else singleLineComment (None,1,m,args) skip lexbuf } + if not skip then (LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack,1,m))) else singleLineComment (None,1,m,args) skip lexbuf } | newline - { newline lexbuf; if not skip then (WHITESPACE (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } + { newline lexbuf; if not skip then (WHITESPACE (LexCont.Token args.ifdefStack)) else token args skip lexbuf } | '`' '`' ([^'`' '\n' '\r' '\t'] | '`' [^'`''\n' '\r' '\t']) + '`' '`' { Keywords.IdentifierToken args lexbuf (lexemeTrimBoth lexbuf 2 2) } @@ -524,7 +532,7 @@ rule token args skip = parse else // add a newline when we don't apply a directive since we consumed a newline getting here newline lexbuf - (HASH_LINE (LexCont.Token !args.ifdefStack)) } + (HASH_LINE (LexCont.Token args.ifdefStack)) } | "<@" { checkExprOp lexbuf; LQUOTE ("<@ @>", false) } | "<@@" { checkExprOp lexbuf; LQUOTE ("<@@ @@>", true) } @@ -543,6 +551,7 @@ rule token args skip = parse | "?" { QMARK } | "??" { QMARK_QMARK } | ".." { DOT_DOT } + | "..^" { DOT_DOT_HAT } | "." { DOT } | ":" { COLON } | "::" { COLON_COLON } @@ -589,7 +598,7 @@ rule token args skip = parse | "#!" op_char* { // Treat shebangs like regular comments, but they are only allowed at the start of a file let m = lexbuf.LexemeRange - let tok = shouldStartFile args lexbuf m (0,FSComp.SR.lexHashBangMustBeFirstInFile()) (LINE_COMMENT (LexCont.SingleLineComment(!args.ifdefStack,1,m))) + let tok = shouldStartFile args lexbuf m (0,FSComp.SR.lexHashBangMustBeFirstInFile()) (LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack,1,m))) if not skip then tok else singleLineComment (None,1,m,args) skip lexbuf } | "#light" anywhite* @@ -598,59 +607,59 @@ rule token args skip = parse warning(Error((0,"#light should only occur as the first non-comment text in an F# source file"),lexbuf.LexemeRange)) // TODO unreachable error above, I think? - brianmcn args.lightSyntaxStatus.Status <- true - if not skip then (HASH_LIGHT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } + if not skip then (HASH_LIGHT (LexCont.Token args.ifdefStack)) else token args skip lexbuf } | ("#indent" | "#light") anywhite+ "\"off\"" { args.lightSyntaxStatus.Status <- false mlCompatWarning (FSComp.SR.lexIndentOffForML()) lexbuf.LexemeRange - if not skip then (HASH_LIGHT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } + if not skip then (HASH_LIGHT (LexCont.Token args.ifdefStack)) else token args skip lexbuf } | anywhite* "#if" anywhite+ anystring { let m = lexbuf.LexemeRange let lookup id = List.contains id args.defines let lexed = lexeme lexbuf let isTrue = evalIfDefExpression lexbuf.StartPos lexbuf.SupportsFeature args lookup lexed - args.ifdefStack := (IfDefIf,m) :: !(args.ifdefStack) + args.ifdefStack <- (IfDefIf,m) :: args.ifdefStack // Get the token; make sure it starts at zero position & return let cont, f = - ( if isTrue then (LexCont.EndLine(LexerEndlineContinuation.Token(!args.ifdefStack)), endline (LexerEndlineContinuation.Token !args.ifdefStack) args skip) - else (LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,0,m)), endline (LexerEndlineContinuation.Skip(!args.ifdefStack,0,m)) args skip) ) + ( if isTrue then (LexCont.EndLine(LexerEndlineContinuation.Token(args.ifdefStack)), endline (LexerEndlineContinuation.Token args.ifdefStack) args skip) + else (LexCont.EndLine(LexerEndlineContinuation.Skip(args.ifdefStack,0,m)), endline (LexerEndlineContinuation.Skip(args.ifdefStack,0,m)) args skip) ) let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashIfMustBeFirst()) (HASH_IF(m,lexed,cont)) if not skip then tok else f lexbuf } | anywhite* "#else" anywhite* ("//" [^'\n''\r']*)? { let lexed = (lexeme lexbuf) - match !(args.ifdefStack) with + match args.ifdefStack with | [] -> LEX_FAILURE (FSComp.SR.lexHashElseNoMatchingIf()) | (IfDefElse,_) :: _rest -> LEX_FAILURE (FSComp.SR.lexHashEndifRequiredForElse()) | (IfDefIf,_) :: rest -> let m = lexbuf.LexemeRange - args.ifdefStack := (IfDefElse,m) :: rest - let tok = HASH_ELSE(m,lexed, LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,0,m))) + args.ifdefStack <- (IfDefElse,m) :: rest + let tok = HASH_ELSE(m,lexed, LexCont.EndLine(LexerEndlineContinuation.Skip(args.ifdefStack,0,m))) let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashElseMustBeFirst()) tok - if not skip then tok else endline (LexerEndlineContinuation.Skip(!args.ifdefStack,0,m)) args skip lexbuf } + if not skip then tok else endline (LexerEndlineContinuation.Skip(args.ifdefStack,0,m)) args skip lexbuf } | anywhite* "#endif" anywhite* ("//" [^'\n''\r']*)? { let lexed = (lexeme lexbuf) let m = lexbuf.LexemeRange - match !(args.ifdefStack) with + match args.ifdefStack with | []-> LEX_FAILURE (FSComp.SR.lexHashEndingNoMatchingIf()) | _ :: rest -> - args.ifdefStack := rest - let tok = HASH_ENDIF(m,lexed,LexCont.EndLine(LexerEndlineContinuation.Token(!args.ifdefStack))) + args.ifdefStack <- rest + let tok = HASH_ENDIF(m,lexed,LexCont.EndLine(LexerEndlineContinuation.Token(args.ifdefStack))) let tok = shouldStartLine args lexbuf m (FSComp.SR.lexHashEndifMustBeFirst()) tok - if not skip then tok else endline (LexerEndlineContinuation.Token(!args.ifdefStack)) args skip lexbuf } + if not skip then tok else endline (LexerEndlineContinuation.Token(args.ifdefStack)) args skip lexbuf } | "#if" - { let tok = fail args lexbuf (FSComp.SR.lexHashIfMustHaveIdent()) (WHITESPACE (LexCont.Token !args.ifdefStack)) + { let tok = fail args lexbuf (FSComp.SR.lexHashIfMustHaveIdent()) (WHITESPACE (LexCont.Token args.ifdefStack)) if not skip then tok else token args skip lexbuf } | surrogateChar surrogateChar | _ { unexpectedChar lexbuf } | eof - { EOF (LexCont.Token !args.ifdefStack) } + { EOF (LexCont.Token args.ifdefStack) } // Skips INACTIVE code until if finds #else / #endif matching with the #if or #else @@ -660,10 +669,10 @@ and ifdefSkip n m args skip = parse // If #if is the first thing on the line then increase depth, otherwise skip, because it is invalid (e.g. "(**) #if ...") if (m.StartColumn <> 0) then - if not skip then (INACTIVECODE (LexCont.IfDefSkip(!args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf + if not skip then (INACTIVECODE (LexCont.IfDefSkip(args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf else - let tok = INACTIVECODE(LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,n+1,m))) - if not skip then tok else endline (LexerEndlineContinuation.Skip(!args.ifdefStack,n+1,m)) args skip lexbuf } + let tok = INACTIVECODE(LexCont.EndLine(LexerEndlineContinuation.Skip(args.ifdefStack,n+1,m))) + if not skip then tok else endline (LexerEndlineContinuation.Skip(args.ifdefStack,n+1,m)) args skip lexbuf } | anywhite* "#else" anywhite* ("//" [^'\n''\r']*)? { let lexed = (lexeme lexbuf) @@ -671,17 +680,17 @@ and ifdefSkip n m args skip = parse // If #else is the first thing on the line then process it, otherwise ignore, because it is invalid (e.g. "(**) #else ...") if (m.StartColumn <> 0) then - if not skip then (INACTIVECODE (LexCont.IfDefSkip(!args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf + if not skip then (INACTIVECODE (LexCont.IfDefSkip(args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf elif n = 0 then - match !(args.ifdefStack) with + match args.ifdefStack with | []-> LEX_FAILURE (FSComp.SR.lexHashElseNoMatchingIf()) | (IfDefElse,_) :: _rest -> LEX_FAILURE (FSComp.SR.lexHashEndifRequiredForElse()) | (IfDefIf,_) :: rest -> let m = lexbuf.LexemeRange - args.ifdefStack := (IfDefElse,m) :: rest - if not skip then (HASH_ELSE(m,lexed,LexCont.EndLine(LexerEndlineContinuation.Token(!args.ifdefStack)))) else endline (LexerEndlineContinuation.Token(!args.ifdefStack)) args skip lexbuf + args.ifdefStack <- (IfDefElse,m) :: rest + if not skip then (HASH_ELSE(m,lexed,LexCont.EndLine(LexerEndlineContinuation.Token(args.ifdefStack)))) else endline (LexerEndlineContinuation.Token(args.ifdefStack)) args skip lexbuf else - if not skip then (INACTIVECODE(LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,n,m)))) else endline (LexerEndlineContinuation.Skip(!args.ifdefStack,n,m)) args skip lexbuf } + if not skip then (INACTIVECODE(LexCont.EndLine(LexerEndlineContinuation.Skip(args.ifdefStack,n,m)))) else endline (LexerEndlineContinuation.Skip(args.ifdefStack,n,m)) args skip lexbuf } | anywhite* "#endif" anywhite* ("//" [^'\n''\r']*)? { let lexed = lexeme lexbuf @@ -689,17 +698,17 @@ and ifdefSkip n m args skip = parse // If #endif is the first thing on the line then process it, otherwise ignore, because it is invalid (e.g. "(**) #endif ...") if (m.StartColumn <> 0) then - if not skip then (INACTIVECODE (LexCont.IfDefSkip(!args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf + if not skip then (INACTIVECODE (LexCont.IfDefSkip(args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf elif n = 0 then - match !(args.ifdefStack) with + match args.ifdefStack with | [] -> LEX_FAILURE (FSComp.SR.lexHashEndingNoMatchingIf()) | _ :: rest -> - args.ifdefStack := rest - if not skip then (HASH_ENDIF(m,lexed,LexCont.EndLine(LexerEndlineContinuation.Token(!args.ifdefStack)))) else endline (LexerEndlineContinuation.Token(!args.ifdefStack)) args skip lexbuf + args.ifdefStack <- rest + if not skip then (HASH_ENDIF(m,lexed,LexCont.EndLine(LexerEndlineContinuation.Token(args.ifdefStack)))) else endline (LexerEndlineContinuation.Token(args.ifdefStack)) args skip lexbuf else - let tok = INACTIVECODE(LexCont.EndLine(LexerEndlineContinuation.Skip(!args.ifdefStack,n-1,m))) + let tok = INACTIVECODE(LexCont.EndLine(LexerEndlineContinuation.Skip(args.ifdefStack,n-1,m))) let tok = shouldStartLine args lexbuf m (FSComp.SR.lexWrongNestedHashEndif()) tok - if not skip then tok else endline (LexerEndlineContinuation.Skip(!args.ifdefStack,(n-1),m)) args skip lexbuf } + if not skip then tok else endline (LexerEndlineContinuation.Skip(args.ifdefStack,(n-1),m)) args skip lexbuf } | newline { newline lexbuf; ifdefSkip n m args skip lexbuf } @@ -709,9 +718,9 @@ and ifdefSkip n m args skip = parse | surrogateChar surrogateChar | _ { // This tries to be nice and get tokens as 'words' because VS uses this when selecting stuff - if not skip then (INACTIVECODE (LexCont.IfDefSkip(!args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf } + if not skip then (INACTIVECODE (LexCont.IfDefSkip(args.ifdefStack,n,m))) else ifdefSkip n m args skip lexbuf } | eof - { EOF (LexCont.IfDefSkip(!args.ifdefStack,n,m)) } + { EOF (LexCont.IfDefSkip(args.ifdefStack,n,m)) } // Called after lexing #if IDENT/#else/#endif - this checks whether there is nothing except end of line // or end of file and then calls the lexing function specified by 'cont' - either token or ifdefSkip @@ -729,40 +738,40 @@ and endline cont args skip = parse } | [^'\r' '\n']+ | _ - { let tok = fail args lexbuf (FSComp.SR.pplexExpectedSingleLineComment()) (WHITESPACE (LexCont.Token !args.ifdefStack)) + { let tok = fail args lexbuf (FSComp.SR.pplexExpectedSingleLineComment()) (WHITESPACE (LexCont.Token args.ifdefStack)) if not skip then tok else token args skip lexbuf } and string sargs skip = parse | '\\' newline anywhite* { let (_buf,_fin,m,args) = sargs newline lexbuf - if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.String(args.ifdefStack,m))) else string sargs skip lexbuf } | escape_char { let (buf,_fin,m,args) = sargs addByteChar buf (escape (lexeme lexbuf).[1]) - if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.String(args.ifdefStack,m))) else string sargs skip lexbuf } | trigraph { let (buf,_fin,m,args) = sargs let s = lexeme lexbuf addByteChar buf (trigraph s.[1] s.[2] s.[3]) - if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.String(args.ifdefStack,m))) else string sargs skip lexbuf } | hexGraphShort { let (buf,_fin,m,args) = sargs addUnicodeChar buf (int (hexGraphShort (lexemeTrimLeft lexbuf 2))) - if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.String(args.ifdefStack,m))) else string sargs skip lexbuf } | unicodeGraphShort { let (buf,_fin,m,args) = sargs addUnicodeChar buf (int (unicodeGraphShort (lexemeTrimLeft lexbuf 2))) - if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.String(args.ifdefStack,m))) else string sargs skip lexbuf } | unicodeGraphLong { let (buf,_fin,m,args) = sargs let hexChars = lexemeTrimLeft lexbuf 2 - let result () = if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf + let result () = if not skip then (STRING_TEXT (LexCont.String(args.ifdefStack,m))) else string sargs skip lexbuf match unicodeGraphLong hexChars with | Invalid -> fail args lexbuf (FSComp.SR.lexInvalidUnicodeLiteral hexChars) (result ()) @@ -788,38 +797,38 @@ and string sargs skip = parse { let (buf,_fin,m,args) = sargs newline lexbuf addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.String(args.ifdefStack,m))) else string sargs skip lexbuf } | ident { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.String(args.ifdefStack,m))) else string sargs skip lexbuf } | integer | xinteger { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.String(args.ifdefStack,m))) else string sargs skip lexbuf } | anywhite + { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.String(args.ifdefStack,m))) else string sargs skip lexbuf } | eof { let (_buf,_fin,m,args) = sargs - EOF (LexCont.String(!args.ifdefStack,m)) } + EOF (LexCont.String(args.ifdefStack,m)) } | surrogateChar surrogateChar // surrogate code points always come in pairs | _ { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.String(!args.ifdefStack,m))) else string sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.String(args.ifdefStack,m))) else string sargs skip lexbuf } and verbatimString sargs skip = parse | '"' '"' { let (buf,_fin,m,args) = sargs addByteChar buf '\"' - if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.VerbatimString(args.ifdefStack,m))) else verbatimString sargs skip lexbuf } | '"' { let (buf,fin,_m,_args) = sargs @@ -835,32 +844,32 @@ and verbatimString sargs skip = parse { let (buf,_fin,m,args) = sargs newline lexbuf addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.VerbatimString(args.ifdefStack,m))) else verbatimString sargs skip lexbuf } | ident { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.VerbatimString(args.ifdefStack,m))) else verbatimString sargs skip lexbuf } | integer | xinteger { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.VerbatimString(args.ifdefStack,m))) else verbatimString sargs skip lexbuf } | anywhite + { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.VerbatimString(args.ifdefStack,m))) else verbatimString sargs skip lexbuf } | eof { let (_buf,_fin,m,args) = sargs - EOF (LexCont.VerbatimString(!args.ifdefStack,m)) } + EOF (LexCont.VerbatimString(args.ifdefStack,m)) } | surrogateChar surrogateChar // surrogate code points always come in pairs | _ { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.VerbatimString(!args.ifdefStack,m))) else verbatimString sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.VerbatimString(args.ifdefStack,m))) else verbatimString sargs skip lexbuf } and tripleQuoteString sargs skip = parse | '"' '"' '"' @@ -872,33 +881,33 @@ and tripleQuoteString sargs skip = parse { let (buf,_fin,m,args) = sargs newline lexbuf addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.TripleQuoteString(args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } // The rest is to break into pieces to allow double-click-on-word and other such things | ident { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.TripleQuoteString(args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } | integer | xinteger { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.TripleQuoteString(args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } | anywhite + { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.TripleQuoteString(args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } | eof { let (_buf,_fin,m,args) = sargs - EOF (LexCont.TripleQuoteString(!args.ifdefStack,m)) } + EOF (LexCont.TripleQuoteString(args.ifdefStack,m)) } | surrogateChar surrogateChar // surrogate code points always come in pairs | _ { let (buf,_fin,m,args) = sargs addUnicodeString buf (lexeme lexbuf) - if not skip then (STRING_TEXT (LexCont.TripleQuoteString(!args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } + if not skip then (STRING_TEXT (LexCont.TripleQuoteString(args.ifdefStack,m))) else tripleQuoteString sargs skip lexbuf } // Parsing single-line comment - we need to split it into words for Visual Studio IDE and singleLineComment cargs skip = parse @@ -907,78 +916,78 @@ and singleLineComment cargs skip = parse trySaveXmlDoc lexbuf buff newline lexbuf // Saves the documentation (if we're collecting any) into a buffer-local variable. - if not skip then (LINE_COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } + if not skip then (LINE_COMMENT (LexCont.Token args.ifdefStack)) else token args skip lexbuf } | eof { let _, _n,_m,args = cargs // NOTE: it is legal to end a file with this comment, so we'll return EOF as a token - EOF (LexCont.Token !args.ifdefStack) } + EOF (LexCont.Token args.ifdefStack) } | [^ ' ' '\n' '\r' ]+ | anywhite+ { let buff,n,m,args = cargs // Append the current token to the XML documentation if we're collecting it tryAppendXmlDoc buff (lexeme lexbuf) - if not skip then (LINE_COMMENT (LexCont.SingleLineComment(!args.ifdefStack,n,m))) else singleLineComment (buff,n,m,args) skip lexbuf } + if not skip then (LINE_COMMENT (LexCont.SingleLineComment(args.ifdefStack,n,m))) else singleLineComment (buff,n,m,args) skip lexbuf } | surrogateChar surrogateChar | _ { let _, _n,_m,args = cargs - if not skip then (LINE_COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } + if not skip then (LINE_COMMENT (LexCont.Token args.ifdefStack)) else token args skip lexbuf } and comment cargs skip = parse | char { let n,m,args = cargs - if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } + if not skip then (COMMENT (LexCont.Comment(args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } | '"' { let n,m,args = cargs - if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } + if not skip then (COMMENT (LexCont.StringInComment(args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } | '"' '"' '"' { let n,m,args = cargs - if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf } + if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf } | '@' '"' { let n,m,args = cargs - if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } + if not skip then (COMMENT (LexCont.VerbatimStringInComment(args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } | "(*)" { let n,m,args = cargs - if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment cargs skip lexbuf } + if not skip then (COMMENT (LexCont.Comment(args.ifdefStack,n,m))) else comment cargs skip lexbuf } | '(' '*' { let n,m,args = cargs - if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n+1,m))) else comment (n+1,m,args) skip lexbuf } + if not skip then (COMMENT (LexCont.Comment(args.ifdefStack,n+1,m))) else comment (n+1,m,args) skip lexbuf } | newline { let n,m,args = cargs newline lexbuf - if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment cargs skip lexbuf } + if not skip then (COMMENT (LexCont.Comment(args.ifdefStack,n,m))) else comment cargs skip lexbuf } | "*)" { let n,m,args = cargs - if n > 1 then if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n-1,m))) else comment (n-1,m,args) skip lexbuf - else if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } + if n > 1 then if not skip then (COMMENT (LexCont.Comment(args.ifdefStack,n-1,m))) else comment (n-1,m,args) skip lexbuf + else if not skip then (COMMENT (LexCont.Token args.ifdefStack)) else token args skip lexbuf } | anywhite+ | [^ '\'' '(' '*' '\n' '\r' '"' ')' '@' ' ' '\t' ]+ { let n,m,args = cargs - if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment cargs skip lexbuf } + if not skip then (COMMENT (LexCont.Comment(args.ifdefStack,n,m))) else comment cargs skip lexbuf } | eof { let n,m,args = cargs - EOF (LexCont.Comment(!args.ifdefStack,n,m)) } + EOF (LexCont.Comment(args.ifdefStack,n,m)) } | surrogateChar surrogateChar | _ { let n,m,args = cargs - if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } + if not skip then (COMMENT (LexCont.Comment(args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } and stringInComment n m args skip = parse // Follow string lexing, skipping tokens until it finishes | '\\' newline anywhite* { newline lexbuf - if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } + if not skip then (COMMENT (LexCont.StringInComment(args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } | escape_char | trigraph @@ -989,69 +998,69 @@ and stringInComment n m args skip = parse | integer | xinteger | anywhite + - { if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } + { if not skip then (COMMENT (LexCont.StringInComment(args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } | '"' - { if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } + { if not skip then (COMMENT (LexCont.Comment(args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } | newline { newline lexbuf - if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } + if not skip then (COMMENT (LexCont.StringInComment(args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } | eof - { EOF (LexCont.StringInComment(!args.ifdefStack,n,m)) } + { EOF (LexCont.StringInComment(args.ifdefStack,n,m)) } | surrogateChar surrogateChar | _ - { if not skip then (COMMENT (LexCont.StringInComment(!args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } + { if not skip then (COMMENT (LexCont.StringInComment(args.ifdefStack,n,m))) else stringInComment n m args skip lexbuf } and verbatimStringInComment n m args skip = parse // Follow verbatimString lexing, in short, skip double-quotes and other chars until we hit a single quote | '"' '"' - { if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } + { if not skip then (COMMENT (LexCont.VerbatimStringInComment(args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } | '"' - { if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } + { if not skip then (COMMENT (LexCont.Comment(args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } | ident | integer | xinteger | anywhite + - { if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } + { if not skip then (COMMENT (LexCont.VerbatimStringInComment(args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } | newline { newline lexbuf - if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } + if not skip then (COMMENT (LexCont.VerbatimStringInComment(args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } | eof - { EOF (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m)) } + { EOF (LexCont.VerbatimStringInComment(args.ifdefStack,n,m)) } | surrogateChar surrogateChar | _ - { if not skip then (COMMENT (LexCont.VerbatimStringInComment(!args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } + { if not skip then (COMMENT (LexCont.VerbatimStringInComment(args.ifdefStack,n,m))) else verbatimStringInComment n m args skip lexbuf } and tripleQuoteStringInComment n m args skip = parse // Follow tripleQuoteString lexing | '"' '"' '"' - { if not skip then (COMMENT (LexCont.Comment(!args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } + { if not skip then (COMMENT (LexCont.Comment(args.ifdefStack,n,m))) else comment (n,m,args) skip lexbuf } | ident | integer | xinteger | anywhite + - { if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf } + { if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf } | newline { newline lexbuf - if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf } + if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf } | eof - { EOF (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m)) } + { EOF (LexCont.TripleQuoteStringInComment(args.ifdefStack,n,m)) } | surrogateChar surrogateChar | _ - { if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(!args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf } + { if not skip then (COMMENT (LexCont.TripleQuoteStringInComment(args.ifdefStack,n,m))) else tripleQuoteStringInComment n m args skip lexbuf } and mlOnly m args skip = parse @@ -1059,17 +1068,17 @@ and mlOnly m args skip = parse { let buf = ByteBuffer.Create 100 let m2 = lexbuf.LexemeRange let _ = string (buf,defaultStringFinisher,m2,args) skip lexbuf - if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf } + if not skip then (COMMENT (LexCont.MLOnly(args.ifdefStack,m))) else mlOnly m args skip lexbuf } | newline - { newline lexbuf; if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf } + { newline lexbuf; if not skip then (COMMENT (LexCont.MLOnly(args.ifdefStack,m))) else mlOnly m args skip lexbuf } | "(*ENDIF-CAML*)" - { if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } + { if not skip then (COMMENT (LexCont.Token args.ifdefStack)) else token args skip lexbuf } | "(*ENDIF-OCAML*)" - { if not skip then (COMMENT (LexCont.Token !args.ifdefStack)) else token args skip lexbuf } + { if not skip then (COMMENT (LexCont.Token args.ifdefStack)) else token args skip lexbuf } | [^ '(' '"' '\n' '\r' ]+ - { if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf } + { if not skip then (COMMENT (LexCont.MLOnly(args.ifdefStack,m))) else mlOnly m args skip lexbuf } | eof - { EOF (LexCont.MLOnly(!args.ifdefStack,m)) } + { EOF (LexCont.MLOnly(args.ifdefStack,m)) } | surrogateChar surrogateChar | _ - { if not skip then (COMMENT (LexCont.MLOnly(!args.ifdefStack,m))) else mlOnly m args skip lexbuf } + { if not skip then (COMMENT (LexCont.MLOnly(args.ifdefStack,m))) else mlOnly m args skip lexbuf } diff --git a/src/fsharp/lexhelp.fs b/src/fsharp/lexhelp.fs index b25627e9a4..6201ec8a41 100755 --- a/src/fsharp/lexhelp.fs +++ b/src/fsharp/lexhelp.fs @@ -49,7 +49,7 @@ type LexResourceManager() = /// Lexer parameters type lexargs = { defines: string list - ifdefStack: LexerIfdefStack + mutable ifdefStack: LexerIfdefStack resourceManager: LexResourceManager lightSyntaxStatus : LightSyntaxStatus errorLogger: ErrorLogger diff --git a/src/fsharp/lexhelp.fsi b/src/fsharp/lexhelp.fsi index f75ecd392d..bcc1bc3dc8 100755 --- a/src/fsharp/lexhelp.fsi +++ b/src/fsharp/lexhelp.fsi @@ -29,7 +29,7 @@ type LexResourceManager = type lexargs = { defines: string list - ifdefStack: LexerIfdefStack + mutable ifdefStack: LexerIfdefStack resourceManager: LexResourceManager lightSyntaxStatus : LightSyntaxStatus errorLogger: ErrorLogger diff --git a/src/fsharp/lib.fs b/src/fsharp/lib.fs index fba1c975e8..2b9d584bdc 100755 --- a/src/fsharp/lib.fs +++ b/src/fsharp/lib.fs @@ -13,8 +13,8 @@ open FSharp.Compiler.AbstractIL.Internal.Library /// is this the developer-debug build? let debug = false let verbose = false -let progress = ref false -let tracking = ref false // intended to be a general hook to control diagnostic output when tracking down bugs +let mutable progress = false +let mutable tracking = false // intended to be a general hook to control diagnostic output when tracking down bugs let condition s = try (System.Environment.GetEnvironmentVariable(s) <> null) with _ -> false @@ -313,19 +313,12 @@ let bufs f = f buf buf.ToString() -let buff (os: TextWriter) f x = +// writing to output stream via a string buffer. +let writeViaBuffer (os: TextWriter) f x = let buf = System.Text.StringBuilder 100 f buf x os.Write(buf.ToString()) -// Converts "\n" into System.Environment.NewLine before writing to os. See lib.fs:buff -let writeViaBufferWithEnvironmentNewLines (os: TextWriter) f x = - let buf = System.Text.StringBuilder 100 - f buf x - let text = buf.ToString() - let text = text.Replace("\n", System.Environment.NewLine) - os.Write text - //--------------------------------------------------------------------------- // Imperative Graphs //--------------------------------------------------------------------------- @@ -387,8 +380,19 @@ let inline cached cache resF = | _ -> cache.cacheVal +let inline cacheOptByref (cache: byref<'T option>) f = + match cache with + | Some v -> v + | None -> + let res = f() + cache <- Some res + res + +// REVIEW: this is only used because we want to mutate a record field, +// and because you cannot take a byref<_> of such a thing directly, +// we cannot use 'cacheOptByref'. If that is changed, this can be removed. let inline cacheOptRef cache f = - match !cache with + match !cache with | Some v -> v | None -> let res = f() diff --git a/src/fsharp/pars.fsy b/src/fsharp/pars.fsy index 749c8dd5e3..e1d888196b 100644 --- a/src/fsharp/pars.fsy +++ b/src/fsharp/pars.fsy @@ -194,7 +194,7 @@ let rangeOfLongIdent(lid:LongIdent) = %token PERCENT_OP BINDER %token LQUOTE RQUOTE RQUOTE_DOT %token BAR_BAR UPCAST DOWNCAST NULL RESERVED MODULE NAMESPACE DELEGATE CONSTRAINT BASE -%token AND AS ASSERT OASSERT ASR BEGIN DO DONE DOWNTO ELSE ELIF END DOT_DOT +%token AND AS ASSERT OASSERT ASR BEGIN DO DONE DOWNTO ELSE ELIF END DOT_DOT DOT_DOT_HAT %token EXCEPTION FALSE FOR FUN FUNCTION IF IN JOIN_IN FINALLY DO_BANG %token LAZY OLAZY MATCH MATCH_BANG MUTABLE NEW OF %token OPEN OR REC THEN TO TRUE TRY TYPE VAL INLINE INTERFACE INSTANCE CONST @@ -379,6 +379,7 @@ let rangeOfLongIdent(lid:LongIdent) = * - null * - LBRACK = [ * - TRUE,FALSE + */ %nonassoc prec_atompat_pathop %nonassoc INT8 UINT8 INT16 UINT16 INT32 UINT32 INT64 UINT64 NATIVEINT UNATIVEINT IEEE32 IEEE64 CHAR KEYWORD_STRING STRING BYTEARRAY BIGNUM DECIMAL @@ -3755,12 +3756,9 @@ atomicExprQualification: mlCompatWarning (FSComp.SR.parsParenFormIsForML()) (lhs parseState) mkSynDotParenGet lhsm dotm e $2) } - | LBRACK typedSeqExpr RBRACK - { (fun e lhsm dotm -> mkSynDotBrackGet lhsm dotm e $2) } - | LBRACK typedSeqExpr recover { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()) - (fun e lhsm dotm -> exprFromParseError (mkSynDotBrackGet lhsm dotm e $2)) } + (fun e lhsm dotm -> exprFromParseError (mkSynDotBrackGet lhsm dotm e $2 false)) } | LBRACK optRangeSeqExpr RBRACK { (fun e lhsm dotm -> mkSynDotBrackSeqSliceGet lhsm dotm e $2) } @@ -3771,32 +3769,66 @@ atomicExprQualification: | LBRACK error RBRACK { let mArg = rhs2 parseState 1 3 - (fun e lhsm dotm -> mkSynDotBrackGet lhsm dotm e (arbExpr("indexerExpr1",mArg))) } + (fun e lhsm dotm -> mkSynDotBrackGet lhsm dotm e (arbExpr("indexerExpr1",mArg)) false) } | LBRACK recover { reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsUnmatchedBracket()) let mArg = (rhs parseState 1).EndRange - (fun e lhsm dotm -> exprFromParseError (mkSynDotBrackGet lhsm dotm e (arbExpr("indexerExpr2",mArg)))) } + (fun e lhsm dotm -> exprFromParseError (mkSynDotBrackGet lhsm dotm e (arbExpr("indexerExpr2",mArg)) false)) } optRangeSeqExpr: | optRange COMMA optRangeSeqExpr %prec slice_comma { $1 :: $3 } | optRange { [$1] } optRange: - | declExpr DOT_DOT declExpr - { SynIndexerArg.Two(mkSynOptionalExpr (rhs parseState 1) (Some $1), mkSynOptionalExpr (rhs parseState 3) (Some $3)) } - - | declExpr DOT_DOT - { SynIndexerArg.Two(mkSynOptionalExpr (rhs parseState 1) (Some $1), mkSynOptionalExpr (rhs parseState 2) None) } - - | DOT_DOT declExpr - { SynIndexerArg.Two(mkSynOptionalExpr (rhs parseState 1) None, mkSynOptionalExpr (rhs parseState 2) (Some $2)) } - + | rangeDeclExpr DOT_DOT rangeDeclExpr + { SynIndexerArg.Two( + mkSynOptionalExpr (rhs parseState 1) (Some (fst $1)), + (snd $1), + mkSynOptionalExpr (rhs parseState 3) (Some (fst $3)), + (snd $3), + (rhs parseState 1), + (rhs parseState 3)) } + + | rangeDeclExpr DOT_DOT + { SynIndexerArg.Two( + mkSynOptionalExpr (rhs parseState 1) (Some (fst $1)), + (snd $1), + mkSynOptionalExpr (rhs parseState 2) None, + false, + (rhs parseState 1), + (rhs parseState 2)) } + + | DOT_DOT rangeDeclExpr + { SynIndexerArg.Two( + mkSynOptionalExpr (rhs parseState 1) None, + false, + mkSynOptionalExpr (rhs parseState 2) (Some (fst $2)), + (snd $2), + (rhs parseState 2), + (rhs parseState 1)) } + | STAR - { SynIndexerArg.Two(mkSynOptionalExpr (rhs parseState 1) None, mkSynOptionalExpr (rhs parseState 1) None) } - + { SynIndexerArg.Two( + mkSynOptionalExpr (rhs parseState 1) None, + false, + (mkSynOptionalExpr (rhs parseState 1) None), + false, + (rhs parseState 1), + (rhs parseState 1)) } + + | rangeDeclExpr + { SynIndexerArg.One((fst $1), (snd $1), (rhs parseState 1)) } + +rangeDeclExpr: | declExpr %prec slice_expr - { SynIndexerArg.One($1) } + { $1, false } + + | INFIX_AT_HAT_OP declExpr %prec slice_expr + { if not (parseState.LexBuffer.SupportsFeature LanguageFeature.FromEndSlicing) then + raiseParseErrorAt (rhs parseState 1) (FSComp.SR.fromEndSlicingRequiresVFive()) + if $1 <> "^" then reportParseErrorAt (rhs parseState 1) (FSComp.SR.parsInvalidPrefixOperator()) + $2, true } /* the start et of atomicExprAfterType must not overlap with the valid postfix tokens of the type syntax, e.g. new List(...) */ atomicExprAfterType: diff --git a/src/fsharp/service/FSharpCheckerResults.fs b/src/fsharp/service/FSharpCheckerResults.fs index ab8ee3d216..76585ba9d5 100644 --- a/src/fsharp/service/FSharpCheckerResults.fs +++ b/src/fsharp/service/FSharpCheckerResults.fs @@ -58,7 +58,7 @@ module internal FSharpCheckerResultsSettings = | s -> int64 s // Look for DLLs in the location of the service DLL first. - let defaultFSharpBinariesDir = FSharpEnvironment.BinFolderOfDefaultFSharpCompiler(Some(typeof.Assembly.Location)).Value + let defaultFSharpBinariesDir = FSharpEnvironment.BinFolderOfDefaultFSharpCompiler(Some(Path.GetDirectoryName(typeof.Assembly.Location))).Value [] type FSharpFindDeclFailureReason = @@ -193,7 +193,7 @@ type internal TypeCheckInfo // We guarantee to only refine to a more nested environment. It may not be strictly // the right environment, but will always be at least as rich - let bestAlmostIncludedSoFar = ref None + let mutable bestAlmostIncludedSoFar = None sResolutions.CapturedEnvs |> ResizeArray.iter (fun (possm,env,ad) -> // take only ranges that strictly do not include cursorPos (all ranges that touch cursorPos were processed during 'Strict Inclusion' part) @@ -204,15 +204,15 @@ type internal TypeCheckInfo | None -> true if contained then - match !bestAlmostIncludedSoFar with + match bestAlmostIncludedSoFar with | Some (rightm:range,_,_) -> if posGt possm.End rightm.End || (posEq possm.End rightm.End && posGt possm.Start rightm.Start) then - bestAlmostIncludedSoFar := Some (possm,env,ad) - | _ -> bestAlmostIncludedSoFar := Some (possm,env,ad)) + bestAlmostIncludedSoFar <- Some (possm,env,ad) + | _ -> bestAlmostIncludedSoFar <- Some (possm,env,ad)) let resEnv = - match !bestAlmostIncludedSoFar, mostDeeplyNestedEnclosingScope with + match bestAlmostIncludedSoFar, mostDeeplyNestedEnclosingScope with | Some (_,env,ad), None -> env, ad | Some (_,almostIncludedEnv,ad), Some (_,mostDeeplyNestedEnv,_) when almostIncludedEnv.eFieldLabels.Count >= mostDeeplyNestedEnv.eFieldLabels.Count -> @@ -1525,7 +1525,7 @@ module internal ParseAndCheckFile = // When analyzing files using ParseOneFile, i.e. for the use of editing clients, we do not apply line directives. // TODO(pathmap): expose PathMap on the service API, and thread it through here - let lexargs = mkLexargs(fileName, defines, lightSyntaxStatus, lexResourceManager, ref [], errHandler.ErrorLogger, PathMap.empty) + let lexargs = mkLexargs(fileName, defines, lightSyntaxStatus, lexResourceManager, [], errHandler.ErrorLogger, PathMap.empty) let lexargs = { lexargs with applyLineDirectives = false } let tokenizer = LexFilter.LexFilter(lightSyntaxStatus, options.CompilingFsLib, Lexer.token lexargs true, lexbuf) diff --git a/src/fsharp/service/IncrementalBuild.fs b/src/fsharp/service/IncrementalBuild.fs index 774fd78e10..5e36f94b55 100755 --- a/src/fsharp/service/IncrementalBuild.fs +++ b/src/fsharp/service/IncrementalBuild.fs @@ -14,6 +14,7 @@ open FSharp.Compiler.Lib open FSharp.Compiler.AbstractIL open FSharp.Compiler.AbstractIL.IL open FSharp.Compiler.AbstractIL.ILBinaryReader +open FSharp.Compiler.AbstractIL.Internal open FSharp.Compiler.AbstractIL.Internal.Library open FSharp.Compiler.CompileOps open FSharp.Compiler.CompileOptions @@ -124,10 +125,10 @@ module internal IncrementalBuild = | VectorBuildRule ve -> ve.Name // Ids of exprs - let nextid = ref 999 // Number ids starting with 1000 to discern them + let mutable nextid = 999 // Number ids starting with 1000 to discern them let NextId() = - nextid:=!nextid+1 - Id(!nextid) + nextid <- nextid + 1 + Id(nextid) type INode = abstract Name: string @@ -1207,7 +1208,7 @@ type RawFSharpAssemblyDataBackedByLanguageService (tcConfig, tcGlobals, tcState: type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInputs, nonFrameworkResolutions, unresolvedReferences, tcConfig: TcConfig, projectDirectory, outfile, assemblyName, niceNameGen: NiceNameGenerator, lexResourceManager, sourceFiles, loadClosureOpt: LoadClosure option, - keepAssemblyContents, keepAllBackgroundResolutions, maxTimeShareMilliseconds) = + keepAssemblyContents, keepAllBackgroundResolutions, maxTimeShareMilliseconds, keepAllBackgroundSymbolUses) = let tcConfigP = TcConfigProvider.Constant tcConfig let fileParsed = new Event() @@ -1385,7 +1386,7 @@ type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInput let implFile = if keepAssemblyContents then implFile else None let tcResolutions = if keepAllBackgroundResolutions then sink.GetResolutions() else TcResolutions.Empty let tcEnvAtEndOfFile = (if keepAllBackgroundResolutions then tcEnvAtEndOfFile else tcState.TcEnvFromImpls) - let tcSymbolUses = sink.GetSymbolUses() + let tcSymbolUses = if keepAllBackgroundSymbolUses then sink.GetSymbolUses() else TcSymbolUses.Empty RequireCompilationThread ctok // Note: events get raised on the CompilationThread @@ -1699,7 +1700,7 @@ type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInput projectReferences, projectDirectory, useScriptResolutionRules, keepAssemblyContents, keepAllBackgroundResolutions, maxTimeShareMilliseconds, - tryGetMetadataSnapshot, suggestNamesForErrors) = + tryGetMetadataSnapshot, suggestNamesForErrors, keepAllBackgroundSymbolUses) = let useSimpleResolutionSwitch = "--simpleresolution" cancellable { @@ -1731,7 +1732,7 @@ type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInput defaultFSharpBinariesDir, implicitIncludeDir=projectDirectory, reduceMemoryUsage=ReduceMemoryFlag.Yes, - isInteractive=false, + isInteractive=useScriptResolutionRules, isInvalidationSupported=true, defaultCopyFSharpCore=CopyFSharpCoreFlag.No, tryGetMetadataSnapshot=tryGetMetadataSnapshot) @@ -1819,7 +1820,8 @@ type IncrementalBuilder(tcGlobals, frameworkTcImports, nonFrameworkAssemblyInput resourceManager, sourceFilesNew, loadClosureOpt, keepAssemblyContents=keepAssemblyContents, keepAllBackgroundResolutions=keepAllBackgroundResolutions, - maxTimeShareMilliseconds=maxTimeShareMilliseconds) + maxTimeShareMilliseconds=maxTimeShareMilliseconds, + keepAllBackgroundSymbolUses=keepAllBackgroundSymbolUses) return Some builder with e -> errorRecoveryNoRange e diff --git a/src/fsharp/service/IncrementalBuild.fsi b/src/fsharp/service/IncrementalBuild.fsi index fb60dbff69..d775c92fcc 100755 --- a/src/fsharp/service/IncrementalBuild.fsi +++ b/src/fsharp/service/IncrementalBuild.fsi @@ -161,7 +161,7 @@ type internal IncrementalBuilder = /// This may be a marginally long-running operation (parses are relatively quick, only one file needs to be parsed) member GetParseResultsForFile : CompilationThreadToken * filename:string -> Cancellable - static member TryCreateBackgroundBuilderForProjectOptions : CompilationThreadToken * ReferenceResolver.Resolver * defaultFSharpBinariesDir: string * FrameworkImportsCache * scriptClosureOptions:LoadClosure option * sourceFiles:string list * commandLineArgs:string list * projectReferences: IProjectReference list * projectDirectory:string * useScriptResolutionRules:bool * keepAssemblyContents: bool * keepAllBackgroundResolutions: bool * maxTimeShareMilliseconds: int64 * tryGetMetadataSnapshot: ILBinaryReader.ILReaderTryGetMetadataSnapshot * suggestNamesForErrors: bool -> Cancellable + static member TryCreateBackgroundBuilderForProjectOptions : CompilationThreadToken * ReferenceResolver.Resolver * defaultFSharpBinariesDir: string * FrameworkImportsCache * scriptClosureOptions:LoadClosure option * sourceFiles:string list * commandLineArgs:string list * projectReferences: IProjectReference list * projectDirectory:string * useScriptResolutionRules:bool * keepAssemblyContents: bool * keepAllBackgroundResolutions: bool * maxTimeShareMilliseconds: int64 * tryGetMetadataSnapshot: ILBinaryReader.ILReaderTryGetMetadataSnapshot * suggestNamesForErrors: bool * keepAllBackgroundSymbolUses: bool -> Cancellable /// Generalized Incremental Builder. This is exposed only for unit testing purposes. module internal IncrementalBuild = diff --git a/src/fsharp/service/ServiceAnalysis.fs b/src/fsharp/service/ServiceAnalysis.fs index e568767a1e..33c5a45775 100644 --- a/src/fsharp/service/ServiceAnalysis.fs +++ b/src/fsharp/service/ServiceAnalysis.fs @@ -226,4 +226,115 @@ module UnusedOpens = let symbolUses = splitSymbolUses symbolUses let openStatements = getOpenStatements checkFileResults.OpenDeclarations return! filterOpenStatements symbolUses openStatements + } + +module SimplifyNames = + type SimplifiableRange = { + Range: range + RelativeName: string + } + + let getPlidLength (plid: string list) = (plid |> List.sumBy String.length) + plid.Length + + let getSimplifiableNames (checkFileResults: FSharpCheckFileResults, getSourceLineStr: int -> string) : Async = + async { + let result = ResizeArray() + let! symbolUses = checkFileResults.GetAllUsesOfAllSymbolsInFile() + let symbolUses = + symbolUses + |> Array.filter (fun symbolUse -> not symbolUse.IsFromOpenStatement) + |> Array.Parallel.map (fun symbolUse -> + let lineStr = getSourceLineStr symbolUse.RangeAlternate.StartLine + // for `System.DateTime.Now` it returns ([|"System"; "DateTime"|], "Now") + let partialName = QuickParse.GetPartialLongNameEx(lineStr, symbolUse.RangeAlternate.EndColumn - 1) + // `symbolUse.RangeAlternate.Start` does not point to the start of plid, it points to start of `name`, + // so we have to calculate plid's start ourselves. + let plidStartCol = symbolUse.RangeAlternate.EndColumn - partialName.PartialIdent.Length - (getPlidLength partialName.QualifyingIdents) + symbolUse, partialName.QualifyingIdents, plidStartCol, partialName.PartialIdent) + |> Array.filter (fun (_, plid, _, name) -> name <> "" && not (List.isEmpty plid)) + |> Array.groupBy (fun (symbolUse, _, plidStartCol, _) -> symbolUse.RangeAlternate.StartLine, plidStartCol) + |> Array.map (fun (_, xs) -> xs |> Array.maxBy (fun (symbolUse, _, _, _) -> symbolUse.RangeAlternate.EndColumn)) + + for symbolUse, plid, plidStartCol, name in symbolUses do + if not symbolUse.IsFromDefinition then + let posAtStartOfName = + let r = symbolUse.RangeAlternate + if r.StartLine = r.EndLine then Range.mkPos r.StartLine (r.EndColumn - name.Length) + else r.Start + + let getNecessaryPlid (plid: string list) : Async = + let rec loop (rest: string list) (current: string list) = + async { + match rest with + | [] -> return current + | headIdent :: restPlid -> + let! res = checkFileResults.IsRelativeNameResolvableFromSymbol(posAtStartOfName, current, symbolUse.Symbol) + if res then return current + else return! loop restPlid (headIdent :: current) + } + loop (List.rev plid) [] + + let! necessaryPlid = getNecessaryPlid plid + + match necessaryPlid with + | necessaryPlid when necessaryPlid = plid -> () + | necessaryPlid -> + let r = symbolUse.RangeAlternate + let necessaryPlidStartCol = r.EndColumn - name.Length - (getPlidLength necessaryPlid) + + let unnecessaryRange = + Range.mkRange r.FileName (Range.mkPos r.StartLine plidStartCol) (Range.mkPos r.EndLine necessaryPlidStartCol) + + let relativeName = (String.concat "." plid) + "." + name + result.Add({Range = unnecessaryRange; RelativeName = relativeName}) + + return List.ofSeq result + } + +module UnusedDeclarations = + let isPotentiallyUnusedDeclaration (symbol: FSharpSymbol) : bool = + match symbol with + // Determining that a record, DU or module is used anywhere requires inspecting all their enclosed entities (fields, cases and func / vals) + // for usages, which is too expensive to do. Hence we never gray them out. + | :? FSharpEntity as e when e.IsFSharpRecord || e.IsFSharpUnion || e.IsInterface || e.IsFSharpModule || e.IsClass || e.IsNamespace -> false + // FCS returns inconsistent results for override members; we're skipping these symbols. + | :? FSharpMemberOrFunctionOrValue as f when + f.IsOverrideOrExplicitInterfaceImplementation || + f.IsBaseValue || + f.IsConstructor -> false + // Usage of DU case parameters does not give any meaningful feedback; we never gray them out. + | :? FSharpParameter -> false + | _ -> true + + let getUnusedDeclarationRanges (symbolsUses: FSharpSymbolUse[]) (isScript: bool) = + let definitions = + symbolsUses + |> Array.filter (fun su -> + su.IsFromDefinition && + su.Symbol.DeclarationLocation.IsSome && + (isScript || su.IsPrivateToFile) && + not (su.Symbol.DisplayName.StartsWith "_") && + isPotentiallyUnusedDeclaration su.Symbol) + + let usages = + let usages = + symbolsUses + |> Array.filter (fun su -> not su.IsFromDefinition) + |> Array.choose (fun su -> su.Symbol.DeclarationLocation) + HashSet(usages) + + let unusedRanges = + definitions + |> Array.map (fun defSu -> defSu, usages.Contains defSu.Symbol.DeclarationLocation.Value) + |> Array.groupBy (fun (defSu, _) -> defSu.RangeAlternate) + |> Array.filter (fun (_, defSus) -> defSus |> Array.forall (fun (_, isUsed) -> not isUsed)) + |> Array.map (fun (m, _) -> m) + + Array.toList unusedRanges + + let getUnusedDeclarations(checkFileResults: FSharpCheckFileResults, isScriptFile: bool) : Async = + async { + let! allSymbolUsesInFile = checkFileResults.GetAllUsesOfAllSymbolsInFile() + let unusedRanges = getUnusedDeclarationRanges allSymbolUsesInFile isScriptFile + return unusedRanges } \ No newline at end of file diff --git a/src/fsharp/service/ServiceAnalysis.fsi b/src/fsharp/service/ServiceAnalysis.fsi index 8d97644389..eb277269ab 100644 --- a/src/fsharp/service/ServiceAnalysis.fsi +++ b/src/fsharp/service/ServiceAnalysis.fsi @@ -8,4 +8,20 @@ open FSharp.Compiler.Range module public UnusedOpens = /// Get all unused open declarations in a file - val getUnusedOpens : checkFileResults: FSharpCheckFileResults * getSourceLineStr: (int -> string) -> Async \ No newline at end of file + val getUnusedOpens : checkFileResults: FSharpCheckFileResults * getSourceLineStr: (int -> string) -> Async + +module public SimplifyNames = + /// Data for use in finding unnecessarily-qualified names and generating diagnostics to simplify them + type SimplifiableRange = { + /// The range of a name that can be simplified + Range: range + /// The relative name that can be applied to a simplifiable name + RelativeName: string + } + + /// Get all ranges that can be simplified in a file + val getSimplifiableNames : checkFileResults: FSharpCheckFileResults * getSourceLineStr: (int -> string) -> Async + +module public UnusedDeclarations = + /// Get all unused declarations in a file + val getUnusedDeclarations : checkFileResults: FSharpCheckFileResults * isScriptFile: bool -> Async \ No newline at end of file diff --git a/src/fsharp/service/ServiceAssemblyContent.fs b/src/fsharp/service/ServiceAssemblyContent.fs index a86b26db8a..e495fa0428 100644 --- a/src/fsharp/service/ServiceAssemblyContent.fs +++ b/src/fsharp/service/ServiceAssemblyContent.fs @@ -589,8 +589,8 @@ module ParsedInput = and walkInterfaceImpl (InterfaceImpl(_, bindings, _)) = List.iter walkBinding bindings and walkIndexerArg = function - | SynIndexerArg.One e -> walkExpr e - | SynIndexerArg.Two (e1, e2) -> List.iter walkExpr [e1; e2] + | SynIndexerArg.One (e, _, _) -> walkExpr e + | SynIndexerArg.Two (e1, _, e2, _, _, _) -> List.iter walkExpr [e1; e2] and walkType = function | SynType.Array (_, t, _) @@ -860,8 +860,8 @@ module ParsedInput = // Based on an initial review, no diagnostics should be generated. However the code should be checked more closely. use _ignoreAllDiagnostics = new ErrorScope() - let result: (Scope * pos * (* finished *) bool) option ref = ref None - let ns: string[] option ref = ref None + let mutable result = None + let mutable ns = None let modules = ResizeArray() let inline longIdentToIdents ident = ident |> Seq.map (fun x -> string x) |> Seq.toArray @@ -873,17 +873,17 @@ module ParsedInput = let doRange kind (scope: LongIdent) line col = if line <= currentLine then - match !result, insertionPoint with + match result, insertionPoint with | None, _ -> - result := Some ({ Idents = longIdentToIdents scope; Kind = kind }, mkPos line col, false) + result <- Some ({ Idents = longIdentToIdents scope; Kind = kind }, mkPos line col, false) | Some (_, _, true), _ -> () | Some (oldScope, oldPos, false), OpenStatementInsertionPoint.TopLevel when kind <> OpenDeclaration -> - result := Some (oldScope, oldPos, true) + result <- Some (oldScope, oldPos, true) | Some (oldScope, oldPos, _), _ -> match kind, oldScope.Kind with | (Namespace | NestedModule | TopModule), OpenDeclaration | _ when oldPos.Line <= line -> - result := + result <- Some ({ Idents = match scope with | [] -> oldScope.Idents @@ -916,11 +916,11 @@ module ParsedInput = if range.EndLine >= currentLine then let isModule = kind.IsModule match isModule, parent, ident with - | false, _, _ -> ns := Some (longIdentToIdents ident) + | false, _, _ -> ns <- Some (longIdentToIdents ident) // top level module with "inlined" namespace like Ns1.Ns2.TopModule | true, [], _f :: _s :: _ -> let ident = longIdentToIdents ident - ns := Some (ident.[0..ident.Length - 2]) + ns <- Some (ident.[0..ident.Length - 2]) | _ -> () let fullIdent = parent @ ident @@ -958,9 +958,9 @@ module ParsedInput = | ParsedInput.ImplFile input -> walkImplFileInput input let res = - !result + result |> Option.map (fun (scope, pos, _) -> - let ns = !ns |> Option.map longIdentToIdents + let ns = ns |> Option.map longIdentToIdents scope, ns, mkPos (pos.Line + 1) pos.Column) let modules = diff --git a/src/fsharp/service/ServiceInterfaceStubGenerator.fs b/src/fsharp/service/ServiceInterfaceStubGenerator.fs index d6e46783e7..dfaa9a537a 100644 --- a/src/fsharp/service/ServiceInterfaceStubGenerator.fs +++ b/src/fsharp/service/ServiceInterfaceStubGenerator.fs @@ -52,8 +52,8 @@ module internal CodeGenerationUtils = indentWriter.Dispose() let (|IndexerArg|) = function - | SynIndexerArg.Two(e1, e2) -> [e1; e2] - | SynIndexerArg.One e -> [e] + | SynIndexerArg.Two(e1, _, e2, _, _, _) -> [e1; e2] + | SynIndexerArg.One (e, _, _) -> [e] let (|IndexerArgList|) xs = List.collect (|IndexerArg|) xs diff --git a/src/fsharp/service/ServiceLexing.fs b/src/fsharp/service/ServiceLexing.fs index 9217971c5f..4a5147bbb6 100644 --- a/src/fsharp/service/ServiceLexing.fs +++ b/src/fsharp/service/ServiceLexing.fs @@ -54,6 +54,7 @@ module FSharpTokenTag = let COMMA = tagOfToken COMMA let DOT = tagOfToken DOT let DOT_DOT = tagOfToken DOT_DOT + let DOT_DOT_HAT = tagOfToken DOT_DOT_HAT let INT32_DOT_DOT = tagOfToken (INT32_DOT_DOT(0, true)) let UNDERSCORE = tagOfToken UNDERSCORE let BAR = tagOfToken BAR @@ -210,7 +211,7 @@ module internal TokenClassifications = | INFIX_AMP_OP _ -> (FSharpTokenColorKind.Operator, FSharpTokenCharKind.Operator, FSharpTokenTriggerClass.None) - | DOT_DOT -> + | DOT_DOT | DOT_DOT_HAT -> (FSharpTokenColorKind.Operator, FSharpTokenCharKind.Operator, FSharpTokenTriggerClass.MemberSelect) | COMMA -> @@ -474,10 +475,10 @@ module internal LexerStateEncoding = let callLexCont lexcont args skip lexbuf = let argsWithIfDefs ifd = - if !args.ifdefStack = ifd then + if args.ifdefStack = ifd then args else - {args with ifdefStack = ref ifd} + {args with ifdefStack = ifd} match lexcont with | LexCont.EndLine cont -> Lexer.endline cont args skip lexbuf | LexCont.Token ifd -> Lexer.token (argsWithIfDefs ifd) skip lexbuf @@ -774,8 +775,8 @@ type FSharpSourceTokenizer(defineConstants: string list, filename: string option let lexResourceManager = new Lexhelp.LexResourceManager() - let lexArgsLightOn = mkLexargs(filename, defineConstants, LightSyntaxStatus(true, false), lexResourceManager, ref [], DiscardErrorsLogger, PathMap.empty) - let lexArgsLightOff = mkLexargs(filename, defineConstants, LightSyntaxStatus(false, false), lexResourceManager, ref [], DiscardErrorsLogger, PathMap.empty) + let lexArgsLightOn = mkLexargs(filename, defineConstants, LightSyntaxStatus(true, false), lexResourceManager, [], DiscardErrorsLogger, PathMap.empty) + let lexArgsLightOff = mkLexargs(filename, defineConstants, LightSyntaxStatus(false, false), lexResourceManager, [], DiscardErrorsLogger, PathMap.empty) member this.CreateLineTokenizer(lineText: string) = let lexbuf = UnicodeLexing.StringAsLexbuf(isFeatureSupported, lineText) diff --git a/src/fsharp/service/ServiceLexing.fsi b/src/fsharp/service/ServiceLexing.fsi index 2ee5dfacaa..b4f24866b9 100755 --- a/src/fsharp/service/ServiceLexing.fsi +++ b/src/fsharp/service/ServiceLexing.fsi @@ -133,6 +133,8 @@ module FSharpTokenTag = /// Indicates the token is a `..` val DOT_DOT : int /// Indicates the token is a `..` + val DOT_DOT_HAT : int + /// Indicates the token is a `..^` val INT32_DOT_DOT : int /// Indicates the token is a `..` val UNDERSCORE : int diff --git a/src/fsharp/service/ServiceNavigation.fs b/src/fsharp/service/ServiceNavigation.fs index 3578543b65..dbecc3b101 100755 --- a/src/fsharp/service/ServiceNavigation.fs +++ b/src/fsharp/service/ServiceNavigation.fs @@ -97,15 +97,15 @@ module NavigationImpl = /// Get information for implementation file let getNavigationFromImplFile (modules: SynModuleOrNamespace list) = // Map for dealing with name conflicts - let nameMap = ref Map.empty + let mutable nameMap = Map.empty let addItemName name = - let count = defaultArg (!nameMap |> Map.tryFind name) 0 - nameMap := (Map.add name (count + 1) (!nameMap)) + let count = defaultArg (nameMap |> Map.tryFind name) 0 + nameMap <- (Map.add name (count + 1) (nameMap)) (count + 1) let uniqueName name idx = - let total = Map.find name (!nameMap) + let total = Map.find name nameMap sprintf "%s_%d_of_%d" name idx total // Create declaration (for the left dropdown) @@ -305,13 +305,13 @@ module NavigationImpl = /// Get information for signature file let getNavigationFromSigFile (modules: SynModuleOrNamespaceSig list) = // Map for dealing with name conflicts - let nameMap = ref Map.empty + let mutable nameMap = Map.empty let addItemName name = - let count = defaultArg (!nameMap |> Map.tryFind name) 0 - nameMap := (Map.add name (count + 1) (!nameMap)) + let count = defaultArg (nameMap |> Map.tryFind name) 0 + nameMap <- (Map.add name (count + 1) (nameMap)) (count + 1) let uniqueName name idx = - let total = Map.find name (!nameMap) + let total = Map.find name nameMap sprintf "%s_%d_of_%d" name idx total // Create declaration (for the left dropdown) diff --git a/src/fsharp/service/ServiceUntypedParse.fs b/src/fsharp/service/ServiceUntypedParse.fs index 24bb1c0d1f..f142279474 100755 --- a/src/fsharp/service/ServiceUntypedParse.fs +++ b/src/fsharp/service/ServiceUntypedParse.fs @@ -788,8 +788,8 @@ module UntypedParseImpl = List.tryPick walkBinding bindings and walkIndexerArg = function - | SynIndexerArg.One e -> walkExpr e - | SynIndexerArg.Two(e1, e2) -> List.tryPick walkExpr [e1; e2] + | SynIndexerArg.One (e, _, _) -> walkExpr e + | SynIndexerArg.Two(e1, _, e2, _, _, _) -> List.tryPick walkExpr [e1; e2] and walkType = function | SynType.LongIdent ident -> diff --git a/src/fsharp/service/service.fs b/src/fsharp/service/service.fs index 7e1a9db19a..b4864ab1ef 100755 --- a/src/fsharp/service/service.fs +++ b/src/fsharp/service/service.fs @@ -54,7 +54,7 @@ type FSharpProjectOptions = UseScriptResolutionRules : bool LoadTime : System.DateTime UnresolvedReferences : UnresolvedReferencesSet option - OriginalLoadReferences: (range * string) list + OriginalLoadReferences: (range * string * string) list ExtraProjectInfo : obj option Stamp : int64 option } @@ -225,7 +225,7 @@ module CompileHelpers = // Register the reflected definitions for the dynamically generated assembly for resource in ilxMainModule.Resources.AsList do if IsReflectedDefinitionsResource resource then - Quotations.Expr.RegisterReflectedDefinitions (assemblyBuilder, moduleBuilder.Name, resource.GetBytes()) + Quotations.Expr.RegisterReflectedDefinitions (assemblyBuilder, moduleBuilder.Name, resource.GetBytes().ToArray()) // Save the result assemblyBuilderRef := Some assemblyBuilder @@ -249,7 +249,7 @@ type ScriptClosureCacheToken() = interface LockToken // There is only one instance of this type, held in FSharpChecker -type BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyContents, keepAllBackgroundResolutions, tryGetMetadataSnapshot, suggestNamesForErrors) as self = +type BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyContents, keepAllBackgroundResolutions, tryGetMetadataSnapshot, suggestNamesForErrors, keepAllBackgroundSymbolUses) as self = // STATIC ROOT: FSharpLanguageServiceTestable.FSharpChecker.backgroundCompiler.reactor: The one and only Reactor let reactor = Reactor.Singleton let beforeFileChecked = Event() @@ -306,7 +306,7 @@ type BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyC (ctok, legacyReferenceResolver, FSharpCheckerResultsSettings.defaultFSharpBinariesDir, frameworkTcImportsCache, loadClosure, Array.toList options.SourceFiles, Array.toList options.OtherOptions, projectReferences, options.ProjectDirectory, options.UseScriptResolutionRules, keepAssemblyContents, keepAllBackgroundResolutions, FSharpCheckerResultsSettings.maxTimeShareMilliseconds, - tryGetMetadataSnapshot, suggestNamesForErrors) + tryGetMetadataSnapshot, suggestNamesForErrors, keepAllBackgroundSymbolUses) match builderOpt with | None -> () @@ -904,9 +904,10 @@ type FSharpChecker(legacyReferenceResolver, keepAssemblyContents, keepAllBackgroundResolutions, tryGetMetadataSnapshot, - suggestNamesForErrors) = + suggestNamesForErrors, + keepAllBackgroundSymbolUses) = - let backgroundCompiler = BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyContents, keepAllBackgroundResolutions, tryGetMetadataSnapshot, suggestNamesForErrors) + let backgroundCompiler = BackgroundCompiler(legacyReferenceResolver, projectCacheSize, keepAssemblyContents, keepAllBackgroundResolutions, tryGetMetadataSnapshot, suggestNamesForErrors, keepAllBackgroundSymbolUses) static let globalInstance = lazy FSharpChecker.Create() @@ -923,7 +924,7 @@ type FSharpChecker(legacyReferenceResolver, let maxMemEvent = new Event() /// Instantiate an interactive checker. - static member Create(?projectCacheSize, ?keepAssemblyContents, ?keepAllBackgroundResolutions, ?legacyReferenceResolver, ?tryGetMetadataSnapshot, ?suggestNamesForErrors) = + static member Create(?projectCacheSize, ?keepAssemblyContents, ?keepAllBackgroundResolutions, ?legacyReferenceResolver, ?tryGetMetadataSnapshot, ?suggestNamesForErrors, ?keepAllBackgroundSymbolUses) = let legacyReferenceResolver = match legacyReferenceResolver with @@ -935,7 +936,8 @@ type FSharpChecker(legacyReferenceResolver, let projectCacheSizeReal = defaultArg projectCacheSize projectCacheSizeDefault let tryGetMetadataSnapshot = defaultArg tryGetMetadataSnapshot (fun _ -> None) let suggestNamesForErrors = defaultArg suggestNamesForErrors false - new FSharpChecker(legacyReferenceResolver, projectCacheSizeReal,keepAssemblyContents, keepAllBackgroundResolutions, tryGetMetadataSnapshot, suggestNamesForErrors) + let keepAllBackgroundSymbolUses = defaultArg keepAllBackgroundSymbolUses true + new FSharpChecker(legacyReferenceResolver, projectCacheSizeReal,keepAssemblyContents, keepAllBackgroundResolutions, tryGetMetadataSnapshot, suggestNamesForErrors, keepAllBackgroundSymbolUses) member __.ReferenceResolver = legacyReferenceResolver @@ -1012,7 +1014,7 @@ type FSharpChecker(legacyReferenceResolver, CompileHelpers.setOutputStreams execute // References used to capture the results of compilation - let tcImportsRef = ref (None: TcImports option) + let tcImportsRef = ref None let assemblyBuilderRef = ref None let tcImportsCapture = Some (fun tcImports -> tcImportsRef := Some tcImports) diff --git a/src/fsharp/service/service.fsi b/src/fsharp/service/service.fsi index 63109e4edd..b64017a742 100755 --- a/src/fsharp/service/service.fsi +++ b/src/fsharp/service/service.fsi @@ -54,7 +54,7 @@ type public FSharpProjectOptions = UnresolvedReferences : UnresolvedReferencesSet option /// Unused in this API and should be '[]' when used as user-specified input - OriginalLoadReferences: (range * string) list + OriginalLoadReferences: (range * string * string) list /// Extra information passed back on event trigger ExtraProjectInfo : obj option @@ -77,7 +77,7 @@ type public FSharpChecker = /// If false, do not keep full intermediate checking results from background checking suitable for returning from GetBackgroundCheckResultsForFileInProject. This reduces memory usage. /// An optional resolver for non-file references, for legacy purposes /// An optional resolver to access the contents of .NET binaries in a memory-efficient way - static member Create : ?projectCacheSize: int * ?keepAssemblyContents: bool * ?keepAllBackgroundResolutions: bool * ?legacyReferenceResolver: ReferenceResolver.Resolver * ?tryGetMetadataSnapshot: ILReaderTryGetMetadataSnapshot * ?suggestNamesForErrors: bool -> FSharpChecker + static member Create : ?projectCacheSize: int * ?keepAssemblyContents: bool * ?keepAllBackgroundResolutions: bool * ?legacyReferenceResolver: ReferenceResolver.Resolver * ?tryGetMetadataSnapshot: ILReaderTryGetMetadataSnapshot * ?suggestNamesForErrors: bool * ?keepAllBackgroundSymbolUses: bool -> FSharpChecker /// /// Parse a source code file, returning information about brace matching in the file. diff --git a/src/fsharp/symbols/SymbolHelpers.fs b/src/fsharp/symbols/SymbolHelpers.fs index cec9bfaf52..48a44c8abb 100644 --- a/src/fsharp/symbols/SymbolHelpers.fs +++ b/src/fsharp/symbols/SymbolHelpers.fs @@ -839,19 +839,22 @@ module internal SymbolHelpers = // This may explore assemblies that are not in the reference set. // In this case just assume the item is not suppressed. protectAssemblyExploration true (fun () -> - match item with - | Item.Types(it, [ty]) -> - isAppTy g ty && - g.suppressed_types - |> List.exists (fun supp -> - let generalizedSupp = generalizedTyconRef supp - // check the display name is precisely the one we're suppressing - isAppTy g generalizedSupp && it = supp.DisplayName && - // check if they are the same logical type (after removing all abbreviations) - let tcr1 = tcrefOfAppTy g ty - let tcr2 = tcrefOfAppTy g generalizedSupp - tyconRefEq g tcr1 tcr2) - | _ -> false) + match item with + | Item.Types(it, [ty]) -> + match tryDestAppTy g ty with + | ValueSome tcr1 -> + g.suppressed_types + |> List.exists (fun supp -> + let generalizedSupp = generalizedTyconRef supp + // check the display name is precisely the one we're suppressing + match tryDestAppTy g generalizedSupp with + | ValueSome tcr2 -> + it = supp.DisplayName && + // check if they are the same logical type (after removing all abbreviations) + tyconRefEq g tcr1 tcr2 + | _ -> false) + | _ -> false + | _ -> false) /// Filter types that are explicitly suppressed from the IntelliSense (such as uppercase "FSharpList", "Option", etc.) let RemoveExplicitlySuppressed (g: TcGlobals) (items: ItemWithInst list) = diff --git a/src/fsharp/symbols/Symbols.fs b/src/fsharp/symbols/Symbols.fs index d46313cb37..f4b2f6babe 100755 --- a/src/fsharp/symbols/Symbols.fs +++ b/src/fsharp/symbols/Symbols.fs @@ -99,7 +99,7 @@ module Impl = invalidOp (sprintf "The entity '%s' does not exist or is in an unresolved assembly." poorQualifiedName) /// Checking accessibility that arise from different compilations needs more care - this is a duplicate of the F# compiler code for this case - let checkForCrossProjectAccessibility (thisCcu2:CcuThunk, ad2) (thisCcu1, taccess1) = + let checkForCrossProjectAccessibility (ilg: ILGlobals) (thisCcu2:CcuThunk, ad2) (thisCcu1, taccess1) = match ad2 with | AccessibleFrom(cpaths2, _) -> let nameOfScoRef (thisCcu:CcuThunk) scoref = @@ -107,6 +107,7 @@ module Impl = | ILScopeRef.Local -> thisCcu.AssemblyName | ILScopeRef.Assembly aref -> aref.Name | ILScopeRef.Module mref -> mref.Name + | ILScopeRef.PrimaryAssembly -> ilg.primaryAssemblyName let canAccessCompPathFromCrossProject (CompPath(scoref1, cpath1)) (CompPath(scoref2, cpath2)) = let rec loop p1 p2 = match p1, p2 with @@ -328,7 +329,7 @@ and FSharpEntity(cenv: SymbolEnv, entity:EntityRef) = if entity.IsModuleOrNamespace then Item.ModuleOrNamespaces [entity] else Item.UnqualifiedType [entity]), (fun _this thisCcu2 ad -> - checkForCrossProjectAccessibility (thisCcu2, ad) (cenv.thisCcu, getApproxFSharpAccessibilityOfEntity entity)) + checkForCrossProjectAccessibility cenv.g.ilg (thisCcu2, ad) (cenv.thisCcu, getApproxFSharpAccessibilityOfEntity entity)) // && AccessibilityLogic.IsEntityAccessible cenv.amap range0 ad entity) ) @@ -757,7 +758,7 @@ and FSharpUnionCase(cenv, v: UnionCaseRef) = checkEntityIsResolved v.TyconRef Item.UnionCase(UnionCaseInfo(generalizeTypars v.TyconRef.TyparsNoRange, v), false)), (fun _this thisCcu2 ad -> - checkForCrossProjectAccessibility (thisCcu2, ad) (cenv.thisCcu, v.UnionCase.Accessibility)) + checkForCrossProjectAccessibility cenv.g.ilg (thisCcu2, ad) (cenv.thisCcu, v.UnionCase.Accessibility)) //&& AccessibilityLogic.IsUnionCaseAccessible cenv.amap range0 ad v) ) @@ -874,7 +875,7 @@ and FSharpField(cenv: SymbolEnv, d: FSharpFieldData) = | ILField f -> Item.ILField f), (fun this thisCcu2 ad -> - checkForCrossProjectAccessibility (thisCcu2, ad) (cenv.thisCcu, (this :?> FSharpField).Accessibility.Contents)) + checkForCrossProjectAccessibility cenv.g.ilg (thisCcu2, ad) (cenv.thisCcu, (this :?> FSharpField).Accessibility.Contents)) //&& //match d with //| Recd v -> AccessibilityLogic.IsRecdFieldAccessible cenv.amap range0 ad v @@ -1366,7 +1367,7 @@ and FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) = (fun () -> item), (fun this thisCcu2 ad -> let this = this :?> FSharpMemberOrFunctionOrValue - checkForCrossProjectAccessibility (thisCcu2, ad) (cenv.thisCcu, this.Accessibility.Contents)) + checkForCrossProjectAccessibility cenv.g.ilg (thisCcu2, ad) (cenv.thisCcu, this.Accessibility.Contents)) //&& //match d with //| E e -> @@ -2462,7 +2463,12 @@ and FSharpAssembly internal (cenv, ccu: CcuThunk) = member __.Contents : FSharpAssemblySignature = FSharpAssemblySignature(cenv, ccu) - override x.ToString() = ccu.ILScopeRef.QualifiedName + override x.ToString() = + match ccu.ILScopeRef with + | ILScopeRef.PrimaryAssembly -> + cenv.g.ilg.primaryAssemblyRef.QualifiedName + | scoref -> + scoref.QualifiedName /// Represents open declaration in F# code. [] @@ -2512,5 +2518,30 @@ type FSharpSymbolUse(g:TcGlobals, denv: DisplayEnv, symbol:FSharpSymbol, itemOcc member __.Range = Range.toZ range member __.RangeAlternate = range + + member this.IsPrivateToFile = + let isPrivate = + match this.Symbol with + | :? FSharpMemberOrFunctionOrValue as m -> not m.IsModuleValueOrMember || m.Accessibility.IsPrivate + | :? FSharpEntity as m -> m.Accessibility.IsPrivate + | :? FSharpGenericParameter -> true + | :? FSharpUnionCase as m -> m.Accessibility.IsPrivate + | :? FSharpField as m -> m.Accessibility.IsPrivate + | _ -> false + + let declarationLocation = + match this.Symbol.SignatureLocation with + | Some x -> Some x + | _ -> + match this.Symbol.DeclarationLocation with + | Some x -> Some x + | _ -> this.Symbol.ImplementationLocation + + let declaredInTheFile = + match declarationLocation with + | Some declRange -> declRange.FileName = this.RangeAlternate.FileName + | _ -> false + + isPrivate && declaredInTheFile override __.ToString() = sprintf "%O, %O, %O" symbol itemOcc range diff --git a/src/fsharp/symbols/Symbols.fsi b/src/fsharp/symbols/Symbols.fsi index 6893097ed9..ad402418c6 100644 --- a/src/fsharp/symbols/Symbols.fsi +++ b/src/fsharp/symbols/Symbols.fsi @@ -1101,3 +1101,5 @@ type public FSharpSymbolUse = /// The range of text representing the reference to the symbol member RangeAlternate: range + /// Indicates if the FSharpSymbolUse is declared as private + member IsPrivateToFile : bool diff --git a/src/fsharp/tast.fs b/src/fsharp/tast.fs index a122bfe146..27caa7b600 100644 --- a/src/fsharp/tast.fs +++ b/src/fsharp/tast.fs @@ -515,6 +515,7 @@ let getNameOfScopeRef sref = | ILScopeRef.Local -> "" | ILScopeRef.Module mref -> mref.Name | ILScopeRef.Assembly aref -> aref.Name + | ILScopeRef.PrimaryAssembly -> "" #if !NO_EXTENSIONTYPING let ComputeDefinitionLocationOfProvidedItem (p: Tainted<#IProvidedCustomAttributeProvider>) = @@ -1830,21 +1831,21 @@ and [] // We do not need to lock this mutable state this it is only ever accessed from the compiler thread. let activePatternElemRefCache: NameMap option ref = ref None - let modulesByDemangledNameCache: NameMap option ref = ref None + let mutable modulesByDemangledNameCache: NameMap option = None - let exconsByDemangledNameCache: NameMap option ref = ref None + let mutable exconsByDemangledNameCache: NameMap option = None - let tyconsByDemangledNameAndArityCache: LayeredMap option ref = ref None + let mutable tyconsByDemangledNameAndArityCache: LayeredMap option = None - let tyconsByAccessNamesCache: LayeredMultiMap option ref = ref None + let mutable tyconsByAccessNamesCache: LayeredMultiMap option = None - let tyconsByMangledNameCache: NameMap option ref = ref None + let mutable tyconsByMangledNameCache: NameMap option = None - let allEntitiesByMangledNameCache: NameMap option ref = ref None + let mutable allEntitiesByMangledNameCache: NameMap option = None - let allValsAndMembersByPartialLinkageKeyCache: MultiMap option ref = ref None + let mutable allValsAndMembersByPartialLinkageKeyCache: MultiMap option = None - let allValsByLogicalNameCache: NameMap option ref = ref None + let mutable allValsByLogicalNameCache: NameMap option = None /// Namespace or module-compiled-as-type? member mtyp.ModuleOrNamespaceKind = kind @@ -1861,17 +1862,17 @@ and [] /// Mutation used during compilation of FSharp.Core.dll member mtyp.AddModuleOrNamespaceByMutation(modul: ModuleOrNamespace) = entities <- QueueList.appendOne entities modul - modulesByDemangledNameCache := None - allEntitiesByMangledNameCache := None + modulesByDemangledNameCache <- None + allEntitiesByMangledNameCache <- None #if !NO_EXTENSIONTYPING /// Mutation used in hosting scenarios to hold the hosted types in this module or namespace member mtyp.AddProvidedTypeEntity(entity: Entity) = entities <- QueueList.appendOne entities entity - tyconsByMangledNameCache := None - tyconsByDemangledNameAndArityCache := None - tyconsByAccessNamesCache := None - allEntitiesByMangledNameCache := None + tyconsByMangledNameCache <- None + tyconsByDemangledNameAndArityCache <- None + tyconsByAccessNamesCache <- None + allEntitiesByMangledNameCache <- None #endif /// Return a new module or namespace type with an entity added. @@ -1901,19 +1902,19 @@ and [] /// table is indexed by both name and generic arity. This means that for generic /// types "List`1", the entry (List, 1) will be present. member mtyp.TypesByDemangledNameAndArity m = - cacheOptRef tyconsByDemangledNameAndArityCache (fun () -> + cacheOptByref &tyconsByDemangledNameAndArityCache (fun () -> LayeredMap.Empty.AddAndMarkAsCollapsible( mtyp.TypeAndExceptionDefinitions |> List.map (fun (tc: Tycon) -> KeyTyconByDemangledNameAndArity tc.LogicalName (tc.Typars m) tc) |> List.toArray)) /// Get a table of types defined within this module, namespace or type. The /// table is indexed by both name and, for generic types, also by mangled name. member mtyp.TypesByAccessNames = - cacheOptRef tyconsByAccessNamesCache (fun () -> + cacheOptByref &tyconsByAccessNamesCache (fun () -> LayeredMultiMap.Empty.AddAndMarkAsCollapsible (mtyp.TypeAndExceptionDefinitions |> List.toArray |> Array.collect (fun (tc: Tycon) -> KeyTyconByAccessNames tc.LogicalName tc))) // REVIEW: we can remove this lookup and use AllEntitiesByMangledName instead? member mtyp.TypesByMangledName = let addTyconByMangledName (x: Tycon) tab = NameMap.add x.LogicalName x tab - cacheOptRef tyconsByMangledNameCache (fun () -> + cacheOptByref &tyconsByMangledNameCache (fun () -> List.foldBack addTyconByMangledName mtyp.TypeAndExceptionDefinitions Map.empty) /// Get a table of entities indexed by both logical and compiled names @@ -1925,7 +1926,7 @@ and [] if name1 = name2 then tab else NameMap.add name2 x tab - cacheOptRef allEntitiesByMangledNameCache (fun () -> + cacheOptByref &allEntitiesByMangledNameCache (fun () -> QueueList.foldBack addEntityByMangledName entities Map.empty) /// Get a table of entities indexed by both logical name @@ -1942,7 +1943,7 @@ and [] MultiMap.add key x tab else tab - cacheOptRef allValsAndMembersByPartialLinkageKeyCache (fun () -> + cacheOptByref &allValsAndMembersByPartialLinkageKeyCache (fun () -> QueueList.foldBack addValByMangledName vals MultiMap.empty) /// Try to find the member with the given linkage key in the given module. @@ -1963,7 +1964,7 @@ and [] NameMap.add x.LogicalName x tab else tab - cacheOptRef allValsByLogicalNameCache (fun () -> + cacheOptByref &allValsByLogicalNameCache (fun () -> QueueList.foldBack addValByName vals Map.empty) /// Compute a table of values and members indexed by logical name. @@ -1978,7 +1979,7 @@ and [] /// Get a table of F# exception definitions indexed by demangled name, so 'FailureException' is indexed by 'Failure' member mtyp.ExceptionDefinitionsByDemangledName = let add (tycon: Tycon) acc = NameMap.add tycon.LogicalName tycon acc - cacheOptRef exconsByDemangledNameCache (fun () -> + cacheOptByref &exconsByDemangledNameCache (fun () -> List.foldBack add mtyp.ExceptionDefinitions Map.empty) /// Get a table of nested module and namespace fragments indexed by demangled name (so 'ListModule' becomes 'List') @@ -1987,7 +1988,7 @@ and [] if entity.IsModuleOrNamespace then NameMap.add entity.DemangledModuleOrNamespaceName entity acc else acc - cacheOptRef modulesByDemangledNameCache (fun () -> + cacheOptByref &modulesByDemangledNameCache (fun () -> QueueList.foldBack add entities Map.empty) [] @@ -2356,7 +2357,7 @@ and | SupportsNull of range /// Indicates a constraint that a type has a member with the given signature - | MayResolveMember of TraitConstraintInfo * range + | MayResolveMember of TraitConstraintInfo * range /// Indicates a constraint that a type is a non-Nullable value type /// These are part of .NET's model of generic constraints, and in order to @@ -2407,6 +2408,9 @@ and /// Get the member name associated with the member constraint. member x.MemberName = (let (TTrait(_, nm, _, _, _, _)) = x in nm) + /// Get the argument types required of a member in order to solve the constraint + member x.ArgumentTypes = (let (TTrait(_, _, _, argtys, _, _)) = x in argtys) + /// Get the return type recorded in the member constraint. member x.ReturnType = (let (TTrait(_, _, _, _, ty, _)) = x in ty) @@ -4879,7 +4883,7 @@ and | Label of ILCodeLabel /// Pseudo method calls. This is used for overloaded operations like op_Addition. - | TraitCall of TraitConstraintInfo + | TraitCall of TraitConstraintInfo /// Operation nodes representing C-style operations on byrefs and mutable vals (l-values) | LValueOp of LValueOperation * ValRef @@ -5775,10 +5779,7 @@ let NewTycon (cpath, nm, m, access, reprAccess, kind, typars, docOption, usesPre let NewILTycon nlpath (nm, m) tps (scoref: ILScopeRef, enc, tdef: ILTypeDef) mtyp = - - // NOTE: hasSelfReferentialCtor=false is an assumption about mscorlib - let hasSelfReferentialCtor = tdef.IsClass && (not scoref.IsAssemblyRef && scoref.AssemblyRef.Name = "mscorlib") - let tycon = NewTycon(nlpath, nm, m, taccessPublic, taccessPublic, TyparKind.Type, tps, XmlDoc.Empty, true, false, hasSelfReferentialCtor, mtyp) + let tycon = NewTycon(nlpath, nm, m, taccessPublic, taccessPublic, TyparKind.Type, tps, XmlDoc.Empty, true, false, false, mtyp) tycon.entity_tycon_repr <- TILObjectRepr (TILObjectReprData (scoref, enc, tdef)) tycon.TypeContents.tcaug_closed <- true diff --git a/src/ilx/ilxsettings.fs b/src/ilx/ilxsettings.fs index 64ea572e02..2355a6b1b6 100755 --- a/src/ilx/ilxsettings.fs +++ b/src/ilx/ilxsettings.fs @@ -10,18 +10,18 @@ type IlxCallImplementation = | VirtEntriesVirtCode //++GLOBAL MUTABLE STATE (concurrency-safe because assigned only during F# library compilation) -let ilxCompilingFSharpCoreLib = ref false +let mutable ilxCompilingFSharpCoreLib = false //++GLOBAL MUTABLE STATE (concurrency-safe because assigned only during F# library compilation) -let ilxFsharpCoreLibAssemRef = ref (None : ILAssemblyRef option) +let mutable ilxFsharpCoreLibAssemRef = None : ILAssemblyRef option /// Scope references for FSharp.Core.dll let ilxFsharpCoreLibScopeRef () = - if !ilxCompilingFSharpCoreLib then + if ilxCompilingFSharpCoreLib then ILScopeRef.Local else let assemblyRef = - match !ilxFsharpCoreLibAssemRef with + match ilxFsharpCoreLibAssemRef with | Some o -> o | None -> // The exact public key token and version used here don't actually matter, or shouldn't. diff --git a/src/utils/CompilerLocationUtils.fs b/src/utils/CompilerLocationUtils.fs index 6d2a929f45..923ab41843 100755 --- a/src/utils/CompilerLocationUtils.fs +++ b/src/utils/CompilerLocationUtils.fs @@ -1,10 +1,14 @@ // Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. namespace Internal.Utilities + open System +open System.Diagnostics open System.IO -open Microsoft.Win32 +open System.Reflection open System.Runtime.InteropServices +open Microsoft.Win32 +open Microsoft.FSharp.Core #nowarn "44" // ConfigurationSettings is obsolete but the new stuff is horribly complicated. @@ -24,7 +28,7 @@ module internal FSharpEnvironment = let versionOf<'t> = typeof<'t>.Assembly.GetName().Version.ToString() - let FSharpCoreLibRunningVersion = + let FSharpCoreLibRunningVersion = try match versionOf with | null -> None | "" -> None @@ -71,10 +75,11 @@ module internal FSharpEnvironment = (try downcast Microsoft.Win32.Registry.GetValue("HKEY_LOCAL_MACHINE\\"+subKey,null,null) with e-> - System.Diagnostics.Debug.Assert(false, sprintf "Failed in GetDefaultRegistryStringValueViaDotNet: %s" (e.ToString())) +#if DEBUG + Debug.Assert(false, sprintf "Failed in GetDefaultRegistryStringValueViaDotNet: %s" (e.ToString())) +#endif null) - let Get32BitRegistryStringValueViaPInvoke(subKey:string) = Option.ofString (try @@ -114,11 +119,13 @@ module internal FSharpEnvironment = if pathResult <> IntPtr.Zero then Marshal.FreeCoTaskMem(pathResult) with e-> - System.Diagnostics.Debug.Assert(false, sprintf "Failed in Get32BitRegistryStringValueViaPInvoke: %s" (e.ToString())) +#if DEBUG + Debug.Assert(false, sprintf "Failed in Get32BitRegistryStringValueViaPInvoke: %s" (e.ToString())) +#endif null) let is32Bit = IntPtr.Size = 4 - + let runningOnMono = try System.Type.GetType("Mono.Runtime") <> null with e-> false let tryRegKey(subKey:string) = @@ -133,7 +140,7 @@ module internal FSharpEnvironment = // by comparing against the result from GetDefaultRegistryStringValueViaDotNet(...) #if DEBUG let viaPinvoke = Get32BitRegistryStringValueViaPInvoke(subKey) - System.Diagnostics.Debug.Assert((s = viaPinvoke), sprintf "32bit path: pi=%A def=%A" viaPinvoke s) + Debug.Assert((s = viaPinvoke), sprintf "32bit path: pi=%A def=%A" viaPinvoke s) #endif s else @@ -141,13 +148,9 @@ module internal FSharpEnvironment = #endif let internal tryCurrentDomain() = - let pathFromCurrentDomain = -#if FX_NO_APP_DOMAINS - System.AppContext.BaseDirectory -#else - System.AppDomain.CurrentDomain.BaseDirectory -#endif - if not(String.IsNullOrEmpty(pathFromCurrentDomain)) then + let pathFromCurrentDomain = + AppDomain.CurrentDomain.BaseDirectory + if not(String.IsNullOrEmpty(pathFromCurrentDomain)) then Some pathFromCurrentDomain else None @@ -157,14 +160,17 @@ module internal FSharpEnvironment = #else let internal tryAppConfig (_appConfigKey:string) = let locationFromAppConfig = System.Configuration.ConfigurationSettings.AppSettings.[_appConfigKey] - System.Diagnostics.Debug.Print(sprintf "Considering _appConfigKey %s which has value '%s'" _appConfigKey locationFromAppConfig) - +#if DEBUG + Debug.Print(sprintf "Considering _appConfigKey %s which has value '%s'" _appConfigKey locationFromAppConfig) +#endif if String.IsNullOrEmpty(locationFromAppConfig) then None else - let exeAssemblyFolder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + let exeAssemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) let locationFromAppConfig = locationFromAppConfig.Replace("{exepath}", exeAssemblyFolder) - System.Diagnostics.Debug.Print(sprintf "Using path %s" locationFromAppConfig) +#if DEBUG + Debug.Print(sprintf "Using path %s" locationFromAppConfig) +#endif Some locationFromAppConfig #endif @@ -175,40 +181,32 @@ module internal FSharpEnvironment = // - default F# binaries directory in service.fs (REVIEW: check this) // - default location of fsi.exe in FSharp.VS.FSI.dll (REVIEW: check this) // - default F# binaries directory in (project system) Project.fs - let BinFolderOfDefaultFSharpCompiler(probePoint:string option) = -#if FX_NO_WIN_REGISTRY - ignore probePoint -#if FX_NO_APP_DOMAINS - Some System.AppContext.BaseDirectory -#else - Some System.AppDomain.CurrentDomain.BaseDirectory -#endif -#else + let BinFolderOfDefaultFSharpCompiler(probePoint:string option) = // Check for an app.config setting to redirect the default compiler location // Like fsharp-compiler-location try // FSharp.Compiler support setting an appKey for compiler location. I've never seen this used. let result = tryAppConfig "fsharp-compiler-location" - match result with - | Some _ -> result + match result with + | Some _ -> result | None -> let safeExists f = (try File.Exists(f) with _ -> false) + // Look in the probePoint if given, e.g. look for a compiler alongside of FSharp.Build.dll match probePoint with | Some p when safeExists (Path.Combine(p,"FSharp.Core.dll")) -> Some p - | _ -> - // We let you set FSHARP_COMPILER_BIN. I've rarely seen this used and its not documented in the install instructions. - let result = System.Environment.GetEnvironmentVariable("FSHARP_COMPILER_BIN") - if not (String.IsNullOrEmpty(result)) then - Some result - else - // For the prototype compiler, we can just use the current domain - tryCurrentDomain() - with e -> - None - + | _ -> + // We let you set FSHARP_COMPILER_BIN. I've rarely seen this used and its not documented in the install instructions. + let result = Environment.GetEnvironmentVariable("FSHARP_COMPILER_BIN") + if not (String.IsNullOrEmpty(result)) then + Some result + else + // For the prototype compiler, we can just use the current domain + tryCurrentDomain() + with e -> None +#if !FX_NO_WIN_REGISTRY // Apply the given function to the registry entry corresponding to the subKey. // The reg key is disposed at the end of the scope. let useKey subKey f = @@ -233,7 +231,7 @@ module internal FSharpEnvironment = IsNetFx45OrAboveInstalledAt @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client" || IsNetFx45OrAboveInstalledAt @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" || runningOnMono - + // Check if the running framework version is 4.5 or above. // Use the presence of v4.5.x in the registry to distinguish between 4.0 and 4.5 let IsRunningOnNetFx45OrAbove = @@ -242,3 +240,112 @@ module internal FSharpEnvironment = major > 4 || (major = 4 && IsNetFx45OrAboveInstalled) #endif + + // Specify the tooling-compatible fragments of a path such as: + // typeproviders/fsharp41/net461/MyProvider.DesignTime.dll + // tools/fsharp41/net461/MyProvider.DesignTime.dll + // See https://github.com/Microsoft/visualfsharp/issues/3736 + + // Represents the F#-compiler <-> type provider protocol. + // When the API or protocol updates, add a new version moniker to the front of the list here. + let toolingCompatibleTypeProviderProtocolMonikers() = + [ "fsharp41" ] + + // Detect the host tooling context + let toolingCompatibleVersions = + if typeof.Assembly.GetName().Name = "mscorlib" then + [| "net48"; "net472"; "net471";"net47";"net462";"net461"; "net452"; "net451"; "net45"; "netstandard2.0" |] + elif typeof.Assembly.GetName().Name = "System.Private.CoreLib" then + [| "netcoreapp3.0"; "netstandard2.1"; "netcoreapp2.2"; "netcoreapp2.1"; "netstandard2.0" |] + else + System.Diagnostics.Debug.Assert(false, "Couldn't determine runtime tooling context, assuming it supports at least .NET Standard 2.0") + [| "netstandard2.0" |] + + let toolPaths = [| "tools"; "typeproviders" |] + + let toolingCompatiblePaths() = [ + for toolPath in toolPaths do + for protocol in toolingCompatibleTypeProviderProtocolMonikers() do + for netRuntime in toolingCompatibleVersions do + yield Path.Combine(toolPath, protocol, netRuntime) + ] + + let rec searchToolPaths path compilerToolPaths = + seq { + let searchToolPath path = + seq { + yield path + for toolPath in toolingCompatiblePaths() do + yield Path.Combine (path, toolPath) + } + + for toolPath in compilerToolPaths do + yield! searchToolPath toolPath + + match path with + | None -> () + | Some path -> yield! searchToolPath path + } + + let getTypeProviderAssembly (runTimeAssemblyFileName: string, designTimeAssemblyName: string, compilerToolPaths: string list, raiseError) = + // Find and load the designer assembly for the type provider component. + // We look in the directories stepping up from the location of the runtime assembly. + let loadFromLocation designTimeAssemblyPath = + try + printfn "Using: %s" designTimeAssemblyPath + Some (Assembly.UnsafeLoadFrom designTimeAssemblyPath) + with e -> + raiseError e + + let rec searchParentDirChain path assemblyName = + seq { + match path with + | None -> () + | Some (p:string) -> + match Path.GetDirectoryName(p) with + | s when s = "" || s = null || Path.GetFileName(p) = "packages" || s = p -> () + | parentDir -> yield! searchParentDirChain (Some parentDir) assemblyName + + for p in searchToolPaths path compilerToolPaths do + let fileName = Path.Combine (p, assemblyName) + if File.Exists fileName then yield fileName + } + + let loadFromParentDirRelativeToRuntimeAssemblyLocation designTimeAssemblyName = + let runTimeAssemblyPath = Path.GetDirectoryName runTimeAssemblyFileName + let paths = searchParentDirChain (Some runTimeAssemblyPath) designTimeAssemblyName + paths + |> Seq.iter(function res -> printfn ">>>> %s" res) + paths + |> Seq.tryHead + |> function + | Some res -> loadFromLocation res + | None -> + // The search failed, just load from the first location and report an error + let runTimeAssemblyPath = Path.GetDirectoryName runTimeAssemblyFileName + loadFromLocation (Path.Combine (runTimeAssemblyPath, designTimeAssemblyName)) + + printfn "=============== S T A R T ==========================================" + if designTimeAssemblyName.EndsWith(".dll", StringComparison.OrdinalIgnoreCase) then + loadFromParentDirRelativeToRuntimeAssemblyLocation designTimeAssemblyName + else + // Cover the case where the ".dll" extension has been left off and no version etc. has been used in the assembly + // string specification. The Name=FullName comparison is particularly strange, and was there to support + // design-time DLLs specified using "x.DesignTIme, Version= ..." long assembly names and GAC loads. + // These kind of design-time assembly specifications are no longer used to our knowledge so that comparison is basically legacy + // and will always succeed. + let name = AssemblyName (Path.GetFileNameWithoutExtension designTimeAssemblyName) + if name.Name.Equals(name.FullName, StringComparison.OrdinalIgnoreCase) then + let designTimeFileName = designTimeAssemblyName + ".dll" + loadFromParentDirRelativeToRuntimeAssemblyLocation designTimeFileName + else + // Load from the GAC using Assembly.Load. This is legacy since type provider design-time components are + // never in the GAC these days and "x.DesignTIme, Version= ..." specifications are never used. + try + let name = AssemblyName designTimeAssemblyName + Some (Assembly.Load (name)) + with e -> + raiseError e + + let getCompilerToolsDesignTimeAssemblyPaths compilerToolPaths = + searchToolPaths None compilerToolPaths diff --git a/src/utils/TaggedCollections.fs b/src/utils/TaggedCollections.fs index 54f7e07fc5..479b8def82 100755 --- a/src/utils/TaggedCollections.fs +++ b/src/utils/TaggedCollections.fs @@ -478,15 +478,15 @@ namespace Internal.Utilities.Collections.Tagged not stack.IsEmpty let toSeq s = - let i = ref (SetIterator s) + let mutable i = SetIterator s { new IEnumerator<_> with - member __.Current = (!i).Current + member _.Current = i.Current interface System.Collections.IEnumerator with - member __.Current = box (!i).Current - member __.MoveNext() = (!i).MoveNext() - member __.Reset() = i := SetIterator s + member _.Current = box i.Current + member _.MoveNext() = i.MoveNext() + member _.Reset() = i <- SetIterator s interface System.IDisposable with - member __.Dispose() = () } + member _.Dispose() = () } //-------------------------------------------------------------------------- // Set comparison. This can be expensive. @@ -545,8 +545,8 @@ namespace Internal.Utilities.Collections.Tagged loop s [] let copyToArray s (arr: _[]) i = - let j = ref i - iter (fun x -> arr.[!j] <- x; j := !j + 1) s + let mutable j = i + iter (fun x -> arr.[j] <- x; j <- j + 1) s let toArray s = let n = (count s) @@ -1019,8 +1019,8 @@ namespace Internal.Utilities.Collections.Tagged mkFromEnumerator comparer empty ie let copyToArray s (arr: _[]) i = - let j = ref i - s |> iter (fun x y -> arr.[!j] <- KeyValuePair(x,y); j := !j + 1) + let mutable j = i + s |> iter (fun x y -> arr.[j] <- KeyValuePair(x,y); j <- j + 1) /// Imperative left-to-right iterators. @@ -1078,13 +1078,13 @@ namespace Internal.Utilities.Collections.Tagged not stack.IsEmpty let toSeq s = - let i = ref (MapIterator(s)) + let mutable i = MapIterator(s) { new IEnumerator<_> with - member self.Current = (!i).Current + member self.Current = i.Current interface System.Collections.IEnumerator with - member self.Current = box (!i).Current - member self.MoveNext() = (!i).MoveNext() - member self.Reset() = i := MapIterator(s) + member self.Current = box i.Current + member self.MoveNext() = i.MoveNext() + member self.Reset() = i <- MapIterator(s) interface System.IDisposable with member self.Dispose() = ()} diff --git a/src/utils/prim-parsing.fs b/src/utils/prim-parsing.fs index b58e592278..996cdc67d5 100755 --- a/src/utils/prim-parsing.fs +++ b/src/utils/prim-parsing.fs @@ -7,6 +7,7 @@ namespace Internal.Utilities.Text.Parsing open Internal.Utilities.Text.Lexing open System +open System.Buffers exception RecoverableParseError exception Accept of obj @@ -131,11 +132,7 @@ module internal Implementation = //------------------------------------------------------------------------- // Read the tables written by FSYACC. - type AssocTable(elemTab:uint16[], offsetTab:uint16[]) = - let cacheSize = 7919 // the 1000'th prime - // Use a simpler hash table with faster lookup, but only one - // hash bucket per key. - let cache = Array.zeroCreate (cacheSize * 2) + type AssocTable(elemTab: uint16[], offsetTab: uint16[], cache: int[], cacheSize: int) = member t.ReadAssoc (minElemNum,maxElemNum,defaultValueOfAssoc,keyToFind) = // do a binary chop on the table @@ -234,8 +231,21 @@ module internal Implementation = let ruleValues = (Array.zeroCreate 100 : obj[]) let lhsPos = (Array.zeroCreate 2 : Position[]) let reductions = tables.reductions - let actionTable = new AssocTable(tables.actionTableElements, tables.actionTableRowOffsets) - let gotoTable = new AssocTable(tables.gotos, tables.sparseGotoTableRowOffsets) + let cacheSize = 7919 // the 1000'th prime + // Use a simpler hash table with faster lookup, but only one + // hash bucket per key. + let actionTableCache = ArrayPool.Shared.Rent(cacheSize * 2) + let gotoTableCache = ArrayPool.Shared.Rent(cacheSize * 2) + // Clear the arrays since ArrayPool does not + Array.Clear(actionTableCache, 0, actionTableCache.Length) + Array.Clear(gotoTableCache, 0, gotoTableCache.Length) + use _cacheDisposal = + { new IDisposable with + member _.Dispose() = + ArrayPool.Shared.Return actionTableCache + ArrayPool.Shared.Return gotoTableCache } + let actionTable = AssocTable(tables.actionTableElements, tables.actionTableRowOffsets, actionTableCache, cacheSize) + let gotoTable = AssocTable(tables.gotos, tables.sparseGotoTableRowOffsets, gotoTableCache, cacheSize) let stateToProdIdxsTable = new IdxToIdxListTable(tables.stateToProdIdxsTableElements, tables.stateToProdIdxsTableRowOffsets) let parseState = diff --git a/src/utils/sformat.fs b/src/utils/sformat.fs index 21b84f5bef..013e55626e 100755 --- a/src/utils/sformat.fs +++ b/src/utils/sformat.fs @@ -822,9 +822,9 @@ namespace Microsoft.FSharp.Text.StructuredPrintfImpl let path = Dictionary(10,HashIdentity.Reference) // Roughly count the "nodes" printed, e.g. leaf items and inner nodes, but not every bracket and comma. - let size = ref opts.PrintSize - let exceededPrintSize() = !size<=0 - let countNodes n = if !size > 0 then size := !size - n else () // no need to keep decrementing (and avoid wrap around) + let mutable size = opts.PrintSize + let exceededPrintSize() = size<=0 + let countNodes n = if size > 0 then size <- size - n else () // no need to keep decrementing (and avoid wrap around) let stopShort _ = exceededPrintSize() // for unfoldL // Recursive descent diff --git a/tests/FSharp.Compiler.Private.Scripting.UnitTests/CompletionTests.fs b/tests/FSharp.Compiler.Private.Scripting.UnitTests/CompletionTests.fs deleted file mode 100644 index cd7da3c7d3..0000000000 --- a/tests/FSharp.Compiler.Private.Scripting.UnitTests/CompletionTests.fs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. - -namespace FSharp.Compiler.Scripting.UnitTests - -open System -open System.Threading.Tasks -open FSharp.Compiler.Scripting -open NUnit.Framework - -[] -type CompletionTests() = - - [] - member _.``Instance completions in the same submission``() = - async { - use script = new FSharpScript() - let lines = [ "let x = 1" - "x." ] - let! completions = script.GetCompletionItems(String.Join("\n", lines), 2, 2) - let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "CompareTo") - Assert.AreEqual(1, matchingCompletions.Length) - } |> Async.StartAsTask :> Task - - [] - member _.``Instance completions from a previous submission``() = - async { - use script = new FSharpScript() - script.Eval("let x = 1") |> ignoreValue - let! completions = script.GetCompletionItems("x.", 1, 2) - let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "CompareTo") - Assert.AreEqual(1, matchingCompletions.Length) - } |> Async.StartAsTask :> Task - - [] - member _.``Static member completions``() = - async { - use script = new FSharpScript() - let! completions = script.GetCompletionItems("System.String.", 1, 14) - let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "Join") - Assert.GreaterOrEqual(matchingCompletions.Length, 1) - } |> Async.StartAsTask :> Task - - [] - member _.``Type completions from namespace``() = - async { - use script = new FSharpScript() - let! completions = script.GetCompletionItems("System.", 1, 7) - let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "String") - Assert.GreaterOrEqual(matchingCompletions.Length, 1) - } |> Async.StartAsTask :> Task - - [] - member _.``Namespace completions``() = - async { - use script = new FSharpScript() - let! completions = script.GetCompletionItems("System.", 1, 7) - let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "Collections") - Assert.AreEqual(1, matchingCompletions.Length) - } |> Async.StartAsTask :> Task - - [] - member _.``Extension method completions``() = - async { - use script = new FSharpScript() - let lines = [ "open System.Linq" - "let list = new System.Collections.Generic.List()" - "list." ] - let! completions = script.GetCompletionItems(String.Join("\n", lines), 3, 5) - let matchingCompletions = completions |> Array.filter (fun d -> d.Name = "Select") - Assert.AreEqual(1, matchingCompletions.Length) - } |> Async.StartAsTask :> Task diff --git a/tests/FSharp.Compiler.Private.Scripting.UnitTests/Directory.Build.props b/tests/FSharp.Compiler.Private.Scripting.UnitTests/Directory.Build.props deleted file mode 100644 index 7cd41381b5..0000000000 --- a/tests/FSharp.Compiler.Private.Scripting.UnitTests/Directory.Build.props +++ /dev/null @@ -1,9 +0,0 @@ - - - - true - - - - - diff --git a/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharp.Compiler.Private.Scripting.UnitTests.fsproj b/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharp.Compiler.Private.Scripting.UnitTests.fsproj deleted file mode 100644 index 7ecca98b7c..0000000000 --- a/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharp.Compiler.Private.Scripting.UnitTests.fsproj +++ /dev/null @@ -1,24 +0,0 @@ - - - - - net472;netcoreapp3.0 - netcoreapp3.0 - Library - true - nunit - true - - - - - - - - - - - - - - diff --git a/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharpScriptTests.fs b/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharpScriptTests.fs deleted file mode 100644 index 5a57392031..0000000000 --- a/tests/FSharp.Compiler.Private.Scripting.UnitTests/FSharpScriptTests.fs +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. - -namespace FSharp.Compiler.Scripting.UnitTests - -open System -open System.IO -open System.Threading -open FSharp.Compiler.Interactive.Shell -open FSharp.Compiler.Scripting -open NUnit.Framework - -[] -type InteractiveTests() = - - [] - member __.``Eval object value``() = - use script = new FSharpScript() - let opt = script.Eval("1+1") |> getValue - let value = opt.Value - Assert.AreEqual(typeof, value.ReflectionType) - Assert.AreEqual(2, value.ReflectionValue :?> int) - - [] - member __.``Capture console input``() = - use script = new FSharpScript(captureInput=true) - script.ProvideInput "stdin:1234\r\n" - let opt = script.Eval("System.Console.ReadLine()") |> getValue - let value = opt.Value - Assert.AreEqual(typeof, value.ReflectionType) - Assert.AreEqual("stdin:1234", value.ReflectionValue) - - [] - member __.``Capture console output/error``() = - use script = new FSharpScript(captureOutput=true) - use sawOutputSentinel = new ManualResetEvent(false) - use sawErrorSentinel = new ManualResetEvent(false) - script.OutputProduced.Add (fun line -> if line = "stdout:1234" then sawOutputSentinel.Set() |> ignore) - script.ErrorProduced.Add (fun line -> if line = "stderr:5678" then sawErrorSentinel.Set() |> ignore) - script.Eval("printfn \"stdout:1234\"; eprintfn \"stderr:5678\"") |> ignoreValue - Assert.True(sawOutputSentinel.WaitOne(TimeSpan.FromSeconds(5.0)), "Expected to see output sentinel value written") - Assert.True(sawErrorSentinel.WaitOne(TimeSpan.FromSeconds(5.0)), "Expected to see error sentinel value written") - - [] - member __.``Maintain state between submissions``() = - use script = new FSharpScript() - script.Eval("let add x y = x + y") |> ignoreValue - let opt = script.Eval("add 2 3") |> getValue - let value = opt.Value - Assert.AreEqual(typeof, value.ReflectionType) - Assert.AreEqual(5, value.ReflectionValue :?> int) - - [] - member __.``Assembly reference event successful``() = - use script = new FSharpScript() - let testAssembly = "System.dll" - let mutable assemblyResolveEventCount = 0 - let mutable foundAssemblyReference = false - Event.add (fun (assembly: string) -> - assemblyResolveEventCount <- assemblyResolveEventCount + 1 - foundAssemblyReference <- String.Compare(testAssembly, Path.GetFileName(assembly), StringComparison.OrdinalIgnoreCase) = 0) - script.AssemblyReferenceAdded - script.Eval(sprintf "#r \"%s\"" testAssembly) |> ignoreValue - Assert.AreEqual(1, assemblyResolveEventCount) - Assert.True(foundAssemblyReference) - - [] - member __.``Assembly reference event unsuccessful``() = - use script = new FSharpScript() - let testAssembly = "not-an-assembly-that-can-be-found.dll" - let mutable foundAssemblyReference = false - Event.add (fun _ -> foundAssemblyReference <- true) script.AssemblyReferenceAdded - let _result, errors = script.Eval(sprintf "#r \"%s\"" testAssembly) - Assert.AreEqual(1, errors.Length) - Assert.False(foundAssemblyReference) - - [] - member _.``Compilation errors report a specific exception``() = - use script = new FSharpScript() - let result, _errors = script.Eval("abc") - match result with - | Ok(_) -> Assert.Fail("expected a failure") - | Error(ex) -> Assert.IsInstanceOf(ex) - - [] - member _.``Runtime exceptions are propagated``() = - use script = new FSharpScript() - let result, errors = script.Eval("System.IO.File.ReadAllText(\"not-a-file-path-that-can-be-found-on-disk.txt\")") - Assert.IsEmpty(errors) - match result with - | Ok(_) -> Assert.Fail("expected a failure") - | Error(ex) -> Assert.IsInstanceOf(ex) - - [] - member _.``Evaluation can be cancelled``() = - use script = new FSharpScript() - let sleepTime = 10000 - let mutable result = None - let mutable wasCancelled = false - use tokenSource = new CancellationTokenSource() - let eval () = - try - result <- Some(script.Eval(sprintf "System.Threading.Thread.Sleep(%d)\n2" sleepTime, tokenSource.Token)) - // if execution gets here (which it shouldn't), the value `2` will be returned - with - | :? OperationCanceledException -> wasCancelled <- true - let sw = Stopwatch.StartNew() - let evalTask = Task.Run(eval) - // cancel and wait for finish - tokenSource.Cancel() - evalTask.GetAwaiter().GetResult() - // ensure we cancelled and didn't complete the sleep or evaluation - Assert.True(wasCancelled) - Assert.LessOrEqual(sw.ElapsedMilliseconds, sleepTime) - Assert.AreEqual(None, result) - - [] - member _.``Values bound at the root trigger an event``() = - let mutable foundX = false - let mutable foundY = false - let mutable foundCount = 0 - use script = new FSharpScript() - script.ValueBound - |> Event.add (fun (value, typ, name) -> - foundX <- foundX || (name = "x" && typ = typeof && value :?> int = 1) - foundY <- foundY || (name = "y" && typ = typeof && value :?> int = 2) - foundCount <- foundCount + 1) - let code = @" -let x = 1 -let y = 2 -" - script.Eval(code) |> ignoreValue - Assert.True(foundX) - Assert.True(foundY) - Assert.AreEqual(2, foundCount) - - [] - member _.``Values re-bound trigger an event``() = - let mutable foundXCount = 0 - use script = new FSharpScript() - script.ValueBound - |> Event.add (fun (_value, typ, name) -> - if name = "x" && typ = typeof then foundXCount <- foundXCount + 1) - script.Eval("let x = 1") |> ignoreValue - script.Eval("let x = 2") |> ignoreValue - Assert.AreEqual(2, foundXCount) - - [] - member _.``Nested let bindings don't trigger event``() = - let mutable foundInner = false - use script = new FSharpScript() - script.ValueBound - |> Event.add (fun (_value, _typ, name) -> - foundInner <- foundInner || name = "inner") - let code = @" -let x = - let inner = 1 - () -" - script.Eval(code) |> ignoreValue - Assert.False(foundInner) diff --git a/tests/FSharp.Compiler.Private.Scripting.UnitTests/TestHelpers.fs b/tests/FSharp.Compiler.Private.Scripting.UnitTests/TestHelpers.fs deleted file mode 100644 index 9238ff490a..0000000000 --- a/tests/FSharp.Compiler.Private.Scripting.UnitTests/TestHelpers.fs +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information. - -namespace FSharp.Compiler.Scripting.UnitTests - -open System -open FSharp.Compiler.Interactive.Shell -open FSharp.Compiler.SourceCodeServices - -[] -module TestHelpers = - - let getValue ((value: Result), (errors: FSharpErrorInfo[])) = - if errors.Length > 0 then - failwith <| sprintf "Evaluation returned %d errors:\r\n\t%s" errors.Length (String.Join("\r\n\t", errors)) - match value with - | Ok(value) -> value - | Error ex -> raise ex - - let ignoreValue = getValue >> ignore diff --git a/tests/fsharp/Compiler/Language/UIntTests.fs b/tests/fsharp/Compiler/Language/UIntTests.fs new file mode 100644 index 0000000000..c317f96e02 --- /dev/null +++ b/tests/fsharp/Compiler/Language/UIntTests.fs @@ -0,0 +1,10 @@ +namespace FSharp.Compiler.UnitTests + +open NUnit.Framework + +[] +module UIntTests = + let ``uint type abbreviation works`` () = + let src = "let x = uint 12" + let expectedErrors = [||] + CompilerAssert.TypeCheckWithErrors src expectedErrors \ No newline at end of file diff --git a/tests/fsharp/typecheck/sigs/pos33.fs b/tests/fsharp/typecheck/sigs/pos33.fs deleted file mode 100644 index 716dfc54a3..0000000000 --- a/tests/fsharp/typecheck/sigs/pos33.fs +++ /dev/null @@ -1,11 +0,0 @@ -module Pos33 - -let x = 1 -[] -let y = 1 -let z = 1 -[] -let w = "w" -let q = "q" -[] -let u = "u" \ No newline at end of file diff --git a/tests/fsharp/typecheck/sigs/pos33.fsi b/tests/fsharp/typecheck/sigs/pos33.fsi deleted file mode 100644 index 3ba98f32d9..0000000000 --- a/tests/fsharp/typecheck/sigs/pos33.fsi +++ /dev/null @@ -1,12 +0,0 @@ -module Pos33 - -val x : int -[] -val y : int = 1 -val z : int -[] -val w : string = "w" -val q : string -[] -val u : string = - "u" \ No newline at end of file diff --git a/tests/service/CSharpProjectAnalysis.fs b/tests/service/CSharpProjectAnalysis.fs index 8f787e90e5..5c0d2474b9 100644 --- a/tests/service/CSharpProjectAnalysis.fs +++ b/tests/service/CSharpProjectAnalysis.fs @@ -55,7 +55,7 @@ let internal getProjectReferences (content, dllFiles, libDirs, otherFlags) = results, assemblies [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``Test that csharp references are recognized as such`` () = @@ -93,7 +93,7 @@ let ``Test that csharp references are recognized as such`` () = members.["InterfaceEvent"].XmlDocSig |> shouldEqual "E:FSharp.Compiler.Service.Tests.CSharpClass.InterfaceEvent" [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``Test that symbols of csharp inner classes/enums are reported`` () = @@ -116,7 +116,7 @@ let _ = CSharpOuterClass.InnerClass.StaticMember() "member StaticMember"; "NestedEnumClass"|] [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``Ctor test`` () = @@ -152,7 +152,7 @@ let getEntitiesUses source = |> List.ofSeq [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``Different types with the same short name equality check`` () = @@ -172,7 +172,7 @@ let (s2: FSharp.Compiler.Service.Tests.String) = null | _ -> sprintf "Expecting two symbols, got %A" stringSymbols |> failwith [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``Different namespaces with the same short name equality check`` () = diff --git a/tests/service/Common.fs b/tests/service/Common.fs index 4b34c861d0..cd180a0900 100644 --- a/tests/service/Common.fs +++ b/tests/service/Common.fs @@ -7,7 +7,7 @@ open FSharp.Compiler open FSharp.Compiler.SourceCodeServices open FsUnit -#if NETCOREAPP2_0 +#if NETCOREAPP let readRefs (folder : string) (projectFile: string) = let runProcess (workingDir: string) (exePath: string) (args: string) = let psi = System.Diagnostics.ProcessStartInfo() @@ -65,7 +65,7 @@ let getBackgroundCheckResultsForScriptText (input) = let sysLib nm = -#if !NETCOREAPP2_0 +#if !NETCOREAPP if System.Environment.OSVersion.Platform = System.PlatformID.Win32NT then // file references only valid on Windows let programFilesx86Folder = System.Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") programFilesx86Folder + @"\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\" + nm + ".dll" @@ -84,7 +84,7 @@ let fsCoreDefaultReference() = PathRelativeToTestAssembly "FSharp.Core.dll" let mkStandardProjectReferences () = -#if NETCOREAPP2_0 +#if NETCOREAPP let file = "Sample_NETCoreSDK_FSharp_Library_netstandard2_0.fsproj" let projDir = Path.Combine(__SOURCE_DIRECTORY__, "../projects/Sample_NETCoreSDK_FSharp_Library_netstandard2_0") readRefs projDir file @@ -124,7 +124,7 @@ let mkProjectCommandLineArgs (dllName, fileNames) = printfn "dllName = %A, args = %A" dllName args args -#if NETCOREAPP2_0 +#if NETCOREAPP let mkProjectCommandLineArgsForScript (dllName, fileNames) = [| yield "--simpleresolution" yield "--noframework" @@ -165,7 +165,7 @@ let parseAndCheckFile fileName source options = let parseAndCheckScript (file, input) = -#if NETCOREAPP2_0 +#if NETCOREAPP let dllName = Path.ChangeExtension(file, ".dll") let projName = Path.ChangeExtension(file, ".fsproj") let args = mkProjectCommandLineArgsForScript (dllName, [file]) @@ -304,6 +304,9 @@ let rec allSymbolsInEntities compGen (entities: IList) = yield! allSymbolsInEntities compGen e.NestedEntities ] +let getParseAndCheckResults (source: string) = + parseAndCheckScript("/home/user/Test.fsx", source) + let getSymbolUses (source: string) = let _, typeCheckResults = parseAndCheckScript("/home/user/Test.fsx", source) typeCheckResults.GetAllUsesOfAllSymbolsInFile() |> Async.RunSynchronously @@ -333,7 +336,7 @@ let assertContainsSymbolWithName name source = let coreLibAssemblyName = -#if NETCOREAPP2_0 +#if NETCOREAPP "System.Runtime" #else "mscorlib" diff --git a/tests/service/EditorTests.fs b/tests/service/EditorTests.fs index e194f004c4..9ed74c96f2 100644 --- a/tests/service/EditorTests.fs +++ b/tests/service/EditorTests.fs @@ -36,7 +36,7 @@ open FSharp.Compiler.Service.Tests.Common let stringMethods = ["Chars"; "Clone"; "CompareTo"; "Contains"; "CopyTo"; "EndsWith"; "Equals"; - "GetEnumerator"; "GetHashCode"; "GetType"; "GetTypeCode"; "IndexOf"; + "GetEnumerator"; "GetHashCode"; "GetReverseIndex"; "GetType"; "GetTypeCode"; "IndexOf"; "IndexOfAny"; "Insert"; "IsNormalized"; "LastIndexOf"; "LastIndexOfAny"; "Length"; "Normalize"; "PadLeft"; "PadRight"; "Remove"; "Replace"; "Split"; "StartsWith"; "Substring"; "ToCharArray"; "ToLower"; "ToLowerInvariant"; @@ -53,6 +53,9 @@ let input = """ [] +#if COMPILED +[] +#endif let ``Intro test`` () = // Split the input & define file name @@ -102,14 +105,14 @@ let ``Intro test`` () = ("Concat", ["str0: string"; "str1: string"]); ("Concat", ["arg0: obj"; "arg1: obj"; "arg2: obj"]); ("Concat", ["str0: string"; "str1: string"; "str2: string"]); -#if !NETCOREAPP2_0 // TODO: check why this is needed for .NET Core testing of FSharp.Compiler.Service +#if !NETCOREAPP // TODO: check why this is needed for .NET Core testing of FSharp.Compiler.Service ("Concat", ["arg0: obj"; "arg1: obj"; "arg2: obj"; "arg3: obj"]); #endif ("Concat", ["str0: string"; "str1: string"; "str2: string"; "str3: string"])] // TODO: check if this can be enabled in .NET Core testing of FSharp.Compiler.Service -#if !INTERACTIVE && !NETCOREAPP2_0 // InternalsVisibleTo on IncrementalBuild.LocallyInjectCancellationFault not working for some reason? +#if !INTERACTIVE && !NETCOREAPP // InternalsVisibleTo on IncrementalBuild.LocallyInjectCancellationFault not working for some reason? [] let ``Basic cancellation test`` () = try @@ -161,7 +164,7 @@ let ``GetMethodsAsSymbols should return all overloads of a method as FSharpSymbo ("Concat", [("str0", "string"); ("str1", "string")]); ("Concat", [("arg0", "obj"); ("arg1", "obj"); ("arg2", "obj")]); ("Concat", [("str0", "string"); ("str1", "string"); ("str2", "string")]); -#if !NETCOREAPP2_0 // TODO: check why this is needed for .NET Core testing of FSharp.Compiler.Service +#if !NETCOREAPP // TODO: check why this is needed for .NET Core testing of FSharp.Compiler.Service ("Concat", [("arg0", "obj"); ("arg1", "obj"); ("arg2", "obj"); ("arg3", "obj")]); #endif ("Concat", [("str0", "string"); ("str1", "string"); ("str2", "string"); ("str3", "string")])] @@ -263,6 +266,9 @@ let date = System.DateTime.Now.ToString().PadRight(25) """ [] +#if COMPILED +[] +#endif let ``Expression typing test`` () = printfn "------ Expression typing test -----------------" diff --git a/tests/service/ExprTests.fs b/tests/service/ExprTests.fs index f2215974b9..b039632af0 100644 --- a/tests/service/ExprTests.fs +++ b/tests/service/ExprTests.fs @@ -1,7 +1,6 @@  #if INTERACTIVE #r "../../artifacts/bin/fcs/net461/FSharp.Compiler.Service.dll" // note, build FSharp.Compiler.Service.Tests.fsproj to generate this, this DLL has a public API so can be used from F# Interactive -#r "../../artifacts/bin/fcs/net461/FSharp.Compiler.Service.ProjectCracker.dll" #r "../../artifacts/bin/fcs/net461/nunit.framework.dll" #load "FsUnit.fs" #load "Common.fs" @@ -781,9 +780,10 @@ let ``Test Unoptimized Declarations Project1`` () = [] -//#if NETCOREAPP2_0 +//#if NETCOREAPP //[] //#endif +[] let ``Test Optimized Declarations Project1`` () = let wholeProjectResults = exprChecker.ParseAndCheckProject(Project1.options) |> Async.RunSynchronously @@ -903,7 +903,7 @@ let ``Test Optimized Declarations Project1`` () = "let testHashUInt64(x) = Operators.op_ExclusiveOr (Operators.ToInt32 (x),Operators.ToInt32 (Operators.op_RightShift (x,32))) @ (12,32--12,38)"; "let testHashIntPtr(x) = Operators.ToInt32 (Operators.ToUInt64 (x)) @ (13,35--13,41)"; "let testHashUIntPtr(x) = Operators.op_BitwiseAnd (Operators.ToInt32 (Operators.ToUInt64 (x)),2147483647) @ (14,37--14,43)"; - "let testHashString(x) = (if Operators.op_Equality (x,dflt) then 0 else Operators.Hash (x)) @ (16,32--16,38)"; + "let testHashString(x) = (if Operators.op_Equality (x,dflt) then 0 else x.GetHashCode()) @ (16,32--16,38)"; "let testTypeOf(x) = Operators.TypeOf<'T> () @ (17,24--17,30)"; "let mutableVar(x) = (if Operators.op_GreaterThan (x,0) then let mutable acc: Microsoft.FSharp.Core.int = x in acc <- x else ()) @ (20,4--22,16)"; "let mutableConst(unitVar0) = let mutable acc: Microsoft.FSharp.Core.unit = () in acc <- () @ (25,16--25,19)"; @@ -1059,8 +1059,12 @@ let ``Test Operator Declarations for Byte`` () = "let testByteToDoubleOperator(e1) = Operators.ToDouble (Operators.ToDouble (e1)) @ (53,43--53,51)"; "let testByteToDecimalOperator(e1) = Convert.ToDecimal (e1) @ (54,43--54,53)"; "let testByteToCharOperator(e1) = Operators.ToChar (e1) @ (55,43--55,50)"; +#if DEBUG + @"let testByteToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,43--56,52)"; +#else "let testByteToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,43--56,52)"; - ] +#endif + ] testOperators "Byte" "byte" excludedTests expectedUnoptimized expectedOptimized @@ -1169,8 +1173,12 @@ let ``Test Operator Declarations for SByte`` () = "let testSByteToDoubleOperator(e1) = Operators.ToDouble (e1) @ (53,45--53,53)"; "let testSByteToDecimalOperator(e1) = Convert.ToDecimal (e1) @ (54,45--54,55)"; "let testSByteToCharOperator(e1) = Operators.ToChar (e1) @ (55,45--55,52)"; +#if DEBUG + @"let testSByteToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,45--56,54)"; +#else "let testSByteToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,45--56,54)"; - ] +#endif + ] testOperators "SByte" "sbyte" excludedTests expectedUnoptimized expectedOptimized @@ -1279,7 +1287,11 @@ let ``Test Operator Declarations for Int16`` () = "let testInt16ToDoubleOperator(e1) = Operators.ToDouble (e1) @ (53,45--53,53)"; "let testInt16ToDecimalOperator(e1) = Convert.ToDecimal (e1) @ (54,45--54,55)"; "let testInt16ToCharOperator(e1) = Operators.ToChar (e1) @ (55,45--55,52)"; +#if DEBUG + @"let testInt16ToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,45--56,54)"; +#else "let testInt16ToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,45--56,54)"; +#endif ] testOperators "Int16" "int16" excludedTests expectedUnoptimized expectedOptimized @@ -1388,7 +1400,11 @@ let ``Test Operator Declarations for UInt16`` () = "let testUInt16ToDoubleOperator(e1) = Operators.ToDouble (Operators.ToDouble (e1)) @ (53,47--53,55)"; "let testUInt16ToDecimalOperator(e1) = Convert.ToDecimal (e1) @ (54,47--54,57)"; "let testUInt16ToCharOperator(e1) = Operators.ToChar (e1) @ (55,47--55,54)"; +#if DEBUG + @"let testUInt16ToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,47--56,56)" +#else "let testUInt16ToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,47--56,56)"; +#endif ] testOperators "UInt16" "uint16" excludedTests expectedUnoptimized expectedOptimized @@ -1498,7 +1514,11 @@ let ``Test Operator Declarations for Int`` () = "let testIntToDoubleOperator(e1) = Operators.ToDouble (e1) @ (53,41--53,49)"; "let testIntToDecimalOperator(e1) = Convert.ToDecimal (e1) @ (54,41--54,51)"; "let testIntToCharOperator(e1) = Operators.ToChar (e1) @ (55,41--55,48)"; +#if DEBUG + @"let testIntToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,41--56,50)" +#else "let testIntToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,41--56,50)"; +#endif ] testOperators "Int" "int" excludedTests expectedUnoptimized expectedOptimized @@ -1608,7 +1628,11 @@ let ``Test Operator Declarations for Int32`` () = "let testInt32ToDoubleOperator(e1) = Operators.ToDouble (e1) @ (53,45--53,53)"; "let testInt32ToDecimalOperator(e1) = Convert.ToDecimal (e1) @ (54,45--54,55)"; "let testInt32ToCharOperator(e1) = Operators.ToChar (e1) @ (55,45--55,52)"; +#if DEBUG + @"let testInt32ToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,45--56,54)" +#else "let testInt32ToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,45--56,54)"; +#endif ] testOperators "Int32" "int32" excludedTests expectedUnoptimized expectedOptimized @@ -1717,7 +1741,11 @@ let ``Test Operator Declarations for UInt32`` () = "let testUInt32ToDoubleOperator(e1) = Operators.ToDouble (Operators.ToDouble (e1)) @ (53,47--53,55)"; "let testUInt32ToDecimalOperator(e1) = Convert.ToDecimal (e1) @ (54,47--54,57)"; "let testUInt32ToCharOperator(e1) = Operators.ToChar (e1) @ (55,47--55,54)"; +#if DEBUG + @"let testUInt32ToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,47--56,56)" +#else "let testUInt32ToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,47--56,56)"; +#endif ] testOperators "UInt32" "uint32" excludedTests expectedUnoptimized expectedOptimized @@ -1827,7 +1855,11 @@ let ``Test Operator Declarations for Int64`` () = "let testInt64ToDoubleOperator(e1) = Operators.ToDouble (e1) @ (53,45--53,53)"; "let testInt64ToDecimalOperator(e1) = Convert.ToDecimal (e1) @ (54,45--54,55)"; "let testInt64ToCharOperator(e1) = Operators.ToChar (e1) @ (55,45--55,52)"; +#if DEBUG + @"let testInt64ToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,45--56,54)" +#else "let testInt64ToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,45--56,54)"; +#endif ] testOperators "Int64" "int64" excludedTests expectedUnoptimized expectedOptimized @@ -1936,7 +1968,11 @@ let ``Test Operator Declarations for UInt64`` () = "let testUInt64ToDoubleOperator(e1) = Operators.ToDouble (Operators.ToDouble (e1)) @ (53,47--53,55)"; "let testUInt64ToDecimalOperator(e1) = Convert.ToDecimal (e1) @ (54,47--54,57)"; "let testUInt64ToCharOperator(e1) = Operators.ToChar (e1) @ (55,47--55,54)"; +#if DEBUG + @"let testUInt64ToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,47--56,56)" +#else "let testUInt64ToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,47--56,56)"; +#endif ] testOperators "UInt64" "uint64" excludedTests expectedUnoptimized expectedOptimized @@ -2046,7 +2082,11 @@ let ``Test Operator Declarations for IntPtr`` () = "let testIntPtrToDoubleOperator(e1) = Operators.ToDouble (e1) @ (53,50--53,58)"; "let testIntPtrToDecimalOperator(e1) = Convert.ToDecimal (Operators.ToInt64 (e1)) @ (54,50--54,60)"; "let testIntPtrToCharOperator(e1) = Operators.ToChar (e1) @ (55,50--55,57)"; +#if DEBUG + @"let testIntPtrToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,50--56,59)" +#else "let testIntPtrToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,50--56,59)"; +#endif ] testOperators "IntPtr" "nativeint" excludedTests expectedUnoptimized expectedOptimized @@ -2155,7 +2195,11 @@ let ``Test Operator Declarations for UIntPtr`` () = "let testUIntPtrToDoubleOperator(e1) = Operators.ToDouble (Operators.ToDouble (e1)) @ (53,52--53,60)"; "let testUIntPtrToDecimalOperator(e1) = Convert.ToDecimal (Operators.ToUInt64 (e1)) @ (54,52--54,62)"; "let testUIntPtrToCharOperator(e1) = Operators.ToChar (e1) @ (55,52--55,59)"; +#if DEBUG + @"let testUIntPtrToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,52--56,61)" +#else "let testUIntPtrToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,52--56,61)"; +#endif ] testOperators "UIntPtr" "unativeint" excludedTests expectedUnoptimized expectedOptimized @@ -2261,7 +2305,11 @@ let ``Test Operator Declarations for Single`` () = "let testSingleToDoubleOperator(e1) = Operators.ToDouble (e1) @ (53,48--53,56)"; "let testSingleToDecimalOperator(e1) = Convert.ToDecimal (e1) @ (54,48--54,58)"; "let testSingleToCharOperator(e1) = Operators.ToChar (e1) @ (55,48--55,55)"; +#if DEBUG + @"let testSingleToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,48--56,57)" +#else "let testSingleToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,48--56,57)"; +#endif ] testOperators "Single" "float32" excludedTests expectedUnoptimized expectedOptimized @@ -2367,7 +2415,11 @@ let ``Test Operator Declarations for Double`` () = "let testDoubleToDoubleOperator(e1) = Operators.ToDouble (e1) @ (53,46--53,54)"; "let testDoubleToDecimalOperator(e1) = Convert.ToDecimal (e1) @ (54,46--54,56)"; "let testDoubleToCharOperator(e1) = Operators.ToChar (e1) @ (55,46--55,53)"; +#if DEBUG + @"let testDoubleToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,46--56,55)" +#else "let testDoubleToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,46--56,55)"; +#endif ] testOperators "Double" "float" excludedTests expectedUnoptimized expectedOptimized @@ -2465,7 +2517,11 @@ let ``Test Operator Declarations for Decimal`` () = "let testDecimalToDoubleOperator(e1) = Convert.ToDouble (e1) @ (53,49--53,57)"; "let testDecimalToDecimalOperator(e1) = e1 @ (54,57--54,59)"; "let testDecimalToCharOperator(e1) = Decimal.op_Explicit (e1) @ (55,49--55,56)"; +#if DEBUG + @"let testDecimalToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,49--56,58)" +#else "let testDecimalToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,49--56,58)"; +#endif ] testOperators "Decimal" "decimal" excludedTests expectedUnoptimized expectedOptimized @@ -2562,7 +2618,11 @@ let ``Test Operator Declarations for Char`` () = "let testCharToSingleOperator(e1) = Operators.ToSingle (Operators.ToDouble (e1)) @ (52,43--52,53)"; "let testCharToDoubleOperator(e1) = Operators.ToDouble (Operators.ToDouble (e1)) @ (53,43--53,51)"; "let testCharToCharOperator(e1) = Operators.ToChar (e1) @ (55,43--55,50)"; +#if DEBUG + @"let testCharToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,43--56,52)" +#else "let testCharToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,43--56,52)"; +#endif ] testOperators "Char" "char" excludedTests expectedUnoptimized expectedOptimized @@ -2656,7 +2716,11 @@ let ``Test Operator Declarations for String`` () = "let testStringToDoubleOperator(e1) = Double.Parse ((if Operators.op_Equality (e1,dflt) then dflt else e1.Replace(\"_\",\"\")),167,CultureInfo.get_InvariantCulture () :> System.IFormatProvider) @ (53,47--53,55)"; "let testStringToDecimalOperator(e1) = Decimal.Parse (e1,167,CultureInfo.get_InvariantCulture () :> System.IFormatProvider) @ (54,47--54,57)"; "let testStringToCharOperator(e1) = Char.Parse (e1) @ (55,47--55,54)"; +#if DEBUG + @"let testStringToStringOperator(e1) = let nullStr: Microsoft.FSharp.Core.string = """" in let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,47--56,56)" +#else "let testStringToStringOperator(e1) = let matchValue: Microsoft.FSharp.Core.obj = Operators.Box (e1) in match (if Operators.op_Equality (matchValue,dflt) then $0 else (if matchValue :? System.IFormattable then $1 else $2)) targets ... @ (56,47--56,56)"; +#endif ] testOperators "String" "string" excludedTests expectedUnoptimized expectedOptimized @@ -2891,315 +2955,4 @@ let ``Test expressions of optimized declarations stress big expressions`` () = printDeclarations None (List.ofSeq file1.Declarations) |> Seq.toList |> ignore -#if NOT_YET_ENABLED - -#if !NO_PROJECTCRACKER && !NETCOREAPP2_0 - -[] -let ``Check use of type provider that provides calls to F# code`` () = - let config = -#if DEBUG - ["Configuration", "Debug"] -#else - ["Configuration", "Release"] -#endif - let options = - ProjectCracker.GetProjectOptionsFromProjectFile (Path.Combine(Path.Combine(Path.Combine(__SOURCE_DIRECTORY__, "data"),"TestProject"),"TestProject.fsproj"), config) - - let res = - options - |> exprChecker.ParseAndCheckProject - |> Async.RunSynchronously - - Assert.AreEqual ([||], res.Errors, sprintf "Should not be errors, but: %A" res.Errors) - - let results = - [ for f in res.AssemblyContents.ImplementationFiles do - for d in f.Declarations do - for line in d |> printDeclaration None do - yield line ] - - results |> List.iter (printfn "%s") - - results |> shouldEqual - ["type TestProject"; "type AssemblyInfo"; "type TestProject"; "type T"; - """type Class1"""; - """member .ctor(unitVar0) = (new Object(); ()) @ (5,5--5,11)"""; - """member get_X1(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in Helper.doNothing () @ (6,21--6,36)""" - """member get_X2(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in Helper.doNothingGeneric (3) @ (7,21--7,43)""" - """member get_X3(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in Helper.doNothingOneArg (3) @ (8,21--8,42)""" - """member get_X4(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in C.DoNothing () @ (9,21--9,41)""" - """member get_X5(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in C.DoNothingGeneric (3) @ (10,21--10,48)""" - """member get_X6(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in C.DoNothingOneArg (3) @ (11,21--11,47)""" - """member get_X7(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in C.DoNothingTwoArg (new C(),3) @ (12,21--12,47)""" - """member get_X8(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in new C().InstanceDoNothing() @ (13,21--13,49)""" - """member get_X9(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in new C().InstanceDoNothingGeneric(3) @ (14,21--14,56)""" - """member get_X10(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in new C().InstanceDoNothingOneArg(3) @ (15,22--15,56)""" - """member get_X11(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in new C().InstanceDoNothingTwoArg(new C(),3) @ (16,22--16,56)""" - """member get_X12(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in G`1.DoNothing () @ (17,22--17,49)""" - """member get_X13(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in G`1.DoNothingOneArg (3) @ (18,22--18,55)""" - """member get_X14(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in G`1.DoNothingTwoArg (new C(),3) @ (19,22--19,55)""" - """member get_X15(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in let matchValue: Microsoft.FSharp.Core.Option = FSharpOption`1.Some (1) in (if Operators.op_Equality (matchValue.Tag,1) then let x: Microsoft.FSharp.Core.int = matchValue.get_Value() in x else 0) @ (20,22--20,54)""" - """member get_X16(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in let matchValue: Microsoft.FSharp.Core.Choice = Choice1Of2(1) in (if Operators.op_Equality (matchValue.Tag,0) then 1 else 0) @ (21,22--21,54)""" - """member get_X17(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in let r: TestTP.Helper.R = {A = 1; B = 0} in (r.B <- 1; r.A) @ (22,22--22,60)""" - """member get_X18(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in Helper.doNothingTwoArg (3,4) @ (23,22--23,43)""" - """member get_X19(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in Helper.doNothingTwoArgCurried (3,4) @ (24,22--24,50)""" - """member get_X21(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in (fun arg00 -> fun arg10 -> C.DoNothingTwoArgCurried (arg00,arg10) new C()) 3 @ (25,22--25,55)""" - """member get_X23(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in (let objectArg: TestTP.Helper.C = new C() in fun arg00 -> fun arg10 -> objectArg.InstanceDoNothingTwoArgCurried(arg00,arg10) new C()) 3 @ (26,22--26,63)""" - """member get_X24(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in Helper.doNothingGenericWithConstraint (3) @ (27,22--27,58)""" - """member get_X25(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in Helper.doNothingGenericWithTypeConstraint,Microsoft.FSharp.Core.int> (FSharpList`1.Cons (3,FSharpList`1.get_Empty ())) @ (28,22--28,62)""" - """member get_X26(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in Helper.doNothingGenericWithTypeConstraint,Microsoft.FSharp.Core.int> (FSharpList`1.Cons (3,FSharpList`1.get_Empty ())) @ (29,22--29,62)""" - """member get_X27(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in Helper.DoNothingReally () @ (30,22--30,53)""" - """member get_X28(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in new CSharpClass(0).Method("x") :> Microsoft.FSharp.Core.Unit @ (31,22--31,40)""" - """member get_X29(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in Operators.op_Addition (new CSharpClass(0).Method2("x"),new CSharpClass(0).Method2("empty")) :> Microsoft.FSharp.Core.Unit @ (32,22--32,53)""" - """member get_X30(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in new CSharpClass(0).Method3([|"x"; "y"|]) :> Microsoft.FSharp.Core.Unit @ (33,22--33,50)""" - """member get_X31(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in new CSharpClass(0).GenericMethod(2) @ (34,22--34,47)""" - """member get_X32(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in new CSharpClass(0).GenericMethod2(new Object()) @ (35,22--35,61)""" - """member get_X33(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in new CSharpClass(0).GenericMethod3(3) @ (36,22--36,65)""" - """member get_X34(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in C.DoNothingReally () @ (37,22--37,58)""" - """member get_X35(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in new C().DoNothingReallyInst() @ (38,22--38,66)""" - """member get_X36(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in (new CSharpClass(0) :> FSharp.Compiler.Service.Tests.ICSharpExplicitInterface).ExplicitMethod("x") :> Microsoft.FSharp.Core.Unit @ (39,22--39,62)""" - """member get_X37(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in (new C() :> TestTP.Helper.I).DoNothing() @ (40,22--40,46)""" - """member get_X38(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in new C().VirtualDoNothing() @ (41,22--41,45)""" - """member get_X39(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in let t: Microsoft.FSharp.Core.int * Microsoft.FSharp.Core.int * Microsoft.FSharp.Core.int = (1,2,3) in let i: Microsoft.FSharp.Core.int = t.Item1 in i @ (42,22--42,51)""" - """member get_X40(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in (moduleValue <- 1; moduleValue) @ (43,22--43,39)""" - """member get_X41(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in let x: TestTP.Helper.C = new C() in (x.set_Property(1); x.get_Property()) @ (44,22--44,41)""" - """member get_X42(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in let x: TestTP.Helper.C = new C() in (x.set_AutoProperty(1); x.get_AutoProperty()) @ (45,22--45,45)""" - """member get_X43(this) (unitVar1) = let this: Microsoft.FSharp.Core.obj = ("My internal state" :> Microsoft.FSharp.Core.obj) :> ErasedWithConstructor.Provided.MyType in (C.set_StaticAutoProperty (1); C.get_StaticAutoProperty ()) @ (46,22--46,51)""" - ] - - let members = - [ for f in res.AssemblyContents.ImplementationFiles do yield! printMembersOfDeclatations f.Declarations ] - - members |> List.iter (printfn "%s") - - members |> shouldEqual - [ - ".ctor: Microsoft.FSharp.Core.unit -> TestProject.Class1" - ".ctor: Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.unit" - "get_X1: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "doNothing: Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.unit" - "get_X2: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "doNothingGeneric<'T>: 'T -> Microsoft.FSharp.Core.unit" - "get_X3: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "doNothingOneArg: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "get_X4: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "DoNothing: Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.unit" - "get_X5: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "DoNothingGeneric<'T>: 'T -> Microsoft.FSharp.Core.unit" - "get_X6: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "DoNothingOneArg: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "get_X7: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "DoNothingTwoArg: TestTP.Helper.C * Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "get_X8: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "InstanceDoNothing: Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.unit" - "get_X9: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "InstanceDoNothingGeneric<'T>: 'T -> Microsoft.FSharp.Core.unit" - "get_X10: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "InstanceDoNothingOneArg: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "get_X11: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "InstanceDoNothingTwoArg: TestTP.Helper.C * Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "get_X12: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "DoNothing: Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.unit" - "get_X13: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "DoNothingOneArg: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "get_X14: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "DoNothingTwoArg: TestTP.Helper.C * Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "get_X15: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.int" - "Some: 'T -> 'T Microsoft.FSharp.Core.option" - "op_Equality<'T when 'T : equality>: 'T -> 'T -> Microsoft.FSharp.Core.bool" - "matchValue: Microsoft.FSharp.Core.Option" - "matchValue: Microsoft.FSharp.Core.Option" - "get_Value: Microsoft.FSharp.Core.unit -> 'T" - "x: Microsoft.FSharp.Core.int" - "get_X16: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.int" - "op_Equality<'T when 'T : equality>: 'T -> 'T -> Microsoft.FSharp.Core.bool" - "matchValue: Microsoft.FSharp.Core.Choice" - "get_X17: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.int" - "r: TestTP.Helper.R" - "r: TestTP.Helper.R" - "get_X18: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "doNothingTwoArg: Microsoft.FSharp.Core.int * Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "get_X19: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "doNothingTwoArgCurried: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "get_X21: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "DoNothingTwoArgCurried: TestTP.Helper.C -> Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "arg00: TestTP.Helper.C" - "arg10: Microsoft.FSharp.Core.int" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "get_X23: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "objectArg: TestTP.Helper.C" - "InstanceDoNothingTwoArgCurried: TestTP.Helper.C -> Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "arg00: TestTP.Helper.C" - "arg10: Microsoft.FSharp.Core.int" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "get_X24: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "doNothingGenericWithConstraint<'T when 'T : equality>: 'T -> Microsoft.FSharp.Core.unit" - "get_X25: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "doNothingGenericWithTypeConstraint<'T, _ when 'T :> Microsoft.FSharp.Collections.seq<'a>>: 'T -> Microsoft.FSharp.Core.unit" - "Cons: 'T * 'T Microsoft.FSharp.Collections.list -> 'T Microsoft.FSharp.Collections.list" - "get_Empty: Microsoft.FSharp.Core.unit -> 'T Microsoft.FSharp.Collections.list" - "get_X26: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "doNothingGenericWithTypeConstraint<'T, _ when 'T :> Microsoft.FSharp.Collections.seq<'a>>: 'T -> Microsoft.FSharp.Core.unit" - "Cons: 'T * 'T Microsoft.FSharp.Collections.list -> 'T Microsoft.FSharp.Collections.list" - "get_Empty: Microsoft.FSharp.Core.unit -> 'T Microsoft.FSharp.Collections.list" - "get_X27: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "DoNothingReally: Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.unit" - "get_X28: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - ".ctor: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "Method: Microsoft.FSharp.Core.string -> Microsoft.FSharp.Core.int" - "get_X29: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "op_Addition<^T1, ^T2, ^T3>: ^T1 -> ^T2 -> ^T3" - ".ctor: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "Method2: Microsoft.FSharp.Core.string -> Microsoft.FSharp.Core.int" - ".ctor: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "Method2: Microsoft.FSharp.Core.string -> Microsoft.FSharp.Core.int" - "get_X30: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - ".ctor: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "Method3: Microsoft.FSharp.Core.string Microsoft.FSharp.Core.[] -> Microsoft.FSharp.Core.int" - "get_X31: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - ".ctor: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "GenericMethod<'T>: 'T -> Microsoft.FSharp.Core.unit" - "get_X32: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - ".ctor: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "GenericMethod2<'T when 'T : class>: 'T -> Microsoft.FSharp.Core.unit" - ".ctor: Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.unit" - "get_X33: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - ".ctor: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "GenericMethod3<'T when 'T :> System.IComparable<'T>>: 'T -> Microsoft.FSharp.Core.unit" - "get_X34: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - "DoNothingReally: Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.unit" - "get_X35: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "DoNothingReallyInst: Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.unit" - "get_X36: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - ".ctor: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "ExplicitMethod: Microsoft.FSharp.Core.string -> Microsoft.FSharp.Core.int" - "get_X37: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "DoNothing: Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.unit" - "get_X38: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.Unit" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "VirtualDoNothing: Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.unit" - "get_X39: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.int" - "t: Microsoft.FSharp.Core.int * Microsoft.FSharp.Core.int * Microsoft.FSharp.Core.int" - "i: Microsoft.FSharp.Core.int" - "get_X40: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.int" - "moduleValue: Microsoft.FSharp.Core.int" - "moduleValue: Microsoft.FSharp.Core.int" - "get_X41: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.int" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "x: TestTP.Helper.C" - "set_Property: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "x: TestTP.Helper.C" - "get_Property: Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.int" - "get_X42: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.int" - ".ctor: Microsoft.FSharp.Core.unit -> TestTP.Helper.C" - "x: TestTP.Helper.C" - "set_AutoProperty: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "x: TestTP.Helper.C" - "get_AutoProperty: Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.int" - "get_X43: TestProject.Class1 -> Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.int" - "set_StaticAutoProperty: Microsoft.FSharp.Core.int -> Microsoft.FSharp.Core.unit" - "get_StaticAutoProperty: Microsoft.FSharp.Core.unit -> Microsoft.FSharp.Core.int" - ] - -#endif -#endif - - -#if SELF_HOST_STRESS - - -[] -let ``Test Declarations selfhost`` () = - let projectFile = __SOURCE_DIRECTORY__ + @"/FSharp.Compiler.Service.Tests.fsproj" - // Check with Configuration = Release - let options = ProjectCracker.GetProjectOptionsFromProjectFile(projectFile, [("Configuration", "Debug")]) - let wholeProjectResults = exprChecker.ParseAndCheckProject(options) |> Async.RunSynchronously - - wholeProjectResults.Errors.Length |> shouldEqual 0 - - wholeProjectResults.AssemblyContents.ImplementationFiles.Length |> shouldEqual 13 - - let textOfAll = [ for file in wholeProjectResults.AssemblyContents.ImplementationFiles -> Array.ofSeq (printDeclarations None (List.ofSeq file.Declarations)) ] - - () - - -[] -let ``Test Declarations selfhost whole compiler`` () = - - Directory.SetCurrentDirectory(__SOURCE_DIRECTORY__ + @"/../../src/fsharp/FSharp.Compiler.Service") - let projectFile = __SOURCE_DIRECTORY__ + @"/../../src/fsharp/FSharp.Compiler.Service/FSharp.Compiler.Service.fsproj" - - //let v = FSharpProjectFileInfo.Parse(projectFile, [("Configuration", "Debug"); ("NoFsSrGenTask", "true")],enableLogging=true) - let options = ProjectCracker.GetProjectOptionsFromProjectFile(projectFile, [("Configuration", "Debug"); ("NoFsSrGenTask", "true")]) - - // For subsets of the compiler: - //let options = { options with OtherOptions = options.OtherOptions.[0..51] } - - //for x in options.OtherOptions do printfn "%s" x - - let wholeProjectResults = exprChecker.ParseAndCheckProject(options) |> Async.RunSynchronously - - (wholeProjectResults.Errors |> Array.filter (fun x -> x.Severity = FSharpErrorSeverity.Error)).Length |> shouldEqual 0 - - for file in (wholeProjectResults.AssemblyContents.ImplementationFiles |> List.toArray) do - for d in file.Declarations do - for s in printDeclaration None d do - () //printfn "%s" s - - // Very Quick (1 sec - expressions are computed on demand) - for file in (wholeProjectResults.AssemblyContents.ImplementationFiles |> List.toArray) do - for d in file.Declarations do - for s in exprsOfDecl d do - () - - // Quickish (~4.5 seconds for all of FSharp.Compiler.Service.dll) - #time "on" - for file in (wholeProjectResults.AssemblyContents.ImplementationFiles |> List.toArray) do - for d in file.Declarations do - for (e,m) in exprsOfDecl d do - // This forces the computation of the expression - match e with - | BasicPatterns.Const _ -> () //printfn "%s" s - | _ -> () //printfn "%s" s - -[] -let ``Test Declarations selfhost FSharp.Core`` () = - - Directory.SetCurrentDirectory(__SOURCE_DIRECTORY__ + @"/../../../fsharp/src/fsharp/FSharp.Core") - let projectFile = __SOURCE_DIRECTORY__ + @"/../../../fsharp/src/fsharp/FSharp.Core/FSharp.Core.fsproj" - - let options = ProjectCracker.GetProjectOptionsFromProjectFile(projectFile, [("Configuration", "Debug")]) - - let wholeProjectResults = exprChecker.ParseAndCheckProject(options) |> Async.RunSynchronously - - //(wholeProjectResults.Errors |> Array.filter (fun x -> x.Severity = FSharpErrorSeverity.Error)).Length |> shouldEqual 0 - - for file in (wholeProjectResults.AssemblyContents.ImplementationFiles |> List.toArray) do - for d in file.Declarations do - for s in printDeclaration (Some (HashSet [])) d do - printfn "%s" s - - #time "on" - - for file in (wholeProjectResults.AssemblyContents.ImplementationFiles |> List.toArray) do - for d in file.Declarations do - for (e,m) in exprsOfDecl d do - // This forces the computation of the expression - match e with - | BasicPatterns.Const _ -> () - | _ -> () - -#endif diff --git a/tests/service/FileSystemTests.fs b/tests/service/FileSystemTests.fs index 8580462c2b..59bb29f055 100644 --- a/tests/service/FileSystemTests.fs +++ b/tests/service/FileSystemTests.fs @@ -74,7 +74,7 @@ let UseMyFileSystem() = [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``FileSystem compilation test``() = diff --git a/tests/service/FscTests.fs b/tests/service/FscTests.fs index b7ff870675..bcd1cb2cba 100644 --- a/tests/service/FscTests.fs +++ b/tests/service/FscTests.fs @@ -37,7 +37,7 @@ type PEVerifier () = static let runsOnMono = try System.Type.GetType("Mono.Runtime") <> null with _ -> false let verifierInfo = -#if NETCOREAPP2_0 +#if NETCOREAPP None #else if runsOnMono then @@ -92,7 +92,7 @@ let checker = FSharpChecker.Create() /// Ensures the default FSharp.Core referenced by the F# compiler service (if none is /// provided explicitly) is available in the output directory. let ensureDefaultFSharpCoreAvailable tmpDir = -#if NETCOREAPP2_0 +#if NETCOREAPP ignore tmpDir #else // FSharp.Compiler.Service references FSharp.Core 4.3.0.0 by default. That's wrong? But the output won't verify diff --git a/tests/service/FsiTests.fs b/tests/service/FsiTests.fs index 54f7829f6a..39ff624fbf 100644 --- a/tests/service/FsiTests.fs +++ b/tests/service/FsiTests.fs @@ -27,7 +27,7 @@ let errStream = new CompilerOutputStream() let argv = [| "C:\\fsi.exe" |] let allArgs = Array.append argv [|"--noninteractive"|] -#if NETCOREAPP2_0 +#if NETCOREAPP let fsiConfig = FsiEvaluationSession.GetDefaultConfiguration() #else let fsiConfig = FsiEvaluationSession.GetDefaultConfiguration(fsi) diff --git a/tests/service/MultiProjectAnalysisTests.fs b/tests/service/MultiProjectAnalysisTests.fs index 26d430f500..ac5df3f1c7 100644 --- a/tests/service/MultiProjectAnalysisTests.fs +++ b/tests/service/MultiProjectAnalysisTests.fs @@ -122,7 +122,7 @@ let u = Case1 3 [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``Test multi project 1 whole project errors`` () = @@ -306,7 +306,7 @@ let p = (""" FSharpChecker.Create(projectCacheSize=size) [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``Test ManyProjectsStressTest whole project errors`` () = @@ -819,11 +819,10 @@ let ``Test max memory gets triggered`` () = [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``Type provider project references should not throw exceptions`` () = - //let options = ProjectCracker.GetProjectOptionsFromProjectFile(projectFile, [("Configuration", "Debug")]) let options = {ProjectFileName = __SOURCE_DIRECTORY__ + @"/data/TypeProviderConsole/TypeProviderConsole.fsproj"; ProjectId = None @@ -909,13 +908,12 @@ let ``Type provider project references should not throw exceptions`` () = //------------------------------------------------------------------------------------ [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #else [] #endif let ``Projects creating generated types should not utilize cross-project-references but should still analyze oK once project is built`` () = - //let options = ProjectCracker.GetProjectOptionsFromProjectFile(projectFile, [("Configuration", "Debug")]) let options = {ProjectFileName = __SOURCE_DIRECTORY__ + @"/data/TypeProvidersBug/TestConsole/TestConsole.fsproj"; diff --git a/tests/service/ProjectAnalysisTests.fs b/tests/service/ProjectAnalysisTests.fs index 45b5dc1b50..bce8dd133c 100644 --- a/tests/service/ProjectAnalysisTests.fs +++ b/tests/service/ProjectAnalysisTests.fs @@ -3189,7 +3189,7 @@ let ``Test Project22 IList properties`` () = attribsOfSymbol ilistTypeDefn |> shouldEqual ["interface"] -#if !NETCOREAPP2_0 // TODO: check if this can be enabled in .NET Core testing of FSharp.Compiler.Service +#if !NETCOREAPP // TODO: check if this can be enabled in .NET Core testing of FSharp.Compiler.Service ilistTypeDefn.Assembly.SimpleName |> shouldEqual coreLibAssemblyName #endif @@ -3648,7 +3648,7 @@ let _ = XmlProvider<"13">.GetSample() let options = checker.GetProjectOptionsFromCommandLineArgs (projFileName, args) [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``Test Project25 whole project errors`` () = @@ -3658,7 +3658,7 @@ let ``Test Project25 whole project errors`` () = wholeProjectResults.Errors.Length |> shouldEqual 0 [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``Test Project25 symbol uses of type-provided members`` () = @@ -3717,7 +3717,7 @@ let ``Test Project25 symbol uses of type-provided members`` () = usesOfGetSampleSymbol |> shouldEqual [|("file1", ((5, 8), (5, 25))); ("file1", ((10, 8), (10, 78)))|] [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``Test symbol uses of type-provided types`` () = @@ -4142,7 +4142,7 @@ let ``Test project31 whole project errors`` () = wholeProjectResults.Errors.Length |> shouldEqual 0 [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``Test project31 C# type attributes`` () = @@ -4185,13 +4185,13 @@ let ``Test project31 C# method attributes`` () = |> set |> shouldEqual (set [ -#if !NETCOREAPP2_0 +#if !NETCOREAPP "(SecuritySafeCriticalAttribute, [], [])"; #endif "(CLSCompliantAttribute, [(type Microsoft.FSharp.Core.bool, false)], [])"]) [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``Test project31 Format C# type attributes`` () = @@ -4226,7 +4226,7 @@ let ``Test project31 Format C# method attributes`` () = |> set |> shouldEqual (set ["[]"; -#if !NETCOREAPP2_0 +#if !NETCOREAPP "[]"; #endif ]) @@ -4378,7 +4378,7 @@ let ``Test Project34 whole project errors`` () = wholeProjectResults.Errors.Length |> shouldEqual 0 [] -#if NETCOREAPP2_0 +#if NETCOREAPP [] #endif let ``Test project34 should report correct accessibility for System.Data.Listeners`` () = @@ -4501,7 +4501,7 @@ module internal Project35b = let cleanFileName a = if a = fileName1 then "file1" else "??" let fileNames = [fileName1] -#if NETCOREAPP2_0 +#if NETCOREAPP let projPath = Path.ChangeExtension(fileName1, ".fsproj") let dllPath = Path.ChangeExtension(fileName1, ".dll") let args = mkProjectCommandLineArgs(dllPath, fileNames) @@ -5529,3 +5529,55 @@ module M2 = (((25, 5), (25, 21)), "open SomeUnusedModule")] unusedOpensData |> shouldEqual expected + +[] +let ``Opens in nested recursive modules`` () = + let _, checkResults = getParseAndCheckResults """ +module rec Module + +open System + +module Nested = + open System +""" + checkResults.OpenDeclarations + |> Seq.filter (fun openDeclaration -> + match openDeclaration.Range with + | Some range -> range <> Range.rangeStartup + | _ -> false) + |> List.ofSeq + |> List.map(fun openDeclaration -> tups openDeclaration.AppliedScope) + |> shouldEqual + [ (2, 0), (7, 15) + (6, 0), (7, 15) ] + +[] +let ``Opens in nested recursive modules - namespaces`` () = + let _, checkResults = getParseAndCheckResults """ +namespace rec Ns1 + +open System + +module Nested = + open System + +namespace rec Ns2 + +open System + +module Nested = + open System + +""" + checkResults.OpenDeclarations + |> Seq.filter (fun openDeclaration -> + match openDeclaration.Range with + | Some range -> range <> Range.rangeStartup + | _ -> false) + |> List.ofSeq + |> List.map(fun openDeclaration -> tups openDeclaration.AppliedScope) + |> shouldEqual + [ (4, 5), (7, 15) + (6, 0), (7, 15) + (11, 5), (14, 15) + (13, 0), (14, 15) ] diff --git a/tests/service/ProjectOptionsTests.fs b/tests/service/ProjectOptionsTests.fs deleted file mode 100644 index 1b1e252055..0000000000 --- a/tests/service/ProjectOptionsTests.fs +++ /dev/null @@ -1,578 +0,0 @@ -#if INTERACTIVE -#r "../../artifacts/bin/fcs/net461/FSharp.Compiler.Service.dll" // note, build FSharp.Compiler.Service.Tests.fsproj to generate this, this DLL has a public API so can be used from F# Interactive -#r "../../artifacts/bin/fcs/net461/FSharp.Compiler.Service.ProjectCracker.dll" -#r "../../artifacts/bin/fcs/net461/nunit.framework.dll" -#load "FsUnit.fs" -#load "Common.fs" -#else -module FSharp.Compiler.Service.Tests.ProjectOptionsTests -#endif - -let runningOnMono = try System.Type.GetType("Mono.Runtime") <> null with e -> false - -open System.IO -open NUnit.Framework -open FsUnit -open FSharp.Compiler.Ast -open FSharp.Compiler.SourceCodeServices - -open FSharp.Compiler.Service.Tests.Common - -#if !NO_PROJECTCRACKER && DISABLED // Disabled tests because of MSBuild API dependencies. The ProjectCracker is basically deprecated in any case - -let hasMSBuild14 = - use engine = new Microsoft.Build.Evaluation.ProjectCollection() - engine.Toolsets |> Seq.exists (fun x -> x.ToolsPath.Contains "v14.0") - -let normalizePath s = (new Uri(s)).LocalPath - -let checkOption (opts:string[]) s = - let found = "Found '"+s+"'" - (if opts |> Array.exists (fun o -> o.EndsWith(s)) then found else "Failed to find '"+s+"'") - |> shouldEqual found - -let checkOptionNotPresent (opts:string[]) s = - let found = "Found '"+s+"'" - let notFound = "Did not expect to find '"+s+"'" - (if opts |> Array.exists (fun o -> o.EndsWith(s)) then found else notFound) - |> shouldEqual notFound - -let getReferencedFilenames = Array.choose (fun (o:string) -> if o.StartsWith("-r:") then o.[3..] |> (Path.GetFileName >> Some) else None) -let getReferencedFilenamesAndContainingFolders = Array.choose (fun (o:string) -> if o.StartsWith("-r:") then o.[3..] |> (fun r -> ((r |> Path.GetFileName), (r |> Path.GetDirectoryName |> Path.GetFileName)) |> Some) else None) -let getOutputFile = Array.pick (fun (o:string) -> if o.StartsWith("--out:") then o.[6..] |> Some else None) - -let getCompiledFilenames = - Array.choose (fun (opt: string) -> - if opt.EndsWith ".fs" then - opt |> Path.GetFileName |> Some - else None) - >> Array.distinct - -(* -[] - let ``Project file parsing example 1 Default Configuration`` () = - let projectFile = __SOURCE_DIRECTORY__ + @"/FSharp.Compiler.Service.Tests.fsproj" - let options = ProjectCracker.GetProjectOptionsFromProjectFile(projectFile) - - checkOption options.SourceFiles "FileSystemTests.fs" - - checkOption options.OtherOptions "FSharp.Compiler.Service.dll" - checkOption options.OtherOptions "--define:TRACE" - checkOption options.OtherOptions "--define:DEBUG" - checkOption options.OtherOptions "--flaterrors" - checkOption options.OtherOptions "--simpleresolution" - checkOption options.OtherOptions "--noframework" - -[] -let ``Project file parsing example 1 Release Configuration`` () = - let projectFile = __SOURCE_DIRECTORY__ + @"/FSharp.Compiler.Service.Tests.fsproj" - // Check with Configuration = Release - let options = ProjectCracker.GetProjectOptionsFromProjectFile(projectFile, [("Configuration", "Release")]) - - checkOption options.SourceFiles "FileSystemTests.fs" - - checkOption options.OtherOptions "FSharp.Compiler.Service.dll" - checkOption options.OtherOptions "--define:TRACE" - checkOptionNotPresent options.OtherOptions "--define:DEBUG" - checkOption options.OtherOptions "--debug:pdbonly" - -[] -let ``Project file parsing example 1 Default configuration relative path`` () = - let projectFile = "FSharp.Compiler.Service.Tests.fsproj" - Directory.SetCurrentDirectory(__SOURCE_DIRECTORY__) - let options = ProjectCracker.GetProjectOptionsFromProjectFile(projectFile) - - checkOption options.SourceFiles "FileSystemTests.fs" - - checkOption options.OtherOptions "FSharp.Compiler.Service.dll" - checkOption options.OtherOptions "--define:TRACE" - checkOption options.OtherOptions "--define:DEBUG" - checkOption options.OtherOptions "--flaterrors" - checkOption options.OtherOptions "--simpleresolution" - checkOption options.OtherOptions "--noframework" -*) - -[] -let ``Project file parsing VS2013_FSharp_Portable_Library_net45``() = - if (not hasMSBuild14) || runningOnMono then () else // Disabled on Mono due to lack of installed PCL reference libraries - the modern way is to reference the FSHarp.Core nuget package so this is ok - - let projectFile = __SOURCE_DIRECTORY__ + @"/../projects/Sample_VS2013_FSharp_Portable_Library_net45/Sample_VS2013_FSharp_Portable_Library_net45.fsproj" - let options = ProjectCracker.GetProjectOptionsFromProjectFile(projectFile, []) - - checkOption options.OtherOptions "--targetprofile:netcore" - checkOption options.OtherOptions "--tailcalls-" - - checkOption options.OtherOptions "FSharp.Core.dll" - checkOption options.OtherOptions "Microsoft.CSharp.dll" - checkOption options.OtherOptions "System.Runtime.dll" - checkOption options.OtherOptions "System.Net.Requests.dll" - checkOption options.OtherOptions "System.Xml.XmlSerializer.dll" - -[] -let ``Project file parsing Sample_VS2013_FSharp_Portable_Library_net451_adjusted_to_profile78``() = - if (not hasMSBuild14) || runningOnMono then () else // Disabled on Mono due to lack of installed PCL reference libraries - the modern way is to reference the FSHarp.Core nuget package so this is ok - - let projectFile = __SOURCE_DIRECTORY__ + @"/../projects/Sample_VS2013_FSharp_Portable_Library_net451_adjusted_to_profile78/Sample_VS2013_FSharp_Portable_Library_net451.fsproj" - Directory.SetCurrentDirectory(__SOURCE_DIRECTORY__ + @"/../projects/Sample_VS2013_FSharp_Portable_Library_net451_adjusted_to_profile78/") - let options = ProjectCracker.GetProjectOptionsFromProjectFile(projectFile, []) - - checkOption options.OtherOptions "--targetprofile:netcore" - checkOption options.OtherOptions "--tailcalls-" - - checkOption options.OtherOptions "FSharp.Core.dll" - checkOption options.OtherOptions "Microsoft.CSharp.dll" - checkOption options.OtherOptions "System.Runtime.dll" - checkOption options.OtherOptions "System.Net.Requests.dll" - checkOption options.OtherOptions "System.Xml.XmlSerializer.dll" - -[] -let ``Project file parsing -- compile files 1``() = - let opts = ProjectCracker.GetProjectOptionsFromProjectFile(__SOURCE_DIRECTORY__ + @"/data/Test1.fsproj") - CollectionAssert.AreEqual (["Test1File2.fs"; "Test1File1.fs"], opts.SourceFiles |> Array.map Path.GetFileName) - CollectionAssert.IsEmpty (getCompiledFilenames opts.OtherOptions) - -[] -let ``Project file parsing -- compile files 2``() = - let opts = ProjectCracker.GetProjectOptionsFromProjectFile(__SOURCE_DIRECTORY__ + @"/data/Test2.fsproj") - - CollectionAssert.AreEqual (["Test2File2.fs"; "Test2File1.fs"], opts.SourceFiles |> Array.map Path.GetFileName) - CollectionAssert.IsEmpty (getCompiledFilenames opts.OtherOptions) - -[] -let ``Project file parsing -- bad project file``() = - let f = normalizePath (__SOURCE_DIRECTORY__ + @"/data/Malformed.fsproj") - try - ProjectCracker.GetProjectOptionsFromProjectFileLogged(f) |> ignore - failwith "Expected exception" - with e -> - Assert.That(e.Message, Contains.Substring "Could not load project") - Assert.That(e.Message, Contains.Substring "Malformed.fsproj") - -[] -let ``Project file parsing -- non-existent project file``() = - let f = normalizePath (__SOURCE_DIRECTORY__ + @"/data/DoesNotExist.fsproj") - try - ProjectCracker.GetProjectOptionsFromProjectFileLogged(f, enableLogging=true) |> ignore - with e -> - Assert.That(e.Message, Contains.Substring "DoesNotExist.fsproj") - -[] -let ``Project file parsing -- output file``() = - let p = ProjectCracker.GetProjectOptionsFromProjectFile(__SOURCE_DIRECTORY__ + @"/data/Test1.fsproj") - - let expectedOutputPath = - normalizePath (__SOURCE_DIRECTORY__ + "/data/bin/Debug/Test1.dll") - - p.OtherOptions - |> getOutputFile - |> should equal expectedOutputPath - -[] -let ``Project file parsing -- references``() = - let p = ProjectCracker.GetProjectOptionsFromProjectFile(__SOURCE_DIRECTORY__ + @"/data/Test1.fsproj") - - let references = getReferencedFilenames p.OtherOptions - checkOption references "FSharp.Core.dll" - checkOption references "mscorlib.dll" - checkOption references "System.Core.dll" - checkOption references "System.dll" - printfn "Project file parsing -- references: references = %A" references - references |> should haveLength 4 - p.ReferencedProjects |> should be Empty - -[] -let ``Project file parsing -- no project references``() = - let p = ProjectCracker.GetProjectOptionsFromProjectFile(__SOURCE_DIRECTORY__ + @"/data/Test3.fsproj") - - let references = getReferencedFilenames p.OtherOptions - checkOption references "FSharp.Core.dll" - checkOption references "mscorlib.dll" - checkOption references "System.Core.dll" - checkOption references "System.dll" - p.ReferencedProjects |> should haveLength 0 - -[] -let ``Project file parsing -- 2nd level references``() = - let p,_ = ProjectCracker.GetProjectOptionsFromProjectFileLogged(__SOURCE_DIRECTORY__ + @"/data/Test2.fsproj", enableLogging=true) - - let references = getReferencedFilenames p.OtherOptions - checkOption references "FSharp.Core.dll" - checkOption references "mscorlib.dll" - checkOption references "System.Core.dll" - checkOption references "System.dll" - checkOption references "Test1.dll" - printfn "Project file parsing -- references: references = %A" references - references |> should haveLength 5 - p.ReferencedProjects |> should haveLength 1 - (snd p.ReferencedProjects.[0]).ProjectFileName |> should contain (normalizePath (__SOURCE_DIRECTORY__ + @"/data/Test1.fsproj")) - - -[] -let ``Project file parsing -- reference project output file``() = - let p = ProjectCracker.GetProjectOptionsFromProjectFile(__SOURCE_DIRECTORY__ + @"/data/DifferingOutputDir/Dir2/Test2.fsproj") - - let expectedOutputPath = - normalizePath (__SOURCE_DIRECTORY__ + "/data/DifferingOutputDir/Dir2/OutputDir2/Test2.exe") - - p.OtherOptions - |> getOutputFile - |> should equal expectedOutputPath - - p.OtherOptions - |> Array.choose (fun (o:string) -> if o.StartsWith("-r:") then o.[3..] |> Some else None) - |> should contain (normalizePath (__SOURCE_DIRECTORY__ + @"/data/DifferingOutputDir/Dir1/OutputDir1/Test1.dll")) - -[] -let ``Project file parsing -- Tools Version 12``() = - if not hasMSBuild14 then () else - let opts = ProjectCracker.GetProjectOptionsFromProjectFile(__SOURCE_DIRECTORY__ + @"/data/ToolsVersion12.fsproj") - checkOption (getReferencedFilenames opts.OtherOptions) "System.Core.dll" - -[] -let ``Project file parsing -- Logging``() = - if not hasMSBuild14 then () else - let projectFileName = normalizePath (__SOURCE_DIRECTORY__ + @"/data/ToolsVersion12.fsproj") - let _, logMap = ProjectCracker.GetProjectOptionsFromProjectFileLogged(projectFileName, enableLogging=true) - let log = logMap.[projectFileName] - - Assert.That(log, Does.Contain("ResolveAssemblyReference")) - if runningOnMono then - Assert.That(log, Does.Contain("System.Core")) - Assert.That(log, Does.Contain("Microsoft.Build.Tasks.ResolveAssemblyReference")) - else - Assert.That(log, Does.Contain("Microsoft.Build.Tasks.Core")) - -[] -let ``Project file parsing -- FSharpProjectOptions.SourceFiles contains both fs and fsi files``() = - let projectFileName = normalizePath (__SOURCE_DIRECTORY__ + @"/data/FsAndFsiFiles.fsproj") - let options, log = ProjectCracker.GetProjectOptionsFromProjectFileLogged(projectFileName, enableLogging=true) - printfn "%A" log - let expectedSourceFiles = - [| "Test1File2.fsi" - "Test1File2.fs" - "Test1File1.fs" - "Test1File0.fsi" - "Test1File0.fs" |] - Assert.That(options.SourceFiles |> Array.map Path.GetFileName, Is.EqualTo expectedSourceFiles, "source files") - -[] -let ``Project file parsing -- Full path``() = - if not hasMSBuild14 then () else - let f = normalizePath (__SOURCE_DIRECTORY__ + @"/data/ToolsVersion12.fsproj") - let p = ProjectCracker.GetProjectOptionsFromProjectFile(f) - p.ProjectFileName |> should equal f - -[] -let ``Project file parsing -- project references``() = - let f1 = normalizePath (__SOURCE_DIRECTORY__ + @"/data/Test1.fsproj") - let f2 = normalizePath (__SOURCE_DIRECTORY__ + @"/data/Test2.fsproj") - let options = ProjectCracker.GetProjectOptionsFromProjectFile(f2) - - options.ReferencedProjects |> should haveLength 1 - fst options.ReferencedProjects.[0] |> should endWith "Test1.dll" - snd options.ReferencedProjects.[0] |> should equal (ProjectCracker.GetProjectOptionsFromProjectFile(f1)) - -[] -let ``Project file parsing -- multi language project``() = - if not hasMSBuild14 then () else - let f = normalizePath (__SOURCE_DIRECTORY__ + @"/data/MultiLanguageProject/ConsoleApplication1.fsproj") - - let options = ProjectCracker.GetProjectOptionsFromProjectFile(f) - - options.ReferencedProjects |> should haveLength 1 - options.ReferencedProjects.[0] |> fst |> should endWith "ConsoleApplication2.exe" - - checkOption options.OtherOptions "ConsoleApplication2.exe" - checkOption options.OtherOptions "ConsoleApplication3.exe" - -[] -let ``Project file parsing -- PCL profile7 project``() = - if (not hasMSBuild14) || runningOnMono then () else // Disabled on Mono due to lack of installed PCL reference libraries - the modern way is to reference the FSHarp.Core nuget package so this is ok - - let f = normalizePath (__SOURCE_DIRECTORY__ + @"/../projects/Sample_VS2013_FSharp_Portable_Library_net45/Sample_VS2013_FSharp_Portable_Library_net45.fsproj") - - let options = ProjectCracker.GetProjectOptionsFromProjectFile(f) - let references = - options.OtherOptions - |> getReferencedFilenames - |> Set.ofArray - references - |> shouldEqual - (set [|"FSharp.Core.dll"; "Microsoft.CSharp.dll"; "Microsoft.VisualBasic.dll"; - "System.Collections.Concurrent.dll"; "System.Collections.dll"; - "System.ComponentModel.Annotations.dll"; - "System.ComponentModel.DataAnnotations.dll"; - "System.ComponentModel.EventBasedAsync.dll"; "System.ComponentModel.dll"; - "System.Core.dll"; "System.Diagnostics.Contracts.dll"; - "System.Diagnostics.Debug.dll"; "System.Diagnostics.Tools.dll"; - "System.Diagnostics.Tracing.dll"; "System.Dynamic.Runtime.dll"; - "System.Globalization.dll"; "System.IO.Compression.dll"; "System.IO.dll"; - "System.Linq.Expressions.dll"; "System.Linq.Parallel.dll"; - "System.Linq.Queryable.dll"; "System.Linq.dll"; "System.Net.Http.dll"; - "System.Net.NetworkInformation.dll"; "System.Net.Primitives.dll"; - "System.Net.Requests.dll"; "System.Net.dll"; "System.Numerics.dll"; - "System.ObjectModel.dll"; "System.Reflection.Context.dll"; - "System.Reflection.Extensions.dll"; "System.Reflection.Primitives.dll"; - "System.Reflection.dll"; "System.Resources.ResourceManager.dll"; - "System.Runtime.Extensions.dll"; - "System.Runtime.InteropServices.WindowsRuntime.dll"; - "System.Runtime.InteropServices.dll"; "System.Runtime.Numerics.dll"; - "System.Runtime.Serialization.Json.dll"; - "System.Runtime.Serialization.Primitives.dll"; - "System.Runtime.Serialization.Xml.dll"; "System.Runtime.Serialization.dll"; - "System.Runtime.dll"; "System.Security.Principal.dll"; - "System.ServiceModel.Duplex.dll"; "System.ServiceModel.Http.dll"; - "System.ServiceModel.NetTcp.dll"; "System.ServiceModel.Primitives.dll"; - "System.ServiceModel.Security.dll"; "System.ServiceModel.Web.dll"; - "System.ServiceModel.dll"; "System.Text.Encoding.Extensions.dll"; - "System.Text.Encoding.dll"; "System.Text.RegularExpressions.dll"; - "System.Threading.Tasks.Parallel.dll"; "System.Threading.Tasks.dll"; - "System.Threading.dll"; "System.Windows.dll"; "System.Xml.Linq.dll"; - "System.Xml.ReaderWriter.dll"; "System.Xml.Serialization.dll"; - "System.Xml.XDocument.dll"; "System.Xml.XmlSerializer.dll"; "System.Xml.dll"; - "System.dll"; "mscorlib.dll"|]) - - checkOption options.OtherOptions "--targetprofile:netcore" - -[] -let ``Project file parsing -- PCL profile78 project``() = - if (not hasMSBuild14) || runningOnMono then () else // Disabled on Mono due to lack of installed PCL reference libraries - the modern way is to reference the FSHarp.Core nuget package so this is ok - - let f = normalizePath (__SOURCE_DIRECTORY__ + @"/../projects/Sample_VS2013_FSharp_Portable_Library_net451_adjusted_to_profile78/Sample_VS2013_FSharp_Portable_Library_net451.fsproj") - - let options = ProjectCracker.GetProjectOptionsFromProjectFile(f) - let references = - options.OtherOptions - |> getReferencedFilenames - |> Set.ofArray - references - |> shouldEqual - (set [|"FSharp.Core.dll"; "Microsoft.CSharp.dll"; "System.Collections.dll"; - "System.ComponentModel.EventBasedAsync.dll"; "System.ComponentModel.dll"; - "System.Core.dll"; "System.Diagnostics.Contracts.dll"; - "System.Diagnostics.Debug.dll"; "System.Diagnostics.Tools.dll"; - "System.Dynamic.Runtime.dll"; "System.Globalization.dll"; "System.IO.dll"; - "System.Linq.Expressions.dll"; "System.Linq.Queryable.dll"; "System.Linq.dll"; - "System.Net.NetworkInformation.dll"; "System.Net.Primitives.dll"; - "System.Net.Requests.dll"; "System.Net.dll"; "System.ObjectModel.dll"; - "System.Reflection.Extensions.dll"; "System.Reflection.Primitives.dll"; - "System.Reflection.dll"; "System.Resources.ResourceManager.dll"; - "System.Runtime.Extensions.dll"; - "System.Runtime.InteropServices.WindowsRuntime.dll"; - "System.Runtime.Serialization.Json.dll"; - "System.Runtime.Serialization.Primitives.dll"; - "System.Runtime.Serialization.Xml.dll"; "System.Runtime.Serialization.dll"; - "System.Runtime.dll"; "System.Security.Principal.dll"; - "System.ServiceModel.Http.dll"; "System.ServiceModel.Primitives.dll"; - "System.ServiceModel.Security.dll"; "System.ServiceModel.Web.dll"; - "System.ServiceModel.dll"; "System.Text.Encoding.Extensions.dll"; - "System.Text.Encoding.dll"; "System.Text.RegularExpressions.dll"; - "System.Threading.Tasks.dll"; "System.Threading.dll"; "System.Windows.dll"; - "System.Xml.Linq.dll"; "System.Xml.ReaderWriter.dll"; - "System.Xml.Serialization.dll"; "System.Xml.XDocument.dll"; - "System.Xml.XmlSerializer.dll"; "System.Xml.dll"; "System.dll"; "mscorlib.dll"|]) - - checkOption options.OtherOptions "--targetprofile:netcore" - -[] -let ``Project file parsing -- PCL profile259 project``() = - if (not hasMSBuild14) || runningOnMono then () else // Disabled on Mono due to lack of installed PCL reference libraries - the modern way is to reference the FSHarp.Core nuget package so this is ok - let f = normalizePath (__SOURCE_DIRECTORY__ + @"/../projects/Sample_VS2013_FSharp_Portable_Library_net451_adjusted_to_profile259/Sample_VS2013_FSharp_Portable_Library_net451.fsproj") - - let options = ProjectCracker.GetProjectOptionsFromProjectFile(f) - let references = - options.OtherOptions - |> getReferencedFilenames - |> Set.ofArray - references - |> shouldEqual - (set [|"FSharp.Core.dll"; "Microsoft.CSharp.dll"; "System.Collections.dll"; - "System.ComponentModel.EventBasedAsync.dll"; "System.ComponentModel.dll"; - "System.Core.dll"; "System.Diagnostics.Contracts.dll"; - "System.Diagnostics.Debug.dll"; "System.Diagnostics.Tools.dll"; - "System.Dynamic.Runtime.dll"; "System.Globalization.dll"; "System.IO.dll"; - "System.Linq.Expressions.dll"; "System.Linq.Queryable.dll"; "System.Linq.dll"; - "System.Net.NetworkInformation.dll"; "System.Net.Primitives.dll"; - "System.Net.Requests.dll"; "System.Net.dll"; "System.ObjectModel.dll"; - "System.Reflection.Extensions.dll"; "System.Reflection.Primitives.dll"; - "System.Reflection.dll"; "System.Resources.ResourceManager.dll"; - "System.Runtime.Extensions.dll"; - "System.Runtime.InteropServices.WindowsRuntime.dll"; - "System.Runtime.Serialization.Json.dll"; - "System.Runtime.Serialization.Primitives.dll"; - "System.Runtime.Serialization.Xml.dll"; "System.Runtime.Serialization.dll"; - "System.Runtime.dll"; "System.Security.Principal.dll"; - "System.ServiceModel.Web.dll"; "System.Text.Encoding.Extensions.dll"; - "System.Text.Encoding.dll"; "System.Text.RegularExpressions.dll"; - "System.Threading.Tasks.dll"; "System.Threading.dll"; "System.Windows.dll"; - "System.Xml.Linq.dll"; "System.Xml.ReaderWriter.dll"; - "System.Xml.Serialization.dll"; "System.Xml.XDocument.dll"; - "System.Xml.XmlSerializer.dll"; "System.Xml.dll"; "System.dll"; "mscorlib.dll"|]) - - checkOption options.OtherOptions "--targetprofile:netcore" - -(* -[] -let ``Project file parsing -- Exe with a PCL reference``() = - - let f = normalizePath(__SOURCE_DIRECTORY__ + @"/data/sqlite-net-spike/sqlite-net-spike.fsproj") - - let p = ProjectCracker.GetProjectOptionsFromProjectFile(f) - let references = getReferencedFilenames p.OtherOptions |> set - references |> should contain "FSharp.Core.dll" - references |> should contain "SQLite.Net.Platform.Generic.dll" - references |> should contain "SQLite.Net.Platform.Win32.dll" - references |> should contain "SQLite.Net.dll" - references |> should contain "System.Collections.Concurrent.dll" - references |> should contain "System.Linq.Queryable.dll" - references |> should contain "System.Resources.ResourceManager.dll" - references |> should contain "System.Threading.dll" - references |> should contain "System.dll" - references |> should contain "mscorlib.dll" - references |> should contain "System.Reflection.dll" - references |> should contain "System.Reflection.Emit.Lightweight.dll" -*) - -[] -let ``Project file parsing -- project file contains project reference to out-of-solution project and is used in release mode``() = - let projectFileName = normalizePath(__SOURCE_DIRECTORY__ + @"/data/Test2.fsproj") - let opts = ProjectCracker.GetProjectOptionsFromProjectFile(projectFileName,[("Configuration","Release")]) - let references = getReferencedFilenamesAndContainingFolders opts.OtherOptions |> set - // Check the reference is to a release DLL - references |> should contain ("Test1.dll", "Release") - -[] -let ``Project file parsing -- project file contains project reference to out-of-solution project and is used in debug mode``() = - - let projectFileName = normalizePath(__SOURCE_DIRECTORY__ + @"/data/Test2.fsproj") - let opts = ProjectCracker.GetProjectOptionsFromProjectFile(projectFileName,[("Configuration","Debug")]) - let references = getReferencedFilenamesAndContainingFolders opts.OtherOptions |> set - // Check the reference is to a debug DLL - references |> should contain ("Test1.dll", "Debug") - -[] -let ``Project file parsing -- space in file name``() = - let opts = ProjectCracker.GetProjectOptionsFromProjectFile(__SOURCE_DIRECTORY__ + @"/data/Space in name.fsproj") - CollectionAssert.AreEqual (["Test2File2.fs"; "Test2File1.fs"], opts.SourceFiles |> Array.map Path.GetFileName) - CollectionAssert.IsEmpty (getCompiledFilenames opts.OtherOptions) - -[] -let ``Project file parsing -- report files``() = - let programFilesx86Folder = System.Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") - if not runningOnMono then - - let dirRefs = programFilesx86Folder + @"\Reference Assemblies\Microsoft\FSharp\" - printfn "Enumerating %s" dirRefs - if Directory.Exists(dirRefs) then - for f in Directory.EnumerateFiles(dirRefs,"*",SearchOption.AllDirectories) do - printfn "File: %s" f - - let dir40 = programFilesx86Folder + @"\Microsoft SDKs\F#\4.0\" - printfn "Enumerating %s" dir40 - if Directory.Exists(dir40) then - for f in Directory.EnumerateFiles(dir40,"*",SearchOption.AllDirectories) do - printfn "File: %s" f - - let dir41 = programFilesx86Folder + @"\Microsoft SDKs\F#\4.1\" - printfn "Enumerating %s" dir41 - if Directory.Exists(dir41) then - for f in Directory.EnumerateFiles(dir41,"*",SearchOption.AllDirectories) do - printfn "File: %s" f - -[] -let ``Test OtherOptions order for GetProjectOptionsFromScript`` () = - let test scriptName expected2 = - let scriptPath = __SOURCE_DIRECTORY__ + @"/data/ScriptProject/" + scriptName + ".fsx" - let scriptSource = File.ReadAllText scriptPath - let projOpts, _diagnostics = checker.GetProjectOptionsFromScript(scriptPath, scriptSource) |> Async.RunSynchronously - projOpts.OtherOptions - |> Array.map (fun s -> if s.StartsWith "--" then s else Path.GetFileNameWithoutExtension s) - |> Array.forall (fun s -> Set.contains s expected2) - |> shouldEqual true - - let otherArgs = [|"--noframework"; "--warn:3"; "System.Numerics"; "System.ValueTuple"; "mscorlib"; "FSharp.Core"; "System"; "System.Xml"; "System.Runtime.Remoting"; "System.Runtime.Serialization.Formatters.Soap"; "System.Data"; "System.Drawing"; "System.Core"; "System.Runtime"; "System.Linq"; "System.Reflection"; "System.Linq.Expressions"; "System.Threading.Tasks"; "System.IO"; "System.Net.Requests"; "System.Collections"; "System.Runtime.Numerics"; "System.Threading"; "System.Web"; "System.Web.Services"; "System.Windows.Forms"; "FSharp.Compiler.Interactive.Settings"|] |> Set.ofArray - - test "Main1" otherArgs - test "Main2" otherArgs - test "Main3" otherArgs - test "Main4" otherArgs - test "MainBad" otherArgs - - -#endif - -[] -let ``Test SourceFiles order for GetProjectOptionsFromScript`` () = // See #594 - let test scriptName expected = - let scriptPath = __SOURCE_DIRECTORY__ + @"/data/ScriptProject/" + scriptName + ".fsx" - let scriptSource = File.ReadAllText scriptPath - let projOpts, _diagnostics = - checker.GetProjectOptionsFromScript(scriptPath, FSharp.Compiler.Text.SourceText.ofString scriptSource) - |> Async.RunSynchronously - projOpts.SourceFiles - |> Array.map Path.GetFileNameWithoutExtension - |> shouldEqual expected - test "Main1" [|"BaseLib1"; "Lib1"; "Lib2"; "Main1"|] - test "Main2" [|"BaseLib1"; "Lib1"; "Lib2"; "Lib3"; "Main2"|] - test "Main3" [|"Lib3"; "Lib4"; "Main3"|] - test "Main4" [|"BaseLib2"; "Lib5"; "BaseLib1"; "Lib1"; "Lib2"; "Main4"|] - test "MainBad" [|"MainBad"|] - -[] -#if NETCOREAPP2_0 -[] -#endif -let ``Script load closure project`` () = - let fileName1 = Path.GetTempPath() + Path.DirectorySeparatorChar.ToString() + "Impl.fs" - let fileName2 = Path.ChangeExtension(Path.GetTempFileName(), ".fsx") - - let fileSource1Text = """ -module ImplFile - -#if INTERACTIVE -let x = 42 -#endif -""" - let fileSource1 = FSharp.Compiler.Text.SourceText.ofString fileSource1Text - let fileSource2Text = """ -#load "Impl.fs" -ImplFile.x -""" - let fileSource2 = FSharp.Compiler.Text.SourceText.ofString fileSource2Text - File.WriteAllText(fileName1, fileSource1Text) - File.WriteAllText(fileName2, fileSource2Text) - - printfn "------Starting Script load closure project----" - printfn "Getting project options..." - let projectOptions, diagnostics = - checker.GetProjectOptionsFromScript(fileName2, fileSource2, useFsiAuxLib=false) |> Async.RunSynchronously - for d in diagnostics do - printfn "ERROR: %A" d - diagnostics.IsEmpty |> shouldEqual true - - printfn "Parse and check..." - let _, checkResults = - checker.ParseAndCheckFileInProject(fileName2, 0, fileSource2, projectOptions) |> Async.RunSynchronously - - match checkResults with - | FSharpCheckFileAnswer.Succeeded results -> - results.Errors |> shouldEqual [| |] - | _ -> failwith "type check was aborted" - - printfn "Getting parsing options..." - let parsingOptions, diagnostics = checker.GetParsingOptionsFromProjectOptions(projectOptions) - for d in diagnostics do - printfn "ERROR: %A" d - diagnostics.IsEmpty |> shouldEqual true - - printfn "Parsing file..." - let parseResults = checker.ParseFile(fileName1, fileSource1, parsingOptions) |> Async.RunSynchronously - printfn "Checking parsetree..." - parseResults.ParseTree.IsSome |> shouldEqual true - printfn "Checking decls..." - match parseResults.ParseTree.Value with - | ParsedInput.ImplFile (ParsedImplFileInput (_, _, _, _, _, modules, _)) -> - let (SynModuleOrNamespace (_, _, _, decls, _, _, _, _)) = modules.Head - decls.Length |> shouldEqual 1 - | _ -> failwith "got sig file" - printfn "------Finished Script load closure project----"