diff --git a/src/Abstractions/NexusMods.Abstractions.Installers/Extensions.cs b/src/Abstractions/NexusMods.Abstractions.Installers/Extensions.cs index c899a23a7e..2da5ae5872 100644 --- a/src/Abstractions/NexusMods.Abstractions.Installers/Extensions.cs +++ b/src/Abstractions/NexusMods.Abstractions.Installers/Extensions.cs @@ -1,6 +1,9 @@ using NexusMods.Abstractions.FileStore.Trees; using NexusMods.Abstractions.GameLocators; +using NexusMods.Abstractions.Library.Models; +using NexusMods.Abstractions.Loadouts; using NexusMods.Abstractions.Loadouts.Files; +using NexusMods.MnemonicDB.Abstractions; using NexusMods.MnemonicDB.Abstractions.Models; using NexusMods.Paths; using NexusMods.Paths.Trees; @@ -20,7 +23,7 @@ public static TempEntity ToStoredFile(this KeyedBox i { return input.ToStoredFile(to, null); } - + /// /// Creates a StoredFile from a ModFileTreeSource. /// diff --git a/src/Abstractions/NexusMods.Abstractions.Library.Installers/Extensions.cs b/src/Abstractions/NexusMods.Abstractions.Library.Installers/Extensions.cs index e8977e95d7..598a027cb2 100644 --- a/src/Abstractions/NexusMods.Abstractions.Library.Installers/Extensions.cs +++ b/src/Abstractions/NexusMods.Abstractions.Library.Installers/Extensions.cs @@ -1,8 +1,11 @@ using DynamicData.Kernel; using JetBrains.Annotations; +using NexusMods.Abstractions.GameLocators; using NexusMods.Abstractions.Library.Models; using NexusMods.Abstractions.Loadouts; using NexusMods.MnemonicDB.Abstractions; +using NexusMods.Paths; +using NexusMods.Paths.Trees; namespace NexusMods.Abstractions.Library.Installers; @@ -33,4 +36,36 @@ public static LoadoutItemGroup.New ToGroup( return group; } + + /// + /// Convert as LibraryArchiveTree node to a LoadoutFile with the given metadata + /// + public static LoadoutFile.New ToLoadoutFile( + this KeyedBox input, + LoadoutId loadoutId, + LoadoutItemGroupId parent, + ITransaction tx, + GamePath to, + Optional entityId = default) + { + var id = entityId.ValueOr(tx.TempId); + var libraryFile = input.Item.LibraryFile.Value; + + return new LoadoutFile.New(tx, id) + { + LoadoutItemWithTargetPath = new LoadoutItemWithTargetPath.New(tx, id) + { + LoadoutItem = new LoadoutItem.New(tx, id) + { + LoadoutId = loadoutId, + IsIsDisabledMarker = false, + Name = input.Item.Value.FileName, + ParentId = parent, + }, + TargetPath = to, + }, + Hash = libraryFile.Hash, + Size = libraryFile.Size, + }; + } } diff --git a/src/Abstractions/NexusMods.Abstractions.Library.Models/LibraryArchiveTree.cs b/src/Abstractions/NexusMods.Abstractions.Library.Models/LibraryArchiveTree.cs new file mode 100644 index 0000000000..ef658de464 --- /dev/null +++ b/src/Abstractions/NexusMods.Abstractions.Library.Models/LibraryArchiveTree.cs @@ -0,0 +1,128 @@ +using DynamicData.Kernel; +using NexusMods.Paths; +using NexusMods.Paths.Trees; +using NexusMods.Paths.Trees.Traits; + +namespace NexusMods.Abstractions.Library.Models; +using LibraryArchiveTreeNode = NexusMods.Paths.Trees.KeyedBox; + +/// +/// Represents a tree of files sourced from a downloaded mod. +/// +/// +/// See this for reference https://github.com/Nexus-Mods/NexusMods.Paths/blob/main/docs/Trees/Introduction.md +/// +public struct LibraryArchiveTree : + IHaveBoxedChildrenWithKey, // basic functionality + IHaveAFileOrDirectory, // for uses which want to distinguish file/directory + IHaveParent, // optimized FindSubPathsByKeyUpward + IHaveDepthInformation, // Depth info is used by some installers, and it's zero-cost to include, thanks to leftover padding space + IHavePathSegment, // optimized path segment based operations + IHaveKey, + IHaveValue +{ + /// + public Box? Parent { get; private set; } // 0 + + /// + public Dictionary Children { get; private set; } // 8 + + /// + public ushort Depth { get; private set; } // 17 + + /// + /// True if this node represents a file. + /// + public bool IsFile => LibraryFile.HasValue; + + /// + public RelativePath Segment { get; init; } // 24 + + /// + /// The library file, this node represents. + /// + public Optional LibraryFile { get; init; } + + /// + /// The complete path of the file or directory. + /// + public RelativePath Path => this.ReconstructPath(); + + /// + /// The name file or directory in this node. + /// + public RelativePath FileName => Segment; + + // Interface Redirects + /// + public RelativePath Key => Segment; + + /// + public LibraryArchiveTree Value => this; + + /// + /// Creates the tree! From the source entries. + /// + public static LibraryArchiveTreeNode Create(LibraryArchive.ReadOnly archive) + { + // Unboxed root node. + var root = CreateDirectoryNode(RelativePath.Empty, 0); + + // Add each entry to the tree. + foreach (var entry in archive.Children) + { + var libraryFile = entry.AsLibraryFile(); + var current = root; + var parts = entry.Path.GetParts(); + + for (var x = 0; x < parts.Length; x++) + { + var segment = parts[x]; + var isFile = x == parts.Length - 1; + + // Try get child for this segment. + if (!current.Item.Children.TryGetValue(segment, out var child)) + { + var depth = (ushort)(x + 1); + child = isFile ? CreateFileNode(segment, libraryFile, depth, current) : CreateDirectoryNode(segment, depth, current); + current.Item.Children.Add(segment, child); + } + + current = child; + } + } + + return root; + } + + private static LibraryArchiveTreeNode CreateDirectoryNode(RelativePath segmentName, ushort depth, Box? parent = null) + => CreateFileNode(segmentName, Optional.None, depth, parent); + + private static LibraryArchiveTreeNode CreateFileNode(RelativePath segmentName, Optional libraryFile, ushort depth, Box? parent) + { + return new LibraryArchiveTreeNode + { + Item = new LibraryArchiveTree + { + Segment = segmentName, + Children = new Dictionary(), + Parent = parent, + LibraryFile = libraryFile, + Depth = depth, + }, + }; + } + +} + +/// +/// Converters and extensions for . +/// +public static class LibraryArchiveTreeExtensions +{ + /// + /// Organize the children of this node into a tree based on their paths. + /// + public static LibraryArchiveTreeNode GetTree(this LibraryArchive.ReadOnly archive) + => LibraryArchiveTree.Create(archive); +} diff --git a/src/Abstractions/NexusMods.Abstractions.Library.Models/NexusMods.Abstractions.Library.Models.csproj b/src/Abstractions/NexusMods.Abstractions.Library.Models/NexusMods.Abstractions.Library.Models.csproj index 7d60b8701a..dc631b8d64 100644 --- a/src/Abstractions/NexusMods.Abstractions.Library.Models/NexusMods.Abstractions.Library.Models.csproj +++ b/src/Abstractions/NexusMods.Abstractions.Library.Models/NexusMods.Abstractions.Library.Models.csproj @@ -19,5 +19,8 @@ LibraryArchive.cs + + LibraryArchive.cs + diff --git a/src/Games/NexusMods.Games.RedEngine/Cyberpunk2077/Cyberpunk2077Game.cs b/src/Games/NexusMods.Games.RedEngine/Cyberpunk2077/Cyberpunk2077Game.cs index 1bb116bff4..938b537fa2 100644 --- a/src/Games/NexusMods.Games.RedEngine/Cyberpunk2077/Cyberpunk2077Game.cs +++ b/src/Games/NexusMods.Games.RedEngine/Cyberpunk2077/Cyberpunk2077Game.cs @@ -10,6 +10,7 @@ using NexusMods.Abstractions.Installers; using NexusMods.Abstractions.IO; using NexusMods.Abstractions.IO.StreamFactories; +using NexusMods.Abstractions.Library.Installers; using NexusMods.Abstractions.Loadouts.Synchronizers; using NexusMods.Games.FOMOD; using NexusMods.Games.RedEngine.Cyberpunk2077.Emitters; @@ -77,12 +78,21 @@ protected override IReadOnlyDictionary GetLocations(IF /// public override IEnumerable Installers => new IModInstaller[] { - new RedModInstaller(), - new SimpleOverlayModInstaller(), - new AppearancePreset(_serviceProvider), - new FolderlessModInstaller(), + new RedModInstaller(_serviceProvider), + new SimpleOverlayModInstaller(_serviceProvider), + new AppearancePresetInstaller(_serviceProvider), + new FolderlessModInstaller(_serviceProvider), FomodXmlInstaller.Create(_serviceProvider, new GamePath(LocationId.Game, "/")), }; + + /// + public override ILibraryItemInstaller[] LibraryItemInstallers => + [ + new RedModInstaller(_serviceProvider), + new SimpleOverlayModInstaller(_serviceProvider), + new AppearancePresetInstaller(_serviceProvider), + new FolderlessModInstaller(_serviceProvider), + ]; public override List GetInstallDestinations(IReadOnlyDictionary locations) => ModInstallDestinationHelpers.GetCommonLocations(locations); diff --git a/src/Games/NexusMods.Games.RedEngine/Cyberpunk2077/Models/RedModInfoFile.cs b/src/Games/NexusMods.Games.RedEngine/Cyberpunk2077/Models/RedModInfoFile.cs new file mode 100644 index 0000000000..629b235a58 --- /dev/null +++ b/src/Games/NexusMods.Games.RedEngine/Cyberpunk2077/Models/RedModInfoFile.cs @@ -0,0 +1,23 @@ +using NexusMods.Abstractions.Library.Models; +using NexusMods.Abstractions.Loadouts; +using NexusMods.MnemonicDB.Abstractions.Attributes; +using NexusMods.MnemonicDB.Abstractions.Models; + +namespace NexusMods.Games.RedEngine.Cyberpunk2077.Models; + + +[Include] +public partial class RedModInfoFile : IModelDefinition +{ + private static string Namespace => "NexusMods.Games.RedEngine.Cyberpunk2077.RedModInfoFile"; + + /// + /// The internal name of the mod + /// + public static readonly StringAttribute Name = new(Namespace, nameof(Name)); + + /// + /// The internal version of the mod + /// + public static readonly StringAttribute Version = new(Namespace, nameof(Version)); +} diff --git a/src/Games/NexusMods.Games.RedEngine/Cyberpunk2077/Models/RedModLoadoutGroup.cs b/src/Games/NexusMods.Games.RedEngine/Cyberpunk2077/Models/RedModLoadoutGroup.cs new file mode 100644 index 0000000000..8ddd8e2cf8 --- /dev/null +++ b/src/Games/NexusMods.Games.RedEngine/Cyberpunk2077/Models/RedModLoadoutGroup.cs @@ -0,0 +1,18 @@ +using NexusMods.Abstractions.Library.Models; +using NexusMods.Abstractions.Loadouts; +using NexusMods.MnemonicDB.Abstractions.Attributes; +using NexusMods.MnemonicDB.Abstractions.Models; + +namespace NexusMods.Games.RedEngine.Cyberpunk2077.Models; + +[Include] +public partial class RedModLoadoutGroup : IModelDefinition +{ + private const string Namespace = "NexusMods.Games.RedEngine.Cyberpunk2077.RedModLoadoutGroup"; + + /// + /// The info.json file for this RedMod + /// + public static readonly ReferenceAttribute RedModInfoFile = new(Namespace, nameof(RedModInfoFile)); +} + diff --git a/src/Games/NexusMods.Games.RedEngine/ModInstallers/AppearancePreset.cs b/src/Games/NexusMods.Games.RedEngine/ModInstallers/AppearancePreset.cs deleted file mode 100644 index c22c2e9280..0000000000 --- a/src/Games/NexusMods.Games.RedEngine/ModInstallers/AppearancePreset.cs +++ /dev/null @@ -1,47 +0,0 @@ -using NexusMods.Abstractions.FileStore.Trees; -using NexusMods.Abstractions.GameLocators; -using NexusMods.Abstractions.Installers; -using NexusMods.Paths; -using NexusMods.Paths.Extensions; -using NexusMods.Paths.Trees.Traits; -using NexusMods.Paths.Utilities; - -namespace NexusMods.Games.RedEngine.ModInstallers; - -/// -/// This mod installer is used to install appearance presets for Cyberpunk 2077, they are installed into a specific -/// folder under the cyber engine tweaks mod's subfolder for the appearance change unlocker. -/// -public class AppearancePreset : AModInstaller -{ - private static readonly RelativePath[] Paths = { - "bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceChangeUnlocker/character-preset/female".ToRelativePath(), - "bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceChangeUnlocker/character-preset/male".ToRelativePath() - }; - - /// - /// DI Constructor - /// - /// - public AppearancePreset(IServiceProvider serviceProvider) : base(serviceProvider) { } - - public override async ValueTask> GetModsAsync( - ModInstallerInfo info, - CancellationToken cancellationToken = default) - { - var modFiles = info.ArchiveFiles.GetFiles() - .Where(kv => kv.Path().Extension == new Extension(".preset")) - .SelectMany(kv => Paths.Select(relPath => kv.ToStoredFile( - new GamePath(LocationId.Game, relPath.Join(kv.Path())) - ))).ToArray(); - - if (!modFiles.Any()) - return NoResults; - - return new ModInstallerResult[] { new() - { - Id = info.BaseModId, - Files = modFiles - }}; - } -} diff --git a/src/Games/NexusMods.Games.RedEngine/ModInstallers/AppearancePresetInstaller.cs b/src/Games/NexusMods.Games.RedEngine/ModInstallers/AppearancePresetInstaller.cs new file mode 100644 index 0000000000..31dd4df29c --- /dev/null +++ b/src/Games/NexusMods.Games.RedEngine/ModInstallers/AppearancePresetInstaller.cs @@ -0,0 +1,80 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using NexusMods.Abstractions.FileStore.Trees; +using NexusMods.Abstractions.GameLocators; +using NexusMods.Abstractions.Installers; +using NexusMods.Abstractions.Library.Installers; +using NexusMods.Abstractions.Library.Models; +using NexusMods.Abstractions.Loadouts; +using NexusMods.MnemonicDB.Abstractions; +using NexusMods.Paths; +using NexusMods.Paths.Extensions; +using NexusMods.Paths.Trees.Traits; +using NexusMods.Paths.Utilities; + +namespace NexusMods.Games.RedEngine.ModInstallers; + +/// +/// This mod installer is used to install appearance presets for Cyberpunk 2077, they are installed into a specific +/// folder under the cyber engine tweaks mod's subfolder for the appearance change unlocker. +/// +public class AppearancePresetInstaller : ALibraryArchiveInstaller, IModInstaller +{ + private static readonly RelativePath[] Paths = { + "bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceChangeUnlocker/character-preset/female".ToRelativePath(), + "bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceChangeUnlocker/character-preset/male".ToRelativePath() + }; + + /// + /// DI Constructor + /// + /// + public AppearancePresetInstaller(IServiceProvider serviceProvider) : base(serviceProvider, serviceProvider.GetRequiredService>()) + { + } + + public async ValueTask> GetModsAsync( + ModInstallerInfo info, + CancellationToken cancellationToken = default) + { + var modFiles = info.ArchiveFiles.GetFiles() + .Where(kv => kv.Path().Extension == new Extension(".preset")) + .SelectMany(kv => Paths.Select(relPath => kv.ToStoredFile( + new GamePath(LocationId.Game, relPath.Join(kv.Path())) + ))).ToArray(); + + if (!modFiles.Any()) + return []; + + return new ModInstallerResult[] { new() + { + Id = info.BaseModId, + Files = modFiles, + }}; + } + + public override ValueTask ExecuteAsync( + LibraryArchive.ReadOnly libraryArchive, + ITransaction tx, + Loadout.ReadOnly loadout, + CancellationToken cancellationToken) + { + var tree = libraryArchive.GetTree(); + var extensionPreset = new Extension(".preset"); + + var group = libraryArchive.ToGroup(loadout.Id, tx, out var loadoutItem); + + var modFiles = tree.GetFiles() + .Where(kv => kv.Key().Extension == extensionPreset) + .SelectMany(kv => Paths.Select(relPath => kv.ToLoadoutFile( + loadout.Id, + group.Id, + tx, + new GamePath(LocationId.Game, relPath.Join(kv.Key())) + ))).ToArray(); + + return modFiles.Length == 0 + ? ValueTask.FromResult([]) + : ValueTask.FromResult([loadoutItem]); + } +} diff --git a/src/Games/NexusMods.Games.RedEngine/ModInstallers/FolderlessModInstaller.cs b/src/Games/NexusMods.Games.RedEngine/ModInstallers/FolderlessModInstaller.cs index 076ad9bf86..492cf82222 100644 --- a/src/Games/NexusMods.Games.RedEngine/ModInstallers/FolderlessModInstaller.cs +++ b/src/Games/NexusMods.Games.RedEngine/ModInstallers/FolderlessModInstaller.cs @@ -1,6 +1,12 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using NexusMods.Abstractions.FileStore.Trees; using NexusMods.Abstractions.GameLocators; using NexusMods.Abstractions.Installers; +using NexusMods.Abstractions.Library.Installers; +using NexusMods.Abstractions.Library.Models; +using NexusMods.Abstractions.Loadouts; +using NexusMods.MnemonicDB.Abstractions; using NexusMods.Paths; using NexusMods.Paths.Extensions; using NexusMods.Paths.Trees.Traits; @@ -11,8 +17,12 @@ namespace NexusMods.Games.RedEngine.ModInstallers; /// /// Matches mods that have all the .archive files in the base folder, optionally with other documentation files. /// -public class FolderlessModInstaller : IModInstaller +public class FolderlessModInstaller : ALibraryArchiveInstaller, IModInstaller { + public FolderlessModInstaller(IServiceProvider serviceProvider) : base(serviceProvider, serviceProvider.GetRequiredService>()) + { + } + private static readonly RelativePath Destination = "archive/pc/mod".ToRelativePath(); private static readonly HashSet IgnoreExtensions = new() { @@ -34,7 +44,7 @@ public async ValueTask> GetModsAsync( .ToArray(); if (!modFiles.Any()) - return Enumerable.Empty(); + return []; return new[] { @@ -45,4 +55,22 @@ public async ValueTask> GetModsAsync( } }; } + + + public override ValueTask ExecuteAsync(LibraryArchive.ReadOnly libraryArchive, ITransaction tx, Loadout.ReadOnly loadout, CancellationToken cancellationToken) + { + var tree = libraryArchive.GetTree(); + + var group = libraryArchive.ToGroup(loadout, tx, out var loadoutItem); + + var modFiles = tree.EnumerateFilesBfs() + .Where(f => !IgnoreExtensions.Contains(f.Value.Item.Path.Extension)) + .Select(f => f.Value.ToLoadoutFile(loadout.Id, group.Id, tx, new GamePath(LocationId.Game, Destination.Join(f.Value.Item.Path.FileName)))) + .ToArray(); + + if (!modFiles.Any()) + return ValueTask.FromResult([]); + + return ValueTask.FromResult([ loadoutItem ]); + } } diff --git a/src/Games/NexusMods.Games.RedEngine/ModInstallers/RedModInstaller.cs b/src/Games/NexusMods.Games.RedEngine/ModInstallers/RedModInstaller.cs index a3c5b6b8a6..5fb5e342a5 100644 --- a/src/Games/NexusMods.Games.RedEngine/ModInstallers/RedModInstaller.cs +++ b/src/Games/NexusMods.Games.RedEngine/ModInstallers/RedModInstaller.cs @@ -1,9 +1,17 @@ using System.Text.Json; using System.Text.Json.Serialization; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using NexusMods.Abstractions.FileStore.Trees; using NexusMods.Abstractions.GameLocators; using NexusMods.Abstractions.Installers; -using NexusMods.Abstractions.Loadouts.Mods; +using NexusMods.Abstractions.IO; +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.MnemonicDB.Abstractions; using NexusMods.MnemonicDB.Abstractions.Models; using NexusMods.Paths; using NexusMods.Paths.Extensions; @@ -12,10 +20,16 @@ namespace NexusMods.Games.RedEngine.ModInstallers; -public class RedModInstaller : IModInstaller +public class RedModInstaller : ALibraryArchiveInstaller, IModInstaller { + public RedModInstaller(IServiceProvider serviceProvider) : base(serviceProvider, serviceProvider.GetRequiredService>()) + { + _fileStore = serviceProvider.GetRequiredService(); + } + private static readonly RelativePath InfoJson = "info.json".ToRelativePath(); private static readonly RelativePath Mods = "mods".ToRelativePath(); + private readonly IFileStore _fileStore; public async ValueTask> GetModsAsync( ModInstallerInfo info, @@ -27,7 +41,7 @@ public async ValueTask> GetModsAsync( if (f.FileName() != InfoJson) continue; - var infoJson = await ReadInfoJson(f); + var infoJson = await ReadInfoJson(f.Item.Hash, f.Item.StreamFactory); if (infoJson != null) infosList.Add((f, infoJson)); } @@ -53,16 +67,104 @@ public async ValueTask> GetModsAsync( return results; } - private static async Task ReadInfoJson(KeyedBox entry) + private async Task ReadInfoJson(Hash hash, IStreamFactory? streamFactory = null) { - await using var stream = await entry.Item.OpenAsync(); - return await JsonSerializer.DeserializeAsync(stream); + try + { + await using var stream = await _fileStore.GetFileStream(hash); + return await JsonSerializer.DeserializeAsync(stream); + } + catch (Exception ex) + { + // TODO: Remove this after we get rid of the old mod code + if (streamFactory != null) + { + await using var streamDirect = await streamFactory.GetStreamAsync(); + return await JsonSerializer.DeserializeAsync(streamDirect); + } + Logger.LogError(ex, "Failed to read info.json for {Hash}", hash); + return null; + } } + + public override async ValueTask ExecuteAsync(LibraryArchive.ReadOnly libraryArchive, ITransaction tx, Loadout.ReadOnly loadout, CancellationToken cancellationToken) + { + var tree = libraryArchive.GetTree(); + var infosList = new List<(KeyedBox File, RedModInfo InfoJson)>(); + foreach (var f in tree.GetFiles()) + { + if (f.Key().FileName != InfoJson) + continue; + + var infoJson = await ReadInfoJson(f.Item.LibraryFile.Value.Hash); + if (infoJson != null) + infosList.Add((f, infoJson)); + } + + var topLevelGroup = libraryArchive.ToGroup(loadout.Id, tx, out var topLevelItem); + + foreach (var (file, infoJson) in infosList.OrderBy(x => x.InfoJson.Name)) + { + var modFolder = file.Parent(); + var parentName = modFolder!.Segment(); + + var loadoutItem = new LoadoutItem.New(tx) + { + LoadoutId = loadout.Id, + IsIsDisabledMarker = false, + Name = infoJson.Name, + ParentId = topLevelGroup.Id, + }; + + var groupItem = new LoadoutItemGroup.New(tx, loadoutItem.Id) + { + LoadoutItem = loadoutItem, + IsIsLoadoutItemGroupMarker = true, + }; + + RedModInfoFile.New redModInfoFile = null!; + + foreach (var childNode in modFolder!.GetFiles().OrderBy(f => f.Item.Path)) + { + var relativePath = childNode.Item.Path.RelativeTo(modFolder!.Item.Path); + var joinedPath = Mods.Join(parentName).Join(relativePath); + + var newFile = childNode.ToLoadoutFile(loadout.Id, groupItem.Id, tx, new GamePath(LocationId.Game, joinedPath)); + + if (file.Item.Path == childNode.Item.Path) + { + redModInfoFile = new RedModInfoFile.New(tx, newFile.Id) + { + Name = infoJson.Name, + Version = infoJson.Version, + LoadoutFile = newFile, + }; + } + } + + if (redModInfoFile == null) + throw new InvalidOperationException("Failed to find the info.json file in the mod archive, this should never happen"); + + var redModItem = new RedModLoadoutGroup.New(tx, loadoutItem.Id) + { + LoadoutItemGroup = groupItem, + RedModInfoFileId = redModInfoFile.Id, + }; + } + + return [topLevelItem]; + } } internal class RedModInfo { [JsonPropertyName("name")] public string Name { get; set; } = string.Empty; + + [JsonPropertyName("version")] + public string Version { get; set; } = string.Empty; + + [JsonPropertyName("description")] + public string? Description { get; set; } = string.Empty; } diff --git a/src/Games/NexusMods.Games.RedEngine/ModInstallers/SimpleOverlayModInstaller.cs b/src/Games/NexusMods.Games.RedEngine/ModInstallers/SimpleOverlayModInstaller.cs index 41629d6682..67d1d23013 100644 --- a/src/Games/NexusMods.Games.RedEngine/ModInstallers/SimpleOverlayModInstaller.cs +++ b/src/Games/NexusMods.Games.RedEngine/ModInstallers/SimpleOverlayModInstaller.cs @@ -1,8 +1,14 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using NexusMods.Abstractions.FileStore.Trees; using NexusMods.Abstractions.GameLocators; using NexusMods.Abstractions.Installers; +using NexusMods.Abstractions.Library.Installers; +using NexusMods.Abstractions.Library.Models; +using NexusMods.Abstractions.Loadouts; using NexusMods.Abstractions.Loadouts.Files; using NexusMods.Abstractions.Loadouts.Mods; +using NexusMods.MnemonicDB.Abstractions; using NexusMods.MnemonicDB.Abstractions.Models; using NexusMods.Paths; using NexusMods.Paths.Extensions; @@ -11,15 +17,21 @@ namespace NexusMods.Games.RedEngine.ModInstallers; -public class SimpleOverlayModInstaller : IModInstaller +public class SimpleOverlayModInstaller : ALibraryArchiveInstaller, IModInstaller { + + public SimpleOverlayModInstaller(IServiceProvider serviceProvider) : + base(serviceProvider, serviceProvider.GetRequiredService>()) + { + } + private static readonly RelativePath[] RootPaths = new[] { "bin/x64", "engine", "r6", "red4ext", - "archive/pc/mod" + "archive/pc/mod", } .Select(x => x.ToRelativePath()) .ToArray(); @@ -68,4 +80,58 @@ public async ValueTask> GetModsAsync( Files = newFiles }}; } + + + public override ValueTask ExecuteAsync( + LibraryArchive.ReadOnly libraryArchive, + ITransaction tx, + Loadout.ReadOnly loadout, + CancellationToken cancellationToken) + { + var tree = libraryArchive.GetTree(); + + // Note: Expected search space here is small, highest expected overhead is in FindSubPathRootsByKeyUpward. + // Find all paths which match a known base/root directory. + var roots = RootPaths + .SelectMany(x => tree.FindSubPathRootsByKeyUpward(x.Parts.ToArray())) + .OrderBy(node => node.Depth()) + .ToArray(); + + if (roots.Length == 0) return ValueTask.FromResult([]); + + var highestRoot = roots.First(); + var group = libraryArchive.ToGroup(loadout.Id, tx, out var loadoutItem); + + var newFiles = 0; + + // Enumerate over all directories with the same depth as the most rooted item. + foreach (var node in roots.Where(root => root.Depth() == highestRoot.Depth())) + foreach (var file in node.Item.GetFiles()) + { + var fullPath = file.Item.Path; // all the way up to root + var relativePath = fullPath.DropFirst(node.Depth() - 1); // get relative path + + var _ = new LoadoutFile.New(tx, out var id) + { + LoadoutItemWithTargetPath = new LoadoutItemWithTargetPath.New(tx, id) + { + TargetPath = new GamePath(LocationId.Game, relativePath), + LoadoutItem = new LoadoutItem.New(tx, id) + { + Name = relativePath.Name, + LoadoutId = loadout.Id, + ParentId = group.Id, + IsIsDisabledMarker = false, + }, + }, + Hash = file.Item.LibraryFile.Value.Hash, + Size = file.Item.LibraryFile.Value.Size, + }; + newFiles++; + } + + return newFiles == 0 + ? ValueTask.FromResult([]) + : ValueTask.FromResult([loadoutItem]); + } } diff --git a/src/Games/NexusMods.Games.RedEngine/NexusMods.Games.RedEngine.csproj b/src/Games/NexusMods.Games.RedEngine/NexusMods.Games.RedEngine.csproj index 171ae21a8a..faf1a0838c 100644 --- a/src/Games/NexusMods.Games.RedEngine/NexusMods.Games.RedEngine.csproj +++ b/src/Games/NexusMods.Games.RedEngine/NexusMods.Games.RedEngine.csproj @@ -6,6 +6,7 @@ + diff --git a/src/Games/NexusMods.Games.RedEngine/Services.cs b/src/Games/NexusMods.Games.RedEngine/Services.cs index bd903b5001..a412802ec2 100644 --- a/src/Games/NexusMods.Games.RedEngine/Services.cs +++ b/src/Games/NexusMods.Games.RedEngine/Services.cs @@ -5,6 +5,7 @@ using NexusMods.Abstractions.Settings; using NexusMods.Games.RedEngine.Cyberpunk2077; using NexusMods.Games.RedEngine.Cyberpunk2077.Emitters; +using NexusMods.Games.RedEngine.Cyberpunk2077.Models; using NexusMods.Games.RedEngine.ModInstallers; namespace NexusMods.Games.RedEngine; @@ -14,9 +15,11 @@ public static class Services public static IServiceCollection AddRedEngineGames(this IServiceCollection services) { services.AddGame() + .AddRedModLoadoutGroupModel() + .AddRedModInfoFileModel() .AddSingleton() .AddSingleton() - .AddSingleton() + .AddSingleton() .AddSingleton() .AddSingleton>() .AddSingleton() diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=All Common Prefixes.verified.txt b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=All Common Prefixes.verified.txt new file mode 100644 index 0000000000..db8bb9693c --- /dev/null +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=All Common Prefixes.verified.txt @@ -0,0 +1,27 @@ +[ + { + FromPath: archive/pc/mod/foo.archive, + Hash: 0x3F9FDA0CBCC34562, + ToGamePath: {Game}/archive/pc/mod/foo.archive + }, + { + FromPath: bin/x64/foo.exe, + Hash: 0x798E0832D0DADE9C, + ToGamePath: {Game}/bin/x64/foo.exe + }, + { + FromPath: engine/foo.exe, + Hash: 0x174EAD3C0202B81C, + ToGamePath: {Game}/engine/foo.exe + }, + { + FromPath: r6/foo.exe, + Hash: 0xF60D49846472EC86, + ToGamePath: {Game}/r6/foo.exe + }, + { + FromPath: red4ext/foo.exe, + Hash: 0xC3DD09F834309596, + ToGamePath: {Game}/red4ext/foo.exe + } +] \ No newline at end of file diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Appearance Preset.verified.txt b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Appearance Preset.verified.txt new file mode 100644 index 0000000000..c0a5f6eb0d --- /dev/null +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Appearance Preset.verified.txt @@ -0,0 +1,12 @@ +[ + { + FromPath: cool_choom.preset, + Hash: 0x7B15871FB267B315, + ToGamePath: {Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceChangeUnlocker/character-preset/female/cool_choom.preset + }, + { + FromPath: cool_choom.preset, + Hash: 0x7B15871FB267B315, + ToGamePath: {Game}/bin/x64/plugins/cyber_engine_tweaks/mods/AppearanceChangeUnlocker/character-preset/male/cool_choom.preset + } +] \ No newline at end of file diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Files Under No Folder.verified.txt b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Files Under No Folder.verified.txt new file mode 100644 index 0000000000..11ac492147 --- /dev/null +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Files Under No Folder.verified.txt @@ -0,0 +1,12 @@ +[ + { + FromPath: archive/pc/mod/foo.archive, + Hash: 0x3F9FDA0CBCC34562, + ToGamePath: {Game}/archive/pc/mod/foo.archive + }, + { + FromPath: bin/x64/foo.exe, + Hash: 0x798E0832D0DADE9C, + ToGamePath: {Game}/bin/x64/foo.exe + } +] \ No newline at end of file diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Files Under Sub Folders.verified.txt b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Files Under Sub Folders.verified.txt new file mode 100644 index 0000000000..6897b982de --- /dev/null +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Files Under Sub Folders.verified.txt @@ -0,0 +1,12 @@ +[ + { + FromPath: mymod/archive/pc/mod/foo.archive, + Hash: 0xE3DE93C464191B5F, + ToGamePath: {Game}/archive/pc/mod/foo.archive + }, + { + FromPath: mymod/bin/x64/foo.exe, + Hash: 0x95CD521D6DA7F4BC, + ToGamePath: {Game}/bin/x64/foo.exe + } +] \ No newline at end of file diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Files Under Two Sub Folder Depths.verified.txt b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Files Under Two Sub Folder Depths.verified.txt new file mode 100644 index 0000000000..dba52edf30 --- /dev/null +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Files Under Two Sub Folder Depths.verified.txt @@ -0,0 +1,7 @@ +[ + { + FromPath: mymod/archive/pc/mod/foo.archive, + Hash: 0xE3DE93C464191B5F, + ToGamePath: {Game}/archive/pc/mod/foo.archive + } +] \ No newline at end of file diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Files with no folder.verified.txt b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Files with no folder.verified.txt new file mode 100644 index 0000000000..d0e1746fd1 --- /dev/null +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Files with no folder.verified.txt @@ -0,0 +1,12 @@ +[ + { + FromPath: folder/filea.archive, + Hash: 0x3CEAFFFA8F0928A4, + ToGamePath: {Game}/archive/pc/mod/filea.archive + }, + { + FromPath: fileb.archive, + Hash: 0xE4560BB5B6784CE1, + ToGamePath: {Game}/archive/pc/mod/fileb.archive + } +] \ No newline at end of file diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Ignored Extensions.verified.txt b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Ignored Extensions.verified.txt new file mode 100644 index 0000000000..4a39917c96 --- /dev/null +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.FilesAreMappedToCorrectFolders_testCaseName=Ignored Extensions.verified.txt @@ -0,0 +1,7 @@ +[ + { + FromPath: folder/filea.archive, + Hash: 0x3CEAFFFA8F0928A4, + ToGamePath: {Game}/archive/pc/mod/filea.archive + } +] \ No newline at end of file diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.cs b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.cs new file mode 100644 index 0000000000..b3b7ddfaff --- /dev/null +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/PathBasedInstallerTests.cs @@ -0,0 +1,66 @@ +using FluentAssertions; +using NexusMods.Abstractions.GameLocators; +using NexusMods.Games.RedEngine.Cyberpunk2077; +using NexusMods.Games.RedEngine.ModInstallers; +using NexusMods.Games.TestFramework; +using NexusMods.Hashing.xxHash64; +using NexusMods.Paths; +using Xunit.DependencyInjection; + +namespace NexusMods.Games.RedEngine.Tests.LibraryArchiveInstallerTests; + +public class PathBasedInstallerTests : ALibraryArchiveInstallerTests +{ + public PathBasedInstallerTests(IServiceProvider serviceProvider) : base(serviceProvider) + { + } + + /// + /// Test cases, key is the name, the values are the archive file paths. + /// + public static readonly List<(string TestName, Type InstallerType, string[] Paths)> TestCases = new() + { + ( "Files Under No Folder", typeof(SimpleOverlayModInstaller), ["bin/x64/foo.exe", "archive/pc/mod/foo.archive"] ), + ( "Files Under Sub Folders", typeof(SimpleOverlayModInstaller), ["mymod/bin/x64/foo.exe", "mymod/archive/pc/mod/foo.archive"] ), + ( "All Common Prefixes", typeof(SimpleOverlayModInstaller), ["bin/x64/foo.exe", "engine/foo.exe", "r6/foo.exe", "red4ext/foo.exe", "archive/pc/mod/foo.archive"] ), + ( "Files with no folder", typeof(FolderlessModInstaller), ["folder/filea.archive", "fileb.archive"] ), + ( "Ignored Extensions", typeof(FolderlessModInstaller), ["folder/filea.archive", "file.txt", "docs/file.md", "bin/x64/file.pdf", "bin/x64/file.png"] ), + ( "Appearance Preset", typeof(AppearancePresetInstaller), ["cool_choom.preset"] ), + }; + + public static IEnumerable TestCaseData() + { + foreach (var row in TestCases) + { + yield return [row.TestName, row.InstallerType, row.Paths]; + } + } + + + [Theory] + [MethodData(nameof(TestCaseData))] + public async Task FilesAreMappedToCorrectFolders(string testCaseName, Type installerType, string[] archivePaths) + { + var loadout = await CreateLoadout(); + var archive = await AddFromPaths(archivePaths); + var result = await Install(installerType, loadout, archive); + + result.Length.Should().Be(1, "The installer should have installed one group of files."); + + await VerifyChildren(ChildrenFilesAndHashes(result[0]), archivePaths).UseParameters(testCaseName); + } + + private SettingsTask VerifyChildren(IEnumerable<(RelativePath FromPath, Hash Hash, GamePath GamePath)> childrenFilesAndHashes, string[] archivePaths) + { + var asArray = childrenFilesAndHashes.ToArray(); + + return Verify(asArray.Select(row => + new + { + FromPath = row.FromPath.ToString(), + Hash = row.Hash.ToString(), + ToGamePath = row.GamePath.ToString(), + } + )); + } +} diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=one_mod.7z.verified.txt b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=one_mod.7z.verified.txt new file mode 100644 index 0000000000..a895a68a12 --- /dev/null +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=one_mod.7z.verified.txt @@ -0,0 +1,48 @@ ++ | 0200000000000000 | Timestamp | DateTime : 0 | 0200000000000000 ++ | 0200000000000001 | Name | one_mod.7z | 0200000000000000 ++ | 0200000000000001 | IsDisabled | False | 0200000000000000 ++ | 0200000000000001 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000001 | GroupMarker | Null | 0200000000000000 ++ | 0200000000000003 | RedModInfoFile | 0200000000000004 | 0200000000000000 ++ | 0200000000000003 | Name | Driver_Shotgun | 0200000000000000 ++ | 0200000000000003 | IsDisabled | False | 0200000000000000 ++ | 0200000000000003 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000003 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000003 | GroupMarker | Null | 0200000000000000 ++ | 0200000000000004 | Name | Driver_Shotgun | 0200000000000000 ++ | 0200000000000004 | Version | 1.0.0 | 0200000000000000 ++ | 0200000000000004 | Name | info.json | 0200000000000000 ++ | 0200000000000004 | IsDisabled | False | 0200000000000000 ++ | 0200000000000004 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000004 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000004 | TargetPath | {Game}/mods/Driver_Shotguns/info.json | 0200000000000000 ++ | 0200000000000004 | Hash | 0x55FE2BFA19917AAF | 0200000000000000 ++ | 0200000000000004 | Size | 80 B | 0200000000000000 ++ | 0200000000000005 | Name | base_crusher.tweak | 0200000000000000 ++ | 0200000000000005 | IsDisabled | False | 0200000000000000 ++ | 0200000000000005 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000005 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000005 | TargetPath | {Game}/mods/Driver_Sho...her/base_crusher.tweak | 0200000000000000 ++ | 0200000000000005 | Hash | 0x6A6D905ABC5177AE | 0200000000000000 ++ | 0200000000000005 | Size | 128 B | 0200000000000000 ++ | 0200000000000006 | Name | base_pozhar.tweak | 0200000000000000 ++ | 0200000000000006 | IsDisabled | False | 0200000000000000 ++ | 0200000000000006 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000006 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000006 | TargetPath | {Game}/mods/Driver_Sho...zhar/base_pozhar.tweak | 0200000000000000 ++ | 0200000000000006 | Hash | 0xDB4B2217BE615C07 | 0200000000000000 ++ | 0200000000000006 | Size | 128 B | 0200000000000000 ++ | 0200000000000007 | Name | base_igla.tweak | 0200000000000000 ++ | 0200000000000007 | IsDisabled | False | 0200000000000000 ++ | 0200000000000007 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000007 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000007 | TargetPath | {Game}/mods/Driver_Sho...s/igla/base_igla.tweak | 0200000000000000 ++ | 0200000000000007 | Hash | 0xA2EFF12B68D2606B | 0200000000000000 ++ | 0200000000000007 | Size | 128 B | 0200000000000000 ++ | 0200000000000008 | Name | base_satara.tweak | 0200000000000000 ++ | 0200000000000008 | IsDisabled | False | 0200000000000000 ++ | 0200000000000008 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000008 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000008 | TargetPath | {Game}/mods/Driver_Sho...tara/base_satara.tweak | 0200000000000000 ++ | 0200000000000008 | Hash | 0x468F14E15B6E2EDC | 0200000000000000 ++ | 0200000000000008 | Size | 128 B | 0200000000000000 diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=several_red_mods.7z.verified.txt b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=several_red_mods.7z.verified.txt new file mode 100644 index 0000000000..09370868c4 --- /dev/null +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.CanInstallRedMod_filename=several_red_mods.7z.verified.txt @@ -0,0 +1,1241 @@ ++ | 0200000000000000 | Timestamp | DateTime : 0 | 0200000000000000 ++ | 0200000000000001 | Name | several_red_mods.7z | 0200000000000000 ++ | 0200000000000001 | IsDisabled | False | 0200000000000000 ++ | 0200000000000001 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000001 | GroupMarker | Null | 0200000000000000 ++ | 0200000000000003 | RedModInfoFile | 0200000000000004 | 0200000000000000 ++ | 0200000000000003 | Name | Maestros of Synth - Body Heat Radio | 0200000000000000 ++ | 0200000000000003 | IsDisabled | False | 0200000000000000 ++ | 0200000000000003 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000003 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000003 | GroupMarker | Null | 0200000000000000 ++ | 0200000000000005 | Name | 0eaacf6f-394e-45e7-a958-9e10701b1711 | 0200000000000000 ++ | 0200000000000005 | IsDisabled | False | 0200000000000000 ++ | 0200000000000005 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000005 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000005 | TargetPath | {Game}/mods/maestros_o...45e7-a958-9e10701b1711 | 0200000000000000 ++ | 0200000000000005 | Hash | 0xF564BA3735213B20 | 0200000000000000 ++ | 0200000000000005 | Size | 128 B | 0200000000000000 ++ | 0200000000000006 | Name | 159792bc-6978-4ba4-91f4-a77e8bd1a2f8 | 0200000000000000 ++ | 0200000000000006 | IsDisabled | False | 0200000000000000 ++ | 0200000000000006 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000006 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000006 | TargetPath | {Game}/mods/maestros_o...4ba4-91f4-a77e8bd1a2f8 | 0200000000000000 ++ | 0200000000000006 | Hash | 0xEB0420AC550DD97D | 0200000000000000 ++ | 0200000000000006 | Size | 128 B | 0200000000000000 ++ | 0200000000000007 | Name | 32dbbaee-77c2-45d8-9e5b-ebc2b159df3a | 0200000000000000 ++ | 0200000000000007 | IsDisabled | False | 0200000000000000 ++ | 0200000000000007 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000007 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000007 | TargetPath | {Game}/mods/maestros_o...45d8-9e5b-ebc2b159df3a | 0200000000000000 ++ | 0200000000000007 | Hash | 0x1572C789579FAAF0 | 0200000000000000 ++ | 0200000000000007 | Size | 128 B | 0200000000000000 ++ | 0200000000000008 | Name | 39c37247-0885-4144-ae6b-faf8a101973e | 0200000000000000 ++ | 0200000000000008 | IsDisabled | False | 0200000000000000 ++ | 0200000000000008 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000008 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000008 | TargetPath | {Game}/mods/maestros_o...4144-ae6b-faf8a101973e | 0200000000000000 ++ | 0200000000000008 | Hash | 0x200AF59F6FBB5D83 | 0200000000000000 ++ | 0200000000000008 | Size | 128 B | 0200000000000000 ++ | 0200000000000009 | Name | 3b0aa2f9-14f6-4d95-b5d6-221cfab8fa14 | 0200000000000000 ++ | 0200000000000009 | IsDisabled | False | 0200000000000000 ++ | 0200000000000009 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000009 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000009 | TargetPath | {Game}/mods/maestros_o...4d95-b5d6-221cfab8fa14 | 0200000000000000 ++ | 0200000000000009 | Hash | 0x93ED0FB491A3FF5A | 0200000000000000 ++ | 0200000000000009 | Size | 128 B | 0200000000000000 ++ | 020000000000000A | Name | 52014a17-abf9-4581-8169-e26a2b4234e0 | 0200000000000000 ++ | 020000000000000A | IsDisabled | False | 0200000000000000 ++ | 020000000000000A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000000A | Parent | 0200000000000003 | 0200000000000000 ++ | 020000000000000A | TargetPath | {Game}/mods/maestros_o...4581-8169-e26a2b4234e0 | 0200000000000000 ++ | 020000000000000A | Hash | 0x9D63304EA31F37D6 | 0200000000000000 ++ | 020000000000000A | Size | 128 B | 0200000000000000 ++ | 020000000000000B | Name | 59ac86e4-9a23-4bf6-90b7-299308e64930 | 0200000000000000 ++ | 020000000000000B | IsDisabled | False | 0200000000000000 ++ | 020000000000000B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000000B | Parent | 0200000000000003 | 0200000000000000 ++ | 020000000000000B | TargetPath | {Game}/mods/maestros_o...4bf6-90b7-299308e64930 | 0200000000000000 ++ | 020000000000000B | Hash | 0x46582E4BEF6CE88E | 0200000000000000 ++ | 020000000000000B | Size | 128 B | 0200000000000000 ++ | 020000000000000C | Name | 7b391a0f-31e1-4258-a7fb-94b22737c734 | 0200000000000000 ++ | 020000000000000C | IsDisabled | False | 0200000000000000 ++ | 020000000000000C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000000C | Parent | 0200000000000003 | 0200000000000000 ++ | 020000000000000C | TargetPath | {Game}/mods/maestros_o...4258-a7fb-94b22737c734 | 0200000000000000 ++ | 020000000000000C | Hash | 0xD5302C938DC77BEA | 0200000000000000 ++ | 020000000000000C | Size | 128 B | 0200000000000000 ++ | 020000000000000D | Name | 7b62fe18-9191-42f7-90c6-15cbc256db36 | 0200000000000000 ++ | 020000000000000D | IsDisabled | False | 0200000000000000 ++ | 020000000000000D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000000D | Parent | 0200000000000003 | 0200000000000000 ++ | 020000000000000D | TargetPath | {Game}/mods/maestros_o...42f7-90c6-15cbc256db36 | 0200000000000000 ++ | 020000000000000D | Hash | 0x3DCF71D24C744E9C | 0200000000000000 ++ | 020000000000000D | Size | 128 B | 0200000000000000 ++ | 020000000000000E | Name | 8be6257d-28eb-427a-a3e5-f143c2f95b71 | 0200000000000000 ++ | 020000000000000E | IsDisabled | False | 0200000000000000 ++ | 020000000000000E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000000E | Parent | 0200000000000003 | 0200000000000000 ++ | 020000000000000E | TargetPath | {Game}/mods/maestros_o...427a-a3e5-f143c2f95b71 | 0200000000000000 ++ | 020000000000000E | Hash | 0xCC0A11DF60A159AB | 0200000000000000 ++ | 020000000000000E | Size | 128 B | 0200000000000000 ++ | 020000000000000F | Name | ae78e843-56e0-478e-88a5-b3b8896dea7e | 0200000000000000 ++ | 020000000000000F | IsDisabled | False | 0200000000000000 ++ | 020000000000000F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000000F | Parent | 0200000000000003 | 0200000000000000 ++ | 020000000000000F | TargetPath | {Game}/mods/maestros_o...478e-88a5-b3b8896dea7e | 0200000000000000 ++ | 020000000000000F | Hash | 0x315600CC75D518DB | 0200000000000000 ++ | 020000000000000F | Size | 128 B | 0200000000000000 ++ | 0200000000000010 | Name | b8b51db6-6aca-43c9-902f-761cf11572cf | 0200000000000000 ++ | 0200000000000010 | IsDisabled | False | 0200000000000000 ++ | 0200000000000010 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000010 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000010 | TargetPath | {Game}/mods/maestros_o...43c9-902f-761cf11572cf | 0200000000000000 ++ | 0200000000000010 | Hash | 0xF3F69AF897508E45 | 0200000000000000 ++ | 0200000000000010 | Size | 128 B | 0200000000000000 ++ | 0200000000000011 | Name | c6b0d13e-368c-47e9-aaac-f70e5d654c79 | 0200000000000000 ++ | 0200000000000011 | IsDisabled | False | 0200000000000000 ++ | 0200000000000011 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000011 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000011 | TargetPath | {Game}/mods/maestros_o...47e9-aaac-f70e5d654c79 | 0200000000000000 ++ | 0200000000000011 | Hash | 0xD82C2800B8B7043D | 0200000000000000 ++ | 0200000000000011 | Size | 128 B | 0200000000000000 ++ | 0200000000000004 | Name | Maestros of Synth - Body Heat Radio | 0200000000000000 ++ | 0200000000000004 | Version | 1.6 | 0200000000000000 ++ | 0200000000000004 | Name | info.json | 0200000000000000 ++ | 0200000000000004 | IsDisabled | False | 0200000000000000 ++ | 0200000000000004 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000004 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000004 | TargetPath | {Game}/mods/maestros_o...y_heat_radio/info.json | 0200000000000000 ++ | 0200000000000004 | Hash | 0x4C986D6E4DD14484 | 0200000000000000 ++ | 0200000000000004 | Size | 1.63 KB | 0200000000000000 ++ | 0200000000000012 | RedModInfoFile | 0200000000000013 | 0200000000000000 ++ | 0200000000000012 | Name | Maestros of Synth - Morro Rock Radio | 0200000000000000 ++ | 0200000000000012 | IsDisabled | False | 0200000000000000 ++ | 0200000000000012 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000012 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000012 | GroupMarker | Null | 0200000000000000 ++ | 0200000000000014 | Name | 04941c4c-7214-45de-9681-4b18c91cc28b | 0200000000000000 ++ | 0200000000000014 | IsDisabled | False | 0200000000000000 ++ | 0200000000000014 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000014 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000014 | TargetPath | {Game}/mods/maestros_o...45de-9681-4b18c91cc28b | 0200000000000000 ++ | 0200000000000014 | Hash | 0x9EAE34F7C47F243B | 0200000000000000 ++ | 0200000000000014 | Size | 128 B | 0200000000000000 ++ | 0200000000000015 | Name | 0e70865d-33f0-497d-bc79-63aac410e3d1 | 0200000000000000 ++ | 0200000000000015 | IsDisabled | False | 0200000000000000 ++ | 0200000000000015 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000015 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000015 | TargetPath | {Game}/mods/maestros_o...497d-bc79-63aac410e3d1 | 0200000000000000 ++ | 0200000000000015 | Hash | 0x14B2640C95011CBC | 0200000000000000 ++ | 0200000000000015 | Size | 128 B | 0200000000000000 ++ | 0200000000000016 | Name | 0fad4048-4e27-4aa0-a990-0cb0e78ffacb | 0200000000000000 ++ | 0200000000000016 | IsDisabled | False | 0200000000000000 ++ | 0200000000000016 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000016 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000016 | TargetPath | {Game}/mods/maestros_o...4aa0-a990-0cb0e78ffacb | 0200000000000000 ++ | 0200000000000016 | Hash | 0xFD95AB1301F6FA04 | 0200000000000000 ++ | 0200000000000016 | Size | 128 B | 0200000000000000 ++ | 0200000000000017 | Name | 24dbf6f8-502e-429b-869f-138bcf0a4748 | 0200000000000000 ++ | 0200000000000017 | IsDisabled | False | 0200000000000000 ++ | 0200000000000017 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000017 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000017 | TargetPath | {Game}/mods/maestros_o...429b-869f-138bcf0a4748 | 0200000000000000 ++ | 0200000000000017 | Hash | 0x65CCB3E9F2967B99 | 0200000000000000 ++ | 0200000000000017 | Size | 128 B | 0200000000000000 ++ | 0200000000000018 | Name | 58c6f080-5b33-44e6-b5b4-2197c787b57b | 0200000000000000 ++ | 0200000000000018 | IsDisabled | False | 0200000000000000 ++ | 0200000000000018 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000018 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000018 | TargetPath | {Game}/mods/maestros_o...44e6-b5b4-2197c787b57b | 0200000000000000 ++ | 0200000000000018 | Hash | 0xD0357AD100A4FDCE | 0200000000000000 ++ | 0200000000000018 | Size | 128 B | 0200000000000000 ++ | 0200000000000019 | Name | 641966f9-7c40-4f1d-8594-eb5a4432f845 | 0200000000000000 ++ | 0200000000000019 | IsDisabled | False | 0200000000000000 ++ | 0200000000000019 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000019 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000019 | TargetPath | {Game}/mods/maestros_o...4f1d-8594-eb5a4432f845 | 0200000000000000 ++ | 0200000000000019 | Hash | 0x8D3B8DEB47AD4B3F | 0200000000000000 ++ | 0200000000000019 | Size | 128 B | 0200000000000000 ++ | 020000000000001A | Name | 67f8612f-b2f0-4aa5-8739-1f8aba337dee | 0200000000000000 ++ | 020000000000001A | IsDisabled | False | 0200000000000000 ++ | 020000000000001A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000001A | Parent | 0200000000000012 | 0200000000000000 ++ | 020000000000001A | TargetPath | {Game}/mods/maestros_o...4aa5-8739-1f8aba337dee | 0200000000000000 ++ | 020000000000001A | Hash | 0x729C24F9501D3AF5 | 0200000000000000 ++ | 020000000000001A | Size | 128 B | 0200000000000000 ++ | 020000000000001B | Name | 78fd7a93-6943-4406-b275-686f448bb4ac | 0200000000000000 ++ | 020000000000001B | IsDisabled | False | 0200000000000000 ++ | 020000000000001B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000001B | Parent | 0200000000000012 | 0200000000000000 ++ | 020000000000001B | TargetPath | {Game}/mods/maestros_o...4406-b275-686f448bb4ac | 0200000000000000 ++ | 020000000000001B | Hash | 0x7620B4AA791514E3 | 0200000000000000 ++ | 020000000000001B | Size | 128 B | 0200000000000000 ++ | 020000000000001C | Name | 809b2a9f-1c5b-4dd1-8aab-c9afad77dd05 | 0200000000000000 ++ | 020000000000001C | IsDisabled | False | 0200000000000000 ++ | 020000000000001C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000001C | Parent | 0200000000000012 | 0200000000000000 ++ | 020000000000001C | TargetPath | {Game}/mods/maestros_o...4dd1-8aab-c9afad77dd05 | 0200000000000000 ++ | 020000000000001C | Hash | 0x09FBD52A5055067D | 0200000000000000 ++ | 020000000000001C | Size | 128 B | 0200000000000000 ++ | 020000000000001D | Name | 8d892d54-bd8c-4208-959a-58b9bc2d9868 | 0200000000000000 ++ | 020000000000001D | IsDisabled | False | 0200000000000000 ++ | 020000000000001D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000001D | Parent | 0200000000000012 | 0200000000000000 ++ | 020000000000001D | TargetPath | {Game}/mods/maestros_o...4208-959a-58b9bc2d9868 | 0200000000000000 ++ | 020000000000001D | Hash | 0xAA5AEA3FCDBAB94D | 0200000000000000 ++ | 020000000000001D | Size | 128 B | 0200000000000000 ++ | 020000000000001E | Name | a22d7b31-b0b3-4fbd-849c-26e3b8ecaae1 | 0200000000000000 ++ | 020000000000001E | IsDisabled | False | 0200000000000000 ++ | 020000000000001E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000001E | Parent | 0200000000000012 | 0200000000000000 ++ | 020000000000001E | TargetPath | {Game}/mods/maestros_o...4fbd-849c-26e3b8ecaae1 | 0200000000000000 ++ | 020000000000001E | Hash | 0x7B015AB6A324F9BA | 0200000000000000 ++ | 020000000000001E | Size | 128 B | 0200000000000000 ++ | 020000000000001F | Name | a8b51c6e-b9d9-43b8-b86e-ba1f23f1c803 | 0200000000000000 ++ | 020000000000001F | IsDisabled | False | 0200000000000000 ++ | 020000000000001F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000001F | Parent | 0200000000000012 | 0200000000000000 ++ | 020000000000001F | TargetPath | {Game}/mods/maestros_o...43b8-b86e-ba1f23f1c803 | 0200000000000000 ++ | 020000000000001F | Hash | 0xB156B9F815CC60EE | 0200000000000000 ++ | 020000000000001F | Size | 128 B | 0200000000000000 ++ | 0200000000000020 | Name | b8d40fc2-12c6-4cc4-95bf-83cf65673d6c | 0200000000000000 ++ | 0200000000000020 | IsDisabled | False | 0200000000000000 ++ | 0200000000000020 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000020 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000020 | TargetPath | {Game}/mods/maestros_o...4cc4-95bf-83cf65673d6c | 0200000000000000 ++ | 0200000000000020 | Hash | 0x136E9308D35FBD29 | 0200000000000000 ++ | 0200000000000020 | Size | 128 B | 0200000000000000 ++ | 0200000000000021 | Name | bfd959f0-cdb4-46c0-b252-fbb676fb0b02 | 0200000000000000 ++ | 0200000000000021 | IsDisabled | False | 0200000000000000 ++ | 0200000000000021 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000021 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000021 | TargetPath | {Game}/mods/maestros_o...46c0-b252-fbb676fb0b02 | 0200000000000000 ++ | 0200000000000021 | Hash | 0x59E2F470FCEAF197 | 0200000000000000 ++ | 0200000000000021 | Size | 128 B | 0200000000000000 ++ | 0200000000000022 | Name | eefe2410-c5fe-4518-ab96-d9a7ec2eec65 | 0200000000000000 ++ | 0200000000000022 | IsDisabled | False | 0200000000000000 ++ | 0200000000000022 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000022 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000022 | TargetPath | {Game}/mods/maestros_o...4518-ab96-d9a7ec2eec65 | 0200000000000000 ++ | 0200000000000022 | Hash | 0x13782FED9C063190 | 0200000000000000 ++ | 0200000000000022 | Size | 128 B | 0200000000000000 ++ | 0200000000000023 | Name | f9ee5b4f-7789-436a-b6ff-9a3daa6d01ad | 0200000000000000 ++ | 0200000000000023 | IsDisabled | False | 0200000000000000 ++ | 0200000000000023 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000023 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000023 | TargetPath | {Game}/mods/maestros_o...436a-b6ff-9a3daa6d01ad | 0200000000000000 ++ | 0200000000000023 | Hash | 0x61A19BD57E8A2998 | 0200000000000000 ++ | 0200000000000023 | Size | 128 B | 0200000000000000 ++ | 0200000000000013 | Name | Maestros of Synth - Morro Rock Radio | 0200000000000000 ++ | 0200000000000013 | Version | 1.6 | 0200000000000000 ++ | 0200000000000013 | Name | info.json | 0200000000000000 ++ | 0200000000000013 | IsDisabled | False | 0200000000000000 ++ | 0200000000000013 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000013 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000013 | TargetPath | {Game}/mods/maestros_o...o_rock_radio/info.json | 0200000000000000 ++ | 0200000000000013 | Hash | 0xCA0C8D8DF6AA9532 | 0200000000000000 ++ | 0200000000000013 | Size | 2.056 KB | 0200000000000000 ++ | 0200000000000024 | RedModInfoFile | 0200000000000025 | 0200000000000000 ++ | 0200000000000024 | Name | Maestros of Synth - Night FN | 0200000000000000 ++ | 0200000000000024 | IsDisabled | False | 0200000000000000 ++ | 0200000000000024 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000024 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000024 | GroupMarker | Null | 0200000000000000 ++ | 0200000000000026 | Name | 1838a296-fb33-4eca-9ffa-7cf9dbecbdad | 0200000000000000 ++ | 0200000000000026 | IsDisabled | False | 0200000000000000 ++ | 0200000000000026 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000026 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000026 | TargetPath | {Game}/mods/maestros_o...4eca-9ffa-7cf9dbecbdad | 0200000000000000 ++ | 0200000000000026 | Hash | 0x59E2F470FCEAF197 | 0200000000000000 ++ | 0200000000000026 | Size | 128 B | 0200000000000000 ++ | 0200000000000027 | Name | 2de29224-cd72-46f6-ae6d-2bb2e77e4d86 | 0200000000000000 ++ | 0200000000000027 | IsDisabled | False | 0200000000000000 ++ | 0200000000000027 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000027 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000027 | TargetPath | {Game}/mods/maestros_o...46f6-ae6d-2bb2e77e4d86 | 0200000000000000 ++ | 0200000000000027 | Hash | 0x122B3BB996FB16A9 | 0200000000000000 ++ | 0200000000000027 | Size | 128 B | 0200000000000000 ++ | 0200000000000028 | Name | 3f903833-aa24-4902-bd14-ee36848c059c | 0200000000000000 ++ | 0200000000000028 | IsDisabled | False | 0200000000000000 ++ | 0200000000000028 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000028 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000028 | TargetPath | {Game}/mods/maestros_o...4902-bd14-ee36848c059c | 0200000000000000 ++ | 0200000000000028 | Hash | 0x25F6C820A4DC6D61 | 0200000000000000 ++ | 0200000000000028 | Size | 128 B | 0200000000000000 ++ | 0200000000000029 | Name | 4c911c44-bb4d-4db1-95b4-d637d798d0cf | 0200000000000000 ++ | 0200000000000029 | IsDisabled | False | 0200000000000000 ++ | 0200000000000029 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000029 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000029 | TargetPath | {Game}/mods/maestros_o...4db1-95b4-d637d798d0cf | 0200000000000000 ++ | 0200000000000029 | Hash | 0x2E0551ADBA39338F | 0200000000000000 ++ | 0200000000000029 | Size | 128 B | 0200000000000000 ++ | 020000000000002A | Name | 5979464e-5612-4445-9f68-63d0a3a0000f | 0200000000000000 ++ | 020000000000002A | IsDisabled | False | 0200000000000000 ++ | 020000000000002A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000002A | Parent | 0200000000000024 | 0200000000000000 ++ | 020000000000002A | TargetPath | {Game}/mods/maestros_o...4445-9f68-63d0a3a0000f | 0200000000000000 ++ | 020000000000002A | Hash | 0xF11C1D68C49B2AB3 | 0200000000000000 ++ | 020000000000002A | Size | 128 B | 0200000000000000 ++ | 020000000000002B | Name | 618ad396-0a6c-48d5-b706-972ea943472c | 0200000000000000 ++ | 020000000000002B | IsDisabled | False | 0200000000000000 ++ | 020000000000002B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000002B | Parent | 0200000000000024 | 0200000000000000 ++ | 020000000000002B | TargetPath | {Game}/mods/maestros_o...48d5-b706-972ea943472c | 0200000000000000 ++ | 020000000000002B | Hash | 0xE3BE1F3358978055 | 0200000000000000 ++ | 020000000000002B | Size | 128 B | 0200000000000000 ++ | 020000000000002C | Name | 67029e37-396e-417a-9dd9-87f6b15d977f | 0200000000000000 ++ | 020000000000002C | IsDisabled | False | 0200000000000000 ++ | 020000000000002C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000002C | Parent | 0200000000000024 | 0200000000000000 ++ | 020000000000002C | TargetPath | {Game}/mods/maestros_o...417a-9dd9-87f6b15d977f | 0200000000000000 ++ | 020000000000002C | Hash | 0x823277C4D54EF694 | 0200000000000000 ++ | 020000000000002C | Size | 128 B | 0200000000000000 ++ | 020000000000002D | Name | 6d83c51a-93b1-41cd-9908-d986259309bc | 0200000000000000 ++ | 020000000000002D | IsDisabled | False | 0200000000000000 ++ | 020000000000002D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000002D | Parent | 0200000000000024 | 0200000000000000 ++ | 020000000000002D | TargetPath | {Game}/mods/maestros_o...41cd-9908-d986259309bc | 0200000000000000 ++ | 020000000000002D | Hash | 0xAF0728906C291C4B | 0200000000000000 ++ | 020000000000002D | Size | 128 B | 0200000000000000 ++ | 020000000000002E | Name | 74291a88-5c22-4dfb-964c-2b6dbcf12edd | 0200000000000000 ++ | 020000000000002E | IsDisabled | False | 0200000000000000 ++ | 020000000000002E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000002E | Parent | 0200000000000024 | 0200000000000000 ++ | 020000000000002E | TargetPath | {Game}/mods/maestros_o...4dfb-964c-2b6dbcf12edd | 0200000000000000 ++ | 020000000000002E | Hash | 0x8CBCC89253F8E319 | 0200000000000000 ++ | 020000000000002E | Size | 128 B | 0200000000000000 ++ | 020000000000002F | Name | 77bf3241-b60b-4455-b5b9-bb071fca4ec3 | 0200000000000000 ++ | 020000000000002F | IsDisabled | False | 0200000000000000 ++ | 020000000000002F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000002F | Parent | 0200000000000024 | 0200000000000000 ++ | 020000000000002F | TargetPath | {Game}/mods/maestros_o...4455-b5b9-bb071fca4ec3 | 0200000000000000 ++ | 020000000000002F | Hash | 0x4B210F24E722935B | 0200000000000000 ++ | 020000000000002F | Size | 128 B | 0200000000000000 ++ | 0200000000000030 | Name | 80072362-0c8b-4ab1-8738-8112ac711638 | 0200000000000000 ++ | 0200000000000030 | IsDisabled | False | 0200000000000000 ++ | 0200000000000030 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000030 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000030 | TargetPath | {Game}/mods/maestros_o...4ab1-8738-8112ac711638 | 0200000000000000 ++ | 0200000000000030 | Hash | 0x52F7C03C7F496796 | 0200000000000000 ++ | 0200000000000030 | Size | 128 B | 0200000000000000 ++ | 0200000000000031 | Name | a69a511a-3c5c-43bb-b5a3-2373a75126b9 | 0200000000000000 ++ | 0200000000000031 | IsDisabled | False | 0200000000000000 ++ | 0200000000000031 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000031 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000031 | TargetPath | {Game}/mods/maestros_o...43bb-b5a3-2373a75126b9 | 0200000000000000 ++ | 0200000000000031 | Hash | 0x2D3E9F1B31ABC53F | 0200000000000000 ++ | 0200000000000031 | Size | 128 B | 0200000000000000 ++ | 0200000000000032 | Name | db7a5d81-9345-48a9-8e42-5bf9e8625b9c | 0200000000000000 ++ | 0200000000000032 | IsDisabled | False | 0200000000000000 ++ | 0200000000000032 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000032 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000032 | TargetPath | {Game}/mods/maestros_o...48a9-8e42-5bf9e8625b9c | 0200000000000000 ++ | 0200000000000032 | Hash | 0x351A2DA79530C2E2 | 0200000000000000 ++ | 0200000000000032 | Size | 128 B | 0200000000000000 ++ | 0200000000000033 | Name | f6f80691-5481-4641-ae50-6df6c98401a8 | 0200000000000000 ++ | 0200000000000033 | IsDisabled | False | 0200000000000000 ++ | 0200000000000033 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000033 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000033 | TargetPath | {Game}/mods/maestros_o...4641-ae50-6df6c98401a8 | 0200000000000000 ++ | 0200000000000033 | Hash | 0x31C93FBF5F395F9A | 0200000000000000 ++ | 0200000000000033 | Size | 128 B | 0200000000000000 ++ | 0200000000000025 | Name | Maestros of Synth - Night FN | 0200000000000000 ++ | 0200000000000025 | Version | 1.6 | 0200000000000000 ++ | 0200000000000025 | Name | info.json | 0200000000000000 ++ | 0200000000000025 | IsDisabled | False | 0200000000000000 ++ | 0200000000000025 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000025 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000025 | TargetPath | {Game}/mods/maestros_of_synth_night_fn/info.json | 0200000000000000 ++ | 0200000000000025 | Hash | 0x3AAEF16F8C4F26A8 | 0200000000000000 ++ | 0200000000000025 | Size | 1.758 KB | 0200000000000000 ++ | 0200000000000034 | RedModInfoFile | 0200000000000035 | 0200000000000000 ++ | 0200000000000034 | Name | Maestros of Synth - Pacific Dreams | 0200000000000000 ++ | 0200000000000034 | IsDisabled | False | 0200000000000000 ++ | 0200000000000034 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000034 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000034 | GroupMarker | Null | 0200000000000000 ++ | 0200000000000036 | Name | 1779f39f-b829-4628-95b9-60b33e98d922 | 0200000000000000 ++ | 0200000000000036 | IsDisabled | False | 0200000000000000 ++ | 0200000000000036 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000036 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000036 | TargetPath | {Game}/mods/maestros_o...4628-95b9-60b33e98d922 | 0200000000000000 ++ | 0200000000000036 | Hash | 0x05AAE4065356B55C | 0200000000000000 ++ | 0200000000000036 | Size | 128 B | 0200000000000000 ++ | 0200000000000037 | Name | 1a1acdab-6134-4a2b-a71c-ab5275ef14bb | 0200000000000000 ++ | 0200000000000037 | IsDisabled | False | 0200000000000000 ++ | 0200000000000037 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000037 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000037 | TargetPath | {Game}/mods/maestros_o...4a2b-a71c-ab5275ef14bb | 0200000000000000 ++ | 0200000000000037 | Hash | 0x8F7269446AAEC41B | 0200000000000000 ++ | 0200000000000037 | Size | 128 B | 0200000000000000 ++ | 0200000000000038 | Name | 1b8b58bc-851c-4fee-a7b8-d097bd38a851 | 0200000000000000 ++ | 0200000000000038 | IsDisabled | False | 0200000000000000 ++ | 0200000000000038 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000038 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000038 | TargetPath | {Game}/mods/maestros_o...4fee-a7b8-d097bd38a851 | 0200000000000000 ++ | 0200000000000038 | Hash | 0x0CA3139E5A943A11 | 0200000000000000 ++ | 0200000000000038 | Size | 128 B | 0200000000000000 ++ | 0200000000000039 | Name | 37a96ea5-831b-4c3d-9a0a-4a0059947d39 | 0200000000000000 ++ | 0200000000000039 | IsDisabled | False | 0200000000000000 ++ | 0200000000000039 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000039 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000039 | TargetPath | {Game}/mods/maestros_o...4c3d-9a0a-4a0059947d39 | 0200000000000000 ++ | 0200000000000039 | Hash | 0x8993B54C29471EE0 | 0200000000000000 ++ | 0200000000000039 | Size | 128 B | 0200000000000000 ++ | 020000000000003A | Name | 39ba17a7-1a8e-43a1-99bf-44c98e9c3401 | 0200000000000000 ++ | 020000000000003A | IsDisabled | False | 0200000000000000 ++ | 020000000000003A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000003A | Parent | 0200000000000034 | 0200000000000000 ++ | 020000000000003A | TargetPath | {Game}/mods/maestros_o...43a1-99bf-44c98e9c3401 | 0200000000000000 ++ | 020000000000003A | Hash | 0x674686A2F1EE1D66 | 0200000000000000 ++ | 020000000000003A | Size | 128 B | 0200000000000000 ++ | 020000000000003B | Name | 4b74a4a5-2533-4ce0-ab0c-d368ada8f900 | 0200000000000000 ++ | 020000000000003B | IsDisabled | False | 0200000000000000 ++ | 020000000000003B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000003B | Parent | 0200000000000034 | 0200000000000000 ++ | 020000000000003B | TargetPath | {Game}/mods/maestros_o...4ce0-ab0c-d368ada8f900 | 0200000000000000 ++ | 020000000000003B | Hash | 0x9E6A4F3EE5C5A90A | 0200000000000000 ++ | 020000000000003B | Size | 128 B | 0200000000000000 ++ | 020000000000003C | Name | 626eef33-bc63-4a9a-9627-3b4f2ba997d5 | 0200000000000000 ++ | 020000000000003C | IsDisabled | False | 0200000000000000 ++ | 020000000000003C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000003C | Parent | 0200000000000034 | 0200000000000000 ++ | 020000000000003C | TargetPath | {Game}/mods/maestros_o...4a9a-9627-3b4f2ba997d5 | 0200000000000000 ++ | 020000000000003C | Hash | 0x68EFA9BB26F3692E | 0200000000000000 ++ | 020000000000003C | Size | 128 B | 0200000000000000 ++ | 020000000000003D | Name | 62ae5dae-872b-450d-ab02-0c2aa638a345 | 0200000000000000 ++ | 020000000000003D | IsDisabled | False | 0200000000000000 ++ | 020000000000003D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000003D | Parent | 0200000000000034 | 0200000000000000 ++ | 020000000000003D | TargetPath | {Game}/mods/maestros_o...450d-ab02-0c2aa638a345 | 0200000000000000 ++ | 020000000000003D | Hash | 0xE70780B3B8F770DC | 0200000000000000 ++ | 020000000000003D | Size | 128 B | 0200000000000000 ++ | 020000000000003E | Name | 638fae6d-6804-46f0-b346-99da0687430d | 0200000000000000 ++ | 020000000000003E | IsDisabled | False | 0200000000000000 ++ | 020000000000003E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000003E | Parent | 0200000000000034 | 0200000000000000 ++ | 020000000000003E | TargetPath | {Game}/mods/maestros_o...46f0-b346-99da0687430d | 0200000000000000 ++ | 020000000000003E | Hash | 0x4C7295EBE3403373 | 0200000000000000 ++ | 020000000000003E | Size | 128 B | 0200000000000000 ++ | 020000000000003F | Name | 7f9b6c23-8b2e-46b2-96b2-24bb15df379f | 0200000000000000 ++ | 020000000000003F | IsDisabled | False | 0200000000000000 ++ | 020000000000003F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000003F | Parent | 0200000000000034 | 0200000000000000 ++ | 020000000000003F | TargetPath | {Game}/mods/maestros_o...46b2-96b2-24bb15df379f | 0200000000000000 ++ | 020000000000003F | Hash | 0x7F99DA1A7CBE5358 | 0200000000000000 ++ | 020000000000003F | Size | 128 B | 0200000000000000 ++ | 0200000000000040 | Name | 894383a1-175d-43eb-b0ce-3aa4ba49c511 | 0200000000000000 ++ | 0200000000000040 | IsDisabled | False | 0200000000000000 ++ | 0200000000000040 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000040 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000040 | TargetPath | {Game}/mods/maestros_o...43eb-b0ce-3aa4ba49c511 | 0200000000000000 ++ | 0200000000000040 | Hash | 0xA12D04563E38F855 | 0200000000000000 ++ | 0200000000000040 | Size | 128 B | 0200000000000000 ++ | 0200000000000041 | Name | 9648af9f-5c1d-4ae8-b9f5-36fe9189cacc | 0200000000000000 ++ | 0200000000000041 | IsDisabled | False | 0200000000000000 ++ | 0200000000000041 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000041 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000041 | TargetPath | {Game}/mods/maestros_o...4ae8-b9f5-36fe9189cacc | 0200000000000000 ++ | 0200000000000041 | Hash | 0x42AEDD51C6F7BF22 | 0200000000000000 ++ | 0200000000000041 | Size | 128 B | 0200000000000000 ++ | 0200000000000042 | Name | 9c53b058-bfda-41e6-92de-9eddd62e6205 | 0200000000000000 ++ | 0200000000000042 | IsDisabled | False | 0200000000000000 ++ | 0200000000000042 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000042 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000042 | TargetPath | {Game}/mods/maestros_o...41e6-92de-9eddd62e6205 | 0200000000000000 ++ | 0200000000000042 | Hash | 0x4FE29195228C9060 | 0200000000000000 ++ | 0200000000000042 | Size | 128 B | 0200000000000000 ++ | 0200000000000043 | Name | a0d31047-b493-4808-98f8-20c88b5d237e | 0200000000000000 ++ | 0200000000000043 | IsDisabled | False | 0200000000000000 ++ | 0200000000000043 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000043 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000043 | TargetPath | {Game}/mods/maestros_o...4808-98f8-20c88b5d237e | 0200000000000000 ++ | 0200000000000043 | Hash | 0xD2D118F0C3756708 | 0200000000000000 ++ | 0200000000000043 | Size | 128 B | 0200000000000000 ++ | 0200000000000044 | Name | a52ce519-dee4-4a97-a55b-39377e98dfdf | 0200000000000000 ++ | 0200000000000044 | IsDisabled | False | 0200000000000000 ++ | 0200000000000044 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000044 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000044 | TargetPath | {Game}/mods/maestros_o...4a97-a55b-39377e98dfdf | 0200000000000000 ++ | 0200000000000044 | Hash | 0x7E574D15DAA7B409 | 0200000000000000 ++ | 0200000000000044 | Size | 128 B | 0200000000000000 ++ | 0200000000000045 | Name | c1598b5e-5d2b-4ced-afd9-8df8453bed19 | 0200000000000000 ++ | 0200000000000045 | IsDisabled | False | 0200000000000000 ++ | 0200000000000045 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000045 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000045 | TargetPath | {Game}/mods/maestros_o...4ced-afd9-8df8453bed19 | 0200000000000000 ++ | 0200000000000045 | Hash | 0x7D4BB7AA15CE3973 | 0200000000000000 ++ | 0200000000000045 | Size | 128 B | 0200000000000000 ++ | 0200000000000046 | Name | daaad5bc-5d4f-428e-a23c-1c960b9ef518 | 0200000000000000 ++ | 0200000000000046 | IsDisabled | False | 0200000000000000 ++ | 0200000000000046 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000046 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000046 | TargetPath | {Game}/mods/maestros_o...428e-a23c-1c960b9ef518 | 0200000000000000 ++ | 0200000000000046 | Hash | 0xC4588E3D40FC026F | 0200000000000000 ++ | 0200000000000046 | Size | 128 B | 0200000000000000 ++ | 0200000000000035 | Name | Maestros of Synth - Pacific Dreams | 0200000000000000 ++ | 0200000000000035 | Version | 1.6 | 0200000000000000 ++ | 0200000000000035 | Name | info.json | 0200000000000000 ++ | 0200000000000035 | IsDisabled | False | 0200000000000000 ++ | 0200000000000035 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000035 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000035 | TargetPath | {Game}/mods/maestros_o...cific_dreams/info.json | 0200000000000000 ++ | 0200000000000035 | Hash | 0x96F58C6863D6946B | 0200000000000000 ++ | 0200000000000035 | Size | 2.21 KB | 0200000000000000 ++ | 0200000000000047 | RedModInfoFile | 0200000000000048 | 0200000000000000 ++ | 0200000000000047 | Name | Maestros of Synth - Principales | 0200000000000000 ++ | 0200000000000047 | IsDisabled | False | 0200000000000000 ++ | 0200000000000047 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000047 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000047 | GroupMarker | Null | 0200000000000000 ++ | 0200000000000049 | Name | 485542b0-6f35-4ab5-bdd8-074292518e08 | 0200000000000000 ++ | 0200000000000049 | IsDisabled | False | 0200000000000000 ++ | 0200000000000049 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000049 | Parent | 0200000000000047 | 0200000000000000 ++ | 0200000000000049 | TargetPath | {Game}/mods/maestros_o...4ab5-bdd8-074292518e08 | 0200000000000000 ++ | 0200000000000049 | Hash | 0xA0BF391F2E052E9D | 0200000000000000 ++ | 0200000000000049 | Size | 128 B | 0200000000000000 ++ | 020000000000004A | Name | 4febc306-fc61-498b-a277-341d0508876a | 0200000000000000 ++ | 020000000000004A | IsDisabled | False | 0200000000000000 ++ | 020000000000004A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000004A | Parent | 0200000000000047 | 0200000000000000 ++ | 020000000000004A | TargetPath | {Game}/mods/maestros_o...498b-a277-341d0508876a | 0200000000000000 ++ | 020000000000004A | Hash | 0xAEE7BBBD2EFBA744 | 0200000000000000 ++ | 020000000000004A | Size | 128 B | 0200000000000000 ++ | 020000000000004B | Name | 54876684-b387-428e-a016-0417185287ef | 0200000000000000 ++ | 020000000000004B | IsDisabled | False | 0200000000000000 ++ | 020000000000004B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000004B | Parent | 0200000000000047 | 0200000000000000 ++ | 020000000000004B | TargetPath | {Game}/mods/maestros_o...428e-a016-0417185287ef | 0200000000000000 ++ | 020000000000004B | Hash | 0xDD9172A480DBCC50 | 0200000000000000 ++ | 020000000000004B | Size | 128 B | 0200000000000000 ++ | 020000000000004C | Name | 56d9a57a-4d02-422d-b2e1-7ce916de6ed6 | 0200000000000000 ++ | 020000000000004C | IsDisabled | False | 0200000000000000 ++ | 020000000000004C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000004C | Parent | 0200000000000047 | 0200000000000000 ++ | 020000000000004C | TargetPath | {Game}/mods/maestros_o...422d-b2e1-7ce916de6ed6 | 0200000000000000 ++ | 020000000000004C | Hash | 0x8532256A0658B2EC | 0200000000000000 ++ | 020000000000004C | Size | 128 B | 0200000000000000 ++ | 020000000000004D | Name | 7536c575-1ff4-49a7-bf33-a64dd2396f41 | 0200000000000000 ++ | 020000000000004D | IsDisabled | False | 0200000000000000 ++ | 020000000000004D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000004D | Parent | 0200000000000047 | 0200000000000000 ++ | 020000000000004D | TargetPath | {Game}/mods/maestros_o...49a7-bf33-a64dd2396f41 | 0200000000000000 ++ | 020000000000004D | Hash | 0xB26D1C56CC73422B | 0200000000000000 ++ | 020000000000004D | Size | 128 B | 0200000000000000 ++ | 020000000000004E | Name | 78c83375-c962-4312-a13d-119871ed35fb | 0200000000000000 ++ | 020000000000004E | IsDisabled | False | 0200000000000000 ++ | 020000000000004E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000004E | Parent | 0200000000000047 | 0200000000000000 ++ | 020000000000004E | TargetPath | {Game}/mods/maestros_o...4312-a13d-119871ed35fb | 0200000000000000 ++ | 020000000000004E | Hash | 0xF5B7E038DC779E37 | 0200000000000000 ++ | 020000000000004E | Size | 128 B | 0200000000000000 ++ | 020000000000004F | Name | ab8841df-1fd0-4cd1-b6a0-8b872c1dd105 | 0200000000000000 ++ | 020000000000004F | IsDisabled | False | 0200000000000000 ++ | 020000000000004F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000004F | Parent | 0200000000000047 | 0200000000000000 ++ | 020000000000004F | TargetPath | {Game}/mods/maestros_o...4cd1-b6a0-8b872c1dd105 | 0200000000000000 ++ | 020000000000004F | Hash | 0x8BB1B39B2E92FEF9 | 0200000000000000 ++ | 020000000000004F | Size | 128 B | 0200000000000000 ++ | 0200000000000050 | Name | bd0f0920-44c2-4151-a359-d789d892125c | 0200000000000000 ++ | 0200000000000050 | IsDisabled | False | 0200000000000000 ++ | 0200000000000050 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000050 | Parent | 0200000000000047 | 0200000000000000 ++ | 0200000000000050 | TargetPath | {Game}/mods/maestros_o...4151-a359-d789d892125c | 0200000000000000 ++ | 0200000000000050 | Hash | 0xDB375EB40E400BAF | 0200000000000000 ++ | 0200000000000050 | Size | 128 B | 0200000000000000 ++ | 0200000000000051 | Name | ce814e6c-c5d8-4d56-bf42-abd4092a4889 | 0200000000000000 ++ | 0200000000000051 | IsDisabled | False | 0200000000000000 ++ | 0200000000000051 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000051 | Parent | 0200000000000047 | 0200000000000000 ++ | 0200000000000051 | TargetPath | {Game}/mods/maestros_o...4d56-bf42-abd4092a4889 | 0200000000000000 ++ | 0200000000000051 | Hash | 0xF92BC754EF29EC77 | 0200000000000000 ++ | 0200000000000051 | Size | 128 B | 0200000000000000 ++ | 0200000000000052 | Name | df760316-9bd8-43d3-9492-031275d23850 | 0200000000000000 ++ | 0200000000000052 | IsDisabled | False | 0200000000000000 ++ | 0200000000000052 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000052 | Parent | 0200000000000047 | 0200000000000000 ++ | 0200000000000052 | TargetPath | {Game}/mods/maestros_o...43d3-9492-031275d23850 | 0200000000000000 ++ | 0200000000000052 | Hash | 0xDD60B4A3621B8268 | 0200000000000000 ++ | 0200000000000052 | Size | 128 B | 0200000000000000 ++ | 0200000000000053 | Name | eff920f1-b3d1-4ee3-84fc-1bca50ffcc73 | 0200000000000000 ++ | 0200000000000053 | IsDisabled | False | 0200000000000000 ++ | 0200000000000053 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000053 | Parent | 0200000000000047 | 0200000000000000 ++ | 0200000000000053 | TargetPath | {Game}/mods/maestros_o...4ee3-84fc-1bca50ffcc73 | 0200000000000000 ++ | 0200000000000053 | Hash | 0xFC80EA1A9F9A7D88 | 0200000000000000 ++ | 0200000000000053 | Size | 128 B | 0200000000000000 ++ | 0200000000000048 | Name | Maestros of Synth - Principales | 0200000000000000 ++ | 0200000000000048 | Version | 1.6 | 0200000000000000 ++ | 0200000000000048 | Name | info.json | 0200000000000000 ++ | 0200000000000048 | IsDisabled | False | 0200000000000000 ++ | 0200000000000048 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000048 | Parent | 0200000000000047 | 0200000000000000 ++ | 0200000000000048 | TargetPath | {Game}/mods/maestros_o..._principales/info.json | 0200000000000000 ++ | 0200000000000048 | Hash | 0x3AED48EE0D79B515 | 0200000000000000 ++ | 0200000000000048 | Size | 1.385 KB | 0200000000000000 ++ | 0200000000000054 | RedModInfoFile | 0200000000000055 | 0200000000000000 ++ | 0200000000000054 | Name | Maestros of Synth - Radio Pebkac | 0200000000000000 ++ | 0200000000000054 | IsDisabled | False | 0200000000000000 ++ | 0200000000000054 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000054 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000054 | GroupMarker | Null | 0200000000000000 ++ | 0200000000000056 | Name | 12641980-0bb6-4bfc-98eb-081d305f8086 | 0200000000000000 ++ | 0200000000000056 | IsDisabled | False | 0200000000000000 ++ | 0200000000000056 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000056 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000056 | TargetPath | {Game}/mods/maestros_o...4bfc-98eb-081d305f8086 | 0200000000000000 ++ | 0200000000000056 | Hash | 0x0B158F02E14C57D3 | 0200000000000000 ++ | 0200000000000056 | Size | 128 B | 0200000000000000 ++ | 0200000000000057 | Name | 12e7dfbc-53e2-4640-87d3-0b79f4728f04 | 0200000000000000 ++ | 0200000000000057 | IsDisabled | False | 0200000000000000 ++ | 0200000000000057 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000057 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000057 | TargetPath | {Game}/mods/maestros_o...4640-87d3-0b79f4728f04 | 0200000000000000 ++ | 0200000000000057 | Hash | 0xF0D30BA27279C7B8 | 0200000000000000 ++ | 0200000000000057 | Size | 128 B | 0200000000000000 ++ | 0200000000000058 | Name | 184ce1d7-3033-48a5-8846-4cbc7c4c4c2c | 0200000000000000 ++ | 0200000000000058 | IsDisabled | False | 0200000000000000 ++ | 0200000000000058 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000058 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000058 | TargetPath | {Game}/mods/maestros_o...48a5-8846-4cbc7c4c4c2c | 0200000000000000 ++ | 0200000000000058 | Hash | 0x134AC14D1E3B6DEF | 0200000000000000 ++ | 0200000000000058 | Size | 128 B | 0200000000000000 ++ | 0200000000000059 | Name | 358fc845-e77d-4e0e-a1d9-699a55f9d132 | 0200000000000000 ++ | 0200000000000059 | IsDisabled | False | 0200000000000000 ++ | 0200000000000059 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000059 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000059 | TargetPath | {Game}/mods/maestros_o...4e0e-a1d9-699a55f9d132 | 0200000000000000 ++ | 0200000000000059 | Hash | 0xDE3794A27600AD21 | 0200000000000000 ++ | 0200000000000059 | Size | 128 B | 0200000000000000 ++ | 020000000000005A | Name | 45929995-1f4c-48d9-a24f-2b2072f6549a | 0200000000000000 ++ | 020000000000005A | IsDisabled | False | 0200000000000000 ++ | 020000000000005A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000005A | Parent | 0200000000000054 | 0200000000000000 ++ | 020000000000005A | TargetPath | {Game}/mods/maestros_o...48d9-a24f-2b2072f6549a | 0200000000000000 ++ | 020000000000005A | Hash | 0x6B55BEBB60637111 | 0200000000000000 ++ | 020000000000005A | Size | 128 B | 0200000000000000 ++ | 020000000000005B | Name | 48f5542f-0ae8-404d-b35f-19b3fc8aecdd | 0200000000000000 ++ | 020000000000005B | IsDisabled | False | 0200000000000000 ++ | 020000000000005B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000005B | Parent | 0200000000000054 | 0200000000000000 ++ | 020000000000005B | TargetPath | {Game}/mods/maestros_o...404d-b35f-19b3fc8aecdd | 0200000000000000 ++ | 020000000000005B | Hash | 0x2CD77E8AB454A36B | 0200000000000000 ++ | 020000000000005B | Size | 128 B | 0200000000000000 ++ | 020000000000005C | Name | 574c9ace-f9a6-44c1-9dd4-7b4e6b76d273 | 0200000000000000 ++ | 020000000000005C | IsDisabled | False | 0200000000000000 ++ | 020000000000005C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000005C | Parent | 0200000000000054 | 0200000000000000 ++ | 020000000000005C | TargetPath | {Game}/mods/maestros_o...44c1-9dd4-7b4e6b76d273 | 0200000000000000 ++ | 020000000000005C | Hash | 0x3E725CCA261AD311 | 0200000000000000 ++ | 020000000000005C | Size | 128 B | 0200000000000000 ++ | 020000000000005D | Name | 630d3aa4-5ac4-4107-b16f-3bb1a37bdb69 | 0200000000000000 ++ | 020000000000005D | IsDisabled | False | 0200000000000000 ++ | 020000000000005D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000005D | Parent | 0200000000000054 | 0200000000000000 ++ | 020000000000005D | TargetPath | {Game}/mods/maestros_o...4107-b16f-3bb1a37bdb69 | 0200000000000000 ++ | 020000000000005D | Hash | 0x203C9243D2352D1F | 0200000000000000 ++ | 020000000000005D | Size | 128 B | 0200000000000000 ++ | 020000000000005E | Name | 6898166f-3148-44fa-a1e2-6251d6869c98 | 0200000000000000 ++ | 020000000000005E | IsDisabled | False | 0200000000000000 ++ | 020000000000005E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000005E | Parent | 0200000000000054 | 0200000000000000 ++ | 020000000000005E | TargetPath | {Game}/mods/maestros_o...44fa-a1e2-6251d6869c98 | 0200000000000000 ++ | 020000000000005E | Hash | 0x5C2D5B83B767E677 | 0200000000000000 ++ | 020000000000005E | Size | 128 B | 0200000000000000 ++ | 020000000000005F | Name | 6d1e1d58-7d32-4979-ac8f-b1a8443c0908 | 0200000000000000 ++ | 020000000000005F | IsDisabled | False | 0200000000000000 ++ | 020000000000005F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000005F | Parent | 0200000000000054 | 0200000000000000 ++ | 020000000000005F | TargetPath | {Game}/mods/maestros_o...4979-ac8f-b1a8443c0908 | 0200000000000000 ++ | 020000000000005F | Hash | 0x05B19E20A32702B7 | 0200000000000000 ++ | 020000000000005F | Size | 128 B | 0200000000000000 ++ | 0200000000000060 | Name | 835c3b61-8570-4938-9c0a-a3284af51c0e | 0200000000000000 ++ | 0200000000000060 | IsDisabled | False | 0200000000000000 ++ | 0200000000000060 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000060 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000060 | TargetPath | {Game}/mods/maestros_o...4938-9c0a-a3284af51c0e | 0200000000000000 ++ | 0200000000000060 | Hash | 0x62073F2A8B283534 | 0200000000000000 ++ | 0200000000000060 | Size | 128 B | 0200000000000000 ++ | 0200000000000061 | Name | a5185fce-767e-45b2-a139-b7aa455e551f | 0200000000000000 ++ | 0200000000000061 | IsDisabled | False | 0200000000000000 ++ | 0200000000000061 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000061 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000061 | TargetPath | {Game}/mods/maestros_o...45b2-a139-b7aa455e551f | 0200000000000000 ++ | 0200000000000061 | Hash | 0x207FDAAECDBF6F30 | 0200000000000000 ++ | 0200000000000061 | Size | 128 B | 0200000000000000 ++ | 0200000000000062 | Name | c83573a5-e0ec-4520-8dab-e1787f2ed7c7 | 0200000000000000 ++ | 0200000000000062 | IsDisabled | False | 0200000000000000 ++ | 0200000000000062 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000062 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000062 | TargetPath | {Game}/mods/maestros_o...4520-8dab-e1787f2ed7c7 | 0200000000000000 ++ | 0200000000000062 | Hash | 0xE32A5C10F6F8DCEA | 0200000000000000 ++ | 0200000000000062 | Size | 128 B | 0200000000000000 ++ | 0200000000000063 | Name | cba7f317-1ae1-4dea-9cab-0736d3f51898 | 0200000000000000 ++ | 0200000000000063 | IsDisabled | False | 0200000000000000 ++ | 0200000000000063 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000063 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000063 | TargetPath | {Game}/mods/maestros_o...4dea-9cab-0736d3f51898 | 0200000000000000 ++ | 0200000000000063 | Hash | 0x3FF9CA7DF6EF1565 | 0200000000000000 ++ | 0200000000000063 | Size | 128 B | 0200000000000000 ++ | 0200000000000064 | Name | e9f21389-aad2-4f23-af10-bc2088888dac | 0200000000000000 ++ | 0200000000000064 | IsDisabled | False | 0200000000000000 ++ | 0200000000000064 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000064 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000064 | TargetPath | {Game}/mods/maestros_o...4f23-af10-bc2088888dac | 0200000000000000 ++ | 0200000000000064 | Hash | 0xA0B34975E24D71A6 | 0200000000000000 ++ | 0200000000000064 | Size | 128 B | 0200000000000000 ++ | 0200000000000065 | Name | ed6d1d0e-e970-4b22-bb8c-2189228a2a6f | 0200000000000000 ++ | 0200000000000065 | IsDisabled | False | 0200000000000000 ++ | 0200000000000065 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000065 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000065 | TargetPath | {Game}/mods/maestros_o...4b22-bb8c-2189228a2a6f | 0200000000000000 ++ | 0200000000000065 | Hash | 0xB41D57857782D07C | 0200000000000000 ++ | 0200000000000065 | Size | 128 B | 0200000000000000 ++ | 0200000000000055 | Name | Maestros of Synth - Radio Pebkac | 0200000000000000 ++ | 0200000000000055 | Version | 1.6 | 0200000000000000 ++ | 0200000000000055 | Name | info.json | 0200000000000000 ++ | 0200000000000055 | IsDisabled | False | 0200000000000000 ++ | 0200000000000055 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000055 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000055 | TargetPath | {Game}/mods/maestros_o...radio_pebkac/info.json | 0200000000000000 ++ | 0200000000000055 | Hash | 0x65865B2196ACA997 | 0200000000000000 ++ | 0200000000000055 | Size | 2.105 KB | 0200000000000000 ++ | 0200000000000066 | RedModInfoFile | 0200000000000067 | 0200000000000000 ++ | 0200000000000066 | Name | Maestros of Synth - Radio Vexelstorm | 0200000000000000 ++ | 0200000000000066 | IsDisabled | False | 0200000000000000 ++ | 0200000000000066 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000066 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000066 | GroupMarker | Null | 0200000000000000 ++ | 0200000000000068 | Name | 0022aba5-fe2c-411e-a9b3-5133bac9da88 | 0200000000000000 ++ | 0200000000000068 | IsDisabled | False | 0200000000000000 ++ | 0200000000000068 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000068 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000068 | TargetPath | {Game}/mods/maestros_o...411e-a9b3-5133bac9da88 | 0200000000000000 ++ | 0200000000000068 | Hash | 0x0EADD070AE8F66C6 | 0200000000000000 ++ | 0200000000000068 | Size | 128 B | 0200000000000000 ++ | 0200000000000069 | Name | 246d2b75-ad25-40aa-ba48-cbd9e83337b2 | 0200000000000000 ++ | 0200000000000069 | IsDisabled | False | 0200000000000000 ++ | 0200000000000069 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000069 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000069 | TargetPath | {Game}/mods/maestros_o...40aa-ba48-cbd9e83337b2 | 0200000000000000 ++ | 0200000000000069 | Hash | 0x3A35B0564CABB1B2 | 0200000000000000 ++ | 0200000000000069 | Size | 128 B | 0200000000000000 ++ | 020000000000006A | Name | 3f734130-4f23-4571-92ff-b201423a10af | 0200000000000000 ++ | 020000000000006A | IsDisabled | False | 0200000000000000 ++ | 020000000000006A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000006A | Parent | 0200000000000066 | 0200000000000000 ++ | 020000000000006A | TargetPath | {Game}/mods/maestros_o...4571-92ff-b201423a10af | 0200000000000000 ++ | 020000000000006A | Hash | 0xD5D6BBFEE92EAF40 | 0200000000000000 ++ | 020000000000006A | Size | 128 B | 0200000000000000 ++ | 020000000000006B | Name | 6215065b-8be1-4d93-b2e3-73c55f050699 | 0200000000000000 ++ | 020000000000006B | IsDisabled | False | 0200000000000000 ++ | 020000000000006B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000006B | Parent | 0200000000000066 | 0200000000000000 ++ | 020000000000006B | TargetPath | {Game}/mods/maestros_o...4d93-b2e3-73c55f050699 | 0200000000000000 ++ | 020000000000006B | Hash | 0x6D024826FE16A1E5 | 0200000000000000 ++ | 020000000000006B | Size | 128 B | 0200000000000000 ++ | 020000000000006C | Name | 7b3865bc-c428-4371-b82e-820c185136bc | 0200000000000000 ++ | 020000000000006C | IsDisabled | False | 0200000000000000 ++ | 020000000000006C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000006C | Parent | 0200000000000066 | 0200000000000000 ++ | 020000000000006C | TargetPath | {Game}/mods/maestros_o...4371-b82e-820c185136bc | 0200000000000000 ++ | 020000000000006C | Hash | 0x94F7712AC6EF8397 | 0200000000000000 ++ | 020000000000006C | Size | 128 B | 0200000000000000 ++ | 020000000000006D | Name | 83fe9b05-8c9f-4d5d-bd8b-cae8c6b51ad9 | 0200000000000000 ++ | 020000000000006D | IsDisabled | False | 0200000000000000 ++ | 020000000000006D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000006D | Parent | 0200000000000066 | 0200000000000000 ++ | 020000000000006D | TargetPath | {Game}/mods/maestros_o...4d5d-bd8b-cae8c6b51ad9 | 0200000000000000 ++ | 020000000000006D | Hash | 0x1B13FEFFF4187F2B | 0200000000000000 ++ | 020000000000006D | Size | 128 B | 0200000000000000 ++ | 020000000000006E | Name | 992405e9-9a2c-473d-a197-f2454123452d | 0200000000000000 ++ | 020000000000006E | IsDisabled | False | 0200000000000000 ++ | 020000000000006E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000006E | Parent | 0200000000000066 | 0200000000000000 ++ | 020000000000006E | TargetPath | {Game}/mods/maestros_o...473d-a197-f2454123452d | 0200000000000000 ++ | 020000000000006E | Hash | 0x62745A3C8B0852FA | 0200000000000000 ++ | 020000000000006E | Size | 128 B | 0200000000000000 ++ | 020000000000006F | Name | 9ab79491-909f-4d56-aab8-2d2945370479 | 0200000000000000 ++ | 020000000000006F | IsDisabled | False | 0200000000000000 ++ | 020000000000006F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000006F | Parent | 0200000000000066 | 0200000000000000 ++ | 020000000000006F | TargetPath | {Game}/mods/maestros_o...4d56-aab8-2d2945370479 | 0200000000000000 ++ | 020000000000006F | Hash | 0xB1BED755239E2BA4 | 0200000000000000 ++ | 020000000000006F | Size | 128 B | 0200000000000000 ++ | 0200000000000070 | Name | 9d30176c-623d-4638-aeee-a5507f650ac1 | 0200000000000000 ++ | 0200000000000070 | IsDisabled | False | 0200000000000000 ++ | 0200000000000070 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000070 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000070 | TargetPath | {Game}/mods/maestros_o...4638-aeee-a5507f650ac1 | 0200000000000000 ++ | 0200000000000070 | Hash | 0xDC2B358BBB974A67 | 0200000000000000 ++ | 0200000000000070 | Size | 128 B | 0200000000000000 ++ | 0200000000000071 | Name | a67b39c2-ec0a-4650-8ed8-b7c096035691 | 0200000000000000 ++ | 0200000000000071 | IsDisabled | False | 0200000000000000 ++ | 0200000000000071 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000071 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000071 | TargetPath | {Game}/mods/maestros_o...4650-8ed8-b7c096035691 | 0200000000000000 ++ | 0200000000000071 | Hash | 0x8D5567860E09F5C7 | 0200000000000000 ++ | 0200000000000071 | Size | 128 B | 0200000000000000 ++ | 0200000000000072 | Name | a7bf4696-4e9a-4e65-a49f-a12478a44fbd | 0200000000000000 ++ | 0200000000000072 | IsDisabled | False | 0200000000000000 ++ | 0200000000000072 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000072 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000072 | TargetPath | {Game}/mods/maestros_o...4e65-a49f-a12478a44fbd | 0200000000000000 ++ | 0200000000000072 | Hash | 0xB3143BFA0C0F66B6 | 0200000000000000 ++ | 0200000000000072 | Size | 128 B | 0200000000000000 ++ | 0200000000000073 | Name | ac5a0871-21b9-4150-b0df-fd477e76dc87 | 0200000000000000 ++ | 0200000000000073 | IsDisabled | False | 0200000000000000 ++ | 0200000000000073 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000073 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000073 | TargetPath | {Game}/mods/maestros_o...4150-b0df-fd477e76dc87 | 0200000000000000 ++ | 0200000000000073 | Hash | 0xF28E87D43A015F74 | 0200000000000000 ++ | 0200000000000073 | Size | 128 B | 0200000000000000 ++ | 0200000000000074 | Name | b6945df3-0856-4f13-bba8-765124dc5e50 | 0200000000000000 ++ | 0200000000000074 | IsDisabled | False | 0200000000000000 ++ | 0200000000000074 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000074 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000074 | TargetPath | {Game}/mods/maestros_o...4f13-bba8-765124dc5e50 | 0200000000000000 ++ | 0200000000000074 | Hash | 0x37F6EA4CDB0EAA4D | 0200000000000000 ++ | 0200000000000074 | Size | 128 B | 0200000000000000 ++ | 0200000000000075 | Name | bc9ff1ec-4a25-4e08-8f7d-341d3244c9df | 0200000000000000 ++ | 0200000000000075 | IsDisabled | False | 0200000000000000 ++ | 0200000000000075 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000075 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000075 | TargetPath | {Game}/mods/maestros_o...4e08-8f7d-341d3244c9df | 0200000000000000 ++ | 0200000000000075 | Hash | 0x1F2C8A4FECE37CB5 | 0200000000000000 ++ | 0200000000000075 | Size | 128 B | 0200000000000000 ++ | 0200000000000076 | Name | c503c072-213a-4533-a294-5675b38735e0 | 0200000000000000 ++ | 0200000000000076 | IsDisabled | False | 0200000000000000 ++ | 0200000000000076 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000076 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000076 | TargetPath | {Game}/mods/maestros_o...4533-a294-5675b38735e0 | 0200000000000000 ++ | 0200000000000076 | Hash | 0x2F94D4376219DEA7 | 0200000000000000 ++ | 0200000000000076 | Size | 128 B | 0200000000000000 ++ | 0200000000000067 | Name | Maestros of Synth - Radio Vexelstorm | 0200000000000000 ++ | 0200000000000067 | Version | 1.6 | 0200000000000000 ++ | 0200000000000067 | Name | info.json | 0200000000000000 ++ | 0200000000000067 | IsDisabled | False | 0200000000000000 ++ | 0200000000000067 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000067 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000067 | TargetPath | {Game}/mods/maestros_o...o_vexelstorm/info.json | 0200000000000000 ++ | 0200000000000067 | Hash | 0xC5A823BF470F9F39 | 0200000000000000 ++ | 0200000000000067 | Size | 1.963 KB | 0200000000000000 ++ | 0200000000000077 | RedModInfoFile | 0200000000000078 | 0200000000000000 ++ | 0200000000000077 | Name | Maestros of Synth - Ritual FM | 0200000000000000 ++ | 0200000000000077 | IsDisabled | False | 0200000000000000 ++ | 0200000000000077 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000077 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000077 | GroupMarker | Null | 0200000000000000 ++ | 0200000000000079 | Name | 3c90ddc2-3b63-4d4d-bf95-8eefceb437d4 | 0200000000000000 ++ | 0200000000000079 | IsDisabled | False | 0200000000000000 ++ | 0200000000000079 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000079 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000079 | TargetPath | {Game}/mods/maestros_o...4d4d-bf95-8eefceb437d4 | 0200000000000000 ++ | 0200000000000079 | Hash | 0x2268FD197B978735 | 0200000000000000 ++ | 0200000000000079 | Size | 128 B | 0200000000000000 ++ | 020000000000007A | Name | 3d3a0b99-d137-4e12-b2e4-6b7c680b23a1 | 0200000000000000 ++ | 020000000000007A | IsDisabled | False | 0200000000000000 ++ | 020000000000007A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000007A | Parent | 0200000000000077 | 0200000000000000 ++ | 020000000000007A | TargetPath | {Game}/mods/maestros_o...4e12-b2e4-6b7c680b23a1 | 0200000000000000 ++ | 020000000000007A | Hash | 0xF2CEB393045E491E | 0200000000000000 ++ | 020000000000007A | Size | 128 B | 0200000000000000 ++ | 020000000000007B | Name | 400ebd45-eb73-4398-9647-4f130ab1791b | 0200000000000000 ++ | 020000000000007B | IsDisabled | False | 0200000000000000 ++ | 020000000000007B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000007B | Parent | 0200000000000077 | 0200000000000000 ++ | 020000000000007B | TargetPath | {Game}/mods/maestros_o...4398-9647-4f130ab1791b | 0200000000000000 ++ | 020000000000007B | Hash | 0x8E398171DD710A42 | 0200000000000000 ++ | 020000000000007B | Size | 128 B | 0200000000000000 ++ | 020000000000007C | Name | 41279c2c-6c6e-44a4-b43d-2f8988f3525f | 0200000000000000 ++ | 020000000000007C | IsDisabled | False | 0200000000000000 ++ | 020000000000007C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000007C | Parent | 0200000000000077 | 0200000000000000 ++ | 020000000000007C | TargetPath | {Game}/mods/maestros_o...44a4-b43d-2f8988f3525f | 0200000000000000 ++ | 020000000000007C | Hash | 0x39EF8FE13EB1B684 | 0200000000000000 ++ | 020000000000007C | Size | 128 B | 0200000000000000 ++ | 020000000000007D | Name | 6862a652-9c9b-4e1d-9d3f-02a3baad9130 | 0200000000000000 ++ | 020000000000007D | IsDisabled | False | 0200000000000000 ++ | 020000000000007D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000007D | Parent | 0200000000000077 | 0200000000000000 ++ | 020000000000007D | TargetPath | {Game}/mods/maestros_o...4e1d-9d3f-02a3baad9130 | 0200000000000000 ++ | 020000000000007D | Hash | 0x30364FDEAE00D0C0 | 0200000000000000 ++ | 020000000000007D | Size | 128 B | 0200000000000000 ++ | 020000000000007E | Name | 6b068726-7c2b-4932-8e07-98c30bcb8f93 | 0200000000000000 ++ | 020000000000007E | IsDisabled | False | 0200000000000000 ++ | 020000000000007E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000007E | Parent | 0200000000000077 | 0200000000000000 ++ | 020000000000007E | TargetPath | {Game}/mods/maestros_o...4932-8e07-98c30bcb8f93 | 0200000000000000 ++ | 020000000000007E | Hash | 0x717778B943EB38D9 | 0200000000000000 ++ | 020000000000007E | Size | 128 B | 0200000000000000 ++ | 020000000000007F | Name | 6f97ad80-a172-44ad-b928-87e0be28a136 | 0200000000000000 ++ | 020000000000007F | IsDisabled | False | 0200000000000000 ++ | 020000000000007F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000007F | Parent | 0200000000000077 | 0200000000000000 ++ | 020000000000007F | TargetPath | {Game}/mods/maestros_o...44ad-b928-87e0be28a136 | 0200000000000000 ++ | 020000000000007F | Hash | 0x100F660EAAFAB06C | 0200000000000000 ++ | 020000000000007F | Size | 128 B | 0200000000000000 ++ | 0200000000000080 | Name | 8c8b7333-ad17-4cd0-ba81-29bc8b4dd563 | 0200000000000000 ++ | 0200000000000080 | IsDisabled | False | 0200000000000000 ++ | 0200000000000080 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000080 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000080 | TargetPath | {Game}/mods/maestros_o...4cd0-ba81-29bc8b4dd563 | 0200000000000000 ++ | 0200000000000080 | Hash | 0xE466175EBAEA6708 | 0200000000000000 ++ | 0200000000000080 | Size | 128 B | 0200000000000000 ++ | 0200000000000081 | Name | 8f317337-91a6-4280-afac-702189b7b614 | 0200000000000000 ++ | 0200000000000081 | IsDisabled | False | 0200000000000000 ++ | 0200000000000081 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000081 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000081 | TargetPath | {Game}/mods/maestros_o...4280-afac-702189b7b614 | 0200000000000000 ++ | 0200000000000081 | Hash | 0xEB7B8B280FD82993 | 0200000000000000 ++ | 0200000000000081 | Size | 128 B | 0200000000000000 ++ | 0200000000000082 | Name | 9a062be7-26f0-4a32-b949-6b8c3aa39980 | 0200000000000000 ++ | 0200000000000082 | IsDisabled | False | 0200000000000000 ++ | 0200000000000082 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000082 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000082 | TargetPath | {Game}/mods/maestros_o...4a32-b949-6b8c3aa39980 | 0200000000000000 ++ | 0200000000000082 | Hash | 0x5B4A8BD4CD5AF85F | 0200000000000000 ++ | 0200000000000082 | Size | 128 B | 0200000000000000 ++ | 0200000000000083 | Name | b4d16d05-73cd-42b9-a70c-509d08066dcf | 0200000000000000 ++ | 0200000000000083 | IsDisabled | False | 0200000000000000 ++ | 0200000000000083 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000083 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000083 | TargetPath | {Game}/mods/maestros_o...42b9-a70c-509d08066dcf | 0200000000000000 ++ | 0200000000000083 | Hash | 0x06B8A3DE8BDD1238 | 0200000000000000 ++ | 0200000000000083 | Size | 128 B | 0200000000000000 ++ | 0200000000000084 | Name | cfa6b788-1825-49a9-9136-e9ec237b0025 | 0200000000000000 ++ | 0200000000000084 | IsDisabled | False | 0200000000000000 ++ | 0200000000000084 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000084 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000084 | TargetPath | {Game}/mods/maestros_o...49a9-9136-e9ec237b0025 | 0200000000000000 ++ | 0200000000000084 | Hash | 0x42127FA26D4142AC | 0200000000000000 ++ | 0200000000000084 | Size | 128 B | 0200000000000000 ++ | 0200000000000085 | Name | ecf8ab06-a867-438d-9093-b7256f31efca | 0200000000000000 ++ | 0200000000000085 | IsDisabled | False | 0200000000000000 ++ | 0200000000000085 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000085 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000085 | TargetPath | {Game}/mods/maestros_o...438d-9093-b7256f31efca | 0200000000000000 ++ | 0200000000000085 | Hash | 0x68E6D1957A8A3F29 | 0200000000000000 ++ | 0200000000000085 | Size | 128 B | 0200000000000000 ++ | 0200000000000086 | Name | f2842409-0ceb-4d29-8f85-6a9a4436323f | 0200000000000000 ++ | 0200000000000086 | IsDisabled | False | 0200000000000000 ++ | 0200000000000086 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000086 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000086 | TargetPath | {Game}/mods/maestros_o...4d29-8f85-6a9a4436323f | 0200000000000000 ++ | 0200000000000086 | Hash | 0x7503F71974AF5063 | 0200000000000000 ++ | 0200000000000086 | Size | 128 B | 0200000000000000 ++ | 0200000000000078 | Name | Maestros of Synth - Ritual FM | 0200000000000000 ++ | 0200000000000078 | Version | 1.6 | 0200000000000000 ++ | 0200000000000078 | Name | info.json | 0200000000000000 ++ | 0200000000000078 | IsDisabled | False | 0200000000000000 ++ | 0200000000000078 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000078 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000078 | TargetPath | {Game}/mods/maestros_o...th_ritual_fm/info.json | 0200000000000000 ++ | 0200000000000078 | Hash | 0x6A7DB76E32F9466C | 0200000000000000 ++ | 0200000000000078 | Size | 1.733 KB | 0200000000000000 ++ | 0200000000000087 | RedModInfoFile | 0200000000000088 | 0200000000000000 ++ | 0200000000000087 | Name | Maestros of Synth - Royal Blue Radio | 0200000000000000 ++ | 0200000000000087 | IsDisabled | False | 0200000000000000 ++ | 0200000000000087 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000087 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000087 | GroupMarker | Null | 0200000000000000 ++ | 0200000000000089 | Name | 2b6e73bf-f34a-46a0-8f87-3e32858f1af1 | 0200000000000000 ++ | 0200000000000089 | IsDisabled | False | 0200000000000000 ++ | 0200000000000089 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000089 | Parent | 0200000000000087 | 0200000000000000 ++ | 0200000000000089 | TargetPath | {Game}/mods/maestros_o...46a0-8f87-3e32858f1af1 | 0200000000000000 ++ | 0200000000000089 | Hash | 0xAAD635D4CC0638E8 | 0200000000000000 ++ | 0200000000000089 | Size | 128 B | 0200000000000000 ++ | 020000000000008A | Name | 315b0745-4971-4fad-b498-914faa967f20 | 0200000000000000 ++ | 020000000000008A | IsDisabled | False | 0200000000000000 ++ | 020000000000008A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000008A | Parent | 0200000000000087 | 0200000000000000 ++ | 020000000000008A | TargetPath | {Game}/mods/maestros_o...4fad-b498-914faa967f20 | 0200000000000000 ++ | 020000000000008A | Hash | 0x2CCC985E6F6462BC | 0200000000000000 ++ | 020000000000008A | Size | 128 B | 0200000000000000 ++ | 020000000000008B | Name | 5929f47d-d708-4611-a51a-753cc07d6ce5 | 0200000000000000 ++ | 020000000000008B | IsDisabled | False | 0200000000000000 ++ | 020000000000008B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000008B | Parent | 0200000000000087 | 0200000000000000 ++ | 020000000000008B | TargetPath | {Game}/mods/maestros_o...4611-a51a-753cc07d6ce5 | 0200000000000000 ++ | 020000000000008B | Hash | 0xA8FD0E4538B551E8 | 0200000000000000 ++ | 020000000000008B | Size | 128 B | 0200000000000000 ++ | 020000000000008C | Name | 69f604bf-e51e-4a9a-9b1f-fab52ebbe11d | 0200000000000000 ++ | 020000000000008C | IsDisabled | False | 0200000000000000 ++ | 020000000000008C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000008C | Parent | 0200000000000087 | 0200000000000000 ++ | 020000000000008C | TargetPath | {Game}/mods/maestros_o...4a9a-9b1f-fab52ebbe11d | 0200000000000000 ++ | 020000000000008C | Hash | 0x9CEC62EF2700CBA6 | 0200000000000000 ++ | 020000000000008C | Size | 128 B | 0200000000000000 ++ | 020000000000008D | Name | 6cfd3a0b-a3a1-4adb-8002-46aaba150b89 | 0200000000000000 ++ | 020000000000008D | IsDisabled | False | 0200000000000000 ++ | 020000000000008D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000008D | Parent | 0200000000000087 | 0200000000000000 ++ | 020000000000008D | TargetPath | {Game}/mods/maestros_o...4adb-8002-46aaba150b89 | 0200000000000000 ++ | 020000000000008D | Hash | 0x4449C5FF017040B5 | 0200000000000000 ++ | 020000000000008D | Size | 128 B | 0200000000000000 ++ | 020000000000008E | Name | b0fa635b-ae73-44eb-909d-b1827da5bd20 | 0200000000000000 ++ | 020000000000008E | IsDisabled | False | 0200000000000000 ++ | 020000000000008E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000008E | Parent | 0200000000000087 | 0200000000000000 ++ | 020000000000008E | TargetPath | {Game}/mods/maestros_o...44eb-909d-b1827da5bd20 | 0200000000000000 ++ | 020000000000008E | Hash | 0x1495A4259EC51033 | 0200000000000000 ++ | 020000000000008E | Size | 128 B | 0200000000000000 ++ | 020000000000008F | Name | b1cd4941-6c81-4889-a7a4-698494fe9cbe | 0200000000000000 ++ | 020000000000008F | IsDisabled | False | 0200000000000000 ++ | 020000000000008F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000008F | Parent | 0200000000000087 | 0200000000000000 ++ | 020000000000008F | TargetPath | {Game}/mods/maestros_o...4889-a7a4-698494fe9cbe | 0200000000000000 ++ | 020000000000008F | Hash | 0xE58E2552F378C7F5 | 0200000000000000 ++ | 020000000000008F | Size | 128 B | 0200000000000000 ++ | 0200000000000090 | Name | b2579264-5120-48ca-8ff8-eb679a2613b9 | 0200000000000000 ++ | 0200000000000090 | IsDisabled | False | 0200000000000000 ++ | 0200000000000090 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000090 | Parent | 0200000000000087 | 0200000000000000 ++ | 0200000000000090 | TargetPath | {Game}/mods/maestros_o...48ca-8ff8-eb679a2613b9 | 0200000000000000 ++ | 0200000000000090 | Hash | 0x1BA41E1EDF57D304 | 0200000000000000 ++ | 0200000000000090 | Size | 128 B | 0200000000000000 ++ | 0200000000000091 | Name | d24016c0-275e-4747-9d69-2d6517c7b8da | 0200000000000000 ++ | 0200000000000091 | IsDisabled | False | 0200000000000000 ++ | 0200000000000091 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000091 | Parent | 0200000000000087 | 0200000000000000 ++ | 0200000000000091 | TargetPath | {Game}/mods/maestros_o...4747-9d69-2d6517c7b8da | 0200000000000000 ++ | 0200000000000091 | Hash | 0x21B6507DE495A81B | 0200000000000000 ++ | 0200000000000091 | Size | 128 B | 0200000000000000 ++ | 0200000000000088 | Name | Maestros of Synth - Royal Blue Radio | 0200000000000000 ++ | 0200000000000088 | Version | 1.6 | 0200000000000000 ++ | 0200000000000088 | Name | info.json | 0200000000000000 ++ | 0200000000000088 | IsDisabled | False | 0200000000000000 ++ | 0200000000000088 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000088 | Parent | 0200000000000087 | 0200000000000000 ++ | 0200000000000088 | TargetPath | {Game}/mods/maestros_o...l_blue_radio/info.json | 0200000000000000 ++ | 0200000000000088 | Hash | 0x2DA4BC71D1A02D3E | 0200000000000000 ++ | 0200000000000088 | Size | 1.177 KB | 0200000000000000 ++ | 0200000000000092 | RedModInfoFile | 0200000000000093 | 0200000000000000 ++ | 0200000000000092 | Name | Maestros of Synth - SAMIZDAT RADIO | 0200000000000000 ++ | 0200000000000092 | IsDisabled | False | 0200000000000000 ++ | 0200000000000092 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000092 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000092 | GroupMarker | Null | 0200000000000000 ++ | 0200000000000094 | Name | 0969fbd3-d49d-4164-a761-a3834d09ec3f | 0200000000000000 ++ | 0200000000000094 | IsDisabled | False | 0200000000000000 ++ | 0200000000000094 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000094 | Parent | 0200000000000092 | 0200000000000000 ++ | 0200000000000094 | TargetPath | {Game}/mods/maestros_o...4164-a761-a3834d09ec3f | 0200000000000000 ++ | 0200000000000094 | Hash | 0x643C4CF854E46116 | 0200000000000000 ++ | 0200000000000094 | Size | 128 B | 0200000000000000 ++ | 0200000000000095 | Name | 0da9ff57-c307-48b9-b784-a8f1458c5755 | 0200000000000000 ++ | 0200000000000095 | IsDisabled | False | 0200000000000000 ++ | 0200000000000095 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000095 | Parent | 0200000000000092 | 0200000000000000 ++ | 0200000000000095 | TargetPath | {Game}/mods/maestros_o...48b9-b784-a8f1458c5755 | 0200000000000000 ++ | 0200000000000095 | Hash | 0x214ACC8963E03535 | 0200000000000000 ++ | 0200000000000095 | Size | 128 B | 0200000000000000 ++ | 0200000000000096 | Name | 23d481f5-e498-45d0-88d5-593979b52834 | 0200000000000000 ++ | 0200000000000096 | IsDisabled | False | 0200000000000000 ++ | 0200000000000096 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000096 | Parent | 0200000000000092 | 0200000000000000 ++ | 0200000000000096 | TargetPath | {Game}/mods/maestros_o...45d0-88d5-593979b52834 | 0200000000000000 ++ | 0200000000000096 | Hash | 0x20C8C57B2F1BCC5B | 0200000000000000 ++ | 0200000000000096 | Size | 128 B | 0200000000000000 ++ | 0200000000000097 | Name | 3cb7fa2e-eea6-41c9-a5b1-e774f1aa56a0 | 0200000000000000 ++ | 0200000000000097 | IsDisabled | False | 0200000000000000 ++ | 0200000000000097 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000097 | Parent | 0200000000000092 | 0200000000000000 ++ | 0200000000000097 | TargetPath | {Game}/mods/maestros_o...41c9-a5b1-e774f1aa56a0 | 0200000000000000 ++ | 0200000000000097 | Hash | 0xA3150E0793013AFB | 0200000000000000 ++ | 0200000000000097 | Size | 128 B | 0200000000000000 ++ | 0200000000000098 | Name | 70c05a84-8dac-44a4-9420-5ad89f6302db | 0200000000000000 ++ | 0200000000000098 | IsDisabled | False | 0200000000000000 ++ | 0200000000000098 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000098 | Parent | 0200000000000092 | 0200000000000000 ++ | 0200000000000098 | TargetPath | {Game}/mods/maestros_o...44a4-9420-5ad89f6302db | 0200000000000000 ++ | 0200000000000098 | Hash | 0x8280D76D1596C3E4 | 0200000000000000 ++ | 0200000000000098 | Size | 128 B | 0200000000000000 ++ | 0200000000000093 | Name | Maestros of Synth - SAMIZDAT RADIO | 0200000000000000 ++ | 0200000000000093 | Version | 1.6 | 0200000000000000 ++ | 0200000000000093 | Name | info.json | 0200000000000000 ++ | 0200000000000093 | IsDisabled | False | 0200000000000000 ++ | 0200000000000093 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000093 | Parent | 0200000000000092 | 0200000000000000 ++ | 0200000000000093 | TargetPath | {Game}/mods/maestros_o...mizdat_radio/info.json | 0200000000000000 ++ | 0200000000000093 | Hash | 0xE8B2AB54FE2F4F3C | 0200000000000000 ++ | 0200000000000093 | Size | 734 B | 0200000000000000 ++ | 0200000000000099 | RedModInfoFile | 020000000000009A | 0200000000000000 ++ | 0200000000000099 | Name | Maestros of Synth - The Dirge | 0200000000000000 ++ | 0200000000000099 | IsDisabled | False | 0200000000000000 ++ | 0200000000000099 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000099 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000099 | GroupMarker | Null | 0200000000000000 ++ | 020000000000009B | Name | 0999a784-7fac-425b-b886-eb0c0d523579 | 0200000000000000 ++ | 020000000000009B | IsDisabled | False | 0200000000000000 ++ | 020000000000009B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000009B | Parent | 0200000000000099 | 0200000000000000 ++ | 020000000000009B | TargetPath | {Game}/mods/maestros_o...425b-b886-eb0c0d523579 | 0200000000000000 ++ | 020000000000009B | Hash | 0x22D70595B4D2E029 | 0200000000000000 ++ | 020000000000009B | Size | 128 B | 0200000000000000 ++ | 020000000000009C | Name | 1a315094-f033-4e95-ab48-913998c4549f | 0200000000000000 ++ | 020000000000009C | IsDisabled | False | 0200000000000000 ++ | 020000000000009C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000009C | Parent | 0200000000000099 | 0200000000000000 ++ | 020000000000009C | TargetPath | {Game}/mods/maestros_o...4e95-ab48-913998c4549f | 0200000000000000 ++ | 020000000000009C | Hash | 0x2A45E56A9E8B6395 | 0200000000000000 ++ | 020000000000009C | Size | 128 B | 0200000000000000 ++ | 020000000000009D | Name | 1e83ef71-2f7c-41e1-acf2-81d8c7178f23 | 0200000000000000 ++ | 020000000000009D | IsDisabled | False | 0200000000000000 ++ | 020000000000009D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000009D | Parent | 0200000000000099 | 0200000000000000 ++ | 020000000000009D | TargetPath | {Game}/mods/maestros_o...41e1-acf2-81d8c7178f23 | 0200000000000000 ++ | 020000000000009D | Hash | 0x6041385A8E75C52B | 0200000000000000 ++ | 020000000000009D | Size | 128 B | 0200000000000000 ++ | 020000000000009E | Name | 270f9e1b-8998-44dc-94b3-4ab6b459fb93 | 0200000000000000 ++ | 020000000000009E | IsDisabled | False | 0200000000000000 ++ | 020000000000009E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000009E | Parent | 0200000000000099 | 0200000000000000 ++ | 020000000000009E | TargetPath | {Game}/mods/maestros_o...44dc-94b3-4ab6b459fb93 | 0200000000000000 ++ | 020000000000009E | Hash | 0x5171608AB1334D42 | 0200000000000000 ++ | 020000000000009E | Size | 128 B | 0200000000000000 ++ | 020000000000009F | Name | 2d551930-bf21-4683-90d7-e3c86ac321d0 | 0200000000000000 ++ | 020000000000009F | IsDisabled | False | 0200000000000000 ++ | 020000000000009F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000009F | Parent | 0200000000000099 | 0200000000000000 ++ | 020000000000009F | TargetPath | {Game}/mods/maestros_o...4683-90d7-e3c86ac321d0 | 0200000000000000 ++ | 020000000000009F | Hash | 0x25CF1AA9958991F6 | 0200000000000000 ++ | 020000000000009F | Size | 128 B | 0200000000000000 ++ | 02000000000000A0 | Name | 33e08845-5331-46cb-9227-b3427ceb0d98 | 0200000000000000 ++ | 02000000000000A0 | IsDisabled | False | 0200000000000000 ++ | 02000000000000A0 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A0 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A0 | TargetPath | {Game}/mods/maestros_o...46cb-9227-b3427ceb0d98 | 0200000000000000 ++ | 02000000000000A0 | Hash | 0xFD85E0446503E004 | 0200000000000000 ++ | 02000000000000A0 | Size | 128 B | 0200000000000000 ++ | 02000000000000A1 | Name | 3b8d328f-a916-4ee3-ac87-3510a131f7f3 | 0200000000000000 ++ | 02000000000000A1 | IsDisabled | False | 0200000000000000 ++ | 02000000000000A1 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A1 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A1 | TargetPath | {Game}/mods/maestros_o...4ee3-ac87-3510a131f7f3 | 0200000000000000 ++ | 02000000000000A1 | Hash | 0x177019C272D421A9 | 0200000000000000 ++ | 02000000000000A1 | Size | 128 B | 0200000000000000 ++ | 02000000000000A2 | Name | 6274b492-5e5d-4acc-b01c-51e59db302f1 | 0200000000000000 ++ | 02000000000000A2 | IsDisabled | False | 0200000000000000 ++ | 02000000000000A2 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A2 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A2 | TargetPath | {Game}/mods/maestros_o...4acc-b01c-51e59db302f1 | 0200000000000000 ++ | 02000000000000A2 | Hash | 0x99C53919D40B3388 | 0200000000000000 ++ | 02000000000000A2 | Size | 128 B | 0200000000000000 ++ | 02000000000000A3 | Name | 74d3180a-296b-4edc-8f84-961b6425daba | 0200000000000000 ++ | 02000000000000A3 | IsDisabled | False | 0200000000000000 ++ | 02000000000000A3 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A3 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A3 | TargetPath | {Game}/mods/maestros_o...4edc-8f84-961b6425daba | 0200000000000000 ++ | 02000000000000A3 | Hash | 0xFE84ABBABEC8E4AF | 0200000000000000 ++ | 02000000000000A3 | Size | 128 B | 0200000000000000 ++ | 02000000000000A4 | Name | 7631e1bb-eaf1-431f-afe8-0635adccf89e | 0200000000000000 ++ | 02000000000000A4 | IsDisabled | False | 0200000000000000 ++ | 02000000000000A4 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A4 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A4 | TargetPath | {Game}/mods/maestros_o...431f-afe8-0635adccf89e | 0200000000000000 ++ | 02000000000000A4 | Hash | 0x200C116A823CCBCB | 0200000000000000 ++ | 02000000000000A4 | Size | 128 B | 0200000000000000 ++ | 02000000000000A5 | Name | 801dd751-847f-4cb4-8372-8580fcd1e1b9 | 0200000000000000 ++ | 02000000000000A5 | IsDisabled | False | 0200000000000000 ++ | 02000000000000A5 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A5 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A5 | TargetPath | {Game}/mods/maestros_o...4cb4-8372-8580fcd1e1b9 | 0200000000000000 ++ | 02000000000000A5 | Hash | 0xEC9C06D65E5E812D | 0200000000000000 ++ | 02000000000000A5 | Size | 128 B | 0200000000000000 ++ | 02000000000000A6 | Name | 8e7a032d-7695-4bcb-b344-ed52c8423d14 | 0200000000000000 ++ | 02000000000000A6 | IsDisabled | False | 0200000000000000 ++ | 02000000000000A6 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A6 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A6 | TargetPath | {Game}/mods/maestros_o...4bcb-b344-ed52c8423d14 | 0200000000000000 ++ | 02000000000000A6 | Hash | 0xDB05F7B5CA538F1F | 0200000000000000 ++ | 02000000000000A6 | Size | 128 B | 0200000000000000 ++ | 02000000000000A7 | Name | 9473e941-6149-44f0-b5e1-8d62adf6a349 | 0200000000000000 ++ | 02000000000000A7 | IsDisabled | False | 0200000000000000 ++ | 02000000000000A7 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A7 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A7 | TargetPath | {Game}/mods/maestros_o...44f0-b5e1-8d62adf6a349 | 0200000000000000 ++ | 02000000000000A7 | Hash | 0xA6617E3825FF9A59 | 0200000000000000 ++ | 02000000000000A7 | Size | 128 B | 0200000000000000 ++ | 02000000000000A8 | Name | a17eef04-42c0-4af2-9638-3696c7b5841c | 0200000000000000 ++ | 02000000000000A8 | IsDisabled | False | 0200000000000000 ++ | 02000000000000A8 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A8 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A8 | TargetPath | {Game}/mods/maestros_o...4af2-9638-3696c7b5841c | 0200000000000000 ++ | 02000000000000A8 | Hash | 0x241CB5E83A4C0F1F | 0200000000000000 ++ | 02000000000000A8 | Size | 128 B | 0200000000000000 ++ | 02000000000000A9 | Name | a99c2bc2-f14c-4e02-8418-f0e4a430e55f | 0200000000000000 ++ | 02000000000000A9 | IsDisabled | False | 0200000000000000 ++ | 02000000000000A9 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A9 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A9 | TargetPath | {Game}/mods/maestros_o...4e02-8418-f0e4a430e55f | 0200000000000000 ++ | 02000000000000A9 | Hash | 0x0CCC221225906106 | 0200000000000000 ++ | 02000000000000A9 | Size | 128 B | 0200000000000000 ++ | 02000000000000AA | Name | aa52eb34-93ec-4d6c-9e9a-b3e60f5cf05a | 0200000000000000 ++ | 02000000000000AA | IsDisabled | False | 0200000000000000 ++ | 02000000000000AA | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000AA | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000AA | TargetPath | {Game}/mods/maestros_o...4d6c-9e9a-b3e60f5cf05a | 0200000000000000 ++ | 02000000000000AA | Hash | 0x5B242DDB4E5C3AFE | 0200000000000000 ++ | 02000000000000AA | Size | 128 B | 0200000000000000 ++ | 02000000000000AB | Name | ae6a0808-df4d-4abe-b7bc-807dfca14a9d | 0200000000000000 ++ | 02000000000000AB | IsDisabled | False | 0200000000000000 ++ | 02000000000000AB | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000AB | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000AB | TargetPath | {Game}/mods/maestros_o...4abe-b7bc-807dfca14a9d | 0200000000000000 ++ | 02000000000000AB | Hash | 0xD09EEC0519DFCAEC | 0200000000000000 ++ | 02000000000000AB | Size | 128 B | 0200000000000000 ++ | 02000000000000AC | Name | bee0ef5d-90a6-47d8-a844-7577955e9a76 | 0200000000000000 ++ | 02000000000000AC | IsDisabled | False | 0200000000000000 ++ | 02000000000000AC | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000AC | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000AC | TargetPath | {Game}/mods/maestros_o...47d8-a844-7577955e9a76 | 0200000000000000 ++ | 02000000000000AC | Hash | 0xA318316CE8147DD4 | 0200000000000000 ++ | 02000000000000AC | Size | 128 B | 0200000000000000 ++ | 02000000000000AD | Name | c4903d5b-9857-4685-8e33-ce82d867461e | 0200000000000000 ++ | 02000000000000AD | IsDisabled | False | 0200000000000000 ++ | 02000000000000AD | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000AD | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000AD | TargetPath | {Game}/mods/maestros_o...4685-8e33-ce82d867461e | 0200000000000000 ++ | 02000000000000AD | Hash | 0x5CB3BB5BDDC47D5F | 0200000000000000 ++ | 02000000000000AD | Size | 128 B | 0200000000000000 ++ | 02000000000000AE | Name | cbe1462c-d530-436c-be9d-9f59db4d272a | 0200000000000000 ++ | 02000000000000AE | IsDisabled | False | 0200000000000000 ++ | 02000000000000AE | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000AE | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000AE | TargetPath | {Game}/mods/maestros_o...436c-be9d-9f59db4d272a | 0200000000000000 ++ | 02000000000000AE | Hash | 0x185DDD0A7CE48952 | 0200000000000000 ++ | 02000000000000AE | Size | 128 B | 0200000000000000 ++ | 02000000000000AF | Name | e991a173-f022-4e13-8d98-5ebe9aa81088 | 0200000000000000 ++ | 02000000000000AF | IsDisabled | False | 0200000000000000 ++ | 02000000000000AF | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000AF | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000AF | TargetPath | {Game}/mods/maestros_o...4e13-8d98-5ebe9aa81088 | 0200000000000000 ++ | 02000000000000AF | Hash | 0xAF9CEFCB5B5DCE78 | 0200000000000000 ++ | 02000000000000AF | Size | 128 B | 0200000000000000 ++ | 02000000000000B0 | Name | ec4ca508-7c32-43c1-bf26-925ac9031267 | 0200000000000000 ++ | 02000000000000B0 | IsDisabled | False | 0200000000000000 ++ | 02000000000000B0 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000B0 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000B0 | TargetPath | {Game}/mods/maestros_o...43c1-bf26-925ac9031267 | 0200000000000000 ++ | 02000000000000B0 | Hash | 0xBA1807C9967E4A2D | 0200000000000000 ++ | 02000000000000B0 | Size | 128 B | 0200000000000000 ++ | 02000000000000B1 | Name | ff15dd51-6c99-4ffa-b726-6a12252984f6 | 0200000000000000 ++ | 02000000000000B1 | IsDisabled | False | 0200000000000000 ++ | 02000000000000B1 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000B1 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000B1 | TargetPath | {Game}/mods/maestros_o...4ffa-b726-6a12252984f6 | 0200000000000000 ++ | 02000000000000B1 | Hash | 0x2CFB7CBE8149F554 | 0200000000000000 ++ | 02000000000000B1 | Size | 128 B | 0200000000000000 ++ | 020000000000009A | Name | Maestros of Synth - The Dirge | 0200000000000000 ++ | 020000000000009A | Version | 1.6 | 0200000000000000 ++ | 020000000000009A | Name | info.json | 0200000000000000 ++ | 020000000000009A | IsDisabled | False | 0200000000000000 ++ | 020000000000009A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000009A | Parent | 0200000000000099 | 0200000000000000 ++ | 020000000000009A | TargetPath | {Game}/mods/maestros_o...th_the_dirge/info.json | 0200000000000000 ++ | 020000000000009A | Hash | 0x60A89AC7DF6F08CC | 0200000000000000 ++ | 020000000000009A | Size | 2.827 KB | 0200000000000000 diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.cs b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.cs new file mode 100644 index 0000000000..c6f35f4548 --- /dev/null +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/RedModInstallerTests.cs @@ -0,0 +1,42 @@ +using FluentAssertions; +using NexusMods.Abstractions.Loadouts; +using NexusMods.Abstractions.MnemonicDB.Attributes.Extensions; +using NexusMods.Games.RedEngine.Cyberpunk2077; +using NexusMods.Games.RedEngine.Cyberpunk2077.Models; +using NexusMods.Games.RedEngine.ModInstallers; +using NexusMods.Games.TestFramework; +using NexusMods.Paths; + +namespace NexusMods.Games.RedEngine.Tests.LibraryArchiveInstallerTests; + +public class RedModInstallerTests : ALibraryArchiveInstallerTests +{ + public RedModInstallerTests(IServiceProvider serviceProvider) : base(serviceProvider) + { + } + + + [Theory] + [InlineData("several_red_mods.7z")] + [InlineData("one_mod.7z")] + public async Task CanInstallRedMod(string filename) + { + var fullPath = FileSystem.GetKnownPath(KnownPath.EntryDirectory).Combine("LibraryArchiveInstallerTests/Resources/" + filename); + + var loadout = await CreateLoadout(); + var libraryArchive = await RegisterLocalArchive(fullPath); + var installResult = await Install(typeof(RedModInstaller), loadout, libraryArchive); + installResult.Length.Should().Be(1, "The installer should have installed one group of files."); + + + installResult.First().TryGetAsLoadoutItemGroup(out var group).Should().BeTrue("The installed result should be a loadout item group."); + + foreach (var child in group.Children) + { + child.TryGetAsLoadoutItemGroup(out var childGroup).Should().BeTrue("The child should be a loadout item group."); + childGroup.TryGetAsRedModLoadoutGroup(out var redModGroup).Should().BeTrue("The child should be a red mod loadout group."); + } + + await VerifyTx(installResult[0].MostRecentTxId()).UseParameters(filename); + } +} diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/Resources/one_mod.7z b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/Resources/one_mod.7z new file mode 100644 index 0000000000..3ec38d567f Binary files /dev/null and b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/Resources/one_mod.7z differ diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/Resources/several_red_mods.7z b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/Resources/several_red_mods.7z new file mode 100644 index 0000000000..27485f0670 Binary files /dev/null and b/tests/Games/NexusMods.Games.RedEngine.Tests/LibraryArchiveInstallerTests/Resources/several_red_mods.7z differ diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/ModInstallers/AppearancePresetTests.cs b/tests/Games/NexusMods.Games.RedEngine.Tests/ModInstallers/AppearancePresetInstallerTests.cs similarity index 87% rename from tests/Games/NexusMods.Games.RedEngine.Tests/ModInstallers/AppearancePresetTests.cs rename to tests/Games/NexusMods.Games.RedEngine.Tests/ModInstallers/AppearancePresetInstallerTests.cs index 3460f7078a..c77c6b6206 100644 --- a/tests/Games/NexusMods.Games.RedEngine.Tests/ModInstallers/AppearancePresetTests.cs +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/ModInstallers/AppearancePresetInstallerTests.cs @@ -6,9 +6,9 @@ namespace NexusMods.Games.RedEngine.Tests.ModInstallers; -public class AppearancePresetTests : AModInstallerTest +public class AppearancePresetInstallerTests : AModInstallerTest { - public AppearancePresetTests(IServiceProvider serviceProvider) : base(serviceProvider) { } + public AppearancePresetInstallerTests(IServiceProvider serviceProvider) : base(serviceProvider) { } [Fact] diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/ModInstallers/FolderlessModInstallerTests.cs b/tests/Games/NexusMods.Games.RedEngine.Tests/ModInstallers/FolderlessModInstallerTests.cs index 99f019684c..d1a0149e5b 100644 --- a/tests/Games/NexusMods.Games.RedEngine.Tests/ModInstallers/FolderlessModInstallerTests.cs +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/ModInstallers/FolderlessModInstallerTests.cs @@ -46,7 +46,7 @@ public async Task IgnoredExtensionsAreIgnored() description.Should() .BeEquivalentTo(new[] { - (hash1, LocationId.Game, "archive/pc/mod/filea.archive") + (hash1, LocationId.Game, "archive/pc/mod/filea.archive"), }); } } diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/ModInstallers/SimpleOverlayModInstallerTests.cs b/tests/Games/NexusMods.Games.RedEngine.Tests/ModInstallers/SimpleOverlayModInstallerTests.cs index d964c2766e..6676e4e42a 100644 --- a/tests/Games/NexusMods.Games.RedEngine.Tests/ModInstallers/SimpleOverlayModInstallerTests.cs +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/ModInstallers/SimpleOverlayModInstallerTests.cs @@ -44,16 +44,7 @@ public async Task FilesUnderSubFoldersAreSupported() (hash2, LocationId.Game, "archive/pc/mod/foo.archive") }); } - - [Fact] - public async Task FilesUnderTwoSubFolderDepthsAreNotSupported() - { - var (hash1, hash2) = Next2Hash(); - await BuildAndInstall( - (hash1, "prefix/mymod/bin/x64/foo.exe"), - (hash2, "mymod/archive/pc/mod/foo.archive")); - } - + [Fact] public async Task AllCommonPrefixesAreSupported() { diff --git a/tests/Games/NexusMods.Games.RedEngine.Tests/NexusMods.Games.RedEngine.Tests.csproj b/tests/Games/NexusMods.Games.RedEngine.Tests/NexusMods.Games.RedEngine.Tests.csproj index ed9f9d33c5..cb17c2b821 100644 --- a/tests/Games/NexusMods.Games.RedEngine.Tests/NexusMods.Games.RedEngine.Tests.csproj +++ b/tests/Games/NexusMods.Games.RedEngine.Tests/NexusMods.Games.RedEngine.Tests.csproj @@ -15,6 +15,13 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + diff --git a/tests/Games/NexusMods.Games.TestFramework/ALibraryArchiveInstallerTests.cs b/tests/Games/NexusMods.Games.TestFramework/ALibraryArchiveInstallerTests.cs new file mode 100644 index 0000000000..25403e0293 --- /dev/null +++ b/tests/Games/NexusMods.Games.TestFramework/ALibraryArchiveInstallerTests.cs @@ -0,0 +1,199 @@ +using System.IO.Compression; +using System.Text; +using FluentAssertions; +using Microsoft.Extensions.DependencyInjection; +using NexusMods.Abstractions.GameLocators; +using NexusMods.Abstractions.Games; +using NexusMods.Abstractions.Library; +using NexusMods.Abstractions.Library.Installers; +using NexusMods.Abstractions.Library.Models; +using NexusMods.Abstractions.Loadouts; +using NexusMods.Extensions.Hashing; +using NexusMods.Hashing.xxHash64; +using NexusMods.MnemonicDB.Abstractions; +using NexusMods.MnemonicDB.Abstractions.IndexSegments; +using NexusMods.Paths; + +namespace NexusMods.Games.TestFramework; + +public abstract class ALibraryArchiveInstallerTests : AGameTest +where TGame : AGame +{ + private readonly ILibraryService _libraryService; + private readonly TemporaryFileManager _tempFileManager; + + protected ALibraryArchiveInstallerTests(IServiceProvider serviceProvider) : base(serviceProvider) + { + _libraryService = serviceProvider.GetRequiredService(); + _tempFileManager = serviceProvider.GetRequiredService(); + } + + /// + /// Creates a test archive with the given paths, where each path represents a file whos content is the path itself, + /// adds it to the library and returns the archive. + /// + protected async Task AddFromPaths(params string[] paths) + { + await using var file = _tempFileManager.CreateFile(); + { + await using var archiveStream = file.Path.Create(); + using var zip = new ZipArchive(archiveStream, ZipArchiveMode.Create); + foreach (var path in paths) + { + var entry = zip.CreateEntry(path); + await using var stream = entry.Open(); + await stream.WriteAsync(Encoding.UTF8.GetBytes(path)); + } + } + + return await RegisterLocalArchive(file); + } + + public async Task RegisterLocalArchive(AbsolutePath file) + { + var archiveHash = await file.XxHash64Async(); + + var job = _libraryService.AddLocalFile(file); + await job.StartAsync(); + var result = await job.WaitToFinishAsync(); + + if (!result.TryGetCompleted(out var completed)) + throw new InvalidOperationException("The job should have completed successfully."); + + if (!completed.TryGetData(out var item)) + throw new InvalidOperationException("The job should have returned a local file."); + + item.AsLibraryFile().Hash.Should().Be(archiveHash, "The hash of the library file should match the hash of the archive."); + + return LibraryFile.FindByHash(Connection.Db, archiveHash).OfTypeLibraryArchive().First(); + } + + protected Task Install(Loadout.ReadOnly loadout, LibraryArchive.ReadOnly archive) + where TInstaller : ILibraryArchiveInstaller + { + return Install(typeof(TInstaller), loadout, archive); + } + + protected async Task Install(Type installerType, Loadout.ReadOnly loadout, LibraryArchive.ReadOnly archive) + { + var installer = Game.LibraryItemInstallers.FirstOrDefault(t => t.GetType() == installerType); + installer.Should().NotBeNull(); + + using var tx = Connection.BeginTransaction(); + var results = await installer!.ExecuteAsync(archive.AsLibraryFile().AsLibraryItem(), tx, loadout, CancellationToken.None); + + results.Length.Should().BePositive("The installer should have installed at least one file."); + + var dbResult = await tx.Commit(); + + return results.Select(item => dbResult.Remap(item)).ToArray(); + } + + /// + /// Gets the children of this loadout item as a tuple of from path, hash and game path. + /// + public IEnumerable<(RelativePath FromPath, Hash Hash, GamePath GamePath)> ChildrenFilesAndHashes(LoadoutItem.ReadOnly item) + { + + var db = Connection.Db; + + if (!item.TryGetAsLoadoutItemGroup(out var group)) + throw new InvalidOperationException("The item should be a group."); + + foreach (var child in group.Children.OrderBy(child => child.Name)) + { + if (!child.TryGetAsLoadoutItemWithTargetPath(out var itemWithTargetPath)) + throw new InvalidOperationException("The child should be an item with a target path."); + + if (!itemWithTargetPath.TryGetAsLoadoutFile(out var file)) + throw new InvalidOperationException("The child should be a file."); + + var libraryFile = LibraryFile.FindByHash(db, file.Hash).First(); + if (libraryFile.TryGetAsLibraryArchiveFileEntry(out var entry )) + yield return (entry.Path, libraryFile.Hash, itemWithTargetPath.TargetPath); + else + yield return (libraryFile.FileName, libraryFile.Hash, itemWithTargetPath.TargetPath); + } + } + + public SettingsTask VerifyTx(TxId tx) + { + return Verify(ToTable(Connection.Db.Datoms(tx))); + } + + public static string ToTable(IndexSegment datoms) + { + + string TruncateOrPad(string val, int length) + { + if (val.Length > length) + { + var midPoint = length / 2; + return (val[..(midPoint - 2)] + "..." + val[^(midPoint - 2)..]).PadRight(length); + } + + return val.PadRight(length); + } + + var remaps = new Dictionary(); + + // Makes all entity Ids local to this table. This allows us to run several tests and the results of one + // result won't clobber the others + EntityId Remap(EntityId id) + { + if (remaps.TryGetValue(id, out var remapped)) + return remapped; + + remapped = PartitionId.Entity.MakeEntityId((ulong)remaps.Count); + remaps.Add(id, remapped); + + return remapped; + } + + var dateTimeCount = 0; + + var sb = new StringBuilder(); + foreach (var datom in datoms.Resolved()) + { + var isRetract = datom.IsRetract; + + var symColumn = TruncateOrPad(datom.A.Id.Name, 24); + sb.Append(isRetract ? "-" : "+"); + sb.Append(" | "); + sb.Append(Remap(datom.E).Value.ToString("X16")); + sb.Append(" | "); + sb.Append(symColumn); + sb.Append(" | "); + + + + switch (datom.ObjectValue) + { + case EntityId eid: + sb.Append(Remap(eid).Value.ToString("X16").PadRight(48)); + break; + case ulong ul: + sb.Append(ul.ToString("X16").PadRight(48)); + break; + case byte[] byteArray: + var code = byteArray.XxHash64().Value; + var hash = code.ToString("X16"); + sb.Append($"Blob 0x{hash} {byteArray.Length} bytes".PadRight(48)); + break; + case DateTime dateTime: + sb.Append($"DateTime : {dateTimeCount++}".PadRight(48)); + break; + default: + sb.Append(TruncateOrPad(datom.ObjectValue.ToString()!, 48)); + break; + } + + sb.Append(" | "); + sb.Append(Remap(EntityId.From(datom.T.Value)).Value.ToString("X16")); + + sb.AppendLine(); + } + + return sb.ToString(); + } +} diff --git a/tests/Games/NexusMods.Games.TestFramework/RedModInstallerTests.CanInstallRedMod_filename=one_mod.7z.verified.txt b/tests/Games/NexusMods.Games.TestFramework/RedModInstallerTests.CanInstallRedMod_filename=one_mod.7z.verified.txt new file mode 100644 index 0000000000..7b544b726d --- /dev/null +++ b/tests/Games/NexusMods.Games.TestFramework/RedModInstallerTests.CanInstallRedMod_filename=one_mod.7z.verified.txt @@ -0,0 +1,41 @@ ++ | 0200000000000000 | Timestamp | DateTime : 0 | 0200000000000000 ++ | 0200000000000001 | Name | one_mod.7z | 0200000000000000 ++ | 0200000000000001 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000001 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000003 | RedModInfoFile | 0200000000000004 | 0200000000000000 ++ | 0200000000000003 | Name | Driver_Shotgun | 0200000000000000 ++ | 0200000000000003 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000003 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000003 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000004 | Name | Driver_Shotgun | 0200000000000000 ++ | 0200000000000004 | Version | 1.0.0 | 0200000000000000 ++ | 0200000000000004 | Name | info.json | 0200000000000000 ++ | 0200000000000004 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000004 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000004 | TargetPath | {Game}/mods/Driver_Shotguns/info.json | 0200000000000000 ++ | 0200000000000004 | Hash | 0x55FE2BFA19917AAF | 0200000000000000 ++ | 0200000000000004 | Size | 80 B | 0200000000000000 ++ | 0200000000000005 | Name | base_crusher.tweak | 0200000000000000 ++ | 0200000000000005 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000005 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000005 | TargetPath | {Game}/mods/Driver_Sho...her/base_crusher.tweak | 0200000000000000 ++ | 0200000000000005 | Hash | 0x6A6D905ABC5177AE | 0200000000000000 ++ | 0200000000000005 | Size | 128 B | 0200000000000000 ++ | 0200000000000006 | Name | base_pozhar.tweak | 0200000000000000 ++ | 0200000000000006 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000006 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000006 | TargetPath | {Game}/mods/Driver_Sho...zhar/base_pozhar.tweak | 0200000000000000 ++ | 0200000000000006 | Hash | 0xDB4B2217BE615C07 | 0200000000000000 ++ | 0200000000000006 | Size | 128 B | 0200000000000000 ++ | 0200000000000007 | Name | base_igla.tweak | 0200000000000000 ++ | 0200000000000007 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000007 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000007 | TargetPath | {Game}/mods/Driver_Sho...s/igla/base_igla.tweak | 0200000000000000 ++ | 0200000000000007 | Hash | 0xA2EFF12B68D2606B | 0200000000000000 ++ | 0200000000000007 | Size | 128 B | 0200000000000000 ++ | 0200000000000008 | Name | base_satara.tweak | 0200000000000000 ++ | 0200000000000008 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000008 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000008 | TargetPath | {Game}/mods/Driver_Sho...tara/base_satara.tweak | 0200000000000000 ++ | 0200000000000008 | Hash | 0x468F14E15B6E2EDC | 0200000000000000 ++ | 0200000000000008 | Size | 128 B | 0200000000000000 diff --git a/tests/Games/NexusMods.Games.TestFramework/RedModInstallerTests.CanInstallRedMod_filename=several_red_mods.7z.verified.txt b/tests/Games/NexusMods.Games.TestFramework/RedModInstallerTests.CanInstallRedMod_filename=several_red_mods.7z.verified.txt new file mode 100644 index 0000000000..d28b1771e7 --- /dev/null +++ b/tests/Games/NexusMods.Games.TestFramework/RedModInstallerTests.CanInstallRedMod_filename=several_red_mods.7z.verified.txt @@ -0,0 +1,1065 @@ ++ | 0200000000000000 | Timestamp | DateTime : 0 | 0200000000000000 ++ | 0200000000000001 | Name | several_red_mods.7z | 0200000000000000 ++ | 0200000000000001 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000001 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000003 | RedModInfoFile | 0200000000000004 | 0200000000000000 ++ | 0200000000000003 | Name | Maestros of Synth - Body Heat Radio | 0200000000000000 ++ | 0200000000000003 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000003 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000003 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000005 | Name | 0eaacf6f-394e-45e7-a958-9e10701b1711 | 0200000000000000 ++ | 0200000000000005 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000005 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000005 | TargetPath | {Game}/mods/maestros_o...45e7-a958-9e10701b1711 | 0200000000000000 ++ | 0200000000000005 | Hash | 0xF564BA3735213B20 | 0200000000000000 ++ | 0200000000000005 | Size | 128 B | 0200000000000000 ++ | 0200000000000006 | Name | 159792bc-6978-4ba4-91f4-a77e8bd1a2f8 | 0200000000000000 ++ | 0200000000000006 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000006 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000006 | TargetPath | {Game}/mods/maestros_o...4ba4-91f4-a77e8bd1a2f8 | 0200000000000000 ++ | 0200000000000006 | Hash | 0xEB0420AC550DD97D | 0200000000000000 ++ | 0200000000000006 | Size | 128 B | 0200000000000000 ++ | 0200000000000007 | Name | 32dbbaee-77c2-45d8-9e5b-ebc2b159df3a | 0200000000000000 ++ | 0200000000000007 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000007 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000007 | TargetPath | {Game}/mods/maestros_o...45d8-9e5b-ebc2b159df3a | 0200000000000000 ++ | 0200000000000007 | Hash | 0x1572C789579FAAF0 | 0200000000000000 ++ | 0200000000000007 | Size | 128 B | 0200000000000000 ++ | 0200000000000008 | Name | 39c37247-0885-4144-ae6b-faf8a101973e | 0200000000000000 ++ | 0200000000000008 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000008 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000008 | TargetPath | {Game}/mods/maestros_o...4144-ae6b-faf8a101973e | 0200000000000000 ++ | 0200000000000008 | Hash | 0x200AF59F6FBB5D83 | 0200000000000000 ++ | 0200000000000008 | Size | 128 B | 0200000000000000 ++ | 0200000000000009 | Name | 3b0aa2f9-14f6-4d95-b5d6-221cfab8fa14 | 0200000000000000 ++ | 0200000000000009 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000009 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000009 | TargetPath | {Game}/mods/maestros_o...4d95-b5d6-221cfab8fa14 | 0200000000000000 ++ | 0200000000000009 | Hash | 0x93ED0FB491A3FF5A | 0200000000000000 ++ | 0200000000000009 | Size | 128 B | 0200000000000000 ++ | 020000000000000A | Name | 52014a17-abf9-4581-8169-e26a2b4234e0 | 0200000000000000 ++ | 020000000000000A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000000A | Parent | 0200000000000003 | 0200000000000000 ++ | 020000000000000A | TargetPath | {Game}/mods/maestros_o...4581-8169-e26a2b4234e0 | 0200000000000000 ++ | 020000000000000A | Hash | 0x9D63304EA31F37D6 | 0200000000000000 ++ | 020000000000000A | Size | 128 B | 0200000000000000 ++ | 020000000000000B | Name | 59ac86e4-9a23-4bf6-90b7-299308e64930 | 0200000000000000 ++ | 020000000000000B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000000B | Parent | 0200000000000003 | 0200000000000000 ++ | 020000000000000B | TargetPath | {Game}/mods/maestros_o...4bf6-90b7-299308e64930 | 0200000000000000 ++ | 020000000000000B | Hash | 0x46582E4BEF6CE88E | 0200000000000000 ++ | 020000000000000B | Size | 128 B | 0200000000000000 ++ | 020000000000000C | Name | 7b391a0f-31e1-4258-a7fb-94b22737c734 | 0200000000000000 ++ | 020000000000000C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000000C | Parent | 0200000000000003 | 0200000000000000 ++ | 020000000000000C | TargetPath | {Game}/mods/maestros_o...4258-a7fb-94b22737c734 | 0200000000000000 ++ | 020000000000000C | Hash | 0xD5302C938DC77BEA | 0200000000000000 ++ | 020000000000000C | Size | 128 B | 0200000000000000 ++ | 020000000000000D | Name | 7b62fe18-9191-42f7-90c6-15cbc256db36 | 0200000000000000 ++ | 020000000000000D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000000D | Parent | 0200000000000003 | 0200000000000000 ++ | 020000000000000D | TargetPath | {Game}/mods/maestros_o...42f7-90c6-15cbc256db36 | 0200000000000000 ++ | 020000000000000D | Hash | 0x3DCF71D24C744E9C | 0200000000000000 ++ | 020000000000000D | Size | 128 B | 0200000000000000 ++ | 020000000000000E | Name | 8be6257d-28eb-427a-a3e5-f143c2f95b71 | 0200000000000000 ++ | 020000000000000E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000000E | Parent | 0200000000000003 | 0200000000000000 ++ | 020000000000000E | TargetPath | {Game}/mods/maestros_o...427a-a3e5-f143c2f95b71 | 0200000000000000 ++ | 020000000000000E | Hash | 0xCC0A11DF60A159AB | 0200000000000000 ++ | 020000000000000E | Size | 128 B | 0200000000000000 ++ | 020000000000000F | Name | ae78e843-56e0-478e-88a5-b3b8896dea7e | 0200000000000000 ++ | 020000000000000F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000000F | Parent | 0200000000000003 | 0200000000000000 ++ | 020000000000000F | TargetPath | {Game}/mods/maestros_o...478e-88a5-b3b8896dea7e | 0200000000000000 ++ | 020000000000000F | Hash | 0x315600CC75D518DB | 0200000000000000 ++ | 020000000000000F | Size | 128 B | 0200000000000000 ++ | 0200000000000010 | Name | b8b51db6-6aca-43c9-902f-761cf11572cf | 0200000000000000 ++ | 0200000000000010 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000010 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000010 | TargetPath | {Game}/mods/maestros_o...43c9-902f-761cf11572cf | 0200000000000000 ++ | 0200000000000010 | Hash | 0xF3F69AF897508E45 | 0200000000000000 ++ | 0200000000000010 | Size | 128 B | 0200000000000000 ++ | 0200000000000011 | Name | c6b0d13e-368c-47e9-aaac-f70e5d654c79 | 0200000000000000 ++ | 0200000000000011 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000011 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000011 | TargetPath | {Game}/mods/maestros_o...47e9-aaac-f70e5d654c79 | 0200000000000000 ++ | 0200000000000011 | Hash | 0xD82C2800B8B7043D | 0200000000000000 ++ | 0200000000000011 | Size | 128 B | 0200000000000000 ++ | 0200000000000004 | Name | Maestros of Synth - Body Heat Radio | 0200000000000000 ++ | 0200000000000004 | Version | 1.6 | 0200000000000000 ++ | 0200000000000004 | Name | info.json | 0200000000000000 ++ | 0200000000000004 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000004 | Parent | 0200000000000003 | 0200000000000000 ++ | 0200000000000004 | TargetPath | {Game}/mods/maestros_o...y_heat_radio/info.json | 0200000000000000 ++ | 0200000000000004 | Hash | 0x4C986D6E4DD14484 | 0200000000000000 ++ | 0200000000000004 | Size | 1.63 KB | 0200000000000000 ++ | 0200000000000012 | RedModInfoFile | 0200000000000013 | 0200000000000000 ++ | 0200000000000012 | Name | Maestros of Synth - Morro Rock Radio | 0200000000000000 ++ | 0200000000000012 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000012 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000012 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000014 | Name | 04941c4c-7214-45de-9681-4b18c91cc28b | 0200000000000000 ++ | 0200000000000014 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000014 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000014 | TargetPath | {Game}/mods/maestros_o...45de-9681-4b18c91cc28b | 0200000000000000 ++ | 0200000000000014 | Hash | 0x9EAE34F7C47F243B | 0200000000000000 ++ | 0200000000000014 | Size | 128 B | 0200000000000000 ++ | 0200000000000015 | Name | 0e70865d-33f0-497d-bc79-63aac410e3d1 | 0200000000000000 ++ | 0200000000000015 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000015 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000015 | TargetPath | {Game}/mods/maestros_o...497d-bc79-63aac410e3d1 | 0200000000000000 ++ | 0200000000000015 | Hash | 0x14B2640C95011CBC | 0200000000000000 ++ | 0200000000000015 | Size | 128 B | 0200000000000000 ++ | 0200000000000016 | Name | 0fad4048-4e27-4aa0-a990-0cb0e78ffacb | 0200000000000000 ++ | 0200000000000016 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000016 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000016 | TargetPath | {Game}/mods/maestros_o...4aa0-a990-0cb0e78ffacb | 0200000000000000 ++ | 0200000000000016 | Hash | 0xFD95AB1301F6FA04 | 0200000000000000 ++ | 0200000000000016 | Size | 128 B | 0200000000000000 ++ | 0200000000000017 | Name | 24dbf6f8-502e-429b-869f-138bcf0a4748 | 0200000000000000 ++ | 0200000000000017 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000017 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000017 | TargetPath | {Game}/mods/maestros_o...429b-869f-138bcf0a4748 | 0200000000000000 ++ | 0200000000000017 | Hash | 0x65CCB3E9F2967B99 | 0200000000000000 ++ | 0200000000000017 | Size | 128 B | 0200000000000000 ++ | 0200000000000018 | Name | 58c6f080-5b33-44e6-b5b4-2197c787b57b | 0200000000000000 ++ | 0200000000000018 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000018 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000018 | TargetPath | {Game}/mods/maestros_o...44e6-b5b4-2197c787b57b | 0200000000000000 ++ | 0200000000000018 | Hash | 0xD0357AD100A4FDCE | 0200000000000000 ++ | 0200000000000018 | Size | 128 B | 0200000000000000 ++ | 0200000000000019 | Name | 641966f9-7c40-4f1d-8594-eb5a4432f845 | 0200000000000000 ++ | 0200000000000019 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000019 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000019 | TargetPath | {Game}/mods/maestros_o...4f1d-8594-eb5a4432f845 | 0200000000000000 ++ | 0200000000000019 | Hash | 0x8D3B8DEB47AD4B3F | 0200000000000000 ++ | 0200000000000019 | Size | 128 B | 0200000000000000 ++ | 020000000000001A | Name | 67f8612f-b2f0-4aa5-8739-1f8aba337dee | 0200000000000000 ++ | 020000000000001A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000001A | Parent | 0200000000000012 | 0200000000000000 ++ | 020000000000001A | TargetPath | {Game}/mods/maestros_o...4aa5-8739-1f8aba337dee | 0200000000000000 ++ | 020000000000001A | Hash | 0x729C24F9501D3AF5 | 0200000000000000 ++ | 020000000000001A | Size | 128 B | 0200000000000000 ++ | 020000000000001B | Name | 78fd7a93-6943-4406-b275-686f448bb4ac | 0200000000000000 ++ | 020000000000001B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000001B | Parent | 0200000000000012 | 0200000000000000 ++ | 020000000000001B | TargetPath | {Game}/mods/maestros_o...4406-b275-686f448bb4ac | 0200000000000000 ++ | 020000000000001B | Hash | 0x7620B4AA791514E3 | 0200000000000000 ++ | 020000000000001B | Size | 128 B | 0200000000000000 ++ | 020000000000001C | Name | 809b2a9f-1c5b-4dd1-8aab-c9afad77dd05 | 0200000000000000 ++ | 020000000000001C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000001C | Parent | 0200000000000012 | 0200000000000000 ++ | 020000000000001C | TargetPath | {Game}/mods/maestros_o...4dd1-8aab-c9afad77dd05 | 0200000000000000 ++ | 020000000000001C | Hash | 0x09FBD52A5055067D | 0200000000000000 ++ | 020000000000001C | Size | 128 B | 0200000000000000 ++ | 020000000000001D | Name | 8d892d54-bd8c-4208-959a-58b9bc2d9868 | 0200000000000000 ++ | 020000000000001D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000001D | Parent | 0200000000000012 | 0200000000000000 ++ | 020000000000001D | TargetPath | {Game}/mods/maestros_o...4208-959a-58b9bc2d9868 | 0200000000000000 ++ | 020000000000001D | Hash | 0xAA5AEA3FCDBAB94D | 0200000000000000 ++ | 020000000000001D | Size | 128 B | 0200000000000000 ++ | 020000000000001E | Name | a22d7b31-b0b3-4fbd-849c-26e3b8ecaae1 | 0200000000000000 ++ | 020000000000001E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000001E | Parent | 0200000000000012 | 0200000000000000 ++ | 020000000000001E | TargetPath | {Game}/mods/maestros_o...4fbd-849c-26e3b8ecaae1 | 0200000000000000 ++ | 020000000000001E | Hash | 0x7B015AB6A324F9BA | 0200000000000000 ++ | 020000000000001E | Size | 128 B | 0200000000000000 ++ | 020000000000001F | Name | a8b51c6e-b9d9-43b8-b86e-ba1f23f1c803 | 0200000000000000 ++ | 020000000000001F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000001F | Parent | 0200000000000012 | 0200000000000000 ++ | 020000000000001F | TargetPath | {Game}/mods/maestros_o...43b8-b86e-ba1f23f1c803 | 0200000000000000 ++ | 020000000000001F | Hash | 0xB156B9F815CC60EE | 0200000000000000 ++ | 020000000000001F | Size | 128 B | 0200000000000000 ++ | 0200000000000020 | Name | b8d40fc2-12c6-4cc4-95bf-83cf65673d6c | 0200000000000000 ++ | 0200000000000020 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000020 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000020 | TargetPath | {Game}/mods/maestros_o...4cc4-95bf-83cf65673d6c | 0200000000000000 ++ | 0200000000000020 | Hash | 0x136E9308D35FBD29 | 0200000000000000 ++ | 0200000000000020 | Size | 128 B | 0200000000000000 ++ | 0200000000000021 | Name | bfd959f0-cdb4-46c0-b252-fbb676fb0b02 | 0200000000000000 ++ | 0200000000000021 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000021 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000021 | TargetPath | {Game}/mods/maestros_o...46c0-b252-fbb676fb0b02 | 0200000000000000 ++ | 0200000000000021 | Hash | 0x59E2F470FCEAF197 | 0200000000000000 ++ | 0200000000000021 | Size | 128 B | 0200000000000000 ++ | 0200000000000022 | Name | eefe2410-c5fe-4518-ab96-d9a7ec2eec65 | 0200000000000000 ++ | 0200000000000022 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000022 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000022 | TargetPath | {Game}/mods/maestros_o...4518-ab96-d9a7ec2eec65 | 0200000000000000 ++ | 0200000000000022 | Hash | 0x13782FED9C063190 | 0200000000000000 ++ | 0200000000000022 | Size | 128 B | 0200000000000000 ++ | 0200000000000023 | Name | f9ee5b4f-7789-436a-b6ff-9a3daa6d01ad | 0200000000000000 ++ | 0200000000000023 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000023 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000023 | TargetPath | {Game}/mods/maestros_o...436a-b6ff-9a3daa6d01ad | 0200000000000000 ++ | 0200000000000023 | Hash | 0x61A19BD57E8A2998 | 0200000000000000 ++ | 0200000000000023 | Size | 128 B | 0200000000000000 ++ | 0200000000000013 | Name | Maestros of Synth - Morro Rock Radio | 0200000000000000 ++ | 0200000000000013 | Version | 1.6 | 0200000000000000 ++ | 0200000000000013 | Name | info.json | 0200000000000000 ++ | 0200000000000013 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000013 | Parent | 0200000000000012 | 0200000000000000 ++ | 0200000000000013 | TargetPath | {Game}/mods/maestros_o...o_rock_radio/info.json | 0200000000000000 ++ | 0200000000000013 | Hash | 0xCA0C8D8DF6AA9532 | 0200000000000000 ++ | 0200000000000013 | Size | 2.056 KB | 0200000000000000 ++ | 0200000000000024 | RedModInfoFile | 0200000000000025 | 0200000000000000 ++ | 0200000000000024 | Name | Maestros of Synth - Night FN | 0200000000000000 ++ | 0200000000000024 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000024 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000024 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000026 | Name | 1838a296-fb33-4eca-9ffa-7cf9dbecbdad | 0200000000000000 ++ | 0200000000000026 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000026 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000026 | TargetPath | {Game}/mods/maestros_o...4eca-9ffa-7cf9dbecbdad | 0200000000000000 ++ | 0200000000000026 | Hash | 0x59E2F470FCEAF197 | 0200000000000000 ++ | 0200000000000026 | Size | 128 B | 0200000000000000 ++ | 0200000000000027 | Name | 2de29224-cd72-46f6-ae6d-2bb2e77e4d86 | 0200000000000000 ++ | 0200000000000027 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000027 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000027 | TargetPath | {Game}/mods/maestros_o...46f6-ae6d-2bb2e77e4d86 | 0200000000000000 ++ | 0200000000000027 | Hash | 0x122B3BB996FB16A9 | 0200000000000000 ++ | 0200000000000027 | Size | 128 B | 0200000000000000 ++ | 0200000000000028 | Name | 3f903833-aa24-4902-bd14-ee36848c059c | 0200000000000000 ++ | 0200000000000028 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000028 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000028 | TargetPath | {Game}/mods/maestros_o...4902-bd14-ee36848c059c | 0200000000000000 ++ | 0200000000000028 | Hash | 0x25F6C820A4DC6D61 | 0200000000000000 ++ | 0200000000000028 | Size | 128 B | 0200000000000000 ++ | 0200000000000029 | Name | 4c911c44-bb4d-4db1-95b4-d637d798d0cf | 0200000000000000 ++ | 0200000000000029 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000029 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000029 | TargetPath | {Game}/mods/maestros_o...4db1-95b4-d637d798d0cf | 0200000000000000 ++ | 0200000000000029 | Hash | 0x2E0551ADBA39338F | 0200000000000000 ++ | 0200000000000029 | Size | 128 B | 0200000000000000 ++ | 020000000000002A | Name | 5979464e-5612-4445-9f68-63d0a3a0000f | 0200000000000000 ++ | 020000000000002A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000002A | Parent | 0200000000000024 | 0200000000000000 ++ | 020000000000002A | TargetPath | {Game}/mods/maestros_o...4445-9f68-63d0a3a0000f | 0200000000000000 ++ | 020000000000002A | Hash | 0xF11C1D68C49B2AB3 | 0200000000000000 ++ | 020000000000002A | Size | 128 B | 0200000000000000 ++ | 020000000000002B | Name | 618ad396-0a6c-48d5-b706-972ea943472c | 0200000000000000 ++ | 020000000000002B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000002B | Parent | 0200000000000024 | 0200000000000000 ++ | 020000000000002B | TargetPath | {Game}/mods/maestros_o...48d5-b706-972ea943472c | 0200000000000000 ++ | 020000000000002B | Hash | 0xE3BE1F3358978055 | 0200000000000000 ++ | 020000000000002B | Size | 128 B | 0200000000000000 ++ | 020000000000002C | Name | 67029e37-396e-417a-9dd9-87f6b15d977f | 0200000000000000 ++ | 020000000000002C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000002C | Parent | 0200000000000024 | 0200000000000000 ++ | 020000000000002C | TargetPath | {Game}/mods/maestros_o...417a-9dd9-87f6b15d977f | 0200000000000000 ++ | 020000000000002C | Hash | 0x823277C4D54EF694 | 0200000000000000 ++ | 020000000000002C | Size | 128 B | 0200000000000000 ++ | 020000000000002D | Name | 6d83c51a-93b1-41cd-9908-d986259309bc | 0200000000000000 ++ | 020000000000002D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000002D | Parent | 0200000000000024 | 0200000000000000 ++ | 020000000000002D | TargetPath | {Game}/mods/maestros_o...41cd-9908-d986259309bc | 0200000000000000 ++ | 020000000000002D | Hash | 0xAF0728906C291C4B | 0200000000000000 ++ | 020000000000002D | Size | 128 B | 0200000000000000 ++ | 020000000000002E | Name | 74291a88-5c22-4dfb-964c-2b6dbcf12edd | 0200000000000000 ++ | 020000000000002E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000002E | Parent | 0200000000000024 | 0200000000000000 ++ | 020000000000002E | TargetPath | {Game}/mods/maestros_o...4dfb-964c-2b6dbcf12edd | 0200000000000000 ++ | 020000000000002E | Hash | 0x8CBCC89253F8E319 | 0200000000000000 ++ | 020000000000002E | Size | 128 B | 0200000000000000 ++ | 020000000000002F | Name | 77bf3241-b60b-4455-b5b9-bb071fca4ec3 | 0200000000000000 ++ | 020000000000002F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000002F | Parent | 0200000000000024 | 0200000000000000 ++ | 020000000000002F | TargetPath | {Game}/mods/maestros_o...4455-b5b9-bb071fca4ec3 | 0200000000000000 ++ | 020000000000002F | Hash | 0x4B210F24E722935B | 0200000000000000 ++ | 020000000000002F | Size | 128 B | 0200000000000000 ++ | 0200000000000030 | Name | 80072362-0c8b-4ab1-8738-8112ac711638 | 0200000000000000 ++ | 0200000000000030 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000030 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000030 | TargetPath | {Game}/mods/maestros_o...4ab1-8738-8112ac711638 | 0200000000000000 ++ | 0200000000000030 | Hash | 0x52F7C03C7F496796 | 0200000000000000 ++ | 0200000000000030 | Size | 128 B | 0200000000000000 ++ | 0200000000000031 | Name | a69a511a-3c5c-43bb-b5a3-2373a75126b9 | 0200000000000000 ++ | 0200000000000031 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000031 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000031 | TargetPath | {Game}/mods/maestros_o...43bb-b5a3-2373a75126b9 | 0200000000000000 ++ | 0200000000000031 | Hash | 0x2D3E9F1B31ABC53F | 0200000000000000 ++ | 0200000000000031 | Size | 128 B | 0200000000000000 ++ | 0200000000000032 | Name | db7a5d81-9345-48a9-8e42-5bf9e8625b9c | 0200000000000000 ++ | 0200000000000032 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000032 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000032 | TargetPath | {Game}/mods/maestros_o...48a9-8e42-5bf9e8625b9c | 0200000000000000 ++ | 0200000000000032 | Hash | 0x351A2DA79530C2E2 | 0200000000000000 ++ | 0200000000000032 | Size | 128 B | 0200000000000000 ++ | 0200000000000033 | Name | f6f80691-5481-4641-ae50-6df6c98401a8 | 0200000000000000 ++ | 0200000000000033 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000033 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000033 | TargetPath | {Game}/mods/maestros_o...4641-ae50-6df6c98401a8 | 0200000000000000 ++ | 0200000000000033 | Hash | 0x31C93FBF5F395F9A | 0200000000000000 ++ | 0200000000000033 | Size | 128 B | 0200000000000000 ++ | 0200000000000025 | Name | Maestros of Synth - Night FN | 0200000000000000 ++ | 0200000000000025 | Version | 1.6 | 0200000000000000 ++ | 0200000000000025 | Name | info.json | 0200000000000000 ++ | 0200000000000025 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000025 | Parent | 0200000000000024 | 0200000000000000 ++ | 0200000000000025 | TargetPath | {Game}/mods/maestros_of_synth_night_fn/info.json | 0200000000000000 ++ | 0200000000000025 | Hash | 0x3AAEF16F8C4F26A8 | 0200000000000000 ++ | 0200000000000025 | Size | 1.758 KB | 0200000000000000 ++ | 0200000000000034 | RedModInfoFile | 0200000000000035 | 0200000000000000 ++ | 0200000000000034 | Name | Maestros of Synth - Pacific Dreams | 0200000000000000 ++ | 0200000000000034 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000034 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000034 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000036 | Name | 1779f39f-b829-4628-95b9-60b33e98d922 | 0200000000000000 ++ | 0200000000000036 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000036 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000036 | TargetPath | {Game}/mods/maestros_o...4628-95b9-60b33e98d922 | 0200000000000000 ++ | 0200000000000036 | Hash | 0x05AAE4065356B55C | 0200000000000000 ++ | 0200000000000036 | Size | 128 B | 0200000000000000 ++ | 0200000000000037 | Name | 1a1acdab-6134-4a2b-a71c-ab5275ef14bb | 0200000000000000 ++ | 0200000000000037 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000037 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000037 | TargetPath | {Game}/mods/maestros_o...4a2b-a71c-ab5275ef14bb | 0200000000000000 ++ | 0200000000000037 | Hash | 0x8F7269446AAEC41B | 0200000000000000 ++ | 0200000000000037 | Size | 128 B | 0200000000000000 ++ | 0200000000000038 | Name | 1b8b58bc-851c-4fee-a7b8-d097bd38a851 | 0200000000000000 ++ | 0200000000000038 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000038 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000038 | TargetPath | {Game}/mods/maestros_o...4fee-a7b8-d097bd38a851 | 0200000000000000 ++ | 0200000000000038 | Hash | 0x0CA3139E5A943A11 | 0200000000000000 ++ | 0200000000000038 | Size | 128 B | 0200000000000000 ++ | 0200000000000039 | Name | 37a96ea5-831b-4c3d-9a0a-4a0059947d39 | 0200000000000000 ++ | 0200000000000039 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000039 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000039 | TargetPath | {Game}/mods/maestros_o...4c3d-9a0a-4a0059947d39 | 0200000000000000 ++ | 0200000000000039 | Hash | 0x8993B54C29471EE0 | 0200000000000000 ++ | 0200000000000039 | Size | 128 B | 0200000000000000 ++ | 020000000000003A | Name | 39ba17a7-1a8e-43a1-99bf-44c98e9c3401 | 0200000000000000 ++ | 020000000000003A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000003A | Parent | 0200000000000034 | 0200000000000000 ++ | 020000000000003A | TargetPath | {Game}/mods/maestros_o...43a1-99bf-44c98e9c3401 | 0200000000000000 ++ | 020000000000003A | Hash | 0x674686A2F1EE1D66 | 0200000000000000 ++ | 020000000000003A | Size | 128 B | 0200000000000000 ++ | 020000000000003B | Name | 4b74a4a5-2533-4ce0-ab0c-d368ada8f900 | 0200000000000000 ++ | 020000000000003B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000003B | Parent | 0200000000000034 | 0200000000000000 ++ | 020000000000003B | TargetPath | {Game}/mods/maestros_o...4ce0-ab0c-d368ada8f900 | 0200000000000000 ++ | 020000000000003B | Hash | 0x9E6A4F3EE5C5A90A | 0200000000000000 ++ | 020000000000003B | Size | 128 B | 0200000000000000 ++ | 020000000000003C | Name | 626eef33-bc63-4a9a-9627-3b4f2ba997d5 | 0200000000000000 ++ | 020000000000003C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000003C | Parent | 0200000000000034 | 0200000000000000 ++ | 020000000000003C | TargetPath | {Game}/mods/maestros_o...4a9a-9627-3b4f2ba997d5 | 0200000000000000 ++ | 020000000000003C | Hash | 0x68EFA9BB26F3692E | 0200000000000000 ++ | 020000000000003C | Size | 128 B | 0200000000000000 ++ | 020000000000003D | Name | 62ae5dae-872b-450d-ab02-0c2aa638a345 | 0200000000000000 ++ | 020000000000003D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000003D | Parent | 0200000000000034 | 0200000000000000 ++ | 020000000000003D | TargetPath | {Game}/mods/maestros_o...450d-ab02-0c2aa638a345 | 0200000000000000 ++ | 020000000000003D | Hash | 0xE70780B3B8F770DC | 0200000000000000 ++ | 020000000000003D | Size | 128 B | 0200000000000000 ++ | 020000000000003E | Name | 638fae6d-6804-46f0-b346-99da0687430d | 0200000000000000 ++ | 020000000000003E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000003E | Parent | 0200000000000034 | 0200000000000000 ++ | 020000000000003E | TargetPath | {Game}/mods/maestros_o...46f0-b346-99da0687430d | 0200000000000000 ++ | 020000000000003E | Hash | 0x4C7295EBE3403373 | 0200000000000000 ++ | 020000000000003E | Size | 128 B | 0200000000000000 ++ | 020000000000003F | Name | 7f9b6c23-8b2e-46b2-96b2-24bb15df379f | 0200000000000000 ++ | 020000000000003F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000003F | Parent | 0200000000000034 | 0200000000000000 ++ | 020000000000003F | TargetPath | {Game}/mods/maestros_o...46b2-96b2-24bb15df379f | 0200000000000000 ++ | 020000000000003F | Hash | 0x7F99DA1A7CBE5358 | 0200000000000000 ++ | 020000000000003F | Size | 128 B | 0200000000000000 ++ | 0200000000000040 | Name | 894383a1-175d-43eb-b0ce-3aa4ba49c511 | 0200000000000000 ++ | 0200000000000040 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000040 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000040 | TargetPath | {Game}/mods/maestros_o...43eb-b0ce-3aa4ba49c511 | 0200000000000000 ++ | 0200000000000040 | Hash | 0xA12D04563E38F855 | 0200000000000000 ++ | 0200000000000040 | Size | 128 B | 0200000000000000 ++ | 0200000000000041 | Name | 9648af9f-5c1d-4ae8-b9f5-36fe9189cacc | 0200000000000000 ++ | 0200000000000041 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000041 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000041 | TargetPath | {Game}/mods/maestros_o...4ae8-b9f5-36fe9189cacc | 0200000000000000 ++ | 0200000000000041 | Hash | 0x42AEDD51C6F7BF22 | 0200000000000000 ++ | 0200000000000041 | Size | 128 B | 0200000000000000 ++ | 0200000000000042 | Name | 9c53b058-bfda-41e6-92de-9eddd62e6205 | 0200000000000000 ++ | 0200000000000042 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000042 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000042 | TargetPath | {Game}/mods/maestros_o...41e6-92de-9eddd62e6205 | 0200000000000000 ++ | 0200000000000042 | Hash | 0x4FE29195228C9060 | 0200000000000000 ++ | 0200000000000042 | Size | 128 B | 0200000000000000 ++ | 0200000000000043 | Name | a0d31047-b493-4808-98f8-20c88b5d237e | 0200000000000000 ++ | 0200000000000043 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000043 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000043 | TargetPath | {Game}/mods/maestros_o...4808-98f8-20c88b5d237e | 0200000000000000 ++ | 0200000000000043 | Hash | 0xD2D118F0C3756708 | 0200000000000000 ++ | 0200000000000043 | Size | 128 B | 0200000000000000 ++ | 0200000000000044 | Name | a52ce519-dee4-4a97-a55b-39377e98dfdf | 0200000000000000 ++ | 0200000000000044 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000044 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000044 | TargetPath | {Game}/mods/maestros_o...4a97-a55b-39377e98dfdf | 0200000000000000 ++ | 0200000000000044 | Hash | 0x7E574D15DAA7B409 | 0200000000000000 ++ | 0200000000000044 | Size | 128 B | 0200000000000000 ++ | 0200000000000045 | Name | c1598b5e-5d2b-4ced-afd9-8df8453bed19 | 0200000000000000 ++ | 0200000000000045 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000045 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000045 | TargetPath | {Game}/mods/maestros_o...4ced-afd9-8df8453bed19 | 0200000000000000 ++ | 0200000000000045 | Hash | 0x7D4BB7AA15CE3973 | 0200000000000000 ++ | 0200000000000045 | Size | 128 B | 0200000000000000 ++ | 0200000000000046 | Name | daaad5bc-5d4f-428e-a23c-1c960b9ef518 | 0200000000000000 ++ | 0200000000000046 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000046 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000046 | TargetPath | {Game}/mods/maestros_o...428e-a23c-1c960b9ef518 | 0200000000000000 ++ | 0200000000000046 | Hash | 0xC4588E3D40FC026F | 0200000000000000 ++ | 0200000000000046 | Size | 128 B | 0200000000000000 ++ | 0200000000000035 | Name | Maestros of Synth - Pacific Dreams | 0200000000000000 ++ | 0200000000000035 | Version | 1.6 | 0200000000000000 ++ | 0200000000000035 | Name | info.json | 0200000000000000 ++ | 0200000000000035 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000035 | Parent | 0200000000000034 | 0200000000000000 ++ | 0200000000000035 | TargetPath | {Game}/mods/maestros_o...cific_dreams/info.json | 0200000000000000 ++ | 0200000000000035 | Hash | 0x96F58C6863D6946B | 0200000000000000 ++ | 0200000000000035 | Size | 2.21 KB | 0200000000000000 ++ | 0200000000000047 | RedModInfoFile | 0200000000000048 | 0200000000000000 ++ | 0200000000000047 | Name | Maestros of Synth - Principales | 0200000000000000 ++ | 0200000000000047 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000047 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000047 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000049 | Name | 485542b0-6f35-4ab5-bdd8-074292518e08 | 0200000000000000 ++ | 0200000000000049 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000049 | Parent | 0200000000000047 | 0200000000000000 ++ | 0200000000000049 | TargetPath | {Game}/mods/maestros_o...4ab5-bdd8-074292518e08 | 0200000000000000 ++ | 0200000000000049 | Hash | 0xA0BF391F2E052E9D | 0200000000000000 ++ | 0200000000000049 | Size | 128 B | 0200000000000000 ++ | 020000000000004A | Name | 4febc306-fc61-498b-a277-341d0508876a | 0200000000000000 ++ | 020000000000004A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000004A | Parent | 0200000000000047 | 0200000000000000 ++ | 020000000000004A | TargetPath | {Game}/mods/maestros_o...498b-a277-341d0508876a | 0200000000000000 ++ | 020000000000004A | Hash | 0xAEE7BBBD2EFBA744 | 0200000000000000 ++ | 020000000000004A | Size | 128 B | 0200000000000000 ++ | 020000000000004B | Name | 54876684-b387-428e-a016-0417185287ef | 0200000000000000 ++ | 020000000000004B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000004B | Parent | 0200000000000047 | 0200000000000000 ++ | 020000000000004B | TargetPath | {Game}/mods/maestros_o...428e-a016-0417185287ef | 0200000000000000 ++ | 020000000000004B | Hash | 0xDD9172A480DBCC50 | 0200000000000000 ++ | 020000000000004B | Size | 128 B | 0200000000000000 ++ | 020000000000004C | Name | 56d9a57a-4d02-422d-b2e1-7ce916de6ed6 | 0200000000000000 ++ | 020000000000004C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000004C | Parent | 0200000000000047 | 0200000000000000 ++ | 020000000000004C | TargetPath | {Game}/mods/maestros_o...422d-b2e1-7ce916de6ed6 | 0200000000000000 ++ | 020000000000004C | Hash | 0x8532256A0658B2EC | 0200000000000000 ++ | 020000000000004C | Size | 128 B | 0200000000000000 ++ | 020000000000004D | Name | 7536c575-1ff4-49a7-bf33-a64dd2396f41 | 0200000000000000 ++ | 020000000000004D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000004D | Parent | 0200000000000047 | 0200000000000000 ++ | 020000000000004D | TargetPath | {Game}/mods/maestros_o...49a7-bf33-a64dd2396f41 | 0200000000000000 ++ | 020000000000004D | Hash | 0xB26D1C56CC73422B | 0200000000000000 ++ | 020000000000004D | Size | 128 B | 0200000000000000 ++ | 020000000000004E | Name | 78c83375-c962-4312-a13d-119871ed35fb | 0200000000000000 ++ | 020000000000004E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000004E | Parent | 0200000000000047 | 0200000000000000 ++ | 020000000000004E | TargetPath | {Game}/mods/maestros_o...4312-a13d-119871ed35fb | 0200000000000000 ++ | 020000000000004E | Hash | 0xF5B7E038DC779E37 | 0200000000000000 ++ | 020000000000004E | Size | 128 B | 0200000000000000 ++ | 020000000000004F | Name | ab8841df-1fd0-4cd1-b6a0-8b872c1dd105 | 0200000000000000 ++ | 020000000000004F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000004F | Parent | 0200000000000047 | 0200000000000000 ++ | 020000000000004F | TargetPath | {Game}/mods/maestros_o...4cd1-b6a0-8b872c1dd105 | 0200000000000000 ++ | 020000000000004F | Hash | 0x8BB1B39B2E92FEF9 | 0200000000000000 ++ | 020000000000004F | Size | 128 B | 0200000000000000 ++ | 0200000000000050 | Name | bd0f0920-44c2-4151-a359-d789d892125c | 0200000000000000 ++ | 0200000000000050 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000050 | Parent | 0200000000000047 | 0200000000000000 ++ | 0200000000000050 | TargetPath | {Game}/mods/maestros_o...4151-a359-d789d892125c | 0200000000000000 ++ | 0200000000000050 | Hash | 0xDB375EB40E400BAF | 0200000000000000 ++ | 0200000000000050 | Size | 128 B | 0200000000000000 ++ | 0200000000000051 | Name | ce814e6c-c5d8-4d56-bf42-abd4092a4889 | 0200000000000000 ++ | 0200000000000051 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000051 | Parent | 0200000000000047 | 0200000000000000 ++ | 0200000000000051 | TargetPath | {Game}/mods/maestros_o...4d56-bf42-abd4092a4889 | 0200000000000000 ++ | 0200000000000051 | Hash | 0xF92BC754EF29EC77 | 0200000000000000 ++ | 0200000000000051 | Size | 128 B | 0200000000000000 ++ | 0200000000000052 | Name | df760316-9bd8-43d3-9492-031275d23850 | 0200000000000000 ++ | 0200000000000052 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000052 | Parent | 0200000000000047 | 0200000000000000 ++ | 0200000000000052 | TargetPath | {Game}/mods/maestros_o...43d3-9492-031275d23850 | 0200000000000000 ++ | 0200000000000052 | Hash | 0xDD60B4A3621B8268 | 0200000000000000 ++ | 0200000000000052 | Size | 128 B | 0200000000000000 ++ | 0200000000000053 | Name | eff920f1-b3d1-4ee3-84fc-1bca50ffcc73 | 0200000000000000 ++ | 0200000000000053 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000053 | Parent | 0200000000000047 | 0200000000000000 ++ | 0200000000000053 | TargetPath | {Game}/mods/maestros_o...4ee3-84fc-1bca50ffcc73 | 0200000000000000 ++ | 0200000000000053 | Hash | 0xFC80EA1A9F9A7D88 | 0200000000000000 ++ | 0200000000000053 | Size | 128 B | 0200000000000000 ++ | 0200000000000048 | Name | Maestros of Synth - Principales | 0200000000000000 ++ | 0200000000000048 | Version | 1.6 | 0200000000000000 ++ | 0200000000000048 | Name | info.json | 0200000000000000 ++ | 0200000000000048 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000048 | Parent | 0200000000000047 | 0200000000000000 ++ | 0200000000000048 | TargetPath | {Game}/mods/maestros_o..._principales/info.json | 0200000000000000 ++ | 0200000000000048 | Hash | 0x3AED48EE0D79B515 | 0200000000000000 ++ | 0200000000000048 | Size | 1.385 KB | 0200000000000000 ++ | 0200000000000054 | RedModInfoFile | 0200000000000055 | 0200000000000000 ++ | 0200000000000054 | Name | Maestros of Synth - Radio Pebkac | 0200000000000000 ++ | 0200000000000054 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000054 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000054 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000056 | Name | 12641980-0bb6-4bfc-98eb-081d305f8086 | 0200000000000000 ++ | 0200000000000056 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000056 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000056 | TargetPath | {Game}/mods/maestros_o...4bfc-98eb-081d305f8086 | 0200000000000000 ++ | 0200000000000056 | Hash | 0x0B158F02E14C57D3 | 0200000000000000 ++ | 0200000000000056 | Size | 128 B | 0200000000000000 ++ | 0200000000000057 | Name | 12e7dfbc-53e2-4640-87d3-0b79f4728f04 | 0200000000000000 ++ | 0200000000000057 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000057 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000057 | TargetPath | {Game}/mods/maestros_o...4640-87d3-0b79f4728f04 | 0200000000000000 ++ | 0200000000000057 | Hash | 0xF0D30BA27279C7B8 | 0200000000000000 ++ | 0200000000000057 | Size | 128 B | 0200000000000000 ++ | 0200000000000058 | Name | 184ce1d7-3033-48a5-8846-4cbc7c4c4c2c | 0200000000000000 ++ | 0200000000000058 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000058 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000058 | TargetPath | {Game}/mods/maestros_o...48a5-8846-4cbc7c4c4c2c | 0200000000000000 ++ | 0200000000000058 | Hash | 0x134AC14D1E3B6DEF | 0200000000000000 ++ | 0200000000000058 | Size | 128 B | 0200000000000000 ++ | 0200000000000059 | Name | 358fc845-e77d-4e0e-a1d9-699a55f9d132 | 0200000000000000 ++ | 0200000000000059 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000059 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000059 | TargetPath | {Game}/mods/maestros_o...4e0e-a1d9-699a55f9d132 | 0200000000000000 ++ | 0200000000000059 | Hash | 0xDE3794A27600AD21 | 0200000000000000 ++ | 0200000000000059 | Size | 128 B | 0200000000000000 ++ | 020000000000005A | Name | 45929995-1f4c-48d9-a24f-2b2072f6549a | 0200000000000000 ++ | 020000000000005A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000005A | Parent | 0200000000000054 | 0200000000000000 ++ | 020000000000005A | TargetPath | {Game}/mods/maestros_o...48d9-a24f-2b2072f6549a | 0200000000000000 ++ | 020000000000005A | Hash | 0x6B55BEBB60637111 | 0200000000000000 ++ | 020000000000005A | Size | 128 B | 0200000000000000 ++ | 020000000000005B | Name | 48f5542f-0ae8-404d-b35f-19b3fc8aecdd | 0200000000000000 ++ | 020000000000005B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000005B | Parent | 0200000000000054 | 0200000000000000 ++ | 020000000000005B | TargetPath | {Game}/mods/maestros_o...404d-b35f-19b3fc8aecdd | 0200000000000000 ++ | 020000000000005B | Hash | 0x2CD77E8AB454A36B | 0200000000000000 ++ | 020000000000005B | Size | 128 B | 0200000000000000 ++ | 020000000000005C | Name | 574c9ace-f9a6-44c1-9dd4-7b4e6b76d273 | 0200000000000000 ++ | 020000000000005C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000005C | Parent | 0200000000000054 | 0200000000000000 ++ | 020000000000005C | TargetPath | {Game}/mods/maestros_o...44c1-9dd4-7b4e6b76d273 | 0200000000000000 ++ | 020000000000005C | Hash | 0x3E725CCA261AD311 | 0200000000000000 ++ | 020000000000005C | Size | 128 B | 0200000000000000 ++ | 020000000000005D | Name | 630d3aa4-5ac4-4107-b16f-3bb1a37bdb69 | 0200000000000000 ++ | 020000000000005D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000005D | Parent | 0200000000000054 | 0200000000000000 ++ | 020000000000005D | TargetPath | {Game}/mods/maestros_o...4107-b16f-3bb1a37bdb69 | 0200000000000000 ++ | 020000000000005D | Hash | 0x203C9243D2352D1F | 0200000000000000 ++ | 020000000000005D | Size | 128 B | 0200000000000000 ++ | 020000000000005E | Name | 6898166f-3148-44fa-a1e2-6251d6869c98 | 0200000000000000 ++ | 020000000000005E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000005E | Parent | 0200000000000054 | 0200000000000000 ++ | 020000000000005E | TargetPath | {Game}/mods/maestros_o...44fa-a1e2-6251d6869c98 | 0200000000000000 ++ | 020000000000005E | Hash | 0x5C2D5B83B767E677 | 0200000000000000 ++ | 020000000000005E | Size | 128 B | 0200000000000000 ++ | 020000000000005F | Name | 6d1e1d58-7d32-4979-ac8f-b1a8443c0908 | 0200000000000000 ++ | 020000000000005F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000005F | Parent | 0200000000000054 | 0200000000000000 ++ | 020000000000005F | TargetPath | {Game}/mods/maestros_o...4979-ac8f-b1a8443c0908 | 0200000000000000 ++ | 020000000000005F | Hash | 0x05B19E20A32702B7 | 0200000000000000 ++ | 020000000000005F | Size | 128 B | 0200000000000000 ++ | 0200000000000060 | Name | 835c3b61-8570-4938-9c0a-a3284af51c0e | 0200000000000000 ++ | 0200000000000060 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000060 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000060 | TargetPath | {Game}/mods/maestros_o...4938-9c0a-a3284af51c0e | 0200000000000000 ++ | 0200000000000060 | Hash | 0x62073F2A8B283534 | 0200000000000000 ++ | 0200000000000060 | Size | 128 B | 0200000000000000 ++ | 0200000000000061 | Name | a5185fce-767e-45b2-a139-b7aa455e551f | 0200000000000000 ++ | 0200000000000061 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000061 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000061 | TargetPath | {Game}/mods/maestros_o...45b2-a139-b7aa455e551f | 0200000000000000 ++ | 0200000000000061 | Hash | 0x207FDAAECDBF6F30 | 0200000000000000 ++ | 0200000000000061 | Size | 128 B | 0200000000000000 ++ | 0200000000000062 | Name | c83573a5-e0ec-4520-8dab-e1787f2ed7c7 | 0200000000000000 ++ | 0200000000000062 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000062 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000062 | TargetPath | {Game}/mods/maestros_o...4520-8dab-e1787f2ed7c7 | 0200000000000000 ++ | 0200000000000062 | Hash | 0xE32A5C10F6F8DCEA | 0200000000000000 ++ | 0200000000000062 | Size | 128 B | 0200000000000000 ++ | 0200000000000063 | Name | cba7f317-1ae1-4dea-9cab-0736d3f51898 | 0200000000000000 ++ | 0200000000000063 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000063 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000063 | TargetPath | {Game}/mods/maestros_o...4dea-9cab-0736d3f51898 | 0200000000000000 ++ | 0200000000000063 | Hash | 0x3FF9CA7DF6EF1565 | 0200000000000000 ++ | 0200000000000063 | Size | 128 B | 0200000000000000 ++ | 0200000000000064 | Name | e9f21389-aad2-4f23-af10-bc2088888dac | 0200000000000000 ++ | 0200000000000064 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000064 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000064 | TargetPath | {Game}/mods/maestros_o...4f23-af10-bc2088888dac | 0200000000000000 ++ | 0200000000000064 | Hash | 0xA0B34975E24D71A6 | 0200000000000000 ++ | 0200000000000064 | Size | 128 B | 0200000000000000 ++ | 0200000000000065 | Name | ed6d1d0e-e970-4b22-bb8c-2189228a2a6f | 0200000000000000 ++ | 0200000000000065 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000065 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000065 | TargetPath | {Game}/mods/maestros_o...4b22-bb8c-2189228a2a6f | 0200000000000000 ++ | 0200000000000065 | Hash | 0xB41D57857782D07C | 0200000000000000 ++ | 0200000000000065 | Size | 128 B | 0200000000000000 ++ | 0200000000000055 | Name | Maestros of Synth - Radio Pebkac | 0200000000000000 ++ | 0200000000000055 | Version | 1.6 | 0200000000000000 ++ | 0200000000000055 | Name | info.json | 0200000000000000 ++ | 0200000000000055 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000055 | Parent | 0200000000000054 | 0200000000000000 ++ | 0200000000000055 | TargetPath | {Game}/mods/maestros_o...radio_pebkac/info.json | 0200000000000000 ++ | 0200000000000055 | Hash | 0x65865B2196ACA997 | 0200000000000000 ++ | 0200000000000055 | Size | 2.105 KB | 0200000000000000 ++ | 0200000000000066 | RedModInfoFile | 0200000000000067 | 0200000000000000 ++ | 0200000000000066 | Name | Maestros of Synth - Radio Vexelstorm | 0200000000000000 ++ | 0200000000000066 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000066 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000066 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000068 | Name | 0022aba5-fe2c-411e-a9b3-5133bac9da88 | 0200000000000000 ++ | 0200000000000068 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000068 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000068 | TargetPath | {Game}/mods/maestros_o...411e-a9b3-5133bac9da88 | 0200000000000000 ++ | 0200000000000068 | Hash | 0x0EADD070AE8F66C6 | 0200000000000000 ++ | 0200000000000068 | Size | 128 B | 0200000000000000 ++ | 0200000000000069 | Name | 246d2b75-ad25-40aa-ba48-cbd9e83337b2 | 0200000000000000 ++ | 0200000000000069 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000069 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000069 | TargetPath | {Game}/mods/maestros_o...40aa-ba48-cbd9e83337b2 | 0200000000000000 ++ | 0200000000000069 | Hash | 0x3A35B0564CABB1B2 | 0200000000000000 ++ | 0200000000000069 | Size | 128 B | 0200000000000000 ++ | 020000000000006A | Name | 3f734130-4f23-4571-92ff-b201423a10af | 0200000000000000 ++ | 020000000000006A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000006A | Parent | 0200000000000066 | 0200000000000000 ++ | 020000000000006A | TargetPath | {Game}/mods/maestros_o...4571-92ff-b201423a10af | 0200000000000000 ++ | 020000000000006A | Hash | 0xD5D6BBFEE92EAF40 | 0200000000000000 ++ | 020000000000006A | Size | 128 B | 0200000000000000 ++ | 020000000000006B | Name | 6215065b-8be1-4d93-b2e3-73c55f050699 | 0200000000000000 ++ | 020000000000006B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000006B | Parent | 0200000000000066 | 0200000000000000 ++ | 020000000000006B | TargetPath | {Game}/mods/maestros_o...4d93-b2e3-73c55f050699 | 0200000000000000 ++ | 020000000000006B | Hash | 0x6D024826FE16A1E5 | 0200000000000000 ++ | 020000000000006B | Size | 128 B | 0200000000000000 ++ | 020000000000006C | Name | 7b3865bc-c428-4371-b82e-820c185136bc | 0200000000000000 ++ | 020000000000006C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000006C | Parent | 0200000000000066 | 0200000000000000 ++ | 020000000000006C | TargetPath | {Game}/mods/maestros_o...4371-b82e-820c185136bc | 0200000000000000 ++ | 020000000000006C | Hash | 0x94F7712AC6EF8397 | 0200000000000000 ++ | 020000000000006C | Size | 128 B | 0200000000000000 ++ | 020000000000006D | Name | 83fe9b05-8c9f-4d5d-bd8b-cae8c6b51ad9 | 0200000000000000 ++ | 020000000000006D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000006D | Parent | 0200000000000066 | 0200000000000000 ++ | 020000000000006D | TargetPath | {Game}/mods/maestros_o...4d5d-bd8b-cae8c6b51ad9 | 0200000000000000 ++ | 020000000000006D | Hash | 0x1B13FEFFF4187F2B | 0200000000000000 ++ | 020000000000006D | Size | 128 B | 0200000000000000 ++ | 020000000000006E | Name | 992405e9-9a2c-473d-a197-f2454123452d | 0200000000000000 ++ | 020000000000006E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000006E | Parent | 0200000000000066 | 0200000000000000 ++ | 020000000000006E | TargetPath | {Game}/mods/maestros_o...473d-a197-f2454123452d | 0200000000000000 ++ | 020000000000006E | Hash | 0x62745A3C8B0852FA | 0200000000000000 ++ | 020000000000006E | Size | 128 B | 0200000000000000 ++ | 020000000000006F | Name | 9ab79491-909f-4d56-aab8-2d2945370479 | 0200000000000000 ++ | 020000000000006F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000006F | Parent | 0200000000000066 | 0200000000000000 ++ | 020000000000006F | TargetPath | {Game}/mods/maestros_o...4d56-aab8-2d2945370479 | 0200000000000000 ++ | 020000000000006F | Hash | 0xB1BED755239E2BA4 | 0200000000000000 ++ | 020000000000006F | Size | 128 B | 0200000000000000 ++ | 0200000000000070 | Name | 9d30176c-623d-4638-aeee-a5507f650ac1 | 0200000000000000 ++ | 0200000000000070 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000070 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000070 | TargetPath | {Game}/mods/maestros_o...4638-aeee-a5507f650ac1 | 0200000000000000 ++ | 0200000000000070 | Hash | 0xDC2B358BBB974A67 | 0200000000000000 ++ | 0200000000000070 | Size | 128 B | 0200000000000000 ++ | 0200000000000071 | Name | a67b39c2-ec0a-4650-8ed8-b7c096035691 | 0200000000000000 ++ | 0200000000000071 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000071 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000071 | TargetPath | {Game}/mods/maestros_o...4650-8ed8-b7c096035691 | 0200000000000000 ++ | 0200000000000071 | Hash | 0x8D5567860E09F5C7 | 0200000000000000 ++ | 0200000000000071 | Size | 128 B | 0200000000000000 ++ | 0200000000000072 | Name | a7bf4696-4e9a-4e65-a49f-a12478a44fbd | 0200000000000000 ++ | 0200000000000072 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000072 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000072 | TargetPath | {Game}/mods/maestros_o...4e65-a49f-a12478a44fbd | 0200000000000000 ++ | 0200000000000072 | Hash | 0xB3143BFA0C0F66B6 | 0200000000000000 ++ | 0200000000000072 | Size | 128 B | 0200000000000000 ++ | 0200000000000073 | Name | ac5a0871-21b9-4150-b0df-fd477e76dc87 | 0200000000000000 ++ | 0200000000000073 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000073 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000073 | TargetPath | {Game}/mods/maestros_o...4150-b0df-fd477e76dc87 | 0200000000000000 ++ | 0200000000000073 | Hash | 0xF28E87D43A015F74 | 0200000000000000 ++ | 0200000000000073 | Size | 128 B | 0200000000000000 ++ | 0200000000000074 | Name | b6945df3-0856-4f13-bba8-765124dc5e50 | 0200000000000000 ++ | 0200000000000074 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000074 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000074 | TargetPath | {Game}/mods/maestros_o...4f13-bba8-765124dc5e50 | 0200000000000000 ++ | 0200000000000074 | Hash | 0x37F6EA4CDB0EAA4D | 0200000000000000 ++ | 0200000000000074 | Size | 128 B | 0200000000000000 ++ | 0200000000000075 | Name | bc9ff1ec-4a25-4e08-8f7d-341d3244c9df | 0200000000000000 ++ | 0200000000000075 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000075 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000075 | TargetPath | {Game}/mods/maestros_o...4e08-8f7d-341d3244c9df | 0200000000000000 ++ | 0200000000000075 | Hash | 0x1F2C8A4FECE37CB5 | 0200000000000000 ++ | 0200000000000075 | Size | 128 B | 0200000000000000 ++ | 0200000000000076 | Name | c503c072-213a-4533-a294-5675b38735e0 | 0200000000000000 ++ | 0200000000000076 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000076 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000076 | TargetPath | {Game}/mods/maestros_o...4533-a294-5675b38735e0 | 0200000000000000 ++ | 0200000000000076 | Hash | 0x2F94D4376219DEA7 | 0200000000000000 ++ | 0200000000000076 | Size | 128 B | 0200000000000000 ++ | 0200000000000067 | Name | Maestros of Synth - Radio Vexelstorm | 0200000000000000 ++ | 0200000000000067 | Version | 1.6 | 0200000000000000 ++ | 0200000000000067 | Name | info.json | 0200000000000000 ++ | 0200000000000067 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000067 | Parent | 0200000000000066 | 0200000000000000 ++ | 0200000000000067 | TargetPath | {Game}/mods/maestros_o...o_vexelstorm/info.json | 0200000000000000 ++ | 0200000000000067 | Hash | 0xC5A823BF470F9F39 | 0200000000000000 ++ | 0200000000000067 | Size | 1.963 KB | 0200000000000000 ++ | 0200000000000077 | RedModInfoFile | 0200000000000078 | 0200000000000000 ++ | 0200000000000077 | Name | Maestros of Synth - Ritual FM | 0200000000000000 ++ | 0200000000000077 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000077 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000077 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000079 | Name | 3c90ddc2-3b63-4d4d-bf95-8eefceb437d4 | 0200000000000000 ++ | 0200000000000079 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000079 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000079 | TargetPath | {Game}/mods/maestros_o...4d4d-bf95-8eefceb437d4 | 0200000000000000 ++ | 0200000000000079 | Hash | 0x2268FD197B978735 | 0200000000000000 ++ | 0200000000000079 | Size | 128 B | 0200000000000000 ++ | 020000000000007A | Name | 3d3a0b99-d137-4e12-b2e4-6b7c680b23a1 | 0200000000000000 ++ | 020000000000007A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000007A | Parent | 0200000000000077 | 0200000000000000 ++ | 020000000000007A | TargetPath | {Game}/mods/maestros_o...4e12-b2e4-6b7c680b23a1 | 0200000000000000 ++ | 020000000000007A | Hash | 0xF2CEB393045E491E | 0200000000000000 ++ | 020000000000007A | Size | 128 B | 0200000000000000 ++ | 020000000000007B | Name | 400ebd45-eb73-4398-9647-4f130ab1791b | 0200000000000000 ++ | 020000000000007B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000007B | Parent | 0200000000000077 | 0200000000000000 ++ | 020000000000007B | TargetPath | {Game}/mods/maestros_o...4398-9647-4f130ab1791b | 0200000000000000 ++ | 020000000000007B | Hash | 0x8E398171DD710A42 | 0200000000000000 ++ | 020000000000007B | Size | 128 B | 0200000000000000 ++ | 020000000000007C | Name | 41279c2c-6c6e-44a4-b43d-2f8988f3525f | 0200000000000000 ++ | 020000000000007C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000007C | Parent | 0200000000000077 | 0200000000000000 ++ | 020000000000007C | TargetPath | {Game}/mods/maestros_o...44a4-b43d-2f8988f3525f | 0200000000000000 ++ | 020000000000007C | Hash | 0x39EF8FE13EB1B684 | 0200000000000000 ++ | 020000000000007C | Size | 128 B | 0200000000000000 ++ | 020000000000007D | Name | 6862a652-9c9b-4e1d-9d3f-02a3baad9130 | 0200000000000000 ++ | 020000000000007D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000007D | Parent | 0200000000000077 | 0200000000000000 ++ | 020000000000007D | TargetPath | {Game}/mods/maestros_o...4e1d-9d3f-02a3baad9130 | 0200000000000000 ++ | 020000000000007D | Hash | 0x30364FDEAE00D0C0 | 0200000000000000 ++ | 020000000000007D | Size | 128 B | 0200000000000000 ++ | 020000000000007E | Name | 6b068726-7c2b-4932-8e07-98c30bcb8f93 | 0200000000000000 ++ | 020000000000007E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000007E | Parent | 0200000000000077 | 0200000000000000 ++ | 020000000000007E | TargetPath | {Game}/mods/maestros_o...4932-8e07-98c30bcb8f93 | 0200000000000000 ++ | 020000000000007E | Hash | 0x717778B943EB38D9 | 0200000000000000 ++ | 020000000000007E | Size | 128 B | 0200000000000000 ++ | 020000000000007F | Name | 6f97ad80-a172-44ad-b928-87e0be28a136 | 0200000000000000 ++ | 020000000000007F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000007F | Parent | 0200000000000077 | 0200000000000000 ++ | 020000000000007F | TargetPath | {Game}/mods/maestros_o...44ad-b928-87e0be28a136 | 0200000000000000 ++ | 020000000000007F | Hash | 0x100F660EAAFAB06C | 0200000000000000 ++ | 020000000000007F | Size | 128 B | 0200000000000000 ++ | 0200000000000080 | Name | 8c8b7333-ad17-4cd0-ba81-29bc8b4dd563 | 0200000000000000 ++ | 0200000000000080 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000080 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000080 | TargetPath | {Game}/mods/maestros_o...4cd0-ba81-29bc8b4dd563 | 0200000000000000 ++ | 0200000000000080 | Hash | 0xE466175EBAEA6708 | 0200000000000000 ++ | 0200000000000080 | Size | 128 B | 0200000000000000 ++ | 0200000000000081 | Name | 8f317337-91a6-4280-afac-702189b7b614 | 0200000000000000 ++ | 0200000000000081 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000081 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000081 | TargetPath | {Game}/mods/maestros_o...4280-afac-702189b7b614 | 0200000000000000 ++ | 0200000000000081 | Hash | 0xEB7B8B280FD82993 | 0200000000000000 ++ | 0200000000000081 | Size | 128 B | 0200000000000000 ++ | 0200000000000082 | Name | 9a062be7-26f0-4a32-b949-6b8c3aa39980 | 0200000000000000 ++ | 0200000000000082 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000082 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000082 | TargetPath | {Game}/mods/maestros_o...4a32-b949-6b8c3aa39980 | 0200000000000000 ++ | 0200000000000082 | Hash | 0x5B4A8BD4CD5AF85F | 0200000000000000 ++ | 0200000000000082 | Size | 128 B | 0200000000000000 ++ | 0200000000000083 | Name | b4d16d05-73cd-42b9-a70c-509d08066dcf | 0200000000000000 ++ | 0200000000000083 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000083 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000083 | TargetPath | {Game}/mods/maestros_o...42b9-a70c-509d08066dcf | 0200000000000000 ++ | 0200000000000083 | Hash | 0x06B8A3DE8BDD1238 | 0200000000000000 ++ | 0200000000000083 | Size | 128 B | 0200000000000000 ++ | 0200000000000084 | Name | cfa6b788-1825-49a9-9136-e9ec237b0025 | 0200000000000000 ++ | 0200000000000084 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000084 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000084 | TargetPath | {Game}/mods/maestros_o...49a9-9136-e9ec237b0025 | 0200000000000000 ++ | 0200000000000084 | Hash | 0x42127FA26D4142AC | 0200000000000000 ++ | 0200000000000084 | Size | 128 B | 0200000000000000 ++ | 0200000000000085 | Name | ecf8ab06-a867-438d-9093-b7256f31efca | 0200000000000000 ++ | 0200000000000085 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000085 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000085 | TargetPath | {Game}/mods/maestros_o...438d-9093-b7256f31efca | 0200000000000000 ++ | 0200000000000085 | Hash | 0x68E6D1957A8A3F29 | 0200000000000000 ++ | 0200000000000085 | Size | 128 B | 0200000000000000 ++ | 0200000000000086 | Name | f2842409-0ceb-4d29-8f85-6a9a4436323f | 0200000000000000 ++ | 0200000000000086 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000086 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000086 | TargetPath | {Game}/mods/maestros_o...4d29-8f85-6a9a4436323f | 0200000000000000 ++ | 0200000000000086 | Hash | 0x7503F71974AF5063 | 0200000000000000 ++ | 0200000000000086 | Size | 128 B | 0200000000000000 ++ | 0200000000000078 | Name | Maestros of Synth - Ritual FM | 0200000000000000 ++ | 0200000000000078 | Version | 1.6 | 0200000000000000 ++ | 0200000000000078 | Name | info.json | 0200000000000000 ++ | 0200000000000078 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000078 | Parent | 0200000000000077 | 0200000000000000 ++ | 0200000000000078 | TargetPath | {Game}/mods/maestros_o...th_ritual_fm/info.json | 0200000000000000 ++ | 0200000000000078 | Hash | 0x6A7DB76E32F9466C | 0200000000000000 ++ | 0200000000000078 | Size | 1.733 KB | 0200000000000000 ++ | 0200000000000087 | RedModInfoFile | 0200000000000088 | 0200000000000000 ++ | 0200000000000087 | Name | Maestros of Synth - Royal Blue Radio | 0200000000000000 ++ | 0200000000000087 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000087 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000087 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000089 | Name | 2b6e73bf-f34a-46a0-8f87-3e32858f1af1 | 0200000000000000 ++ | 0200000000000089 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000089 | Parent | 0200000000000087 | 0200000000000000 ++ | 0200000000000089 | TargetPath | {Game}/mods/maestros_o...46a0-8f87-3e32858f1af1 | 0200000000000000 ++ | 0200000000000089 | Hash | 0xAAD635D4CC0638E8 | 0200000000000000 ++ | 0200000000000089 | Size | 128 B | 0200000000000000 ++ | 020000000000008A | Name | 315b0745-4971-4fad-b498-914faa967f20 | 0200000000000000 ++ | 020000000000008A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000008A | Parent | 0200000000000087 | 0200000000000000 ++ | 020000000000008A | TargetPath | {Game}/mods/maestros_o...4fad-b498-914faa967f20 | 0200000000000000 ++ | 020000000000008A | Hash | 0x2CCC985E6F6462BC | 0200000000000000 ++ | 020000000000008A | Size | 128 B | 0200000000000000 ++ | 020000000000008B | Name | 5929f47d-d708-4611-a51a-753cc07d6ce5 | 0200000000000000 ++ | 020000000000008B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000008B | Parent | 0200000000000087 | 0200000000000000 ++ | 020000000000008B | TargetPath | {Game}/mods/maestros_o...4611-a51a-753cc07d6ce5 | 0200000000000000 ++ | 020000000000008B | Hash | 0xA8FD0E4538B551E8 | 0200000000000000 ++ | 020000000000008B | Size | 128 B | 0200000000000000 ++ | 020000000000008C | Name | 69f604bf-e51e-4a9a-9b1f-fab52ebbe11d | 0200000000000000 ++ | 020000000000008C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000008C | Parent | 0200000000000087 | 0200000000000000 ++ | 020000000000008C | TargetPath | {Game}/mods/maestros_o...4a9a-9b1f-fab52ebbe11d | 0200000000000000 ++ | 020000000000008C | Hash | 0x9CEC62EF2700CBA6 | 0200000000000000 ++ | 020000000000008C | Size | 128 B | 0200000000000000 ++ | 020000000000008D | Name | 6cfd3a0b-a3a1-4adb-8002-46aaba150b89 | 0200000000000000 ++ | 020000000000008D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000008D | Parent | 0200000000000087 | 0200000000000000 ++ | 020000000000008D | TargetPath | {Game}/mods/maestros_o...4adb-8002-46aaba150b89 | 0200000000000000 ++ | 020000000000008D | Hash | 0x4449C5FF017040B5 | 0200000000000000 ++ | 020000000000008D | Size | 128 B | 0200000000000000 ++ | 020000000000008E | Name | b0fa635b-ae73-44eb-909d-b1827da5bd20 | 0200000000000000 ++ | 020000000000008E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000008E | Parent | 0200000000000087 | 0200000000000000 ++ | 020000000000008E | TargetPath | {Game}/mods/maestros_o...44eb-909d-b1827da5bd20 | 0200000000000000 ++ | 020000000000008E | Hash | 0x1495A4259EC51033 | 0200000000000000 ++ | 020000000000008E | Size | 128 B | 0200000000000000 ++ | 020000000000008F | Name | b1cd4941-6c81-4889-a7a4-698494fe9cbe | 0200000000000000 ++ | 020000000000008F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000008F | Parent | 0200000000000087 | 0200000000000000 ++ | 020000000000008F | TargetPath | {Game}/mods/maestros_o...4889-a7a4-698494fe9cbe | 0200000000000000 ++ | 020000000000008F | Hash | 0xE58E2552F378C7F5 | 0200000000000000 ++ | 020000000000008F | Size | 128 B | 0200000000000000 ++ | 0200000000000090 | Name | b2579264-5120-48ca-8ff8-eb679a2613b9 | 0200000000000000 ++ | 0200000000000090 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000090 | Parent | 0200000000000087 | 0200000000000000 ++ | 0200000000000090 | TargetPath | {Game}/mods/maestros_o...48ca-8ff8-eb679a2613b9 | 0200000000000000 ++ | 0200000000000090 | Hash | 0x1BA41E1EDF57D304 | 0200000000000000 ++ | 0200000000000090 | Size | 128 B | 0200000000000000 ++ | 0200000000000091 | Name | d24016c0-275e-4747-9d69-2d6517c7b8da | 0200000000000000 ++ | 0200000000000091 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000091 | Parent | 0200000000000087 | 0200000000000000 ++ | 0200000000000091 | TargetPath | {Game}/mods/maestros_o...4747-9d69-2d6517c7b8da | 0200000000000000 ++ | 0200000000000091 | Hash | 0x21B6507DE495A81B | 0200000000000000 ++ | 0200000000000091 | Size | 128 B | 0200000000000000 ++ | 0200000000000088 | Name | Maestros of Synth - Royal Blue Radio | 0200000000000000 ++ | 0200000000000088 | Version | 1.6 | 0200000000000000 ++ | 0200000000000088 | Name | info.json | 0200000000000000 ++ | 0200000000000088 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000088 | Parent | 0200000000000087 | 0200000000000000 ++ | 0200000000000088 | TargetPath | {Game}/mods/maestros_o...l_blue_radio/info.json | 0200000000000000 ++ | 0200000000000088 | Hash | 0x2DA4BC71D1A02D3E | 0200000000000000 ++ | 0200000000000088 | Size | 1.177 KB | 0200000000000000 ++ | 0200000000000092 | RedModInfoFile | 0200000000000093 | 0200000000000000 ++ | 0200000000000092 | Name | Maestros of Synth - SAMIZDAT RADIO | 0200000000000000 ++ | 0200000000000092 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000092 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000092 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 0200000000000094 | Name | 0969fbd3-d49d-4164-a761-a3834d09ec3f | 0200000000000000 ++ | 0200000000000094 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000094 | Parent | 0200000000000092 | 0200000000000000 ++ | 0200000000000094 | TargetPath | {Game}/mods/maestros_o...4164-a761-a3834d09ec3f | 0200000000000000 ++ | 0200000000000094 | Hash | 0x643C4CF854E46116 | 0200000000000000 ++ | 0200000000000094 | Size | 128 B | 0200000000000000 ++ | 0200000000000095 | Name | 0da9ff57-c307-48b9-b784-a8f1458c5755 | 0200000000000000 ++ | 0200000000000095 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000095 | Parent | 0200000000000092 | 0200000000000000 ++ | 0200000000000095 | TargetPath | {Game}/mods/maestros_o...48b9-b784-a8f1458c5755 | 0200000000000000 ++ | 0200000000000095 | Hash | 0x214ACC8963E03535 | 0200000000000000 ++ | 0200000000000095 | Size | 128 B | 0200000000000000 ++ | 0200000000000096 | Name | 23d481f5-e498-45d0-88d5-593979b52834 | 0200000000000000 ++ | 0200000000000096 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000096 | Parent | 0200000000000092 | 0200000000000000 ++ | 0200000000000096 | TargetPath | {Game}/mods/maestros_o...45d0-88d5-593979b52834 | 0200000000000000 ++ | 0200000000000096 | Hash | 0x20C8C57B2F1BCC5B | 0200000000000000 ++ | 0200000000000096 | Size | 128 B | 0200000000000000 ++ | 0200000000000097 | Name | 3cb7fa2e-eea6-41c9-a5b1-e774f1aa56a0 | 0200000000000000 ++ | 0200000000000097 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000097 | Parent | 0200000000000092 | 0200000000000000 ++ | 0200000000000097 | TargetPath | {Game}/mods/maestros_o...41c9-a5b1-e774f1aa56a0 | 0200000000000000 ++ | 0200000000000097 | Hash | 0xA3150E0793013AFB | 0200000000000000 ++ | 0200000000000097 | Size | 128 B | 0200000000000000 ++ | 0200000000000098 | Name | 70c05a84-8dac-44a4-9420-5ad89f6302db | 0200000000000000 ++ | 0200000000000098 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000098 | Parent | 0200000000000092 | 0200000000000000 ++ | 0200000000000098 | TargetPath | {Game}/mods/maestros_o...44a4-9420-5ad89f6302db | 0200000000000000 ++ | 0200000000000098 | Hash | 0x8280D76D1596C3E4 | 0200000000000000 ++ | 0200000000000098 | Size | 128 B | 0200000000000000 ++ | 0200000000000093 | Name | Maestros of Synth - SAMIZDAT RADIO | 0200000000000000 ++ | 0200000000000093 | Version | 1.6 | 0200000000000000 ++ | 0200000000000093 | Name | info.json | 0200000000000000 ++ | 0200000000000093 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000093 | Parent | 0200000000000092 | 0200000000000000 ++ | 0200000000000093 | TargetPath | {Game}/mods/maestros_o...mizdat_radio/info.json | 0200000000000000 ++ | 0200000000000093 | Hash | 0xE8B2AB54FE2F4F3C | 0200000000000000 ++ | 0200000000000093 | Size | 734 B | 0200000000000000 ++ | 0200000000000099 | RedModInfoFile | 020000000000009A | 0200000000000000 ++ | 0200000000000099 | Name | Maestros of Synth - The Dirge | 0200000000000000 ++ | 0200000000000099 | Loadout | 0200000000000002 | 0200000000000000 ++ | 0200000000000099 | Parent | 0200000000000001 | 0200000000000000 ++ | 0200000000000099 | IsLoadoutItemGroupMarker | Null | 0200000000000000 ++ | 020000000000009B | Name | 0999a784-7fac-425b-b886-eb0c0d523579 | 0200000000000000 ++ | 020000000000009B | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000009B | Parent | 0200000000000099 | 0200000000000000 ++ | 020000000000009B | TargetPath | {Game}/mods/maestros_o...425b-b886-eb0c0d523579 | 0200000000000000 ++ | 020000000000009B | Hash | 0x22D70595B4D2E029 | 0200000000000000 ++ | 020000000000009B | Size | 128 B | 0200000000000000 ++ | 020000000000009C | Name | 1a315094-f033-4e95-ab48-913998c4549f | 0200000000000000 ++ | 020000000000009C | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000009C | Parent | 0200000000000099 | 0200000000000000 ++ | 020000000000009C | TargetPath | {Game}/mods/maestros_o...4e95-ab48-913998c4549f | 0200000000000000 ++ | 020000000000009C | Hash | 0x2A45E56A9E8B6395 | 0200000000000000 ++ | 020000000000009C | Size | 128 B | 0200000000000000 ++ | 020000000000009D | Name | 1e83ef71-2f7c-41e1-acf2-81d8c7178f23 | 0200000000000000 ++ | 020000000000009D | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000009D | Parent | 0200000000000099 | 0200000000000000 ++ | 020000000000009D | TargetPath | {Game}/mods/maestros_o...41e1-acf2-81d8c7178f23 | 0200000000000000 ++ | 020000000000009D | Hash | 0x6041385A8E75C52B | 0200000000000000 ++ | 020000000000009D | Size | 128 B | 0200000000000000 ++ | 020000000000009E | Name | 270f9e1b-8998-44dc-94b3-4ab6b459fb93 | 0200000000000000 ++ | 020000000000009E | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000009E | Parent | 0200000000000099 | 0200000000000000 ++ | 020000000000009E | TargetPath | {Game}/mods/maestros_o...44dc-94b3-4ab6b459fb93 | 0200000000000000 ++ | 020000000000009E | Hash | 0x5171608AB1334D42 | 0200000000000000 ++ | 020000000000009E | Size | 128 B | 0200000000000000 ++ | 020000000000009F | Name | 2d551930-bf21-4683-90d7-e3c86ac321d0 | 0200000000000000 ++ | 020000000000009F | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000009F | Parent | 0200000000000099 | 0200000000000000 ++ | 020000000000009F | TargetPath | {Game}/mods/maestros_o...4683-90d7-e3c86ac321d0 | 0200000000000000 ++ | 020000000000009F | Hash | 0x25CF1AA9958991F6 | 0200000000000000 ++ | 020000000000009F | Size | 128 B | 0200000000000000 ++ | 02000000000000A0 | Name | 33e08845-5331-46cb-9227-b3427ceb0d98 | 0200000000000000 ++ | 02000000000000A0 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A0 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A0 | TargetPath | {Game}/mods/maestros_o...46cb-9227-b3427ceb0d98 | 0200000000000000 ++ | 02000000000000A0 | Hash | 0xFD85E0446503E004 | 0200000000000000 ++ | 02000000000000A0 | Size | 128 B | 0200000000000000 ++ | 02000000000000A1 | Name | 3b8d328f-a916-4ee3-ac87-3510a131f7f3 | 0200000000000000 ++ | 02000000000000A1 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A1 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A1 | TargetPath | {Game}/mods/maestros_o...4ee3-ac87-3510a131f7f3 | 0200000000000000 ++ | 02000000000000A1 | Hash | 0x177019C272D421A9 | 0200000000000000 ++ | 02000000000000A1 | Size | 128 B | 0200000000000000 ++ | 02000000000000A2 | Name | 6274b492-5e5d-4acc-b01c-51e59db302f1 | 0200000000000000 ++ | 02000000000000A2 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A2 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A2 | TargetPath | {Game}/mods/maestros_o...4acc-b01c-51e59db302f1 | 0200000000000000 ++ | 02000000000000A2 | Hash | 0x99C53919D40B3388 | 0200000000000000 ++ | 02000000000000A2 | Size | 128 B | 0200000000000000 ++ | 02000000000000A3 | Name | 74d3180a-296b-4edc-8f84-961b6425daba | 0200000000000000 ++ | 02000000000000A3 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A3 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A3 | TargetPath | {Game}/mods/maestros_o...4edc-8f84-961b6425daba | 0200000000000000 ++ | 02000000000000A3 | Hash | 0xFE84ABBABEC8E4AF | 0200000000000000 ++ | 02000000000000A3 | Size | 128 B | 0200000000000000 ++ | 02000000000000A4 | Name | 7631e1bb-eaf1-431f-afe8-0635adccf89e | 0200000000000000 ++ | 02000000000000A4 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A4 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A4 | TargetPath | {Game}/mods/maestros_o...431f-afe8-0635adccf89e | 0200000000000000 ++ | 02000000000000A4 | Hash | 0x200C116A823CCBCB | 0200000000000000 ++ | 02000000000000A4 | Size | 128 B | 0200000000000000 ++ | 02000000000000A5 | Name | 801dd751-847f-4cb4-8372-8580fcd1e1b9 | 0200000000000000 ++ | 02000000000000A5 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A5 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A5 | TargetPath | {Game}/mods/maestros_o...4cb4-8372-8580fcd1e1b9 | 0200000000000000 ++ | 02000000000000A5 | Hash | 0xEC9C06D65E5E812D | 0200000000000000 ++ | 02000000000000A5 | Size | 128 B | 0200000000000000 ++ | 02000000000000A6 | Name | 8e7a032d-7695-4bcb-b344-ed52c8423d14 | 0200000000000000 ++ | 02000000000000A6 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A6 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A6 | TargetPath | {Game}/mods/maestros_o...4bcb-b344-ed52c8423d14 | 0200000000000000 ++ | 02000000000000A6 | Hash | 0xDB05F7B5CA538F1F | 0200000000000000 ++ | 02000000000000A6 | Size | 128 B | 0200000000000000 ++ | 02000000000000A7 | Name | 9473e941-6149-44f0-b5e1-8d62adf6a349 | 0200000000000000 ++ | 02000000000000A7 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A7 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A7 | TargetPath | {Game}/mods/maestros_o...44f0-b5e1-8d62adf6a349 | 0200000000000000 ++ | 02000000000000A7 | Hash | 0xA6617E3825FF9A59 | 0200000000000000 ++ | 02000000000000A7 | Size | 128 B | 0200000000000000 ++ | 02000000000000A8 | Name | a17eef04-42c0-4af2-9638-3696c7b5841c | 0200000000000000 ++ | 02000000000000A8 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A8 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A8 | TargetPath | {Game}/mods/maestros_o...4af2-9638-3696c7b5841c | 0200000000000000 ++ | 02000000000000A8 | Hash | 0x241CB5E83A4C0F1F | 0200000000000000 ++ | 02000000000000A8 | Size | 128 B | 0200000000000000 ++ | 02000000000000A9 | Name | a99c2bc2-f14c-4e02-8418-f0e4a430e55f | 0200000000000000 ++ | 02000000000000A9 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000A9 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000A9 | TargetPath | {Game}/mods/maestros_o...4e02-8418-f0e4a430e55f | 0200000000000000 ++ | 02000000000000A9 | Hash | 0x0CCC221225906106 | 0200000000000000 ++ | 02000000000000A9 | Size | 128 B | 0200000000000000 ++ | 02000000000000AA | Name | aa52eb34-93ec-4d6c-9e9a-b3e60f5cf05a | 0200000000000000 ++ | 02000000000000AA | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000AA | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000AA | TargetPath | {Game}/mods/maestros_o...4d6c-9e9a-b3e60f5cf05a | 0200000000000000 ++ | 02000000000000AA | Hash | 0x5B242DDB4E5C3AFE | 0200000000000000 ++ | 02000000000000AA | Size | 128 B | 0200000000000000 ++ | 02000000000000AB | Name | ae6a0808-df4d-4abe-b7bc-807dfca14a9d | 0200000000000000 ++ | 02000000000000AB | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000AB | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000AB | TargetPath | {Game}/mods/maestros_o...4abe-b7bc-807dfca14a9d | 0200000000000000 ++ | 02000000000000AB | Hash | 0xD09EEC0519DFCAEC | 0200000000000000 ++ | 02000000000000AB | Size | 128 B | 0200000000000000 ++ | 02000000000000AC | Name | bee0ef5d-90a6-47d8-a844-7577955e9a76 | 0200000000000000 ++ | 02000000000000AC | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000AC | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000AC | TargetPath | {Game}/mods/maestros_o...47d8-a844-7577955e9a76 | 0200000000000000 ++ | 02000000000000AC | Hash | 0xA318316CE8147DD4 | 0200000000000000 ++ | 02000000000000AC | Size | 128 B | 0200000000000000 ++ | 02000000000000AD | Name | c4903d5b-9857-4685-8e33-ce82d867461e | 0200000000000000 ++ | 02000000000000AD | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000AD | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000AD | TargetPath | {Game}/mods/maestros_o...4685-8e33-ce82d867461e | 0200000000000000 ++ | 02000000000000AD | Hash | 0x5CB3BB5BDDC47D5F | 0200000000000000 ++ | 02000000000000AD | Size | 128 B | 0200000000000000 ++ | 02000000000000AE | Name | cbe1462c-d530-436c-be9d-9f59db4d272a | 0200000000000000 ++ | 02000000000000AE | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000AE | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000AE | TargetPath | {Game}/mods/maestros_o...436c-be9d-9f59db4d272a | 0200000000000000 ++ | 02000000000000AE | Hash | 0x185DDD0A7CE48952 | 0200000000000000 ++ | 02000000000000AE | Size | 128 B | 0200000000000000 ++ | 02000000000000AF | Name | e991a173-f022-4e13-8d98-5ebe9aa81088 | 0200000000000000 ++ | 02000000000000AF | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000AF | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000AF | TargetPath | {Game}/mods/maestros_o...4e13-8d98-5ebe9aa81088 | 0200000000000000 ++ | 02000000000000AF | Hash | 0xAF9CEFCB5B5DCE78 | 0200000000000000 ++ | 02000000000000AF | Size | 128 B | 0200000000000000 ++ | 02000000000000B0 | Name | ec4ca508-7c32-43c1-bf26-925ac9031267 | 0200000000000000 ++ | 02000000000000B0 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000B0 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000B0 | TargetPath | {Game}/mods/maestros_o...43c1-bf26-925ac9031267 | 0200000000000000 ++ | 02000000000000B0 | Hash | 0xBA1807C9967E4A2D | 0200000000000000 ++ | 02000000000000B0 | Size | 128 B | 0200000000000000 ++ | 02000000000000B1 | Name | ff15dd51-6c99-4ffa-b726-6a12252984f6 | 0200000000000000 ++ | 02000000000000B1 | Loadout | 0200000000000002 | 0200000000000000 ++ | 02000000000000B1 | Parent | 0200000000000099 | 0200000000000000 ++ | 02000000000000B1 | TargetPath | {Game}/mods/maestros_o...4ffa-b726-6a12252984f6 | 0200000000000000 ++ | 02000000000000B1 | Hash | 0x2CFB7CBE8149F554 | 0200000000000000 ++ | 02000000000000B1 | Size | 128 B | 0200000000000000 ++ | 020000000000009A | Name | Maestros of Synth - The Dirge | 0200000000000000 ++ | 020000000000009A | Version | 1.6 | 0200000000000000 ++ | 020000000000009A | Name | info.json | 0200000000000000 ++ | 020000000000009A | Loadout | 0200000000000002 | 0200000000000000 ++ | 020000000000009A | Parent | 0200000000000099 | 0200000000000000 ++ | 020000000000009A | TargetPath | {Game}/mods/maestros_o...th_the_dirge/info.json | 0200000000000000 ++ | 020000000000009A | Hash | 0x60A89AC7DF6F08CC | 0200000000000000 ++ | 020000000000009A | Size | 2.827 KB | 0200000000000000