diff --git a/all.sln b/all.sln index d81fcf391..0637c250f 100644 --- a/all.sln +++ b/all.sln @@ -1,4 +1,5 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 + +Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.3.32929.385 MinimumVisualStudioVersion = 10.0.40219.1 @@ -247,6 +248,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkflowVersioning", "examp EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.IntegrationTest.Workflow.Versioning.ReferenceWorkflows", "test\Dapr.IntegrationTest.Workflow.Versioning.ReferenceWorkflows\Dapr.IntegrationTest.Workflow.Versioning.ReferenceWorkflows.csproj", "{97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.IntegrationTest.Configuration", "test\Dapr.IntegrationTest.Configuration\Dapr.IntegrationTest.Configuration.csproj", "{193BBE09-E261-4D65-B4CC-18B88DB049D7}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.IntegrationTest.Messaging", "test\Dapr.IntegrationTest.Messaging\Dapr.IntegrationTest.Messaging.csproj", "{01A20A89-53A1-4D5B-B563-89E157718474}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Dapr.IntegrationTest.Cryptography", "test\Dapr.IntegrationTest.Cryptography\Dapr.IntegrationTest.Cryptography.csproj", "{7B14879F-156B-417E-ACA3-0B5A69CC2F39}" @@ -254,413 +257,1213 @@ 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 {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Debug|x64.ActiveCfg = Debug|Any CPU + {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Debug|x64.Build.0 = Debug|Any CPU + {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Debug|x86.ActiveCfg = Debug|Any CPU + {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Debug|x86.Build.0 = Debug|Any CPU {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Release|Any CPU.ActiveCfg = Release|Any CPU {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Release|Any CPU.Build.0 = Release|Any CPU + {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Release|x64.ActiveCfg = Release|Any CPU + {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Release|x64.Build.0 = Release|Any CPU + {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Release|x86.ActiveCfg = Release|Any CPU + {C2DB4B64-B7C3-4FED-8753-C040F677C69A}.Release|x86.Build.0 = Release|Any CPU {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Debug|x64.ActiveCfg = Debug|Any CPU + {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Debug|x64.Build.0 = Debug|Any CPU + {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Debug|x86.ActiveCfg = Debug|Any CPU + {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Debug|x86.Build.0 = Debug|Any CPU {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Release|Any CPU.ActiveCfg = Release|Any CPU {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Release|Any CPU.Build.0 = Release|Any CPU + {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Release|x64.ActiveCfg = Release|Any CPU + {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Release|x64.Build.0 = Release|Any CPU + {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Release|x86.ActiveCfg = Release|Any CPU + {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A}.Release|x86.Build.0 = Release|Any CPU {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Debug|x64.ActiveCfg = Debug|Any CPU + {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Debug|x64.Build.0 = Debug|Any CPU + {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Debug|x86.ActiveCfg = Debug|Any CPU + {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Debug|x86.Build.0 = Debug|Any CPU {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Release|Any CPU.ActiveCfg = Release|Any CPU {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Release|Any CPU.Build.0 = Release|Any CPU + {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Release|x64.ActiveCfg = Release|Any CPU + {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Release|x64.Build.0 = Release|Any CPU + {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Release|x86.ActiveCfg = Release|Any CPU + {B9C12532-0969-4DAC-A2F8-CA9208D7A901}.Release|x86.Build.0 = Release|Any CPU {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Debug|x64.ActiveCfg = Debug|Any CPU + {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Debug|x64.Build.0 = Debug|Any CPU + {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Debug|x86.ActiveCfg = Debug|Any CPU + {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Debug|x86.Build.0 = Debug|Any CPU {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Release|Any CPU.ActiveCfg = Release|Any CPU {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Release|Any CPU.Build.0 = Release|Any CPU + {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Release|x64.ActiveCfg = Release|Any CPU + {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Release|x64.Build.0 = Release|Any CPU + {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Release|x86.ActiveCfg = Release|Any CPU + {62E41317-ED5D-4AA4-B129-C9E56C27354C}.Release|x86.Build.0 = Release|Any CPU {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Debug|x64.ActiveCfg = Debug|Any CPU + {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Debug|x64.Build.0 = Debug|Any CPU + {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Debug|x86.ActiveCfg = Debug|Any CPU + {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Debug|x86.Build.0 = Debug|Any CPU {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|Any CPU.ActiveCfg = Release|Any CPU {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|Any CPU.Build.0 = Release|Any CPU + {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|x64.ActiveCfg = Release|Any CPU + {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|x64.Build.0 = Release|Any CPU + {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|x86.ActiveCfg = Release|Any CPU + {08D602F6-7C11-4653-B70B-B56333BF6FD2}.Release|x86.Build.0 = Release|Any CPU {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Debug|Any CPU.Build.0 = Debug|Any CPU + {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Debug|x64.ActiveCfg = Debug|Any CPU + {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Debug|x64.Build.0 = Debug|Any CPU + {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Debug|x86.ActiveCfg = Debug|Any CPU + {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Debug|x86.Build.0 = Debug|Any CPU {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Release|Any CPU.ActiveCfg = Release|Any CPU {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Release|Any CPU.Build.0 = Release|Any CPU + {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Release|x64.ActiveCfg = Release|Any CPU + {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Release|x64.Build.0 = Release|Any CPU + {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Release|x86.ActiveCfg = Release|Any CPU + {383609C1-F43F-49EB-85E4-1964EE7F0F14}.Release|x86.Build.0 = Release|Any CPU {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Debug|x64.ActiveCfg = Debug|Any CPU + {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Debug|x64.Build.0 = Debug|Any CPU + {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Debug|x86.ActiveCfg = Debug|Any CPU + {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Debug|x86.Build.0 = Debug|Any CPU {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Release|Any CPU.ActiveCfg = Release|Any CPU {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Release|Any CPU.Build.0 = Release|Any CPU + {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Release|x64.ActiveCfg = Release|Any CPU + {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Release|x64.Build.0 = Release|Any CPU + {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Release|x86.ActiveCfg = Release|Any CPU + {B314AD5E-10AC-418A-B021-D4206BF37ACF}.Release|x86.Build.0 = Release|Any CPU {0CD1912D-5E27-4A2A-A998-164792E0D006}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0CD1912D-5E27-4A2A-A998-164792E0D006}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0CD1912D-5E27-4A2A-A998-164792E0D006}.Debug|x64.ActiveCfg = Debug|Any CPU + {0CD1912D-5E27-4A2A-A998-164792E0D006}.Debug|x64.Build.0 = Debug|Any CPU + {0CD1912D-5E27-4A2A-A998-164792E0D006}.Debug|x86.ActiveCfg = Debug|Any CPU + {0CD1912D-5E27-4A2A-A998-164792E0D006}.Debug|x86.Build.0 = Debug|Any CPU {0CD1912D-5E27-4A2A-A998-164792E0D006}.Release|Any CPU.ActiveCfg = Release|Any CPU {0CD1912D-5E27-4A2A-A998-164792E0D006}.Release|Any CPU.Build.0 = Release|Any CPU + {0CD1912D-5E27-4A2A-A998-164792E0D006}.Release|x64.ActiveCfg = Release|Any CPU + {0CD1912D-5E27-4A2A-A998-164792E0D006}.Release|x64.Build.0 = Release|Any CPU + {0CD1912D-5E27-4A2A-A998-164792E0D006}.Release|x86.ActiveCfg = Release|Any CPU + {0CD1912D-5E27-4A2A-A998-164792E0D006}.Release|x86.Build.0 = Release|Any CPU {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Debug|Any CPU.Build.0 = Debug|Any CPU + {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Debug|x64.ActiveCfg = Debug|Any CPU + {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Debug|x64.Build.0 = Debug|Any CPU + {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Debug|x86.ActiveCfg = Debug|Any CPU + {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Debug|x86.Build.0 = Debug|Any CPU {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|Any CPU.ActiveCfg = Release|Any CPU {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|Any CPU.Build.0 = Release|Any CPU + {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|x64.ActiveCfg = Release|Any CPU + {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|x64.Build.0 = Release|Any CPU + {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|x86.ActiveCfg = Release|Any CPU + {342783B5-F75B-4752-A3E2-B8CB7D09C080}.Release|x86.Build.0 = Release|Any CPU {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Debug|x64.ActiveCfg = Debug|Any CPU + {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Debug|x64.Build.0 = Debug|Any CPU + {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Debug|x86.ActiveCfg = Debug|Any CPU + {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Debug|x86.Build.0 = Debug|Any CPU {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Release|Any CPU.ActiveCfg = Release|Any CPU {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Release|Any CPU.Build.0 = Release|Any CPU + {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Release|x64.ActiveCfg = Release|Any CPU + {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Release|x64.Build.0 = Release|Any CPU + {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Release|x86.ActiveCfg = Release|Any CPU + {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737}.Release|x86.Build.0 = Release|Any CPU {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Debug|Any CPU.Build.0 = Debug|Any CPU + {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Debug|x64.ActiveCfg = Debug|Any CPU + {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Debug|x64.Build.0 = Debug|Any CPU + {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Debug|x86.ActiveCfg = Debug|Any CPU + {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Debug|x86.Build.0 = Debug|Any CPU {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Release|Any CPU.ActiveCfg = Release|Any CPU {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Release|Any CPU.Build.0 = Release|Any CPU + {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Release|x64.ActiveCfg = Release|Any CPU + {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Release|x64.Build.0 = Release|Any CPU + {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Release|x86.ActiveCfg = Release|Any CPU + {95BAF30B-8089-42CE-8530-6DFBCE1F6A07}.Release|x86.Build.0 = Release|Any CPU {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Debug|x64.ActiveCfg = Debug|Any CPU + {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Debug|x64.Build.0 = Debug|Any CPU + {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Debug|x86.ActiveCfg = Debug|Any CPU + {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Debug|x86.Build.0 = Debug|Any CPU {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Release|Any CPU.ActiveCfg = Release|Any CPU {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Release|Any CPU.Build.0 = Release|Any CPU + {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Release|x64.ActiveCfg = Release|Any CPU + {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Release|x64.Build.0 = Release|Any CPU + {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Release|x86.ActiveCfg = Release|Any CPU + {1BA7E772-8AA7-4D5A-800D-66B17F62421C}.Release|x86.Build.0 = Release|Any CPU {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Debug|Any CPU.Build.0 = Debug|Any CPU + {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Debug|x64.ActiveCfg = Debug|Any CPU + {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Debug|x64.Build.0 = Debug|Any CPU + {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Debug|x86.ActiveCfg = Debug|Any CPU + {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Debug|x86.Build.0 = Debug|Any CPU {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Release|Any CPU.ActiveCfg = Release|Any CPU {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Release|Any CPU.Build.0 = Release|Any CPU + {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Release|x64.ActiveCfg = Release|Any CPU + {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Release|x64.Build.0 = Release|Any CPU + {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Release|x86.ActiveCfg = Release|Any CPU + {78FC19B2-396C-4ED2-BFD9-6C5667C61666}.Release|x86.Build.0 = Release|Any CPU {B615B353-476C-43B9-A776-B193B0DBD256}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B615B353-476C-43B9-A776-B193B0DBD256}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B615B353-476C-43B9-A776-B193B0DBD256}.Debug|x64.ActiveCfg = Debug|Any CPU + {B615B353-476C-43B9-A776-B193B0DBD256}.Debug|x64.Build.0 = Debug|Any CPU + {B615B353-476C-43B9-A776-B193B0DBD256}.Debug|x86.ActiveCfg = Debug|Any CPU + {B615B353-476C-43B9-A776-B193B0DBD256}.Debug|x86.Build.0 = Debug|Any CPU {B615B353-476C-43B9-A776-B193B0DBD256}.Release|Any CPU.ActiveCfg = Release|Any CPU {B615B353-476C-43B9-A776-B193B0DBD256}.Release|Any CPU.Build.0 = Release|Any CPU + {B615B353-476C-43B9-A776-B193B0DBD256}.Release|x64.ActiveCfg = Release|Any CPU + {B615B353-476C-43B9-A776-B193B0DBD256}.Release|x64.Build.0 = Release|Any CPU + {B615B353-476C-43B9-A776-B193B0DBD256}.Release|x86.ActiveCfg = Release|Any CPU + {B615B353-476C-43B9-A776-B193B0DBD256}.Release|x86.Build.0 = Release|Any CPU {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Debug|x64.ActiveCfg = Debug|Any CPU + {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Debug|x64.Build.0 = Debug|Any CPU + {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Debug|x86.ActiveCfg = Debug|Any CPU + {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Debug|x86.Build.0 = Debug|Any CPU {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Release|Any CPU.ActiveCfg = Release|Any CPU {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Release|Any CPU.Build.0 = Release|Any CPU + {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Release|x64.ActiveCfg = Release|Any CPU + {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Release|x64.Build.0 = Release|Any CPU + {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Release|x86.ActiveCfg = Release|Any CPU + {2EC50C79-782D-4985-ABB1-AD07F35D1621}.Release|x86.Build.0 = Release|Any CPU {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Debug|x64.ActiveCfg = Debug|Any CPU + {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Debug|x64.Build.0 = Debug|Any CPU + {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Debug|x86.ActiveCfg = Debug|Any CPU + {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Debug|x86.Build.0 = Debug|Any CPU {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Release|Any CPU.ActiveCfg = Release|Any CPU {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Release|Any CPU.Build.0 = Release|Any CPU + {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Release|x64.ActiveCfg = Release|Any CPU + {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Release|x64.Build.0 = Release|Any CPU + {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Release|x86.ActiveCfg = Release|Any CPU + {15A16323-2CCA-472E-BE79-07259DAD5F6F}.Release|x86.Build.0 = Release|Any CPU {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Debug|x64.ActiveCfg = Debug|Any CPU + {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Debug|x64.Build.0 = Debug|Any CPU + {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Debug|x86.ActiveCfg = Debug|Any CPU + {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Debug|x86.Build.0 = Debug|Any CPU {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Release|Any CPU.ActiveCfg = Release|Any CPU {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Release|Any CPU.Build.0 = Release|Any CPU + {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Release|x64.ActiveCfg = Release|Any CPU + {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Release|x64.Build.0 = Release|Any CPU + {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Release|x86.ActiveCfg = Release|Any CPU + {5BACBA51-03FE-4CE1-B0F5-9E9C2A132FAB}.Release|x86.Build.0 = Release|Any CPU {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Debug|x64.ActiveCfg = Debug|Any CPU + {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Debug|x64.Build.0 = Debug|Any CPU + {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Debug|x86.ActiveCfg = Debug|Any CPU + {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Debug|x86.Build.0 = Debug|Any CPU {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Release|Any CPU.ActiveCfg = Release|Any CPU {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Release|Any CPU.Build.0 = Release|Any CPU + {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Release|x64.ActiveCfg = Release|Any CPU + {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Release|x64.Build.0 = Release|Any CPU + {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Release|x86.ActiveCfg = Release|Any CPU + {3160CC92-1D6E-42CB-AE89-9401C8CEC5CB}.Release|x86.Build.0 = Release|Any CPU {7957E852-1291-4FAA-9034-FB66CE817FF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7957E852-1291-4FAA-9034-FB66CE817FF1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7957E852-1291-4FAA-9034-FB66CE817FF1}.Debug|x64.ActiveCfg = Debug|Any CPU + {7957E852-1291-4FAA-9034-FB66CE817FF1}.Debug|x64.Build.0 = Debug|Any CPU + {7957E852-1291-4FAA-9034-FB66CE817FF1}.Debug|x86.ActiveCfg = Debug|Any CPU + {7957E852-1291-4FAA-9034-FB66CE817FF1}.Debug|x86.Build.0 = Debug|Any CPU {7957E852-1291-4FAA-9034-FB66CE817FF1}.Release|Any CPU.ActiveCfg = Release|Any CPU {7957E852-1291-4FAA-9034-FB66CE817FF1}.Release|Any CPU.Build.0 = Release|Any CPU + {7957E852-1291-4FAA-9034-FB66CE817FF1}.Release|x64.ActiveCfg = Release|Any CPU + {7957E852-1291-4FAA-9034-FB66CE817FF1}.Release|x64.Build.0 = Release|Any CPU + {7957E852-1291-4FAA-9034-FB66CE817FF1}.Release|x86.ActiveCfg = Release|Any CPU + {7957E852-1291-4FAA-9034-FB66CE817FF1}.Release|x86.Build.0 = Release|Any CPU {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Debug|x64.ActiveCfg = Debug|Any CPU + {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Debug|x64.Build.0 = Debug|Any CPU + {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Debug|x86.ActiveCfg = Debug|Any CPU + {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Debug|x86.Build.0 = Debug|Any CPU {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Release|Any CPU.ActiveCfg = Release|Any CPU {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Release|Any CPU.Build.0 = Release|Any CPU + {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Release|x64.ActiveCfg = Release|Any CPU + {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Release|x64.Build.0 = Release|Any CPU + {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Release|x86.ActiveCfg = Release|Any CPU + {626D74DD-4F37-4F74-87A3-5A6888684F5E}.Release|x86.Build.0 = Release|Any CPU {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Debug|x64.ActiveCfg = Debug|Any CPU + {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Debug|x64.Build.0 = Debug|Any CPU + {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Debug|x86.ActiveCfg = Debug|Any CPU + {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Debug|x86.Build.0 = Debug|Any CPU {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Release|Any CPU.ActiveCfg = Release|Any CPU {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Release|Any CPU.Build.0 = Release|Any CPU + {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Release|x64.ActiveCfg = Release|Any CPU + {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Release|x64.Build.0 = Release|Any CPU + {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Release|x86.ActiveCfg = Release|Any CPU + {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C}.Release|x86.Build.0 = Release|Any CPU {F70AC78E-8925-4770-832A-2FC67A620EB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F70AC78E-8925-4770-832A-2FC67A620EB2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F70AC78E-8925-4770-832A-2FC67A620EB2}.Debug|x64.ActiveCfg = Debug|Any CPU + {F70AC78E-8925-4770-832A-2FC67A620EB2}.Debug|x64.Build.0 = Debug|Any CPU + {F70AC78E-8925-4770-832A-2FC67A620EB2}.Debug|x86.ActiveCfg = Debug|Any CPU + {F70AC78E-8925-4770-832A-2FC67A620EB2}.Debug|x86.Build.0 = Debug|Any CPU {F70AC78E-8925-4770-832A-2FC67A620EB2}.Release|Any CPU.ActiveCfg = Release|Any CPU {F70AC78E-8925-4770-832A-2FC67A620EB2}.Release|Any CPU.Build.0 = Release|Any CPU + {F70AC78E-8925-4770-832A-2FC67A620EB2}.Release|x64.ActiveCfg = Release|Any CPU + {F70AC78E-8925-4770-832A-2FC67A620EB2}.Release|x64.Build.0 = Release|Any CPU + {F70AC78E-8925-4770-832A-2FC67A620EB2}.Release|x86.ActiveCfg = Release|Any CPU + {F70AC78E-8925-4770-832A-2FC67A620EB2}.Release|x86.Build.0 = Release|Any CPU {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Debug|x64.ActiveCfg = Debug|Any CPU + {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Debug|x64.Build.0 = Debug|Any CPU + {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Debug|x86.ActiveCfg = Debug|Any CPU + {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Debug|x86.Build.0 = Debug|Any CPU {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Release|Any CPU.ActiveCfg = Release|Any CPU {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Release|Any CPU.Build.0 = Release|Any CPU + {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Release|x64.ActiveCfg = Release|Any CPU + {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Release|x64.Build.0 = Release|Any CPU + {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Release|x86.ActiveCfg = Release|Any CPU + {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0}.Release|x86.Build.0 = Release|Any CPU {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Debug|x64.ActiveCfg = Debug|Any CPU + {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Debug|x64.Build.0 = Debug|Any CPU + {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Debug|x86.ActiveCfg = Debug|Any CPU + {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Debug|x86.Build.0 = Debug|Any CPU {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Release|Any CPU.ActiveCfg = Release|Any CPU {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Release|Any CPU.Build.0 = Release|Any CPU + {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Release|x64.ActiveCfg = Release|Any CPU + {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Release|x64.Build.0 = Release|Any CPU + {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Release|x86.ActiveCfg = Release|Any CPU + {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2}.Release|x86.Build.0 = Release|Any CPU {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Debug|x64.ActiveCfg = Debug|Any CPU + {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Debug|x64.Build.0 = Debug|Any CPU + {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Debug|x86.ActiveCfg = Debug|Any CPU + {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Debug|x86.Build.0 = Debug|Any CPU {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Release|Any CPU.ActiveCfg = Release|Any CPU {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Release|Any CPU.Build.0 = Release|Any CPU + {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Release|x64.ActiveCfg = Release|Any CPU + {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Release|x64.Build.0 = Release|Any CPU + {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Release|x86.ActiveCfg = Release|Any CPU + {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C}.Release|x86.Build.0 = Release|Any CPU {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Debug|x64.ActiveCfg = Debug|Any CPU + {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Debug|x64.Build.0 = Debug|Any CPU + {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Debug|x86.ActiveCfg = Debug|Any CPU + {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Debug|x86.Build.0 = Debug|Any CPU {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Release|Any CPU.ActiveCfg = Release|Any CPU {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Release|Any CPU.Build.0 = Release|Any CPU + {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Release|x64.ActiveCfg = Release|Any CPU + {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Release|x64.Build.0 = Release|Any CPU + {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Release|x86.ActiveCfg = Release|Any CPU + {E8212911-344B-4638-ADC3-B215BCDCAFD1}.Release|x86.Build.0 = Release|Any CPU {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Debug|x64.ActiveCfg = Debug|Any CPU + {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Debug|x64.Build.0 = Debug|Any CPU + {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Debug|x86.ActiveCfg = Debug|Any CPU + {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Debug|x86.Build.0 = Debug|Any CPU {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Release|Any CPU.ActiveCfg = Release|Any CPU {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Release|Any CPU.Build.0 = Release|Any CPU + {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Release|x64.ActiveCfg = Release|Any CPU + {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Release|x64.Build.0 = Release|Any CPU + {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Release|x86.ActiveCfg = Release|Any CPU + {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66}.Release|x86.Build.0 = Release|Any CPU {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Debug|x64.ActiveCfg = Debug|Any CPU + {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Debug|x64.Build.0 = Debug|Any CPU + {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Debug|x86.ActiveCfg = Debug|Any CPU + {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Debug|x86.Build.0 = Debug|Any CPU {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Release|Any CPU.ActiveCfg = Release|Any CPU {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Release|Any CPU.Build.0 = Release|Any CPU + {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Release|x64.ActiveCfg = Release|Any CPU + {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Release|x64.Build.0 = Release|Any CPU + {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Release|x86.ActiveCfg = Release|Any CPU + {5BE7F505-7D77-4C3A-ABFD-54088774DAA7}.Release|x86.Build.0 = Release|Any CPU {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Debug|Any CPU.Build.0 = Debug|Any CPU + {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Debug|x64.ActiveCfg = Debug|Any CPU + {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Debug|x64.Build.0 = Debug|Any CPU + {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Debug|x86.ActiveCfg = Debug|Any CPU + {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Debug|x86.Build.0 = Debug|Any CPU {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Release|Any CPU.ActiveCfg = Release|Any CPU {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Release|Any CPU.Build.0 = Release|Any CPU + {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Release|x64.ActiveCfg = Release|Any CPU + {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Release|x64.Build.0 = Release|Any CPU + {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Release|x86.ActiveCfg = Release|Any CPU + {35031EDB-C0DE-453A-8335-D2EBEA2FC640}.Release|x86.Build.0 = Release|Any CPU {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Debug|Any CPU.Build.0 = Debug|Any CPU + {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Debug|x64.ActiveCfg = Debug|Any CPU + {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Debug|x64.Build.0 = Debug|Any CPU + {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Debug|x86.ActiveCfg = Debug|Any CPU + {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Debug|x86.Build.0 = Debug|Any CPU {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Release|Any CPU.ActiveCfg = Release|Any CPU {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Release|Any CPU.Build.0 = Release|Any CPU + {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Release|x64.ActiveCfg = Release|Any CPU + {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Release|x64.Build.0 = Release|Any CPU + {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Release|x86.ActiveCfg = Release|Any CPU + {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99}.Release|x86.Build.0 = Release|Any CPU {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Debug|x64.ActiveCfg = Debug|Any CPU + {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Debug|x64.Build.0 = Debug|Any CPU + {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Debug|x86.ActiveCfg = Debug|Any CPU + {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Debug|x86.Build.0 = Debug|Any CPU {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Release|Any CPU.ActiveCfg = Release|Any CPU {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Release|Any CPU.Build.0 = Release|Any CPU + {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Release|x64.ActiveCfg = Release|Any CPU + {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Release|x64.Build.0 = Release|Any CPU + {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Release|x86.ActiveCfg = Release|Any CPU + {5C61ABED-7623-4C28-A5C9-C5972A0F669C}.Release|x86.Build.0 = Release|Any CPU {4A175C27-EAFE-47E7-90F6-873B37863656}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4A175C27-EAFE-47E7-90F6-873B37863656}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4A175C27-EAFE-47E7-90F6-873B37863656}.Debug|x64.ActiveCfg = Debug|Any CPU + {4A175C27-EAFE-47E7-90F6-873B37863656}.Debug|x64.Build.0 = Debug|Any CPU + {4A175C27-EAFE-47E7-90F6-873B37863656}.Debug|x86.ActiveCfg = Debug|Any CPU + {4A175C27-EAFE-47E7-90F6-873B37863656}.Debug|x86.Build.0 = Debug|Any CPU {4A175C27-EAFE-47E7-90F6-873B37863656}.Release|Any CPU.ActiveCfg = Release|Any CPU {4A175C27-EAFE-47E7-90F6-873B37863656}.Release|Any CPU.Build.0 = Release|Any CPU + {4A175C27-EAFE-47E7-90F6-873B37863656}.Release|x64.ActiveCfg = Release|Any CPU + {4A175C27-EAFE-47E7-90F6-873B37863656}.Release|x64.Build.0 = Release|Any CPU + {4A175C27-EAFE-47E7-90F6-873B37863656}.Release|x86.ActiveCfg = Release|Any CPU + {4A175C27-EAFE-47E7-90F6-873B37863656}.Release|x86.Build.0 = Release|Any CPU {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Debug|x64.ActiveCfg = Debug|Any CPU + {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Debug|x64.Build.0 = Debug|Any CPU + {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Debug|x86.ActiveCfg = Debug|Any CPU + {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Debug|x86.Build.0 = Debug|Any CPU {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Release|Any CPU.ActiveCfg = Release|Any CPU {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Release|Any CPU.Build.0 = Release|Any CPU + {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Release|x64.ActiveCfg = Release|Any CPU + {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Release|x64.Build.0 = Release|Any CPU + {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Release|x86.ActiveCfg = Release|Any CPU + {DDC41278-FB60-403A-B969-2AEBD7C2D83C}.Release|x86.Build.0 = Release|Any CPU {61C24126-F39D-4BEA-96DC-FC87BA730554}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {61C24126-F39D-4BEA-96DC-FC87BA730554}.Debug|Any CPU.Build.0 = Debug|Any CPU + {61C24126-F39D-4BEA-96DC-FC87BA730554}.Debug|x64.ActiveCfg = Debug|Any CPU + {61C24126-F39D-4BEA-96DC-FC87BA730554}.Debug|x64.Build.0 = Debug|Any CPU + {61C24126-F39D-4BEA-96DC-FC87BA730554}.Debug|x86.ActiveCfg = Debug|Any CPU + {61C24126-F39D-4BEA-96DC-FC87BA730554}.Debug|x86.Build.0 = Debug|Any CPU {61C24126-F39D-4BEA-96DC-FC87BA730554}.Release|Any CPU.ActiveCfg = Release|Any CPU {61C24126-F39D-4BEA-96DC-FC87BA730554}.Release|Any CPU.Build.0 = Release|Any CPU + {61C24126-F39D-4BEA-96DC-FC87BA730554}.Release|x64.ActiveCfg = Release|Any CPU + {61C24126-F39D-4BEA-96DC-FC87BA730554}.Release|x64.Build.0 = Release|Any CPU + {61C24126-F39D-4BEA-96DC-FC87BA730554}.Release|x86.ActiveCfg = Release|Any CPU + {61C24126-F39D-4BEA-96DC-FC87BA730554}.Release|x86.Build.0 = Release|Any CPU {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Debug|x64.ActiveCfg = Debug|Any CPU + {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Debug|x64.Build.0 = Debug|Any CPU + {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Debug|x86.ActiveCfg = Debug|Any CPU + {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Debug|x86.Build.0 = Debug|Any CPU {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Release|Any CPU.ActiveCfg = Release|Any CPU {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Release|Any CPU.Build.0 = Release|Any CPU + {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Release|x64.ActiveCfg = Release|Any CPU + {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Release|x64.Build.0 = Release|Any CPU + {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Release|x86.ActiveCfg = Release|Any CPU + {CB903D21-4869-42EF-BDD6-5B1CFF674337}.Release|x86.Build.0 = Release|Any CPU {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Debug|Any CPU.Build.0 = Debug|Any CPU + {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Debug|x64.ActiveCfg = Debug|Any CPU + {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Debug|x64.Build.0 = Debug|Any CPU + {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Debug|x86.ActiveCfg = Debug|Any CPU + {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Debug|x86.Build.0 = Debug|Any CPU {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Release|Any CPU.ActiveCfg = Release|Any CPU {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Release|Any CPU.Build.0 = Release|Any CPU + {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Release|x64.ActiveCfg = Release|Any CPU + {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Release|x64.Build.0 = Release|Any CPU + {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Release|x86.ActiveCfg = Release|Any CPU + {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625}.Release|x86.Build.0 = Release|Any CPU {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Debug|x64.ActiveCfg = Debug|Any CPU + {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Debug|x64.Build.0 = Debug|Any CPU + {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Debug|x86.ActiveCfg = Debug|Any CPU + {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Debug|x86.Build.0 = Debug|Any CPU {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Release|Any CPU.ActiveCfg = Release|Any CPU {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Release|Any CPU.Build.0 = Release|Any CPU + {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Release|x64.ActiveCfg = Release|Any CPU + {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Release|x64.Build.0 = Release|Any CPU + {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Release|x86.ActiveCfg = Release|Any CPU + {7C06FE2D-6C62-48F5-A505-F0D715C554DE}.Release|x86.Build.0 = Release|Any CPU {AF89083D-4715-42E6-93E9-38497D12A8A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AF89083D-4715-42E6-93E9-38497D12A8A6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AF89083D-4715-42E6-93E9-38497D12A8A6}.Debug|x64.ActiveCfg = Debug|Any CPU + {AF89083D-4715-42E6-93E9-38497D12A8A6}.Debug|x64.Build.0 = Debug|Any CPU + {AF89083D-4715-42E6-93E9-38497D12A8A6}.Debug|x86.ActiveCfg = Debug|Any CPU + {AF89083D-4715-42E6-93E9-38497D12A8A6}.Debug|x86.Build.0 = Debug|Any CPU {AF89083D-4715-42E6-93E9-38497D12A8A6}.Release|Any CPU.ActiveCfg = Release|Any CPU {AF89083D-4715-42E6-93E9-38497D12A8A6}.Release|Any CPU.Build.0 = Release|Any CPU + {AF89083D-4715-42E6-93E9-38497D12A8A6}.Release|x64.ActiveCfg = Release|Any CPU + {AF89083D-4715-42E6-93E9-38497D12A8A6}.Release|x64.Build.0 = Release|Any CPU + {AF89083D-4715-42E6-93E9-38497D12A8A6}.Release|x86.ActiveCfg = Release|Any CPU + {AF89083D-4715-42E6-93E9-38497D12A8A6}.Release|x86.Build.0 = Release|Any CPU {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Debug|x64.ActiveCfg = Debug|Any CPU + {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Debug|x64.Build.0 = Debug|Any CPU + {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Debug|x86.ActiveCfg = Debug|Any CPU + {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Debug|x86.Build.0 = Debug|Any CPU {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Release|Any CPU.ActiveCfg = Release|Any CPU {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Release|Any CPU.Build.0 = Release|Any CPU - {C74FBA78-13E8-407F-A173-4555AEE41FF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C74FBA78-13E8-407F-A173-4555AEE41FF3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C74FBA78-13E8-407F-A173-4555AEE41FF3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C74FBA78-13E8-407F-A173-4555AEE41FF3}.Release|Any CPU.Build.0 = Release|Any CPU + {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Release|x64.ActiveCfg = Release|Any CPU + {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Release|x64.Build.0 = Release|Any CPU + {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Release|x86.ActiveCfg = Release|Any CPU + {B5CDB0DC-B26D-48F1-B934-FE5C1C991940}.Release|x86.Build.0 = Release|Any CPU {DFBABB04-50E9-42F6-B470-310E1B545638}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DFBABB04-50E9-42F6-B470-310E1B545638}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DFBABB04-50E9-42F6-B470-310E1B545638}.Debug|x64.ActiveCfg = Debug|Any CPU + {DFBABB04-50E9-42F6-B470-310E1B545638}.Debug|x64.Build.0 = Debug|Any CPU + {DFBABB04-50E9-42F6-B470-310E1B545638}.Debug|x86.ActiveCfg = Debug|Any CPU + {DFBABB04-50E9-42F6-B470-310E1B545638}.Debug|x86.Build.0 = Debug|Any CPU {DFBABB04-50E9-42F6-B470-310E1B545638}.Release|Any CPU.ActiveCfg = Release|Any CPU {DFBABB04-50E9-42F6-B470-310E1B545638}.Release|Any CPU.Build.0 = Release|Any CPU + {DFBABB04-50E9-42F6-B470-310E1B545638}.Release|x64.ActiveCfg = Release|Any CPU + {DFBABB04-50E9-42F6-B470-310E1B545638}.Release|x64.Build.0 = Release|Any CPU + {DFBABB04-50E9-42F6-B470-310E1B545638}.Release|x86.ActiveCfg = Release|Any CPU + {DFBABB04-50E9-42F6-B470-310E1B545638}.Release|x86.Build.0 = Release|Any CPU {B445B19C-A925-4873-8CB7-8317898B6970}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B445B19C-A925-4873-8CB7-8317898B6970}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B445B19C-A925-4873-8CB7-8317898B6970}.Debug|x64.ActiveCfg = Debug|Any CPU + {B445B19C-A925-4873-8CB7-8317898B6970}.Debug|x64.Build.0 = Debug|Any CPU + {B445B19C-A925-4873-8CB7-8317898B6970}.Debug|x86.ActiveCfg = Debug|Any CPU + {B445B19C-A925-4873-8CB7-8317898B6970}.Debug|x86.Build.0 = Debug|Any CPU {B445B19C-A925-4873-8CB7-8317898B6970}.Release|Any CPU.ActiveCfg = Release|Any CPU {B445B19C-A925-4873-8CB7-8317898B6970}.Release|Any CPU.Build.0 = Release|Any CPU + {B445B19C-A925-4873-8CB7-8317898B6970}.Release|x64.ActiveCfg = Release|Any CPU + {B445B19C-A925-4873-8CB7-8317898B6970}.Release|x64.Build.0 = Release|Any CPU + {B445B19C-A925-4873-8CB7-8317898B6970}.Release|x86.ActiveCfg = Release|Any CPU + {B445B19C-A925-4873-8CB7-8317898B6970}.Release|x86.Build.0 = Release|Any CPU {CDB47863-BEBD-4841-A807-46D868962521}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CDB47863-BEBD-4841-A807-46D868962521}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CDB47863-BEBD-4841-A807-46D868962521}.Debug|x64.ActiveCfg = Debug|Any CPU + {CDB47863-BEBD-4841-A807-46D868962521}.Debug|x64.Build.0 = Debug|Any CPU + {CDB47863-BEBD-4841-A807-46D868962521}.Debug|x86.ActiveCfg = Debug|Any CPU + {CDB47863-BEBD-4841-A807-46D868962521}.Debug|x86.Build.0 = Debug|Any CPU {CDB47863-BEBD-4841-A807-46D868962521}.Release|Any CPU.ActiveCfg = Release|Any CPU {CDB47863-BEBD-4841-A807-46D868962521}.Release|Any CPU.Build.0 = Release|Any CPU + {CDB47863-BEBD-4841-A807-46D868962521}.Release|x64.ActiveCfg = Release|Any CPU + {CDB47863-BEBD-4841-A807-46D868962521}.Release|x64.Build.0 = Release|Any CPU + {CDB47863-BEBD-4841-A807-46D868962521}.Release|x86.ActiveCfg = Release|Any CPU + {CDB47863-BEBD-4841-A807-46D868962521}.Release|x86.Build.0 = Release|Any CPU {273F2527-1658-4CCF-8DC6-600E921188C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {273F2527-1658-4CCF-8DC6-600E921188C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {273F2527-1658-4CCF-8DC6-600E921188C5}.Debug|x64.ActiveCfg = Debug|Any CPU + {273F2527-1658-4CCF-8DC6-600E921188C5}.Debug|x64.Build.0 = Debug|Any CPU + {273F2527-1658-4CCF-8DC6-600E921188C5}.Debug|x86.ActiveCfg = Debug|Any CPU + {273F2527-1658-4CCF-8DC6-600E921188C5}.Debug|x86.Build.0 = Debug|Any CPU {273F2527-1658-4CCF-8DC6-600E921188C5}.Release|Any CPU.ActiveCfg = Release|Any CPU {273F2527-1658-4CCF-8DC6-600E921188C5}.Release|Any CPU.Build.0 = Release|Any CPU + {273F2527-1658-4CCF-8DC6-600E921188C5}.Release|x64.ActiveCfg = Release|Any CPU + {273F2527-1658-4CCF-8DC6-600E921188C5}.Release|x64.Build.0 = Release|Any CPU + {273F2527-1658-4CCF-8DC6-600E921188C5}.Release|x86.ActiveCfg = Release|Any CPU + {273F2527-1658-4CCF-8DC6-600E921188C5}.Release|x86.Build.0 = Release|Any CPU {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Debug|x64.ActiveCfg = Debug|Any CPU + {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Debug|x64.Build.0 = Debug|Any CPU + {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Debug|x86.ActiveCfg = Debug|Any CPU + {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Debug|x86.Build.0 = Debug|Any CPU {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Release|Any CPU.ActiveCfg = Release|Any CPU {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Release|Any CPU.Build.0 = Release|Any CPU + {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Release|x64.ActiveCfg = Release|Any CPU + {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Release|x64.Build.0 = Release|Any CPU + {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Release|x86.ActiveCfg = Release|Any CPU + {2F3700EF-1CDA-4C15-AC88-360230000ECD}.Release|x86.Build.0 = Release|Any CPU {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Debug|x64.ActiveCfg = Debug|Any CPU + {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Debug|x64.Build.0 = Debug|Any CPU + {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Debug|x86.ActiveCfg = Debug|Any CPU + {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Debug|x86.Build.0 = Debug|Any CPU {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Release|Any CPU.ActiveCfg = Release|Any CPU {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Release|Any CPU.Build.0 = Release|Any CPU + {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Release|x64.ActiveCfg = Release|Any CPU + {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Release|x64.Build.0 = Release|Any CPU + {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Release|x86.ActiveCfg = Release|Any CPU + {11011FF8-77EA-4B25-96C0-29D4D486EF1C}.Release|x86.Build.0 = Release|Any CPU {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Debug|x64.ActiveCfg = Debug|Any CPU + {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Debug|x64.Build.0 = Debug|Any CPU + {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Debug|x86.ActiveCfg = Debug|Any CPU + {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Debug|x86.Build.0 = Debug|Any CPU {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Release|Any CPU.ActiveCfg = Release|Any CPU {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Release|Any CPU.Build.0 = Release|Any CPU + {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Release|x64.ActiveCfg = Release|Any CPU + {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Release|x64.Build.0 = Release|Any CPU + {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Release|x86.ActiveCfg = Release|Any CPU + {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F}.Release|x86.Build.0 = Release|Any CPU {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Debug|x64.ActiveCfg = Debug|Any CPU + {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Debug|x64.Build.0 = Debug|Any CPU + {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Debug|x86.ActiveCfg = Debug|Any CPU + {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Debug|x86.Build.0 = Debug|Any CPU {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Release|Any CPU.ActiveCfg = Release|Any CPU {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Release|Any CPU.Build.0 = Release|Any CPU + {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Release|x64.ActiveCfg = Release|Any CPU + {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Release|x64.Build.0 = Release|Any CPU + {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Release|x86.ActiveCfg = Release|Any CPU + {7F73A3D8-FFC2-4E31-AA3D-A4840316A8C6}.Release|x86.Build.0 = Release|Any CPU {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Debug|x64.ActiveCfg = Debug|Any CPU + {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Debug|x64.Build.0 = Debug|Any CPU + {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Debug|x86.ActiveCfg = Debug|Any CPU + {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Debug|x86.Build.0 = Debug|Any CPU {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Release|Any CPU.ActiveCfg = Release|Any CPU {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Release|Any CPU.Build.0 = Release|Any CPU + {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Release|x64.ActiveCfg = Release|Any CPU + {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Release|x64.Build.0 = Release|Any CPU + {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Release|x86.ActiveCfg = Release|Any CPU + {945DD3B7-94E5-435E-B3CB-796C20A652C7}.Release|x86.Build.0 = Release|Any CPU {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Debug|x64.ActiveCfg = Debug|Any CPU + {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Debug|x64.Build.0 = Debug|Any CPU + {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Debug|x86.ActiveCfg = Debug|Any CPU + {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Debug|x86.Build.0 = Debug|Any CPU {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Release|Any CPU.ActiveCfg = Release|Any CPU {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Release|Any CPU.Build.0 = Release|Any CPU + {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Release|x64.ActiveCfg = Release|Any CPU + {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Release|x64.Build.0 = Release|Any CPU + {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Release|x86.ActiveCfg = Release|Any CPU + {FD3E9371-3134-4235-8E80-32226DFB4B1F}.Release|x86.Build.0 = Release|Any CPU {D83B27F3-4401-42F5-843E-147566B4999A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D83B27F3-4401-42F5-843E-147566B4999A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D83B27F3-4401-42F5-843E-147566B4999A}.Debug|x64.ActiveCfg = Debug|Any CPU + {D83B27F3-4401-42F5-843E-147566B4999A}.Debug|x64.Build.0 = Debug|Any CPU + {D83B27F3-4401-42F5-843E-147566B4999A}.Debug|x86.ActiveCfg = Debug|Any CPU + {D83B27F3-4401-42F5-843E-147566B4999A}.Debug|x86.Build.0 = Debug|Any CPU {D83B27F3-4401-42F5-843E-147566B4999A}.Release|Any CPU.ActiveCfg = Release|Any CPU {D83B27F3-4401-42F5-843E-147566B4999A}.Release|Any CPU.Build.0 = Release|Any CPU + {D83B27F3-4401-42F5-843E-147566B4999A}.Release|x64.ActiveCfg = Release|Any CPU + {D83B27F3-4401-42F5-843E-147566B4999A}.Release|x64.Build.0 = Release|Any CPU + {D83B27F3-4401-42F5-843E-147566B4999A}.Release|x86.ActiveCfg = Release|Any CPU + {D83B27F3-4401-42F5-843E-147566B4999A}.Release|x86.Build.0 = Release|Any CPU {00359961-0C50-4BB1-A794-8B06DE991639}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {00359961-0C50-4BB1-A794-8B06DE991639}.Debug|Any CPU.Build.0 = Debug|Any CPU + {00359961-0C50-4BB1-A794-8B06DE991639}.Debug|x64.ActiveCfg = Debug|Any CPU + {00359961-0C50-4BB1-A794-8B06DE991639}.Debug|x64.Build.0 = Debug|Any CPU + {00359961-0C50-4BB1-A794-8B06DE991639}.Debug|x86.ActiveCfg = Debug|Any CPU + {00359961-0C50-4BB1-A794-8B06DE991639}.Debug|x86.Build.0 = Debug|Any CPU {00359961-0C50-4BB1-A794-8B06DE991639}.Release|Any CPU.ActiveCfg = Release|Any CPU {00359961-0C50-4BB1-A794-8B06DE991639}.Release|Any CPU.Build.0 = Release|Any CPU + {00359961-0C50-4BB1-A794-8B06DE991639}.Release|x64.ActiveCfg = Release|Any CPU + {00359961-0C50-4BB1-A794-8B06DE991639}.Release|x64.Build.0 = Release|Any CPU + {00359961-0C50-4BB1-A794-8B06DE991639}.Release|x86.ActiveCfg = Release|Any CPU + {00359961-0C50-4BB1-A794-8B06DE991639}.Release|x86.Build.0 = Release|Any CPU {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Debug|x64.ActiveCfg = Debug|Any CPU + {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Debug|x64.Build.0 = Debug|Any CPU + {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Debug|x86.ActiveCfg = Debug|Any CPU + {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Debug|x86.Build.0 = Debug|Any CPU {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Release|Any CPU.ActiveCfg = Release|Any CPU {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Release|Any CPU.Build.0 = Release|Any CPU + {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Release|x64.ActiveCfg = Release|Any CPU + {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Release|x64.Build.0 = Release|Any CPU + {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Release|x86.ActiveCfg = Release|Any CPU + {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9}.Release|x86.Build.0 = Release|Any CPU {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Debug|x64.ActiveCfg = Debug|Any CPU + {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Debug|x64.Build.0 = Debug|Any CPU + {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Debug|x86.ActiveCfg = Debug|Any CPU + {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Debug|x86.Build.0 = Debug|Any CPU {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Release|Any CPU.ActiveCfg = Release|Any CPU {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Release|Any CPU.Build.0 = Release|Any CPU - {290D1278-F613-4DF3-9DF5-F37E38CDC363}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {290D1278-F613-4DF3-9DF5-F37E38CDC363}.Debug|Any CPU.Build.0 = Debug|Any CPU - {290D1278-F613-4DF3-9DF5-F37E38CDC363}.Release|Any CPU.ActiveCfg = Release|Any CPU - {290D1278-F613-4DF3-9DF5-F37E38CDC363}.Release|Any CPU.Build.0 = Release|Any CPU + {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Release|x64.ActiveCfg = Release|Any CPU + {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Release|x64.Build.0 = Release|Any CPU + {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Release|x86.ActiveCfg = Release|Any CPU + {0EAE36A1-B578-4F13-A113-7A477ECA1BDA}.Release|x86.Build.0 = Release|Any CPU {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Debug|x64.ActiveCfg = Debug|Any CPU + {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Debug|x64.Build.0 = Debug|Any CPU + {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Debug|x86.ActiveCfg = Debug|Any CPU + {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Debug|x86.Build.0 = Debug|Any CPU {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Release|Any CPU.ActiveCfg = Release|Any CPU {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Release|Any CPU.Build.0 = Release|Any CPU + {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Release|x64.ActiveCfg = Release|Any CPU + {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Release|x64.Build.0 = Release|Any CPU + {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Release|x86.ActiveCfg = Release|Any CPU + {C8BB6A85-A7EA-40C0-893D-F36F317829B3}.Release|x86.Build.0 = Release|Any CPU {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Debug|x64.ActiveCfg = Debug|Any CPU + {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Debug|x64.Build.0 = Debug|Any CPU + {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Debug|x86.ActiveCfg = Debug|Any CPU + {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Debug|x86.Build.0 = Debug|Any CPU {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Release|Any CPU.ActiveCfg = Release|Any CPU {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Release|Any CPU.Build.0 = Release|Any CPU + {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Release|x64.ActiveCfg = Release|Any CPU + {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Release|x64.Build.0 = Release|Any CPU + {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Release|x86.ActiveCfg = Release|Any CPU + {BF9828E9-5597-4D42-AA6E-6E6C12214204}.Release|x86.Build.0 = Release|Any CPU {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Debug|x64.ActiveCfg = Debug|Any CPU + {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Debug|x64.Build.0 = Debug|Any CPU + {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Debug|x86.ActiveCfg = Debug|Any CPU + {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Debug|x86.Build.0 = Debug|Any CPU {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Release|Any CPU.ActiveCfg = Release|Any CPU {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Release|Any CPU.Build.0 = Release|Any CPU + {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Release|x64.ActiveCfg = Release|Any CPU + {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Release|x64.Build.0 = Release|Any CPU + {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Release|x86.ActiveCfg = Release|Any CPU + {9CAF360E-5AD3-4C4F-89A0-327EEB70D673}.Release|x86.Build.0 = Release|Any CPU {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Debug|x64.ActiveCfg = Debug|Any CPU + {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Debug|x64.Build.0 = Debug|Any CPU + {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Debug|x86.ActiveCfg = Debug|Any CPU + {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Debug|x86.Build.0 = Debug|Any CPU {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Release|Any CPU.ActiveCfg = Release|Any CPU {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Release|Any CPU.Build.0 = Release|Any CPU - {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Release|x64.ActiveCfg = Release|Any CPU + {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Release|x64.Build.0 = Release|Any CPU + {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Release|x86.ActiveCfg = Release|Any CPU + {E90114C6-86FC-43B8-AE5C-D9273CF21FE4}.Release|x86.Build.0 = Release|Any CPU + {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Debug|x64.ActiveCfg = Debug|Any CPU + {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Debug|x64.Build.0 = Debug|Any CPU + {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Debug|x86.ActiveCfg = Debug|Any CPU + {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Debug|x86.Build.0 = Debug|Any CPU {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Release|Any CPU.ActiveCfg = Release|Any CPU {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Release|Any CPU.Build.0 = Release|Any CPU + {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Release|x64.ActiveCfg = Release|Any CPU + {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Release|x64.Build.0 = Release|Any CPU + {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Release|x86.ActiveCfg = Release|Any CPU + {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C}.Release|x86.Build.0 = Release|Any CPU {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Debug|x64.ActiveCfg = Debug|Any CPU + {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Debug|x64.Build.0 = Debug|Any CPU + {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Debug|x86.ActiveCfg = Debug|Any CPU + {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Debug|x86.Build.0 = Debug|Any CPU {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Release|Any CPU.ActiveCfg = Release|Any CPU {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Release|Any CPU.Build.0 = Release|Any CPU + {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Release|x64.ActiveCfg = Release|Any CPU + {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Release|x64.Build.0 = Release|Any CPU + {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Release|x86.ActiveCfg = Release|Any CPU + {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539}.Release|x86.Build.0 = Release|Any CPU {28B87C37-4B52-400F-B84D-64F134931BDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {28B87C37-4B52-400F-B84D-64F134931BDC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {28B87C37-4B52-400F-B84D-64F134931BDC}.Debug|x64.ActiveCfg = Debug|Any CPU + {28B87C37-4B52-400F-B84D-64F134931BDC}.Debug|x64.Build.0 = Debug|Any CPU + {28B87C37-4B52-400F-B84D-64F134931BDC}.Debug|x86.ActiveCfg = Debug|Any CPU + {28B87C37-4B52-400F-B84D-64F134931BDC}.Debug|x86.Build.0 = Debug|Any CPU {28B87C37-4B52-400F-B84D-64F134931BDC}.Release|Any CPU.ActiveCfg = Release|Any CPU {28B87C37-4B52-400F-B84D-64F134931BDC}.Release|Any CPU.Build.0 = Release|Any CPU + {28B87C37-4B52-400F-B84D-64F134931BDC}.Release|x64.ActiveCfg = Release|Any CPU + {28B87C37-4B52-400F-B84D-64F134931BDC}.Release|x64.Build.0 = Release|Any CPU + {28B87C37-4B52-400F-B84D-64F134931BDC}.Release|x86.ActiveCfg = Release|Any CPU + {28B87C37-4B52-400F-B84D-64F134931BDC}.Release|x86.Build.0 = Release|Any CPU {CADEAE45-8981-4723-B641-9C28251C7D3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CADEAE45-8981-4723-B641-9C28251C7D3B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CADEAE45-8981-4723-B641-9C28251C7D3B}.Debug|x64.ActiveCfg = Debug|Any CPU + {CADEAE45-8981-4723-B641-9C28251C7D3B}.Debug|x64.Build.0 = Debug|Any CPU + {CADEAE45-8981-4723-B641-9C28251C7D3B}.Debug|x86.ActiveCfg = Debug|Any CPU + {CADEAE45-8981-4723-B641-9C28251C7D3B}.Debug|x86.Build.0 = Debug|Any CPU {CADEAE45-8981-4723-B641-9C28251C7D3B}.Release|Any CPU.ActiveCfg = Release|Any CPU {CADEAE45-8981-4723-B641-9C28251C7D3B}.Release|Any CPU.Build.0 = Release|Any CPU + {CADEAE45-8981-4723-B641-9C28251C7D3B}.Release|x64.ActiveCfg = Release|Any CPU + {CADEAE45-8981-4723-B641-9C28251C7D3B}.Release|x64.Build.0 = Release|Any CPU + {CADEAE45-8981-4723-B641-9C28251C7D3B}.Release|x86.ActiveCfg = Release|Any CPU + {CADEAE45-8981-4723-B641-9C28251C7D3B}.Release|x86.Build.0 = Release|Any CPU {E49C822C-E921-48DF-897B-3E603CA596D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E49C822C-E921-48DF-897B-3E603CA596D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E49C822C-E921-48DF-897B-3E603CA596D2}.Debug|x64.ActiveCfg = Debug|Any CPU + {E49C822C-E921-48DF-897B-3E603CA596D2}.Debug|x64.Build.0 = Debug|Any CPU + {E49C822C-E921-48DF-897B-3E603CA596D2}.Debug|x86.ActiveCfg = Debug|Any CPU + {E49C822C-E921-48DF-897B-3E603CA596D2}.Debug|x86.Build.0 = Debug|Any CPU {E49C822C-E921-48DF-897B-3E603CA596D2}.Release|Any CPU.ActiveCfg = Release|Any CPU {E49C822C-E921-48DF-897B-3E603CA596D2}.Release|Any CPU.Build.0 = Release|Any CPU + {E49C822C-E921-48DF-897B-3E603CA596D2}.Release|x64.ActiveCfg = Release|Any CPU + {E49C822C-E921-48DF-897B-3E603CA596D2}.Release|x64.Build.0 = Release|Any CPU + {E49C822C-E921-48DF-897B-3E603CA596D2}.Release|x86.ActiveCfg = Release|Any CPU + {E49C822C-E921-48DF-897B-3E603CA596D2}.Release|x86.Build.0 = Release|Any CPU {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Debug|x64.ActiveCfg = Debug|Any CPU + {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Debug|x64.Build.0 = Debug|Any CPU + {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Debug|x86.ActiveCfg = Debug|Any CPU + {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Debug|x86.Build.0 = Debug|Any CPU {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Release|Any CPU.ActiveCfg = Release|Any CPU {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Release|Any CPU.Build.0 = Release|Any CPU + {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Release|x64.ActiveCfg = Release|Any CPU + {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Release|x64.Build.0 = Release|Any CPU + {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Release|x86.ActiveCfg = Release|Any CPU + {A2C0F203-11FF-4B7F-A94F-B9FD873573FE}.Release|x86.Build.0 = Release|Any CPU {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Debug|x64.ActiveCfg = Debug|Any CPU + {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Debug|x64.Build.0 = Debug|Any CPU + {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Debug|x86.ActiveCfg = Debug|Any CPU + {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Debug|x86.Build.0 = Debug|Any CPU {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Release|Any CPU.ActiveCfg = Release|Any CPU {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Release|Any CPU.Build.0 = Release|Any CPU + {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Release|x64.ActiveCfg = Release|Any CPU + {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Release|x64.Build.0 = Release|Any CPU + {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Release|x86.ActiveCfg = Release|Any CPU + {7E23E229-6823-4D84-AF3A-AE14CEAEF52A}.Release|x86.Build.0 = Release|Any CPU {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Debug|Any CPU.Build.0 = Debug|Any CPU + {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Debug|x64.ActiveCfg = Debug|Any CPU + {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Debug|x64.Build.0 = Debug|Any CPU + {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Debug|x86.ActiveCfg = Debug|Any CPU + {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Debug|x86.Build.0 = Debug|Any CPU {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Release|Any CPU.ActiveCfg = Release|Any CPU {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Release|Any CPU.Build.0 = Release|Any CPU + {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Release|x64.ActiveCfg = Release|Any CPU + {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Release|x64.Build.0 = Release|Any CPU + {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Release|x86.ActiveCfg = Release|Any CPU + {160EFFA0-F6B9-49E4-B62B-68C0D53DB425}.Release|x86.Build.0 = Release|Any CPU {B508EBD6-0F14-480C-A446-45A09052733B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B508EBD6-0F14-480C-A446-45A09052733B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B508EBD6-0F14-480C-A446-45A09052733B}.Debug|x64.ActiveCfg = Debug|Any CPU + {B508EBD6-0F14-480C-A446-45A09052733B}.Debug|x64.Build.0 = Debug|Any CPU + {B508EBD6-0F14-480C-A446-45A09052733B}.Debug|x86.ActiveCfg = Debug|Any CPU + {B508EBD6-0F14-480C-A446-45A09052733B}.Debug|x86.Build.0 = Debug|Any CPU {B508EBD6-0F14-480C-A446-45A09052733B}.Release|Any CPU.ActiveCfg = Release|Any CPU {B508EBD6-0F14-480C-A446-45A09052733B}.Release|Any CPU.Build.0 = Release|Any CPU + {B508EBD6-0F14-480C-A446-45A09052733B}.Release|x64.ActiveCfg = Release|Any CPU + {B508EBD6-0F14-480C-A446-45A09052733B}.Release|x64.Build.0 = Release|Any CPU + {B508EBD6-0F14-480C-A446-45A09052733B}.Release|x86.ActiveCfg = Release|Any CPU + {B508EBD6-0F14-480C-A446-45A09052733B}.Release|x86.Build.0 = Release|Any CPU {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Debug|x64.ActiveCfg = Debug|Any CPU + {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Debug|x64.Build.0 = Debug|Any CPU + {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Debug|x86.ActiveCfg = Debug|Any CPU + {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Debug|x86.Build.0 = Debug|Any CPU {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Release|Any CPU.ActiveCfg = Release|Any CPU {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Release|Any CPU.Build.0 = Release|Any CPU + {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Release|x64.ActiveCfg = Release|Any CPU + {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Release|x64.Build.0 = Release|Any CPU + {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Release|x86.ActiveCfg = Release|Any CPU + {E070F694-335D-4D96-8951-F41D0A5F2A8B}.Release|x86.Build.0 = Release|Any CPU {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Debug|Any CPU.Build.0 = Debug|Any CPU + {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Debug|x64.ActiveCfg = Debug|Any CPU + {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Debug|x64.Build.0 = Debug|Any CPU + {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Debug|x86.ActiveCfg = Debug|Any CPU + {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Debug|x86.Build.0 = Debug|Any CPU {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Release|Any CPU.ActiveCfg = Release|Any CPU {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Release|Any CPU.Build.0 = Release|Any CPU + {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Release|x64.ActiveCfg = Release|Any CPU + {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Release|x64.Build.0 = Release|Any CPU + {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Release|x86.ActiveCfg = Release|Any CPU + {097D5F6F-D26F-4BFB-9074-FA52577EB442}.Release|x86.Build.0 = Release|Any CPU {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Debug|x64.ActiveCfg = Debug|Any CPU + {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Debug|x64.Build.0 = Debug|Any CPU + {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Debug|x86.ActiveCfg = Debug|Any CPU + {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Debug|x86.Build.0 = Debug|Any CPU {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Release|Any CPU.ActiveCfg = Release|Any CPU {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Release|Any CPU.Build.0 = Release|Any CPU + {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Release|x64.ActiveCfg = Release|Any CPU + {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Release|x64.Build.0 = Release|Any CPU + {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Release|x86.ActiveCfg = Release|Any CPU + {5764B1AA-66B8-43AE-9E0D-0B3B71714B92}.Release|x86.Build.0 = Release|Any CPU {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Debug|x64.ActiveCfg = Debug|Any CPU + {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Debug|x64.Build.0 = Debug|Any CPU + {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Debug|x86.ActiveCfg = Debug|Any CPU + {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Debug|x86.Build.0 = Debug|Any CPU {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Release|Any CPU.ActiveCfg = Release|Any CPU {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Release|Any CPU.Build.0 = Release|Any CPU + {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Release|x64.ActiveCfg = Release|Any CPU + {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Release|x64.Build.0 = Release|Any CPU + {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Release|x86.ActiveCfg = Release|Any CPU + {3553BE3C-C188-460A-AC4C-D3D82DC0922A}.Release|x86.Build.0 = Release|Any CPU {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Debug|x64.ActiveCfg = Debug|Any CPU + {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Debug|x64.Build.0 = Debug|Any CPU + {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Debug|x86.ActiveCfg = Debug|Any CPU + {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Debug|x86.Build.0 = Debug|Any CPU {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Release|Any CPU.ActiveCfg = Release|Any CPU {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Release|Any CPU.Build.0 = Release|Any CPU + {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Release|x64.ActiveCfg = Release|Any CPU + {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Release|x64.Build.0 = Release|Any CPU + {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Release|x86.ActiveCfg = Release|Any CPU + {A6AA3F39-AB3E-4475-B3E2-D53549CBDA49}.Release|x86.Build.0 = Release|Any CPU {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Debug|Any CPU.Build.0 = Debug|Any CPU + {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Debug|x64.ActiveCfg = Debug|Any CPU + {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Debug|x64.Build.0 = Debug|Any CPU + {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Debug|x86.ActiveCfg = Debug|Any CPU + {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Debug|x86.Build.0 = Debug|Any CPU {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Release|Any CPU.ActiveCfg = Release|Any CPU {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Release|Any CPU.Build.0 = Release|Any CPU + {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Release|x64.ActiveCfg = Release|Any CPU + {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Release|x64.Build.0 = Release|Any CPU + {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Release|x86.ActiveCfg = Release|Any CPU + {97A47B0B-9D3B-4CF0-A62C-650F2F211A59}.Release|x86.Build.0 = Release|Any CPU {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Debug|x64.ActiveCfg = Debug|Any CPU + {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Debug|x64.Build.0 = Debug|Any CPU + {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Debug|x86.ActiveCfg = Debug|Any CPU + {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Debug|x86.Build.0 = Debug|Any CPU {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Release|Any CPU.ActiveCfg = Release|Any CPU {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Release|Any CPU.Build.0 = Release|Any CPU + {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Release|x64.ActiveCfg = Release|Any CPU + {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Release|x64.Build.0 = Release|Any CPU + {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Release|x86.ActiveCfg = Release|Any CPU + {5BB15C36-BAF7-44F6-BF85-C533B8B47862}.Release|x86.Build.0 = Release|Any CPU {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Debug|x64.ActiveCfg = Debug|Any CPU + {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Debug|x64.Build.0 = Debug|Any CPU + {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Debug|x86.ActiveCfg = Debug|Any CPU + {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Debug|x86.Build.0 = Debug|Any CPU {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Release|Any CPU.ActiveCfg = Release|Any CPU {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Release|Any CPU.Build.0 = Release|Any CPU + {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Release|x64.ActiveCfg = Release|Any CPU + {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Release|x64.Build.0 = Release|Any CPU + {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Release|x86.ActiveCfg = Release|Any CPU + {6CD90C22-0F79-4D61-8DCE-5BE22C1304C4}.Release|x86.Build.0 = Release|Any CPU {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Debug|x64.ActiveCfg = Debug|Any CPU + {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Debug|x64.Build.0 = Debug|Any CPU + {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Debug|x86.ActiveCfg = Debug|Any CPU + {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Debug|x86.Build.0 = Debug|Any CPU {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Release|Any CPU.ActiveCfg = Release|Any CPU {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Release|Any CPU.Build.0 = Release|Any CPU + {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Release|x64.ActiveCfg = Release|Any CPU + {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Release|x64.Build.0 = Release|Any CPU + {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Release|x86.ActiveCfg = Release|Any CPU + {AE9804A8-906C-4C3B-B2A8-41F4D3269C19}.Release|x86.Build.0 = Release|Any CPU {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Debug|x64.ActiveCfg = Debug|Any CPU + {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Debug|x64.Build.0 = Debug|Any CPU + {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Debug|x86.ActiveCfg = Debug|Any CPU + {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Debug|x86.Build.0 = Debug|Any CPU {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Release|Any CPU.ActiveCfg = Release|Any CPU {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Release|Any CPU.Build.0 = Release|Any CPU + {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Release|x64.ActiveCfg = Release|Any CPU + {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Release|x64.Build.0 = Release|Any CPU + {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Release|x86.ActiveCfg = Release|Any CPU + {CA680984-0D3A-40E5-88FD-E2A125C6A126}.Release|x86.Build.0 = Release|Any CPU {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Debug|x64.ActiveCfg = Debug|Any CPU + {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Debug|x64.Build.0 = Debug|Any CPU + {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Debug|x86.ActiveCfg = Debug|Any CPU + {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Debug|x86.Build.0 = Debug|Any CPU {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Release|Any CPU.ActiveCfg = Release|Any CPU {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Release|Any CPU.Build.0 = Release|Any CPU + {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Release|x64.ActiveCfg = Release|Any CPU + {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Release|x64.Build.0 = Release|Any CPU + {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Release|x86.ActiveCfg = Release|Any CPU + {EDEEEAED-1856-4408-BAA6-A83E1B497B2A}.Release|x86.Build.0 = Release|Any CPU {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Debug|x64.ActiveCfg = Debug|Any CPU + {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Debug|x64.Build.0 = Debug|Any CPU + {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Debug|x86.ActiveCfg = Debug|Any CPU + {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Debug|x86.Build.0 = Debug|Any CPU {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Release|Any CPU.ActiveCfg = Release|Any CPU {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Release|Any CPU.Build.0 = Release|Any CPU + {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Release|x64.ActiveCfg = Release|Any CPU + {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Release|x64.Build.0 = Release|Any CPU + {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Release|x86.ActiveCfg = Release|Any CPU + {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE}.Release|x86.Build.0 = Release|Any CPU {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Debug|x64.ActiveCfg = Debug|Any CPU + {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Debug|x64.Build.0 = Debug|Any CPU + {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Debug|x86.ActiveCfg = Debug|Any CPU + {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Debug|x86.Build.0 = Debug|Any CPU {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Release|Any CPU.ActiveCfg = Release|Any CPU {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Release|Any CPU.Build.0 = Release|Any CPU + {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Release|x64.ActiveCfg = Release|Any CPU + {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Release|x64.Build.0 = Release|Any CPU + {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Release|x86.ActiveCfg = Release|Any CPU + {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93}.Release|x86.Build.0 = Release|Any CPU {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Debug|x64.ActiveCfg = Debug|Any CPU + {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Debug|x64.Build.0 = Debug|Any CPU + {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Debug|x86.ActiveCfg = Debug|Any CPU + {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Debug|x86.Build.0 = Debug|Any CPU {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Release|Any CPU.ActiveCfg = Release|Any CPU {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Release|Any CPU.Build.0 = Release|Any CPU + {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Release|x64.ActiveCfg = Release|Any CPU + {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Release|x64.Build.0 = Release|Any CPU + {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Release|x86.ActiveCfg = Release|Any CPU + {FB21FAC7-09F7-4F68-910C-224EE7150B35}.Release|x86.Build.0 = Release|Any CPU {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Debug|x64.ActiveCfg = Debug|Any CPU + {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Debug|x64.Build.0 = Debug|Any CPU + {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Debug|x86.ActiveCfg = Debug|Any CPU + {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Debug|x86.Build.0 = Debug|Any CPU {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Release|Any CPU.ActiveCfg = Release|Any CPU {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Release|Any CPU.Build.0 = Release|Any CPU + {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Release|x64.ActiveCfg = Release|Any CPU + {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Release|x64.Build.0 = Release|Any CPU + {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Release|x86.ActiveCfg = Release|Any CPU + {667E2F91-3004-4409-B6B8-9216EAFC44CF}.Release|x86.Build.0 = Release|Any CPU {77176EC6-C586-47B1-BB72-533327F9E7BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {77176EC6-C586-47B1-BB72-533327F9E7BE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {77176EC6-C586-47B1-BB72-533327F9E7BE}.Debug|x64.ActiveCfg = Debug|Any CPU + {77176EC6-C586-47B1-BB72-533327F9E7BE}.Debug|x64.Build.0 = Debug|Any CPU + {77176EC6-C586-47B1-BB72-533327F9E7BE}.Debug|x86.ActiveCfg = Debug|Any CPU + {77176EC6-C586-47B1-BB72-533327F9E7BE}.Debug|x86.Build.0 = Debug|Any CPU {77176EC6-C586-47B1-BB72-533327F9E7BE}.Release|Any CPU.ActiveCfg = Release|Any CPU {77176EC6-C586-47B1-BB72-533327F9E7BE}.Release|Any CPU.Build.0 = Release|Any CPU + {77176EC6-C586-47B1-BB72-533327F9E7BE}.Release|x64.ActiveCfg = Release|Any CPU + {77176EC6-C586-47B1-BB72-533327F9E7BE}.Release|x64.Build.0 = Release|Any CPU + {77176EC6-C586-47B1-BB72-533327F9E7BE}.Release|x86.ActiveCfg = Release|Any CPU + {77176EC6-C586-47B1-BB72-533327F9E7BE}.Release|x86.Build.0 = Release|Any CPU {030CB614-6148-4863-A39A-1251728DE51D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {030CB614-6148-4863-A39A-1251728DE51D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {030CB614-6148-4863-A39A-1251728DE51D}.Debug|x64.ActiveCfg = Debug|Any CPU + {030CB614-6148-4863-A39A-1251728DE51D}.Debug|x64.Build.0 = Debug|Any CPU + {030CB614-6148-4863-A39A-1251728DE51D}.Debug|x86.ActiveCfg = Debug|Any CPU + {030CB614-6148-4863-A39A-1251728DE51D}.Debug|x86.Build.0 = Debug|Any CPU {030CB614-6148-4863-A39A-1251728DE51D}.Release|Any CPU.ActiveCfg = Release|Any CPU {030CB614-6148-4863-A39A-1251728DE51D}.Release|Any CPU.Build.0 = Release|Any CPU + {030CB614-6148-4863-A39A-1251728DE51D}.Release|x64.ActiveCfg = Release|Any CPU + {030CB614-6148-4863-A39A-1251728DE51D}.Release|x64.Build.0 = Release|Any CPU + {030CB614-6148-4863-A39A-1251728DE51D}.Release|x86.ActiveCfg = Release|Any CPU + {030CB614-6148-4863-A39A-1251728DE51D}.Release|x86.Build.0 = Release|Any CPU {5AECC3FC-7374-4534-A305-397E3290E573}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5AECC3FC-7374-4534-A305-397E3290E573}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5AECC3FC-7374-4534-A305-397E3290E573}.Debug|x64.ActiveCfg = Debug|Any CPU + {5AECC3FC-7374-4534-A305-397E3290E573}.Debug|x64.Build.0 = Debug|Any CPU + {5AECC3FC-7374-4534-A305-397E3290E573}.Debug|x86.ActiveCfg = Debug|Any CPU + {5AECC3FC-7374-4534-A305-397E3290E573}.Debug|x86.Build.0 = Debug|Any CPU {5AECC3FC-7374-4534-A305-397E3290E573}.Release|Any CPU.ActiveCfg = Release|Any CPU {5AECC3FC-7374-4534-A305-397E3290E573}.Release|Any CPU.Build.0 = Release|Any CPU + {5AECC3FC-7374-4534-A305-397E3290E573}.Release|x64.ActiveCfg = Release|Any CPU + {5AECC3FC-7374-4534-A305-397E3290E573}.Release|x64.Build.0 = Release|Any CPU + {5AECC3FC-7374-4534-A305-397E3290E573}.Release|x86.ActiveCfg = Release|Any CPU + {5AECC3FC-7374-4534-A305-397E3290E573}.Release|x86.Build.0 = Release|Any CPU {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Debug|x64.ActiveCfg = Debug|Any CPU + {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Debug|x64.Build.0 = Debug|Any CPU + {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Debug|x86.ActiveCfg = Debug|Any CPU + {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Debug|x86.Build.0 = Debug|Any CPU {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Release|Any CPU.ActiveCfg = Release|Any CPU {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Release|Any CPU.Build.0 = Release|Any CPU + {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Release|x64.ActiveCfg = Release|Any CPU + {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Release|x64.Build.0 = Release|Any CPU + {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Release|x86.ActiveCfg = Release|Any CPU + {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF}.Release|x86.Build.0 = Release|Any CPU {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Debug|x64.ActiveCfg = Debug|Any CPU + {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Debug|x64.Build.0 = Debug|Any CPU + {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Debug|x86.ActiveCfg = Debug|Any CPU + {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Debug|x86.Build.0 = Debug|Any CPU {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Release|Any CPU.ActiveCfg = Release|Any CPU {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Release|Any CPU.Build.0 = Release|Any CPU + {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Release|x64.ActiveCfg = Release|Any CPU + {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Release|x64.Build.0 = Release|Any CPU + {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Release|x86.ActiveCfg = Release|Any CPU + {A05D1519-6A82-498F-B7C9-3D14E08D35CA}.Release|x86.Build.0 = Release|Any CPU {5A93F96B-4D0E-479D-B540-29678A0998FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5A93F96B-4D0E-479D-B540-29678A0998FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5A93F96B-4D0E-479D-B540-29678A0998FA}.Debug|x64.ActiveCfg = Debug|Any CPU + {5A93F96B-4D0E-479D-B540-29678A0998FA}.Debug|x64.Build.0 = Debug|Any CPU + {5A93F96B-4D0E-479D-B540-29678A0998FA}.Debug|x86.ActiveCfg = Debug|Any CPU + {5A93F96B-4D0E-479D-B540-29678A0998FA}.Debug|x86.Build.0 = Debug|Any CPU {5A93F96B-4D0E-479D-B540-29678A0998FA}.Release|Any CPU.ActiveCfg = Release|Any CPU {5A93F96B-4D0E-479D-B540-29678A0998FA}.Release|Any CPU.Build.0 = Release|Any CPU + {5A93F96B-4D0E-479D-B540-29678A0998FA}.Release|x64.ActiveCfg = Release|Any CPU + {5A93F96B-4D0E-479D-B540-29678A0998FA}.Release|x64.Build.0 = Release|Any CPU + {5A93F96B-4D0E-479D-B540-29678A0998FA}.Release|x86.ActiveCfg = Release|Any CPU + {5A93F96B-4D0E-479D-B540-29678A0998FA}.Release|x86.Build.0 = Release|Any CPU {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Debug|x64.ActiveCfg = Debug|Any CPU + {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Debug|x64.Build.0 = Debug|Any CPU + {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Debug|x86.ActiveCfg = Debug|Any CPU + {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Debug|x86.Build.0 = Debug|Any CPU {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Release|Any CPU.ActiveCfg = Release|Any CPU {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Release|Any CPU.Build.0 = Release|Any CPU + {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Release|x64.ActiveCfg = Release|Any CPU + {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Release|x64.Build.0 = Release|Any CPU + {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Release|x86.ActiveCfg = Release|Any CPU + {E958E875-8DDE-4B25-BE3A-C0760EC89376}.Release|x86.Build.0 = Release|Any CPU {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Debug|x64.ActiveCfg = Debug|Any CPU + {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Debug|x64.Build.0 = Debug|Any CPU + {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Debug|x86.ActiveCfg = Debug|Any CPU + {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Debug|x86.Build.0 = Debug|Any CPU {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Release|Any CPU.ActiveCfg = Release|Any CPU {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Release|Any CPU.Build.0 = Release|Any CPU + {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Release|x64.ActiveCfg = Release|Any CPU + {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Release|x64.Build.0 = Release|Any CPU + {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Release|x86.ActiveCfg = Release|Any CPU + {38AAD849-B59C-4011-B309-3E9F291E9B9F}.Release|x86.Build.0 = Release|Any CPU {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Debug|x64.ActiveCfg = Debug|Any CPU + {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Debug|x64.Build.0 = Debug|Any CPU + {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Debug|x86.ActiveCfg = Debug|Any CPU + {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Debug|x86.Build.0 = Debug|Any CPU {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Release|Any CPU.ActiveCfg = Release|Any CPU {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Release|Any CPU.Build.0 = Release|Any CPU + {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Release|x64.ActiveCfg = Release|Any CPU + {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Release|x64.Build.0 = Release|Any CPU + {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Release|x86.ActiveCfg = Release|Any CPU + {2D6EB9E0-C5BF-4BA4-B69F-0D2B5A0E36D5}.Release|x86.Build.0 = Release|Any CPU {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Debug|x64.ActiveCfg = Debug|Any CPU + {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Debug|x64.Build.0 = Debug|Any CPU + {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Debug|x86.ActiveCfg = Debug|Any CPU + {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Debug|x86.Build.0 = Debug|Any CPU {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Release|Any CPU.ActiveCfg = Release|Any CPU {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Release|Any CPU.Build.0 = Release|Any CPU + {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Release|x64.ActiveCfg = Release|Any CPU + {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Release|x64.Build.0 = Release|Any CPU + {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Release|x86.ActiveCfg = Release|Any CPU + {AD9F25C7-7BBD-459A-B3EF-1BE75C25E80A}.Release|x86.Build.0 = Release|Any CPU {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Debug|x64.ActiveCfg = Debug|Any CPU + {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Debug|x64.Build.0 = Debug|Any CPU + {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Debug|x86.ActiveCfg = Debug|Any CPU + {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Debug|x86.Build.0 = Debug|Any CPU {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Release|Any CPU.ActiveCfg = Release|Any CPU {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Release|Any CPU.Build.0 = Release|Any CPU + {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Release|x64.ActiveCfg = Release|Any CPU + {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Release|x64.Build.0 = Release|Any CPU + {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Release|x86.ActiveCfg = Release|Any CPU + {FB92C5BC-BEAB-465F-8976-CF2866A2D699}.Release|x86.Build.0 = Release|Any CPU {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Debug|x64.ActiveCfg = Debug|Any CPU + {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Debug|x64.Build.0 = Debug|Any CPU + {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Debug|x86.ActiveCfg = Debug|Any CPU + {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Debug|x86.Build.0 = Debug|Any CPU {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Release|Any CPU.ActiveCfg = Release|Any CPU {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Release|Any CPU.Build.0 = Release|Any CPU + {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Release|x64.ActiveCfg = Release|Any CPU + {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Release|x64.Build.0 = Release|Any CPU + {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Release|x86.ActiveCfg = Release|Any CPU + {B46E7964-03F5-450E-BF16-C3518EBF36CB}.Release|x86.Build.0 = Release|Any CPU {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Debug|x64.ActiveCfg = Debug|Any CPU + {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Debug|x64.Build.0 = Debug|Any CPU + {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Debug|x86.ActiveCfg = Debug|Any CPU + {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Debug|x86.Build.0 = Debug|Any CPU {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Release|Any CPU.ActiveCfg = Release|Any CPU {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Release|Any CPU.Build.0 = Release|Any CPU + {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Release|x64.ActiveCfg = Release|Any CPU + {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Release|x64.Build.0 = Release|Any CPU + {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Release|x86.ActiveCfg = Release|Any CPU + {BD1FA767-AC6D-429D-8BC0-3C0B52AA11FF}.Release|x86.Build.0 = Release|Any CPU {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Debug|x64.ActiveCfg = Debug|Any CPU + {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Debug|x64.Build.0 = Debug|Any CPU + {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Debug|x86.ActiveCfg = Debug|Any CPU + {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Debug|x86.Build.0 = Debug|Any CPU {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Release|Any CPU.ActiveCfg = Release|Any CPU {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Release|Any CPU.Build.0 = Release|Any CPU + {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Release|x64.ActiveCfg = Release|Any CPU + {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Release|x64.Build.0 = Release|Any CPU + {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Release|x86.ActiveCfg = Release|Any CPU + {CB619F1E-B90C-4BCB-9DDA-A5A4F5967661}.Release|x86.Build.0 = Release|Any CPU {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Debug|x64.ActiveCfg = Debug|Any CPU + {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Debug|x64.Build.0 = Debug|Any CPU + {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Debug|x86.ActiveCfg = Debug|Any CPU + {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Debug|x86.Build.0 = Debug|Any CPU {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Release|Any CPU.ActiveCfg = Release|Any CPU {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Release|Any CPU.Build.0 = Release|Any CPU + {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Release|x64.ActiveCfg = Release|Any CPU + {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Release|x64.Build.0 = Release|Any CPU + {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Release|x86.ActiveCfg = Release|Any CPU + {1AD32297-630E-4DFB-B3E4-CAFCE993F27F}.Release|x86.Build.0 = Release|Any CPU {4FF7F075-2818-41E4-A88F-743417EA0A99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4FF7F075-2818-41E4-A88F-743417EA0A99}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4FF7F075-2818-41E4-A88F-743417EA0A99}.Debug|x64.ActiveCfg = Debug|Any CPU + {4FF7F075-2818-41E4-A88F-743417EA0A99}.Debug|x64.Build.0 = Debug|Any CPU + {4FF7F075-2818-41E4-A88F-743417EA0A99}.Debug|x86.ActiveCfg = Debug|Any CPU + {4FF7F075-2818-41E4-A88F-743417EA0A99}.Debug|x86.Build.0 = Debug|Any CPU {4FF7F075-2818-41E4-A88F-743417EA0A99}.Release|Any CPU.ActiveCfg = Release|Any CPU {4FF7F075-2818-41E4-A88F-743417EA0A99}.Release|Any CPU.Build.0 = Release|Any CPU + {4FF7F075-2818-41E4-A88F-743417EA0A99}.Release|x64.ActiveCfg = Release|Any CPU + {4FF7F075-2818-41E4-A88F-743417EA0A99}.Release|x64.Build.0 = Release|Any CPU + {4FF7F075-2818-41E4-A88F-743417EA0A99}.Release|x86.ActiveCfg = Release|Any CPU + {4FF7F075-2818-41E4-A88F-743417EA0A99}.Release|x86.Build.0 = Release|Any CPU {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Debug|x64.ActiveCfg = Debug|Any CPU + {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Debug|x64.Build.0 = Debug|Any CPU + {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Debug|x86.ActiveCfg = Debug|Any CPU + {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Debug|x86.Build.0 = Debug|Any CPU {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Release|Any CPU.ActiveCfg = Release|Any CPU {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Release|Any CPU.Build.0 = Release|Any CPU + {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Release|x64.ActiveCfg = Release|Any CPU + {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Release|x64.Build.0 = Release|Any CPU + {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Release|x86.ActiveCfg = Release|Any CPU + {837E02A5-D1C0-4F60-AF93-71117BF3B6DC}.Release|x86.Build.0 = Release|Any CPU {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Debug|x64.ActiveCfg = Debug|Any CPU + {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Debug|x64.Build.0 = Debug|Any CPU + {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Debug|x86.ActiveCfg = Debug|Any CPU + {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Debug|x86.Build.0 = Debug|Any CPU {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Release|Any CPU.ActiveCfg = Release|Any CPU {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Release|Any CPU.Build.0 = Release|Any CPU + {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Release|x64.ActiveCfg = Release|Any CPU + {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Release|x64.Build.0 = Release|Any CPU + {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Release|x86.ActiveCfg = Release|Any CPU + {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6}.Release|x86.Build.0 = Release|Any CPU + {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Debug|x64.ActiveCfg = Debug|Any CPU + {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Debug|x64.Build.0 = Debug|Any CPU + {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Debug|x86.ActiveCfg = Debug|Any CPU + {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Debug|x86.Build.0 = Debug|Any CPU + {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Release|Any CPU.Build.0 = Release|Any CPU + {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Release|x64.ActiveCfg = Release|Any CPU + {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Release|x64.Build.0 = Release|Any CPU + {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Release|x86.ActiveCfg = Release|Any CPU + {193BBE09-E261-4D65-B4CC-18B88DB049D7}.Release|x86.Build.0 = Release|Any CPU {01A20A89-53A1-4D5B-B563-89E157718474}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {01A20A89-53A1-4D5B-B563-89E157718474}.Debug|Any CPU.Build.0 = Debug|Any CPU {01A20A89-53A1-4D5B-B563-89E157718474}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -675,9 +1478,18 @@ Global EndGlobalSection GlobalSection(NestedProjects) = preSolution {C2DB4B64-B7C3-4FED-8753-C040F677C69A} = {27C5D71D-0721-4221-9286-B94AB07B58CF} + {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} {B9C12532-0969-4DAC-A2F8-CA9208D7A901} = {27C5D71D-0721-4221-9286-B94AB07B58CF} {62E41317-ED5D-4AA4-B129-C9E56C27354C} = {27C5D71D-0721-4221-9286-B94AB07B58CF} {08D602F6-7C11-4653-B70B-B56333BF6FD2} = {27C5D71D-0721-4221-9286-B94AB07B58CF} + {383609C1-F43F-49EB-85E4-1964EE7F0F14} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} + {B314AD5E-10AC-418A-B021-D4206BF37ACF} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} + {0CD1912D-5E27-4A2A-A998-164792E0D006} = {047680F1-C0FE-4DE9-A257-62FA8599C834} + {342783B5-F75B-4752-A3E2-B8CB7D09C080} = {047680F1-C0FE-4DE9-A257-62FA8599C834} + {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} + {95BAF30B-8089-42CE-8530-6DFBCE1F6A07} = {047680F1-C0FE-4DE9-A257-62FA8599C834} + {1BA7E772-8AA7-4D5A-800D-66B17F62421C} = {047680F1-C0FE-4DE9-A257-62FA8599C834} + {78FC19B2-396C-4ED2-BFD9-6C5667C61666} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} {B615B353-476C-43B9-A776-B193B0DBD256} = {27C5D71D-0721-4221-9286-B94AB07B58CF} {A11DC259-D1DB-4686-AD28-A427D0BABA83} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78} {2EC50C79-782D-4985-ABB1-AD07F35D1621} = {A11DC259-D1DB-4686-AD28-A427D0BABA83} @@ -690,7 +1502,12 @@ Global {CC0A5C98-ACDE-4139-BA2F-2995A9B8E18C} = {02374BD0-BF0B-40F8-A04A-C4C4D61D4992} {A7F41094-8648-446B-AECD-DCC2CC871F73} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78} {F70AC78E-8925-4770-832A-2FC67A620EB2} = {A7F41094-8648-446B-AECD-DCC2CC871F73} + {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0} = {047680F1-C0FE-4DE9-A257-62FA8599C834} + {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2} = {047680F1-C0FE-4DE9-A257-62FA8599C834} + {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C} = {047680F1-C0FE-4DE9-A257-62FA8599C834} + {E8212911-344B-4638-ADC3-B215BCDCAFD1} = {047680F1-C0FE-4DE9-A257-62FA8599C834} {F80F837E-D2FC-4FFC-B68F-3CF0EC015F66} = {A7F41094-8648-446B-AECD-DCC2CC871F73} + {5BE7F505-7D77-4C3A-ABFD-54088774DAA7} = {047680F1-C0FE-4DE9-A257-62FA8599C834} {35031EDB-C0DE-453A-8335-D2EBEA2FC640} = {A7F41094-8648-446B-AECD-DCC2CC871F73} {07578B6C-9B96-4B3D-BA2E-7800EFCA7F99} = {27C5D71D-0721-4221-9286-B94AB07B58CF} {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78} @@ -703,9 +1520,13 @@ Global {CB903D21-4869-42EF-BDD6-5B1CFF674337} = {7592AFA4-426B-42F3-AE82-957C86814482} {980B5FD8-0107-41F7-8FAD-E4E8BAE8A625} = {27C5D71D-0721-4221-9286-B94AB07B58CF} {7C06FE2D-6C62-48F5-A505-F0D715C554DE} = {7592AFA4-426B-42F3-AE82-957C86814482} + {AF89083D-4715-42E6-93E9-38497D12A8A6} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} + {B5CDB0DC-B26D-48F1-B934-FE5C1C991940} = {047680F1-C0FE-4DE9-A257-62FA8599C834} {DFBABB04-50E9-42F6-B470-310E1B545638} = {27C5D71D-0721-4221-9286-B94AB07B58CF} {B445B19C-A925-4873-8CB7-8317898B6970} = {27C5D71D-0721-4221-9286-B94AB07B58CF} + {CDB47863-BEBD-4841-A807-46D868962521} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} {273F2527-1658-4CCF-8DC6-600E921188C5} = {27C5D71D-0721-4221-9286-B94AB07B58CF} + {2F3700EF-1CDA-4C15-AC88-360230000ECD} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} {3046DBF4-C2FF-4F3A-9176-E1C01E0A90E5} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78} {11011FF8-77EA-4B25-96C0-29D4D486EF1C} = {3046DBF4-C2FF-4F3A-9176-E1C01E0A90E5} {43CB06A9-7E88-4C5F-BFB8-947E072CBC9F} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9} @@ -714,18 +1535,26 @@ Global {FD3E9371-3134-4235-8E80-32226DFB4B1F} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9} {D83B27F3-4401-42F5-843E-147566B4999A} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9} {00359961-0C50-4BB1-A794-8B06DE991639} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9} + {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} {0EAE36A1-B578-4F13-A113-7A477ECA1BDA} = {27C5D71D-0721-4221-9286-B94AB07B58CF} {C8BB6A85-A7EA-40C0-893D-F36F317829B3} = {27C5D71D-0721-4221-9286-B94AB07B58CF} + {BF9828E9-5597-4D42-AA6E-6E6C12214204} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} {D9697361-232F-465D-A136-4561E0E88488} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78} {9CAF360E-5AD3-4C4F-89A0-327EEB70D673} = {D9697361-232F-465D-A136-4561E0E88488} - {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C} = {27C5D71D-0721-4221-9286-B94AB07B58CF} + {E90114C6-86FC-43B8-AE5C-D9273CF21FE4} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} + {55A7D436-CC8C-47E6-B43A-DFE32E0FE38C} = {27C5D71D-0721-4221-9286-B94AB07B58CF} + {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} {28B87C37-4B52-400F-B84D-64F134931BDC} = {27C5D71D-0721-4221-9286-B94AB07B58CF} + {CADEAE45-8981-4723-B641-9C28251C7D3B} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} {E49C822C-E921-48DF-897B-3E603CA596D2} = {27C5D71D-0721-4221-9286-B94AB07B58CF} + {A2C0F203-11FF-4B7F-A94F-B9FD873573FE} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} + {7E23E229-6823-4D84-AF3A-AE14CEAEF52A} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} {160EFFA0-F6B9-49E4-B62B-68C0D53DB425} = {27C5D71D-0721-4221-9286-B94AB07B58CF} + {B508EBD6-0F14-480C-A446-45A09052733B} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} + {E070F694-335D-4D96-8951-F41D0A5F2A8B} = {442E80E5-8040-4123-B88A-26FD36BA95D9} {6843B5B3-9E95-4022-B792-8A1DE6BFEFEC} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78} {097D5F6F-D26F-4BFB-9074-FA52577EB442} = {6843B5B3-9E95-4022-B792-8A1DE6BFEFEC} {442E80E5-8040-4123-B88A-26FD36BA95D9} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78} - {E070F694-335D-4D96-8951-F41D0A5F2A8B} = {442E80E5-8040-4123-B88A-26FD36BA95D9} {5764B1AA-66B8-43AE-9E0D-0B3B71714B92} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9} {953D770B-2DE8-4D1B-B1D4-ED46F4F5F31A} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78} {55E08C7F-81C8-4D0B-AB18-87C89B261477} = {953D770B-2DE8-4D1B-B1D4-ED46F4F5F31A} @@ -740,40 +1569,14 @@ Global {9BD12D26-AD9B-4C76-A97F-7A89B7276ABE} = {27C5D71D-0721-4221-9286-B94AB07B58CF} {11D2CA0F-6D38-4DC7-AE06-C1DAE7FC1C20} = {D687DDC4-66C5-4667-9E3A-FD8B78ECAA78} {F2DFB0FE-DF35-4D94-9CC9-43212B1D6F93} = {11D2CA0F-6D38-4DC7-AE06-C1DAE7FC1C20} + {FB21FAC7-09F7-4F68-910C-224EE7150B35} = {8462B106-175A-423A-BA94-BE0D39D0BD8E} + {667E2F91-3004-4409-B6B8-9216EAFC44CF} = {8462B106-175A-423A-BA94-BE0D39D0BD8E} {77176EC6-C586-47B1-BB72-533327F9E7BE} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9} {030CB614-6148-4863-A39A-1251728DE51D} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9} {5AECC3FC-7374-4534-A305-397E3290E573} = {27C5D71D-0721-4221-9286-B94AB07B58CF} {047680F1-C0FE-4DE9-A257-62FA8599C834} = {DD020B34-460F-455F-8D17-CF4A949F100B} - {B5CDB0DC-B26D-48F1-B934-FE5C1C991940} = {047680F1-C0FE-4DE9-A257-62FA8599C834} - {345FC3FB-D1E9-4AE8-9052-17D20AB01FA2} = {047680F1-C0FE-4DE9-A257-62FA8599C834} - {342783B5-F75B-4752-A3E2-B8CB7D09C080} = {047680F1-C0FE-4DE9-A257-62FA8599C834} - {1BA7E772-8AA7-4D5A-800D-66B17F62421C} = {047680F1-C0FE-4DE9-A257-62FA8599C834} - {2AED1542-A8ED-488D-B6D0-E16AB5D6EF6C} = {047680F1-C0FE-4DE9-A257-62FA8599C834} - {4AA9E7B7-36BF-4AAE-BFA3-C9CE8740F4A0} = {047680F1-C0FE-4DE9-A257-62FA8599C834} - {95BAF30B-8089-42CE-8530-6DFBCE1F6A07} = {047680F1-C0FE-4DE9-A257-62FA8599C834} - {5BE7F505-7D77-4C3A-ABFD-54088774DAA7} = {047680F1-C0FE-4DE9-A257-62FA8599C834} - {0CD1912D-5E27-4A2A-A998-164792E0D006} = {047680F1-C0FE-4DE9-A257-62FA8599C834} - {E8212911-344B-4638-ADC3-B215BCDCAFD1} = {047680F1-C0FE-4DE9-A257-62FA8599C834} {0AF0FE8D-C234-4F04-8514-32206ACE01BD} = {DD020B34-460F-455F-8D17-CF4A949F100B} - {A2C0F203-11FF-4B7F-A94F-B9FD873573FE} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {9C1D6ABA-5EDE-4FA0-A8A9-0AB98CB74737} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {AF89083D-4715-42E6-93E9-38497D12A8A6} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {41BF4392-54BD-4FE7-A3EB-CD045F88CA9A} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {2F3700EF-1CDA-4C15-AC88-360230000ECD} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {7E23E229-6823-4D84-AF3A-AE14CEAEF52A} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {B314AD5E-10AC-418A-B021-D4206BF37ACF} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {383609C1-F43F-49EB-85E4-1964EE7F0F14} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {CDB47863-BEBD-4841-A807-46D868962521} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {B508EBD6-0F14-480C-A446-45A09052733B} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {78FC19B2-396C-4ED2-BFD9-6C5667C61666} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {CADEAE45-8981-4723-B641-9C28251C7D3B} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {BF9828E9-5597-4D42-AA6E-6E6C12214204} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {4E04EB35-7FD2-4FDB-B09A-F75CE24053B9} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {CE0D5FEB-F6DB-4EB8-B8A9-6A4A32944539} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} - {E90114C6-86FC-43B8-AE5C-D9273CF21FE4} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} {8462B106-175A-423A-BA94-BE0D39D0BD8E} = {047680F1-C0FE-4DE9-A257-62FA8599C834} - {667E2F91-3004-4409-B6B8-9216EAFC44CF} = {8462B106-175A-423A-BA94-BE0D39D0BD8E} - {FB21FAC7-09F7-4F68-910C-224EE7150B35} = {8462B106-175A-423A-BA94-BE0D39D0BD8E} {CE5D4439-5B3C-4E97-B7E3-EB8610AEA3EF} = {27C5D71D-0721-4221-9286-B94AB07B58CF} {A05D1519-6A82-498F-B7C9-3D14E08D35CA} = {27C5D71D-0721-4221-9286-B94AB07B58CF} {5A93F96B-4D0E-479D-B540-29678A0998FA} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} @@ -789,6 +1592,7 @@ Global {4FF7F075-2818-41E4-A88F-743417EA0A99} = {0AF0FE8D-C234-4F04-8514-32206ACE01BD} {837E02A5-D1C0-4F60-AF93-71117BF3B6DC} = {BF3ED6BF-ADF3-4D25-8E89-02FB8D945CA9} {97CAEE0B-4020-4A86-97DA-9900FDF4DFC6} = {8462B106-175A-423A-BA94-BE0D39D0BD8E} + {193BBE09-E261-4D65-B4CC-18B88DB049D7} = {DD020B34-460F-455F-8D17-CF4A949F100B} {01A20A89-53A1-4D5B-B563-89E157718474} = {8462B106-175A-423A-BA94-BE0D39D0BD8E} {7B14879F-156B-417E-ACA3-0B5A69CC2F39} = {8462B106-175A-423A-BA94-BE0D39D0BD8E} EndGlobalSection diff --git a/src/Dapr.Extensions.Configuration/DaprConfigurationStoreExtension.cs b/src/Dapr.Extensions.Configuration/DaprConfigurationStoreExtension.cs index f0910ad0b..428419710 100644 --- a/src/Dapr.Extensions.Configuration/DaprConfigurationStoreExtension.cs +++ b/src/Dapr.Extensions.Configuration/DaprConfigurationStoreExtension.cs @@ -34,6 +34,7 @@ public static class DaprConfigurationStoreExtension /// The used for the request. /// The used to configure the timeout waiting for Dapr. /// Optional metadata sent to the configuration store. + /// When true, does not block startup waiting for the sidecar. Configuration is loaded in the background once the sidecar becomes available. /// The . public static IConfigurationBuilder AddDaprConfigurationStore( this IConfigurationBuilder configurationBuilder, @@ -41,7 +42,8 @@ public static IConfigurationBuilder AddDaprConfigurationStore( IReadOnlyList keys, DaprClient client, TimeSpan sidecarWaitTimeout, - IReadOnlyDictionary? metadata = default) + IReadOnlyDictionary? metadata = default, + bool optional = false) { ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store)); ArgumentVerifier.ThrowIfNull(keys, nameof(keys)); @@ -54,7 +56,8 @@ public static IConfigurationBuilder AddDaprConfigurationStore( Client = client, SidecarWaitTimeout = sidecarWaitTimeout, IsStreaming = false, - Metadata = metadata + Metadata = metadata, + IsOptional = optional }); return configurationBuilder; @@ -71,6 +74,7 @@ public static IConfigurationBuilder AddDaprConfigurationStore( /// The used for the request. /// The used to configure the timeout waiting for Dapr. /// Optional metadata sent to the configuration store. + /// When true, does not block startup waiting for the sidecar. Configuration is loaded in the background once the sidecar becomes available. /// The . public static IConfigurationBuilder AddStreamingDaprConfigurationStore( this IConfigurationBuilder configurationBuilder, @@ -78,7 +82,8 @@ public static IConfigurationBuilder AddStreamingDaprConfigurationStore( IReadOnlyList keys, DaprClient client, TimeSpan sidecarWaitTimeout, - IReadOnlyDictionary? metadata = default) + IReadOnlyDictionary? metadata = default, + bool optional = false) { ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store)); ArgumentVerifier.ThrowIfNull(keys, nameof(keys)); @@ -91,7 +96,8 @@ public static IConfigurationBuilder AddStreamingDaprConfigurationStore( Client = client, SidecarWaitTimeout = sidecarWaitTimeout, IsStreaming = true, - Metadata = metadata + Metadata = metadata, + IsOptional = optional }); return configurationBuilder; diff --git a/src/Dapr.Extensions.Configuration/DaprConfigurationStoreProvider.cs b/src/Dapr.Extensions.Configuration/DaprConfigurationStoreProvider.cs index 3e859b8d0..d32afd84b 100644 --- a/src/Dapr.Extensions.Configuration/DaprConfigurationStoreProvider.cs +++ b/src/Dapr.Extensions.Configuration/DaprConfigurationStoreProvider.cs @@ -26,13 +26,14 @@ namespace Dapr.Extensions.Configuration; /// internal class DaprConfigurationStoreProvider : ConfigurationProvider, IDisposable { - private string store; - private IReadOnlyList keys; - private DaprClient daprClient; - private TimeSpan sidecarWaitTimeout; - private bool isStreaming; - private IReadOnlyDictionary? metadata; - private CancellationTokenSource cts; + private readonly string store; + private readonly IReadOnlyList keys; + private readonly DaprClient daprClient; + private readonly TimeSpan sidecarWaitTimeout; + private readonly bool isStreaming; + private readonly bool isOptional; + private readonly IReadOnlyDictionary? metadata; + private readonly CancellationTokenSource cts; private Task subscribeTask = Task.CompletedTask; /// @@ -44,19 +45,22 @@ internal class DaprConfigurationStoreProvider : ConfigurationProvider, IDisposab /// The used to configure the timeout waiting for Dapr. /// Determines if the source is streaming or not. /// Optional metadata sent to the configuration store. + /// When true, does not block startup waiting for the sidecar. public DaprConfigurationStoreProvider( string store, IReadOnlyList keys, DaprClient daprClient, TimeSpan sidecarWaitTimeout, bool isStreaming = false, - IReadOnlyDictionary? metadata = default) + IReadOnlyDictionary? metadata = default, + bool isOptional = false) { this.store = store; this.keys = keys; this.daprClient = daprClient; this.sidecarWaitTimeout = sidecarWaitTimeout; this.isStreaming = isStreaming; + this.isOptional = isOptional; this.metadata = metadata ?? new Dictionary(); this.cts = new CancellationTokenSource(); } @@ -64,10 +68,60 @@ public DaprConfigurationStoreProvider( public void Dispose() { cts.Cancel(); + cts.Dispose(); } /// - public override void Load() => LoadAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + public override void Load() + { + if (isOptional) + { + Data = new Dictionary(StringComparer.OrdinalIgnoreCase); + _ = Task.Run(() => LoadInBackgroundAsync()); + } + else + { + LoadAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + } + + private async Task LoadInBackgroundAsync() + { + while (!cts.Token.IsCancellationRequested) + { + try + { + using var tokenSource = new CancellationTokenSource(sidecarWaitTimeout); + using var linked = CancellationTokenSource.CreateLinkedTokenSource(tokenSource.Token, cts.Token); + await daprClient.WaitForSidecarAsync(linked.Token); + + await FetchDataAsync(); + OnReload(); + return; + } + catch (OperationCanceledException) when (cts.Token.IsCancellationRequested) + { + return; + } + catch (OperationCanceledException) + { + // Sidecar wait timed out — retry after delay. + } + catch (DaprException) + { + // Transient Dapr error — retry after delay. + } + + try + { + await Task.Delay(sidecarWaitTimeout, cts.Token); + } + catch (OperationCanceledException) + { + return; + } + } + } private async Task LoadAsync() { @@ -77,6 +131,11 @@ private async Task LoadAsync() await daprClient.WaitForSidecarAsync(tokenSource.Token); } + await FetchDataAsync(); + } + + private async Task FetchDataAsync() + { if (isStreaming) { subscribeTask = Task.Run(async () => diff --git a/src/Dapr.Extensions.Configuration/DaprConfigurationStoreSource.cs b/src/Dapr.Extensions.Configuration/DaprConfigurationStoreSource.cs index 513e156b0..86012af5e 100644 --- a/src/Dapr.Extensions.Configuration/DaprConfigurationStoreSource.cs +++ b/src/Dapr.Extensions.Configuration/DaprConfigurationStoreSource.cs @@ -53,9 +53,16 @@ public class DaprConfigurationStoreSource : IConfigurationSource /// public IReadOnlyDictionary? Metadata { get; set; } = default; + /// + /// Gets or sets a value indicating whether this configuration source is optional. + /// When true, the provider will not block startup waiting for the Dapr sidecar and will + /// instead load configuration in the background once the sidecar becomes available. + /// + public bool IsOptional { get; set; } + /// public IConfigurationProvider Build(IConfigurationBuilder builder) { - return new DaprConfigurationStoreProvider(Store, Keys, Client, SidecarWaitTimeout, IsStreaming, Metadata); + return new DaprConfigurationStoreProvider(Store, Keys, Client, SidecarWaitTimeout, IsStreaming, Metadata, IsOptional); } -} \ No newline at end of file +} diff --git a/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationExtensions.cs b/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationExtensions.cs index 7df531e3e..0662ebe3e 100644 --- a/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationExtensions.cs +++ b/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationExtensions.cs @@ -32,12 +32,14 @@ public static class DaprSecretStoreConfigurationExtensions /// Dapr secret store name. /// The secrets to retrieve. /// The Dapr client + /// When true, does not block startup waiting for the sidecar. Secrets are loaded in the background once the sidecar becomes available. /// The . public static IConfigurationBuilder AddDaprSecretStore( this IConfigurationBuilder configurationBuilder, string store, IEnumerable secretDescriptors, - DaprClient client) + DaprClient client, + bool optional = false) { ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store)); ArgumentVerifier.ThrowIfNull(secretDescriptors, nameof(secretDescriptors)); @@ -47,7 +49,8 @@ public static IConfigurationBuilder AddDaprSecretStore( { Store = store, SecretDescriptors = secretDescriptors, - Client = client + Client = client, + IsOptional = optional }); return configurationBuilder; @@ -61,13 +64,15 @@ public static IConfigurationBuilder AddDaprSecretStore( /// The secrets to retrieve. /// The Dapr client. /// The used to configure the timeout waiting for Dapr. + /// When true, does not block startup waiting for the sidecar. Secrets are loaded in the background once the sidecar becomes available. /// The . public static IConfigurationBuilder AddDaprSecretStore( this IConfigurationBuilder configurationBuilder, string store, IEnumerable secretDescriptors, DaprClient client, - TimeSpan sidecarWaitTimeout) + TimeSpan sidecarWaitTimeout, + bool optional = false) { ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store)); ArgumentVerifier.ThrowIfNull(secretDescriptors, nameof(secretDescriptors)); @@ -78,7 +83,8 @@ public static IConfigurationBuilder AddDaprSecretStore( Store = store, SecretDescriptors = secretDescriptors, Client = client, - SidecarWaitTimeout = sidecarWaitTimeout + SidecarWaitTimeout = sidecarWaitTimeout, + IsOptional = optional }); return configurationBuilder; @@ -89,14 +95,16 @@ public static IConfigurationBuilder AddDaprSecretStore( /// /// The to add to. /// Dapr secret store name. - /// A collection of metadata key-value pairs that will be provided to the secret store. The valid metadata keys and values are determined by the type of secret store used. /// The Dapr client + /// A collection of metadata key-value pairs that will be provided to the secret store. The valid metadata keys and values are determined by the type of secret store used. + /// When true, does not block startup waiting for the sidecar. Secrets are loaded in the background once the sidecar becomes available. /// The . public static IConfigurationBuilder AddDaprSecretStore( this IConfigurationBuilder configurationBuilder, string store, DaprClient client, - IReadOnlyDictionary? metadata = null) + IReadOnlyDictionary? metadata = null, + bool optional = false) { ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store)); ArgumentVerifier.ThrowIfNull(client, nameof(client)); @@ -105,7 +113,8 @@ public static IConfigurationBuilder AddDaprSecretStore( { Store = store, Metadata = metadata, - Client = client + Client = client, + IsOptional = optional }); return configurationBuilder; @@ -116,16 +125,18 @@ public static IConfigurationBuilder AddDaprSecretStore( /// /// The to add to. /// Dapr secret store name. - /// A collection of metadata key-value pairs that will be provided to the secret store. The valid metadata keys and values are determined by the type of secret store used. /// The Dapr client /// The used to configure the timeout waiting for Dapr. + /// A collection of metadata key-value pairs that will be provided to the secret store. The valid metadata keys and values are determined by the type of secret store used. + /// When true, does not block startup waiting for the sidecar. Secrets are loaded in the background once the sidecar becomes available. /// The . public static IConfigurationBuilder AddDaprSecretStore( this IConfigurationBuilder configurationBuilder, string store, DaprClient client, TimeSpan sidecarWaitTimeout, - IReadOnlyDictionary? metadata = null) + IReadOnlyDictionary? metadata = null, + bool optional = false) { ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store)); ArgumentVerifier.ThrowIfNull(client, nameof(client)); @@ -135,7 +146,8 @@ public static IConfigurationBuilder AddDaprSecretStore( Store = store, Metadata = metadata, Client = client, - SidecarWaitTimeout = sidecarWaitTimeout + SidecarWaitTimeout = sidecarWaitTimeout, + IsOptional = optional }); return configurationBuilder; @@ -146,14 +158,16 @@ public static IConfigurationBuilder AddDaprSecretStore( /// /// The to add to. /// Dapr secret store name. - /// A collection of delimiters that will be replaced by ':' in the key of every secret. /// The Dapr client + /// A collection of delimiters that will be replaced by ':' in the key of every secret. + /// When true, does not block startup waiting for the sidecar. Secrets are loaded in the background once the sidecar becomes available. /// The . public static IConfigurationBuilder AddDaprSecretStore( this IConfigurationBuilder configurationBuilder, string store, DaprClient client, - IEnumerable? keyDelimiters) + IEnumerable? keyDelimiters, + bool optional = false) { ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store)); ArgumentVerifier.ThrowIfNull(client, nameof(client)); @@ -161,7 +175,8 @@ public static IConfigurationBuilder AddDaprSecretStore( var source = new DaprSecretStoreConfigurationSource { Store = store, - Client = client + Client = client, + IsOptional = optional }; if (keyDelimiters != null) @@ -179,16 +194,18 @@ public static IConfigurationBuilder AddDaprSecretStore( /// /// The to add to. /// Dapr secret store name. - /// A collection of delimiters that will be replaced by ':' in the key of every secret. /// The Dapr client + /// A collection of delimiters that will be replaced by ':' in the key of every secret. /// The used to configure the timeout waiting for Dapr. + /// When true, does not block startup waiting for the sidecar. Secrets are loaded in the background once the sidecar becomes available. /// The . public static IConfigurationBuilder AddDaprSecretStore( this IConfigurationBuilder configurationBuilder, string store, DaprClient client, IEnumerable? keyDelimiters, - TimeSpan sidecarWaitTimeout) + TimeSpan sidecarWaitTimeout, + bool optional = false) { ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store)); ArgumentVerifier.ThrowIfNull(client, nameof(client)); @@ -197,7 +214,8 @@ public static IConfigurationBuilder AddDaprSecretStore( { Store = store, Client = client, - SidecarWaitTimeout = sidecarWaitTimeout + SidecarWaitTimeout = sidecarWaitTimeout, + IsOptional = optional }; if (keyDelimiters != null) @@ -218,4 +236,4 @@ public static IConfigurationBuilder AddDaprSecretStore( /// The . public static IConfigurationBuilder AddDaprSecretStore(this IConfigurationBuilder configurationBuilder, Action configureSource) => configurationBuilder.Add(configureSource); -} \ No newline at end of file +} diff --git a/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationProvider.cs b/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationProvider.cs index 31aa5b1fc..85ab2c489 100644 --- a/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationProvider.cs +++ b/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationProvider.cs @@ -24,7 +24,7 @@ namespace Dapr.Extensions.Configuration.DaprSecretStore; /// /// A Dapr Secret Store based . /// -internal class DaprSecretStoreConfigurationProvider : ConfigurationProvider +internal class DaprSecretStoreConfigurationProvider : ConfigurationProvider, IDisposable { internal static readonly TimeSpan DefaultSidecarWaitTimeout = TimeSpan.FromSeconds(5); @@ -42,6 +42,10 @@ internal class DaprSecretStoreConfigurationProvider : ConfigurationProvider private readonly TimeSpan sidecarWaitTimeout; + private readonly bool isOptional; + + private readonly CancellationTokenSource cts = new(); + /// /// Creates a new instance of . /// @@ -83,13 +87,15 @@ public DaprSecretStoreConfigurationProvider( /// The secrets to retrieve. /// Dapr client used to retrieve Secrets /// The used to configure the timeout waiting for Dapr. + /// When true, does not block startup waiting for the sidecar. public DaprSecretStoreConfigurationProvider( string store, bool normalizeKey, IList? keyDelimiters, IEnumerable secretDescriptors, DaprClient client, - TimeSpan sidecarWaitTimeout) + TimeSpan sidecarWaitTimeout, + bool isOptional = false) { ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store)); ArgumentVerifier.ThrowIfNull(secretDescriptors, nameof(secretDescriptors)); @@ -106,6 +112,7 @@ public DaprSecretStoreConfigurationProvider( this.secretDescriptors = secretDescriptors; this.client = client; this.sidecarWaitTimeout = sidecarWaitTimeout; + this.isOptional = isOptional; } /// @@ -149,13 +156,15 @@ public DaprSecretStoreConfigurationProvider( /// A collection of metadata key-value pairs that will be provided to the secret store. The valid metadata keys and values are determined by the type of secret store used. /// Dapr client used to retrieve Secrets /// The used to configure the timeout waiting for Dapr. + /// When true, does not block startup waiting for the sidecar. public DaprSecretStoreConfigurationProvider( string store, bool normalizeKey, IList? keyDelimiters, IReadOnlyDictionary? metadata, DaprClient client, - TimeSpan sidecarWaitTimeout) + TimeSpan sidecarWaitTimeout, + bool isOptional = false) { ArgumentVerifier.ThrowIfNullOrEmpty(store, nameof(store)); ArgumentVerifier.ThrowIfNull(client, nameof(client)); @@ -166,6 +175,14 @@ public DaprSecretStoreConfigurationProvider( this.metadata = metadata; this.client = client; this.sidecarWaitTimeout = sidecarWaitTimeout; + this.isOptional = isOptional; + } + + /// + public void Dispose() + { + cts.Cancel(); + cts.Dispose(); } private string NormalizeKey(string key) @@ -185,18 +202,72 @@ private string NormalizeKey(string key) /// Loads the configuration by calling the asynchronous LoadAsync method and blocking the calling /// thread until the operation is completed. /// - public override void Load() => LoadAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + public override void Load() + { + if (isOptional) + { + Data = new Dictionary(StringComparer.OrdinalIgnoreCase); + _ = Task.Run(() => LoadInBackgroundAsync()); + } + else + { + LoadAsync().ConfigureAwait(false).GetAwaiter().GetResult(); + } + } - private async Task LoadAsync() + private async Task LoadInBackgroundAsync() { - var data = new Dictionary(StringComparer.InvariantCultureIgnoreCase); + while (!cts.Token.IsCancellationRequested) + { + try + { + using var tokenSource = new CancellationTokenSource(sidecarWaitTimeout); + using var linked = CancellationTokenSource.CreateLinkedTokenSource(tokenSource.Token, cts.Token); + await client.WaitForSidecarAsync(linked.Token); + + await FetchSecretsAsync(); + OnReload(); + return; + } + catch (OperationCanceledException) when (cts.Token.IsCancellationRequested) + { + return; + } + catch (OperationCanceledException) + { + // Sidecar wait timed out — retry after delay. + } + catch (DaprException) + { + // Transient Dapr error — retry after delay. + } + + try + { + await Task.Delay(sidecarWaitTimeout, cts.Token); + } + catch (OperationCanceledException) + { + return; + } + } + } + private async Task LoadAsync() + { // Wait for the Dapr Sidecar to report healthy before attempting to fetch secrets. using (var tokenSource = new CancellationTokenSource(sidecarWaitTimeout)) { await client.WaitForSidecarAsync(tokenSource.Token); } + await FetchSecretsAsync(); + } + + private async Task FetchSecretsAsync() + { + var data = new Dictionary(StringComparer.OrdinalIgnoreCase); + if (secretDescriptors != null) { foreach (var secretDescriptor in secretDescriptors) diff --git a/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationSource.cs b/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationSource.cs index de73c8518..d21dd4158 100644 --- a/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationSource.cs +++ b/src/Dapr.Extensions.Configuration/DaprSecretStoreConfigurationSource.cs @@ -59,6 +59,13 @@ public class DaprSecretStoreConfigurationSource : IConfigurationSource /// public TimeSpan? SidecarWaitTimeout { get; set; } + /// + /// Gets or sets a value indicating whether this configuration source is optional. + /// When true, the provider will not block startup waiting for the Dapr sidecar and will + /// instead load secrets in the background once the sidecar becomes available. + /// + public bool IsOptional { get; set; } + /// public IConfigurationProvider Build(IConfigurationBuilder builder) { @@ -69,11 +76,11 @@ public IConfigurationProvider Build(IConfigurationBuilder builder) throw new ArgumentException($"{nameof(Metadata)} must be null when {nameof(SecretDescriptors)} is set", nameof(Metadata)); } - return new DaprSecretStoreConfigurationProvider(Store, NormalizeKey, KeyDelimiters, SecretDescriptors, Client, SidecarWaitTimeout ?? DaprSecretStoreConfigurationProvider.DefaultSidecarWaitTimeout); + return new DaprSecretStoreConfigurationProvider(Store, NormalizeKey, KeyDelimiters, SecretDescriptors, Client, SidecarWaitTimeout ?? DaprSecretStoreConfigurationProvider.DefaultSidecarWaitTimeout, IsOptional); } else { - return new DaprSecretStoreConfigurationProvider(Store, NormalizeKey, KeyDelimiters, Metadata, Client, SidecarWaitTimeout ?? DaprSecretStoreConfigurationProvider.DefaultSidecarWaitTimeout); + return new DaprSecretStoreConfigurationProvider(Store, NormalizeKey, KeyDelimiters, Metadata, Client, SidecarWaitTimeout ?? DaprSecretStoreConfigurationProvider.DefaultSidecarWaitTimeout, IsOptional); } } } \ No newline at end of file diff --git a/src/Dapr.Testcontainers/Common/DaprHarnessBuilder.cs b/src/Dapr.Testcontainers/Common/DaprHarnessBuilder.cs index 3488da86c..061371aef 100644 --- a/src/Dapr.Testcontainers/Common/DaprHarnessBuilder.cs +++ b/src/Dapr.Testcontainers/Common/DaprHarnessBuilder.cs @@ -92,7 +92,11 @@ public DaprHarnessBuilder WithEnvironment(DaprTestEnvironment environment) /// Builds a distributed lock harness. /// public DistributedLockHarness BuildDistributedLock() => new(_componentsDirectory, _startApp, _options, _environment); - + + /// + /// Builds a secret store harness. + /// + public SecretStoreHarness BuildSecretStore() => new(_componentsDirectory, _startApp, _options, _environment); /// /// Builds a conversation harness. /// diff --git a/src/Dapr.Testcontainers/Harnesses/SecretStoreHarness.cs b/src/Dapr.Testcontainers/Harnesses/SecretStoreHarness.cs new file mode 100644 index 000000000..9afd20d48 --- /dev/null +++ b/src/Dapr.Testcontainers/Harnesses/SecretStoreHarness.cs @@ -0,0 +1,88 @@ +// ------------------------------------------------------------------------ +// Copyright 2025 The Dapr Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ------------------------------------------------------------------------ + +using System.IO; +using System.Threading; +using System.Threading.Tasks; +using Dapr.Testcontainers.Common.Options; + +namespace Dapr.Testcontainers.Harnesses; + +/// +/// Provides an implementation harness for Dapr's secret store building block using a local file-based secret store. +/// +public sealed class SecretStoreHarness : BaseHarness +{ + private readonly string componentsDir; + + /// + /// The name of the secret store component. + /// + public const string SecretStoreComponentName = "localsecretstore"; + + /// + /// Provides an implementation harness for Dapr's secret store building block. + /// + /// The directory to Dapr components. + /// The test app to validate in the harness. + /// The Dapr runtime options. + /// The isolated environment instance. + public SecretStoreHarness(string componentsDir, System.Func? startApp, DaprRuntimeOptions options, DaprTestEnvironment? environment = null) : base(componentsDir, startApp, options, environment) + { + this.componentsDir = componentsDir; + } + + /// + protected override Task OnInitializeAsync(CancellationToken cancellationToken) + { + WriteSecretsFile(componentsDir); + WriteComponentYaml(componentsDir); + return Task.CompletedTask; + } + + /// + /// Writes the secrets JSON file to the specified directory. + /// + public static void WriteSecretsFile(string folderPath, string fileName = "secrets.json") + { + Directory.CreateDirectory(folderPath); + var fullPath = Path.Combine(folderPath, fileName); + File.WriteAllText(fullPath, @"{ + ""secret1"": ""value1"", + ""secret2"": ""value2"" +}"); + } + + /// + /// Writes the component YAML file to the specified directory. + /// + public static void WriteComponentYaml(string folderPath, string fileName = "secretstore.yaml") + { + Directory.CreateDirectory(folderPath); + var fullPath = Path.Combine(folderPath, fileName); + File.WriteAllText(fullPath, $@"apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: {SecretStoreComponentName} + namespace: default +spec: + type: secretstores.local.file + version: v1 + metadata: + - name: secretsFile + value: /components/secrets.json + - name: nestedSeparator + value: "":"" +"); + } +} diff --git a/test/Dapr.Extensions.Configuration.Test/DaprConfigurationStoreProviderTest.cs b/test/Dapr.Extensions.Configuration.Test/DaprConfigurationStoreProviderTest.cs index 3042323e6..2c1d1dfd8 100644 --- a/test/Dapr.Extensions.Configuration.Test/DaprConfigurationStoreProviderTest.cs +++ b/test/Dapr.Extensions.Configuration.Test/DaprConfigurationStoreProviderTest.cs @@ -1,10 +1,13 @@ using System; using System.Collections.Generic; using System.Net; +using System.Threading; using System.Threading.Tasks; using Dapr.Client; using Grpc.Net.Client; using Microsoft.Extensions.Configuration; +using Moq; +using Shouldly; using Xunit; using Autogenerated = Dapr.Client.Autogen.Grpc.v1; @@ -187,6 +190,162 @@ private async Task SendResponseWithConfiguration(Dictionary(); + daprClient + .Setup(c => c.WaitForSidecarAsync(It.IsAny())) + .Returns(ct => + Task.Delay(Timeout.Infinite, ct)); + + var config = new ConfigurationBuilder() + .AddDaprConfigurationStore("store", new List(), daprClient.Object, TimeSpan.FromSeconds(1), optional: true) + .Build(); + + // Build() should succeed immediately with no values + config["anyKey"].ShouldBeNull(); + } + + [Fact] + public async Task TestConfigurationStore_OptionalAndSidecarBecomesAvailable_PopulatesConfig() + { + var callCount = 0; + + var daprClient = new Mock(); + daprClient + .Setup(c => c.WaitForSidecarAsync(It.IsAny())) + .Returns(ct => + { + var current = Interlocked.Increment(ref callCount); + if (current <= 1) + { + return Task.Delay(Timeout.Infinite, ct); + } + return Task.CompletedTask; + }); + + var configResponse = new GetConfigurationResponse( + new Dictionary + { + ["testKey"] = new ConfigurationItem("testValue", "v1", null) + }); + + daprClient + .Setup(c => c.GetConfiguration( + "store", + It.IsAny>(), + It.IsAny>(), + It.IsAny())) + .ReturnsAsync(configResponse); + + var config = new ConfigurationBuilder() + .AddDaprConfigurationStore("store", new List(), daprClient.Object, TimeSpan.FromMilliseconds(100), optional: true) + .Build(); + + // Initially empty + config["testKey"].ShouldBeNull(); + + // Wait for the reload token to fire, indicating background load completed + var reloaded = new TaskCompletionSource(); + config.GetReloadToken().RegisterChangeCallback(_ => reloaded.TrySetResult(true), null); + await reloaded.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + config["testKey"].ShouldBe("testValue"); + } + + [Fact] + public async Task TestConfigurationStore_OptionalAndFetchThrowsTransientError_RetriesAndSucceeds() + { + var callCount = 0; + + var daprClient = new Mock(); + daprClient + .Setup(c => c.WaitForSidecarAsync(It.IsAny())) + .Returns(Task.CompletedTask); + + var configResponse = new GetConfigurationResponse( + new Dictionary + { + ["testKey"] = new ConfigurationItem("testValue", "v1", null) + }); + + daprClient + .Setup(c => c.GetConfiguration( + "store", + It.IsAny>(), + It.IsAny>(), + It.IsAny())) + .Returns(() => + { + var current = Interlocked.Increment(ref callCount); + if (current <= 1) + { + throw new DaprException("transient error"); + } + return Task.FromResult(configResponse); + }); + + var config = new ConfigurationBuilder() + .AddDaprConfigurationStore("store", new List(), daprClient.Object, TimeSpan.FromMilliseconds(100), optional: true) + .Build(); + + // Initially empty + config["testKey"].ShouldBeNull(); + + // Wait for the reload token to fire after retry succeeds + var reloaded = new TaskCompletionSource(); + config.GetReloadToken().RegisterChangeCallback(_ => reloaded.TrySetResult(true), null); + await reloaded.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + config["testKey"].ShouldBe("testValue"); + } + + [Fact] + public async Task TestConfigurationStore_OptionalAndDisposed_ExitsCleanly() + { + var waitCalled = new TaskCompletionSource(); + + var daprClient = new Mock(); + daprClient + .Setup(c => c.WaitForSidecarAsync(It.IsAny())) + .Returns(ct => + { + waitCalled.TrySetResult(true); + return Task.Delay(Timeout.Infinite, ct); + }); + + var config = new ConfigurationBuilder() + .AddDaprConfigurationStore("store", new List(), daprClient.Object, TimeSpan.FromSeconds(1), optional: true) + .Build(); + + // Ensure background task has started + await waitCalled.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + // Dispose the provider to cancel the background task + (config as IDisposable)?.Dispose(); + + // Verify the mock was called with a token that is now cancelled + daprClient.Verify(c => c.WaitForSidecarAsync(It.IsAny()), Times.AtLeastOnce()); + config["anyKey"].ShouldBeNull(); + } + + [Fact] + public void TestStreamingConfigurationStore_OptionalAndSidecarUnavailable_ReturnsEmptyConfig() + { + var daprClient = new Mock(); + daprClient + .Setup(c => c.WaitForSidecarAsync(It.IsAny())) + .Returns(ct => + Task.Delay(Timeout.Infinite, ct)); + + var config = new ConfigurationBuilder() + .AddStreamingDaprConfigurationStore("store", new List(), daprClient.Object, TimeSpan.FromSeconds(1), optional: true) + .Build(); + + config["anyKey"].ShouldBeNull(); + } + private async Task SendStreamingResponseWithConfiguration(Dictionary items, TestHttpClient.Entry entry) { var streamResponse = new Autogenerated.SubscribeConfigurationResponse(); diff --git a/test/Dapr.Extensions.Configuration.Test/DaprSecretStoreConfigurationProviderTest.cs b/test/Dapr.Extensions.Configuration.Test/DaprSecretStoreConfigurationProviderTest.cs index 53cb4fc6c..c6453ef08 100644 --- a/test/Dapr.Extensions.Configuration.Test/DaprSecretStoreConfigurationProviderTest.cs +++ b/test/Dapr.Extensions.Configuration.Test/DaprSecretStoreConfigurationProviderTest.cs @@ -14,6 +14,7 @@ using System; using System.Collections.Generic; using System.Net; +using System.Threading; using System.Threading.Tasks; using Dapr.Client; using Grpc.Net.Client; @@ -897,6 +898,166 @@ public void LoadSecrets_FailsIfSidecarNotAvailable() .Build()); } + [Fact] + public void LoadSecrets_OptionalAndSidecarUnavailable_ReturnsEmptyConfig() + { + var daprClient = new Mock(); + daprClient + .Setup(c => c.WaitForSidecarAsync(It.IsAny())) + .Returns(ct => + Task.Delay(Timeout.Infinite, ct)); + + var config = CreateBuilder() + .AddDaprSecretStore("store", daprClient.Object, optional: true) + .Build(); + + // Build() should succeed immediately with no values + config["anyKey"].ShouldBeNull(); + } + + [Fact] + public async Task LoadSecrets_OptionalAndSidecarBecomesAvailable_PopulatesConfig() + { + var callCount = 0; + + var daprClient = new Mock(); + daprClient + .Setup(c => c.WaitForSidecarAsync(It.IsAny())) + .Returns(ct => + { + var current = Interlocked.Increment(ref callCount); + if (current <= 1) + { + // First call: simulate sidecar not ready by waiting until timeout cancels + return Task.Delay(Timeout.Infinite, ct); + } + // Subsequent calls: sidecar is ready + return Task.CompletedTask; + }); + + daprClient + .Setup(c => c.GetBulkSecretAsync("store", null, default)) + .ReturnsAsync(new Dictionary> + { + ["secret1"] = new Dictionary { ["secret1"] = "value1" } + }); + + var config = CreateBuilder() + .AddDaprSecretStore("store", daprClient.Object, TimeSpan.FromMilliseconds(100), optional: true) + .Build(); + + // Initially empty + config["secret1"].ShouldBeNull(); + + // Wait for the reload token to fire, indicating background load completed + var reloaded = new TaskCompletionSource(); + config.GetReloadToken().RegisterChangeCallback(_ => reloaded.TrySetResult(true), null); + await reloaded.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + config["secret1"].ShouldBe("value1"); + } + + [Fact] + public async Task LoadSecrets_OptionalWithDescriptors_PopulatesConfig() + { + var storeName = "store"; + var secretKey = "mySecret"; + var secretValue = "myValue"; + + var daprClient = new Mock(); + // Sidecar ready immediately + daprClient + .Setup(c => c.WaitForSidecarAsync(It.IsAny())) + .Returns(Task.CompletedTask); + + daprClient + .Setup(c => c.GetSecretAsync(storeName, secretKey, It.IsAny>(), default)) + .ReturnsAsync(new Dictionary { { secretKey, secretValue } }); + + var secretDescriptors = new[] { new DaprSecretDescriptor(secretKey) }; + + var config = CreateBuilder() + .AddDaprSecretStore(storeName, secretDescriptors, daprClient.Object, TimeSpan.FromSeconds(1), optional: true) + .Build(); + + // Wait for the reload token to fire, indicating background load completed + var reloaded = new TaskCompletionSource(); + config.GetReloadToken().RegisterChangeCallback(_ => reloaded.TrySetResult(true), null); + await reloaded.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + config[secretKey].ShouldBe(secretValue); + } + + [Fact] + public async Task LoadSecrets_OptionalAndFetchThrowsTransientError_RetriesAndSucceeds() + { + var callCount = 0; + + var daprClient = new Mock(); + daprClient + .Setup(c => c.WaitForSidecarAsync(It.IsAny())) + .Returns(Task.CompletedTask); + + daprClient + .Setup(c => c.GetBulkSecretAsync("store", null, default)) + .Returns(() => + { + var current = Interlocked.Increment(ref callCount); + if (current <= 1) + { + throw new DaprException("transient error"); + } + return Task.FromResult>>( + new Dictionary> + { + ["secret1"] = new Dictionary { ["secret1"] = "value1" } + }); + }); + + var config = CreateBuilder() + .AddDaprSecretStore("store", daprClient.Object, TimeSpan.FromMilliseconds(100), optional: true) + .Build(); + + // Initially empty + config["secret1"].ShouldBeNull(); + + // Wait for the reload token to fire after retry succeeds + var reloaded = new TaskCompletionSource(); + config.GetReloadToken().RegisterChangeCallback(_ => reloaded.TrySetResult(true), null); + await reloaded.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + config["secret1"].ShouldBe("value1"); + } + + [Fact] + public async Task LoadSecrets_OptionalAndDisposed_ExitsCleanly() + { + var waitCalled = new TaskCompletionSource(); + + var daprClient = new Mock(); + daprClient + .Setup(c => c.WaitForSidecarAsync(It.IsAny())) + .Returns(ct => + { + waitCalled.TrySetResult(true); + return Task.Delay(Timeout.Infinite, ct); + }); + + var config = CreateBuilder() + .AddDaprSecretStore("store", daprClient.Object, TimeSpan.FromSeconds(1), optional: true) + .Build(); + + // Ensure background task has started + await waitCalled.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + // Dispose the provider to cancel the background task + (config as IDisposable)?.Dispose(); + + // Verify the mock was called with a token that is now cancelled + daprClient.Verify(c => c.WaitForSidecarAsync(It.IsAny()), Times.AtLeastOnce()); + config["anyKey"].ShouldBeNull(); + } + private IConfigurationBuilder CreateBuilder() { return new ConfigurationBuilder(); diff --git a/test/Dapr.IntegrationTest.Configuration/Dapr.IntegrationTest.Configuration.csproj b/test/Dapr.IntegrationTest.Configuration/Dapr.IntegrationTest.Configuration.csproj new file mode 100644 index 000000000..d48bd6fef --- /dev/null +++ b/test/Dapr.IntegrationTest.Configuration/Dapr.IntegrationTest.Configuration.csproj @@ -0,0 +1,29 @@ + + + + enable + enable + false + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + + + diff --git a/test/Dapr.IntegrationTest.Configuration/SecretStoreOptionalTests.cs b/test/Dapr.IntegrationTest.Configuration/SecretStoreOptionalTests.cs new file mode 100644 index 000000000..4afa58879 --- /dev/null +++ b/test/Dapr.IntegrationTest.Configuration/SecretStoreOptionalTests.cs @@ -0,0 +1,129 @@ +using Dapr.Client; +using Dapr.Extensions.Configuration; +using Dapr.Testcontainers.Common; +using Dapr.Testcontainers.Harnesses; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Primitives; + +namespace Dapr.IntegrationTest.Configuration; + +public sealed class SecretStoreOptionalTests +{ + [Fact] + public async Task ShouldPopulateSecretsWhenSidecarStartsLate() + { + var componentsDir = TestDirectoryManager.CreateTestDirectory("secretstore-components"); + + await using var environment = await DaprTestEnvironment.CreateWithPooledNetworkAsync(cancellationToken: TestContext.Current.CancellationToken); + await environment.StartAsync(TestContext.Current.CancellationToken); + + var harness = new DaprHarnessBuilder(componentsDir) + .WithEnvironment(environment) + .BuildSecretStore(); + + var httpPort = PortUtilities.GetAvailablePort(); + var grpcPort = PortUtilities.GetAvailablePort(); + harness.SetPorts(httpPort, grpcPort); + + // Write component files before harness init (harness also writes them, but we need them for the client) + SecretStoreHarness.WriteSecretsFile(componentsDir); + SecretStoreHarness.WriteComponentYaml(componentsDir); + + using var client = new DaprClientBuilder() + .UseHttpEndpoint($"http://localhost:{httpPort}") + .UseGrpcEndpoint($"http://localhost:{grpcPort}") + .Build(); + + var config = new ConfigurationBuilder() + .AddDaprSecretStore( + SecretStoreHarness.SecretStoreComponentName, + client, + TimeSpan.FromSeconds(2), + optional: true) + .Build(); + + // Sidecar not running yet — config should be empty. + Assert.Null(config["secret1"]); + + // Register reload callback before starting the sidecar. + var reloaded = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + ChangeToken.OnChange(config.GetReloadToken, () => reloaded.TrySetResult()); + + // Start the sidecar on the pre-assigned ports. + await harness.InitializeAsync(TestContext.Current.CancellationToken); + + // Wait for the background loader to populate config. + using var timeoutCts = new CancellationTokenSource(TimeSpan.FromSeconds(30)); + await reloaded.Task.WaitAsync(timeoutCts.Token).WaitAsync(TestContext.Current.CancellationToken); + + Assert.Equal("value1", config["secret1"]); + Assert.Equal("value2", config["secret2"]); + + await harness.DisposeAsync(); + } + + [Fact] + public async Task ShouldBlockAndPopulateSecretsWhenNotOptional() + { + var componentsDir = TestDirectoryManager.CreateTestDirectory("secretstore-components"); + + await using var environment = await DaprTestEnvironment.CreateWithPooledNetworkAsync(cancellationToken: TestContext.Current.CancellationToken); + await environment.StartAsync(TestContext.Current.CancellationToken); + + var harness = new DaprHarnessBuilder(componentsDir) + .WithEnvironment(environment) + .BuildSecretStore(); + + await harness.InitializeAsync(TestContext.Current.CancellationToken); + + using var client = new DaprClientBuilder() + .UseHttpEndpoint($"http://localhost:{harness.DaprHttpPort}") + .UseGrpcEndpoint($"http://localhost:{harness.DaprGrpcPort}") + .Build(); + + // optional defaults to false, so Build() blocks until sidecar responds. + var config = new ConfigurationBuilder() + .AddDaprSecretStore( + SecretStoreHarness.SecretStoreComponentName, + client, + TimeSpan.FromSeconds(30)) + .Build(); + + Assert.Equal("value1", config["secret1"]); + Assert.Equal("value2", config["secret2"]); + + await harness.DisposeAsync(); + } + + [Fact] + public async Task ShouldExitCleanlyWhenDisposedDuringBackgroundLoad() + { + // Pick free ports — no sidecar will run on them. + var httpPort = PortUtilities.GetAvailablePort(); + var grpcPort = PortUtilities.GetAvailablePort(); + + using var client = new DaprClientBuilder() + .UseHttpEndpoint($"http://localhost:{httpPort}") + .UseGrpcEndpoint($"http://localhost:{grpcPort}") + .Build(); + + var config = new ConfigurationBuilder() + .AddDaprSecretStore( + SecretStoreHarness.SecretStoreComponentName, + client, + TimeSpan.FromMilliseconds(500), + optional: true) + .Build(); + + // Config should be empty since there's no sidecar. + Assert.Null(config["secret1"]); + + // Dispose immediately to trigger cancellation of the background task. + (config as IDisposable)?.Dispose(); + + // Allow background task to process cancellation. + await Task.Delay(200, TestContext.Current.CancellationToken); + + // Test completes within xunit default timeout — no hang. + } +}