From 598605a95a82d3e3d0adb1cc9c962d230a55dac5 Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Thu, 18 Dec 2025 15:17:23 -0500 Subject: [PATCH 1/5] Split WebBundle testing into its own class The UnityDataToolTests test class repeats the test through each folder in Data/AssetBundles, but webbundle tests are covering a file in Data/WebBundles and only need to run once. --- UnityDataTool.Tests/UnityDataToolTests.cs | 197 ++++++++++++---------- 1 file changed, 112 insertions(+), 85 deletions(-) diff --git a/UnityDataTool.Tests/UnityDataToolTests.cs b/UnityDataTool.Tests/UnityDataToolTests.cs index ba57e54..cc6895b 100644 --- a/UnityDataTool.Tests/UnityDataToolTests.cs +++ b/UnityDataTool.Tests/UnityDataToolTests.cs @@ -12,11 +12,11 @@ namespace UnityDataTools.UnityDataTool.Tests; #pragma warning disable NUnit2005, NUnit2006 -public class UnityDataToolTests : AssetBundleTestFixture +public class UnityDataToolAssetBundleTests : AssetBundleTestFixture { private string m_TestOutputFolder; - public UnityDataToolTests(Context context) : base(context) + public UnityDataToolAssetBundleTests(Context context) : base(context) { } @@ -59,20 +59,6 @@ public async Task InvalidFile( Assert.AreNotEqual(0, await Program.Main(command.ToArray())); } - public void IsWebBundle_True() - { - - var webBundlePath = Path.Combine(Context.TestDataFolder, "WebBundles", "HelloWorld.data"); - Assert.IsTrue(Archive.IsWebBundle(new FileInfo(webBundlePath))); - } - - [Test] - public void IsWebBundle_False() - { - var nonWebBundlePath = Path.Combine(Context.TestDataFolder, "WebBundles", "NotAWebBundle.txt"); - Assert.IsFalse(Archive.IsWebBundle(new FileInfo(nonWebBundlePath))); - } - [Test] public async Task ArchiveExtract_AssetBundle_FilesExtractedSuccessfully( [Values("", "-o archive", "--output-path archive")] string options) @@ -85,27 +71,6 @@ public async Task ArchiveExtract_AssetBundle_FilesExtractedSuccessfully( Assert.IsTrue(File.Exists(Path.Combine(m_TestOutputFolder, "archive", "CAB-5d40f7cad7c871cf2ad2af19ac542994.resource"))); } - [Test] - public async Task ArchiveExtract_WebBundle_FileExtractedSuccessfully( - [Values("", "-o archive", "--output-path archive")] string options, - [Values("HelloWorld.data", "HelloWorld.data.gz", "HelloWorld.data.br")] string bundlePath) - { - var path = Path.Combine(Context.TestDataFolder, "WebBundles", bundlePath); - string[] expectedFiles = { - "boot.config", - "data.unity3d", - "RuntimeInitializeOnLoads.json", - "ScriptingAssemblies.json", - Path.Combine("Il2CppData", "Metadata", "global-metadata.dat"), - Path.Combine("Resources", "unity_default_resources"), - }; - Assert.AreEqual(0, await Program.Main(new string[] { "archive", "extract", path }.Concat(options.Split(" ", StringSplitOptions.RemoveEmptyEntries)).ToArray())); - foreach (var file in expectedFiles) - { - Assert.IsTrue(File.Exists(Path.Combine(m_TestOutputFolder, "archive", file))); - } - } - [Test] public async Task ArchiveList_AssetBundle_ListFilesCorrectly() { @@ -139,54 +104,6 @@ public async Task ArchiveList_AssetBundle_ListFilesCorrectly() } } - [Test] - public async Task ArchiveList_WebBundle_ListFilesCorrectly( - [Values( - "HelloWorld.data", - "HelloWorld.data.gz", - "HelloWorld.data.br" - )] string bundlePath) - { - var path = Path.Combine(Context.TestDataFolder, "WebBundles", bundlePath); - using var sw = new StringWriter(); - var currentOut = Console.Out; - try - { - Console.SetOut(sw); - - Assert.AreEqual(0, await Program.Main(new string[] { "archive", "list", path })); - - var actualOutput = sw.ToString(); - var expectedOutput = ( -@"data.unity3d - Size: 253044 - -RuntimeInitializeOnLoads.json - Size: 700 - -ScriptingAssemblies.json - Size: 3060 - -boot.config - Size: 93 - -Il2CppData/Metadata/global-metadata.dat - Size: 1641180 - -Resources/unity_default_resources - Size: 607376 - -" - ); - - Assert.AreEqual(expectedOutput, actualOutput); - } - finally - { - Console.SetOut(currentOut); - } - } - [Test] public async Task DumpText_DefaultArgs_TextFileCreatedCorrectly( [Values("", "-f text", "--output-format text")] string options) @@ -436,3 +353,113 @@ public async Task DumpText_PlayerData_TextFileCreatedCorrectly() Assert.AreEqual(expected, content); } } + +public class WebBundleSupportTests +{ + private string m_TestOutputFolder; + private string m_TestDataFolder; + + [OneTimeSetUp] + public void OneTimeSetup() + { + m_TestOutputFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, "test_folder"); + m_TestDataFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, "Data"); + Directory.CreateDirectory(m_TestOutputFolder); + Directory.SetCurrentDirectory(m_TestOutputFolder); + } + + [TearDown] + public void Teardown() + { + SqliteConnection.ClearAllPools(); + + var testDir = new DirectoryInfo(m_TestOutputFolder); + testDir.EnumerateFiles() + .ToList().ForEach(f => f.Delete()); + testDir.EnumerateDirectories() + .ToList().ForEach(d => d.Delete(true)); + } + + [Test] + public void IsWebBundle_True() + { + var webBundlePath = Path.Combine(m_TestDataFolder, "WebBundles", "HelloWorld.data"); + Assert.IsTrue(Archive.IsWebBundle(new FileInfo(webBundlePath))); + } + + [Test] + public void IsWebBundle_False() + { + var nonWebBundlePath = Path.Combine(m_TestDataFolder, "WebBundles", "NotAWebBundle.txt"); + Assert.IsFalse(Archive.IsWebBundle(new FileInfo(nonWebBundlePath))); + } + + [Test] + public async Task ArchiveList_WebBundle_ListFilesCorrectly( + [Values( + "HelloWorld.data", + "HelloWorld.data.gz", + "HelloWorld.data.br" + )] string bundlePath) + { + var path = Path.Combine(m_TestDataFolder, "WebBundles", bundlePath); + using var sw = new StringWriter(); + var currentOut = Console.Out; + try + { + Console.SetOut(sw); + + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "list", path })); + + var actualOutput = sw.ToString(); + var expectedOutput = ( +@"data.unity3d + Size: 253044 + +RuntimeInitializeOnLoads.json + Size: 700 + +ScriptingAssemblies.json + Size: 3060 + +boot.config + Size: 93 + +Il2CppData/Metadata/global-metadata.dat + Size: 1641180 + +Resources/unity_default_resources + Size: 607376 + +" + ); + + Assert.AreEqual(expectedOutput, actualOutput); + } + finally + { + Console.SetOut(currentOut); + } + } + + [Test] + public async Task ArchiveExtract_WebBundle_FileExtractedSuccessfully( + [Values("", "-o archive", "--output-path archive")] string options, + [Values("HelloWorld.data", "HelloWorld.data.gz", "HelloWorld.data.br")] string bundlePath) + { + var path = Path.Combine(m_TestDataFolder, "WebBundles", bundlePath); + string[] expectedFiles = { + "boot.config", + "data.unity3d", + "RuntimeInitializeOnLoads.json", + "ScriptingAssemblies.json", + Path.Combine("Il2CppData", "Metadata", "global-metadata.dat"), + Path.Combine("Resources", "unity_default_resources"), + }; + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "extract", path }.Concat(options.Split(" ", StringSplitOptions.RemoveEmptyEntries)).ToArray())); + foreach (var file in expectedFiles) + { + Assert.IsTrue(File.Exists(Path.Combine(m_TestOutputFolder, "archive", file))); + } + } +} From 95e5cf7626a5be07719ff372c6ebc6ff75a94e63 Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Thu, 18 Dec 2025 15:44:22 -0500 Subject: [PATCH 2/5] Split UnityDataToolTests.cs to multiple source files --- ...ts.cs => UnityDataToolAssetBundleTests.cs} | 194 ------------------ .../UnityDataToolPlayerDataTests.cs | 95 +++++++++ UnityDataTool.Tests/WebBundleSupportTests.cs | 121 +++++++++++ 3 files changed, 216 insertions(+), 194 deletions(-) rename UnityDataTool.Tests/{UnityDataToolTests.cs => UnityDataToolAssetBundleTests.cs} (65%) create mode 100644 UnityDataTool.Tests/UnityDataToolPlayerDataTests.cs create mode 100644 UnityDataTool.Tests/WebBundleSupportTests.cs diff --git a/UnityDataTool.Tests/UnityDataToolTests.cs b/UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs similarity index 65% rename from UnityDataTool.Tests/UnityDataToolTests.cs rename to UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs index cc6895b..180eb2b 100644 --- a/UnityDataTool.Tests/UnityDataToolTests.cs +++ b/UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs @@ -269,197 +269,3 @@ private void ValidateDatabase(string databasePath, bool withRefs) } } } - -public class UnityDataToolPlayerDataTests : PlayerDataTestFixture -{ - private string m_TestOutputFolder; - - public UnityDataToolPlayerDataTests(Context context) : base(context) - { - } - - [OneTimeSetUp] - public void OneTimeSetup() - { - m_TestOutputFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, "test_folder"); - Directory.CreateDirectory(m_TestOutputFolder); - Directory.SetCurrentDirectory(m_TestOutputFolder); - } - - [TearDown] - public void Teardown() - { - SqliteConnection.ClearAllPools(); - - foreach (var file in new DirectoryInfo(m_TestOutputFolder).EnumerateFiles()) - { - file.Delete(); - } - } - - [Test] - public async Task Analyze_PlayerData_DatabaseCorrect() - { - var databasePath = Path.Combine(m_TestOutputFolder, "database.db"); - var analyzePath = Path.Combine(Context.UnityDataFolder); - - Assert.AreEqual(0, await Program.Main(new string[] { "analyze", analyzePath, "-p", "*." })); - using var db = new SqliteConnection(new SqliteConnectionStringBuilder - { - DataSource = databasePath, - Mode = SqliteOpenMode.ReadWriteCreate, - Pooling = false, - ForeignKeys = false, - }.ConnectionString); - db.Open(); - - using var cmd = db.CreateCommand(); - - cmd.CommandText = - @"SELECT - (SELECT COUNT(*) FROM asset_bundles), - (SELECT COUNT(*) FROM assets), - (SELECT COUNT(*) FROM objects), - (SELECT COUNT(*) FROM refs), - (SELECT COUNT(*) FROM serialized_files)"; - - using var reader = cmd.ExecuteReader(); - - reader.Read(); - - Assert.AreEqual(0, reader.GetInt32(0)); - Assert.AreEqual(0, reader.GetInt32(1)); - Assert.Greater(reader.GetInt32(2), 0); - Assert.Greater(reader.GetInt32(3), 0); - Assert.AreEqual(1, reader.GetInt32(4)); - } - - [Test] - public async Task DumpText_PlayerData_TextFileCreatedCorrectly() - { - var path = Path.Combine(Context.UnityDataFolder, "level0"); - var outputFile = Path.Combine(m_TestOutputFolder, "level0.txt"); - - Assert.AreEqual(0, await Program.Main(new string[] { "dump", path })); - Assert.IsTrue(File.Exists(outputFile)); - - var content = File.ReadAllText(outputFile); - var expected = File.ReadAllText(Path.Combine(Context.ExpectedDataFolder, "level0.txt")); - - // Normalize line endings. - content = Regex.Replace(content, @"\r\n|\n\r|\r", "\n"); - expected = Regex.Replace(expected, @"\r\n|\n\r|\r", "\n"); - - Assert.AreEqual(expected, content); - } -} - -public class WebBundleSupportTests -{ - private string m_TestOutputFolder; - private string m_TestDataFolder; - - [OneTimeSetUp] - public void OneTimeSetup() - { - m_TestOutputFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, "test_folder"); - m_TestDataFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, "Data"); - Directory.CreateDirectory(m_TestOutputFolder); - Directory.SetCurrentDirectory(m_TestOutputFolder); - } - - [TearDown] - public void Teardown() - { - SqliteConnection.ClearAllPools(); - - var testDir = new DirectoryInfo(m_TestOutputFolder); - testDir.EnumerateFiles() - .ToList().ForEach(f => f.Delete()); - testDir.EnumerateDirectories() - .ToList().ForEach(d => d.Delete(true)); - } - - [Test] - public void IsWebBundle_True() - { - var webBundlePath = Path.Combine(m_TestDataFolder, "WebBundles", "HelloWorld.data"); - Assert.IsTrue(Archive.IsWebBundle(new FileInfo(webBundlePath))); - } - - [Test] - public void IsWebBundle_False() - { - var nonWebBundlePath = Path.Combine(m_TestDataFolder, "WebBundles", "NotAWebBundle.txt"); - Assert.IsFalse(Archive.IsWebBundle(new FileInfo(nonWebBundlePath))); - } - - [Test] - public async Task ArchiveList_WebBundle_ListFilesCorrectly( - [Values( - "HelloWorld.data", - "HelloWorld.data.gz", - "HelloWorld.data.br" - )] string bundlePath) - { - var path = Path.Combine(m_TestDataFolder, "WebBundles", bundlePath); - using var sw = new StringWriter(); - var currentOut = Console.Out; - try - { - Console.SetOut(sw); - - Assert.AreEqual(0, await Program.Main(new string[] { "archive", "list", path })); - - var actualOutput = sw.ToString(); - var expectedOutput = ( -@"data.unity3d - Size: 253044 - -RuntimeInitializeOnLoads.json - Size: 700 - -ScriptingAssemblies.json - Size: 3060 - -boot.config - Size: 93 - -Il2CppData/Metadata/global-metadata.dat - Size: 1641180 - -Resources/unity_default_resources - Size: 607376 - -" - ); - - Assert.AreEqual(expectedOutput, actualOutput); - } - finally - { - Console.SetOut(currentOut); - } - } - - [Test] - public async Task ArchiveExtract_WebBundle_FileExtractedSuccessfully( - [Values("", "-o archive", "--output-path archive")] string options, - [Values("HelloWorld.data", "HelloWorld.data.gz", "HelloWorld.data.br")] string bundlePath) - { - var path = Path.Combine(m_TestDataFolder, "WebBundles", bundlePath); - string[] expectedFiles = { - "boot.config", - "data.unity3d", - "RuntimeInitializeOnLoads.json", - "ScriptingAssemblies.json", - Path.Combine("Il2CppData", "Metadata", "global-metadata.dat"), - Path.Combine("Resources", "unity_default_resources"), - }; - Assert.AreEqual(0, await Program.Main(new string[] { "archive", "extract", path }.Concat(options.Split(" ", StringSplitOptions.RemoveEmptyEntries)).ToArray())); - foreach (var file in expectedFiles) - { - Assert.IsTrue(File.Exists(Path.Combine(m_TestOutputFolder, "archive", file))); - } - } -} diff --git a/UnityDataTool.Tests/UnityDataToolPlayerDataTests.cs b/UnityDataTool.Tests/UnityDataToolPlayerDataTests.cs new file mode 100644 index 0000000..1ec0805 --- /dev/null +++ b/UnityDataTool.Tests/UnityDataToolPlayerDataTests.cs @@ -0,0 +1,95 @@ +using System; +using Microsoft.Data.Sqlite; +using System.IO; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using NUnit.Framework; +using UnityDataTools.TestCommon; + +namespace UnityDataTools.UnityDataTool.Tests; + +#pragma warning disable NUnit2005, NUnit2006 + +public class UnityDataToolPlayerDataTests : PlayerDataTestFixture +{ + private string m_TestOutputFolder; + + public UnityDataToolPlayerDataTests(Context context) : base(context) + { + } + + [OneTimeSetUp] + public void OneTimeSetup() + { + m_TestOutputFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, "test_folder"); + Directory.CreateDirectory(m_TestOutputFolder); + Directory.SetCurrentDirectory(m_TestOutputFolder); + } + + [TearDown] + public void Teardown() + { + SqliteConnection.ClearAllPools(); + + foreach (var file in new DirectoryInfo(m_TestOutputFolder).EnumerateFiles()) + { + file.Delete(); + } + } + + [Test] + public async Task Analyze_PlayerData_DatabaseCorrect() + { + var databasePath = Path.Combine(m_TestOutputFolder, "database.db"); + var analyzePath = Path.Combine(Context.UnityDataFolder); + + Assert.AreEqual(0, await Program.Main(new string[] { "analyze", analyzePath, "-p", "*." })); + using var db = new SqliteConnection(new SqliteConnectionStringBuilder + { + DataSource = databasePath, + Mode = SqliteOpenMode.ReadWriteCreate, + Pooling = false, + ForeignKeys = false, + }.ConnectionString); + db.Open(); + + using var cmd = db.CreateCommand(); + + cmd.CommandText = + @"SELECT + (SELECT COUNT(*) FROM asset_bundles), + (SELECT COUNT(*) FROM assets), + (SELECT COUNT(*) FROM objects), + (SELECT COUNT(*) FROM refs), + (SELECT COUNT(*) FROM serialized_files)"; + + using var reader = cmd.ExecuteReader(); + + reader.Read(); + + Assert.AreEqual(0, reader.GetInt32(0)); + Assert.AreEqual(0, reader.GetInt32(1)); + Assert.Greater(reader.GetInt32(2), 0); + Assert.Greater(reader.GetInt32(3), 0); + Assert.AreEqual(1, reader.GetInt32(4)); + } + + [Test] + public async Task DumpText_PlayerData_TextFileCreatedCorrectly() + { + var path = Path.Combine(Context.UnityDataFolder, "level0"); + var outputFile = Path.Combine(m_TestOutputFolder, "level0.txt"); + + Assert.AreEqual(0, await Program.Main(new string[] { "dump", path })); + Assert.IsTrue(File.Exists(outputFile)); + + var content = File.ReadAllText(outputFile); + var expected = File.ReadAllText(Path.Combine(Context.ExpectedDataFolder, "level0.txt")); + + // Normalize line endings. + content = Regex.Replace(content, @"\r\n|\n\r|\r", "\n"); + expected = Regex.Replace(expected, @"\r\n|\n\r|\r", "\n"); + + Assert.AreEqual(expected, content); + } +} diff --git a/UnityDataTool.Tests/WebBundleSupportTests.cs b/UnityDataTool.Tests/WebBundleSupportTests.cs new file mode 100644 index 0000000..5285cb8 --- /dev/null +++ b/UnityDataTool.Tests/WebBundleSupportTests.cs @@ -0,0 +1,121 @@ +using System; +using Microsoft.Data.Sqlite; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using NUnit.Framework; +using UnityDataTools.FileSystem; + +namespace UnityDataTools.UnityDataTool.Tests; + +#pragma warning disable NUnit2005, NUnit2006 + +public class WebBundleSupportTests +{ + private string m_TestOutputFolder; + private string m_TestDataFolder; + + [OneTimeSetUp] + public void OneTimeSetup() + { + m_TestOutputFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, "test_folder"); + m_TestDataFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, "Data"); + Directory.CreateDirectory(m_TestOutputFolder); + Directory.SetCurrentDirectory(m_TestOutputFolder); + } + + [TearDown] + public void Teardown() + { + SqliteConnection.ClearAllPools(); + + var testDir = new DirectoryInfo(m_TestOutputFolder); + testDir.EnumerateFiles() + .ToList().ForEach(f => f.Delete()); + testDir.EnumerateDirectories() + .ToList().ForEach(d => d.Delete(true)); + } + + [Test] + public void IsWebBundle_True() + { + var webBundlePath = Path.Combine(m_TestDataFolder, "WebBundles", "HelloWorld.data"); + Assert.IsTrue(Archive.IsWebBundle(new FileInfo(webBundlePath))); + } + + [Test] + public void IsWebBundle_False() + { + var nonWebBundlePath = Path.Combine(m_TestDataFolder, "WebBundles", "NotAWebBundle.txt"); + Assert.IsFalse(Archive.IsWebBundle(new FileInfo(nonWebBundlePath))); + } + + [Test] + public async Task ArchiveList_WebBundle_ListFilesCorrectly( + [Values( + "HelloWorld.data", + "HelloWorld.data.gz", + "HelloWorld.data.br" + )] string bundlePath) + { + var path = Path.Combine(m_TestDataFolder, "WebBundles", bundlePath); + using var sw = new StringWriter(); + var currentOut = Console.Out; + try + { + Console.SetOut(sw); + + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "list", path })); + + var actualOutput = sw.ToString(); + var expectedOutput = ( +@"data.unity3d + Size: 253044 + +RuntimeInitializeOnLoads.json + Size: 700 + +ScriptingAssemblies.json + Size: 3060 + +boot.config + Size: 93 + +Il2CppData/Metadata/global-metadata.dat + Size: 1641180 + +Resources/unity_default_resources + Size: 607376 + +" + ); + + Assert.AreEqual(expectedOutput, actualOutput); + } + finally + { + Console.SetOut(currentOut); + } + } + + [Test] + public async Task ArchiveExtract_WebBundle_FileExtractedSuccessfully( + [Values("", "-o archive", "--output-path archive")] string options, + [Values("HelloWorld.data", "HelloWorld.data.gz", "HelloWorld.data.br")] string bundlePath) + { + var path = Path.Combine(m_TestDataFolder, "WebBundles", bundlePath); + string[] expectedFiles = { + "boot.config", + "data.unity3d", + "RuntimeInitializeOnLoads.json", + "ScriptingAssemblies.json", + Path.Combine("Il2CppData", "Metadata", "global-metadata.dat"), + Path.Combine("Resources", "unity_default_resources"), + }; + Assert.AreEqual(0, await Program.Main(new string[] { "archive", "extract", path }.Concat(options.Split(" ", StringSplitOptions.RemoveEmptyEntries)).ToArray())); + foreach (var file in expectedFiles) + { + Assert.IsTrue(File.Exists(Path.Combine(m_TestOutputFolder, "archive", file))); + } + } +} From b299726c6a8f9b4695020d45aa2a6b61f67e52ff Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Thu, 18 Dec 2025 16:24:54 -0500 Subject: [PATCH 3/5] Adding some comments based on study of the test framework The original developer created an interesting testing approach but I felt it needed some clues for how it works. --- TestCommon/TestFixtures.cs | 11 +++++++++++ UnityDataTool.Tests/ExpectedDataGenerator.cs | 9 +++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/TestCommon/TestFixtures.cs b/TestCommon/TestFixtures.cs index 87dbdce..72e9f2c 100644 --- a/TestCommon/TestFixtures.cs +++ b/TestCommon/TestFixtures.cs @@ -4,6 +4,9 @@ namespace UnityDataTools.TestCommon; +// Base class that facilitates iterating through sub-sub-folders +// inside the Data location. E.g. GetContexts("AssetBundles") +// finds "TestCommon/Data/AssetBundles/2019.4.0f1", "TestCommon/Data/AssetBundles/2020.3.0f1" etc. public class BaseTestFixture { protected Context Context { get; } @@ -15,6 +18,8 @@ public BaseTestFixture(Context context) Context = context; } + // Tests that have files that record the expected results for each version + // of Unity can override this method to regenerate those expected results. protected virtual void OnLoadExpectedData(Context context) { } @@ -23,6 +28,9 @@ protected virtual void OnLoadExpectedData(Context context) public void LoadExpectedData() { OnLoadExpectedData(Context); + + // Load json file with the expected results for a test based on + // folder structure convention (e.g. ExpectedData//ExpectedVersions.json) Context.ExpectedData.Load(Context.ExpectedDataFolder); } @@ -47,6 +55,9 @@ protected static IEnumerable GetContexts(string dataFolder) } } +// Test fixture that repeats the tests for each folder inside TestCommon/Data/AssetBundles. +// Each sub-folder is expected to have results of an AssetBundle build repeated with a +// different version of Unity. [TestFixtureSource(typeof(AssetBundleTestFixture), nameof(GetContexts))] public class AssetBundleTestFixture : BaseTestFixture { diff --git a/UnityDataTool.Tests/ExpectedDataGenerator.cs b/UnityDataTool.Tests/ExpectedDataGenerator.cs index 888ba7c..a89cbed 100644 --- a/UnityDataTool.Tests/ExpectedDataGenerator.cs +++ b/UnityDataTool.Tests/ExpectedDataGenerator.cs @@ -5,6 +5,10 @@ namespace UnityDataTools.UnityDataTool.Tests; +// Collect and record the current output returned by the same UnityDataTool commands +// that the tests will run. Once saved these become the reference data, and if the output +// changes the tests will fail. So this can be repeated if there is an "expected" change +// in the output. public static class ExpectedDataGenerator { public static void Generate(Context context) @@ -71,6 +75,9 @@ public static void Generate(Context context) var csprojFolder = Directory.GetParent(context.TestDataFolder).Parent.Parent.Parent.FullName; var outputFolder = Path.Combine(csprojFolder, "ExpectedData", context.UnityDataVersion); + expectedData.Save(outputFolder); + + // Also take a snapshot of the output of running "dump" commands on the test file "assetbundle" Directory.CreateDirectory(outputFolder); var dumpPath = Path.Combine(outputFolder, "dump"); @@ -80,7 +87,5 @@ public static void Generate(Context context) dumpPath = Path.Combine(outputFolder, "dump-s"); Directory.CreateDirectory(dumpPath); Program.Main(new string[] { "dump", Path.Combine(context.UnityDataFolder, "assetbundle"), "-o", dumpPath, "-s" }); - - expectedData.Save(outputFolder); } } From 1335a3642d45a647a924ed2873d200c9d0241f9b Mon Sep 17 00:00:00 2001 From: Andrew Skowronski Date: Thu, 18 Dec 2025 17:03:47 -0500 Subject: [PATCH 4/5] And initial test for Addressables BuildLayout import support Using two buildlayout files from building the AudioExample project. The test does some checks of hardcoded values across some of the main tables, to confirm that the database tables were populated as expected. This is just a "sanity check", but demonstrates how anything can be checked in the the reference data. --- .../buildlayout_2025.01.28.16.35.01.json | 2 + .../buildlayout_2025.01.28.16.51.14.json | 2 + .../AddressablesBuildLayoutTests.cs | 84 +++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 TestCommon/Data/AddressableBuildLayouts/buildlayout_2025.01.28.16.35.01.json create mode 100644 TestCommon/Data/AddressableBuildLayouts/buildlayout_2025.01.28.16.51.14.json create mode 100644 UnityDataTool.Tests/AddressablesBuildLayoutTests.cs diff --git a/TestCommon/Data/AddressableBuildLayouts/buildlayout_2025.01.28.16.35.01.json b/TestCommon/Data/AddressableBuildLayouts/buildlayout_2025.01.28.16.35.01.json new file mode 100644 index 0000000..897eae6 --- /dev/null +++ b/TestCommon/Data/AddressableBuildLayouts/buildlayout_2025.01.28.16.35.01.json @@ -0,0 +1,2 @@ +{"BuildTarget":19,"BuildResultHash":"a762437258c504cc7f18518dc9663c2b","BuildType":0,"BuildStartTime":"1/28/2025 4:35:01 PM","Duration":2.5228200999999998,"BuildError":"", +"UnityVersion":"6000.1.0b2","PackageVersion":"com.unity.addressables: 2.2.2","PlayerBuildVersion":"1.0","AddressablesEditorSettings":{"SettingsHash":"1595be5d5bf5de0ac1319ff503981501","ActiveProfile":{"Name":"Default","Id":"eb1018326f70bd440b0fda653327eb37","Values":[{"Key":"027d618fc8b846c43bde4f69b94d6548","Value":"ServerData/[BuildTarget]"},{"Key":"091eb06bd685ad44b84643456262ddb9","Value":""},{"Key":"69a2bcc4bc4078d4d81a27ccb79d293d","Value":"[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]"},{"Key":"8867b9b32191a4a48bc3deccf931a225","Value":"[UnityEditor.EditorUserBuildSettings.activeBuildTarget]"},{"Key":"db7c73bb3ea77cd468fe4a345d8f45be","Value":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]"}]},"BuildRemoteCatalog":false,"RemoteCatalogLoadPath":"","BundleLocalCatalog":false,"OptimizeCatalogSize":false,"CatalogRequestsTimeout":0,"MaxConcurrentWebRequests":3,"DisableCatalogUpdateOnStartup":false,"UniqueBundleIds":false,"EnableJsonCatalog":false,"NonRecursiveBuilding":true,"ContiguousBundles":true,"DisableSubAssetRepresentations":false,"ShaderBundleNaming":"ProjectName","MonoScriptBundleNaming":"ProjectName","StripUnityVersionFromBundleBuild":false},"AddressablesRuntimeSettings":{"LogResourceManagerExceptions":true,"CatalogLoadPaths":["{UnityEngine.AddressableAssets.Addressables.RuntimePath}/catalog.bin"],"CatalogHash":"e3c139a75c54ca9554a77ea3bb354cb1"},"BuildScript":"Default Build Script","DefaultGroup":{"rid":1000},"Groups":[{"rid":1001},{"rid":1000},{"rid":1002},{"rid":1003}],"BuiltInBundles":[],"DuplicatedAssets":[],"LocalCatalogBuildPath":"Library/com.unity.addressables/aa/Windows/StandaloneWindows64","RemoteCatalogBuildPath":"","references":{"version":2,"RefIds":[{"rid":1000,"type":{"class":"BuildLayout/Group","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"Default Local Group","Guid":"336a756d05aafc24295e5bd4d29d32fd","PackingMode":"PackTogether","Bundles":[],"Schemas":[{"rid":1004},{"rid":1005}]}},{"rid":1001,"type":{"class":"BuildLayout/Group","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"SamplePack1","Guid":"258c7459604d085478c05930706078c2","PackingMode":"PackSeparately","Bundles":[{"rid":1006},{"rid":1007},{"rid":1008},{"rid":1009},{"rid":1010},{"rid":1011},{"rid":1012},{"rid":1013},{"rid":1014},{"rid":1015}],"Schemas":[{"rid":1016},{"rid":1017}]}},{"rid":1002,"type":{"class":"BuildLayout/Group","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"Generated","Guid":"a201e34a5a3fa024080d99bcfceca817","PackingMode":"PackSeparately","Bundles":[{"rid":1018},{"rid":1019},{"rid":1020},{"rid":1021},{"rid":1022},{"rid":1023},{"rid":1024}],"Schemas":[{"rid":1025},{"rid":1026}]}},{"rid":1003,"type":{"class":"BuildLayout/Group","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"SamplePack2","Guid":"a56c5fee201ac7840a927f1c63a68728","PackingMode":"PackSeparately","Bundles":[{"rid":1027},{"rid":1028},{"rid":1029},{"rid":1030},{"rid":1031},{"rid":1032},{"rid":1033},{"rid":1034},{"rid":1035},{"rid":1036}],"Schemas":[{"rid":1037},{"rid":1038}]}},{"rid":1004,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"59cf7bcd70ab1b04c9384d55c7283117","Type":"BundledAssetGroupSchema","SchemaDataPairs":[{"Key":"InternalBundleIdMode","Value":"GroupGuidProjectIdHash"},{"Key":"Compression","Value":"LZ4"},{"Key":"IncludeAddressInCatalog","Value":"True"},{"Key":"IncludeGUIDInCatalog","Value":"True"},{"Key":"IncludeLabelsInCatalog","Value":"True"},{"Key":"InternalIdNamingMode","Value":"FullPath"},{"Key":"AssetBundledCacheClearBehavior","Value":"ClearWhenSpaceIsNeededInCache"},{"Key":"IncludeInBuild","Value":"True"},{"Key":"BundledAssetProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider"},{"Key":"ForceUniqueProvider","Value":"False"},{"Key":"UseAssetBundleCache","Value":"True"},{"Key":"UseAssetBundleCrc","Value":"True"},{"Key":"UseAssetBundleCrcForCachedBundles","Value":"True"},{"Key":"UseUnityWebRequestForLocalBundles","Value":"False"},{"Key":"Timeout","Value":"0"},{"Key":"ChunkedTransfer","Value":"False"},{"Key":"RedirectLimit","Value":"-1"},{"Key":"RetryCount","Value":"0"},{"Key":"BuildPath","Value":"Library/com.unity.addressables/aa/Windows/StandaloneWindows64"},{"Key":"LoadPath","Value":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}/StandaloneWindows64"},{"Key":"PackingMode","Value":"PackTogether"},{"Key":"AssetBundleProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider"},{"Key":"UseDefaultSchemaSettings","Value":"False"},{"Key":"SelectedPathPairIndex","Value":"0"},{"Key":"BundleNaming","Value":"AppendHash"},{"Key":"AssetLoadMode","Value":"RequestedAssetAndDependencies"}]}},{"rid":1005,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"b819cb823fb33024bbd3ac2f201858d8","Type":"ContentUpdateGroupSchema","SchemaDataPairs":[{"Key":"StaticContent","Value":"False"}]}},{"rid":1006,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_4.bundle","InternalName":"1f8d4b3797eb32be56cfe202caec6fd6","FileSize":23040,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":3983860733,"Hash":{"serializedVersion":"2","Hash":"8537ba5e4a59fcb3afad3b35878f92b5"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_4.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1039}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1007,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_6.bundle","InternalName":"3b83c8d34ca68f6e8852ceeb09c1eac4","FileSize":34528,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":4276430644,"Hash":{"serializedVersion":"2","Hash":"ac97b5cd2d8c21ca5ce5b9f37d83bdd8"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_6.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1040}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1008,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_3.bundle","InternalName":"1ff936ac860951602e79522deaa8c9c6","FileSize":25920,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":3072052095,"Hash":{"serializedVersion":"2","Hash":"2f713cc6c5ac93944787e53abc171506"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_3.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1041}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1009,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_5.bundle","InternalName":"69cc943b938e112fdb596763b7e3325c","FileSize":22336,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1442816670,"Hash":{"serializedVersion":"2","Hash":"deaa6a181faf7460597c59a1ccca07ab"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_5.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1042}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1010,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_2.bundle","InternalName":"6b51b282e9b4dd13e69d0739a380a55b","FileSize":22624,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":63243828,"Hash":{"serializedVersion":"2","Hash":"3a6d4700474b3c0f8d50dfe7cff32fef"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_2.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1043}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1011,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_7.bundle","InternalName":"175e752b232a665bd379dadef49c596c","FileSize":18816,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1064022522,"Hash":{"serializedVersion":"2","Hash":"1b40b4f0c23bf37432b5adcefce3bfe6"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_7.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1044}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1012,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_0.bundle","InternalName":"9b397865eb247e7fd24573450180e68a","FileSize":33824,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1395461927,"Hash":{"serializedVersion":"2","Hash":"1643a503052be3f585a8f1813952aa2e"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_0.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1045}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1013,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_8.bundle","InternalName":"81bd30248e70a514207fe576ea8be326","FileSize":15264,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1715313454,"Hash":{"serializedVersion":"2","Hash":"4d35b226b8f9624a4105997b26d8aa7d"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_8.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1046}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1014,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_1.bundle","InternalName":"6842397c643be2ce3b57ace165f4865d","FileSize":21440,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1296609683,"Hash":{"serializedVersion":"2","Hash":"ab22469cbd3dbdfdc5aec3d50fc1ea9a"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_1.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1047}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1015,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_9.bundle","InternalName":"bf7bc97bd4ced20925b9bd0e81f2d522","FileSize":19008,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":2442388881,"Hash":{"serializedVersion":"2","Hash":"1b7797b09d636b30e451e3509f17085f"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_9.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1048}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1016,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"c57adc9566661284e96157fafecd9441","Type":"BundledAssetGroupSchema","SchemaDataPairs":[{"Key":"InternalBundleIdMode","Value":"GroupGuidProjectIdHash"},{"Key":"Compression","Value":"Uncompressed"},{"Key":"IncludeAddressInCatalog","Value":"True"},{"Key":"IncludeGUIDInCatalog","Value":"True"},{"Key":"IncludeLabelsInCatalog","Value":"True"},{"Key":"InternalIdNamingMode","Value":"FullPath"},{"Key":"AssetBundledCacheClearBehavior","Value":"ClearWhenSpaceIsNeededInCache"},{"Key":"IncludeInBuild","Value":"True"},{"Key":"BundledAssetProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider"},{"Key":"ForceUniqueProvider","Value":"False"},{"Key":"UseAssetBundleCache","Value":"True"},{"Key":"UseAssetBundleCrc","Value":"True"},{"Key":"UseAssetBundleCrcForCachedBundles","Value":"True"},{"Key":"UseUnityWebRequestForLocalBundles","Value":"False"},{"Key":"Timeout","Value":"0"},{"Key":"ChunkedTransfer","Value":"False"},{"Key":"RedirectLimit","Value":"-1"},{"Key":"RetryCount","Value":"0"},{"Key":"BuildPath","Value":"Library/com.unity.addressables/aa/Windows/StandaloneWindows64"},{"Key":"LoadPath","Value":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}/StandaloneWindows64"},{"Key":"PackingMode","Value":"PackSeparately"},{"Key":"AssetBundleProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider"},{"Key":"UseDefaultSchemaSettings","Value":"False"},{"Key":"SelectedPathPairIndex","Value":"0"},{"Key":"BundleNaming","Value":"NoHash"},{"Key":"AssetLoadMode","Value":"RequestedAssetAndDependencies"}]}},{"rid":1017,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"c50c0af57295b8c42bb5d7d31526d100","Type":"ContentUpdateGroupSchema","SchemaDataPairs":[{"Key":"StaticContent","Value":"False"}]}},{"rid":1018,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"generated_assets_drum1.bundle","InternalName":"eb15f892bfc01dd4aa0ece86f7c590cb","FileSize":13872,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":694414153,"Hash":{"serializedVersion":"2","Hash":"fbfc3eaefa459f1a8dc4c47944041e49"},"Group":{"rid":1002},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\generated_assets_drum1.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1049}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1019,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"generated_assets_brownian.bundle","InternalName":"4f7dd1966bff4c80539f0a11bfb2f604","FileSize":589168,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1844209987,"Hash":{"serializedVersion":"2","Hash":"5fbf9ee0ebb26d30d3cc0d679905be55"},"Group":{"rid":1002},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\generated_assets_brownian.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1050}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1020,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"generated_assets_sine440.bundle","InternalName":"263ef2f877d5a34b7df03dd3b5bbeac4","FileSize":9456,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1802149312,"Hash":{"serializedVersion":"2","Hash":"3f0088ca1daf7287c0a6d442d28ab16c"},"Group":{"rid":1002},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\generated_assets_sine440.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1051}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1021,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"generated_assets_sine.bundle","InternalName":"b27a60ba4c0ec77b926f8c00dda0f250","FileSize":80368,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":632252596,"Hash":{"serializedVersion":"2","Hash":"b12d2962cea07e4ccad683f1cd676b2f"},"Group":{"rid":1002},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\generated_assets_sine.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1052}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1022,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"generated_assets_square.bundle","InternalName":"0458b4a804a69eb9a2a1833017035327","FileSize":415440,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":3072331629,"Hash":{"serializedVersion":"2","Hash":"107dfced85b01503feaa82ace8c8eb6e"},"Group":{"rid":1002},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\generated_assets_square.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1053}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1023,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"generated_assets_square300.bundle","InternalName":"440d49ce6d183b7c229bfa22d06bb0c9","FileSize":54720,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":2355528378,"Hash":{"serializedVersion":"2","Hash":"ca4dba1b947d28a787c26d35eaaaf1cc"},"Group":{"rid":1002},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\generated_assets_square300.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1054}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1024,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"generated_assets_drum2.bundle","InternalName":"1cbb611c300205dd4ff1d1a4062715cd","FileSize":14032,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":4195441782,"Hash":{"serializedVersion":"2","Hash":"389ddf22f270063e7e15b2854e7e645d"},"Group":{"rid":1002},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\generated_assets_drum2.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1055}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1025,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"4078d0d3d05126f4ca5d1809fb9865b0","Type":"BundledAssetGroupSchema","SchemaDataPairs":[{"Key":"InternalBundleIdMode","Value":"GroupGuidProjectIdHash"},{"Key":"Compression","Value":"Uncompressed"},{"Key":"IncludeAddressInCatalog","Value":"True"},{"Key":"IncludeGUIDInCatalog","Value":"True"},{"Key":"IncludeLabelsInCatalog","Value":"True"},{"Key":"InternalIdNamingMode","Value":"FullPath"},{"Key":"AssetBundledCacheClearBehavior","Value":"ClearWhenSpaceIsNeededInCache"},{"Key":"IncludeInBuild","Value":"True"},{"Key":"BundledAssetProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider"},{"Key":"ForceUniqueProvider","Value":"False"},{"Key":"UseAssetBundleCache","Value":"True"},{"Key":"UseAssetBundleCrc","Value":"True"},{"Key":"UseAssetBundleCrcForCachedBundles","Value":"True"},{"Key":"UseUnityWebRequestForLocalBundles","Value":"False"},{"Key":"Timeout","Value":"0"},{"Key":"ChunkedTransfer","Value":"False"},{"Key":"RedirectLimit","Value":"-1"},{"Key":"RetryCount","Value":"0"},{"Key":"BuildPath","Value":"Library/com.unity.addressables/aa/Windows/StandaloneWindows64"},{"Key":"LoadPath","Value":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}/StandaloneWindows64"},{"Key":"PackingMode","Value":"PackSeparately"},{"Key":"AssetBundleProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider"},{"Key":"UseDefaultSchemaSettings","Value":"False"},{"Key":"SelectedPathPairIndex","Value":"0"},{"Key":"BundleNaming","Value":"NoHash"},{"Key":"AssetLoadMode","Value":"RequestedAssetAndDependencies"}]}},{"rid":1026,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"7550134532116b546bbfc73d635d238d","Type":"ContentUpdateGroupSchema","SchemaDataPairs":[{"Key":"StaticContent","Value":"False"}]}},{"rid":1027,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_e.bundle","InternalName":"6474f377f608a8c16ff891aed86ad9c6","FileSize":73376,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":4278687744,"Hash":{"serializedVersion":"2","Hash":"e73641e44d76286924c42a4869ab1dd1"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_e.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1056}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1028,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_c.bundle","InternalName":"3cd71b90318e38bf58581044d4347d69","FileSize":21120,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1624109646,"Hash":{"serializedVersion":"2","Hash":"31d562de9449e50f1bbc6496696f4ea1"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_c.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1057}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1029,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_j.bundle","InternalName":"b64b402edb473d5183e9e428f8a744a2","FileSize":62976,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":3241181028,"Hash":{"serializedVersion":"2","Hash":"93e2176fdb1e52c234611e32440653b6"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_j.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1058}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1030,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_h.bundle","InternalName":"3b16fc37c6221a87f82c9aadd34e7af4","FileSize":70976,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1058037547,"Hash":{"serializedVersion":"2","Hash":"130c21f4f6fab54624f9929178da838d"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_h.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1059}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1031,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_f.bundle","InternalName":"5e3b8d40fbcd8f3c3b4e8eb144de6af4","FileSize":54528,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1251071412,"Hash":{"serializedVersion":"2","Hash":"e02ddc8784b1ead17d021bc3f7704ed3"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_f.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1060}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1032,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_b.bundle","InternalName":"cc6a2013cf6341e142c7a2937d22b6b8","FileSize":23488,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":3745088177,"Hash":{"serializedVersion":"2","Hash":"72fd915bc88a0e3122bdf8410d84498b"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_b.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1061}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1033,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_d.bundle","InternalName":"b9872cdeb1f364a3531aca1beeae2c77","FileSize":134464,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":650826451,"Hash":{"serializedVersion":"2","Hash":"e2b46d4caabe1bfd5ec92115bff593fa"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_d.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1062}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1034,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_a.bundle","InternalName":"30ae8f6391be92f8f247d3c771fb2c1e","FileSize":51264,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":597684922,"Hash":{"serializedVersion":"2","Hash":"4bdff88ddff01b857c9f2584d4c73fbe"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_a.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1063}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1035,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_i.bundle","InternalName":"c5ea5ba50ff6c704382d42bff195c10e","FileSize":79456,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":857134522,"Hash":{"serializedVersion":"2","Hash":"d1e23b53f215bf4997133b70f80f3634"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_i.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1064}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1036,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_g.bundle","InternalName":"bb3e6d6039b26a029b9c7cb8edaa8e2a","FileSize":65088,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":2918875995,"Hash":{"serializedVersion":"2","Hash":"ee3c751b3c0b5649c00d41d0728752b5"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_g.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1065}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1037,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"a5af9a2aae0a45347a8a5ef8fafece02","Type":"BundledAssetGroupSchema","SchemaDataPairs":[{"Key":"InternalBundleIdMode","Value":"GroupGuidProjectIdHash"},{"Key":"Compression","Value":"Uncompressed"},{"Key":"IncludeAddressInCatalog","Value":"True"},{"Key":"IncludeGUIDInCatalog","Value":"True"},{"Key":"IncludeLabelsInCatalog","Value":"True"},{"Key":"InternalIdNamingMode","Value":"FullPath"},{"Key":"AssetBundledCacheClearBehavior","Value":"ClearWhenSpaceIsNeededInCache"},{"Key":"IncludeInBuild","Value":"True"},{"Key":"BundledAssetProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider"},{"Key":"ForceUniqueProvider","Value":"False"},{"Key":"UseAssetBundleCache","Value":"True"},{"Key":"UseAssetBundleCrc","Value":"True"},{"Key":"UseAssetBundleCrcForCachedBundles","Value":"True"},{"Key":"UseUnityWebRequestForLocalBundles","Value":"False"},{"Key":"Timeout","Value":"0"},{"Key":"ChunkedTransfer","Value":"False"},{"Key":"RedirectLimit","Value":"-1"},{"Key":"RetryCount","Value":"0"},{"Key":"BuildPath","Value":"Library/com.unity.addressables/aa/Windows/StandaloneWindows64"},{"Key":"LoadPath","Value":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}/StandaloneWindows64"},{"Key":"PackingMode","Value":"PackSeparately"},{"Key":"AssetBundleProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider"},{"Key":"UseDefaultSchemaSettings","Value":"False"},{"Key":"SelectedPathPairIndex","Value":"0"},{"Key":"BundleNaming","Value":"NoHash"},{"Key":"AssetLoadMode","Value":"RequestedAssetAndDependencies"}]}},{"rid":1038,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"c0dbabc9705c9644d9a44d00bd653470","Type":"ContentUpdateGroupSchema","SchemaDataPairs":[{"Key":"StaticContent","Value":"False"}]}},{"rid":1039,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-73b98a43ee020a5e591db9518c2cb296/CAB-73b98a43ee020a5e591db9518c2cb296","Bundle":{"rid":1006},"SubFiles":[{"rid":1066},{"rid":1067}],"Assets":[{"rid":1068}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1040,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-27752acd531d26b983a15c00264c45fb/CAB-27752acd531d26b983a15c00264c45fb","Bundle":{"rid":1007},"SubFiles":[{"rid":1069},{"rid":1070}],"Assets":[{"rid":1071}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1041,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-1f5bcdc7a5409950f693976900dd4aa2/CAB-1f5bcdc7a5409950f693976900dd4aa2","Bundle":{"rid":1008},"SubFiles":[{"rid":1072},{"rid":1073}],"Assets":[{"rid":1074}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1042,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-0fa1a01f0e1b970a85c89e575595f749/CAB-0fa1a01f0e1b970a85c89e575595f749","Bundle":{"rid":1009},"SubFiles":[{"rid":1075},{"rid":1076}],"Assets":[{"rid":1077}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1043,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-01315ab73001d0050a9e9a4454dc947f/CAB-01315ab73001d0050a9e9a4454dc947f","Bundle":{"rid":1010},"SubFiles":[{"rid":1078},{"rid":1079}],"Assets":[{"rid":1080}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1044,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-33b13439bdd10f67ea9ad546608069c7/CAB-33b13439bdd10f67ea9ad546608069c7","Bundle":{"rid":1011},"SubFiles":[{"rid":1081},{"rid":1082}],"Assets":[{"rid":1083}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1045,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-70392fbb89818a9b1dc85933205fc393/CAB-70392fbb89818a9b1dc85933205fc393","Bundle":{"rid":1012},"SubFiles":[{"rid":1084},{"rid":1085}],"Assets":[{"rid":1086}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1046,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-0779c46a926a678e417643586b001645/CAB-0779c46a926a678e417643586b001645","Bundle":{"rid":1013},"SubFiles":[{"rid":1087},{"rid":1088}],"Assets":[{"rid":1089}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1047,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-0a2912740c976ca7a7b1ccc28e6e7a7a/CAB-0a2912740c976ca7a7b1ccc28e6e7a7a","Bundle":{"rid":1014},"SubFiles":[{"rid":1090},{"rid":1091}],"Assets":[{"rid":1092}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1048,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-05d1c88fa8f8866205a8423046199e1e/CAB-05d1c88fa8f8866205a8423046199e1e","Bundle":{"rid":1015},"SubFiles":[{"rid":1093},{"rid":1094}],"Assets":[{"rid":1095}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1049,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-d021e216fd6d23c0d84b2c10d7d2fe9b/CAB-d021e216fd6d23c0d84b2c10d7d2fe9b","Bundle":{"rid":1018},"SubFiles":[{"rid":1096},{"rid":1097}],"Assets":[{"rid":1098}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":212},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1050,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-e02a12723316bd57c4529362df4c1c7b/CAB-e02a12723316bd57c4529362df4c1c7b","Bundle":{"rid":1019},"SubFiles":[{"rid":1099},{"rid":1100}],"Assets":[{"rid":1101}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":216},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1051,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-dfc27c99e8d3e8200d1e73d09ba342fc/CAB-dfc27c99e8d3e8200d1e73d09ba342fc","Bundle":{"rid":1020},"SubFiles":[{"rid":1102},{"rid":1103}],"Assets":[{"rid":1104}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":212},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1052,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-d8c2508dc18ced397b0b7ea3e293046b/CAB-d8c2508dc18ced397b0b7ea3e293046b","Bundle":{"rid":1021},"SubFiles":[{"rid":1105},{"rid":1106}],"Assets":[{"rid":1107}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":212},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1053,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-ab13095ed3bae6812ebbdefdf8c8fb30/CAB-ab13095ed3bae6812ebbdefdf8c8fb30","Bundle":{"rid":1022},"SubFiles":[{"rid":1108},{"rid":1109}],"Assets":[{"rid":1110}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":212},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1054,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-6d55f28146ef170678a8f3a3057434a1/CAB-6d55f28146ef170678a8f3a3057434a1","Bundle":{"rid":1023},"SubFiles":[{"rid":1111},{"rid":1112}],"Assets":[{"rid":1113}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":216},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1055,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-2d0e0b283a1fb1a45b272552509552ea/CAB-2d0e0b283a1fb1a45b272552509552ea","Bundle":{"rid":1024},"SubFiles":[{"rid":1114},{"rid":1115}],"Assets":[{"rid":1116}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":212},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1056,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-2a6b5cdb2a206a3d4aa0eab375f1e5d6/CAB-2a6b5cdb2a206a3d4aa0eab375f1e5d6","Bundle":{"rid":1027},"SubFiles":[{"rid":1117},{"rid":1118}],"Assets":[{"rid":1119}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1057,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-a209ca6fc6e41ac9f6d6fc1d57dc96e3/CAB-a209ca6fc6e41ac9f6d6fc1d57dc96e3","Bundle":{"rid":1028},"SubFiles":[{"rid":1120},{"rid":1121}],"Assets":[{"rid":1122}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1058,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-5319be78ac1d58d02d94d24bec324ca6/CAB-5319be78ac1d58d02d94d24bec324ca6","Bundle":{"rid":1029},"SubFiles":[{"rid":1123},{"rid":1124}],"Assets":[{"rid":1125}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1059,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-8cc6bc79beeec25a3b2e09484debb7bf/CAB-8cc6bc79beeec25a3b2e09484debb7bf","Bundle":{"rid":1030},"SubFiles":[{"rid":1126},{"rid":1127}],"Assets":[{"rid":1128}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1060,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-e74367794c024c21ece7e1aa44e43744/CAB-e74367794c024c21ece7e1aa44e43744","Bundle":{"rid":1031},"SubFiles":[{"rid":1129},{"rid":1130}],"Assets":[{"rid":1131}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1061,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-84aa7474c89cce2aa8ded8d7683cb357/CAB-84aa7474c89cce2aa8ded8d7683cb357","Bundle":{"rid":1032},"SubFiles":[{"rid":1132},{"rid":1133}],"Assets":[{"rid":1134}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1062,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-a2439cd83acd1c60c58561542cf99432/CAB-a2439cd83acd1c60c58561542cf99432","Bundle":{"rid":1033},"SubFiles":[{"rid":1135},{"rid":1136}],"Assets":[{"rid":1137}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1063,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-fbb9c1b8073b821e042a5bc47ba09cf7/CAB-fbb9c1b8073b821e042a5bc47ba09cf7","Bundle":{"rid":1034},"SubFiles":[{"rid":1138},{"rid":1139}],"Assets":[{"rid":1140}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1064,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-f6c891248d11a37872b027b369b820af/CAB-f6c891248d11a37872b027b369b820af","Bundle":{"rid":1035},"SubFiles":[{"rid":1141},{"rid":1142}],"Assets":[{"rid":1143}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1065,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-2c2d6e9b78804ee1e800e2b1c620f98a/CAB-2c2d6e9b78804ee1e800e2b1c620f98a","Bundle":{"rid":1036},"SubFiles":[{"rid":1144},{"rid":1145}],"Assets":[{"rid":1146}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1066,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-73b98a43ee020a5e591db9518c2cb296","IsSerializedFile":true,"Size":3680}},{"rid":1067,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-73b98a43ee020a5e591db9518c2cb296.resource","IsSerializedFile":false,"Size":19200}},{"rid":1068,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"054a1ca02d98d394b85418dd05dad9ff","AssetPath":"Assets/Samples/Saxophone1/4.mp3","InternalId":"Assets/Samples/Saxophone1/4.mp3","AssetHash":{"serializedVersion":"2","Hash":"5583cbfc81d477a4697fafa00f34c984"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"4","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":19200,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"4","Labels":[],"SerializedSize":156,"StreamedSize":19200,"File":{"rid":1039},"Bundle":{"rid":1006},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1069,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-27752acd531d26b983a15c00264c45fb","IsSerializedFile":true,"Size":3680}},{"rid":1070,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-27752acd531d26b983a15c00264c45fb.resource","IsSerializedFile":false,"Size":30688}},{"rid":1071,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"278c261333bf8604eb5c83790d02004d","AssetPath":"Assets/Samples/Saxophone1/6.mp3","InternalId":"Assets/Samples/Saxophone1/6.mp3","AssetHash":{"serializedVersion":"2","Hash":"4b21a94723f1b72670836b8034ae42a0"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"6","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":30688,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"6","Labels":[],"SerializedSize":156,"StreamedSize":30688,"File":{"rid":1040},"Bundle":{"rid":1007},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1072,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-1f5bcdc7a5409950f693976900dd4aa2","IsSerializedFile":true,"Size":3676}},{"rid":1073,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-1f5bcdc7a5409950f693976900dd4aa2.resource","IsSerializedFile":false,"Size":22080}},{"rid":1074,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"43b17a5450ece6b43a6b459b5eeaf648","AssetPath":"Assets/Samples/Saxophone1/3.mp3","InternalId":"Assets/Samples/Saxophone1/3.mp3","AssetHash":{"serializedVersion":"2","Hash":"fd3c09c06b08e3de6829d657a581f45c"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"3","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":22080,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"3","Labels":[],"SerializedSize":156,"StreamedSize":22080,"File":{"rid":1041},"Bundle":{"rid":1008},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1075,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-0fa1a01f0e1b970a85c89e575595f749","IsSerializedFile":true,"Size":3676}},{"rid":1076,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-0fa1a01f0e1b970a85c89e575595f749.resource","IsSerializedFile":false,"Size":18496}},{"rid":1077,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"870edf9b56842b44f8f5e92f0ea5a76e","AssetPath":"Assets/Samples/Saxophone1/5.mp3","InternalId":"Assets/Samples/Saxophone1/5.mp3","AssetHash":{"serializedVersion":"2","Hash":"cf947973463a1e4e2df69fc10197fb4d"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"5","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":18496,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"5","Labels":[],"SerializedSize":156,"StreamedSize":18496,"File":{"rid":1042},"Bundle":{"rid":1009},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1078,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-01315ab73001d0050a9e9a4454dc947f","IsSerializedFile":true,"Size":3680}},{"rid":1079,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-01315ab73001d0050a9e9a4454dc947f.resource","IsSerializedFile":false,"Size":18784}},{"rid":1080,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"9607360293b294646ac2684e8de61c4e","AssetPath":"Assets/Samples/Saxophone1/2.mp3","InternalId":"Assets/Samples/Saxophone1/2.mp3","AssetHash":{"serializedVersion":"2","Hash":"0b88ccd96e292fdb6f5b286deb1a29e9"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"2","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":18784,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"2","Labels":[],"SerializedSize":156,"StreamedSize":18784,"File":{"rid":1043},"Bundle":{"rid":1010},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1081,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-33b13439bdd10f67ea9ad546608069c7","IsSerializedFile":true,"Size":3676}},{"rid":1082,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-33b13439bdd10f67ea9ad546608069c7.resource","IsSerializedFile":false,"Size":14976}},{"rid":1083,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"aedaaf69c851e3d47bff4d6408971c31","AssetPath":"Assets/Samples/Saxophone1/7.mp3","InternalId":"Assets/Samples/Saxophone1/7.mp3","AssetHash":{"serializedVersion":"2","Hash":"308e89a7fc814e86b6a4ddeffb537aea"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"7","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":14976,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"7","Labels":[],"SerializedSize":156,"StreamedSize":14976,"File":{"rid":1044},"Bundle":{"rid":1011},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1084,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-70392fbb89818a9b1dc85933205fc393","IsSerializedFile":true,"Size":3676}},{"rid":1085,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-70392fbb89818a9b1dc85933205fc393.resource","IsSerializedFile":false,"Size":29984}},{"rid":1086,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"bb0e3bc1035198b4ba3589f09da21214","AssetPath":"Assets/Samples/Saxophone1/0.mp3","InternalId":"Assets/Samples/Saxophone1/0.mp3","AssetHash":{"serializedVersion":"2","Hash":"4005ae0b3feb4602beb3076b410a4f0d"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"0","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":29984,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"0","Labels":[],"SerializedSize":156,"StreamedSize":29984,"File":{"rid":1045},"Bundle":{"rid":1012},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1087,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-0779c46a926a678e417643586b001645","IsSerializedFile":true,"Size":3680}},{"rid":1088,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-0779c46a926a678e417643586b001645.resource","IsSerializedFile":false,"Size":11424}},{"rid":1089,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"c09ca9d2c17ea134eac56c494c04a1b8","AssetPath":"Assets/Samples/Saxophone1/8.mp3","InternalId":"Assets/Samples/Saxophone1/8.mp3","AssetHash":{"serializedVersion":"2","Hash":"6c77f2c27e4bee363ba77476f17f5f14"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"8","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":11424,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"8","Labels":[],"SerializedSize":156,"StreamedSize":11424,"File":{"rid":1046},"Bundle":{"rid":1013},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1090,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-0a2912740c976ca7a7b1ccc28e6e7a7a","IsSerializedFile":true,"Size":3680}},{"rid":1091,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-0a2912740c976ca7a7b1ccc28e6e7a7a.resource","IsSerializedFile":false,"Size":17600}},{"rid":1092,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"d0c2f86c1157074499c565080193d5a5","AssetPath":"Assets/Samples/Saxophone1/1.mp3","InternalId":"Assets/Samples/Saxophone1/1.mp3","AssetHash":{"serializedVersion":"2","Hash":"fa8a03b7ce0e720d3fafdae3bdc01b7d"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"1","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":17600,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"1","Labels":[],"SerializedSize":156,"StreamedSize":17600,"File":{"rid":1047},"Bundle":{"rid":1014},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1093,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-05d1c88fa8f8866205a8423046199e1e","IsSerializedFile":true,"Size":3676}},{"rid":1094,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-05d1c88fa8f8866205a8423046199e1e.resource","IsSerializedFile":false,"Size":15168}},{"rid":1095,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"f778ae0076321f44ab2c21fcaac7036e","AssetPath":"Assets/Samples/Saxophone1/9.mp3","InternalId":"Assets/Samples/Saxophone1/9.mp3","AssetHash":{"serializedVersion":"2","Hash":"044e3a1ad7bb939b1477a6fb6cf454ea"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"9","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":15168,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"9","Labels":[],"SerializedSize":156,"StreamedSize":15168,"File":{"rid":1048},"Bundle":{"rid":1015},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1096,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-d021e216fd6d23c0d84b2c10d7d2fe9b","IsSerializedFile":true,"Size":3684}},{"rid":1097,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-d021e216fd6d23c0d84b2c10d7d2fe9b.resource","IsSerializedFile":false,"Size":10016}},{"rid":1098,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"05a9426e7d9e40c4987c3626716fca50","AssetPath":"Assets/Samples/Generated/drum1.mp3","InternalId":"Assets/Samples/Generated/drum1.mp3","AssetHash":{"serializedVersion":"2","Hash":"d0da3f43e8ea8ffdb231525891abd7ef"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"drum1","ComponentName":"","AssetType":6,"SerializedSize":160,"StreamedSize":10016,"References":[]}],"MainAssetType":6,"GroupGuid":"a201e34a5a3fa024080d99bcfceca817","AddressableName":"drum1","Labels":[],"SerializedSize":160,"StreamedSize":10016,"File":{"rid":1049},"Bundle":{"rid":1018},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1099,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-e02a12723316bd57c4529362df4c1c7b","IsSerializedFile":true,"Size":3688}},{"rid":1100,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-e02a12723316bd57c4529362df4c1c7b.resource","IsSerializedFile":false,"Size":585312}},{"rid":1101,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"3cda7623f7b5b9246a6061ca8229b092","AssetPath":"Assets/Samples/Generated/brownian.mp3","InternalId":"Assets/Samples/Generated/brownian.mp3","AssetHash":{"serializedVersion":"2","Hash":"8fe0a5dc26e0964f26fddc597b7d7c33"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"brownian","ComponentName":"","AssetType":6,"SerializedSize":160,"StreamedSize":585312,"References":[]}],"MainAssetType":6,"GroupGuid":"a201e34a5a3fa024080d99bcfceca817","AddressableName":"brownian","Labels":[],"SerializedSize":160,"StreamedSize":585312,"File":{"rid":1050},"Bundle":{"rid":1019},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1102,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-dfc27c99e8d3e8200d1e73d09ba342fc","IsSerializedFile":true,"Size":3696}},{"rid":1103,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-dfc27c99e8d3e8200d1e73d09ba342fc.resource","IsSerializedFile":false,"Size":5600}},{"rid":1104,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"53b75bd55183b2a45a1df4c8b8165a45","AssetPath":"Assets/Samples/Generated/sine440.mp3","InternalId":"Assets/Samples/Generated/sine440.mp3","AssetHash":{"serializedVersion":"2","Hash":"c1c1e2e7e5daff3912b3a63d6c9ea6d3"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"sine440","ComponentName":"","AssetType":6,"SerializedSize":160,"StreamedSize":5600,"References":[]}],"MainAssetType":6,"GroupGuid":"a201e34a5a3fa024080d99bcfceca817","AddressableName":"sine440","Labels":[],"SerializedSize":160,"StreamedSize":5600,"File":{"rid":1051},"Bundle":{"rid":1020},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1105,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-d8c2508dc18ced397b0b7ea3e293046b","IsSerializedFile":true,"Size":3692}},{"rid":1106,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-d8c2508dc18ced397b0b7ea3e293046b.resource","IsSerializedFile":false,"Size":76512}},{"rid":1107,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"7b71f8948f4fd38428df1a68d3f125d3","AssetPath":"Assets/Samples/Generated/sine.mp3","InternalId":"Assets/Samples/Generated/sine.mp3","AssetHash":{"serializedVersion":"2","Hash":"4be37db5520820e1da7608952615032a"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"sine","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":76512,"References":[]}],"MainAssetType":6,"GroupGuid":"a201e34a5a3fa024080d99bcfceca817","AddressableName":"sine","Labels":[],"SerializedSize":156,"StreamedSize":76512,"File":{"rid":1052},"Bundle":{"rid":1021},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1108,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-ab13095ed3bae6812ebbdefdf8c8fb30","IsSerializedFile":true,"Size":3684}},{"rid":1109,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-ab13095ed3bae6812ebbdefdf8c8fb30.resource","IsSerializedFile":false,"Size":411584}},{"rid":1110,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"b5ac7dcf38759374487178c81bfb5e08","AssetPath":"Assets/Samples/Generated/square.mp3","InternalId":"Assets/Samples/Generated/square.mp3","AssetHash":{"serializedVersion":"2","Hash":"f0b63a4867fee36ca0c25fffa6e73f91"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"square","ComponentName":"","AssetType":6,"SerializedSize":160,"StreamedSize":411584,"References":[]}],"MainAssetType":6,"GroupGuid":"a201e34a5a3fa024080d99bcfceca817","AddressableName":"square","Labels":[],"SerializedSize":160,"StreamedSize":411584,"File":{"rid":1053},"Bundle":{"rid":1022},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1111,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-6d55f28146ef170678a8f3a3057434a1","IsSerializedFile":true,"Size":3704}},{"rid":1112,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-6d55f28146ef170678a8f3a3057434a1.resource","IsSerializedFile":false,"Size":50848}},{"rid":1113,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"c2dc13a18b5d4aa45a78f010cf27e471","AssetPath":"Assets/Samples/Generated/square300.mp3","InternalId":"Assets/Samples/Generated/square300.mp3","AssetHash":{"serializedVersion":"2","Hash":"20e643e7899e9d8dc0a995d60373d1d1"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"square300","ComponentName":"","AssetType":6,"SerializedSize":164,"StreamedSize":50848,"References":[]}],"MainAssetType":6,"GroupGuid":"a201e34a5a3fa024080d99bcfceca817","AddressableName":"square300","Labels":[],"SerializedSize":164,"StreamedSize":50848,"File":{"rid":1054},"Bundle":{"rid":1023},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1114,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-2d0e0b283a1fb1a45b272552509552ea","IsSerializedFile":true,"Size":3684}},{"rid":1115,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-2d0e0b283a1fb1a45b272552509552ea.resource","IsSerializedFile":false,"Size":10176}},{"rid":1116,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"d9cbbbe6d1a30f248a799b211d6fbddc","AssetPath":"Assets/Samples/Generated/drum2.mp3","InternalId":"Assets/Samples/Generated/drum2.mp3","AssetHash":{"serializedVersion":"2","Hash":"aa796e94d85494f1022d199420eb00e9"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"drum2","ComponentName":"","AssetType":6,"SerializedSize":160,"StreamedSize":10176,"References":[]}],"MainAssetType":6,"GroupGuid":"a201e34a5a3fa024080d99bcfceca817","AddressableName":"drum2","Labels":[],"SerializedSize":160,"StreamedSize":10176,"File":{"rid":1055},"Bundle":{"rid":1024},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1117,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-2a6b5cdb2a206a3d4aa0eab375f1e5d6","IsSerializedFile":true,"Size":3676}},{"rid":1118,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-2a6b5cdb2a206a3d4aa0eab375f1e5d6.resource","IsSerializedFile":false,"Size":69536}},{"rid":1119,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"196f8c9e3e9cc764db55da751c1b5d9d","AssetPath":"Assets/Samples/Saxophone2/e.mp3","InternalId":"Assets/Samples/Saxophone2/e.mp3","AssetHash":{"serializedVersion":"2","Hash":"595975d07d7c55461eaefd0cb68f39ab"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"e","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":69536,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"e","Labels":[],"SerializedSize":156,"StreamedSize":69536,"File":{"rid":1056},"Bundle":{"rid":1027},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1120,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-a209ca6fc6e41ac9f6d6fc1d57dc96e3","IsSerializedFile":true,"Size":3676}},{"rid":1121,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-a209ca6fc6e41ac9f6d6fc1d57dc96e3.resource","IsSerializedFile":false,"Size":17280}},{"rid":1122,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"3d88ab3314ac1c9438e0f35a59507386","AssetPath":"Assets/Samples/Saxophone2/c.mp3","InternalId":"Assets/Samples/Saxophone2/c.mp3","AssetHash":{"serializedVersion":"2","Hash":"186d0444728feeea6897392ad1b23646"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"c","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":17280,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"c","Labels":[],"SerializedSize":156,"StreamedSize":17280,"File":{"rid":1057},"Bundle":{"rid":1028},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1123,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-5319be78ac1d58d02d94d24bec324ca6","IsSerializedFile":true,"Size":3676}},{"rid":1124,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-5319be78ac1d58d02d94d24bec324ca6.resource","IsSerializedFile":false,"Size":59136}},{"rid":1125,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"4016dace81140b54ea0671c1720a43e3","AssetPath":"Assets/Samples/Saxophone2/j.mp3","InternalId":"Assets/Samples/Saxophone2/j.mp3","AssetHash":{"serializedVersion":"2","Hash":"d560bc884e64301ded4ab20f0c6eacb0"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"j","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":59136,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"j","Labels":[],"SerializedSize":156,"StreamedSize":59136,"File":{"rid":1058},"Bundle":{"rid":1029},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1126,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-8cc6bc79beeec25a3b2e09484debb7bf","IsSerializedFile":true,"Size":3680}},{"rid":1127,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-8cc6bc79beeec25a3b2e09484debb7bf.resource","IsSerializedFile":false,"Size":67136}},{"rid":1128,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"7939bd4f5f2fbdf49bafc5670ab6effa","AssetPath":"Assets/Samples/Saxophone2/h.mp3","InternalId":"Assets/Samples/Saxophone2/h.mp3","AssetHash":{"serializedVersion":"2","Hash":"1819624ce488110ca05f21f6f0d20afd"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"h","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":67136,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"h","Labels":[],"SerializedSize":156,"StreamedSize":67136,"File":{"rid":1059},"Bundle":{"rid":1030},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1129,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-e74367794c024c21ece7e1aa44e43744","IsSerializedFile":true,"Size":3676}},{"rid":1130,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-e74367794c024c21ece7e1aa44e43744.resource","IsSerializedFile":false,"Size":50688}},{"rid":1131,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"88339cf287767ec418310d09f36890d7","AssetPath":"Assets/Samples/Saxophone2/f.mp3","InternalId":"Assets/Samples/Saxophone2/f.mp3","AssetHash":{"serializedVersion":"2","Hash":"021fef13a6a5c26bb478c97d61593d50"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"f","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":50688,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"f","Labels":[],"SerializedSize":156,"StreamedSize":50688,"File":{"rid":1060},"Bundle":{"rid":1031},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1132,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-84aa7474c89cce2aa8ded8d7683cb357","IsSerializedFile":true,"Size":3680}},{"rid":1133,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-84aa7474c89cce2aa8ded8d7683cb357.resource","IsSerializedFile":false,"Size":19648}},{"rid":1134,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"8fb0886c8a099dd41b90c45f7661a985","AssetPath":"Assets/Samples/Saxophone2/b.mp3","InternalId":"Assets/Samples/Saxophone2/b.mp3","AssetHash":{"serializedVersion":"2","Hash":"8cf6772ae65b8cdd0f61b49192040aab"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"b","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":19648,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"b","Labels":[],"SerializedSize":156,"StreamedSize":19648,"File":{"rid":1061},"Bundle":{"rid":1032},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1135,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-a2439cd83acd1c60c58561542cf99432","IsSerializedFile":true,"Size":3676}},{"rid":1136,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-a2439cd83acd1c60c58561542cf99432.resource","IsSerializedFile":false,"Size":130624}},{"rid":1137,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"a07c3f4745fae9045a615773fd208e27","AssetPath":"Assets/Samples/Saxophone2/d.mp3","InternalId":"Assets/Samples/Saxophone2/d.mp3","AssetHash":{"serializedVersion":"2","Hash":"2fbfe1f4d362be7e6f7c1ba931ec44e6"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"d","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":130624,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"d","Labels":[],"SerializedSize":156,"StreamedSize":130624,"File":{"rid":1062},"Bundle":{"rid":1033},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1138,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-fbb9c1b8073b821e042a5bc47ba09cf7","IsSerializedFile":true,"Size":3680}},{"rid":1139,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-fbb9c1b8073b821e042a5bc47ba09cf7.resource","IsSerializedFile":false,"Size":47424}},{"rid":1140,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"b65a7916245593b4e89f4bd0aa920533","AssetPath":"Assets/Samples/Saxophone2/a.mp3","InternalId":"Assets/Samples/Saxophone2/a.mp3","AssetHash":{"serializedVersion":"2","Hash":"ef69479f5ac11a5908709f854667429a"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"a","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":47424,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"a","Labels":[],"SerializedSize":156,"StreamedSize":47424,"File":{"rid":1063},"Bundle":{"rid":1034},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1141,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-f6c891248d11a37872b027b369b820af","IsSerializedFile":true,"Size":3680}},{"rid":1142,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-f6c891248d11a37872b027b369b820af.resource","IsSerializedFile":false,"Size":75616}},{"rid":1143,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"bc3e0ce7464020d4f8a320e0b4f1fb2a","AssetPath":"Assets/Samples/Saxophone2/i.mp3","InternalId":"Assets/Samples/Saxophone2/i.mp3","AssetHash":{"serializedVersion":"2","Hash":"39e237b4cf5a5dcabf21590d8f8c31ce"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"i","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":75616,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"i","Labels":[],"SerializedSize":156,"StreamedSize":75616,"File":{"rid":1064},"Bundle":{"rid":1035},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1144,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-2c2d6e9b78804ee1e800e2b1c620f98a","IsSerializedFile":true,"Size":3680}},{"rid":1145,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-2c2d6e9b78804ee1e800e2b1c620f98a.resource","IsSerializedFile":false,"Size":61248}},{"rid":1146,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"dd6d9bdc76d97ad45ab51e7706ca1fe6","AssetPath":"Assets/Samples/Saxophone2/g.mp3","InternalId":"Assets/Samples/Saxophone2/g.mp3","AssetHash":{"serializedVersion":"2","Hash":"bc56a2fe480c324ea70660c567d7efd2"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"g","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":61248,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"g","Labels":[],"SerializedSize":156,"StreamedSize":61248,"File":{"rid":1065},"Bundle":{"rid":1036},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}}]}} \ No newline at end of file diff --git a/TestCommon/Data/AddressableBuildLayouts/buildlayout_2025.01.28.16.51.14.json b/TestCommon/Data/AddressableBuildLayouts/buildlayout_2025.01.28.16.51.14.json new file mode 100644 index 0000000..27c3e76 --- /dev/null +++ b/TestCommon/Data/AddressableBuildLayouts/buildlayout_2025.01.28.16.51.14.json @@ -0,0 +1,2 @@ +{"BuildTarget":19,"BuildResultHash":"a762437258c504cc7f18518dc9663c2b","BuildType":0,"BuildStartTime":"1/28/2025 4:51:14 PM","Duration":4.139456399999999,"BuildError":"", +"UnityVersion":"6000.1.0b2","PackageVersion":"com.unity.addressables: 2.2.2","PlayerBuildVersion":"1.0","AddressablesEditorSettings":{"SettingsHash":"fca389814f9353d943910c8b1052b491","ActiveProfile":{"Name":"Default","Id":"eb1018326f70bd440b0fda653327eb37","Values":[{"Key":"027d618fc8b846c43bde4f69b94d6548","Value":"ServerData/[BuildTarget]"},{"Key":"091eb06bd685ad44b84643456262ddb9","Value":""},{"Key":"69a2bcc4bc4078d4d81a27ccb79d293d","Value":"[UnityEngine.AddressableAssets.Addressables.BuildPath]/[BuildTarget]"},{"Key":"8867b9b32191a4a48bc3deccf931a225","Value":"[UnityEditor.EditorUserBuildSettings.activeBuildTarget]"},{"Key":"db7c73bb3ea77cd468fe4a345d8f45be","Value":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}/[BuildTarget]"}]},"BuildRemoteCatalog":false,"RemoteCatalogLoadPath":"","BundleLocalCatalog":false,"OptimizeCatalogSize":false,"CatalogRequestsTimeout":0,"MaxConcurrentWebRequests":3,"DisableCatalogUpdateOnStartup":false,"UniqueBundleIds":false,"EnableJsonCatalog":false,"NonRecursiveBuilding":true,"ContiguousBundles":true,"DisableSubAssetRepresentations":false,"ShaderBundleNaming":"ProjectName","MonoScriptBundleNaming":"ProjectName","StripUnityVersionFromBundleBuild":false},"AddressablesRuntimeSettings":{"LogResourceManagerExceptions":true,"CatalogLoadPaths":["{UnityEngine.AddressableAssets.Addressables.RuntimePath}/catalog.bin"],"CatalogHash":"edb7d8981197e6c70970c195c741f94f"},"BuildScript":"Default Build Script","DefaultGroup":{"rid":1000},"Groups":[{"rid":1001},{"rid":1000},{"rid":1002},{"rid":1003}],"BuiltInBundles":[],"DuplicatedAssets":[],"LocalCatalogBuildPath":"Library/com.unity.addressables/aa/Windows/StandaloneWindows64","RemoteCatalogBuildPath":"","references":{"version":2,"RefIds":[{"rid":1000,"type":{"class":"BuildLayout/Group","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"Default Local Group","Guid":"336a756d05aafc24295e5bd4d29d32fd","PackingMode":"PackTogether","Bundles":[],"Schemas":[{"rid":1004},{"rid":1005}]}},{"rid":1001,"type":{"class":"BuildLayout/Group","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"SamplePack1","Guid":"258c7459604d085478c05930706078c2","PackingMode":"PackSeparately","Bundles":[{"rid":1006},{"rid":1007},{"rid":1008},{"rid":1009},{"rid":1010},{"rid":1011},{"rid":1012},{"rid":1013},{"rid":1014},{"rid":1015}],"Schemas":[{"rid":1016},{"rid":1017}]}},{"rid":1002,"type":{"class":"BuildLayout/Group","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"Generated","Guid":"a201e34a5a3fa024080d99bcfceca817","PackingMode":"PackSeparately","Bundles":[{"rid":1018},{"rid":1019},{"rid":1020},{"rid":1021},{"rid":1022},{"rid":1023},{"rid":1024}],"Schemas":[{"rid":1025},{"rid":1026}]}},{"rid":1003,"type":{"class":"BuildLayout/Group","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"SamplePack2","Guid":"a56c5fee201ac7840a927f1c63a68728","PackingMode":"PackSeparately","Bundles":[{"rid":1027},{"rid":1028},{"rid":1029},{"rid":1030},{"rid":1031},{"rid":1032},{"rid":1033},{"rid":1034},{"rid":1035},{"rid":1036}],"Schemas":[{"rid":1037},{"rid":1038}]}},{"rid":1004,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"59cf7bcd70ab1b04c9384d55c7283117","Type":"BundledAssetGroupSchema","SchemaDataPairs":[{"Key":"InternalBundleIdMode","Value":"GroupGuidProjectIdHash"},{"Key":"Compression","Value":"LZ4"},{"Key":"IncludeAddressInCatalog","Value":"True"},{"Key":"IncludeGUIDInCatalog","Value":"True"},{"Key":"IncludeLabelsInCatalog","Value":"True"},{"Key":"InternalIdNamingMode","Value":"FullPath"},{"Key":"AssetBundledCacheClearBehavior","Value":"ClearWhenSpaceIsNeededInCache"},{"Key":"IncludeInBuild","Value":"True"},{"Key":"BundledAssetProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider"},{"Key":"ForceUniqueProvider","Value":"False"},{"Key":"UseAssetBundleCache","Value":"True"},{"Key":"UseAssetBundleCrc","Value":"True"},{"Key":"UseAssetBundleCrcForCachedBundles","Value":"True"},{"Key":"UseUnityWebRequestForLocalBundles","Value":"False"},{"Key":"Timeout","Value":"0"},{"Key":"ChunkedTransfer","Value":"False"},{"Key":"RedirectLimit","Value":"-1"},{"Key":"RetryCount","Value":"0"},{"Key":"BuildPath","Value":"Library/com.unity.addressables/aa/Windows/StandaloneWindows64"},{"Key":"LoadPath","Value":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}/StandaloneWindows64"},{"Key":"PackingMode","Value":"PackTogether"},{"Key":"AssetBundleProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider"},{"Key":"UseDefaultSchemaSettings","Value":"False"},{"Key":"SelectedPathPairIndex","Value":"0"},{"Key":"BundleNaming","Value":"AppendHash"},{"Key":"AssetLoadMode","Value":"RequestedAssetAndDependencies"}]}},{"rid":1005,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"b819cb823fb33024bbd3ac2f201858d8","Type":"ContentUpdateGroupSchema","SchemaDataPairs":[{"Key":"StaticContent","Value":"False"}]}},{"rid":1006,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_4.bundle","InternalName":"1f8d4b3797eb32be56cfe202caec6fd6","FileSize":23040,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":3983860733,"Hash":{"serializedVersion":"2","Hash":"8537ba5e4a59fcb3afad3b35878f92b5"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_4.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1039}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1007,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_6.bundle","InternalName":"3b83c8d34ca68f6e8852ceeb09c1eac4","FileSize":34528,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":4276430644,"Hash":{"serializedVersion":"2","Hash":"ac97b5cd2d8c21ca5ce5b9f37d83bdd8"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_6.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1040}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1008,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_3.bundle","InternalName":"1ff936ac860951602e79522deaa8c9c6","FileSize":25920,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":3072052095,"Hash":{"serializedVersion":"2","Hash":"2f713cc6c5ac93944787e53abc171506"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_3.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1041}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1009,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_5.bundle","InternalName":"69cc943b938e112fdb596763b7e3325c","FileSize":22336,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1442816670,"Hash":{"serializedVersion":"2","Hash":"deaa6a181faf7460597c59a1ccca07ab"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_5.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1042}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1010,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_2.bundle","InternalName":"6b51b282e9b4dd13e69d0739a380a55b","FileSize":22624,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":63243828,"Hash":{"serializedVersion":"2","Hash":"3a6d4700474b3c0f8d50dfe7cff32fef"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_2.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1043}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1011,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_7.bundle","InternalName":"175e752b232a665bd379dadef49c596c","FileSize":18816,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1064022522,"Hash":{"serializedVersion":"2","Hash":"1b40b4f0c23bf37432b5adcefce3bfe6"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_7.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1044}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1012,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_0.bundle","InternalName":"9b397865eb247e7fd24573450180e68a","FileSize":33824,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1395461927,"Hash":{"serializedVersion":"2","Hash":"1643a503052be3f585a8f1813952aa2e"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_0.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1045}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1013,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_8.bundle","InternalName":"81bd30248e70a514207fe576ea8be326","FileSize":15264,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1715313454,"Hash":{"serializedVersion":"2","Hash":"4d35b226b8f9624a4105997b26d8aa7d"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_8.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1046}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1014,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_1.bundle","InternalName":"6842397c643be2ce3b57ace165f4865d","FileSize":21440,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1296609683,"Hash":{"serializedVersion":"2","Hash":"ab22469cbd3dbdfdc5aec3d50fc1ea9a"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_1.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1047}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1015,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack1_assets_9.bundle","InternalName":"bf7bc97bd4ced20925b9bd0e81f2d522","FileSize":19008,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":2442388881,"Hash":{"serializedVersion":"2","Hash":"1b7797b09d636b30e451e3509f17085f"},"Group":{"rid":1001},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack1_assets_9.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1048}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1016,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"c57adc9566661284e96157fafecd9441","Type":"BundledAssetGroupSchema","SchemaDataPairs":[{"Key":"InternalBundleIdMode","Value":"GroupGuidProjectIdHash"},{"Key":"Compression","Value":"Uncompressed"},{"Key":"IncludeAddressInCatalog","Value":"True"},{"Key":"IncludeGUIDInCatalog","Value":"True"},{"Key":"IncludeLabelsInCatalog","Value":"True"},{"Key":"InternalIdNamingMode","Value":"FullPath"},{"Key":"AssetBundledCacheClearBehavior","Value":"ClearWhenSpaceIsNeededInCache"},{"Key":"IncludeInBuild","Value":"True"},{"Key":"BundledAssetProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider"},{"Key":"ForceUniqueProvider","Value":"False"},{"Key":"UseAssetBundleCache","Value":"True"},{"Key":"UseAssetBundleCrc","Value":"True"},{"Key":"UseAssetBundleCrcForCachedBundles","Value":"True"},{"Key":"UseUnityWebRequestForLocalBundles","Value":"False"},{"Key":"Timeout","Value":"0"},{"Key":"ChunkedTransfer","Value":"False"},{"Key":"RedirectLimit","Value":"-1"},{"Key":"RetryCount","Value":"0"},{"Key":"BuildPath","Value":"Library/com.unity.addressables/aa/Windows/StandaloneWindows64"},{"Key":"LoadPath","Value":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}/StandaloneWindows64"},{"Key":"PackingMode","Value":"PackSeparately"},{"Key":"AssetBundleProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider"},{"Key":"UseDefaultSchemaSettings","Value":"False"},{"Key":"SelectedPathPairIndex","Value":"0"},{"Key":"BundleNaming","Value":"NoHash"},{"Key":"AssetLoadMode","Value":"RequestedAssetAndDependencies"}]}},{"rid":1017,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"c50c0af57295b8c42bb5d7d31526d100","Type":"ContentUpdateGroupSchema","SchemaDataPairs":[{"Key":"StaticContent","Value":"False"}]}},{"rid":1018,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"generated_assets_drum1.bundle","InternalName":"eb15f892bfc01dd4aa0ece86f7c590cb","FileSize":13872,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":694414153,"Hash":{"serializedVersion":"2","Hash":"fbfc3eaefa459f1a8dc4c47944041e49"},"Group":{"rid":1002},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\generated_assets_drum1.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1049}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1019,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"generated_assets_brownian.bundle","InternalName":"4f7dd1966bff4c80539f0a11bfb2f604","FileSize":589168,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1844209987,"Hash":{"serializedVersion":"2","Hash":"5fbf9ee0ebb26d30d3cc0d679905be55"},"Group":{"rid":1002},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\generated_assets_brownian.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1050}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1020,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"generated_assets_sine440.bundle","InternalName":"263ef2f877d5a34b7df03dd3b5bbeac4","FileSize":9456,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1802149312,"Hash":{"serializedVersion":"2","Hash":"3f0088ca1daf7287c0a6d442d28ab16c"},"Group":{"rid":1002},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\generated_assets_sine440.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1051}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1021,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"generated_assets_sine.bundle","InternalName":"b27a60ba4c0ec77b926f8c00dda0f250","FileSize":80368,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":632252596,"Hash":{"serializedVersion":"2","Hash":"b12d2962cea07e4ccad683f1cd676b2f"},"Group":{"rid":1002},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\generated_assets_sine.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1052}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1022,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"generated_assets_square.bundle","InternalName":"0458b4a804a69eb9a2a1833017035327","FileSize":415440,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":3072331629,"Hash":{"serializedVersion":"2","Hash":"107dfced85b01503feaa82ace8c8eb6e"},"Group":{"rid":1002},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\generated_assets_square.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1053}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1023,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"generated_assets_square300.bundle","InternalName":"440d49ce6d183b7c229bfa22d06bb0c9","FileSize":54720,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":2355528378,"Hash":{"serializedVersion":"2","Hash":"ca4dba1b947d28a787c26d35eaaaf1cc"},"Group":{"rid":1002},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\generated_assets_square300.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1054}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1024,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"generated_assets_drum2.bundle","InternalName":"1cbb611c300205dd4ff1d1a4062715cd","FileSize":14032,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":4195441782,"Hash":{"serializedVersion":"2","Hash":"389ddf22f270063e7e15b2854e7e645d"},"Group":{"rid":1002},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\generated_assets_drum2.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1055}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1025,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"4078d0d3d05126f4ca5d1809fb9865b0","Type":"BundledAssetGroupSchema","SchemaDataPairs":[{"Key":"InternalBundleIdMode","Value":"GroupGuidProjectIdHash"},{"Key":"Compression","Value":"Uncompressed"},{"Key":"IncludeAddressInCatalog","Value":"True"},{"Key":"IncludeGUIDInCatalog","Value":"True"},{"Key":"IncludeLabelsInCatalog","Value":"True"},{"Key":"InternalIdNamingMode","Value":"FullPath"},{"Key":"AssetBundledCacheClearBehavior","Value":"ClearWhenSpaceIsNeededInCache"},{"Key":"IncludeInBuild","Value":"True"},{"Key":"BundledAssetProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider"},{"Key":"ForceUniqueProvider","Value":"False"},{"Key":"UseAssetBundleCache","Value":"True"},{"Key":"UseAssetBundleCrc","Value":"True"},{"Key":"UseAssetBundleCrcForCachedBundles","Value":"True"},{"Key":"UseUnityWebRequestForLocalBundles","Value":"False"},{"Key":"Timeout","Value":"0"},{"Key":"ChunkedTransfer","Value":"False"},{"Key":"RedirectLimit","Value":"-1"},{"Key":"RetryCount","Value":"0"},{"Key":"BuildPath","Value":"Library/com.unity.addressables/aa/Windows/StandaloneWindows64"},{"Key":"LoadPath","Value":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}/StandaloneWindows64"},{"Key":"PackingMode","Value":"PackSeparately"},{"Key":"AssetBundleProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider"},{"Key":"UseDefaultSchemaSettings","Value":"False"},{"Key":"SelectedPathPairIndex","Value":"0"},{"Key":"BundleNaming","Value":"NoHash"},{"Key":"AssetLoadMode","Value":"RequestedAssetAndDependencies"}]}},{"rid":1026,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"7550134532116b546bbfc73d635d238d","Type":"ContentUpdateGroupSchema","SchemaDataPairs":[{"Key":"StaticContent","Value":"False"}]}},{"rid":1027,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_e.bundle","InternalName":"6474f377f608a8c16ff891aed86ad9c6","FileSize":73376,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":4278687744,"Hash":{"serializedVersion":"2","Hash":"e73641e44d76286924c42a4869ab1dd1"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_e.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1056}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1028,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_c.bundle","InternalName":"3cd71b90318e38bf58581044d4347d69","FileSize":21120,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1624109646,"Hash":{"serializedVersion":"2","Hash":"31d562de9449e50f1bbc6496696f4ea1"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_c.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1057}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1029,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_j.bundle","InternalName":"b64b402edb473d5183e9e428f8a744a2","FileSize":62976,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":3241181028,"Hash":{"serializedVersion":"2","Hash":"93e2176fdb1e52c234611e32440653b6"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_j.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1058}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1030,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_h.bundle","InternalName":"3b16fc37c6221a87f82c9aadd34e7af4","FileSize":70976,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1058037547,"Hash":{"serializedVersion":"2","Hash":"130c21f4f6fab54624f9929178da838d"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_h.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1059}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1031,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_f.bundle","InternalName":"5e3b8d40fbcd8f3c3b4e8eb144de6af4","FileSize":54528,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":1251071412,"Hash":{"serializedVersion":"2","Hash":"e02ddc8784b1ead17d021bc3f7704ed3"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_f.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1060}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1032,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_b.bundle","InternalName":"cc6a2013cf6341e142c7a2937d22b6b8","FileSize":23488,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":3745088177,"Hash":{"serializedVersion":"2","Hash":"72fd915bc88a0e3122bdf8410d84498b"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_b.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1061}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1033,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_d.bundle","InternalName":"b9872cdeb1f364a3531aca1beeae2c77","FileSize":134464,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":650826451,"Hash":{"serializedVersion":"2","Hash":"e2b46d4caabe1bfd5ec92115bff593fa"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_d.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1062}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1034,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_a.bundle","InternalName":"30ae8f6391be92f8f247d3c771fb2c1e","FileSize":51264,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":597684922,"Hash":{"serializedVersion":"2","Hash":"4bdff88ddff01b857c9f2584d4c73fbe"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_a.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1063}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1035,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_i.bundle","InternalName":"c5ea5ba50ff6c704382d42bff195c10e","FileSize":79456,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":857134522,"Hash":{"serializedVersion":"2","Hash":"d1e23b53f215bf4997133b70f80f3634"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_i.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1064}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1036,"type":{"class":"BuildLayout/Bundle","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"samplepack2_assets_g.bundle","InternalName":"bb3e6d6039b26a029b9c7cb8edaa8e2a","FileSize":65088,"BuildStatus":0,"ExpandedDependencyFileSize":0,"DependencyFileSize":0,"AssetCount":1,"BundleDependencies":[],"Compression":"None","CRC":2918875995,"Hash":{"serializedVersion":"2","Hash":"ee3c751b3c0b5649c00d41d0728752b5"},"Group":{"rid":1003},"LoadPath":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}\\StandaloneWindows64\\samplepack2_assets_g.bundle","Provider":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider","ResultType":"IAssetBundleResource","Files":[{"rid":1065}],"DependentBundles":[],"Dependencies":[],"ExpandedDependencies":[]}},{"rid":1037,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"a5af9a2aae0a45347a8a5ef8fafece02","Type":"BundledAssetGroupSchema","SchemaDataPairs":[{"Key":"InternalBundleIdMode","Value":"GroupGuidProjectIdHash"},{"Key":"Compression","Value":"Uncompressed"},{"Key":"IncludeAddressInCatalog","Value":"True"},{"Key":"IncludeGUIDInCatalog","Value":"True"},{"Key":"IncludeLabelsInCatalog","Value":"True"},{"Key":"InternalIdNamingMode","Value":"FullPath"},{"Key":"AssetBundledCacheClearBehavior","Value":"ClearWhenSpaceIsNeededInCache"},{"Key":"IncludeInBuild","Value":"True"},{"Key":"BundledAssetProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider"},{"Key":"ForceUniqueProvider","Value":"False"},{"Key":"UseAssetBundleCache","Value":"True"},{"Key":"UseAssetBundleCrc","Value":"True"},{"Key":"UseAssetBundleCrcForCachedBundles","Value":"True"},{"Key":"UseUnityWebRequestForLocalBundles","Value":"False"},{"Key":"Timeout","Value":"0"},{"Key":"ChunkedTransfer","Value":"False"},{"Key":"RedirectLimit","Value":"-1"},{"Key":"RetryCount","Value":"0"},{"Key":"BuildPath","Value":"Library/com.unity.addressables/aa/Windows/StandaloneWindows64"},{"Key":"LoadPath","Value":"{UnityEngine.AddressableAssets.Addressables.RuntimePath}/StandaloneWindows64"},{"Key":"PackingMode","Value":"PackSeparately"},{"Key":"AssetBundleProviderType","Value":"UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider"},{"Key":"UseDefaultSchemaSettings","Value":"False"},{"Key":"SelectedPathPairIndex","Value":"0"},{"Key":"BundleNaming","Value":"NoHash"},{"Key":"AssetLoadMode","Value":"RequestedAssetAndDependencies"}]}},{"rid":1038,"type":{"class":"BuildLayout/SchemaData","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"c0dbabc9705c9644d9a44d00bd653470","Type":"ContentUpdateGroupSchema","SchemaDataPairs":[{"Key":"StaticContent","Value":"False"}]}},{"rid":1039,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-73b98a43ee020a5e591db9518c2cb296/CAB-73b98a43ee020a5e591db9518c2cb296","Bundle":{"rid":1006},"SubFiles":[{"rid":1066},{"rid":1067}],"Assets":[{"rid":1068}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1040,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-27752acd531d26b983a15c00264c45fb/CAB-27752acd531d26b983a15c00264c45fb","Bundle":{"rid":1007},"SubFiles":[{"rid":1069},{"rid":1070}],"Assets":[{"rid":1071}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1041,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-1f5bcdc7a5409950f693976900dd4aa2/CAB-1f5bcdc7a5409950f693976900dd4aa2","Bundle":{"rid":1008},"SubFiles":[{"rid":1072},{"rid":1073}],"Assets":[{"rid":1074}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1042,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-0fa1a01f0e1b970a85c89e575595f749/CAB-0fa1a01f0e1b970a85c89e575595f749","Bundle":{"rid":1009},"SubFiles":[{"rid":1075},{"rid":1076}],"Assets":[{"rid":1077}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1043,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-01315ab73001d0050a9e9a4454dc947f/CAB-01315ab73001d0050a9e9a4454dc947f","Bundle":{"rid":1010},"SubFiles":[{"rid":1078},{"rid":1079}],"Assets":[{"rid":1080}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1044,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-33b13439bdd10f67ea9ad546608069c7/CAB-33b13439bdd10f67ea9ad546608069c7","Bundle":{"rid":1011},"SubFiles":[{"rid":1081},{"rid":1082}],"Assets":[{"rid":1083}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1045,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-70392fbb89818a9b1dc85933205fc393/CAB-70392fbb89818a9b1dc85933205fc393","Bundle":{"rid":1012},"SubFiles":[{"rid":1084},{"rid":1085}],"Assets":[{"rid":1086}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1046,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-0779c46a926a678e417643586b001645/CAB-0779c46a926a678e417643586b001645","Bundle":{"rid":1013},"SubFiles":[{"rid":1087},{"rid":1088}],"Assets":[{"rid":1089}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1047,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-0a2912740c976ca7a7b1ccc28e6e7a7a/CAB-0a2912740c976ca7a7b1ccc28e6e7a7a","Bundle":{"rid":1014},"SubFiles":[{"rid":1090},{"rid":1091}],"Assets":[{"rid":1092}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1048,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-05d1c88fa8f8866205a8423046199e1e/CAB-05d1c88fa8f8866205a8423046199e1e","Bundle":{"rid":1015},"SubFiles":[{"rid":1093},{"rid":1094}],"Assets":[{"rid":1095}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1049,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-d021e216fd6d23c0d84b2c10d7d2fe9b/CAB-d021e216fd6d23c0d84b2c10d7d2fe9b","Bundle":{"rid":1018},"SubFiles":[{"rid":1096},{"rid":1097}],"Assets":[{"rid":1098}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":212},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1050,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-e02a12723316bd57c4529362df4c1c7b/CAB-e02a12723316bd57c4529362df4c1c7b","Bundle":{"rid":1019},"SubFiles":[{"rid":1099},{"rid":1100}],"Assets":[{"rid":1101}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":216},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1051,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-dfc27c99e8d3e8200d1e73d09ba342fc/CAB-dfc27c99e8d3e8200d1e73d09ba342fc","Bundle":{"rid":1020},"SubFiles":[{"rid":1102},{"rid":1103}],"Assets":[{"rid":1104}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":212},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1052,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-d8c2508dc18ced397b0b7ea3e293046b/CAB-d8c2508dc18ced397b0b7ea3e293046b","Bundle":{"rid":1021},"SubFiles":[{"rid":1105},{"rid":1106}],"Assets":[{"rid":1107}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":212},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1053,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-ab13095ed3bae6812ebbdefdf8c8fb30/CAB-ab13095ed3bae6812ebbdefdf8c8fb30","Bundle":{"rid":1022},"SubFiles":[{"rid":1108},{"rid":1109}],"Assets":[{"rid":1110}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":212},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1054,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-6d55f28146ef170678a8f3a3057434a1/CAB-6d55f28146ef170678a8f3a3057434a1","Bundle":{"rid":1023},"SubFiles":[{"rid":1111},{"rid":1112}],"Assets":[{"rid":1113}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":216},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1055,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-2d0e0b283a1fb1a45b272552509552ea/CAB-2d0e0b283a1fb1a45b272552509552ea","Bundle":{"rid":1024},"SubFiles":[{"rid":1114},{"rid":1115}],"Assets":[{"rid":1116}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":212},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1056,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-2a6b5cdb2a206a3d4aa0eab375f1e5d6/CAB-2a6b5cdb2a206a3d4aa0eab375f1e5d6","Bundle":{"rid":1027},"SubFiles":[{"rid":1117},{"rid":1118}],"Assets":[{"rid":1119}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1057,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-a209ca6fc6e41ac9f6d6fc1d57dc96e3/CAB-a209ca6fc6e41ac9f6d6fc1d57dc96e3","Bundle":{"rid":1028},"SubFiles":[{"rid":1120},{"rid":1121}],"Assets":[{"rid":1122}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1058,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-5319be78ac1d58d02d94d24bec324ca6/CAB-5319be78ac1d58d02d94d24bec324ca6","Bundle":{"rid":1029},"SubFiles":[{"rid":1123},{"rid":1124}],"Assets":[{"rid":1125}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1059,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-8cc6bc79beeec25a3b2e09484debb7bf/CAB-8cc6bc79beeec25a3b2e09484debb7bf","Bundle":{"rid":1030},"SubFiles":[{"rid":1126},{"rid":1127}],"Assets":[{"rid":1128}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1060,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-e74367794c024c21ece7e1aa44e43744/CAB-e74367794c024c21ece7e1aa44e43744","Bundle":{"rid":1031},"SubFiles":[{"rid":1129},{"rid":1130}],"Assets":[{"rid":1131}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1061,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-84aa7474c89cce2aa8ded8d7683cb357/CAB-84aa7474c89cce2aa8ded8d7683cb357","Bundle":{"rid":1032},"SubFiles":[{"rid":1132},{"rid":1133}],"Assets":[{"rid":1134}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1062,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-a2439cd83acd1c60c58561542cf99432/CAB-a2439cd83acd1c60c58561542cf99432","Bundle":{"rid":1033},"SubFiles":[{"rid":1135},{"rid":1136}],"Assets":[{"rid":1137}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1063,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-fbb9c1b8073b821e042a5bc47ba09cf7/CAB-fbb9c1b8073b821e042a5bc47ba09cf7","Bundle":{"rid":1034},"SubFiles":[{"rid":1138},{"rid":1139}],"Assets":[{"rid":1140}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1064,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-f6c891248d11a37872b027b369b820af/CAB-f6c891248d11a37872b027b369b820af","Bundle":{"rid":1035},"SubFiles":[{"rid":1141},{"rid":1142}],"Assets":[{"rid":1143}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1065,"type":{"class":"BuildLayout/File","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"archive:/CAB-2c2d6e9b78804ee1e800e2b1c620f98a/CAB-2c2d6e9b78804ee1e800e2b1c620f98a","Bundle":{"rid":1036},"SubFiles":[{"rid":1144},{"rid":1145}],"Assets":[{"rid":1146}],"OtherAssets":[],"ExternalReferences":[],"WriteResultFilename":"","BundleObjectInfo":{"Size":208},"PreloadInfoSize":0,"MonoScriptCount":0,"MonoScriptSize":0}},{"rid":1066,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-73b98a43ee020a5e591db9518c2cb296","IsSerializedFile":true,"Size":3680}},{"rid":1067,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-73b98a43ee020a5e591db9518c2cb296.resource","IsSerializedFile":false,"Size":19200}},{"rid":1068,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"054a1ca02d98d394b85418dd05dad9ff","AssetPath":"Assets/Samples/Saxophone1/4.mp3","InternalId":"Assets/Samples/Saxophone1/4.mp3","AssetHash":{"serializedVersion":"2","Hash":"5583cbfc81d477a4697fafa00f34c984"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"4","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":19200,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"4","Labels":["AudioClip"],"SerializedSize":156,"StreamedSize":19200,"File":{"rid":1039},"Bundle":{"rid":1006},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1069,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-27752acd531d26b983a15c00264c45fb","IsSerializedFile":true,"Size":3680}},{"rid":1070,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-27752acd531d26b983a15c00264c45fb.resource","IsSerializedFile":false,"Size":30688}},{"rid":1071,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"278c261333bf8604eb5c83790d02004d","AssetPath":"Assets/Samples/Saxophone1/6.mp3","InternalId":"Assets/Samples/Saxophone1/6.mp3","AssetHash":{"serializedVersion":"2","Hash":"4b21a94723f1b72670836b8034ae42a0"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"6","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":30688,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"6","Labels":["AudioClip"],"SerializedSize":156,"StreamedSize":30688,"File":{"rid":1040},"Bundle":{"rid":1007},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1072,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-1f5bcdc7a5409950f693976900dd4aa2","IsSerializedFile":true,"Size":3676}},{"rid":1073,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-1f5bcdc7a5409950f693976900dd4aa2.resource","IsSerializedFile":false,"Size":22080}},{"rid":1074,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"43b17a5450ece6b43a6b459b5eeaf648","AssetPath":"Assets/Samples/Saxophone1/3.mp3","InternalId":"Assets/Samples/Saxophone1/3.mp3","AssetHash":{"serializedVersion":"2","Hash":"fd3c09c06b08e3de6829d657a581f45c"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"3","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":22080,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"3","Labels":[],"SerializedSize":156,"StreamedSize":22080,"File":{"rid":1041},"Bundle":{"rid":1008},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1075,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-0fa1a01f0e1b970a85c89e575595f749","IsSerializedFile":true,"Size":3676}},{"rid":1076,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-0fa1a01f0e1b970a85c89e575595f749.resource","IsSerializedFile":false,"Size":18496}},{"rid":1077,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"870edf9b56842b44f8f5e92f0ea5a76e","AssetPath":"Assets/Samples/Saxophone1/5.mp3","InternalId":"Assets/Samples/Saxophone1/5.mp3","AssetHash":{"serializedVersion":"2","Hash":"cf947973463a1e4e2df69fc10197fb4d"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"5","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":18496,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"5","Labels":[],"SerializedSize":156,"StreamedSize":18496,"File":{"rid":1042},"Bundle":{"rid":1009},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1078,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-01315ab73001d0050a9e9a4454dc947f","IsSerializedFile":true,"Size":3680}},{"rid":1079,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-01315ab73001d0050a9e9a4454dc947f.resource","IsSerializedFile":false,"Size":18784}},{"rid":1080,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"9607360293b294646ac2684e8de61c4e","AssetPath":"Assets/Samples/Saxophone1/2.mp3","InternalId":"Assets/Samples/Saxophone1/2.mp3","AssetHash":{"serializedVersion":"2","Hash":"0b88ccd96e292fdb6f5b286deb1a29e9"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"2","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":18784,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"2","Labels":[],"SerializedSize":156,"StreamedSize":18784,"File":{"rid":1043},"Bundle":{"rid":1010},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1081,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-33b13439bdd10f67ea9ad546608069c7","IsSerializedFile":true,"Size":3676}},{"rid":1082,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-33b13439bdd10f67ea9ad546608069c7.resource","IsSerializedFile":false,"Size":14976}},{"rid":1083,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"aedaaf69c851e3d47bff4d6408971c31","AssetPath":"Assets/Samples/Saxophone1/7.mp3","InternalId":"Assets/Samples/Saxophone1/7.mp3","AssetHash":{"serializedVersion":"2","Hash":"308e89a7fc814e86b6a4ddeffb537aea"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"7","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":14976,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"7","Labels":[],"SerializedSize":156,"StreamedSize":14976,"File":{"rid":1044},"Bundle":{"rid":1011},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1084,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-70392fbb89818a9b1dc85933205fc393","IsSerializedFile":true,"Size":3676}},{"rid":1085,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-70392fbb89818a9b1dc85933205fc393.resource","IsSerializedFile":false,"Size":29984}},{"rid":1086,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"bb0e3bc1035198b4ba3589f09da21214","AssetPath":"Assets/Samples/Saxophone1/0.mp3","InternalId":"Assets/Samples/Saxophone1/0.mp3","AssetHash":{"serializedVersion":"2","Hash":"4005ae0b3feb4602beb3076b410a4f0d"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"0","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":29984,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"0","Labels":[],"SerializedSize":156,"StreamedSize":29984,"File":{"rid":1045},"Bundle":{"rid":1012},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1087,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-0779c46a926a678e417643586b001645","IsSerializedFile":true,"Size":3680}},{"rid":1088,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-0779c46a926a678e417643586b001645.resource","IsSerializedFile":false,"Size":11424}},{"rid":1089,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"c09ca9d2c17ea134eac56c494c04a1b8","AssetPath":"Assets/Samples/Saxophone1/8.mp3","InternalId":"Assets/Samples/Saxophone1/8.mp3","AssetHash":{"serializedVersion":"2","Hash":"6c77f2c27e4bee363ba77476f17f5f14"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"8","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":11424,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"8","Labels":[],"SerializedSize":156,"StreamedSize":11424,"File":{"rid":1046},"Bundle":{"rid":1013},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1090,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-0a2912740c976ca7a7b1ccc28e6e7a7a","IsSerializedFile":true,"Size":3680}},{"rid":1091,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-0a2912740c976ca7a7b1ccc28e6e7a7a.resource","IsSerializedFile":false,"Size":17600}},{"rid":1092,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"d0c2f86c1157074499c565080193d5a5","AssetPath":"Assets/Samples/Saxophone1/1.mp3","InternalId":"Assets/Samples/Saxophone1/1.mp3","AssetHash":{"serializedVersion":"2","Hash":"fa8a03b7ce0e720d3fafdae3bdc01b7d"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"1","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":17600,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"1","Labels":[],"SerializedSize":156,"StreamedSize":17600,"File":{"rid":1047},"Bundle":{"rid":1014},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1093,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-05d1c88fa8f8866205a8423046199e1e","IsSerializedFile":true,"Size":3676}},{"rid":1094,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-05d1c88fa8f8866205a8423046199e1e.resource","IsSerializedFile":false,"Size":15168}},{"rid":1095,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"f778ae0076321f44ab2c21fcaac7036e","AssetPath":"Assets/Samples/Saxophone1/9.mp3","InternalId":"Assets/Samples/Saxophone1/9.mp3","AssetHash":{"serializedVersion":"2","Hash":"044e3a1ad7bb939b1477a6fb6cf454ea"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"9","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":15168,"References":[]}],"MainAssetType":6,"GroupGuid":"258c7459604d085478c05930706078c2","AddressableName":"9","Labels":[],"SerializedSize":156,"StreamedSize":15168,"File":{"rid":1048},"Bundle":{"rid":1015},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1096,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-d021e216fd6d23c0d84b2c10d7d2fe9b","IsSerializedFile":true,"Size":3684}},{"rid":1097,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-d021e216fd6d23c0d84b2c10d7d2fe9b.resource","IsSerializedFile":false,"Size":10016}},{"rid":1098,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"05a9426e7d9e40c4987c3626716fca50","AssetPath":"Assets/Samples/Generated/drum1.mp3","InternalId":"Assets/Samples/Generated/drum1.mp3","AssetHash":{"serializedVersion":"2","Hash":"d0da3f43e8ea8ffdb231525891abd7ef"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"drum1","ComponentName":"","AssetType":6,"SerializedSize":160,"StreamedSize":10016,"References":[]}],"MainAssetType":6,"GroupGuid":"a201e34a5a3fa024080d99bcfceca817","AddressableName":"drum1","Labels":[],"SerializedSize":160,"StreamedSize":10016,"File":{"rid":1049},"Bundle":{"rid":1018},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1099,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-e02a12723316bd57c4529362df4c1c7b","IsSerializedFile":true,"Size":3688}},{"rid":1100,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-e02a12723316bd57c4529362df4c1c7b.resource","IsSerializedFile":false,"Size":585312}},{"rid":1101,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"3cda7623f7b5b9246a6061ca8229b092","AssetPath":"Assets/Samples/Generated/brownian.mp3","InternalId":"Assets/Samples/Generated/brownian.mp3","AssetHash":{"serializedVersion":"2","Hash":"8fe0a5dc26e0964f26fddc597b7d7c33"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"brownian","ComponentName":"","AssetType":6,"SerializedSize":160,"StreamedSize":585312,"References":[]}],"MainAssetType":6,"GroupGuid":"a201e34a5a3fa024080d99bcfceca817","AddressableName":"brownian","Labels":[],"SerializedSize":160,"StreamedSize":585312,"File":{"rid":1050},"Bundle":{"rid":1019},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1102,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-dfc27c99e8d3e8200d1e73d09ba342fc","IsSerializedFile":true,"Size":3696}},{"rid":1103,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-dfc27c99e8d3e8200d1e73d09ba342fc.resource","IsSerializedFile":false,"Size":5600}},{"rid":1104,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"53b75bd55183b2a45a1df4c8b8165a45","AssetPath":"Assets/Samples/Generated/sine440.mp3","InternalId":"Assets/Samples/Generated/sine440.mp3","AssetHash":{"serializedVersion":"2","Hash":"c1c1e2e7e5daff3912b3a63d6c9ea6d3"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"sine440","ComponentName":"","AssetType":6,"SerializedSize":160,"StreamedSize":5600,"References":[]}],"MainAssetType":6,"GroupGuid":"a201e34a5a3fa024080d99bcfceca817","AddressableName":"sine440","Labels":[],"SerializedSize":160,"StreamedSize":5600,"File":{"rid":1051},"Bundle":{"rid":1020},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1105,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-d8c2508dc18ced397b0b7ea3e293046b","IsSerializedFile":true,"Size":3692}},{"rid":1106,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-d8c2508dc18ced397b0b7ea3e293046b.resource","IsSerializedFile":false,"Size":76512}},{"rid":1107,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"7b71f8948f4fd38428df1a68d3f125d3","AssetPath":"Assets/Samples/Generated/sine.mp3","InternalId":"Assets/Samples/Generated/sine.mp3","AssetHash":{"serializedVersion":"2","Hash":"4be37db5520820e1da7608952615032a"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"sine","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":76512,"References":[]}],"MainAssetType":6,"GroupGuid":"a201e34a5a3fa024080d99bcfceca817","AddressableName":"sine","Labels":[],"SerializedSize":156,"StreamedSize":76512,"File":{"rid":1052},"Bundle":{"rid":1021},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1108,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-ab13095ed3bae6812ebbdefdf8c8fb30","IsSerializedFile":true,"Size":3684}},{"rid":1109,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-ab13095ed3bae6812ebbdefdf8c8fb30.resource","IsSerializedFile":false,"Size":411584}},{"rid":1110,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"b5ac7dcf38759374487178c81bfb5e08","AssetPath":"Assets/Samples/Generated/square.mp3","InternalId":"Assets/Samples/Generated/square.mp3","AssetHash":{"serializedVersion":"2","Hash":"f0b63a4867fee36ca0c25fffa6e73f91"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"square","ComponentName":"","AssetType":6,"SerializedSize":160,"StreamedSize":411584,"References":[]}],"MainAssetType":6,"GroupGuid":"a201e34a5a3fa024080d99bcfceca817","AddressableName":"square","Labels":[],"SerializedSize":160,"StreamedSize":411584,"File":{"rid":1053},"Bundle":{"rid":1022},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1111,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-6d55f28146ef170678a8f3a3057434a1","IsSerializedFile":true,"Size":3704}},{"rid":1112,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-6d55f28146ef170678a8f3a3057434a1.resource","IsSerializedFile":false,"Size":50848}},{"rid":1113,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"c2dc13a18b5d4aa45a78f010cf27e471","AssetPath":"Assets/Samples/Generated/square300.mp3","InternalId":"Assets/Samples/Generated/square300.mp3","AssetHash":{"serializedVersion":"2","Hash":"20e643e7899e9d8dc0a995d60373d1d1"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"square300","ComponentName":"","AssetType":6,"SerializedSize":164,"StreamedSize":50848,"References":[]}],"MainAssetType":6,"GroupGuid":"a201e34a5a3fa024080d99bcfceca817","AddressableName":"square300","Labels":[],"SerializedSize":164,"StreamedSize":50848,"File":{"rid":1054},"Bundle":{"rid":1023},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1114,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-2d0e0b283a1fb1a45b272552509552ea","IsSerializedFile":true,"Size":3684}},{"rid":1115,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-2d0e0b283a1fb1a45b272552509552ea.resource","IsSerializedFile":false,"Size":10176}},{"rid":1116,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"d9cbbbe6d1a30f248a799b211d6fbddc","AssetPath":"Assets/Samples/Generated/drum2.mp3","InternalId":"Assets/Samples/Generated/drum2.mp3","AssetHash":{"serializedVersion":"2","Hash":"aa796e94d85494f1022d199420eb00e9"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"drum2","ComponentName":"","AssetType":6,"SerializedSize":160,"StreamedSize":10176,"References":[]}],"MainAssetType":6,"GroupGuid":"a201e34a5a3fa024080d99bcfceca817","AddressableName":"drum2","Labels":[],"SerializedSize":160,"StreamedSize":10176,"File":{"rid":1055},"Bundle":{"rid":1024},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1117,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-2a6b5cdb2a206a3d4aa0eab375f1e5d6","IsSerializedFile":true,"Size":3676}},{"rid":1118,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-2a6b5cdb2a206a3d4aa0eab375f1e5d6.resource","IsSerializedFile":false,"Size":69536}},{"rid":1119,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"196f8c9e3e9cc764db55da751c1b5d9d","AssetPath":"Assets/Samples/Saxophone2/e.mp3","InternalId":"Assets/Samples/Saxophone2/e.mp3","AssetHash":{"serializedVersion":"2","Hash":"595975d07d7c55461eaefd0cb68f39ab"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"e","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":69536,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"e","Labels":[],"SerializedSize":156,"StreamedSize":69536,"File":{"rid":1056},"Bundle":{"rid":1027},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1120,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-a209ca6fc6e41ac9f6d6fc1d57dc96e3","IsSerializedFile":true,"Size":3676}},{"rid":1121,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-a209ca6fc6e41ac9f6d6fc1d57dc96e3.resource","IsSerializedFile":false,"Size":17280}},{"rid":1122,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"3d88ab3314ac1c9438e0f35a59507386","AssetPath":"Assets/Samples/Saxophone2/c.mp3","InternalId":"Assets/Samples/Saxophone2/c.mp3","AssetHash":{"serializedVersion":"2","Hash":"186d0444728feeea6897392ad1b23646"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"c","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":17280,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"c","Labels":[],"SerializedSize":156,"StreamedSize":17280,"File":{"rid":1057},"Bundle":{"rid":1028},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1123,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-5319be78ac1d58d02d94d24bec324ca6","IsSerializedFile":true,"Size":3676}},{"rid":1124,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-5319be78ac1d58d02d94d24bec324ca6.resource","IsSerializedFile":false,"Size":59136}},{"rid":1125,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"4016dace81140b54ea0671c1720a43e3","AssetPath":"Assets/Samples/Saxophone2/j.mp3","InternalId":"Assets/Samples/Saxophone2/j.mp3","AssetHash":{"serializedVersion":"2","Hash":"d560bc884e64301ded4ab20f0c6eacb0"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"j","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":59136,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"j","Labels":[],"SerializedSize":156,"StreamedSize":59136,"File":{"rid":1058},"Bundle":{"rid":1029},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1126,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-8cc6bc79beeec25a3b2e09484debb7bf","IsSerializedFile":true,"Size":3680}},{"rid":1127,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-8cc6bc79beeec25a3b2e09484debb7bf.resource","IsSerializedFile":false,"Size":67136}},{"rid":1128,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"7939bd4f5f2fbdf49bafc5670ab6effa","AssetPath":"Assets/Samples/Saxophone2/h.mp3","InternalId":"Assets/Samples/Saxophone2/h.mp3","AssetHash":{"serializedVersion":"2","Hash":"1819624ce488110ca05f21f6f0d20afd"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"h","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":67136,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"h","Labels":[],"SerializedSize":156,"StreamedSize":67136,"File":{"rid":1059},"Bundle":{"rid":1030},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1129,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-e74367794c024c21ece7e1aa44e43744","IsSerializedFile":true,"Size":3676}},{"rid":1130,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-e74367794c024c21ece7e1aa44e43744.resource","IsSerializedFile":false,"Size":50688}},{"rid":1131,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"88339cf287767ec418310d09f36890d7","AssetPath":"Assets/Samples/Saxophone2/f.mp3","InternalId":"Assets/Samples/Saxophone2/f.mp3","AssetHash":{"serializedVersion":"2","Hash":"021fef13a6a5c26bb478c97d61593d50"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"f","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":50688,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"f","Labels":[],"SerializedSize":156,"StreamedSize":50688,"File":{"rid":1060},"Bundle":{"rid":1031},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1132,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-84aa7474c89cce2aa8ded8d7683cb357","IsSerializedFile":true,"Size":3680}},{"rid":1133,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-84aa7474c89cce2aa8ded8d7683cb357.resource","IsSerializedFile":false,"Size":19648}},{"rid":1134,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"8fb0886c8a099dd41b90c45f7661a985","AssetPath":"Assets/Samples/Saxophone2/b.mp3","InternalId":"Assets/Samples/Saxophone2/b.mp3","AssetHash":{"serializedVersion":"2","Hash":"8cf6772ae65b8cdd0f61b49192040aab"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"b","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":19648,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"b","Labels":[],"SerializedSize":156,"StreamedSize":19648,"File":{"rid":1061},"Bundle":{"rid":1032},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1135,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-a2439cd83acd1c60c58561542cf99432","IsSerializedFile":true,"Size":3676}},{"rid":1136,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-a2439cd83acd1c60c58561542cf99432.resource","IsSerializedFile":false,"Size":130624}},{"rid":1137,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"a07c3f4745fae9045a615773fd208e27","AssetPath":"Assets/Samples/Saxophone2/d.mp3","InternalId":"Assets/Samples/Saxophone2/d.mp3","AssetHash":{"serializedVersion":"2","Hash":"2fbfe1f4d362be7e6f7c1ba931ec44e6"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"d","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":130624,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"d","Labels":[],"SerializedSize":156,"StreamedSize":130624,"File":{"rid":1062},"Bundle":{"rid":1033},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1138,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-fbb9c1b8073b821e042a5bc47ba09cf7","IsSerializedFile":true,"Size":3680}},{"rid":1139,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-fbb9c1b8073b821e042a5bc47ba09cf7.resource","IsSerializedFile":false,"Size":47424}},{"rid":1140,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"b65a7916245593b4e89f4bd0aa920533","AssetPath":"Assets/Samples/Saxophone2/a.mp3","InternalId":"Assets/Samples/Saxophone2/a.mp3","AssetHash":{"serializedVersion":"2","Hash":"ef69479f5ac11a5908709f854667429a"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"a","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":47424,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"a","Labels":[],"SerializedSize":156,"StreamedSize":47424,"File":{"rid":1063},"Bundle":{"rid":1034},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1141,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-f6c891248d11a37872b027b369b820af","IsSerializedFile":true,"Size":3680}},{"rid":1142,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-f6c891248d11a37872b027b369b820af.resource","IsSerializedFile":false,"Size":75616}},{"rid":1143,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"bc3e0ce7464020d4f8a320e0b4f1fb2a","AssetPath":"Assets/Samples/Saxophone2/i.mp3","InternalId":"Assets/Samples/Saxophone2/i.mp3","AssetHash":{"serializedVersion":"2","Hash":"39e237b4cf5a5dcabf21590d8f8c31ce"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"i","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":75616,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"i","Labels":[],"SerializedSize":156,"StreamedSize":75616,"File":{"rid":1064},"Bundle":{"rid":1035},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}},{"rid":1144,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-2c2d6e9b78804ee1e800e2b1c620f98a","IsSerializedFile":true,"Size":3680}},{"rid":1145,"type":{"class":"BuildLayout/SubFile","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Name":"CAB-2c2d6e9b78804ee1e800e2b1c620f98a.resource","IsSerializedFile":false,"Size":61248}},{"rid":1146,"type":{"class":"BuildLayout/ExplicitAsset","ns":"UnityEditor.AddressableAssets.Build.Layout","asm":"Unity.Addressables.Editor"},"data":{"Guid":"dd6d9bdc76d97ad45ab51e7706ca1fe6","AssetPath":"Assets/Samples/Saxophone2/g.mp3","InternalId":"Assets/Samples/Saxophone2/g.mp3","AssetHash":{"serializedVersion":"2","Hash":"bc56a2fe480c324ea70660c567d7efd2"},"Objects":[{"LocalIdentifierInFile":8300000,"ObjectName":"g","ComponentName":"","AssetType":6,"SerializedSize":156,"StreamedSize":61248,"References":[]}],"MainAssetType":6,"GroupGuid":"a56c5fee201ac7840a927f1c63a68728","AddressableName":"g","Labels":[],"SerializedSize":156,"StreamedSize":61248,"File":{"rid":1065},"Bundle":{"rid":1036},"InternalReferencedOtherAssets":[],"InternalReferencedExplicitAssets":[],"ExternallyReferencedAssets":[],"ReferencingAssets":[]}}]}} \ No newline at end of file diff --git a/UnityDataTool.Tests/AddressablesBuildLayoutTests.cs b/UnityDataTool.Tests/AddressablesBuildLayoutTests.cs new file mode 100644 index 0000000..5a8f605 --- /dev/null +++ b/UnityDataTool.Tests/AddressablesBuildLayoutTests.cs @@ -0,0 +1,84 @@ +using System; +using Microsoft.Data.Sqlite; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using NUnit.Framework; + +namespace UnityDataTools.UnityDataTool.Tests; + +#pragma warning disable NUnit2005, NUnit2006 + +public class AddressablesBuildLayoutTests +{ + private string m_TestOutputFolder; + private string m_TestDataFolder; + + [OneTimeSetUp] + public void OneTimeSetup() + { + m_TestOutputFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, "test_folder"); + m_TestDataFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, "Data"); + Directory.CreateDirectory(m_TestOutputFolder); + Directory.SetCurrentDirectory(m_TestOutputFolder); + } + + [TearDown] + public void Teardown() + { + SqliteConnection.ClearAllPools(); + + var testDir = new DirectoryInfo(m_TestOutputFolder); + testDir.EnumerateFiles() + .ToList().ForEach(f => f.Delete()); + testDir.EnumerateDirectories() + .ToList().ForEach(d => d.Delete(true)); + } + + [Test] + public async Task Analyze_BuildLayout_ContainsExpectedSQLContent() + { + // This folder contains reference files from two builds of the "AudioExample" + // Addressables test project. + // The test confirms some expected content in the database + var path = Path.Combine(m_TestDataFolder, "AddressableBuildLayouts"); + + var databasePath = Path.Combine(m_TestOutputFolder, "database.db"); + + Assert.AreEqual(0, await Program.Main(new string[] { "analyze", path, "-p", "*.json" })); + using var db = new SqliteConnection(new SqliteConnectionStringBuilder + { + DataSource = databasePath, + Mode = SqliteOpenMode.ReadWriteCreate, + Pooling = false, + ForeignKeys = false, + }.ConnectionString); + db.Open(); + + using var cmd = db.CreateCommand(); + + // Sanity check some expected content in the output SQLite database + cmd.CommandText = + @"SELECT + (SELECT COUNT(*) FROM addressables_builds), + (SELECT COUNT(*) FROM addressables_builds WHERE name = ""buildlayout_2025.01.28.16.35.01.json""), + (SELECT unity_version FROM addressables_builds WHERE id = 1), + (SELECT package_version FROM addressables_builds WHERE id = 1), + (SELECT COUNT(*) FROM addressables_build_bundles WHERE build_id = 1 and name = ""samplepack1_assets_0.bundle""), + (SELECT file_size FROM addressables_build_bundles WHERE build_id = 2 and name = ""samplepack1_assets_0.bundle""), + (SELECT packing_mode FROM addressables_build_groups WHERE build_id = 1 and name = ""SamplePack1""), + (SELECT COUNT(*) FROM asset_bundles)"; + + using var reader = cmd.ExecuteReader(); + reader.Read(); + + Assert.AreEqual(2, reader.GetInt32(0), "Unexpected number of builds"); + Assert.AreEqual(1, reader.GetInt32(1), "Failed to find build matching reference filename"); + Assert.AreEqual("6000.1.0b2", reader.GetString(2), "Unexpected Unity Version"); + Assert.AreEqual("com.unity.addressables: 2.2.2", reader.GetString(3), "Unexpected Addressables version"); + Assert.AreEqual(1, reader.GetInt32(4), "Expected to find specific AssetBundle by name"); + Assert.AreEqual(33824, reader.GetInt32(5), "Unexpected size for specific AssetBundle in build 2"); + Assert.AreEqual("PackSeparately", reader.GetString(6), "Unexpected packing_mode for group"); + Assert.AreEqual(0, reader.GetInt32(7), "Expected no AssetBundles found in reference folder"); + } +} From 6b5f8f742311a868bb29b18689ded5feae00171c Mon Sep 17 00:00:00 2001 From: Andrew Skowronski <86242170+SkowronskiAndrew@users.noreply.github.com> Date: Fri, 19 Dec 2025 08:23:44 -0500 Subject: [PATCH 5/5] Test work and initial BuildReport test (#42) -Refactoring to improve syntax for running many checks against the database. -Establish a BuildReport test which show the default analyze behavior (before we add any special handling) -Add a small BuildReport file (in its binary format) as reference data for the tests. This was created using the TestProject from BuildReportInspector --- .../Data/BuildReport1/LastBuild.buildreport | Bin 0 -> 12280 bytes .../AddressablesBuildLayoutTests.cs | 52 ++--- UnityDataTool.Tests/BuildReportTests.cs | 215 ++++++++++++++++++ UnityDataTool.Tests/SQLTestHelper.cs | 109 +++++++++ .../UnityDataToolAssetBundleTests.cs | 27 +-- .../UnityDataToolPlayerDataTests.cs | 11 +- 6 files changed, 350 insertions(+), 64 deletions(-) create mode 100644 TestCommon/Data/BuildReport1/LastBuild.buildreport create mode 100644 UnityDataTool.Tests/BuildReportTests.cs create mode 100644 UnityDataTool.Tests/SQLTestHelper.cs diff --git a/TestCommon/Data/BuildReport1/LastBuild.buildreport b/TestCommon/Data/BuildReport1/LastBuild.buildreport new file mode 100644 index 0000000000000000000000000000000000000000..ab29721112f8ae1bd8ba1aa22534ca57200281cf GIT binary patch literal 12280 zcmcIq4{%(?dEc{z!IZkjkk|=F2~nr_*K=a&<0{{JT)mgoq0Y9pw$$oWo7XM= zZ)$2Pu>eS+15#!M6? zAaM%)Z^9?ro~g^ti}-mhBE}ez6XN#_px?wfzCXq{+n;p;Jg;%CgH3EdDMY**g^Tel zvO(k%n6bYC|J#sf|9@}-{8Jhy51UN;KSd$ipKXK48~h6zUos7Ek^1xJDChj0Lp)}p z2<;vHITyvQ{w#3x=Y7O=TfP!vfuld%CpMn(a=ZO}Zy5SfD8{yrj8=ju<3*#$Z`tDq zqrR6%wy#o-{4#2+uN6!AVZSPC)msjf3l&i)mi&PYB3JUl5bvsFJW|~6i%OvY_9Cp* zf}AhA+ISsmtlbDUjD>C z|H;G8jorWTdoOX}u*vF!n{C5#LvSHE;c_x!d}wOk5Zth{Z3u2yo46rp5X^?4Qn(A+ z;w&gPth=D6ISa}SYcCiT$~Fkxur97P{Bo3Yd~(Ca_|VimKDl8h3`$Ha>1xSAKVV+^{yDDb;os%Tf=e+Kp`=u9YKbi2|s^{rO^43CuS|^SKIB zQx^qKFWR%|l_y?3c4zy_)*laEhtik9-0+`GXJ{lIPADVI`lb!C$S0&>>W3lYc%_ji zpb2v>*YrYsQxfV7SRqwJoJR5^_~d%Aj*BNm2g*FnU+N6L4K?#uIujchyj=cDXKXwn z4$KpAp!rhGdAw(q|zA|xA%n7 z85>WC0rYb{9`-Mde2foG^DsXTrxW!y3aHLs ziNrZKYyVxubz8og`|qBHw@Cflk4Dswb!=o2=f~E+%Povqvwok@@?XKin2Dn1^}CYA z6AEL>^|9^4RSihyh~ER=X8o>aX)Ga`nDx6?_us?Pn2Dn1`RhgTZ0on4xNgf=^ZfNq z!`1xUheq6g8`#Jq%E$5jE$|kU_gfgV#Oc#M0-XAP4GUu?ikju$$l?iwF{OO={C%_m z$sF-V!Q0Fq&r+BF>9YOPTE0!w+Mh1>$G>R#uASEY3}=60uQ$!_LPx$K;#MCCvCy%P zo2TK*C;o-*e+%2jOcXWiSBAws3S-)=U$Dgv5g&*D#Q8Z3$gqR5y;?t>3tYbuJg$GF zf@I_WZEM1OtpuTkOG*med=h^}P4OyC#1>_9n;ymHRJ zN`-GDwXrcT7)KkE+u%h$11%MDjYM7$$)tU-Hb3sl-mB=f}C{pGq);1}X{Ok{c zN)W0_H+Vt0Sl+4S-8Np;!x{F&S}77^NQ#-DlJmo`zwBj8J_B3MniJKs0I@3q;GlwB zk(K21k3@b|*JM`49w9PvWcga)aYRbAykBJijgGvXhCAB~sS*)Uwwwy7!M?Xz^~?Dp z1jDim5nbDTF?R8fUi|Ir|F-_@zqs+@MR(6%wqOtSW&<9h_l#8*vOX!6sZ3}~c~;WL zWnEdnM?x|o&b_`IU*tKj0XaC&Fyix@@ZMU!Sh2&eflwB0D28TI<#%7HSnaDIG~)=_ zW~jK&4^#FV(u6c!suRwKUtvNkz|H@n7 zDbD`o^v0~DsQI*5fZ{}t2AOXRPN>nA6NeYiF`N z)*xQZ@-dneJxmle%SVfB6LI#>`Cw$GDL65~h(e zx$e8K9lvtf!JoxitK0PZ+*^Kl+1_L0|NRh$1xo7jmmfXvs~`F4Yp+dmDM7zbullMy z#3ck}FcoYPt-9@fpZLq?SDHXGFHs@Bx?$OOb{$*VTh#&Rgf9QVUH6QACVpY0O$VMF z6SeY=(QiDvvwiGiJ-VElM$uk*`j+LbPv3J>MwfGZ#E!mxU(eF?p&c*i@@2N#0Bz(rdf2`CNCpts|RH=h9x+>b&2T&v&ow?rQf^fv+wfEe1Agp2s~+PEYmQ zg$v%=^O=oz9~j^Fg>-xeMUqMpwt6&YDou@5>C9{57-*0-`+FlCZqe@1j>K?w1F~U=e3X*$-6AZ|dL{cCSImuUtc;R3X5zy0;SSmiGgu?qJ2s z+jVJ$hAQPss?X0AOQ}pgt1i7um7N`BKg!^G7RR~}jKMeI@D03TIZO@190n=64uh4P zhubrG2V(IVuD})Gx>A&JobBY&)YlOEVr(vDOX;ps&9kBICsdu@vR4`hr!b{l8X*|_ zyX||+Q7K5L^fe!M>;6(P+u2bcirm2{D(!DB+uyOzuD7(#yV38qfEU$)RCS!hCBJ_U zZn_6>-@Q|v>1aa>)R+r=Xj*|c^{+GA(cRYB<@woMp*x?>wyo*xUY+am3;FJJy1jGl z3zw<}+-ARg@{_+DzWpB`dk*rzkF!f@S!co2Jb!R$xoj@uW$+PS+vfLRD)vV zhpi*!%HCvqYFBk9u#X>K`Sw?qobeOR*;9B(hjnm${KwCH{qGLHvH8Kt2mkEt=dU|p z>964x`1w?|3`S>+e)gNu|9<{?%Jh_$sd|}YCk|$}T$A`#_u%)%i(9|)*44Li4rh=_ zO7!@OTle37wC{gxd3sWF=kv`Yi@)~3o8c7sOseK$ajVMAb&kwF{~Vf|vAv*qY1Z}E z667qypWKq&<>w+Hes;y^f1dM!BWvvWc}QLY2r-v==Dm}2ouInoez0mJhrPc#6^?pX z3N@+X^?oHWb;Zd3CFIBPkR~;*zT8xsd%>}OS3{X=3>UX9zl`TVbG}la8H+c%^=W@d z+}CiW zO4)D3H;KCvg7-ds>ssaUG7{ukWgqI-OvK1l?Da~}x($OsoXDN8DzsXo48_-aQ*S={ zD{7<=Hyzn8-zKrw<7^b(f@eJL7&M*N+O;SzuW#Bo)u?g zBno_Q3_-Xt6w>omI%@nYMjfXt6WY?-w-!YDtG~G(g`gdH=EOTxr>Z^U?{t>a2eRjz zHuQGw147+?=lyfW>95W<-?YP-t=vUI@UHb;%*nL*=3d)zx8l8iuDosiPK{}cAw=D$ zPyyFAoF~SdAXZax4_@;A<6VrU-s5cj(WdungE)lz-1_5z9vXF$=EXVc!H@GN&wadU z$TGJg0S)7Muln-F;K%At?EV;OAG(&k39%i|d*7ey%QWv5+U6fTp{DEWK5 zy-#U3zI~}$SpGh7>SLd7gE-E`uPWYs?}~R_MQ7a;jDc?A!h+^}##qKPlxNI4c^m46 z#F+F@+jJf=FKHiP&Nkha0esHEV>Y}6N#AJ)4^q&aZH>h!Y)tE{^UC4yH#8Du;$!(C zNoAhGY3Ke$sMqI}ay8t4`$>R=-yU2z z;NPwMWL4kL>!wLwMTg?bWolDuvnM`?_G;W}6zh_<;TGb>@3XhYI2fn7_1%N@zdo%- zY{uQ-FO8J#<*f`63%~rYDj+uX=~_4Ow+*eh|3BzCH^$G?>3TmX7RIq;oLekNtt!N0 zTX|YH;+_kU$NX0jeyLRpllb`}seYuW&y^5&{#-Vz$4guT$r!EW|&-+^wjm`I^_mC2bo)BN#ew^$DiVe8e`gw{JZIACOd!U zBWe_8%v{qxxS?{;+(q!0LO;*dM97`wza`=tR)}BUK*<`qz}xstC5)=-CnB|Db*smg zC`~l;#j}KD?lGA+ccaYP_qpb-mgVMtlll4`EAr;vmgVNomw9uq%DlNtW!~K9QtPFT zn6){($#XE(Y@sJFzzD}I7zmthde!~M1M0+yW_1Y)D^Q)U*rj8xPLo)bW z?pTf7pF{gYk_+BE2xlPff6M&W?{Qew@R^~R;51Qm+uCsqd`N7|bI-MI%BN!;>IZpH zEM*q7D~NCMB}Si*JDt7|^@!z`tRZcS>4#SEWbPMDOkk$N=qZ}Z`_#UzW&|vm+ntqa aq4+52u}?I=x!euT%!jjp7-f$4p8pR;BkD>3 literal 0 HcmV?d00001 diff --git a/UnityDataTool.Tests/AddressablesBuildLayoutTests.cs b/UnityDataTool.Tests/AddressablesBuildLayoutTests.cs index 5a8f605..6ad551e 100644 --- a/UnityDataTool.Tests/AddressablesBuildLayoutTests.cs +++ b/UnityDataTool.Tests/AddressablesBuildLayoutTests.cs @@ -42,43 +42,27 @@ public async Task Analyze_BuildLayout_ContainsExpectedSQLContent() // Addressables test project. // The test confirms some expected content in the database var path = Path.Combine(m_TestDataFolder, "AddressableBuildLayouts"); - - var databasePath = Path.Combine(m_TestOutputFolder, "database.db"); + var databasePath = SQLTestHelper.GetDatabasePath(m_TestOutputFolder); Assert.AreEqual(0, await Program.Main(new string[] { "analyze", path, "-p", "*.json" })); - using var db = new SqliteConnection(new SqliteConnectionStringBuilder - { - DataSource = databasePath, - Mode = SqliteOpenMode.ReadWriteCreate, - Pooling = false, - ForeignKeys = false, - }.ConnectionString); - db.Open(); - - using var cmd = db.CreateCommand(); + using var db = SQLTestHelper.OpenDatabase(databasePath); // Sanity check some expected content in the output SQLite database - cmd.CommandText = - @"SELECT - (SELECT COUNT(*) FROM addressables_builds), - (SELECT COUNT(*) FROM addressables_builds WHERE name = ""buildlayout_2025.01.28.16.35.01.json""), - (SELECT unity_version FROM addressables_builds WHERE id = 1), - (SELECT package_version FROM addressables_builds WHERE id = 1), - (SELECT COUNT(*) FROM addressables_build_bundles WHERE build_id = 1 and name = ""samplepack1_assets_0.bundle""), - (SELECT file_size FROM addressables_build_bundles WHERE build_id = 2 and name = ""samplepack1_assets_0.bundle""), - (SELECT packing_mode FROM addressables_build_groups WHERE build_id = 1 and name = ""SamplePack1""), - (SELECT COUNT(*) FROM asset_bundles)"; - - using var reader = cmd.ExecuteReader(); - reader.Read(); - - Assert.AreEqual(2, reader.GetInt32(0), "Unexpected number of builds"); - Assert.AreEqual(1, reader.GetInt32(1), "Failed to find build matching reference filename"); - Assert.AreEqual("6000.1.0b2", reader.GetString(2), "Unexpected Unity Version"); - Assert.AreEqual("com.unity.addressables: 2.2.2", reader.GetString(3), "Unexpected Addressables version"); - Assert.AreEqual(1, reader.GetInt32(4), "Expected to find specific AssetBundle by name"); - Assert.AreEqual(33824, reader.GetInt32(5), "Unexpected size for specific AssetBundle in build 2"); - Assert.AreEqual("PackSeparately", reader.GetString(6), "Unexpected packing_mode for group"); - Assert.AreEqual(0, reader.GetInt32(7), "Expected no AssetBundles found in reference folder"); + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(*) FROM addressables_builds", 2, + "Unexpected number of builds"); + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(*) FROM addressables_builds WHERE name = \"buildlayout_2025.01.28.16.35.01.json\"", 1, + "Failed to find build matching reference filename"); + SQLTestHelper.AssertQueryString(db, "SELECT unity_version FROM addressables_builds WHERE id = 1", "6000.1.0b2", + "Unexpected Unity Version"); + SQLTestHelper.AssertQueryString(db, "SELECT package_version FROM addressables_builds WHERE id = 1", "com.unity.addressables: 2.2.2", + "Unexpected Addressables version"); + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(*) FROM addressables_build_bundles WHERE build_id = 1 and name = \"samplepack1_assets_0.bundle\"", 1, + "Expected to find specific AssetBundle by name"); + SQLTestHelper.AssertQueryInt(db, "SELECT file_size FROM addressables_build_bundles WHERE build_id = 2 and name = \"samplepack1_assets_0.bundle\"", 33824, + "Unexpected size for specific AssetBundle in build 2"); + SQLTestHelper.AssertQueryString(db, "SELECT packing_mode FROM addressables_build_groups WHERE build_id = 1 and name = \"SamplePack1\"", "PackSeparately", + "Unexpected packing_mode for group"); + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(*) FROM asset_bundles", 0, + "Expected no AssetBundles found in reference folder"); } } diff --git a/UnityDataTool.Tests/BuildReportTests.cs b/UnityDataTool.Tests/BuildReportTests.cs new file mode 100644 index 0000000..2e8833e --- /dev/null +++ b/UnityDataTool.Tests/BuildReportTests.cs @@ -0,0 +1,215 @@ +using Microsoft.Data.Sqlite; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using NUnit.Framework; +using System.Collections.Generic; + +namespace UnityDataTools.UnityDataTool.Tests; + +#pragma warning disable NUnit2005, NUnit2006 + +public class BuildReportTests +{ + private string m_TestOutputFolder; + private string m_TestDataFolder; + + [OneTimeSetUp] + public void OneTimeSetup() + { + m_TestOutputFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, "test_folder"); + m_TestDataFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, "Data"); + Directory.CreateDirectory(m_TestOutputFolder); + Directory.SetCurrentDirectory(m_TestOutputFolder); + } + + [TearDown] + public void Teardown() + { + SqliteConnection.ClearAllPools(); + + var testDir = new DirectoryInfo(m_TestOutputFolder); + testDir.EnumerateFiles() + .ToList().ForEach(f => f.Delete()); + testDir.EnumerateDirectories() + .ToList().ForEach(d => d.Delete(true)); + } + + // Check the primary object/file tables and views which are populated by the general + // object handling of the analyzer (e.g. nothing BuildReport specific) + // This test is parameterized to run with and without "--skip-references" + // in order to show that the core object tables are not impacted by whether + // or not references are tracked. + [Test] + public async Task Analyze_BuildReport_ContainsExpected_ObjectInfo( + [Values(false, true)] bool skipReferences) + { + // This folder contains a reference build report generated by a build of the TestProject + // in the BuildReportInspector package. + var path = Path.Combine(m_TestDataFolder, "BuildReport1"); + var databasePath = SQLTestHelper.GetDatabasePath(m_TestOutputFolder); + + var args = new List { "analyze", path, "-p", "*.buildreport" }; + if (skipReferences) + args.Add("--skip-references"); + + Assert.AreEqual(0, await Program.Main(args.ToArray())); + using var db = SQLTestHelper.OpenDatabase(databasePath); + + // Sanity check the Unity objects found in this Build report file + // Tip: The meaning of the hard coded type ids used in the queries can be found + // at https://docs.unity3d.com/6000.3/Documentation/Manual/ClassIDReference.html + + // The BuildReport object is the most important. + // PackedAssets objects are present for each output serialized file, .resS and .resource. + const int packedAssetCount = 7; + + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(*) FROM objects WHERE type = 1125", 1, + "Unexpected number of BuildReport objects (type 1125)"); + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(*) FROM objects WHERE type = 1126", packedAssetCount, + "Unexpected number of PackedAssets objects"); + + // This object is expected inside AssetBundle builds + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(*) FROM objects WHERE type = 668709126", 1, + "Unexpected number of BuiltAssetBundleInfoSet objects"); + + // There can be other more obscure objects present, depending on the build, + // e.g. PluginBuildInfo, AudioBuildInfo, VideoBuildInfo etc. + var ttlObjCount = SQLTestHelper.QueryInt(db, "SELECT COUNT(*) FROM objects"); + Assert.That(ttlObjCount, Is.GreaterThanOrEqualTo(1+ packedAssetCount + 1), + "Unexpected number of objects in BuildReport analysis"); + + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(*) FROM asset_bundles", 0, + "Expected no AssetBundles found in reference folder"); + + // + // Tests using object_view which lets us refer to objects by type name + // + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(*) FROM object_view WHERE type = 'BuildReport'", 1, + "Expected exactly one BuildReport in object_view"); + + SQLTestHelper.AssertQueryString(db, "SELECT name FROM object_view WHERE type = 'BuildReport'", "Build AssetBundles", + "Unexpected name"); + + SQLTestHelper.AssertQueryString(db, "SELECT name FROM object_view WHERE type = 'BuildReport'", "Build AssetBundles", + "Unexpected BuildReport name in object_view"); + + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(*) FROM object_view WHERE type = 'PackedAssets'", packedAssetCount, + "Unexpected number of PackedAssets in object_view"); + + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(*) FROM object_view WHERE type = 'BuiltAssetBundleInfoSet'", 1, + "Expected exactly one BuiltAssetBundleInfoSet in object_view"); + + // Verify all rows have the same serialized_file + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(DISTINCT serialized_file) FROM object_view", 1, + "All objects should be from the same serialized file"); + + SQLTestHelper.AssertQueryString(db, "SELECT DISTINCT serialized_file FROM object_view", "LastBuild.buildreport", + "Unexpected serialized file name in object_view"); + + // Verify the BuildReport object has expected properties + var buildReportSize = SQLTestHelper.QueryInt(db, "SELECT size FROM object_view WHERE type = 'BuildReport'"); + Assert.That(buildReportSize, Is.GreaterThan(0), "BuildReport size should be greater than 0"); + + // + // Tests using view_breakdown_by_type which aggregates objects by type + // + + // Verify counts match for specific types + SQLTestHelper.AssertQueryInt(db, "SELECT count FROM view_breakdown_by_type WHERE type = 'BuildReport'", 1, + "Expected 1 BuildReport in breakdown view"); + SQLTestHelper.AssertQueryInt(db, "SELECT count FROM view_breakdown_by_type WHERE type = 'PackedAssets'", packedAssetCount, + "Expected 7 PackedAssets in breakdown view"); + + var buildReportSize2 = SQLTestHelper.QueryInt(db, "SELECT byte_size FROM view_breakdown_by_type WHERE type = 'BuildReport'"); + Assert.AreEqual(buildReportSize, buildReportSize2, "Mismatch between object_view and breakdown_view for BuildReport size"); + + // Verify pretty_size formatting exists + var buildReportPrettySize = SQLTestHelper.QueryString(db, "SELECT pretty_size FROM view_breakdown_by_type WHERE type = 'BuildReport'"); + Assert.That(buildReportPrettySize, Does.Contain("KB").Or.Contain("B"), "BuildReport pretty_size should have size unit"); + + // Verify total byte_size across all types + var totalSize = SQLTestHelper.QueryInt(db, "SELECT SUM(byte_size) FROM view_breakdown_by_type"); + Assert.That(totalSize, Is.GreaterThan(buildReportSize), + "Unexpected number of objects in BuildReport analysis"); + + // + // Tests using serialized_files table + // + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(*) FROM serialized_files", 1, + "Expected exactly one serialized file"); + + SQLTestHelper.AssertQueryString(db, "SELECT name FROM serialized_files WHERE id = 0", "LastBuild.buildreport", + "Unexpected serialized file name"); + + // Verify asset_bundle column is empty/NULL for BuildReport files (they are not asset bundles) + var assetBundleValue = SQLTestHelper.QueryString(db, "SELECT COALESCE(asset_bundle, '') FROM serialized_files WHERE id = 0"); + Assert.That(string.IsNullOrEmpty(assetBundleValue), "BuildReport serialized file should not have asset_bundle value"); + + // Verify the serialized file name matches what we see in object_view + var serializedFileName = SQLTestHelper.QueryString(db, "SELECT name FROM serialized_files WHERE id = 0"); + var objectViewFileName = SQLTestHelper.QueryString(db, "SELECT DISTINCT serialized_file FROM object_view"); + Assert.AreEqual(serializedFileName, objectViewFileName, + "Serialized file name should match between serialized_files table and object_view"); + } + + // The BuildReport file has a simple structure with a single BuildReport object + // and all other objects referenced from its Appendicies array. + // This gives an opportunity for a detailed test that the "refs" table is properly populated. + [Test] + public async Task Analyze_BuildReport_ContainsExpectedReferences( + [Values(false, true)] bool skipReferences) + { + var path = Path.Combine(m_TestDataFolder, "BuildReport1"); + var databasePath = SQLTestHelper.GetDatabasePath(m_TestOutputFolder); + + var args = new List { "analyze", path, "-p", "*.buildreport" }; + if (skipReferences) + args.Add("--skip-references"); + + Assert.AreEqual(0, await Program.Main(args.ToArray())); + using var db = SQLTestHelper.OpenDatabase(databasePath); + + if (skipReferences) + { + // When --skip-references is used, the refs table should be empty + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(*) FROM refs", 0, + "refs table should be empty when --skip-references is used"); + return; + } + + var buildReportId = SQLTestHelper.QueryInt(db, + "SELECT id FROM objects WHERE type = 1125"); + + var totalObjectCount = SQLTestHelper.QueryInt(db, "SELECT COUNT(*) FROM objects"); + + var expectedRefCount = totalObjectCount - 1; + SQLTestHelper.AssertQueryInt(db, "SELECT COUNT(*) FROM refs", expectedRefCount, + "BuildReport should reference all other objects"); + + SQLTestHelper.AssertQueryInt(db, $"SELECT COUNT(*) FROM refs WHERE object = {buildReportId}", expectedRefCount, + "All references should originate from BuildReport object"); + + SQLTestHelper.AssertQueryInt(db, $"SELECT COUNT(*) FROM refs WHERE referenced_object = {buildReportId}", 0, + "No object should reference the BuildReport object"); + + var refsWithWrongPath = SQLTestHelper.QueryInt(db, + "SELECT COUNT(*) FROM refs WHERE property_path NOT LIKE 'm_Appendices[%]'"); + Assert.AreEqual(0, refsWithWrongPath, "All property_path values should match pattern 'm_Appendices[N]'"); + + SQLTestHelper.AssertQueryString(db, "SELECT DISTINCT property_type FROM refs", "Object", + "All references should have property_type 'Object'"); + + var objectsNotReferenced = SQLTestHelper.QueryInt(db, + $@"SELECT COUNT(*) FROM objects + WHERE id != {buildReportId} + AND id NOT IN (SELECT referenced_object FROM refs)"); + Assert.AreEqual(0, objectsNotReferenced, + "Every object except BuildReport should be referenced exactly once"); + + var duplicateRefs = SQLTestHelper.QueryInt(db, + "SELECT COUNT(*) FROM (SELECT referenced_object, COUNT(*) as cnt FROM refs GROUP BY referenced_object HAVING cnt > 1)"); + Assert.AreEqual(0, duplicateRefs, + "No object should be referenced more than once"); + } +} diff --git a/UnityDataTool.Tests/SQLTestHelper.cs b/UnityDataTool.Tests/SQLTestHelper.cs new file mode 100644 index 0000000..d26f3dc --- /dev/null +++ b/UnityDataTool.Tests/SQLTestHelper.cs @@ -0,0 +1,109 @@ +using System.IO; +using Microsoft.Data.Sqlite; +using NUnit.Framework; + +namespace UnityDataTools.UnityDataTool.Tests; + +#pragma warning disable NUnit2005, NUnit2006 + +/// +/// Helper methods for executing SQL queries against a DB created by "Analyze" +/// and validating results in tests. +/// +public static class SQLTestHelper +{ + /// + /// Default database filename used in tests. + /// + public const string DefaultDatabaseName = "database.db"; + + /// + /// Creates and opens a SQLite database connection with standard test settings. + /// + /// The path to the database file. + /// An opened SqliteConnection. Caller is responsible for disposing. + public static SqliteConnection OpenDatabase(string databasePath) + { + var db = new SqliteConnection(new SqliteConnectionStringBuilder + { + DataSource = databasePath, + Mode = SqliteOpenMode.ReadWriteCreate, + Pooling = false, + ForeignKeys = false, + }.ConnectionString); + db.Open(); + return db; + } + + /// + /// Gets the standard database path for tests (testOutputFolder/database.db). + /// + /// The test output folder path. + /// The full path to the database file. + public static string GetDatabasePath(string testOutputFolder) + { + return Path.Combine(testOutputFolder, DefaultDatabaseName); + } + + /// + /// Executes a SQL query and returns the integer result. + /// + /// The database connection to use. + /// The SQL query to execute (should return a single integer value). + /// The integer result of the query. + public static int QueryInt(SqliteConnection db, string sql) + { + using var cmd = db.CreateCommand(); + cmd.CommandText = sql; + using var reader = cmd.ExecuteReader(); + reader.Read(); + return reader.GetInt32(0); + } + + /// + /// Executes a SQL query and returns the string result. + /// + /// The database connection to use. + /// The SQL query to execute (should return a single string value). + /// The string result of the query. + public static string QueryString(SqliteConnection db, string sql) + { + using var cmd = db.CreateCommand(); + cmd.CommandText = sql; + using var reader = cmd.ExecuteReader(); + reader.Read(); + return reader.GetString(0); + } + + /// + /// Executes a SQL query and asserts the result equals the expected integer value. + /// + /// The database connection to use. + /// The SQL query to execute (should return a single integer value). + /// The expected integer result. + /// Description of what is being tested (used in assertion message). + public static void AssertQueryInt(SqliteConnection db, string sql, int expectedValue, string description) + { + using var cmd = db.CreateCommand(); + cmd.CommandText = sql; + using var reader = cmd.ExecuteReader(); + reader.Read(); + Assert.AreEqual(expectedValue, reader.GetInt32(0), description); + } + + /// + /// Executes a SQL query and asserts the result equals the expected string value. + /// + /// The database connection to use. + /// The SQL query to execute (should return a single string value). + /// The expected string result. + /// Description of what is being tested (used in assertion message). + public static void AssertQueryString(SqliteConnection db, string sql, string expectedValue, string description) + { + using var cmd = db.CreateCommand(); + cmd.CommandText = sql; + using var reader = cmd.ExecuteReader(); + reader.Read(); + Assert.AreEqual(expectedValue, reader.GetString(0), description); + } +} diff --git a/UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs b/UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs index 180eb2b..fe395f2 100644 --- a/UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs +++ b/UnityDataTool.Tests/UnityDataToolAssetBundleTests.cs @@ -147,7 +147,7 @@ public async Task DumpText_SkipLargeArrays_TextFileCreatedCorrectly( [Test] public async Task Analyze_DefaultArgs_DatabaseCorrect() { - var databasePath = Path.Combine(m_TestOutputFolder, "database.db"); + var databasePath = SQLTestHelper.GetDatabasePath(m_TestOutputFolder); var analyzePath = Path.Combine(Context.UnityDataFolder); Assert.AreEqual(0, await Program.Main(new string[] { "analyze", analyzePath })); @@ -159,7 +159,7 @@ public async Task Analyze_DefaultArgs_DatabaseCorrect() public async Task Analyze_WithoutRefs_DatabaseCorrect( [Values("-s", "--skip-references")] string options) { - var databasePath = Path.Combine(m_TestOutputFolder, "database.db"); + var databasePath = SQLTestHelper.GetDatabasePath(m_TestOutputFolder); var analyzePath = Path.Combine(Context.UnityDataFolder); Assert.AreEqual(0, await Program.Main(new string[] { "analyze", analyzePath }.Concat(options.Split(" ")).ToArray())); @@ -171,7 +171,7 @@ public async Task Analyze_WithoutRefs_DatabaseCorrect( public async Task Analyze_WithPattern_DatabaseCorrect( [Values("-p *.", "--search-pattern *.")] string options) { - var databasePath = Path.Combine(m_TestOutputFolder, "database.db"); + var databasePath = SQLTestHelper.GetDatabasePath(m_TestOutputFolder); var analyzePath = Path.Combine(Context.UnityDataFolder); Assert.AreEqual(0, await Program.Main(new string[] { "analyze", analyzePath }.Concat(options.Split(" ")).ToArray())); @@ -183,19 +183,12 @@ public async Task Analyze_WithPattern_DatabaseCorrect( public async Task Analyze_WithPatternNoMatch_DatabaseEmpty( [Values("-p *.x", "--search-pattern *.x")] string options) { - var databasePath = Path.Combine(m_TestOutputFolder, "database.db"); + var databasePath = SQLTestHelper.GetDatabasePath(m_TestOutputFolder); var analyzePath = Path.Combine(Context.UnityDataFolder); Assert.AreEqual(0, await Program.Main(new string[] { "analyze", analyzePath }.Concat(options.Split(" ")).ToArray())); - using var db = new SqliteConnection(new SqliteConnectionStringBuilder - { - DataSource = databasePath, - Mode = SqliteOpenMode.ReadWriteCreate, - Pooling = false, - ForeignKeys = false, - }.ConnectionString); - db.Open(); + using var db = SQLTestHelper.OpenDatabase(databasePath); using (var cmd = db.CreateCommand()) { @@ -219,15 +212,7 @@ public async Task Analyze_WithOutputFile_DatabaseCorrect( private void ValidateDatabase(string databasePath, bool withRefs) { - using var db = new SqliteConnection(new SqliteConnectionStringBuilder - { - DataSource = databasePath, - Mode = SqliteOpenMode.ReadWriteCreate, - Pooling = false, - ForeignKeys = false, - }.ConnectionString); - - db.Open(); + using var db = SQLTestHelper.OpenDatabase(databasePath); using (var cmd = db.CreateCommand()) { diff --git a/UnityDataTool.Tests/UnityDataToolPlayerDataTests.cs b/UnityDataTool.Tests/UnityDataToolPlayerDataTests.cs index 1ec0805..2c3cb83 100644 --- a/UnityDataTool.Tests/UnityDataToolPlayerDataTests.cs +++ b/UnityDataTool.Tests/UnityDataToolPlayerDataTests.cs @@ -40,18 +40,11 @@ public void Teardown() [Test] public async Task Analyze_PlayerData_DatabaseCorrect() { - var databasePath = Path.Combine(m_TestOutputFolder, "database.db"); + var databasePath = SQLTestHelper.GetDatabasePath(m_TestOutputFolder); var analyzePath = Path.Combine(Context.UnityDataFolder); Assert.AreEqual(0, await Program.Main(new string[] { "analyze", analyzePath, "-p", "*." })); - using var db = new SqliteConnection(new SqliteConnectionStringBuilder - { - DataSource = databasePath, - Mode = SqliteOpenMode.ReadWriteCreate, - Pooling = false, - ForeignKeys = false, - }.ConnectionString); - db.Open(); + using var db = SQLTestHelper.OpenDatabase(databasePath); using var cmd = db.CreateCommand();