From 214b05ff8e2f0388d89a7fdc1257fdfba2d134e0 Mon Sep 17 00:00:00 2001
From: NotAKidoS <37721153+NotAKidOnSteam@users.noreply.github.com>
Date: Thu, 27 Apr 2023 05:22:53 -0500
Subject: [PATCH] AvatarScaleMod
---
AvatarScale/AvatarScaleMod.csproj | 2 +
AvatarScale/HarmonyPatches.cs | 38 +++++
AvatarScale/Main.cs | 37 +++++
AvatarScale/Properties/AssemblyInfo.cs | 29 ++++
AvatarScale/README.md | 16 ++
AvatarScale/format.json | 23 +++
NAK_CVR_Mods.sln | 195 +++++++++++++------------
7 files changed, 250 insertions(+), 90 deletions(-)
create mode 100644 AvatarScale/AvatarScaleMod.csproj
create mode 100644 AvatarScale/HarmonyPatches.cs
create mode 100644 AvatarScale/Main.cs
create mode 100644 AvatarScale/Properties/AssemblyInfo.cs
create mode 100644 AvatarScale/README.md
create mode 100644 AvatarScale/format.json
diff --git a/AvatarScale/AvatarScaleMod.csproj b/AvatarScale/AvatarScaleMod.csproj
new file mode 100644
index 0000000..66a50a8
--- /dev/null
+++ b/AvatarScale/AvatarScaleMod.csproj
@@ -0,0 +1,2 @@
+
+
diff --git a/AvatarScale/HarmonyPatches.cs b/AvatarScale/HarmonyPatches.cs
new file mode 100644
index 0000000..d12b81a
--- /dev/null
+++ b/AvatarScale/HarmonyPatches.cs
@@ -0,0 +1,38 @@
+using ABI_RC.Core.Player;
+using HarmonyLib;
+
+namespace NAK.AvatarScaleMod.HarmonyPatches;
+
+class PlayerSetupPatches
+{
+ [HarmonyPostfix]
+ [HarmonyPatch(typeof(PlayerSetup), nameof(PlayerSetup.SetupAvatarGeneral))]
+ static void Postfix_PlayerSetup_SetupAvatarGeneral(ref PlayerSetup __instance, ref float ____initialAvatarHeight)
+ {
+ if (!AvatarScaleMod.EntryEnabled.Value) return;
+
+ if (AvatarScaleMod.HiddenAvatarScale.Value > 0)
+ {
+ __instance.changeAnimatorParam(AvatarScaleMod.ParameterName, AvatarScaleMod.HiddenAvatarScale.Value);
+ return;
+ }
+
+ // User has cleared MelonPrefs, store a default value.
+ AvatarScaleMod.HiddenAvatarScale.Value = CalculateParameterValue(____initialAvatarHeight);
+ }
+
+ [HarmonyPrefix]
+ [HarmonyPatch(typeof(PlayerSetup), nameof(PlayerSetup.ClearAvatar))]
+ static void Prefix_PlayerSetup_ClearAvatar(ref float ____avatarHeight)
+ {
+ if (!AvatarScaleMod.EntryEnabled.Value) return;
+
+ AvatarScaleMod.HiddenAvatarScale.Value = CalculateParameterValue(____avatarHeight);
+ }
+
+ public static float CalculateParameterValue(float lastAvatarHeight)
+ {
+ float t = (lastAvatarHeight - AvatarScaleMod.MinimumHeight) / (AvatarScaleMod.MaximumHeight - AvatarScaleMod.MinimumHeight);
+ return t;
+ }
+}
\ No newline at end of file
diff --git a/AvatarScale/Main.cs b/AvatarScale/Main.cs
new file mode 100644
index 0000000..9e127b5
--- /dev/null
+++ b/AvatarScale/Main.cs
@@ -0,0 +1,37 @@
+using MelonLoader;
+
+namespace NAK.AvatarScaleMod;
+
+public class AvatarScaleMod : MelonMod
+{
+ internal const string ParameterName = "AvatarScale";
+ internal const float MinimumHeight = 0.25f;
+ internal const float MaximumHeight = 2f;
+
+ public static readonly MelonPreferences_Category Category =
+ MelonPreferences.CreateCategory(nameof(AvatarScaleMod));
+
+ public static readonly MelonPreferences_Entry EntryEnabled =
+ Category.CreateEntry("Enabled", true, description: "Should there be persistant avatar scaling? This only works properly on supported avatars.");
+
+ public static readonly MelonPreferences_Entry HiddenAvatarScale =
+ Category.CreateEntry("Last Avatar Scale", -1f, is_hidden: true);
+
+ public override void OnInitializeMelon()
+ {
+ ApplyPatches(typeof(HarmonyPatches.PlayerSetupPatches));
+ }
+
+ void ApplyPatches(Type type)
+ {
+ try
+ {
+ HarmonyInstance.PatchAll(type);
+ }
+ catch (Exception e)
+ {
+ LoggerInstance.Msg($"Failed while patching {type.Name}!");
+ LoggerInstance.Error(e);
+ }
+ }
+}
\ No newline at end of file
diff --git a/AvatarScale/Properties/AssemblyInfo.cs b/AvatarScale/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..512339a
--- /dev/null
+++ b/AvatarScale/Properties/AssemblyInfo.cs
@@ -0,0 +1,29 @@
+using MelonLoader;
+using NAK.AvatarScaleMod.Properties;
+using System.Reflection;
+
+[assembly: AssemblyVersion(AssemblyInfoParams.Version)]
+[assembly: AssemblyFileVersion(AssemblyInfoParams.Version)]
+[assembly: AssemblyInformationalVersion(AssemblyInfoParams.Version)]
+[assembly: AssemblyTitle(nameof(NAK.AvatarScaleMod))]
+[assembly: AssemblyCompany(AssemblyInfoParams.Author)]
+[assembly: AssemblyProduct(nameof(NAK.AvatarScaleMod))]
+
+[assembly: MelonInfo(
+ typeof(NAK.AvatarScaleMod.AvatarScaleMod),
+ nameof(NAK.AvatarScaleMod),
+ AssemblyInfoParams.Version,
+ AssemblyInfoParams.Author,
+ downloadLink: "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/tree/main/AvatarScale"
+)]
+
+[assembly: MelonGame("Alpha Blend Interactive", "ChilloutVR")]
+[assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
+[assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
+
+namespace NAK.AvatarScaleMod.Properties;
+internal static class AssemblyInfoParams
+{
+ public const string Version = "1.0.0";
+ public const string Author = "NotAKidoS";
+}
\ No newline at end of file
diff --git a/AvatarScale/README.md b/AvatarScale/README.md
new file mode 100644
index 0000000..f61e69d
--- /dev/null
+++ b/AvatarScale/README.md
@@ -0,0 +1,16 @@
+# AvatarScaleMod
+
+Makes "AvatarScale" parameter persistant across avatars.
+
+Combined with AvatarScaleTool, this allows for crossa consistant scale when switching between avatars.
+
+---
+
+Here is the block of text where I tell you this mod is not affiliated or endorsed by ABI.
+https://documentation.abinteractive.net/official/legal/tos/#7-modding-our-games
+
+> This mod is an independent creation and is not affiliated with, supported by or approved by Alpha Blend Interactive.
+
+> Use of this mod is done so at the user's own risk and the creator cannot be held responsible for any issues arising from its use.
+
+> To the best of my knowledge, I have adhered to the Modding Guidelines established by Alpha Blend Interactive.
diff --git a/AvatarScale/format.json b/AvatarScale/format.json
new file mode 100644
index 0000000..4a21982
--- /dev/null
+++ b/AvatarScale/format.json
@@ -0,0 +1,23 @@
+{
+ "_id": 126,
+ "name": "AvatarScale",
+ "modversion": "1.0.5",
+ "gameversion": "2022r170",
+ "loaderversion": "0.5.7",
+ "modtype": "Mod",
+ "author": "NotAKidoS",
+ "description": "Fixes two issues with the Avatar Advanced Settings buffers when loading remote avatars. In simple terms, it means 'fewer wardrobe malfunctions'.\n\nEmpty buffer (all 0/false) will no longer be applied on load.\nReceived AAS data is ignored until the wearer has loaded into the expected avatar.\n(The avatar will sit in its default state until the wearer has loaded and started syncing correct AAS)\nAAS will no longer be sent while switching avatar.\n\nPlease view the GitHub README for links to relevant feedback posts.",
+ "searchtags": [
+ "aas",
+ "sync",
+ "naked",
+ "buffer"
+ ],
+ "requirements": [
+ "None"
+ ],
+ "downloadlink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/releases/download/r3/AvatarScale.dll",
+ "sourcelink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/tree/main/AvatarScale/",
+ "changelog": "",
+ "embedcolor": "9b59b6"
+}
\ No newline at end of file
diff --git a/NAK_CVR_Mods.sln b/NAK_CVR_Mods.sln
index 55ec05e..732cae0 100644
--- a/NAK_CVR_Mods.sln
+++ b/NAK_CVR_Mods.sln
@@ -1,46 +1,51 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TrackedControllerFix", "TrackedControllerFix\TrackedControllerFix.csproj", "{883F7EC3-9A1E-4EBA-9A51-E2E7882DC5D4}"
+# Visual Studio Version 17
+VisualStudioVersion = 17.2.32630.192
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TrackedControllerFix", "TrackedControllerFix\TrackedControllerFix.csproj", "{883F7EC3-9A1E-4EBA-9A51-E2E7882DC5D4}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AASBufferFix", "AASBufferFix\AASBufferFix.csproj", "{DBC8A547-F07B-40DB-8745-D79042C6C1A1}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AASBufferFix", "AASBufferFix\AASBufferFix.csproj", "{DBC8A547-F07B-40DB-8745-D79042C6C1A1}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BadAnimatorFix", "BadAnimatorFix\BadAnimatorFix.csproj", "{E56C36DE-5F8D-41CC-A801-376D27D22EF5}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BadAnimatorFix", "BadAnimatorFix\BadAnimatorFix.csproj", "{E56C36DE-5F8D-41CC-A801-376D27D22EF5}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Blackout", "Blackout\Blackout.csproj", "{24BE113B-5D9F-4BFA-A883-CAD8279304A1}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Blackout", "Blackout\Blackout.csproj", "{24BE113B-5D9F-4BFA-A883-CAD8279304A1}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChatBoxExtensions", "ChatBoxExtensions\ChatBoxExtensions.csproj", "{E3709319-8EDB-42C7-8A99-0F1FDF5AC312}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ChatBoxExtensions", "ChatBoxExtensions\ChatBoxExtensions.csproj", "{E3709319-8EDB-42C7-8A99-0F1FDF5AC312}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClearHudNotifications", "ClearHudNotifications\ClearHudNotifications.csproj", "{F74A59F9-7AE9-46AB-81B9-B50BDA4C30F0}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ClearHudNotifications", "ClearHudNotifications\ClearHudNotifications.csproj", "{F74A59F9-7AE9-46AB-81B9-B50BDA4C30F0}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CVRGizmos", "CVRGizmos\CVRGizmos.csproj", "{CF9BC79E-4FB6-429A-8C19-DF31F040BD4A}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CVRGizmos", "CVRGizmos\CVRGizmos.csproj", "{CF9BC79E-4FB6-429A-8C19-DF31F040BD4A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DesktopVRIK", "DesktopVRIK\DesktopVRIK.csproj", "{CD33AB69-F9A4-4F32-B69A-473131F6393B}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DesktopVRIK", "DesktopVRIK\DesktopVRIK.csproj", "{CD33AB69-F9A4-4F32-B69A-473131F6393B}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DesktopVRSwitch", "DesktopVRSwitch\DesktopVRSwitch.csproj", "{30F56FE1-1654-4213-A51C-4C0278FB43A6}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DesktopVRSwitch", "DesktopVRSwitch\DesktopVRSwitch.csproj", "{30F56FE1-1654-4213-A51C-4C0278FB43A6}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FuckMetrics", "FuckMetrics\FuckMetrics.csproj", "{55E805A5-404C-4BB9-9AF1-A432443B1424}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FuckMetrics", "FuckMetrics\FuckMetrics.csproj", "{55E805A5-404C-4BB9-9AF1-A432443B1424}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FuckToes", "FuckToes\FuckToes.csproj", "{79B2A7C4-348D-4A8E-94D1-BA22FDD5FEED}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FuckToes", "FuckToes\FuckToes.csproj", "{79B2A7C4-348D-4A8E-94D1-BA22FDD5FEED}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GestureLock", "GestureLock\GestureLock.csproj", "{45A65AEB-4BFC-4E47-B181-BBB43BD81283}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GestureLock", "GestureLock\GestureLock.csproj", "{45A65AEB-4BFC-4E47-B181-BBB43BD81283}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IKFixes", "IKFixes\IKFixes.csproj", "{95D40C1C-6A7D-4AB3-8893-3E7B8375D01D}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IKFixes", "IKFixes\IKFixes.csproj", "{95D40C1C-6A7D-4AB3-8893-3E7B8375D01D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JumpPatch", "JumpPatch\JumpPatch.csproj", "{06AA6DE3-967A-4F1E-83B1-6DDA1524A638}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JumpPatch", "JumpPatch\JumpPatch.csproj", "{06AA6DE3-967A-4F1E-83B1-6DDA1524A638}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MenuScalePatch", "MenuScalePatch\MenuScalePatch.csproj", "{A089D5AA-B539-423C-9331-A30E8147EEF5}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MenuScalePatch", "MenuScalePatch\MenuScalePatch.csproj", "{A089D5AA-B539-423C-9331-A30E8147EEF5}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomComponents", "NAK.CustomComponents\CustomComponents.csproj", "{E43DB288-C6CF-469C-A250-17029A14770E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CustomComponents", "NAK.CustomComponents\CustomComponents.csproj", "{E43DB288-C6CF-469C-A250-17029A14770E}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PathCamDisabler", "PathCamDisabler\PathCamDisabler.csproj", "{98169FD2-5CEB-46D1-A320-D7E06F82C9E0}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PathCamDisabler", "PathCamDisabler\PathCamDisabler.csproj", "{98169FD2-5CEB-46D1-A320-D7E06F82C9E0}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PickupPushPull", "PickupPushPull\PickupPushPull.csproj", "{1B3245A6-1F6D-4C1F-AE53-8781A26A1AC7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PickupPushPull", "PickupPushPull\PickupPushPull.csproj", "{1B3245A6-1F6D-4C1F-AE53-8781A26A1AC7}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PortableCameraAdditions", "PortableCameraAdditions\PortableCameraAdditions.csproj", "{C4DAFE9D-C79B-4417-9B7D-B7327999DA4C}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PortableCameraAdditions", "PortableCameraAdditions\PortableCameraAdditions.csproj", "{C4DAFE9D-C79B-4417-9B7D-B7327999DA4C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PropUndoButton", "PropUndoButton\PropUndoButton.csproj", "{FBFDB717-F81E-4C06-ACF9-A0F3FFDCDE00}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PropUndoButton", "PropUndoButton\PropUndoButton.csproj", "{FBFDB717-F81E-4C06-ACF9-A0F3FFDCDE00}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ThirdPerson", "ThirdPerson\ThirdPerson.csproj", "{675CEC0E-3E8A-4970-98EA-9B79277A7252}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ThirdPerson", "ThirdPerson\ThirdPerson.csproj", "{675CEC0E-3E8A-4970-98EA-9B79277A7252}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AvatarScaleMod", "AvatarScale\AvatarScaleMod.csproj", "{A6DF0D98-428C-4FE2-BA7F-756312122B1E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -48,89 +53,99 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {06AA6DE3-967A-4F1E-83B1-6DDA1524A638}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {06AA6DE3-967A-4F1E-83B1-6DDA1524A638}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {06AA6DE3-967A-4F1E-83B1-6DDA1524A638}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {06AA6DE3-967A-4F1E-83B1-6DDA1524A638}.Release|Any CPU.Build.0 = Release|Any CPU
- {1B3245A6-1F6D-4C1F-AE53-8781A26A1AC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1B3245A6-1F6D-4C1F-AE53-8781A26A1AC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1B3245A6-1F6D-4C1F-AE53-8781A26A1AC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1B3245A6-1F6D-4C1F-AE53-8781A26A1AC7}.Release|Any CPU.Build.0 = Release|Any CPU
- {24BE113B-5D9F-4BFA-A883-CAD8279304A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {24BE113B-5D9F-4BFA-A883-CAD8279304A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {24BE113B-5D9F-4BFA-A883-CAD8279304A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {24BE113B-5D9F-4BFA-A883-CAD8279304A1}.Release|Any CPU.Build.0 = Release|Any CPU
- {30F56FE1-1654-4213-A51C-4C0278FB43A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {30F56FE1-1654-4213-A51C-4C0278FB43A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {30F56FE1-1654-4213-A51C-4C0278FB43A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {30F56FE1-1654-4213-A51C-4C0278FB43A6}.Release|Any CPU.Build.0 = Release|Any CPU
- {45A65AEB-4BFC-4E47-B181-BBB43BD81283}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {45A65AEB-4BFC-4E47-B181-BBB43BD81283}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {45A65AEB-4BFC-4E47-B181-BBB43BD81283}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {45A65AEB-4BFC-4E47-B181-BBB43BD81283}.Release|Any CPU.Build.0 = Release|Any CPU
- {55E805A5-404C-4BB9-9AF1-A432443B1424}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {55E805A5-404C-4BB9-9AF1-A432443B1424}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {55E805A5-404C-4BB9-9AF1-A432443B1424}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {55E805A5-404C-4BB9-9AF1-A432443B1424}.Release|Any CPU.Build.0 = Release|Any CPU
- {675CEC0E-3E8A-4970-98EA-9B79277A7252}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {675CEC0E-3E8A-4970-98EA-9B79277A7252}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {675CEC0E-3E8A-4970-98EA-9B79277A7252}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {675CEC0E-3E8A-4970-98EA-9B79277A7252}.Release|Any CPU.Build.0 = Release|Any CPU
- {79B2A7C4-348D-4A8E-94D1-BA22FDD5FEED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {79B2A7C4-348D-4A8E-94D1-BA22FDD5FEED}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {79B2A7C4-348D-4A8E-94D1-BA22FDD5FEED}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {79B2A7C4-348D-4A8E-94D1-BA22FDD5FEED}.Release|Any CPU.Build.0 = Release|Any CPU
{883F7EC3-9A1E-4EBA-9A51-E2E7882DC5D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {883F7EC3-9A1E-4EBA-9A51-E2E7882DC5D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{883F7EC3-9A1E-4EBA-9A51-E2E7882DC5D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {883F7EC3-9A1E-4EBA-9A51-E2E7882DC5D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{883F7EC3-9A1E-4EBA-9A51-E2E7882DC5D4}.Release|Any CPU.Build.0 = Release|Any CPU
- {95D40C1C-6A7D-4AB3-8893-3E7B8375D01D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {95D40C1C-6A7D-4AB3-8893-3E7B8375D01D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {95D40C1C-6A7D-4AB3-8893-3E7B8375D01D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {95D40C1C-6A7D-4AB3-8893-3E7B8375D01D}.Release|Any CPU.Build.0 = Release|Any CPU
- {98169FD2-5CEB-46D1-A320-D7E06F82C9E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {98169FD2-5CEB-46D1-A320-D7E06F82C9E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {98169FD2-5CEB-46D1-A320-D7E06F82C9E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {98169FD2-5CEB-46D1-A320-D7E06F82C9E0}.Release|Any CPU.Build.0 = Release|Any CPU
- {A089D5AA-B539-423C-9331-A30E8147EEF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A089D5AA-B539-423C-9331-A30E8147EEF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A089D5AA-B539-423C-9331-A30E8147EEF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A089D5AA-B539-423C-9331-A30E8147EEF5}.Release|Any CPU.Build.0 = Release|Any CPU
- {C4DAFE9D-C79B-4417-9B7D-B7327999DA4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C4DAFE9D-C79B-4417-9B7D-B7327999DA4C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C4DAFE9D-C79B-4417-9B7D-B7327999DA4C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C4DAFE9D-C79B-4417-9B7D-B7327999DA4C}.Release|Any CPU.Build.0 = Release|Any CPU
- {CD33AB69-F9A4-4F32-B69A-473131F6393B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CD33AB69-F9A4-4F32-B69A-473131F6393B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {CD33AB69-F9A4-4F32-B69A-473131F6393B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CD33AB69-F9A4-4F32-B69A-473131F6393B}.Release|Any CPU.Build.0 = Release|Any CPU
- {CF9BC79E-4FB6-429A-8C19-DF31F040BD4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CF9BC79E-4FB6-429A-8C19-DF31F040BD4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {CF9BC79E-4FB6-429A-8C19-DF31F040BD4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CF9BC79E-4FB6-429A-8C19-DF31F040BD4A}.Release|Any CPU.Build.0 = Release|Any CPU
{DBC8A547-F07B-40DB-8745-D79042C6C1A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {DBC8A547-F07B-40DB-8745-D79042C6C1A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DBC8A547-F07B-40DB-8745-D79042C6C1A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DBC8A547-F07B-40DB-8745-D79042C6C1A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DBC8A547-F07B-40DB-8745-D79042C6C1A1}.Release|Any CPU.Build.0 = Release|Any CPU
- {E3709319-8EDB-42C7-8A99-0F1FDF5AC312}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E3709319-8EDB-42C7-8A99-0F1FDF5AC312}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E3709319-8EDB-42C7-8A99-0F1FDF5AC312}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E3709319-8EDB-42C7-8A99-0F1FDF5AC312}.Release|Any CPU.Build.0 = Release|Any CPU
- {E43DB288-C6CF-469C-A250-17029A14770E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E43DB288-C6CF-469C-A250-17029A14770E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E43DB288-C6CF-469C-A250-17029A14770E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E43DB288-C6CF-469C-A250-17029A14770E}.Release|Any CPU.Build.0 = Release|Any CPU
{E56C36DE-5F8D-41CC-A801-376D27D22EF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E56C36DE-5F8D-41CC-A801-376D27D22EF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E56C36DE-5F8D-41CC-A801-376D27D22EF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E56C36DE-5F8D-41CC-A801-376D27D22EF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E56C36DE-5F8D-41CC-A801-376D27D22EF5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {24BE113B-5D9F-4BFA-A883-CAD8279304A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {24BE113B-5D9F-4BFA-A883-CAD8279304A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {24BE113B-5D9F-4BFA-A883-CAD8279304A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {24BE113B-5D9F-4BFA-A883-CAD8279304A1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E3709319-8EDB-42C7-8A99-0F1FDF5AC312}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E3709319-8EDB-42C7-8A99-0F1FDF5AC312}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E3709319-8EDB-42C7-8A99-0F1FDF5AC312}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E3709319-8EDB-42C7-8A99-0F1FDF5AC312}.Release|Any CPU.Build.0 = Release|Any CPU
{F74A59F9-7AE9-46AB-81B9-B50BDA4C30F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {F74A59F9-7AE9-46AB-81B9-B50BDA4C30F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F74A59F9-7AE9-46AB-81B9-B50BDA4C30F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F74A59F9-7AE9-46AB-81B9-B50BDA4C30F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F74A59F9-7AE9-46AB-81B9-B50BDA4C30F0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CF9BC79E-4FB6-429A-8C19-DF31F040BD4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CF9BC79E-4FB6-429A-8C19-DF31F040BD4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CF9BC79E-4FB6-429A-8C19-DF31F040BD4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CF9BC79E-4FB6-429A-8C19-DF31F040BD4A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CD33AB69-F9A4-4F32-B69A-473131F6393B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CD33AB69-F9A4-4F32-B69A-473131F6393B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CD33AB69-F9A4-4F32-B69A-473131F6393B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CD33AB69-F9A4-4F32-B69A-473131F6393B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {30F56FE1-1654-4213-A51C-4C0278FB43A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {30F56FE1-1654-4213-A51C-4C0278FB43A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {30F56FE1-1654-4213-A51C-4C0278FB43A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {30F56FE1-1654-4213-A51C-4C0278FB43A6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {55E805A5-404C-4BB9-9AF1-A432443B1424}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {55E805A5-404C-4BB9-9AF1-A432443B1424}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {55E805A5-404C-4BB9-9AF1-A432443B1424}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {55E805A5-404C-4BB9-9AF1-A432443B1424}.Release|Any CPU.Build.0 = Release|Any CPU
+ {79B2A7C4-348D-4A8E-94D1-BA22FDD5FEED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {79B2A7C4-348D-4A8E-94D1-BA22FDD5FEED}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {79B2A7C4-348D-4A8E-94D1-BA22FDD5FEED}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {79B2A7C4-348D-4A8E-94D1-BA22FDD5FEED}.Release|Any CPU.Build.0 = Release|Any CPU
+ {45A65AEB-4BFC-4E47-B181-BBB43BD81283}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {45A65AEB-4BFC-4E47-B181-BBB43BD81283}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {45A65AEB-4BFC-4E47-B181-BBB43BD81283}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {45A65AEB-4BFC-4E47-B181-BBB43BD81283}.Release|Any CPU.Build.0 = Release|Any CPU
+ {95D40C1C-6A7D-4AB3-8893-3E7B8375D01D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {95D40C1C-6A7D-4AB3-8893-3E7B8375D01D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {95D40C1C-6A7D-4AB3-8893-3E7B8375D01D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {95D40C1C-6A7D-4AB3-8893-3E7B8375D01D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {06AA6DE3-967A-4F1E-83B1-6DDA1524A638}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {06AA6DE3-967A-4F1E-83B1-6DDA1524A638}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {06AA6DE3-967A-4F1E-83B1-6DDA1524A638}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {06AA6DE3-967A-4F1E-83B1-6DDA1524A638}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A089D5AA-B539-423C-9331-A30E8147EEF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A089D5AA-B539-423C-9331-A30E8147EEF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A089D5AA-B539-423C-9331-A30E8147EEF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A089D5AA-B539-423C-9331-A30E8147EEF5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E43DB288-C6CF-469C-A250-17029A14770E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E43DB288-C6CF-469C-A250-17029A14770E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E43DB288-C6CF-469C-A250-17029A14770E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E43DB288-C6CF-469C-A250-17029A14770E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {98169FD2-5CEB-46D1-A320-D7E06F82C9E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {98169FD2-5CEB-46D1-A320-D7E06F82C9E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {98169FD2-5CEB-46D1-A320-D7E06F82C9E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {98169FD2-5CEB-46D1-A320-D7E06F82C9E0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1B3245A6-1F6D-4C1F-AE53-8781A26A1AC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1B3245A6-1F6D-4C1F-AE53-8781A26A1AC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1B3245A6-1F6D-4C1F-AE53-8781A26A1AC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1B3245A6-1F6D-4C1F-AE53-8781A26A1AC7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C4DAFE9D-C79B-4417-9B7D-B7327999DA4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C4DAFE9D-C79B-4417-9B7D-B7327999DA4C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C4DAFE9D-C79B-4417-9B7D-B7327999DA4C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C4DAFE9D-C79B-4417-9B7D-B7327999DA4C}.Release|Any CPU.Build.0 = Release|Any CPU
{FBFDB717-F81E-4C06-ACF9-A0F3FFDCDE00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {FBFDB717-F81E-4C06-ACF9-A0F3FFDCDE00}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FBFDB717-F81E-4C06-ACF9-A0F3FFDCDE00}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FBFDB717-F81E-4C06-ACF9-A0F3FFDCDE00}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FBFDB717-F81E-4C06-ACF9-A0F3FFDCDE00}.Release|Any CPU.Build.0 = Release|Any CPU
+ {675CEC0E-3E8A-4970-98EA-9B79277A7252}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {675CEC0E-3E8A-4970-98EA-9B79277A7252}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {675CEC0E-3E8A-4970-98EA-9B79277A7252}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {675CEC0E-3E8A-4970-98EA-9B79277A7252}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A6DF0D98-428C-4FE2-BA7F-756312122B1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A6DF0D98-428C-4FE2-BA7F-756312122B1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A6DF0D98-428C-4FE2-BA7F-756312122B1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A6DF0D98-428C-4FE2-BA7F-756312122B1E}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {CD7DECEC-F4A0-4EEF-978B-72748414D52A}
EndGlobalSection
EndGlobal