Files
appsandbox/AppSandbox.sln
T
James Stringer 842c194e2c Windows-on-Mac: build-integrate the SHM driver, fix provisioning, harden transport/display
- Rename the ivshmem guest driver asb_ivshmem -> AppSandboxSHM everywhere (files, INF
  service/binary/catalog + display strings, device-interface GUID symbol with the GUID
  value preserved, driver source, transport, provisioning, payload, iso-patch stage list).
  QEMU's ivshmem device id and the Mac host transport (asb_ivshmem_transport.*) keep names.
- Build the driver through the VS pipeline like VDD/VAD: AppSandboxSHM.vcxproj (KMDF) +
  Package/AppSandboxSHMPackage.vcxproj (Inf2Cat + TestSign + post-build copy into
  bin\Release[-ARM64]\drivers), registered in AppSandbox.sln; add to submission-config.json
  + make-release.ps1 for MS attestation. INF gets a .10.0...22000 (Win11) TargetOSVersion
  decoration (required by DIRID 13 / PnpLockdown).
- Install the SHM PCI driver with devcon update (not devcon install, which fabricates a
  phantom ROOT devnode on a real PnP hwid) -- same pattern as NetKVM.
- Fix SetupComplete.cmd: a literal (...) in an echo inside a cmd ( ) block desynced cmd's
  paren matcher and silently skipped every driver install; removed it.
- iso-patch: per-build -shadow ISO attach so concurrent VM builds get independent devices.
- Reconcile all user-mode .vcxproj to the v145 (VS 2026) toolset.
- Transport/display: guest liveness beacon + h2g-stall reclaim, zero-copy Metal render of
  the IDD display, clipboard-file paste chown for the root daemon.
- Refresh the committed tools/agent_win payload; update the windows-on-mac integration plan.
2026-06-22 22:38:34 -04:00

200 lines
14 KiB
Plaintext

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AppSandboxCore", "AppSandboxCore.vcxproj", "{1A2B3C4D-5E6F-7890-ABCD-111222333444}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AppSandbox", "AppSandbox.vcxproj", "{8A7B6C5D-4E3F-2A1B-9C8D-7E6F5A4B3C2D}"
ProjectSection(ProjectDependencies) = postProject
{1A2B3C4D-5E6F-7890-ABCD-111222333444} = {1A2B3C4D-5E6F-7890-ABCD-111222333444}
{D4E5F6A7-B8C9-0123-4567-89ABCDEF0123} = {D4E5F6A7-B8C9-0123-4567-89ABCDEF0123}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "agent", "tools\agent\agent.vcxproj", "{D4E5F6A7-B8C9-0123-4567-89ABCDEF0123}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iso-patch", "tools\iso-patch\iso-patch.vcxproj", "{A1B2C3D4-5678-9ABC-DEF0-123456789ABC}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AppSandboxVDD", "tools\vdd\AppSandboxVDD.vcxproj", "{E1F2A3B4-C5D6-7890-ABCD-EF1234567890}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Package", "tools\vdd\Package\Package.vcxproj", "{F2E3D4C5-B6A7-8901-CDEF-234567890ABC}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AppSandboxVAD", "tools\vad\AppSandboxVAD.vcxproj", "{A1B2C3D4-5678-9ABC-DEF0-AABBCCDDEEFF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VADPackage", "tools\vad\Package\VADPackage.vcxproj", "{B2C3D4E5-6789-ABCD-EF01-AABBCCDDEEFF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AppSandboxSHM", "tools\ivshmem\AppSandboxSHM.vcxproj", "{9F1B25AD-3EBA-4111-8B37-B92AAFA2547F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AppSandboxSHMPackage", "tools\ivshmem\Package\AppSandboxSHMPackage.vcxproj", "{CAD43EB2-BBB0-4E15-983D-5C9E88324FC1}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appsandbox-input", "tools\agent\appsandbox-input.vcxproj", "{A2B3C4D5-E6F7-8901-ABCD-EF2345678901}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appsandbox-displays", "tools\agent\appsandbox-displays.vcxproj", "{B3C4D5E6-F7A8-9012-BCDE-F34567890123}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appsandbox-clipboard", "tools\agent\appsandbox-clipboard.vcxproj", "{C3D4E5F6-A7B8-9012-CDEF-345678901234}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appsandbox-clipboard-reader", "tools\agent\appsandbox-clipboard-reader.vcxproj", "{D4E5F6A7-B8C9-0123-CDEF-456789012345}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "appsandbox-audio", "tools\agent\appsandbox-audio.vcxproj", "{E5F6A7B8-C9D0-1234-EF01-567890123456}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AppSandboxPackage", "tools\sign\AppSandboxPackage.vcxproj", "{0FA17E55-9C3D-4B21-AE60-5D7C1B2E3F40}"
ProjectSection(ProjectDependencies) = postProject
{1A2B3C4D-5E6F-7890-ABCD-111222333444} = {1A2B3C4D-5E6F-7890-ABCD-111222333444}
{8A7B6C5D-4E3F-2A1B-9C8D-7E6F5A4B3C2D} = {8A7B6C5D-4E3F-2A1B-9C8D-7E6F5A4B3C2D}
{D4E5F6A7-B8C9-0123-4567-89ABCDEF0123} = {D4E5F6A7-B8C9-0123-4567-89ABCDEF0123}
{A1B2C3D4-5678-9ABC-DEF0-123456789ABC} = {A1B2C3D4-5678-9ABC-DEF0-123456789ABC}
{E1F2A3B4-C5D6-7890-ABCD-EF1234567890} = {E1F2A3B4-C5D6-7890-ABCD-EF1234567890}
{F2E3D4C5-B6A7-8901-CDEF-234567890ABC} = {F2E3D4C5-B6A7-8901-CDEF-234567890ABC}
{A1B2C3D4-5678-9ABC-DEF0-AABBCCDDEEFF} = {A1B2C3D4-5678-9ABC-DEF0-AABBCCDDEEFF}
{B2C3D4E5-6789-ABCD-EF01-AABBCCDDEEFF} = {B2C3D4E5-6789-ABCD-EF01-AABBCCDDEEFF}
{A2B3C4D5-E6F7-8901-ABCD-EF2345678901} = {A2B3C4D5-E6F7-8901-ABCD-EF2345678901}
{B3C4D5E6-F7A8-9012-BCDE-F34567890123} = {B3C4D5E6-F7A8-9012-BCDE-F34567890123}
{C3D4E5F6-A7B8-9012-CDEF-345678901234} = {C3D4E5F6-A7B8-9012-CDEF-345678901234}
{D4E5F6A7-B8C9-0123-CDEF-456789012345} = {D4E5F6A7-B8C9-0123-CDEF-456789012345}
{E5F6A7B8-C9D0-1234-EF01-567890123456} = {E5F6A7B8-C9D0-1234-EF01-567890123456}
{9F1B25AD-3EBA-4111-8B37-B92AAFA2547F} = {9F1B25AD-3EBA-4111-8B37-B92AAFA2547F}
{CAD43EB2-BBB0-4E15-983D-5C9E88324FC1} = {CAD43EB2-BBB0-4E15-983D-5C9E88324FC1}
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Release|ARM64 = Release|ARM64
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1A2B3C4D-5E6F-7890-ABCD-111222333444}.Debug|ARM64.ActiveCfg = Debug|ARM64
{1A2B3C4D-5E6F-7890-ABCD-111222333444}.Debug|ARM64.Build.0 = Debug|ARM64
{1A2B3C4D-5E6F-7890-ABCD-111222333444}.Debug|x64.ActiveCfg = Debug|x64
{1A2B3C4D-5E6F-7890-ABCD-111222333444}.Debug|x64.Build.0 = Debug|x64
{1A2B3C4D-5E6F-7890-ABCD-111222333444}.Release|ARM64.ActiveCfg = Release|ARM64
{1A2B3C4D-5E6F-7890-ABCD-111222333444}.Release|ARM64.Build.0 = Release|ARM64
{1A2B3C4D-5E6F-7890-ABCD-111222333444}.Release|x64.ActiveCfg = Release|x64
{1A2B3C4D-5E6F-7890-ABCD-111222333444}.Release|x64.Build.0 = Release|x64
{8A7B6C5D-4E3F-2A1B-9C8D-7E6F5A4B3C2D}.Debug|ARM64.ActiveCfg = Debug|ARM64
{8A7B6C5D-4E3F-2A1B-9C8D-7E6F5A4B3C2D}.Debug|ARM64.Build.0 = Debug|ARM64
{8A7B6C5D-4E3F-2A1B-9C8D-7E6F5A4B3C2D}.Debug|x64.ActiveCfg = Debug|x64
{8A7B6C5D-4E3F-2A1B-9C8D-7E6F5A4B3C2D}.Debug|x64.Build.0 = Debug|x64
{8A7B6C5D-4E3F-2A1B-9C8D-7E6F5A4B3C2D}.Release|ARM64.ActiveCfg = Release|ARM64
{8A7B6C5D-4E3F-2A1B-9C8D-7E6F5A4B3C2D}.Release|ARM64.Build.0 = Release|ARM64
{8A7B6C5D-4E3F-2A1B-9C8D-7E6F5A4B3C2D}.Release|x64.ActiveCfg = Release|x64
{8A7B6C5D-4E3F-2A1B-9C8D-7E6F5A4B3C2D}.Release|x64.Build.0 = Release|x64
{D4E5F6A7-B8C9-0123-4567-89ABCDEF0123}.Debug|ARM64.ActiveCfg = Debug|ARM64
{D4E5F6A7-B8C9-0123-4567-89ABCDEF0123}.Debug|ARM64.Build.0 = Debug|ARM64
{D4E5F6A7-B8C9-0123-4567-89ABCDEF0123}.Debug|x64.ActiveCfg = Debug|x64
{D4E5F6A7-B8C9-0123-4567-89ABCDEF0123}.Debug|x64.Build.0 = Debug|x64
{D4E5F6A7-B8C9-0123-4567-89ABCDEF0123}.Release|ARM64.ActiveCfg = Release|ARM64
{D4E5F6A7-B8C9-0123-4567-89ABCDEF0123}.Release|ARM64.Build.0 = Release|ARM64
{D4E5F6A7-B8C9-0123-4567-89ABCDEF0123}.Release|x64.ActiveCfg = Release|x64
{D4E5F6A7-B8C9-0123-4567-89ABCDEF0123}.Release|x64.Build.0 = Release|x64
{A1B2C3D4-5678-9ABC-DEF0-123456789ABC}.Debug|ARM64.ActiveCfg = Debug|ARM64
{A1B2C3D4-5678-9ABC-DEF0-123456789ABC}.Debug|ARM64.Build.0 = Debug|ARM64
{A1B2C3D4-5678-9ABC-DEF0-123456789ABC}.Debug|x64.ActiveCfg = Debug|x64
{A1B2C3D4-5678-9ABC-DEF0-123456789ABC}.Debug|x64.Build.0 = Debug|x64
{A1B2C3D4-5678-9ABC-DEF0-123456789ABC}.Release|ARM64.ActiveCfg = Release|ARM64
{A1B2C3D4-5678-9ABC-DEF0-123456789ABC}.Release|ARM64.Build.0 = Release|ARM64
{A1B2C3D4-5678-9ABC-DEF0-123456789ABC}.Release|x64.ActiveCfg = Release|x64
{A1B2C3D4-5678-9ABC-DEF0-123456789ABC}.Release|x64.Build.0 = Release|x64
{E1F2A3B4-C5D6-7890-ABCD-EF1234567890}.Debug|ARM64.ActiveCfg = Debug|ARM64
{E1F2A3B4-C5D6-7890-ABCD-EF1234567890}.Debug|ARM64.Build.0 = Debug|ARM64
{E1F2A3B4-C5D6-7890-ABCD-EF1234567890}.Debug|x64.ActiveCfg = Debug|x64
{E1F2A3B4-C5D6-7890-ABCD-EF1234567890}.Debug|x64.Build.0 = Debug|x64
{E1F2A3B4-C5D6-7890-ABCD-EF1234567890}.Release|ARM64.ActiveCfg = Release|ARM64
{E1F2A3B4-C5D6-7890-ABCD-EF1234567890}.Release|ARM64.Build.0 = Release|ARM64
{E1F2A3B4-C5D6-7890-ABCD-EF1234567890}.Release|x64.ActiveCfg = Release|x64
{E1F2A3B4-C5D6-7890-ABCD-EF1234567890}.Release|x64.Build.0 = Release|x64
{F2E3D4C5-B6A7-8901-CDEF-234567890ABC}.Debug|ARM64.ActiveCfg = Debug|ARM64
{F2E3D4C5-B6A7-8901-CDEF-234567890ABC}.Debug|ARM64.Build.0 = Debug|ARM64
{F2E3D4C5-B6A7-8901-CDEF-234567890ABC}.Debug|x64.ActiveCfg = Debug|x64
{F2E3D4C5-B6A7-8901-CDEF-234567890ABC}.Debug|x64.Build.0 = Debug|x64
{F2E3D4C5-B6A7-8901-CDEF-234567890ABC}.Release|ARM64.ActiveCfg = Release|ARM64
{F2E3D4C5-B6A7-8901-CDEF-234567890ABC}.Release|ARM64.Build.0 = Release|ARM64
{F2E3D4C5-B6A7-8901-CDEF-234567890ABC}.Release|x64.ActiveCfg = Release|x64
{F2E3D4C5-B6A7-8901-CDEF-234567890ABC}.Release|x64.Build.0 = Release|x64
{A1B2C3D4-5678-9ABC-DEF0-AABBCCDDEEFF}.Debug|ARM64.ActiveCfg = Debug|ARM64
{A1B2C3D4-5678-9ABC-DEF0-AABBCCDDEEFF}.Debug|ARM64.Build.0 = Debug|ARM64
{A1B2C3D4-5678-9ABC-DEF0-AABBCCDDEEFF}.Debug|x64.ActiveCfg = Debug|x64
{A1B2C3D4-5678-9ABC-DEF0-AABBCCDDEEFF}.Debug|x64.Build.0 = Debug|x64
{A1B2C3D4-5678-9ABC-DEF0-AABBCCDDEEFF}.Release|ARM64.ActiveCfg = Release|ARM64
{A1B2C3D4-5678-9ABC-DEF0-AABBCCDDEEFF}.Release|ARM64.Build.0 = Release|ARM64
{A1B2C3D4-5678-9ABC-DEF0-AABBCCDDEEFF}.Release|x64.ActiveCfg = Release|x64
{A1B2C3D4-5678-9ABC-DEF0-AABBCCDDEEFF}.Release|x64.Build.0 = Release|x64
{B2C3D4E5-6789-ABCD-EF01-AABBCCDDEEFF}.Debug|ARM64.ActiveCfg = Debug|ARM64
{B2C3D4E5-6789-ABCD-EF01-AABBCCDDEEFF}.Debug|ARM64.Build.0 = Debug|ARM64
{B2C3D4E5-6789-ABCD-EF01-AABBCCDDEEFF}.Debug|x64.ActiveCfg = Debug|x64
{B2C3D4E5-6789-ABCD-EF01-AABBCCDDEEFF}.Debug|x64.Build.0 = Debug|x64
{B2C3D4E5-6789-ABCD-EF01-AABBCCDDEEFF}.Release|ARM64.ActiveCfg = Release|ARM64
{B2C3D4E5-6789-ABCD-EF01-AABBCCDDEEFF}.Release|ARM64.Build.0 = Release|ARM64
{B2C3D4E5-6789-ABCD-EF01-AABBCCDDEEFF}.Release|x64.ActiveCfg = Release|x64
{B2C3D4E5-6789-ABCD-EF01-AABBCCDDEEFF}.Release|x64.Build.0 = Release|x64
{A2B3C4D5-E6F7-8901-ABCD-EF2345678901}.Debug|ARM64.ActiveCfg = Debug|ARM64
{A2B3C4D5-E6F7-8901-ABCD-EF2345678901}.Debug|ARM64.Build.0 = Debug|ARM64
{A2B3C4D5-E6F7-8901-ABCD-EF2345678901}.Debug|x64.ActiveCfg = Debug|x64
{A2B3C4D5-E6F7-8901-ABCD-EF2345678901}.Debug|x64.Build.0 = Debug|x64
{A2B3C4D5-E6F7-8901-ABCD-EF2345678901}.Release|ARM64.ActiveCfg = Release|ARM64
{A2B3C4D5-E6F7-8901-ABCD-EF2345678901}.Release|ARM64.Build.0 = Release|ARM64
{A2B3C4D5-E6F7-8901-ABCD-EF2345678901}.Release|x64.ActiveCfg = Release|x64
{A2B3C4D5-E6F7-8901-ABCD-EF2345678901}.Release|x64.Build.0 = Release|x64
{B3C4D5E6-F7A8-9012-BCDE-F34567890123}.Debug|ARM64.ActiveCfg = Debug|ARM64
{B3C4D5E6-F7A8-9012-BCDE-F34567890123}.Debug|ARM64.Build.0 = Debug|ARM64
{B3C4D5E6-F7A8-9012-BCDE-F34567890123}.Debug|x64.ActiveCfg = Debug|x64
{B3C4D5E6-F7A8-9012-BCDE-F34567890123}.Debug|x64.Build.0 = Debug|x64
{B3C4D5E6-F7A8-9012-BCDE-F34567890123}.Release|ARM64.ActiveCfg = Release|ARM64
{B3C4D5E6-F7A8-9012-BCDE-F34567890123}.Release|ARM64.Build.0 = Release|ARM64
{B3C4D5E6-F7A8-9012-BCDE-F34567890123}.Release|x64.ActiveCfg = Release|x64
{B3C4D5E6-F7A8-9012-BCDE-F34567890123}.Release|x64.Build.0 = Release|x64
{C3D4E5F6-A7B8-9012-CDEF-345678901234}.Debug|ARM64.ActiveCfg = Debug|ARM64
{C3D4E5F6-A7B8-9012-CDEF-345678901234}.Debug|ARM64.Build.0 = Debug|ARM64
{C3D4E5F6-A7B8-9012-CDEF-345678901234}.Debug|x64.ActiveCfg = Debug|x64
{C3D4E5F6-A7B8-9012-CDEF-345678901234}.Debug|x64.Build.0 = Debug|x64
{C3D4E5F6-A7B8-9012-CDEF-345678901234}.Release|ARM64.ActiveCfg = Release|ARM64
{C3D4E5F6-A7B8-9012-CDEF-345678901234}.Release|ARM64.Build.0 = Release|ARM64
{C3D4E5F6-A7B8-9012-CDEF-345678901234}.Release|x64.ActiveCfg = Release|x64
{C3D4E5F6-A7B8-9012-CDEF-345678901234}.Release|x64.Build.0 = Release|x64
{D4E5F6A7-B8C9-0123-CDEF-456789012345}.Debug|ARM64.ActiveCfg = Debug|ARM64
{D4E5F6A7-B8C9-0123-CDEF-456789012345}.Debug|ARM64.Build.0 = Debug|ARM64
{D4E5F6A7-B8C9-0123-CDEF-456789012345}.Debug|x64.ActiveCfg = Debug|x64
{D4E5F6A7-B8C9-0123-CDEF-456789012345}.Debug|x64.Build.0 = Debug|x64
{D4E5F6A7-B8C9-0123-CDEF-456789012345}.Release|ARM64.ActiveCfg = Release|ARM64
{D4E5F6A7-B8C9-0123-CDEF-456789012345}.Release|ARM64.Build.0 = Release|ARM64
{D4E5F6A7-B8C9-0123-CDEF-456789012345}.Release|x64.ActiveCfg = Release|x64
{D4E5F6A7-B8C9-0123-CDEF-456789012345}.Release|x64.Build.0 = Release|x64
{E5F6A7B8-C9D0-1234-EF01-567890123456}.Debug|ARM64.ActiveCfg = Debug|ARM64
{E5F6A7B8-C9D0-1234-EF01-567890123456}.Debug|ARM64.Build.0 = Debug|ARM64
{E5F6A7B8-C9D0-1234-EF01-567890123456}.Debug|x64.ActiveCfg = Debug|x64
{E5F6A7B8-C9D0-1234-EF01-567890123456}.Debug|x64.Build.0 = Debug|x64
{E5F6A7B8-C9D0-1234-EF01-567890123456}.Release|ARM64.ActiveCfg = Release|ARM64
{E5F6A7B8-C9D0-1234-EF01-567890123456}.Release|ARM64.Build.0 = Release|ARM64
{E5F6A7B8-C9D0-1234-EF01-567890123456}.Release|x64.ActiveCfg = Release|x64
{E5F6A7B8-C9D0-1234-EF01-567890123456}.Release|x64.Build.0 = Release|x64
{0FA17E55-9C3D-4B21-AE60-5D7C1B2E3F40}.Debug|ARM64.ActiveCfg = Debug|ARM64
{0FA17E55-9C3D-4B21-AE60-5D7C1B2E3F40}.Debug|x64.ActiveCfg = Debug|x64
{0FA17E55-9C3D-4B21-AE60-5D7C1B2E3F40}.Release|ARM64.ActiveCfg = Release|ARM64
{0FA17E55-9C3D-4B21-AE60-5D7C1B2E3F40}.Release|x64.ActiveCfg = Release|x64
{0FA17E55-9C3D-4B21-AE60-5D7C1B2E3F40}.Release|x64.Build.0 = Release|x64
{0FA17E55-9C3D-4B21-AE60-5D7C1B2E3F40}.Release|ARM64.Build.0 = Release|ARM64
{9F1B25AD-3EBA-4111-8B37-B92AAFA2547F}.Debug|ARM64.ActiveCfg = Debug|ARM64
{9F1B25AD-3EBA-4111-8B37-B92AAFA2547F}.Debug|ARM64.Build.0 = Debug|ARM64
{9F1B25AD-3EBA-4111-8B37-B92AAFA2547F}.Debug|x64.ActiveCfg = Debug|x64
{9F1B25AD-3EBA-4111-8B37-B92AAFA2547F}.Debug|x64.Build.0 = Debug|x64
{9F1B25AD-3EBA-4111-8B37-B92AAFA2547F}.Release|ARM64.ActiveCfg = Release|ARM64
{9F1B25AD-3EBA-4111-8B37-B92AAFA2547F}.Release|ARM64.Build.0 = Release|ARM64
{9F1B25AD-3EBA-4111-8B37-B92AAFA2547F}.Release|x64.ActiveCfg = Release|x64
{9F1B25AD-3EBA-4111-8B37-B92AAFA2547F}.Release|x64.Build.0 = Release|x64
{CAD43EB2-BBB0-4E15-983D-5C9E88324FC1}.Debug|ARM64.ActiveCfg = Debug|ARM64
{CAD43EB2-BBB0-4E15-983D-5C9E88324FC1}.Debug|ARM64.Build.0 = Debug|ARM64
{CAD43EB2-BBB0-4E15-983D-5C9E88324FC1}.Debug|x64.ActiveCfg = Debug|x64
{CAD43EB2-BBB0-4E15-983D-5C9E88324FC1}.Debug|x64.Build.0 = Debug|x64
{CAD43EB2-BBB0-4E15-983D-5C9E88324FC1}.Release|ARM64.ActiveCfg = Release|ARM64
{CAD43EB2-BBB0-4E15-983D-5C9E88324FC1}.Release|ARM64.Build.0 = Release|ARM64
{CAD43EB2-BBB0-4E15-983D-5C9E88324FC1}.Release|x64.ActiveCfg = Release|x64
{CAD43EB2-BBB0-4E15-983D-5C9E88324FC1}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {444722DD-51C2-437E-AF1C-33409EDEB6B1}
EndGlobalSection
EndGlobal