Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mod interaction #93

Merged
merged 41 commits into from
May 7, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
66202af
Implemented load order
misternebula Apr 25, 2020
e1b2093
Support for multiple dependencies
misternebula Apr 26, 2020
5c8b2d3
code cleanup
misternebula Apr 26, 2020
dc12c96
Merge pull request #1 from misternebula/master
misternebula Apr 26, 2020
b385e04
Added interaction methods
misternebula Apr 26, 2020
1861d01
cleanup
misternebula Apr 26, 2020
ee9fded
remove unneeded references
misternebula Apr 26, 2020
cc10d08
Update Readme.md
misternebula Apr 26, 2020
3f23a05
Changed "dependency" to "dependencies" in ModManifest
misternebula Apr 26, 2020
844f80c
Merge branch 'mod-interaction' of https://github.com/misternebula/owm…
misternebula Apr 26, 2020
c587f7b
Merge pull request #2 from misternebula/mod-interaction
misternebula Apr 26, 2020
f09f02e
Cleanup and dependency warning
misternebula Apr 26, 2020
c02369f
Added more helper methods
misternebula Apr 26, 2020
8eb9dfc
cleanup
misternebula Apr 26, 2020
a16189e
Clarify parameter name
misternebula Apr 27, 2020
d0a4fe1
Cleanup
misternebula Apr 27, 2020
3fbac47
remove more readme.txts...
misternebula Apr 27, 2020
da62d3a
Changes based on PR responses
misternebula Apr 27, 2020
d910e72
Refactor
misternebula Apr 27, 2020
e92ffef
Responses to PR
misternebula Apr 27, 2020
3be8de3
Change most IModData to IModBehaviour, remove unneeded references
misternebula Apr 27, 2020
12ba694
Updated manifest dependencies to use uniqueName
misternebula Apr 28, 2020
4ef7124
Added missing reference
misternebula Apr 28, 2020
5a622c4
Added priority mod loading option
misternebula Apr 28, 2020
70239db
Added GetDependencies() and fixed null-dict issue
misternebula Apr 28, 2020
0f90181
Changed ModBehaviour to IModBehaviour
misternebula Apr 28, 2020
d3182f9
Rewrote sorting code to be more readable
misternebula Apr 29, 2020
a49f1cb
Update Readme.md
misternebula Apr 29, 2020
6567e86
Merge pull request #92 from misternebula/master
amazingalek Apr 29, 2020
dafaa86
Improved clarity in ModSorter, Owo and ModDependency
misternebula Apr 29, 2020
7a09d7c
Responses to PR
misternebula Apr 29, 2020
1a30e49
Reworked dictionaries and removed unneeded types
misternebula Apr 30, 2020
4531b41
Added console log to cyclic dependency
misternebula Apr 30, 2020
8462046
Added check for priority mod needed a normal mod
misternebula Apr 30, 2020
4f52e23
Update mod removal code to not cause a enumeration error
misternebula Apr 30, 2020
51cabf8
Update Readme.md
misternebula Apr 30, 2020
7dc13f6
Made RegenDicts() be called less and improved clarity
misternebula Apr 30, 2020
d2cde16
Merge branch 'mod-interaction' of https://github.com/amazingalek/owml…
misternebula Apr 30, 2020
81674e0
Remove unneeded comments
misternebula Apr 30, 2020
ad9549c
Readability and duplicate mod protection
misternebula May 3, 2020
005110b
bump version
misternebula May 6, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion OWML.Common/IModBehaviour.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
namespace OWML.Common
using System.Collections.Generic;

namespace OWML.Common
{
public interface IModBehaviour
{
IModHelper ModHelper { get; }
void Configure(IModConfig config);
IList<IModBehaviour> GetDependants();
IList<IModBehaviour> GetDependencies();
}
}
1 change: 1 addition & 0 deletions OWML.Common/IModHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@ public interface IModHelper
IModManifest Manifest { get; }
IModConfig Config { get; }
IOwmlConfig OwmlConfig { get; }
IModInteraction Interaction { get; }
}
}
17 changes: 17 additions & 0 deletions OWML.Common/IModInteraction.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OWML.Common
{
public interface IModInteraction
{
IList<IModBehaviour> GetMods();
IList<IModBehaviour> GetDependants(string dependencyUniqueName);
IList<IModBehaviour> GetDependencies(string uniqueName);
IModBehaviour GetMod(string uniqueName);
T GetMod<T>(string uniqueName) where T : IModBehaviour;
bool ModExists(string uniqueName);
}
}
2 changes: 2 additions & 0 deletions OWML.Common/IModManifest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,7 @@ public interface IModManifest
string UniqueName { get; }
string ModFolderPath { get; set; }
Dictionary<string, string> AppIds { get; }
string[] Dependencies { get; }
bool PriorityLoad { get; }
}
}
25 changes: 14 additions & 11 deletions OWML.Common/OWML.Common.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -33,32 +33,34 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="Assembly-CSharp, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\Assembly-CSharp.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\Assembly-CSharp.dll</HintPath>
</Reference>
<Reference Include="OW.Unity.Dlls, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\OW.Unity.Dlls.dll</HintPath>
<Reference Include="OW.Unity.Dlls, Version=1.0.4.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\OW.Unity.Dlls.dll</HintPath>
</Reference>
<Reference Include="System.Core" />
<Reference Include="UnityEngine, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.AudioModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.AudioModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.AudioModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.CoreModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.CoreModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.IMGUIModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.IMGUIModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.PhysicsModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.PhysicsModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.PhysicsModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UI, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.UI.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.UI.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UIModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.UIModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.UIModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UnityWebRequestWWWModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.UnityWebRequestWWWModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.UnityWebRequestWWWModule.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
Expand All @@ -67,6 +69,7 @@
<Compile Include="IHarmonyHelper.cs" />
<Compile Include="IModAssets.cs" />
<Compile Include="IModAsset.cs" />
<Compile Include="IModInteraction.cs" />
<Compile Include="Menus\InputType.cs" />
<Compile Include="Menus\IModButton.cs" />
<Compile Include="IModConfig.cs" />
Expand Down
2 changes: 1 addition & 1 deletion OWML.Common/packages.config
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="OW.Unity.Dlls" version="1.0.2" targetFramework="net35" />
<package id="OW.Unity.Dlls" version="1.0.4" targetFramework="net35" />
</packages>
2 changes: 1 addition & 1 deletion OWML.Launcher/OWML.Manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
"author": "Alek",
"name": "OWML",
"uniqueName": "Alek.OWML",
"version": "0.3.46",
"version": "0.3.47",
"description": "The mod loader and mod framework for Outer Wilds"
}
2 changes: 1 addition & 1 deletion OWML.Launcher/packages.config
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Json.Net.Unity3D" version="9.0.1" targetFramework="net35" />
<package id="Json.Net.Unity3D" version="9.0.1" targetFramework="net472" />
</packages>
23 changes: 13 additions & 10 deletions OWML.ModHelper.Assets/OWML.ModHelper.Assets.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -34,35 +34,38 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="Assembly-CSharp, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\Assembly-CSharp.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\Assembly-CSharp.dll</HintPath>
</Reference>
<Reference Include="NAudio-Unity">
<HintPath>NAudio-Unity\NAudio-Unity.dll</HintPath>
</Reference>
<Reference Include="OW.Unity.Dlls, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\OW.Unity.Dlls.dll</HintPath>
<Reference Include="OW.Unity.Dlls, Version=1.0.4.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\OW.Unity.Dlls.dll</HintPath>
</Reference>
<Reference Include="System.Core" />
<Reference Include="UnityEngine, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.AudioModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.AudioModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.AudioModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.CoreModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.CoreModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.IMGUIModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.IMGUIModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.PhysicsModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.PhysicsModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.PhysicsModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UI, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.UI.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.UI.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UIModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.UIModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.UIModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UnityWebRequestWWWModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.UnityWebRequestWWWModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.UnityWebRequestWWWModule.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion OWML.ModHelper.Assets/packages.config
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="OW.Unity.Dlls" version="1.0.2" targetFramework="net35" />
<package id="OW.Unity.Dlls" version="1.0.4" targetFramework="net35" />
</packages>
23 changes: 13 additions & 10 deletions OWML.ModHelper.Events/OWML.ModHelper.Events.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -36,32 +36,35 @@
<HintPath>..\packages\Lib.Harmony.1.2.0.1\lib\net35\0Harmony.dll</HintPath>
</Reference>
<Reference Include="Assembly-CSharp, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\Assembly-CSharp.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\Assembly-CSharp.dll</HintPath>
</Reference>
<Reference Include="OW.Unity.Dlls, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\OW.Unity.Dlls.dll</HintPath>
<Reference Include="OW.Unity.Dlls, Version=1.0.4.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\OW.Unity.Dlls.dll</HintPath>
</Reference>
<Reference Include="System.Core" />
<Reference Include="UnityEngine, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.AudioModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.AudioModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.AudioModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.CoreModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.CoreModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.IMGUIModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.IMGUIModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.PhysicsModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.PhysicsModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.PhysicsModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UI, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.UI.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.UI.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UIModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.UIModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.UIModule.dll</HintPath>
</Reference>
<Reference Include="UnityEngine.UnityWebRequestWWWModule, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OW.Unity.Dlls.1.0.2\lib\net35\UnityEngine.UnityWebRequestWWWModule.dll</HintPath>
<HintPath>..\packages\OW.Unity.Dlls.1.0.4\lib\net35\UnityEngine.UnityWebRequestWWWModule.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
Expand Down
6 changes: 6 additions & 0 deletions OWML.ModHelper.Events/TypeExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,5 +67,11 @@ public static void Invoke(this object obj, string name, params object[] paramete
method?.Invoke(obj, parameters);
}

public static T Invoke<T>(this object obj, string name, params object[] parameters)
{
var type = obj.GetType();
var method = type.GetAnyMethod(name);
return (T)method?.Invoke(obj, parameters);
}
}
}
2 changes: 1 addition & 1 deletion OWML.ModHelper.Events/packages.config
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Lib.Harmony" version="1.2.0.1" targetFramework="net35" />
<package id="OW.Unity.Dlls" version="1.0.2" targetFramework="net35" />
<package id="OW.Unity.Dlls" version="1.0.4" targetFramework="net35" />
</packages>
85 changes: 85 additions & 0 deletions OWML.ModHelper.Interaction/ModInteraction.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
using OWML.Common;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;

namespace OWML.ModHelper.Interaction
{
public class ModInteraction : IModInteraction
{
private readonly IList<IModBehaviour> _modList;
private Dictionary<string, List<IModBehaviour>> _dependantDict = new Dictionary<string, List<IModBehaviour>>();
private Dictionary<string, List<IModBehaviour>> _dependencyDict = new Dictionary<string, List<IModBehaviour>>();

public ModInteraction(IList<IModBehaviour> list)
{
_modList = list;

RegenDicts();
}

private void RegenDicts()
{
_dependantDict = new Dictionary<string, List<IModBehaviour>>();
_dependencyDict = new Dictionary<string, List<IModBehaviour>>();
foreach (var mod in _modList)
{
var dependants = new List<IModBehaviour>();
var dependencies = new List<IModBehaviour>();
foreach (var dependency in _modList)
{
if (dependency.ModHelper.Manifest.Dependencies.Contains(mod.ModHelper.Manifest.UniqueName))
{
dependants.Add(dependency);
}

if (mod.ModHelper.Manifest.Dependencies.Contains(dependency.ModHelper.Manifest.UniqueName))
{
dependencies.Add(dependency);
}
}
_dependantDict[mod.ModHelper.Manifest.UniqueName] = dependants;
_dependencyDict[mod.ModHelper.Manifest.UniqueName] = dependencies;
}
}

public IList<IModBehaviour> GetDependants(string dependencyUniqueName)
{
if (_dependantDict.Count != _modList.Count)
{
RegenDicts();
}
return _dependantDict[dependencyUniqueName];
}

public IList<IModBehaviour> GetDependencies(string uniqueName)
{
if (_dependantDict.Count != _modList.Count)
{
RegenDicts();
}
return _dependencyDict[uniqueName];
}

public IModBehaviour GetMod(string uniqueName)
{
return _modList.First(m => m.ModHelper.Manifest.UniqueName == uniqueName);
}

public T GetMod<T>(string uniqueName) where T : IModBehaviour
{
var mod = GetMod(uniqueName);
return (T)mod;
}

public IList<IModBehaviour> GetMods()
{
return _modList;
}

public bool ModExists(string uniqueName)
{
return _modList.Any(m => m.ModHelper.Manifest.UniqueName == uniqueName);
}
}
}
Loading