Switch to xxHash3 (#2191)

* Switch over to xxHash3

* Fix most of the tests

* Update NX to fix tests

* fix some broken tests

* Remove duplicate package version definition

* Add global.json file, maybe this fixes the build issue?

* Upgrade the hashing library version

* Fix the "hint" crap Rider put into the project files

* Add final missing package reference
This commit is contained in:
Timothy Baldridge
2024-10-23 14:37:36 +01:00
committed by GitHub
parent ecb5633e85
commit 5d1cfec97f
110 changed files with 721 additions and 712 deletions
+3 -3
View File
@@ -11,13 +11,14 @@
<PackageVersion Include="Microsoft.Extensions.Options" Version="8.0.2" />
<PackageVersion Include="Nerdbank.FullDuplexStream" Version="1.1.12" />
<PackageVersion Include="Nerdbank.Streams" Version="2.11.74" />
<PackageVersion Include="NexusMods.Hashing.xxHash3" Version="3.0.2" />
<PackageVersion Include="NexusMods.Hashing.xxHash3.Paths" Version="3.0.2" />
<PackageVersion Include="NexusMods.Paths" Version="0.10.0" />
<PackageVersion Include="NexusMods.MnemonicDB.Abstractions" Version="0.9.91" />
<PackageVersion Include="NexusMods.MnemonicDB" Version="0.9.91" />
<PackageVersion Include="NexusMods.Hashing.xxHash64" Version="2.0.2" />
<PackageVersion Include="NexusMods.Paths.Extensions.Nx" Version="0.10.0" />
<PackageVersion Include="NexusMods.Paths.TestingHelpers" Version="0.10.0" />
<PackageVersion Include="NexusMods.Archives.Nx" Version="0.5.0" />
<PackageVersion Include="NexusMods.Archives.Nx" Version="0.6.1" />
<PackageVersion Include="NexusMods.Telemetry.OpenTelemetry" Version="1.0.0" />
<PackageVersion Include="FomodInstaller.Interface" Version="1.2.0" />
<PackageVersion Include="FomodInstaller.Scripting.XmlScript" Version="1.0.0" />
@@ -132,7 +133,6 @@
<PackageVersion Include="OneOf" Version="3.0.271" />
<PackageVersion Include="ReactiveUI.Fody" Version="19.5.41" />
<PackageVersion Include="Sewer56.BitStream" Version="1.3.0" />
<PackageVersion Include="Spectre.Console" Version="0.48.0" />
<PackageVersion Include="Splat.Microsoft.Extensions.Logging" Version="15.2.22" />
<PackageVersion Include="TransparentValueObjects" Version="1.0.1" />
</ItemGroup>
@@ -1,5 +1,5 @@
using NexusMods.Abstractions.IO;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
namespace NexusMods.Benchmarks.Benchmarks.Loadouts.Harness;
+7
View File
@@ -0,0 +1,7 @@
{
"sdk": {
"version": "8.0.0",
"rollForward": "latestMajor",
"allowPrerelease": true
}
}
@@ -1,4 +1,4 @@
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
namespace NexusMods.Abstractions.Collections.Types;
@@ -2,6 +2,7 @@
<!-- NuGet Package Shared Details -->
<Import Project="$([MSBuild]::GetPathOfFileAbove('NuGet.Build.props', '$(MSBuildThisFileDirectory)../'))" />
<ItemGroup>
<PackageReference Include="NexusMods.Hashing.xxHash3" />
<PackageReference Include="NexusMods.MnemonicDB.SourceGenerator" PrivateAssets="all" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
<PackageReference Include="NexusMods.MnemonicDB.Abstractions" />
@@ -3,9 +3,9 @@
<Import Project="$([MSBuild]::GetPathOfFileAbove('NuGet.Build.props', '$(MSBuildThisFileDirectory)../'))" />
<ItemGroup>
<PackageReference Include="NexusMods.Hashing.xxHash3" />
<PackageReference Include="TransparentValueObjects" PrivateAssets="all" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
<PackageReference Include="OneOf" />
<PackageReference Include="NexusMods.Hashing.xxHash64" />
</ItemGroup>
<ItemGroup>
@@ -1,4 +1,4 @@
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using OneOf;
namespace NexusMods.Abstractions.GuidedInstallers;
@@ -1,4 +1,4 @@
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
using Size = NexusMods.Paths.Size;
@@ -4,8 +4,8 @@
<ItemGroup>
<!-- Todo: We need to get rid of 'optional' to remove this heavy dependency. -->
<PackageReference Include="DynamicData" />
<PackageReference Include="NexusMods.Hashing.xxHash3" />
<PackageReference Include="TransparentValueObjects" PrivateAssets="all" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
<PackageReference Include="NexusMods.Hashing.xxHash64" />
<PackageReference Include="NexusMods.Paths" />
</ItemGroup>
<ItemGroup>
@@ -1,4 +1,4 @@
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
namespace NexusMods.Abstractions.IO;
@@ -1,5 +1,4 @@
using System.Buffers;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
namespace NexusMods.Abstractions.IO;
@@ -4,7 +4,7 @@
<ItemGroup>
<!-- TODO: This library needs stabilized -->
<PackageReference Include="NexusMods.Hashing.xxHash3" />
<PackageReference Include="NexusMods.Paths" />
<PackageReference Include="NexusMods.Hashing.xxHash64" />
</ItemGroup>
</Project>
@@ -4,6 +4,7 @@
<ItemGroup>
<ProjectReference Include="..\NexusMods.Abstractions.MnemonicDB.Attributes\NexusMods.Abstractions.MnemonicDB.Attributes.csproj" />
<PackageReference Include="NexusMods.Hashing.xxHash3" />
<PackageReference Include="NexusMods.MnemonicDB.Abstractions" />
<PackageReference Include="TransparentValueObjects" PrivateAssets="all" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
<PackageReference Include="NexusMods.MnemonicDB.SourceGenerator" PrivateAssets="all" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
@@ -14,8 +14,8 @@ using NexusMods.Abstractions.Jobs;
using NexusMods.Abstractions.Loadouts.Extensions;
using NexusMods.Abstractions.Loadouts.Synchronizers.Rules;
using NexusMods.Extensions.BCL;
using NexusMods.Extensions.Hashing;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Hashing.xxHash3.Paths;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.MnemonicDB.Abstractions.DatomIterators;
using NexusMods.MnemonicDB.Abstractions.IndexSegments;
@@ -895,7 +895,7 @@ public class ALoadoutSynchronizer : ILoadoutSynchronizer
// If the files don't match, update the entry
if (fileInfo.LastWriteTimeUtc > entry.LastModified || fileInfo.Size != entry.Size)
{
var newHash = await file.XxHash64Async();
var newHash = await file.XxHash3Async();
tx.Add(entry.Id, DiskStateEntry.Size, fileInfo.Size);
tx.Add(entry.Id, DiskStateEntry.Hash, newHash);
tx.Add(entry.Id, DiskStateEntry.LastModified, fileInfo.LastWriteTimeUtc);
@@ -905,7 +905,7 @@ public class ALoadoutSynchronizer : ILoadoutSynchronizer
else
{
// No previous entry found, so create a new one
var newHash = await file.XxHash64Async(token: token);
var newHash = await file.XxHash3Async(token: token);
_ = new DiskStateEntry.New(tx, tx.TempId(DiskStateEntry.EntryPartition))
{
Path = gamePath.ToGamePathParentTuple(metadata.Id),
@@ -960,7 +960,7 @@ public class ALoadoutSynchronizer : ILoadoutSynchronizer
return;
}
var newHash = await file.XxHash64Async(token: token);
var newHash = await file.XxHash3Async(token: token);
_ = new DiskStateEntry.New(tx, tx.TempId(DiskStateEntry.EntryPartition))
{
Path = gamePath.ToGamePathParentTuple(metaDataId),
@@ -7,6 +7,8 @@
<ProjectReference Include="..\NexusMods.Abstractions.GC\NexusMods.Abstractions.GC.csproj" />
<ProjectReference Include="..\NexusMods.Abstractions.Jobs\NexusMods.Abstractions.Jobs.csproj" />
<ProjectReference Include="..\NexusMods.Abstractions.Loadouts\NexusMods.Abstractions.Loadouts.csproj" />
<PackageReference Include="NexusMods.Hashing.xxHash3" />
<PackageReference Include="NexusMods.Hashing.xxHash3.Paths" />
<PackageReference Include="NexusMods.MnemonicDB.SourceGenerator" PrivateAssets="all" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
</ItemGroup>
<ItemGroup>
@@ -1,5 +1,5 @@
using DynamicData.Kernel;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
namespace NexusMods.Abstractions.Loadouts.Synchronizers.Rules;
@@ -2,7 +2,7 @@ using DynamicData.Kernel;
using NexusMods.Abstractions.DiskState;
using NexusMods.Abstractions.GameLocators;
using NexusMods.Abstractions.Loadouts.Synchronizers.Rules;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.Paths;
@@ -1,7 +1,7 @@
using NexusMods.Abstractions.GameLocators;
using NexusMods.Abstractions.Loadouts;
using NexusMods.Abstractions.MnemonicDB.Attributes;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.MnemonicDB.Abstractions.Attributes;
using NexusMods.MnemonicDB.Abstractions.Models;
@@ -1,5 +1,5 @@
using NexusMods.Abstractions.GameLocators;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
namespace NexusMods.Abstractions.Loadouts.Synchronizers;
@@ -1,5 +1,5 @@
using NexusMods.Abstractions.GameLocators;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
namespace NexusMods.Abstractions.Loadouts.Files;
@@ -1,5 +1,5 @@
using NexusMods.Abstractions.GameLocators;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.Paths;
@@ -1,7 +1,7 @@
using JetBrains.Annotations;
using NexusMods.Abstractions.GameLocators;
using NexusMods.Abstractions.MnemonicDB.Attributes;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.MnemonicDB.Abstractions.Models;
using NexusMods.Paths;
@@ -1,4 +1,4 @@
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.MnemonicDB.Abstractions.Attributes;
using NexusMods.MnemonicDB.Abstractions.ElementComparers;
@@ -3,12 +3,10 @@
<Import Project="$([MSBuild]::GetPathOfFileAbove('NuGet.Build.props', '$(MSBuildThisFileDirectory)../'))" />
<ItemGroup>
<PackageReference Include="NexusMods.Hashing.xxHash64" />
<PackageReference Include="NexusMods.MnemonicDB.Abstractions" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Extensions\NexusMods.Extensions.Hashing\NexusMods.Extensions.Hashing.csproj" />
</ItemGroup>
</Project>
@@ -9,6 +9,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="NexusMods.Hashing.xxHash3" />
<PackageReference Include="NexusMods.MnemonicDB.Abstractions"/>
<PackageReference Include="NexusMods.MnemonicDB.SourceGenerator" PrivateAssets="all" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
</ItemGroup>
@@ -1,6 +1,6 @@
using DynamicData.Kernel;
using JetBrains.Annotations;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.MnemonicDB.Abstractions.Attributes;
@@ -1,6 +1,6 @@
using JetBrains.Annotations;
using NexusMods.Abstractions.IO;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
namespace NexusMods.Abstractions.Resources.IO;
@@ -1,6 +1,6 @@
using JetBrains.Annotations;
using NexusMods.Abstractions.IO;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
namespace NexusMods.Abstractions.Resources.IO;
@@ -7,5 +7,4 @@
<ProjectReference Include="..\NexusMods.Abstractions.IO\NexusMods.Abstractions.IO.csproj" />
<ProjectReference Include="..\NexusMods.Abstractions.Resources\NexusMods.Abstractions.Resources.csproj" />
</ItemGroup>
</Project>
@@ -1,5 +1,5 @@
using JetBrains.Annotations;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
namespace NexusMods.Abstractions.Resources.IO;
@@ -1,5 +1,6 @@
using System.IO.Hashing;
using System.IO.MemoryMappedFiles;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
namespace NexusMods.Extensions.Hashing;
@@ -18,6 +19,8 @@ public static class AbsolutePathExtensions
return await inputStream.HashingCopyAsync(Stream.Null, token, static _ => Task.CompletedTask);
}
private static readonly Hash HashOfEmptyFile = Hash.From(XxHash3.HashToUInt64(ReadOnlySpan<byte>.Empty));
/// <summary>
/// Calculates the xxHash64 of a file by memory mapping it.
/// </summary>
@@ -26,12 +29,12 @@ public static class AbsolutePathExtensions
try
{
using var mmf = input.FileSystem.CreateMemoryMappedFile(input, FileMode.Open, MemoryMappedFileAccess.Read, 0);
var hashValue = XxHash64Algorithm.HashBytes(mmf.AsSpan());
var hashValue = XxHash3.HashToUInt64(mmf.AsSpan());
return Hash.From(hashValue);
}
catch (ArgumentException)
{
return Hash.From(XxHash64Algorithm.HashOfEmptyFile);
return HashOfEmptyFile;
}
}
}
@@ -3,7 +3,8 @@
<Import Project="$([MSBuild]::GetPathOfFileAbove('NuGet.Build.props', '$(MSBuildThisFileDirectory)../'))" />
<ItemGroup>
<PackageReference Include="NexusMods.Hashing.xxHash64" />
<PackageReference Include="NexusMods.Hashing.xxHash3" />
<PackageReference Include="NexusMods.Paths" />
<PackageReference Include="System.IO.Hashing" />
</ItemGroup>
</Project>
@@ -1,4 +1,4 @@
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
namespace NexusMods.Extensions.Hashing;
@@ -18,7 +18,7 @@ public static class StreamExtensions
/// <summary>
/// Helper method to calculate the hash of a given stream.
/// </summary>
public static async Task<Hash> XxHash64Async(this Stream inputStream, CancellationToken token)
public static async Task<Hash> XxHash3Async(this Stream inputStream, CancellationToken token)
{
return await inputStream.HashingCopyAsync(Stream.Null, token, static _ => Task.CompletedTask);
}
@@ -1,4 +1,4 @@
using NexusMods.Hashing.xxHash64;
using System.IO.Hashing;
using Reloaded.Memory.Extensions;
namespace NexusMods.Extensions.Hashing;
@@ -22,7 +22,7 @@ public static class StringExtensions
/// </remarks>
public static ulong GetStableHash(this ReadOnlySpan<char> input)
{
return XxHash64Algorithm.HashBytes(input.CastFast<char, byte>());
return XxHash3.HashToUInt64(input.CastFast<char, byte>());
}
}
}
@@ -8,7 +8,7 @@ using NexusMods.Abstractions.Loadouts;
using NexusMods.Abstractions.Resources;
using NexusMods.Abstractions.Telemetry;
using NexusMods.Games.Larian.BaldursGate3.Utils.LsxXmlParsing;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using Polly;
namespace NexusMods.Games.Larian.BaldursGate3.Emitters;
@@ -7,7 +7,7 @@ using NexusMods.Abstractions.Resources.Caching;
using NexusMods.Abstractions.Resources.IO;
using NexusMods.Games.Larian.BaldursGate3.Utils.LsxXmlParsing;
using NexusMods.Games.Larian.BaldursGate3.Utils.PakParsing;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using Polly;
namespace NexusMods.Games.Larian.BaldursGate3;
@@ -8,7 +8,7 @@ using NexusMods.Abstractions.Library.Installers;
using NexusMods.Abstractions.Library.Models;
using NexusMods.Abstractions.Loadouts;
using NexusMods.Games.RedEngine.Cyberpunk2077.Models;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.Paths;
using NexusMods.Paths.Extensions;
@@ -7,7 +7,7 @@ using NexusMods.Abstractions.Resources;
using NexusMods.Abstractions.Resources.Caching;
using NexusMods.Abstractions.Resources.IO;
using NexusMods.Games.StardewValley.Models;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using SMAPIManifest = StardewModdingAPI.Toolkit.Serialization.Models.Manifest;
namespace NexusMods.Games.StardewValley;
@@ -8,7 +8,7 @@ using NexusMods.Abstractions.NexusWebApi;
using NexusMods.Abstractions.NexusWebApi.Types;
using NexusMods.Abstractions.NexusWebApi.Types.V2.Uid;
using NexusMods.Games.AdvancedInstaller.UI;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Networking.NexusWebApi;
using NexusMods.Paths;
using NexusMods.ProxyConsole.Abstractions;
@@ -2,7 +2,7 @@ using NexusMods.Abstractions.FileStore.Nx.Models;
using NexusMods.App.GarbageCollection.Nx;
using NexusMods.Archives.Nx.Headers;
using NexusMods.Archives.Nx.Headers.Managed;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.Paths;
using NexusMods.Paths.Extensions.Nx.FileProviders;
@@ -26,7 +26,7 @@ public class NxFileStoreUpdater
/// in <see cref="FileEntry"/> structures in the Nx archive.
/// </summary>
/// <param name="oldArchivePath">Path to the old archive file before repacking.</param>
/// <param name="newArchivePath">The output of <see cref="NxRepacker.RepackArchive(System.IProgress{double},System.Collections.Generic.List{NexusMods.Hashing.xxHash64.Hash},System.Collections.Generic.List{NexusMods.Hashing.xxHash64.Hash},NexusMods.App.GarbageCollection.Structs.ArchiveReference{NexusMods.App.GarbageCollection.Nx.NxParsedHeaderState})"/>. This may be empty if the archive was deleted.</param>
/// <param name="newArchivePath">The output of <see cref="NxRepacker.RepackArchive(System.IProgress{double},System.Collections.Generic.List{NexusMods.Hashing.xxHash3.Hash},System.Collections.Generic.List{NexusMods.Hashing.xxHash3.Hash},NexusMods.App.GarbageCollection.Structs.ArchiveReference{NexusMods.App.GarbageCollection.Nx.NxParsedHeaderState})"/>. This may be empty if the archive was deleted.</param>
public void UpdateNxFileStore(List<Hash> toRetract, AbsolutePath oldArchivePath, AbsolutePath newArchivePath)
{
var db = _connection.Db;
@@ -1,7 +1,7 @@
using NexusMods.Abstractions.IO;
using NexusMods.Abstractions.Settings;
using NexusMods.App.GarbageCollection.Nx;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.Paths;
namespace NexusMods.App.GarbageCollection.DataModel;
@@ -1,7 +1,8 @@
using System.Runtime.CompilerServices;
using NexusMods.App.GarbageCollection.Interfaces;
using NexusMods.Archives.Nx.Headers.Managed;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
namespace NexusMods.App.GarbageCollection.Nx;
/// <summary>
@@ -1,7 +1,7 @@
using NexusMods.App.GarbageCollection.Structs;
using NexusMods.Archives.Nx.Headers.Managed;
using NexusMods.Archives.Nx.Packing;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
using NexusMods.Paths.Extensions.Nx.FileProviders;
using NexusMods.Paths.Utilities;
@@ -5,7 +5,7 @@ using NexusMods.App.GarbageCollection.Errors;
using NexusMods.App.GarbageCollection.Interfaces;
using NexusMods.App.GarbageCollection.Structs;
using NexusMods.App.GarbageCollection.Utilities;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
namespace NexusMods.App.GarbageCollection;
@@ -1,4 +1,4 @@
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
namespace NexusMods.App.GarbageCollection.Errors;
/// <summary>
@@ -1,4 +1,5 @@
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
namespace NexusMods.App.GarbageCollection.Interfaces;
/// <summary>
@@ -2,9 +2,9 @@
<!-- NuGet Package Shared Details -->
<Import Project="$([MSBuild]::GetPathOfFileAbove('NuGet.Build.props', '$(MSBuildThisFileDirectory)../'))"/>
<ItemGroup>
<PackageReference Include="NexusMods.Hashing.xxHash3" />
<PackageReference Include="TransparentValueObjects"/>
<PackageReference Include="NexusMods.Paths"/>
<PackageReference Include="NexusMods.Hashing.xxHash64"/>
</ItemGroup>
<ItemGroup>
@@ -1,4 +1,4 @@
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
namespace NexusMods.App.GarbageCollection.Structs;
@@ -1,5 +1,6 @@
using JetBrains.Annotations;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
namespace NexusMods.App.GarbageCollection.Structs;
/// <summary>
@@ -1,5 +1,6 @@
using NexusMods.App.GarbageCollection.Errors;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
namespace NexusMods.App.GarbageCollection.Utilities;
internal static class ThrowHelpers
@@ -8,7 +8,7 @@ using Markdown.Avalonia.Utils;
using Microsoft.Extensions.Logging;
using NexusMods.App.UI.Extensions;
using NexusMods.CrossPlatform.Process;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
+1 -1
View File
@@ -1,6 +1,6 @@
using Avalonia.Media;
using JetBrains.Annotations;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using OneOf;
namespace NexusMods.App.UI;
+2 -2
View File
@@ -4,7 +4,7 @@ using Avalonia.Media.Imaging;
using Avalonia.Svg.Skia;
using Microsoft.Extensions.Logging;
using NexusMods.Abstractions.IO;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using Svg.Model;
namespace NexusMods.App.UI;
@@ -50,7 +50,7 @@ internal sealed class ImageCache : IImageCache
private static Hash GetHash(ImageIdentifier imageIdentifier)
{
return imageIdentifier.Union.Match(
f0: uri => uri.ToString().XxHash64AsUtf8(),
f0: uri => uri.ToString().xxHash3AsUtf8(),
f1: hash => hash
);
}
+3 -3
View File
@@ -6,7 +6,7 @@ using NexusMods.Abstractions.Resources;
using NexusMods.Abstractions.Resources.DB;
using NexusMods.Abstractions.Resources.IO;
using NexusMods.Abstractions.Resources.Resilience;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Media;
using NexusMods.MnemonicDB.Abstractions;
using R3;
@@ -66,7 +66,7 @@ internal static class ImagePipelines
.PersistInDb(
connection: connection,
referenceAttribute: CollectionMetadata.TileImageResource,
identifierToHash: static uri => uri.ToString().XxHash64AsUtf8(),
identifierToHash: static uri => uri.ToString().xxHash3AsUtf8(),
partitionId: PartitionId.User(ImagePartitionId)
)
.Decode(decoderType: DecoderType.Skia)
@@ -88,7 +88,7 @@ internal static class ImagePipelines
.PersistInDb(
connection: connection,
referenceAttribute: CollectionMetadata.BackgroundImageResource,
identifierToHash: static uri => uri.ToString().XxHash64AsUtf8(),
identifierToHash: static uri => uri.ToString().xxHash3AsUtf8(),
partitionId: PartitionId.User(ImagePartitionId)
)
.Decode(decoderType: DecoderType.Skia)
@@ -22,6 +22,7 @@ using NexusMods.Paths;
using ReactiveUI;
using ReactiveUI.Fody.Helpers;
using TextMateSharp.Grammars;
using Hash = NexusMods.Hashing.xxHash3.Hash;
namespace NexusMods.App.UI.Pages.TextEdit;
@@ -17,7 +17,7 @@ using NexusMods.Abstractions.Loadouts;
using NexusMods.Abstractions.NexusModsLibrary;
using NexusMods.Abstractions.NexusWebApi;
using NexusMods.Games.FOMOD;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Abstractions.NexusWebApi.Types.V2;
using NexusMods.Abstractions.NexusWebApi.Types.V2.Uid;
using NexusMods.MnemonicDB.Abstractions;
@@ -376,7 +376,7 @@ public class InstallCollectionJob : IJobDefinitionWithStart<InstallCollectionJob
using var md5 = MD5.Create();
md5.ComputeHash(patchedArray);
var md5Hash = Md5HashValue.From(md5.Hash!);
var xxHash = patchedArray.XxHash64();
var xxHash = patchedArray.xxHash3();
patchedFiles.Add(new ArchivedFileEntry(new MemoryStreamFactory(srcPath, patchedFile), xxHash, Size.FromLong(patchedFile.Length)));
hashes[md5Hash] = new HashMapping
@@ -33,7 +33,6 @@
<PackageReference Include="Microsoft.Extensions.Logging" />
<PackageReference Include="Microsoft.Extensions.ObjectPool" />
<PackageReference Include="NexusMods.Archives.Nx" />
<PackageReference Include="NexusMods.Hashing.xxHash64" />
<PackageReference Include="NexusMods.MnemonicDB" />
<PackageReference Include="Polly.Core"/>
<PackageReference Include="Microsoft.Extensions.Http.Resilience"/>
+1 -1
View File
@@ -15,7 +15,7 @@ using NexusMods.Archives.Nx.Packing.Unpack;
using NexusMods.Archives.Nx.Structs;
using NexusMods.Archives.Nx.Utilities;
using NexusMods.DataModel.ChunkedStreams;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.Paths;
+3 -2
View File
@@ -6,7 +6,8 @@ using NexusMods.Abstractions.IO.StreamFactories;
using NexusMods.Abstractions.Jobs;
using NexusMods.Abstractions.Library.Models;
using NexusMods.Extensions.Hashing;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Hashing.xxHash3.Paths;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.Paths;
@@ -52,7 +53,7 @@ internal class AddLibraryFileJob : IJobDefinitionWithStart<AddLibraryFileJob, Li
private async Task<LibraryFile.New> AnalyzeOne(IJobContext<AddLibraryFileJob> context, AbsolutePath filePath)
{
var isArchive = await CheckIfArchiveAsync(filePath);
var hash = await filePath.XxHash64Async();
var hash = await filePath.XxHash3Async();
var libraryFile = CreateLibraryFile(Transaction, filePath, hash);
@@ -1,12 +1,12 @@
[
{
FromPath: DWrite.dll,
Hash: 0x8EF806095E9F8F9B,
Hash: 0xC968A97F4D9DCB19,
ToGamePath: {Game}/Bin/DWrite.dll
},
{
FromPath: ScriptExtenderSettings.json,
Hash: 0x273ED670FBF4332F,
Hash: 0xE71E1BBE260FBD21,
ToGamePath: {Game}/Bin/ScriptExtenderSettings.json
}
]
@@ -1,7 +1,7 @@
[
{
FromPath: bin/bink2w64.dll,
Hash: 0xC6363140D5333C3E,
Hash: 0x8EB6493A00823A86,
ToGamePath: {Game}/bin/bink2w64.dll
}
]
@@ -1,12 +1,12 @@
[
{
FromPath: Recommended/Data/Generated/Public/Shared/Content/Assets/Characters/Character Editor Presets/Origin Presets/[PAK]_Shadowheart/_merged.lsf,
Hash: 0x8ED74FCCE6291C5E,
Hash: 0x7DB33D93F50FC967,
ToGamePath: {Game}/Data/Generated/Public/Shared/Content/Assets/Characters/Character Editor Presets/Origin Presets/[PAK]_Shadowheart/_merged.lsf
},
{
FromPath: Recommended/Data/Generated/Public/Shared/Assets/Characters/_Models/Humans/_Female/_Hair/Resources/HAIR_HUM_F_Shadowheart_Spring.gr2,
Hash: 0x3103D39FC0AEBDE5,
Hash: 0x59409C2FF0342D43,
ToGamePath: {Game}/Data/Generated/Public/Shared/Assets/Characters/_Models/Humans/_Female/_Hair/Resources/HAIR_HUM_F_Shadowheart_Spring.gr2
}
]
@@ -1,12 +1,12 @@
[
{
FromPath: Public/Shared/Stats/Generated/Data/XPData1.txt,
Hash: 0xC98EB6BC4E8661F0,
Hash: 0x8C0507C14B4BF188,
ToGamePath: {Game}/Data/Public/Shared/Stats/Generated/Data/XPData1.txt
},
{
FromPath: Public/SharedDev/Stats/Generated/Data/XPData2.txt,
Hash: 0x9345F61E5A6C7013,
Hash: 0xE1E5E9738F3B25AB,
ToGamePath: {Game}/Data/Public/SharedDev/Stats/Generated/Data/XPData2.txt
}
]
@@ -1,12 +1,12 @@
[
{
FromPath: myMod1.pak,
Hash: 0x12382AC3D91AF5AC,
Hash: 0xAE2818B3B0605CB7,
ToGamePath: {Mods}/myMod1.pak
},
{
FromPath: myMod2.pak,
Hash: 0x39F52D14C582063C,
Hash: 0xA7F0967A4929F662,
ToGamePath: {Mods}/myMod2.pak
}
]
@@ -1,12 +1,12 @@
[
{
FromPath: NativeMods/BG3NativeCameraTweaks.dll,
Hash: 0x9D3A484CEE5E5A51,
Hash: 0x3B9E9E8893CCB711,
ToGamePath: {Game}/bin/NativeMods/BG3NativeCameraTweaks.dll
},
{
FromPath: BG3NativeCameraTweaks.toml,
Hash: 0xF52CC272D80C600A,
Hash: 0x3760E4DFD2516321,
ToGamePath: {Game}/bin/BG3NativeCameraTweaks.toml
}
]
@@ -1,7 +1,7 @@
[
{
FromPath: Mods/myMod.pak,
Hash: 0x33C4706972EAAE6E,
Hash: 0xBF076F55301262AE,
ToGamePath: {Mods}/myMod.pak
}
]
@@ -1,7 +1,7 @@
[
{
FromPath: myMod.pak,
Hash: 0x23BC397CD47BAFDA,
Hash: 0xD4C4E61F52B6492D,
ToGamePath: {Mods}/myMod.pak
}
]
@@ -63,7 +63,7 @@ public class BG3InstallerTests(ITestOutputHelper outputHelper) : ALibraryArchive
private static SettingsTask VerifyChildren(
IEnumerable<(RelativePath FromPath, Hashing.xxHash64.Hash Hash, Abstractions.GameLocators.GamePath GamePath)> childrenFilesAndHashes,
IEnumerable<(RelativePath FromPath, Hashing.xxHash3.Hash Hash, Abstractions.GameLocators.GamePath GamePath)> childrenFilesAndHashes,
string[] archivePaths,
[CallerFilePath] string sourceFile = "")
{
@@ -11,7 +11,7 @@ using NexusMods.Abstractions.NexusWebApi.Types;
using NexusMods.Games.RedEngine.Cyberpunk2077;
using NexusMods.Games.RedEngine.Cyberpunk2077.Emitters;
using NexusMods.Games.TestFramework;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions.ElementComparers;
using NexusMods.Paths;
using Xunit.Abstractions;
@@ -67,7 +67,7 @@ public class Cyberpunk2077DiagnosticTests(ITestOutputHelper outputHelper) : ACyb
var contentArray = Encoding.UTF8.GetBytes(content);
AddFile(tx, loadout, pluginMod, gamePath, content);
filesToBackup.Add(new ArchivedFileEntry(new MemoryStreamFactory(gamePath.FileName, new MemoryStream(contentArray)),
contentArray.XxHash64(),
contentArray.xxHash3(),
Size.FromLong(contentArray.Length)));
AddFile(tx, loadout, pluginMod, gamePath);
@@ -1,27 +1,27 @@
[
{
FromPath: archive/pc/mod/foo.archive,
Hash: 0x3F9FDA0CBCC34562,
Hash: 0xA264DFF62937DB06,
ToGamePath: {Game}/archive/pc/mod/foo.archive
},
{
FromPath: bin/x64/foo.exe,
Hash: 0x798E0832D0DADE9C,
Hash: 0x4C1177C9185EA568,
ToGamePath: {Game}/bin/x64/foo.exe
},
{
FromPath: engine/foo.exe,
Hash: 0x174EAD3C0202B81C,
Hash: 0x62736F0795B31F3F,
ToGamePath: {Game}/engine/foo.exe
},
{
FromPath: r6/foo.exe,
Hash: 0xF60D49846472EC86,
Hash: 0x332D8D48B2A59917,
ToGamePath: {Game}/r6/foo.exe
},
{
FromPath: red4ext/foo.exe,
Hash: 0xC3DD09F834309596,
Hash: 0x5F678EAD4FBF7E55,
ToGamePath: {Game}/red4ext/foo.exe
}
]
@@ -1,12 +1,12 @@
[
{
FromPath: cool_choom.preset,
Hash: 0x7B15871FB267B315,
Hash: 0x6E41F20E86AFAB2B,
ToGamePath: {Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceChangeUnlocker/character-preset/female/cool_choom.preset
},
{
FromPath: cool_choom.preset,
Hash: 0x7B15871FB267B315,
Hash: 0x6E41F20E86AFAB2B,
ToGamePath: {Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceChangeUnlocker/character-preset/male/cool_choom.preset
}
]
@@ -1,12 +1,12 @@
[
{
FromPath: archive/pc/mod/foo.archive,
Hash: 0x3F9FDA0CBCC34562,
Hash: 0xA264DFF62937DB06,
ToGamePath: {Game}/archive/pc/mod/foo.archive
},
{
FromPath: bin/x64/foo.exe,
Hash: 0x798E0832D0DADE9C,
Hash: 0x4C1177C9185EA568,
ToGamePath: {Game}/bin/x64/foo.exe
}
]
@@ -1,12 +1,12 @@
[
{
FromPath: mymod/archive/pc/mod/foo.archive,
Hash: 0xE3DE93C464191B5F,
Hash: 0xCAAEEF103C353167,
ToGamePath: {Game}/archive/pc/mod/foo.archive
},
{
FromPath: mymod/bin/x64/foo.exe,
Hash: 0x95CD521D6DA7F4BC,
Hash: 0xC453E3627977F02D,
ToGamePath: {Game}/bin/x64/foo.exe
}
]
@@ -1,12 +1,12 @@
[
{
FromPath: folder/filea.archive,
Hash: 0x3CEAFFFA8F0928A4,
Hash: 0x5FCB1ACE156C8C76,
ToGamePath: {Game}/archive/pc/mod/filea.archive
},
{
FromPath: fileb.archive,
Hash: 0xE4560BB5B6784CE1,
Hash: 0xBCA8E6099A5757D2,
ToGamePath: {Game}/archive/pc/mod/fileb.archive
}
]
@@ -1,7 +1,7 @@
[
{
FromPath: folder/filea.archive,
Hash: 0x3CEAFFFA8F0928A4,
Hash: 0x5FCB1ACE156C8C76,
ToGamePath: {Game}/archive/pc/mod/filea.archive
}
]
@@ -4,7 +4,7 @@ using NexusMods.Abstractions.GameLocators;
using NexusMods.Games.RedEngine.Cyberpunk2077;
using NexusMods.Games.RedEngine.ModInstallers;
using NexusMods.Games.TestFramework;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
using NexusMods.StandardGameLocators.TestHelpers;
using Xunit.Abstractions;
@@ -7,7 +7,7 @@
+ | 0200000000000003 | Name | Driver_Shotgun | 0200000000000000
+ | 0200000000000003 | Parent | 0200000000000001 | 0200000000000000
+ | 0200000000000003 | RedModInfoFile | 0200000000000004 | 0200000000000000
+ | 0200000000000004 | Hash | 0x55FE2BFA19917AAF | 0200000000000000
+ | 0200000000000004 | Hash | 0x1243BB4EC47FF7D7 | 0200000000000000
+ | 0200000000000004 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000004 | Name | Driver_Shotgun | 0200000000000000
+ | 0200000000000004 | Name | info.json | 0200000000000000
@@ -15,25 +15,25 @@
+ | 0200000000000004 | Size | 80 B | 0200000000000000
+ | 0200000000000004 | TargetPath | (0200000000000002, Game, mods/Driver_Shotguns/info.json) | 0200000000000000
+ | 0200000000000004 | Version | 1.0.0 | 0200000000000000
+ | 0200000000000005 | Hash | 0x6A6D905ABC5177AE | 0200000000000000
+ | 0200000000000005 | Hash | 0xD0BF0295B8C34F05 | 0200000000000000
+ | 0200000000000005 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000005 | Name | base_crusher.tweak | 0200000000000000
+ | 0200000000000005 | Parent | 0200000000000003 | 0200000000000000
+ | 0200000000000005 | Size | 128 B | 0200000000000000
+ | 0200000000000005 | TargetPath | (0200000000000002, Game, mods/Driver_Shotguns/tweaks/base/gameplay/static_data/database/items/weapons/ranged/revolvers/crusher/base_crusher.tweak) | 0200000000000000
+ | 0200000000000006 | Hash | 0xDB4B2217BE615C07 | 0200000000000000
+ | 0200000000000006 | Hash | 0xF4DB695F8D74F188 | 0200000000000000
+ | 0200000000000006 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000006 | Name | base_pozhar.tweak | 0200000000000000
+ | 0200000000000006 | Parent | 0200000000000003 | 0200000000000000
+ | 0200000000000006 | Size | 128 B | 0200000000000000
+ | 0200000000000006 | TargetPath | (0200000000000002, Game, mods/Driver_Shotguns/tweaks/base/gameplay/static_data/database/items/weapons/ranged/rifles/pozhar/base_pozhar.tweak) | 0200000000000000
+ | 0200000000000007 | Hash | 0xA2EFF12B68D2606B | 0200000000000000
+ | 0200000000000007 | Hash | 0xC3C61C89EDA96DF8 | 0200000000000000
+ | 0200000000000007 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000007 | Name | base_igla.tweak | 0200000000000000
+ | 0200000000000007 | Parent | 0200000000000003 | 0200000000000000
+ | 0200000000000007 | Size | 128 B | 0200000000000000
+ | 0200000000000007 | TargetPath | (0200000000000002, Game, mods/Driver_Shotguns/tweaks/base/gameplay/static_data/database/items/weapons/ranged/shotguns/igla/base_igla.tweak) | 0200000000000000
+ | 0200000000000008 | Hash | 0x468F14E15B6E2EDC | 0200000000000000
+ | 0200000000000008 | Hash | 0x75BB8350229FA0F3 | 0200000000000000
+ | 0200000000000008 | Loadout | 0200000000000002 | 0200000000000000
+ | 0200000000000008 | Name | base_satara.tweak | 0200000000000000
+ | 0200000000000008 | Parent | 0200000000000003 | 0200000000000000
@@ -6,7 +6,7 @@ using NexusMods.Abstractions.Settings;
using NexusMods.Extensions.Hashing;
using NexusMods.Games.StardewValley.Models;
using NexusMods.Games.TestFramework;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
using NexusMods.Paths.Extensions;
using NexusMods.Games.TestFramework.FluentAssertionExtensions;
@@ -24,7 +24,7 @@ public class StardewValleySynchronizerTests(IServiceProvider serviceProvider) :
using var tx = Connection.BeginTransaction();
var manifestData = "{}";
var manifestHash = manifestData.XxHash64AsUtf8();
var manifestHash = manifestData.xxHash3AsUtf8();
var smapiMod = new SMAPIModLoadoutItem.New(tx, out var modId)
{
@@ -17,7 +17,7 @@ using NexusMods.Abstractions.Loadouts;
using NexusMods.Abstractions.Loadouts.Extensions;
using NexusMods.Abstractions.Loadouts.Synchronizers;
using NexusMods.DataModel;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.MnemonicDB.Abstractions.BuiltInEntities;
using NexusMods.MnemonicDB.Abstractions.Models;
@@ -128,7 +128,7 @@ public abstract class AGameTest<TGame> where TGame : AGame
content ??= path.Path.ToString();
var contentArray = Encoding.UTF8.GetBytes(content);
hash = contentArray.XxHash64();
hash = contentArray.xxHash3();
size = Size.FromLong(contentArray.Length);
return AddFileInternal(tx, loadoutId, groupId, path, hash, size).Id;
}
@@ -193,7 +193,7 @@ public abstract class AGameTest<TGame> where TGame : AGame
foreach (var path in paths)
{
var data = Encoding.UTF8.GetBytes(path);
var hash = data.XxHash64();
var hash = data.xxHash3();
var size = Size.FromLong(path.Path.Length);
// Create the LoadoutFile in DB
@@ -231,7 +231,7 @@ public abstract class AGameTest<TGame> where TGame : AGame
private static LibraryFile.New CreateLibraryFile(string fileName, ITransaction tx, out EntityId entityId) => new(tx, out entityId)
{
FileName = fileName,
Hash = fileName.XxHash64AsUtf8(),
Hash = fileName.xxHash3AsUtf8(),
Size = Size.FromLong(fileName.Length),
LibraryItem = new LibraryItem.New(tx, entityId)
{
@@ -24,7 +24,7 @@ using NexusMods.Abstractions.Serialization;
using NexusMods.App.BuildInfo;
using NexusMods.DataModel;
using NexusMods.Games.FOMOD;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.MnemonicDB.Abstractions.BuiltInEntities;
using NexusMods.MnemonicDB.Abstractions.Models;
@@ -167,7 +167,7 @@ public abstract class AIsolatedGameTest<TTest, TGame> : IAsyncLifetime where TGa
content ??= path.Path.ToString();
var contentArray = Encoding.UTF8.GetBytes(content);
hash = contentArray.XxHash64();
hash = contentArray.xxHash3();
size = Size.FromLong(contentArray.Length);
return AddFileInternal(tx, loadoutId, groupId, path, hash, size).Id;
}
@@ -232,7 +232,7 @@ public abstract class AIsolatedGameTest<TTest, TGame> : IAsyncLifetime where TGa
foreach (var path in paths)
{
var data = Encoding.UTF8.GetBytes(path);
var hash = data.XxHash64();
var hash = data.xxHash3();
var size = Size.FromLong(path.Path.Length);
// Create the LoadoutFile in DB
@@ -270,7 +270,7 @@ public abstract class AIsolatedGameTest<TTest, TGame> : IAsyncLifetime where TGa
private static LibraryFile.New CreateLibraryFile(string fileName, ITransaction tx, out EntityId entityId) => new(tx, out entityId)
{
FileName = fileName,
Hash = fileName.XxHash64AsUtf8(),
Hash = fileName.xxHash3AsUtf8(),
Size = Size.FromLong(fileName.Length),
LibraryItem = new LibraryItem.New(tx, entityId)
{
@@ -10,7 +10,7 @@ using NexusMods.Abstractions.Library.Installers;
using NexusMods.Abstractions.Library.Models;
using NexusMods.Abstractions.Loadouts;
using NexusMods.Extensions.Hashing;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.MnemonicDB.Abstractions.IndexSegments;
using NexusMods.Paths;
@@ -182,7 +182,7 @@ public abstract class ALibraryArchiveInstallerTests<TTest, TGame>(ITestOutputHel
sb.Append(ul.ToString("X16").PadRight(48));
break;
case byte[] byteArray:
var code = byteArray.XxHash64().Value;
var code = byteArray.xxHash3().Value;
var hash = code.ToString("X16");
sb.Append($"Blob 0x{hash} {byteArray.Length} bytes".PadRight(48));
break;
@@ -1,6 +1,6 @@
using NexusMods.Abstractions.NexusWebApi.Types;
using NexusMods.Abstractions.NexusWebApi.Types.V2;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
namespace NexusMods.Games.TestFramework.Downloader;
@@ -2,7 +2,8 @@ using FluentAssertions;
using Microsoft.Extensions.DependencyInjection;
using NexusMods.Abstractions.Jobs;
using NexusMods.Extensions.Hashing;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Hashing.xxHash3.Paths;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.Paths;
@@ -31,7 +32,7 @@ public class HttpDownloadJobWorkerTests
outputPath.Path.FileExists.Should().BeTrue();
outputPath.Path.FileInfo.Size.Should().Be(Size.MB * 100);
var hash = await outputPath.Path.XxHash64Async();
hash.Should().Be(Hash.From(0xBEEADB5B05BED390));
var hash = await outputPath.Path.XxHash3Async();
hash.Should().Be(Hash.From(0x2330001AD4114867));
}
}
@@ -2,7 +2,7 @@ using System.Net;
using System.Net.Http.Headers;
using System.Text;
using Microsoft.Extensions.Logging;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
namespace NexusMods.Networking.HttpDownloader.Tests;
@@ -24,7 +24,7 @@ public class LocalHttpServer : IDisposable
_listener.Start();
LargeData = GenerateLargeData();
LargeDataHash = LargeData.AsSpan().XxHash64();
LargeDataHash = LargeData.AsSpan().xxHash3();
StartLoop();
}
@@ -6,7 +6,7 @@ using NexusMods.Abstractions.IO.StreamFactories;
using NexusMods.Abstractions.Settings;
using NexusMods.App.GarbageCollection.Nx;
using NexusMods.DataModel;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.Paths;
using NexusMods.Paths.Extensions;
@@ -60,7 +60,7 @@ public class DataStoreNxArchiveFinderTests(NxFileStore fileStore, IConnection co
foreach (var (fileName, content) in files)
{
var data = Encoding.UTF8.GetBytes(content);
var hash = data.AsSpan().XxHash64();
var hash = data.AsSpan().xxHash3();
var entry = new ArchivedFileEntry(
new MemoryStreamFactory(fileName.ToRelativePath(), new MemoryStream(data)),
@@ -1,6 +1,6 @@
using NexusMods.App.GarbageCollection.Nx;
using NexusMods.Archives.Nx.Headers;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
using NexusMods.Paths.Extensions.Nx.FileProviders;
namespace NexusMods.App.GarbageCollection.DataModel.Tests.FindUsedFiles;
@@ -6,7 +6,7 @@ using NexusMods.Abstractions.Library.Models;
using NexusMods.Abstractions.Loadouts;
using NexusMods.App.GarbageCollection.Nx;
using NexusMods.Games.TestFramework;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
using NexusMods.StandardGameLocators.TestHelpers.StubbedGames;
using static NexusMods.App.GarbageCollection.DataModel.Tests.FindUsedFiles.Helpers;
@@ -4,7 +4,7 @@ using NexusMods.Abstractions.GC;
using NexusMods.Abstractions.Loadouts;
using NexusMods.App.GarbageCollection.Nx;
using NexusMods.Games.TestFramework;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
using NexusMods.StandardGameLocators.TestHelpers.StubbedGames;
using static NexusMods.App.GarbageCollection.DataModel.Tests.FindUsedFiles.Helpers;
@@ -5,7 +5,7 @@ using NexusMods.Abstractions.Loadouts.Synchronizers;
using NexusMods.Abstractions.Settings;
using NexusMods.DataModel;
using NexusMods.Games.TestFramework;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
using NexusMods.StandardGameLocators.TestHelpers.StubbedGames;
namespace NexusMods.App.GarbageCollection.DataModel.Tests;
@@ -7,7 +7,7 @@ using NexusMods.Abstractions.IO.StreamFactories;
using NexusMods.App.GarbageCollection.Nx;
using NexusMods.Archives.Nx.Headers;
using NexusMods.DataModel;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.MnemonicDB.Abstractions;
using NexusMods.Paths;
using NexusMods.Paths.Extensions;
@@ -125,7 +125,7 @@ public class NxFileStoreUpdaterTests(IFileStore fileStore, IConnection connectio
foreach (var (fileName, content) in files)
{
var data = Encoding.UTF8.GetBytes(content);
var hash = data.AsSpan().XxHash64();
var hash = data.AsSpan().xxHash3();
fileHashes[fileName] = hash;
var entry = new ArchivedFileEntry(
@@ -2,7 +2,7 @@ using FluentAssertions;
using NexusMods.Archives.Nx.Headers;
using NexusMods.Archives.Nx.Headers.Managed;
using NexusMods.Archives.Nx.Packing;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
using NexusMods.Paths.Extensions.Nx.Extensions;
using NexusMods.Paths.Extensions.Nx.FileProviders;
@@ -3,7 +3,7 @@ using FluentAssertions;
using NexusMods.App.GarbageCollection.Errors;
using NexusMods.App.GarbageCollection.Structs;
using NexusMods.App.GarbageCollection.Tests.Helpers;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
using NexusMods.Paths;
using NexusMods.Paths.TestingHelpers;
using Xunit;
@@ -1,6 +1,5 @@
using System;
using NexusMods.App.GarbageCollection.Interfaces;
using NexusMods.Hashing.xxHash64;
using NexusMods.Hashing.xxHash3;
namespace NexusMods.App.GarbageCollection.Tests.Helpers;
internal class MockParsedHeaderState : ICanProvideFileHashes<MockFileHash>
@@ -5,85 +5,85 @@
My Mods
],
files: {
{Game}/archive/pc/mod/_1_Ves_HanakoFixedBodyNaked.archive: 0xC588BB490C66EDAB,
{Game}/archive/pc/mod/AMM_Dino_TattooFix.archive: 0x5368CCF5BBD52FA3,
{Game}/archive/pc/mod/AMM_RitaWheeler_CombatEnabler.archive: 0x05EAD3D3D528238E,
{Game}/archive/pc/mod/AMM_Songbird_BodyFix.archive: 0x2C4A7120D2B69B6C,
{Game}/archive/pc/mod/basegame_AMM_BenjaminStonePP.archive: 0x08A29A771B20E512,
{Game}/archive/pc/mod/basegame_AMM_Delamain_Fix.archive: 0x3786BC0C6FCD553F,
{Game}/archive/pc/mod/basegame_AMM_JudyBodyRevamp.archive: 0x32E4004D7050C37F,
{Game}/archive/pc/mod/basegame_AMM_LizzyIncognito.archive: 0xECC436714A6110A8,
{Game}/archive/pc/mod/basegame_AMM_MeredithXtra.archive: 0x53BC3D5D269E0175,
{Game}/archive/pc/mod/basegame_AMM_PanamBodyRevamp.archive: 0x34F29FB809841A42,
{Game}/archive/pc/mod/basegame_AMM_Props.archive: 0x339529ECAEDC65E4,
{Game}/archive/pc/mod/basegame_AMM_requirement.archive: 0xAF8B21389F9ECAE8,
{Game}/archive/pc/mod/basegame_AMM_SoundEffects.archive: 0x639F8757D9F8618C,
{Game}/archive/pc/mod/basegame_johnny_companion.archive: 0x7788BFECCE8C8F51,
{Game}/archive/pc/mod/basegame_texture_HanakoNoMakeup.archive: 0xDA08B726AB0037FC,
{Game}/archive/pc/mod/LoadBegone2-Checkpoints.archive: 0xD499E8487941C52D,
{Game}/archive/pc/mod/LoadBegone2-NoIntroVideo.archive: 0x1319F3BC56E092D7,
{Game}/archive/pc/mod/LoadBegone2.archive: 0x29510DFFE2455103,
{Game}/archive/pc/mod/PinkyDude_ANIM_FacialExpressions_FemaleV.archive: 0x3DABE42331827AC7,
{Game}/archive/pc/mod/PinkyDude_ANIM_FacialExpressions_MaleV.archive: 0xDEAB6BBB6694D015,
{Game}/bin/x64/global.ini: 0xD5754D5806682A30,
{Game}/bin/x64/plugins/cyber_engine_tweaks.asi: 0x7129F953090438D2,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/materialdesignicons.ttf: 0xB33CCF64F048E8F8,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSans-Regular.ttf: 0xC983F2F034D254C7,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansJP-Regular.otf: 0x8F79B5D43AB6C157,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansKR-Regular.otf: 0xCC1EB30F1A1F30C8,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansMono-Regular.ttf: 0xD2B114D5F2BEC781,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansSC-Regular.otf: 0x3FEE1A7EC5FF1B6B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansTC-Regular.otf: 0x6CD62E355A8D6F23,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansThai-Regular.ttf: 0xD3DC79DD1634C732,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/API.lua: 0x393DAA6D01ABD899,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Appearances/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Entities/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Poses/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Props/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/credits.lua: 0x41B4B9109960802D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/db.sqlite3: 0xA9AF4B148096747D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/Cron.lua: 0x9FC9344DBF9654EA,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/GameSession.lua: 0x5641B794D782DFC9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/GameSettings.lua: 0xA28DDD351BB4A1B9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/Inspect.lua: 0xF91D0AFFD431B0C2,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/init.lua: 0xF30218A1BFE88CD1,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/en_US.lua: 0xDA86D687FA1D5C79,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/tr_TR.lua: 0x946D623D0F07D902,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/zh_CN.lua: 0xE157314997BFD755,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/anims.lua: 0xE48CF7DF70419BE8,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/camera.lua: 0x8030BA34D59692D9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/director.lua: 0x32EBDC5A145D5EEA,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/entity.lua: 0x7DACB3CA5EDF7204,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/light.lua: 0x36D9ED6A876DC78F,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/props.lua: 0xCDC334C4251B6A88,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/scan.lua: 0x91A9B6F036C70540,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/spawn.lua: 0x33C5DF0C0E9DDF66,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/swap.lua: 0xCA13E396E97ABDF6,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/tools.lua: 0xA1B463F8189C1D3B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/util.lua: 0xBA966763F180016D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Computer Blue.json: 0xB253CD9C863A7F69,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Cyberpunk.json: 0xAD5D2AAF7E2CCE65,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Default.json: 0xE1FECA364214DBA0,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Deus Ex.json: 0xA4F46BC24B8F6A9C,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/editor.lua: 0xF608F3D16BF05122,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Midori.json: 0x52ED89E6FCDAF9BD,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Original.json: 0xDA67548CAB357DBF,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Purpura.json: 0xED9B39B29880538E,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Silverhand.json: 0xEBF0E79EF045F815,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/ui.lua: 0x1C1921A370BE8C12,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/update_notes.lua: 0xA6521A41DB00D371,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Decor/Backup/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Decor/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Locations/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Scripts/Judy and Nibbles - Mansion.json: 0x8B7A040278F20B11,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Themes/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/IconGlyphs/icons.lua: 0xB8E0894F553C73D2,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/json.lua: 0x17107623E9572858,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/LICENSE: 0x112E445C98535EB9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/README.md: 0x4844644F5CB43AD8,
{Game}/bin/x64/plugins/cyber_engine_tweaks/ThirdParty_LICENSES: 0x6BD4B3565C657311,
{Game}/bin/x64/plugins/cyber_engine_tweaks/tweakdb/tweakdbstr.kark: 0x64BA2A8A217FC8F9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/tweakdb/usedhashes.kark: 0x0451A423C907AC1B,
{Game}/bin/x64/version.dll: 0x2D196A004820D7BB
{Game}/archive/pc/mod/_1_Ves_HanakoFixedBodyNaked.archive: 0xBB5F35096990DEBD,
{Game}/archive/pc/mod/AMM_Dino_TattooFix.archive: 0x1D13EF6635D57EDE,
{Game}/archive/pc/mod/AMM_RitaWheeler_CombatEnabler.archive: 0x8CBF54A91B28B524,
{Game}/archive/pc/mod/AMM_Songbird_BodyFix.archive: 0x3189C6C435A869A0,
{Game}/archive/pc/mod/basegame_AMM_BenjaminStonePP.archive: 0xB1A1C3A5387CC01E,
{Game}/archive/pc/mod/basegame_AMM_Delamain_Fix.archive: 0xD7927551B67E68AE,
{Game}/archive/pc/mod/basegame_AMM_JudyBodyRevamp.archive: 0x4CA1826BA1685FCC,
{Game}/archive/pc/mod/basegame_AMM_LizzyIncognito.archive: 0xADF392AFDE79C961,
{Game}/archive/pc/mod/basegame_AMM_MeredithXtra.archive: 0x05D34333864E1307,
{Game}/archive/pc/mod/basegame_AMM_PanamBodyRevamp.archive: 0x6425BF418B3C16D8,
{Game}/archive/pc/mod/basegame_AMM_Props.archive: 0x14891A7910BC8983,
{Game}/archive/pc/mod/basegame_AMM_requirement.archive: 0xA8CEDFD5D46811BB,
{Game}/archive/pc/mod/basegame_AMM_SoundEffects.archive: 0x72BB4A815690C128,
{Game}/archive/pc/mod/basegame_johnny_companion.archive: 0x24C9E2AB595AD674,
{Game}/archive/pc/mod/basegame_texture_HanakoNoMakeup.archive: 0xCC74158AC3676C96,
{Game}/archive/pc/mod/LoadBegone2-Checkpoints.archive: 0x8AC3E1E0A1E0C750,
{Game}/archive/pc/mod/LoadBegone2-NoIntroVideo.archive: 0x5099B3BA724BCB7F,
{Game}/archive/pc/mod/LoadBegone2.archive: 0x81EC278CDBFEEF4C,
{Game}/archive/pc/mod/PinkyDude_ANIM_FacialExpressions_FemaleV.archive: 0xE0EBCDE19E41AFBB,
{Game}/archive/pc/mod/PinkyDude_ANIM_FacialExpressions_MaleV.archive: 0xFF1DE5E3A461CFC1,
{Game}/bin/x64/global.ini: 0xB22A6D4E2D34E07F,
{Game}/bin/x64/plugins/cyber_engine_tweaks.asi: 0xC96916A428DF153E,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/materialdesignicons.ttf: 0xE51054EFE50C90F7,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSans-Regular.ttf: 0x51FAB10D52D8AC2A,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansJP-Regular.otf: 0x62923066950CC93D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansKR-Regular.otf: 0x6A56DCD0357B68DD,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansMono-Regular.ttf: 0xE9EAEBF0C477EB65,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansSC-Regular.otf: 0x255F1F653A417F73,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansTC-Regular.otf: 0x2DD3463A6829EB72,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansThai-Regular.ttf: 0x2363F66B2B12ADEE,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/API.lua: 0x036EE6E2DBDF9A6E,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Appearances/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Entities/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Poses/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Props/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/credits.lua: 0xC760E3BA4E60D83B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/db.sqlite3: 0x1C00C2F57AD6B0A3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/Cron.lua: 0x5A53BE3BEDE7DE9B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/GameSession.lua: 0x455AEAF7EC3FEB64,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/GameSettings.lua: 0x0723E902C7C7E59D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/Inspect.lua: 0xFFEC432FF2204461,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/init.lua: 0x21B416CA500935DF,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/en_US.lua: 0xEFE66C695C24D634,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/tr_TR.lua: 0x64707D9DDC8637B0,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/zh_CN.lua: 0xDB31B3F65D522F42,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/anims.lua: 0x595E3C6A7B788058,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/camera.lua: 0x4FB93DDC51A562CF,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/director.lua: 0xFFC7ECEDFD1F5344,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/entity.lua: 0xBEDF6CE3220862D3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/light.lua: 0x9D7F318534D0BC2F,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/props.lua: 0x681408A9F4BC30EA,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/scan.lua: 0x56F0E0A033AF62C3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/spawn.lua: 0x4ADDF13907B62BEC,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/swap.lua: 0xCFFB5DF9AB293EBB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/tools.lua: 0x968E7EA10BE89073,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/util.lua: 0x6F9C3B854B0BD42D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Computer Blue.json: 0xB12B62417FB5B162,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Cyberpunk.json: 0xF38D7D9A556A5E15,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Default.json: 0x04E09F3816AB8021,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Deus Ex.json: 0x9772C191263CB5FA,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/editor.lua: 0xF774606BA78569BC,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Midori.json: 0xB60DEFB058518B9F,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Original.json: 0x58FDFDA3FB499B6A,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Purpura.json: 0xD334462D20ADA9C6,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Silverhand.json: 0x6E9B2A2685C22B64,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/ui.lua: 0x9918D8611006D446,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/update_notes.lua: 0x217A38DBC4D61457,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Decor/Backup/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Decor/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Locations/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Scripts/Judy and Nibbles - Mansion.json: 0x70A567A5405976A1,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Themes/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/IconGlyphs/icons.lua: 0x83670A28392FA2B2,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/json.lua: 0xF61FD8C77D020E6C,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/LICENSE: 0x564B031D3D73FECD,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/README.md: 0x681672917A36119B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/ThirdParty_LICENSES: 0xB62A1399EF1C38F1,
{Game}/bin/x64/plugins/cyber_engine_tweaks/tweakdb/tweakdbstr.kark: 0x0CE4F15227C0D8AB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/tweakdb/usedhashes.kark: 0xD8E8A1699A4B7739,
{Game}/bin/x64/version.dll: 0xD0648A2A863844C3
}
}
@@ -5,86 +5,86 @@
My Mods
],
files: {
{Game}/archive/pc/mod/_1_Ves_HanakoFixedBodyNaked.archive: 0xC588BB490C66EDAB,
{Game}/archive/pc/mod/AMM_Dino_TattooFix.archive: 0x5368CCF5BBD52FA3,
{Game}/archive/pc/mod/AMM_RitaWheeler_CombatEnabler.archive: 0x05EAD3D3D528238E,
{Game}/archive/pc/mod/AMM_Songbird_BodyFix.archive: 0x2C4A7120D2B69B6C,
{Game}/archive/pc/mod/basegame_AMM_BenjaminStonePP.archive: 0x08A29A771B20E512,
{Game}/archive/pc/mod/basegame_AMM_Delamain_Fix.archive: 0x3786BC0C6FCD553F,
{Game}/archive/pc/mod/basegame_AMM_JudyBodyRevamp.archive: 0x32E4004D7050C37F,
{Game}/archive/pc/mod/basegame_AMM_LizzyIncognito.archive: 0xECC436714A6110A8,
{Game}/archive/pc/mod/basegame_AMM_MeredithXtra.archive: 0x53BC3D5D269E0175,
{Game}/archive/pc/mod/basegame_AMM_PanamBodyRevamp.archive: 0x34F29FB809841A42,
{Game}/archive/pc/mod/basegame_AMM_Props.archive: 0x339529ECAEDC65E4,
{Game}/archive/pc/mod/basegame_AMM_requirement.archive: 0xAF8B21389F9ECAE8,
{Game}/archive/pc/mod/basegame_AMM_SoundEffects.archive: 0x639F8757D9F8618C,
{Game}/archive/pc/mod/basegame_johnny_companion.archive: 0x7788BFECCE8C8F51,
{Game}/archive/pc/mod/basegame_mod_Sweaty25_07.archive: 0xE25B8749336E0F56,
{Game}/archive/pc/mod/basegame_texture_HanakoNoMakeup.archive: 0xDA08B726AB0037FC,
{Game}/archive/pc/mod/LoadBegone2-Checkpoints.archive: 0xD499E8487941C52D,
{Game}/archive/pc/mod/LoadBegone2-NoIntroVideo.archive: 0x1319F3BC56E092D7,
{Game}/archive/pc/mod/LoadBegone2.archive: 0x29510DFFE2455103,
{Game}/archive/pc/mod/PinkyDude_ANIM_FacialExpressions_FemaleV.archive: 0x3DABE42331827AC7,
{Game}/archive/pc/mod/PinkyDude_ANIM_FacialExpressions_MaleV.archive: 0xDEAB6BBB6694D015,
{Game}/bin/x64/global.ini: 0xD5754D5806682A30,
{Game}/bin/x64/plugins/cyber_engine_tweaks.asi: 0x7129F953090438D2,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/materialdesignicons.ttf: 0xB33CCF64F048E8F8,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSans-Regular.ttf: 0xC983F2F034D254C7,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansJP-Regular.otf: 0x8F79B5D43AB6C157,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansKR-Regular.otf: 0xCC1EB30F1A1F30C8,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansMono-Regular.ttf: 0xD2B114D5F2BEC781,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansSC-Regular.otf: 0x3FEE1A7EC5FF1B6B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansTC-Regular.otf: 0x6CD62E355A8D6F23,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansThai-Regular.ttf: 0xD3DC79DD1634C732,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/API.lua: 0x393DAA6D01ABD899,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Appearances/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Entities/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Poses/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Props/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/credits.lua: 0x41B4B9109960802D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/db.sqlite3: 0xA9AF4B148096747D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/Cron.lua: 0x9FC9344DBF9654EA,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/GameSession.lua: 0x5641B794D782DFC9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/GameSettings.lua: 0xA28DDD351BB4A1B9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/Inspect.lua: 0xF91D0AFFD431B0C2,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/init.lua: 0xF30218A1BFE88CD1,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/en_US.lua: 0xDA86D687FA1D5C79,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/tr_TR.lua: 0x946D623D0F07D902,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/zh_CN.lua: 0xE157314997BFD755,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/anims.lua: 0xE48CF7DF70419BE8,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/camera.lua: 0x8030BA34D59692D9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/director.lua: 0x32EBDC5A145D5EEA,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/entity.lua: 0x7DACB3CA5EDF7204,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/light.lua: 0x36D9ED6A876DC78F,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/props.lua: 0xCDC334C4251B6A88,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/scan.lua: 0x91A9B6F036C70540,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/spawn.lua: 0x33C5DF0C0E9DDF66,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/swap.lua: 0xCA13E396E97ABDF6,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/tools.lua: 0xA1B463F8189C1D3B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/util.lua: 0xBA966763F180016D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Computer Blue.json: 0xB253CD9C863A7F69,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Cyberpunk.json: 0xAD5D2AAF7E2CCE65,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Default.json: 0xE1FECA364214DBA0,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Deus Ex.json: 0xA4F46BC24B8F6A9C,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/editor.lua: 0xF608F3D16BF05122,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Midori.json: 0x52ED89E6FCDAF9BD,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Original.json: 0xDA67548CAB357DBF,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Purpura.json: 0xED9B39B29880538E,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Silverhand.json: 0xEBF0E79EF045F815,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/ui.lua: 0x1C1921A370BE8C12,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/update_notes.lua: 0x30038374A2F5410C,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Decor/Backup/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Decor/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Locations/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Scripts/Judy and Nibbles - Mansion.json: 0x8B7A040278F20B11,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Themes/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/IconGlyphs/icons.lua: 0xB8E0894F553C73D2,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/json.lua: 0x17107623E9572858,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/LICENSE: 0x112E445C98535EB9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/README.md: 0x4844644F5CB43AD8,
{Game}/bin/x64/plugins/cyber_engine_tweaks/ThirdParty_LICENSES: 0x6BD4B3565C657311,
{Game}/bin/x64/plugins/cyber_engine_tweaks/tweakdb/tweakdbstr.kark: 0x64BA2A8A217FC8F9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/tweakdb/usedhashes.kark: 0x0451A423C907AC1B,
{Game}/bin/x64/version.dll: 0x2D196A004820D7BB
{Game}/archive/pc/mod/_1_Ves_HanakoFixedBodyNaked.archive: 0xBB5F35096990DEBD,
{Game}/archive/pc/mod/AMM_Dino_TattooFix.archive: 0x1D13EF6635D57EDE,
{Game}/archive/pc/mod/AMM_RitaWheeler_CombatEnabler.archive: 0x8CBF54A91B28B524,
{Game}/archive/pc/mod/AMM_Songbird_BodyFix.archive: 0x3189C6C435A869A0,
{Game}/archive/pc/mod/basegame_AMM_BenjaminStonePP.archive: 0xB1A1C3A5387CC01E,
{Game}/archive/pc/mod/basegame_AMM_Delamain_Fix.archive: 0xD7927551B67E68AE,
{Game}/archive/pc/mod/basegame_AMM_JudyBodyRevamp.archive: 0x4CA1826BA1685FCC,
{Game}/archive/pc/mod/basegame_AMM_LizzyIncognito.archive: 0xADF392AFDE79C961,
{Game}/archive/pc/mod/basegame_AMM_MeredithXtra.archive: 0x05D34333864E1307,
{Game}/archive/pc/mod/basegame_AMM_PanamBodyRevamp.archive: 0x6425BF418B3C16D8,
{Game}/archive/pc/mod/basegame_AMM_Props.archive: 0x14891A7910BC8983,
{Game}/archive/pc/mod/basegame_AMM_requirement.archive: 0xA8CEDFD5D46811BB,
{Game}/archive/pc/mod/basegame_AMM_SoundEffects.archive: 0x72BB4A815690C128,
{Game}/archive/pc/mod/basegame_johnny_companion.archive: 0x24C9E2AB595AD674,
{Game}/archive/pc/mod/basegame_mod_Sweaty25_07.archive: 0x777B30B04FD846BE,
{Game}/archive/pc/mod/basegame_texture_HanakoNoMakeup.archive: 0xCC74158AC3676C96,
{Game}/archive/pc/mod/LoadBegone2-Checkpoints.archive: 0x8AC3E1E0A1E0C750,
{Game}/archive/pc/mod/LoadBegone2-NoIntroVideo.archive: 0x5099B3BA724BCB7F,
{Game}/archive/pc/mod/LoadBegone2.archive: 0x81EC278CDBFEEF4C,
{Game}/archive/pc/mod/PinkyDude_ANIM_FacialExpressions_FemaleV.archive: 0xE0EBCDE19E41AFBB,
{Game}/archive/pc/mod/PinkyDude_ANIM_FacialExpressions_MaleV.archive: 0xFF1DE5E3A461CFC1,
{Game}/bin/x64/global.ini: 0xB22A6D4E2D34E07F,
{Game}/bin/x64/plugins/cyber_engine_tweaks.asi: 0xC96916A428DF153E,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/materialdesignicons.ttf: 0xE51054EFE50C90F7,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSans-Regular.ttf: 0x51FAB10D52D8AC2A,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansJP-Regular.otf: 0x62923066950CC93D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansKR-Regular.otf: 0x6A56DCD0357B68DD,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansMono-Regular.ttf: 0xE9EAEBF0C477EB65,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansSC-Regular.otf: 0x255F1F653A417F73,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansTC-Regular.otf: 0x2DD3463A6829EB72,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansThai-Regular.ttf: 0x2363F66B2B12ADEE,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/API.lua: 0x036EE6E2DBDF9A6E,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Appearances/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Entities/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Poses/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Props/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/credits.lua: 0xC760E3BA4E60D83B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/db.sqlite3: 0x1C00C2F57AD6B0A3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/Cron.lua: 0x5A53BE3BEDE7DE9B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/GameSession.lua: 0x455AEAF7EC3FEB64,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/GameSettings.lua: 0x0723E902C7C7E59D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/Inspect.lua: 0xFFEC432FF2204461,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/init.lua: 0x21B416CA500935DF,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/en_US.lua: 0xEFE66C695C24D634,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/tr_TR.lua: 0x64707D9DDC8637B0,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/zh_CN.lua: 0xDB31B3F65D522F42,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/anims.lua: 0x595E3C6A7B788058,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/camera.lua: 0x4FB93DDC51A562CF,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/director.lua: 0xFFC7ECEDFD1F5344,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/entity.lua: 0xBEDF6CE3220862D3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/light.lua: 0x9D7F318534D0BC2F,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/props.lua: 0x681408A9F4BC30EA,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/scan.lua: 0x56F0E0A033AF62C3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/spawn.lua: 0x4ADDF13907B62BEC,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/swap.lua: 0xCFFB5DF9AB293EBB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/tools.lua: 0x968E7EA10BE89073,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/util.lua: 0x6F9C3B854B0BD42D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Computer Blue.json: 0xB12B62417FB5B162,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Cyberpunk.json: 0xF38D7D9A556A5E15,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Default.json: 0x04E09F3816AB8021,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Deus Ex.json: 0x9772C191263CB5FA,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/editor.lua: 0xF774606BA78569BC,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Midori.json: 0xB60DEFB058518B9F,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Original.json: 0x58FDFDA3FB499B6A,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Purpura.json: 0xD334462D20ADA9C6,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Silverhand.json: 0x6E9B2A2685C22B64,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/ui.lua: 0x9918D8611006D446,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/update_notes.lua: 0xE2C526B0268E15DD,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Decor/Backup/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Decor/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Locations/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Scripts/Judy and Nibbles - Mansion.json: 0x70A567A5405976A1,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Themes/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/IconGlyphs/icons.lua: 0x83670A28392FA2B2,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/json.lua: 0xF61FD8C77D020E6C,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/LICENSE: 0x564B031D3D73FECD,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/README.md: 0x681672917A36119B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/ThirdParty_LICENSES: 0xB62A1399EF1C38F1,
{Game}/bin/x64/plugins/cyber_engine_tweaks/tweakdb/tweakdbstr.kark: 0x0CE4F15227C0D8AB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/tweakdb/usedhashes.kark: 0xD8E8A1699A4B7739,
{Game}/bin/x64/version.dll: 0xD0648A2A863844C3
}
}
@@ -5,87 +5,87 @@
My Mods
],
files: {
{Game}/archive/pc/mod/_1_Ves_HanakoFixedBodyNaked.archive: 0xC588BB490C66EDAB,
{Game}/archive/pc/mod/AMM_Dino_TattooFix.archive: 0x5368CCF5BBD52FA3,
{Game}/archive/pc/mod/AMM_RitaWheeler_CombatEnabler.archive: 0x05EAD3D3D528238E,
{Game}/archive/pc/mod/AMM_Songbird_BodyFix.archive: 0x2C4A7120D2B69B6C,
{Game}/archive/pc/mod/basegame_AMM_BenjaminStonePP.archive: 0x08A29A771B20E512,
{Game}/archive/pc/mod/basegame_AMM_Delamain_Fix.archive: 0x3786BC0C6FCD553F,
{Game}/archive/pc/mod/basegame_AMM_JudyBodyRevamp.archive: 0x32E4004D7050C37F,
{Game}/archive/pc/mod/basegame_AMM_LizzyIncognito.archive: 0xECC436714A6110A8,
{Game}/archive/pc/mod/basegame_AMM_MeredithXtra.archive: 0x53BC3D5D269E0175,
{Game}/archive/pc/mod/basegame_AMM_PanamBodyRevamp.archive: 0x34F29FB809841A42,
{Game}/archive/pc/mod/basegame_AMM_Props.archive: 0x339529ECAEDC65E4,
{Game}/archive/pc/mod/basegame_AMM_requirement.archive: 0xAF8B21389F9ECAE8,
{Game}/archive/pc/mod/basegame_AMM_SoundEffects.archive: 0x639F8757D9F8618C,
{Game}/archive/pc/mod/basegame_johnny_companion.archive: 0x7788BFECCE8C8F51,
{Game}/archive/pc/mod/basegame_mod_Sweaty25_07.archive: 0xE25B8749336E0F56,
{Game}/archive/pc/mod/basegame_texture_HanakoNoMakeup.archive: 0xDA08B726AB0037FC,
{Game}/archive/pc/mod/bundled_image.png.png: 0xDDA21A1E5462C4D5,
{Game}/archive/pc/mod/LoadBegone2-Checkpoints.archive: 0xD499E8487941C52D,
{Game}/archive/pc/mod/LoadBegone2-NoIntroVideo.archive: 0x1319F3BC56E092D7,
{Game}/archive/pc/mod/LoadBegone2.archive: 0x29510DFFE2455103,
{Game}/archive/pc/mod/PinkyDude_ANIM_FacialExpressions_FemaleV.archive: 0x3DABE42331827AC7,
{Game}/archive/pc/mod/PinkyDude_ANIM_FacialExpressions_MaleV.archive: 0xDEAB6BBB6694D015,
{Game}/bin/x64/global.ini: 0xD5754D5806682A30,
{Game}/bin/x64/plugins/cyber_engine_tweaks.asi: 0x7129F953090438D2,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/materialdesignicons.ttf: 0xB33CCF64F048E8F8,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSans-Regular.ttf: 0xC983F2F034D254C7,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansJP-Regular.otf: 0x8F79B5D43AB6C157,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansKR-Regular.otf: 0xCC1EB30F1A1F30C8,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansMono-Regular.ttf: 0xD2B114D5F2BEC781,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansSC-Regular.otf: 0x3FEE1A7EC5FF1B6B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansTC-Regular.otf: 0x6CD62E355A8D6F23,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansThai-Regular.ttf: 0xD3DC79DD1634C732,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/API.lua: 0x393DAA6D01ABD899,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Appearances/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Entities/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Poses/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Props/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/credits.lua: 0x41B4B9109960802D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/db.sqlite3: 0xA9AF4B148096747D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/Cron.lua: 0x9FC9344DBF9654EA,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/GameSession.lua: 0x5641B794D782DFC9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/GameSettings.lua: 0xA28DDD351BB4A1B9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/Inspect.lua: 0xF91D0AFFD431B0C2,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/init.lua: 0xF30218A1BFE88CD1,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/en_US.lua: 0xDA86D687FA1D5C79,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/tr_TR.lua: 0x946D623D0F07D902,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/zh_CN.lua: 0xE157314997BFD755,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/anims.lua: 0xE48CF7DF70419BE8,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/camera.lua: 0x8030BA34D59692D9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/director.lua: 0x32EBDC5A145D5EEA,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/entity.lua: 0x7DACB3CA5EDF7204,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/light.lua: 0x36D9ED6A876DC78F,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/props.lua: 0xCDC334C4251B6A88,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/scan.lua: 0x91A9B6F036C70540,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/spawn.lua: 0x33C5DF0C0E9DDF66,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/swap.lua: 0xCA13E396E97ABDF6,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/tools.lua: 0xA1B463F8189C1D3B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/util.lua: 0xBA966763F180016D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Computer Blue.json: 0xB253CD9C863A7F69,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Cyberpunk.json: 0xAD5D2AAF7E2CCE65,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Default.json: 0xE1FECA364214DBA0,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Deus Ex.json: 0xA4F46BC24B8F6A9C,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/editor.lua: 0xF608F3D16BF05122,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Midori.json: 0x52ED89E6FCDAF9BD,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Original.json: 0xDA67548CAB357DBF,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Purpura.json: 0xED9B39B29880538E,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Silverhand.json: 0xEBF0E79EF045F815,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/ui.lua: 0x1C1921A370BE8C12,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/update_notes.lua: 0x30038374A2F5410C,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Decor/Backup/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Decor/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Locations/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Scripts/Judy and Nibbles - Mansion.json: 0x8B7A040278F20B11,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Themes/vortex_needs_this.txt: 0xC9B5C3648CFA79DB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/IconGlyphs/icons.lua: 0xB8E0894F553C73D2,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/json.lua: 0x17107623E9572858,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/LICENSE: 0x112E445C98535EB9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/README.md: 0x4844644F5CB43AD8,
{Game}/bin/x64/plugins/cyber_engine_tweaks/ThirdParty_LICENSES: 0x6BD4B3565C657311,
{Game}/bin/x64/plugins/cyber_engine_tweaks/tweakdb/tweakdbstr.kark: 0x64BA2A8A217FC8F9,
{Game}/bin/x64/plugins/cyber_engine_tweaks/tweakdb/usedhashes.kark: 0x0451A423C907AC1B,
{Game}/bin/x64/version.dll: 0x2D196A004820D7BB
{Game}/archive/pc/mod/_1_Ves_HanakoFixedBodyNaked.archive: 0xBB5F35096990DEBD,
{Game}/archive/pc/mod/AMM_Dino_TattooFix.archive: 0x1D13EF6635D57EDE,
{Game}/archive/pc/mod/AMM_RitaWheeler_CombatEnabler.archive: 0x8CBF54A91B28B524,
{Game}/archive/pc/mod/AMM_Songbird_BodyFix.archive: 0x3189C6C435A869A0,
{Game}/archive/pc/mod/basegame_AMM_BenjaminStonePP.archive: 0xB1A1C3A5387CC01E,
{Game}/archive/pc/mod/basegame_AMM_Delamain_Fix.archive: 0xD7927551B67E68AE,
{Game}/archive/pc/mod/basegame_AMM_JudyBodyRevamp.archive: 0x4CA1826BA1685FCC,
{Game}/archive/pc/mod/basegame_AMM_LizzyIncognito.archive: 0xADF392AFDE79C961,
{Game}/archive/pc/mod/basegame_AMM_MeredithXtra.archive: 0x05D34333864E1307,
{Game}/archive/pc/mod/basegame_AMM_PanamBodyRevamp.archive: 0x6425BF418B3C16D8,
{Game}/archive/pc/mod/basegame_AMM_Props.archive: 0x14891A7910BC8983,
{Game}/archive/pc/mod/basegame_AMM_requirement.archive: 0xA8CEDFD5D46811BB,
{Game}/archive/pc/mod/basegame_AMM_SoundEffects.archive: 0x72BB4A815690C128,
{Game}/archive/pc/mod/basegame_johnny_companion.archive: 0x24C9E2AB595AD674,
{Game}/archive/pc/mod/basegame_mod_Sweaty25_07.archive: 0x777B30B04FD846BE,
{Game}/archive/pc/mod/basegame_texture_HanakoNoMakeup.archive: 0xCC74158AC3676C96,
{Game}/archive/pc/mod/bundled_image.png.png: 0x5BA312B604217419,
{Game}/archive/pc/mod/LoadBegone2-Checkpoints.archive: 0x8AC3E1E0A1E0C750,
{Game}/archive/pc/mod/LoadBegone2-NoIntroVideo.archive: 0x5099B3BA724BCB7F,
{Game}/archive/pc/mod/LoadBegone2.archive: 0x81EC278CDBFEEF4C,
{Game}/archive/pc/mod/PinkyDude_ANIM_FacialExpressions_FemaleV.archive: 0xE0EBCDE19E41AFBB,
{Game}/archive/pc/mod/PinkyDude_ANIM_FacialExpressions_MaleV.archive: 0xFF1DE5E3A461CFC1,
{Game}/bin/x64/global.ini: 0xB22A6D4E2D34E07F,
{Game}/bin/x64/plugins/cyber_engine_tweaks.asi: 0xC96916A428DF153E,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/materialdesignicons.ttf: 0xE51054EFE50C90F7,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSans-Regular.ttf: 0x51FAB10D52D8AC2A,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansJP-Regular.otf: 0x62923066950CC93D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansKR-Regular.otf: 0x6A56DCD0357B68DD,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansMono-Regular.ttf: 0xE9EAEBF0C477EB65,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansSC-Regular.otf: 0x255F1F653A417F73,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansTC-Regular.otf: 0x2DD3463A6829EB72,
{Game}/bin/x64/plugins/cyber_engine_tweaks/fonts/NotoSansThai-Regular.ttf: 0x2363F66B2B12ADEE,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/API.lua: 0x036EE6E2DBDF9A6E,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Appearances/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Entities/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Poses/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Collabs/Custom Props/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/credits.lua: 0xC760E3BA4E60D83B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/db.sqlite3: 0x1C00C2F57AD6B0A3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/Cron.lua: 0x5A53BE3BEDE7DE9B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/GameSession.lua: 0x455AEAF7EC3FEB64,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/GameSettings.lua: 0x0723E902C7C7E59D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/External/Inspect.lua: 0xFFEC432FF2204461,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/init.lua: 0x21B416CA500935DF,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/en_US.lua: 0xEFE66C695C24D634,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/tr_TR.lua: 0x64707D9DDC8637B0,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Localization/zh_CN.lua: 0xDB31B3F65D522F42,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/anims.lua: 0x595E3C6A7B788058,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/camera.lua: 0x4FB93DDC51A562CF,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/director.lua: 0xFFC7ECEDFD1F5344,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/entity.lua: 0xBEDF6CE3220862D3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/light.lua: 0x9D7F318534D0BC2F,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/props.lua: 0x681408A9F4BC30EA,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/scan.lua: 0x56F0E0A033AF62C3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/spawn.lua: 0x4ADDF13907B62BEC,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/swap.lua: 0xCFFB5DF9AB293EBB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/tools.lua: 0x968E7EA10BE89073,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Modules/util.lua: 0x6F9C3B854B0BD42D,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Computer Blue.json: 0xB12B62417FB5B162,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Cyberpunk.json: 0xF38D7D9A556A5E15,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Default.json: 0x04E09F3816AB8021,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Deus Ex.json: 0x9772C191263CB5FA,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/editor.lua: 0xF774606BA78569BC,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Midori.json: 0xB60DEFB058518B9F,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Original.json: 0x58FDFDA3FB499B6A,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Purpura.json: 0xD334462D20ADA9C6,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/Silverhand.json: 0x6E9B2A2685C22B64,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/Themes/ui.lua: 0x9918D8611006D446,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/update_notes.lua: 0xE2C526B0268E15DD,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Decor/Backup/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Decor/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Locations/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Scripts/Judy and Nibbles - Mansion.json: 0x70A567A5405976A1,
{Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceMenuMod/User/Themes/vortex_needs_this.txt: 0x7E95CD44BB7CBFC3,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/IconGlyphs/icons.lua: 0x83670A28392FA2B2,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/json.lua: 0xF61FD8C77D020E6C,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/LICENSE: 0x564B031D3D73FECD,
{Game}/bin/x64/plugins/cyber_engine_tweaks/scripts/json/README.md: 0x681672917A36119B,
{Game}/bin/x64/plugins/cyber_engine_tweaks/ThirdParty_LICENSES: 0xB62A1399EF1C38F1,
{Game}/bin/x64/plugins/cyber_engine_tweaks/tweakdb/tweakdbstr.kark: 0x0CE4F15227C0D8AB,
{Game}/bin/x64/plugins/cyber_engine_tweaks/tweakdb/usedhashes.kark: 0xD8E8A1699A4B7739,
{Game}/bin/x64/version.dll: 0xD0648A2A863844C3
}
}
@@ -8,14 +8,7 @@
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="coverlet.collector"/>
<PackageReference Include="Microsoft.NET.Test.Sdk"/>
<PackageReference Include="xunit"/>
<PackageReference Include="xunit.runner.visualstudio"/>
</ItemGroup>
<ItemGroup>
<Using Include="Xunit"/>
</ItemGroup>
@@ -23,15 +23,15 @@ Added a new file to the game and synced it.
### Last Synced State - (1) - Tx:10000000000000B
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/newFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:10000000000000B |
| (EId:200000000000001, Game, bin/newFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:10000000000000B |
### Current State - (1) - Tx:10000000000000B
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/newFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:10000000000000B |
| (EId:200000000000001, Game, bin/newFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:10000000000000B |
### Loadout A - (1)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000003, Game, bin/newFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:10000000000000B |
| (EId:200000000000003, Game, bin/newFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:10000000000000B |
@@ -43,15 +43,15 @@ Updated the new file file and synced it.
### Last Synced State - (1) - Tx:10000000000000E
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/newFile.txt) | 0xCBF180132E60CE25 | 21 B | Tx:10000000000000E |
| (EId:200000000000001, Game, bin/newFile.txt) | 0xB4E7270703F5F646 | 21 B | Tx:10000000000000E |
### Current State - (1) - Tx:10000000000000E
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/newFile.txt) | 0xCBF180132E60CE25 | 21 B | Tx:10000000000000E |
| (EId:200000000000001, Game, bin/newFile.txt) | 0xB4E7270703F5F646 | 21 B | Tx:10000000000000E |
### Loadout A - (1)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000003, Game, bin/newFile.txt) | 0xCBF180132E60CE25 | 21 B | Tx:10000000000000E |
| (EId:200000000000003, Game, bin/newFile.txt) | 0xB4E7270703F5F646 | 21 B | Tx:10000000000000E |
@@ -3,11 +3,11 @@ The initial state of the game folder should contain the game files as they were
### Initial State - (1) - Tx:100000000000005
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Current State - (1) - Tx:100000000000005
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
@@ -16,19 +16,19 @@ A new loadout has been created and has been synchronized, so the 'Last Synced St
### Initial State - (1) - Tx:100000000000005
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Last Synced State - (1) - Tx:100000000000008
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Current State - (1) - Tx:100000000000008
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Loadout A - (1)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000007 |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000007 |
@@ -37,20 +37,20 @@ New files have been added to the game folder by the user or the game, but the lo
### Initial State - (1) - Tx:100000000000005
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Last Synced State - (1) - Tx:100000000000008
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Current State - (2) - Tx:100000000000009
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:100000000000009 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:100000000000009 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Loadout A - (1)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000007 |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000007 |
@@ -59,22 +59,22 @@ After the loadout has been synchronized, the new file should be added to the loa
### Initial State - (1) - Tx:100000000000005
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Last Synced State - (2) - Tx:10000000000000B
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:10000000000000B |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:10000000000000B |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Current State - (2) - Tx:10000000000000B
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:10000000000000B |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:10000000000000B |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Loadout A - (2)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000005, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:10000000000000B |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000007 |
| (EId:200000000000005, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:10000000000000B |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000007 |
@@ -83,16 +83,16 @@ At this point the loadout is deactivated, and all the files in the current state
### Initial State - (1) - Tx:100000000000005
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Current State - (1) - Tx:10000000000000D
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Loadout A - (2)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000005, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:10000000000000B |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000007 |
| (EId:200000000000005, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:10000000000000B |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000007 |
@@ -101,20 +101,20 @@ A new loadout is created, but it has not been synchronized yet. So again the 'La
### Initial State - (1) - Tx:100000000000005
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Current State - (1) - Tx:10000000000000D
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Loadout A - (2)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000005, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:10000000000000B |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000007 |
| (EId:200000000000005, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:10000000000000B |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000007 |
### Loadout B - (1)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:20000000000000D, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:10000000000000E |
| (EId:20000000000000D, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:10000000000000E |
@@ -124,24 +124,24 @@ loadout are different from the previous loadout due to the new file only being i
### Initial State - (1) - Tx:100000000000005
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Last Synced State - (1) - Tx:10000000000000F
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Current State - (1) - Tx:10000000000000F
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Loadout A - (2)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000005, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:10000000000000B |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000007 |
| (EId:200000000000005, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:10000000000000B |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000007 |
### Loadout B - (1)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:20000000000000D, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:10000000000000E |
| (EId:20000000000000D, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:10000000000000E |
@@ -150,27 +150,27 @@ A new file has been added to the game folder and B loadout has been synchronized
### Initial State - (1) - Tx:100000000000005
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Last Synced State - (2) - Tx:100000000000012
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/newFileInGameFolderB.txt) | 0x3E6AD5D9F57F8D4E | 28 B | Tx:100000000000012 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/newFileInGameFolderB.txt) | 0xC6B738DF31EA91BB | 28 B | Tx:100000000000012 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Current State - (2) - Tx:100000000000012
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/newFileInGameFolderB.txt) | 0x3E6AD5D9F57F8D4E | 28 B | Tx:100000000000012 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/newFileInGameFolderB.txt) | 0xC6B738DF31EA91BB | 28 B | Tx:100000000000012 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Loadout A - (2)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000005, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:10000000000000B |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000007 |
| (EId:200000000000005, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:10000000000000B |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000007 |
### Loadout B - (2)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:20000000000000D, Game, bin/newFileInGameFolderB.txt) | 0x3E6AD5D9F57F8D4E | 28 B | Tx:100000000000012 |
| (EId:20000000000000D, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:10000000000000E |
| (EId:20000000000000D, Game, bin/newFileInGameFolderB.txt) | 0xC6B738DF31EA91BB | 28 B | Tx:100000000000012 |
| (EId:20000000000000D, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:10000000000000E |
@@ -179,27 +179,27 @@ Now we switch back to the A loadout, and the new file should be removed from the
### Initial State - (1) - Tx:100000000000005
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Last Synced State - (2) - Tx:100000000000015
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:100000000000015 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:100000000000015 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Current State - (2) - Tx:100000000000015
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:100000000000015 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:100000000000015 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Loadout A - (2)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000005, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:10000000000000B |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000007 |
| (EId:200000000000005, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:10000000000000B |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000007 |
### Loadout B - (2)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:20000000000000D, Game, bin/newFileInGameFolderB.txt) | 0x3E6AD5D9F57F8D4E | 28 B | Tx:100000000000012 |
| (EId:20000000000000D, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:10000000000000E |
| (EId:20000000000000D, Game, bin/newFileInGameFolderB.txt) | 0xC6B738DF31EA91BB | 28 B | Tx:100000000000012 |
| (EId:20000000000000D, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:10000000000000E |
@@ -208,32 +208,32 @@ Loadout A has been copied to Loadout C, and the contents should match.
### Initial State - (1) - Tx:100000000000005
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Last Synced State - (2) - Tx:100000000000015
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:100000000000015 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:100000000000015 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Current State - (2) - Tx:100000000000015
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:100000000000015 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:100000000000015 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Loadout A - (2)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000005, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:10000000000000B |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000007 |
| (EId:200000000000005, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:10000000000000B |
| (EId:200000000000005, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000007 |
### Loadout B - (2)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:20000000000000D, Game, bin/newFileInGameFolderB.txt) | 0x3E6AD5D9F57F8D4E | 28 B | Tx:100000000000012 |
| (EId:20000000000000D, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:10000000000000E |
| (EId:20000000000000D, Game, bin/newFileInGameFolderB.txt) | 0xC6B738DF31EA91BB | 28 B | Tx:100000000000012 |
| (EId:20000000000000D, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:10000000000000E |
### Loadout C - (2)
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000015, Game, bin/newFileInGameFolderA.txt) | 0x2D489D43D46C8849 | 25 B | Tx:100000000000016 |
| (EId:200000000000015, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000016 |
| (EId:200000000000015, Game, bin/newFileInGameFolderA.txt) | 0x3FB1DBAC894B6380 | 25 B | Tx:100000000000016 |
| (EId:200000000000015, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000016 |
@@ -242,11 +242,11 @@ The loadouts have been deleted and the game folder should be back to its initial
### Initial State - (1) - Tx:100000000000005
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |
### Current State - (1) - Tx:100000000000018
| Path | Hash | Size | TxId |
| --- | --- | --- | --- |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0xA52B286A3E7F4D91 | 12 B | Tx:100000000000005 |
| (EId:200000000000001, Game, bin/originalGameFile.txt) | 0x673E3C493921A2D5 | 12 B | Tx:100000000000005 |

Some files were not shown because too many files have changed in this diff Show More