diff --git a/MediaBrowser.sln b/MediaBrowser.sln
index b7c8ba527c..4c0db4880a 100644
--- a/MediaBrowser.sln
+++ b/MediaBrowser.sln
@@ -64,6 +64,50 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.XmlTv", "Emby.XmlTv\Em
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IsoMounter", "Emby.IsoMounting\IsoMounter\IsoMounter.csproj", "{9BA471D2-6DB9-4DBF-B3A0-9FB3171F94A6}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BDInfo.Test", "tests\BDInfo.Test\BDInfo.Test.csproj", "{70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DvdLib.Test", "tests\DvdLib.Test\DvdLib.Test.csproj", "{393482D5-4902-4D78-A085-D3D1DAAB35C5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Dlna.Test", "tests\Jellyfin.Dlna.Test\Jellyfin.Dlna.Test.csproj", "{D9DDBA32-F017-4B04-A9A8-684B09792D6B}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{2AC30C72-9249-4621-967C-929ECA51D9F2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Drawing.Test", "tests\Jellyfin.Drawing.Test\Jellyfin.Drawing.Test.csproj", "{DB1A8734-E61E-4DC8-9664-681E691DDD2C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Drawing.ImageMagick.Test", "tests\Jellyfin.Drawing.ImageMagick.Test\Jellyfin.Drawing.ImageMagick.Test.csproj", "{D290F8B9-5C8C-4B11-82A7-E1F1615771B6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Drawing.Skia.Test", "tests\Jellyfin.Drawing.Skia.Test\Jellyfin.Drawing.Skia.Test.csproj", "{941A0327-CBE9-4804-BD45-49C0D4889E2D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Naming.Test", "tests\Jellyfin.Naming.Test\Jellyfin.Naming.Test.csproj", "{B1577537-4675-40CA-B6F4-699E544E5238}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Notifications.Test", "tests\Jellyfin.Notifications.Test\Jellyfin.Notifications.Test.csproj", "{588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Photos.Test", "tests\Jellyfin.Photos.Test\Jellyfin.Photos.Test.csproj", "{DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Server.Implementations.Test", "tests\Jellyfin.Server.Implementations.Test\Jellyfin.Server.Implementations.Test.csproj", "{479023FE-D41A-47C2-84D3-7AB89EA94DCB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.XmlTv.Test", "tests\Jellyfin.XmlTv.Test\Jellyfin.XmlTv.Test.csproj", "{3B256C5C-6B43-418F-8101-6418275DD8E3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Test", "tests\Jellyfin.Test\Jellyfin.Test.csproj", "{522B49EE-8F4D-4DF9-A8D8-F7C49D630184}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IsoMounter.Test", "tests\IsoMounter.Test\IsoMounter.Test.csproj", "{94668F26-EF57-4308-84E7-F3AEFF6BEEEF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Api.Test", "tests\Jellyfin.Api.Test\Jellyfin.Api.Test.csproj", "{80313AD3-B247-414E-8421-332CF600192A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Common.Test", "tests\Jellyfin.Common.Test\Jellyfin.Common.Test.csproj", "{6C1A297B-DA4A-4291-8E09-1BE27A7896C7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Controller.Test", "tests\Jellyfin.Controller.Test\Jellyfin.Controller.Test.csproj", "{FFE772D4-4EA0-4CFF-959F-F03A665D21EE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.LocalMetadata.Test", "tests\Jellyfin.LocalMetadata.Test\Jellyfin.LocalMetadata.Test.csproj", "{B1E67507-8344-4759-97C0-5938BE4028C3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Model.Test", "tests\Jellyfin.Model.Test\Jellyfin.Model.Test.csproj", "{55FDA93E-B630-4EBF-BE13-45ABF23FF66F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.Providers.Test", "tests\Jellyfin.Providers.Test\Jellyfin.Providers.Test.csproj", "{F15C15AA-FF3C-4B9D-B779-157573A026D6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.WebDashboard.Test", "tests\Jellyfin.WebDashboard.Test\Jellyfin.WebDashboard.Test.csproj", "{7D87AEB7-A2AD-4649-A9BC-ED577851D282}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jellyfin.XbmcMetadata.Test", "tests\Jellyfin.XbmcMetadata.Test\Jellyfin.XbmcMetadata.Test.csproj", "{368FAC59-60D1-49D6-AF2C-EC489551C5E4}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -525,6 +569,426 @@ Global
{9BA471D2-6DB9-4DBF-B3A0-9FB3171F94A6}.Release|x64.Build.0 = Release|Any CPU
{9BA471D2-6DB9-4DBF-B3A0-9FB3171F94A6}.Release|x86.ActiveCfg = Release|Any CPU
{9BA471D2-6DB9-4DBF-B3A0-9FB3171F94A6}.Release|x86.Build.0 = Release|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|Win32.Build.0 = Debug|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|x64.Build.0 = Debug|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Debug|x86.Build.0 = Debug|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|Win32.ActiveCfg = Release|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|Win32.Build.0 = Release|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|x64.ActiveCfg = Release|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|x64.Build.0 = Release|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|x86.ActiveCfg = Release|Any CPU
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F}.Release|x86.Build.0 = Release|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|Win32.Build.0 = Debug|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|x64.Build.0 = Debug|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Debug|x86.Build.0 = Debug|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|Win32.ActiveCfg = Release|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|Win32.Build.0 = Release|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|x64.ActiveCfg = Release|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|x64.Build.0 = Release|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|x86.ActiveCfg = Release|Any CPU
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5}.Release|x86.Build.0 = Release|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|Win32.Build.0 = Debug|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|x64.Build.0 = Debug|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Debug|x86.Build.0 = Debug|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|Win32.ActiveCfg = Release|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|Win32.Build.0 = Release|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|x64.ActiveCfg = Release|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|x64.Build.0 = Release|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|x86.ActiveCfg = Release|Any CPU
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B}.Release|x86.Build.0 = Release|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|Win32.Build.0 = Debug|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|x64.Build.0 = Debug|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Debug|x86.Build.0 = Debug|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|Win32.ActiveCfg = Release|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|Win32.Build.0 = Release|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|x64.ActiveCfg = Release|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|x64.Build.0 = Release|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|x86.ActiveCfg = Release|Any CPU
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C}.Release|x86.Build.0 = Release|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|Win32.Build.0 = Debug|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|x64.Build.0 = Debug|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Debug|x86.Build.0 = Debug|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|Win32.ActiveCfg = Release|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|Win32.Build.0 = Release|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|x64.ActiveCfg = Release|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|x64.Build.0 = Release|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|x86.ActiveCfg = Release|Any CPU
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6}.Release|x86.Build.0 = Release|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|Win32.Build.0 = Debug|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|x64.Build.0 = Debug|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Debug|x86.Build.0 = Debug|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|Win32.ActiveCfg = Release|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|Win32.Build.0 = Release|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|x64.ActiveCfg = Release|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|x64.Build.0 = Release|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|x86.ActiveCfg = Release|Any CPU
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D}.Release|x86.Build.0 = Release|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|Win32.Build.0 = Debug|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|x64.Build.0 = Debug|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Debug|x86.Build.0 = Debug|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Release|Win32.ActiveCfg = Release|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Release|Win32.Build.0 = Release|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Release|x64.ActiveCfg = Release|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Release|x64.Build.0 = Release|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Release|x86.ActiveCfg = Release|Any CPU
+ {B1577537-4675-40CA-B6F4-699E544E5238}.Release|x86.Build.0 = Release|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|Win32.Build.0 = Debug|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|x64.Build.0 = Debug|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Debug|x86.Build.0 = Debug|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|Win32.ActiveCfg = Release|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|Win32.Build.0 = Release|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|x64.ActiveCfg = Release|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|x64.Build.0 = Release|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|x86.ActiveCfg = Release|Any CPU
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8}.Release|x86.Build.0 = Release|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|Win32.Build.0 = Debug|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|x64.Build.0 = Debug|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Debug|x86.Build.0 = Debug|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|Win32.ActiveCfg = Release|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|Win32.Build.0 = Release|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|x64.ActiveCfg = Release|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|x64.Build.0 = Release|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|x86.ActiveCfg = Release|Any CPU
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA}.Release|x86.Build.0 = Release|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|Win32.Build.0 = Debug|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|x64.Build.0 = Debug|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Debug|x86.Build.0 = Debug|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|Win32.ActiveCfg = Release|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|Win32.Build.0 = Release|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|x64.ActiveCfg = Release|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|x64.Build.0 = Release|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|x86.ActiveCfg = Release|Any CPU
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB}.Release|x86.Build.0 = Release|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|Win32.Build.0 = Debug|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|x64.Build.0 = Debug|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Debug|x86.Build.0 = Debug|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|Win32.ActiveCfg = Release|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|Win32.Build.0 = Release|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|x64.ActiveCfg = Release|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|x64.Build.0 = Release|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|x86.ActiveCfg = Release|Any CPU
+ {3B256C5C-6B43-418F-8101-6418275DD8E3}.Release|x86.Build.0 = Release|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|Win32.Build.0 = Debug|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|x64.Build.0 = Debug|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Debug|x86.Build.0 = Debug|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|Any CPU.Build.0 = Release|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|Win32.ActiveCfg = Release|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|Win32.Build.0 = Release|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|x64.ActiveCfg = Release|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|x64.Build.0 = Release|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|x86.ActiveCfg = Release|Any CPU
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184}.Release|x86.Build.0 = Release|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|Win32.Build.0 = Debug|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|x64.Build.0 = Debug|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Debug|x86.Build.0 = Debug|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|Win32.ActiveCfg = Release|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|Win32.Build.0 = Release|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|x64.ActiveCfg = Release|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|x64.Build.0 = Release|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|x86.ActiveCfg = Release|Any CPU
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF}.Release|x86.Build.0 = Release|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Debug|Win32.Build.0 = Debug|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Debug|x64.Build.0 = Debug|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Debug|x86.Build.0 = Debug|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Release|Win32.ActiveCfg = Release|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Release|Win32.Build.0 = Release|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Release|x64.ActiveCfg = Release|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Release|x64.Build.0 = Release|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Release|x86.ActiveCfg = Release|Any CPU
+ {80313AD3-B247-414E-8421-332CF600192A}.Release|x86.Build.0 = Release|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|Win32.Build.0 = Debug|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|x64.Build.0 = Debug|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Debug|x86.Build.0 = Debug|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|Win32.ActiveCfg = Release|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|Win32.Build.0 = Release|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|x64.ActiveCfg = Release|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|x64.Build.0 = Release|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|x86.ActiveCfg = Release|Any CPU
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7}.Release|x86.Build.0 = Release|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|Win32.Build.0 = Debug|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|x64.Build.0 = Debug|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Debug|x86.Build.0 = Debug|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|Win32.ActiveCfg = Release|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|Win32.Build.0 = Release|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|x64.ActiveCfg = Release|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|x64.Build.0 = Release|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|x86.ActiveCfg = Release|Any CPU
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE}.Release|x86.Build.0 = Release|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|Win32.Build.0 = Debug|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|x64.Build.0 = Debug|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Debug|x86.Build.0 = Debug|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|Win32.ActiveCfg = Release|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|Win32.Build.0 = Release|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|x64.ActiveCfg = Release|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|x64.Build.0 = Release|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|x86.ActiveCfg = Release|Any CPU
+ {B1E67507-8344-4759-97C0-5938BE4028C3}.Release|x86.Build.0 = Release|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|Win32.Build.0 = Debug|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|x64.Build.0 = Debug|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Debug|x86.Build.0 = Debug|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|Win32.ActiveCfg = Release|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|Win32.Build.0 = Release|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|x64.ActiveCfg = Release|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|x64.Build.0 = Release|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|x86.ActiveCfg = Release|Any CPU
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F}.Release|x86.Build.0 = Release|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|Win32.Build.0 = Debug|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|x64.Build.0 = Debug|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Debug|x86.Build.0 = Debug|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|Win32.ActiveCfg = Release|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|Win32.Build.0 = Release|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|x64.ActiveCfg = Release|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|x64.Build.0 = Release|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|x86.ActiveCfg = Release|Any CPU
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6}.Release|x86.Build.0 = Release|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|Win32.Build.0 = Debug|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|x64.Build.0 = Debug|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Debug|x86.Build.0 = Debug|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|Win32.ActiveCfg = Release|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|Win32.Build.0 = Release|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|x64.ActiveCfg = Release|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|x64.Build.0 = Release|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|x86.ActiveCfg = Release|Any CPU
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282}.Release|x86.Build.0 = Release|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|Win32.Build.0 = Debug|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|x64.Build.0 = Debug|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Debug|x86.Build.0 = Debug|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|Win32.ActiveCfg = Release|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|Win32.Build.0 = Release|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|x64.ActiveCfg = Release|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|x64.Build.0 = Release|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|x86.ActiveCfg = Release|Any CPU
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -532,4 +996,27 @@ Global
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3448830C-EBDC-426C-85CD-7BBB9651A7FE}
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {D9DDBA32-F017-4B04-A9A8-684B09792D6B} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {70DF5E87-3CCE-4EB4-96C0-7570FEBE785F} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {393482D5-4902-4D78-A085-D3D1DAAB35C5} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {DB1A8734-E61E-4DC8-9664-681E691DDD2C} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {D290F8B9-5C8C-4B11-82A7-E1F1615771B6} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {941A0327-CBE9-4804-BD45-49C0D4889E2D} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {B1577537-4675-40CA-B6F4-699E544E5238} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {588C62D7-47A4-434F-80D1-D2EA7CCEB4D8} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {DB8B7AE5-262F-4114-B8C7-0CB900BE81FA} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {479023FE-D41A-47C2-84D3-7AB89EA94DCB} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {3B256C5C-6B43-418F-8101-6418275DD8E3} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {522B49EE-8F4D-4DF9-A8D8-F7C49D630184} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {94668F26-EF57-4308-84E7-F3AEFF6BEEEF} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {80313AD3-B247-414E-8421-332CF600192A} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {6C1A297B-DA4A-4291-8E09-1BE27A7896C7} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {FFE772D4-4EA0-4CFF-959F-F03A665D21EE} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {B1E67507-8344-4759-97C0-5938BE4028C3} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {55FDA93E-B630-4EBF-BE13-45ABF23FF66F} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {F15C15AA-FF3C-4B9D-B779-157573A026D6} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {7D87AEB7-A2AD-4649-A9BC-ED577851D282} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ {368FAC59-60D1-49D6-AF2C-EC489551C5E4} = {2AC30C72-9249-4621-967C-929ECA51D9F2}
+ EndGlobalSection
EndGlobal
diff --git a/tests/BDInfo.Test/BDInfo.Test.csproj b/tests/BDInfo.Test/BDInfo.Test.csproj
new file mode 100644
index 0000000000..f0438f3947
--- /dev/null
+++ b/tests/BDInfo.Test/BDInfo.Test.csproj
@@ -0,0 +1,23 @@
+