diff --git a/.gitattributes b/.gitattributes
index e53d317832..07145d0fe9 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -33,6 +33,7 @@
*.ruleset text
*.shproj text
*.sln text
+*.slnx text
*.targets text
*.vb text
*.vbproj text
diff --git a/.github/ISSUE_TEMPLATE/01_Bug_Report.md b/.github/ISSUE_TEMPLATE/01_Bug_Report.md
index 918b30c8c8..d643b2347d 100644
--- a/.github/ISSUE_TEMPLATE/01_Bug_Report.md
+++ b/.github/ISSUE_TEMPLATE/01_Bug_Report.md
@@ -26,7 +26,7 @@ assignees: ''
* Do you know whether it is specific to that configuration?
* Are you running in any particular type of environment? (e.g. Containers, a cloud scenario, app you are trying to target is a different user)
* Is it a self-contained published application?
-* What's the output of `dotnet info`
+* What's the output of `dotnet --info`
-->
### Regression?
diff --git a/debuggees.sln b/debuggees.sln
deleted file mode 100644
index 8786ab4f78..0000000000
--- a/debuggees.sln
+++ /dev/null
@@ -1,735 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.12.35309.182
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestDebuggee", "src\SOS\lldbplugin.tests\TestDebuggee\TestDebuggee.csproj", "{6C43BE85-F8C3-4D76-8050-F25CE953A7FD}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SOS", "SOS", "{41638A4C-0DAF-47ED-A774-ECBBAC0315D7}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{19FAB78C-3351-4911-8F0C-8C6056401740}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Debuggees", "Debuggees", "{C3072949-6D24-451B-A308-2F3621F858B0}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebApp3", "src\SOS\SOS.UnitTests\Debuggees\WebApp3\WebApp3.csproj", "{252E5845-8D4C-4306-9D8F-ED2E2F7005F6}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SimpleThrow", "src\SOS\SOS.UnitTests\Debuggees\SimpleThrow\SimpleThrow.csproj", "{179EF543-E30A-4428-ABA0-2E2621860173}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DivZero", "src\SOS\SOS.UnitTests\Debuggees\DivZero\DivZero.csproj", "{447AC053-2E0A-4119-BD11-30A4A8E3F765}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GCWhere", "src\SOS\SOS.UnitTests\Debuggees\GCWhere\GCWhere.csproj", "{664F46A9-3C99-489B-AAB9-4CD3A430C425}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NestedExceptionTest", "src\SOS\SOS.UnitTests\Debuggees\NestedExceptionTest\NestedExceptionTest.csproj", "{0CB805C8-0B76-4B1D-8AAF-48535B180448}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Overflow", "src\SOS\SOS.UnitTests\Debuggees\Overflow\Overflow.csproj", "{20251748-AA7B-45BE-ADAA-C9375F5CC80F}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReflectionTest", "src\SOS\SOS.UnitTests\Debuggees\ReflectionTest\ReflectionTest.csproj", "{DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TaskNestedException", "src\SOS\SOS.UnitTests\Debuggees\TaskNestedException\TaskNestedException\TaskNestedException.csproj", "{73EA5188-1E4F-42D8-B63E-F1B878A4EB63}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RandomUserLibrary", "src\SOS\SOS.UnitTests\Debuggees\TaskNestedException\RandomUserLibrary\RandomUserLibrary.csproj", "{B50D14DB-8EE5-47BD-B412-62FA5C693CC7}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SymbolTestApp", "src\SOS\SOS.UnitTests\Debuggees\SymbolTestApp\SymbolTestApp\SymbolTestApp.csproj", "{112FE2A7-3FD2-4496-8A14-171898AD5CF5}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SymbolTestDll", "src\SOS\SOS.UnitTests\Debuggees\SymbolTestApp\SymbolTestDll\SymbolTestDll.csproj", "{8C27904A-47C0-44C7-B191-88FF34580CBE}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LineNums", "src\SOS\SOS.UnitTests\Debuggees\LineNums\LineNums.csproj", "{84881FB8-37E1-4D9B-B27E-9831C30DCC04}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GCPOH", "src\SOS\SOS.UnitTests\Debuggees\GCPOH\GCPOH.csproj", "{0A34CA51-8B8C-41A1-BE24-AB2C574EA144}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotnetDumpCommands", "src\SOS\SOS.UnitTests\Debuggees\DotnetDumpCommands\DotnetDumpCommands.csproj", "{F9A69812-DC52-428D-9DB1-8B831A8FF776}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DynamicMethod", "src\SOS\SOS.UnitTests\Debuggees\DynamicMethod\DynamicMethod.csproj", "{2F9AA5A9-D42A-42C6-B483-1B9284C62F91}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Checked|Any CPU = Checked|Any CPU
- Checked|ARM = Checked|ARM
- Checked|ARM64 = Checked|ARM64
- Checked|x64 = Checked|x64
- Checked|x86 = Checked|x86
- Debug|Any CPU = Debug|Any CPU
- Debug|ARM = Debug|ARM
- Debug|ARM64 = Debug|ARM64
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|ARM = Release|ARM
- Release|ARM64 = Release|ARM64
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- RelWithDebInfo|Any CPU = RelWithDebInfo|Any CPU
- RelWithDebInfo|ARM = RelWithDebInfo|ARM
- RelWithDebInfo|ARM64 = RelWithDebInfo|ARM64
- RelWithDebInfo|x64 = RelWithDebInfo|x64
- RelWithDebInfo|x86 = RelWithDebInfo|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|Any CPU.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|Any CPU.Build.0 = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|ARM.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|ARM.Build.0 = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|ARM64.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|ARM64.Build.0 = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|x64.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|x64.Build.0 = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|x86.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Checked|x86.Build.0 = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Debug|ARM.Build.0 = Debug|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Debug|ARM64.Build.0 = Debug|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Debug|x64.ActiveCfg = Debug|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Debug|x64.Build.0 = Debug|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Debug|x86.ActiveCfg = Debug|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Debug|x86.Build.0 = Debug|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Release|Any CPU.Build.0 = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Release|ARM.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Release|ARM.Build.0 = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Release|ARM64.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Release|ARM64.Build.0 = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Release|x64.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Release|x64.Build.0 = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Release|x86.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.Release|x86.Build.0 = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Checked|ARM.Build.0 = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Checked|ARM64.Build.0 = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Checked|x64.ActiveCfg = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Checked|x64.Build.0 = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Checked|x86.ActiveCfg = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Checked|x86.Build.0 = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Debug|ARM.Build.0 = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Debug|ARM64.Build.0 = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Debug|x64.ActiveCfg = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Debug|x64.Build.0 = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Debug|x86.ActiveCfg = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Debug|x86.Build.0 = Debug|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Release|Any CPU.Build.0 = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Release|ARM.ActiveCfg = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Release|ARM.Build.0 = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Release|ARM64.ActiveCfg = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Release|ARM64.Build.0 = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Release|x64.ActiveCfg = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Release|x64.Build.0 = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Release|x86.ActiveCfg = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.Release|x86.Build.0 = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Checked|ARM.Build.0 = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Checked|ARM64.Build.0 = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Checked|x64.ActiveCfg = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Checked|x64.Build.0 = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Checked|x86.ActiveCfg = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Checked|x86.Build.0 = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Debug|ARM.Build.0 = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Debug|ARM64.Build.0 = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Debug|x64.ActiveCfg = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Debug|x64.Build.0 = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Debug|x86.ActiveCfg = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Debug|x86.Build.0 = Debug|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Release|Any CPU.Build.0 = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Release|ARM.ActiveCfg = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Release|ARM.Build.0 = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Release|ARM64.ActiveCfg = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Release|ARM64.Build.0 = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Release|x64.ActiveCfg = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Release|x64.Build.0 = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Release|x86.ActiveCfg = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.Release|x86.Build.0 = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {179EF543-E30A-4428-ABA0-2E2621860173}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Checked|ARM.Build.0 = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Checked|ARM64.Build.0 = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Checked|x64.ActiveCfg = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Checked|x64.Build.0 = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Checked|x86.ActiveCfg = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Checked|x86.Build.0 = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Debug|ARM.Build.0 = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Debug|ARM64.Build.0 = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Debug|x64.ActiveCfg = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Debug|x64.Build.0 = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Debug|x86.ActiveCfg = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Debug|x86.Build.0 = Debug|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Release|Any CPU.Build.0 = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Release|ARM.ActiveCfg = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Release|ARM.Build.0 = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Release|ARM64.ActiveCfg = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Release|ARM64.Build.0 = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Release|x64.ActiveCfg = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Release|x64.Build.0 = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Release|x86.ActiveCfg = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.Release|x86.Build.0 = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {447AC053-2E0A-4119-BD11-30A4A8E3F765}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Checked|ARM.Build.0 = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Checked|ARM64.Build.0 = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Checked|x64.ActiveCfg = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Checked|x64.Build.0 = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Checked|x86.ActiveCfg = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Checked|x86.Build.0 = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Debug|ARM.Build.0 = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Debug|ARM64.Build.0 = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Debug|x64.ActiveCfg = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Debug|x64.Build.0 = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Debug|x86.ActiveCfg = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Debug|x86.Build.0 = Debug|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Release|Any CPU.Build.0 = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Release|ARM.ActiveCfg = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Release|ARM.Build.0 = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Release|ARM64.ActiveCfg = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Release|ARM64.Build.0 = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Release|x64.ActiveCfg = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Release|x64.Build.0 = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Release|x86.ActiveCfg = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.Release|x86.Build.0 = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {664F46A9-3C99-489B-AAB9-4CD3A430C425}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Checked|ARM.Build.0 = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Checked|ARM64.Build.0 = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Checked|x64.ActiveCfg = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Checked|x64.Build.0 = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Checked|x86.ActiveCfg = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Checked|x86.Build.0 = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Debug|ARM.Build.0 = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Debug|ARM64.Build.0 = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Debug|x64.ActiveCfg = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Debug|x64.Build.0 = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Debug|x86.ActiveCfg = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Debug|x86.Build.0 = Debug|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Release|Any CPU.Build.0 = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Release|ARM.ActiveCfg = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Release|ARM.Build.0 = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Release|ARM64.ActiveCfg = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Release|ARM64.Build.0 = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Release|x64.ActiveCfg = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Release|x64.Build.0 = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Release|x86.ActiveCfg = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.Release|x86.Build.0 = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {0CB805C8-0B76-4B1D-8AAF-48535B180448}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Checked|ARM.Build.0 = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Checked|ARM64.Build.0 = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Checked|x64.ActiveCfg = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Checked|x64.Build.0 = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Checked|x86.ActiveCfg = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Checked|x86.Build.0 = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Debug|ARM.Build.0 = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Debug|ARM64.Build.0 = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Debug|x64.ActiveCfg = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Debug|x64.Build.0 = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Debug|x86.ActiveCfg = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Debug|x86.Build.0 = Debug|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Release|Any CPU.Build.0 = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Release|ARM.ActiveCfg = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Release|ARM.Build.0 = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Release|ARM64.ActiveCfg = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Release|ARM64.Build.0 = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Release|x64.ActiveCfg = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Release|x64.Build.0 = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Release|x86.ActiveCfg = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.Release|x86.Build.0 = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Checked|ARM.Build.0 = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Checked|ARM64.Build.0 = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Checked|x64.ActiveCfg = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Checked|x64.Build.0 = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Checked|x86.ActiveCfg = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Checked|x86.Build.0 = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Debug|ARM.Build.0 = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Debug|ARM64.Build.0 = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Debug|x64.ActiveCfg = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Debug|x64.Build.0 = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Debug|x86.ActiveCfg = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Debug|x86.Build.0 = Debug|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Release|Any CPU.Build.0 = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Release|ARM.ActiveCfg = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Release|ARM.Build.0 = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Release|ARM64.ActiveCfg = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Release|ARM64.Build.0 = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Release|x64.ActiveCfg = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Release|x64.Build.0 = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Release|x86.ActiveCfg = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.Release|x86.Build.0 = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Checked|ARM.Build.0 = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Checked|ARM64.Build.0 = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Checked|x64.ActiveCfg = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Checked|x64.Build.0 = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Checked|x86.ActiveCfg = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Checked|x86.Build.0 = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Debug|ARM.Build.0 = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Debug|ARM64.Build.0 = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Debug|x64.ActiveCfg = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Debug|x64.Build.0 = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Debug|x86.ActiveCfg = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Debug|x86.Build.0 = Debug|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Release|Any CPU.Build.0 = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Release|ARM.ActiveCfg = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Release|ARM.Build.0 = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Release|ARM64.ActiveCfg = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Release|ARM64.Build.0 = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Release|x64.ActiveCfg = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Release|x64.Build.0 = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Release|x86.ActiveCfg = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.Release|x86.Build.0 = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Checked|ARM.Build.0 = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Checked|ARM64.Build.0 = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Checked|x64.ActiveCfg = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Checked|x64.Build.0 = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Checked|x86.ActiveCfg = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Checked|x86.Build.0 = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Debug|ARM.Build.0 = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Debug|ARM64.Build.0 = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Debug|x64.ActiveCfg = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Debug|x64.Build.0 = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Debug|x86.ActiveCfg = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Debug|x86.Build.0 = Debug|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Release|Any CPU.Build.0 = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Release|ARM.ActiveCfg = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Release|ARM.Build.0 = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Release|ARM64.ActiveCfg = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Release|ARM64.Build.0 = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Release|x64.ActiveCfg = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Release|x64.Build.0 = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Release|x86.ActiveCfg = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.Release|x86.Build.0 = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Checked|ARM.Build.0 = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Checked|ARM64.Build.0 = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Checked|x64.ActiveCfg = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Checked|x64.Build.0 = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Checked|x86.ActiveCfg = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Checked|x86.Build.0 = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Debug|ARM.Build.0 = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Debug|ARM64.Build.0 = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Debug|x64.ActiveCfg = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Debug|x64.Build.0 = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Debug|x86.ActiveCfg = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Debug|x86.Build.0 = Debug|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Release|Any CPU.Build.0 = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Release|ARM.ActiveCfg = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Release|ARM.Build.0 = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Release|ARM64.ActiveCfg = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Release|ARM64.Build.0 = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Release|x64.ActiveCfg = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Release|x64.Build.0 = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Release|x86.ActiveCfg = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.Release|x86.Build.0 = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Checked|ARM.Build.0 = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Checked|ARM64.Build.0 = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Checked|x64.ActiveCfg = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Checked|x64.Build.0 = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Checked|x86.ActiveCfg = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Checked|x86.Build.0 = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Debug|ARM.Build.0 = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Debug|ARM64.Build.0 = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Debug|x64.ActiveCfg = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Debug|x64.Build.0 = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Debug|x86.ActiveCfg = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Debug|x86.Build.0 = Debug|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Release|Any CPU.Build.0 = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Release|ARM.ActiveCfg = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Release|ARM.Build.0 = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Release|ARM64.ActiveCfg = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Release|ARM64.Build.0 = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Release|x64.ActiveCfg = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Release|x64.Build.0 = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Release|x86.ActiveCfg = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.Release|x86.Build.0 = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {8C27904A-47C0-44C7-B191-88FF34580CBE}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Checked|ARM.Build.0 = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Checked|ARM64.Build.0 = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Checked|x64.ActiveCfg = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Checked|x64.Build.0 = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Checked|x86.ActiveCfg = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Checked|x86.Build.0 = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Debug|ARM.Build.0 = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Debug|ARM64.Build.0 = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Debug|x64.ActiveCfg = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Debug|x64.Build.0 = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Debug|x86.ActiveCfg = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Debug|x86.Build.0 = Debug|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Release|Any CPU.Build.0 = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Release|ARM.ActiveCfg = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Release|ARM.Build.0 = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Release|ARM64.ActiveCfg = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Release|ARM64.Build.0 = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Release|x64.ActiveCfg = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Release|x64.Build.0 = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Release|x86.ActiveCfg = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.Release|x86.Build.0 = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Checked|ARM.Build.0 = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Checked|ARM64.Build.0 = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Checked|x64.ActiveCfg = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Checked|x64.Build.0 = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Checked|x86.ActiveCfg = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Checked|x86.Build.0 = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Debug|ARM.Build.0 = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Debug|ARM64.Build.0 = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Debug|x64.ActiveCfg = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Debug|x64.Build.0 = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Debug|x86.ActiveCfg = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Debug|x86.Build.0 = Debug|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Release|Any CPU.Build.0 = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Release|ARM.ActiveCfg = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Release|ARM.Build.0 = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Release|ARM64.ActiveCfg = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Release|ARM64.Build.0 = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Release|x64.ActiveCfg = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Release|x64.Build.0 = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Release|x86.ActiveCfg = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.Release|x86.Build.0 = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Checked|ARM.Build.0 = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Checked|ARM64.Build.0 = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Checked|x64.ActiveCfg = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Checked|x64.Build.0 = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Checked|x86.ActiveCfg = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Checked|x86.Build.0 = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Debug|ARM.Build.0 = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Debug|ARM64.Build.0 = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Debug|x64.ActiveCfg = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Debug|x64.Build.0 = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Debug|x86.ActiveCfg = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Debug|x86.Build.0 = Debug|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Release|Any CPU.Build.0 = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Release|ARM.ActiveCfg = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Release|ARM.Build.0 = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Release|ARM64.ActiveCfg = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Release|ARM64.Build.0 = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Release|x64.ActiveCfg = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Release|x64.Build.0 = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Release|x86.ActiveCfg = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.Release|x86.Build.0 = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {F9A69812-DC52-428D-9DB1-8B831A8FF776}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Checked|ARM.Build.0 = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Checked|ARM64.Build.0 = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Checked|x64.ActiveCfg = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Checked|x64.Build.0 = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Checked|x86.ActiveCfg = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Checked|x86.Build.0 = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Debug|ARM.Build.0 = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Debug|ARM64.Build.0 = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Debug|x64.ActiveCfg = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Debug|x64.Build.0 = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Debug|x86.ActiveCfg = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Debug|x86.Build.0 = Debug|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Release|Any CPU.Build.0 = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Release|ARM.ActiveCfg = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Release|ARM.Build.0 = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Release|ARM64.ActiveCfg = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Release|ARM64.Build.0 = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Release|x64.ActiveCfg = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Release|x64.Build.0 = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Release|x86.ActiveCfg = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.Release|x86.Build.0 = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {6C43BE85-F8C3-4D76-8050-F25CE953A7FD} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {41638A4C-0DAF-47ED-A774-ECBBAC0315D7} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {C3072949-6D24-451B-A308-2F3621F858B0} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
- {252E5845-8D4C-4306-9D8F-ED2E2F7005F6} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {179EF543-E30A-4428-ABA0-2E2621860173} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {447AC053-2E0A-4119-BD11-30A4A8E3F765} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {664F46A9-3C99-489B-AAB9-4CD3A430C425} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {0CB805C8-0B76-4B1D-8AAF-48535B180448} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {20251748-AA7B-45BE-ADAA-C9375F5CC80F} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {DDDA69DF-2C4C-477A-B6C9-B4FE73C6E288} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {73EA5188-1E4F-42D8-B63E-F1B878A4EB63} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {B50D14DB-8EE5-47BD-B412-62FA5C693CC7} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {112FE2A7-3FD2-4496-8A14-171898AD5CF5} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {8C27904A-47C0-44C7-B191-88FF34580CBE} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {84881FB8-37E1-4D9B-B27E-9831C30DCC04} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {0A34CA51-8B8C-41A1-BE24-AB2C574EA144} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {F9A69812-DC52-428D-9DB1-8B831A8FF776} = {C3072949-6D24-451B-A308-2F3621F858B0}
- {2F9AA5A9-D42A-42C6-B483-1B9284C62F91} = {C3072949-6D24-451B-A308-2F3621F858B0}
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {46465737-C938-44FC-BE1A-4CE139EBB5E0}
- EndGlobalSection
-EndGlobal
diff --git a/debuggees.slnx b/debuggees.slnx
new file mode 100644
index 0000000000..4c7e2688af
--- /dev/null
+++ b/debuggees.slnx
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/diagnostics.sln b/diagnostics.sln
deleted file mode 100644
index 91ac02996f..0000000000
--- a/diagnostics.sln
+++ /dev/null
@@ -1,2393 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.3.32519.111
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Diagnostics.TestHelpers", "src\Microsoft.Diagnostics.TestHelpers\Microsoft.Diagnostics.TestHelpers.csproj", "{730C1201-1848-4F1E-8C1F-6316FB886C35}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SOS", "SOS", "{41638A4C-0DAF-47ED-A774-ECBBAC0315D7}"
- ProjectSection(SolutionItems) = preProject
- src\SOS\CMakeLists.txt = src\SOS\CMakeLists.txt
- EndProjectSection
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SOS.UnitTests", "src\SOS\SOS.UnitTests\SOS.UnitTests.csproj", "{1532DB3C-7DCD-45C6-B697-62B8378A16A2}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lldbplugin", "src\SOS\lldbplugin\lldbplugin.vcxproj", "{D52C65C4-2C7D-45E6-9F5C-6F3A96796018}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{19FAB78C-3351-4911-8F0C-8C6056401740}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tools", "Tools", "{B62728C8-1267-4043-B46F-5537BBAEC692}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-trace", "src\Tools\dotnet-trace\dotnet-trace.csproj", "{718350FA-2DD9-4950-BA41-D7A7F66DAC91}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-dump", "src\Tools\dotnet-dump\dotnet-dump.csproj", "{43D41DE9-7CCC-4DCB-A68A-B9099E538125}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Strike", "src\SOS\Strike\Strike.vcxproj", "{41F59D85-FC36-3015-861B-F177863252BC}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SOS.InstallHelper", "src\SOS\SOS.InstallHelper\SOS.InstallHelper.csproj", "{1F012743-941B-4915-8C55-02097894CF3F}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-sos", "src\Tools\dotnet-sos\dotnet-sos.csproj", "{41351955-16D5-48D7-AF4C-AF25F5FB2E78}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SOS.Hosting", "src\SOS\SOS.Hosting\SOS.Hosting.csproj", "{ED27F39F-DF5C-4E22-87E0-EC5B5873B503}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Diagnostics.Repl", "src\Microsoft.Diagnostics.Repl\Microsoft.Diagnostics.Repl.csproj", "{90CF2633-58F0-44EE-943B-D70207455F20}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-counters", "src\Tools\dotnet-counters\dotnet-counters.csproj", "{2A9B5988-982F-4E26-9E44-D38AC5978C30}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SOS.Package", "src\SOS\SOS.Package\SOS.Package.csproj", "{234416E9-EA5F-4018-AC34-67682C5D3E04}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Diagnostics.DebugServices", "src\Microsoft.Diagnostics.DebugServices\Microsoft.Diagnostics.DebugServices.csproj", "{A1CE682A-12C4-4FF9-B864-A9A15A8726D2}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SOS.Symbol.Package", "src\SOS\SOS.Package\SOS.Symbol.Package.csproj", "{410394E0-7F4F-42D5-B5FA-30956F44ACBC}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{03479E19-3F18-49A6-910A-F5041E27E7C0}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotnetTrace.UnitTests", "src\tests\dotnet-trace\DotnetTrace.UnitTests.csproj", "{AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-gcdump", "src\Tools\dotnet-gcdump\dotnet-gcdump.csproj", "{936678B3-3392-4F4F-943C-B6A4BFCBAADC}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotnetCounters.UnitTests", "src\tests\dotnet-counters\DotnetCounters.UnitTests.csproj", "{E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Diagnostics.NETCore.Client", "src\Microsoft.Diagnostics.NETCore.Client\Microsoft.Diagnostics.NETCore.Client.csproj", "{D8BE9C81-194E-43E5-82CF-2080892FBDE7}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Diagnostics.NETCore.Client.UnitTests", "src\tests\Microsoft.Diagnostics.NETCore.Client\Microsoft.Diagnostics.NETCore.Client.UnitTests.csproj", "{6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tracee", "src\tests\Tracee\Tracee.csproj", "{C79D6069-2C18-48CB-846E-71F7168C2F7D}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventPipe.UnitTests", "src\tests\eventpipe\EventPipe.UnitTests.csproj", "{CED9ABBA-861E-4C0A-9359-22351208EF27}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common", "Common", "{298AE119-6625-4604-BDE5-0765DC34C856}"
- ProjectSection(SolutionItems) = preProject
- src\Tools\Common\CommandExtensions.cs = src\Tools\Common\CommandExtensions.cs
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Commands", "Commands", "{C457CBCD-3A8D-4402-9A2B-693A0390D3F9}"
- ProjectSection(SolutionItems) = preProject
- src\Tools\Common\Commands\ProcessStatus.cs = src\Tools\Common\Commands\ProcessStatus.cs
- EndProjectSection
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Diagnostics.Monitoring", "src\Microsoft.Diagnostics.Monitoring\Microsoft.Diagnostics.Monitoring.csproj", "{CFCF90E5-91CF-44FD-819D-97F530AEF769}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "inc", "inc", "{41BDFD6D-D165-4D67-BEF6-4E539040D30A}"
- ProjectSection(SolutionItems) = preProject
- src\shared\inc\arrayholder.h = src\shared\inc\arrayholder.h
- src\shared\inc\bitvector.h = src\shared\inc\bitvector.h
- src\shared\inc\check.h = src\shared\inc\check.h
- src\shared\inc\check.inl = src\shared\inc\check.inl
- src\shared\inc\clrdata.idl = src\shared\inc\clrdata.idl
- src\shared\inc\clrhost.h = src\shared\inc\clrhost.h
- src\shared\inc\clrinternal.idl = src\shared\inc\clrinternal.idl
- src\shared\inc\clrnt.h = src\shared\inc\clrnt.h
- src\shared\inc\clrprivappxhosting.idl = src\shared\inc\clrprivappxhosting.idl
- src\shared\inc\clrprivbinding.idl = src\shared\inc\clrprivbinding.idl
- src\shared\inc\clrprivhosting.idl = src\shared\inc\clrprivhosting.idl
- src\shared\inc\clrprivruntimebinders.idl = src\shared\inc\clrprivruntimebinders.idl
- src\shared\inc\clrtypes.h = src\shared\inc\clrtypes.h
- src\shared\inc\CMakeLists.txt = src\shared\inc\CMakeLists.txt
- src\shared\inc\contract.h = src\shared\inc\contract.h
- src\shared\inc\contract.inl = src\shared\inc\contract.inl
- src\shared\inc\cor.h = src\shared\inc\cor.h
- src\shared\inc\cordebug.idl = src\shared\inc\cordebug.idl
- src\shared\inc\coreclrhost.h = src\shared\inc\coreclrhost.h
- src\shared\inc\corexcep.h = src\shared\inc\corexcep.h
- src\shared\inc\corhdr.h = src\shared\inc\corhdr.h
- src\shared\inc\corhlpr.cpp = src\shared\inc\corhlpr.cpp
- src\shared\inc\corhlpr.h = src\shared\inc\corhlpr.h
- src\shared\inc\corhlprpriv.h = src\shared\inc\corhlprpriv.h
- src\shared\inc\corjitflags.h = src\shared\inc\corjitflags.h
- src\shared\inc\corprof.idl = src\shared\inc\corprof.idl
- src\shared\inc\corpub.idl = src\shared\inc\corpub.idl
- src\shared\inc\corsym.idl = src\shared\inc\corsym.idl
- src\shared\inc\cortypeinfo.h = src\shared\inc\cortypeinfo.h
- src\shared\inc\crosscomp.h = src\shared\inc\crosscomp.h
- src\shared\inc\crsttypes.h = src\shared\inc\crsttypes.h
- src\shared\inc\crtwrap.h = src\shared\inc\crtwrap.h
- src\shared\inc\daccess.h = src\shared\inc\daccess.h
- src\shared\inc\dacprivate.h = src\shared\inc\dacprivate.h
- src\shared\inc\dbgenginemetrics.h = src\shared\inc\dbgenginemetrics.h
- src\shared\inc\dbgportable.h = src\shared\inc\dbgportable.h
- src\shared\inc\dbgutil.h = src\shared\inc\dbgutil.h
- src\shared\inc\debugmacros.h = src\shared\inc\debugmacros.h
- src\shared\inc\debugmacrosext.h = src\shared\inc\debugmacrosext.h
- src\shared\inc\debugreturn.h = src\shared\inc\debugreturn.h
- src\shared\inc\entrypoints.h = src\shared\inc\entrypoints.h
- src\shared\inc\ex.h = src\shared\inc\ex.h
- src\shared\inc\fstring.h = src\shared\inc\fstring.h
- src\shared\inc\fusion.idl = src\shared\inc\fusion.idl
- src\shared\inc\gcdecoder.cpp = src\shared\inc\gcdecoder.cpp
- src\shared\inc\gcdesc.h = src\shared\inc\gcdesc.h
- src\shared\inc\gcdump.h = src\shared\inc\gcdump.h
- src\shared\inc\gcinfo.h = src\shared\inc\gcinfo.h
- src\shared\inc\gcinfodecoder.h = src\shared\inc\gcinfodecoder.h
- src\shared\inc\gcinfodumper.h = src\shared\inc\gcinfodumper.h
- src\shared\inc\gcinfotypes.h = src\shared\inc\gcinfotypes.h
- src\shared\inc\gcmsg.inl = src\shared\inc\gcmsg.inl
- src\shared\inc\genericstackprobe.h = src\shared\inc\genericstackprobe.h
- src\shared\inc\getproductversionnumber.h = src\shared\inc\getproductversionnumber.h
- src\shared\inc\hillclimbing.h = src\shared\inc\hillclimbing.h
- src\shared\inc\holder.h = src\shared\inc\holder.h
- src\shared\inc\iallocator.h = src\shared\inc\iallocator.h
- src\shared\inc\iterator.h = src\shared\inc\iterator.h
- src\shared\inc\livedatatarget.h = src\shared\inc\livedatatarget.h
- src\shared\inc\log.h = src\shared\inc\log.h
- src\shared\inc\loglf.h = src\shared\inc\loglf.h
- src\shared\inc\longfilepathwrappers.h = src\shared\inc\longfilepathwrappers.h
- src\shared\inc\mdcommon.h = src\shared\inc\mdcommon.h
- src\shared\inc\memoryrange.h = src\shared\inc\memoryrange.h
- src\shared\inc\metadata.h = src\shared\inc\metadata.h
- src\shared\inc\metahost.idl = src\shared\inc\metahost.idl
- src\shared\inc\MSCOREE.IDL = src\shared\inc\MSCOREE.IDL
- src\shared\inc\mscorsvc.idl = src\shared\inc\mscorsvc.idl
- src\shared\inc\msodw.h = src\shared\inc\msodw.h
- src\shared\inc\new.hpp = src\shared\inc\new.hpp
- src\shared\inc\nibblemapmacros.h = src\shared\inc\nibblemapmacros.h
- src\shared\inc\nsutilpriv.h = src\shared\inc\nsutilpriv.h
- src\shared\inc\opcode.def = src\shared\inc\opcode.def
- src\shared\inc\openum.h = src\shared\inc\openum.h
- src\shared\inc\ostype.h = src\shared\inc\ostype.h
- src\shared\inc\palclr.h = src\shared\inc\palclr.h
- src\shared\inc\palclr_win.h = src\shared\inc\palclr_win.h
- src\shared\inc\pedecoder.h = src\shared\inc\pedecoder.h
- src\shared\inc\pedecoder.inl = src\shared\inc\pedecoder.inl
- src\shared\inc\predeftlsslot.h = src\shared\inc\predeftlsslot.h
- src\shared\inc\random.h = src\shared\inc\random.h
- src\shared\inc\readytorun.h = src\shared\inc\readytorun.h
- src\shared\inc\readytoruninstructionset.h = src\shared\inc\readytoruninstructionset.h
- src\shared\inc\regdisp.h = src\shared\inc\regdisp.h
- src\shared\inc\registrywrapper.h = src\shared\inc\registrywrapper.h
- src\shared\inc\resource.h = src\shared\inc\resource.h
- src\shared\inc\runtimeinfo.h = src\shared\inc\runtimeinfo.h
- src\shared\inc\safemath.h = src\shared\inc\safemath.h
- src\shared\inc\safewrap.h = src\shared\inc\safewrap.h
- src\shared\inc\sbuffer.h = src\shared\inc\sbuffer.h
- src\shared\inc\sbuffer.inl = src\shared\inc\sbuffer.inl
- src\shared\inc\securityutil.h = src\shared\inc\securityutil.h
- src\shared\inc\securitywrapper.h = src\shared\inc\securitywrapper.h
- src\shared\inc\sigparser.h = src\shared\inc\sigparser.h
- src\shared\inc\sospriv.idl = src\shared\inc\sospriv.idl
- src\shared\inc\sstring.h = src\shared\inc\sstring.h
- src\shared\inc\sstring.inl = src\shared\inc\sstring.inl
- src\shared\inc\stacktrace.h = src\shared\inc\stacktrace.h
- src\shared\inc\staticcontract.h = src\shared\inc\staticcontract.h
- src\shared\inc\static_assert.h = src\shared\inc\static_assert.h
- src\shared\inc\stdmacros.h = src\shared\inc\stdmacros.h
- src\shared\inc\stresslog.h = src\shared\inc\stresslog.h
- src\shared\inc\switches.h = src\shared\inc\switches.h
- src\shared\inc\tls.h = src\shared\inc\tls.h
- src\shared\inc\unreachable.h = src\shared\inc\unreachable.h
- src\shared\inc\utilcode.h = src\shared\inc\utilcode.h
- src\shared\inc\volatile.h = src\shared\inc\volatile.h
- src\shared\inc\warningcontrol.h = src\shared\inc\warningcontrol.h
- src\shared\inc\win64unwind.h = src\shared\inc\win64unwind.h
- src\shared\inc\winwrap.h = src\shared\inc\winwrap.h
- src\shared\inc\xclrdata.idl = src\shared\inc\xclrdata.idl
- src\shared\inc\xcordebug.idl = src\shared\inc\xcordebug.idl
- src\shared\inc\yieldprocessornormalized.h = src\shared\inc\yieldprocessornormalized.h
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "llvm", "llvm", "{06730767-421B-465F-BB63-A3A07D72D7A2}"
- ProjectSection(SolutionItems) = preProject
- src\shared\inc\llvm\Dwarf.def = src\shared\inc\llvm\Dwarf.def
- src\shared\inc\llvm\Dwarf.h = src\shared\inc\llvm\Dwarf.h
- src\shared\inc\llvm\ELF.h = src\shared\inc\llvm\ELF.h
- EndProjectSection
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Diagnostics.Monitoring.UnitTests", "src\tests\Microsoft.Diagnostics.Monitoring\Microsoft.Diagnostics.Monitoring.UnitTests.csproj", "{6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EventPipeTracee", "src\tests\EventPipeTracee\EventPipeTracee.csproj", "{870A7AD0-B808-491E-92F6-433BE990B374}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Diagnostics.Monitoring.EventPipe", "src\Microsoft.Diagnostics.Monitoring.EventPipe\Microsoft.Diagnostics.Monitoring.EventPipe.csproj", "{E1E2C698-E247-4D48-AE01-542B43744ACB}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Diagnostics.Monitoring.EventPipe.UnitTests", "src\tests\Microsoft.Diagnostics.Monitoring.EventPipe\Microsoft.Diagnostics.Monitoring.EventPipe.UnitTests.csproj", "{A58B7F72-E9DF-4962-9E15-300EF4C53ABB}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-stack", "src\Tools\dotnet-stack\dotnet-stack.csproj", "{642E6E67-8A84-473D-9507-C302BF10989D}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StackTracee", "src\tests\StackTracee\StackTracee.csproj", "{57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Diagnostics.DebugServices.Implementation", "src\Microsoft.Diagnostics.DebugServices.Implementation\Microsoft.Diagnostics.DebugServices.Implementation.csproj", "{1F23F5DA-F766-445F-88FF-86137BDC2709}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "inc", "inc", "{BE45F03E-D700-404F-A890-8ED7D8969958}"
- ProjectSection(SolutionItems) = preProject
- src\SOS\inc\clrma.h = src\SOS\inc\clrma.h
- src\SOS\inc\clrma.idl = src\SOS\inc\clrma.idl
- src\SOS\inc\clrmaservice.h = src\SOS\inc\clrmaservice.h
- src\SOS\inc\debuggerservices.h = src\SOS\inc\debuggerservices.h
- src\SOS\inc\host.h = src\SOS\inc\host.h
- src\SOS\inc\hostservices.h = src\SOS\inc\hostservices.h
- src\SOS\inc\lldbservices.h = src\SOS\inc\lldbservices.h
- src\SOS\inc\outputservice.h = src\SOS\inc\outputservice.h
- src\SOS\inc\remotememoryservice.h = src\SOS\inc\remotememoryservice.h
- src\SOS\inc\runtime.h = src\SOS\inc\runtime.h
- src\SOS\inc\specialdiaginfo.h = src\SOS\inc\specialdiaginfo.h
- src\SOS\inc\specialthreadinfo.h = src\SOS\inc\specialthreadinfo.h
- src\SOS\inc\symbolservice.h = src\SOS\inc\symbolservice.h
- src\SOS\inc\target.h = src\SOS\inc\target.h
- EndProjectSection
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SOS.Extensions", "src\SOS\SOS.Extensions\SOS.Extensions.csproj", "{729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "extensions", "src\SOS\extensions\extensions.vcxproj", "{EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Diagnostics.ExtensionCommands", "src\Microsoft.Diagnostics.ExtensionCommands\Microsoft.Diagnostics.ExtensionCommands.csproj", "{5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Diagnostics.DebugServices.UnitTests", "src\tests\Microsoft.Diagnostics.DebugServices.UnitTests\Microsoft.Diagnostics.DebugServices.UnitTests.csproj", "{064BC7DD-D44C-400E-9215-7546E092AB98}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExitCodeTracee", "src\tests\ExitCodeTracee\ExitCodeTracee.csproj", "{61F73DD0-F346-4D7A-AB12-63415B4EEEE1}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-dsrouter", "src\Tools\dotnet-dsrouter\dotnet-dsrouter.csproj", "{2BD55143-B102-4FEC-84AD-DC3B330FA9AC}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dbgshim", "src\dbgshim\dbgshim.vcxproj", "{BD779298-8631-3F5D-AA59-82897E5454A7}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shared", "shared", "{7852EDE4-93DF-4DB1-8A86-C521703811AF}"
- ProjectSection(SolutionItems) = preProject
- src\shared\README.txt = src\shared\README.txt
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gcdump", "src\shared\gcdump\gcdump.vcxproj", "{20EBC3C4-917C-402D-B778-9A6E3742BF5A}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utilcode", "src\shared\utilcode\utilcode.vcxproj", "{8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "minipal", "minipal", "{795B7A50-1B1F-406E-94E0-F9B35104EF22}"
- ProjectSection(SolutionItems) = preProject
- src\shared\minipal\CMakeLists.txt = src\shared\minipal\CMakeLists.txt
- src\shared\minipal\dn-u16.h = src\shared\minipal\dn-u16.h
- EndProjectSection
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DbgShim.UnitTests", "src\tests\DbgShim.UnitTests\DbgShim.UnitTests.csproj", "{DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CommonTestRunner", "src\tests\CommonTestRunner\CommonTestRunner.csproj", "{DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotnetStack.UnitTests", "src\tests\dotnet-stack\DotnetStack.UnitTests.csproj", "{E8F133F8-4D20-475D-9D16-2BA236DAB65F}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Diagnostics.WebSocketServer", "src\Microsoft.Diagnostics.WebSocketServer\Microsoft.Diagnostics.WebSocketServer.csproj", "{1043FA82-37CC-4809-80DC-C1EB06A55133}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestExtension", "src\tests\TestExtension\TestExtension.csproj", "{C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.FileFormats", "src\Microsoft.FileFormats\Microsoft.FileFormats.csproj", "{830A70D3-E604-467A-9846-6C5DF5BD3976}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.SymbolStore", "src\Microsoft.SymbolStore\Microsoft.SymbolStore.csproj", "{438A539E-6AF2-4402-BBA0-E2AAC71A28A1}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-symbol", "src\Tools\dotnet-symbol\dotnet-symbol.csproj", "{B6C33C85-08A7-47D9-BEA8-36164BB3653B}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestHelpers", "src\tests\TestHelpers\TestHelpers.csproj", "{C32F2858-6B5F-4967-ABC4-852B6399C4AE}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.FileFormats.UnitTests", "src\tests\Microsoft.FileFormats.UnitTests\Microsoft.FileFormats.UnitTests.csproj", "{44F93947-8FD4-4946-8AE5-EF6D25970CC7}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.SymbolStore.UnitTests", "src\tests\Microsoft.SymbolStore.UnitTests\Microsoft.SymbolStore.UnitTests.csproj", "{C2422836-BA25-4751-9060-7C7890085869}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.SymbolManifestGenerator", "src\Microsoft.SymbolManifestGenerator\Microsoft.SymbolManifestGenerator.csproj", "{28B55114-88C0-44B6-BBD8-50C14ED59EE2}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dbgutil", "src\shared\debug\dbgutil\dbgutil.vcxproj", "{A9A7C879-C320-3327-BB84-16E1322E17AE}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "debug", "debug", "{00D9021E-A202-4BCB-9A59-13D5BEEBF423}"
- ProjectSection(SolutionItems) = preProject
- src\shared\debug\CMakeLists.txt = src\shared\debug\CMakeLists.txt
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "inc", "inc", "{19663AE5-3EEA-472E-B157-37C2C7C6BACB}"
- ProjectSection(SolutionItems) = preProject
- src\shared\debug\inc\dbgtargetcontext.h = src\shared\debug\inc\dbgtargetcontext.h
- src\shared\debug\inc\dbgutil.h = src\shared\debug\inc\dbgutil.h
- src\shared\debug\inc\runtimeinfo.h = src\shared\debug\inc\runtimeinfo.h
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dump", "dump", "{3B26AB4F-8129-4DAF-8BB0-A6075663F6D2}"
- ProjectSection(SolutionItems) = preProject
- src\shared\debug\inc\dump\dumpcommon.h = src\shared\debug\inc\dump\dumpcommon.h
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Unix", "Unix", "{8944D9BF-69ED-4798-B533-559CAB011B07}"
- ProjectSection(SolutionItems) = preProject
- src\shared\minipal\Unix\CMakeLists.txt = src\shared\minipal\Unix\CMakeLists.txt
- src\shared\minipal\Unix\dn-u16.cpp = src\shared\minipal\Unix\dn-u16.cpp
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Windows", "Windows", "{06FB18BC-F4DD-4DB9-A566-551254CD1064}"
- ProjectSection(SolutionItems) = preProject
- src\shared\minipal\Windows\CMakeLists.txt = src\shared\minipal\Windows\CMakeLists.txt
- src\shared\minipal\Windows\dn-u16.cpp = src\shared\minipal\Windows\dn-u16.cpp
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "native", "native", "{641F00F0-2693-451B-A96A-13E4E115BF0F}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "minipal", "minipal", "{D9A91544-CDF8-4C68-BAD2-47F4968A8652}"
- ProjectSection(SolutionItems) = preProject
- src\shared\native\minipal\asansupport.cpp = src\shared\native\minipal\asansupport.cpp
- src\shared\native\minipal\configure.cmake = src\shared\native\minipal\configure.cmake
- src\shared\native\minipal\cpufeatures.c = src\shared\native\minipal\cpufeatures.c
- src\shared\native\minipal\cpufeatures.h = src\shared\native\minipal\cpufeatures.h
- src\shared\native\minipal\cpuid.h = src\shared\native\minipal\cpuid.h
- src\shared\native\minipal\entrypoints.h = src\shared\native\minipal\entrypoints.h
- src\shared\native\minipal\getexepath.h = src\shared\native\minipal\getexepath.h
- src\shared\native\minipal\minipalconfig.h.in = src\shared\native\minipal\minipalconfig.h.in
- src\shared\native\minipal\random.c = src\shared\native\minipal\random.c
- src\shared\native\minipal\random.h = src\shared\native\minipal\random.h
- src\shared\native\minipal\strings.h = src\shared\native\minipal\strings.h
- src\shared\native\minipal\time.c = src\shared\native\minipal\time.c
- src\shared\native\minipal\time.h = src\shared\native\minipal\time.h
- src\shared\native\minipal\types.h = src\shared\native\minipal\types.h
- src\shared\native\minipal\unicodedata.c = src\shared\native\minipal\unicodedata.c
- src\shared\native\minipal\utf8.c = src\shared\native\minipal\utf8.c
- src\shared\native\minipal\utf8.h = src\shared\native\minipal\utf8.h
- src\shared\native\minipal\utils.h = src\shared\native\minipal\utils.h
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "inc", "inc", "{9E51C821-4095-4250-BD8A-2A29396DB1B4}"
- ProjectSection(SolutionItems) = preProject
- src\inc\corcompile.h = src\inc\corcompile.h
- src\inc\ntimageex.h = src\inc\ntimageex.h
- src\inc\releaseholder.h = src\inc\releaseholder.h
- src\inc\stacktrace.h = src\inc\stacktrace.h
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "rt", "rt", "{D2D76252-D225-4B79-9DDB-A36867A4720E}"
- ProjectSection(SolutionItems) = preProject
- src\inc\rt\intsafe.h = src\inc\rt\intsafe.h
- src\inc\rt\oaidl.h = src\inc\rt\oaidl.h
- src\inc\rt\psapi.h = src\inc\rt\psapi.h
- src\inc\rt\tchar.h = src\inc\rt\tchar.h
- src\inc\rt\tlhelp32.h = src\inc\rt\tlhelp32.h
- src\inc\rt\winapifamily.h = src\inc\rt\winapifamily.h
- src\inc\rt\winternl.h = src\inc\rt\winternl.h
- src\inc\rt\winver.h = src\inc\rt\winver.h
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Checked|Any CPU = Checked|Any CPU
- Checked|ARM = Checked|ARM
- Checked|ARM64 = Checked|ARM64
- Checked|x64 = Checked|x64
- Checked|x86 = Checked|x86
- Debug|Any CPU = Debug|Any CPU
- Debug|ARM = Debug|ARM
- Debug|ARM64 = Debug|ARM64
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|ARM = Release|ARM
- Release|ARM64 = Release|ARM64
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- RelWithDebInfo|Any CPU = RelWithDebInfo|Any CPU
- RelWithDebInfo|ARM = RelWithDebInfo|ARM
- RelWithDebInfo|ARM64 = RelWithDebInfo|ARM64
- RelWithDebInfo|x64 = RelWithDebInfo|x64
- RelWithDebInfo|x86 = RelWithDebInfo|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|Any CPU.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|Any CPU.Build.0 = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|ARM.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|ARM.Build.0 = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|ARM64.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|ARM64.Build.0 = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|x64.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|x64.Build.0 = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|x86.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Checked|x86.Build.0 = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Debug|ARM.Build.0 = Debug|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Debug|ARM64.Build.0 = Debug|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Debug|x64.ActiveCfg = Debug|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Debug|x64.Build.0 = Debug|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Debug|x86.ActiveCfg = Debug|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Debug|x86.Build.0 = Debug|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Release|Any CPU.Build.0 = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Release|ARM.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Release|ARM.Build.0 = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Release|ARM64.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Release|ARM64.Build.0 = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Release|x64.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Release|x64.Build.0 = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Release|x86.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.Release|x86.Build.0 = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {730C1201-1848-4F1E-8C1F-6316FB886C35}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|Any CPU.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|Any CPU.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|ARM.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|ARM.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|ARM64.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|ARM64.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|x64.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|x64.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|x86.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Checked|x86.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Debug|ARM.Build.0 = Debug|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Debug|ARM64.Build.0 = Debug|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Debug|x64.ActiveCfg = Debug|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Debug|x64.Build.0 = Debug|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Debug|x86.ActiveCfg = Debug|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Debug|x86.Build.0 = Debug|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Release|Any CPU.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Release|ARM.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Release|ARM.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Release|ARM64.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Release|ARM64.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Release|x64.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Release|x64.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Release|x86.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.Release|x86.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|Any CPU.ActiveCfg = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|Any CPU.Build.0 = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|ARM.ActiveCfg = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|ARM.Build.0 = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|ARM64.ActiveCfg = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|ARM64.Build.0 = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|x64.ActiveCfg = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|x64.Build.0 = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|x86.ActiveCfg = Release|x86
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Checked|x86.Build.0 = Release|x86
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|Any CPU.ActiveCfg = Debug|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|ARM.ActiveCfg = Debug|x86
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|ARM64.ActiveCfg = Debug|x86
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|x64.ActiveCfg = Debug|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|x64.Build.0 = Debug|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|x86.ActiveCfg = Debug|x86
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Debug|x86.Build.0 = Debug|x86
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|Any CPU.ActiveCfg = Release|x86
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|ARM.ActiveCfg = Release|x86
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|ARM64.ActiveCfg = Release|x86
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|x64.ActiveCfg = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.Release|x86.ActiveCfg = Release|x86
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|Any CPU.ActiveCfg = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|Any CPU.Build.0 = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|ARM.ActiveCfg = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|ARM.Build.0 = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|ARM64.ActiveCfg = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|ARM64.Build.0 = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|x64.ActiveCfg = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|x64.Build.0 = Release|x64
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|x86.ActiveCfg = Release|x86
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018}.RelWithDebInfo|x86.Build.0 = Release|x86
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Checked|ARM.Build.0 = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Checked|ARM64.Build.0 = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Checked|x64.ActiveCfg = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Checked|x64.Build.0 = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Checked|x86.ActiveCfg = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Checked|x86.Build.0 = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Debug|ARM.Build.0 = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Debug|ARM64.Build.0 = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Debug|x64.ActiveCfg = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Debug|x64.Build.0 = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Debug|x86.ActiveCfg = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Debug|x86.Build.0 = Debug|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Release|Any CPU.Build.0 = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Release|ARM.ActiveCfg = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Release|ARM.Build.0 = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Release|ARM64.ActiveCfg = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Release|ARM64.Build.0 = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Release|x64.ActiveCfg = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Release|x64.Build.0 = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Release|x86.ActiveCfg = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.Release|x86.Build.0 = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|Any CPU.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|Any CPU.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|ARM.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|ARM.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|ARM64.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|ARM64.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|x64.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|x64.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|x86.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Checked|x86.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Debug|ARM.Build.0 = Debug|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Debug|ARM64.Build.0 = Debug|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Debug|x64.ActiveCfg = Debug|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Debug|x64.Build.0 = Debug|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Debug|x86.ActiveCfg = Debug|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Debug|x86.Build.0 = Debug|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Release|Any CPU.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Release|ARM.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Release|ARM.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Release|ARM64.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Release|ARM64.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Release|x64.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Release|x64.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Release|x86.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.Release|x86.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {41F59D85-FC36-3015-861B-F177863252BC}.Checked|Any CPU.ActiveCfg = Checked|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Checked|ARM.ActiveCfg = Checked|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Checked|ARM64.ActiveCfg = Checked|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Checked|x64.ActiveCfg = Checked|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Checked|x64.Build.0 = Checked|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Checked|x86.ActiveCfg = Checked|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Debug|Any CPU.ActiveCfg = Debug|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Debug|ARM.ActiveCfg = Debug|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Debug|ARM64.ActiveCfg = Debug|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Debug|x64.ActiveCfg = Debug|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Debug|x64.Build.0 = Debug|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Debug|x86.ActiveCfg = Debug|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Release|Any CPU.ActiveCfg = Release|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Release|ARM.ActiveCfg = Release|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Release|ARM64.ActiveCfg = Release|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Release|x64.ActiveCfg = Release|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.Release|x86.ActiveCfg = Release|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.RelWithDebInfo|ARM.ActiveCfg = RelWithDebInfo|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
- {41F59D85-FC36-3015-861B-F177863252BC}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
- {1F012743-941B-4915-8C55-02097894CF3F}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Checked|ARM.Build.0 = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Checked|ARM64.Build.0 = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Checked|x64.ActiveCfg = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Checked|x64.Build.0 = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Checked|x86.ActiveCfg = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Checked|x86.Build.0 = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Debug|ARM.Build.0 = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Debug|ARM64.Build.0 = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Debug|x64.ActiveCfg = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Debug|x64.Build.0 = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Debug|x86.ActiveCfg = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Debug|x86.Build.0 = Debug|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Release|Any CPU.Build.0 = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Release|ARM.ActiveCfg = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Release|ARM.Build.0 = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Release|ARM64.ActiveCfg = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Release|ARM64.Build.0 = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Release|x64.ActiveCfg = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Release|x64.Build.0 = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Release|x86.ActiveCfg = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.Release|x86.Build.0 = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {1F012743-941B-4915-8C55-02097894CF3F}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Checked|ARM.Build.0 = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Checked|ARM64.Build.0 = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Checked|x64.ActiveCfg = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Checked|x64.Build.0 = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Checked|x86.ActiveCfg = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Checked|x86.Build.0 = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Debug|ARM.Build.0 = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Debug|ARM64.Build.0 = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Debug|x64.ActiveCfg = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Debug|x64.Build.0 = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Debug|x86.ActiveCfg = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Debug|x86.Build.0 = Debug|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Release|Any CPU.Build.0 = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Release|ARM.ActiveCfg = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Release|ARM.Build.0 = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Release|ARM64.ActiveCfg = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Release|ARM64.Build.0 = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Release|x64.ActiveCfg = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Release|x64.Build.0 = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Release|x86.ActiveCfg = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.Release|x86.Build.0 = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Checked|ARM.Build.0 = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Checked|ARM64.Build.0 = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Checked|x64.ActiveCfg = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Checked|x64.Build.0 = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Checked|x86.ActiveCfg = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Checked|x86.Build.0 = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Debug|ARM.Build.0 = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Debug|ARM64.Build.0 = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Debug|x64.ActiveCfg = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Debug|x64.Build.0 = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Debug|x86.ActiveCfg = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Debug|x86.Build.0 = Debug|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Release|Any CPU.Build.0 = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Release|ARM.ActiveCfg = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Release|ARM.Build.0 = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Release|ARM64.ActiveCfg = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Release|ARM64.Build.0 = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Release|x64.ActiveCfg = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Release|x64.Build.0 = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Release|x86.ActiveCfg = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.Release|x86.Build.0 = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Checked|ARM.Build.0 = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Checked|ARM64.Build.0 = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Checked|x64.ActiveCfg = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Checked|x64.Build.0 = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Checked|x86.ActiveCfg = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Checked|x86.Build.0 = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Debug|ARM.Build.0 = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Debug|ARM64.Build.0 = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Debug|x64.ActiveCfg = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Debug|x64.Build.0 = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Debug|x86.ActiveCfg = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Debug|x86.Build.0 = Debug|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Release|Any CPU.Build.0 = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Release|ARM.ActiveCfg = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Release|ARM.Build.0 = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Release|ARM64.ActiveCfg = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Release|ARM64.Build.0 = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Release|x64.ActiveCfg = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Release|x64.Build.0 = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Release|x86.ActiveCfg = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.Release|x86.Build.0 = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {90CF2633-58F0-44EE-943B-D70207455F20}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Checked|ARM.Build.0 = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Checked|ARM64.Build.0 = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Checked|x64.ActiveCfg = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Checked|x64.Build.0 = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Checked|x86.ActiveCfg = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Checked|x86.Build.0 = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Debug|ARM.Build.0 = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Debug|ARM64.Build.0 = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Debug|x64.ActiveCfg = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Debug|x64.Build.0 = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Debug|x86.ActiveCfg = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Debug|x86.Build.0 = Debug|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Release|Any CPU.Build.0 = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Release|ARM.ActiveCfg = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Release|ARM.Build.0 = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Release|ARM64.ActiveCfg = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Release|ARM64.Build.0 = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Release|x64.ActiveCfg = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Release|x64.Build.0 = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Release|x86.ActiveCfg = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.Release|x86.Build.0 = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {2A9B5988-982F-4E26-9E44-D38AC5978C30}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Checked|ARM.Build.0 = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Checked|ARM64.Build.0 = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Checked|x64.ActiveCfg = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Checked|x64.Build.0 = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Checked|x86.ActiveCfg = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Checked|x86.Build.0 = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Debug|ARM.Build.0 = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Debug|ARM64.Build.0 = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Debug|x64.ActiveCfg = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Debug|x64.Build.0 = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Debug|x86.ActiveCfg = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Debug|x86.Build.0 = Debug|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Release|Any CPU.Build.0 = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Release|ARM.ActiveCfg = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Release|ARM.Build.0 = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Release|ARM64.ActiveCfg = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Release|ARM64.Build.0 = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Release|x64.ActiveCfg = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Release|x64.Build.0 = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Release|x86.ActiveCfg = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.Release|x86.Build.0 = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {234416E9-EA5F-4018-AC34-67682C5D3E04}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Checked|ARM.Build.0 = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Checked|ARM64.Build.0 = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Checked|x64.ActiveCfg = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Checked|x64.Build.0 = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Checked|x86.ActiveCfg = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Checked|x86.Build.0 = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Debug|ARM.Build.0 = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Debug|ARM64.Build.0 = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Debug|x64.Build.0 = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Debug|x86.ActiveCfg = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Debug|x86.Build.0 = Debug|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Release|Any CPU.Build.0 = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Release|ARM.ActiveCfg = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Release|ARM.Build.0 = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Release|ARM64.ActiveCfg = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Release|ARM64.Build.0 = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Release|x64.ActiveCfg = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Release|x64.Build.0 = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Release|x86.ActiveCfg = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.Release|x86.Build.0 = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Checked|ARM.Build.0 = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Checked|ARM64.Build.0 = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Checked|x64.ActiveCfg = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Checked|x64.Build.0 = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Checked|x86.ActiveCfg = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Checked|x86.Build.0 = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Debug|ARM.Build.0 = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Debug|ARM64.Build.0 = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Debug|x64.ActiveCfg = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Debug|x64.Build.0 = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Debug|x86.ActiveCfg = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Debug|x86.Build.0 = Debug|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Release|Any CPU.Build.0 = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Release|ARM.ActiveCfg = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Release|ARM.Build.0 = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Release|ARM64.ActiveCfg = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Release|ARM64.Build.0 = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Release|x64.ActiveCfg = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Release|x64.Build.0 = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Release|x86.ActiveCfg = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.Release|x86.Build.0 = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Checked|ARM.Build.0 = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Checked|ARM64.Build.0 = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Checked|x64.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Checked|x64.Build.0 = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Checked|x86.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Checked|x86.Build.0 = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Debug|ARM.Build.0 = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Debug|ARM64.Build.0 = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Debug|x64.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Debug|x64.Build.0 = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Debug|x86.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Debug|x86.Build.0 = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Release|Any CPU.Build.0 = Release|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Release|ARM.ActiveCfg = Release|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Release|ARM.Build.0 = Release|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Release|ARM64.ActiveCfg = Release|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Release|ARM64.Build.0 = Release|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Release|x64.ActiveCfg = Release|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Release|x64.Build.0 = Release|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Release|x86.ActiveCfg = Release|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.Release|x86.Build.0 = Release|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.RelWithDebInfo|ARM.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.RelWithDebInfo|ARM.Build.0 = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.RelWithDebInfo|ARM64.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.RelWithDebInfo|ARM64.Build.0 = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Checked|ARM.Build.0 = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Checked|ARM64.Build.0 = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Checked|x64.ActiveCfg = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Checked|x64.Build.0 = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Checked|x86.ActiveCfg = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Checked|x86.Build.0 = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Debug|ARM.Build.0 = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Debug|ARM64.Build.0 = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Debug|x64.ActiveCfg = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Debug|x64.Build.0 = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Debug|x86.ActiveCfg = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Debug|x86.Build.0 = Debug|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Release|Any CPU.Build.0 = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Release|ARM.ActiveCfg = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Release|ARM.Build.0 = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Release|ARM64.ActiveCfg = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Release|ARM64.Build.0 = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Release|x64.ActiveCfg = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Release|x64.Build.0 = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Release|x86.ActiveCfg = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.Release|x86.Build.0 = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Checked|ARM.Build.0 = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Checked|ARM64.Build.0 = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Checked|x64.ActiveCfg = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Checked|x64.Build.0 = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Checked|x86.ActiveCfg = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Checked|x86.Build.0 = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Debug|ARM.Build.0 = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Debug|ARM64.Build.0 = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Debug|x64.ActiveCfg = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Debug|x64.Build.0 = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Debug|x86.ActiveCfg = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Debug|x86.Build.0 = Debug|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Release|Any CPU.Build.0 = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Release|ARM.ActiveCfg = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Release|ARM.Build.0 = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Release|ARM64.ActiveCfg = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Release|ARM64.Build.0 = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Release|x64.ActiveCfg = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Release|x64.Build.0 = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Release|x86.ActiveCfg = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.Release|x86.Build.0 = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Checked|ARM.Build.0 = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Checked|ARM64.Build.0 = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Checked|x64.ActiveCfg = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Checked|x64.Build.0 = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Checked|x86.ActiveCfg = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Checked|x86.Build.0 = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Debug|ARM.Build.0 = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Debug|ARM64.Build.0 = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Debug|x64.ActiveCfg = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Debug|x64.Build.0 = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Debug|x86.ActiveCfg = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Debug|x86.Build.0 = Debug|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Release|Any CPU.Build.0 = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Release|ARM.ActiveCfg = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Release|ARM.Build.0 = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Release|ARM64.ActiveCfg = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Release|ARM64.Build.0 = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Release|x64.ActiveCfg = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Release|x64.Build.0 = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Release|x86.ActiveCfg = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.Release|x86.Build.0 = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Checked|ARM.Build.0 = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Checked|ARM64.Build.0 = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Checked|x64.ActiveCfg = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Checked|x64.Build.0 = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Checked|x86.ActiveCfg = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Checked|x86.Build.0 = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Debug|ARM.Build.0 = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Debug|ARM64.Build.0 = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Debug|x64.ActiveCfg = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Debug|x64.Build.0 = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Debug|x86.ActiveCfg = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Debug|x86.Build.0 = Debug|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Release|Any CPU.Build.0 = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Release|ARM.ActiveCfg = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Release|ARM.Build.0 = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Release|ARM64.ActiveCfg = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Release|ARM64.Build.0 = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Release|x64.ActiveCfg = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Release|x64.Build.0 = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Release|x86.ActiveCfg = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.Release|x86.Build.0 = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Checked|ARM.Build.0 = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Checked|ARM64.Build.0 = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Checked|x64.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Checked|x64.Build.0 = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Checked|x86.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Checked|x86.Build.0 = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Debug|ARM.Build.0 = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Debug|ARM64.Build.0 = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Debug|x64.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Debug|x64.Build.0 = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Debug|x86.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Debug|x86.Build.0 = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Release|Any CPU.Build.0 = Release|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Release|ARM.ActiveCfg = Release|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Release|ARM.Build.0 = Release|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Release|ARM64.ActiveCfg = Release|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Release|ARM64.Build.0 = Release|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Release|x64.ActiveCfg = Release|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Release|x64.Build.0 = Release|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Release|x86.ActiveCfg = Release|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.Release|x86.Build.0 = Release|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.RelWithDebInfo|ARM.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.RelWithDebInfo|ARM.Build.0 = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.RelWithDebInfo|ARM64.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.RelWithDebInfo|ARM64.Build.0 = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
- {C79D6069-2C18-48CB-846E-71F7168C2F7D}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Checked|ARM.Build.0 = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Checked|ARM64.Build.0 = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Checked|x64.ActiveCfg = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Checked|x64.Build.0 = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Checked|x86.ActiveCfg = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Checked|x86.Build.0 = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Debug|ARM.Build.0 = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Debug|ARM64.Build.0 = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Debug|x64.ActiveCfg = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Debug|x64.Build.0 = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Debug|x86.ActiveCfg = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Debug|x86.Build.0 = Debug|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Release|Any CPU.Build.0 = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Release|ARM.ActiveCfg = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Release|ARM.Build.0 = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Release|ARM64.ActiveCfg = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Release|ARM64.Build.0 = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Release|x64.ActiveCfg = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Release|x64.Build.0 = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Release|x86.ActiveCfg = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.Release|x86.Build.0 = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {CED9ABBA-861E-4C0A-9359-22351208EF27}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Checked|ARM.Build.0 = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Checked|ARM64.Build.0 = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Checked|x64.ActiveCfg = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Checked|x64.Build.0 = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Checked|x86.ActiveCfg = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Checked|x86.Build.0 = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Debug|ARM.Build.0 = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Debug|ARM64.Build.0 = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Debug|x64.ActiveCfg = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Debug|x64.Build.0 = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Debug|x86.ActiveCfg = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Debug|x86.Build.0 = Debug|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Release|Any CPU.Build.0 = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Release|ARM.ActiveCfg = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Release|ARM.Build.0 = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Release|ARM64.ActiveCfg = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Release|ARM64.Build.0 = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Release|x64.ActiveCfg = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Release|x64.Build.0 = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Release|x86.ActiveCfg = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.Release|x86.Build.0 = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {CFCF90E5-91CF-44FD-819D-97F530AEF769}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Checked|ARM.Build.0 = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Checked|ARM64.Build.0 = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Checked|x64.ActiveCfg = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Checked|x64.Build.0 = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Checked|x86.ActiveCfg = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Checked|x86.Build.0 = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Debug|ARM.Build.0 = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Debug|ARM64.Build.0 = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Debug|x64.ActiveCfg = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Debug|x64.Build.0 = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Debug|x86.ActiveCfg = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Debug|x86.Build.0 = Debug|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Release|Any CPU.Build.0 = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Release|ARM.ActiveCfg = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Release|ARM.Build.0 = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Release|ARM64.ActiveCfg = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Release|ARM64.Build.0 = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Release|x64.ActiveCfg = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Release|x64.Build.0 = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Release|x86.ActiveCfg = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.Release|x86.Build.0 = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Checked|ARM.Build.0 = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Checked|ARM64.Build.0 = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Checked|x64.ActiveCfg = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Checked|x64.Build.0 = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Checked|x86.ActiveCfg = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Checked|x86.Build.0 = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Debug|ARM.Build.0 = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Debug|ARM64.Build.0 = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Debug|x64.ActiveCfg = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Debug|x64.Build.0 = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Debug|x86.ActiveCfg = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Debug|x86.Build.0 = Debug|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Release|Any CPU.Build.0 = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Release|ARM.ActiveCfg = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Release|ARM.Build.0 = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Release|ARM64.ActiveCfg = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Release|ARM64.Build.0 = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Release|x64.ActiveCfg = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Release|x64.Build.0 = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Release|x86.ActiveCfg = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.Release|x86.Build.0 = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {870A7AD0-B808-491E-92F6-433BE990B374}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Checked|ARM.Build.0 = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Checked|ARM64.Build.0 = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Checked|x64.ActiveCfg = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Checked|x64.Build.0 = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Checked|x86.ActiveCfg = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Checked|x86.Build.0 = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Debug|ARM.Build.0 = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Debug|ARM64.Build.0 = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Debug|x64.ActiveCfg = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Debug|x64.Build.0 = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Debug|x86.ActiveCfg = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Debug|x86.Build.0 = Debug|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Release|Any CPU.Build.0 = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Release|ARM.ActiveCfg = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Release|ARM.Build.0 = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Release|ARM64.ActiveCfg = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Release|ARM64.Build.0 = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Release|x64.ActiveCfg = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Release|x64.Build.0 = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Release|x86.ActiveCfg = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.Release|x86.Build.0 = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {E1E2C698-E247-4D48-AE01-542B43744ACB}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Checked|ARM.Build.0 = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Checked|ARM64.Build.0 = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Checked|x64.ActiveCfg = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Checked|x64.Build.0 = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Checked|x86.ActiveCfg = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Checked|x86.Build.0 = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Debug|ARM.Build.0 = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Debug|ARM64.Build.0 = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Debug|x64.Build.0 = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Debug|x86.ActiveCfg = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Debug|x86.Build.0 = Debug|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Release|Any CPU.Build.0 = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Release|ARM.ActiveCfg = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Release|ARM.Build.0 = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Release|ARM64.ActiveCfg = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Release|ARM64.Build.0 = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Release|x64.ActiveCfg = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Release|x64.Build.0 = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Release|x86.ActiveCfg = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.Release|x86.Build.0 = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Checked|ARM.Build.0 = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Checked|ARM64.Build.0 = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Checked|x64.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Checked|x64.Build.0 = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Checked|x86.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Checked|x86.Build.0 = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Debug|ARM.Build.0 = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Debug|ARM64.Build.0 = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Debug|x64.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Debug|x64.Build.0 = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Debug|x86.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Debug|x86.Build.0 = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Release|Any CPU.Build.0 = Release|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Release|ARM.ActiveCfg = Release|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Release|ARM.Build.0 = Release|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Release|ARM64.ActiveCfg = Release|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Release|ARM64.Build.0 = Release|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Release|x64.ActiveCfg = Release|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Release|x64.Build.0 = Release|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Release|x86.ActiveCfg = Release|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.Release|x86.Build.0 = Release|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.RelWithDebInfo|ARM.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.RelWithDebInfo|ARM.Build.0 = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.RelWithDebInfo|ARM64.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.RelWithDebInfo|ARM64.Build.0 = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
- {642E6E67-8A84-473D-9507-C302BF10989D}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Checked|ARM.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Checked|ARM64.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Checked|x64.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Checked|x64.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Checked|x86.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Checked|x86.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Debug|ARM.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Debug|ARM64.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Debug|x64.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Debug|x64.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Debug|x86.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Debug|x86.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Release|Any CPU.Build.0 = Release|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Release|ARM.ActiveCfg = Release|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Release|ARM.Build.0 = Release|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Release|ARM64.ActiveCfg = Release|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Release|ARM64.Build.0 = Release|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Release|x64.ActiveCfg = Release|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Release|x64.Build.0 = Release|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Release|x86.ActiveCfg = Release|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.Release|x86.Build.0 = Release|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.RelWithDebInfo|ARM.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.RelWithDebInfo|ARM.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.RelWithDebInfo|ARM64.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.RelWithDebInfo|ARM64.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Checked|ARM.Build.0 = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Checked|ARM64.Build.0 = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Checked|x64.ActiveCfg = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Checked|x64.Build.0 = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Checked|x86.ActiveCfg = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Checked|x86.Build.0 = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Debug|ARM.Build.0 = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Debug|ARM64.Build.0 = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Debug|x64.ActiveCfg = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Debug|x64.Build.0 = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Debug|x86.ActiveCfg = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Debug|x86.Build.0 = Debug|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Release|Any CPU.Build.0 = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Release|ARM.ActiveCfg = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Release|ARM.Build.0 = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Release|ARM64.ActiveCfg = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Release|ARM64.Build.0 = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Release|x64.ActiveCfg = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Release|x64.Build.0 = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Release|x86.ActiveCfg = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.Release|x86.Build.0 = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {1F23F5DA-F766-445F-88FF-86137BDC2709}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Checked|ARM.Build.0 = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Checked|ARM64.Build.0 = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Checked|x64.ActiveCfg = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Checked|x64.Build.0 = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Checked|x86.ActiveCfg = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Checked|x86.Build.0 = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Debug|ARM.Build.0 = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Debug|ARM64.Build.0 = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Debug|x64.ActiveCfg = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Debug|x64.Build.0 = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Debug|x86.ActiveCfg = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Debug|x86.Build.0 = Debug|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Release|Any CPU.Build.0 = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Release|ARM.ActiveCfg = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Release|ARM.Build.0 = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Release|ARM64.ActiveCfg = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Release|ARM64.Build.0 = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Release|x64.ActiveCfg = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Release|x64.Build.0 = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Release|x86.ActiveCfg = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.Release|x86.Build.0 = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Checked|Any CPU.ActiveCfg = Checked|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Checked|ARM.ActiveCfg = Checked|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Checked|ARM64.ActiveCfg = Checked|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Checked|x64.ActiveCfg = Checked|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Checked|x64.Build.0 = Checked|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Checked|x86.ActiveCfg = Checked|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Debug|Any CPU.ActiveCfg = Debug|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Debug|ARM.ActiveCfg = Debug|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Debug|ARM64.ActiveCfg = Debug|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Debug|x64.ActiveCfg = Debug|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Debug|x64.Build.0 = Debug|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Debug|x86.ActiveCfg = Debug|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Release|Any CPU.ActiveCfg = Release|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Release|ARM.ActiveCfg = Release|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Release|ARM64.ActiveCfg = Release|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Release|x64.ActiveCfg = Release|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.Release|x86.ActiveCfg = Release|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.RelWithDebInfo|ARM.ActiveCfg = RelWithDebInfo|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Checked|ARM.Build.0 = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Checked|ARM64.Build.0 = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Checked|x64.ActiveCfg = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Checked|x64.Build.0 = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Checked|x86.ActiveCfg = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Checked|x86.Build.0 = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Debug|ARM.Build.0 = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Debug|ARM64.Build.0 = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Debug|x64.ActiveCfg = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Debug|x64.Build.0 = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Debug|x86.ActiveCfg = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Debug|x86.Build.0 = Debug|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Release|Any CPU.Build.0 = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Release|ARM.ActiveCfg = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Release|ARM.Build.0 = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Release|ARM64.ActiveCfg = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Release|ARM64.Build.0 = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Release|x64.ActiveCfg = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Release|x64.Build.0 = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Release|x86.ActiveCfg = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.Release|x86.Build.0 = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Checked|ARM.Build.0 = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Checked|ARM64.Build.0 = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Checked|x64.ActiveCfg = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Checked|x64.Build.0 = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Checked|x86.ActiveCfg = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Checked|x86.Build.0 = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Debug|ARM.Build.0 = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Debug|ARM64.Build.0 = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Debug|x64.ActiveCfg = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Debug|x64.Build.0 = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Debug|x86.ActiveCfg = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Debug|x86.Build.0 = Debug|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Release|Any CPU.Build.0 = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Release|ARM.ActiveCfg = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Release|ARM.Build.0 = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Release|ARM64.ActiveCfg = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Release|ARM64.Build.0 = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Release|x64.ActiveCfg = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Release|x64.Build.0 = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Release|x86.ActiveCfg = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.Release|x86.Build.0 = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {064BC7DD-D44C-400E-9215-7546E092AB98}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Checked|ARM.Build.0 = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Checked|ARM64.Build.0 = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Checked|x64.ActiveCfg = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Checked|x64.Build.0 = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Checked|x86.ActiveCfg = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Checked|x86.Build.0 = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Debug|ARM.Build.0 = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Debug|ARM64.Build.0 = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Debug|x64.ActiveCfg = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Debug|x64.Build.0 = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Debug|x86.ActiveCfg = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Debug|x86.Build.0 = Debug|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Release|Any CPU.Build.0 = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Release|ARM.ActiveCfg = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Release|ARM.Build.0 = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Release|ARM64.ActiveCfg = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Release|ARM64.Build.0 = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Release|x64.ActiveCfg = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Release|x64.Build.0 = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Release|x86.ActiveCfg = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.Release|x86.Build.0 = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Checked|ARM.Build.0 = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Checked|ARM64.Build.0 = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Checked|x64.ActiveCfg = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Checked|x64.Build.0 = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Checked|x86.ActiveCfg = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Checked|x86.Build.0 = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Debug|ARM.Build.0 = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Debug|ARM64.Build.0 = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Debug|x64.ActiveCfg = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Debug|x64.Build.0 = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Debug|x86.ActiveCfg = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Debug|x86.Build.0 = Debug|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Release|Any CPU.Build.0 = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Release|ARM.ActiveCfg = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Release|ARM.Build.0 = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Release|ARM64.ActiveCfg = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Release|ARM64.Build.0 = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Release|x64.ActiveCfg = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Release|x64.Build.0 = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Release|x86.ActiveCfg = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.Release|x86.Build.0 = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Checked|Any CPU.ActiveCfg = Checked|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Checked|ARM.ActiveCfg = Checked|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Checked|ARM64.ActiveCfg = Checked|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Checked|x64.ActiveCfg = Checked|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Checked|x64.Build.0 = Checked|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Checked|x86.ActiveCfg = Checked|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Debug|Any CPU.ActiveCfg = Debug|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Debug|ARM.ActiveCfg = Debug|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Debug|ARM64.ActiveCfg = Debug|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Debug|x64.ActiveCfg = Debug|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Debug|x64.Build.0 = Debug|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Debug|x86.ActiveCfg = Debug|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Release|Any CPU.ActiveCfg = Release|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Release|ARM.ActiveCfg = Release|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Release|ARM64.ActiveCfg = Release|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Release|x64.ActiveCfg = Release|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.Release|x86.ActiveCfg = Release|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.RelWithDebInfo|ARM.ActiveCfg = RelWithDebInfo|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
- {BD779298-8631-3F5D-AA59-82897E5454A7}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Checked|Any CPU.ActiveCfg = Checked|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Checked|ARM.ActiveCfg = Checked|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Checked|ARM64.ActiveCfg = Checked|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Checked|x64.ActiveCfg = Checked|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Checked|x64.Build.0 = Checked|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Checked|x86.ActiveCfg = Checked|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Debug|Any CPU.ActiveCfg = Debug|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Debug|ARM.ActiveCfg = Debug|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Debug|ARM64.ActiveCfg = Debug|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Debug|x64.ActiveCfg = Debug|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Debug|x64.Build.0 = Debug|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Debug|x86.ActiveCfg = Debug|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Release|Any CPU.ActiveCfg = Release|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Release|ARM.ActiveCfg = Release|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Release|ARM64.ActiveCfg = Release|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Release|x64.ActiveCfg = Release|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.Release|x86.ActiveCfg = Release|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.RelWithDebInfo|ARM.ActiveCfg = RelWithDebInfo|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Checked|Any CPU.ActiveCfg = Checked|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Checked|ARM.ActiveCfg = Checked|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Checked|ARM64.ActiveCfg = Checked|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Checked|x64.ActiveCfg = Checked|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Checked|x64.Build.0 = Checked|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Checked|x86.ActiveCfg = Checked|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Debug|Any CPU.ActiveCfg = Debug|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Debug|ARM.ActiveCfg = Debug|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Debug|ARM64.ActiveCfg = Debug|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Debug|x64.ActiveCfg = Debug|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Debug|x64.Build.0 = Debug|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Debug|x86.ActiveCfg = Debug|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Release|Any CPU.ActiveCfg = Release|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Release|ARM.ActiveCfg = Release|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Release|ARM64.ActiveCfg = Release|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Release|x64.ActiveCfg = Release|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.Release|x86.ActiveCfg = Release|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.RelWithDebInfo|ARM.ActiveCfg = RelWithDebInfo|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Checked|ARM.Build.0 = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Checked|ARM64.Build.0 = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Checked|x64.ActiveCfg = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Checked|x64.Build.0 = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Checked|x86.ActiveCfg = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Checked|x86.Build.0 = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Debug|ARM.Build.0 = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Debug|ARM64.Build.0 = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Debug|x64.ActiveCfg = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Debug|x64.Build.0 = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Debug|x86.ActiveCfg = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Debug|x86.Build.0 = Debug|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Release|Any CPU.Build.0 = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Release|ARM.ActiveCfg = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Release|ARM.Build.0 = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Release|ARM64.ActiveCfg = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Release|ARM64.Build.0 = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Release|x64.ActiveCfg = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Release|x64.Build.0 = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Release|x86.ActiveCfg = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.Release|x86.Build.0 = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Checked|ARM.Build.0 = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Checked|ARM64.Build.0 = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Checked|x64.ActiveCfg = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Checked|x64.Build.0 = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Checked|x86.ActiveCfg = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Checked|x86.Build.0 = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Debug|ARM.Build.0 = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Debug|ARM64.Build.0 = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Debug|x64.ActiveCfg = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Debug|x64.Build.0 = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Debug|x86.ActiveCfg = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Debug|x86.Build.0 = Debug|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Release|Any CPU.Build.0 = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Release|ARM.ActiveCfg = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Release|ARM.Build.0 = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Release|ARM64.ActiveCfg = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Release|ARM64.Build.0 = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Release|x64.ActiveCfg = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Release|x64.Build.0 = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Release|x86.ActiveCfg = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.Release|x86.Build.0 = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Checked|ARM.Build.0 = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Checked|ARM64.Build.0 = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Checked|x64.ActiveCfg = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Checked|x64.Build.0 = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Checked|x86.ActiveCfg = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Checked|x86.Build.0 = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Debug|ARM.Build.0 = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Debug|ARM64.Build.0 = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Debug|x64.ActiveCfg = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Debug|x64.Build.0 = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Debug|x86.ActiveCfg = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Debug|x86.Build.0 = Debug|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Release|ARM.ActiveCfg = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Release|ARM64.ActiveCfg = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Release|x64.ActiveCfg = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.Release|x86.ActiveCfg = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Checked|ARM.Build.0 = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Checked|ARM64.Build.0 = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Checked|x64.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Checked|x64.Build.0 = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Checked|x86.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Checked|x86.Build.0 = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Debug|ARM.Build.0 = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Debug|ARM64.Build.0 = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Debug|x64.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Debug|x64.Build.0 = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Debug|x86.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Debug|x86.Build.0 = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Release|Any CPU.Build.0 = Release|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Release|ARM.ActiveCfg = Release|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Release|ARM.Build.0 = Release|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Release|ARM64.ActiveCfg = Release|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Release|ARM64.Build.0 = Release|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Release|x64.ActiveCfg = Release|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Release|x64.Build.0 = Release|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Release|x86.ActiveCfg = Release|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.Release|x86.Build.0 = Release|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.RelWithDebInfo|ARM.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.RelWithDebInfo|ARM.Build.0 = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.RelWithDebInfo|ARM64.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.RelWithDebInfo|ARM64.Build.0 = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.RelWithDebInfo|x86.ActiveCfg = Debug|Any CPU
- {1043FA82-37CC-4809-80DC-C1EB06A55133}.RelWithDebInfo|x86.Build.0 = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Checked|ARM.Build.0 = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Checked|ARM64.Build.0 = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Checked|x64.ActiveCfg = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Checked|x64.Build.0 = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Checked|x86.ActiveCfg = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Checked|x86.Build.0 = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Debug|ARM.Build.0 = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Debug|ARM64.Build.0 = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Debug|x64.ActiveCfg = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Debug|x64.Build.0 = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Debug|x86.ActiveCfg = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Debug|x86.Build.0 = Debug|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Release|Any CPU.Build.0 = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Release|ARM.ActiveCfg = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Release|ARM.Build.0 = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Release|ARM64.ActiveCfg = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Release|ARM64.Build.0 = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Release|x64.ActiveCfg = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Release|x64.Build.0 = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Release|x86.ActiveCfg = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.Release|x86.Build.0 = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Checked|ARM.Build.0 = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Checked|ARM64.Build.0 = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Checked|x64.ActiveCfg = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Checked|x64.Build.0 = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Checked|x86.ActiveCfg = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Checked|x86.Build.0 = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Debug|ARM.Build.0 = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Debug|ARM64.Build.0 = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Debug|x64.ActiveCfg = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Debug|x64.Build.0 = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Debug|x86.ActiveCfg = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Debug|x86.Build.0 = Debug|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Release|Any CPU.Build.0 = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Release|ARM.ActiveCfg = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Release|ARM.Build.0 = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Release|ARM64.ActiveCfg = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Release|ARM64.Build.0 = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Release|x64.ActiveCfg = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Release|x64.Build.0 = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Release|x86.ActiveCfg = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.Release|x86.Build.0 = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {830A70D3-E604-467A-9846-6C5DF5BD3976}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Checked|ARM.Build.0 = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Checked|ARM64.Build.0 = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Checked|x64.ActiveCfg = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Checked|x64.Build.0 = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Checked|x86.ActiveCfg = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Checked|x86.Build.0 = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Debug|ARM.Build.0 = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Debug|ARM64.Build.0 = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Debug|x64.ActiveCfg = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Debug|x64.Build.0 = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Debug|x86.ActiveCfg = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Debug|x86.Build.0 = Debug|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Release|Any CPU.Build.0 = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Release|ARM.ActiveCfg = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Release|ARM.Build.0 = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Release|ARM64.ActiveCfg = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Release|ARM64.Build.0 = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Release|x64.ActiveCfg = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Release|x64.Build.0 = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Release|x86.ActiveCfg = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.Release|x86.Build.0 = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Checked|ARM.Build.0 = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Checked|ARM64.Build.0 = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Checked|x64.ActiveCfg = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Checked|x64.Build.0 = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Checked|x86.ActiveCfg = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Checked|x86.Build.0 = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Debug|ARM.Build.0 = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Debug|ARM64.Build.0 = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Debug|x64.ActiveCfg = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Debug|x64.Build.0 = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Debug|x86.ActiveCfg = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Debug|x86.Build.0 = Debug|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Release|Any CPU.Build.0 = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Release|ARM.ActiveCfg = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Release|ARM.Build.0 = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Release|ARM64.ActiveCfg = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Release|ARM64.Build.0 = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Release|x64.ActiveCfg = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Release|x64.Build.0 = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Release|x86.ActiveCfg = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.Release|x86.Build.0 = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Checked|ARM.Build.0 = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Checked|ARM64.Build.0 = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Checked|x64.ActiveCfg = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Checked|x64.Build.0 = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Checked|x86.ActiveCfg = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Checked|x86.Build.0 = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Debug|ARM.Build.0 = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Debug|ARM64.Build.0 = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Debug|x64.ActiveCfg = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Debug|x64.Build.0 = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Debug|x86.ActiveCfg = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Debug|x86.Build.0 = Debug|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Release|Any CPU.Build.0 = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Release|ARM.ActiveCfg = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Release|ARM.Build.0 = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Release|ARM64.ActiveCfg = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Release|ARM64.Build.0 = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Release|x64.ActiveCfg = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Release|x64.Build.0 = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Release|x86.ActiveCfg = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.Release|x86.Build.0 = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Checked|ARM.Build.0 = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Checked|ARM64.Build.0 = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Checked|x64.ActiveCfg = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Checked|x64.Build.0 = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Checked|x86.ActiveCfg = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Checked|x86.Build.0 = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Debug|ARM.Build.0 = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Debug|ARM64.Build.0 = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Debug|x64.ActiveCfg = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Debug|x64.Build.0 = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Debug|x86.ActiveCfg = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Debug|x86.Build.0 = Debug|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Release|Any CPU.Build.0 = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Release|ARM.ActiveCfg = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Release|ARM.Build.0 = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Release|ARM64.ActiveCfg = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Release|ARM64.Build.0 = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Release|x64.ActiveCfg = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Release|x64.Build.0 = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Release|x86.ActiveCfg = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.Release|x86.Build.0 = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Checked|ARM.Build.0 = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Checked|ARM64.Build.0 = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Checked|x64.ActiveCfg = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Checked|x64.Build.0 = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Checked|x86.ActiveCfg = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Checked|x86.Build.0 = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Debug|ARM.Build.0 = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Debug|ARM64.Build.0 = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Debug|x64.ActiveCfg = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Debug|x64.Build.0 = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Debug|x86.ActiveCfg = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Debug|x86.Build.0 = Debug|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Release|Any CPU.Build.0 = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Release|ARM.ActiveCfg = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Release|ARM.Build.0 = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Release|ARM64.ActiveCfg = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Release|ARM64.Build.0 = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Release|x64.ActiveCfg = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Release|x64.Build.0 = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Release|x86.ActiveCfg = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.Release|x86.Build.0 = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {C2422836-BA25-4751-9060-7C7890085869}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Checked|Any CPU.ActiveCfg = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Checked|Any CPU.Build.0 = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Checked|ARM.ActiveCfg = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Checked|ARM.Build.0 = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Checked|ARM64.ActiveCfg = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Checked|ARM64.Build.0 = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Checked|x64.ActiveCfg = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Checked|x64.Build.0 = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Checked|x86.ActiveCfg = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Checked|x86.Build.0 = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Debug|ARM.Build.0 = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Debug|ARM64.Build.0 = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Debug|x64.ActiveCfg = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Debug|x64.Build.0 = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Debug|x86.ActiveCfg = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Debug|x86.Build.0 = Debug|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Release|Any CPU.Build.0 = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Release|ARM.ActiveCfg = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Release|ARM.Build.0 = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Release|ARM64.ActiveCfg = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Release|ARM64.Build.0 = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Release|x64.ActiveCfg = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Release|x64.Build.0 = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Release|x86.ActiveCfg = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.Release|x86.Build.0 = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.RelWithDebInfo|ARM.ActiveCfg = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.RelWithDebInfo|ARM.Build.0 = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.RelWithDebInfo|ARM64.ActiveCfg = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.RelWithDebInfo|ARM64.Build.0 = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|Any CPU.ActiveCfg = Checked|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|Any CPU.Build.0 = Checked|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|ARM.ActiveCfg = Checked|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|ARM.Build.0 = Checked|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|ARM64.ActiveCfg = Checked|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|ARM64.Build.0 = Checked|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|x64.ActiveCfg = Checked|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|x64.Build.0 = Checked|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|x86.ActiveCfg = Checked|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Checked|x86.Build.0 = Checked|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|Any CPU.ActiveCfg = Debug|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|ARM.ActiveCfg = Debug|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|ARM.Build.0 = Debug|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|ARM64.ActiveCfg = Debug|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|ARM64.Build.0 = Debug|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|x64.ActiveCfg = Debug|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|x64.Build.0 = Debug|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|x86.ActiveCfg = Debug|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Debug|x86.Build.0 = Debug|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Release|Any CPU.ActiveCfg = Release|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Release|ARM.ActiveCfg = Release|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Release|ARM64.ActiveCfg = Release|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Release|x64.ActiveCfg = Release|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.Release|x86.ActiveCfg = Release|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|Any CPU.Build.0 = RelWithDebInfo|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|ARM.ActiveCfg = RelWithDebInfo|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|ARM.Build.0 = RelWithDebInfo|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|ARM64.Build.0 = RelWithDebInfo|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
- {A9A7C879-C320-3327-BB84-16E1322E17AE}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {730C1201-1848-4F1E-8C1F-6316FB886C35} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {41638A4C-0DAF-47ED-A774-ECBBAC0315D7} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {1532DB3C-7DCD-45C6-B697-62B8378A16A2} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
- {D52C65C4-2C7D-45E6-9F5C-6F3A96796018} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
- {B62728C8-1267-4043-B46F-5537BBAEC692} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {718350FA-2DD9-4950-BA41-D7A7F66DAC91} = {B62728C8-1267-4043-B46F-5537BBAEC692}
- {43D41DE9-7CCC-4DCB-A68A-B9099E538125} = {B62728C8-1267-4043-B46F-5537BBAEC692}
- {41F59D85-FC36-3015-861B-F177863252BC} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
- {1F012743-941B-4915-8C55-02097894CF3F} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
- {41351955-16D5-48D7-AF4C-AF25F5FB2E78} = {B62728C8-1267-4043-B46F-5537BBAEC692}
- {ED27F39F-DF5C-4E22-87E0-EC5B5873B503} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
- {90CF2633-58F0-44EE-943B-D70207455F20} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {2A9B5988-982F-4E26-9E44-D38AC5978C30} = {B62728C8-1267-4043-B46F-5537BBAEC692}
- {234416E9-EA5F-4018-AC34-67682C5D3E04} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
- {A1CE682A-12C4-4FF9-B864-A9A15A8726D2} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {410394E0-7F4F-42D5-B5FA-30956F44ACBC} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
- {03479E19-3F18-49A6-910A-F5041E27E7C0} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {AEDCCF5B-5AD0-4D64-BF73-5CF468E07D22} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {936678B3-3392-4F4F-943C-B6A4BFCBAADC} = {B62728C8-1267-4043-B46F-5537BBAEC692}
- {E5A7DC6C-BF8D-418A-BCBD-094EB748FA82} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {D8BE9C81-194E-43E5-82CF-2080892FBDE7} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {6F4DD2F8-1C7B-4A87-B7E5-1BEE9F5AC128} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {C79D6069-2C18-48CB-846E-71F7168C2F7D} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {CED9ABBA-861E-4C0A-9359-22351208EF27} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {298AE119-6625-4604-BDE5-0765DC34C856} = {B62728C8-1267-4043-B46F-5537BBAEC692}
- {C457CBCD-3A8D-4402-9A2B-693A0390D3F9} = {298AE119-6625-4604-BDE5-0765DC34C856}
- {CFCF90E5-91CF-44FD-819D-97F530AEF769} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {41BDFD6D-D165-4D67-BEF6-4E539040D30A} = {7852EDE4-93DF-4DB1-8A86-C521703811AF}
- {06730767-421B-465F-BB63-A3A07D72D7A2} = {41BDFD6D-D165-4D67-BEF6-4E539040D30A}
- {6419BA04-6F1A-4D2F-8DE4-5C359E0364A3} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {870A7AD0-B808-491E-92F6-433BE990B374} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {E1E2C698-E247-4D48-AE01-542B43744ACB} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {A58B7F72-E9DF-4962-9E15-300EF4C53ABB} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {642E6E67-8A84-473D-9507-C302BF10989D} = {B62728C8-1267-4043-B46F-5537BBAEC692}
- {57EB54E7-521A-4CDE-9DAE-8D6AE90A20BB} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {1F23F5DA-F766-445F-88FF-86137BDC2709} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {BE45F03E-D700-404F-A890-8ED7D8969958} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
- {729ED9E8-C92F-4E0E-B8A7-CC2C1374C751} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
- {EEC90A42-CDCD-4EE3-B47D-C109D604E7E2} = {41638A4C-0DAF-47ED-A774-ECBBAC0315D7}
- {5FC66A16-41E9-4D22-A44C-FEBB7DCCAAF8} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {064BC7DD-D44C-400E-9215-7546E092AB98} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {61F73DD0-F346-4D7A-AB12-63415B4EEEE1} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {2BD55143-B102-4FEC-84AD-DC3B330FA9AC} = {B62728C8-1267-4043-B46F-5537BBAEC692}
- {BD779298-8631-3F5D-AA59-82897E5454A7} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {7852EDE4-93DF-4DB1-8A86-C521703811AF} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {20EBC3C4-917C-402D-B778-9A6E3742BF5A} = {7852EDE4-93DF-4DB1-8A86-C521703811AF}
- {8C35FEF8-1101-38F6-ACD0-462A1EA53A7D} = {7852EDE4-93DF-4DB1-8A86-C521703811AF}
- {795B7A50-1B1F-406E-94E0-F9B35104EF22} = {7852EDE4-93DF-4DB1-8A86-C521703811AF}
- {DD60B7C4-BECC-4C7D-A53B-FCDD4C92B728} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {DFF48CB6-4504-41C6-A8F1-F4A3D316D49F} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {E8F133F8-4D20-475D-9D16-2BA236DAB65F} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {1043FA82-37CC-4809-80DC-C1EB06A55133} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {C6EB3C21-FDFF-4CF0-BE3A-3D1A3924408E} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {830A70D3-E604-467A-9846-6C5DF5BD3976} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {438A539E-6AF2-4402-BBA0-E2AAC71A28A1} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {B6C33C85-08A7-47D9-BEA8-36164BB3653B} = {B62728C8-1267-4043-B46F-5537BBAEC692}
- {C32F2858-6B5F-4967-ABC4-852B6399C4AE} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {44F93947-8FD4-4946-8AE5-EF6D25970CC7} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {C2422836-BA25-4751-9060-7C7890085869} = {03479E19-3F18-49A6-910A-F5041E27E7C0}
- {28B55114-88C0-44B6-BBD8-50C14ED59EE2} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {A9A7C879-C320-3327-BB84-16E1322E17AE} = {00D9021E-A202-4BCB-9A59-13D5BEEBF423}
- {00D9021E-A202-4BCB-9A59-13D5BEEBF423} = {7852EDE4-93DF-4DB1-8A86-C521703811AF}
- {19663AE5-3EEA-472E-B157-37C2C7C6BACB} = {00D9021E-A202-4BCB-9A59-13D5BEEBF423}
- {3B26AB4F-8129-4DAF-8BB0-A6075663F6D2} = {19663AE5-3EEA-472E-B157-37C2C7C6BACB}
- {8944D9BF-69ED-4798-B533-559CAB011B07} = {795B7A50-1B1F-406E-94E0-F9B35104EF22}
- {06FB18BC-F4DD-4DB9-A566-551254CD1064} = {795B7A50-1B1F-406E-94E0-F9B35104EF22}
- {641F00F0-2693-451B-A96A-13E4E115BF0F} = {7852EDE4-93DF-4DB1-8A86-C521703811AF}
- {D9A91544-CDF8-4C68-BAD2-47F4968A8652} = {641F00F0-2693-451B-A96A-13E4E115BF0F}
- {9E51C821-4095-4250-BD8A-2A29396DB1B4} = {19FAB78C-3351-4911-8F0C-8C6056401740}
- {D2D76252-D225-4B79-9DDB-A36867A4720E} = {9E51C821-4095-4250-BD8A-2A29396DB1B4}
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {46465737-C938-44FC-BE1A-4CE139EBB5E0}
- EndGlobalSection
-EndGlobal
diff --git a/diagnostics.slnx b/diagnostics.slnx
new file mode 100644
index 0000000000..7ff2a2aee8
--- /dev/null
+++ b/diagnostics.slnx
@@ -0,0 +1,468 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/diagnostics.yml b/diagnostics.yml
index daab98353a..a6c816ae85 100644
--- a/diagnostics.yml
+++ b/diagnostics.yml
@@ -32,6 +32,12 @@ pr:
- LICENSE.TXT
variables:
+- ${{ if and(notin(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.DefinitionName'], 'dotnet-diagnostics')) }}:
+ - name: isOfficialBuild
+ value: true
+- ${{ else }}:
+ - name: isOfficialBuild
+ value: false
- template : /eng/pipelines/global-variables.yml
parameters:
runtimeFeed: ${{ parameters.runtimeFeed }}
@@ -354,3 +360,11 @@ extends:
# This sets up the bits to do a Release.
- template: /eng/pipelines/prepare-release.yml
+ parameters:
+ isOfficialBuild: ${{ variables['isOfficialBuild'] }}
+ repoAllowList: https://github.com/dotnet/diagnostics https://dev.azure.com/dnceng/internal/_git/dotnet-diagnostics
+ productAllowList: diagnostics dotnet-diagnostics
+ ${{ if eq(variables['isOfficialBuild'], 'true') }}:
+ dependsOn: [ publish_using_darc ]
+ ${{ else }}:
+ dependsOn: [ build ]
diff --git a/documentation/FAQ.md b/documentation/FAQ.md
index be5a0127a0..a8fa6a45cf 100644
--- a/documentation/FAQ.md
+++ b/documentation/FAQ.md
@@ -96,3 +96,17 @@ Frequently Asked Questions
```
You may need a different bitness of the Windows (windbg/cdb) debugger or dotnet-dump. If you are running an x64 (64 bit), try an x86 (32 bit) version. The easiest way to get an x86 version of dotnet-dump is installing the "single-file" version [here](https://aka.ms/dotnet-dump/win-x86). For more information on single-file tools see [here](https://github.com/dotnet/diagnostics/blob/main/documentation/single-file-tools.md#single-file-diagnostic-tools).
+
+* If you are using `dotnet-dump analyze` and see an error like:
+
+ ```
+ ERROR: No CLR runtime found
+ ```
+
+ This can happen if you are analyzing a dump on a different machine or OS than where the dump was created, specially when the dump comes from a .NET runtime provided by a non-Microsoft entity (such as a Linux distribution).
+
+ A workaround is to run `dotnet-dump analyze` in the same environment (machine, container, or OS) where the dump was originally generated. That lets `dotnet-dump` use the DAC module included in the runtime and get going.
+
+ For more details, see the vendor-specific documentation:
+
+ - Red Hat: https://access.redhat.com/solutions/6989907
diff --git a/documentation/design-docs/ipc-protocol.md b/documentation/design-docs/ipc-protocol.md
index 7e64348d86..2ee2a3440e 100644
--- a/documentation/design-docs/ipc-protocol.md
+++ b/documentation/design-docs/ipc-protocol.md
@@ -1080,7 +1080,7 @@ The `extension` field is an optional data blob that can provide additional infor
**Details:**
- The extension blob may be empty if no extra information is present.
- Multiple extension blobs can be concatenated if more than one piece of information is needed. Each blob starts with its own label byte.
-- For Event Metadata (`0x01`), the `metadata` array matches the NetTrace v5 PayloadBytes format.
+- For Event Metadata (`0x01`), the `metadata` array models after the [NetTrace_v5 Metadata event encoding](https://github.com/microsoft/perfview/blob/main/src/TraceEvent/EventPipe/NetTraceFormat_v5.md#metadata-event-encoding) excluding the MetadataId field.
- For ActivityId and RelatedActivityId (`0x02`, `0x03`), the `guid` is a 16-byte value representing the GUID.
- The size of the entire extension blob can be inferred from the extension `__rel_loc` field. See the [__rel_loc documentation](https://lwn.net/Articles/876682/) for more details.
@@ -1099,13 +1099,13 @@ For example, an extension blob containing both Event Metadata and ActivityId wou
The `payload` points at a blob of data with the same format as an EventPipe payload – the concatenated encoded values for all the parameters.
-The `metadata` either points at nothing if the event doesn’t have metadata, or it points at a metadata blob matching the NetTrace version 5 formatting convention. Specifically it is the data that would be stored inside the PayloadBytes area of an event blob within a MetadataBlock described [here](https://github.com/microsoft/perfview/blob/main/src/TraceEvent/EventPipe/NetTraceFormat_v5.md#metadata-event-encoding).
+The `metadata` either points at nothing if the event doesn’t have metadata, or it points at a metadata blob matching the NetTrace version 5 formatting convention. Specifically it is the data that would be stored inside the PayloadBytes area of an event blob within a MetadataBlock described [here](https://github.com/microsoft/perfview/blob/main/src/TraceEvent/EventPipe/NetTraceFormat_v5.md#metadata-event-encoding) excluding the MetadataId field, which is not applicable to User_events-based events, as metadata will be inlined with the event instance itself.
> NOTE: V5 and V6 metadata formats have the same info, but they aren’t formatted identically. Parsing and reserialization is required to convert between the two.
### Which events have metadata?
-The runtime will keep track per-session whether it has sent a particular event before. The first time each event is sent during a session, metadata will be included, and otherwise, it will be left empty. As a special case, runtime events currently implemented in native code will never send metadata.
+The runtime will keep track per-session whether it has sent a particular event before. The first time each event is sent during a session, metadata will be included. Should multiple threads race to write the same event to the same session, they may all emit metadata. Afterwards, all instances of that event will not emit metadata, and the responsibility is on the reader to cache and link events with their previously sent metadata. As a special case, runtime events currently implemented in native code will never send metadata.
## Dump Commands
diff --git a/eng/Version.Details.props b/eng/Version.Details.props
new file mode 100644
index 0000000000..0278cb4990
--- /dev/null
+++ b/eng/Version.Details.props
@@ -0,0 +1,66 @@
+
+
+
+
+ 4.0.0-beta.25381.2
+ 4.0.0-beta.25381.2
+
+ 2.0.0-beta5.25210.1
+
+ 1.0.105-preview.225
+
+ 10.0.0-rtm.25476.104
+ 10.0.0-rtm.25476.104
+ 5.0.0-2.25476.104
+ 5.0.0-2.25476.104
+ 5.0.0-2.25476.104
+ 10.0.100-rtm.25476.104
+ 10.0.0-beta.25476.104
+ 10.0.0-beta.25476.104
+ 10.0.100-rtm.25476.104
+ 10.0.0-rtm.25476.104
+ 10.0.0-rtm.25476.104
+ 10.0.0-rtm.25476.104
+ 10.0.0-rtm.25476.104
+ 10.0.0-rtm.25476.104
+ 10.0.0-rtm.25476.104
+ 10.0.0-rtm.25476.104
+ 10.0.0-rtm.25476.104
+
+ 7.0.0-beta.22316.2
+
+
+
+
+ $(MicrosoftDiagnosticsRuntimePackageVersion)
+ $(MicrosoftDiagnosticsRuntimeUtilitiesPackageVersion)
+
+ $(SystemCommandLinePackageVersion)
+
+ $(XamarinAndroidToolsAndroidSdkPackageVersion)
+
+ $(MicrosoftAspNetCoreAppRefPackageVersion)
+ $(MicrosoftAspNetCoreAppRefInternalPackageVersion)
+ $(MicrosoftCodeAnalysisPackageVersion)
+ $(MicrosoftCodeAnalysisAnalyzersPackageVersion)
+ $(MicrosoftCodeAnalysisCSharpPackageVersion)
+ $(MicrosoftCodeAnalysisNetAnalyzersPackageVersion)
+ $(MicrosoftDotNetArcadeSdkPackageVersion)
+ $(MicrosoftDotNetCodeAnalysisPackageVersion)
+ $(MicrosoftNETSdkPackageVersion)
+ $(MicrosoftNETCoreAppRefPackageVersion)
+ $(MicrosoftNETCorePlatformsPackageVersion)
+ $(runtimelinuxarm64MicrosoftDotNetCdacTransportPackageVersion)
+ $(runtimelinuxx64MicrosoftDotNetCdacTransportPackageVersion)
+ $(runtimeosxarm64MicrosoftDotNetCdacTransportPackageVersion)
+ $(runtimeosxx64MicrosoftDotNetCdacTransportPackageVersion)
+ $(runtimewinarm64MicrosoftDotNetCdacTransportPackageVersion)
+ $(runtimewinx64MicrosoftDotNetCdacTransportPackageVersion)
+
+ $(MicrosoftDotNetRemoteExecutorPackageVersion)
+
+
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 260c35a22a..694524f573 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,87 +1,106 @@
-
+
-
+
https://github.com/microsoft/clrmd
- d724947392626b66e39b525998a8817447d50380
+ f11663fc2e71ddd0869deb528047f0f476a0e346
-
+
https://github.com/microsoft/clrmd
- d724947392626b66e39b525998a8817447d50380
+ f11663fc2e71ddd0869deb528047f0f476a0e346
+
+
+ https://github.com/dotnet/command-line-api
+ e9b0511d7f1128e2bc3be7a658a2a4ea977e602d
+
+
+ https://github.com/dotnet/android
+ bf304cf475308547a2a1a342bb9f2e6825cc33cd
-
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
https://github.com/dotnet/arcade
ccfe6da198c5f05534863bbb1bff66e830e0c6ab
-
+
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
+
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
-
+
https://github.com/dotnet/dotnet
- eaa19c281d34580a8168cff9ce1e7337da8bfe4f
+ e1eaf1bbd9702e9b6ee9b10dbc94105732e07896
diff --git a/eng/Versions.props b/eng/Versions.props
index 8e96ea5ed8..81a563fb7c 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -1,4 +1,5 @@
+
https://github.com/dotnet/diagnostics
preview
@@ -14,49 +15,29 @@
-->
true
-
-
-
- 10.0.0-preview.7.25351.106
- 10.0.0-preview.7.25351.106
-
- 10.0.0-preview.7.25351.106
- 10.0.0-preview.7.25351.106
-
- 10.0.100-preview.7.25351.106
-
-
- 10.0.0-preview.7.25351.106
- 10.0.0-preview.7.25351.106
- 10.0.0-preview.7.25351.106
- 10.0.0-preview.7.25351.106
- 10.0.0-preview.7.25351.106
- 10.0.0-preview.7.25351.106
-
false
- 1.12.0
- 1.43.0
- 12.22.0
+ 1.13.1
+ 1.45.0
+ 12.23.0
8.0.0
8.0.0
- 6.0.0
- 4.0.0-beta.25359.1
+ 9.0.8
17.10.0-beta1.24272.1
3.1.23
- 6.0.0
- 6.0.4
- 6.0.0
+ 9.0.8
+ 9.0.8
+ 9.0.8
+ 9.0.8
+ 9.0.8
+ 9.0.8
5.0.1
- 2.0.0-beta5.25210.1
5.0.0
4.5.1
8.0.1
@@ -66,22 +47,16 @@
8.0.0
8.0.5
2.0.3
- 10.0.0-beta.25351.106
1.2.0-beta.556
- 7.0.0-beta.22316.2
10.0.26100.1
13.0.1
- 10.0.622304
- 5.0.0-1.25351.106
- 5.0.0-1.25351.106
- 4.11.0-2.24271.11
3.11.0
@@ -94,8 +69,6 @@
4.4.0
4.8.0
$(MicrosoftCodeAnalysisVersion)
- 5.0.0-1.25351.106
- 10.0.0-preview.25351.106
diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1
index 5db4ad71ee..9445c31432 100644
--- a/eng/common/SetupNugetSources.ps1
+++ b/eng/common/SetupNugetSources.ps1
@@ -10,8 +10,8 @@
# 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
+# filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
+# arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token
# env:
# Token: $(dn-bot-dnceng-artifact-feeds-rw)
#
@@ -157,7 +157,7 @@ if ($dotnet31Source -ne $null) {
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 $userName -pwd $Password
}
-$dotnetVersions = @('5','6','7','8','9')
+$dotnetVersions = @('5','6','7','8','9','10')
foreach ($dotnetVersion in $dotnetVersions) {
$feedPrefix = "dotnet" + $dotnetVersion;
diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh
index 4604b61b03..ddf4efc81a 100755
--- a/eng/common/SetupNugetSources.sh
+++ b/eng/common/SetupNugetSources.sh
@@ -11,8 +11,8 @@
# - task: Bash@3
# displayName: Setup Internal Feeds
# inputs:
-# filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
-# arguments: $(Build.SourcesDirectory)/NuGet.config
+# filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.sh
+# arguments: $(System.DefaultWorkingDirectory)/NuGet.config
# condition: ne(variables['Agent.OS'], 'Windows_NT')
# - task: NuGetAuthenticate@1
#
@@ -99,7 +99,7 @@ if [ "$?" == "0" ]; then
PackageSources+=('dotnet3.1-internal-transport')
fi
-DotNetVersions=('5' '6' '7' '8' '9')
+DotNetVersions=('5' '6' '7' '8' '9' '10')
for DotNetVersion in ${DotNetVersions[@]} ; do
FeedPrefix="dotnet${DotNetVersion}";
diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml
index 6badecba7b..5ce5184061 100644
--- a/eng/common/core-templates/job/job.yml
+++ b/eng/common/core-templates/job/job.yml
@@ -20,6 +20,7 @@ parameters:
artifacts: ''
enableMicrobuild: false
enableMicrobuildForMacAndLinux: false
+ microbuildUseESRP: true
enablePublishBuildArtifacts: false
enablePublishBuildAssets: false
enablePublishTestResults: false
@@ -128,6 +129,7 @@ jobs:
parameters:
enableMicrobuild: ${{ parameters.enableMicrobuild }}
enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }}
+ microbuildUseESRP: ${{ parameters.microbuildUseESRP }}
continueOnError: ${{ parameters.continueOnError }}
- ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}:
@@ -161,7 +163,7 @@ jobs:
inputs:
testResultsFormat: 'xUnit'
testResultsFiles: '*.xml'
- searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
+ searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)'
testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit
mergeTestResults: ${{ parameters.mergeTestResults }}
continueOnError: true
@@ -172,7 +174,7 @@ jobs:
inputs:
testResultsFormat: 'VSTest'
testResultsFiles: '*.trx'
- searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
+ searchFolder: '$(System.DefaultWorkingDirectory)/artifacts/TestResults/$(_BuildConfig)'
testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx
mergeTestResults: ${{ parameters.mergeTestResults }}
continueOnError: true
@@ -216,7 +218,7 @@ jobs:
- task: CopyFiles@2
displayName: Gather buildconfiguration for build retry
inputs:
- SourceFolder: '$(Build.SourcesDirectory)/eng/common/BuildConfiguration'
+ SourceFolder: '$(System.DefaultWorkingDirectory)/eng/common/BuildConfiguration'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/eng/common/BuildConfiguration'
continueOnError: true
diff --git a/eng/common/core-templates/job/onelocbuild.yml b/eng/common/core-templates/job/onelocbuild.yml
index 8034815f42..c5788829a8 100644
--- a/eng/common/core-templates/job/onelocbuild.yml
+++ b/eng/common/core-templates/job/onelocbuild.yml
@@ -4,11 +4,11 @@ parameters:
# Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
pool: ''
-
+
CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex
GithubPat: $(BotAccount-dotnet-bot-repo-PAT)
- SourcesDirectory: $(Build.SourcesDirectory)
+ SourcesDirectory: $(System.DefaultWorkingDirectory)
CreatePr: true
AutoCompletePr: false
ReusePr: true
@@ -27,7 +27,7 @@ parameters:
is1ESPipeline: ''
jobs:
- job: OneLocBuild${{ parameters.JobNameSuffix }}
-
+
dependsOn: ${{ parameters.dependsOn }}
displayName: OneLocBuild${{ parameters.JobNameSuffix }}
@@ -68,7 +68,7 @@ jobs:
- ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}:
- task: Powershell@2
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/generate-locproject.ps1
+ filePath: $(System.DefaultWorkingDirectory)/eng/common/generate-locproject.ps1
arguments: $(_GenerateLocProjectArguments)
displayName: Generate LocProject.json
condition: ${{ parameters.condition }}
@@ -99,22 +99,20 @@ jobs:
mirrorBranch: ${{ parameters.MirrorBranch }}
condition: ${{ parameters.condition }}
- - template: /eng/common/core-templates/steps/publish-build-artifacts.yml
- parameters:
- is1ESPipeline: ${{ parameters.is1ESPipeline }}
- args:
- displayName: Publish Localization Files
- pathToPublish: '$(Build.ArtifactStagingDirectory)/loc'
- publishLocation: Container
- artifactName: Loc
- condition: ${{ parameters.condition }}
+ # Copy the locProject.json to the root of the Loc directory, then publish a pipeline artifact
+ - task: CopyFiles@2
+ displayName: Copy LocProject.json
+ inputs:
+ SourceFolder: '$(System.DefaultWorkingDirectory)/eng/Localize/'
+ Contents: 'LocProject.json'
+ TargetFolder: '$(Build.ArtifactStagingDirectory)/loc'
+ condition: ${{ parameters.condition }}
- - template: /eng/common/core-templates/steps/publish-build-artifacts.yml
+ - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
args:
- displayName: Publish LocProject.json
- pathToPublish: '$(Build.SourcesDirectory)/eng/Localize/'
- publishLocation: Container
- artifactName: Loc
+ targetPath: '$(Build.ArtifactStagingDirectory)/loc'
+ artifactName: 'Loc'
+ displayName: 'Publish Localization Files'
condition: ${{ parameters.condition }}
diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml
index d5303229c9..37dff559fc 100644
--- a/eng/common/core-templates/job/publish-build-assets.yml
+++ b/eng/common/core-templates/job/publish-build-assets.yml
@@ -38,6 +38,10 @@ parameters:
# Optional: A minimatch pattern for the asset manifests to publish to BAR
assetManifestsPattern: '*/manifests/**/*.xml'
+ repositoryAlias: self
+
+ officialBuildId: ''
+
jobs:
- job: Asset_Registry_Publish
@@ -60,6 +64,11 @@ jobs:
value: false
# unconditional - needed for logs publishing (redactor tool version)
- template: /eng/common/core-templates/post-build/common-variables.yml
+ - name: OfficialBuildId
+ ${{ if ne(parameters.officialBuildId, '') }}:
+ value: ${{ parameters.officialBuildId }}
+ ${{ else }}:
+ value: $(Build.BuildNumber)
pool:
# We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
@@ -78,7 +87,7 @@ jobs:
- 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- - checkout: self
+ - checkout: ${{ parameters.repositoryAlias }}
fetchDepth: 3
clean: true
@@ -117,12 +126,12 @@ jobs:
azureSubscription: "Darc: Maestro Production"
scriptType: ps
scriptLocation: scriptPath
- scriptPath: $(Build.SourcesDirectory)/eng/common/sdk-task.ps1
+ scriptPath: $(System.DefaultWorkingDirectory)/eng/common/sdk-task.ps1
arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet
/p:ManifestsPath='$(Build.StagingDirectory)/AssetManifests'
/p:IsAssetlessBuild=${{ parameters.isAssetlessBuild }}
/p:MaestroApiEndpoint=https://maestro.dot.net
- /p:OfficialBuildId=$(Build.BuildNumber)
+ /p:OfficialBuildId=$(OfficialBuildId)
condition: ${{ parameters.condition }}
continueOnError: ${{ parameters.continueOnError }}
@@ -137,7 +146,7 @@ jobs:
Add-Content -Path $filePath -Value "$(DefaultChannels)"
Add-Content -Path $filePath -Value $(IsStableBuild)
- $symbolExclusionfile = "$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt"
+ $symbolExclusionfile = "$(System.DefaultWorkingDirectory)/eng/SymbolPublishingExclusionsFile.txt"
if (Test-Path -Path $symbolExclusionfile)
{
Write-Host "SymbolExclusionFile exists"
@@ -177,7 +186,7 @@ jobs:
azureSubscription: "Darc: Maestro Production"
scriptType: ps
scriptLocation: scriptPath
- scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
+ scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1
arguments: >
-BuildId $(BARBuildId)
-PublishingInfraVersion 3
diff --git a/eng/common/core-templates/jobs/codeql-build.yml b/eng/common/core-templates/jobs/codeql-build.yml
index 693b00b370..dbc14ac580 100644
--- a/eng/common/core-templates/jobs/codeql-build.yml
+++ b/eng/common/core-templates/jobs/codeql-build.yml
@@ -24,7 +24,7 @@ jobs:
- name: DefaultGuardianVersion
value: 0.109.0
- name: GuardianPackagesConfigFile
- value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config
+ value: $(System.DefaultWorkingDirectory)\eng\common\sdl\packages.config
- name: GuardianVersion
value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }}
diff --git a/eng/common/core-templates/jobs/jobs.yml b/eng/common/core-templates/jobs/jobs.yml
index bf35b78faa..01ada74766 100644
--- a/eng/common/core-templates/jobs/jobs.yml
+++ b/eng/common/core-templates/jobs/jobs.yml
@@ -43,6 +43,8 @@ parameters:
artifacts: {}
is1ESPipeline: ''
+ repositoryAlias: self
+ officialBuildId: ''
# 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.
@@ -83,7 +85,6 @@ jobs:
- template: /eng/common/core-templates/jobs/source-build.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
- allCompletedJobId: Source_Build_Complete
${{ each parameter in parameters.sourceBuildParameters }}:
${{ parameter.key }}: ${{ parameter.value }}
@@ -108,8 +109,6 @@ jobs:
- ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}:
- ${{ each job in parameters.jobs }}:
- ${{ job.job }}
- - ${{ if eq(parameters.enableSourceBuild, true) }}:
- - Source_Build_Complete
runAsPublic: ${{ parameters.runAsPublic }}
publishAssetsImmediately: ${{ or(parameters.publishAssetsImmediately, parameters.isAssetlessBuild) }}
@@ -117,3 +116,5 @@ jobs:
enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }}
artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
signingValidationAdditionalParameters: ${{ parameters.signingValidationAdditionalParameters }}
+ repositoryAlias: ${{ parameters.repositoryAlias }}
+ officialBuildId: ${{ parameters.officialBuildId }}
diff --git a/eng/common/core-templates/jobs/source-build.yml b/eng/common/core-templates/jobs/source-build.yml
index df24c948ba..d92860cba2 100644
--- a/eng/common/core-templates/jobs/source-build.yml
+++ b/eng/common/core-templates/jobs/source-build.yml
@@ -2,12 +2,6 @@ parameters:
# This template adds arcade-powered source-build to CI. A job is created for each platform, as
# well as an optional server job that completes when all platform jobs complete.
- # The name of the "join" job for all source-build platforms. If set to empty string, the job is
- # not included. Existing repo pipelines can use this job depend on all source-build jobs
- # completing without maintaining a separate list of every single job ID: just depend on this one
- # server job. By default, not included. Recommended name if used: 'Source_Build_Complete'.
- allCompletedJobId: ''
-
# See /eng/common/core-templates/job/source-build.yml
jobNamePrefix: 'Source_Build'
@@ -31,16 +25,6 @@ parameters:
jobs:
-- ${{ if ne(parameters.allCompletedJobId, '') }}:
- - job: ${{ parameters.allCompletedJobId }}
- displayName: Source-Build Complete
- pool: server
- dependsOn:
- - ${{ each platform in parameters.platforms }}:
- - ${{ parameters.jobNamePrefix }}_${{ platform.name }}
- - ${{ if eq(length(parameters.platforms), 0) }}:
- - ${{ parameters.jobNamePrefix }}_${{ parameters.defaultManagedPlatform.name }}
-
- ${{ each platform in parameters.platforms }}:
- template: /eng/common/core-templates/job/source-build.yml
parameters:
diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml
index a151fd811e..f6f87fe5c6 100644
--- a/eng/common/core-templates/post-build/post-build.yml
+++ b/eng/common/core-templates/post-build/post-build.yml
@@ -154,7 +154,7 @@ stages:
- task: PowerShell@2
displayName: Validate
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/post-build/nuget-validation.ps1
+ filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/nuget-validation.ps1
arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/
- job:
@@ -208,7 +208,7 @@ stages:
filePath: eng\common\sdk-task.ps1
arguments: -task SigningValidation -restore -msbuildEngine vs
/p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts'
- /p:SignCheckExclusionsFile='$(Build.SourcesDirectory)/eng/SignCheckExclusionsFile.txt'
+ /p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt'
${{ parameters.signingValidationAdditionalParameters }}
- template: /eng/common/core-templates/steps/publish-logs.yml
@@ -258,7 +258,7 @@ stages:
- task: PowerShell@2
displayName: Validate
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/post-build/sourcelink-validation.ps1
+ filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/sourcelink-validation.ps1
arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/
-ExtractPath $(Agent.BuildDirectory)/Extract/
-GHRepoName $(Build.Repository.Name)
@@ -313,7 +313,7 @@ stages:
azureSubscription: "Darc: Maestro Production"
scriptType: ps
scriptLocation: scriptPath
- scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
+ scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1
arguments: >
-BuildId $(BARBuildId)
-PublishingInfraVersion ${{ parameters.publishingInfraVersion }}
diff --git a/eng/common/core-templates/post-build/setup-maestro-vars.yml b/eng/common/core-templates/post-build/setup-maestro-vars.yml
index f7602980db..a7abd58c4b 100644
--- a/eng/common/core-templates/post-build/setup-maestro-vars.yml
+++ b/eng/common/core-templates/post-build/setup-maestro-vars.yml
@@ -36,7 +36,7 @@ steps:
$AzureDevOpsBuildId = $Env:Build_BuildId
}
else {
- . $(Build.SourcesDirectory)\eng\common\tools.ps1
+ . $(System.DefaultWorkingDirectory)\eng\common\tools.ps1
$darc = Get-Darc
$buildInfo = & $darc get-build `
--id ${{ parameters.BARBuildId }} `
diff --git a/eng/common/core-templates/steps/enable-internal-sources.yml b/eng/common/core-templates/steps/enable-internal-sources.yml
index 64f881bffc..4085512b69 100644
--- a/eng/common/core-templates/steps/enable-internal-sources.yml
+++ b/eng/common/core-templates/steps/enable-internal-sources.yml
@@ -17,8 +17,8 @@ steps:
- task: PowerShell@2
displayName: Setup Internal Feeds
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
- arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
+ filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
+ arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $Env:Token
env:
Token: ${{ parameters.legacyCredential }}
# If running on dnceng (internal project), just use the default behavior for NuGetAuthenticate.
@@ -29,8 +29,8 @@ steps:
- task: PowerShell@2
displayName: Setup Internal Feeds
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
- arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config
+ filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
+ arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config
- ${{ else }}:
- template: /eng/common/templates/steps/get-federated-access-token.yml
parameters:
@@ -39,8 +39,8 @@ steps:
- task: PowerShell@2
displayName: Setup Internal Feeds
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
- arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $(dnceng-artifacts-feeds-read-access-token)
+ filePath: $(System.DefaultWorkingDirectory)/eng/common/SetupNugetSources.ps1
+ arguments: -ConfigFile $(System.DefaultWorkingDirectory)/NuGet.config -Password $(dnceng-artifacts-feeds-read-access-token)
# This is required in certain scenarios to install the ADO credential provider.
# It installed by default in some msbuild invocations (e.g. VS msbuild), but needs to be installed for others
# (e.g. dotnet msbuild).
diff --git a/eng/common/core-templates/steps/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml
index 44a9636cdf..c05f650279 100644
--- a/eng/common/core-templates/steps/generate-sbom.yml
+++ b/eng/common/core-templates/steps/generate-sbom.yml
@@ -6,7 +6,7 @@
parameters:
PackageVersion: 10.0.0
- BuildDropPath: '$(Build.SourcesDirectory)/artifacts'
+ BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts'
PackageName: '.NET'
ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom
IgnoreDirectories: ''
diff --git a/eng/common/core-templates/steps/install-microbuild.yml b/eng/common/core-templates/steps/install-microbuild.yml
index f3064a7834..d6b9878f54 100644
--- a/eng/common/core-templates/steps/install-microbuild.yml
+++ b/eng/common/core-templates/steps/install-microbuild.yml
@@ -4,8 +4,17 @@ parameters:
# Enable install tasks for MicroBuild on Mac and Linux
# Will be ignored if 'enableMicrobuild' is false or 'Agent.Os' is 'Windows_NT'
enableMicrobuildForMacAndLinux: false
+ # Determines whether the ESRP service connection information should be passed to the signing plugin.
+ # This overlaps with _SignType to some degree. We only need the service connection for real signing.
+ # It's important that the service connection not be passed to the MicroBuildSigningPlugin task in this place.
+ # Doing so will cause the service connection to be authorized for the pipeline, which isn't allowed and won't work for non-prod.
+ # Unfortunately, _SignType can't be used to exclude the use of the service connection in non-real sign scenarios. The
+ # variable is not available in template expression. _SignType has a very large proliferation across .NET, so replacing it is tough.
+ microbuildUseESRP: true
# Location of the MicroBuild output folder
+ # NOTE: There's something that relies on this being in the "default" source directory for tasks such as Signing to work properly.
microBuildOutputFolder: '$(Build.SourcesDirectory)'
+
continueOnError: false
steps:
@@ -21,34 +30,62 @@ steps:
workingDirectory: ${{ parameters.microBuildOutputFolder }}
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
+ - script: |
+ REM Check if ESRP is disabled while SignType is real
+ if /I "${{ parameters.microbuildUseESRP }}"=="false" if /I "$(_SignType)"=="real" (
+ echo Error: ESRP must be enabled when SignType is real.
+ exit /b 1
+ )
+ displayName: 'Validate ESRP usage (Windows)'
+ condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'))
+ - script: |
+ # Check if ESRP is disabled while SignType is real
+ if [ "${{ parameters.microbuildUseESRP }}" = "false" ] && [ "$(_SignType)" = "real" ]; then
+ echo "Error: ESRP must be enabled when SignType is real."
+ exit 1
+ fi
+ displayName: 'Validate ESRP usage (Non-Windows)'
+ condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
+
+ # Two different MB install steps. This is due to not being able to use the agent OS during
+ # YAML expansion, and Windows vs. Linux/Mac uses different service connections. However,
+ # we can avoid including the MB install step if not enabled at all. This avoids a bunch of
+ # extra pipeline authorizations, since most pipelines do not sign on non-Windows.
- task: MicroBuildSigningPlugin@4
- displayName: Install MicroBuild plugin
+ displayName: Install MicroBuild plugin (Windows)
inputs:
signType: $(_SignType)
zipSources: false
feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
- ${{ if and(eq(parameters.enableMicrobuildForMacAndLinux, 'true'), ne(variables['Agent.Os'], 'Windows_NT')) }}:
- azureSubscription: 'MicroBuild Signing Task (DevDiv)'
- useEsrpCli: true
- ${{ elseif eq(variables['System.TeamProject'], 'DevDiv') }}:
- ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea
- ${{ else }}:
- ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca
+ ${{ if eq(parameters.microbuildUseESRP, true) }}:
+ ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)'
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea
+ ${{ else }}:
+ ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca
env:
TeamName: $(_TeamName)
MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
continueOnError: ${{ parameters.continueOnError }}
- condition: and(
- succeeded(),
- or(
- and(
- eq(variables['Agent.Os'], 'Windows_NT'),
- in(variables['_SignType'], 'real', 'test')
- ),
- and(
- ${{ eq(parameters.enableMicrobuildForMacAndLinux, true) }},
- ne(variables['Agent.Os'], 'Windows_NT'),
- eq(variables['_SignType'], 'real')
- )
- ))
+ condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'), in(variables['_SignType'], 'real', 'test'))
+
+ - ${{ if eq(parameters.enableMicrobuildForMacAndLinux, true) }}:
+ - task: MicroBuildSigningPlugin@4
+ displayName: Install MicroBuild plugin (non-Windows)
+ inputs:
+ signType: $(_SignType)
+ zipSources: false
+ feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
+ ${{ if eq(parameters.microbuildUseESRP, true) }}:
+ ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)'
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ ConnectedPMEServiceName: beb8cb23-b303-4c95-ab26-9e44bc958d39
+ ${{ else }}:
+ ConnectedPMEServiceName: c24de2a5-cc7a-493d-95e4-8e5ff5cad2bc
+ env:
+ TeamName: $(_TeamName)
+ MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
+ SYSTEM_ACCESSTOKEN: $(System.AccessToken)
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'), eq(variables['_SignType'], 'real'))
diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml
index de24d0087c..10f825e270 100644
--- a/eng/common/core-templates/steps/publish-logs.yml
+++ b/eng/common/core-templates/steps/publish-logs.yml
@@ -12,22 +12,22 @@ steps:
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}}/
+ New-Item -ItemType Directory $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
+ Move-Item -Path $(System.DefaultWorkingDirectory)/artifacts/log/Debug/* $(System.DefaultWorkingDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
continueOnError: true
condition: always()
- task: PowerShell@2
displayName: Redact Logs
inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/post-build/redact-logs.ps1
+ filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/redact-logs.ps1
# For now this needs to have explicit list of all sensitive data. Taken from eng/publishing/v3/publish.yml
- # Sensitive data can as well be added to $(Build.SourcesDirectory)/eng/BinlogSecretsRedactionFile.txt'
+ # Sensitive data can as well be added to $(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt'
# If the file exists - sensitive data for redaction will be sourced from it
# (single entry per line, lines starting with '# ' are considered comments and skipped)
- arguments: -InputPath '$(Build.SourcesDirectory)/PostBuildLogs'
+ arguments: -InputPath '$(System.DefaultWorkingDirectory)/PostBuildLogs'
-BinlogToolVersion ${{parameters.BinlogToolVersion}}
- -TokensFilePath '$(Build.SourcesDirectory)/eng/BinlogSecretsRedactionFile.txt'
+ -TokensFilePath '$(System.DefaultWorkingDirectory)/eng/BinlogSecretsRedactionFile.txt'
'$(publishing-dnceng-devdiv-code-r-build-re)'
'$(MaestroAccessToken)'
'$(dn-bot-all-orgs-artifact-feeds-rw)'
@@ -44,7 +44,7 @@ steps:
- task: CopyFiles@2
displayName: Gather post build logs
inputs:
- SourceFolder: '$(Build.SourcesDirectory)/PostBuildLogs'
+ SourceFolder: '$(System.DefaultWorkingDirectory)/PostBuildLogs'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/PostBuildLogs'
condition: always()
diff --git a/eng/common/core-templates/steps/source-index-stage1-publish.yml b/eng/common/core-templates/steps/source-index-stage1-publish.yml
index c2917c1efc..e9a694afa5 100644
--- a/eng/common/core-templates/steps/source-index-stage1-publish.yml
+++ b/eng/common/core-templates/steps/source-index-stage1-publish.yml
@@ -1,6 +1,6 @@
parameters:
- sourceIndexUploadPackageVersion: 2.0.0-20250425.2
- sourceIndexProcessBinlogPackageVersion: 1.0.1-20250515.1
+ sourceIndexUploadPackageVersion: 2.0.0-20250818.1
+ sourceIndexProcessBinlogPackageVersion: 1.0.1-20250818.1
sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json
binlogPath: artifacts/log/Debug/Build.binlog
@@ -20,7 +20,7 @@ steps:
# Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk.
workingDirectory: $(Agent.TempDirectory)
-- script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i ${{parameters.BinlogPath}} -r $(Build.SourcesDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output
+- script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i ${{parameters.BinlogPath}} -r $(System.DefaultWorkingDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output
displayName: "Source Index: Process Binlog into indexable sln"
- ${{ if and(ne(parameters.runAsPublic, 'true'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
diff --git a/eng/common/generate-locproject.ps1 b/eng/common/generate-locproject.ps1
index 524aaa57f2..fa1cdc2b30 100644
--- a/eng/common/generate-locproject.ps1
+++ b/eng/common/generate-locproject.ps1
@@ -33,15 +33,27 @@ $jsonTemplateFiles | ForEach-Object {
$jsonWinformsTemplateFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\\strings\.json" } # current winforms pattern
+$wxlFilesV3 = @()
+$wxlFilesV5 = @()
$wxlFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\.+\.wxl" -And -Not( $_.Directory.Name -Match "\d{4}" ) } # localized files live in four digit lang ID directories; this excludes them
if (-not $wxlFiles) {
$wxlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\1033\\.+\.wxl" } # pick up en files (1033 = en) specifically so we can copy them to use as the neutral xlf files
if ($wxlEnFiles) {
- $wxlFiles = @()
- $wxlEnFiles | ForEach-Object {
- $destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)"
- $wxlFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru
- }
+ $wxlFiles = @()
+ $wxlEnFiles | ForEach-Object {
+ $destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)"
+ $content = Get-Content $_.FullName -Raw
+
+ # Split files on schema to select different parser settings in the generated project.
+ if ($content -like "*http://wixtoolset.org/schemas/v4/wxl*")
+ {
+ $wxlFilesV5 += Copy-Item $_.FullName -Destination $destinationFile -PassThru
+ }
+ elseif ($content -like "*http://schemas.microsoft.com/wix/2006/localization*")
+ {
+ $wxlFilesV3 += Copy-Item $_.FullName -Destination $destinationFile -PassThru
+ }
+ }
}
}
@@ -114,7 +126,32 @@ $locJson = @{
CloneLanguageSet = "WiX_CloneLanguages"
LssFiles = @( "wxl_loc.lss" )
LocItems = @(
- $wxlFiles | ForEach-Object {
+ $wxlFilesV3 | ForEach-Object {
+ $outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\"
+ $continue = $true
+ foreach ($exclusion in $exclusions.Exclusions) {
+ if ($_.FullName.Contains($exclusion)) {
+ $continue = $false
+ }
+ }
+ $sourceFile = ($_.FullName | Resolve-Path -Relative)
+ if ($continue)
+ {
+ return @{
+ SourceFile = $sourceFile
+ CopyOption = "LangIDOnPath"
+ OutputPath = $outputPath
+ }
+ }
+ }
+ )
+ },
+ @{
+ LanguageSet = $LanguageSet
+ CloneLanguageSet = "WiX_CloneLanguages"
+ LssFiles = @( "P210WxlSchemaV4.lss" )
+ LocItems = @(
+ $wxlFilesV5 | ForEach-Object {
$outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\"
$continue = $true
foreach ($exclusion in $exclusions.Exclusions) {
diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1
index a9d2a2d269..b62e132d32 100644
--- a/eng/common/sdk-task.ps1
+++ b/eng/common/sdk-task.ps1
@@ -7,13 +7,14 @@ Param(
[switch] $restore,
[switch] $prepareMachine,
[switch][Alias('nobl')]$excludeCIBinaryLog,
+ [switch]$noWarnAsError,
[switch] $help,
[Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
)
$ci = $true
$binaryLog = if ($excludeCIBinaryLog) { $false } else { $true }
-$warnAsError = $true
+$warnAsError = if ($noWarnAsError) { $false } else { $true }
. $PSScriptRoot\tools.ps1
diff --git a/eng/common/sdk-task.sh b/eng/common/sdk-task.sh
index 2f83adc026..3270f83fa9 100755
--- a/eng/common/sdk-task.sh
+++ b/eng/common/sdk-task.sh
@@ -10,6 +10,7 @@ show_usage() {
echo "Advanced settings:"
echo " --excludeCIBinarylog Don't output binary log (short: -nobl)"
+ echo " --noWarnAsError Do not warn as error"
echo ""
echo "Command line arguments not listed above are passed thru to msbuild."
}
@@ -52,6 +53,7 @@ exclude_ci_binary_log=false
restore=false
help=false
properties=''
+warnAsError=true
while (($# > 0)); do
lowerI="$(echo $1 | tr "[:upper:]" "[:lower:]")"
@@ -73,6 +75,10 @@ while (($# > 0)); do
exclude_ci_binary_log=true
shift 1
;;
+ --noWarnAsError)
+ warnAsError=false
+ shift 1
+ ;;
--help)
help=true
shift 1
@@ -85,7 +91,6 @@ while (($# > 0)); do
done
ci=true
-warnAsError=true
if $help; then
show_usage
diff --git a/eng/common/template-guidance.md b/eng/common/template-guidance.md
index 98bbc1ded0..4bf4cf41bd 100644
--- a/eng/common/template-guidance.md
+++ b/eng/common/template-guidance.md
@@ -50,7 +50,7 @@ extends:
- task: CopyFiles@2
displayName: Gather build output
inputs:
- SourceFolder: '$(Build.SourcesDirectory)/artifacts/marvel'
+ SourceFolder: '$(System.DefaultWorkingDirectory)/artifacts/marvel'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/marvel'
```
diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml
index a8a9432874..92a0664f56 100644
--- a/eng/common/templates-official/job/job.yml
+++ b/eng/common/templates-official/job/job.yml
@@ -3,7 +3,7 @@ parameters:
enableSbom: true
runAsPublic: false
PackageVersion: 9.0.0
- BuildDropPath: '$(Build.SourcesDirectory)/artifacts'
+ BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts'
jobs:
- template: /eng/common/core-templates/job/job.yml
diff --git a/eng/common/templates-official/variables/sdl-variables.yml b/eng/common/templates-official/variables/sdl-variables.yml
index dbdd66d4a4..f1311bbb1b 100644
--- a/eng/common/templates-official/variables/sdl-variables.yml
+++ b/eng/common/templates-official/variables/sdl-variables.yml
@@ -4,4 +4,4 @@ variables:
- name: DefaultGuardianVersion
value: 0.109.0
- name: GuardianPackagesConfigFile
- value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config
\ No newline at end of file
+ value: $(System.DefaultWorkingDirectory)\eng\common\sdl\packages.config
\ No newline at end of file
diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml
index 7cbf668c22..238fa0818f 100644
--- a/eng/common/templates/job/job.yml
+++ b/eng/common/templates/job/job.yml
@@ -6,7 +6,7 @@ parameters:
enableSbom: true
runAsPublic: false
PackageVersion: 9.0.0
- BuildDropPath: '$(Build.SourcesDirectory)/artifacts'
+ BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts'
jobs:
- template: /eng/common/core-templates/job/job.yml
@@ -77,7 +77,7 @@ jobs:
parameters:
is1ESPipeline: false
args:
- targetPath: '$(Build.SourcesDirectory)\eng\common\BuildConfiguration'
+ targetPath: '$(System.DefaultWorkingDirectory)\eng\common\BuildConfiguration'
artifactName: 'BuildConfiguration'
displayName: 'Publish build retry configuration'
continueOnError: true
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index 40f0aa8612..06b44de787 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -257,7 +257,20 @@ function Retry($downloadBlock, $maxRetries = 5) {
function GetDotNetInstallScript([string] $dotnetRoot) {
$installScript = Join-Path $dotnetRoot 'dotnet-install.ps1'
+ $shouldDownload = $false
+
if (!(Test-Path $installScript)) {
+ $shouldDownload = $true
+ } else {
+ # Check if the script is older than 30 days
+ $fileAge = (Get-Date) - (Get-Item $installScript).LastWriteTime
+ if ($fileAge.Days -gt 30) {
+ Write-Host "Existing install script is too old, re-downloading..."
+ $shouldDownload = $true
+ }
+ }
+
+ if ($shouldDownload) {
Create-Directory $dotnetRoot
$ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit
$uri = "https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1"
@@ -414,7 +427,7 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements =
# Locate Visual Studio installation or download x-copy msbuild.
$vsInfo = LocateVisualStudio $vsRequirements
- if ($vsInfo -ne $null) {
+ if ($vsInfo -ne $null -and $env:ForceUseXCopyMSBuild -eq $null) {
# Ensure vsInstallDir has a trailing slash
$vsInstallDir = Join-Path $vsInfo.installationPath "\"
$vsMajorVersion = $vsInfo.installationVersion.Split('.')[0]
@@ -531,7 +544,8 @@ function LocateVisualStudio([object]$vsRequirements = $null){
if (Get-Member -InputObject $GlobalJson.tools -Name 'vswhere') {
$vswhereVersion = $GlobalJson.tools.vswhere
} else {
- $vswhereVersion = '2.5.2'
+ # keep this in sync with the VSWhereVersion in DefaultVersions.props
+ $vswhereVersion = '3.1.7'
}
$vsWhereDir = Join-Path $ToolsDir "vswhere\$vswhereVersion"
@@ -539,7 +553,8 @@ function LocateVisualStudio([object]$vsRequirements = $null){
if (!(Test-Path $vsWhereExe)) {
Create-Directory $vsWhereDir
- Write-Host 'Downloading vswhere'
+ Write-Host "Downloading vswhere $vswhereVersion"
+ $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit
Retry({
Invoke-WebRequest "https://netcorenativeassets.blob.core.windows.net/resource-packages/external/windows/vswhere/$vswhereVersion/vswhere.exe" -OutFile $vswhereExe
})
diff --git a/eng/common/tools.sh b/eng/common/tools.sh
index 3def02a638..c1841c9dfd 100755
--- a/eng/common/tools.sh
+++ b/eng/common/tools.sh
@@ -300,8 +300,29 @@ function GetDotNetInstallScript {
local root=$1
local install_script="$root/dotnet-install.sh"
local install_script_url="https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh"
+ local timestamp_file="$root/.dotnet-install.timestamp"
+ local should_download=false
if [[ ! -a "$install_script" ]]; then
+ should_download=true
+ elif [[ -f "$timestamp_file" ]]; then
+ # Check if the script is older than 30 days using timestamp file
+ local download_time=$(cat "$timestamp_file" 2>/dev/null || echo "0")
+ local current_time=$(date +%s)
+ local age_seconds=$((current_time - download_time))
+
+ # 30 days = 30 * 24 * 60 * 60 = 2592000 seconds
+ if [[ $age_seconds -gt 2592000 ]]; then
+ echo "Existing install script is too old, re-downloading..."
+ should_download=true
+ fi
+ else
+ # No timestamp file exists, assume script is old and re-download
+ echo "No timestamp found for existing install script, re-downloading..."
+ should_download=true
+ fi
+
+ if [[ "$should_download" == true ]]; then
mkdir -p "$root"
echo "Downloading '$install_script_url'"
@@ -328,6 +349,9 @@ function GetDotNetInstallScript {
ExitWithExitCode $exit_code
}
fi
+
+ # Create timestamp file to track download time in seconds from epoch
+ date +%s > "$timestamp_file"
fi
# return value
_GetDotNetInstallScript="$install_script"
diff --git a/eng/pipelines/global-variables.yml b/eng/pipelines/global-variables.yml
index 83c51fa583..92a3439d9f 100644
--- a/eng/pipelines/global-variables.yml
+++ b/eng/pipelines/global-variables.yml
@@ -1,7 +1,6 @@
parameters:
runtimeFeed: default
runtimeFeedToken: default
- isCodeQLRun: false
variables:
- name: _TeamName
@@ -17,26 +16,15 @@ variables:
- name: BuildPool
value: $(DncEngInternalBuildPool)
- name: WindowsImage
- value: 1es-windows-2022
+ value: windows.vs2022.amd64
- name: LinuxImage
- value: 1es-ubuntu-2204
+ value: Build.Ubuntu.2204.Amd64
- name: macOSImage
value: macOS-latest
- name: sourceBuildTemplate
value: /eng/common/templates-official/job/source-build.yml@self
- name: jobTemplate
value: /eng/common/templates-official/job/job.yml@self
- - ${{ if eq(parameters.isCodeQLRun, 'true') }}:
- - name: Codeql.Enabled
- value: True
- - name: Codeql.Cadence
- value: 0
- - name: Codeql.TSAEnabled
- value: True
- - name: Codeql.BuildIdentifier
- value: $(System.JobDisplayName)
- - name: Codeql.Language
- value: csharp,cpp
- ${{ if notin(variables['Build.Reason'], 'PullRequest') }}:
- name: _SignType
value: real
@@ -69,4 +57,3 @@ variables:
- ${{ if eq(parameters.runtimeFeedToken, 'dotnetclimsrc-sas-token-base64') }}:
- name: RuntimeFeedBase64SasToken
value: $(dotnetclimsrc-read-sas-token-base64)
-
diff --git a/eng/pipelines/prepare-release.yml b/eng/pipelines/prepare-release.yml
index 2bfbd57b3b..e5f2ce1194 100644
--- a/eng/pipelines/prepare-release.yml
+++ b/eng/pipelines/prepare-release.yml
@@ -1,6 +1,21 @@
+parameters:
+- name: isOfficialBuild
+ type: boolean
+ default: false
+- name: repoAllowList
+ type: string
+ default: ''
+- name: productAllowList
+ type: string
+ default: ''
+- name: dependsOn
+ type: object
+ default: [ publish_using_darc ]
+
stages:
- stage: PrepareReleaseStage
displayName: Release Preparation
+ dependsOn: ${{ parameters.dependsOn }}
jobs:
- job: PrepareReleaseJob
displayName: Prepare Release
@@ -8,7 +23,7 @@ stages:
name: $(BuildPool)
demands: ImageOverride -equals $(WindowsImage)
os: windows
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/internal/release/'))) }}:
+ ${{ if and(eq(parameters.isOfficialBuild, true), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/internal/release/'))) }}:
templateContext:
outputs:
- output: pipelineArtifact
@@ -17,25 +32,24 @@ stages:
displayName: 'Publish Release Drop'
condition: succeeded()
variables:
- - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/internal/release/'))) }}:
+ - ${{ if and(eq(parameters.isOfficialBuild, true), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/internal/release/'))) }}:
+
- group: DotNet-Diagnostics-Storage
- group: Release-Pipeline
steps:
- - ${{ if or(in(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.SourceBranch'], 'refs/heads/main')) }}:
+ - ${{ if or(eq(parameters.isOfficialBuild, false), eq(variables['Build.SourceBranch'], 'refs/heads/main')) }}:
- script: '$(Build.Repository.LocalPath)\dotnet.cmd build $(Build.Repository.LocalPath)\eng\release\DiagnosticsReleaseTool\DiagnosticsReleaseTool.csproj -c Release /bl'
workingDirectory: '$(System.ArtifactsDirectory)'
displayName: 'Build Manifest generation and asset publishing tool'
- - ${{ elseif and(ne(variables['System.TeamProject'], 'public'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/internal/release/'))) }}:
+ - ${{ elseif and(eq(parameters.isOfficialBuild, true), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/internal/release/'))) }}:
- task: UseDotNet@2
displayName: 'Use .NET Core runtime 8.x'
inputs:
packageType: runtime
version: 8.x
installationPath: '$(Build.Repository.LocalPath)\.dotnet'
- - template: /eng/common/templates/post-build/setup-maestro-vars.yml
-
+ - template: /eng/common/templates/post-build/setup-maestro-vars.yml@self
- task: NuGetAuthenticate@1
-
- task: AzureCLI@2
displayName: 'DARC Gather build'
inputs:
@@ -44,7 +58,7 @@ stages:
scriptPath: '$(Build.Repository.LocalPath)/eng/release/Scripts/AcquireBuild.ps1'
arguments: >-
-BarBuildId "$(BARBuildId)"
- -ReleaseVersion "$(Build.BuildNumber)"
+ -ReleaseVersion "$(Build.Repository.Name)_$(Build.BuildNumber)"
-DownloadTargetPath "$(System.ArtifactsDirectory)\ReleaseTarget"
-AzdoToken "$(dn-bot-all-drop-rw-code-rw-release-all)"
workingDirectory: '$(Build.Repository.LocalPath)'
@@ -64,7 +78,9 @@ stages:
--input-drop-path "$(System.ArtifactsDirectory)\ReleaseTarget" `
--tool-manifest "$(Build.Repository.LocalPath)\eng\release\tool-list.json" `
--staging-directory "$(System.ArtifactsDirectory)\ReleaseStaging" `
- --release-name "$(Build.BuildNumber)" `
+ --release-name "$(Build.Repository.Name)_$(Build.BuildNumber)" `
+ --product-allow-list ${{ parameters.productAllowList }} `
+ --repo-allow-list ${{ parameters.repoAllowList }} `
--account-name "$(dotnet-diagnostics-storage-accountname)" `
--client-id "$env:servicePrincipalId" `
--container-name "$(dotnet-diagnostics-container-name)" `
diff --git a/eng/release/DiagnosticsReleaseTool/Config.cs b/eng/release/DiagnosticsReleaseTool/Config.cs
index bb225340e4..22e791e190 100644
--- a/eng/release/DiagnosticsReleaseTool/Config.cs
+++ b/eng/release/DiagnosticsReleaseTool/Config.cs
@@ -15,6 +15,8 @@ internal sealed class Config
public string AccountName { get; }
public string ClientId { get; }
public string ContainerName { get; }
+ public string[] ReleaseProductAllowList { get; }
+ public string[] ReleaseRepoAllowList { get; }
public Config(
FileInfo toolManifest,
@@ -22,6 +24,8 @@ public Config(
DirectoryInfo inputDropPath,
DirectoryInfo stagingDirectory,
string releaseName,
+ string[] releaseProductAllowList,
+ string[] releaseRepoAllowList,
string accountName,
string clientId,
string containerName)
@@ -34,6 +38,8 @@ public Config(
AccountName = accountName;
ClientId = clientId;
ContainerName = containerName;
+ ReleaseProductAllowList = releaseProductAllowList;
+ ReleaseRepoAllowList = releaseRepoAllowList;
}
}
}
diff --git a/eng/release/DiagnosticsReleaseTool/Core/Release.cs b/eng/release/DiagnosticsReleaseTool/Core/Release.cs
index ace860fab8..94663fd118 100644
--- a/eng/release/DiagnosticsReleaseTool/Core/Release.cs
+++ b/eng/release/DiagnosticsReleaseTool/Core/Release.cs
@@ -188,7 +188,7 @@ private async Task LayoutFilesAsync(CancellationToken ct)
using IDisposable scope = _logger.BeginScope("Laying out files");
- _logger.LogInformation("Laying out files from {_productBuildPath}", _productBuildPath.Name);
+ _logger.LogInformation("Laying out files from {_productBuildPath}", _productBuildPath.FullName);
// TODO: Make this parallel using Task.Run + semaphore to batch process files. Need to make collections concurrent or have single
// queue to aggregate results.
diff --git a/eng/release/DiagnosticsReleaseTool/DarcHelpers.cs b/eng/release/DiagnosticsReleaseTool/DarcHelpers.cs
index eb1068a884..7fd8d54e23 100644
--- a/eng/release/DiagnosticsReleaseTool/DarcHelpers.cs
+++ b/eng/release/DiagnosticsReleaseTool/DarcHelpers.cs
@@ -58,7 +58,7 @@ internal ReleaseMetadata GetDropMetadataForSingleRepoVariants(IEnumerable ReleaseProductAllowListOption =
+ new("--product-allow-list")
+ {
+ AllowMultipleArgumentsPerToken = true,
+ Description = "List of allowed product names for this release.",
+ Required = true
+ };
+
+ private static Option ReleaseRepoAllowListOption =
+ new("--repo-allow-list")
+ {
+ AllowMultipleArgumentsPerToken = true,
+ Description = "List of allowed repository urls for this release.",
+ Required = true
+ };
private static readonly Option StagingPathOption = InitStagingPath();
diff --git a/eng/release/DiagnosticsReleaseTool/DiagnosticsReleaseRunner.cs b/eng/release/DiagnosticsReleaseTool/DiagnosticsReleaseRunner.cs
index e83032b222..6f26284b71 100644
--- a/eng/release/DiagnosticsReleaseTool/DiagnosticsReleaseRunner.cs
+++ b/eng/release/DiagnosticsReleaseTool/DiagnosticsReleaseRunner.cs
@@ -47,8 +47,8 @@ internal static async Task PrepareRelease(Config releaseConfig, bool verbos
}
// TODO: Probably should use BAR ID instead as an identifier for the metadata to gather.
- ReleaseMetadata releaseMetadata = darcLayoutHelper.GetDropMetadataForSingleRepoVariants(DiagnosticsRepoHelpers.RepositoryUrls);
- DirectoryInfo basePublishDirectory = darcLayoutHelper.GetShippingDirectoryForSingleProjectVariants(DiagnosticsRepoHelpers.ProductNames);
+ ReleaseMetadata releaseMetadata = darcLayoutHelper.GetDropMetadataForSingleRepoVariants(releaseConfig.ReleaseRepoAllowList);
+ DirectoryInfo basePublishDirectory = darcLayoutHelper.GetShippingDirectoryForSingleProjectVariants(releaseConfig.ReleaseProductAllowList);
string publishManifestPath = Path.Combine(releaseConfig.StagingDirectory.FullName, ManifestName);
IPublisher releasePublisher = new AzureBlobBublisher(releaseConfig.AccountName, releaseConfig.ClientId, releaseConfig.ContainerName, releaseConfig.ReleaseName, logger);
diff --git a/eng/release/DiagnosticsReleaseTool/DiagnosticsReleaseTool.csproj b/eng/release/DiagnosticsReleaseTool/DiagnosticsReleaseTool.csproj
index d772108f05..4b4ebc75fd 100644
--- a/eng/release/DiagnosticsReleaseTool/DiagnosticsReleaseTool.csproj
+++ b/eng/release/DiagnosticsReleaseTool/DiagnosticsReleaseTool.csproj
@@ -1,6 +1,4 @@
-
-
Exe
$(NetCoreAppMinTargetFramework)
@@ -14,12 +12,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/eng/release/DiagnosticsReleaseTool/DiagnosticsReleaseTool.sln b/eng/release/DiagnosticsReleaseTool/DiagnosticsReleaseTool.sln
deleted file mode 100644
index 7b9295680f..0000000000
--- a/eng/release/DiagnosticsReleaseTool/DiagnosticsReleaseTool.sln
+++ /dev/null
@@ -1,24 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.5.2.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DiagnosticsReleaseTool", "DiagnosticsReleaseTool.csproj", "{67E77FB6-7C08-5D47-087C-10848A96123B}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {67E77FB6-7C08-5D47-087C-10848A96123B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {67E77FB6-7C08-5D47-087C-10848A96123B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {67E77FB6-7C08-5D47-087C-10848A96123B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {67E77FB6-7C08-5D47-087C-10848A96123B}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {A8543907-B0C4-4BBA-9F92-CE3D3FDA2F8D}
- EndGlobalSection
-EndGlobal
diff --git a/eng/release/DiagnosticsReleaseTool/DiagnosticsReleaseTool.slnx b/eng/release/DiagnosticsReleaseTool/DiagnosticsReleaseTool.slnx
new file mode 100644
index 0000000000..adbd801aa6
--- /dev/null
+++ b/eng/release/DiagnosticsReleaseTool/DiagnosticsReleaseTool.slnx
@@ -0,0 +1,3 @@
+
+
+
diff --git a/eng/release/DiagnosticsReleaseTool/DiagnosticsRepoHelpers.cs b/eng/release/DiagnosticsReleaseTool/DiagnosticsRepoHelpers.cs
index 81904f7aed..9541b4e73d 100644
--- a/eng/release/DiagnosticsReleaseTool/DiagnosticsRepoHelpers.cs
+++ b/eng/release/DiagnosticsReleaseTool/DiagnosticsRepoHelpers.cs
@@ -10,9 +10,8 @@ namespace DiagnosticsReleaseTool.Util
{
public static partial class DiagnosticsRepoHelpers
{
- public static readonly string[] ProductNames = ["diagnostics", "dotnet-diagnostics"];
- public static readonly string[] RepositoryUrls = ["https://github.com/dotnet/diagnostics", "https://dev.azure.com/dnceng/internal/_git/dotnet-diagnostics"];
- public static string BundleToolsPathInDrop => System.IO.Path.Combine("diagnostics", "bundledtools");
+ public static readonly string PublicBundleToolsPathInDrop = System.IO.Path.Combine("diagnostics", "bundledtools");
+ public static readonly string InternalBundleToolsPathInDrop = System.IO.Path.Combine("diagnostics-internal", "bundledtools");
public const string BundledToolsPrefix = "diagnostic-tools-";
public const string BundledToolsCategory = "ToolBundleAssets";
public const string PdbCategory = "PdbAssets";
@@ -68,7 +67,7 @@ public static string GetToolPublishRelativePath(FileInfo zipFile, FileInfo fileI
public static bool IsBundledToolArchive(FileInfo file)
{
return file.Exists && file.Extension == ".zip"
- && file.DirectoryName.Contains(BundleToolsPathInDrop)
+ && (file.DirectoryName.Contains(InternalBundleToolsPathInDrop) || file.DirectoryName.Contains(PublicBundleToolsPathInDrop))
&& file.Name.StartsWith(BundledToolsPrefix);
}
diff --git a/es-metadata.yml b/es-metadata.yml
new file mode 100644
index 0000000000..935623bbea
--- /dev/null
+++ b/es-metadata.yml
@@ -0,0 +1,8 @@
+schemaVersion: 0.0.1
+isProduction: true
+accountableOwners:
+ service: 1dc8dedc-8f5f-4b94-b182-ec3bdfb207b0
+routing:
+ defaultAreaPath:
+ org: devdiv
+ path: DevDiv\NET Runtime\Diagnostics\SDL
diff --git a/global.json b/global.json
index 9c3adfeb03..8662fee20c 100644
--- a/global.json
+++ b/global.json
@@ -1,11 +1,11 @@
{
"sdk": {
- "version": "10.0.100-preview.6.25315.102",
+ "version": "10.0.100-rc.1.25451.107",
"allowPrerelease": true,
"rollForward": "major"
},
"tools": {
- "dotnet": "10.0.100-preview.6.25315.102",
+ "dotnet": "10.0.100-rc.1.25451.107",
"runtimes": {
"dotnet": [
"$(MicrosoftNETCoreApp80Version)"
@@ -17,6 +17,6 @@
},
"msbuild-sdks": {
"Microsoft.Build.NoTargets": "3.5.0",
- "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25351.106"
+ "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25476.104"
}
}
diff --git a/src/Microsoft.Diagnostics.DebugServices.Implementation/CrashInfoService.cs b/src/Microsoft.Diagnostics.DebugServices.Implementation/CrashInfoService.cs
index cee810569c..acc0c35369 100644
--- a/src/Microsoft.Diagnostics.DebugServices.Implementation/CrashInfoService.cs
+++ b/src/Microsoft.Diagnostics.DebugServices.Implementation/CrashInfoService.cs
@@ -5,6 +5,7 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
+using System.Runtime.InteropServices;
using System.Linq;
using System.Text;
using System.Text.Json;
@@ -12,6 +13,194 @@
namespace Microsoft.Diagnostics.DebugServices.Implementation
{
+ public sealed class CrashInfoModuleService : ICrashInfoModuleService
+ {
+ private readonly IServiceProvider Services;
+
+ public CrashInfoModuleService(IServiceProvider services)
+ {
+ Services = services ?? throw new ArgumentNullException(nameof(services));
+ }
+ public ICrashInfoService Create(ModuleEnumerationScheme moduleEnumerationScheme)
+ {
+ return CreateCrashInfoServiceFromModule(Services, moduleEnumerationScheme);
+ }
+
+ private static bool CreateCrashInfoServiceForModule(IModule module, out ICrashInfoService crashInfoService)
+ {
+ crashInfoService = null;
+ if (module == null || module.IsManaged)
+ {
+ return false;
+ }
+ if ((module as IExportSymbols)?.TryGetSymbolAddress(CrashInfoService.DOTNET_RUNTIME_DEBUG_HEADER_NAME, out ulong headerAddr) != true)
+ {
+ Trace.TraceInformation($"CrashInfoService: {CrashInfoService.DOTNET_RUNTIME_DEBUG_HEADER_NAME} export not found in module {module.FileName}");
+ return false;
+ }
+ IMemoryService memoryService = module.Services.GetService();
+ if (!memoryService.Read(ref headerAddr, out uint headerValue) ||
+ headerValue != CrashInfoService.DOTNET_RUNTIME_DEBUG_HEADER_COOKIE ||
+ !memoryService.Read(ref headerAddr, out ushort majorVersion) || majorVersion < 3 || // .NET 8 and later
+ !memoryService.Read(ref headerAddr, out ushort minorVersion))
+ {
+ Trace.TraceInformation($"CrashInfoService: .NET 8+ {CrashInfoService.DOTNET_RUNTIME_DEBUG_HEADER_NAME} not found in module {module.FileName}");
+ return false;
+ }
+
+ Trace.TraceInformation($"CrashInfoService: Found {CrashInfoService.DOTNET_RUNTIME_DEBUG_HEADER_NAME} in module {module.FileName} with version {majorVersion}.{minorVersion}");
+
+ if (!memoryService.Read(ref headerAddr, out uint flags) ||
+ memoryService.PointerSize != (flags == 0x1 ? 8 : 4) ||
+ !memoryService.Read(ref headerAddr, out uint _)) // padding
+ {
+ Trace.TraceError($"CrashInfoService: Failed to read DotNetRuntimeDebugHeader flags or padding in module {module.FileName}");
+ return false;
+ }
+
+ Trace.TraceInformation($"CrashInfoService: Target is {memoryService.PointerSize * 8}-bit");
+
+ headerAddr += (uint)memoryService.PointerSize; // skip DebugEntries array
+
+ // read GlobalEntries array
+ if (!memoryService.ReadPointer(ref headerAddr, out ulong globalEntryArrayAddress) || globalEntryArrayAddress == 0)
+ {
+ Trace.TraceError($"CrashInfoService: Unable to read GlobalEntry array");
+ return false;
+ }
+ uint maxGlobalEntries = (majorVersion >= 4 /*.NET 9 or later*/) ? CrashInfoService.MAX_GLOBAL_ENTRIES_ARRAY_SIZE_NET9_PLUS : CrashInfoService.MAX_GLOBAL_ENTRIES_ARRAY_SIZE_NET8;
+ for (int i = 0; i < maxGlobalEntries; i++)
+ {
+ if (!memoryService.ReadPointer(ref globalEntryArrayAddress, out ulong globalNameAddress) || globalNameAddress == 0 ||
+ !memoryService.ReadPointer(ref globalEntryArrayAddress, out ulong globalValueAddress) || globalValueAddress == 0 ||
+ !memoryService.ReadAnsiString(CrashInfoService.MAX_GLOBAL_ENTRY_NAME_CHARS, globalNameAddress, out string globalName))
+ {
+ break; // no more global entries
+ }
+
+ if (!string.Equals(globalName, "g_CrashInfoBuffer", StringComparison.Ordinal))
+ {
+ continue; // not the crash info buffer
+ }
+
+ ulong triageBufferAddress = globalValueAddress;
+ Span buffer = new byte[CrashInfoService.MAX_CRASHINFOBUFFER_SIZE];
+ if (memoryService.ReadMemory(triageBufferAddress, buffer, out int bytesRead) && bytesRead > 0 && bytesRead <= CrashInfoService.MAX_CRASHINFOBUFFER_SIZE)
+ {
+ // truncate the buffer to the null terminated string in the buffer
+ int nullTerminatorIndex = buffer.IndexOf((byte)0);
+ if (nullTerminatorIndex >= 0)
+ {
+ buffer = buffer.Slice(0, nullTerminatorIndex);
+ Trace.TraceInformation($"CrashInfoService: Found g_CrashInfoBuffer in module {module.FileName} with size {buffer.Length} bytes");
+ if (buffer.Length > 0)
+ {
+ crashInfoService = CrashInfoService.Create(0, buffer, module.Services.GetService());
+ return true;
+ }
+ else
+ {
+ Trace.TraceError($"CrashInfoService: g_CrashInfoBuffer is empty in module {module.FileName}");
+ }
+ }
+ else
+ {
+ Trace.TraceError($"CrashInfoService: g_CrashInfoBuffer is not null terminated in module {module.FileName}");
+ }
+ }
+ else
+ {
+ Trace.TraceError($"CrashInfoService: ReadMemory({triageBufferAddress}) failed in module {module.FileName}");
+ }
+ break;
+ }
+ return false;
+ }
+
+ private static unsafe ICrashInfoService CreateCrashInfoServiceFromModule(IServiceProvider services, ModuleEnumerationScheme moduleEnumerationScheme)
+ {
+ if (moduleEnumerationScheme == ModuleEnumerationScheme.None)
+ {
+ return null;
+ }
+
+ if (moduleEnumerationScheme == ModuleEnumerationScheme.EntryPointModule ||
+ moduleEnumerationScheme == ModuleEnumerationScheme.EntryPointAndEntryPointDllModule)
+ {
+ // if the above did not locate the crash info service, then look for the DotNetRuntimeDebugHeader
+ IModule entryPointModule = services.GetService().EntryPointModule;
+ if (entryPointModule == null)
+ {
+ Trace.TraceError("CrashInfoService: No entry point module found");
+ return null;
+ }
+ if (CreateCrashInfoServiceForModule(entryPointModule, out ICrashInfoService crashInfoService))
+ {
+ return crashInfoService;
+ }
+ if (moduleEnumerationScheme == ModuleEnumerationScheme.EntryPointAndEntryPointDllModule)
+ {
+ // if the entry point module did not have the crash info service, then look for a library with the same name as the entry point
+ string fileName = entryPointModule.FileName;
+ OSPlatform osPlatform = entryPointModule.Target.OperatingSystem;
+ if (fileName == null)
+ {
+ Trace.TraceError("CrashInfoService: Entry point module has no file name");
+ return null;
+ }
+ if (osPlatform == OSPlatform.Windows)
+ {
+ if (fileName.EndsWith(".exe", StringComparison.OrdinalIgnoreCase))
+ {
+ fileName = fileName.Substring(0, fileName.Length - 4) + ".dll"; // look for a dll with the same name
+ }
+ else
+ {
+ Trace.TraceError($"CrashInfoService: Unexpected entry point module file name {fileName}");
+ }
+ }
+ else if (osPlatform == OSPlatform.Linux)
+ {
+ fileName += ".so"; // look for a .so with the same name
+ }
+ else if (osPlatform == OSPlatform.OSX)
+ {
+ fileName += ".dylib"; // look for a .dylib with the same name
+ }
+ else
+ {
+ Trace.TraceError($"CrashInfoService: Unsupported operating system {osPlatform}");
+ return null;
+ }
+ foreach (IModule speculativeAppModule in services.GetService().GetModuleFromModuleName(fileName))
+ {
+ if (CreateCrashInfoServiceForModule(speculativeAppModule, out crashInfoService))
+ {
+ return crashInfoService;
+ }
+ }
+ }
+ }
+ else if (moduleEnumerationScheme == ModuleEnumerationScheme.All)
+ {
+ // enumerate all modules and look for the crash info service
+ foreach (IModule module in services.GetService().EnumerateModules())
+ {
+ if (CreateCrashInfoServiceForModule(module, out ICrashInfoService crashInfoService))
+ {
+ return crashInfoService;
+ }
+ }
+ }
+ else
+ {
+ Trace.TraceError($"CrashInfoService: Unknown module enumeration scheme {moduleEnumerationScheme}");
+ }
+
+ return null;
+ }
+ }
+
public class CrashInfoService : ICrashInfoService
{
///
@@ -24,6 +213,13 @@ public class CrashInfoService : ICrashInfoService
///
public const uint FAST_FAIL_EXCEPTION_DOTNET_AOT = 0x48;
+ public const uint MAX_CRASHINFOBUFFER_SIZE = 8192;
+ public const uint MAX_GLOBAL_ENTRIES_ARRAY_SIZE_NET8 = 6;
+ public const uint MAX_GLOBAL_ENTRIES_ARRAY_SIZE_NET9_PLUS = 8;
+ public const uint MAX_GLOBAL_ENTRY_NAME_CHARS = 32;
+ public const uint DOTNET_RUNTIME_DEBUG_HEADER_COOKIE = 0x48444e44; // 'DNDH'
+ public const string DOTNET_RUNTIME_DEBUG_HEADER_NAME = "DotNetRuntimeDebugHeader";
+
private sealed class CrashInfoJson
{
[JsonPropertyName("version")]
diff --git a/src/Microsoft.Diagnostics.DebugServices.Implementation/ModuleService.cs b/src/Microsoft.Diagnostics.DebugServices.Implementation/ModuleService.cs
index 75f9a087c3..cd2c8e2acd 100644
--- a/src/Microsoft.Diagnostics.DebugServices.Implementation/ModuleService.cs
+++ b/src/Microsoft.Diagnostics.DebugServices.Implementation/ModuleService.cs
@@ -194,6 +194,20 @@ public IModule CreateModule(int moduleIndex, ulong imageBase, ulong imageSize, s
return new ModuleFromAddress(this, moduleIndex, imageBase, imageSize, imageName);
}
+ ///
+ /// Gets the entrypoint module for the target. This is the first module in the sorted list of modules.
+ ///
+ public virtual IModule EntryPointModule
+ {
+ get
+ {
+ // The entry point module is the first module in the sorted list of modules.
+ // This is not necessarily the same as the entry point module in the target.
+ IModule[] modules = GetSortedModules();
+ return modules.Length > 0 ? modules[0] : null;
+ }
+ }
+
#endregion
///
diff --git a/src/Microsoft.Diagnostics.DebugServices.Implementation/SpecialDiagInfo.cs b/src/Microsoft.Diagnostics.DebugServices.Implementation/SpecialDiagInfo.cs
index 65b3621825..7784a51736 100644
--- a/src/Microsoft.Diagnostics.DebugServices.Implementation/SpecialDiagInfo.cs
+++ b/src/Microsoft.Diagnostics.DebugServices.Implementation/SpecialDiagInfo.cs
@@ -84,7 +84,7 @@ private ulong SpecialDiagInfoAddress
}
}
- public static ICrashInfoService CreateCrashInfoService(IServiceProvider services)
+ public static ICrashInfoService CreateCrashInfoServiceFromException(IServiceProvider services)
{
EXCEPTION_RECORD64 exceptionRecord;
diff --git a/src/Microsoft.Diagnostics.DebugServices.Implementation/SymbolService.cs b/src/Microsoft.Diagnostics.DebugServices.Implementation/SymbolService.cs
index 404e81e01f..a6024147a6 100644
--- a/src/Microsoft.Diagnostics.DebugServices.Implementation/SymbolService.cs
+++ b/src/Microsoft.Diagnostics.DebugServices.Implementation/SymbolService.cs
@@ -126,7 +126,7 @@ public bool ParseSymbolPath(string symbolPath)
{
string[] paths = symbolPath.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
- foreach (string path in paths.Reverse())
+ foreach (string path in paths.AsEnumerable().Reverse())
{
string[] parts = path.Split(new char[] { '*' }, StringSplitOptions.None);
if (parts.Length > 0)
diff --git a/src/Microsoft.Diagnostics.DebugServices.Implementation/TargetFromDataReader.cs b/src/Microsoft.Diagnostics.DebugServices.Implementation/TargetFromDataReader.cs
index 8f92d215a5..fa4c6ce835 100644
--- a/src/Microsoft.Diagnostics.DebugServices.Implementation/TargetFromDataReader.cs
+++ b/src/Microsoft.Diagnostics.DebugServices.Implementation/TargetFromDataReader.cs
@@ -74,9 +74,13 @@ public TargetFromDataReader(DataTarget dataTarget, OSPlatform targetOS, IHost ho
});
// Add optional crash info service (currently only for Native AOT on Linux/MacOS).
- _serviceContainerFactory.AddServiceFactory((services) => SpecialDiagInfo.CreateCrashInfoService(services));
+ _serviceContainerFactory.AddServiceFactory((services) => SpecialDiagInfo.CreateCrashInfoServiceFromException(services));
OnFlushEvent.Register(() => FlushService());
+ // Add the crash info service factory which lookup the DotNetRuntimeDebugHeader from modules
+ _serviceContainerFactory.AddServiceFactory((services) => new CrashInfoModuleService(services));
+ OnFlushEvent.Register(() => FlushService());
+
Finished();
}
diff --git a/src/Microsoft.Diagnostics.DebugServices/ICrashInfoService.cs b/src/Microsoft.Diagnostics.DebugServices/ICrashInfoService.cs
index 143532cdc3..f395fbaf04 100644
--- a/src/Microsoft.Diagnostics.DebugServices/ICrashInfoService.cs
+++ b/src/Microsoft.Diagnostics.DebugServices/ICrashInfoService.cs
@@ -17,6 +17,39 @@ public enum CrashReason
InternalFailFast = 3,
}
+ public enum ModuleEnumerationScheme
+ {
+ ///
+ /// Enumerate no modules
+ ///
+ None,
+
+ ///
+ /// Enumerate only the entry point module
+ ///
+ EntryPointModule,
+
+ ///
+ /// Enumerate only the entry point module and the entry point DLL module
+ ///
+ EntryPointAndEntryPointDllModule,
+
+ ///
+ /// Enumerate all modules in the target
+ ///
+ All
+ }
+
+ public interface ICrashInfoModuleService
+ {
+ ///
+ /// Create a crash info service
+ ///
+ /// module enumeration scheme
+ /// ICrashInfoService
+ ICrashInfoService Create(ModuleEnumerationScheme moduleEnumerationScheme);
+ }
+
///
/// Crash information service. Details about the unhandled exception or crash.
///
diff --git a/src/Microsoft.Diagnostics.DebugServices/IModuleService.cs b/src/Microsoft.Diagnostics.DebugServices/IModuleService.cs
index 7d65d8e796..0b3f7ca6c0 100644
--- a/src/Microsoft.Diagnostics.DebugServices/IModuleService.cs
+++ b/src/Microsoft.Diagnostics.DebugServices/IModuleService.cs
@@ -57,5 +57,13 @@ public interface IModuleService
/// IModule
/// thrown if imageBase or imageSize is 0
IModule CreateModule(int moduleIndex, ulong imageBase, ulong imageSize, string imageName);
+
+ ///
+ /// Gets the entrypoint module for the target.
+ ///
+ IModule EntryPointModule
+ {
+ get;
+ }
}
}
diff --git a/src/Microsoft.Diagnostics.DebugServices/MemoryServiceExtensions.cs b/src/Microsoft.Diagnostics.DebugServices/MemoryServiceExtensions.cs
index 7cb5dbabc1..fd394f7bbd 100644
--- a/src/Microsoft.Diagnostics.DebugServices/MemoryServiceExtensions.cs
+++ b/src/Microsoft.Diagnostics.DebugServices/MemoryServiceExtensions.cs
@@ -2,9 +2,11 @@
// The .NET Foundation licenses this file to you under the MIT license.
using System;
+using System.Text;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
+using System.Runtime.CompilerServices;
namespace Microsoft.Diagnostics.DebugServices
{
@@ -71,6 +73,22 @@ public static bool ReadDword(this IMemoryService memoryService, ulong address, o
return false;
}
+ public static bool Read(this IMemoryService memoryService, ref ulong address, out T value) where T : unmanaged
+ {
+ Span buffer = stackalloc byte[Unsafe.SizeOf()];
+ if (memoryService.ReadMemory(address, buffer, out int bytesRead))
+ {
+ if (bytesRead == Unsafe.SizeOf())
+ {
+ value = MemoryMarshal.Read(buffer);
+ address += (ulong)Unsafe.SizeOf();
+ return true;
+ }
+ }
+ value = default;
+ return false;
+ }
+
///
/// Return a pointer sized value from the address.
///
@@ -98,6 +116,45 @@ public static bool ReadPointer(this IMemoryService memoryService, ulong address,
return false;
}
+ public static bool ReadPointer(this IMemoryService memoryService, ref ulong address, out ulong value)
+ {
+ bool ret = memoryService.ReadPointer(address, out value);
+ if (ret)
+ {
+ address += (ulong)memoryService.PointerSize;
+ }
+ return ret;
+ }
+
+ public static bool ReadAnsiString(this IMemoryService memoryService, uint maxLength, ulong address, out string value)
+ {
+ StringBuilder sb = new();
+ byte[] buffer = new byte[maxLength];
+ value = null;
+ if (memoryService.ReadMemory(address, buffer, out int bytesRead) && bytesRead > 0)
+ {
+ // convert null terminated ANSI char array to a string
+ for (int i = 0; i < buffer.Length; i++)
+ {
+ // Read the string one character at a time
+ char c = (char)buffer[i];
+ if (buffer[i] == 0) // Stop at null terminator
+ {
+ value = sb.ToString();
+ break; // Stop reading at null terminator
+ }
+ if (c < 0x20 || c > 0x7E) // Unexpected characters
+ {
+ break;
+ }
+ // Append the character to the string
+ sb.Append(c);
+ }
+ }
+ return !string.IsNullOrEmpty(value);
+ }
+
+
///
/// Create a stream for all of memory.
///
diff --git a/src/Microsoft.Diagnostics.ExtensionCommands/CrashInfoCommand.cs b/src/Microsoft.Diagnostics.ExtensionCommands/CrashInfoCommand.cs
index 41ad047e6c..ff2273b71c 100644
--- a/src/Microsoft.Diagnostics.ExtensionCommands/CrashInfoCommand.cs
+++ b/src/Microsoft.Diagnostics.ExtensionCommands/CrashInfoCommand.cs
@@ -16,24 +16,31 @@ public class CrashInfoCommand : CommandBase
[ServiceImport(Optional = true)]
public ICrashInfoService CrashInfo { get; set; }
+ [ServiceImport(Optional = true)]
+ public ICrashInfoModuleService CrashInfoFactory { get; set; }
+
+ [Option(Name = "--moduleEnumerationScheme", Aliases = new string[] { "-e" }, Help = "Enables searching modules for the NativeAOT crashinfo data. Default is None")]
+ public ModuleEnumerationScheme ModuleEnumerationScheme { get; set; } = ModuleEnumerationScheme.None;
+
public override void Invoke()
{
- if (CrashInfo == null)
+ ICrashInfoService crashInfo = CrashInfo ?? CrashInfoFactory.Create(ModuleEnumerationScheme);
+ if (crashInfo == null)
{
throw new DiagnosticsException("No crash info to display");
}
- WriteLine($"CrashReason: {CrashInfo.CrashReason}");
- WriteLine($"ThreadId: {CrashInfo.ThreadId:X4}");
- WriteLine($"HResult: {CrashInfo.HResult:X4}");
- WriteLine($"RuntimeType: {CrashInfo.RuntimeType}");
- WriteLine($"RuntimeBaseAddress: {CrashInfo.RuntimeBaseAddress:X16}");
- WriteLine($"RuntimeVersion: {CrashInfo.RuntimeVersion}");
- WriteLine($"Message: {CrashInfo.Message}");
+ WriteLine($"CrashReason: {crashInfo.CrashReason}");
+ WriteLine($"ThreadId: {crashInfo.ThreadId:X4}");
+ WriteLine($"HResult: {crashInfo.HResult:X4}");
+ WriteLine($"RuntimeType: {crashInfo.RuntimeType}");
+ WriteLine($"RuntimeBaseAddress: {crashInfo.RuntimeBaseAddress:X16}");
+ WriteLine($"RuntimeVersion: {crashInfo.RuntimeVersion}");
+ WriteLine($"Message: {crashInfo.Message}");
WriteLine();
WriteLine("** Current Exception **");
WriteLine();
- IException exception = CrashInfo.GetException(0);
+ IException exception = crashInfo.GetException(0);
if (exception != null)
{
WriteLine("-----------------------------------------------");
@@ -41,9 +48,9 @@ public override void Invoke()
}
WriteLine();
- WriteLine($"** Thread {CrashInfo.ThreadId} Exception **");
+ WriteLine($"** Thread {crashInfo.ThreadId} Exception **");
WriteLine();
- exception = CrashInfo.GetThreadException(CrashInfo.ThreadId);
+ exception = crashInfo.GetThreadException(crashInfo.ThreadId);
if (exception != null)
{
WriteLine("-----------------------------------------------");
@@ -53,7 +60,7 @@ public override void Invoke()
WriteLine();
WriteLine("** Nested Exceptions **");
WriteLine();
- IEnumerable exceptions = CrashInfo.GetNestedExceptions(CrashInfo.ThreadId);
+ IEnumerable exceptions = crashInfo.GetNestedExceptions(crashInfo.ThreadId);
foreach (IException ex in exceptions)
{
WriteLine("-----------------------------------------------");
diff --git a/src/Microsoft.Diagnostics.ExtensionCommands/RootCacheService.cs b/src/Microsoft.Diagnostics.ExtensionCommands/RootCacheService.cs
index 4a8a860a55..f0b8226848 100644
--- a/src/Microsoft.Diagnostics.ExtensionCommands/RootCacheService.cs
+++ b/src/Microsoft.Diagnostics.ExtensionCommands/RootCacheService.cs
@@ -40,6 +40,8 @@ public class RootCacheService
public bool IsDependentHandleLink(ulong source, ulong target)
{
+ InitializeHandleRoots();
+
int i = _dependentHandles.BinarySearch((source, target));
return i >= 0;
}
diff --git a/src/Microsoft.Diagnostics.ExtensionCommands/SimulateGCHeapCorruption.cs b/src/Microsoft.Diagnostics.ExtensionCommands/SimulateGCHeapCorruption.cs
index e018cf218b..f517a40d85 100644
--- a/src/Microsoft.Diagnostics.ExtensionCommands/SimulateGCHeapCorruption.cs
+++ b/src/Microsoft.Diagnostics.ExtensionCommands/SimulateGCHeapCorruption.cs
@@ -62,7 +62,7 @@ private void List()
foreach (Change change in _changes)
{
- output.WriteRow(change.Object, change.AddressModified, change.OriginalValue.Reverse(), change.NewValue.Reverse(), change.ExpectedFailure);
+ output.WriteRow(change.Object, change.AddressModified, change.OriginalValue.AsEnumerable().Reverse(), change.NewValue.AsEnumerable().Reverse(), change.ExpectedFailure);
}
}
diff --git a/src/Microsoft.Diagnostics.Monitoring.EventPipe/Logs/TraceEventExtensions.cs b/src/Microsoft.Diagnostics.Monitoring.EventPipe/Logs/TraceEventExtensions.cs
index 0397e842d2..78386b465a 100644
--- a/src/Microsoft.Diagnostics.Monitoring.EventPipe/Logs/TraceEventExtensions.cs
+++ b/src/Microsoft.Diagnostics.Monitoring.EventPipe/Logs/TraceEventExtensions.cs
@@ -26,22 +26,16 @@ public static void GetLogMessageJsonEventData(
string argsJson = (string)traceEvent.PayloadValue(6);
string formattedMessage = (string)traceEvent.PayloadValue(7);
- string? activityTraceId;
- string? activitySpanId;
- string? activityTraceFlags;
- if (traceEvent.Version >= 2)
- {
- // Note: Trace correlation fields added in .NET 9
- activityTraceId = (string)traceEvent.PayloadValue(8);
- activitySpanId = (string)traceEvent.PayloadValue(9);
- activityTraceFlags = (string)traceEvent.PayloadValue(10);
- }
- else
- {
- activityTraceId = null;
- activitySpanId = null;
- activityTraceFlags = null;
- }
+ // NOTE: The Microsoft-Extensions-Logging EventSource is created with
+ // EventSourceSettings.EtwSelfDescribingEventFormat (TraceLogging). In TraceLogging,
+ // the ETW event header Version is always 0 even if the [Event] attribute declares
+ // Version=2. The three correlation fields (ActivityTraceId, ActivitySpanId,
+ // ActivityTraceFlags) were added in .NET 9, and with TraceLogging their presence
+ // is discoverable only via payload schema (field names), not header Version.
+ // Therefore we detect by payload name instead of checking traceEvent.Version.
+ string? activityTraceId = (string)traceEvent.PayloadByName("ActivityTraceId");
+ string? activitySpanId = (string)traceEvent.PayloadByName("ActivitySpanId");
+ string? activityTraceFlags = (string)traceEvent.PayloadByName("ActivityTraceFlags");
eventData = new(
traceEvent.TimeStamp,
diff --git a/src/Microsoft.Diagnostics.TestHelpers/DotNetBuildDebuggeeTestStep.cs b/src/Microsoft.Diagnostics.TestHelpers/DotNetBuildDebuggeeTestStep.cs
index 6a97f1ae90..91c0d0d52f 100644
--- a/src/Microsoft.Diagnostics.TestHelpers/DotNetBuildDebuggeeTestStep.cs
+++ b/src/Microsoft.Diagnostics.TestHelpers/DotNetBuildDebuggeeTestStep.cs
@@ -200,6 +200,7 @@ protected async Task Restore(string extraArgs, ITestOutputHelper output)
.WithEnvironmentVariable("DOTNET_CLI_DO_NOT_USE_MSBUILD_SERVER", "true")
.WithEnvironmentVariable("DOTNET_MSBUILD_SDK_RESOLVER_CLI_DIR", Path.GetDirectoryName(DotNetToolPath))
.WithEnvironmentVariable("DOTNET_INSTALL_DIR", Path.GetDirectoryName(DotNetToolPath))
+ .RemoveEnvironmentVariable("MSBuildExtensionsPath")
.RemoveEnvironmentVariable("MSBuildSDKsPath")
.WithWorkingDirectory(DebuggeeSolutionDirPath)
.WithLog(output)
@@ -247,6 +248,7 @@ protected async Task Build(string dotnetArgs, ITestOutputHelper output)
.WithEnvironmentVariable("DOTNET_CLI_DO_NOT_USE_MSBUILD_SERVER", "true")
.WithEnvironmentVariable("DOTNET_MSBUILD_SDK_RESOLVER_CLI_DIR", Path.GetDirectoryName(DotNetToolPath))
.WithEnvironmentVariable("DOTNET_INSTALL_DIR", Path.GetDirectoryName(DotNetToolPath))
+ .RemoveEnvironmentVariable("MSBuildExtensionsPath")
.RemoveEnvironmentVariable("MSBuildSDKsPath")
.WithWorkingDirectory(DebuggeeProjectDirPath)
.WithLog(output)
diff --git a/src/Microsoft.Diagnostics.TestHelpers/RemoteExecutorHelper.cs b/src/Microsoft.Diagnostics.TestHelpers/RemoteExecutorHelper.cs
index 1c6d7a71c0..1ba0c666e6 100644
--- a/src/Microsoft.Diagnostics.TestHelpers/RemoteExecutorHelper.cs
+++ b/src/Microsoft.Diagnostics.TestHelpers/RemoteExecutorHelper.cs
@@ -29,6 +29,9 @@ public static async Task RemoteInvoke(ITestOutputHelper output, TestConfigu
// When RemoteExecutor is fixed the "using" can be added and the GC.SuppressFinalize be removed.
RemoteInvokeHandle remoteInvokeHandle = RemoteExecutor.Invoke(method, config.Serialize(), options);
GC.SuppressFinalize(remoteInvokeHandle);
+
+ output.WriteLine($"RemoteExecutorHelper.RemoteInvoke: starting process {remoteInvokeHandle.Process.Id}");
+
try
{
Task stdOutputTask = WriteStreamToOutput(remoteInvokeHandle.Process.StandardOutput, output);
diff --git a/src/Microsoft.SymbolStore/KeyGenerators/ELFCoreKeyGenerator.cs b/src/Microsoft.SymbolStore/KeyGenerators/ELFCoreKeyGenerator.cs
index 69250a93d9..31d5e21bb2 100644
--- a/src/Microsoft.SymbolStore/KeyGenerators/ELFCoreKeyGenerator.cs
+++ b/src/Microsoft.SymbolStore/KeyGenerators/ELFCoreKeyGenerator.cs
@@ -13,12 +13,14 @@ namespace Microsoft.SymbolStore.KeyGenerators
public class ELFCoreKeyGenerator : KeyGenerator
{
private readonly ELFCoreFile _core;
+ private readonly string _path;
public ELFCoreKeyGenerator(ITracer tracer, SymbolStoreFile file)
: base(tracer)
{
StreamAddressSpace dataSource = new(file.Stream);
_core = new ELFCoreFile(dataSource);
+ _path = file.FileName;
}
public override bool IsValid()
@@ -35,10 +37,18 @@ public override IEnumerable GetKeys(KeyTypeFlags flags)
{
if (IsValid())
{
- return _core.LoadedImages
+ KeyGenerator[] generators = _core.LoadedImages
.Select((ELFLoadedImage loadedImage) => CreateGenerator(loadedImage))
.Where((KeyGenerator generator) => generator != null)
- .SelectMany((KeyGenerator generator) => generator.GetKeys(flags));
+ .ToArray();
+
+ if (generators.Length == 0)
+ {
+ Tracer.Verbose("ELFCore file `{0}`: missing valid loaded images. No keys will be generated.", _path);
+ return SymbolStoreKey.EmptyArray;
+ }
+
+ return generators.SelectMany((KeyGenerator generator) => generator.GetKeys(flags));
}
return SymbolStoreKey.EmptyArray;
}
diff --git a/src/Microsoft.SymbolStore/KeyGenerators/ELFFileKeyGenerator.cs b/src/Microsoft.SymbolStore/KeyGenerators/ELFFileKeyGenerator.cs
index c7de8cc2c3..793c56aab9 100644
--- a/src/Microsoft.SymbolStore/KeyGenerators/ELFFileKeyGenerator.cs
+++ b/src/Microsoft.SymbolStore/KeyGenerators/ELFFileKeyGenerator.cs
@@ -77,7 +77,13 @@ ex is IndexOutOfRangeException ||
}
string symbolFileName = GetSymbolFileName();
- foreach (SymbolStoreKey key in GetKeys(flags, _path, buildId, symbolFile, symbolFileName))
+ SymbolStoreKey[] keys = GetKeys(flags, _path, buildId, symbolFile, symbolFileName).ToArray();
+ if (keys.Length == 0 && (flags & (KeyTypeFlags.ClrKeys | KeyTypeFlags.DacDbiKeys)) != 0)
+ {
+ string keyType = (flags & KeyTypeFlags.ClrKeys) != 0 ? "CLR" : "DAC/DBI";
+ Tracer.Verbose("ELF File `{0}`: file is not the coreclr module `{1}`. No {2} keys will be produced.", _path, CoreClrFileName, keyType);
+ }
+ foreach (SymbolStoreKey key in keys)
{
yield return key;
}
@@ -91,6 +97,10 @@ ex is IndexOutOfRangeException ||
// apphost downloaded as the host program name
yield return BuildKey(_path, IdentityPrefix, buildId, "apphost");
}
+ else
+ {
+ Tracer.Verbose("ELFfile `{0}`: header type is not an Executable. No host keys will be generated.", _path);
+ }
}
}
else
diff --git a/src/Microsoft.SymbolStore/KeyGenerators/MachCoreKeyGenerator.cs b/src/Microsoft.SymbolStore/KeyGenerators/MachCoreKeyGenerator.cs
index 0f088a0e61..1ceb8755b6 100644
--- a/src/Microsoft.SymbolStore/KeyGenerators/MachCoreKeyGenerator.cs
+++ b/src/Microsoft.SymbolStore/KeyGenerators/MachCoreKeyGenerator.cs
@@ -12,12 +12,14 @@ namespace Microsoft.SymbolStore.KeyGenerators
public class MachCoreKeyGenerator : KeyGenerator
{
private readonly MachCore _core;
+ private readonly string _path;
public MachCoreKeyGenerator(ITracer tracer, SymbolStoreFile file)
: base(tracer)
{
StreamAddressSpace dataSource = new(file.Stream);
_core = new MachCore(dataSource);
+ _path = file.FileName;
}
public override bool IsValid()
@@ -34,10 +36,18 @@ public override IEnumerable GetKeys(KeyTypeFlags flags)
{
if (IsValid())
{
- return _core.LoadedImages
+ KeyGenerator[] generators = _core.LoadedImages
.Select((MachLoadedImage loadedImage) => CreateGenerator(loadedImage))
.Where((KeyGenerator generator) => generator != null)
- .SelectMany((KeyGenerator generator) => generator.GetKeys(flags));
+ .ToArray();
+
+ if (generators.Length == 0)
+ {
+ Tracer.Verbose("MachCore file `{0}`: missing valid loaded images. No keys will be generated.", _path);
+ return SymbolStoreKey.EmptyArray;
+ }
+
+ return generators.SelectMany((KeyGenerator generator) => generator.GetKeys(flags));
}
return SymbolStoreKey.EmptyArray;
}
diff --git a/src/Microsoft.SymbolStore/KeyGenerators/MachOFatHeaderKeyGenerator.cs b/src/Microsoft.SymbolStore/KeyGenerators/MachOFatHeaderKeyGenerator.cs
index ba6ac92391..d35dab4a67 100644
--- a/src/Microsoft.SymbolStore/KeyGenerators/MachOFatHeaderKeyGenerator.cs
+++ b/src/Microsoft.SymbolStore/KeyGenerators/MachOFatHeaderKeyGenerator.cs
@@ -29,7 +29,17 @@ public override IEnumerable GetKeys(KeyTypeFlags flags)
{
if (IsValid())
{
- return _machoFatFile.ArchSpecificFiles.Select((file) => new MachOFileKeyGenerator(Tracer, file, _path)).SelectMany((generator) => generator.GetKeys(flags));
+ MachOFileKeyGenerator[] generators = _machoFatFile.ArchSpecificFiles
+ .Select((MachOFile file) => new MachOFileKeyGenerator(Tracer, file, _path))
+ .ToArray();
+
+ if (generators.Length == 0)
+ {
+ Tracer.Verbose("Mach-O fat file `{0}`: missing arch-specific slices. No keys will be generated.", _path);
+ return SymbolStoreKey.EmptyArray;
+ }
+
+ return generators.SelectMany((KeyGenerator generator) => generator.GetKeys(flags));
}
return SymbolStoreKey.EmptyArray;
}
diff --git a/src/Microsoft.SymbolStore/KeyGenerators/MachOKeyGenerator.cs b/src/Microsoft.SymbolStore/KeyGenerators/MachOKeyGenerator.cs
index ae4f9106d1..b4369ad6ef 100644
--- a/src/Microsoft.SymbolStore/KeyGenerators/MachOKeyGenerator.cs
+++ b/src/Microsoft.SymbolStore/KeyGenerators/MachOKeyGenerator.cs
@@ -61,7 +61,13 @@ public override IEnumerable GetKeys(KeyTypeFlags flags)
{
bool symbolFile = _machoFile.Header.FileType == MachHeaderFileType.Dsym;
// TODO - mikem 1/23/18 - is there a way to get the name of the "linked" dwarf symbol file
- foreach (SymbolStoreKey key in GetKeys(flags, _path, uuid, symbolFile, symbolFileName: null))
+ SymbolStoreKey[] keys = GetKeys(flags, _path, uuid, symbolFile, symbolFileName: null).ToArray();
+ if (keys.Length == 0 && (flags & (KeyTypeFlags.ClrKeys | KeyTypeFlags.DacDbiKeys)) != 0)
+ {
+ string keyType = (flags & KeyTypeFlags.ClrKeys) != 0 ? "CLR" : "DAC/DBI";
+ Tracer.Verbose("Mach-O File `{0}`: file is not the coreclr module `{1}`. No {2} keys will be produced.", _path, CoreClrFileName, keyType);
+ }
+ foreach (SymbolStoreKey key in keys)
{
yield return key;
}
@@ -75,6 +81,10 @@ public override IEnumerable GetKeys(KeyTypeFlags flags)
// apphost downloaded as the host program name
yield return BuildKey(_path, IdentityPrefix, uuid, "apphost");
}
+ else
+ {
+ Tracer.Verbose("Mach-O file `{0}`: file type `{1}` is not an executable. No host keys will be generated.", _path, _machoFile.Header.FileType);
+ }
}
}
else
diff --git a/src/Microsoft.SymbolStore/KeyGenerators/MinidumpKeyGenerator.cs b/src/Microsoft.SymbolStore/KeyGenerators/MinidumpKeyGenerator.cs
index 324bdfa656..e7e4d22e86 100644
--- a/src/Microsoft.SymbolStore/KeyGenerators/MinidumpKeyGenerator.cs
+++ b/src/Microsoft.SymbolStore/KeyGenerators/MinidumpKeyGenerator.cs
@@ -11,11 +11,13 @@ namespace Microsoft.SymbolStore.KeyGenerators
public class MinidumpKeyGenerator : KeyGenerator
{
private readonly IAddressSpace _dataSource;
+ private readonly string _path;
public MinidumpKeyGenerator(ITracer tracer, SymbolStoreFile file)
: base(tracer)
{
_dataSource = new StreamAddressSpace(file.Stream);
+ _path = file.FileName;
}
public override bool IsValid()
@@ -35,9 +37,18 @@ public override IEnumerable GetKeys(KeyTypeFlags flags)
try
{
Minidump dump = new(_dataSource);
- return dump.LoadedImages
+ KeyGenerator[] generators = dump.LoadedImages
.Select((MinidumpLoadedImage loadedImage) => new PEFileKeyGenerator(Tracer, loadedImage.Image, loadedImage.ModuleName))
- .SelectMany((KeyGenerator generator) => generator.GetKeys(flags));
+ .Where((KeyGenerator g) => g != null && g.IsValid())
+ .ToArray();
+
+ if (generators.Length == 0)
+ {
+ Tracer.Verbose("Minidump file `{0}`: missing valid module images. No keys will be generated.", _path);
+ return SymbolStoreKey.EmptyArray;
+ }
+
+ return generators.SelectMany((KeyGenerator generator) => generator.GetKeys(flags));
}
catch (InvalidVirtualAddressException ex)
{
diff --git a/src/Microsoft.SymbolStore/KeyGenerators/PEFileKeyGenerator.cs b/src/Microsoft.SymbolStore/KeyGenerators/PEFileKeyGenerator.cs
index 5ccfd355a3..d18650b888 100644
--- a/src/Microsoft.SymbolStore/KeyGenerators/PEFileKeyGenerator.cs
+++ b/src/Microsoft.SymbolStore/KeyGenerators/PEFileKeyGenerator.cs
@@ -67,6 +67,11 @@ public override IEnumerable GetKeys(KeyTypeFlags flags)
Tracer.Error("Reading PDB records for {0}: {1}", _path, ex.Message);
}
+ if (pdbs.Length == 0)
+ {
+ Tracer.Verbose("PEFile `{0}`: no PDB records found. No symbol keys will be produced.", _path);
+ }
+
foreach (PEPdbRecord pdb in pdbs)
{
if (((flags & KeyTypeFlags.ForceWindowsPdbs) == 0) && pdb.IsPortablePDB)
@@ -82,6 +87,11 @@ public override IEnumerable GetKeys(KeyTypeFlags flags)
if ((flags & KeyTypeFlags.PerfMapKeys) != 0)
{
+ if (!_peFile.PerfMapsV1.Any())
+ {
+ Tracer.Verbose("PEFile `{0}`: no perfmap records found. No perfmap keys will be produced.", _path);
+ }
+
foreach (PEPerfMapRecord perfmapRecord in _peFile.PerfMapsV1)
{
if (perfmapRecord.Version > FileFormats.PerfMap.PerfMapFile.MaxKnownPerfMapVersion)
@@ -94,10 +104,15 @@ public override IEnumerable GetKeys(KeyTypeFlags flags)
}
// Return keys for SOS modules for a given runtime module
- if ((flags & (KeyTypeFlags.ClrKeys)) != 0)
+ if ((flags & KeyTypeFlags.ClrKeys) != 0)
{
string coreclrId = BuildId(_peFile.Timestamp, _peFile.SizeOfImage);
- foreach (string specialFileName in GetSOSFiles(GetFileName(_path)))
+ string[] sosFiles = GetSOSFiles(GetFileName(_path)).ToArray();
+ if (sosFiles.Length == 0)
+ {
+ Tracer.Verbose("PEFile `{0}`: no SOS special files generated for runtime file {1}. No SOS keys will be produced.", _path, GetFileName(_path));
+ }
+ foreach (string specialFileName in sosFiles)
{
yield return BuildKey(specialFileName, coreclrId);
}
@@ -107,7 +122,12 @@ public override IEnumerable GetKeys(KeyTypeFlags flags)
if ((flags & (KeyTypeFlags.ClrKeys | KeyTypeFlags.DacDbiKeys)) != 0)
{
string coreclrId = BuildId(_peFile.Timestamp, _peFile.SizeOfImage);
- foreach (string specialFileName in GetDACFiles(GetFileName(_path)))
+ string[] dacFiles = GetDACFiles(GetFileName(_path)).ToArray();
+ if (dacFiles.Length == 0)
+ {
+ Tracer.Verbose("PEFile `{0}`: no DAC/DBI special files generated for runtime file {1}. No DAC/DBI keys will be produced.", _path, GetFileName(_path));
+ }
+ foreach (string specialFileName in dacFiles)
{
yield return BuildKey(specialFileName, coreclrId);
}
@@ -125,6 +145,10 @@ public override IEnumerable GetKeys(KeyTypeFlags flags)
// apphost.exe downloaded as the host program name
yield return BuildKey(_path, prefix: null, id, "apphost.exe");
}
+ else
+ {
+ Tracer.Verbose("PEfile `{0}`: non-executable (DLL or IL image). No host keys will be generated.", _path);
+ }
}
}
}
diff --git a/src/SOS/SOS.Extensions/Clrma/ClrmaServiceWrapper.cs b/src/SOS/SOS.Extensions/Clrma/ClrmaServiceWrapper.cs
index dc47872586..c8d57a2adf 100644
--- a/src/SOS/SOS.Extensions/Clrma/ClrmaServiceWrapper.cs
+++ b/src/SOS/SOS.Extensions/Clrma/ClrmaServiceWrapper.cs
@@ -13,6 +13,7 @@ namespace SOS.Extensions.Clrma
{
public sealed class ClrmaServiceWrapper : COMCallableIUnknown
{
+ public const ModuleEnumerationScheme DefaultModuleEnumerationScheme = ModuleEnumerationScheme.EntryPointAndEntryPointDllModule;
public static readonly Guid IID_ICLRMAService = new("1FCF4C14-60C1-44E6-84ED-20506EF3DC60");
public const int E_BOUNDS = unchecked((int)0x8000000B);
@@ -34,10 +35,21 @@ public ClrmaServiceWrapper(ITarget target, IServiceProvider serviceProvider, Ser
builder.AddMethod(new GetThreadDelegate(GetThread));
builder.AddMethod(new GetExceptionDelegate(GetException));
builder.AddMethod(new GetObjectInspectionDelegate(GetObjectInspection));
+ builder.AddMethod(new SetModuleEnumerationPolicyDelegate((self, moduleEnumerationPolicy) =>
+ {
+ if (moduleEnumerationPolicy < 0 || moduleEnumerationPolicy > (int)ModuleEnumerationScheme.All)
+ {
+ return HResult.E_INVALIDARG;
+ }
+ ModuleEnumerationScheme = (ModuleEnumerationScheme)moduleEnumerationPolicy;
+ return HResult.S_OK;
+ }));
builder.Complete();
// Since this wrapper is only created through a ServiceWrapper factory, no AddRef() is needed.
}
+ public ModuleEnumerationScheme ModuleEnumerationScheme { get; private set; } = ModuleEnumerationScheme.None;
+
protected override void Destroy()
{
Trace.TraceInformation("ClrmaServiceWrapper.Destroy");
@@ -104,7 +116,15 @@ private int GetObjectInspection(
return HResult.E_NOTIMPL;
}
- private ICrashInfoService CrashInfoService => _crashInfoService ??= _serviceProvider.GetService();
+ private ICrashInfoService CrashInfoService
+ {
+ get
+ {
+ _crashInfoService ??= _serviceProvider.GetService(); // Use the default exception-based mechanism for obtaining crash info service
+ _crashInfoService ??= _serviceProvider.GetService()?.Create(ModuleEnumerationScheme); // if the above fails, try to create a crash info service from the modules
+ return _crashInfoService;
+ }
+ }
private IThreadService ThreadService => _serviceProvider.GetService();
@@ -132,6 +152,11 @@ private delegate int GetObjectInspectionDelegate(
[In] IntPtr self,
[Out] out IntPtr objectInspection);
+ [UnmanagedFunctionPointer(CallingConvention.Winapi)]
+ private delegate int SetModuleEnumerationPolicyDelegate(
+ [In] IntPtr self,
+ [In] uint moduleEnumerationPolicy);
+
#endregion
}
}
diff --git a/src/SOS/SOS.Extensions/ModuleServiceFromDebuggerServices.cs b/src/SOS/SOS.Extensions/ModuleServiceFromDebuggerServices.cs
index 4137ee1dfd..371de58dd3 100644
--- a/src/SOS/SOS.Extensions/ModuleServiceFromDebuggerServices.cs
+++ b/src/SOS/SOS.Extensions/ModuleServiceFromDebuggerServices.cs
@@ -5,6 +5,7 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
+using System.Runtime.InteropServices;
using Microsoft.Diagnostics.DebugServices;
using Microsoft.Diagnostics.DebugServices.Implementation;
using Microsoft.Diagnostics.Runtime.Utilities;
@@ -262,6 +263,30 @@ internal ModuleServiceFromDebuggerServices(IServiceProvider services, DebuggerSe
_debuggerServices = debuggerServices;
}
+ public override IModule EntryPointModule
+ {
+ get
+ {
+ foreach (IModule module in ((IModuleService)this).EnumerateModules())
+ {
+ if (Target.OperatingSystem == OSPlatform.Windows)
+ {
+ // The entry point module is not necessarily the first module in the sorted list of modules.
+ if (module.FileName?.EndsWith(".exe", StringComparison.OrdinalIgnoreCase) == true)
+ {
+ return module;
+ }
+ }
+ else
+ {
+ // On non-Windows, assume the entry point module is the first module.
+ return module;
+ }
+ }
+ return null;
+ }
+ }
+
///
/// Get/create the modules dictionary.
///
diff --git a/src/SOS/SOS.Extensions/TargetFromDebuggerServices.cs b/src/SOS/SOS.Extensions/TargetFromDebuggerServices.cs
index aac3731ff1..72e9108bdd 100644
--- a/src/SOS/SOS.Extensions/TargetFromDebuggerServices.cs
+++ b/src/SOS/SOS.Extensions/TargetFromDebuggerServices.cs
@@ -100,9 +100,13 @@ internal TargetFromDebuggerServices(DebuggerServices debuggerServices, IHost hos
});
// Add optional crash info service (currently only for Native AOT).
- _serviceContainerFactory.AddServiceFactory((services) => CreateCrashInfoService(services, debuggerServices));
+ _serviceContainerFactory.AddServiceFactory((services) => CreateCrashInfoServiceFromException(services, debuggerServices));
OnFlushEvent.Register(() => FlushService());
+ // Add the crash info service factory which lookup the DotNetRuntimeDebugHeader from modules
+ _serviceContainerFactory.AddServiceFactory((services) => new CrashInfoModuleService(services));
+ OnFlushEvent.Register(() => FlushService());
+
if (Host.HostType == HostType.DbgEng)
{
_serviceContainerFactory.AddServiceFactory((services) => new MemoryRegionServiceFromDebuggerServices(debuggerServices));
@@ -114,12 +118,12 @@ internal TargetFromDebuggerServices(DebuggerServices debuggerServices, IHost hos
targetWrapper?.ServiceWrapper.AddServiceWrapper(ClrmaServiceWrapper.IID_ICLRMAService, () => new ClrmaServiceWrapper(this, Services, targetWrapper.ServiceWrapper));
}
- private unsafe ICrashInfoService CreateCrashInfoService(IServiceProvider services, DebuggerServices debuggerServices)
+ private unsafe ICrashInfoService CreateCrashInfoServiceFromException(IServiceProvider services, DebuggerServices debuggerServices)
{
// For Linux/OSX dumps loaded under dbgeng the GetLastException API doesn't return the necessary information
if (Host.HostType == HostType.DbgEng && (OperatingSystem == OSPlatform.Linux || OperatingSystem == OSPlatform.OSX))
{
- return SpecialDiagInfo.CreateCrashInfoService(services);
+ return SpecialDiagInfo.CreateCrashInfoServiceFromException(services);
}
HResult hr = debuggerServices.GetLastException(out uint processId, out int threadIndex, out EXCEPTION_RECORD64 exceptionRecord);
if (hr.IsOK)
@@ -143,7 +147,10 @@ private unsafe ICrashInfoService CreateCrashInfoService(IServiceProvider service
}
}
}
+
return null;
}
+
+
}
}
diff --git a/src/SOS/SOS.Package/SOS.Package.csproj b/src/SOS/SOS.Package/SOS.Package.csproj
index ed21920642..5607b1c05f 100644
--- a/src/SOS/SOS.Package/SOS.Package.csproj
+++ b/src/SOS/SOS.Package/SOS.Package.csproj
@@ -14,7 +14,7 @@
true
false
-
+
@@ -30,47 +30,54 @@
-
+
- SOS
- $(FileVersion)
- Debugging aid for .NET Core programs and runtimes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- !soshelp
- Displays all available SOS commands or details about the command
-
-
-
-
-
+ SOS
+ $(FileVersion)
+ Debugging aid for .NET Core programs and runtimes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ !soshelp
+ Displays all available SOS commands or details about the command
+
+
+
+
+
]]>
diff --git a/src/SOS/SOS.UnitTests/Debuggees/DumpGCData/DumpGCData.csproj b/src/SOS/SOS.UnitTests/Debuggees/DumpGCData/DumpGCData.csproj
new file mode 100644
index 0000000000..644ea7fa32
--- /dev/null
+++ b/src/SOS/SOS.UnitTests/Debuggees/DumpGCData/DumpGCData.csproj
@@ -0,0 +1,7 @@
+
+
+ Exe
+ $(BuildProjectFramework)
+ $(SupportedSubProcessTargetFrameworks)
+
+
diff --git a/src/SOS/SOS.UnitTests/Debuggees/DumpGCData/Program.cs b/src/SOS/SOS.UnitTests/Debuggees/DumpGCData/Program.cs
new file mode 100644
index 0000000000..7a74fe024d
--- /dev/null
+++ b/src/SOS/SOS.UnitTests/Debuggees/DumpGCData/Program.cs
@@ -0,0 +1,23 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using System;
+using System.Diagnostics;
+using System.Runtime.InteropServices;
+
+namespace DumpGCData;
+
+internal class Program
+{
+ private static void Main()
+ {
+ Debugger.Break();
+
+ byte[] data = new byte[1024 * 1024];
+
+ GCHandle handle = GCHandle.Alloc(data, GCHandleType.Pinned);
+ GC.Collect();
+ Debugger.Break();
+ Console.WriteLine(handle.ToString());
+ }
+}
diff --git a/src/SOS/SOS.UnitTests/Debuggees/FindRootsOlderGeneration/FindRootsOlderGeneration.csproj b/src/SOS/SOS.UnitTests/Debuggees/FindRootsOlderGeneration/FindRootsOlderGeneration.csproj
new file mode 100644
index 0000000000..644ea7fa32
--- /dev/null
+++ b/src/SOS/SOS.UnitTests/Debuggees/FindRootsOlderGeneration/FindRootsOlderGeneration.csproj
@@ -0,0 +1,7 @@
+
+
+ Exe
+ $(BuildProjectFramework)
+ $(SupportedSubProcessTargetFrameworks)
+
+
diff --git a/src/SOS/SOS.UnitTests/Debuggees/FindRootsOlderGeneration/Program.cs b/src/SOS/SOS.UnitTests/Debuggees/FindRootsOlderGeneration/Program.cs
new file mode 100644
index 0000000000..e13750f9de
--- /dev/null
+++ b/src/SOS/SOS.UnitTests/Debuggees/FindRootsOlderGeneration/Program.cs
@@ -0,0 +1,73 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using System;
+using System.Diagnostics;
+using System.Runtime;
+
+namespace FindRootsOlderGeneration;
+
+internal class Program
+{
+ private static void Main()
+ {
+ // Allocate a large object to ensure it goes on the LOH
+ Thing[] things = new Thing[1024 * 100];
+
+ Debugger.Break();
+
+ // On CI runs, in server GC mode, these collects have sometimes triggered
+ // a gen 2 collection that is not expected and causes the test to fail.
+ // Adding "SustainedLowLatency" mode to try to prevent that.
+ GCSettings.LatencyMode = GCLatencyMode.SustainedLowLatency;
+
+ PopulateArray(things);
+ Thing lastThing = things[things.Length - 1];
+
+ Console.WriteLine("Enable CLRN notifications: SXE CLRN");
+ Debugger.Break();
+
+ int dataGen = GC.GetGeneration(things);
+ int thingGen = GC.GetGeneration(lastThing);
+ Console.WriteLine($"Before GC - Array Gen: {dataGen}, Thing Gen: {thingGen}");
+
+ Console.WriteLine("Forcing GC...");
+
+ GC.Collect(0, GCCollectionMode.Forced, blocking: true);
+
+ Console.WriteLine("GC complete.");
+ Console.WriteLine("Disable CLRN notifications: SXN CLRN");
+
+ dataGen = GC.GetGeneration(things);
+ thingGen = GC.GetGeneration(lastThing);
+ Console.WriteLine($"After GC - Array Gen: {dataGen}, Thing Gen: {thingGen}");
+
+ Debugger.Break();
+
+ // Keep data alive
+ PrintSumArray(things);
+ }
+
+ private static void PopulateArray(Thing[] things)
+ {
+ for (uint i = 0; i < things.Length; i++)
+ {
+ things[i] = new Thing() { Id = i };
+ }
+ }
+
+ private static void PrintSumArray(Thing[] things)
+ {
+ ulong acc = 0;
+ for (int i = 0; i < things.Length; i++)
+ {
+ acc += things[i].Id;
+ }
+ Console.WriteLine($"Thing Array sum: {acc}");
+ }
+}
+
+internal class Thing
+{
+ public uint Id { get; set; }
+}
diff --git a/src/SOS/SOS.UnitTests/Debuggees/SymbolTestApp/SymbolTestApp.sln b/src/SOS/SOS.UnitTests/Debuggees/SymbolTestApp/SymbolTestApp.sln
deleted file mode 100644
index 7fe0b31211..0000000000
--- a/src/SOS/SOS.UnitTests/Debuggees/SymbolTestApp/SymbolTestApp.sln
+++ /dev/null
@@ -1,50 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.29613.14
-MinimumVisualStudioVersion = 15.0.26124.0
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SymbolTestApp", "SymbolTestApp\SymbolTestApp.csproj", "{EB291C94-C60E-4AE6-AEA0-B7EEF86F00AD}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SymbolTestDll", "SymbolTestDll\SymbolTestDll.csproj", "{53E66227-71BB-4300-9BE9-56CE570B28F8}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {EB291C94-C60E-4AE6-AEA0-B7EEF86F00AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {EB291C94-C60E-4AE6-AEA0-B7EEF86F00AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {EB291C94-C60E-4AE6-AEA0-B7EEF86F00AD}.Debug|x64.ActiveCfg = Debug|Any CPU
- {EB291C94-C60E-4AE6-AEA0-B7EEF86F00AD}.Debug|x64.Build.0 = Debug|Any CPU
- {EB291C94-C60E-4AE6-AEA0-B7EEF86F00AD}.Debug|x86.ActiveCfg = Debug|Any CPU
- {EB291C94-C60E-4AE6-AEA0-B7EEF86F00AD}.Debug|x86.Build.0 = Debug|Any CPU
- {EB291C94-C60E-4AE6-AEA0-B7EEF86F00AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {EB291C94-C60E-4AE6-AEA0-B7EEF86F00AD}.Release|Any CPU.Build.0 = Release|Any CPU
- {EB291C94-C60E-4AE6-AEA0-B7EEF86F00AD}.Release|x64.ActiveCfg = Release|Any CPU
- {EB291C94-C60E-4AE6-AEA0-B7EEF86F00AD}.Release|x64.Build.0 = Release|Any CPU
- {EB291C94-C60E-4AE6-AEA0-B7EEF86F00AD}.Release|x86.ActiveCfg = Release|Any CPU
- {EB291C94-C60E-4AE6-AEA0-B7EEF86F00AD}.Release|x86.Build.0 = Release|Any CPU
- {53E66227-71BB-4300-9BE9-56CE570B28F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {53E66227-71BB-4300-9BE9-56CE570B28F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {53E66227-71BB-4300-9BE9-56CE570B28F8}.Debug|x64.ActiveCfg = Debug|Any CPU
- {53E66227-71BB-4300-9BE9-56CE570B28F8}.Debug|x64.Build.0 = Debug|Any CPU
- {53E66227-71BB-4300-9BE9-56CE570B28F8}.Debug|x86.ActiveCfg = Debug|Any CPU
- {53E66227-71BB-4300-9BE9-56CE570B28F8}.Debug|x86.Build.0 = Debug|Any CPU
- {53E66227-71BB-4300-9BE9-56CE570B28F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {53E66227-71BB-4300-9BE9-56CE570B28F8}.Release|Any CPU.Build.0 = Release|Any CPU
- {53E66227-71BB-4300-9BE9-56CE570B28F8}.Release|x64.ActiveCfg = Release|Any CPU
- {53E66227-71BB-4300-9BE9-56CE570B28F8}.Release|x64.Build.0 = Release|Any CPU
- {53E66227-71BB-4300-9BE9-56CE570B28F8}.Release|x86.ActiveCfg = Release|Any CPU
- {53E66227-71BB-4300-9BE9-56CE570B28F8}.Release|x86.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {42F03860-BFB4-49ED-900B-0C32D06E0B53}
- EndGlobalSection
-EndGlobal
diff --git a/src/SOS/SOS.UnitTests/Debuggees/SymbolTestApp/SymbolTestApp.slnx b/src/SOS/SOS.UnitTests/Debuggees/SymbolTestApp/SymbolTestApp.slnx
new file mode 100644
index 0000000000..07e088a690
--- /dev/null
+++ b/src/SOS/SOS.UnitTests/Debuggees/SymbolTestApp/SymbolTestApp.slnx
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/SOS/SOS.UnitTests/Debuggees/SymbolTestApp/SymbolTestApp/SymbolTestApp.csproj b/src/SOS/SOS.UnitTests/Debuggees/SymbolTestApp/SymbolTestApp/SymbolTestApp.csproj
index f783e9c2ef..4a460a797e 100644
--- a/src/SOS/SOS.UnitTests/Debuggees/SymbolTestApp/SymbolTestApp/SymbolTestApp.csproj
+++ b/src/SOS/SOS.UnitTests/Debuggees/SymbolTestApp/SymbolTestApp/SymbolTestApp.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/src/SOS/SOS.UnitTests/Debuggees/TaskNestedException/TaskNestedException.sln b/src/SOS/SOS.UnitTests/Debuggees/TaskNestedException/TaskNestedException.sln
deleted file mode 100644
index ecca0ea023..0000000000
--- a/src/SOS/SOS.UnitTests/Debuggees/TaskNestedException/TaskNestedException.sln
+++ /dev/null
@@ -1,50 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.29613.14
-MinimumVisualStudioVersion = 15.0.26124.0
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TaskNestedException", "TaskNestedException\TaskNestedException.csproj", "{B9B58649-CEA6-4EF5-A25E-916AE8E77917}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RandomUserLibrary", "RandomUserLibrary\RandomUserLibrary.csproj", "{FADE7D7D-107F-42B0-ABD5-36A101CD8675}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {B9B58649-CEA6-4EF5-A25E-916AE8E77917}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B9B58649-CEA6-4EF5-A25E-916AE8E77917}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B9B58649-CEA6-4EF5-A25E-916AE8E77917}.Debug|x64.ActiveCfg = Debug|Any CPU
- {B9B58649-CEA6-4EF5-A25E-916AE8E77917}.Debug|x64.Build.0 = Debug|Any CPU
- {B9B58649-CEA6-4EF5-A25E-916AE8E77917}.Debug|x86.ActiveCfg = Debug|Any CPU
- {B9B58649-CEA6-4EF5-A25E-916AE8E77917}.Debug|x86.Build.0 = Debug|Any CPU
- {B9B58649-CEA6-4EF5-A25E-916AE8E77917}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B9B58649-CEA6-4EF5-A25E-916AE8E77917}.Release|Any CPU.Build.0 = Release|Any CPU
- {B9B58649-CEA6-4EF5-A25E-916AE8E77917}.Release|x64.ActiveCfg = Release|Any CPU
- {B9B58649-CEA6-4EF5-A25E-916AE8E77917}.Release|x64.Build.0 = Release|Any CPU
- {B9B58649-CEA6-4EF5-A25E-916AE8E77917}.Release|x86.ActiveCfg = Release|Any CPU
- {B9B58649-CEA6-4EF5-A25E-916AE8E77917}.Release|x86.Build.0 = Release|Any CPU
- {FADE7D7D-107F-42B0-ABD5-36A101CD8675}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {FADE7D7D-107F-42B0-ABD5-36A101CD8675}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {FADE7D7D-107F-42B0-ABD5-36A101CD8675}.Debug|x64.ActiveCfg = Debug|Any CPU
- {FADE7D7D-107F-42B0-ABD5-36A101CD8675}.Debug|x64.Build.0 = Debug|Any CPU
- {FADE7D7D-107F-42B0-ABD5-36A101CD8675}.Debug|x86.ActiveCfg = Debug|Any CPU
- {FADE7D7D-107F-42B0-ABD5-36A101CD8675}.Debug|x86.Build.0 = Debug|Any CPU
- {FADE7D7D-107F-42B0-ABD5-36A101CD8675}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {FADE7D7D-107F-42B0-ABD5-36A101CD8675}.Release|Any CPU.Build.0 = Release|Any CPU
- {FADE7D7D-107F-42B0-ABD5-36A101CD8675}.Release|x64.ActiveCfg = Release|Any CPU
- {FADE7D7D-107F-42B0-ABD5-36A101CD8675}.Release|x64.Build.0 = Release|Any CPU
- {FADE7D7D-107F-42B0-ABD5-36A101CD8675}.Release|x86.ActiveCfg = Release|Any CPU
- {FADE7D7D-107F-42B0-ABD5-36A101CD8675}.Release|x86.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {53DA7C95-F7D2-4F8F-AD21-15CB94158C77}
- EndGlobalSection
-EndGlobal
diff --git a/src/SOS/SOS.UnitTests/Debuggees/TaskNestedException/TaskNestedException.slnx b/src/SOS/SOS.UnitTests/Debuggees/TaskNestedException/TaskNestedException.slnx
new file mode 100644
index 0000000000..badfcb13d2
--- /dev/null
+++ b/src/SOS/SOS.UnitTests/Debuggees/TaskNestedException/TaskNestedException.slnx
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/SOS/SOS.UnitTests/Debuggees/VarargPInvokeInteropMD/Program.cs b/src/SOS/SOS.UnitTests/Debuggees/VarargPInvokeInteropMD/Program.cs
new file mode 100644
index 0000000000..54cd367751
--- /dev/null
+++ b/src/SOS/SOS.UnitTests/Debuggees/VarargPInvokeInteropMD/Program.cs
@@ -0,0 +1,24 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using System;
+using System.Diagnostics;
+using System.Runtime.InteropServices;
+
+namespace VarargPInvokeInteropMD;
+
+internal class Program
+{
+ private static void Main()
+ {
+ Debugger.Break();
+
+ Interop.printf("Number: %d, Float: %.2f\n", __arglist(42, 3.14159));
+ }
+}
+
+internal class Interop
+{
+ [DllImport("msvcrt")]
+ public static extern int printf(string format, __arglist);
+}
diff --git a/src/SOS/SOS.UnitTests/Debuggees/VarargPInvokeInteropMD/VarargPInvokeInteropMD.csproj b/src/SOS/SOS.UnitTests/Debuggees/VarargPInvokeInteropMD/VarargPInvokeInteropMD.csproj
new file mode 100644
index 0000000000..644ea7fa32
--- /dev/null
+++ b/src/SOS/SOS.UnitTests/Debuggees/VarargPInvokeInteropMD/VarargPInvokeInteropMD.csproj
@@ -0,0 +1,7 @@
+
+
+ Exe
+ $(BuildProjectFramework)
+ $(SupportedSubProcessTargetFrameworks)
+
+
diff --git a/src/SOS/SOS.UnitTests/SOS.cs b/src/SOS/SOS.UnitTests/SOS.cs
index 578e6f609b..3a66a4046f 100644
--- a/src/SOS/SOS.UnitTests/SOS.cs
+++ b/src/SOS/SOS.UnitTests/SOS.cs
@@ -24,6 +24,40 @@ public static IEnumerable
+
+
+
diff --git a/src/Tools/dotnet-dsrouter/ADBTcpRouterFactory.cs b/src/Tools/dotnet-dsrouter/ADBTcpRouterFactory.cs
index c96ddcc257..218064ae38 100644
--- a/src/Tools/dotnet-dsrouter/ADBTcpRouterFactory.cs
+++ b/src/Tools/dotnet-dsrouter/ADBTcpRouterFactory.cs
@@ -8,6 +8,7 @@
using System.Threading.Tasks;
using Microsoft.Diagnostics.NETCore.Client;
using Microsoft.Extensions.Logging;
+using Xamarin.Android.Tools;
namespace Microsoft.Diagnostics.Tools.DiagnosticsServerRouter
{
@@ -65,7 +66,7 @@ public static void AdbRemovePortReverse(int localPort, int remotePort, bool owns
public static bool RunAdbCommandInternal(string command, string expectedOutput, int expectedExitCode, bool rethrow, ILogger logger)
{
- string sdkRoot = Environment.GetEnvironmentVariable("ANDROID_SDK_ROOT");
+ string sdkRoot = GetAndroidSdkPath(logger);
string adbTool = "adb";
if (!string.IsNullOrEmpty(sdkRoot))
@@ -127,6 +128,38 @@ public static bool RunAdbCommandInternal(string command, string expectedOutput,
return processStartedResult && expectedOutputResult && expectedExitCodeResult;
}
+
+ private static string AndroidSdkPath;
+
+ private static string GetAndroidSdkPath(ILogger logger)
+ {
+ if (AndroidSdkPath is not null)
+ {
+ return AndroidSdkPath;
+ }
+
+ void sdklogger(TraceLevel level, string message)
+ {
+ switch (level)
+ {
+ case TraceLevel.Error:
+ logger?.LogError(message);
+ break;
+ case TraceLevel.Warning:
+ logger?.LogWarning(message);
+ break;
+ case TraceLevel.Info:
+ logger?.LogInformation(message);
+ break;
+ case TraceLevel.Verbose:
+ logger?.LogDebug(message);
+ break;
+ }
+ }
+
+ // AndroidSdkInfo checks $ANDROID_SDK_ROOT, $ANDROID_HOME, and default locations.
+ return AndroidSdkPath = new AndroidSdkInfo(logger: sdklogger).AndroidSdkPath;
+ }
}
internal sealed class ADBTcpServerRouterFactory : TcpServerRouterFactory
@@ -166,7 +199,7 @@ public override void Start()
_ownsPortReverse = false;
Logger.LogError("Failed setting up adb port reverse." +
" This might lead to problems communicating with Android application." +
- " Make sure env variable ANDROID_SDK_ROOT is set and points to an Android SDK." +
+ " Make sure env variable $ANDROID_HOME is set and points to an Android SDK." +
$" Executing with unknown adb status for port {_localPort}.");
base.Start();
return;
@@ -245,7 +278,7 @@ public override void Start()
_ownsPortForward = false;
Logger.LogError("Failed setting up adb port forward." +
" This might lead to problems communicating with Android application." +
- " Make sure env variable ANDROID_SDK_ROOT is set and points to an Android SDK." +
+ " Make sure env variable $ANDROID_HOME is set and points to an Android SDK." +
$" Executing with unknown adb status for port {_localPort}.");
return;
}
diff --git a/src/Tools/dotnet-dsrouter/DiagnosticsServerRouterCommands.cs b/src/Tools/dotnet-dsrouter/DiagnosticsServerRouterCommands.cs
index f7f64a122f..bc0b0a3473 100644
--- a/src/Tools/dotnet-dsrouter/DiagnosticsServerRouterCommands.cs
+++ b/src/Tools/dotnet-dsrouter/DiagnosticsServerRouterCommands.cs
@@ -357,41 +357,41 @@ public async Task RunIpcClientWebSocketServerRouter(CancellationToken token
}
}
- public async Task RunIpcServerIOSSimulatorRouter(CancellationToken token, int runtimeTimeout, string verbose, bool info)
+ public async Task RunIpcServerIOSSimulatorRouter(CancellationToken token, int runtimeTimeout, string verbose, bool info, string parentProcess)
{
if (info || ParseLogLevel(verbose) <= LogLevel.Information)
{
- logRouterUsageInfo("ios simulator", "127.0.0.1:9000", true);
+ logRouterUsageInfo("ios simulator", "127.0.0.1", "9000", true, parentProcess);
}
return await RunIpcServerTcpClientRouter(token, "", "127.0.0.1:9000", runtimeTimeout, verbose, "").ConfigureAwait(false);
}
- public async Task RunIpcServerIOSRouter(CancellationToken token, int runtimeTimeout, string verbose, bool info)
+ public async Task RunIpcServerIOSRouter(CancellationToken token, int runtimeTimeout, string verbose, bool info, string parentProcess)
{
if (info || ParseLogLevel(verbose) <= LogLevel.Information)
{
- logRouterUsageInfo("ios device", "127.0.0.1:9000", true);
+ logRouterUsageInfo("ios device", "127.0.0.1", "9000", true, parentProcess);
}
return await RunIpcServerTcpClientRouter(token, "", "127.0.0.1:9000", runtimeTimeout, verbose, "iOS").ConfigureAwait(false);
}
- public async Task RunIpcServerAndroidEmulatorRouter(CancellationToken token, int runtimeTimeout, string verbose, bool info)
+ public async Task RunIpcServerAndroidEmulatorRouter(CancellationToken token, int runtimeTimeout, string verbose, bool info, string parentProcess)
{
if (info || ParseLogLevel(verbose) <= LogLevel.Information)
{
- logRouterUsageInfo("android emulator", "10.0.2.2:9000", false);
+ logRouterUsageInfo("android emulator", "10.0.2.2", "9000", false, parentProcess);
}
return await RunIpcServerTcpServerRouter(token, "", "127.0.0.1:9000", runtimeTimeout, verbose, "").ConfigureAwait(false);
}
- public async Task RunIpcServerAndroidRouter(CancellationToken token, int runtimeTimeout, string verbose, bool info)
+ public async Task RunIpcServerAndroidRouter(CancellationToken token, int runtimeTimeout, string verbose, bool info, string parentProcess)
{
if (info || ParseLogLevel(verbose) <= LogLevel.Information)
{
- logRouterUsageInfo("android device", "127.0.0.1:9000", false);
+ logRouterUsageInfo("android device", "127.0.0.1", "9000", false, parentProcess);
}
return await RunIpcServerTcpServerRouter(token, "", "127.0.0.1:9001", runtimeTimeout, verbose, "Android").ConfigureAwait(false);
@@ -501,7 +501,7 @@ private static LogLevel ParseLogLevel(string verbose)
return logLevel;
}
- private static void logRouterUsageInfo(string deviceName, string deviceTcpIpAddress, bool deviceListenMode)
+ private static void logRouterUsageInfo(string deviceName, string deviceTcpIpAddress, string deviceTcpIpPort, bool deviceListenMode, string parentProcess)
{
StringBuilder message = new();
@@ -509,13 +509,16 @@ private static void logRouterUsageInfo(string deviceName, string deviceTcpIpAddr
int pid = Process.GetCurrentProcess().Id;
message.AppendLine($"How to connect current dotnet-dsrouter pid={pid} with {deviceName} and diagnostics tooling.");
- message.AppendLine($"Start an application on {deviceName} with ONE of the following environment variables set:");
+ message.AppendLine($"Build and run your application on {deviceName} such as:");
message.AppendLine("[Default Tracing]");
- message.AppendLine($"DOTNET_DiagnosticPorts={deviceTcpIpAddress},nosuspend,{listenMode}");
+ message.AppendLine($"dotnet build -t:Run -c Release -p:DiagnosticAddress={deviceTcpIpAddress} -p:DiagnosticPort={deviceTcpIpPort} -p:DiagnosticSuspend=false -p:DiagnosticListenMode={listenMode}");
message.AppendLine("[Startup Tracing]");
- message.AppendLine($"DOTNET_DiagnosticPorts={deviceTcpIpAddress},suspend,{listenMode}");
- message.AppendLine($"Run diagnotic tool connecting application on {deviceName} through dotnet-dsrouter pid={pid}:");
- message.AppendLine($"dotnet-trace collect -p {pid}");
+ message.AppendLine($"dotnet build -t:Run -c Release -p:DiagnosticAddress={deviceTcpIpAddress} -p:DiagnosticPort={deviceTcpIpPort} -p:DiagnosticSuspend=true -p:DiagnosticListenMode={listenMode}");
+ if (string.IsNullOrEmpty(parentProcess))
+ {
+ message.AppendLine($"Run diagnotic tool connecting application on {deviceName} through dotnet-dsrouter pid={pid}:");
+ message.AppendLine($"dotnet-trace collect -p {pid}");
+ }
message.AppendLine($"See https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dsrouter for additional details and examples.");
ConsoleColor currentColor = Console.ForegroundColor;
diff --git a/src/Tools/dotnet-dsrouter/Program.cs b/src/Tools/dotnet-dsrouter/Program.cs
index 3738e1b876..bfd3deecfd 100644
--- a/src/Tools/dotnet-dsrouter/Program.cs
+++ b/src/Tools/dotnet-dsrouter/Program.cs
@@ -156,14 +156,15 @@ private static Command IOSSimulatorRouterCommand()
"Router is configured using an IPC server (connecting to by diagnostic tools) " +
"and a TCP/IP server (accepting runtime TCP client).")
{
- RuntimeTimeoutOption, VerboseOption, InfoOption, BlockedSignalsOption
+ RuntimeTimeoutOption, VerboseOption, InfoOption, BlockedSignalsOption, ParentProcessOption
};
command.SetAction((parseResult, ct) => new DiagnosticsServerRouterCommands().RunIpcServerIOSSimulatorRouter(
ct,
runtimeTimeout: parseResult.GetValue(RuntimeTimeoutOption),
verbose: parseResult.GetValue(VerboseOption),
- info: parseResult.GetValue(InfoOption)
+ info: parseResult.GetValue(InfoOption),
+ parentProcess: parseResult.GetValue(ParentProcessOption)
));
return command;
@@ -177,14 +178,15 @@ private static Command IOSRouterCommand()
"Router is configured using an IPC server (connecting to by diagnostic tools) " +
"and a TCP/IP client (connecting runtime TCP server over usbmux).")
{
- RuntimeTimeoutOption, VerboseOption, InfoOption, BlockedSignalsOption
+ RuntimeTimeoutOption, VerboseOption, InfoOption, BlockedSignalsOption, ParentProcessOption
};
command.SetAction((parseResult, ct) => new DiagnosticsServerRouterCommands().RunIpcServerIOSRouter(
ct,
runtimeTimeout: parseResult.GetValue(RuntimeTimeoutOption),
verbose: parseResult.GetValue(VerboseOption),
- info: parseResult.GetValue(InfoOption)
+ info: parseResult.GetValue(InfoOption),
+ parentProcess: parseResult.GetValue(ParentProcessOption)
));
return command;
@@ -198,14 +200,16 @@ private static Command AndroidEmulatorRouterCommand()
"Router is configured using an IPC server (connecting to by diagnostic tools) " +
"and a TCP/IP server (accepting runtime TCP client).")
{
- RuntimeTimeoutOption, VerboseOption, InfoOption, BlockedSignalsOption
+ RuntimeTimeoutOption, VerboseOption, InfoOption, BlockedSignalsOption, ParentProcessOption
};
command.SetAction((parseResult, ct) => new DiagnosticsServerRouterCommands().RunIpcServerAndroidEmulatorRouter(
ct,
runtimeTimeout: parseResult.GetValue(RuntimeTimeoutOption),
verbose: parseResult.GetValue(VerboseOption),
- info: parseResult.GetValue(InfoOption)));
+ info: parseResult.GetValue(InfoOption),
+ parentProcess: parseResult.GetValue(ParentProcessOption)
+ ));
return command;
}
@@ -218,14 +222,16 @@ private static Command AndroidRouterCommand()
"Router is configured using an IPC server (connecting to by diagnostic tools) " +
"and a TCP/IP server (accepting runtime TCP client).")
{
- RuntimeTimeoutOption, VerboseOption, InfoOption, BlockedSignalsOption
+ RuntimeTimeoutOption, VerboseOption, InfoOption, BlockedSignalsOption, ParentProcessOption
};
command.SetAction((parseResult, ct) => new DiagnosticsServerRouterCommands().RunIpcServerAndroidRouter(
ct,
runtimeTimeout: parseResult.GetValue(RuntimeTimeoutOption),
verbose: parseResult.GetValue(VerboseOption),
- info: parseResult.GetValue(InfoOption)));
+ info: parseResult.GetValue(InfoOption),
+ parentProcess: parseResult.GetValue(ParentProcessOption)
+ ));
return command;
}
@@ -289,7 +295,7 @@ private static Command AndroidRouterCommand()
private static readonly Option ForwardPortOption =
new("--forward-port", "-fp")
{
- Description = "Enable port forwarding, values Android|iOS for TcpClient and only Android for TcpServer. Make sure to set ANDROID_SDK_ROOT before using this option on Android."
+ Description = "Enable port forwarding, values Android|iOS for TcpClient and only Android for TcpServer. For Android, optionally set $ANDROID_HOME to a valid Android SDK path."
};
private static readonly Option BlockedSignalsOption =
@@ -304,6 +310,14 @@ private static Command AndroidRouterCommand()
Description = "Print info on how to use current dotnet-dsrouter instance with application and diagnostic tooling."
};
+ private static readonly Option ParentProcessOption =
+ new("--parentprocess")
+ {
+ Description = "If dsrouter was launched from dotnet-trace or another .NET diagnostic tool, contains the parent process ID and name: --parentprocess pid:name",
+ DefaultValueFactory = _ => "",
+ Hidden = true
+ };
+
private static Task Main(string[] args)
{
RootCommand rootCommand = new()
diff --git a/src/Tools/dotnet-dsrouter/dotnet-dsrouter.csproj b/src/Tools/dotnet-dsrouter/dotnet-dsrouter.csproj
index a84ad77b2c..ebed4febb6 100644
--- a/src/Tools/dotnet-dsrouter/dotnet-dsrouter.csproj
+++ b/src/Tools/dotnet-dsrouter/dotnet-dsrouter.csproj
@@ -27,6 +27,7 @@
+
diff --git a/src/Tools/dotnet-dump/dotnet-dump.csproj b/src/Tools/dotnet-dump/dotnet-dump.csproj
index 354c4aad45..53e283c64d 100644
--- a/src/Tools/dotnet-dump/dotnet-dump.csproj
+++ b/src/Tools/dotnet-dump/dotnet-dump.csproj
@@ -22,7 +22,8 @@
-
+
+
diff --git a/src/Tools/dotnet-gcdump/dotnet-gcdump.csproj b/src/Tools/dotnet-gcdump/dotnet-gcdump.csproj
index 4ed980c456..4586ecfc20 100644
--- a/src/Tools/dotnet-gcdump/dotnet-gcdump.csproj
+++ b/src/Tools/dotnet-gcdump/dotnet-gcdump.csproj
@@ -27,6 +27,7 @@
+
diff --git a/src/Tools/dotnet-stack/dotnet-stack.csproj b/src/Tools/dotnet-stack/dotnet-stack.csproj
index f58adf089f..beacb323f4 100644
--- a/src/Tools/dotnet-stack/dotnet-stack.csproj
+++ b/src/Tools/dotnet-stack/dotnet-stack.csproj
@@ -26,6 +26,7 @@
+
diff --git a/src/Tools/dotnet-symbol/Program.cs b/src/Tools/dotnet-symbol/Program.cs
index 8aa07ddeb7..dc7d330eb8 100644
--- a/src/Tools/dotnet-symbol/Program.cs
+++ b/src/Tools/dotnet-symbol/Program.cs
@@ -343,6 +343,8 @@ private IEnumerable GetKeys()
foreach (string inputFile in inputFiles)
{
+ Tracer.Verbose($"Generating SymbolStore lookup keys for `{inputFile}`...");
+ int count = 0;
foreach (KeyGenerator generator in GetKeyGenerators(inputFile))
{
KeyTypeFlags flags = KeyTypeFlags.None;
@@ -381,9 +383,18 @@ private IEnumerable GetKeys()
}
foreach (SymbolStoreKeyWrapper wrapper in generator.GetKeys(flags).Select((key) => new SymbolStoreKeyWrapper(key, inputFile)))
{
+ count++;
yield return wrapper;
}
}
+ if (count > 0)
+ {
+ Tracer.Verbose($"Generated {count} SymbolStoreKeys for `{inputFile}`.");
+ }
+ else
+ {
+ Tracer.Verbose($"Could not generate SymbolStoreKeys for `{inputFile}`.");
+ }
}
}
diff --git a/src/Tools/dotnet-trace/CommandLine/Commands/CollectCommand.cs b/src/Tools/dotnet-trace/CommandLine/Commands/CollectCommand.cs
index 054a6e83a7..7376b72ca0 100644
--- a/src/Tools/dotnet-trace/CommandLine/Commands/CollectCommand.cs
+++ b/src/Tools/dotnet-trace/CommandLine/Commands/CollectCommand.cs
@@ -13,16 +13,25 @@
using System.Threading.Tasks;
using Microsoft.Diagnostics.Monitoring.EventPipe;
using Microsoft.Diagnostics.NETCore.Client;
+using Microsoft.Diagnostics.Tools.Common;
using Microsoft.Internal.Common;
using Microsoft.Internal.Common.Utils;
namespace Microsoft.Diagnostics.Tools.Trace
{
- internal static class CollectCommandHandler
+ internal class CollectCommandHandler
{
- internal static bool IsQuiet { get; set; }
+ internal bool IsQuiet { get; set; }
- private static void ConsoleWriteLine(string str)
+ public CollectCommandHandler()
+ {
+ Console = new DefaultConsole(false);
+ StartTraceSessionAsync = async (client, config, ct) => new CollectSession(await client.StartEventPipeSessionAsync(config, ct).ConfigureAwait(false));
+ ResumeRuntimeAsync = (client, ct) => client.ResumeRuntimeAsync(ct);
+ CollectSessionEventStream = (name) => new FileStream(name, FileMode.Create, FileAccess.Write);
+ }
+
+ private void ConsoleWriteLine(string str = "")
{
if (!IsQuiet)
{
@@ -54,7 +63,7 @@ private static void ConsoleWriteLine(string str)
/// A string, parsed as [payload_field_name]:[payload_field_value] pairs separated by commas, that will stop the trace upon hitting an event with a matching payload. Requires `--stopping-event-provider-name` and `--stopping-event-event-name` to be set.
/// Collect rundown events.
///
- private static async Task Collect(CancellationToken ct, CommandLineConfiguration cliConfig, int processId, FileInfo output, uint buffersize, string providers, string profile, TraceFileFormat format, TimeSpan duration, string clrevents, string clreventlevel, string name, string diagnosticPort, bool showchildio, bool resumeRuntime, string stoppingEventProviderName, string stoppingEventEventName, string stoppingEventPayloadFilter, bool? rundown, string dsrouter)
+ internal async Task Collect(CancellationToken ct, CommandLineConfiguration cliConfig, int processId, FileInfo output, uint buffersize, string providers, string profile, TraceFileFormat format, TimeSpan duration, string clrevents, string clreventlevel, string name, string diagnosticPort, bool showchildio, bool resumeRuntime, string stoppingEventProviderName, string stoppingEventEventName, string stoppingEventPayloadFilter, bool? rundown, string dsrouter)
{
bool collectionStopped = false;
bool cancelOnEnter = true;
@@ -276,11 +285,11 @@ private static async Task Collect(CancellationToken ct, CommandLineConfigur
using (VirtualTerminalMode vTermMode = printStatusOverTime ? VirtualTerminalMode.TryEnable() : null)
{
- EventPipeSession session = null;
+ ICollectSession session = null;
try
{
EventPipeSessionConfiguration config = new(providerCollection, (int)buffersize, rundownKeyword: rundownKeyword, requestStackwalk: true);
- session = await diagnosticsClient.StartEventPipeSessionAsync(config, ct).ConfigureAwait(false);
+ session = await StartTraceSessionAsync(diagnosticsClient, config, ct).ConfigureAwait(false);
}
catch (UnsupportedCommandException e)
{
@@ -298,7 +307,7 @@ private static async Task Collect(CancellationToken ct, CommandLineConfigur
// Debug.Assert(rundownKeyword != EventPipeSession.DefaultRundownKeyword);
//
EventPipeSessionConfiguration config = new(providerCollection, (int)buffersize, rundownKeyword: EventPipeSession.DefaultRundownKeyword, requestStackwalk: true);
- session = await diagnosticsClient.StartEventPipeSessionAsync(config, ct).ConfigureAwait(false);
+ session = await StartTraceSessionAsync(diagnosticsClient, config, ct).ConfigureAwait(false);
}
else if (retryStrategy == RetryStrategy.DropKeywordDropRundown)
{
@@ -314,7 +323,7 @@ private static async Task Collect(CancellationToken ct, CommandLineConfigur
// Debug.Assert(rundownKeyword != EventPipeSession.DefaultRundownKeyword);
//
EventPipeSessionConfiguration config = new(providerCollection, (int)buffersize, rundownKeyword: 0, requestStackwalk: true);
- session = await diagnosticsClient.StartEventPipeSessionAsync(config, ct).ConfigureAwait(false);
+ session = await StartTraceSessionAsync(diagnosticsClient, config, ct).ConfigureAwait(false);
}
else
{
@@ -331,7 +340,7 @@ private static async Task Collect(CancellationToken ct, CommandLineConfigur
{
try
{
- await diagnosticsClient.ResumeRuntimeAsync(ct).ConfigureAwait(false);
+ await ResumeRuntimeAsync(diagnosticsClient, ct).ConfigureAwait(false);
}
catch (UnsupportedCommandException)
{
@@ -357,18 +366,18 @@ private static async Task Collect(CancellationToken ct, CommandLineConfigur
LineRewriter rewriter = null;
- using (FileStream fs = new(output.FullName, FileMode.Create, FileAccess.Write))
+ using (Stream eventStream = CollectSessionEventStream(output.FullName))
{
ConsoleWriteLine($"Process : {processMainModuleFileName}");
- ConsoleWriteLine($"Output File : {fs.Name}");
+ ConsoleWriteLine($"Output File : {output.FullName}");
if (shouldStopAfterDuration)
{
ConsoleWriteLine($"Trace Duration : {duration:dd\\:hh\\:mm\\:ss}");
}
- ConsoleWriteLine("\n\n");
+ ConsoleWriteLine();
+ ConsoleWriteLine();
- FileInfo fileInfo = new(output.FullName);
EventMonitor eventMonitor = null;
Task copyTask = null;
if (hasStoppingEventProviderName)
@@ -383,14 +392,14 @@ private static async Task Collect(CancellationToken ct, CommandLineConfigur
onPayloadFilterMismatch: (traceEvent) => {
ConsoleWriteLine($"One or more field names specified in the payload filter for event '{traceEvent.ProviderName}/{traceEvent.EventName}' do not match any of the known field names: '{string.Join(' ', traceEvent.PayloadNames)}'. As a result the requested stopping event is unreachable; will continue to collect the trace for the remaining specified duration.");
},
- eventStream: new PassthroughStream(session.EventStream, fs, (int)buffersize, leaveDestinationStreamOpen: true),
+ eventStream: new PassthroughStream(session.EventStream, eventStream, (int)buffersize, leaveDestinationStreamOpen: true),
callOnEventOnlyOnce: true);
copyTask = eventMonitor.ProcessAsync(CancellationToken.None);
}
else
{
- copyTask = session.EventStream.CopyToAsync(fs);
+ copyTask = session.EventStream.CopyToAsync(eventStream);
}
Task shouldExitTask = copyTask.ContinueWith(
(task) => shouldExit.Set(),
@@ -400,7 +409,7 @@ private static async Task Collect(CancellationToken ct, CommandLineConfigur
if (printStatusOverTime)
{
- rewriter = new LineRewriter { LineToClear = Console.CursorTop - 1 };
+ rewriter = new LineRewriter(Console) { LineToClear = Console.CursorTop - 1 };
Console.CursorVisible = false;
if (!rewriter.IsRewriteConsoleLineSupported)
{
@@ -408,6 +417,7 @@ private static async Task Collect(CancellationToken ct, CommandLineConfigur
}
}
+ FileInfo fileInfo = new(output.FullName);
Action printStatus = () => {
if (printStatusOverTime && rewriter.IsRewriteConsoleLineSupported)
{
@@ -460,7 +470,8 @@ private static async Task Collect(CancellationToken ct, CommandLineConfigur
shouldExitTask.Wait();
}
- ConsoleWriteLine($"\nTrace completed.");
+ ConsoleWriteLine();
+ ConsoleWriteLine("Trace completed.");
if (format != TraceFileFormat.NetTrace)
{
@@ -491,7 +502,8 @@ private static async Task Collect(CancellationToken ct, CommandLineConfigur
}
catch (OperationCanceledException)
{
- ConsoleWriteLine("\nTrace collection canceled.");
+ ConsoleWriteLine();
+ ConsoleWriteLine("Trace collection canceled.");
collectionStopped = true;
ret = (int)ReturnCode.TracingError;
}
@@ -524,7 +536,7 @@ private static async Task Collect(CancellationToken ct, CommandLineConfigur
return ret;
}
- private static void PrintProviders(IReadOnlyList providers, Dictionary enabledBy)
+ private void PrintProviders(IReadOnlyList providers, Dictionary enabledBy)
{
ConsoleWriteLine("");
ConsoleWriteLine(string.Format("{0, -40}", "Provider Name") + string.Format("{0, -20}", "Keywords") +
@@ -585,27 +597,30 @@ public static Command CollectCommand()
collectCommand.TreatUnmatchedTokensAsErrors = false; // see the logic in Program.Main that handles UnmatchedTokens
collectCommand.Description = "Collects a diagnostic trace from a currently running process or launch a child process and trace it. Append -- to the collect command to instruct the tool to run a command and trace it immediately. When tracing a child process, the exit code of dotnet-trace shall be that of the traced process unless the trace process encounters an error.";
- collectCommand.SetAction((parseResult, ct) => Collect(
- ct,
- cliConfig: parseResult.Configuration,
- processId: parseResult.GetValue(CommonOptions.ProcessIdOption),
- output: parseResult.GetValue(OutputPathOption),
- buffersize: parseResult.GetValue(CircularBufferOption),
- providers: parseResult.GetValue(ProvidersOption) ?? string.Empty,
- profile: parseResult.GetValue(ProfileOption) ?? string.Empty,
- format: parseResult.GetValue(CommonOptions.FormatOption),
- duration: parseResult.GetValue(DurationOption),
- clrevents: parseResult.GetValue(CLREventsOption) ?? string.Empty,
- clreventlevel: parseResult.GetValue(CLREventLevelOption) ?? string.Empty,
- name: parseResult.GetValue(CommonOptions.NameOption),
- diagnosticPort: parseResult.GetValue(DiagnosticPortOption) ?? string.Empty,
- showchildio: parseResult.GetValue(ShowChildIOOption),
- resumeRuntime: parseResult.GetValue(ResumeRuntimeOption),
- stoppingEventProviderName: parseResult.GetValue(StoppingEventProviderNameOption),
- stoppingEventEventName: parseResult.GetValue(StoppingEventEventNameOption),
- stoppingEventPayloadFilter: parseResult.GetValue(StoppingEventPayloadFilterOption),
- rundown: parseResult.GetValue(RundownOption),
- dsrouter: parseResult.GetValue(DSRouterOption)));
+ collectCommand.SetAction((parseResult, ct) =>
+ {
+ CollectCommandHandler handler = new();
+ return handler.Collect(ct,
+ cliConfig: parseResult.Configuration,
+ processId: parseResult.GetValue(CommonOptions.ProcessIdOption),
+ output: parseResult.GetValue(OutputPathOption),
+ buffersize: parseResult.GetValue(CircularBufferOption),
+ providers: parseResult.GetValue(ProvidersOption) ?? string.Empty,
+ profile: parseResult.GetValue(ProfileOption) ?? string.Empty,
+ format: parseResult.GetValue(CommonOptions.FormatOption),
+ duration: parseResult.GetValue(DurationOption),
+ clrevents: parseResult.GetValue(CLREventsOption) ?? string.Empty,
+ clreventlevel: parseResult.GetValue(CLREventLevelOption) ?? string.Empty,
+ name: parseResult.GetValue(CommonOptions.NameOption),
+ diagnosticPort: parseResult.GetValue(DiagnosticPortOption) ?? string.Empty,
+ showchildio: parseResult.GetValue(ShowChildIOOption),
+ resumeRuntime: parseResult.GetValue(ResumeRuntimeOption),
+ stoppingEventProviderName: parseResult.GetValue(StoppingEventProviderNameOption),
+ stoppingEventEventName: parseResult.GetValue(StoppingEventEventNameOption),
+ stoppingEventPayloadFilter: parseResult.GetValue(StoppingEventPayloadFilterOption),
+ rundown: parseResult.GetValue(RundownOption),
+ dsrouter: parseResult.GetValue(DSRouterOption));
+ });
return collectCommand;
}
@@ -714,5 +729,28 @@ public static Command CollectCommand()
{
Description = @"The dsrouter command to start. Value should be one of ios, ios-sim, android, android-emu. Run `dotnet-dsrouter -h` for more information."
};
+
+#region testing seams
+ // Abstraction for Collect's usage of EventPipeSession to facilitate testing.
+ internal interface ICollectSession : IDisposable
+ {
+ Stream EventStream { get; }
+ void Stop();
+ }
+
+ private sealed class CollectSession : ICollectSession
+ {
+ private readonly EventPipeSession _session;
+ public CollectSession(EventPipeSession session) => _session = session;
+ public Stream EventStream => _session.EventStream;
+ public void Stop() => _session.Stop();
+ public void Dispose() => _session.Dispose();
+ }
+
+ internal Func> StartTraceSessionAsync { get; set; }
+ internal Func ResumeRuntimeAsync { get; set; }
+ internal Func CollectSessionEventStream { get; set; }
+ internal IConsole Console { get; set; }
+#endregion
}
}
diff --git a/src/shared/debug/dbgutil/elfreader.cpp b/src/shared/debug/dbgutil/elfreader.cpp
index b537b4e283..2346e8e828 100644
--- a/src/shared/debug/dbgutil/elfreader.cpp
+++ b/src/shared/debug/dbgutil/elfreader.cpp
@@ -97,7 +97,7 @@ class ElfReaderFromFile : public ElfReader
}
}
- virtual bool ReadMemory(void* address, void* buffer, size_t size)
+ virtual bool ReadMemory(const void* address, void* buffer, size_t size)
{
if (m_file == NULL)
{
@@ -163,7 +163,7 @@ TryGetBuildIdFromFile(const WCHAR* modulePath, BYTE* buffer, ULONG bufferSize, P
#endif // HOST_UNIX
-typedef bool (*ReadMemoryCallback)(void* address, void* buffer, size_t size);
+typedef bool (*ReadMemoryCallback)(const void* address, void* buffer, size_t size);
class ElfReaderWithCallback : public ElfReader
{
@@ -181,7 +181,7 @@ class ElfReaderWithCallback : public ElfReader
}
private:
- virtual bool ReadMemory(void* address, void* buffer, size_t size)
+ virtual bool ReadMemory(const void* address, void* buffer, size_t size)
{
return m_readMemory(address, buffer, size);
}
@@ -225,7 +225,7 @@ class ElfReaderExport : public ElfReader
}
private:
- virtual bool ReadMemory(void* address, void* buffer, size_t size)
+ virtual bool ReadMemory(const void* address, void* buffer, size_t size)
{
uint32_t read = 0;
return SUCCEEDED(m_dataTarget->ReadVirtual(reinterpret_cast(address), reinterpret_cast(buffer), (uint32_t)size, &read));
diff --git a/src/shared/debug/dbgutil/elfreader.h b/src/shared/debug/dbgutil/elfreader.h
index 73daa53d05..7235fa6128 100644
--- a/src/shared/debug/dbgutil/elfreader.h
+++ b/src/shared/debug/dbgutil/elfreader.h
@@ -75,7 +75,7 @@ class ElfReader
virtual void VisitModule(uint64_t baseAddress, std::string& moduleName) { };
#endif
virtual void VisitProgramHeader(uint64_t loadbias, uint64_t baseAddress, ElfW(Phdr)* phdr) { };
- virtual bool ReadMemory(void* address, void* buffer, size_t size) = 0;
+ virtual bool ReadMemory(const void* address, void* buffer, size_t size) = 0;
virtual void Trace(const char* format, ...) { };
virtual void TraceVerbose(const char* format, ...) { };
};
diff --git a/src/shared/pal/src/init/pal.cpp b/src/shared/pal/src/init/pal.cpp
index f6ea18445d..54e2259223 100644
--- a/src/shared/pal/src/init/pal.cpp
+++ b/src/shared/pal/src/init/pal.cpp
@@ -81,6 +81,7 @@ int CacheLineSize;
#ifdef __FreeBSD__
#include
+#include
#endif
#include
diff --git a/src/shared/pal/src/thread/process.cpp b/src/shared/pal/src/thread/process.cpp
index a8dcc09414..e25dbcf908 100644
--- a/src/shared/pal/src/thread/process.cpp
+++ b/src/shared/pal/src/thread/process.cpp
@@ -79,6 +79,10 @@ SET_DEFAULT_DEBUG_CHANNEL(PROCESS); // some headers have code with asserts, so d
# endif
#endif
+#if HAVE_KQUEUE
+#include
+#endif
+
#ifdef __APPLE__
#include
#include
@@ -90,6 +94,10 @@ extern "C"
{
# include
}
+
+// On macOS 26, sem_open fails if debugger and debugee are signed with different team ids.
+// Use fifos instead of semaphores to avoid this issue, https://github.com/dotnet/runtime/issues/116545
+#define ENABLE_RUNTIME_EVENTS_OVER_PIPES
#endif // __APPLE__
#ifdef __NetBSD__
@@ -259,6 +267,13 @@ DWORD
StartupHelperThread(
LPVOID p);
+#ifdef ENABLE_RUNTIME_EVENTS_OVER_PIPES
+static
+DWORD
+StartupHelperRuntimeEventsThread(
+ LPVOID p);
+#endif
+
static
BOOL
GetProcessIdDisambiguationKey(
@@ -1222,18 +1237,22 @@ static uint64_t HashSemaphoreName(uint64_t a, uint64_t b)
static const char *const TwoWayNamedPipePrefix = "clr-debug-pipe";
static const char* IpcNameFormat = "%s-%d-%llu-%s";
+#ifdef ENABLE_RUNTIME_EVENTS_OVER_PIPES
+static const char* RuntimeStartupPipeName = "st";
+static const char* RuntimeContinuePipeName = "co";
+#define PIPE_OPEN_RETRY_DELAY_NS 500000000 // 500 ms
+#endif // ENABLE_RUNTIME_EVENTS_OVER_PIPES
+
class PAL_RuntimeStartupHelper
{
LONG m_ref;
- bool m_canceled;
+ volatile bool m_canceled;
+ volatile PAL_ERROR m_error;
PPAL_STARTUP_CALLBACK m_callback;
PVOID m_parameter;
DWORD m_threadId;
HANDLE m_threadHandle;
DWORD m_processId;
-#ifdef __APPLE__
- char m_applicationGroupId[MAX_APPLICATION_GROUP_ID_LENGTH+1];
-#endif // __APPLE__
char m_startupSemName[CLR_SEM_MAX_NAMELEN];
char m_continueSemName[CLR_SEM_MAX_NAMELEN];
@@ -1248,19 +1267,336 @@ class PAL_RuntimeStartupHelper
// registered (m_callback) returns.
sem_t *m_continueSem;
- LPCSTR GetApplicationGroupId() const
+#ifdef __APPLE__
+ char m_applicationGroupId[MAX_APPLICATION_GROUP_ID_LENGTH+1];
+#endif // __APPLE__
+
+#ifdef ENABLE_RUNTIME_EVENTS_OVER_PIPES
+ char m_startupPipeName[MAX_DEBUGGER_TRANSPORT_PIPE_NAME_LENGTH];
+ char m_continuePipeName[MAX_DEBUGGER_TRANSPORT_PIPE_NAME_LENGTH];
+ DWORD m_runtimeEventsThreadId;
+ HANDLE m_runtimeEventsThreadHandle;
+
+ typedef enum
+ {
+ RuntimeEvent_Unknown = 0,
+ RuntimeEvent_Started = 1,
+ RuntimeEvent_Continue = 2,
+ } RuntimeEvent;
+
+ static void CloseFd(int fd)
+ {
+ if (fd != -1)
+ {
+ while (close(fd) < 0 && errno == EINTR);
+ }
+ }
+
+ static ssize_t ReadIOFunc(int fd, void *buf, size_t count)
+ {
+ return read(fd, buf, count);
+ }
+
+ static ssize_t WriteIOFunc(int fd, void *buf, size_t count)
+ {
+ return write(fd, buf, count);
+ }
+
+ static BOOL CreatePipe(const char* name)
+ {
+ int result = -1;
+ while ((result = mkfifo(name, S_IRWXU)) < 0 && errno == EINTR);
+ if (result == -1)
+ {
+ if (errno == EEXIST)
+ {
+ unlink(name);
+ while ((result = mkfifo(name, S_IRWXU)) < 0 && errno == EINTR);
+ }
+ }
+
+ if (result == -1)
+ {
+ TRACE("mkfifo failed: errno is %d (%s)\n", errno, strerror(errno));
+ return FALSE;
+ }
+
+ return TRUE;
+ }
+
+ static int OpenNonBlockingPipe(int kq, const char* name, int mode, volatile bool *canceled)
+ {
+ int fd = -1;
+ int retries = 0;
+ int flags = mode | O_NONBLOCK;
+
+#if defined(FD_CLOEXEC)
+ flags |= O_CLOEXEC;
+#endif
+
+ while (!*canceled && fd == -1)
+ {
+ fd = open(name, flags);
+ if (fd == -1)
+ {
+ if (mode == O_WRONLY && errno == ENXIO)
+ {
+ PAL_nanosleep(PIPE_OPEN_RETRY_DELAY_NS);
+ continue;
+ }
+ else if (errno == EINTR)
+ {
+ continue;
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+
+ if (fd == -1)
+ {
+ if (!*canceled)
+ {
+ TRACE("open failed: errno is %d (%s)\n", errno, strerror(errno));
+ }
+ else
+ {
+ TRACE("open canceled\n");
+ }
+ return -1;
+ }
+
+#if HAVE_KQUEUE && !HAVE_BROKEN_FIFO_KEVENT
+ struct kevent change;
+ EV_SET(&change, fd, (mode & O_ACCMODE) == O_RDONLY ? EVFILT_READ : EVFILT_WRITE, EV_ADD | EV_DISABLE, 0, 0, NULL);
+ if (kevent(kq, &change, 1, NULL, 0, NULL) == -1)
+ {
+ TRACE("kevent failed: errno is %d (%s)\n", errno, strerror(errno));
+ CloseFd(fd);
+ return -1;
+ }
+#endif // HAVE_KQUEUE && !HAVE_BROKEN_FIFO_KEVENT
+
+ return fd;
+ }
+
+#if HAVE_KQUEUE && !HAVE_BROKEN_FIFO_KEVENT
+ static int DoNonBlockingPipeIO(int kq, int fd, void *buf, size_t count, int timeout, ssize_t (*io_func)(int fd, void *buf, size_t count), short filter)
+ {
+ int result = -1;
+ struct timespec timeout_spec;
+ struct timespec *timeout_ptr = NULL;
+ if (timeout > 0)
+ {
+ timeout_spec.tv_sec = timeout / 1000;
+ timeout_spec.tv_nsec = (timeout % 1000) * 1000000L;
+ timeout_ptr = &timeout_spec;
+ }
+
+ struct kevent change;
+ EV_SET(&change, fd, filter, EV_ENABLE, 0, 0, NULL);
+ if (kevent(kq, &change, 1, NULL, 0, NULL) == -1)
+ {
+ return -1;
+ }
+
+ while (1)
+ {
+ struct kevent event;
+ int nev = kevent(kq, NULL, 0, &event, 1, timeout_ptr);
+ if (nev == -1 && errno == EINTR)
+ {
+ continue;
+ }
+ else if (nev == 0)
+ {
+ // Check for timeout or EOF.
+ int n = io_func(fd, buf, count);
+ if (n > 0)
+ {
+ result = n;
+ break;
+ }
+ else if (n == 0)
+ {
+ // EOF - pipe closed
+ result = -2;
+ break;
+ }
+ else if (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK)
+ {
+ // Timeout.
+ result = 0;
+ break;
+ }
+ else
+ {
+ break;
+ }
+ }
+ else if (nev > 0)
+ {
+ if (event.filter == filter && event.ident == fd)
+ {
+ if (event.flags & EV_EOF)
+ {
+ result = -2;
+ break;
+ }
+
+ int n = io_func(fd, buf, count);
+ if (n > 0)
+ {
+ result = n;
+ break;
+ }
+ else if (n == 0)
+ {
+ // EOF - pipe closed
+ result = -2;
+ break;
+ }
+ else if (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK)
+ {
+ continue;
+ }
+ else
+ {
+ break;
+ }
+ }
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ EV_SET(&change, fd, filter, EV_DISABLE, 0, 0, NULL);
+ kevent(kq, &change, 1, NULL, 0, NULL);
+
+ return result;
+ }
+
+ static int ReadNonBlockingPipe(int kq, int fd, void *buf, size_t count, int timeout)
+ {
+ return DoNonBlockingPipeIO(kq, fd, buf, count, timeout, ReadIOFunc, EVFILT_READ);
+ }
+
+ static int WriteNonBlockingPipe(int kq, int fd, const void *buf, size_t count, int timeout)
+ {
+ return DoNonBlockingPipeIO(kq, fd, (void *)buf, count, timeout, WriteIOFunc, EVFILT_WRITE);
+ }
+#else
+ static int DoNonBlockingPipeIO(int fd, void *buf, size_t count, int timeout, ssize_t (*io_func)(int fd, void *buf, size_t count), short filter)
+ {
+ struct pollfd pfd;
+ pfd.fd = fd;
+ pfd.events = filter;
+
+ while (1)
+ {
+ int poll_ret = poll(&pfd, 1, timeout);
+ if (poll_ret > 0)
+ {
+ if (pfd.revents & filter)
+ {
+ int n = io_func(fd, buf, count);
+ if (n > 0)
+ {
+ return n;
+ }
+ else if (n == 0)
+ {
+ // EOF - pipe closed
+ return -2;
+ }
+ else if (errno == EAGAIN || errno == EWOULDBLOCK)
+ {
+ continue;
+ }
+ else if (errno == EINTR)
+ {
+ continue;
+ }
+ else
+ {
+ return -1;
+ }
+ }
+ else if (pfd.revents & (POLLERR | POLLHUP | POLLNVAL))
+ {
+ return -1;
+ }
+ }
+ else if (poll_ret == 0)
+ {
+ // Check for timeout or EOF.
+ int n = io_func(fd, buf, count);
+ if (n > 0)
+ {
+ return n;
+ }
+ else if (n == 0)
+ {
+ // EOF - pipe closed
+ return -2;
+ }
+ else if (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK)
+ {
+ // Timeout.
+ return 0;
+ }
+ else
+ {
+ return -1;
+ }
+ }
+ else if (errno == EINTR)
+ {
+ continue;
+ }
+ else
+ {
+ return -1;
+ }
+ }
+
+ return -1;
+ }
+
+ static int ReadNonBlockingPipe(int kq, int fd, void *buf, size_t count, int timeout)
+ {
+ return DoNonBlockingPipeIO(fd, buf, count, timeout, ReadIOFunc, POLLIN);
+ }
+
+ static int
+ WriteNonBlockingPipe(int kq, int fd, const void *buf, size_t count, int timeout)
{
+ return DoNonBlockingPipeIO(fd, (void *)buf, count, timeout, WriteIOFunc, POLLOUT);
+ }
+#endif // HAVE_KQUEUE && !HAVE_BROKEN_FIFO_KEVENT
+#endif // ENABLE_RUNTIME_EVENTS_OVER_PIPES
+
#ifdef __APPLE__
+ LPCSTR GetApplicationGroupId() const
+ {
return m_applicationGroupId[0] == '\0' ? nullptr : m_applicationGroupId;
-#else // __APPLE__
+ }
+#else
+ LPCSTR GetApplicationGroupId() const
+ {
return nullptr;
-#endif // __APPLE__
}
+#endif // __APPLE__
public:
PAL_RuntimeStartupHelper(DWORD dwProcessId, PPAL_STARTUP_CALLBACK pfnCallback, PVOID parameter) :
m_ref(1),
m_canceled(false),
+ m_error(NO_ERROR),
m_callback(pfnCallback),
m_parameter(parameter),
m_threadId(0),
@@ -1268,6 +1604,10 @@ class PAL_RuntimeStartupHelper
m_processId(dwProcessId),
m_startupSem(SEM_FAILED),
m_continueSem(SEM_FAILED)
+#ifdef ENABLE_RUNTIME_EVENTS_OVER_PIPES
+ , m_runtimeEventsThreadId(0)
+ , m_runtimeEventsThreadHandle(NULL)
+#endif // ENABLE_RUNTIME_EVENTS_OVER_PIPES
{
}
@@ -1289,6 +1629,16 @@ class PAL_RuntimeStartupHelper
{
CloseHandle(m_threadHandle);
}
+
+#ifdef ENABLE_RUNTIME_EVENTS_OVER_PIPES
+ unlink(m_startupPipeName);
+ unlink(m_continuePipeName);
+
+ if (m_runtimeEventsThreadHandle != NULL)
+ {
+ CloseHandle(m_runtimeEventsThreadHandle);
+ }
+#endif // ENABLE_RUNTIME_EVENTS_OVER_PIPES
}
LONG AddRef()
@@ -1369,6 +1719,16 @@ class PAL_RuntimeStartupHelper
}
#endif // __APPLE__
+#ifdef ENABLE_RUNTIME_EVENTS_OVER_PIPES
+ PAL_GetTransportPipeName(m_startupPipeName, m_processId, GetApplicationGroupId(), RuntimeStartupPipeName);
+ PAL_GetTransportPipeName(m_continuePipeName, m_processId, GetApplicationGroupId(), RuntimeContinuePipeName);
+
+ TRACE("PAL_RuntimeStartupHelper.Register creating startup '%s' continue '%s' pipes\n", m_startupPipeName, m_continuePipeName);
+
+ CreatePipe(m_continuePipeName);
+ CreatePipe(m_startupPipeName);
+#endif // ENABLE_RUNTIME_EVENTS_OVER_PIPES
+
// See semaphore name format for details about this value. We store it so that
// it can be used by the cleanup code that removes the semaphore with sem_unlink.
ret = GetProcessIdDisambiguationKey(m_processId, &m_processIdDisambiguationKey);
@@ -1382,7 +1742,7 @@ class PAL_RuntimeStartupHelper
CreateSemaphoreName(m_startupSemName, RuntimeStartupSemaphoreName, unambiguousProcessDescriptor, GetApplicationGroupId());
CreateSemaphoreName(m_continueSemName, RuntimeContinueSemaphoreName, unambiguousProcessDescriptor, GetApplicationGroupId());
- TRACE("PAL_RuntimeStartupHelper.Register creating startup '%s' continue '%s'\n", m_startupSemName, m_continueSemName);
+ TRACE("PAL_RuntimeStartupHelper.Register creating startup '%s' continue '%s' semaphores\n", m_startupSemName, m_continueSemName);
// Create the continue semaphore first so we don't race with PAL_NotifyRuntimeStarted. This open will fail if another
// debugger is trying to attach to this process because the name will already exist.
@@ -1403,6 +1763,30 @@ class PAL_RuntimeStartupHelper
goto exit;
}
+#ifdef ENABLE_RUNTIME_EVENTS_OVER_PIPES
+ // Add a reference for the thread handler
+ AddRef();
+ pe = InternalCreateThread(
+ pThread,
+ NULL,
+ 0,
+ ::StartupHelperRuntimeEventsThread,
+ this,
+ 0,
+ UserCreatedThread,
+ &osThreadId,
+ &m_runtimeEventsThreadHandle);
+
+ if (NO_ERROR != pe)
+ {
+ TRACE("InternalCreateThread failed %d\n", pe);
+ Release();
+ goto exit;
+ }
+
+ m_runtimeEventsThreadId = (DWORD)osThreadId;
+#endif // ENABLE_RUNTIME_EVENTS_OVER_PIPES
+
// Add a reference for the thread handler
AddRef();
pe = InternalCreateThread(
@@ -1443,12 +1827,20 @@ class PAL_RuntimeStartupHelper
ASSERT("sem_post(startupSem) failed: errno is %d (%s)\n", errno, strerror(errno));
}
- // Don't need to wait for the worker thread if unregister called on it
+ // Don't need to wait for the worker threads if unregister called on it
if (m_threadId != (DWORD)THREADSilentGetCurrentThreadId())
{
// Wait for work thread to exit for 60 seconds
WaitForSingleObject(m_threadHandle, 60 * 1000);
}
+
+#ifdef ENABLE_RUNTIME_EVENTS_OVER_PIPES
+ if (m_runtimeEventsThreadId != (DWORD)THREADSilentGetCurrentThreadId())
+ {
+ // Wait for runtime events thread to exit for 60 seconds
+ WaitForSingleObject(m_runtimeEventsThreadHandle, 60 * 1000);
+ }
+#endif // ENABLE_RUNTIME_EVENTS_OVER_PIPES
}
//
@@ -1536,6 +1928,163 @@ class PAL_RuntimeStartupHelper
return pe;
}
+#ifdef ENABLE_RUNTIME_EVENTS_OVER_PIPES
+ void StartupHelperRuntimeEventsThread()
+ {
+ PAL_ERROR pe = NO_ERROR;
+ int offset = 0;
+ int kq = -1;
+ int continuePipeFd = -1;
+ int startupPipeFd = -1;
+
+#if HAVE_KQUEUE && !HAVE_BROKEN_FIFO_KEVENT
+ kq = kqueue();
+ if (kq == -1)
+ {
+ TRACE("StartupHelperRuntimeEventsThread: kqueue() failed: %d (%s)\n", errno, strerror(errno));
+ goto exit;
+ }
+#endif // HAVE_KQUEUE && !HAVE_BROKEN_FIFO_KEVENT
+
+ TRACE("StartupHelperRuntimeEventsThread: opening continue '%s' pipe\n", m_continuePipeName);
+
+ continuePipeFd = OpenNonBlockingPipe(kq, m_continuePipeName, O_WRONLY, &m_canceled);
+ if (continuePipeFd == -1)
+ {
+ if (m_canceled)
+ {
+ TRACE("StartupHelperRuntimeEventsThread: canceled opening continue pipe\n");
+ }
+ else
+ {
+ TRACE("StartupHelperRuntimeEventsThread: failed opening continue pipe\n");
+ }
+ goto exit;
+ }
+
+ TRACE("StartupHelperRuntimeEventsThread: opening startup '%s' pipe\n", m_startupPipeName);
+
+ startupPipeFd = OpenNonBlockingPipe(kq, m_startupPipeName, O_RDONLY, &m_canceled);
+ if (startupPipeFd == -1)
+ {
+ if (m_canceled)
+ {
+ TRACE("StartupHelperRuntimeEventsThread: canceled opening startup pipe\n");
+ }
+ else
+ {
+ TRACE("StartupHelperRuntimeEventsThread: failed opening startup pipe\n");
+ }
+ goto exit;
+ }
+
+ TRACE("StartupHelperRuntimeEventsThread: waiting on started event\n");
+
+ {
+ unsigned char event = (unsigned char)RuntimeEvent_Unknown;
+ unsigned char *buffer = &event;
+ int bytesToRead = sizeof(event);
+ int bytesRead = 0;
+
+ do
+ {
+ bytesRead = ReadNonBlockingPipe(kq, startupPipeFd, buffer + offset, bytesToRead - offset, 1000);
+ if (bytesRead > 0)
+ {
+ offset += bytesRead;
+ }
+ else if (bytesRead == 0)
+ {
+ // Timeout.
+ continue;
+ }
+ else if (bytesRead == -2 && offset == 0)
+ {
+ // Not connected yet, retry.
+ continue;
+ }
+ else
+ {
+ // Error or EOF
+ break;
+ }
+ }
+ while (!m_canceled && offset < bytesToRead);
+
+ if (offset == bytesToRead && event == (unsigned char)RuntimeEvent_Started)
+ {
+ TRACE("StartupHelperRuntimeEventsThread: received started event\n");
+ }
+ else if (m_canceled)
+ {
+ TRACE("StartupHelperRuntimeEventsThread: canceled waiting for started event\n");
+ }
+ else
+ {
+ TRACE("StartupHelperRuntimeEventsThread: received invalid event\n");
+ m_error = ERROR_INVALID_PARAMETER;
+ }
+
+ sem_post(m_startupSem);
+ }
+
+ TRACE("StartupHelperRuntimeEventsThread: waiting on debugger\n");
+
+ while (sem_wait(m_continueSem) != 0)
+ {
+ if (EINTR == errno)
+ {
+ TRACE("StartupHelperRuntimeEventsThread: sem_wait() failed with EINTR; re-waiting\n");
+ continue;
+ }
+ TRACE("StartupHelperRuntimeEventsThread: sem_wait(contniue) failed: errno is %d (%s)\n", errno, strerror(errno));
+ }
+
+ TRACE("StartupHelperRuntimeEventsThread: sending continue event\n");
+
+ {
+ unsigned char event = (unsigned char)RuntimeEvent_Continue;
+ unsigned char *buffer = &event;
+ int bytesToWrite = sizeof(event);
+ int bytesWritten = 0;
+
+ offset = 0;
+ do
+ {
+ bytesWritten = WriteNonBlockingPipe(kq, continuePipeFd, buffer + offset, bytesToWrite - offset, 1000);
+ if (bytesWritten > 0)
+ {
+ offset += bytesWritten;
+ }
+ }
+ while (bytesWritten > 0 && offset < bytesToWrite);
+
+ if (offset != bytesToWrite)
+ {
+ TRACE("StartupHelperRuntimeEventsThread: failed sending continue event\n");
+ }
+ }
+
+ exit:
+
+ if (startupPipeFd != -1)
+ {
+ CloseFd(startupPipeFd);
+ }
+
+ if (continuePipeFd != -1)
+ {
+ CloseFd(continuePipeFd);
+ }
+
+ if (kq != -1)
+ {
+ CloseFd(kq);
+ }
+ }
+
+#endif // ENABLE_RUNTIME_EVENTS_OVER_PIPES
+
void StartupHelperThread()
{
PAL_ERROR pe = NO_ERROR;
@@ -1559,6 +2108,11 @@ class PAL_RuntimeStartupHelper
pe = GetSemError();
}
+ if (pe == NO_ERROR && m_error != NO_ERROR)
+ {
+ pe = m_error;
+ }
+
if (pe == NO_ERROR)
{
pe = InvokeStartupCallback();
@@ -1574,6 +2128,23 @@ class PAL_RuntimeStartupHelper
}
};
+#ifdef ENABLE_RUNTIME_EVENTS_OVER_PIPES
+static
+DWORD
+StartupHelperRuntimeEventsThread(LPVOID p)
+{
+ TRACE("StartupHelperRuntimeEventsThread: starting\n");
+
+ PAL_RuntimeStartupHelper *helper = (PAL_RuntimeStartupHelper *)p;
+ helper->StartupHelperRuntimeEventsThread();
+ helper->Release();
+
+ TRACE("StartupHelperRuntimeEventsThread: finished\n");
+
+ return 0;
+}
+#endif // ENABLE_RUNTIME_EVENTS_OVER_PIPES
+
static
DWORD
StartupHelperThread(LPVOID p)
diff --git a/src/singlefile-tools.proj b/src/singlefile-tools.proj
index 9ce59796e1..36a5e67050 100644
--- a/src/singlefile-tools.proj
+++ b/src/singlefile-tools.proj
@@ -2,7 +2,7 @@
$(NetCoreAppMinTargetFramework)
- win-x64;win-x86;win-arm64;linux-x64;linux-musl-arm64;linux-arm64;linux-musl-x64;linux-arm
+ win-x64;win-x86;win-arm64;linux-x64;linux-musl-x64;linux-musl-arm64;linux-arm64;linux-arm;linux-musl-arm
$([System.IO.Path]::GetDirectoryName('$(ArcadeSdkBuildTasksAssembly)'))\..\
$(ArcadeSdkMSBuildProjectDir)Sign.proj
$(BundledToolsPath)$(Configuration)/zips/
@@ -22,14 +22,15 @@
-
+
+ Targets="Restore"
+ ContinueOnError="false"
+ Properties="MSBuildRestoreSessionId=$([System.Guid]::NewGuid())"/>
@@ -39,7 +40,7 @@
SkipNonexistentProjects="false"
SkipNonexistentTargets="false"
StopOnFirstFailure="true"
- Targets="CollectBundleFilesToSign"
+ Targets="Build;CollectBundleFilesToSign"
ContinueOnError="false">
diff --git a/src/sos-packaging.props b/src/sos-packaging.props
index d182b2e29f..9312fea0bb 100644
--- a/src/sos-packaging.props
+++ b/src/sos-packaging.props
@@ -7,12 +7,6 @@
$(ArtifactsBinDir)\SOS.Extensions\$(Configuration)\netstandard2.0\publish\*.dll
-
-
-
-
-
-
@@ -56,11 +50,25 @@
+
+ <_SosBinariesToPack Include="@(SosRequiredBinaries)" />
+
+
+
+ <_winSosRequiredBinaries Include="$(ArtifactsBinDir)\Windows_NT.x64.$(Configuration)\sos.dll" TargetRid="win-x64" />
+ <_winSosRequiredBinaries Include="$(ArtifactsBinDir)\Windows_NT.x64.$(Configuration)\Microsoft.DiaSymReader.Native.amd64.dll" TargetRid="win-x64" />
+ <_winSosRequiredBinaries Condition="'$(PackageWithCDac)' == 'true'" Include="$(ArtifactsBinDir)\Windows_NT.x64.$(Configuration)\mscordaccore_universal.dll" TargetRid="win-x64" />
+
+
+ <_SosBinariesToPack Condition="'$(BuildX64Package)' == 'true'"
+ Include="@(_winSosRequiredBinaries)" />
+
+
-
+
false
true
$(SOSPackagePathPrefix)/%(TargetRid)
diff --git a/src/tests/dotnet-counters/MockConsole.cs b/src/tests/Common/MockConsole.cs
similarity index 66%
rename from src/tests/dotnet-counters/MockConsole.cs
rename to src/tests/Common/MockConsole.cs
index 57d41fc13f..f21858dddc 100644
--- a/src/tests/dotnet-counters/MockConsole.cs
+++ b/src/tests/Common/MockConsole.cs
@@ -1,14 +1,16 @@
-// Licensed to the .NET Foundation under one or more agreements.
+// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System;
using System.Diagnostics;
-using Microsoft.Diagnostics.Tools.Counters.Exporters;
+using System.IO;
+using System.Text;
+using Microsoft.Diagnostics.Tools.Common;
using Xunit;
-namespace DotnetCounters.UnitTests
+namespace Microsoft.Diagnostics.Tests.Common
{
- internal class MockConsole : IConsole
+ internal class MockConsole : TextWriter, IConsole
{
char[][] _chars;
@@ -20,16 +22,33 @@ public MockConsole(int width, int height)
WindowHeight = height;
Clear();
}
+
+ public override Encoding Encoding => Encoding.UTF8;
+
public int WindowHeight { get; init; }
public int WindowWidth { get; init; }
- public bool CursorVisible { get => throw new NotSupportedException(); set => throw new NotImplementedException(); }
+ public bool CursorVisible { get; set; }
+
+ public int CursorLeft { get; private set; }
public int CursorTop { get; private set; }
public int BufferWidth { get; private set; }
+ public int BufferHeight { get; private set; }
+
+ public bool IsOutputRedirected { get; set; }
+
+ public bool IsInputRedirected { get; private set; }
+
+ public bool KeyAvailable { get; private set; }
+
+ public TextWriter Out => this;
+
+ public TextWriter Error => this;
+
public void Clear()
{
_chars = new char[WindowHeight][];
@@ -49,7 +68,7 @@ public void SetCursorPosition(int col, int row)
CursorTop = row;
_cursorLeft = col;
}
- public void Write(string text)
+ public override void Write(string text)
{
for(int textPos = 0; textPos < text.Length; )
{
@@ -88,15 +107,19 @@ public void Write(string text)
}
}
}
- public void WriteLine(string text)
+ public override void WriteLine(string text)
{
Write(text);
Write(Environment.NewLine);
}
- public void WriteLine() => Write(Environment.NewLine);
+ public override void WriteLine() => Write(Environment.NewLine);
public string GetLineText(int row) => new string(_chars[row]).TrimEnd();
+ public ConsoleKeyInfo ReadKey() => Console.ReadKey();
+
+ public ConsoleKeyInfo ReadKey(bool intercept) => Console.ReadKey(intercept);
+
public string[] Lines
{
get
@@ -134,5 +157,31 @@ public void AssertLinesEqual(int startLine, params string[] expectedLines)
}
}
+
+ public void AssertSanitizedLinesEqual(Func sanitizer, params string[] expectedLines)
+ {
+ string[] actualLines = Lines;
+ if (sanitizer is not null)
+ {
+ actualLines = sanitizer(actualLines);
+ }
+ Assert.True(actualLines.Length >= expectedLines.Length, "Sanitized console output had fewer lines than expected." + Environment.NewLine +
+ $"Expected line count: {expectedLines.Length}" + Environment.NewLine +
+ $"Actual line count: {actualLines.Length}");
+
+ for (int i = 0; i < expectedLines.Length; i++)
+ {
+ if (!string.Equals(expectedLines[i], actualLines[i], StringComparison.Ordinal))
+ {
+ Assert.Fail("Sanitized console output mismatch." + Environment.NewLine +
+ $"Line {i,2} Expected: {expectedLines[i]}" + Environment.NewLine +
+ $"Line {i,2} Actual : {actualLines[i]}");
+ }
+ }
+ for (int i = expectedLines.Length; i < actualLines.Length; i++)
+ {
+ Assert.True(string.IsNullOrEmpty(actualLines[i]), $"Actual line #{i} beyond expected lines is not empty: {actualLines[i]}");
+ }
+ }
}
}
diff --git a/src/tests/dotnet-counters/ConsoleExporterTests.cs b/src/tests/dotnet-counters/ConsoleExporterTests.cs
index 412b5fcffe..53e1ca1706 100644
--- a/src/tests/dotnet-counters/ConsoleExporterTests.cs
+++ b/src/tests/dotnet-counters/ConsoleExporterTests.cs
@@ -7,6 +7,7 @@
using System.Text;
using System.Threading.Tasks;
using Microsoft.Diagnostics.Monitoring.EventPipe;
+using Microsoft.Diagnostics.Tests.Common;
using Microsoft.Diagnostics.Tools.Counters.Exporters;
using Xunit;
@@ -241,10 +242,12 @@ public void MultiDimensionalCountersAreListed()
"[Provider1]",
" Counter1 ({widget} / 1 sec)",
" color",
+ " -----",
" blue 87",
" red 0.1",
" Counter2 ({widget} / 1 sec)",
" size temp",
+ " ---- ----",
" 1 14",
" hot 160");
}
@@ -267,10 +270,12 @@ public void LongMultidimensionalTagsAreTruncated()
"[Provider1]",
" Counter1 ({widget} / 1 sec)",
" color LongNameTag herOne",
+ " ----- ------------- ------",
" blue ThisDoesNotFi Hi 87",
" red 0.1",
" Counter2 ({widget} / 1 sec)",
" size temp",
+ " ---- ----",
" 1 14",
" hot 160");
}
@@ -315,10 +320,12 @@ public void ErrorStatusIsDisplayed()
"[Provider1]",
" Counter1 ({widget} / 1 sec)",
" color",
+ " -----",
" blue 87",
" red 0.1",
" Counter2 ({widget} / 1 sec)",
" size temp",
+ " ---- ----",
" 1 14",
" hot 160");
}
@@ -343,10 +350,12 @@ public void DeltaColumnDisplaysInitiallyEmpty()
"[Provider1]",
" Counter1 ({widget} / 1 sec)",
" color",
+ " -----",
" blue 87",
" red 0.1",
" Counter2 ({widget} / 1 sec)",
" size temp",
+ " ---- ----",
" 1 14",
" hot 160",
"[System.Runtime]",
@@ -372,10 +381,12 @@ public void DeltaColumnDisplaysNumbersAfterUpdate()
"[Provider1]",
" Counter1 ({widget} / 1 sec)",
" color",
+ " -----",
" blue 87",
" red 0.1",
" Counter2 ({widget} / 1 sec)",
" size temp",
+ " ---- ----",
" 1 14",
" hot 160",
"[System.Runtime]",
@@ -392,10 +403,12 @@ public void DeltaColumnDisplaysNumbersAfterUpdate()
"[Provider1]",
" Counter1 ({widget} / 1 sec)",
" color",
+ " -----",
" blue 87 0",
" red 0.2 0.1",
" Counter2 ({widget} / 1 sec)",
" size temp",
+ " ---- ----",
" 1 10 -4",
" hot 160",
"[System.Runtime]",
@@ -424,6 +437,7 @@ public void MeterCounterIsAbsoluteInNet8()
"[Provider1]",
" Counter1 ({widget})", // There is no longer (unit / 1 sec) here
" color",
+ " -----",
" blue 87",
" red 0.1",
" Counter2 ({widget}) 14");
@@ -439,6 +453,7 @@ public void MeterCounterIsAbsoluteInNet8()
"[Provider1]",
" Counter1 ({widget})", // There is no longer (unit / 1 sec) here
" color",
+ " -----",
" blue 87 0",
" red 0.2 0.1",
" Counter2 ({widget}) 10 -4");
diff --git a/src/tests/dotnet-counters/DotnetCounters.UnitTests.csproj b/src/tests/dotnet-counters/DotnetCounters.UnitTests.csproj
index 435bf3a738..70eb65bb61 100644
--- a/src/tests/dotnet-counters/DotnetCounters.UnitTests.csproj
+++ b/src/tests/dotnet-counters/DotnetCounters.UnitTests.csproj
@@ -10,6 +10,10 @@
+
+
+
+
diff --git a/src/tests/dotnet-trace/CollectCommandFunctionalTests.cs b/src/tests/dotnet-trace/CollectCommandFunctionalTests.cs
new file mode 100644
index 0000000000..f6de43dfed
--- /dev/null
+++ b/src/tests/dotnet-trace/CollectCommandFunctionalTests.cs
@@ -0,0 +1,242 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using System;
+using System.Collections.Generic;
+using System.CommandLine;
+using System.IO;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Diagnostics.Tests.Common;
+using Microsoft.Diagnostics.Tools.Trace;
+using Xunit;
+
+namespace Microsoft.Diagnostics.Tools.Trace
+{
+ public class CollectCommandFunctionalTests
+ {
+ private const string ExpectedPayload = "CollectCommandFunctionalTestsTraceData";
+
+ public sealed record CollectArgs(
+ CancellationToken ct = default,
+ CommandLineConfiguration cliConfig = null,
+ int processId = -1,
+ uint buffersize = 1,
+ string providers = "",
+ string profile = "",
+ int formatValue = (int)TraceFileFormat.NetTrace,
+ TimeSpan duration = default,
+ string clrevents = "",
+ string clreventlevel = "",
+ string name = "",
+ string diagnosticPort = "",
+ bool showchildio = false,
+ bool resumeRuntime = false,
+ string stoppingEventProviderName = "",
+ string stoppingEventEventName = "",
+ string stoppingEventPayloadFilter = "",
+ bool? rundown = false,
+ string dsrouter = "")
+ {
+ internal TraceFileFormat Format => (TraceFileFormat)formatValue;
+ public int ProcessId => processId == -1 ? Environment.ProcessId : processId;
+ public FileInfo Output => new FileInfo("trace.nettrace");
+ private MemoryStream _eventStream = new();
+ public MemoryStream EventStream => _eventStream;
+ }
+
+ [Theory]
+ [MemberData(nameof(BasicCases))]
+ public async Task CollectCommandProviderConfigurationConsolidation(CollectArgs args, string[] expectedSubset)
+ {
+ MockConsole console = new(200, 30);
+ string[] rawLines = await RunAsync(args, console).ConfigureAwait(true);
+ console.AssertSanitizedLinesEqual(CollectSanitizer, expectedSubset);
+
+ byte[] expected = Encoding.UTF8.GetBytes(ExpectedPayload);
+ Assert.Equal(expected, args.EventStream.ToArray());
+ }
+
+ private static async Task RunAsync(CollectArgs config, MockConsole console)
+ {
+ var handler = new CollectCommandHandler();
+ handler.StartTraceSessionAsync = (client, cfg, ct) => Task.FromResult(new TestCollectSession());
+ handler.ResumeRuntimeAsync = (client, ct) => Task.CompletedTask;
+ handler.CollectSessionEventStream = (name) => config.EventStream;
+ handler.Console = console;
+
+ int exit = await handler.Collect(
+ config.ct,
+ config.cliConfig,
+ config.ProcessId,
+ config.Output,
+ config.buffersize,
+ config.providers,
+ config.profile,
+ config.Format,
+ config.duration,
+ config.clrevents,
+ config.clreventlevel,
+ config.name,
+ config.diagnosticPort,
+ config.showchildio,
+ config.resumeRuntime,
+ config.stoppingEventProviderName,
+ config.stoppingEventEventName,
+ config.stoppingEventPayloadFilter,
+ config.rundown,
+ config.dsrouter
+ ).ConfigureAwait(true);
+ if (exit != 0)
+ {
+ throw new InvalidOperationException($"Collect exited with return code {exit}.");
+ }
+ return console.Lines;
+ }
+
+ private static string[] CollectSanitizer(string[] lines)
+ {
+ List result = new();
+ foreach (string line in lines)
+ {
+ if (line.StartsWith("Process :", StringComparison.Ordinal))
+ {
+ result.Add("Process : ");
+ }
+ else
+ {
+ result.Add(line);
+ }
+ }
+ return result.ToArray();
+ }
+
+ private sealed class TestCollectSession : CollectCommandHandler.ICollectSession
+ {
+ private static readonly byte[] _testBytes = Encoding.UTF8.GetBytes(ExpectedPayload);
+ private readonly MemoryStream _stream = new(_testBytes);
+ public Stream EventStream => _stream;
+ public void Stop() {}
+ public void Dispose() => _stream.Dispose();
+ }
+
+ public static IEnumerable BasicCases()
+ {
+ FileInfo fi = new("trace.nettrace");
+ yield return new object[]
+ {
+ new CollectArgs(),
+ ExpectProvidersWithMessages(
+ new[]
+ {
+ "No profile or providers specified, defaulting to trace profile 'cpu-sampling'"
+ },
+ FormatProvider("Microsoft-DotNETCore-SampleProfiler", "0000F00000000000", "Informational", 4, "--profile"),
+ FormatProvider("Microsoft-Windows-DotNETRuntime", "00000014C14FCCBD", "Informational", 4, "--profile"))
+ };
+
+ yield return new object[]
+ {
+ new CollectArgs(providers: "Foo:0x1:4"),
+ ExpectProviders(
+ FormatProvider("Foo", "0000000000000001", "Informational", 4, "--providers"))
+ };
+
+ yield return new object[]
+ {
+ new CollectArgs(providers: "Foo:0x1:4,Bar:0x2:4"),
+ ExpectProviders(
+ FormatProvider("Foo", "0000000000000001", "Informational", 4, "--providers"),
+ FormatProvider("Bar", "0000000000000002", "Informational", 4, "--providers"))
+ };
+
+ yield return new object[]
+ {
+ new CollectArgs(profile: "cpu-sampling"),
+ ExpectProviders(
+ FormatProvider("Microsoft-DotNETCore-SampleProfiler", "0000F00000000000", "Informational", 4, "--profile"),
+ FormatProvider("Microsoft-Windows-DotNETRuntime", "00000014C14FCCBD", "Informational", 4, "--profile"))
+ };
+
+ yield return new object[]
+ {
+ new CollectArgs(profile: "cpu-sampling", providers: "Foo:0x1:4"),
+ ExpectProviders(
+ FormatProvider("Foo", "0000000000000001", "Informational", 4, "--providers"),
+ FormatProvider("Microsoft-DotNETCore-SampleProfiler", "0000F00000000000", "Informational", 4, "--profile"),
+ FormatProvider("Microsoft-Windows-DotNETRuntime", "00000014C14FCCBD", "Informational", 4, "--profile"))
+ };
+
+ yield return new object[]
+ {
+ new CollectArgs(profile: "cpu-sampling", clrevents: "gc"),
+ ExpectProvidersWithMessages(
+ new[]
+ {
+ "The argument --clrevents gc will be ignored because the CLR provider was configured via either --profile or --providers command."
+ },
+ FormatProvider("Microsoft-DotNETCore-SampleProfiler", "0000F00000000000", "Informational", 4, "--profile"),
+ FormatProvider("Microsoft-Windows-DotNETRuntime", "00000014C14FCCBD", "Informational", 4, "--profile"))
+ };
+
+ yield return new object[]
+ {
+ new CollectArgs(profile: "cpu-sampling", providers: "Microsoft-Windows-DotNETRuntime:0x1:4"),
+ ExpectProviders(
+ FormatProvider("Microsoft-Windows-DotNETRuntime", "0000000000000001", "Informational", 4, "--providers"),
+ FormatProvider("Microsoft-DotNETCore-SampleProfiler", "0000F00000000000", "Informational", 4, "--profile"))
+ };
+
+ yield return new object[]
+ {
+ new CollectArgs(providers: "Microsoft-Windows-DotNETRuntime:0x1:4", clrevents: "gc"),
+ ExpectProvidersWithMessages(
+ new[]
+ {
+ "The argument --clrevents gc will be ignored because the CLR provider was configured via either --profile or --providers command."
+ },
+ FormatProvider("Microsoft-Windows-DotNETRuntime", "0000000000000001", "Informational", 4, "--providers"))
+ };
+
+ yield return new object[]
+ {
+ new CollectArgs(clrevents: "gc+jit"),
+ ExpectProviders(
+ FormatProvider("Microsoft-Windows-DotNETRuntime", "0000000000000011", "Informational", 4, "--clrevents"))
+ };
+
+ yield return new object[]
+ {
+ new CollectArgs(clrevents: "gc+jit", clreventlevel: "5"),
+ ExpectProviders(
+ FormatProvider("Microsoft-Windows-DotNETRuntime", "0000000000000011", "Verbose", 5, "--clrevents"))
+ };
+ }
+
+ private static string outputFile = $"Output File : {Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar}trace.nettrace";
+ private const string ProviderHeader = "Provider Name Keywords Level Enabled By";
+ private static readonly string[] CommonTail = [
+ "Process : ",
+ outputFile,
+ "",
+ "",
+ "",
+ "Trace completed."
+ ];
+
+ private static string[] ExpectProviders(params string[] providerLines)
+ => ExpectProvidersWithMessages(new string[0], providerLines);
+
+ private static string[] ExpectProvidersWithMessages(string[] messages, params string[] providerLines)
+ => [.. messages, "", ProviderHeader, .. providerLines, "", .. CommonTail];
+
+ private static string FormatProvider(string name, string keywordsHex, string levelName, int levelValue, string enabledBy)
+ {
+ string display = string.Format("{0, -40}", name) +
+ string.Format("0x{0, -18}", keywordsHex) +
+ string.Format("{0, -8}", $"{levelName}({levelValue})");
+ return string.Format("{0, -80}", display) + enabledBy;
+ }
+ }
+}
diff --git a/src/tests/dotnet-trace/DotnetTrace.UnitTests.csproj b/src/tests/dotnet-trace/DotnetTrace.UnitTests.csproj
index 2ec652b315..d1518411ff 100644
--- a/src/tests/dotnet-trace/DotnetTrace.UnitTests.csproj
+++ b/src/tests/dotnet-trace/DotnetTrace.UnitTests.csproj
@@ -9,4 +9,8 @@
+
+
+
+
diff --git a/start-vs.cmd b/start-vs.cmd
index 79d2ba80e9..cd08940d0e 100644
--- a/start-vs.cmd
+++ b/start-vs.cmd
@@ -4,7 +4,7 @@ setlocal enabledelayedexpansion
set "SDK_LOC=%~dp0.dotnet"
if "%1" == "" (
- set "SLN_OR_PROJ=%~dp0diagnostics.sln"
+ set "SLN_OR_PROJ=%~dp0diagnostics.slnx"
) else (
set "SLN_OR_PROJ=%1"
)