using new icons from Stefano (updated launcher icon, nicer notification icons)
added combined notification (keyboard/clipboard; Android 4.1+)
							
								
								
									
										564
									
								
								src/KeePass.sln
									
									
									
									
									
								
							
							
						
						@@ -35,10 +35,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MPTest", "MPTest\MPTest.csp
 | 
			
		||||
EndProject
 | 
			
		||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MasterKeePlugin", "MasterKeePlugin\MasterKeePlugin.csproj", "{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}"
 | 
			
		||||
EndProject
 | 
			
		||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MasterKeeWinPlugin", "MasterKeeWinPlugin\MasterKeeWinPlugin.csproj", "{BBF77830-BC7D-4F28-A255-A348B5C6A925}"
 | 
			
		||||
EndProject
 | 
			
		||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SamplePlugin", "SamplePlugin\SamplePlugin.csproj", "{4C1BB6F8-D2CD-49C2-9053-21705681356C}"
 | 
			
		||||
EndProject
 | 
			
		||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlayServicesTest", "PlayServicesTest\PlayServicesTest.csproj", "{B8E78075-3936-42E9-9AB4-C82B341935A6}"
 | 
			
		||||
EndProject
 | 
			
		||||
Global
 | 
			
		||||
@@ -57,162 +53,6 @@ Global
 | 
			
		||||
		ReleaseNoNet|x64 = ReleaseNoNet|x64
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|Mixed Platforms.Deploy.0 = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|Any CPU.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|Mixed Platforms.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|Any CPU.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|Mixed Platforms.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Mixed Platforms.Deploy.0 = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Any CPU.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Mixed Platforms.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Any CPU.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Mixed Platforms.Deploy.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
@@ -235,102 +75,6 @@ Global
 | 
			
		||||
		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.ReleaseNoNet|Win32.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{545B4A6B-8BBA-4FBE-92FC-4AC060122A54}.ReleaseNoNet|x64.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|Mixed Platforms.Deploy.0 = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|Any CPU.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|Mixed Platforms.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|Any CPU.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|Mixed Platforms.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Any CPU.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Any CPU.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Win32.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|x64.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{A6CF8A86-37C1-4197-80FE-519DE2C842F5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
@@ -378,48 +122,180 @@ Global
 | 
			
		||||
		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{A8779D4D-7C49-4C2F-82BD-2CDC448391DA}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|Win32.Build.0 = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|x64.Build.0 = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|Win32.Build.0 = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|x64.Build.0 = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|Win32.Build.0 = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|x64.Build.0 = Release|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{53A9CB7F-6553-4BC0-B56B-9410BB2E59AA}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Any CPU.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Any CPU.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|Win32.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{A5F8FB02-00E0-4335-91EF-AEAA2C2F3C48}.ReleaseNoNet|x64.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Mixed Platforms.Deploy.0 = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Any CPU.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Mixed Platforms.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Any CPU.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Mixed Platforms.Deploy.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{46B769B8-2C58-4138-9CC0-70E3AE3C9A3A}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{5CF675A5-9BEE-4720-BED9-D5BF14A2EBF9}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{48574278-4779-4B3A-A9E4-9CF1BC285D0B}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3C0F7FE5-639F-4422-A087-8B26CF862D1B}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{70D3844A-D9FA-4A64-B205-A84C6A822196}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|Mixed Platforms.Deploy.0 = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|Any CPU.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|Mixed Platforms.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|Any CPU.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|Mixed Platforms.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{1FF6C335-A627-43C9-AAA7-CBAC2E74CD18}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|Mixed Platforms.ActiveCfg = ReleaseNoNet|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|Mixed Platforms.Build.0 = ReleaseNoNet|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{3DA3911E-36DE-465E-8F15-F1991B6437E5}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
 | 
			
		||||
@@ -444,13 +320,98 @@ Global
 | 
			
		||||
		{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.ReleaseNoNet|Mixed Platforms.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{C9F4AE81-0996-4E17-B3F2-D0F652F6AC50}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|Mixed Platforms.Deploy.0 = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|Any CPU.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|Mixed Platforms.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|Any CPU.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|Mixed Platforms.Deploy.0 = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|Win32.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|Win32.Build.0 = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|x64.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Debug|x64.Build.0 = Debug|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|Win32.Build.0 = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.Release|x64.Build.0 = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|Mixed Platforms.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|Mixed Platforms.Build.0 = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|Win32.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|Win32.Build.0 = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|x64.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{B8E78075-3936-42E9-9AB4-C82B341935A6}.ReleaseNoNet|x64.Build.0 = Release|Any CPU
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(SolutionProperties) = preSolution
 | 
			
		||||
		HideSolutionNode = FALSE
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(NestedProjects) = preSolution
 | 
			
		||||
		{2F7CB5B4-AC2A-4790-B0F3-42E6C9A060D5} = {CAC7DBC4-E21F-41E1-B33A-E3A04585F6A3}
 | 
			
		||||
		{96A3EA5A-7024-479F-A5B1-06654D0867A3} = {CAC7DBC4-E21F-41E1-B33A-E3A04585F6A3}
 | 
			
		||||
		{9A4C5BAA-1A8A-49B4-BBC3-60D4871FB36C} = {CAC7DBC4-E21F-41E1-B33A-E3A04585F6A3}
 | 
			
		||||
		{BBF77830-BC7D-4F28-A255-A348B5C6A925} = {CAC7DBC4-E21F-41E1-B33A-E3A04585F6A3}
 | 
			
		||||
		{4C1BB6F8-D2CD-49C2-9053-21705681356C} = {CAC7DBC4-E21F-41E1-B33A-E3A04585F6A3}
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(MonoDevelopProperties) = preSolution
 | 
			
		||||
		StartupItem = keepass2android\keepass2android.csproj
 | 
			
		||||
@@ -464,7 +425,4 @@ Global
 | 
			
		||||
		$2.inheritsSet = VisualStudio
 | 
			
		||||
		$2.inheritsScope = text/plain
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(SolutionProperties) = preSolution
 | 
			
		||||
		HideSolutionNode = FALSE
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
EndGlobal
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2526
									
								
								src/keepass2android/Resources/Resource.designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-hdpi/ic_action_lock.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.3 KiB  | 
| 
		 After Width: | Height: | Size: 1.5 KiB  | 
| 
		 After Width: | Height: | Size: 1.4 KiB  | 
| 
		 Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 2.9 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-hdpi/ic_notify.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.4 KiB  | 
| 
		 After Width: | Height: | Size: 1.6 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-ldpi/ic_action_lock.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-mdpi/ic_action_lock.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 1.3 KiB  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-mdpi/ic_notify.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 1.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-xhdpi/ic_action_lock.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.4 KiB  | 
| 
		 After Width: | Height: | Size: 1.7 KiB  | 
| 
		 After Width: | Height: | Size: 1.6 KiB  | 
| 
		 Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 3.0 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-xhdpi/ic_notify.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.5 KiB  | 
| 
		 After Width: | Height: | Size: 1.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-xxhdpi/ic_action_lock.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.7 KiB  | 
| 
		 After Width: | Height: | Size: 2.2 KiB  | 
| 
		 After Width: | Height: | Size: 2.0 KiB  | 
| 
		 Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 5.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-xxhdpi/ic_notify.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.9 KiB  | 
| 
		 After Width: | Height: | Size: 2.3 KiB  | 
| 
		 After Width: | Height: | Size: 2.1 KiB  | 
| 
		 After Width: | Height: | Size: 2.6 KiB  | 
| 
		 After Width: | Height: | Size: 2.4 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-xxxhdpi/ic_launcher.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 8.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/keepass2android/Resources/drawable-xxxhdpi/ic_notify.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.2 KiB  | 
| 
		 After Width: | Height: | Size: 2.7 KiB  | 
@@ -115,6 +115,11 @@
 | 
			
		||||
	<string name="CopyToClipboardNotification_key">ShowCopyToClipboardNotification</string>
 | 
			
		||||
	<bool name="CopyToClipboardNotification_default">true</bool>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	<string name="ShowSeparateNotifications_key">ShowSeparateNotifications_key</string>
 | 
			
		||||
	<bool name="ShowSeparateNotifications_default">false</bool>
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	<string name="UseKp2aKeyboard_key">ShowKp2aKeyboardNotification</string>
 | 
			
		||||
	<bool name="UseKp2aKeyboard_default">true</bool>
 | 
			
		||||
	
 | 
			
		||||
 
 | 
			
		||||
@@ -58,6 +58,7 @@
 | 
			
		||||
  <string name="copy_username">Select to copy username to clipboard</string>
 | 
			
		||||
  <string name="copy_password">Select to copy password to clipboard</string>
 | 
			
		||||
  <string name="available_through_keyboard">Entry is available through KP2A Keyboard</string>
 | 
			
		||||
	<string name="entry_is_available">is available</string>
 | 
			
		||||
  <string name="not_possible_im_picker">Could not open dialog to select input method. Please activate keyboard manually.</string>
 | 
			
		||||
  <string name="please_activate_keyboard">Please enable the Keepass2Android keyboard in your system settings.</string>
 | 
			
		||||
  <string name="creating_db_key">Creating database key…</string>
 | 
			
		||||
@@ -303,6 +304,10 @@
 | 
			
		||||
	
 | 
			
		||||
  <string name="ShowCopyToClipboardNotification_title">Clipboard notifications</string>
 | 
			
		||||
  <string name="ShowCopyToClipboardNotification_summary">Make username and password accessible through the notification bar and clipboard. Beware of password sniffers!</string>
 | 
			
		||||
 | 
			
		||||
	<string name="ShowSeparateNotifications_title">Separate notifications</string>
 | 
			
		||||
	<string name="ShowSeparateNotifications_summary">Show separate notifications for copying username and password to clipboard and activating the keyboard.</string>
 | 
			
		||||
	
 | 
			
		||||
	<string name="ShowKp2aKeyboardNotification_title">KP2A keyboard notification</string>
 | 
			
		||||
  <string name="ShowKp2aKeyboardNotification_summary">Make full entry accessible through the KP2A keyboard (recommended).</string>
 | 
			
		||||
  <string name="OpenKp2aKeyboardAutomatically_title">Switch keyboard</string>
 | 
			
		||||
 
 | 
			
		||||
@@ -215,6 +215,14 @@
 | 
			
		||||
				  android:title="@string/ShowKp2aKeyboardNotification_title"
 | 
			
		||||
				  android:key="@string/UseKp2aKeyboard_key" />
 | 
			
		||||
 | 
			
		||||
			<CheckBoxPreference
 | 
			
		||||
				android:enabled="true"
 | 
			
		||||
				  android:persistent="true"
 | 
			
		||||
				  android:summary="@string/ShowSeparateNotifications_summary"
 | 
			
		||||
				  android:defaultValue="@bool/ShowSeparateNotifications_default"
 | 
			
		||||
				  android:title="@string/ShowSeparateNotifications_title"
 | 
			
		||||
				  android:key="@string/ShowSeparateNotifications_key" />
 | 
			
		||||
 | 
			
		||||
			<PreferenceScreen
 | 
			
		||||
				 android:key="@string/keyboardswitch_prefs_key"
 | 
			
		||||
	  android:title="@string/keyboardswitch_prefs"
 | 
			
		||||
 
 | 
			
		||||
@@ -985,6 +985,93 @@
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-hdpi\device_access_new_account_holodark.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-ldpi\ic_action_lock.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-ldpi\ic_action_password.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-ldpi\ic_action_username.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-mdpi\ic_action_lock.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-mdpi\ic_action_password.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-mdpi\ic_action_username.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-mdpi\ic_notify.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-mdpi\ic_notify_keyboard.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xhdpi\ic_action_lock.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xhdpi\ic_action_password.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xhdpi\ic_action_username.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xhdpi\ic_notify.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xhdpi\ic_notify_keyboard.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xxhdpi\ic_action_lock.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xxhdpi\ic_action_password.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xxhdpi\ic_action_username.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xxhdpi\ic_notify.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xxhdpi\ic_notify_keyboard.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xxxhdpi\ic_action_lock.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xxxhdpi\ic_action_password.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xxxhdpi\ic_action_username.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xxxhdpi\ic_notify.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xxxhdpi\ic_notify_keyboard.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-hdpi\ic_action_lock.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-hdpi\ic_action_password.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-hdpi\ic_action_username.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-hdpi\ic_notify.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-hdpi\ic_notify_keyboard.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <AndroidResource Include="Resources\drawable-xxxhdpi\ic_launcher.png" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <XamarinComponentReference Include="googleplayservices">
 | 
			
		||||
      <Version>19.0.0</Version>
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@ This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll.
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using Android.Support.V4.App;
 | 
			
		||||
using Java.Util;
 | 
			
		||||
 | 
			
		||||
using Android.App;
 | 
			
		||||
@@ -42,12 +43,185 @@ namespace keepass2android
 | 
			
		||||
	[Service]
 | 
			
		||||
	public class CopyToClipboardService : Service
 | 
			
		||||
	{
 | 
			
		||||
		class PasswordAccessNotificationBuilder
 | 
			
		||||
		{
 | 
			
		||||
			private readonly Context _ctx;
 | 
			
		||||
			private readonly NotificationManager _notificationManager;
 | 
			
		||||
 | 
			
		||||
			public PasswordAccessNotificationBuilder(Context ctx, NotificationManager notificationManager)
 | 
			
		||||
			{
 | 
			
		||||
				_ctx = ctx;
 | 
			
		||||
				_notificationManager = notificationManager;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			private bool _hasPassword;
 | 
			
		||||
			private bool _hasUsername;
 | 
			
		||||
			private bool _hasKeyboard;
 | 
			
		||||
 | 
			
		||||
			public void AddPasswordAccess()
 | 
			
		||||
			{
 | 
			
		||||
				_hasPassword = true;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			public void AddUsernameAccess()
 | 
			
		||||
			{
 | 
			
		||||
				_hasUsername = true;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			public void AddKeyboardAccess()
 | 
			
		||||
			{
 | 
			
		||||
				_hasKeyboard = true;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			public int CreateNotifications(string entryName)
 | 
			
		||||
			{
 | 
			
		||||
				if (((int) Build.VERSION.SdkInt < 16) ||
 | 
			
		||||
				    (PreferenceManager.GetDefaultSharedPreferences(_ctx)
 | 
			
		||||
				                      .GetBoolean(_ctx.GetString(Resource.String.ShowSeparateNotifications_key),
 | 
			
		||||
												  _ctx.Resources.GetBoolean(Resource.Boolean.ShowSeparateNotifications_default))))
 | 
			
		||||
				{
 | 
			
		||||
					return CreateSeparateNotifications(entryName);
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
				{
 | 
			
		||||
					return CreateCombinedNotification(entryName);
 | 
			
		||||
				}
 | 
			
		||||
				
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			private int CreateCombinedNotification(string entryName)
 | 
			
		||||
			{
 | 
			
		||||
				if ((!_hasUsername) && (!_hasPassword) && (!_hasKeyboard))
 | 
			
		||||
					return 0;
 | 
			
		||||
 | 
			
		||||
				NotificationCompat.Builder notificationBuilder;
 | 
			
		||||
				if (_hasKeyboard)
 | 
			
		||||
				{
 | 
			
		||||
					notificationBuilder = GetNotificationBuilder(Intents.CheckKeyboard, Resource.String.available_through_keyboard,
 | 
			
		||||
															Resource.Drawable.ic_notify_keyboard, entryName);
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
				{
 | 
			
		||||
					notificationBuilder = GetNotificationBuilder(null, Resource.String.entry_is_available, Resource.Drawable.ic_launcher_gray,
 | 
			
		||||
					                                   entryName);
 | 
			
		||||
				}
 | 
			
		||||
				
 | 
			
		||||
				//add action buttons to base notification:
 | 
			
		||||
				
 | 
			
		||||
				if (_hasUsername)
 | 
			
		||||
					notificationBuilder.AddAction(new NotificationCompat.Action(Resource.Drawable.ic_action_username, 
 | 
			
		||||
						_ctx.GetString(Resource.String.menu_copy_user), 
 | 
			
		||||
						GetPendingIntent(Intents.CopyUsername, Resource.String.menu_copy_user)));
 | 
			
		||||
				if (_hasPassword)
 | 
			
		||||
					notificationBuilder.AddAction(new NotificationCompat.Action(Resource.Drawable.ic_action_password, 
 | 
			
		||||
						_ctx.GetString(Resource.String.menu_copy_pass), 
 | 
			
		||||
						GetPendingIntent(Intents.CopyPassword, Resource.String.menu_copy_pass)));
 | 
			
		||||
 | 
			
		||||
				notificationBuilder.SetPriority((int)Android.App.NotificationPriority.High);
 | 
			
		||||
				var notification = notificationBuilder.Build();
 | 
			
		||||
				notification.DeleteIntent = CreateDeleteIntent(NotifyCombined);
 | 
			
		||||
				_notificationManager.Notify(NotifyCombined, notification);
 | 
			
		||||
 | 
			
		||||
				return 1;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			private int CreateSeparateNotifications(string entryName)
 | 
			
		||||
			{
 | 
			
		||||
				int numNotifications = 0;
 | 
			
		||||
				if (_hasPassword)
 | 
			
		||||
				{
 | 
			
		||||
					// only show notification if password is available
 | 
			
		||||
					Notification password = GetNotification(Intents.CopyPassword, Resource.String.copy_password,
 | 
			
		||||
					                                        Resource.Drawable.ic_action_password, entryName);
 | 
			
		||||
					numNotifications++;
 | 
			
		||||
					password.DeleteIntent = CreateDeleteIntent(NotifyPassword);
 | 
			
		||||
					_notificationManager.Notify(NotifyPassword, password);
 | 
			
		||||
				}
 | 
			
		||||
				if (_hasUsername)
 | 
			
		||||
				{
 | 
			
		||||
					// only show notification if username is available
 | 
			
		||||
					Notification username = GetNotification(Intents.CopyUsername, Resource.String.copy_username,
 | 
			
		||||
					                                        Resource.Drawable.ic_action_username, entryName);
 | 
			
		||||
					username.DeleteIntent = CreateDeleteIntent(NotifyUsername);
 | 
			
		||||
					_notificationManager.Notify(NotifyUsername, username);
 | 
			
		||||
					numNotifications++;
 | 
			
		||||
				}
 | 
			
		||||
				if (_hasKeyboard)
 | 
			
		||||
				{
 | 
			
		||||
					// only show notification if username is available
 | 
			
		||||
					Notification keyboard = GetNotification(Intents.CheckKeyboard, Resource.String.available_through_keyboard,
 | 
			
		||||
					                                        Resource.Drawable.ic_notify_keyboard, entryName);
 | 
			
		||||
					keyboard.DeleteIntent = CreateDeleteIntent(NotifyKeyboard);
 | 
			
		||||
					_notificationManager.Notify(NotifyKeyboard, keyboard);
 | 
			
		||||
					numNotifications++;
 | 
			
		||||
				}
 | 
			
		||||
				return numNotifications;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			//creates a delete intent (started when notification is cancelled by user or something else)
 | 
			
		||||
			//requires different request codes for every item (otherwise the intents are identical)
 | 
			
		||||
			PendingIntent CreateDeleteIntent(int requestCode)
 | 
			
		||||
			{
 | 
			
		||||
				Intent intent = new Intent(ActionNotificationCancelled);
 | 
			
		||||
				Bundle extra = new Bundle();
 | 
			
		||||
				extra.PutInt("requestCode", requestCode);
 | 
			
		||||
				intent.PutExtras(extra);
 | 
			
		||||
 | 
			
		||||
				return PendingIntent.GetBroadcast(_ctx, requestCode, intent, PendingIntentFlags.CancelCurrent);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
			private Notification GetNotification(String intentText, int descResId, int drawableResId, String entryName)
 | 
			
		||||
			{
 | 
			
		||||
				var builder = GetNotificationBuilder(intentText, descResId, drawableResId, entryName);
 | 
			
		||||
 | 
			
		||||
				return builder.Build();
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			private NotificationCompat.Builder GetNotificationBuilder(string intentText, int descResId, int drawableResId, string entryName)
 | 
			
		||||
			{
 | 
			
		||||
				String desc = _ctx.GetString(descResId);
 | 
			
		||||
 | 
			
		||||
				String title = _ctx.GetString(Resource.String.app_name);
 | 
			
		||||
				if (!String.IsNullOrEmpty(entryName))
 | 
			
		||||
					title += " (" + entryName + ")";
 | 
			
		||||
 | 
			
		||||
				PendingIntent pending;
 | 
			
		||||
				if (intentText == null)
 | 
			
		||||
				{
 | 
			
		||||
					pending = PendingIntent.GetActivity(_ctx.ApplicationContext, 0, new Intent(), 0);
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
				{
 | 
			
		||||
					pending = GetPendingIntent(intentText, descResId);
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				var builder = new NotificationCompat.Builder(_ctx);
 | 
			
		||||
				builder.SetSmallIcon(drawableResId)
 | 
			
		||||
				       .SetContentText(desc)
 | 
			
		||||
				       .SetContentTitle(entryName)
 | 
			
		||||
				       .SetWhen(Java.Lang.JavaSystem.CurrentTimeMillis())
 | 
			
		||||
					   .SetTicker(entryName + ": " + desc)
 | 
			
		||||
					   //Android 5 .SetVisibility((int)Android.App.NotificationVisibility.Secret)
 | 
			
		||||
				       .SetContentIntent(pending);
 | 
			
		||||
				return builder;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			private PendingIntent GetPendingIntent(string intentText, int descResId)
 | 
			
		||||
			{
 | 
			
		||||
				PendingIntent pending;
 | 
			
		||||
				Intent intent = new Intent(intentText);
 | 
			
		||||
				intent.SetPackage(_ctx.PackageName);
 | 
			
		||||
				pending = PendingIntent.GetBroadcast(_ctx, descResId, intent, PendingIntentFlags.CancelCurrent);
 | 
			
		||||
				return pending;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public const int NotifyUsername = 1;
 | 
			
		||||
		public const int NotifyPassword = 2;
 | 
			
		||||
		public const int NotifyKeyboard = 3;
 | 
			
		||||
		public const int ClearClipboard = 4;
 | 
			
		||||
		public const int NotifyCombined = 5;
 | 
			
		||||
 | 
			
		||||
		static public void CopyValueToClipboardWithTimeout(Context ctx, string text)
 | 
			
		||||
		{
 | 
			
		||||
@@ -209,17 +383,6 @@ namespace keepass2android
 | 
			
		||||
 | 
			
		||||
		private const string ActionNotificationCancelled = "notification_cancelled";
 | 
			
		||||
 | 
			
		||||
		//creates a delete intent (started when notification is cancelled by user or something else)
 | 
			
		||||
		//requires different request codes for every item (otherwise the intents are identical)
 | 
			
		||||
		PendingIntent CreateDeleteIntent(int requestCode)
 | 
			
		||||
		{
 | 
			
		||||
			Intent intent = new Intent(ActionNotificationCancelled);
 | 
			
		||||
			Bundle extra = new Bundle();
 | 
			
		||||
			extra.PutInt("requestCode", requestCode);
 | 
			
		||||
			intent.PutExtras(extra);
 | 
			
		||||
 | 
			
		||||
			return PendingIntent.GetBroadcast(this, requestCode, intent, PendingIntentFlags.CancelCurrent);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public void DisplayAccessNotifications(PwEntryOutput entry, bool closeAfterCreate)
 | 
			
		||||
		{
 | 
			
		||||
@@ -228,27 +391,19 @@ namespace keepass2android
 | 
			
		||||
			String entryName = entry.OutputStrings.ReadSafe(PwDefs.TitleField);
 | 
			
		||||
 | 
			
		||||
			ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(this);
 | 
			
		||||
			var notBuilder = new PasswordAccessNotificationBuilder(this, _notificationManager);
 | 
			
		||||
			if (prefs.GetBoolean(GetString(Resource.String.CopyToClipboardNotification_key), Resources.GetBoolean(Resource.Boolean.CopyToClipboardNotification_default)))
 | 
			
		||||
			{
 | 
			
		||||
 | 
			
		||||
				if (entry.OutputStrings.ReadSafe(PwDefs.PasswordField).Length > 0)
 | 
			
		||||
				{
 | 
			
		||||
					// only show notification if password is available
 | 
			
		||||
					Notification password = GetNotification(Intents.CopyPassword, Resource.String.copy_password, Resource.Drawable.notify, entryName);
 | 
			
		||||
 | 
			
		||||
					password.DeleteIntent = CreateDeleteIntent(NotifyPassword);
 | 
			
		||||
					_notificationManager.Notify(NotifyPassword, password);
 | 
			
		||||
					_numElementsToWaitFor++;
 | 
			
		||||
					notBuilder.AddPasswordAccess();
 | 
			
		||||
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if (entry.OutputStrings.ReadSafe(PwDefs.UserNameField).Length > 0)
 | 
			
		||||
				{
 | 
			
		||||
					// only show notification if username is available
 | 
			
		||||
					Notification username = GetNotification(Intents.CopyUsername, Resource.String.copy_username, Resource.Drawable.notify, entryName);
 | 
			
		||||
					username.DeleteIntent = CreateDeleteIntent(NotifyUsername);
 | 
			
		||||
					_numElementsToWaitFor++;
 | 
			
		||||
					_notificationManager.Notify(NotifyUsername, username);
 | 
			
		||||
					notBuilder.AddUsernameAccess();
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
@@ -260,12 +415,7 @@ namespace keepass2android
 | 
			
		||||
				hasKeyboardDataNow = MakeAccessibleForKeyboard(entry);
 | 
			
		||||
				if (hasKeyboardDataNow)
 | 
			
		||||
				{
 | 
			
		||||
					// only show notification if username is available
 | 
			
		||||
					Notification keyboard = GetNotification(Intents.CheckKeyboard, Resource.String.available_through_keyboard, Resource.Drawable.notify_keyboard, entryName);
 | 
			
		||||
					keyboard.DeleteIntent = CreateDeleteIntent(NotifyKeyboard);
 | 
			
		||||
					_numElementsToWaitFor++;
 | 
			
		||||
					_notificationManager.Notify(NotifyKeyboard, keyboard);
 | 
			
		||||
 | 
			
		||||
					notBuilder.AddKeyboardAccess();
 | 
			
		||||
					if (prefs.GetBoolean("kp2a_switch_rooted", false))
 | 
			
		||||
					{
 | 
			
		||||
						//switch rooted
 | 
			
		||||
@@ -293,6 +443,7 @@ namespace keepass2android
 | 
			
		||||
			{
 | 
			
		||||
				ClearKeyboard(true); //this clears again and then (this is the point) broadcasts that we no longer have keyboard data
 | 
			
		||||
			}
 | 
			
		||||
			_numElementsToWaitFor = notBuilder.CreateNotifications(entryName);
 | 
			
		||||
 | 
			
		||||
			if (_numElementsToWaitFor == 0)
 | 
			
		||||
			{
 | 
			
		||||
@@ -320,6 +471,7 @@ namespace keepass2android
 | 
			
		||||
			_notificationManager.Cancel(NotifyPassword);
 | 
			
		||||
			_notificationManager.Cancel(NotifyUsername);
 | 
			
		||||
			_notificationManager.Cancel(NotifyKeyboard);
 | 
			
		||||
			_notificationManager.Cancel(NotifyCombined);
 | 
			
		||||
			_numElementsToWaitFor = 0;
 | 
			
		||||
			bool hadKeyboardData = ClearKeyboard(false); //do not broadcast if the keyboard was changed
 | 
			
		||||
			return hadKeyboardData;
 | 
			
		||||
@@ -387,7 +539,7 @@ namespace keepass2android
 | 
			
		||||
			{
 | 
			
		||||
				StopSelf();
 | 
			
		||||
			}
 | 
			
		||||
			if (itemId == NotifyKeyboard)
 | 
			
		||||
			if ((itemId == NotifyKeyboard) || (itemId == NotifyCombined))
 | 
			
		||||
			{
 | 
			
		||||
				//keyboard notification was deleted -> clear entries in keyboard
 | 
			
		||||
				ClearKeyboard(true);
 | 
			
		||||
@@ -468,26 +620,6 @@ namespace keepass2android
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		private Notification GetNotification(String intentText, int descResId, int drawableResId, String entryName)
 | 
			
		||||
		{
 | 
			
		||||
			String desc = GetString(descResId);
 | 
			
		||||
 | 
			
		||||
			String title = GetString(Resource.String.app_name);
 | 
			
		||||
			if (!String.IsNullOrEmpty(entryName))
 | 
			
		||||
				title += " (" + entryName + ")";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
			Notification notify = new Notification(drawableResId, desc, Java.Lang.JavaSystem.CurrentTimeMillis());
 | 
			
		||||
 | 
			
		||||
			Intent intent = new Intent(intentText);
 | 
			
		||||
			intent.SetPackage(PackageName);
 | 
			
		||||
			PendingIntent pending = PendingIntent.GetBroadcast(this, descResId, intent, PendingIntentFlags.CancelCurrent);
 | 
			
		||||
 | 
			
		||||
			notify.SetLatestEventInfo(this, title, desc, pending);
 | 
			
		||||
 | 
			
		||||
			return notify;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		private class StopOnLockBroadcastReceiver : BroadcastReceiver
 | 
			
		||||
		{
 | 
			
		||||
			readonly CopyToClipboardService _service;
 | 
			
		||||
 
 | 
			
		||||
@@ -142,6 +142,7 @@ namespace keepass2android
 | 
			
		||||
				new NotificationCompat.Builder(this)
 | 
			
		||||
					.SetSmallIcon(grayIconResouceId)
 | 
			
		||||
					.SetLargeIcon(BitmapFactory.DecodeResource(Resources, AppNames.LauncherIcon))
 | 
			
		||||
				//Android 5	.SetVisibility((int)Android.App.NotificationVisibility.Secret)
 | 
			
		||||
					.SetContentTitle(GetString(Resource.String.app_name))
 | 
			
		||||
					.SetContentText(GetString(Resource.String.database_loaded_quickunlock_enabled, GetDatabaseName()));
 | 
			
		||||
 | 
			
		||||
@@ -177,7 +178,7 @@ namespace keepass2android
 | 
			
		||||
			NotificationCompat.Builder builder =
 | 
			
		||||
				new NotificationCompat.Builder(this)
 | 
			
		||||
					.SetOngoing(true)
 | 
			
		||||
					.SetSmallIcon(Resource.Drawable.ic_unlocked_gray)
 | 
			
		||||
					.SetSmallIcon(Resource.Drawable.ic_notify)
 | 
			
		||||
					.SetLargeIcon(BitmapFactory.DecodeResource(Resources, Resource.Drawable.ic_launcher_red))
 | 
			
		||||
					.SetContentTitle(GetString(Resource.String.app_name))
 | 
			
		||||
					.SetContentText(GetString(Resource.String.database_loaded_unlocked, GetDatabaseName()));
 | 
			
		||||
@@ -199,7 +200,7 @@ namespace keepass2android
 | 
			
		||||
			// Default action is to show Kp2A
 | 
			
		||||
			builder.SetContentIntent(GetSwitchToAppPendingIntent());
 | 
			
		||||
			// Additional action to allow locking the database
 | 
			
		||||
			builder.AddAction(Android.Resource.Drawable.IcLockLock, GetString(Resource.String.menu_lock), PendingIntent.GetBroadcast(this, 0, new Intent(Intents.LockDatabase), PendingIntentFlags.UpdateCurrent));
 | 
			
		||||
			builder.AddAction(Resource.Drawable.ic_action_lock, GetString(Resource.String.menu_lock), PendingIntent.GetBroadcast(this, 0, new Intent(Intents.LockDatabase), PendingIntentFlags.UpdateCurrent));
 | 
			
		||||
			
 | 
			
		||||
			return builder.Build();
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -114,9 +114,28 @@ namespace keepass2android
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			FindPreference(GetString(Resource.String.db_key)).Enabled = false;
 | 
			
		||||
			//PrepareKeyboardSwitchingPreferences(this);
 | 
			
		||||
			_switchPrefManager = new KeyboardSwitchPrefManager(this);
 | 
			
		||||
 | 
			
		||||
			PrepareSeparateNotificationsPreference(this);
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static void PrepareSeparateNotificationsPreference(PreferenceActivity preferenceActivity)
 | 
			
		||||
		{
 | 
			
		||||
			try
 | 
			
		||||
			{
 | 
			
		||||
				//depending on Android version, we offer to show a combined notification (with action buttons) (since API level 16)
 | 
			
		||||
				Preference separateNotificationsPref = preferenceActivity.FindPreference(preferenceActivity.GetString(Resource.String.ShowSeparateNotifications_key));
 | 
			
		||||
				var passwordAccessScreen = ((PreferenceScreen)preferenceActivity.FindPreference(preferenceActivity.GetString(Resource.String.password_access_prefs_key)));
 | 
			
		||||
				if ((int)Build.VERSION.SdkInt < 16)
 | 
			
		||||
				{
 | 
			
		||||
					passwordAccessScreen.RemovePreference(separateNotificationsPref);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			catch (Exception ex)
 | 
			
		||||
			{
 | 
			
		||||
				Kp2aLog.Log(ex.ToString());
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public class KeyboardSwitchPrefManager
 | 
			
		||||
 
 | 
			
		||||
@@ -185,6 +185,7 @@ namespace keepass2android
 | 
			
		||||
			UpdateImportKeyfilePref();
 | 
			
		||||
			//AppSettingsActivity.PrepareKeyboardSwitchingPreferences(this);
 | 
			
		||||
			_switchPrefManager = new AppSettingsActivity.KeyboardSwitchPrefManager(this);
 | 
			
		||||
			AppSettingsActivity.PrepareSeparateNotificationsPreference(this);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		private void UpdateImportKeyfilePref()
 | 
			
		||||
 
 | 
			
		||||