From 7bb2cc1961a282245dc4ce00004dd784137bc2ad Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Tue, 5 Oct 2021 12:54:39 +0200 Subject: [PATCH 001/599] 1.7.12 - push Mesh fix to pypi --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 565fba62..34804b9c 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.11" +__version__ = "1.7.12" from .environment import Environment From 76f5156f0397b7c475cee0297a26d825918ecf68 Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Wed, 6 Oct 2021 09:26:35 +0200 Subject: [PATCH 002/599] 1.7.13 - Mesh fix - UnpackInts fix --- UnityPy/__init__.py | 2 +- UnityPy/classes/AnimationClip.py | 26 +++++++++++--------------- UnityPy/export/MeshExporter.py | 3 ++- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 34804b9c..85769219 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.12" +__version__ = "1.7.13" from .environment import Environment diff --git a/UnityPy/classes/AnimationClip.py b/UnityPy/classes/AnimationClip.py index 58abab3b..f93734a1 100644 --- a/UnityPy/classes/AnimationClip.py +++ b/UnityPy/classes/AnimationClip.py @@ -80,7 +80,7 @@ def UnpackFloats( indexPos: int = bitPos // 8 bitPos %= 8 - scale: float = (1.0 / self.m_Range) if self.m_Range else float('inf') + scale: float = (1.0 / self.m_Range) if self.m_Range else float("inf") if numChunks == -1: numChunks = self.m_NumItems // itemCountInChunk end = int(chunkStride * numChunks / 4) @@ -102,7 +102,7 @@ def UnpackFloats( x &= uint((1 << self.m_BitSize) - 1) # (uint)(1 << m_BitSize) - 1u denomi = scale * ((1 << self.m_BitSize) - 1) - data.append( (x / denomi if denomi else float('inf')) + self.m_Start) + data.append((x / denomi if denomi else float("inf")) + self.m_Start) return data @@ -132,20 +132,18 @@ def UnpackInts(self): data = [0] * self.m_NumItems indexPos = 0 bitPos = 0 - m_BitSize = self.m_BitSize - for i in range(self.m_NumItems): bits = 0 - entry = 0 - while bits < m_BitSize: - entry |= (self.m_Data[indexPos] >> bitPos) << bits - num = min(m_BitSize - bits, 8 - bitPos) + data[i] = 0 + while bits < self.m_BitSize: + data[i] |= (self.m_Data[indexPos] >> bitPos) << bits + num = min(self.m_BitSize - bits, 8 - bitPos) bitPos += num bits += num - if bitPos == 8: # + if bitPos == 8: indexPos += 1 bitPos = 0 - data.append(entry & (1 << m_BitSize) - 1) + data[i] &= (1 << self.m_BitSize) - 1 return data @@ -158,7 +156,7 @@ def __init__(self, reader): def UnpackQuats(self): m_Data = self.m_Data - data = [None]*self.m_NumItems + data = [None] * self.m_NumItems indexPos = 0 bitPos = 0 @@ -342,7 +340,7 @@ def CalculateNextInSlope(self, dx: float, rhs): """ # Stepped if self.coeff[0] == 0 and self.coeff[1] == 0 and self.coeff[2] == 0: - return float('inf') + return float("inf") dx = max(dx, 0.0001) dy = rhs.value - self.value @@ -366,9 +364,7 @@ def __init__(self, reader): def ReadData(self): frameList = [] - buffer = b"".join( - val.to_bytes(4, 'big') for val in self.data - ) + buffer = b"".join(val.to_bytes(4, "big") for val in self.data) reader = EndianBinaryReader(buffer) while reader.Position < reader.Length: frameList.append(StreamedFrame(reader)) diff --git a/UnityPy/export/MeshExporter.py b/UnityPy/export/MeshExporter.py index 0e0d81e3..fa1e4187 100644 --- a/UnityPy/export/MeshExporter.py +++ b/UnityPy/export/MeshExporter.py @@ -1,3 +1,4 @@ +import re def export_mesh(m_Mesh): if m_Mesh.m_VertexCount <= 0: return False @@ -55,5 +56,5 @@ def export_mesh(m_Mesh): ) sum = end # endregion - sb = "".join(sb).replace("NaN", "0").replace("e", "E") + sb = re.sub(r"(\d+)e-(\d+)", r"\1E-\2", "".join(sb).replace("NaN", "0")) return sb From 607fcc528a2e01e6c10df4fc0da9df0292fb045e Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Wed, 6 Oct 2021 11:49:14 +0200 Subject: [PATCH 003/599] 1.7.13 - mesh test fix --- tests/samples/xinzexi_2_n_tex_mesh | 4 ++-- tests/test_main.py | 6 ------ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/tests/samples/xinzexi_2_n_tex_mesh b/tests/samples/xinzexi_2_n_tex_mesh index 8dc16ec8..831933e4 100644 --- a/tests/samples/xinzexi_2_n_tex_mesh +++ b/tests/samples/xinzexi_2_n_tex_mesh @@ -1,4 +1,4 @@ -g xinzExi_2_n-mEsh +g xinzexi_2_n-mesh v -1152.0 671.0 0.0 v -1152.0 1343.0 0.0 v -1440.0 1343.0 0.0 @@ -1447,7 +1447,7 @@ vt 0.64599609375 0.9661885499954224 vt 0.64599609375 0.998975396156311 vt 0.66162109375 0.998975396156311 vt 0.66162109375 0.9661885499954224 -g xinzExi_2_n-mEsh_0 +g xinzexi_2_n-mesh_0 f 3/3/3 2/2/2 1/1/1 f 1/1/1 4/4/4 3/3/3 f 7/7/7 6/6/6 5/5/5 diff --git a/tests/test_main.py b/tests/test_main.py index 1c73fb29..520f0a70 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -19,8 +19,6 @@ def test_read_batch(): def test_texture2d(): - import UnityPy - for f in os.listdir(SAMPLES): env = UnityPy.load(os.path.join(SAMPLES, f)) for obj in env.objects: @@ -32,8 +30,6 @@ def test_texture2d(): def test_sprite(): - import UnityPy - for f in os.listdir(SAMPLES): env = UnityPy.load(os.path.join(SAMPLES, f)) for obj in env.objects: @@ -42,8 +38,6 @@ def test_sprite(): def test_audioclip(): - import UnityPy - env = UnityPy.load(os.path.join(SAMPLES, "char_118_yuki.ab")) for obj in env.objects: if obj.type == "AudioClip": From 573ccbc152077efd4b3cdbb5ecf778c6a9be8483 Mon Sep 17 00:00:00 2001 From: UserUnknownFactor <63057995+UserUnknownFactor@users.noreply.github.com> Date: Mon, 11 Oct 2021 11:06:37 +0300 Subject: [PATCH 004/599] Keep file names for convenience (#70) FakeNode can be used externally Add some convenience functions --- .github/workflows/python-package.yml | 3 +- UnityPy/classes/MonoBehaviour.py | 9 ++- UnityPy/classes/Object.py | 9 ++- UnityPy/environment.py | 25 +++++-- UnityPy/exceptions.py | 5 ++ UnityPy/files/BundleFile.py | 96 +++++++++++++-------------- UnityPy/files/File.py | 26 ++++++-- UnityPy/files/ObjectReader.py | 10 +-- UnityPy/files/SerializedFile.py | 29 ++++---- UnityPy/files/WebFile.py | 5 +- UnityPy/helpers/ResourceReader.py | 13 ++-- UnityPy/helpers/TypeTreeHelper.py | 58 +++++++++++----- UnityPy/streams/EndianBinaryReader.py | 5 ++ 13 files changed, 189 insertions(+), 104 deletions(-) create mode 100644 UnityPy/exceptions.py diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 9dfdab82..88425c25 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -44,7 +44,7 @@ jobs: - name: Install module run: | - python setup.py install + pip install . --use-feature=in-tree-build - name: Test with pytest run: | @@ -69,3 +69,4 @@ jobs: TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} run: | twine upload dist/* --skip-existing + diff --git a/UnityPy/classes/MonoBehaviour.py b/UnityPy/classes/MonoBehaviour.py index d2b54a74..183ecf41 100644 --- a/UnityPy/classes/MonoBehaviour.py +++ b/UnityPy/classes/MonoBehaviour.py @@ -1,7 +1,7 @@ from .Behaviour import Behaviour from .PPtr import PPtr, save_ptr from ..streams import EndianBinaryReader, EndianBinaryWriter - +from ..exceptions import TypeTreeError as TypeTreeError class MonoBehaviour(Behaviour): def __init__(self, reader: EndianBinaryReader): @@ -11,7 +11,11 @@ def __init__(self, reader: EndianBinaryReader): self._raw_offset = reader.Position if self.assets_file._enable_type_tree: - self.read_typetree() + try: + self.read_typetree() + except TypeTreeError as e: + print("Failed to read TypeTree:\n", e.message) + self.assets_file._enable_type_tree = False def save(self, writer: EndianBinaryWriter = None, raw_data: bytes = None): if writer is None: @@ -35,3 +39,4 @@ def raw_data(self) -> bytes: reader = self.reader reader.Position = self._raw_offset return reader.read_bytes(reader.byte_size - (self._raw_offset - reader.byte_start)) + diff --git a/UnityPy/classes/Object.py b/UnityPy/classes/Object.py index 6d57bfcd..1c82f273 100644 --- a/UnityPy/classes/Object.py +++ b/UnityPy/classes/Object.py @@ -4,7 +4,7 @@ from ..streams import EndianBinaryWriter from ..files import ObjectReader import types - +from ..exceptions import TypeTreeError as TypeTreeError class Object(object): type_tree: dict @@ -46,7 +46,11 @@ def dump_typetree_structure(self) -> str: return self.reader.dump_typetree_structure() def read_typetree(self, nodes: list = None) -> dict: - tree = self.reader.read_typetree(nodes) + try: + tree = self.reader.read_typetree(nodes) + except TypeTreeError as e: + print("Failed to read TypeTree:\n", e.message) + return {} self.type_tree = NodeHelper(tree, self.assets_file) return tree @@ -173,3 +177,4 @@ def keys(self): def __repr__(self): return "" % self.__dict__.__repr__() + diff --git a/UnityPy/environment.py b/UnityPy/environment.py index c54039f7..6a9f1394 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -16,6 +16,7 @@ class Environment: def __init__(self, *args): self.files = {} self.path = "." + self.out_path = os.path.join(os.getcwd(), "output") if args: for arg in args: @@ -62,18 +63,19 @@ def load_file(self, stream, parent=None): typ, reader = ImportHelper.check_file_type(stream) try: if typ == FileType.AssetsFile: - return files.SerializedFile(reader, parent) + return files.SerializedFile(reader, parent, name=stream.name) elif typ == FileType.BundleFile: - return files.BundleFile(reader, parent) + return files.BundleFile(reader, parent, name=stream.name) elif typ == FileType.WebFile: - return files.WebFile(reader, parent) + return files.WebFile(reader, parent, name=stream.name) elif typ == FileType.ZIP: self.load_zip_file(stream) elif typ == FileType.ResourceFile: return EndianBinaryReader(stream) - except: + except Exception as e: # just to be sure # cuz the SerializedFile detection isn't perfect + print("Error loading, reverting to EndianBinaryReader:\n", e.message) return EndianBinaryReader(stream) def load_zip_file(self, value): @@ -88,7 +90,7 @@ def load_zip_file(self, value): z = ZipFile(buffer) splits = {} for path in z.namelist(): - + if path[-7:-1] == ".split": name = path[:-7] if name not in splits: @@ -106,7 +108,7 @@ def load_zip_file(self, value): cur.files[d] = files.File(self) cur = cur.files[d] cur.files[name] = self.load_file(stream, cur) - + # merge splits for path, items in splits.items(): # merge data @@ -124,6 +126,16 @@ def load_zip_file(self, value): z.close() + def save(self, pack="none"): + """ Saves all changed assets. + Mark assets as changed using `.mark_changed()`. + pack = "none" (default) or "lz4" + """ + for f in self.files: + if self.files[f].is_changed: + with open(os.path.join(self.out_path, os.path.basename(f)), 'wb') as out: + out.write(self.files[f].save(packer=pack)) + @property def objects(self): def search(item): @@ -167,3 +179,4 @@ def gen_all_asset_files(file, ret = []): def get(self, key, default=None): return getattr(self, key, default) + diff --git a/UnityPy/exceptions.py b/UnityPy/exceptions.py new file mode 100644 index 00000000..1eda4850 --- /dev/null +++ b/UnityPy/exceptions.py @@ -0,0 +1,5 @@ +class TypeTreeError(Exception): + def __init__(self, message, nodes): + # Call the base class constructor with the parameters it needs + super().__init__(message) + self.nodes = nodes \ No newline at end of file diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 05cd7249..e3aa932f 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -14,14 +14,14 @@ class BundleFile(File.File): signature: str version_engine: str version_player: str - - def __init__(self, reader: EndianBinaryReader, parent: File): - super().__init__(parent=parent) + + def __init__(self, reader: EndianBinaryReader, parent: File, name: str=None): + super().__init__(parent=parent, name=name) signature = self.signature = reader.read_string_to_null() self.version = reader.read_u_int() self.version_player = reader.read_string_to_null() self.version_engine = reader.read_string_to_null() - + if signature == "UnityArchive": raise NotImplemented("BundleFile - UnityArchive") elif signature in ["UnityWeb", "UnityRaw"]: @@ -30,37 +30,37 @@ def __init__(self, reader: EndianBinaryReader, parent: File): m_DirectoryInfo, blocksReader = self.read_fs(reader) else: raise NotImplemented(f"Unknown Bundle signature: {signature}") - + self.read_files(blocksReader, m_DirectoryInfo) - + def read_web_raw(self, reader: EndianBinaryReader): # def read_header_and_blocks_info(self, reader:EndianBinaryReader): version = self.version if version >= 4: _hash = reader.read_bytes(16) crc = reader.read_u_int() - + minimumStreamedBytes = reader.read_u_int() headerSize = reader.read_u_int() numberOfLevelsToDownloadBeforeStreaming = reader.read_u_int() levelCount = reader.read_int() reader.Position += 4 * 2 * (levelCount - 1) - + compressedSize = reader.read_u_int() uncompressedSize = reader.read_u_int() - + if version >= 2: completeFileSize = reader.read_u_int() - + if version >= 3: fileInfoHeaderSize = reader.read_u_int() - + reader.Position = headerSize - + uncompressedBytes = CompressionHelper.decompress_lzma( reader.read_bytes(compressedSize) ) - + blocksReader = EndianBinaryReader(uncompressedBytes, offset=headerSize) nodesCount = blocksReader.read_int() m_DirectoryInfo = [ @@ -71,21 +71,21 @@ def read_web_raw(self, reader: EndianBinaryReader): ) for _ in range(nodesCount) ] - + return m_DirectoryInfo, blocksReader - + def read_fs(self, reader: EndianBinaryReader): version = self.version size = reader.read_long() - + # header compressedSize = reader.read_u_int() uncompressedSize = reader.read_u_int() self._data_flags = reader.read_u_int() - + if self.version >= 7: reader.align_stream(16) - + _position = reader.Position if self._data_flags & 0x80 != 0: # kArchiveBlocksInfoAtTheEnd reader.Position = reader.Length - compressedSize @@ -93,9 +93,9 @@ def read_fs(self, reader: EndianBinaryReader): reader.Position = _position else: # 0x40 kArchiveBlocksAndDirectoryInfoCombined blocksInfoBytes = reader.read_bytes(compressedSize) - + switch = self._data_flags & 0x3F - + if switch == 1: # LZMA blocksInfoBytes = CompressionHelper.decompress_lzma(blocksInfoBytes) elif switch in [2, 3]: # LZ4, LZ4HC @@ -103,12 +103,12 @@ def read_fs(self, reader: EndianBinaryReader): blocksInfoBytes, uncompressedSize ) # elif switch == 4: #LZHAM: - + blocksInfoReader = EndianBinaryReader(blocksInfoBytes, offset=_position) - + uncompressedDataHash = blocksInfoReader.read_bytes(16) blocksInfoCount = blocksInfoReader.read_int() - + m_BlocksInfo = [ BlockInfo( blocksInfoReader.read_u_int(), # uncompressedSize @@ -117,7 +117,7 @@ def read_fs(self, reader: EndianBinaryReader): ) for _ in range(blocksInfoCount) ] - + nodesCount = blocksInfoReader.read_int() m_DirectoryInfo = [ DirectoryInfoFS( @@ -128,7 +128,7 @@ def read_fs(self, reader: EndianBinaryReader): ) for _ in range(nodesCount) ] - + # def read_blocks(reader : EndianBinaryReader, blocksStream): def decompress_block(blockInfo): switch = blockInfo.flags & 0x3F # kStorageBlockCompressionTypeMask @@ -144,17 +144,17 @@ def decompress_block(blockInfo): # elif switch == 4: #LZHAM: else: # no compression return reader.read_bytes(blockInfo.uncompressedSize) - + if m_BlocksInfo: self._block_info_flags = m_BlocksInfo[0].flags - + blocksReader = EndianBinaryReader( b"".join(decompress_block(blockInfo) for blockInfo in m_BlocksInfo), offset=(blocksInfoReader.real_offset()) ) return m_DirectoryInfo, blocksReader - + def save(self, packer=None): """ @@ -174,12 +174,12 @@ def save(self, packer=None): # version_player (string_to_null) # version_engine (string_to_null) writer = EndianBinaryWriter() - + writer.write_string_to_null(self.signature) writer.write_u_int(self.version) writer.write_string_to_null(self.version_player) writer.write_string_to_null(self.version_engine) - + if self.signature == "UnityArchive": raise NotImplemented("BundleFile - UnityArchive") elif self.signature in ["UnityWeb", "UnityRaw"]: @@ -197,23 +197,23 @@ def save(self, packer=None): else: raise NotImplemented("UnityFS - Packer:", packer) return writer.bytes - + def save_fs(self, writer: EndianBinaryWriter, block_info_flag : int, data_flag : int): # header # compressed blockinfo (block details & directionary) # compressed assets - + # 0b1000000 / 0b11000000 | 64 / 192 - uncompressed # 0b11000010 | 194 - lz4 # block_info_flag - + # 0 / 0b1000000 | 0 / 64 - uncompressed # 0b1 | 1 - lzma # 0b10 | 2 - lz4 # 0b11 | 3 - lz4hc [not implemented] # 0b100 | 4 - lzham [not implemented] # data_flag - + # header: # bundle_size (long) # compressed_size (int) @@ -222,7 +222,7 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag : int, data_flag : # ?padding? (bool) # This will be written at the end, # because the size can only be calculated after the data compression, - + # block_info: # *flag & 0x80 ? at the end : right after header # *decompression via flag & 0x3F @@ -236,7 +236,7 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag : int, data_flag : # flag(short) # ) # *decompression via info.flag & 0x3F - + # *afterwards the file positions # file_count (int) # ( @@ -245,7 +245,7 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag : int, data_flag : # flag (int) # name (string_to_null) # ) - + # file list & file data # prep nodes and build up block data data_writer = EndianBinaryWriter() @@ -259,11 +259,11 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag : int, data_flag : ) for name, f in self.files.items() ] - + file_data = data_writer.bytes data_writer.dispose() uncompressed_data_size = len(file_data) - + # compress the data switch = data_flag & 0x3F if switch == 1: # LZMA @@ -274,7 +274,7 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag : int, data_flag : raise NotImplementedError # else no compression - data stays the same compressed_data_size = len(file_data) - + # write the block_info # uncompressedDataHash block_writer = EndianBinaryWriter(b"\x00" * 0x10) @@ -287,7 +287,7 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag : int, data_flag : block_writer.write_u_int(compressed_data_size) # flag block_writer.write_u_short(data_flag) - + # file block info # file count block_writer.write_int(len(files)) @@ -302,13 +302,13 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag : int, data_flag : block_writer.write_u_int(f_flag) # name block_writer.write_string_to_null(f_name) - + # compress the block data block_data = block_writer.bytes block_writer.dispose() - + uncompressed_block_data_size = len(block_data) - + switch = block_info_flag & 0x3F if switch == 1: # LZMA block_data = CompressionHelper.compress_lzma(block_data) @@ -316,9 +316,9 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag : int, data_flag : block_data = CompressionHelper.compress_lz4(block_data) elif switch == 4: # LZHAM raise NotImplementedError - + compressed_block_data_size = len(block_data) - + # write the header info ## file size writer.write_long( @@ -337,7 +337,7 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag : int, data_flag : writer.write_u_int(uncompressed_block_data_size) # compression flag writer.write_u_int(block_info_flag) - + if self.version >= 7: # UnityFS\x00 - 8 # size 8 @@ -345,7 +345,7 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag : int, data_flag : # flag 4 # sum : 28 -> +8 alignment writer.align_stream(16) - + if (block_info_flag & 0x80) != 0: # at end of file writer.write(file_data) writer.write(block_data) diff --git a/UnityPy/files/File.py b/UnityPy/files/File.py index 9adb480b..59e6a727 100644 --- a/UnityPy/files/File.py +++ b/UnityPy/files/File.py @@ -3,6 +3,7 @@ from ..streams import EndianBinaryReader, EndianBinaryWriter from collections import namedtuple +from os.path import basename DirectoryInfo = namedtuple("DirectoryInfo", "path offset size") @@ -17,11 +18,12 @@ class File(object): # parent: File - def __init__(self, parent=None): + def __init__(self, parent=None, name=None): self.files = {} self.is_changed = False self.cab_file = "CAB-UnityPy_Mod.resS" self.parent = parent + self.name = basename(name) if isinstance(name, str) else '' def get_assets(self): if isinstance(self, SerializedFile.SerializedFile): @@ -34,6 +36,19 @@ def get_assets(self): elif isinstance(f, SerializedFile.SerializedFile): yield f + def get_filtered_objects(self, obj_types=[]): + if len(obj_types) == 0: + return self.get_objects() + for f in self.files.values(): + if isinstance(f, (BundleFile.BundleFile, WebFile.WebFile)): + for obj in f.objects: + if obj.type in obj_types: + yield obj + elif isinstance(f, SerializedFile.SerializedFile): + for obj in f.objects.values(): + if obj.type in obj_types: + yield obj + def get_objects(self): for f in self.files.values(): if isinstance(f, (BundleFile.BundleFile, WebFile.WebFile)): @@ -55,15 +70,15 @@ def read_files(self, reader: EndianBinaryReader, files: list): # f._flag = getattr(node, "flags", None) # required for save typ, _ = ImportHelper.check_file_type(f) if typ == FileType.BundleFile: - f = BundleFile.BundleFile(f, self) + f = BundleFile.BundleFile(f, self, name=name) elif typ == FileType.WebFile: - f = WebFile.WebFile(f, self) + f = WebFile.WebFile(f, self, name=name) elif typ == FileType.AssetsFile: # pre-check if resource file if not name.endswith((".resS", ".resource", ".config", ".xml", ".dat")): # try to load the file as serialized file try: - f = SerializedFile.SerializedFile(f, self) + f = SerializedFile.SerializedFile(f, self, name=name) except ValueError: pass # required for BundleFiles @@ -123,8 +138,11 @@ def __repr__(self): return f"<{self.__class__.__name__}>" def mark_changed(self): + if isinstance(self.parent, File): + self.parent.mark_changed() self.is_changed = True # recursive import requires the import down here from . import BundleFile, SerializedFile, WebFile, ObjectReader + diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index 3e40e26c..6bcd280f 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -200,13 +200,12 @@ def dump_typetree_structure(self) -> str: def read_typetree(self, nodes: list = None) -> dict: self.reset() + tree = {} if nodes: tree = TypeTreeHelper.read_typetree(nodes, self) - elif getattr(self.serialized_type, "nodes", None): + elif self.serialized_type.nodes: tree = TypeTreeHelper.read_typetree( self.serialized_type.nodes, self) - else: - tree = {} return tree def save_typetree(self, tree: dict, nodes: list = None, writer: EndianBinaryWriter = None): @@ -218,7 +217,7 @@ def save_typetree(self, tree: dict, nodes: list = None, writer: EndianBinaryWrit TypeTreeHelper.write_typetree( tree, self.serialized_type.nodes, writer) else: - raise ValueError("There are no typetree nodes for this object.") + raise ValueError("There are no TypeTree nodes for this object.") data = writer.bytes self.set_raw_data(data) return data @@ -232,3 +231,6 @@ def get_raw_data(self) -> bytes: def set_raw_data(self, data): self.data = data + if self.assets_file: + self.assets_file.mark_changed() + diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index c0373b2a..4620ecdf 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -75,7 +75,7 @@ def write(self, header: SerializedFileHeader, writer: EndianBinaryWriter): writer.write_string_to_null(self.path) -class TypeTreeNode: +class TypeTreeNode(dict): type: str name: str byte_size: int @@ -187,11 +187,16 @@ class SerializedFile(File.File): @property def files(self): - return self.objects + if self.objects: + return self.objects + return {} - def __init__(self, reader: EndianBinaryReader, parent=None): - self.is_changed = False - self.parent = parent + @files.setter + def files(self, value): + self.objects = value + + def __init__(self, reader: EndianBinaryReader, parent=None, name=None): + super().__init__(parent=parent, name=name) self.reader = reader self.unity_version = "2.5.0f5" @@ -303,11 +308,6 @@ def set_version(self, string_version): version_split = re.split(r"\D", string_version) self.version = tuple(int(x) for x in version_split) - def mark_changed(self): - self.is_changed = True - if self.parent: - self.parent.mark_changed() - def read_type_tree(self, type_tree): level_stack = [[0,1]] while level_stack: @@ -316,7 +316,7 @@ def read_type_tree(self, type_tree): level_stack.pop() else: level_stack[-1][1] -= 1 - + type_tree_node = TypeTreeNode() type_tree.append(type_tree_node) type_tree_node.level = level @@ -338,7 +338,7 @@ def read_type_tree(self, type_tree): if children_count: level_stack.append([level+1, children_count]) return type_tree - + def read_type_tree_blob(self, type_tree): reader = self.reader @@ -371,7 +371,7 @@ def read_type_tree_blob(self, type_tree): def get_writeable_cab(self, name: str = "CAB-UnityPy_Mod.resS"): """ Creates a new cab file in the bundle that contains the given data. - This is usefull for asset types that use resource files. + This is usefull for asset types that use resource files. """ if not isinstance(self.parent, (File.BundleFile.BundleFile, File.WebFile.WebFile)): return None @@ -395,7 +395,7 @@ class FileIdentifierFake: return cab - def save(self) -> bytes: + def save(self, packer: str=None) -> bytes: # 1. header -> has to be delayed until the very end # 2. data -> types, objects, scripts, ... @@ -607,3 +607,4 @@ def read_string(string_buffer_reader: EndianBinaryReader, value: int) -> str: return CommonString[offset] return str(offset) + diff --git a/UnityPy/files/WebFile.py b/UnityPy/files/WebFile.py index eec3e72a..d0d48386 100644 --- a/UnityPy/files/WebFile.py +++ b/UnityPy/files/WebFile.py @@ -10,10 +10,10 @@ class WebFile(File.File): files -- list of all files in the WebFile """ - def __init__(self, reader: EndianBinaryReader, parent: File): + def __init__(self, reader: EndianBinaryReader, parent: File, name=None): """Constructor Method """ - super().__init__(parent=parent) + super().__init__(parent=parent, name=name) # check compression magic = reader.read_bytes(2) @@ -114,3 +114,4 @@ def save( return CompressionHelper.compress_brotli(writer.bytes) else: return writer.bytes + diff --git a/UnityPy/helpers/ResourceReader.py b/UnityPy/helpers/ResourceReader.py index 669883b2..be0cae4a 100644 --- a/UnityPy/helpers/ResourceReader.py +++ b/UnityPy/helpers/ResourceReader.py @@ -15,7 +15,7 @@ def get_resource_data(*args): 0 - reader - EndianBinaryReader 1 - offset - 2 - size - - + -> -2 = offset, -1 = size """ if len(args) == 4: @@ -24,7 +24,7 @@ def get_resource_data(*args): reader = args[0] else: raise TypeError(f"3 or 4 arguments required, but only {len(args)} given") - + reader.Position = args[-2] return reader.read_bytes(args[-1]) @@ -36,7 +36,7 @@ def search_resource(res_path, assets_file): base_name2 = base_name.replace('.resource', '.assets.resS') else: base_name2 = base_name.replace('.assets.resS', '.resource') - + for p in [res_path, base_name, base_name2]: reader = assets_file.parent.files.get(p) if reader: @@ -44,7 +44,7 @@ def search_resource(res_path, assets_file): # in case the import helper accidentally detected a resource file as something else reader = reader.reader return reader - + # try to find it in the dir environment c = assets_file path = getattr(assets_file, "path", None) @@ -61,7 +61,7 @@ def search_resource(res_path, assets_file): resource_file_path = search_resource_file(current_directory, base_name) if not os.path.isfile(resource_file_path): resource_file_path = search_resource_file(current_directory, base_name.replace('.assets.resS', '.resource')) - + if os.path.isfile(resource_file_path): return EndianBinaryReader(open(resource_file_path, "rb")) else: @@ -71,6 +71,7 @@ def search_resource(res_path, assets_file): def search_resource_file(path, name): - print("real file", path, name) + #print("real file", path, name) files = glob.glob(os.path.join(path, "**", name), recursive=True) return files[0] if len(files) else "" + diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index b22aaa67..82636f1f 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -3,7 +3,28 @@ from ctypes import c_uint32 import base64 import tabulate - +from ..exceptions import TypeTreeError as TypeTreeError + +''' +Example Nodes: +[{ + "level": 0, + "type": "MonoBehaviour", + "name": "Base", + "meta_flag": 0 +}, +{ + "level": 1, + "type": "int", + "name": "m_SomeNode", + "meta_flag": 0 +}] + +Example TypeTree: +{ + "m_SomeNode": 1 +} +''' def get_nodes(nodes: list, index: int) -> list: '''Copies all nodes above the level of the node at the set index. @@ -45,8 +66,10 @@ def read_typetree(nodes: list, reader: EndianBinaryReader) -> dict: The parsed typtree ''' # reader.reset() - if isinstance(nodes[0], dict): + if isinstance(nodes, list) and isinstance(nodes[0], dict): nodes = node_dict_to_class(nodes) + else: + raise ValueError("nodes must be a list() of dict()-type elements") obj = {} i = c_uint32(1) @@ -57,8 +80,8 @@ def read_typetree(nodes: list, reader: EndianBinaryReader) -> dict: readed = reader.Position - reader.byte_start if readed != reader.byte_size: - print( - f"Error while read type, read {readed} bytes but expected {reader.byte_size} bytes") + raise TypeTreeError( + f"Error while read type, read {readed} bytes but expected {reader.byte_size} bytes", nodes) return obj @@ -154,8 +177,10 @@ def read_typetree_str(sb: list, nodes: list, reader: EndianBinaryReader) -> list The sb given as input ''' # reader.reset() - if isinstance(nodes[0], dict): + if isinstance(nodes, list) and isinstance(nodes[0], dict): nodes = node_dict_to_class(nodes) + else: + raise ValueError("nodes must be a list() of dict()-type elements") i = c_uint32(0) while i.value < len(nodes): @@ -164,8 +189,8 @@ def read_typetree_str(sb: list, nodes: list, reader: EndianBinaryReader) -> list readed = reader.Position - reader.byte_start if readed != reader.byte_size: - print( - f"Error while read type, read {readed} bytes but expected {reader.byte_size} bytes") + raise TypeTreeError( + f"Error while read type, read {readed} bytes but expected {reader.byte_size} bytes", nodes) return sb @@ -319,10 +344,12 @@ def write_typetree(obj: dict, nodes: list, writer: EndianBinaryWriter = None) -> ''' if not writer: writer = EndianBinaryWriter() - - if isinstance(nodes[0], dict): + + if isinstance(nodes, list) and isinstance(nodes[0], dict): nodes = node_dict_to_class(nodes) - + else: + raise ValueError("nodes must be a list() of dict()-type elements") + i = c_uint32(1) while i.value < len(nodes): value = obj[nodes[i.value].name] @@ -401,9 +428,10 @@ def write_value(value, nodes: list, writer: EndianBinaryWriter, i: c_uint32): if align: writer.align_stream() +class FakeNode: + def __init__(self, data) -> None: + self.__dict__ = data + def node_dict_to_class(nodes: list): - class Fake: - def __init__(self, data) -> None: - self.__dict__ = data - - return [Fake(node) for node in nodes] \ No newline at end of file + return [FakeNode(node) for node in nodes] + diff --git a/UnityPy/streams/EndianBinaryReader.py b/UnityPy/streams/EndianBinaryReader.py index 89226fac..98125815 100644 --- a/UnityPy/streams/EndianBinaryReader.py +++ b/UnityPy/streams/EndianBinaryReader.py @@ -176,6 +176,10 @@ def real_offset(self): """ return self.BaseOffset + self.Position + def read_the_rest(self, obj_start, obj_size): + """ Returns the rest of the current reader bytes.""" + return self.read_bytes(obj_size - (self.Position - obj_start)) + class EndianBinaryReader_Memoryview(EndianBinaryReader): view: memoryview @@ -241,3 +245,4 @@ def read(self, length: int): if not length: return b"" return self.stream.read(length) + From b7834094d04eb1b7f2dce84d53efd58f243a9b6b Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 13 Oct 2021 17:38:55 +0200 Subject: [PATCH 005/599] Push latest merged pull request to pypi --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 85769219..da7934a7 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.13" +__version__ = "1.7.14" from .environment import Environment From b7d2c153b7c4c5fe931452ccf33ed849fe64f8f7 Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Fri, 15 Oct 2021 13:03:31 +0200 Subject: [PATCH 006/599] merge TypeTreeNode and FakeNode fix .type issue of FakeNode --- UnityPy/files/SerializedFile.py | 59 +++----- UnityPy/helpers/TypeTreeHelper.py | 226 ++++++++++++++++++------------ 2 files changed, 162 insertions(+), 123 deletions(-) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 4620ecdf..b147c86f 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -5,6 +5,7 @@ from . import File, ObjectReader from ..enums import BuildTarget, ClassIDType, CommonString from ..streams import EndianBinaryReader, EndianBinaryWriter +from ..helpers.TypeTreeHelper import TypeTreeNode RECURSION_LIMIT = sys.getrecursionlimit() @@ -75,22 +76,6 @@ def write(self, header: SerializedFileHeader, writer: EndianBinaryWriter): writer.write_string_to_null(self.path) -class TypeTreeNode(dict): - type: str - name: str - byte_size: int - index: int - is_array: int - version: int - meta_flag: int - level: int - type_str_offset: int - name_str_offset: int - - def __repr__(self): - return f"" - - class BuildType: build_type: str @@ -126,7 +111,7 @@ def __init__(self, reader, serialized_file): if version >= 13: if (version < 16 and self.class_id < 0) or ( - version >= 16 and self.class_id == 114 + version >= 16 and self.class_id == 114 ): self.script_id = reader.read_bytes(16) # Hash128 self.old_type_hash = reader.read_bytes(16) # Hash128 @@ -134,8 +119,7 @@ def __init__(self, reader, serialized_file): if serialized_file._enable_type_tree: type_tree = [] if version >= 12 or version == 10: - self.string_data = serialized_file.read_type_tree_blob( - type_tree) + self.string_data = serialized_file.read_type_tree_blob(type_tree) else: serialized_file.read_type_tree(type_tree) @@ -156,15 +140,14 @@ def write(self, serialized_file, writer): if version >= 13: if (version < 16 and self.class_id < 0) or ( - version >= 16 and self.class_id == 114 + version >= 16 and self.class_id == 114 ): writer.write_bytes(self.script_id) # Hash128 writer.write_bytes(self.old_type_hash) # Hash128 if serialized_file._enable_type_tree: if version >= 12 or version == 10: - serialized_file.save_type_tree5( - self.nodes, writer, self.string_data) + serialized_file.save_type_tree5(self.nodes, writer, self.string_data) else: serialized_file.save_type_tree(self.nodes, writer) @@ -309,7 +292,7 @@ def set_version(self, string_version): self.version = tuple(int(x) for x in version_split) def read_type_tree(self, type_tree): - level_stack = [[0,1]] + level_stack = [[0, 1]] while level_stack: level, count = level_stack[-1] if count == 1: @@ -336,10 +319,9 @@ def read_type_tree(self, type_tree): children_count = self.reader.read_int() if children_count: - level_stack.append([level+1, children_count]) + level_stack.append([level + 1, children_count]) return type_tree - def read_type_tree_blob(self, type_tree): reader = self.reader number_of_nodes = self.reader.read_int() @@ -361,7 +343,8 @@ def read_type_tree_blob(self, type_tree): node.ref_type_hash = reader.read_u_long() string_buffer_reader = EndianBinaryReader( - reader.read(string_buffer_size), reader.endian) + reader.read(string_buffer_size), reader.endian + ) for node in type_tree: node.type = read_string(string_buffer_reader, node.type_str_offset) node.name = read_string(string_buffer_reader, node.name_str_offset) @@ -373,7 +356,9 @@ def get_writeable_cab(self, name: str = "CAB-UnityPy_Mod.resS"): Creates a new cab file in the bundle that contains the given data. This is usefull for asset types that use resource files. """ - if not isinstance(self.parent, (File.BundleFile.BundleFile, File.WebFile.WebFile)): + if not isinstance( + self.parent, (File.BundleFile.BundleFile, File.WebFile.WebFile) + ): return None cab = self.parent.get_writeable_cab(name) @@ -382,20 +367,20 @@ def get_writeable_cab(self, name: str = "CAB-UnityPy_Mod.resS"): # register as external class FileIdentifierFake: pass + file_identifier = FileIdentifierFake() file_identifier.__class__ = FileIdentifier file_identifier.temp_empty = "" import uuid + file_identifier.guid = uuid.uuid1().urn[-16:].encode("ascii") file_identifier.path = cab.path file_identifier.type = 0 - self.externals.append( - file_identifier - ) + self.externals.append(file_identifier) return cab - def save(self, packer: str=None) -> bytes: + def save(self, packer: str = None) -> bytes: # 1. header -> has to be delayed until the very end # 2. data -> types, objects, scripts, ... @@ -499,10 +484,10 @@ def save(self, packer: str=None) -> bytes: return writer.bytes def save_serialized_type( - self, - typ: SerializedType, - header: SerializedFileHeader, - writer: EndianBinaryWriter, + self, + typ: SerializedType, + header: SerializedFileHeader, + writer: EndianBinaryWriter, ): writer.write_int(typ.class_id) @@ -514,7 +499,7 @@ def save_serialized_type( if header.version >= 13: if (header.version < 16 and typ.class_id < 0) or ( - header.version >= 16 and typ.class_id == 114 + header.version >= 16 and typ.class_id == 114 ): writer.write_bytes(typ.script_id) # Hash128 writer.write_bytes(typ.old_type_hash) # Hash128 @@ -543,7 +528,7 @@ def save_type_tree(self, nodes: list, writer: EndianBinaryWriter): # calc children count children_count = 0 - for node2 in nodes[i + 1:]: + for node2 in nodes[i + 1 :]: if node2.level == node.level: break if node2.level == node.level - 1: diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 82636f1f..fefba0c5 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -1,11 +1,72 @@ -from typing import Dict +from typing import Any, Dict, List, Union from UnityPy.streams import EndianBinaryReader, EndianBinaryWriter from ctypes import c_uint32 -import base64 import tabulate from ..exceptions import TypeTreeError as TypeTreeError -''' + +class TypeTreeNode(object): + type: str + name: str + byte_size: int + index: int + is_array: int + version: int + meta_flag: int + level: int + type_str_offset: int + name_str_offset: int + + def __init__(self, data: dict = None): + if data: + self.__dict__.update(data) + + def __repr__(self): + return f"" + + +def node_dict_to_class(nodes: List[dict]) -> List[TypeTreeNode]: + """Converts all dict-type nodes into TypeTreeNodes + + Parameters + ---------- + nodes : List[dict] + nodes/nodes of the typetree as dict + + Returns + ------- + List[TypeTreeNode] + a list of TypeTreeNode-type nodes + """ + return [TypeTreeNode(node) for node in nodes] + + +def check_nodes(nodes: List[Union[dict, TypeTreeNode]]) -> List[TypeTreeNode]: + """Checks the type of the nodes and converts them if necessary. + + Parameters + ---------- + nodes : List[Union[dict, TypeTreeNode]] + nodes/nodes of the typetree as dict or TypeTreeNode + + Returns + ------- + List[TypeTreeNode] + a list of TypeTreeNode-type nodes + """ + if isinstance(nodes, list): + if len(nodes) == 0: + raise ValueError("not enough nodes") + if isinstance(nodes[0], TypeTreeNode): + return nodes + elif isinstance(nodes[0], dict): + return node_dict_to_class(nodes) + raise ValueError( + f"nodes must be a list of dict or TypeTreeNode elements, but received {type(nodes)} - {type(nodes[0]) if isinstance(nodes, list) else ''}" + ) + + +""" Example Nodes: [{ "level": 0, @@ -24,10 +85,11 @@ { "m_SomeNode": 1 } -''' +""" -def get_nodes(nodes: list, index: int) -> list: - '''Copies all nodes above the level of the node at the set index. + +def get_nodes(nodes: List[TypeTreeNode], index: int) -> list: + """Copies all nodes above the level of the node at the set index. Parameters ---------- @@ -40,18 +102,20 @@ def get_nodes(nodes: list, index: int) -> list: ------- list A list of nodes - ''' + """ nodes2 = [nodes[index]] level = nodes[index].level - for node in nodes[index+1:]: - if (node.level <= level): + for node in nodes[index + 1 :]: + if node.level <= level: return nodes2 nodes2.append(node) return nodes2 -def read_typetree(nodes: list, reader: EndianBinaryReader) -> dict: - '''Reads the typetree of the object contained in the reader via the node list. +def read_typetree( + nodes: List[Union[dict, TypeTreeNode]], reader: EndianBinaryReader +) -> dict: + """Reads the typetree of the object contained in the reader via the node list. Parameters ---------- @@ -64,12 +128,9 @@ def read_typetree(nodes: list, reader: EndianBinaryReader) -> dict: ------- dict The parsed typtree - ''' + """ # reader.reset() - if isinstance(nodes, list) and isinstance(nodes[0], dict): - nodes = node_dict_to_class(nodes) - else: - raise ValueError("nodes must be a list() of dict()-type elements") + nodes = check_nodes(nodes) obj = {} i = c_uint32(1) @@ -81,12 +142,14 @@ def read_typetree(nodes: list, reader: EndianBinaryReader) -> dict: readed = reader.Position - reader.byte_start if readed != reader.byte_size: raise TypeTreeError( - f"Error while read type, read {readed} bytes but expected {reader.byte_size} bytes", nodes) + f"Error while read type, read {readed} bytes but expected {reader.byte_size} bytes", + nodes, + ) return obj -def read_value(nodes: list, reader: EndianBinaryReader, i: c_uint32): +def read_value(nodes: List[TypeTreeNode], reader: EndianBinaryReader, i: c_uint32): node = nodes[i.value] typ = node.type align = (node.meta_flag & 0x4000) != 0 @@ -116,15 +179,15 @@ def read_value(nodes: list, reader: EndianBinaryReader, i: c_uint32): elif typ == "string": value = reader.read_aligned_string() i.value += 3 # Array, Size, Data(typ) - elif typ == "map": # map == MultiDict - if ((nodes[i.value + 1].meta_flag & 0x4000) != 0): + elif typ == "map": # map == MultiDict + if (nodes[i.value + 1].meta_flag & 0x4000) != 0: align = True map_ = get_nodes(nodes, i.value) i.value += len(map_) - 1 first = get_nodes(map_, 4) second = get_nodes(map_, 4 + len(first)) size = reader.read_int() - value = [None]*size + value = [None] * size for j in range(size): key = read_value(first, reader, c_uint32(0)) value[j] = (key, read_value(second, reader, c_uint32(0))) @@ -140,10 +203,7 @@ def read_value(nodes: list, reader: EndianBinaryReader, i: c_uint32): vector = get_nodes(nodes, i.value) i.value += len(vector) - 1 size = reader.read_int() - value = [ - read_value(vector, reader, c_uint32(3)) - for _ in range(size) - ] + value = [read_value(vector, reader, c_uint32(3)) for _ in range(size)] else: # Class clz = get_nodes(nodes, i.value) i.value += len(clz) - 1 @@ -159,8 +219,10 @@ def read_value(nodes: list, reader: EndianBinaryReader, i: c_uint32): return value -def read_typetree_str(sb: list, nodes: list, reader: EndianBinaryReader) -> list: - '''Reads the typetree of the object contained in the reader via the node list and dumps it as string. +def read_typetree_str( + sb: List[str], nodes: List[Union[dict, TypeTreeNode]], reader: EndianBinaryReader +) -> list: + """Reads the typetree of the object contained in the reader via the node list and dumps it as string. Parameters ---------- @@ -175,12 +237,9 @@ def read_typetree_str(sb: list, nodes: list, reader: EndianBinaryReader) -> list ------- list The sb given as input - ''' + """ # reader.reset() - if isinstance(nodes, list) and isinstance(nodes[0], dict): - nodes = node_dict_to_class(nodes) - else: - raise ValueError("nodes must be a list() of dict()-type elements") + nodes = check_nodes(nodes) i = c_uint32(0) while i.value < len(nodes): @@ -190,12 +249,16 @@ def read_typetree_str(sb: list, nodes: list, reader: EndianBinaryReader) -> list readed = reader.Position - reader.byte_start if readed != reader.byte_size: raise TypeTreeError( - f"Error while read type, read {readed} bytes but expected {reader.byte_size} bytes", nodes) + f"Error while read type, read {readed} bytes but expected {reader.byte_size} bytes", + nodes, + ) return sb -def read_value_str(sb: list, nodes: list, reader: EndianBinaryReader, i: c_uint32) -> list: +def read_value_str( + sb: List[str], nodes: List[TypeTreeNode], reader: EndianBinaryReader, i: c_uint32 +) -> list: node = nodes[i.value] typ = node.type align = (node.meta_flag & 0x4000) != 0 @@ -227,11 +290,13 @@ def read_value_str(sb: list, nodes: list, reader: EndianBinaryReader, i: c_uint3 value = reader.read_aligned_string() i.value += 3 # Array, Size, Data(typ) append = False - sb.append('{0}{1} {2} = "{3}"\r\n'.format( - "\t" * node.level, node.type, node.name, value - )) + sb.append( + '{0}{1} {2} = "{3}"\r\n'.format( + "\t" * node.level, node.type, node.name, value + ) + ) elif typ == "map": - if ((nodes[i.value + 1].meta_flag & 0x4000) != 0): + if (nodes[i.value + 1].meta_flag & 0x4000) != 0: align = True map_ = get_nodes(nodes, i.value) i.value += len(map_) - 1 @@ -239,16 +304,14 @@ def read_value_str(sb: list, nodes: list, reader: EndianBinaryReader, i: c_uint3 second = get_nodes(map_, 4 + len(first)) size = reader.read_int() append = False - sb.append("{0}{1} {2}\r\n".format( - "\t" * node.level, node.type, node.name)) - sb.append("{0}{1} {2}\r\n".format( - "\t" * (node.level + 1), "Array", "Array")) - sb.append("{0}{1} {2} = {3}\r\n".format( - "\t" * (node.level + 1), "int", "size", size)) + sb.append("{0}{1} {2}\r\n".format("\t" * node.level, node.type, node.name)) + sb.append("{0}{1} {2}\r\n".format("\t" * (node.level + 1), "Array", "Array")) + sb.append( + "{0}{1} {2} = {3}\r\n".format("\t" * (node.level + 1), "int", "size", size) + ) for j in range(size): sb.append("{0}[{1}]\r\n".format("\t" * (node.level + 2), j)) - sb.append("{0}{1} {2}\r\n".format( - "\t" * (node.level + 2), "pair", "data")) + sb.append("{0}{1} {2}\r\n".format("\t" * (node.level + 2), "pair", "data")) read_value_str(sb, first, reader, c_uint32(0)) read_value_str(sb, second, reader, c_uint32(0)) elif typ == "TypelessData": @@ -256,10 +319,8 @@ def read_value_str(sb: list, nodes: list, reader: EndianBinaryReader, i: c_uint3 value = reader.read_bytes(size) i.value += 2 # Size == int, Data(typ) == char/uint8 append = False - sb.append("{0}{1} {2}\r\n".format( - "\t" * node.level, node.type, node.name)) - sb.append("{0}{1} {2} = {3}\r\n".format( - "\t" * node.level, "int", "size", size)) + sb.append("{0}{1} {2}\r\n".format("\t" * node.level, node.type, node.name)) + sb.append("{0}{1} {2} = {3}\r\n".format("\t" * node.level, "int", "size", size)) # sb.append("{0}{1} {2} = {3}\r\n".format( # "\t" * node.level, "UInt8", "data", base64.b64encode(value))) else: @@ -271,12 +332,15 @@ def read_value_str(sb: list, nodes: list, reader: EndianBinaryReader, i: c_uint3 i.value += len(vector) - 1 size = reader.read_int() append = False - sb.append("{0}{1} {2}\r\n".format( - "\t" * node.level, node.type, node.name)) - sb.append("{0}{1} {2}\r\n".format( - "\t" * (node.level + 1), "Array", "Array")) - sb.append("{0}{1} {2} = {3}\r\n".format( - "\t" * (node.level + 1), "int", "size", size)) + sb.append("{0}{1} {2}\r\n".format("\t" * node.level, node.type, node.name)) + sb.append( + "{0}{1} {2}\r\n".format("\t" * (node.level + 1), "Array", "Array") + ) + sb.append( + "{0}{1} {2} = {3}\r\n".format( + "\t" * (node.level + 1), "int", "size", size + ) + ) for j in range(size): sb.append("{0}[{1}]\r\n".format("\t" * (node.level + 2), j)) read_value_str(sb, vector, reader, c_uint32(3)) @@ -286,24 +350,25 @@ def read_value_str(sb: list, nodes: list, reader: EndianBinaryReader, i: c_uint3 i.value += len(clz) - 1 j = c_uint32(1) append = False - sb.append("{0}{1} {2}\r\n".format( - "\t" * node.level, node.type, node.name)) + sb.append("{0}{1} {2}\r\n".format("\t" * node.level, node.type, node.name)) while j.value < len(clz): read_value_str(sb, clz, reader, j) j.value += 1 if append: - sb.append("{0}{1} {2} = {3}\r\n".format( - "\t" * node.level, node.type, node.name, value - )) + sb.append( + "{0}{1} {2} = {3}\r\n".format( + "\t" * node.level, node.type, node.name, value + ) + ) if align: reader.align_stream() return sb -def dump_typetree(nodes) -> str: - '''Dumps the structure of the given nodes. +def dump_typetree(nodes: List[TypeTreeNode]) -> str: + """Dumps the structure of the given nodes. Parameters ---------- @@ -314,19 +379,16 @@ def dump_typetree(nodes) -> str: ------- str The dumped structure - ''' + """ field_names = ["level", "type", "name", "meta_flag"] - rows = [ - [ - getattr(x, key) for key in field_names - ] - for x in nodes - ] + rows = [[getattr(x, key) for key in field_names] for x in nodes] return tabulate.tabulate(rows, headers=field_names) -def write_typetree(obj: dict, nodes: list, writer: EndianBinaryWriter = None) -> EndianBinaryWriter: - '''Writes the data of the object via the given typetree of the object into the writer. +def write_typetree( + obj: dict, nodes: List[Union[dict, TypeTreeNode]], writer: EndianBinaryWriter = None +) -> EndianBinaryWriter: + """Writes the data of the object via the given typetree of the object into the writer. Parameters ---------- @@ -341,14 +403,11 @@ def write_typetree(obj: dict, nodes: list, writer: EndianBinaryWriter = None) -> ------- EndianBinaryWriter The writer that was used to save the data of the given object. - ''' + """ if not writer: writer = EndianBinaryWriter() - if isinstance(nodes, list) and isinstance(nodes[0], dict): - nodes = node_dict_to_class(nodes) - else: - raise ValueError("nodes must be a list() of dict()-type elements") + nodes = check_nodes(nodes) i = c_uint32(1) while i.value < len(nodes): @@ -358,7 +417,9 @@ def write_typetree(obj: dict, nodes: list, writer: EndianBinaryWriter = None) -> return writer -def write_value(value, nodes: list, writer: EndianBinaryWriter, i: c_uint32): +def write_value( + value: Any, nodes: List[TypeTreeNode], writer: EndianBinaryWriter, i: c_uint32 +): node = nodes[i.value] typ = node.type align = (node.meta_flag & 0x4000) != 0 @@ -389,7 +450,7 @@ def write_value(value, nodes: list, writer: EndianBinaryWriter, i: c_uint32): writer.write_aligned_string(value) i.value += 3 # Array, Size, Data(typ) elif typ == "map": - if ((nodes[i.value + 1].meta_flag & 0x4000) != 0): + if (nodes[i.value + 1].meta_flag & 0x4000) != 0: align = True map_ = get_nodes(nodes, i.value) i.value += len(map_) - 1 @@ -428,10 +489,3 @@ def write_value(value, nodes: list, writer: EndianBinaryWriter, i: c_uint32): if align: writer.align_stream() -class FakeNode: - def __init__(self, data) -> None: - self.__dict__ = data - -def node_dict_to_class(nodes: list): - return [FakeNode(node) for node in nodes] - From 307aa4cd80624da1ce833187d8ebe82114451d3a Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Fri, 15 Oct 2021 13:05:14 +0200 Subject: [PATCH 007/599] 1.7.15 merged ProcessData into __init__ to remove hasattr --- UnityPy/__init__.py | 2 +- UnityPy/classes/Mesh.py | 219 ++++++++++++++++++++-------------------- 2 files changed, 110 insertions(+), 111 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index da7934a7..28d2f912 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.14" +__version__ = "1.7.15" from .environment import Environment diff --git a/UnityPy/classes/Mesh.py b/UnityPy/classes/Mesh.py index bcb8a490..82ca2e69 100644 --- a/UnityPy/classes/Mesh.py +++ b/UnityPy/classes/Mesh.py @@ -1,5 +1,4 @@ import math -import traceback from .AnimationClip import AABB, PackedFloatVector, PackedIntVector from .NamedObject import NamedObject @@ -123,8 +122,7 @@ def __init__(self, reader): if version >= (4,): # 4.0 and up m_ChannelsSize = reader.read_int() - self.m_Channels = [ChannelInfo(reader) - for _ in range(m_ChannelsSize)] + self.m_Channels = [ChannelInfo(reader) for _ in range(m_ChannelsSize)] if version < (5,): # 5.0 down if version < (4,): # 4.0 down @@ -132,8 +130,7 @@ def __init__(self, reader): else: m_StreamsSize = reader.read_int() - self.m_Streams = [StreamInfo(reader=reader) - for _ in range(m_StreamsSize)] + self.m_Streams = [StreamInfo(reader=reader) for _ in range(m_StreamsSize)] if version < (4,): # 4.0 down self.GetChannels() @@ -186,8 +183,7 @@ def GetStreams(self): if m_Channel.dimension > 0: chnMask |= 1 << chn # Shift 1UInt << chn stride += m_Channel.dimension * MeshHelper.GetFormatSize( - self.reader.version, - m_Channel.format + self.reader.version, m_Channel.format ) self.m_Streams[s] = StreamInfo( channelMask=chnMask, @@ -294,13 +290,11 @@ def __init__(self, reader): self.shapes = [MeshBlendShape(reader) for _ in range(numShapes)] numChannels = reader.read_int() - self.channels = [MeshBlendShapeChannel( - reader) for _ in range(numChannels)] + self.channels = [MeshBlendShapeChannel(reader) for _ in range(numChannels)] self.fullWeights = reader.read_float_array() else: m_ShapesSize = reader.read_int() - self.m_Shapes = [MeshBlendShape(reader) - for _ in range(m_ShapesSize)] + self.m_Shapes = [MeshBlendShape(reader) for _ in range(m_ShapesSize)] reader.align_stream() m_ShapeVerticesSize = reader.read_int() self.m_ShapeVertices = [ @@ -344,7 +338,6 @@ def save(self, writer, version): class Mesh(NamedObject): - def export(self): return export_mesh(self) @@ -384,7 +377,8 @@ def __init__(self, reader): reader.align_stream() else: self.m_IndexBuffer = reader.read_u_int_array( - math.ceil(m_IndexBuffer_size / 4)) + math.ceil(m_IndexBuffer_size / 4) + ) m_SubMeshesSize = reader.read_int() self.m_SubMeshes = [SubMesh(reader) for _ in range(m_SubMeshesSize)] @@ -400,8 +394,7 @@ def __init__(self, reader): if version >= (2, 6): # 2.6.0 and up if version >= (2019,): # 2019 and up m_BonesAABBSize = reader.read_int() - self.m_BonesAABB = [MinMaxAABB(reader) - for _ in range(m_BonesAABBSize)] + self.m_BonesAABB = [MinMaxAABB(reader) for _ in range(m_BonesAABBSize)] self.m_VariableBoneCountWeights = reader.read_u_int_array() self.m_MeshCompression = reader.read_byte() @@ -415,11 +408,13 @@ def __init__(self, reader): # Unity fixed it in 2017.3.1p1 and later versions if ( - version >= (2017, 4) # 2017.4 - # fixed after 2017.3.1px - or version[:3] == (2017, 3, 1) and self.build_type.IsPatch - # 2017.3.xfx with no compression - or version[:2] == (2017, 3) and self.m_MeshCompression == 0 + version >= (2017, 4) # 2017.4 + # fixed after 2017.3.1px + or version[:3] == (2017, 3, 1) + and self.build_type.IsPatch + # 2017.3.xfx with no compression + or version[:2] == (2017, 3) + and self.m_MeshCompression == 0 ): self.m_IndexFormat = reader.read_int() self.m_Use16BitIndices = self.m_IndexFormat == 0 @@ -427,27 +422,25 @@ def __init__(self, reader): m_IndexBuffer_size = reader.read_int() if self.m_Use16BitIndices: self.m_IndexBuffer = [ - reader.read_u_short() for _ in range(math.ceil(m_IndexBuffer_size / 2)) + reader.read_u_short() + for _ in range(math.ceil(m_IndexBuffer_size / 2)) ] reader.align_stream() else: self.m_IndexBuffer = reader.read_u_int_array( - math.ceil(m_IndexBuffer_size / 4)) + math.ceil(m_IndexBuffer_size / 4) + ) if version < (3, 5): # 3.4.2 and earlier self.m_VertexCount = reader.read_int() - self.m_Vertices = reader.read_float_array( - self.m_VertexCount * 3) # Vector3 + self.m_Vertices = reader.read_float_array(self.m_VertexCount * 3) # Vector3 self.m_SkinSize = reader.read_int() - self.m_Skin = [BoneWeights4(reader) - for _ in range(self.m_SkinSize)] + self.m_Skin = [BoneWeights4(reader) for _ in range(self.m_SkinSize)] self.m_BindPose = reader.read_matrix_array() - self.m_UV0 = reader.read_float_array( - reader.read_int() * 2) # Vector2 - self.m_UV1 = reader.read_float_array( - reader.read_int() * 2) # Vector2 + self.m_UV0 = reader.read_float_array(reader.read_int() * 2) # Vector2 + self.m_UV1 = reader.read_float_array(reader.read_int() * 2) # Vector2 if version[:2] <= (2, 5): # 2.5 and down m_TangentSpace_size = reader.read_int() @@ -486,10 +479,7 @@ def __init__(self, reader): if version[:2] <= (3, 4): # 3.4.2 and earlier m_Colors_size = reader.read_int() - self.mColors = [ - reader.read_byte() / 0xFF - for _ in range(m_Colors_size * 4) - ] + self.mColors = [reader.read_byte() / 0xFF for _ in range(m_Colors_size * 4)] m_CollisionTriangles_size = reader.read_int() reader.Position += m_CollisionTriangles_size * 4 # UInt32 indices @@ -497,12 +487,9 @@ def __init__(self, reader): self.m_MeshUsageFlags = reader.read_int() if version >= (5,): # 5.0 and up - self.m_BakedConvexCollisionMesh = reader.read_bytes( - reader.read_int() - ) + self.m_BakedConvexCollisionMesh = reader.read_bytes(reader.read_int()) reader.align_stream() - self.m_BakedTriangleCollisionMesh = reader.read_bytes( - reader.read_int()) + self.m_BakedTriangleCollisionMesh = reader.read_bytes(reader.read_int()) reader.align_stream() if version >= (2018, 2): # 2018.2 and up @@ -512,25 +499,13 @@ def __init__(self, reader): reader.align_stream() self.m_StreamData = StreamingInfo(reader, version) - try: - self.ProcessData() - except Exception as e: - print(traceback.format_exc()) - pass - - def ProcessData(self): - # `m_StreamData` attribute may not exists for some assets - if hasattr(self, "m_StreamData"): - path = self.m_StreamData.path - else: - path = None - if path and self.m_VertexData.m_VertexCount > 0: - self.m_VertexData.m_DataSize = get_resource_data( - self.m_StreamData.path, - self.assets_file, - self.m_StreamData.offset, - self.m_StreamData.size, - ) + if self.m_StreamData.path and self.m_VertexData.m_VertexCount > 0: + self.m_VertexData.m_DataSize = get_resource_data( + self.m_StreamData.path, + self.assets_file, + self.m_StreamData.offset, + self.m_StreamData.size, + ) # Fix channel after 2018.3 version = self.version @@ -556,34 +531,50 @@ def ReadVertexData(self): m_Channel.dimension = 4 componentByteSize = MeshHelper.GetFormatSize( - version, m_Channel.format) + version, m_Channel.format + ) componentBytes = bytearray( - m_VertexCount * m_Channel.dimension * componentByteSize) + m_VertexCount * m_Channel.dimension * componentByteSize + ) for v in range(m_VertexCount): - vertexOffset = int( - m_Stream.offset) + m_Channel.offset + int(m_Stream.stride) * v + vertexOffset = ( + int(m_Stream.offset) + + m_Channel.offset + + int(m_Stream.stride) * v + ) for d in range(m_Channel.dimension): - componentOffsetSrc = vertexOffset + componentByteSize * d # src offset - componentOffsetDst = componentByteSize * \ - (v * m_Channel.dimension + d) # dst offst - - buff = m_VertexData.m_DataSize[componentOffsetSrc: - componentOffsetSrc + componentByteSize] - - if self.reader.endian == "<" and componentByteSize > 1: # swap bytes + componentOffsetSrc = ( + vertexOffset + componentByteSize * d + ) # src offset + componentOffsetDst = componentByteSize * ( + v * m_Channel.dimension + d + ) # dst offst + + buff = m_VertexData.m_DataSize[ + componentOffsetSrc : componentOffsetSrc + + componentByteSize + ] + + if ( + self.reader.endian == "<" and componentByteSize > 1 + ): # swap bytes buff = buff[::-1] - componentBytes[componentOffsetDst: componentOffsetDst + - componentByteSize] = buff + componentBytes[ + componentOffsetDst : componentOffsetDst + + componentByteSize + ] = buff # Buffer.BlockCopy(m_VertexData.m_DataSize, componentOffset, componentBytes, componentByteSize * (v * m_Channel.dimension + d), componentByteSize); # (Array src, int srcOffset, Array dst, int dstOffset, int count); if MeshHelper.IsIntFormat(version, m_Channel.format): componentsIntArray = MeshHelper.BytesToIntArray( - componentBytes, componentByteSize) + componentBytes, componentByteSize + ) else: componentsFloatArray = MeshHelper.BytesToFloatArray( - componentBytes, componentByteSize) + componentBytes, componentByteSize + ) if version[0] >= 2018: if chn == 0: # kShaderChannelVertex @@ -616,15 +607,17 @@ def ReadVertexData(self): self.InitMSkin() for i in range(m_VertexCount): for j in range(m_Channel.dimension): - self.m_Skin[i].weight[j] = componentsFloatArray[i * - m_Channel.dimension + j] + self.m_Skin[i].weight[j] = componentsFloatArray[ + i * m_Channel.dimension + j + ] elif chn == 13: # kShaderChannelBlendIndices if not self.m_Skin: self.InitMSkin() for i in range(m_VertexCount): for j in range(m_Channel.dimension): - self.m_Skin[i].boneIndex[j] = componentsIntArray[i * - m_Channel.dimension + j] + self.m_Skin[i].boneIndex[j] = componentsIntArray[ + i * m_Channel.dimension + j + ] else: if chn == 0: # kShaderChannelVertex self.m_Vertices = componentsFloatArray @@ -651,10 +644,8 @@ def DecompressCompressedMesh(self): version = self.version m_CompressedMesh = self.m_CompressedMesh if m_CompressedMesh.m_Vertices.m_NumItems > 0: - self.m_VertexCount = int( - m_CompressedMesh.m_Vertices.m_NumItems / 3) - self.m_Vertices = m_CompressedMesh.m_Vertices.UnpackFloats( - 3, 3 * 4) + self.m_VertexCount = int(m_CompressedMesh.m_Vertices.m_NumItems / 3) + self.m_Vertices = m_CompressedMesh.m_Vertices.UnpackFloats(3, 3 * 4) m_VertexCount = self.m_VertexCount # UV if m_CompressedMesh.m_UV.m_NumItems > 0: # @@ -674,11 +665,13 @@ def DecompressCompressedMesh(self): if (texCoordBits & kUVChannelExists) != 0: uvDim = 1 + int(texCoordBits & kUVDimensionMask) m_UV = m_CompressedMesh.m_UV.UnpackFloats( - uvDim, uvDim * 4, uvSrcOffset, self.m_VertexCount) + uvDim, uvDim * 4, uvSrcOffset, self.m_VertexCount + ) self.SetUV(uv, m_UV) else: self.m_UV0 = m_CompressedMesh.m_UV.UnpackFloats( - 2, 2*4, 0, m_VertexCount) + 2, 2 * 4, 0, m_VertexCount + ) if m_CompressedMesh.m_UV.m_NumItems >= m_VertexCount * 4: # self.m_UV1 = m_CompressedMesh.m_UV.UnpackFloats( 2, 2 * 4, m_VertexCount * 2, m_VertexCount @@ -691,7 +684,7 @@ def DecompressCompressedMesh(self): 16, 4 * 16 ) self.m_BindPose = [ - Matrix4x4(m_BindPoses_Unpacked[i: i + 16]) + Matrix4x4(m_BindPoses_Unpacked[i : i + 16]) for i in range(0, m_CompressedMesh.m_BindPoses.m_NumItems, 16) ] # Normal @@ -743,8 +736,7 @@ def DecompressCompressedMesh(self): # FloatColor if version >= (5,): # 5.0 and up if m_CompressedMesh.m_FloatColors.m_NumItems > 0: # - self.m_Colors = m_CompressedMesh.m_FloatColors.UnpackFloats( - 1, 4) + self.m_Colors = m_CompressedMesh.m_FloatColors.UnpackFloats(1, 4) # Skin if m_CompressedMesh.m_Weights.m_NumItems > 0: @@ -788,8 +780,8 @@ def DecompressCompressedMesh(self): self.m_IndexBuffer = m_CompressedMesh.m_Triangles.UnpackInts() # Color if ( - hasattr(m_CompressedMesh, "m_Colors") - and m_CompressedMesh.m_Colors.m_NumItems > 0 + hasattr(m_CompressedMesh, "m_Colors") + and m_CompressedMesh.m_Colors.m_NumItems > 0 ): m_CompressedMesh.m_Colors.m_NumItems *= 4 m_CompressedMesh.m_Colors.m_BitSize /= 4 @@ -809,42 +801,47 @@ def GetTriangles(self): topology = m_SubMesh.topology if topology == GfxPrimitiveType.kPrimitiveTriangles: m_Indices.extend( - m_IndexBuffer[firstIndex: firstIndex + indexCount * 3]) + m_IndexBuffer[firstIndex : firstIndex + indexCount * 3] + ) - elif self.version[0] < 4 or topology == GfxPrimitiveType.kPrimitiveTriangleStrip: + elif ( + self.version[0] < 4 + or topology == GfxPrimitiveType.kPrimitiveTriangleStrip + ): # de-stripify : triIndex = 0 for i in range(indexCount - 2): - a, b, c = m_IndexBuffer[firstIndex + i: firstIndex + i + 3] + a, b, c = m_IndexBuffer[firstIndex + i : firstIndex + i + 3] # skip degenerates if a == b or a == c or b == c: continue # do the winding flip-flop of strips : - m_Indices.extend( - [b, a, c] if ((i & 1) == 1) else [a, b, c] - ) + m_Indices.extend([b, a, c] if ((i & 1) == 1) else [a, b, c]) triIndex += 3 # fix indexCount m_SubMesh.indexCount = triIndex elif topology == GfxPrimitiveType.kPrimitiveQuads: for q in range(0, indexCount, 4): - m_Indices.extend([ - m_IndexBuffer[firstIndex + q], - m_IndexBuffer[firstIndex + q + 1], - m_IndexBuffer[firstIndex + q + 2], - m_IndexBuffer[firstIndex + q], - m_IndexBuffer[firstIndex + q + 2], - m_IndexBuffer[firstIndex + q + 3] - ]) + m_Indices.extend( + [ + m_IndexBuffer[firstIndex + q], + m_IndexBuffer[firstIndex + q + 1], + m_IndexBuffer[firstIndex + q + 2], + m_IndexBuffer[firstIndex + q], + m_IndexBuffer[firstIndex + q + 2], + m_IndexBuffer[firstIndex + q + 3], + ] + ) # fix indexCount m_SubMesh.indexCount = indexCount // 2 * 3 else: raise NotImplementedError( - "Failed getting triangles. Submesh topology is lines or points.") + "Failed getting triangles. Submesh topology is lines or points." + ) def InitMSkin(self): self.m_Skin = [BoneWeights4() for _ in range(self.m_VertexCount)] @@ -970,18 +967,20 @@ def IsIntFormat(version, format: int) -> bool: @staticmethod def BytesToFloatArray(inputBytes, size): return [ - inputBytes[i] / 255.0 if size == 1 else - struct.unpack(">e", inputBytes[i * 2: i * 2 + 2])[0] if size == 2 else - struct.unpack(">f", inputBytes[i * 4: i * 4 + 4])[0] if size == 4 else - 0 + inputBytes[i] / 255.0 + if size == 1 + else struct.unpack(">e", inputBytes[i * 2 : i * 2 + 2])[0] + if size == 2 + else struct.unpack(">f", inputBytes[i * 4 : i * 4 + 4])[0] + if size == 4 + else 0 for i in range(len(inputBytes) // size) ] @staticmethod def BytesToIntArray(inputBytes, size): return [ - int.from_bytes(inputBytes[i: i + size], - byteorder="big", signed=True) + int.from_bytes(inputBytes[i : i + size], byteorder="big", signed=True) for i in range(0, len(inputBytes), size) ] From 94dbebb3528d4d2325bc59efb2c3af6a545a823d Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 15 Oct 2021 13:29:41 +0200 Subject: [PATCH 008/599] Update python-package.yml --- .github/workflows/python-package.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 88425c25..0ff844cc 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -57,9 +57,10 @@ jobs: - name: Build manylinux Python wheels if: success() && runner.os == 'Linux' && github.event_name == 'push' - uses: RalfG/python-wheels-manylinux-build@v0.3.3-manylinux2010_x86_64 + uses: RalfG/python-wheels-manylinux-build@v0.3.4-manylinux2010_x86_64 with: python-versions: 'cp36-cp36m cp37-cp37m cp38-cp38 cp39-cp39' + system-packages: 'jpeg-dev zlib-dev' build-requirements: ${{ env.DEPENDENCIES }} - name: Publish wheels to PyPI From 2d76173c94adfada076e075aaf5d7eee11d700bb Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 15 Oct 2021 13:33:40 +0200 Subject: [PATCH 009/599] Update python-package.yml --- .github/workflows/python-package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 0ff844cc..bacdbc18 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -60,7 +60,7 @@ jobs: uses: RalfG/python-wheels-manylinux-build@v0.3.4-manylinux2010_x86_64 with: python-versions: 'cp36-cp36m cp37-cp37m cp38-cp38 cp39-cp39' - system-packages: 'jpeg-dev zlib-dev' + system-packages: 'jpeg-devel zlib-devel' build-requirements: ${{ env.DEPENDENCIES }} - name: Publish wheels to PyPI From d646e42a267a5384117ca76a5f4fb3e20ed29905 Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Fri, 15 Oct 2021 16:49:10 +0200 Subject: [PATCH 010/599] fixes #68 --- UnityPy/__init__.py | 2 +- UnityPy/files/SerializedFile.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 28d2f912..f3e1ae76 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.15" +__version__ = "1.7.16" from .environment import Environment diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index b147c86f..09da44af 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -339,7 +339,7 @@ def read_type_tree_blob(self, type_tree): node.index = reader.read_int() node.meta_flag = reader.read_int() - if self.header.version > 19: + if self.header.version >= 19: node.ref_type_hash = reader.read_u_long() string_buffer_reader = EndianBinaryReader( From 5f5f497267ef2e0143eb0235e7276c7c3bf8d1eb Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Fri, 15 Oct 2021 17:35:05 +0200 Subject: [PATCH 011/599] resolves #66 --- UnityPy/__init__.py | 2 +- UnityPy/export/MeshExporter.py | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index f3e1ae76..9492cb31 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.16" +__version__ = "1.7.17" from .environment import Environment diff --git a/UnityPy/export/MeshExporter.py b/UnityPy/export/MeshExporter.py index fa1e4187..461ffda9 100644 --- a/UnityPy/export/MeshExporter.py +++ b/UnityPy/export/MeshExporter.py @@ -14,8 +14,8 @@ def export_mesh(m_Mesh): c = 4 for v in range(int(m_Mesh.m_VertexCount)): - sb.append("v {0} {1} {2}\r\n".format( - -m_Mesh.m_Vertices[v * c], m_Mesh.m_Vertices[v * c + 1], m_Mesh.m_Vertices[v * c + 2])) + sb.append("v {0:.7G} {1:.7G} {2:.7G}\r\n".format( + -m_Mesh.m_Vertices[v * c], m_Mesh.m_Vertices[v * c + 1], m_Mesh.m_Vertices[v * c + 2]).replace("nan","0")) # endregion # region UV @@ -26,8 +26,8 @@ def export_mesh(m_Mesh): c = 3 for v in range(int(m_Mesh.m_VertexCount)): - sb.append("vt {0} {1}\r\n".format( - m_Mesh.m_UV0[v * c], m_Mesh.m_UV0[v * c + 1])) + sb.append("vt {0:.7G} {1:.7G}\r\n".format( + m_Mesh.m_UV0[v * c], m_Mesh.m_UV0[v * c + 1]).replace("nan","0")) # endregion # region Normals @@ -38,8 +38,8 @@ def export_mesh(m_Mesh): c = 4 for v in range(int(m_Mesh.m_VertexCount)): - sb.append("vn {0} {1} {2}\r\n".format( - -m_Mesh.m_Normals[v * c], m_Mesh.m_Normals[v * c + 1], m_Mesh.m_Normals[v * c + 2])) + sb.append("vn {0:.7G} {1:.7G} {2:.7G}\r\n".format( + -m_Mesh.m_Normals[v * c], m_Mesh.m_Normals[v * c + 1], m_Mesh.m_Normals[v * c + 2]).replace("nan","0")) # endregion # region Face @@ -56,5 +56,4 @@ def export_mesh(m_Mesh): ) sum = end # endregion - sb = re.sub(r"(\d+)e-(\d+)", r"\1E-\2", "".join(sb).replace("NaN", "0")) - return sb + return "".join(sb) From 0d99c51044b7928cff64cf7b631c3e27d340bbaa Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Fri, 15 Oct 2021 17:38:09 +0200 Subject: [PATCH 012/599] Mesh test-data updated --- tests/samples/xinzexi_2_n_tex_mesh | 2896 ++++++++++++++-------------- 1 file changed, 1448 insertions(+), 1448 deletions(-) diff --git a/tests/samples/xinzexi_2_n_tex_mesh b/tests/samples/xinzexi_2_n_tex_mesh index 831933e4..0a57a2ec 100644 --- a/tests/samples/xinzexi_2_n_tex_mesh +++ b/tests/samples/xinzexi_2_n_tex_mesh @@ -1,1452 +1,1452 @@ g xinzexi_2_n-mesh -v -1152.0 671.0 0.0 -v -1152.0 1343.0 0.0 -v -1440.0 1343.0 0.0 -v -1440.0 671.0 0.0 -v -1152.0 31.0 0.0 -v -1152.0 671.0 0.0 -v -1440.0 671.0 0.0 -v -1440.0 31.0 0.0 -v -832.0 607.0 0.0 -v -832.0 927.0 0.0 -v -1152.0 927.0 0.0 -v -1152.0 607.0 0.0 -v -512.0 607.0 0.0 -v -512.0 927.0 0.0 -v -832.0 927.0 0.0 -v -832.0 607.0 0.0 -v -64.0 319.0 0.0 -v -64.0 607.0 0.0 -v -384.0 607.0 0.0 -v -384.0 319.0 0.0 -v -384.0 319.0 0.0 -v -384.0 607.0 0.0 -v -672.0 607.0 0.0 -v -672.0 319.0 0.0 -v -960.0 927.0 0.0 -v -960.0 1215.0 0.0 -v -1152.0 1215.0 0.0 -v -1152.0 927.0 0.0 -v -960.0 1215.0 0.0 -v -960.0 1503.0 0.0 -v -1152.0 1503.0 0.0 -v -1152.0 1215.0 0.0 -v -1440.0 735.0 0.0 -v -1440.0 991.0 0.0 -v -1632.0 991.0 0.0 -v -1632.0 735.0 0.0 -v -1440.0 991.0 0.0 -v -1440.0 1247.0 0.0 -v -1632.0 1247.0 0.0 -v -1632.0 991.0 0.0 -v -704.0 223.0 0.0 -v -704.0 479.0 0.0 -v -832.0 479.0 0.0 -v -832.0 223.0 0.0 -v -1440.0 1247.0 0.0 -v -1440.0 1407.0 0.0 -v -1632.0 1407.0 0.0 -v -1632.0 1247.0 0.0 -v -1152.0 1343.0 0.0 -v -1152.0 1503.0 0.0 -v -1312.0 1503.0 0.0 -v -1312.0 1343.0 0.0 -v -1632.0 1663.0 0.0 -v -1632.0 2047.0 0.0 -v -1696.0 2047.0 0.0 -v -1696.0 1663.0 0.0 -v -1632.0 1311.0 0.0 -v -1632.0 1663.0 0.0 -v -1696.0 1663.0 0.0 -v -1696.0 1311.0 0.0 -v -992.0 1503.0 0.0 -v -992.0 1599.0 0.0 -v -1216.0 1599.0 0.0 -v -1216.0 1503.0 0.0 -v -1440.0 223.0 0.0 -v -1440.0 447.0 0.0 -v -1536.0 447.0 0.0 -v -1536.0 223.0 0.0 -v -800.0 479.0 0.0 -v -800.0 607.0 0.0 -v -960.0 607.0 0.0 -v -960.0 479.0 0.0 -v -800.0 927.0 0.0 -v -800.0 1055.0 0.0 -v -960.0 1055.0 0.0 -v -960.0 927.0 0.0 -v -1024.0 95.0 0.0 -v -1024.0 255.0 0.0 -v -1152.0 255.0 0.0 -v -1152.0 95.0 0.0 -v -1440.0 31.0 0.0 -v -1440.0 223.0 0.0 -v -1536.0 223.0 0.0 -v -1536.0 31.0 0.0 -v -192.0 191.0 0.0 -v -192.0 255.0 0.0 -v -448.0 255.0 0.0 -v -448.0 191.0 0.0 -v -448.0 191.0 0.0 -v -448.0 255.0 0.0 -v -704.0 255.0 0.0 -v -704.0 191.0 0.0 -v -832.0 1311.0 0.0 -v -832.0 1439.0 0.0 -v -928.0 1439.0 0.0 -v -928.0 1311.0 0.0 -v -800.0 1599.0 0.0 -v -800.0 1727.0 0.0 -v -896.0 1727.0 0.0 -v -896.0 1599.0 0.0 -v -1632.0 1055.0 0.0 -v -1632.0 1183.0 0.0 -v -1728.0 1183.0 0.0 -v -1728.0 1055.0 0.0 -v -256.0 607.0 0.0 -v -256.0 703.0 0.0 -v -384.0 703.0 0.0 -v -384.0 607.0 0.0 -v -1632.0 927.0 0.0 -v -1632.0 1055.0 0.0 -v -1728.0 1055.0 0.0 -v -1728.0 927.0 0.0 -v -384.0 607.0 0.0 -v -384.0 703.0 0.0 -v -512.0 703.0 0.0 -v -512.0 607.0 0.0 -v -1600.0 31.0 0.0 -v -1600.0 159.0 0.0 -v -1696.0 159.0 0.0 -v -1696.0 31.0 0.0 -v -1600.0 159.0 0.0 -v -1600.0 287.0 0.0 -v -1696.0 287.0 0.0 -v -1696.0 159.0 0.0 -v -1888.0 735.0 0.0 -v -1888.0 895.0 0.0 -v -1937.0 895.0 0.0 -v -1937.0 735.0 0.0 -v -1760.0 959.0 0.0 -v -1760.0 1055.0 0.0 -v -1856.0 1055.0 0.0 -v -1856.0 959.0 0.0 -v -896.0 1535.0 0.0 -v -896.0 1631.0 0.0 -v -992.0 1631.0 0.0 -v -992.0 1535.0 0.0 -v -128.0 287.0 0.0 -v -128.0 319.0 0.0 -v -416.0 319.0 0.0 -v -416.0 287.0 0.0 -v -416.0 287.0 0.0 -v -416.0 319.0 0.0 -v -704.0 319.0 0.0 -v -704.0 287.0 0.0 -v -1888.0 607.0 0.0 -v -1888.0 735.0 0.0 -v -1937.0 735.0 0.0 -v -1937.0 607.0 0.0 -v -1408.0 1503.0 0.0 -v -1408.0 1567.0 0.0 -v -1536.0 1567.0 0.0 -v -1536.0 1503.0 0.0 -v -1344.0 1407.0 0.0 -v -1344.0 1535.0 0.0 -v -1408.0 1535.0 0.0 -v -1408.0 1407.0 0.0 -v -0.0 415.0 0.0 -v -0.0 543.0 0.0 -v -64.0 543.0 0.0 -v -64.0 415.0 0.0 -v -1088.0 479.0 0.0 -v -1088.0 607.0 0.0 -v -1152.0 607.0 0.0 -v -1152.0 479.0 0.0 -v -1536.0 31.0 0.0 -v -1536.0 223.0 0.0 -v -1568.0 223.0 0.0 -v -1568.0 31.0 0.0 -v -1536.0 1503.0 0.0 -v -1536.0 1567.0 0.0 -v -1632.0 1567.0 0.0 -v -1632.0 1503.0 0.0 -v -1536.0 223.0 0.0 -v -1536.0 415.0 0.0 -v -1568.0 415.0 0.0 -v -1568.0 223.0 0.0 -v -1696.0 159.0 0.0 -v -1696.0 255.0 0.0 -v -1760.0 255.0 0.0 -v -1760.0 159.0 0.0 -v -768.0 1343.0 0.0 -v -768.0 1407.0 0.0 -v -832.0 1407.0 0.0 -v -832.0 1343.0 0.0 -v -448.0 831.0 0.0 -v -448.0 895.0 0.0 -v -512.0 895.0 0.0 -v -512.0 831.0 0.0 -v -1280.0 0.0 0.0 -v -1280.0 31.0 0.0 -v -1408.0 31.0 0.0 -v -1408.0 0.0 0.0 -v -1440.0 1439.0 0.0 -v -1440.0 1503.0 0.0 -v -1504.0 1503.0 0.0 -v -1504.0 1439.0 0.0 -v -1472.0 671.0 0.0 -v -1472.0 735.0 0.0 -v -1536.0 735.0 0.0 -v -1536.0 671.0 0.0 -v -1792.0 479.0 0.0 -v -1792.0 543.0 0.0 -v -1856.0 543.0 0.0 -v -1856.0 479.0 0.0 -v -320.0 703.0 0.0 -v -320.0 767.0 0.0 -v -384.0 767.0 0.0 -v -384.0 703.0 0.0 -v -448.0 703.0 0.0 -v -448.0 767.0 0.0 -v -512.0 767.0 0.0 -v -512.0 703.0 0.0 -v -1568.0 319.0 0.0 -v -1568.0 447.0 0.0 -v -1600.0 447.0 0.0 -v -1600.0 319.0 0.0 -v -1856.0 863.0 0.0 -v -1856.0 991.0 0.0 -v -1888.0 991.0 0.0 -v -1888.0 863.0 0.0 -v -1696.0 95.0 0.0 -v -1696.0 159.0 0.0 -v -1760.0 159.0 0.0 -v -1760.0 95.0 0.0 -v -1568.0 191.0 0.0 -v -1568.0 319.0 0.0 -v -1600.0 319.0 0.0 -v -1600.0 191.0 0.0 -v -160.0 255.0 0.0 -v -160.0 287.0 0.0 -v -288.0 287.0 0.0 -v -288.0 255.0 0.0 -v -832.0 351.0 0.0 -v -832.0 479.0 0.0 -v -864.0 479.0 0.0 -v -864.0 351.0 0.0 -v -288.0 255.0 0.0 -v -288.0 287.0 0.0 -v -416.0 287.0 0.0 -v -416.0 255.0 0.0 -v -672.0 383.0 0.0 -v -672.0 479.0 0.0 -v -704.0 479.0 0.0 -v -704.0 383.0 0.0 -v -1440.0 639.0 0.0 -v -1440.0 735.0 0.0 -v -1472.0 735.0 0.0 -v -1472.0 639.0 0.0 -v -928.0 1119.0 0.0 -v -928.0 1215.0 0.0 -v -960.0 1215.0 0.0 -v -960.0 1119.0 0.0 -v -1856.0 767.0 0.0 -v -1856.0 863.0 0.0 -v -1888.0 863.0 0.0 -v -1888.0 767.0 0.0 -v -1568.0 63.0 0.0 -v -1568.0 159.0 0.0 -v -1600.0 159.0 0.0 -v -1600.0 63.0 0.0 -v -832.0 255.0 0.0 -v -832.0 351.0 0.0 -v -864.0 351.0 0.0 -v -864.0 255.0 0.0 -v -1696.0 415.0 0.0 -v -1696.0 447.0 0.0 -v -1792.0 447.0 0.0 -v -1792.0 415.0 0.0 -v -512.0 255.0 0.0 -v -512.0 287.0 0.0 -v -608.0 287.0 0.0 -v -608.0 255.0 0.0 -v -704.0 927.0 0.0 -v -704.0 959.0 0.0 -v -800.0 959.0 0.0 -v -800.0 927.0 0.0 -v -1600.0 415.0 0.0 -v -1600.0 447.0 0.0 -v -1696.0 447.0 0.0 -v -1696.0 415.0 0.0 -v -608.0 927.0 0.0 -v -608.0 959.0 0.0 -v -704.0 959.0 0.0 -v -704.0 927.0 0.0 -v -1408.0 0.0 0.0 -v -1408.0 31.0 0.0 -v -1504.0 31.0 0.0 -v -1504.0 0.0 0.0 -v -1696.0 1791.0 0.0 -v -1696.0 1887.0 0.0 -v -1728.0 1887.0 0.0 -v -1728.0 1791.0 0.0 -v -1408.0 1407.0 0.0 -v -1408.0 1503.0 0.0 -v -1440.0 1503.0 0.0 -v -1440.0 1407.0 0.0 -v -608.0 255.0 0.0 -v -608.0 287.0 0.0 -v -704.0 287.0 0.0 -v -704.0 255.0 0.0 -v -1696.0 1887.0 0.0 -v -1696.0 1983.0 0.0 -v -1728.0 1983.0 0.0 -v -1728.0 1887.0 0.0 -v -1600.0 1599.0 0.0 -v -1600.0 1663.0 0.0 -v -1632.0 1663.0 0.0 -v -1632.0 1599.0 0.0 -v -768.0 511.0 0.0 -v -768.0 575.0 0.0 -v -800.0 575.0 0.0 -v -800.0 511.0 0.0 -v -1504.0 1471.0 0.0 -v -1504.0 1503.0 0.0 -v -1568.0 1503.0 0.0 -v -1568.0 1471.0 0.0 -v -1216.0 1567.0 0.0 -v -1216.0 1599.0 0.0 -v -1280.0 1599.0 0.0 -v -1280.0 1567.0 0.0 -v -832.0 1567.0 0.0 -v -832.0 1599.0 0.0 -v -896.0 1599.0 0.0 -v -896.0 1567.0 0.0 -v -672.0 543.0 0.0 -v -672.0 607.0 0.0 -v -704.0 607.0 0.0 -v -704.0 543.0 0.0 -v -1440.0 479.0 0.0 -v -1440.0 543.0 0.0 -v -1472.0 543.0 0.0 -v -1472.0 479.0 0.0 -v -416.0 799.0 0.0 -v -416.0 863.0 0.0 -v -448.0 863.0 0.0 -v -448.0 799.0 0.0 -v -384.0 767.0 0.0 -v -384.0 831.0 0.0 -v -416.0 831.0 0.0 -v -416.0 767.0 0.0 -v -1632.0 383.0 0.0 -v -1632.0 415.0 0.0 -v -1696.0 415.0 0.0 -v -1696.0 383.0 0.0 -v -768.0 1663.0 0.0 -v -768.0 1727.0 0.0 -v -800.0 1727.0 0.0 -v -800.0 1663.0 0.0 -v -896.0 1631.0 0.0 -v -896.0 1695.0 0.0 -v -928.0 1695.0 0.0 -v -928.0 1631.0 0.0 -v -1760.0 223.0 0.0 -v -1760.0 287.0 0.0 -v -1792.0 287.0 0.0 -v -1792.0 223.0 0.0 -v -1728.0 31.0 0.0 -v -1728.0 95.0 0.0 -v -1760.0 95.0 0.0 -v -1760.0 31.0 0.0 -v -1120.0 255.0 0.0 -v -1120.0 319.0 0.0 -v -1152.0 319.0 0.0 -v -1152.0 255.0 0.0 -v -1792.0 223.0 0.0 -v -1792.0 287.0 0.0 -v -1824.0 287.0 0.0 -v -1824.0 223.0 0.0 -v -864.0 415.0 0.0 -v -864.0 479.0 0.0 -v -896.0 479.0 0.0 -v -896.0 415.0 0.0 -v -32.0 351.0 0.0 -v -32.0 415.0 0.0 -v -64.0 415.0 0.0 -v -64.0 351.0 0.0 -v -1088.0 63.0 0.0 -v -1088.0 95.0 0.0 -v -1152.0 95.0 0.0 -v -1152.0 63.0 0.0 -v -1600.0 0.0 0.0 -v -1600.0 31.0 0.0 -v -1664.0 31.0 0.0 -v -1664.0 0.0 0.0 -v -960.0 191.0 0.0 -v -960.0 255.0 0.0 -v -992.0 255.0 0.0 -v -992.0 191.0 0.0 -v -480.0 159.0 0.0 -v -480.0 191.0 0.0 -v -544.0 191.0 0.0 -v -544.0 159.0 0.0 -v -1888.0 543.0 0.0 -v -1888.0 607.0 0.0 -v -1920.0 607.0 0.0 -v -1920.0 543.0 0.0 -v -512.0 1087.0 0.0 -v -512.0 1151.0 0.0 -v -544.0 1151.0 0.0 -v -544.0 1087.0 0.0 -v -896.0 1055.0 0.0 -v -896.0 1119.0 0.0 -v -928.0 1119.0 0.0 -v -928.0 1055.0 0.0 -v -1600.0 1439.0 0.0 -v -1600.0 1503.0 0.0 -v -1632.0 1503.0 0.0 -v -1632.0 1439.0 0.0 -v -1632.0 1247.0 0.0 -v -1632.0 1311.0 0.0 -v -1664.0 1311.0 0.0 -v -1664.0 1247.0 0.0 -v -1888.0 895.0 0.0 -v -1888.0 959.0 0.0 -v -1920.0 959.0 0.0 -v -1920.0 895.0 0.0 -v -960.0 543.0 0.0 -v -960.0 607.0 0.0 -v -992.0 607.0 0.0 -v -992.0 543.0 0.0 -v -1760.0 1055.0 0.0 -v -1760.0 1119.0 0.0 -v -1792.0 1119.0 0.0 -v -1792.0 1055.0 0.0 -v -768.0 959.0 0.0 -v -768.0 1023.0 0.0 -v -800.0 1023.0 0.0 -v -800.0 959.0 0.0 -v -1824.0 895.0 0.0 -v -1824.0 959.0 0.0 -v -1856.0 959.0 0.0 -v -1856.0 895.0 0.0 -v -928.0 1343.0 0.0 -v -928.0 1407.0 0.0 -v -960.0 1407.0 0.0 -v -960.0 1343.0 0.0 -v -1504.0 1407.0 0.0 -v -1504.0 1439.0 0.0 -v -1568.0 1439.0 0.0 -v -1568.0 1407.0 0.0 -v -1312.0 1375.0 0.0 -v -1312.0 1439.0 0.0 -v -1344.0 1439.0 0.0 -v -1344.0 1375.0 0.0 -v -928.0 1407.0 0.0 -v -928.0 1471.0 0.0 -v -960.0 1471.0 0.0 -v -960.0 1407.0 0.0 -v -1728.0 1087.0 0.0 -v -1728.0 1151.0 0.0 -v -1760.0 1151.0 0.0 -v -1760.0 1087.0 0.0 -v -192.0 607.0 0.0 -v -192.0 639.0 0.0 -v -256.0 639.0 0.0 -v -256.0 607.0 0.0 -v -1856.0 575.0 0.0 -v -1856.0 639.0 0.0 -v -1888.0 639.0 0.0 -v -1888.0 575.0 0.0 -v -1728.0 1023.0 0.0 -v -1728.0 1087.0 0.0 -v -1760.0 1087.0 0.0 -v -1760.0 1023.0 0.0 -v -128.0 607.0 0.0 -v -128.0 639.0 0.0 -v -192.0 639.0 0.0 -v -192.0 607.0 0.0 -v -1312.0 1439.0 0.0 -v -1312.0 1503.0 0.0 -v -1344.0 1503.0 0.0 -v -1344.0 1439.0 0.0 -v -1440.0 575.0 0.0 -v -1440.0 639.0 0.0 -v -1472.0 639.0 0.0 -v -1472.0 575.0 0.0 -v -672.0 319.0 0.0 -v -672.0 383.0 0.0 -v -704.0 383.0 0.0 -v -704.0 319.0 0.0 -v -1408.0 1343.0 0.0 -v -1408.0 1407.0 0.0 -v -1440.0 1407.0 0.0 -v -1440.0 1343.0 0.0 -v -928.0 1055.0 0.0 -v -928.0 1119.0 0.0 -v -960.0 1119.0 0.0 -v -960.0 1055.0 0.0 -v -1568.0 0.0 0.0 -v -1568.0 63.0 0.0 -v -1600.0 63.0 0.0 -v -1600.0 0.0 0.0 -v -1504.0 1567.0 0.0 -v -1504.0 1599.0 0.0 -v -1568.0 1599.0 0.0 -v -1568.0 1567.0 0.0 -v -1568.0 1567.0 0.0 -v -1568.0 1599.0 0.0 -v -1632.0 1599.0 0.0 -v -1632.0 1567.0 0.0 -v -1696.0 1631.0 0.0 -v -1696.0 1695.0 0.0 -v -1728.0 1695.0 0.0 -v -1728.0 1631.0 0.0 -v -1696.0 1567.0 0.0 -v -1696.0 1631.0 0.0 -v -1728.0 1631.0 0.0 -v -1728.0 1567.0 0.0 -v -1856.0 511.0 0.0 -v -1856.0 575.0 0.0 -v -1888.0 575.0 0.0 -v -1888.0 511.0 0.0 -v -1600.0 287.0 0.0 -v -1600.0 351.0 0.0 -v -1632.0 351.0 0.0 -v -1632.0 287.0 0.0 -v -1568.0 1407.0 0.0 -v -1568.0 1439.0 0.0 -v -1632.0 1439.0 0.0 -v -1632.0 1407.0 0.0 -v -1600.0 351.0 0.0 -v -1600.0 415.0 0.0 -v -1632.0 415.0 0.0 -v -1632.0 351.0 0.0 -v -1152.0 1599.0 0.0 -v -1152.0 1631.0 0.0 -v -1216.0 1631.0 0.0 -v -1216.0 1599.0 0.0 -v -992.0 159.0 0.0 -v -992.0 223.0 0.0 -v -1024.0 223.0 0.0 -v -1024.0 159.0 0.0 -v -992.0 223.0 0.0 -v -992.0 287.0 0.0 -v -1024.0 287.0 0.0 -v -1024.0 223.0 0.0 -v -1760.0 447.0 0.0 -v -1760.0 479.0 0.0 -v -1824.0 479.0 0.0 -v -1824.0 447.0 0.0 -v -1120.0 351.0 0.0 -v -1120.0 415.0 0.0 -v -1152.0 415.0 0.0 -v -1152.0 351.0 0.0 -v -1120.0 415.0 0.0 -v -1120.0 479.0 0.0 -v -1152.0 479.0 0.0 -v -1152.0 415.0 0.0 -v -1696.0 447.0 0.0 -v -1696.0 479.0 0.0 -v -1760.0 479.0 0.0 -v -1760.0 447.0 0.0 -v -448.0 799.0 0.0 -v -448.0 831.0 0.0 -v -480.0 831.0 0.0 -v -480.0 799.0 0.0 -v -288.0 703.0 0.0 -v -288.0 735.0 0.0 -v -320.0 735.0 0.0 -v -320.0 703.0 0.0 -v -736.0 959.0 0.0 -v -736.0 991.0 0.0 -v -768.0 991.0 0.0 -v -768.0 959.0 0.0 -v -1792.0 927.0 0.0 -v -1792.0 959.0 0.0 -v -1824.0 959.0 0.0 -v -1824.0 927.0 0.0 -v -1536.0 703.0 0.0 -v -1536.0 735.0 0.0 -v -1568.0 735.0 0.0 -v -1568.0 703.0 0.0 -v -704.0 575.0 0.0 -v -704.0 607.0 0.0 -v -736.0 607.0 0.0 -v -736.0 575.0 0.0 -v -416.0 703.0 0.0 -v -416.0 735.0 0.0 -v -448.0 735.0 0.0 -v -448.0 703.0 0.0 -v -352.0 767.0 0.0 -v -352.0 799.0 0.0 -v -384.0 799.0 0.0 -v -384.0 767.0 0.0 -v -224.0 639.0 0.0 -v -224.0 671.0 0.0 -v -256.0 671.0 0.0 -v -256.0 639.0 0.0 -v -480.0 767.0 0.0 -v -480.0 799.0 0.0 -v -512.0 799.0 0.0 -v -512.0 767.0 0.0 -v -32.0 543.0 0.0 -v -32.0 575.0 0.0 -v -64.0 575.0 0.0 -v -64.0 543.0 0.0 -v -896.0 351.0 0.0 -v -896.0 383.0 0.0 -v -928.0 383.0 0.0 -v -928.0 351.0 0.0 -v -1472.0 447.0 0.0 -v -1472.0 479.0 0.0 -v -1504.0 479.0 0.0 -v -1504.0 447.0 0.0 -v -1632.0 287.0 0.0 -v -1632.0 319.0 0.0 -v -1664.0 319.0 0.0 -v -1664.0 287.0 0.0 -v -1760.0 0.0 0.0 -v -1760.0 31.0 0.0 -v -1792.0 31.0 0.0 -v -1792.0 0.0 0.0 -v -1024.0 255.0 0.0 -v -1024.0 287.0 0.0 -v -1056.0 287.0 0.0 -v -1056.0 255.0 0.0 -v -1824.0 543.0 0.0 -v -1824.0 575.0 0.0 -v -1856.0 575.0 0.0 -v -1856.0 543.0 0.0 -v -1824.0 255.0 0.0 -v -1824.0 287.0 0.0 -v -1856.0 287.0 0.0 -v -1856.0 255.0 0.0 -v -736.0 479.0 0.0 -v -736.0 511.0 0.0 -v -768.0 511.0 0.0 -v -768.0 479.0 0.0 -v -896.0 447.0 0.0 -v -896.0 479.0 0.0 -v -928.0 479.0 0.0 -v -928.0 447.0 0.0 -v -1760.0 479.0 0.0 -v -1760.0 511.0 0.0 -v -1792.0 511.0 0.0 -v -1792.0 479.0 0.0 -v -1792.0 1055.0 0.0 -v -1792.0 1087.0 0.0 -v -1824.0 1087.0 0.0 -v -1824.0 1055.0 0.0 -v -1440.0 447.0 0.0 -v -1440.0 479.0 0.0 -v -1472.0 479.0 0.0 -v -1472.0 447.0 0.0 -v -768.0 479.0 0.0 -v -768.0 511.0 0.0 -v -800.0 511.0 0.0 -v -800.0 479.0 0.0 -v -1696.0 383.0 0.0 -v -1696.0 415.0 0.0 -v -1728.0 415.0 0.0 -v -1728.0 383.0 0.0 -v -1728.0 0.0 0.0 -v -1728.0 31.0 0.0 -v -1760.0 31.0 0.0 -v -1760.0 0.0 0.0 -v -1760.0 191.0 0.0 -v -1760.0 223.0 0.0 -v -1792.0 223.0 0.0 -v -1792.0 191.0 0.0 -v -1824.0 863.0 0.0 -v -1824.0 895.0 0.0 -v -1856.0 895.0 0.0 -v -1856.0 863.0 0.0 -v -1216.0 1599.0 0.0 -v -1216.0 1631.0 0.0 -v -1248.0 1631.0 0.0 -v -1248.0 1599.0 0.0 -v -416.0 767.0 0.0 -v -416.0 799.0 0.0 -v -448.0 799.0 0.0 -v -448.0 767.0 0.0 -v -672.0 511.0 0.0 -v -672.0 543.0 0.0 -v -704.0 543.0 0.0 -v -704.0 511.0 0.0 -v -384.0 735.0 0.0 -v -384.0 767.0 0.0 -v -416.0 767.0 0.0 -v -416.0 735.0 0.0 -v -928.0 1631.0 0.0 -v -928.0 1663.0 0.0 -v -960.0 1663.0 0.0 -v -960.0 1631.0 0.0 -v -800.0 1311.0 0.0 -v -800.0 1343.0 0.0 -v -832.0 1343.0 0.0 -v -832.0 1311.0 0.0 -v -1376.0 1343.0 0.0 -v -1376.0 1375.0 0.0 -v -1408.0 1375.0 0.0 -v -1408.0 1343.0 0.0 -v -1632.0 1183.0 0.0 -v -1632.0 1215.0 0.0 -v -1664.0 1215.0 0.0 -v -1664.0 1183.0 0.0 -v -864.0 1055.0 0.0 -v -864.0 1087.0 0.0 -v -896.0 1087.0 0.0 -v -896.0 1055.0 0.0 -v -640.0 1087.0 0.0 -v -640.0 1119.0 0.0 -v -672.0 1119.0 0.0 -v -672.0 1087.0 0.0 -v -1248.0 1535.0 0.0 -v -1248.0 1567.0 0.0 -v -1280.0 1567.0 0.0 -v -1280.0 1535.0 0.0 -v -992.0 1599.0 0.0 -v -992.0 1631.0 0.0 -v -1024.0 1631.0 0.0 -v -1024.0 1599.0 0.0 -v -1216.0 1503.0 0.0 -v -1216.0 1535.0 0.0 -v -1248.0 1535.0 0.0 -v -1248.0 1503.0 0.0 -v -1344.0 1375.0 0.0 -v -1344.0 1407.0 0.0 -v -1376.0 1407.0 0.0 -v -1376.0 1375.0 0.0 -v -896.0 1439.0 0.0 -v -896.0 1471.0 0.0 -v -928.0 1471.0 0.0 -v -928.0 1439.0 0.0 -vt 0.00048828125 0.0010246038436889648 -vt 0.00048828125 0.6895492076873779 -vt 0.14111328125 0.6895492076873779 -vt 0.14111328125 0.0010246038436889648 -vt 0.14208984375 0.0010246038436889648 -vt 0.14208984375 0.6567623019218445 -vt 0.28271484375 0.6567623019218445 -vt 0.28271484375 0.0010246038436889648 -vt 0.28369140625 0.0010246038436889648 -vt 0.28369140625 0.32889342308044434 -vt 0.43994140625 0.32889342308044434 -vt 0.43994140625 0.0010246038436889648 -vt 0.44091796875 0.0010246038436889648 -vt 0.44091796875 0.32889342308044434 -vt 0.59716796875 0.32889342308044434 -vt 0.59716796875 0.0010246038436889648 -vt 0.59814453125 0.0010246038436889648 -vt 0.59814453125 0.29610657691955566 -vt 0.75439453125 0.29610657691955566 -vt 0.75439453125 0.0010246038436889648 -vt 0.75537109375 0.0010246038436889648 -vt 0.75537109375 0.29610657691955566 -vt 0.89599609375 0.29610657691955566 -vt 0.89599609375 0.0010246038436889648 -vt 0.89697265625 0.0010246038436889648 -vt 0.89697265625 0.29610657691955566 -vt 0.99072265625 0.29610657691955566 -vt 0.99072265625 0.0010246038436889648 -vt 0.59814453125 0.2981557250022888 -vt 0.59814453125 0.5932376980781555 -vt 0.69189453125 0.5932376980781555 -vt 0.69189453125 0.2981557250022888 -vt 0.69287109375 0.2981557250022888 -vt 0.69287109375 0.5604507923126221 -vt 0.78662109375 0.5604507923126221 -vt 0.78662109375 0.2981557250022888 -vt 0.78759765625 0.2981557250022888 -vt 0.78759765625 0.5604507923126221 -vt 0.88134765625 0.5604507923126221 -vt 0.88134765625 0.2981557250022888 -vt 0.88232421875 0.2981557250022888 -vt 0.88232421875 0.5604507923126221 -vt 0.94482421875 0.5604507923126221 -vt 0.94482421875 0.2981557250022888 -vt 0.28369140625 0.33094263076782227 -vt 0.28369140625 0.49487704038619995 -vt 0.37744140625 0.49487704038619995 -vt 0.37744140625 0.33094263076782227 -vt 0.37841796875 0.33094263076782227 -vt 0.37841796875 0.49487704038619995 -vt 0.45654296875 0.49487704038619995 -vt 0.45654296875 0.33094263076782227 -vt 0.94580078125 0.2981557250022888 -vt 0.94580078125 0.6915983557701111 -vt 0.97705078125 0.6915983557701111 -vt 0.97705078125 0.2981557250022888 -vt 0.45751953125 0.33094263076782227 -vt 0.45751953125 0.6915983557701111 -vt 0.48876953125 0.6915983557701111 -vt 0.48876953125 0.33094263076782227 -vt 0.28369140625 0.4969262480735779 -vt 0.28369140625 0.5952868461608887 -vt 0.39306640625 0.5952868461608887 -vt 0.39306640625 0.4969262480735779 -vt 0.48974609375 0.33094263076782227 -vt 0.48974609375 0.5604507923126221 -vt 0.53662109375 0.5604507923126221 -vt 0.53662109375 0.33094263076782227 -vt 0.48974609375 0.5625 -vt 0.48974609375 0.6936475038528442 -vt 0.56787109375 0.6936475038528442 -vt 0.56787109375 0.5625 -vt 0.69287109375 0.5625 -vt 0.69287109375 0.6936475038528442 -vt 0.77099609375 0.6936475038528442 -vt 0.77099609375 0.5625 -vt 0.39404296875 0.4969262480735779 -vt 0.39404296875 0.6608606576919556 -vt 0.45654296875 0.6608606576919556 -vt 0.45654296875 0.4969262480735779 -vt 0.77197265625 0.5625 -vt 0.77197265625 0.7592213153839111 -vt 0.81884765625 0.7592213153839111 -vt 0.81884765625 0.5625 -vt 0.81982421875 0.5625 -vt 0.81982421875 0.6280738115310669 -vt 0.94482421875 0.6280738115310669 -vt 0.94482421875 0.5625 -vt 0.81982421875 0.6301229596138 -vt 0.81982421875 0.6956967115402222 -vt 0.94482421875 0.6956967115402222 -vt 0.94482421875 0.6301229596138 -vt 0.59814453125 0.5952868461608887 -vt 0.59814453125 0.7264344692230225 -vt 0.64501953125 0.7264344692230225 -vt 0.64501953125 0.5952868461608887 -vt 0.28369140625 0.5973360538482666 -vt 0.28369140625 0.7284836173057556 -vt 0.33056640625 0.7284836173057556 -vt 0.33056640625 0.5973360538482666 -vt 0.33154296875 0.5973360538482666 -vt 0.33154296875 0.7284836173057556 -vt 0.37841796875 0.7284836173057556 -vt 0.37841796875 0.5973360538482666 -vt 0.14208984375 0.6588114500045776 -vt 0.14208984375 0.7571721076965332 -vt 0.20458984375 0.7571721076965332 -vt 0.20458984375 0.6588114500045776 -vt 0.20556640625 0.6588114500045776 -vt 0.20556640625 0.7899590134620667 -vt 0.25244140625 0.7899590134620667 -vt 0.25244140625 0.6588114500045776 -vt 0.39404296875 0.6629098653793335 -vt 0.39404296875 0.7612705230712891 -vt 0.45654296875 0.7612705230712891 -vt 0.45654296875 0.6629098653793335 -vt 0.00048828125 0.6915983557701111 -vt 0.00048828125 0.8227459192276001 -vt 0.04736328125 0.8227459192276001 -vt 0.04736328125 0.6915983557701111 -vt 0.04833984375 0.6915983557701111 -vt 0.04833984375 0.8227459192276001 -vt 0.09521484375 0.8227459192276001 -vt 0.09521484375 0.6915983557701111 -vt 0.56884765625 0.33094263076782227 -vt 0.56884765625 0.49487704038619995 -vt 0.59326171875 0.49487704038619995 -vt 0.59326171875 0.33094263076782227 -vt 0.94580078125 0.6936475038528442 -vt 0.94580078125 0.7920081615447998 -vt 0.99267578125 0.7920081615447998 -vt 0.99267578125 0.6936475038528442 -vt 0.48974609375 0.6956967115402222 -vt 0.48974609375 0.7940573692321777 -vt 0.53662109375 0.7940573692321777 -vt 0.53662109375 0.6956967115402222 -vt 0.59814453125 0.7284836173057556 -vt 0.59814453125 0.7612705230712891 -vt 0.73876953125 0.7612705230712891 -vt 0.73876953125 0.7284836173057556 -vt 0.77197265625 0.7612705230712891 -vt 0.77197265625 0.7940573692321777 -vt 0.91259765625 0.7940573692321777 -vt 0.91259765625 0.7612705230712891 -vt 0.56884765625 0.4969262480735779 -vt 0.56884765625 0.6280738115310669 -vt 0.59326171875 0.6280738115310669 -vt 0.59326171875 0.4969262480735779 -vt 0.28369140625 0.7305327653884888 -vt 0.28369140625 0.7961065769195557 -vt 0.34619140625 0.7961065769195557 -vt 0.34619140625 0.7305327653884888 -vt 0.09619140625 0.6915983557701111 -vt 0.09619140625 0.8227459192276001 -vt 0.12744140625 0.8227459192276001 -vt 0.12744140625 0.6915983557701111 -vt 0.45751953125 0.6936475038528442 -vt 0.45751953125 0.8247950673103333 -vt 0.48876953125 0.8247950673103333 -vt 0.48876953125 0.6936475038528442 -vt 0.53759765625 0.6956967115402222 -vt 0.53759765625 0.8268442749977112 -vt 0.56884765625 0.8268442749977112 -vt 0.56884765625 0.6956967115402222 -vt 0.56982421875 0.6301229596138 -vt 0.56982421875 0.8268442749977112 -vt 0.58544921875 0.8268442749977112 -vt 0.58544921875 0.6301229596138 -vt 0.14208984375 0.7592213153839111 -vt 0.14208984375 0.8247950673103333 -vt 0.18896484375 0.8247950673103333 -vt 0.18896484375 0.7592213153839111 -vt 0.25341796875 0.6588114500045776 -vt 0.25341796875 0.8555327653884888 -vt 0.26904296875 0.8555327653884888 -vt 0.26904296875 0.6588114500045776 -vt 0.73974609375 0.6956967115402222 -vt 0.73974609375 0.7940573692321777 -vt 0.77099609375 0.7940573692321777 -vt 0.77099609375 0.6956967115402222 -vt 0.91357421875 0.6977459192276001 -vt 0.91357421875 0.7633196711540222 -vt 0.94482421875 0.7633196711540222 -vt 0.94482421875 0.6977459192276001 -vt 0.34716796875 0.7305327653884888 -vt 0.34716796875 0.7961065769195557 -vt 0.37841796875 0.7961065769195557 -vt 0.37841796875 0.7305327653884888 -vt 0.39404296875 0.7633196711540222 -vt 0.39404296875 0.7961065769195557 -vt 0.45654296875 0.7961065769195557 -vt 0.45654296875 0.7633196711540222 -vt 0.59814453125 0.7633196711540222 -vt 0.59814453125 0.8288934230804443 -vt 0.62939453125 0.8288934230804443 -vt 0.62939453125 0.7633196711540222 -vt 0.63037109375 0.7633196711540222 -vt 0.63037109375 0.8288934230804443 -vt 0.66162109375 0.8288934230804443 -vt 0.66162109375 0.7633196711540222 -vt 0.66259765625 0.7633196711540222 -vt 0.66259765625 0.8288934230804443 -vt 0.69384765625 0.8288934230804443 -vt 0.69384765625 0.7633196711540222 -vt 0.69482421875 0.7633196711540222 -vt 0.69482421875 0.8288934230804443 -vt 0.72607421875 0.8288934230804443 -vt 0.72607421875 0.7633196711540222 -vt 0.91357421875 0.7653688192367554 -vt 0.91357421875 0.8309426307678223 -vt 0.94482421875 0.8309426307678223 -vt 0.94482421875 0.7653688192367554 -vt 0.20556640625 0.7920081615447998 -vt 0.20556640625 0.9231557250022888 -vt 0.22119140625 0.9231557250022888 -vt 0.22119140625 0.7920081615447998 -vt 0.22216796875 0.7920081615447998 -vt 0.22216796875 0.9231557250022888 -vt 0.23779296875 0.9231557250022888 -vt 0.23779296875 0.7920081615447998 -vt 0.94580078125 0.7940573692321777 -vt 0.94580078125 0.8596311807632446 -vt 0.97705078125 0.8596311807632446 -vt 0.97705078125 0.7940573692321777 -vt 0.97802734375 0.7940573692321777 -vt 0.97802734375 0.9252049326896667 -vt 0.99365234375 0.9252049326896667 -vt 0.99365234375 0.7940573692321777 -vt 0.73974609375 0.7961065769195557 -vt 0.73974609375 0.8288934230804443 -vt 0.80224609375 0.8288934230804443 -vt 0.80224609375 0.7961065769195557 -vt 0.48974609375 0.7961065769195557 -vt 0.48974609375 0.9272540807723999 -vt 0.50537109375 0.9272540807723999 -vt 0.50537109375 0.7961065769195557 -vt 0.80322265625 0.7961065769195557 -vt 0.80322265625 0.8288934230804443 -vt 0.86572265625 0.8288934230804443 -vt 0.86572265625 0.7961065769195557 -vt 0.50634765625 0.7961065769195557 -vt 0.50634765625 0.8944672346115112 -vt 0.52197265625 0.8944672346115112 -vt 0.52197265625 0.7961065769195557 -vt 0.86669921875 0.7961065769195557 -vt 0.86669921875 0.8944672346115112 -vt 0.88232421875 0.8944672346115112 -vt 0.88232421875 0.7961065769195557 -vt 0.88330078125 0.7961065769195557 -vt 0.88330078125 0.8944672346115112 -vt 0.89892578125 0.8944672346115112 -vt 0.89892578125 0.7961065769195557 -vt 0.28369140625 0.7981557250022888 -vt 0.28369140625 0.8965163826942444 -vt 0.29931640625 0.8965163826942444 -vt 0.29931640625 0.7981557250022888 -vt 0.30029296875 0.7981557250022888 -vt 0.30029296875 0.8965163826942444 -vt 0.31591796875 0.8965163826942444 -vt 0.31591796875 0.7981557250022888 -vt 0.31689453125 0.7981557250022888 -vt 0.31689453125 0.8965163826942444 -vt 0.33251953125 0.8965163826942444 -vt 0.33251953125 0.7981557250022888 -vt 0.33349609375 0.7981557250022888 -vt 0.33349609375 0.8309426307678223 -vt 0.38037109375 0.8309426307678223 -vt 0.38037109375 0.7981557250022888 -vt 0.39404296875 0.7981557250022888 -vt 0.39404296875 0.8309426307678223 -vt 0.44091796875 0.8309426307678223 -vt 0.44091796875 0.7981557250022888 -vt 0.00048828125 0.8247950673103333 -vt 0.00048828125 0.8575819730758667 -vt 0.04736328125 0.8575819730758667 -vt 0.04736328125 0.8247950673103333 -vt 0.04833984375 0.8247950673103333 -vt 0.04833984375 0.8575819730758667 -vt 0.09521484375 0.8575819730758667 -vt 0.09521484375 0.8247950673103333 -vt 0.14208984375 0.8268442749977112 -vt 0.14208984375 0.8596311807632446 -vt 0.18896484375 0.8596311807632446 -vt 0.18896484375 0.8268442749977112 -vt 0.53759765625 0.8288934230804443 -vt 0.53759765625 0.8616803288459778 -vt 0.58447265625 0.8616803288459778 -vt 0.58447265625 0.8288934230804443 -vt 0.09619140625 0.8247950673103333 -vt 0.09619140625 0.9231557250022888 -vt 0.11181640625 0.9231557250022888 -vt 0.11181640625 0.8247950673103333 -vt 0.11279296875 0.8247950673103333 -vt 0.11279296875 0.9231557250022888 -vt 0.12841796875 0.9231557250022888 -vt 0.12841796875 0.8247950673103333 -vt 0.59814453125 0.8309426307678223 -vt 0.59814453125 0.8637294769287109 -vt 0.64501953125 0.8637294769287109 -vt 0.64501953125 0.8309426307678223 -vt 0.45751953125 0.8268442749977112 -vt 0.45751953125 0.9252049326896667 -vt 0.47314453125 0.9252049326896667 -vt 0.47314453125 0.8268442749977112 -vt 0.64599609375 0.8309426307678223 -vt 0.64599609375 0.8965163826942444 -vt 0.66162109375 0.8965163826942444 -vt 0.66162109375 0.8309426307678223 -vt 0.66259765625 0.8309426307678223 -vt 0.66259765625 0.8965163826942444 -vt 0.67822265625 0.8965163826942444 -vt 0.67822265625 0.8309426307678223 -vt 0.67919921875 0.8309426307678223 -vt 0.67919921875 0.8637294769287109 -vt 0.71044921875 0.8637294769287109 -vt 0.71044921875 0.8309426307678223 -vt 0.71142578125 0.8309426307678223 -vt 0.71142578125 0.8637294769287109 -vt 0.74267578125 0.8637294769287109 -vt 0.74267578125 0.8309426307678223 -vt 0.74365234375 0.8309426307678223 -vt 0.74365234375 0.8637294769287109 -vt 0.77490234375 0.8637294769287109 -vt 0.77490234375 0.8309426307678223 -vt 0.77587890625 0.8309426307678223 -vt 0.77587890625 0.8965163826942444 -vt 0.79150390625 0.8965163826942444 -vt 0.79150390625 0.8309426307678223 -vt 0.79248046875 0.8309426307678223 -vt 0.79248046875 0.8965163826942444 -vt 0.80810546875 0.8965163826942444 -vt 0.80810546875 0.8309426307678223 -vt 0.80908203125 0.8309426307678223 -vt 0.80908203125 0.8965163826942444 -vt 0.82470703125 0.8965163826942444 -vt 0.82470703125 0.8309426307678223 -vt 0.82568359375 0.8309426307678223 -vt 0.82568359375 0.8965163826942444 -vt 0.84130859375 0.8965163826942444 -vt 0.84130859375 0.8309426307678223 -vt 0.33349609375 0.8329918384552002 -vt 0.33349609375 0.8657786846160889 -vt 0.36474609375 0.8657786846160889 -vt 0.36474609375 0.8329918384552002 -vt 0.84228515625 0.8309426307678223 -vt 0.84228515625 0.8965163826942444 -vt 0.85791015625 0.8965163826942444 -vt 0.85791015625 0.8309426307678223 -vt 0.36572265625 0.8329918384552002 -vt 0.36572265625 0.8985655903816223 -vt 0.38134765625 0.8985655903816223 -vt 0.38134765625 0.8329918384552002 -vt 0.39404296875 0.8329918384552002 -vt 0.39404296875 0.8985655903816223 -vt 0.40966796875 0.8985655903816223 -vt 0.40966796875 0.8329918384552002 -vt 0.41064453125 0.8329918384552002 -vt 0.41064453125 0.8985655903816223 -vt 0.42626953125 0.8985655903816223 -vt 0.42626953125 0.8329918384552002 -vt 0.42724609375 0.8329918384552002 -vt 0.42724609375 0.8985655903816223 -vt 0.44287109375 0.8985655903816223 -vt 0.44287109375 0.8329918384552002 -vt 0.91357421875 0.8329918384552002 -vt 0.91357421875 0.8985655903816223 -vt 0.92919921875 0.8985655903816223 -vt 0.92919921875 0.8329918384552002 -vt 0.25341796875 0.8575819730758667 -vt 0.25341796875 0.9231557250022888 -vt 0.26904296875 0.9231557250022888 -vt 0.26904296875 0.8575819730758667 -vt 0.00048828125 0.8596311807632446 -vt 0.00048828125 0.9252049326896667 -vt 0.01611328125 0.9252049326896667 -vt 0.01611328125 0.8596311807632446 -vt 0.01708984375 0.8596311807632446 -vt 0.01708984375 0.8924180269241333 -vt 0.04833984375 0.8924180269241333 -vt 0.04833984375 0.8596311807632446 -vt 0.04931640625 0.8596311807632446 -vt 0.04931640625 0.8924180269241333 -vt 0.08056640625 0.8924180269241333 -vt 0.08056640625 0.8596311807632446 -vt 0.14208984375 0.8616803288459778 -vt 0.14208984375 0.9272540807723999 -vt 0.15771484375 0.9272540807723999 -vt 0.15771484375 0.8616803288459778 -vt 0.15869140625 0.8616803288459778 -vt 0.15869140625 0.8944672346115112 -vt 0.18994140625 0.8944672346115112 -vt 0.18994140625 0.8616803288459778 -vt 0.94580078125 0.8616803288459778 -vt 0.94580078125 0.9272540807723999 -vt 0.96142578125 0.9272540807723999 -vt 0.96142578125 0.8616803288459778 -vt 0.53759765625 0.8637294769287109 -vt 0.53759765625 0.9293032884597778 -vt 0.55322265625 0.9293032884597778 -vt 0.55322265625 0.8637294769287109 -vt 0.55419921875 0.8637294769287109 -vt 0.55419921875 0.9293032884597778 -vt 0.56982421875 0.9293032884597778 -vt 0.56982421875 0.8637294769287109 -vt 0.57080078125 0.8637294769287109 -vt 0.57080078125 0.9293032884597778 -vt 0.58642578125 0.9293032884597778 -vt 0.58642578125 0.8637294769287109 -vt 0.59814453125 0.8657786846160889 -vt 0.59814453125 0.931352436542511 -vt 0.61376953125 0.931352436542511 -vt 0.61376953125 0.8657786846160889 -vt 0.61474609375 0.8657786846160889 -vt 0.61474609375 0.931352436542511 -vt 0.63037109375 0.931352436542511 -vt 0.63037109375 0.8657786846160889 -vt 0.67919921875 0.8657786846160889 -vt 0.67919921875 0.931352436542511 -vt 0.69482421875 0.931352436542511 -vt 0.69482421875 0.8657786846160889 -vt 0.69580078125 0.8657786846160889 -vt 0.69580078125 0.931352436542511 -vt 0.71142578125 0.931352436542511 -vt 0.71142578125 0.8657786846160889 -vt 0.71240234375 0.8657786846160889 -vt 0.71240234375 0.931352436542511 -vt 0.72802734375 0.931352436542511 -vt 0.72802734375 0.8657786846160889 -vt 0.72900390625 0.8657786846160889 -vt 0.72900390625 0.931352436542511 -vt 0.74462890625 0.931352436542511 -vt 0.74462890625 0.8657786846160889 -vt 0.74560546875 0.8657786846160889 -vt 0.74560546875 0.931352436542511 -vt 0.76123046875 0.931352436542511 -vt 0.76123046875 0.8657786846160889 -vt 0.33349609375 0.8678278923034668 -vt 0.33349609375 0.9006147384643555 -vt 0.36474609375 0.9006147384643555 -vt 0.36474609375 0.8678278923034668 -vt 0.01708984375 0.8944672346115112 -vt 0.01708984375 0.9600409865379333 -vt 0.03271484375 0.9600409865379333 -vt 0.03271484375 0.8944672346115112 -vt 0.03369140625 0.8944672346115112 -vt 0.03369140625 0.9600409865379333 -vt 0.04931640625 0.9600409865379333 -vt 0.04931640625 0.8944672346115112 -vt 0.05029296875 0.8944672346115112 -vt 0.05029296875 0.9600409865379333 -vt 0.06591796875 0.9600409865379333 -vt 0.06591796875 0.8944672346115112 -vt 0.15869140625 0.8965163826942444 -vt 0.15869140625 0.9293032884597778 -vt 0.18994140625 0.9293032884597778 -vt 0.18994140625 0.8965163826942444 -vt 0.06689453125 0.8944672346115112 -vt 0.06689453125 0.9600409865379333 -vt 0.08251953125 0.9600409865379333 -vt 0.08251953125 0.8944672346115112 -vt 0.50634765625 0.8965163826942444 -vt 0.50634765625 0.9620901346206665 -vt 0.52197265625 0.9620901346206665 -vt 0.52197265625 0.8965163826942444 -vt 0.86669921875 0.8965163826942444 -vt 0.86669921875 0.9293032884597778 -vt 0.89794921875 0.9293032884597778 -vt 0.89794921875 0.8965163826942444 -vt 0.28369140625 0.8985655903816223 -vt 0.28369140625 0.9641393423080444 -vt 0.29931640625 0.9641393423080444 -vt 0.29931640625 0.8985655903816223 -vt 0.30029296875 0.8985655903816223 -vt 0.30029296875 0.9641393423080444 -vt 0.31591796875 0.9641393423080444 -vt 0.31591796875 0.8985655903816223 -vt 0.31689453125 0.8985655903816223 -vt 0.31689453125 0.9641393423080444 -vt 0.33251953125 0.9641393423080444 -vt 0.33251953125 0.8985655903816223 -vt 0.64599609375 0.8985655903816223 -vt 0.64599609375 0.9641393423080444 -vt 0.66162109375 0.9641393423080444 -vt 0.66162109375 0.8985655903816223 -vt 0.66259765625 0.8985655903816223 -vt 0.66259765625 0.9641393423080444 -vt 0.67822265625 0.9641393423080444 -vt 0.67822265625 0.8985655903816223 -vt 0.77587890625 0.8985655903816223 -vt 0.77587890625 0.9641393423080444 -vt 0.79150390625 0.9641393423080444 -vt 0.79150390625 0.8985655903816223 -vt 0.79248046875 0.8985655903816223 -vt 0.79248046875 0.931352436542511 -vt 0.82373046875 0.931352436542511 -vt 0.82373046875 0.8985655903816223 -vt 0.82470703125 0.8985655903816223 -vt 0.82470703125 0.931352436542511 -vt 0.85595703125 0.931352436542511 -vt 0.85595703125 0.8985655903816223 -vt 0.36572265625 0.9006147384643555 -vt 0.36572265625 0.9661885499954224 -vt 0.38134765625 0.9661885499954224 -vt 0.38134765625 0.9006147384643555 -vt 0.39404296875 0.9006147384643555 -vt 0.39404296875 0.9661885499954224 -vt 0.40966796875 0.9661885499954224 -vt 0.40966796875 0.9006147384643555 -vt 0.41064453125 0.9006147384643555 -vt 0.41064453125 0.9661885499954224 -vt 0.42626953125 0.9661885499954224 -vt 0.42626953125 0.9006147384643555 -vt 0.42724609375 0.9006147384643555 -vt 0.42724609375 0.9661885499954224 -vt 0.44287109375 0.9661885499954224 -vt 0.44287109375 0.9006147384643555 -vt 0.91357421875 0.9006147384643555 -vt 0.91357421875 0.9334016442298889 -vt 0.94482421875 0.9334016442298889 -vt 0.94482421875 0.9006147384643555 -vt 0.33349609375 0.9026639461517334 -vt 0.33349609375 0.9682376980781555 -vt 0.34912109375 0.9682376980781555 -vt 0.34912109375 0.9026639461517334 -vt 0.09619140625 0.9252049326896667 -vt 0.09619140625 0.9579917788505554 -vt 0.12744140625 0.9579917788505554 -vt 0.12744140625 0.9252049326896667 -vt 0.20556640625 0.9252049326896667 -vt 0.20556640625 0.9907786846160889 -vt 0.22119140625 0.9907786846160889 -vt 0.22119140625 0.9252049326896667 -vt 0.22216796875 0.9252049326896667 -vt 0.22216796875 0.9907786846160889 -vt 0.23779296875 0.9907786846160889 -vt 0.23779296875 0.9252049326896667 -vt 0.45751953125 0.9272540807723999 -vt 0.45751953125 0.9600409865379333 -vt 0.48876953125 0.9600409865379333 -vt 0.48876953125 0.9272540807723999 -vt 0.25341796875 0.9252049326896667 -vt 0.25341796875 0.9907786846160889 -vt 0.26904296875 0.9907786846160889 -vt 0.26904296875 0.9252049326896667 -vt 0.00048828125 0.9272540807723999 -vt 0.00048828125 0.9928278923034668 -vt 0.01611328125 0.9928278923034668 -vt 0.01611328125 0.9272540807723999 -vt 0.94580078125 0.9293032884597778 -vt 0.94580078125 0.9620901346206665 -vt 0.97705078125 0.9620901346206665 -vt 0.97705078125 0.9293032884597778 -vt 0.97802734375 0.9272540807723999 -vt 0.97802734375 0.9600409865379333 -vt 0.99365234375 0.9600409865379333 -vt 0.99365234375 0.9272540807723999 -vt 0.14208984375 0.9293032884597778 -vt 0.14208984375 0.9620901346206665 -vt 0.15771484375 0.9620901346206665 -vt 0.15771484375 0.9293032884597778 -vt 0.48974609375 0.9293032884597778 -vt 0.48974609375 0.9620901346206665 -vt 0.50537109375 0.9620901346206665 -vt 0.50537109375 0.9293032884597778 -vt 0.15869140625 0.931352436542511 -vt 0.15869140625 0.9641393423080444 -vt 0.17431640625 0.9641393423080444 -vt 0.17431640625 0.931352436542511 -vt 0.17529296875 0.931352436542511 -vt 0.17529296875 0.9641393423080444 -vt 0.19091796875 0.9641393423080444 -vt 0.19091796875 0.931352436542511 -vt 0.53759765625 0.931352436542511 -vt 0.53759765625 0.9641393423080444 -vt 0.55322265625 0.9641393423080444 -vt 0.55322265625 0.931352436542511 -vt 0.55419921875 0.931352436542511 -vt 0.55419921875 0.9641393423080444 -vt 0.56982421875 0.9641393423080444 -vt 0.56982421875 0.931352436542511 -vt 0.57080078125 0.931352436542511 -vt 0.57080078125 0.9641393423080444 -vt 0.58642578125 0.9641393423080444 -vt 0.58642578125 0.931352436542511 -vt 0.86669921875 0.931352436542511 -vt 0.86669921875 0.9641393423080444 -vt 0.88232421875 0.9641393423080444 -vt 0.88232421875 0.931352436542511 -vt 0.88330078125 0.931352436542511 -vt 0.88330078125 0.9641393423080444 -vt 0.89892578125 0.9641393423080444 -vt 0.89892578125 0.931352436542511 -vt 0.59814453125 0.9334016442298889 -vt 0.59814453125 0.9661885499954224 -vt 0.61376953125 0.9661885499954224 -vt 0.61376953125 0.9334016442298889 -vt 0.61474609375 0.9334016442298889 -vt 0.61474609375 0.9661885499954224 -vt 0.63037109375 0.9661885499954224 -vt 0.63037109375 0.9334016442298889 -vt 0.67919921875 0.9334016442298889 -vt 0.67919921875 0.9661885499954224 -vt 0.69482421875 0.9661885499954224 -vt 0.69482421875 0.9334016442298889 -vt 0.69580078125 0.9334016442298889 -vt 0.69580078125 0.9661885499954224 -vt 0.71142578125 0.9661885499954224 -vt 0.71142578125 0.9334016442298889 -vt 0.71240234375 0.9334016442298889 -vt 0.71240234375 0.9661885499954224 -vt 0.72802734375 0.9661885499954224 -vt 0.72802734375 0.9334016442298889 -vt 0.72900390625 0.9334016442298889 -vt 0.72900390625 0.9661885499954224 -vt 0.74462890625 0.9661885499954224 -vt 0.74462890625 0.9334016442298889 -vt 0.74560546875 0.9334016442298889 -vt 0.74560546875 0.9661885499954224 -vt 0.76123046875 0.9661885499954224 -vt 0.76123046875 0.9334016442298889 -vt 0.79248046875 0.9334016442298889 -vt 0.79248046875 0.9661885499954224 -vt 0.80810546875 0.9661885499954224 -vt 0.80810546875 0.9334016442298889 -vt 0.80908203125 0.9334016442298889 -vt 0.80908203125 0.9661885499954224 -vt 0.82470703125 0.9661885499954224 -vt 0.82470703125 0.9334016442298889 -vt 0.82568359375 0.9334016442298889 -vt 0.82568359375 0.9661885499954224 -vt 0.84130859375 0.9661885499954224 -vt 0.84130859375 0.9334016442298889 -vt 0.84228515625 0.9334016442298889 -vt 0.84228515625 0.9661885499954224 -vt 0.85791015625 0.9661885499954224 -vt 0.85791015625 0.9334016442298889 -vt 0.91357421875 0.9354507923126221 -vt 0.91357421875 0.9682376980781555 -vt 0.92919921875 0.9682376980781555 -vt 0.92919921875 0.9354507923126221 -vt 0.09619140625 0.9600409865379333 -vt 0.09619140625 0.9928278923034668 -vt 0.11181640625 0.9928278923034668 -vt 0.11181640625 0.9600409865379333 -vt 0.11279296875 0.9600409865379333 -vt 0.11279296875 0.9928278923034668 -vt 0.12841796875 0.9928278923034668 -vt 0.12841796875 0.9600409865379333 -vt 0.01708984375 0.9620901346206665 -vt 0.01708984375 0.9948770403862 -vt 0.03271484375 0.9948770403862 -vt 0.03271484375 0.9620901346206665 -vt 0.03369140625 0.9620901346206665 -vt 0.03369140625 0.9948770403862 -vt 0.04931640625 0.9948770403862 -vt 0.04931640625 0.9620901346206665 -vt 0.05029296875 0.9620901346206665 -vt 0.05029296875 0.9948770403862 -vt 0.06591796875 0.9948770403862 -vt 0.06591796875 0.9620901346206665 -vt 0.06689453125 0.9620901346206665 -vt 0.06689453125 0.9948770403862 -vt 0.08251953125 0.9948770403862 -vt 0.08251953125 0.9620901346206665 -vt 0.45751953125 0.9620901346206665 -vt 0.45751953125 0.9948770403862 -vt 0.47314453125 0.9948770403862 -vt 0.47314453125 0.9620901346206665 -vt 0.97802734375 0.9620901346206665 -vt 0.97802734375 0.9948770403862 -vt 0.99365234375 0.9948770403862 -vt 0.99365234375 0.9620901346206665 -vt 0.14208984375 0.9641393423080444 -vt 0.14208984375 0.9969262480735779 -vt 0.15771484375 0.9969262480735779 -vt 0.15771484375 0.9641393423080444 -vt 0.48974609375 0.9641393423080444 -vt 0.48974609375 0.9969262480735779 -vt 0.50537109375 0.9969262480735779 -vt 0.50537109375 0.9641393423080444 -vt 0.50634765625 0.9641393423080444 -vt 0.50634765625 0.9969262480735779 -vt 0.52197265625 0.9969262480735779 -vt 0.52197265625 0.9641393423080444 -vt 0.94580078125 0.9641393423080444 -vt 0.94580078125 0.9969262480735779 -vt 0.96142578125 0.9969262480735779 -vt 0.96142578125 0.9641393423080444 -vt 0.15869140625 0.9661885499954224 -vt 0.15869140625 0.998975396156311 -vt 0.17431640625 0.998975396156311 -vt 0.17431640625 0.9661885499954224 -vt 0.17529296875 0.9661885499954224 -vt 0.17529296875 0.998975396156311 -vt 0.19091796875 0.998975396156311 -vt 0.19091796875 0.9661885499954224 -vt 0.28369140625 0.9661885499954224 -vt 0.28369140625 0.998975396156311 -vt 0.29931640625 0.998975396156311 -vt 0.29931640625 0.9661885499954224 -vt 0.30029296875 0.9661885499954224 -vt 0.30029296875 0.998975396156311 -vt 0.31591796875 0.998975396156311 -vt 0.31591796875 0.9661885499954224 -vt 0.31689453125 0.9661885499954224 -vt 0.31689453125 0.998975396156311 -vt 0.33251953125 0.998975396156311 -vt 0.33251953125 0.9661885499954224 -vt 0.53759765625 0.9661885499954224 -vt 0.53759765625 0.998975396156311 -vt 0.55322265625 0.998975396156311 -vt 0.55322265625 0.9661885499954224 -vt 0.55419921875 0.9661885499954224 -vt 0.55419921875 0.998975396156311 -vt 0.56982421875 0.998975396156311 -vt 0.56982421875 0.9661885499954224 -vt 0.57080078125 0.9661885499954224 -vt 0.57080078125 0.998975396156311 -vt 0.58642578125 0.998975396156311 -vt 0.58642578125 0.9661885499954224 -vt 0.64599609375 0.9661885499954224 -vt 0.64599609375 0.998975396156311 -vt 0.66162109375 0.998975396156311 -vt 0.66162109375 0.9661885499954224 +v -1152 671 0 +v -1152 1343 0 +v -1440 1343 0 +v -1440 671 0 +v -1152 31 0 +v -1152 671 0 +v -1440 671 0 +v -1440 31 0 +v -832 607 0 +v -832 927 0 +v -1152 927 0 +v -1152 607 0 +v -512 607 0 +v -512 927 0 +v -832 927 0 +v -832 607 0 +v -64 319 0 +v -64 607 0 +v -384 607 0 +v -384 319 0 +v -384 319 0 +v -384 607 0 +v -672 607 0 +v -672 319 0 +v -960 927 0 +v -960 1215 0 +v -1152 1215 0 +v -1152 927 0 +v -960 1215 0 +v -960 1503 0 +v -1152 1503 0 +v -1152 1215 0 +v -1440 735 0 +v -1440 991 0 +v -1632 991 0 +v -1632 735 0 +v -1440 991 0 +v -1440 1247 0 +v -1632 1247 0 +v -1632 991 0 +v -704 223 0 +v -704 479 0 +v -832 479 0 +v -832 223 0 +v -1440 1247 0 +v -1440 1407 0 +v -1632 1407 0 +v -1632 1247 0 +v -1152 1343 0 +v -1152 1503 0 +v -1312 1503 0 +v -1312 1343 0 +v -1632 1663 0 +v -1632 2047 0 +v -1696 2047 0 +v -1696 1663 0 +v -1632 1311 0 +v -1632 1663 0 +v -1696 1663 0 +v -1696 1311 0 +v -992 1503 0 +v -992 1599 0 +v -1216 1599 0 +v -1216 1503 0 +v -1440 223 0 +v -1440 447 0 +v -1536 447 0 +v -1536 223 0 +v -800 479 0 +v -800 607 0 +v -960 607 0 +v -960 479 0 +v -800 927 0 +v -800 1055 0 +v -960 1055 0 +v -960 927 0 +v -1024 95 0 +v -1024 255 0 +v -1152 255 0 +v -1152 95 0 +v -1440 31 0 +v -1440 223 0 +v -1536 223 0 +v -1536 31 0 +v -192 191 0 +v -192 255 0 +v -448 255 0 +v -448 191 0 +v -448 191 0 +v -448 255 0 +v -704 255 0 +v -704 191 0 +v -832 1311 0 +v -832 1439 0 +v -928 1439 0 +v -928 1311 0 +v -800 1599 0 +v -800 1727 0 +v -896 1727 0 +v -896 1599 0 +v -1632 1055 0 +v -1632 1183 0 +v -1728 1183 0 +v -1728 1055 0 +v -256 607 0 +v -256 703 0 +v -384 703 0 +v -384 607 0 +v -1632 927 0 +v -1632 1055 0 +v -1728 1055 0 +v -1728 927 0 +v -384 607 0 +v -384 703 0 +v -512 703 0 +v -512 607 0 +v -1600 31 0 +v -1600 159 0 +v -1696 159 0 +v -1696 31 0 +v -1600 159 0 +v -1600 287 0 +v -1696 287 0 +v -1696 159 0 +v -1888 735 0 +v -1888 895 0 +v -1937 895 0 +v -1937 735 0 +v -1760 959 0 +v -1760 1055 0 +v -1856 1055 0 +v -1856 959 0 +v -896 1535 0 +v -896 1631 0 +v -992 1631 0 +v -992 1535 0 +v -128 287 0 +v -128 319 0 +v -416 319 0 +v -416 287 0 +v -416 287 0 +v -416 319 0 +v -704 319 0 +v -704 287 0 +v -1888 607 0 +v -1888 735 0 +v -1937 735 0 +v -1937 607 0 +v -1408 1503 0 +v -1408 1567 0 +v -1536 1567 0 +v -1536 1503 0 +v -1344 1407 0 +v -1344 1535 0 +v -1408 1535 0 +v -1408 1407 0 +v -0 415 0 +v -0 543 0 +v -64 543 0 +v -64 415 0 +v -1088 479 0 +v -1088 607 0 +v -1152 607 0 +v -1152 479 0 +v -1536 31 0 +v -1536 223 0 +v -1568 223 0 +v -1568 31 0 +v -1536 1503 0 +v -1536 1567 0 +v -1632 1567 0 +v -1632 1503 0 +v -1536 223 0 +v -1536 415 0 +v -1568 415 0 +v -1568 223 0 +v -1696 159 0 +v -1696 255 0 +v -1760 255 0 +v -1760 159 0 +v -768 1343 0 +v -768 1407 0 +v -832 1407 0 +v -832 1343 0 +v -448 831 0 +v -448 895 0 +v -512 895 0 +v -512 831 0 +v -1280 0 0 +v -1280 31 0 +v -1408 31 0 +v -1408 0 0 +v -1440 1439 0 +v -1440 1503 0 +v -1504 1503 0 +v -1504 1439 0 +v -1472 671 0 +v -1472 735 0 +v -1536 735 0 +v -1536 671 0 +v -1792 479 0 +v -1792 543 0 +v -1856 543 0 +v -1856 479 0 +v -320 703 0 +v -320 767 0 +v -384 767 0 +v -384 703 0 +v -448 703 0 +v -448 767 0 +v -512 767 0 +v -512 703 0 +v -1568 319 0 +v -1568 447 0 +v -1600 447 0 +v -1600 319 0 +v -1856 863 0 +v -1856 991 0 +v -1888 991 0 +v -1888 863 0 +v -1696 95 0 +v -1696 159 0 +v -1760 159 0 +v -1760 95 0 +v -1568 191 0 +v -1568 319 0 +v -1600 319 0 +v -1600 191 0 +v -160 255 0 +v -160 287 0 +v -288 287 0 +v -288 255 0 +v -832 351 0 +v -832 479 0 +v -864 479 0 +v -864 351 0 +v -288 255 0 +v -288 287 0 +v -416 287 0 +v -416 255 0 +v -672 383 0 +v -672 479 0 +v -704 479 0 +v -704 383 0 +v -1440 639 0 +v -1440 735 0 +v -1472 735 0 +v -1472 639 0 +v -928 1119 0 +v -928 1215 0 +v -960 1215 0 +v -960 1119 0 +v -1856 767 0 +v -1856 863 0 +v -1888 863 0 +v -1888 767 0 +v -1568 63 0 +v -1568 159 0 +v -1600 159 0 +v -1600 63 0 +v -832 255 0 +v -832 351 0 +v -864 351 0 +v -864 255 0 +v -1696 415 0 +v -1696 447 0 +v -1792 447 0 +v -1792 415 0 +v -512 255 0 +v -512 287 0 +v -608 287 0 +v -608 255 0 +v -704 927 0 +v -704 959 0 +v -800 959 0 +v -800 927 0 +v -1600 415 0 +v -1600 447 0 +v -1696 447 0 +v -1696 415 0 +v -608 927 0 +v -608 959 0 +v -704 959 0 +v -704 927 0 +v -1408 0 0 +v -1408 31 0 +v -1504 31 0 +v -1504 0 0 +v -1696 1791 0 +v -1696 1887 0 +v -1728 1887 0 +v -1728 1791 0 +v -1408 1407 0 +v -1408 1503 0 +v -1440 1503 0 +v -1440 1407 0 +v -608 255 0 +v -608 287 0 +v -704 287 0 +v -704 255 0 +v -1696 1887 0 +v -1696 1983 0 +v -1728 1983 0 +v -1728 1887 0 +v -1600 1599 0 +v -1600 1663 0 +v -1632 1663 0 +v -1632 1599 0 +v -768 511 0 +v -768 575 0 +v -800 575 0 +v -800 511 0 +v -1504 1471 0 +v -1504 1503 0 +v -1568 1503 0 +v -1568 1471 0 +v -1216 1567 0 +v -1216 1599 0 +v -1280 1599 0 +v -1280 1567 0 +v -832 1567 0 +v -832 1599 0 +v -896 1599 0 +v -896 1567 0 +v -672 543 0 +v -672 607 0 +v -704 607 0 +v -704 543 0 +v -1440 479 0 +v -1440 543 0 +v -1472 543 0 +v -1472 479 0 +v -416 799 0 +v -416 863 0 +v -448 863 0 +v -448 799 0 +v -384 767 0 +v -384 831 0 +v -416 831 0 +v -416 767 0 +v -1632 383 0 +v -1632 415 0 +v -1696 415 0 +v -1696 383 0 +v -768 1663 0 +v -768 1727 0 +v -800 1727 0 +v -800 1663 0 +v -896 1631 0 +v -896 1695 0 +v -928 1695 0 +v -928 1631 0 +v -1760 223 0 +v -1760 287 0 +v -1792 287 0 +v -1792 223 0 +v -1728 31 0 +v -1728 95 0 +v -1760 95 0 +v -1760 31 0 +v -1120 255 0 +v -1120 319 0 +v -1152 319 0 +v -1152 255 0 +v -1792 223 0 +v -1792 287 0 +v -1824 287 0 +v -1824 223 0 +v -864 415 0 +v -864 479 0 +v -896 479 0 +v -896 415 0 +v -32 351 0 +v -32 415 0 +v -64 415 0 +v -64 351 0 +v -1088 63 0 +v -1088 95 0 +v -1152 95 0 +v -1152 63 0 +v -1600 0 0 +v -1600 31 0 +v -1664 31 0 +v -1664 0 0 +v -960 191 0 +v -960 255 0 +v -992 255 0 +v -992 191 0 +v -480 159 0 +v -480 191 0 +v -544 191 0 +v -544 159 0 +v -1888 543 0 +v -1888 607 0 +v -1920 607 0 +v -1920 543 0 +v -512 1087 0 +v -512 1151 0 +v -544 1151 0 +v -544 1087 0 +v -896 1055 0 +v -896 1119 0 +v -928 1119 0 +v -928 1055 0 +v -1600 1439 0 +v -1600 1503 0 +v -1632 1503 0 +v -1632 1439 0 +v -1632 1247 0 +v -1632 1311 0 +v -1664 1311 0 +v -1664 1247 0 +v -1888 895 0 +v -1888 959 0 +v -1920 959 0 +v -1920 895 0 +v -960 543 0 +v -960 607 0 +v -992 607 0 +v -992 543 0 +v -1760 1055 0 +v -1760 1119 0 +v -1792 1119 0 +v -1792 1055 0 +v -768 959 0 +v -768 1023 0 +v -800 1023 0 +v -800 959 0 +v -1824 895 0 +v -1824 959 0 +v -1856 959 0 +v -1856 895 0 +v -928 1343 0 +v -928 1407 0 +v -960 1407 0 +v -960 1343 0 +v -1504 1407 0 +v -1504 1439 0 +v -1568 1439 0 +v -1568 1407 0 +v -1312 1375 0 +v -1312 1439 0 +v -1344 1439 0 +v -1344 1375 0 +v -928 1407 0 +v -928 1471 0 +v -960 1471 0 +v -960 1407 0 +v -1728 1087 0 +v -1728 1151 0 +v -1760 1151 0 +v -1760 1087 0 +v -192 607 0 +v -192 639 0 +v -256 639 0 +v -256 607 0 +v -1856 575 0 +v -1856 639 0 +v -1888 639 0 +v -1888 575 0 +v -1728 1023 0 +v -1728 1087 0 +v -1760 1087 0 +v -1760 1023 0 +v -128 607 0 +v -128 639 0 +v -192 639 0 +v -192 607 0 +v -1312 1439 0 +v -1312 1503 0 +v -1344 1503 0 +v -1344 1439 0 +v -1440 575 0 +v -1440 639 0 +v -1472 639 0 +v -1472 575 0 +v -672 319 0 +v -672 383 0 +v -704 383 0 +v -704 319 0 +v -1408 1343 0 +v -1408 1407 0 +v -1440 1407 0 +v -1440 1343 0 +v -928 1055 0 +v -928 1119 0 +v -960 1119 0 +v -960 1055 0 +v -1568 0 0 +v -1568 63 0 +v -1600 63 0 +v -1600 0 0 +v -1504 1567 0 +v -1504 1599 0 +v -1568 1599 0 +v -1568 1567 0 +v -1568 1567 0 +v -1568 1599 0 +v -1632 1599 0 +v -1632 1567 0 +v -1696 1631 0 +v -1696 1695 0 +v -1728 1695 0 +v -1728 1631 0 +v -1696 1567 0 +v -1696 1631 0 +v -1728 1631 0 +v -1728 1567 0 +v -1856 511 0 +v -1856 575 0 +v -1888 575 0 +v -1888 511 0 +v -1600 287 0 +v -1600 351 0 +v -1632 351 0 +v -1632 287 0 +v -1568 1407 0 +v -1568 1439 0 +v -1632 1439 0 +v -1632 1407 0 +v -1600 351 0 +v -1600 415 0 +v -1632 415 0 +v -1632 351 0 +v -1152 1599 0 +v -1152 1631 0 +v -1216 1631 0 +v -1216 1599 0 +v -992 159 0 +v -992 223 0 +v -1024 223 0 +v -1024 159 0 +v -992 223 0 +v -992 287 0 +v -1024 287 0 +v -1024 223 0 +v -1760 447 0 +v -1760 479 0 +v -1824 479 0 +v -1824 447 0 +v -1120 351 0 +v -1120 415 0 +v -1152 415 0 +v -1152 351 0 +v -1120 415 0 +v -1120 479 0 +v -1152 479 0 +v -1152 415 0 +v -1696 447 0 +v -1696 479 0 +v -1760 479 0 +v -1760 447 0 +v -448 799 0 +v -448 831 0 +v -480 831 0 +v -480 799 0 +v -288 703 0 +v -288 735 0 +v -320 735 0 +v -320 703 0 +v -736 959 0 +v -736 991 0 +v -768 991 0 +v -768 959 0 +v -1792 927 0 +v -1792 959 0 +v -1824 959 0 +v -1824 927 0 +v -1536 703 0 +v -1536 735 0 +v -1568 735 0 +v -1568 703 0 +v -704 575 0 +v -704 607 0 +v -736 607 0 +v -736 575 0 +v -416 703 0 +v -416 735 0 +v -448 735 0 +v -448 703 0 +v -352 767 0 +v -352 799 0 +v -384 799 0 +v -384 767 0 +v -224 639 0 +v -224 671 0 +v -256 671 0 +v -256 639 0 +v -480 767 0 +v -480 799 0 +v -512 799 0 +v -512 767 0 +v -32 543 0 +v -32 575 0 +v -64 575 0 +v -64 543 0 +v -896 351 0 +v -896 383 0 +v -928 383 0 +v -928 351 0 +v -1472 447 0 +v -1472 479 0 +v -1504 479 0 +v -1504 447 0 +v -1632 287 0 +v -1632 319 0 +v -1664 319 0 +v -1664 287 0 +v -1760 0 0 +v -1760 31 0 +v -1792 31 0 +v -1792 0 0 +v -1024 255 0 +v -1024 287 0 +v -1056 287 0 +v -1056 255 0 +v -1824 543 0 +v -1824 575 0 +v -1856 575 0 +v -1856 543 0 +v -1824 255 0 +v -1824 287 0 +v -1856 287 0 +v -1856 255 0 +v -736 479 0 +v -736 511 0 +v -768 511 0 +v -768 479 0 +v -896 447 0 +v -896 479 0 +v -928 479 0 +v -928 447 0 +v -1760 479 0 +v -1760 511 0 +v -1792 511 0 +v -1792 479 0 +v -1792 1055 0 +v -1792 1087 0 +v -1824 1087 0 +v -1824 1055 0 +v -1440 447 0 +v -1440 479 0 +v -1472 479 0 +v -1472 447 0 +v -768 479 0 +v -768 511 0 +v -800 511 0 +v -800 479 0 +v -1696 383 0 +v -1696 415 0 +v -1728 415 0 +v -1728 383 0 +v -1728 0 0 +v -1728 31 0 +v -1760 31 0 +v -1760 0 0 +v -1760 191 0 +v -1760 223 0 +v -1792 223 0 +v -1792 191 0 +v -1824 863 0 +v -1824 895 0 +v -1856 895 0 +v -1856 863 0 +v -1216 1599 0 +v -1216 1631 0 +v -1248 1631 0 +v -1248 1599 0 +v -416 767 0 +v -416 799 0 +v -448 799 0 +v -448 767 0 +v -672 511 0 +v -672 543 0 +v -704 543 0 +v -704 511 0 +v -384 735 0 +v -384 767 0 +v -416 767 0 +v -416 735 0 +v -928 1631 0 +v -928 1663 0 +v -960 1663 0 +v -960 1631 0 +v -800 1311 0 +v -800 1343 0 +v -832 1343 0 +v -832 1311 0 +v -1376 1343 0 +v -1376 1375 0 +v -1408 1375 0 +v -1408 1343 0 +v -1632 1183 0 +v -1632 1215 0 +v -1664 1215 0 +v -1664 1183 0 +v -864 1055 0 +v -864 1087 0 +v -896 1087 0 +v -896 1055 0 +v -640 1087 0 +v -640 1119 0 +v -672 1119 0 +v -672 1087 0 +v -1248 1535 0 +v -1248 1567 0 +v -1280 1567 0 +v -1280 1535 0 +v -992 1599 0 +v -992 1631 0 +v -1024 1631 0 +v -1024 1599 0 +v -1216 1503 0 +v -1216 1535 0 +v -1248 1535 0 +v -1248 1503 0 +v -1344 1375 0 +v -1344 1407 0 +v -1376 1407 0 +v -1376 1375 0 +v -896 1439 0 +v -896 1471 0 +v -928 1471 0 +v -928 1439 0 +vt 0.0004882812 0.001024604 +vt 0.0004882812 0.6895492 +vt 0.1411133 0.6895492 +vt 0.1411133 0.001024604 +vt 0.1420898 0.001024604 +vt 0.1420898 0.6567623 +vt 0.2827148 0.6567623 +vt 0.2827148 0.001024604 +vt 0.2836914 0.001024604 +vt 0.2836914 0.3288934 +vt 0.4399414 0.3288934 +vt 0.4399414 0.001024604 +vt 0.440918 0.001024604 +vt 0.440918 0.3288934 +vt 0.597168 0.3288934 +vt 0.597168 0.001024604 +vt 0.5981445 0.001024604 +vt 0.5981445 0.2961066 +vt 0.7543945 0.2961066 +vt 0.7543945 0.001024604 +vt 0.7553711 0.001024604 +vt 0.7553711 0.2961066 +vt 0.8959961 0.2961066 +vt 0.8959961 0.001024604 +vt 0.8969727 0.001024604 +vt 0.8969727 0.2961066 +vt 0.9907227 0.2961066 +vt 0.9907227 0.001024604 +vt 0.5981445 0.2981557 +vt 0.5981445 0.5932377 +vt 0.6918945 0.5932377 +vt 0.6918945 0.2981557 +vt 0.6928711 0.2981557 +vt 0.6928711 0.5604508 +vt 0.7866211 0.5604508 +vt 0.7866211 0.2981557 +vt 0.7875977 0.2981557 +vt 0.7875977 0.5604508 +vt 0.8813477 0.5604508 +vt 0.8813477 0.2981557 +vt 0.8823242 0.2981557 +vt 0.8823242 0.5604508 +vt 0.9448242 0.5604508 +vt 0.9448242 0.2981557 +vt 0.2836914 0.3309426 +vt 0.2836914 0.494877 +vt 0.3774414 0.494877 +vt 0.3774414 0.3309426 +vt 0.378418 0.3309426 +vt 0.378418 0.494877 +vt 0.456543 0.494877 +vt 0.456543 0.3309426 +vt 0.9458008 0.2981557 +vt 0.9458008 0.6915984 +vt 0.9770508 0.6915984 +vt 0.9770508 0.2981557 +vt 0.4575195 0.3309426 +vt 0.4575195 0.6915984 +vt 0.4887695 0.6915984 +vt 0.4887695 0.3309426 +vt 0.2836914 0.4969262 +vt 0.2836914 0.5952868 +vt 0.3930664 0.5952868 +vt 0.3930664 0.4969262 +vt 0.4897461 0.3309426 +vt 0.4897461 0.5604508 +vt 0.5366211 0.5604508 +vt 0.5366211 0.3309426 +vt 0.4897461 0.5625 +vt 0.4897461 0.6936475 +vt 0.5678711 0.6936475 +vt 0.5678711 0.5625 +vt 0.6928711 0.5625 +vt 0.6928711 0.6936475 +vt 0.7709961 0.6936475 +vt 0.7709961 0.5625 +vt 0.394043 0.4969262 +vt 0.394043 0.6608607 +vt 0.456543 0.6608607 +vt 0.456543 0.4969262 +vt 0.7719727 0.5625 +vt 0.7719727 0.7592213 +vt 0.8188477 0.7592213 +vt 0.8188477 0.5625 +vt 0.8198242 0.5625 +vt 0.8198242 0.6280738 +vt 0.9448242 0.6280738 +vt 0.9448242 0.5625 +vt 0.8198242 0.630123 +vt 0.8198242 0.6956967 +vt 0.9448242 0.6956967 +vt 0.9448242 0.630123 +vt 0.5981445 0.5952868 +vt 0.5981445 0.7264345 +vt 0.6450195 0.7264345 +vt 0.6450195 0.5952868 +vt 0.2836914 0.5973361 +vt 0.2836914 0.7284836 +vt 0.3305664 0.7284836 +vt 0.3305664 0.5973361 +vt 0.331543 0.5973361 +vt 0.331543 0.7284836 +vt 0.378418 0.7284836 +vt 0.378418 0.5973361 +vt 0.1420898 0.6588115 +vt 0.1420898 0.7571721 +vt 0.2045898 0.7571721 +vt 0.2045898 0.6588115 +vt 0.2055664 0.6588115 +vt 0.2055664 0.789959 +vt 0.2524414 0.789959 +vt 0.2524414 0.6588115 +vt 0.394043 0.6629099 +vt 0.394043 0.7612705 +vt 0.456543 0.7612705 +vt 0.456543 0.6629099 +vt 0.0004882812 0.6915984 +vt 0.0004882812 0.8227459 +vt 0.04736328 0.8227459 +vt 0.04736328 0.6915984 +vt 0.04833984 0.6915984 +vt 0.04833984 0.8227459 +vt 0.09521484 0.8227459 +vt 0.09521484 0.6915984 +vt 0.5688477 0.3309426 +vt 0.5688477 0.494877 +vt 0.5932617 0.494877 +vt 0.5932617 0.3309426 +vt 0.9458008 0.6936475 +vt 0.9458008 0.7920082 +vt 0.9926758 0.7920082 +vt 0.9926758 0.6936475 +vt 0.4897461 0.6956967 +vt 0.4897461 0.7940574 +vt 0.5366211 0.7940574 +vt 0.5366211 0.6956967 +vt 0.5981445 0.7284836 +vt 0.5981445 0.7612705 +vt 0.7387695 0.7612705 +vt 0.7387695 0.7284836 +vt 0.7719727 0.7612705 +vt 0.7719727 0.7940574 +vt 0.9125977 0.7940574 +vt 0.9125977 0.7612705 +vt 0.5688477 0.4969262 +vt 0.5688477 0.6280738 +vt 0.5932617 0.6280738 +vt 0.5932617 0.4969262 +vt 0.2836914 0.7305328 +vt 0.2836914 0.7961066 +vt 0.3461914 0.7961066 +vt 0.3461914 0.7305328 +vt 0.09619141 0.6915984 +vt 0.09619141 0.8227459 +vt 0.1274414 0.8227459 +vt 0.1274414 0.6915984 +vt 0.4575195 0.6936475 +vt 0.4575195 0.8247951 +vt 0.4887695 0.8247951 +vt 0.4887695 0.6936475 +vt 0.5375977 0.6956967 +vt 0.5375977 0.8268443 +vt 0.5688477 0.8268443 +vt 0.5688477 0.6956967 +vt 0.5698242 0.630123 +vt 0.5698242 0.8268443 +vt 0.5854492 0.8268443 +vt 0.5854492 0.630123 +vt 0.1420898 0.7592213 +vt 0.1420898 0.8247951 +vt 0.1889648 0.8247951 +vt 0.1889648 0.7592213 +vt 0.253418 0.6588115 +vt 0.253418 0.8555328 +vt 0.269043 0.8555328 +vt 0.269043 0.6588115 +vt 0.7397461 0.6956967 +vt 0.7397461 0.7940574 +vt 0.7709961 0.7940574 +vt 0.7709961 0.6956967 +vt 0.9135742 0.6977459 +vt 0.9135742 0.7633197 +vt 0.9448242 0.7633197 +vt 0.9448242 0.6977459 +vt 0.347168 0.7305328 +vt 0.347168 0.7961066 +vt 0.378418 0.7961066 +vt 0.378418 0.7305328 +vt 0.394043 0.7633197 +vt 0.394043 0.7961066 +vt 0.456543 0.7961066 +vt 0.456543 0.7633197 +vt 0.5981445 0.7633197 +vt 0.5981445 0.8288934 +vt 0.6293945 0.8288934 +vt 0.6293945 0.7633197 +vt 0.6303711 0.7633197 +vt 0.6303711 0.8288934 +vt 0.6616211 0.8288934 +vt 0.6616211 0.7633197 +vt 0.6625977 0.7633197 +vt 0.6625977 0.8288934 +vt 0.6938477 0.8288934 +vt 0.6938477 0.7633197 +vt 0.6948242 0.7633197 +vt 0.6948242 0.8288934 +vt 0.7260742 0.8288934 +vt 0.7260742 0.7633197 +vt 0.9135742 0.7653688 +vt 0.9135742 0.8309426 +vt 0.9448242 0.8309426 +vt 0.9448242 0.7653688 +vt 0.2055664 0.7920082 +vt 0.2055664 0.9231557 +vt 0.2211914 0.9231557 +vt 0.2211914 0.7920082 +vt 0.222168 0.7920082 +vt 0.222168 0.9231557 +vt 0.237793 0.9231557 +vt 0.237793 0.7920082 +vt 0.9458008 0.7940574 +vt 0.9458008 0.8596312 +vt 0.9770508 0.8596312 +vt 0.9770508 0.7940574 +vt 0.9780273 0.7940574 +vt 0.9780273 0.9252049 +vt 0.9936523 0.9252049 +vt 0.9936523 0.7940574 +vt 0.7397461 0.7961066 +vt 0.7397461 0.8288934 +vt 0.8022461 0.8288934 +vt 0.8022461 0.7961066 +vt 0.4897461 0.7961066 +vt 0.4897461 0.9272541 +vt 0.5053711 0.9272541 +vt 0.5053711 0.7961066 +vt 0.8032227 0.7961066 +vt 0.8032227 0.8288934 +vt 0.8657227 0.8288934 +vt 0.8657227 0.7961066 +vt 0.5063477 0.7961066 +vt 0.5063477 0.8944672 +vt 0.5219727 0.8944672 +vt 0.5219727 0.7961066 +vt 0.8666992 0.7961066 +vt 0.8666992 0.8944672 +vt 0.8823242 0.8944672 +vt 0.8823242 0.7961066 +vt 0.8833008 0.7961066 +vt 0.8833008 0.8944672 +vt 0.8989258 0.8944672 +vt 0.8989258 0.7961066 +vt 0.2836914 0.7981557 +vt 0.2836914 0.8965164 +vt 0.2993164 0.8965164 +vt 0.2993164 0.7981557 +vt 0.300293 0.7981557 +vt 0.300293 0.8965164 +vt 0.315918 0.8965164 +vt 0.315918 0.7981557 +vt 0.3168945 0.7981557 +vt 0.3168945 0.8965164 +vt 0.3325195 0.8965164 +vt 0.3325195 0.7981557 +vt 0.3334961 0.7981557 +vt 0.3334961 0.8309426 +vt 0.3803711 0.8309426 +vt 0.3803711 0.7981557 +vt 0.394043 0.7981557 +vt 0.394043 0.8309426 +vt 0.440918 0.8309426 +vt 0.440918 0.7981557 +vt 0.0004882812 0.8247951 +vt 0.0004882812 0.857582 +vt 0.04736328 0.857582 +vt 0.04736328 0.8247951 +vt 0.04833984 0.8247951 +vt 0.04833984 0.857582 +vt 0.09521484 0.857582 +vt 0.09521484 0.8247951 +vt 0.1420898 0.8268443 +vt 0.1420898 0.8596312 +vt 0.1889648 0.8596312 +vt 0.1889648 0.8268443 +vt 0.5375977 0.8288934 +vt 0.5375977 0.8616803 +vt 0.5844727 0.8616803 +vt 0.5844727 0.8288934 +vt 0.09619141 0.8247951 +vt 0.09619141 0.9231557 +vt 0.1118164 0.9231557 +vt 0.1118164 0.8247951 +vt 0.112793 0.8247951 +vt 0.112793 0.9231557 +vt 0.128418 0.9231557 +vt 0.128418 0.8247951 +vt 0.5981445 0.8309426 +vt 0.5981445 0.8637295 +vt 0.6450195 0.8637295 +vt 0.6450195 0.8309426 +vt 0.4575195 0.8268443 +vt 0.4575195 0.9252049 +vt 0.4731445 0.9252049 +vt 0.4731445 0.8268443 +vt 0.6459961 0.8309426 +vt 0.6459961 0.8965164 +vt 0.6616211 0.8965164 +vt 0.6616211 0.8309426 +vt 0.6625977 0.8309426 +vt 0.6625977 0.8965164 +vt 0.6782227 0.8965164 +vt 0.6782227 0.8309426 +vt 0.6791992 0.8309426 +vt 0.6791992 0.8637295 +vt 0.7104492 0.8637295 +vt 0.7104492 0.8309426 +vt 0.7114258 0.8309426 +vt 0.7114258 0.8637295 +vt 0.7426758 0.8637295 +vt 0.7426758 0.8309426 +vt 0.7436523 0.8309426 +vt 0.7436523 0.8637295 +vt 0.7749023 0.8637295 +vt 0.7749023 0.8309426 +vt 0.7758789 0.8309426 +vt 0.7758789 0.8965164 +vt 0.7915039 0.8965164 +vt 0.7915039 0.8309426 +vt 0.7924805 0.8309426 +vt 0.7924805 0.8965164 +vt 0.8081055 0.8965164 +vt 0.8081055 0.8309426 +vt 0.809082 0.8309426 +vt 0.809082 0.8965164 +vt 0.824707 0.8965164 +vt 0.824707 0.8309426 +vt 0.8256836 0.8309426 +vt 0.8256836 0.8965164 +vt 0.8413086 0.8965164 +vt 0.8413086 0.8309426 +vt 0.3334961 0.8329918 +vt 0.3334961 0.8657787 +vt 0.3647461 0.8657787 +vt 0.3647461 0.8329918 +vt 0.8422852 0.8309426 +vt 0.8422852 0.8965164 +vt 0.8579102 0.8965164 +vt 0.8579102 0.8309426 +vt 0.3657227 0.8329918 +vt 0.3657227 0.8985656 +vt 0.3813477 0.8985656 +vt 0.3813477 0.8329918 +vt 0.394043 0.8329918 +vt 0.394043 0.8985656 +vt 0.409668 0.8985656 +vt 0.409668 0.8329918 +vt 0.4106445 0.8329918 +vt 0.4106445 0.8985656 +vt 0.4262695 0.8985656 +vt 0.4262695 0.8329918 +vt 0.4272461 0.8329918 +vt 0.4272461 0.8985656 +vt 0.4428711 0.8985656 +vt 0.4428711 0.8329918 +vt 0.9135742 0.8329918 +vt 0.9135742 0.8985656 +vt 0.9291992 0.8985656 +vt 0.9291992 0.8329918 +vt 0.253418 0.857582 +vt 0.253418 0.9231557 +vt 0.269043 0.9231557 +vt 0.269043 0.857582 +vt 0.0004882812 0.8596312 +vt 0.0004882812 0.9252049 +vt 0.01611328 0.9252049 +vt 0.01611328 0.8596312 +vt 0.01708984 0.8596312 +vt 0.01708984 0.892418 +vt 0.04833984 0.892418 +vt 0.04833984 0.8596312 +vt 0.04931641 0.8596312 +vt 0.04931641 0.892418 +vt 0.08056641 0.892418 +vt 0.08056641 0.8596312 +vt 0.1420898 0.8616803 +vt 0.1420898 0.9272541 +vt 0.1577148 0.9272541 +vt 0.1577148 0.8616803 +vt 0.1586914 0.8616803 +vt 0.1586914 0.8944672 +vt 0.1899414 0.8944672 +vt 0.1899414 0.8616803 +vt 0.9458008 0.8616803 +vt 0.9458008 0.9272541 +vt 0.9614258 0.9272541 +vt 0.9614258 0.8616803 +vt 0.5375977 0.8637295 +vt 0.5375977 0.9293033 +vt 0.5532227 0.9293033 +vt 0.5532227 0.8637295 +vt 0.5541992 0.8637295 +vt 0.5541992 0.9293033 +vt 0.5698242 0.9293033 +vt 0.5698242 0.8637295 +vt 0.5708008 0.8637295 +vt 0.5708008 0.9293033 +vt 0.5864258 0.9293033 +vt 0.5864258 0.8637295 +vt 0.5981445 0.8657787 +vt 0.5981445 0.9313524 +vt 0.6137695 0.9313524 +vt 0.6137695 0.8657787 +vt 0.6147461 0.8657787 +vt 0.6147461 0.9313524 +vt 0.6303711 0.9313524 +vt 0.6303711 0.8657787 +vt 0.6791992 0.8657787 +vt 0.6791992 0.9313524 +vt 0.6948242 0.9313524 +vt 0.6948242 0.8657787 +vt 0.6958008 0.8657787 +vt 0.6958008 0.9313524 +vt 0.7114258 0.9313524 +vt 0.7114258 0.8657787 +vt 0.7124023 0.8657787 +vt 0.7124023 0.9313524 +vt 0.7280273 0.9313524 +vt 0.7280273 0.8657787 +vt 0.7290039 0.8657787 +vt 0.7290039 0.9313524 +vt 0.7446289 0.9313524 +vt 0.7446289 0.8657787 +vt 0.7456055 0.8657787 +vt 0.7456055 0.9313524 +vt 0.7612305 0.9313524 +vt 0.7612305 0.8657787 +vt 0.3334961 0.8678279 +vt 0.3334961 0.9006147 +vt 0.3647461 0.9006147 +vt 0.3647461 0.8678279 +vt 0.01708984 0.8944672 +vt 0.01708984 0.960041 +vt 0.03271484 0.960041 +vt 0.03271484 0.8944672 +vt 0.03369141 0.8944672 +vt 0.03369141 0.960041 +vt 0.04931641 0.960041 +vt 0.04931641 0.8944672 +vt 0.05029297 0.8944672 +vt 0.05029297 0.960041 +vt 0.06591797 0.960041 +vt 0.06591797 0.8944672 +vt 0.1586914 0.8965164 +vt 0.1586914 0.9293033 +vt 0.1899414 0.9293033 +vt 0.1899414 0.8965164 +vt 0.06689453 0.8944672 +vt 0.06689453 0.960041 +vt 0.08251953 0.960041 +vt 0.08251953 0.8944672 +vt 0.5063477 0.8965164 +vt 0.5063477 0.9620901 +vt 0.5219727 0.9620901 +vt 0.5219727 0.8965164 +vt 0.8666992 0.8965164 +vt 0.8666992 0.9293033 +vt 0.8979492 0.9293033 +vt 0.8979492 0.8965164 +vt 0.2836914 0.8985656 +vt 0.2836914 0.9641393 +vt 0.2993164 0.9641393 +vt 0.2993164 0.8985656 +vt 0.300293 0.8985656 +vt 0.300293 0.9641393 +vt 0.315918 0.9641393 +vt 0.315918 0.8985656 +vt 0.3168945 0.8985656 +vt 0.3168945 0.9641393 +vt 0.3325195 0.9641393 +vt 0.3325195 0.8985656 +vt 0.6459961 0.8985656 +vt 0.6459961 0.9641393 +vt 0.6616211 0.9641393 +vt 0.6616211 0.8985656 +vt 0.6625977 0.8985656 +vt 0.6625977 0.9641393 +vt 0.6782227 0.9641393 +vt 0.6782227 0.8985656 +vt 0.7758789 0.8985656 +vt 0.7758789 0.9641393 +vt 0.7915039 0.9641393 +vt 0.7915039 0.8985656 +vt 0.7924805 0.8985656 +vt 0.7924805 0.9313524 +vt 0.8237305 0.9313524 +vt 0.8237305 0.8985656 +vt 0.824707 0.8985656 +vt 0.824707 0.9313524 +vt 0.855957 0.9313524 +vt 0.855957 0.8985656 +vt 0.3657227 0.9006147 +vt 0.3657227 0.9661885 +vt 0.3813477 0.9661885 +vt 0.3813477 0.9006147 +vt 0.394043 0.9006147 +vt 0.394043 0.9661885 +vt 0.409668 0.9661885 +vt 0.409668 0.9006147 +vt 0.4106445 0.9006147 +vt 0.4106445 0.9661885 +vt 0.4262695 0.9661885 +vt 0.4262695 0.9006147 +vt 0.4272461 0.9006147 +vt 0.4272461 0.9661885 +vt 0.4428711 0.9661885 +vt 0.4428711 0.9006147 +vt 0.9135742 0.9006147 +vt 0.9135742 0.9334016 +vt 0.9448242 0.9334016 +vt 0.9448242 0.9006147 +vt 0.3334961 0.9026639 +vt 0.3334961 0.9682377 +vt 0.3491211 0.9682377 +vt 0.3491211 0.9026639 +vt 0.09619141 0.9252049 +vt 0.09619141 0.9579918 +vt 0.1274414 0.9579918 +vt 0.1274414 0.9252049 +vt 0.2055664 0.9252049 +vt 0.2055664 0.9907787 +vt 0.2211914 0.9907787 +vt 0.2211914 0.9252049 +vt 0.222168 0.9252049 +vt 0.222168 0.9907787 +vt 0.237793 0.9907787 +vt 0.237793 0.9252049 +vt 0.4575195 0.9272541 +vt 0.4575195 0.960041 +vt 0.4887695 0.960041 +vt 0.4887695 0.9272541 +vt 0.253418 0.9252049 +vt 0.253418 0.9907787 +vt 0.269043 0.9907787 +vt 0.269043 0.9252049 +vt 0.0004882812 0.9272541 +vt 0.0004882812 0.9928279 +vt 0.01611328 0.9928279 +vt 0.01611328 0.9272541 +vt 0.9458008 0.9293033 +vt 0.9458008 0.9620901 +vt 0.9770508 0.9620901 +vt 0.9770508 0.9293033 +vt 0.9780273 0.9272541 +vt 0.9780273 0.960041 +vt 0.9936523 0.960041 +vt 0.9936523 0.9272541 +vt 0.1420898 0.9293033 +vt 0.1420898 0.9620901 +vt 0.1577148 0.9620901 +vt 0.1577148 0.9293033 +vt 0.4897461 0.9293033 +vt 0.4897461 0.9620901 +vt 0.5053711 0.9620901 +vt 0.5053711 0.9293033 +vt 0.1586914 0.9313524 +vt 0.1586914 0.9641393 +vt 0.1743164 0.9641393 +vt 0.1743164 0.9313524 +vt 0.175293 0.9313524 +vt 0.175293 0.9641393 +vt 0.190918 0.9641393 +vt 0.190918 0.9313524 +vt 0.5375977 0.9313524 +vt 0.5375977 0.9641393 +vt 0.5532227 0.9641393 +vt 0.5532227 0.9313524 +vt 0.5541992 0.9313524 +vt 0.5541992 0.9641393 +vt 0.5698242 0.9641393 +vt 0.5698242 0.9313524 +vt 0.5708008 0.9313524 +vt 0.5708008 0.9641393 +vt 0.5864258 0.9641393 +vt 0.5864258 0.9313524 +vt 0.8666992 0.9313524 +vt 0.8666992 0.9641393 +vt 0.8823242 0.9641393 +vt 0.8823242 0.9313524 +vt 0.8833008 0.9313524 +vt 0.8833008 0.9641393 +vt 0.8989258 0.9641393 +vt 0.8989258 0.9313524 +vt 0.5981445 0.9334016 +vt 0.5981445 0.9661885 +vt 0.6137695 0.9661885 +vt 0.6137695 0.9334016 +vt 0.6147461 0.9334016 +vt 0.6147461 0.9661885 +vt 0.6303711 0.9661885 +vt 0.6303711 0.9334016 +vt 0.6791992 0.9334016 +vt 0.6791992 0.9661885 +vt 0.6948242 0.9661885 +vt 0.6948242 0.9334016 +vt 0.6958008 0.9334016 +vt 0.6958008 0.9661885 +vt 0.7114258 0.9661885 +vt 0.7114258 0.9334016 +vt 0.7124023 0.9334016 +vt 0.7124023 0.9661885 +vt 0.7280273 0.9661885 +vt 0.7280273 0.9334016 +vt 0.7290039 0.9334016 +vt 0.7290039 0.9661885 +vt 0.7446289 0.9661885 +vt 0.7446289 0.9334016 +vt 0.7456055 0.9334016 +vt 0.7456055 0.9661885 +vt 0.7612305 0.9661885 +vt 0.7612305 0.9334016 +vt 0.7924805 0.9334016 +vt 0.7924805 0.9661885 +vt 0.8081055 0.9661885 +vt 0.8081055 0.9334016 +vt 0.809082 0.9334016 +vt 0.809082 0.9661885 +vt 0.824707 0.9661885 +vt 0.824707 0.9334016 +vt 0.8256836 0.9334016 +vt 0.8256836 0.9661885 +vt 0.8413086 0.9661885 +vt 0.8413086 0.9334016 +vt 0.8422852 0.9334016 +vt 0.8422852 0.9661885 +vt 0.8579102 0.9661885 +vt 0.8579102 0.9334016 +vt 0.9135742 0.9354508 +vt 0.9135742 0.9682377 +vt 0.9291992 0.9682377 +vt 0.9291992 0.9354508 +vt 0.09619141 0.960041 +vt 0.09619141 0.9928279 +vt 0.1118164 0.9928279 +vt 0.1118164 0.960041 +vt 0.112793 0.960041 +vt 0.112793 0.9928279 +vt 0.128418 0.9928279 +vt 0.128418 0.960041 +vt 0.01708984 0.9620901 +vt 0.01708984 0.994877 +vt 0.03271484 0.994877 +vt 0.03271484 0.9620901 +vt 0.03369141 0.9620901 +vt 0.03369141 0.994877 +vt 0.04931641 0.994877 +vt 0.04931641 0.9620901 +vt 0.05029297 0.9620901 +vt 0.05029297 0.994877 +vt 0.06591797 0.994877 +vt 0.06591797 0.9620901 +vt 0.06689453 0.9620901 +vt 0.06689453 0.994877 +vt 0.08251953 0.994877 +vt 0.08251953 0.9620901 +vt 0.4575195 0.9620901 +vt 0.4575195 0.994877 +vt 0.4731445 0.994877 +vt 0.4731445 0.9620901 +vt 0.9780273 0.9620901 +vt 0.9780273 0.994877 +vt 0.9936523 0.994877 +vt 0.9936523 0.9620901 +vt 0.1420898 0.9641393 +vt 0.1420898 0.9969262 +vt 0.1577148 0.9969262 +vt 0.1577148 0.9641393 +vt 0.4897461 0.9641393 +vt 0.4897461 0.9969262 +vt 0.5053711 0.9969262 +vt 0.5053711 0.9641393 +vt 0.5063477 0.9641393 +vt 0.5063477 0.9969262 +vt 0.5219727 0.9969262 +vt 0.5219727 0.9641393 +vt 0.9458008 0.9641393 +vt 0.9458008 0.9969262 +vt 0.9614258 0.9969262 +vt 0.9614258 0.9641393 +vt 0.1586914 0.9661885 +vt 0.1586914 0.9989754 +vt 0.1743164 0.9989754 +vt 0.1743164 0.9661885 +vt 0.175293 0.9661885 +vt 0.175293 0.9989754 +vt 0.190918 0.9989754 +vt 0.190918 0.9661885 +vt 0.2836914 0.9661885 +vt 0.2836914 0.9989754 +vt 0.2993164 0.9989754 +vt 0.2993164 0.9661885 +vt 0.300293 0.9661885 +vt 0.300293 0.9989754 +vt 0.315918 0.9989754 +vt 0.315918 0.9661885 +vt 0.3168945 0.9661885 +vt 0.3168945 0.9989754 +vt 0.3325195 0.9989754 +vt 0.3325195 0.9661885 +vt 0.5375977 0.9661885 +vt 0.5375977 0.9989754 +vt 0.5532227 0.9989754 +vt 0.5532227 0.9661885 +vt 0.5541992 0.9661885 +vt 0.5541992 0.9989754 +vt 0.5698242 0.9989754 +vt 0.5698242 0.9661885 +vt 0.5708008 0.9661885 +vt 0.5708008 0.9989754 +vt 0.5864258 0.9989754 +vt 0.5864258 0.9661885 +vt 0.6459961 0.9661885 +vt 0.6459961 0.9989754 +vt 0.6616211 0.9989754 +vt 0.6616211 0.9661885 g xinzexi_2_n-mesh_0 f 3/3/3 2/2/2 1/1/1 f 1/1/1 4/4/4 3/3/3 From ed883be8d5d746161d2b6a96badc4ff6db77b2a6 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 15 Oct 2021 23:45:17 +0200 Subject: [PATCH 013/599] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index b115693a..e9d1a9e6 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,11 @@ So far following obj types can be edited: If you need advice or if you want to talk about (game) data-mining, feel free to join the [UnityPy Discord](https://discord.gg/C6txv7M). + +If you're making an income by using UnityPy, +please donate a small part to it to a charitable cause of your choice or sponsor this project with a small amount. + + 1. [Installation](#installation) 2. [Example](#example) 3. [Important Classes](#important-classes) From 0bb34eda758bad6984cbfc18511af4e6df450a9d Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Tue, 19 Oct 2021 11:21:47 +0200 Subject: [PATCH 014/599] 1.7.18 - "correct" Texture2D format selection for replacement & DXT/ETC compression added --- UnityPy/__init__.py | 2 +- UnityPy/classes/Texture2D.py | 33 +++++--- UnityPy/export/Texture2DConverter.py | 110 ++++++++++++++++++++++----- 3 files changed, 112 insertions(+), 33 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 9492cb31..ea9c67d7 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.17" +__version__ = "1.7.18" from .environment import Environment diff --git a/UnityPy/classes/Texture2D.py b/UnityPy/classes/Texture2D.py index 0fb6d225..78e3bab2 100644 --- a/UnityPy/classes/Texture2D.py +++ b/UnityPy/classes/Texture2D.py @@ -19,14 +19,22 @@ def image(self, img): if img is None: raise Exception("No image provided") - if (isinstance(img, str) or isinstance(img, BufferedIOBase) or - isinstance(img, RawIOBase) or isinstance(img, IOBase)): + if ( + isinstance(img, str) + or isinstance(img, BufferedIOBase) + or isinstance(img, RawIOBase) + or isinstance(img, IOBase) + ): img = Image.open(img) - img_data, tex_format = Texture2DConverter.image_to_texture2d(img) + img_data, tex_format = Texture2DConverter.image_to_texture2d( + img, self.m_TextureFormat + ) self.image_data = img_data # width * height * channel count - self.m_CompleteImageSize = len(self._image_data)# img.width * img.height * len(img.getbands()) + self.m_CompleteImageSize = len( + self._image_data + ) # img.width * img.height * len(img.getbands()) self.m_TextureFormat = tex_format @property @@ -34,7 +42,8 @@ def image_data(self): return self._image_data def reset_streamdata(self): - if not self.m_StreamData: return + if not self.m_StreamData: + return self.m_StreamData.offset = 0 self.m_StreamData.size = 0 self.m_StreamData.path = "" @@ -43,7 +52,7 @@ def reset_streamdata(self): def image_data(self, data: bytes): self._image_data = data # prefer writing to cab if possible - if self.m_StreamData: + if self.version >= (5, 3) and self.m_StreamData.path: cab = self.assets_file.get_writeable_cab() if cab: self.m_StreamData.offset = cab.Position @@ -53,12 +62,12 @@ def image_data(self, data: bytes): else: self.reset_streamdata() - def set_image( - self, img, target_format: TextureFormat = None, in_cab: bool = False - ): + def set_image(self, img, target_format: TextureFormat = None, in_cab: bool = False): if img is None: raise Exception("No image provided") - img_data, tex_format = Texture2DConverter.image_to_texture2d(img) + if not target_format: + target_format = self.m_TextureFormat + img_data, tex_format = Texture2DConverter.image_to_texture2d(img, target_format) if in_cab: self.image_data = img_data @@ -66,7 +75,9 @@ def set_image( self._image_data = img_data self.reset_streamdata() # width * height * channel count - self.m_CompleteImageSize = len(self._image_data)#img.width * img.height * len(img.getbands()) + self.m_CompleteImageSize = len( + self._image_data + ) # img.width * img.height * len(img.getbands()) self.m_TextureFormat = tex_format def __init__(self, reader): diff --git a/UnityPy/export/Texture2DConverter.py b/UnityPy/export/Texture2DConverter.py index 49558f61..99fb39f0 100644 --- a/UnityPy/export/Texture2DConverter.py +++ b/UnityPy/export/Texture2DConverter.py @@ -1,4 +1,5 @@ import texture2ddecoder +import etcpak from PIL import Image from copy import copy from io import BytesIO @@ -8,21 +9,70 @@ TF = TextureFormat -def image_to_texture2d(img: Image, flip: bool = True): - # tex for eventually later usage of compressions - - tex_format = None +def image_to_texture2d(img: Image, target_texture_format: TF, flip: bool = True): if flip: img = img.transpose(Image.FLIP_TOP_BOTTOM) - if img.mode == "RGBA": - tex_format = TextureFormat.RGBA32 - elif img.mode == "RGB": - tex_format = TextureFormat.RGB24 - elif img.mode == "A": - tex_format = TextureFormat.Alpha8 + # DXT + if target_texture_format in [TF.DXT1, TF.DXT1Crunched]: + raw_img = img.convert("RGBA").tobytes() + enc_img = etcpak.compress_to_dxt1(raw_img, img.width, img.height) + tex_format = TF.DXT1 + elif target_texture_format in [TF.DXT5, TF.DXT5Crunched]: + raw_img = img.convert("RGBA").tobytes() + enc_img = etcpak.compress_to_dxt5(raw_img, img.width, img.height) + tex_format = TF.DXT5 + # ETC + elif target_texture_format in [TF.ETC_RGB4, TF.ETC_RGB4Crunched, TF.ETC_RGB4_3DS]: + r, g, b, a = img.split() + raw_img = Image.merge("RGBA", (b, g, r, a)).tobytes() + enc_img = etcpak.compress_to_etc1(raw_img, img.width, img.height) + tex_format = TF.ETC_RGB4 + elif target_texture_format == TF.ETC2_RGB: + r, g, b, a = img.split() + raw_img = Image.merge("RGBA", (b, g, r, a)).tobytes() + enc_img = etcpak.compress_to_etc2_rgb(raw_img, img.width, img.height) + tex_format = TF.ETC2_RGB + elif ( + target_texture_format in [TF.ETC2_RGBA8, TF.ETC2_RGBA8Crunched, TF.ETC2_RGBA1] + or "_RGB_" in target_texture_format.name + ): + r, g, b, a = img.split() + raw_img = Image.merge("RGBA", (b, g, r, a)).tobytes() + enc_img = etcpak.compress_to_etc2_rgba(raw_img, img.width, img.height) + tex_format = TF.ETC2_RGBA8 + # A + elif target_texture_format == TF.Alpha8: + enc_img = Image.tobytes("raw", "A") + tex_format = TF.Alpha8 + # R + elif target_texture_format in [ + TF.R8, + TF.R16, + TF.RHalf, + TF.RFloat, + TF.EAC_R, + TF.EAC_R_SIGNED, + ]: + enc_img = Image.tobytes("raw", "R") + tex_format = TF.R8 + # RGBA + elif target_texture_format in [ + TF.RGB565, + TF.RGB24, + TF.RGB9e5Float, + TF.PVRTC_RGB2, + TF.PVRTC_RGB4, + TF.ATC_RGB4, + ]: + enc_img = Image.tobytes("raw", "RGB") + tex_format = TF.RGB24 + # everything else defaulted to RGBA + else: + enc_img = img.tobytes("raw", "RGBA") + tex_format = TF.RGBA32 - return img.tobytes(), tex_format + return enc_img, tex_format def get_image_from_texture2d(texture_2d, flip=True) -> Image: @@ -38,9 +88,12 @@ def get_image_from_texture2d(texture_2d, flip=True) -> Image: image_data = copy(bytes(texture_2d.image_data)) if not image_data: return Image.new("RGB", (0, 0)) - - texture_format = texture_2d.m_TextureFormat if isinstance(texture_2d, TextureFormat) else TextureFormat( - texture_2d.m_TextureFormat) + + texture_format = ( + texture_2d.m_TextureFormat + if isinstance(texture_2d.m_TextureFormat, TF) + else TF(texture_2d.m_TextureFormat) + ) selection = CONV_TABLE[texture_format] if len(selection) == 0: @@ -53,9 +106,12 @@ def get_image_from_texture2d(texture_2d, flip=True) -> Image: if "Crunched" in texture_format.name: version = texture_2d.version - if (version[0] > 2017 or (version[0] == 2017 and version[1] >= 3) # 2017.3 and up - or texture_format == TextureFormat.ETC_RGB4Crunched - or texture_format == TextureFormat.ETC2_RGBA8Crunched): + if ( + version[0] > 2017 + or (version[0] == 2017 and version[1] >= 3) # 2017.3 and up + or texture_format == TF.ETC_RGB4Crunched + or texture_format == TF.ETC2_RGBA8Crunched + ): image_data = texture2ddecoder.unpack_unity_crunch(image_data) else: image_data = texture2ddecoder.unpack_crunch(image_data) @@ -81,15 +137,21 @@ def swap_bytes_for_xbox(image_data: bytes, build_target: BuildTarget) -> bytes: :rtype: bytes """ if ( - build_target == BuildTarget.XBOX360 + build_target == BuildTarget.XBOX360 ): # swap bytes for Xbox confirmed,PS3 not encountered for i in range(0, len(image_data), 2): - image_data[i: i + 2] = image_data[i: i + 2][::-1] + image_data[i : i + 2] = image_data[i : i + 2][::-1] return image_data def pillow( - image_data: bytes, width: int, height: int, mode: str, codec: str, args, swap: tuple = None + image_data: bytes, + width: int, + height: int, + mode: str, + codec: str, + args, + swap: tuple = None, ) -> Image: img = ( Image.frombytes(mode, (width, height), image_data, codec, args) @@ -149,7 +211,13 @@ def eac(image_data: bytes, width: int, height: int, fmt: list): def half( - image_data: bytes, width: int, height: int, mode: str, codec: str, args, swap: tuple = None + image_data: bytes, + width: int, + height: int, + mode: str, + codec: str, + args, + swap: tuple = None, ) -> Image: # convert half-float to int8 stream = BytesIO(image_data) From 62abb01b55a48d0e3edf0217c641fedcf1ba52b4 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 19 Oct 2021 11:25:27 +0200 Subject: [PATCH 015/599] hotfix workflow --- .github/workflows/python-package.yml | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index bacdbc18..9f011b52 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -14,10 +14,11 @@ jobs: "windows-latest" ] python-version: [ + #"3.10", not yet available on ubuntu "3.9", "3.8", "3.7", - "3.6", + #"3.6" not available anymore on macOS ] architecture: ["x86", "x64"] @@ -26,7 +27,7 @@ jobs: runs-on: ${{ matrix.os }} name: ${{ matrix.os }} ${{ matrix.architecture }} - ${{ matrix.python-version }} env: - DEPENDENCIES: lz4 brotli Pillow texture2ddecoder tabulate + DEPENDENCIES: lz4 brotli Pillow texture2ddecoder tabulate etcpak steps: - uses: actions/checkout@v2 @@ -55,16 +56,17 @@ jobs: run: | python setup.py sdist bdist_wheel - - name: Build manylinux Python wheels - if: success() && runner.os == 'Linux' && github.event_name == 'push' - uses: RalfG/python-wheels-manylinux-build@v0.3.4-manylinux2010_x86_64 - with: - python-versions: 'cp36-cp36m cp37-cp37m cp38-cp38 cp39-cp39' - system-packages: 'jpeg-devel zlib-devel' - build-requirements: ${{ env.DEPENDENCIES }} +# TODO - fix missing PIL components +# - name: Build manylinux Python wheels +# if: success() && runner.os == 'Linux' && github.event_name == 'push' +# uses: RalfG/python-wheels-manylinux-build@v0.3.4-manylinux2010_x86_64 +# with: +# python-versions: 'cp36-cp36m cp37-cp37m cp38-cp38 cp39-cp39' +# system-packages: 'jpeg-devel zlib-devel' +# build-requirements: ${{ env.DEPENDENCIES }} - name: Publish wheels to PyPI - if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' + if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' && runner.os != 'Linux' # TODO - remove != Linux once manylinux is fixed env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} From 76bcccec6a2e087b4bbb99d4e3f10fd3abe45a13 Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Tue, 19 Oct 2021 12:13:12 +0200 Subject: [PATCH 016/599] add etcpak requirement for texture compression --- UnityPy/__init__.py | 2 +- setup.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index ea9c67d7..e4c515ce 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.18" +__version__ = "1.7.19" from .environment import Environment diff --git a/setup.py b/setup.py index 38aa7ce3..a2c535e8 100644 --- a/setup.py +++ b/setup.py @@ -38,6 +38,7 @@ # Texture & Sprite handling "Pillow", "texture2ddecoder", # texture decompression + "etcpak", # ETC & DXT compression # raw typetree dumping "tabulate" ] From 33a564d8a3c0f69d05935d677dd339e3d7202741 Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Fri, 22 Oct 2021 23:19:51 +0200 Subject: [PATCH 017/599] ObjectReader save function fix, check if self._read_until is set before using it --- UnityPy/classes/Object.py | 13 ++++++------- UnityPy/files/ObjectReader.py | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/UnityPy/classes/Object.py b/UnityPy/classes/Object.py index 1c82f273..e9aa4163 100644 --- a/UnityPy/classes/Object.py +++ b/UnityPy/classes/Object.py @@ -6,6 +6,7 @@ import types from ..exceptions import TypeTreeError as TypeTreeError + class Object(object): type_tree: dict @@ -62,17 +63,15 @@ def class_to_dict(value): if isinstance(value, list): return [class_to_dict(val) for val in value] elif isinstance(value, dict): - return { - key: class_to_dict(val) - for key, val in value.items() - } + return {key: class_to_dict(val) for key, val in value.items()} elif hasattr(value, "__dict__"): if isinstance(value, PPtr): return {"m_PathID": value.path_id, "m_FileID": value.file_id} return { key: class_to_dict(val) for key, val in value.__dict__.items() - if not isinstance(value, (types.FunctionType, types.MethodType)) and not key in ["type_tree", "assets_file"] + if not isinstance(value, (types.FunctionType, types.MethodType)) + and not key in ["type_tree", "assets_file"] } else: return value @@ -98,7 +97,8 @@ def save(self, writer: EndianBinaryWriter = None, intern_call=False): self.save_typetree() else: raise NotImplementedError( - "There is no save function for this obj.type nor has it any typetree nodes that could be used.") + "There is no save function for this obj.type nor has it any typetree nodes that could be used." + ) def _save(self, writer): # the reader is actually an ObjectReader, @@ -177,4 +177,3 @@ def keys(self): def __repr__(self): return "" % self.__dict__.__repr__() - diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index 6bcd280f..a20bd32f 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -96,7 +96,7 @@ def write(self, header, writer: EndianBinaryWriter, data_writer: EndianBinaryWri # so following code appends the missing data back to edited objects if self.type != ClassIDType.MonoBehaviour: end_pos = self.byte_start + self.byte_size - if self._read_until != end_pos: + if self._read_until and self._read_until != end_pos: self.reader.Position = self._read_until data += self.reader.read_bytes(end_pos - self._read_until) else: From 612cce4fda0e96cf7151bfed7d3f29c2f53cbcdf Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Fri, 22 Oct 2021 23:23:54 +0200 Subject: [PATCH 018/599] implement an ExtendableEnum class to support unknown values fixes #67 , fixes #71 --- UnityPy/__init__.py | 2 +- UnityPy/enums/BuildTarget.py | 14 ++------------ UnityPy/enums/ClassIDType.py | 23 ++--------------------- UnityPy/enums/ExtendableEnum.py | 19 +++++++++++++++++++ 4 files changed, 24 insertions(+), 34 deletions(-) create mode 100644 UnityPy/enums/ExtendableEnum.py diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index e4c515ce..b2147652 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.19" +__version__ = "1.7.20" from .environment import Environment diff --git a/UnityPy/enums/BuildTarget.py b/UnityPy/enums/BuildTarget.py index 931beec2..d3e092cd 100644 --- a/UnityPy/enums/BuildTarget.py +++ b/UnityPy/enums/BuildTarget.py @@ -1,7 +1,7 @@ -from enum import IntEnum +from .ExtendableEnum import ExtendableEnum -class BuildTarget(IntEnum): +class BuildTarget(ExtendableEnum): UnknownPlatform = 3716 DashboardWidget = 1 StandaloneOSX = 2 @@ -38,13 +38,3 @@ class BuildTarget(IntEnum): tvOS = 37 Switch = 38 NoTarget = -2 - - @classmethod - def _missing_(cls, value): - ret = BuildTarget.UnknownPlatform - ret._value = value - return ret - - @property - def value(self): - return getattr(self, "_value", self._value_) diff --git a/UnityPy/enums/ClassIDType.py b/UnityPy/enums/ClassIDType.py index bf66353b..b7c5f924 100644 --- a/UnityPy/enums/ClassIDType.py +++ b/UnityPy/enums/ClassIDType.py @@ -1,8 +1,8 @@ # https://docs.unity3d.com/Manual/ClassIDReference.html -from enum import IntEnum +from .ExtendableEnum import ExtendableEnum -class ClassIDType(IntEnum): +class ClassIDType(ExtendableEnum): UnknownType = -1 Object = 0 GameObject = 1 @@ -371,22 +371,3 @@ class ClassIDType(IntEnum): VisualEffect = 2083052967 LocalizationAsset = 2083778819 ScriptedImporter = 2089858483 - - def __str__(self): - return self.name - - def __eq__(self, value): - if isinstance(value, str): - return self.name == value - else: - return self.value == value - - @classmethod - def _missing_(cls, value): - ret = ClassIDType.UnknownType - ret._value = value - return ret - - @property - def value(self): - return getattr(self, "_value", self._value_) diff --git a/UnityPy/enums/ExtendableEnum.py b/UnityPy/enums/ExtendableEnum.py new file mode 100644 index 00000000..3e061cf4 --- /dev/null +++ b/UnityPy/enums/ExtendableEnum.py @@ -0,0 +1,19 @@ +from enum import IntEnum + +# based on https://stackoverflow.com/a/57179436 + + +class ExtendableEnum(IntEnum): + @classmethod + def _missing_(cls, value): + if isinstance(value, int): + pseudo_member = cls._value2member_map_.get(value, None) + if pseudo_member is None: + new_member = int.__new__(cls, value) + # I expect a name attribute to hold a string, hence str(value) + # However, new_member._name_ = value works, too + new_member._name_ = f"Unknown ({value})" + new_member._value_ = value + pseudo_member = cls._value2member_map_.setdefault(value, new_member) + return pseudo_member + return None # will raise the ValueError in Enum.__new__ From b8548c1d4c7a87f16af7e87094adc5e59917f262 Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Fri, 29 Oct 2021 09:42:42 +0200 Subject: [PATCH 019/599] fix missing name for bytes and streamable Environment inputs --- UnityPy/__init__.py | 2 +- UnityPy/environment.py | 28 ++++++++++++++++--------- UnityPy/helpers/ImportHelper.py | 36 +++++++++++++++++---------------- 3 files changed, 39 insertions(+), 27 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index b2147652..a05eab3f 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.20" +__version__ = "1.7.21" from .environment import Environment diff --git a/UnityPy/environment.py b/UnityPy/environment.py index 6a9f1394..e5d6b5cf 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -9,6 +9,7 @@ from .streams import EndianBinaryReader from .files import SerializedFile + class Environment: files: dict path: str @@ -32,8 +33,7 @@ def __init__(self, *args): self.load_folder(arg) else: self.path = None - self.files[str(len(self.files)) - ] = self.load_file(stream=arg) + self.files[str(len(self.files))] = self.load_file(stream=arg) if len(self.files) == 1: self.file = list(self.files.values())[0] @@ -54,20 +54,26 @@ def load_folder(self, path: str): def load(self, files: list): """Loads all files into the AssetsManager.""" for f in files: - self.files[f[len(self.path):].lstrip( - "/\\")] = self.load_file(open(f, "rb"), self) + self.files[f[len(self.path) :].lstrip("/\\")] = self.load_file( + open(f, "rb"), self + ) def load_file(self, stream, parent=None): if not parent: parent = self typ, reader = ImportHelper.check_file_type(stream) try: + stream_name = getattr( + stream, + "name", + str(stream.__hash__()) if hasattr(stream, "__hash__") else "", + ) if typ == FileType.AssetsFile: - return files.SerializedFile(reader, parent, name=stream.name) + return files.SerializedFile(reader, parent, name=stream_name) elif typ == FileType.BundleFile: - return files.BundleFile(reader, parent, name=stream.name) + return files.BundleFile(reader, parent, name=stream_name) elif typ == FileType.WebFile: - return files.WebFile(reader, parent, name=stream.name) + return files.WebFile(reader, parent, name=stream_name) elif typ == FileType.ZIP: self.load_zip_file(stream) elif typ == FileType.ResourceFile: @@ -133,7 +139,9 @@ def save(self, pack="none"): """ for f in self.files: if self.files[f].is_changed: - with open(os.path.join(self.out_path, os.path.basename(f)), 'wb') as out: + with open( + os.path.join(self.out_path, os.path.basename(f)), "wb" + ) as out: out.write(self.files[f].save(packer=pack)) @property @@ -168,13 +176,15 @@ def assets(self) -> list: """ Lists all assets / SerializedFiles within this environment. """ - def gen_all_asset_files(file, ret = []): + + def gen_all_asset_files(file, ret=[]): for f in getattr(file, "files", {}).values(): if isinstance(f, SerializedFile): ret.append(f) else: gen_all_asset_files(f, ret) return ret + return gen_all_asset_files(self) def get(self, key, default=None): diff --git a/UnityPy/helpers/ImportHelper.py b/UnityPy/helpers/ImportHelper.py index 4d058987..35c35556 100644 --- a/UnityPy/helpers/ImportHelper.py +++ b/UnityPy/helpers/ImportHelper.py @@ -1,5 +1,5 @@ import os - +from typing import Union, List from .CompressionHelper import BROTLI_MAGIC, GZIP_MAGIC from ..enums import FileType from ..streams import EndianBinaryReader @@ -9,7 +9,7 @@ def file_name_without_extension(file_name: str) -> str: return os.path.splitext(os.path.basename(file_name))[0] -def list_all_files(directory: str) -> list: +def list_all_files(directory: str) -> List[str]: return [ val for sublist in [ @@ -21,7 +21,7 @@ def list_all_files(directory: str) -> list: ] -def find_all_files(directory: str, search_str: str) -> list: +def find_all_files(directory: str, search_str: str) -> List[str]: return [ val for sublist in [ @@ -37,19 +37,19 @@ def find_all_files(directory: str, search_str: str) -> list: ] -def merge_split_assets(path: str, all_directories=False): +def merge_split_assets(path: str, all_directories: bool = False): if all_directories: split_files = [fp for fp in list_all_files(path) if fp[-7:] == ".split0"] else: split_files = [ os.path.join(path, fp) for fp in os.listdir(path) if fp[-7:] == ".split0" ] - + for split_file in split_files: dest_file = file_name_without_extension(split_file) dest_path = os.path.dirname(split_file) dest_full = os.path.join(dest_path, dest_file) - + if not os.path.exists(dest_full): with open(dest_full, "wb") as f: i = 0 @@ -63,7 +63,7 @@ def merge_split_assets(path: str, all_directories=False): def processing_split_files(select_file: list) -> list: split_files = [fp for fp in select_file if ".split" in fp] select_file = [f for f in select_file if f not in split_files] - + split_files = set([file_name_without_extension(fp) for fp in split_files]) for splitFile in split_files: if os.path.isfile: @@ -71,7 +71,7 @@ def processing_split_files(select_file: list) -> list: return select_file -def check_file_type(input_) -> (FileType, EndianBinaryReader): +def check_file_type(input_) -> Union[FileType, EndianBinaryReader]: if isinstance(input_, str) and os.path.isfile(input_): reader = EndianBinaryReader(open(input_, "rb")) elif isinstance(input_, EndianBinaryReader): @@ -81,10 +81,10 @@ def check_file_type(input_) -> (FileType, EndianBinaryReader): reader = EndianBinaryReader(input_) except: return None, None - + if reader.Length < 20: return FileType.ResourceFile, reader - + signature = reader.read_string_to_null(20) reader.Position = 0 if signature in [ @@ -101,7 +101,7 @@ def check_file_type(input_) -> (FileType, EndianBinaryReader): else: if reader.Length < 128: return FileType.ResourceFile, reader - + magic = bytes(reader.read_bytes(2)) reader.Position = 0 if GZIP_MAGIC == magic: @@ -111,7 +111,7 @@ def check_file_type(input_) -> (FileType, EndianBinaryReader): reader.Position = 0 if BROTLI_MAGIC == magic: return FileType.WebFile, reader - + # check if AssetsFile old_endian = reader.endian # read as if assetsfile and check version @@ -121,7 +121,7 @@ def check_file_type(input_) -> (FileType, EndianBinaryReader): file_size = reader.read_u_int() version = reader.read_u_int() data_offset = reader.read_u_int() - + if version >= 22: endian = ">" if reader.read_boolean() else "<" reserved = reader.read_bytes(3) @@ -129,12 +129,13 @@ def check_file_type(input_) -> (FileType, EndianBinaryReader): file_size = reader.read_long() data_offset = reader.read_long() unknown = reader.read_long() # unknown - + # reset reader.endian = old_endian reader.Position = 0 # check info - if any(( + if any( + ( version < 0, version > 100, *[ @@ -142,8 +143,9 @@ def check_file_type(input_) -> (FileType, EndianBinaryReader): for x in [file_size, metadata_size, version, data_offset] ], file_size < metadata_size, - file_size < data_offset - )): + file_size < data_offset, + ) + ): return FileType.ResourceFile, reader else: return FileType.AssetsFile, reader From 3159b5b769b049111db1408e99adb169cf00a3c3 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 3 Nov 2021 21:24:06 +0100 Subject: [PATCH 020/599] Update README.md --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index e9d1a9e6..35a841aa 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ def unpack_all_assets(source_folder : str, destination_folder : str): # iterate over internal objects for obj in env.objects: # process specific object types - if obj.type in ["Texture2D", "Sprite"]: + if obj.type.name in ["Texture2D", "Sprite"]: # parse the object data data = obj.read() @@ -86,7 +86,7 @@ def unpack_all_assets(source_folder : str, destination_folder : str): # alternative way which keeps the original path for path,obj in env.container.items(): - if obj.type in ["Texture2D", "Sprite"]: + if obj.type.name in ["Texture2D", "Sprite"]: data = obj.read() # create dest based on original path dest = os.path.join(destination_folder, *path.split("/")) @@ -176,7 +176,7 @@ __Export__ ```python from PIL import Image for obj in env.objects: - if obj.type == "Texture2D": + if obj.type.name == "Texture2D": # export texture data = image.read() data.image.save(path) @@ -200,7 +200,7 @@ Unlike most other extractors (including AssetStudio) UnityPy merges those two im __Export__ ```python for obj in env.objects: - if obj.type == "Sprite": + if obj.type.name == "Sprite": data = image.read() data.image.save(path) ``` @@ -218,7 +218,7 @@ Some games save binary data as TextFile, so it's usually better to use ``.script __Export__ ```python for obj in env.objects: - if obj.type == "TextAsset": + if obj.type.name == "TextAsset": # export asset data = image.read() with open(path, "wb") as f: @@ -246,7 +246,7 @@ __Export__ import json for obj in env.objects: - if obj.type == "MonoBehaviour": + if obj.type.name == "MonoBehaviour": # export if obj.serialized_type.nodes: # save decoded data @@ -301,7 +301,7 @@ with open(f"{mesh.name}.obj", "wt", newline = "") as f: ### [Font](UnityPy/classes/Font.py) ```python -if obj.type == "Font": +if obj.type.name == "Font": font : Font = obj.read() if font.m_FontData: extension = ".ttf" From 61ab4fc70c696305e6c9929cb272a3d8c97a6a93 Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Wed, 10 Nov 2021 12:54:47 +0100 Subject: [PATCH 021/599] 1.7.22 fix Image.tobytes in Texture2DConverter fixes #73 --- UnityPy/__init__.py | 2 +- UnityPy/export/Texture2DConverter.py | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index a05eab3f..263e381c 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.21" +__version__ = "1.7.22" from .environment import Environment diff --git a/UnityPy/export/Texture2DConverter.py b/UnityPy/export/Texture2DConverter.py index 99fb39f0..e7f56764 100644 --- a/UnityPy/export/Texture2DConverter.py +++ b/UnityPy/export/Texture2DConverter.py @@ -43,9 +43,10 @@ def image_to_texture2d(img: Image, target_texture_format: TF, flip: bool = True) tex_format = TF.ETC2_RGBA8 # A elif target_texture_format == TF.Alpha8: - enc_img = Image.tobytes("raw", "A") + enc_img = img.tobytes("raw", "A") tex_format = TF.Alpha8 - # R + # R - should probably be moerged into #A, as pure R is used as Alpha + # but need test data for this first elif target_texture_format in [ TF.R8, TF.R16, @@ -54,7 +55,7 @@ def image_to_texture2d(img: Image, target_texture_format: TF, flip: bool = True) TF.EAC_R, TF.EAC_R_SIGNED, ]: - enc_img = Image.tobytes("raw", "R") + enc_img = img.tobytes("raw", "R") tex_format = TF.R8 # RGBA elif target_texture_format in [ @@ -65,7 +66,7 @@ def image_to_texture2d(img: Image, target_texture_format: TF, flip: bool = True) TF.PVRTC_RGB4, TF.ATC_RGB4, ]: - enc_img = Image.tobytes("raw", "RGB") + enc_img = img.tobytes("raw", "RGB") tex_format = TF.RGB24 # everything else defaulted to RGBA else: From af02fbd73eb7fecfae067573b14f8b8e2ed2d17f Mon Sep 17 00:00:00 2001 From: yvsdrop <38747126+yvsdrop@users.noreply.github.com> Date: Tue, 16 Nov 2021 13:49:59 -0800 Subject: [PATCH 022/599] 1.7.23 - Update SpriteHelper type comparisons to use ClassIDType instead of string (#74) * Update SpriteHelper type comparisons to use ClassIDType instead of string After certain changes in the past, doing simple String comparison on the type attribute of objects will no longer work as expected - should be comparing against the ClassIDType enum instead. (or do obj.type.name == "string name") * use ClassIDType.UnknownType instead of "" when failing to get the type Co-authored-by: Rudolf Kolbe --- UnityPy/__init__.py | 2 +- UnityPy/export/SpriteHelper.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 263e381c..0cb8a9fb 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.22" +__version__ = "1.7.23" from .environment import Environment diff --git a/UnityPy/export/SpriteHelper.py b/UnityPy/export/SpriteHelper.py index 51dbd673..2c39f4f1 100644 --- a/UnityPy/export/SpriteHelper.py +++ b/UnityPy/export/SpriteHelper.py @@ -3,6 +3,7 @@ from PIL import Image, ImageDraw from .Texture2DConverter import get_image_from_texture2d +from ..enums import ClassIDType from ..streams import EndianBinaryReader @@ -21,7 +22,7 @@ class SpritePackingMode(IntEnum): def get_image(sprite, texture, alpha_texture) -> Image: - if alpha_texture and getattr(alpha_texture, "type", "") == "Texture2D": + if alpha_texture and getattr(alpha_texture, "type", ClassIDType.UnknownType) == ClassIDType.Texture2D: cache_id = (texture.path_id, alpha_texture.path_id) if cache_id not in sprite.assets_file._cache: original_image = get_image_from_texture2d(texture.read(), False) @@ -45,7 +46,7 @@ def get_image_from_sprite(m_Sprite) -> Image: elif m_Sprite.m_AtlasTags: # looks like the direct pointer is empty, let's try to find the Atlas via its name for obj in m_Sprite.assets_file.objects.values(): - if obj.type == "SpriteAtlas": + if obj.type == ClassIDType.SpriteAtlas: atlas = obj.read() if atlas.name == m_Sprite.m_AtlasTags[0]: break From 265b14273873dca5bf8c39bc97313304f03dc105 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 17 Nov 2021 15:59:48 +0100 Subject: [PATCH 023/599] fix TypeTreeError prints (#75) * fix call in Object.py * fix MonoBehaviour * fix environment * bump version to 1.7.24 --- UnityPy/__init__.py | 2 +- UnityPy/classes/MonoBehaviour.py | 2 +- UnityPy/classes/Object.py | 2 +- UnityPy/environment.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 0cb8a9fb..e6942b8b 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.23" +__version__ = "1.7.24" from .environment import Environment diff --git a/UnityPy/classes/MonoBehaviour.py b/UnityPy/classes/MonoBehaviour.py index 183ecf41..956cc8f2 100644 --- a/UnityPy/classes/MonoBehaviour.py +++ b/UnityPy/classes/MonoBehaviour.py @@ -14,7 +14,7 @@ def __init__(self, reader: EndianBinaryReader): try: self.read_typetree() except TypeTreeError as e: - print("Failed to read TypeTree:\n", e.message) + print("Failed to read TypeTree:\n", e) self.assets_file._enable_type_tree = False def save(self, writer: EndianBinaryWriter = None, raw_data: bytes = None): diff --git a/UnityPy/classes/Object.py b/UnityPy/classes/Object.py index e9aa4163..51e376c7 100644 --- a/UnityPy/classes/Object.py +++ b/UnityPy/classes/Object.py @@ -50,7 +50,7 @@ def read_typetree(self, nodes: list = None) -> dict: try: tree = self.reader.read_typetree(nodes) except TypeTreeError as e: - print("Failed to read TypeTree:\n", e.message) + print("Failed to read TypeTree:\n", e) return {} self.type_tree = NodeHelper(tree, self.assets_file) return tree diff --git a/UnityPy/environment.py b/UnityPy/environment.py index e5d6b5cf..d4a4dc64 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -81,7 +81,7 @@ def load_file(self, stream, parent=None): except Exception as e: # just to be sure # cuz the SerializedFile detection isn't perfect - print("Error loading, reverting to EndianBinaryReader:\n", e.message) + print("Error loading, reverting to EndianBinaryReader:\n", e) return EndianBinaryReader(stream) def load_zip_file(self, value): From d61dfac419b6c1eafa8f93cf9e956c7741963170 Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Sun, 21 Nov 2021 14:03:32 +0100 Subject: [PATCH 024/599] better PPtr resolving --- UnityPy/classes/PPtr.py | 49 +++++++++++++++++++++++------------------ UnityPy/environment.py | 12 ++++++++-- UnityPy/files/File.py | 17 ++++++++++---- 3 files changed, 50 insertions(+), 28 deletions(-) diff --git a/UnityPy/classes/PPtr.py b/UnityPy/classes/PPtr.py index 68612332..41bbf402 100644 --- a/UnityPy/classes/PPtr.py +++ b/UnityPy/classes/PPtr.py @@ -39,29 +39,34 @@ def get_obj(self): elif self.file_id > 0 and self.file_id - 1 < len(self.assets_file.externals): if self.index == -2: + environment = self.assets_file.environment external_name = self.assets_file.externals[self.file_id - 1].name - parent = self.assets_file.parent - if parent is not None: - if external_name in parent.files: - manager = parent.files[external_name] - elif external_name.upper() in parent.files: - manager = parent.files[external_name.upper()] - else: - while not isinstance(parent, environment.Environment): - parent = parent.parent - if parent.path: - path = parent.path - files = os.listdir(path) - if external_name in files: - parent.load_files([os.path.join(path, external_name)]) - manager = parent.files[external_name] - else: - if external_name not in cached_managers: - typ, reader = ImportHelper.check_file_type(external_name) - if typ == FileType.AssetsFile: - cached_managers[external_name] = files.SerializedFile(reader) - if external_name in cached_managers: - manager = cached_managers[external_name] + # try to find it in the already registered cabs + manager = environment.get_cab(external_name) + + if not manager: + # guess we have to try to find it as file then + path = environment.path + if path: + basename = os.path.basename(external_name) + possible_names = [basename, basename.lower(), basename.upper()] + for root, dirs, files in os.walk(path): + for name in files: + if name in possible_names: + manager = environment.load_file(os.path.join(root, name)) + break + else: + # else is reached if the previous loop didn't break + continue + break + print(external_name, "not found") + # else: + # if external_name not in cached_managers: + # typ, reader = ImportHelper.check_file_type(external_name) + # if typ == FileType.AssetsFile: + # cached_managers[external_name] = files.SerializedFile(reader) + # if external_name in cached_managers: + # manager = cached_managers[external_name] if manager and self.path_id in manager.objects: self._obj = manager.objects[self.path_id] diff --git a/UnityPy/environment.py b/UnityPy/environment.py index d4a4dc64..f3610157 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -12,10 +12,12 @@ class Environment: files: dict + cabs: dict path: str def __init__(self, *args): self.files = {} + self.cabs = {} self.path = "." self.out_path = os.path.join(os.getcwd(), "output") @@ -145,7 +147,7 @@ def save(self, pack="none"): out.write(self.files[f].save(packer=pack)) @property - def objects(self): + def objects(self) -> list: def search(item): ret = [] if not isinstance(item, Environment) and getattr(item, "objects", None): @@ -187,6 +189,12 @@ def gen_all_asset_files(file, ret=[]): return gen_all_asset_files(self) - def get(self, key, default=None): + def get(self, key: str, default=None): return getattr(self, key, default) + def register_cab(self, name: str, item: object) -> None: + self.cabs[name.lower()] = item + + def get_cab(self, name: str) -> object: + return self.cabs.get(name.lower(), None) + diff --git a/UnityPy/files/File.py b/UnityPy/files/File.py index 59e6a727..0da27080 100644 --- a/UnityPy/files/File.py +++ b/UnityPy/files/File.py @@ -17,13 +17,15 @@ class File(object): packer: str # parent: File + # environment: Environment def __init__(self, parent=None, name=None): self.files = {} self.is_changed = False self.cab_file = "CAB-UnityPy_Mod.resS" self.parent = parent - self.name = basename(name) if isinstance(name, str) else '' + self.environment = self.environment = getattr(parent, "environment", parent) if parent else None + self.name = basename(name) if isinstance(name, str) else "" def get_assets(self): if isinstance(self, SerializedFile.SerializedFile): @@ -65,8 +67,9 @@ def read_files(self, reader: EndianBinaryReader, files: list): for node in files: reader.Position = node.offset name = node.path - f = EndianBinaryReader(reader.read(node.size), offset=( - reader.BaseOffset + node.offset)) + f = EndianBinaryReader( + reader.read(node.size), offset=(reader.BaseOffset + node.offset) + ) # f._flag = getattr(node, "flags", None) # required for save typ, _ = ImportHelper.check_file_type(f) if typ == FileType.BundleFile: @@ -81,6 +84,11 @@ def read_files(self, reader: EndianBinaryReader, files: list): f = SerializedFile.SerializedFile(f, self, name=name) except ValueError: pass + + if isinstance(f, (EndianBinaryReader, SerializedFile.SerializedFile)): + if self.environment: + self.environment.register_cab(name, f) + # required for BundleFiles f.flags = getattr(node, "flags", 0) self.files[name] = f @@ -102,7 +110,8 @@ def get_writeable_cab(self, name: str = None): return self.files[name] else: raise ValueError( - "This cab already exists and isn't an EndianBinaryWriter") + "This cab already exists and isn't an EndianBinaryWriter" + ) writer = EndianBinaryWriter() writer.flags = 4 From bbde69edbe900a998b34a80cae04d7a3777e61fd Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Sun, 21 Nov 2021 14:04:16 +0100 Subject: [PATCH 025/599] add improved AssetBatchConverter example as tools to the lib --- UnityPy/tools/extractor.py | 324 ++++++++++++++++++++++++++++++++ examples/AssetBatchConverter.py | 179 ------------------ 2 files changed, 324 insertions(+), 179 deletions(-) create mode 100644 UnityPy/tools/extractor.py delete mode 100644 examples/AssetBatchConverter.py diff --git a/UnityPy/tools/extractor.py b/UnityPy/tools/extractor.py new file mode 100644 index 00000000..df161e79 --- /dev/null +++ b/UnityPy/tools/extractor.py @@ -0,0 +1,324 @@ +from io import BytesIO +import os +import json +import UnityPy +from UnityPy.classes import ( + Object, + PPtr, + MonoBehaviour, + TextAsset, + Font, + Shader, + Mesh, + Sprite, + Texture2D, + AudioClip, + GameObject, +) +from UnityPy.enums.ClassIDType import ClassIDType +from typing import Union, List, Dict +from pathlib import Path + + +def export_obj( + obj: Union[Object, PPtr], + fp: Path, + append_name: bool = False, + append_path_id: bool = False, + export_unknown_as_typetree: bool = False, +) -> List[int]: + """Exports the given object to the given filepath. + + Args: + obj (Object, PPtr): A valid Unity object or a reference to one. + fp (Path): A valid filepath where the object should be exported to. + append_name (bool, optional): Decides if the obj name will be appended to the filepath. Defaults to False. + append_path_id (bool, optional): Decides if the obj name will be appended to the filepath. Defaults to False. + export_unknown_as_typetree (bool, optional): If set, then unimplemented objects will be exported via their typetree or dumped as bin. Defaults to False. + + Returns: + list: a list of exported object path_ids + """ + # figure out export function + type_name = obj.type.name + export_func = getattr(EXPORT_TYPES, type_name) + if export_unknown_as_typetree: + export_func = exportMonoBehaviour + else: + return [] + + # set filepath + obj = obj.read() + + if append_name: + fp = os.path.join(fp, obj.name if obj.name else type_name) + + fp, extension = os.path.splitext(fp) + + if append_path_id: + fp = f"{fp}_{obj.path_id}" + + # export + return export_func(obj, fp, extension) + + +def extract_assets( + src: Union[Path, BytesIO, bytes, bytearray], + dst: Path, + use_container: bool = True, + ignore_first_container_dirs: int = 0, + append_path_id: bool = False, + export_unknown_as_typetree: bool = False, +) -> List[int]: + """Extracts all assets from the given source. + + Args: + src (Union[Path, BytesIO, bytes, bytearray]): [description] + dst (Path): [description] + use_container (bool, optional): [description]. Defaults to True. + ignore_first_container_dirs (int, optional): [description]. Defaults to 0. + append_path_id (bool, optional): [description]. Defaults to False. + export_unknown_as_typetree (bool, optional): [description]. Defaults to False. + + Returns: + List[int]: [description] + """ + # load source + env = UnityPy.load(src) + exported = [] + + export_types_keys = list(EXPORT_TYPES.keys()) + + def defaulted_export_index(type: ClassIDType): + try: + return export_types_keys.index(type) + except IndexError: + return 999 + + if use_container: + container = sorted(env.container, lambda x: defaulted_export_index(x[1].type)) + for obj_path, obj in container: + # the check of the various sub directories is required to avoid // in the path + obj_dest = os.path.join( + dst, + *(x for x in obj_path.split("/")[:ignore_first_container_dirs] if x), + ) + os.makedirs(os.path.dirname(obj_dest), exist_ok=True) + exported.extend( + export_obj( + obj, + obj_dest, + append_path_id=append_path_id, + export_unknown_as_typetree=export_unknown_as_typetree, + ) + ) + + else: + objects = sorted(env.objects, lambda x: defaulted_export_index(x.type)) + for obj in objects: + if obj.path_id not in exported: + exported.extend( + export_obj( + obj, + dst, + append_name=True, + append_path_id=append_path_id, + export_unknown_as_typetree=export_unknown_as_typetree, + ) + ) + + return exported + + +############################################################################### +# EXPORT FUNCTIONS # +############################################################################### + + +def exportTextAsset(obj: TextAsset, fp: str, extension: str = ".txt") -> List[int]: + if not extension: + extension = ".txt" + with open(f"{fp}{extension}", "wb") as f: + f.write(obj.script) + return [obj.path_id] + + +def exportFont(obj: Font, fp: str, extension: str = "") -> List[int]: + # TODO - export glyphs + if obj.m_FontData: + extension = ".ttf" + if obj.m_FontData[0:4] == b"OTTO": + extension = ".otf" + with open(f"{fp}{extension}", "wb") as f: + f.write(obj.m_FontData) + return [obj.path_id] + + +def exportMesh(obj: Mesh, fp: str, extension=".obf") -> List[int]: + if not extension: + extension = ".obf" + with open(f"{fp}{extension}", "wt", encoding="utf8", newline="") as f: + f.write(obj.export()) + return [obj.path_id] + + +def exporShader(obj: Shader, fp: str, extension=".txt") -> List[int]: + if not extension: + extension = ".txt" + with open(f"{fp}{extension}", "wt", encoding="utf8", newline="") as f: + f.write(obj.export()) + return [obj.path_id] + + +def exportMonoBehaviour( + obj: Union[MonoBehaviour, Object], fp: str, extension: str = "" +) -> List[int]: + # TODO - add generic way to add external typetrees + if obj.serialized_type.nodes: + extension = ".json" + export = json.dumps(obj.read_typetree(), indent=4, ensure_ascii=False).encode( + "utf8", errors="surrogateescape" + ) + elif isinstance(obj, MonoBehaviour): + # no set typetree + # check if we have a script + script = obj.m_Script + if script: + # looks like we have a script + script = script.read() + # check if there is a locally stored typetree for it + nodes = MONOBEHAVIOUR_TYPETREES.get(script.m_AssemblyName, {}).get( + script.m_ClassName, None + ) + if nodes: + # we have a typetree + # adjust the name + # name = ( + # f"{script.m_ClassName}-{obj.name}" + # if obj.name + # else script.m_ClassName + # ) + extension = ".json" + export = json.dumps( + obj.read_typetree(nodes), indent=4, ensure_ascii=False + ).encode("utf8", errors="surrogateescape") + if not export: + extension = ".bin" + export = obj.raw_data + with open(f"{fp}{extension}", "wb") as f: + f.write(export) + return [obj.path_id] + + +def exportAudioClip(obj: AudioClip, fp: str, extension: str = "") -> List[int]: + samples = obj.samples + if len(samples) == 0: + pass + elif len(samples) == 1: + with open(f"{fp}.wav", "wb") as f: + f.write(list(samples.values())[0]) + else: + os.makedirs(fp, exist_ok=True) + for name, clip_data in samples.items(): + with open(os.path.join(fp, f"{name}.wav"), "wb") as f: + f.write(clip_data) + return [obj.path_id] + + +def exportSprite(obj: Sprite, fp: str, extension: str = ".png") -> List[int]: + if not extension: + extension = ".png" + obj.image.save(f"{fp}{extension}") + return [ + obj.path_id, + obj.m_RD.texture.path_id, + getattr(obj.m_RD.alphaTexture, "path_id", None), + ] + + +def exportTexture2D(obj: Texture2D, fp: str, extension: str = ".png") -> List[int]: + if not extension: + extension = ".png" + if obj.m_Width: + # textures can be empty + obj.image.save(f"{fp}{extension}") + return [obj.path_id] + + +def exportGameObject(obj: GameObject, fp: str, extension: str = "") -> List[int]: + exported = [obj.path_id] + refs = crawl_obj(obj) + if refs: + os.makedirs(fp, exist_ok=True) + for ref_id, ref in refs.items(): + # Don't export already exported objects a second time + # and prevent circular calls by excluding other GameObjects. + # The other GameObjects were already exported in the this call. + if ref_id in exported or ref_id.type == ClassIDType.GameObject: + continue + try: + exported.extend(export_obj(ref, fp, True, True)) + except Exception as e: + print(f"Failed to export {ref_id}") + print(e) + return exported + + +EXPORT_TYPES = { + # following types can include other objects + ClassIDType.GameObject: exportGameObject, + ClassIDType.Sprite: exportSprite, + # following types don't include other objects + ClassIDType.AudioClip: exportAudioClip, + ClassIDType.Font: exportFont, + ClassIDType.Mesh: exportMesh, + ClassIDType.MonoBehaviour: exportMonoBehaviour, + ClassIDType.Shader: exporShader, + ClassIDType.TextAsset: exportTextAsset, + ClassIDType.Texture2D: exportTexture2D, +} + +MONOBEHAVIOUR_TYPETREES: Dict["Assembly-Name.dll", Dict["Class-Name", List[Dict]]] = {} + + +def crawl_obj(obj: Object, ret: dict = None) -> Dict[int, Union[Object, PPtr]]: + """Crawls through the data struture of the object and returns a list of all the components.""" + if not ret: + ret = {} + + if isinstance(obj, PPtr): + if obj.path_id == 0 and obj.file_id == 0 and obj.index == -2: + return ret + try: + obj = obj.read() + except AttributeError: + return ret + else: + return ret + ret[obj.path_id] = obj + + # MonoBehaviour really on their typetree + # while Object denotes that the class of the object isn't implemented yet + if isinstance(obj, (MonoBehaviour, Object)): + obj.read_typetree() + data = obj.type_tree.__dict__.values() + else: + data = obj.__dict__.values() + + for value in flatten(data): + if isinstance(value, (Object, PPtr)): + if value.path_id in ret: + continue + crawl_obj(value, ret) + + return ret + + +def flatten(l): + for el in list(l): + if isinstance(el, (list, tuple)): + yield from flatten(el) + elif isinstance(el, dict): + yield from flatten(el.values()) + else: + yield el diff --git a/examples/AssetBatchConverter.py b/examples/AssetBatchConverter.py deleted file mode 100644 index e8f974a1..00000000 --- a/examples/AssetBatchConverter.py +++ /dev/null @@ -1,179 +0,0 @@ -import os -import UnityPy -from collections import Counter -import zipfile -import json - -TYPES = [ - # Images - 'Sprite', - 'Texture2D', - # Text (filish) - 'TextAsset', - 'Shader', - 'MonoBehaviour', - 'Mesh' - # Font - 'Font', - # Audio - 'AudioClip', -] - -ROOT = os.path.dirname(os.path.realpath(__file__)) - -# source folder -ASSETS = os.path.join(ROOT, 'assets') -# destination folder -DST = os.path.join(ROOT, 'extracted') -# number of dirs to ignore -# e.g. IGNOR_DIR_COUNT = 2 will reduce -# 'assets/assetbundles/images/story_picture/small/15.png' -# to -# 'images/story_picture/small/15.png' - -IGNOR_DIR_COUNT = 2 - -os.makedirs(DST, exist_ok=True) - - -def main(): - for root, dirs, files in os.walk(ASSETS, topdown=False): - if '.git' in root: - continue - for f in files: - print(f) - extension = os.path.splitext(f)[1] - src = os.path.realpath(os.path.join(root, f)) - - if extension == ".zip": - archive = zipfile.ZipFile(src, 'r') - for zf in archive.namelist(): - extract_assets(archive.open(zf)) - else: - extract_assets(src) - - -def extract_assets(src): - # load source - env = UnityPy.load(src) - - # iterate over assets - for asset in env.assets: - # assets without container / internal path will be ignored for now - if not asset.container: - continue - # filter objects and put Texture2Ds at the end of the list - objs = sorted((obj for obj in asset.get_objects( - ) if obj.type.name in TYPES), key=lambda x: 1 if x.type == "Texture2D" else 0) - cobjs = sorted(((key, obj) for key, obj in asset.container.items( - ) if obj.type.name in TYPES), key=lambda x: 1 if x[1].type == "Texture2D" else 0) - # check which mode we will have to use - num_cont = sum(cobjs) - num_objs = len(objs) - - # check if container contains all important assets, if yes, just ignore the container - if num_objs <= num_cont * 2: - for asset_path, obj in cobjs: - fp = os.path.join(DST, *asset_path.split('/') - [IGNOR_DIR_COUNT:]) - export_obj(obj, fp) - - # otherwise use the container to generate a path for the normal objects - else: - extracted = [] - # find the most common path - occurence_count = Counter(os.path.splitext(asset_path)[ - 0] for asset_path in asset.container.keys()) - local_path = os.path.join( - DST, *occurence_count.most_common(1)[0][0].split('/')[IGNOR_DIR_COUNT:]) - - for obj in objs: - if obj.path_id not in extracted: - extracted.extend(export_obj( - obj, local_path, append_name=True)) - - -def export_obj(obj, fp: str, append_name: bool = False) -> list: - if obj.type not in TYPES: - return [] - - data = obj.read() - if append_name: - fp = os.path.join(fp, data.name) - - fp, extension = os.path.splitext(fp) - os.makedirs(os.path.dirname(fp), exist_ok=True) - - # streamlineable types - export = None - if obj.type == 'TextAsset': - if not extension: - extension = '.txt' - export = data.script - - elif obj.type == "Font": - if data.m_FontData: - extension = ".ttf" - if data.m_FontData[0:4] == b"OTTO": - extension = ".otf" - export = data.m_FontData - else: - return [obj.path_id] - - elif obj.type == "Mesh": - extension = ".obf" - export = data.export().encode("utf8") - - elif obj.type == "Shader": - extension = ".txt" - export = data.export().encode("utf8") - - elif obj.type == "MonoBehaviour": - # The data structure of MonoBehaviours is custom - # and is stored as nodes - # If this structure doesn't exist, - # it might still help to at least save the binary data, - # which can then be inspected in detail. - if obj.serialized_type.nodes: - extension = ".json" - export = json.dumps( - obj.read_typetree(), - indent=4, - ensure_ascii=False - ).encode("utf8") - else: - extension = ".bin" - export = data.raw_data - - if export: - with open(f"{fp}{extension}", "wb") as f: - f.write(export) - - # non-streamlineable types - if obj.type == "Sprite": - data.image.save(f"{fp}.png") - - return [obj.path_id, data.m_RD.texture.path_id, getattr(data.m_RD.alphaTexture, 'path_id', None)] - - elif obj.type == "Texture2D": - if not os.path.exists(fp) and data.m_Width: - # textures can have size 0..... - data.image.save(f"{fp}.png") - - elif obj.type == "AudioClip": - samples = data.samples - if len(samples) == 0: - pass - elif len(samples) == 1: - with open(f"{fp}.wav", "wb") as f: - f.write(list(data.samples.values())[0]) - else: - os.makedirs(fp, exist_ok=True) - for name, clip_data in samples.items(): - with open(os.path.join(fp, f"{name}.wav"), "wb") as f: - f.write(clip_data) - return [obj.path_id] - - -if __name__ == '__main__': - main() From b4b68f2f957b9f73e53b28b49bbb9818ac761be4 Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Sun, 21 Nov 2021 14:04:55 +0100 Subject: [PATCH 026/599] add WIP il2cppdumper port as tool --- UnityPy/tools/libil2cpp_helper/__init__.py | 1 + UnityPy/tools/libil2cpp_helper/helper.py | 111 ++++++ UnityPy/tools/libil2cpp_helper/il2cpp.py | 0 .../tools/libil2cpp_helper/il2cpp_class.py | 230 +++++++++++++ UnityPy/tools/libil2cpp_helper/metadata.py | 297 ++++++++++++++++ .../tools/libil2cpp_helper/metadata_class.py | 325 ++++++++++++++++++ 6 files changed, 964 insertions(+) create mode 100644 UnityPy/tools/libil2cpp_helper/__init__.py create mode 100644 UnityPy/tools/libil2cpp_helper/helper.py create mode 100644 UnityPy/tools/libil2cpp_helper/il2cpp.py create mode 100644 UnityPy/tools/libil2cpp_helper/il2cpp_class.py create mode 100644 UnityPy/tools/libil2cpp_helper/metadata.py create mode 100644 UnityPy/tools/libil2cpp_helper/metadata_class.py diff --git a/UnityPy/tools/libil2cpp_helper/__init__.py b/UnityPy/tools/libil2cpp_helper/__init__.py new file mode 100644 index 00000000..3d4cb931 --- /dev/null +++ b/UnityPy/tools/libil2cpp_helper/__init__.py @@ -0,0 +1 @@ +from .metadata import Metadata \ No newline at end of file diff --git a/UnityPy/tools/libil2cpp_helper/helper.py b/UnityPy/tools/libil2cpp_helper/helper.py new file mode 100644 index 00000000..be3aa96e --- /dev/null +++ b/UnityPy/tools/libil2cpp_helper/helper.py @@ -0,0 +1,111 @@ +from enum import Enum +from io import BytesIO +from struct import pack, unpack +from typing import List, Iterator, Tuple, Union, BinaryIO, get_origin, get_args + +# save original int class +_int = int + + +class CustomIntWrapper(int): + __size: int + __format: str + + @classmethod + def read_from(cls, f: BytesIO): + return cls( + unpack("<" + getattr(cls, "__format"), f.read(getattr(cls, "__size")))[0] + ) + + +def CustomIntWrapperFactory(name: str, __size: int, __format: str) -> CustomIntWrapper: + return type(name, (CustomIntWrapper,), {"__size": __size, "__format": __format}) + + +byte = CustomIntWrapperFactory("byte", 1, "B") +short = CustomIntWrapperFactory("short", 2, "h") +ushort = CustomIntWrapperFactory("ushort", 2, "H") +int = CustomIntWrapperFactory("int", 4, "i") +uint = CustomIntWrapperFactory("uint", 4, "I") +long = CustomIntWrapperFactory("long", 8, "q") +ulong = CustomIntWrapperFactory("ulong", 8, "Q") + + +class Version: + Min: float + Max: float + + def __new__(cls, Min: float = 0, Max: float = 99): + spec = [] + if Min: + spec.append(f"Min={Min}") + if Max != 99: + spec.append(f"Max={Max}") + newclass = type( + f"Version ({', '.join(spec)})", (Version,), {"Min": Min, "Max": Max} + ) + return newclass + + @classmethod + def check_compatiblity(cls, version): + return cls.Min <= version <= cls.Max + + +class MetaDataClass: + version: float + size: int + parseString: str + + def __init__(self, reader: BinaryIO = None) -> None: + if not (self.version): + raise NotImplementedError( + "Using an unversioned MetaDataClass isn't possible." + ) + if reader: + self.read_from(reader) + + def read_from(self, reader: BytesIO): + self.__dict__.update( + zip( + self.__annotations__.keys(), + unpack(self.parseString, reader.read(self.size)), + ) + ) + + def write_to(self, writer: BytesIO): + writer.write( + pack( + "<" + self.parseString, + (self.get(key) for key in self.__annotations__.keys()), + ) + ) + + @classmethod + def generate_versioned_subclass(cls, version: float): + # fetch fields & calculate size + compatible_fields = {} + size = 0 + parseString = [] + for key, clz in cls.__annotations__.items(): + if get_origin(clz) == Union: + clz, *version_checks = get_args(clz) + if not any( + version_check.check_compatiblity(version) + for version_check in version_checks + ): + continue + compatible_fields[key] = clz + size += getattr(clz, "__size") + parseString.append(getattr(clz, "__format")) + + newclass = type( + f"{cls.__name__} - V{version:.1f}", + (MetaDataClass,), + { + "__annotations__": compatible_fields, + "size": size, + "version": version, + "parseString": "".join(parseString), + }, + ) + return newclass diff --git a/UnityPy/tools/libil2cpp_helper/il2cpp.py b/UnityPy/tools/libil2cpp_helper/il2cpp.py new file mode 100644 index 00000000..e69de29b diff --git a/UnityPy/tools/libil2cpp_helper/il2cpp_class.py b/UnityPy/tools/libil2cpp_helper/il2cpp_class.py new file mode 100644 index 00000000..64e30063 --- /dev/null +++ b/UnityPy/tools/libil2cpp_helper/il2cpp_class.py @@ -0,0 +1,230 @@ +from .helper import * + + +class Il2CppCodeRegistration(MetaDataClass): + methodPointersCount: Union[long, Version(Max=24.1)] + methodPointers: Union[ulong, Version(Max=24.1)] + delegateWrappersFromNativeToManagedCount: Union[ulong, Version(Max=21)] + delegateWrappersFromNativeToManaged: Union[ + ulong, Version(Max=21) + ] # note the double indirection to handle different calling conventions + reversePInvokeWrapperCount: Union[long, Version(Min=22)] + reversePInvokeWrappers: Union[ulong, Version(Min=22)] + delegateWrappersFromManagedToNativeCount: Union[ulong, Version(Max=22)] + delegateWrappersFromManagedToNative: Union[ulong, Version(Max=22)] + marshalingFunctionsCount: Union[ulong, Version(Max=22)] + marshalingFunctions: Union[ulong, Version(Max=22)] + ccwMarshalingFunctionsCount: Union[ulong, Version(Min=21, Max=22)] + ccwMarshalingFunctions: Union[ulong, Version(Min=21, Max=22)] + genericMethodPointersCount: long + genericMethodPointers: ulong + genericAdjustorThunks: Union[ulong, Version(Min=24.4, Max=24.4), Version(Min=27.1)] + invokerPointersCount: long + invokerPointers: ulong + customAttributeCount: Union[long, Version(Max=24.4)] + customAttributeGenerators: Union[ulong, Version(Max=24.4)] + guidCount: Union[long, Version(Min=21, Max=22)] + guids: Union[ulong, Version(Min=21, Max=22)] # Il2CppGuid + unresolvedVirtualCallCount: Union[long, Version(Min=22)] + unresolvedVirtualCallPointers: Union[ulong, Version(Min=22)] + interopDataCount: Union[ulong, Version(Min=23)] + interopData: Union[ulong, Version(Min=23)] + windowsRuntimeFactoryCount: Union[ulong, Version(Min=24.3)] + windowsRuntimeFactoryTable: Union[ulong, Version(Min=24.3)] + codeGenModulesCount: Union[long, Version(Min=24.2)] + codeGenModules: Union[ulong, Version(Min=24.2)] + + +class Il2CppMetadataRegistration(MetaDataClass): + genericClassesCount: long + genericClasses: ulong + genericInstsCount: long + genericInsts: ulong + genericMethodTableCount: long + genericMethodTable: ulong + typesCount: long + types: ulong + methodSpecsCount: long + methodSpecs: ulong + methodReferencesCount: Union[long, Version(Max=16)] + methodReferences: Union[ulong, Version(Max=16)] + + fieldOffsetsCount: long + fieldOffsets: ulong + + typeDefinitionsSizesCount: long + typeDefinitionsSizes: ulong + metadataUsagesCount: Union[ulong, Version(Min=19)] + metadataUsages: Union[ulong, Version(Min=19)] + + +class Il2CppTypeEnum(uint, Enum): + IL2CPP_TYPE_END = 0x00 # End of List + IL2CPP_TYPE_VOID = 0x01 + IL2CPP_TYPE_BOOLEAN = 0x02 + IL2CPP_TYPE_CHAR = 0x03 + IL2CPP_TYPE_I1 = 0x04 + IL2CPP_TYPE_U1 = 0x05 + IL2CPP_TYPE_I2 = 0x06 + IL2CPP_TYPE_U2 = 0x07 + IL2CPP_TYPE_I4 = 0x08 + IL2CPP_TYPE_U4 = 0x09 + IL2CPP_TYPE_I8 = 0x0A + IL2CPP_TYPE_U8 = 0x0B + IL2CPP_TYPE_R4 = 0x0C + IL2CPP_TYPE_R8 = 0x0D + IL2CPP_TYPE_STRING = 0x0E + IL2CPP_TYPE_PTR = 0x0F # arg: token + IL2CPP_TYPE_BYREF = 0x10 # arg: token + IL2CPP_TYPE_VALUETYPE = 0x11 # arg: token + IL2CPP_TYPE_CLASS = 0x12 # arg: token + IL2CPP_TYPE_VAR = 0x13 # Generic parameter in a generic type definition, represented as number (compressed unsigned integer) number + IL2CPP_TYPE_ARRAY = 0x14 # type, rank, boundsCount, bound1, loCount, lo1 + IL2CPP_TYPE_GENERICINST = 0x15 # \x{2026} + IL2CPP_TYPE_TYPEDBYREF = 0x16 + IL2CPP_TYPE_I = 0x18 + IL2CPP_TYPE_U = 0x19 + IL2CPP_TYPE_FNPTR = 0x1B # arg: full method signature + IL2CPP_TYPE_OBJECT = 0x1C + IL2CPP_TYPE_SZARRAY = 0x1D # 0-based one-dim-array + IL2CPP_TYPE_MVAR = 0x1E # Generic parameter in a generic method definition, represented as number (compressed unsigned integer) + IL2CPP_TYPE_CMOD_REQD = 0x1F # arg: typedef or typeref token + IL2CPP_TYPE_CMOD_OPT = 0x20 # optional arg: typedef or typref token + IL2CPP_TYPE_INTERNAL = 0x21 # CLR internal type + + IL2CPP_TYPE_MODIFIER = 0x40 # Or with the following types + IL2CPP_TYPE_SENTINEL = 0x41 # Sentinel for varargs method signature + IL2CPP_TYPE_PINNED = 0x45 # Local var that points to pinned object + + IL2CPP_TYPE_ENUM = 0x55 # an enumeration + + +# class Il2CppType(MetaDataClass): +# datapoint: ulong +# bits: uint +# data { get: Union set; } +# attrs { get: uint set; } +# type { get: Il2CppTypeEnum set; } +# num_mods { get: uint set; } +# byref { get: uint set; } +# pinned { get: uint set; } + +# public void Init() +# { +# attrs = bits & 0xffff; +# type = (Il2CppTypeEnum)((bits >> 16) & 0xff); +# num_mods = (bits >> 24) & 0x3f; +# byref = (bits >> 30) & 1; +# pinned = bits >> 31; +# data = new Union { dummy = datapoint }; +# } + +# public class Union +# { +# dummy: ulong +# #/ +# #/ for VALUETYPE and CLASS +# #/ +# klassIndex => (long)dummy: long +# #/ +# #/ for VALUETYPE and CLASS at runtime +# #/ +# typeHandle => dummy: ulong +# #/ +# #/ for PTR and SZARRAY +# #/ +# type => dummy: ulong +# #/ +# #/ for ARRAY +# #/ +# array => dummy: ulong +# #/ +# #/ for VAR and MVAR +# #/ +# genericParameterIndex => (long)dummy: long +# #/ +# #/ for VAR and MVAR at runtime +# #/ +# genericParameterHandle => dummy: ulong +# #/ +# #/ for GENERICINST +# #/ +# generic_class => dummy: ulong +# } +# } + + +class Il2CppGenericContext(MetaDataClass): + # The instantiation corresponding to the class generic parameters + class_inst: ulong + # The instantiation corresponding to the method generic parameters + method_inst: ulong + + +class Il2CppGenericClass(MetaDataClass): + typeDefinitionIndex: Union[long, Version(Max=24.4)] # the generic type definition + type: Union[ulong, Version(Min=27)] # the generic type definition + context: Il2CppGenericContext # a context that contains the type instantiation doesn't contain any method instantiation + cached_class: ulong # if present, the Il2CppClass corresponding to the instantiation. + + +class Il2CppGenericInst(MetaDataClass): + type_argc: long + type_argv: ulong + + +class Il2CppArrayType(MetaDataClass): + etype: ulong + rank: byte + numsizes: byte + numlobounds: byte + sizes: ulong + lobounds: ulong + + +class Il2CppGenericMethodIndices(MetaDataClass): + methodIndex: int + invokerIndex: int + adjustorThunk: Union[int, Version(Min=24.4, Max=24.4), Version(Min=27.1)] + + +class Il2CppGenericMethodFunctionsDefinitions(MetaDataClass): + genericMethodIndex: int + indices: Il2CppGenericMethodIndices + + +class Il2CppMethodSpec(MetaDataClass): + methodDefinitionIndex: int + classIndexIndex: int + methodIndexIndex: int + + +class Il2CppCodeGenModule(MetaDataClass): + moduleName: ulong + methodPointerCount: long + methodPointers: ulong + adjustorThunkCount: Union[long, Version(Min=24.4, Max=24.4), Version(Min=27.1)] + adjustorThunks: Union[ulong, Version(Min=24.4, Max=24.4), Version(Min=27.1)] + invokerIndices: ulong + reversePInvokeWrapperCount: ulong + reversePInvokeWrapperIndices: ulong + rgctxRangesCount: long + rgctxRanges: ulong + rgctxsCount: long + rgctxs: ulong + debuggerMetadata: ulong + customAttributeCacheGenerator: Union[ulong, Version(Min=27)] + moduleInitializer: Union[ulong, Version(Min=27)] + staticConstructorTypeIndices: Union[ulong, Version(Min=27)] + metadataRegistration: Union[ulong, Version(Min=27)] # Per-assembly mode only + codeRegistaration: Union[ulong, Version(Min=27)] # Per-assembly mode only + + +class Il2CppRange(MetaDataClass): + start: int + length: int + + +class Il2CppTokenRangePair(MetaDataClass): + token: uint + range: Il2CppRange diff --git a/UnityPy/tools/libil2cpp_helper/metadata.py b/UnityPy/tools/libil2cpp_helper/metadata.py new file mode 100644 index 00000000..e9d5e54e --- /dev/null +++ b/UnityPy/tools/libil2cpp_helper/metadata.py @@ -0,0 +1,297 @@ +from .metadata_class import * +from typing import List, Dict +from collections import OrderedDict + + +class Metadata: + header: Il2CppGlobalMetadataHeader + imageDefs: List[Il2CppImageDefinition] + typeDefs: List[Il2CppTypeDefinition] + methodDefs: List[Il2CppMethodDefinition] + parameterDefs: List[Il2CppParameterDefinition] + fieldDefs: List[Il2CppFieldDefinition] + fieldDefaultValuesDic: Dict[int, Il2CppFieldDefaultValue] + parameterDefaultValuesDic: Dict[int, Il2CppParameterDefaultValue] + propertyDefs: List[Il2CppPropertyDefinition] + attributeTypeRanges: List[Il2CppCustomAttributeTypeRange] + attributeTypeRangesDic: Dict[Il2CppImageDefinition, Dict[uint, int]] + stringLiterals: List[Il2CppStringLiteral] + metadataUsageLists: List[Il2CppMetadataUsageList] + metadataUsagePairs: List[Il2CppMetadataUsagePair] + attributeTypes: List[int] + interfaceIndices: List[int] + metadataUsageDic: Dict[uint, OrderedDict[uint, uint]] + maxMetadataUsages: int # long + nestedTypeIndices: List[int] + eventDefs: List[Il2CppEventDefinition] + genericContainers: List[Il2CppGenericContainer] + fieldRefs: List[Il2CppFieldRef] + genericParameters: List[Il2CppGenericParameter] + constraintIndices: List[int] + vtableMethods: List[uint] + rgctxEntries: List[Il2CppRGCTXDefinition] + + stringCache: Dict[uint, str] + Address: int # ulong + + version: int + Version: float + + def __init__(self, stream: BytesIO): + self.reader = stream + self.stringCache = {} + + sanity = uint.read_from(stream) + if sanity != 0xFAB11BAF: + raise ValueError( + "ERROR: Metadata file supplied is not valid metadata file." + ) + self.version = version = int.read_from(stream) + if version < 16 or version > 27: + raise NotImplementedError( + f"ERROR: Metadata file supplied is not a supported version[{version}]." + ) + + self.Version = Version = float(version) + self.header = header = self.ReadClass(Il2CppGlobalMetadataHeader, 0) + if version == 24: + if header.stringLiteralOffset == 264: + self.Version = Version = 24.2 + self.header = header = self.ReadClass(Il2CppGlobalMetadataHeader, 0) + else: + self.imageDefs = imageDefs = self.ReadMetadataClassArray( + Il2CppImageDefinition, header.imagesOffset, header.imagesCount + ) + if any(x.token != 1 for x in imageDefs): + self.Version = Version = 24.1 + + self.imageDefs = imageDefs = self.ReadMetadataClassArray( + Il2CppImageDefinition, header.imagesOffset, header.imagesCount + ) + self.typeDefs = self.ReadMetadataClassArray( + Il2CppTypeDefinition, + header.typeDefinitionsOffset, + header.typeDefinitionsCount, + ) + self.methodDefs = self.ReadMetadataClassArray( + Il2CppMethodDefinition, header.methodsOffset, header.methodsCount + ) + self.parameterDefs = self.ReadMetadataClassArray( + Il2CppParameterDefinition, header.parametersOffset, header.parametersCount + ) + self.fieldDefs = self.ReadMetadataClassArray( + Il2CppFieldDefinition, header.fieldsOffset, header.fieldsCount + ) + self.fieldDefaultValues = self.ReadMetadataClassArray( + Il2CppFieldDefaultValue, + header.fieldDefaultValuesOffset, + header.fieldDefaultValuesCount, + ) + self.parameterDefaultValues = self.ReadMetadataClassArray( + Il2CppParameterDefaultValue, + header.parameterDefaultValuesOffset, + header.parameterDefaultValuesCount, + ) + self.fieldDefaultValuesDic = {x.fieldIndex: x for x in self.fieldDefaultValues} + self.parameterDefaultValuesDic = { + x.parameterIndex: x for x in self.parameterDefaultValues + } + self.propertyDefs = self.ReadMetadataClassArray( + Il2CppPropertyDefinition, header.propertiesOffset, header.propertiesCount + ) + self.interfaceIndices = self.ReadClassArray( + int, header.interfacesOffset, header.interfacesCount // 4 + ) + self.nestedTypeIndices = self.ReadClassArray( + int, header.nestedTypesOffset, header.nestedTypesCount // 4 + ) + self.eventDefs = self.ReadMetadataClassArray( + Il2CppEventDefinition, header.eventsOffset, header.eventsCount + ) + self.genericContainers = self.ReadMetadataClassArray( + Il2CppGenericContainer, + header.genericContainersOffset, + header.genericContainersCount, + ) + self.genericParameters = self.ReadMetadataClassArray( + Il2CppGenericParameter, + header.genericParametersOffset, + header.genericParametersCount, + ) + self.constraintIndices = self.ReadClassArray( + int, + header.genericParameterConstraintsOffset, + header.genericParameterConstraintsCount // 4, + ) + self.vtableMethods = self.ReadClassArray( + uint, header.vtableMethodsOffset, header.vtableMethodsCount // 4 + ) + if 16 < Version < 27: # TODO + self.stringLiterals = self.ReadMetadataClassArray( + Il2CppStringLiteral, + header.stringLiteralOffset, + header.stringLiteralCount, + ) + self.metadataUsageLists = self.ReadMetadataClassArray( + Il2CppMetadataUsageList, + header.metadataUsageListsOffset, + header.metadataUsageListsCount, + ) + self.metadataUsagePairs = self.ReadMetadataClassArray( + Il2CppMetadataUsagePair, + header.metadataUsagePairsOffset, + header.metadataUsagePairsCount, + ) + + self.ProcessingMetadataUsage() + + self.fieldRefs = self.ReadMetadataClassArray( + Il2CppFieldRef, header.fieldRefsOffset, header.fieldRefsCount + ) + + if Version > 20: + self.attributeTypeRanges = self.ReadMetadataClassArray( + Il2CppCustomAttributeTypeRange, + header.attributesInfoOffset, + header.attributesInfoCount, + ) + self.attributeTypes = self.ReadClassArray( + int, header.attributeTypesOffset, header.attributeTypesCount // 4 + ) + + if Version >= 24.1: + self.attributeTypeRangesDic = attributeTypeRangesDic = {} + for imageDef in imageDefs: + dic = {} + attributeTypeRangesDic[imageDef] = dic + end = imageDef.customAttributeStart + imageDef.customAttributeCount + for i in range(imageDef.customAttributeStart, end): + dic[self.attributeTypeRanges[i].token] = i + + if Version <= 24.1: + self.rgctxEntries = self.ReadMetadataClassArray( + Il2CppRGCTXDefinition, + header.rgctxEntriesOffset, + header.rgctxEntriesCount, + ) + + def ReadClass(self, clz: MetaDataClass, addr: int) -> List[MetaDataClass]: + self.reader.seek(addr) + return clz.generate_versioned_subclass(self.Version)(self.reader) + + def ReadClassArray( + self, + clz: Union[MetaDataClass, CustomIntWrapper, Il2CppRGCTXDefinition], + addr: int, + count: int, + ) -> List[MetaDataClass]: + self.reader.seek(addr) + if issubclass(clz, (MetaDataClass, Il2CppRGCTXDefinition)): + return [clz(self.reader) for _ in range(count)] + elif issubclass(clz, CustomIntWrapper): + return [clz.read_from(self.reader) for _ in range(count)] + elif clz == Il2CppRGCTXDefinition: + return [clz.read_from(self.reader) for _ in range(count)] + else: + raise ValueError("Invalid clz type") + + def ReadMetadataClassArray( + self, clz: MetaDataClass, addr: int, count: int + ) -> List[MetaDataClass]: + clz = clz.generate_versioned_subclass(self.Version) + return self.ReadClassArray(clz, addr, count // clz.size) + + def GetFieldDefaultValueFromIndex(self, index: int) -> Il2CppFieldDefaultValue: + return self.fieldDefaultValuesDic.get(index, None) + + def GetParameterDefaultValueFromIndex( + self, index: int + ) -> Il2CppParameterDefaultValue: + return self.parameterDefaultValuesDic.get(index, None) + + def GetDefaultValueFromIndex(self, index: int) -> int: + return self.header.fieldAndParameterDefaultValueDataOffset + index + + def GetStringFromIndex(self, index: int) -> str: + result = self.stringCache.get(index, None) + if result == None: + result = self.ReadStringToNull(self.header.stringOffset + index) + self.stringCache[index] = result + return result + + # public int GetCustomAttributeIndex(Il2CppImageDefinition imageDef, int customAttributeIndex, uint token) + # { + # if (Version > 24) + # { + # if (attributeTypeRangesDic[imageDef].TryGetValue(token, out var index)) + # { + # return index + # } + # else + # { + # return -1 + # } + # } + # else + # { + # return customAttributeIndex + # } + # } + + def GetStringLiteralFromIndex(self, index: int) -> str: + stringLiteral = self.stringLiterals[index] + self.reader.seek(self.header.stringLiteralDataOffset + stringLiteral.dataIndex) + return self.reader.read(stringLiteral.Length).encode("utf8") + + def GetStringLiterals(self): + return [self.GetDecodedMethodIndex(i) for i in range(len(self.stringLiterals))] + + def ProcessingMetadataUsage(self): + self.metadataUsageDic = metadataUsageDic = { + i: OrderedDict() for i in range(1, 7) + } + for metadataUsageList in self.metadataUsageLists: + for i in range(metadataUsageList.count): + offset = metadataUsageList.start + i + metadataUsagePair = self.metadataUsagePairs[offset] + usage = self.GetEncodedIndexType(metadataUsagePair.encodedSourceIndex) + decodedIndex = self.GetDecodedMethodIndex( + metadataUsagePair.encodedSourceIndex + ) + metadataUsageDic[usage][ + metadataUsagePair.destinationIndex + ] = decodedIndex + + self.maxMetadataUsages = ( + max(y for x in metadataUsageDic.values() for y in x.keys()) + 1 + ) + + def GetEncodedIndexType(self, index: int) -> int: + return (index & 0xE0000000) >> 29 + + def GetDecodedMethodIndex(self, index: int): + if self.Version >= 27: + return (index & 0x1FFFFFFE) >> 1 + return index & 0x1FFFFFFF + + def SizeOf(typ) -> int: + return typ.size + + def ReadString(self, numChars: int) -> str: + start = self.reader.tell() + # UTF8 takes up to 4 bytes per character + string = self.reader.read(numChars * 4).encode("utf8")[:numChars] + # make our position what it would have been if we'd known the exact number of bytes needed. + self.reader.seek(start) + self.reader.read(len(string.encode("utf8"))) + return string + + def ReadStringToNull(self, offset: int) -> str: + read_one = lambda: self.reader.read(1) + start = self.reader.seek(offset) + c = b"\x00" + ret = [] + while c == b"\x00": + c = read_one() + ret.append(c) + return b"".join(ret).encode("utf8") diff --git a/UnityPy/tools/libil2cpp_helper/metadata_class.py b/UnityPy/tools/libil2cpp_helper/metadata_class.py new file mode 100644 index 00000000..bba2c4b5 --- /dev/null +++ b/UnityPy/tools/libil2cpp_helper/metadata_class.py @@ -0,0 +1,325 @@ +from .helper import * + + +class Il2CppGlobalMetadataHeader(MetaDataClass): + sanity: uint + version: int + stringLiteralOffset: uint # string data for managed code + stringLiteralCount: int + stringLiteralDataOffset: uint + stringLiteralDataCount: int + stringOffset: uint # string data for metadata + stringCount: int + eventsOffset: uint # Il2CppEventDefinition + eventsCount: int + propertiesOffset: uint # Il2CppPropertyDefinition + propertiesCount: int + methodsOffset: uint # Il2CppMethodDefinition + methodsCount: int + parameterDefaultValuesOffset: uint # Il2CppParameterDefaultValue + parameterDefaultValuesCount: int + fieldDefaultValuesOffset: uint # Il2CppFieldDefaultValue + fieldDefaultValuesCount: int + fieldAndParameterDefaultValueDataOffset: uint # uint8_t + fieldAndParameterDefaultValueDataCount: int + fieldMarshaledSizesOffset: int # Il2CppFieldMarshaledSize + fieldMarshaledSizesCount: int + parametersOffset: uint # Il2CppParameterDefinition + parametersCount: int + fieldsOffset: uint # Il2CppFieldDefinition + fieldsCount: int + genericParametersOffset: uint # Il2CppGenericParameter + genericParametersCount: int + genericParameterConstraintsOffset: uint # TypeIndex + genericParameterConstraintsCount: int + genericContainersOffset: uint # Il2CppGenericContainer + genericContainersCount: int + nestedTypesOffset: uint # TypeDefinitionIndex + nestedTypesCount: int + interfacesOffset: uint # TypeIndex + interfacesCount: int + vtableMethodsOffset: uint # EncodedMethodIndex + vtableMethodsCount: int + interfaceOffsetsOffset: int # Il2CppInterfaceOffsetPair + interfaceOffsetsCount: int + typeDefinitionsOffset: uint # Il2CppTypeDefinition + typeDefinitionsCount: int + rgctxEntriesOffset: Union[uint, Version(Max=24.1)] # Il2CppRGCTXDefinition + rgctxEntriesCount: Union[int, Version(Max=24.1)] + imagesOffset: uint # Il2CppImageDefinition + imagesCount: int + assembliesOffset: int # Il2CppAssemblyDefinition + assembliesCount: int + metadataUsageListsOffset: Union[ + uint, Version(Min=19, Max=24.4) + ] # Il2CppMetadataUsageList + metadataUsageListsCount: Union[int, Version(Min=19, Max=24.4)] + metadataUsagePairsOffset: Union[ + uint, Version(Min=19, Max=24.4) + ] # Il2CppMetadataUsagePair + metadataUsagePairsCount: Union[int, Version(Min=19, Max=24.4)] + fieldRefsOffset: Union[uint, Version(Min=19)] # Il2CppFieldRef + fieldRefsCount: Union[int, Version(Min=19)] + referencedAssembliesOffset: Union[int, Version(Min=20)] # int32_t + referencedAssembliesCount: Union[int, Version(Min=20)] + attributesInfoOffset: Union[uint, Version(Min=21)] # Il2CppCustomAttributeTypeRange + attributesInfoCount: Union[int, Version(Min=21)] + attributeTypesOffset: Union[uint, Version(Min=21)] # TypeIndex + attributeTypesCount: Union[int, Version(Min=21)] + unresolvedVirtualCallParameterTypesOffset: Union[int, Version(Min=22)] # TypeIndex + unresolvedVirtualCallParameterTypesCount: Union[int, Version(Min=22)] + unresolvedVirtualCallParameterRangesOffset: Union[ + int, Version(Min=22) + ] # Il2CppRange + unresolvedVirtualCallParameterRangesCount: Union[int, Version(Min=22)] + windowsRuntimeTypeNamesOffset: Union[ + int, Version(Min=23) + ] # Il2CppWindowsRuntimeTypeNamePair + windowsRuntimeTypeNamesSize: Union[int, Version(Min=23)] + windowsRuntimeStringsOffset: Union[int, Version(Min=27)] # const char* + windowsRuntimeStringsSize: Union[int, Version(Min=27)] + exportedTypeDefinitionsOffset: Union[int, Version(Min=24)] # TypeDefinitionIndex + exportedTypeDefinitionsCount: Union[int, Version(Min=24)] + + +class Il2CppImageDefinition(MetaDataClass): + nameIndex: uint + assemblyIndex: int + + typeStart: int + typeCount: uint + + exportedTypeStart: Union[int, Version(Min=24)] + exportedTypeCount: Union[uint, Version(Min=24)] + + entryPointIndex: int + token: Union[uint, Version(Min=19)] + + customAttributeStart: Union[int, Version(Min=24.1)] + customAttributeCount: Union[uint, Version(Min=24.1)] + + +class Il2CppTypeDefinition(MetaDataClass): + nameIndex: uint + namespaceIndex: uint + customAttributeIndex: Union[int, Version(Max=24)] + byvalTypeIndex: int + byrefTypeIndex: Union[int, Version(Max=24.4)] + + declaringTypeIndex: int + parentIndex: int + elementTypeIndex: int # we can probably remove this one. Only used for enums + + rgctxStartIndex: Union[int, Version(Max=24.1)] + rgctxCount: Union[int, Version(Max=24.1)] + + genericContainerIndex: int + + delegateWrapperFromManagedToNativeIndex: Union[int, Version(Max=22)] + marshalingFunctionsIndex: Union[int, Version(Max=22)] + ccwFunctionIndex: Union[int, Version(Min=21, Max=22)] + guidIndex: Union[int, Version(Min=21, Max=22)] + + flags: uint + + fieldStart: int + methodStart: int + eventStart: int + propertyStart: int + nestedTypesStart: int + interfacesStart: int + vtableStart: int + interfaceOffsetsStart: int + + method_count: ushort + property_count: ushort + field_count: ushort + event_count: ushort + nested_type_count: ushort + vtable_count: ushort + interfaces_count: ushort + interface_offsets_count: ushort + + # bitfield to portably encode boolean values as single bits + # 01 - valuetype; + # 02 - enumtype; + # 03 - has_finalize; + # 04 - has_cctor; + # 05 - is_blittable; + # 06 - is_import_or_windows_runtime; + # 07-10 - One of nine possible PackingSize values (0, 1, 2, 4, 8, 16, 32, 64, or 128) + # 11 - PackingSize is default + # 12 - ClassSize is default + # 13-16 - One of nine possible PackingSize values (0, 1, 2, 4, 8, 16, 32, 64, or 128) - the specified packing size (even for explicit layouts) + bitfield: uint + token: Union[uint, Version(Min=19)] + + @property + def IsValueType(self) -> bool: + return (self.bitfield & 0x1) == 1 + + @property + def IsEnum(self) -> bool: + return ((self.bitfield >> 1) & 0x1) == 1 + + +class Il2CppMethodDefinition(MetaDataClass): + nameIndex: uint + declaringType: int + returnType: int + parameterStart: int + customAttributeIndex: Union[int, Version(Max=24)] + genericContainerIndex: int + methodIndex: Union[int, Version(Max=24.1)] + invokerIndex: Union[int, Version(Max=24.1)] + delegateWrapperIndex: Union[int, Version(Max=24.1)] + rgctxStartIndex: Union[int, Version(Max=24.1)] + rgctxCount: Union[int, Version(Max=24.1)] + token: uint + flags: ushort + iflags: ushort + slot: ushort + parameterCount: ushort + + +class Il2CppParameterDefinition(MetaDataClass): + nameIndex: uint + token: uint + customAttributeIndex: Union[int, Version(Max=24)] + typeIndex: int + + +class Il2CppFieldDefinition(MetaDataClass): + nameIndex: uint + typeIndex: int + customAttributeIndex: Union[int, Version(Max=24)] + token: Union[uint, Version(Min=19)] + + +class Il2CppFieldDefaultValue(MetaDataClass): + fieldIndex: int + typeIndex: int + dataIndex: int + + +class Il2CppPropertyDefinition(MetaDataClass): + nameIndex: uint + get: int + set: int + attrs: uint + customAttributeIndex: Union[int, Version(Max=24)] + token: Union[uint, Version(Min=19)] + + +class Il2CppCustomAttributeTypeRange(MetaDataClass): + token: Union[uint, Version(Min=24.1)] + start: int + count: int + + +class Il2CppMetadataUsageList(MetaDataClass): + start: uint + count: uint + + +class Il2CppMetadataUsagePair(MetaDataClass): + destinationIndex: uint + encodedSourceIndex: uint + + +class Il2CppStringLiteral(MetaDataClass): + length: uint + dataIndex: int + + +class Il2CppParameterDefaultValue(MetaDataClass): + parameterIndex: int + typeIndex: int + dataIndex: int + + +class Il2CppEventDefinition(MetaDataClass): + nameIndex: uint + typeIndex: int + add: int + remove: int + rais: int + customAttributeIndex: Union[int, Version(Max=24)] + token: Union[uint, Version(Min=19)] + + +class Il2CppGenericContainer(MetaDataClass): + # index of the generic type definition or the generic method definition corresponding to this container + ownerIndex: int # either index into Il2CppClass metadata array or Il2CppMethodDefinition array + type_argc: int + # If true, we're a generic method, otherwise a generic type definition. + is_method: int + # Our type parameters. + genericParameterStart: int + + +class Il2CppFieldRef(MetaDataClass): + typeIndex: int + fieldIndex: int # local offset into type fields + + +class Il2CppGenericParameter(MetaDataClass): + ownerIndex: int # Type or method this parameter was defined in. + nameIndex: uint + constraintsStart: short + constraintsCount: short + num: ushort + flags: ushort + + +class Il2CppRGCTXDataType(uint, Enum): + IL2CPP_RGCTX_DATA_INVALID = 0 + IL2CPP_RGCTX_DATA_TYPE = 1 + IL2CPP_RGCTX_DATA_CLASS = 2 + IL2CPP_RGCTX_DATA_METHOD = 3 + IL2CPP_RGCTX_DATA_ARRAY = 4 + + +class Il2CppRGCTXDefinitionData(MetaDataClass): + rgctxDataDummy: int + + @property + def methodIndex(self) -> int: + return self.rgctxDataDummy + + @property + def typeIndex(self) -> int: + return self.rgctxDataDummy + + +class Il2CppRGCTXDefinition: + type: Il2CppRGCTXDataType + data: Il2CppRGCTXDefinitionData + + version: float + size: int + parseString: str + + def __init__(self, reader: BinaryIO = None) -> None: + if not (self.version): + raise NotImplementedError( + "Using an unversioned MetaDataClass isn't possible." + ) + if reader: + self.read_from(reader) + + def read_from(self, reader: BytesIO): + self.type = Il2CppRGCTXDataType.read_from(reader) + self.data = Il2CppRGCTXDefinitionData.generate_versioned_subclass(self.version)( + reader + ) + + def write_to(self, writer: BytesIO): + self.type = self.data.write_to(writer) + self.data.write_to(writer) + + @classmethod + def generate_versioned_subclass(cls, version: float): + cls.version = version + cls.size = 8 # TODO if data changes + return cls From 585ac212a12e19d52d09b2d14d500172952cb81d Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Wed, 1 Dec 2021 09:35:33 +0100 Subject: [PATCH 027/599] update rebundle example --- examples/rebundle.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/rebundle.py b/examples/rebundle.py index 4e3b244b..9e223aa8 100644 --- a/examples/rebundle.py +++ b/examples/rebundle.py @@ -18,7 +18,7 @@ from UnityPy.files.SerializedFile import FileIdentifier, ObjectReader, SerializedType -SERIALIZED_PATH = "globalgamemanagers" +SERIALIZED_PATH = r"globalgamemanagers" DATA_PATH = os.path.join(os.path.dirname(os.path.realpath(__file__)), "data") @@ -38,7 +38,7 @@ def main(): or_bp = list(sf.objects.values())[0].__dict__ # object data bf.files["serialized_file"] = sf - sf._flag = 4 + sf.flags = 4 # remove all unnesessary stuff for key in list(sf.objects.keys()): @@ -60,7 +60,7 @@ def main(): def add_cab(bf, sf, root, f): fp = os.path.join(root, f) - bf.files[f] = Fake(data=open(fp, "rb").read(), _flag=4) + bf.files[f] = Fake(data=open(fp, "rb").read(), flags=4) sf.externals.append( Fake( temp_empty="", @@ -135,4 +135,4 @@ def save(self): if __name__ == "__main__": - main() + main() \ No newline at end of file From 979e529a8dccee592cf42bfe8ca1ecd54ffaa4de Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Wed, 1 Dec 2021 09:36:41 +0100 Subject: [PATCH 028/599] simple stream performance improvement use (un)pack instead of struct.(un)pack --- UnityPy/streams/EndianBinaryReader.py | 34 ++++++++++++++++----------- UnityPy/streams/EndianBinaryWriter.py | 26 ++++++++++---------- 2 files changed, 34 insertions(+), 26 deletions(-) diff --git a/UnityPy/streams/EndianBinaryReader.py b/UnityPy/streams/EndianBinaryReader.py index 98125815..9fe4738a 100644 --- a/UnityPy/streams/EndianBinaryReader.py +++ b/UnityPy/streams/EndianBinaryReader.py @@ -1,5 +1,5 @@ import io -import struct +from struct import unpack from ..math import Color, Matrix4x4, Quaternion, Vector2, Vector3, Vector4, Rectangle @@ -36,46 +36,46 @@ def read(self, *args): return b"" def read_byte(self) -> int: - return struct.unpack(self.endian + "b", self.read(1))[0] + return unpack(self.endian + "b", self.read(1))[0] def read_u_byte(self) -> int: - return struct.unpack(self.endian + "B", self.read(1))[0] + return unpack(self.endian + "B", self.read(1))[0] def read_bytes(self, num) -> bytes: return self.read(num) def read_short(self) -> int: - return struct.unpack(self.endian + "h", self.read(2))[0] + return unpack(self.endian + "h", self.read(2))[0] def read_int(self) -> int: - return struct.unpack(self.endian + "i", self.read(4))[0] + return unpack(self.endian + "i", self.read(4))[0] def read_long(self) -> int: - return struct.unpack(self.endian + "q", self.read(8))[0] + return unpack(self.endian + "q", self.read(8))[0] def read_u_short(self) -> int: - return struct.unpack(self.endian + "H", self.read(2))[0] + return unpack(self.endian + "H", self.read(2))[0] def read_u_int(self) -> int: - return struct.unpack(self.endian + "I", self.read(4))[0] + return unpack(self.endian + "I", self.read(4))[0] def read_u_long(self) -> int: - return struct.unpack(self.endian + "Q", self.read(8))[0] + return unpack(self.endian + "Q", self.read(8))[0] def read_float(self) -> float: - return struct.unpack(self.endian + "f", self.read(4))[0] + return unpack(self.endian + "f", self.read(4))[0] def read_double(self) -> float: - return struct.unpack(self.endian + "d", self.read(8))[0] + return unpack(self.endian + "d", self.read(8))[0] def read_boolean(self) -> bool: - return bool(struct.unpack(self.endian + "?", self.read(1))[0]) + return bool(unpack(self.endian + "?", self.read(1))[0]) def read_string(self, size=None, encoding="utf8") -> str: if size is None: ret = self.read_string_to_null() else: - ret = struct.unpack(f"{self.endian}{size}is", self.read(size))[0] + ret = unpack(f"{self.endian}{size}is", self.read(size))[0] try: return ret.decode(encoding) except UnicodeDecodeError: @@ -218,7 +218,6 @@ class EndianBinaryReader_Streamable(EndianBinaryReader): def __init__(self, stream, endian=">", offset=0): self.stream = stream - self.Length = self.stream.seek(0, 2) - offset super().__init__(stream, endian=endian, offset=offset) def get_position(self): @@ -227,6 +226,13 @@ def get_position(self): def set_position(self, value): self.stream.seek(value+self.BaseOffset) + @property + def Length(self): + pos = self.Position + length = self.stream.seek(0, 2) - self.BaseOffset + self.Position = pos + return length + Position = property(get_position, set_position) @property diff --git a/UnityPy/streams/EndianBinaryWriter.py b/UnityPy/streams/EndianBinaryWriter.py index c8b921c5..d9861401 100644 --- a/UnityPy/streams/EndianBinaryWriter.py +++ b/UnityPy/streams/EndianBinaryWriter.py @@ -1,5 +1,5 @@ import io -import struct +from struct import pack from ..math import Color, Matrix4x4, Quaternion, Vector2, Vector3, Vector4, Rectangle @@ -14,6 +14,8 @@ def __init__(self, input_=b"", endian=">"): if isinstance(input_, (bytes, bytearray)): self.stream = io.BytesIO(input_) self.stream.seek(0, 2) + elif isinstance(input_, io.IOBase): + self.stream = input_ else: raise ValueError("Invalid input type - %s." % type(input_)) self.endian = endian @@ -44,40 +46,40 @@ def write(self, *args): return ret def write_byte(self, value: int): - self.write(struct.pack(self.endian + "b", value)) + self.write(pack(self.endian + "b", value)) def write_u_byte(self, value: int): - self.write(struct.pack(self.endian + "B", value)) + self.write(pack(self.endian + "B", value)) def write_bytes(self, value: bytes): return self.write(value) def write_short(self, value: int): - self.write(struct.pack(self.endian + "h", value)) + self.write(pack(self.endian + "h", value)) def write_int(self, value: int): - self.write(struct.pack(self.endian + "i", value)) + self.write(pack(self.endian + "i", value)) def write_long(self, value: int): - self.write(struct.pack(self.endian + "q", value)) + self.write(pack(self.endian + "q", value)) def write_u_short(self, value: int): - self.write(struct.pack(self.endian + "H", value)) + self.write(pack(self.endian + "H", value)) def write_u_int(self, value: int): - self.write(struct.pack(self.endian + "I", value)) + self.write(pack(self.endian + "I", value)) def write_u_long(self, value: int): - self.write(struct.pack(self.endian + "Q", value)) + self.write(pack(self.endian + "Q", value)) def write_float(self, value: float): - self.write(struct.pack(self.endian + "f", value)) + self.write(pack(self.endian + "f", value)) def write_double(self, value: float): - self.write(struct.pack(self.endian + "d", value)) + self.write(pack(self.endian + "d", value)) def write_boolean(self, value: bool): - self.write(struct.pack(self.endian + "?", value)) + self.write(pack(self.endian + "?", value)) def write_string_to_null(self, value: str): self.write(value.encode("utf8", "surrogateescape")) From 79f8c8badc53ae501f47bfaa3e7fce635494a138 Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Wed, 1 Dec 2021 09:38:50 +0100 Subject: [PATCH 029/599] hotfix for calling read on read objects --- UnityPy/classes/Object.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/UnityPy/classes/Object.py b/UnityPy/classes/Object.py index 51e376c7..b5fd749a 100644 --- a/UnityPy/classes/Object.py +++ b/UnityPy/classes/Object.py @@ -115,7 +115,8 @@ def __getattr__(self, name): self.reader.Position = old_pos if name == "type_tree": return self.type_tree - + elif name == "read": + return lambda : self return getattr(self.type_tree, name) def get(self, key, default=None): From 91def6017f8fd6b3d494f46d1a0e1f0393e75b82 Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Wed, 1 Dec 2021 09:41:00 +0100 Subject: [PATCH 030/599] bump to 1.7.25 --- README.md | 4 ++-- UnityPy/__init__.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 35a841aa..37d9cbc1 100644 --- a/README.md +++ b/README.md @@ -101,8 +101,8 @@ def unpack_all_assets(source_folder : str, destination_folder : str): You probably have to read [Important Classes](#important-classes) and [Important Object Types](#important-object-types) to understand how it works. -People who have slightly advanced python skills should take a look at [examples/AssetBatchConverter.py](examples/AssetBatchConverter.py) for a more advanced example. -It can also be used as general template. +People who have slightly advanced python skills should take a look at [UnityPy/tools/extractor.py](UnityPy/tools/extractor.py) for a more advanced example. +It can also be used as general template or simply as importable tool. ## Important Classes diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index e6942b8b..74347059 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.24" +__version__ = "1.7.25" from .environment import Environment From 753b8099ebd45ad85450d508227fcbcf05771426 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 11 Dec 2021 23:46:13 +0100 Subject: [PATCH 031/599] 1.7.26 - fix #77 --- UnityPy/__init__.py | 2 +- UnityPy/files/SerializedFile.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 74347059..4a02eddb 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.25" +__version__ = "1.7.26" from .environment import Environment diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 09da44af..42ab8872 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -285,6 +285,10 @@ def container(self): return self.container_ def set_version(self, string_version): + if string_version == "0.0.0": + # weird case, but apparently can happen? + # check "cant read Texture2D by 2020.3.13 f1 AssetBundle #77" for details + string_version = self.parent.version_engine self.unity_version = string_version build_type = re.findall(r"([^\d.])", string_version) self.build_type = BuildType(build_type[0] if build_type else "") From 77acc9a8bf0193ecf805541e67b79f1bb9f57a32 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 12 Dec 2021 22:20:23 +0100 Subject: [PATCH 032/599] 1.7.27 - fix #77 keep read string version as self.unity_version try to find correct resS flags --- UnityPy/__init__.py | 2 +- UnityPy/files/File.py | 9 ++++++++- UnityPy/files/SerializedFile.py | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 4a02eddb..e6c42830 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.26" +__version__ = "1.7.27" from .environment import Environment diff --git a/UnityPy/files/File.py b/UnityPy/files/File.py index 0da27080..03a17f2f 100644 --- a/UnityPy/files/File.py +++ b/UnityPy/files/File.py @@ -114,7 +114,14 @@ def get_writeable_cab(self, name: str = None): ) writer = EndianBinaryWriter() - writer.flags = 4 + # try to find another resource file to copy the flags from + for name, f in self.files.items(): + if name.endswith(".resS"): + writer.flags = f.flags + writer.endian = f.endian + break + else: + writer.flags = 0 writer.name = name self.files[name] = writer return writer diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 42ab8872..c88c6701 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -285,11 +285,11 @@ def container(self): return self.container_ def set_version(self, string_version): + self.unity_version = string_version if string_version == "0.0.0": # weird case, but apparently can happen? # check "cant read Texture2D by 2020.3.13 f1 AssetBundle #77" for details string_version = self.parent.version_engine - self.unity_version = string_version build_type = re.findall(r"([^\d.])", string_version) self.build_type = BuildType(build_type[0] if build_type else "") version_split = re.split(r"\D", string_version) From 11258d7fa7a23365598b36fa50aa1c283fb0b32a Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 3 Jan 2022 20:31:30 +0100 Subject: [PATCH 033/599] 1.7.28 - fix cab paths and name finding --- UnityPy/__init__.py | 2 +- UnityPy/files/File.py | 4 ++-- UnityPy/files/SerializedFile.py | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index e6c42830..63d20fc2 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.27" +__version__ = "1.7.28" from .environment import Environment diff --git a/UnityPy/files/File.py b/UnityPy/files/File.py index 03a17f2f..4d3f43d5 100644 --- a/UnityPy/files/File.py +++ b/UnityPy/files/File.py @@ -115,8 +115,8 @@ def get_writeable_cab(self, name: str = None): writer = EndianBinaryWriter() # try to find another resource file to copy the flags from - for name, f in self.files.items(): - if name.endswith(".resS"): + for fname, f in self.files.items(): + if fname.endswith(".resS"): writer.flags = f.flags writer.endian = f.endian break diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index c88c6701..c7b33e12 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -364,9 +364,9 @@ def get_writeable_cab(self, name: str = "CAB-UnityPy_Mod.resS"): self.parent, (File.BundleFile.BundleFile, File.WebFile.WebFile) ): return None + cab = self.parent.get_writeable_cab(name) - - cab.path = f"archive:/{name}" + cab.path = f"archive:/{self.name}/{name}" if not any(cab.path == x.path for x in self.externals): # register as external class FileIdentifierFake: From a1619717a78488b5b14897cc91baa48a54d7dae4 Mon Sep 17 00:00:00 2001 From: deibu Date: Tue, 25 Jan 2022 14:37:34 -0800 Subject: [PATCH 034/599] Shader fix for Unity 2020 and newer (#82) * Updated Shader.py to reflect changes in AssetStudio in order to support shaders in 2020 and newer versions of Unity. * use detailed version decision * Update Shader.py Co-authored-by: Rudolf Kolbe --- UnityPy/classes/Shader.py | 131 +++++++++++++++++++++++++++++--------- 1 file changed, 102 insertions(+), 29 deletions(-) diff --git a/UnityPy/classes/Shader.py b/UnityPy/classes/Shader.py index 10e74a32..985a70d0 100644 --- a/UnityPy/classes/Shader.py +++ b/UnityPy/classes/Shader.py @@ -235,6 +235,10 @@ def __init__(self, reader): ] self.m_Size = reader.read_int() + if version >= (2021,1,4) or (version[0] == 2020 and version >= (2020,3,2)): + self.m_IsPartialCB = reader.read_boolean() + reader.align_stream() + class UAVParameter: def __init__(self, reader): @@ -243,27 +247,8 @@ def __init__(self, reader): self.m_OriginalIndex = reader.read_int() -class SerializedSubProgram: +class SerializedProgramParameters: def __init__(self, reader): - version = reader.version - - self.m_BlobIndex = reader.read_u_int() - self.m_Channels = ParserBindChannels(reader) - - if version >= (2019,): # 2019 and up - self.m_GlobalKeywordIndices = reader.read_u_short_array() - reader.align_stream() - self.m_LocalKeywordIndices = reader.read_u_short_array() - reader.align_stream() - else: - self.m_KeywordIndices = reader.read_u_short_array() - if version >= (2017,): # 2017 and up - reader.align_stream() - - self.m_ShaderHardwareTier = reader.read_byte() - self.m_GpuProgramType = ShaderGpuProgramType(reader.read_byte()) - reader.align_stream() - numVectorParams = reader.read_int() self.m_VectorParams = [VectorParameter( reader) for _ in range(numVectorParams)] @@ -294,21 +279,84 @@ def __init__(self, reader): numUAVParams = reader.read_int() self.m_UAVParams = [UAVParameter(reader) for _ in range(numUAVParams)] - if version >= (2017,): # 2017 and up - numSamplers = reader.read_int() - self.m_Samplers = [SamplerParameter( - reader) for _ in range(numSamplers)] + numSamplers = reader.read_int() + self.m_Samplers = [SamplerParameter( + reader) for _ in range(numSamplers)] + + +class SerializedSubProgram: + def __init__(self, reader): + version = reader.version + + self.m_BlobIndex = reader.read_u_int() + self.m_Channels = ParserBindChannels(reader) + + if (2019,) <= version < (2021,2): # 2019 ~2021.1 + self.m_GlobalKeywordIndices = reader.read_u_short_array() + reader.align_stream() + self.m_LocalKeywordIndices = reader.read_u_short_array() + reader.align_stream() + else: + self.m_KeywordIndices = reader.read_u_short_array() + if version >= (2017,): # 2017 and up + reader.align_stream() + + self.m_ShaderHardwareTier = reader.read_byte() + self.m_GpuProgramType = ShaderGpuProgramType(reader.read_byte()) + reader.align_stream() + + if version >= (2021,1,4) or (version[0] == 2020 and version >= (2020,3,2)): + self.m_Parameters = SerializedProgramParameters(reader) + else: + numVectorParams = reader.read_int() + self.m_VectorParams = [VectorParameter( + reader) for _ in range(numVectorParams)] + + numMatrixParams = reader.read_int() + self.m_MatrixParams = [MatrixParameter( + reader) for _ in range(numMatrixParams)] + + numTextureParams = reader.read_int() + self.m_TextureParams = [ + TextureParameter(reader) for _ in range(numTextureParams) + ] + + numBufferParams = reader.read_int() + self.m_BufferParams = [BufferBinding( + reader) for _ in range(numBufferParams)] + + numConstantBuffers = reader.read_int() + self.m_ConstantBuffers = [ + ConstantBuffer(reader) for _ in range(numConstantBuffers) + ] + + numConstantBufferBindings = reader.read_int() + self.m_ConstantBufferBindings = [ + BufferBinding(reader) for _ in range(numConstantBufferBindings) + ] + + numUAVParams = reader.read_int() + self.m_UAVParams = [UAVParameter(reader) for _ in range(numUAVParams)] + if version >= (2017, 2): # 2017.2 and up - self.m_ShaderRequirements = reader.read_int() + if version >= (2021,): + self.m_ShaderRequirements = reader.read_long() + else: + self.m_ShaderRequirements = reader.read_int() class SerializedProgram: def __init__(self, reader): + version = reader.version + numSubPrograms = reader.read_int() self.m_SubPrograms = [ SerializedSubProgram(reader) for _ in range(numSubPrograms) ] + if version >= (2021,1,4) or (version[0] == 2020 and version >= (2020,3,2)): + self.m_CommonParameters = SerializedProgramParameters(reader) + class SerializedPass: def __init__(self, reader): @@ -323,10 +371,11 @@ def __init__(self, reader): reader.align_stream() m_Platforms = reader.read_byte_array() reader.align_stream() - m_LocalKeywordMask = reader.read_u_short_array() - reader.align_stream() - m_GlobalKeywordMask = reader.read_u_short_array() - reader.align_stream() + if version < (2021, 2): + m_LocalKeywordMask = reader.read_u_short_array() + reader.align_stream() + m_GlobalKeywordMask = reader.read_u_short_array() + reader.align_stream() numIndices = reader.read_int() self.m_NameIndices = {} @@ -351,6 +400,9 @@ def __init__(self, reader): self.m_Name = reader.read_aligned_string() self.m_TextureName = reader.read_aligned_string() self.m_Tags = SerializedTagMap(reader) + if version >= (2021, 2): + m_SerializedKeywordStateMask = reader.read_u_short_array() + reader.align_stream() class SerializedTagMap: @@ -376,12 +428,26 @@ def __init__(self, reader): self.to = reader.read_aligned_string() +class SerializedCustomEditorForRenderPipeline: + def __init__(self, reader): + self.customEditorName = reader.read_aligned_string() + self.renderPipelineType = reader.read_aligned_string() + + class SerializedShader: def __init__(self, reader): + version = reader.version + self.m_PropInfo = SerializedProperties(reader) numSubShaders = reader.read_int() self.m_SubShaders = [SerializedSubShader( reader) for _ in range(numSubShaders)] + + if version >= (2021, 2): + self.m_KeywordNames = reader.read_string_array() + self.m_KeywordFlags = reader.read_bytes(reader.read_int()) + reader.align_stream() + self.m_Name = reader.read_aligned_string() self.m_CustomEditorName = reader.read_aligned_string() self.m_FallbackName = reader.read_aligned_string() @@ -389,5 +455,12 @@ def __init__(self, reader): self.m_Dependencies = [ SerializedShaderDependency(reader) for _ in range(numDependencies) ] + + if version >= (2021,): + m_CustomEditorForRenderPipelinesSize = reader.read_int() + self.m_CustomEditorForRenderPipelines = [ + SerializedCustomEditorForRenderPipeline(reader) for _ in range(m_CustomEditorForRenderPipelinesSize) + ] + self.m_DisableNoSubshadersMessage = reader.read_boolean() reader.align_stream() From 0974c12d58851c1586f9e4b804ba9873f8919ade Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 25 Jan 2022 23:39:11 +0100 Subject: [PATCH 035/599] Saving: don't add unread data --- UnityPy/files/ObjectReader.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index a20bd32f..f197ac90 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -94,11 +94,12 @@ def write(self, header, writer: EndianBinaryWriter, data_writer: EndianBinaryWri # in some cases the parser doesn't read all of the object data # games might still require the missing data # so following code appends the missing data back to edited objects - if self.type != ClassIDType.MonoBehaviour: - end_pos = self.byte_start + self.byte_size - if self._read_until and self._read_until != end_pos: - self.reader.Position = self._read_until - data += self.reader.read_bytes(end_pos - self._read_until) + # -> following solution has let to some problems, so it will be removed for now + # if self.type != ClassIDType.MonoBehaviour: + # end_pos = self.byte_start + self.byte_size + # if self._read_until and self._read_until != end_pos: + # self.reader.Position = self._read_until + # data += self.reader.read_bytes(end_pos - self._read_until) else: self.reset() data = self.reader.read(self.byte_size) From c81d9552cb450a713587388f6b54a0a1ed440a5b Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 25 Jan 2022 23:40:58 +0100 Subject: [PATCH 036/599] Texture2D: don't use cab for image.setter for now --- UnityPy/classes/Texture2D.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/UnityPy/classes/Texture2D.py b/UnityPy/classes/Texture2D.py index 78e3bab2..d501602c 100644 --- a/UnityPy/classes/Texture2D.py +++ b/UnityPy/classes/Texture2D.py @@ -51,16 +51,17 @@ def reset_streamdata(self): @image_data.setter def image_data(self, data: bytes): self._image_data = data - # prefer writing to cab if possible - if self.version >= (5, 3) and self.m_StreamData.path: - cab = self.assets_file.get_writeable_cab() - if cab: - self.m_StreamData.offset = cab.Position - cab.write(data) - self.m_StreamData.size = len(data) - self.m_StreamData.path = cab.path - else: - self.reset_streamdata() + # ignore writing to cab for now until it's more stable + # if self.version >= (5, 3) and self.m_StreamData.path: + # cab = self.assets_file.get_writeable_cab() + # if cab: + # self.m_StreamData.offset = cab.Position + # cab.write(data) + # self.m_StreamData.size = len(data) + # self.m_StreamData.path = cab.path + # else: + # self.reset_streamdata() + self.reset_streamdata() def set_image(self, img, target_format: TextureFormat = None, in_cab: bool = False): if img is None: From 7b784afc0b3269c1a6e953d475c19288ec8eb4b0 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 25 Jan 2022 23:41:25 +0100 Subject: [PATCH 037/599] bump version to 1.7.30 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 63d20fc2..1ec2548b 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.28" +__version__ = "1.7.30" from .environment import Environment From 01ccf91fddcb1fa449c2908d991dbe1c92453011 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 29 Jan 2022 00:43:38 +0100 Subject: [PATCH 038/599] 1.7.31 - fix Texture2D mipmap ignorance --- UnityPy/__init__.py | 2 +- UnityPy/classes/Texture2D.py | 41 +++++++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 1ec2548b..43afbbef 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.30" +__version__ = "1.7.31" from .environment import Environment diff --git a/UnityPy/classes/Texture2D.py b/UnityPy/classes/Texture2D.py index d501602c..081f207d 100644 --- a/UnityPy/classes/Texture2D.py +++ b/UnityPy/classes/Texture2D.py @@ -30,10 +30,18 @@ def image(self, img): img_data, tex_format = Texture2DConverter.image_to_texture2d( img, self.m_TextureFormat ) + + # disable mipmaps as we don't store them ourselves by default + if self.version[:2] < (5, 2): # 5.2 down + self.m_MipMap = False + else: + self.m_MipCount = 1 + self.image_data = img_data + self.m_MipCount = 1 # width * height * channel count self.m_CompleteImageSize = len( - self._image_data + img_data ) # img.width * img.height * len(img.getbands()) self.m_TextureFormat = tex_format @@ -63,21 +71,48 @@ def image_data(self, data: bytes): # self.reset_streamdata() self.reset_streamdata() - def set_image(self, img, target_format: TextureFormat = None, in_cab: bool = False): + def set_image( + self, + img, + target_format: TextureFormat = None, + in_cab: bool = False, + mipmap_count: int = 1, + ): if img is None: raise Exception("No image provided") if not target_format: target_format = self.m_TextureFormat + img_data, tex_format = Texture2DConverter.image_to_texture2d(img, target_format) + if mipmap_count > 1: + width = self.m_Width + height = self.m_Height + re_img = img + for i in range(mipmap_count - 1): + width //= 2 + height //= 2 + if width < 1 or height < 1: + mipmap_count = i + 1 + break + re_img = re_img.resize((width, height), Image.BICUBIC) + img_data += Texture2DConverter.image_to_texture2d( + re_img, target_format + )[0] + + if self.version[:2] < (5, 2): # 5.2 down + self.m_MipMap = mipmap_count > 1 + else: + self.m_MipCount = mipmap_count if in_cab: self.image_data = img_data else: self._image_data = img_data self.reset_streamdata() + # width * height * channel count self.m_CompleteImageSize = len( - self._image_data + img_data ) # img.width * img.height * len(img.getbands()) self.m_TextureFormat = tex_format From c545b1be64ca0467637d6751e6f93a3192301ba8 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 29 Jan 2022 14:20:59 +0100 Subject: [PATCH 039/599] 1.7.32 - Texture2D mipmaps have to be at elast 4x4 for some compressions --- UnityPy/__init__.py | 2 +- UnityPy/classes/Texture2D.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 43afbbef..b406422b 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.31" +__version__ = "1.7.32" from .environment import Environment diff --git a/UnityPy/classes/Texture2D.py b/UnityPy/classes/Texture2D.py index 081f207d..5c5539a3 100644 --- a/UnityPy/classes/Texture2D.py +++ b/UnityPy/classes/Texture2D.py @@ -91,7 +91,7 @@ def set_image( for i in range(mipmap_count - 1): width //= 2 height //= 2 - if width < 1 or height < 1: + if width < 4 or height < 4: mipmap_count = i + 1 break re_img = re_img.resize((width, height), Image.BICUBIC) From 63f71352b58be4740d9d2ba8a30d7041a7b377ad Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 29 Jan 2022 16:18:33 +0100 Subject: [PATCH 040/599] ReadMe: remove : from the fp assignment in the MonoBehaviour example --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 37d9cbc1..07085566 100644 --- a/README.md +++ b/README.md @@ -251,13 +251,13 @@ for obj in env.objects: if obj.serialized_type.nodes: # save decoded data tree = obj.read_typetree() - fp = os.path.join(extract_dir, f"{data.name}.json"): + fp = os.path.join(extract_dir, f"{data.name}.json") with open(fp, "wt", encoding = "utf8") as f: json.dump(tree, f, ensure_ascii = False, indent = 4) else: # save raw relevant data (without Unity MonoBehaviour header) data = obj.read() - fp = os.path.join(extract_dir, f"{data.name}.bin"): + fp = os.path.join(extract_dir, f"{data.name}.bin") with open(fp, "wb") as f: f.write(data.raw_data) From ff735ebf7ac31888100fbc09c6ff6e3510c3294a Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 5 Feb 2022 20:58:59 +0100 Subject: [PATCH 041/599] Shader - fix missing samplers for 2017~2020 --- UnityPy/classes/Shader.py | 60 +++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/UnityPy/classes/Shader.py b/UnityPy/classes/Shader.py index 985a70d0..c2be9a08 100644 --- a/UnityPy/classes/Shader.py +++ b/UnityPy/classes/Shader.py @@ -45,12 +45,10 @@ def __init__(self, reader): self.m_StructSize = reader.read_int() numVectorParams = reader.read_int() - self.m_VectorParams = [VectorParameter( - reader) for _ in range(numVectorParams)] + self.m_VectorParams = [VectorParameter(reader) for _ in range(numVectorParams)] numMatrixParams = reader.read_int() - self.m_MatrixParams = [MatrixParameter( - reader) for _ in range(numMatrixParams)] + self.m_MatrixParams = [MatrixParameter(reader) for _ in range(numMatrixParams)] class SamplerParameter: @@ -169,8 +167,7 @@ def __init__(self, reader): class ParserBindChannels: def __init__(self, reader): numChannels = reader.read_int() - self.m_Channels = [ShaderBindChannel( - reader) for _ in range(numChannels)] + self.m_Channels = [ShaderBindChannel(reader) for _ in range(numChannels)] reader.align_stream() self.m_SourceMap = reader.read_u_int() @@ -222,12 +219,10 @@ def __init__(self, reader): self.m_NameIndex = reader.read_int() numMatrixParams = reader.read_int() - self.m_MatrixParams = [MatrixParameter( - reader) for _ in range(numMatrixParams)] + self.m_MatrixParams = [MatrixParameter(reader) for _ in range(numMatrixParams)] numVectorParams = reader.read_int() - self.m_VectorParams = [VectorParameter( - reader) for _ in range(numVectorParams)] + self.m_VectorParams = [VectorParameter(reader) for _ in range(numVectorParams)] if version >= (2017, 3): # 2017.3 and up numStructParams = reader.read_int() self.m_StructParams = [ @@ -235,7 +230,7 @@ def __init__(self, reader): ] self.m_Size = reader.read_int() - if version >= (2021,1,4) or (version[0] == 2020 and version >= (2020,3,2)): + if version >= (2021, 1, 4) or (version[0] == 2020 and version >= (2020, 3, 2)): self.m_IsPartialCB = reader.read_boolean() reader.align_stream() @@ -250,12 +245,10 @@ def __init__(self, reader): class SerializedProgramParameters: def __init__(self, reader): numVectorParams = reader.read_int() - self.m_VectorParams = [VectorParameter( - reader) for _ in range(numVectorParams)] + self.m_VectorParams = [VectorParameter(reader) for _ in range(numVectorParams)] numMatrixParams = reader.read_int() - self.m_MatrixParams = [MatrixParameter( - reader) for _ in range(numMatrixParams)] + self.m_MatrixParams = [MatrixParameter(reader) for _ in range(numMatrixParams)] numTextureParams = reader.read_int() self.m_TextureParams = [ @@ -263,8 +256,7 @@ def __init__(self, reader): ] numBufferParams = reader.read_int() - self.m_BufferParams = [BufferBinding( - reader) for _ in range(numBufferParams)] + self.m_BufferParams = [BufferBinding(reader) for _ in range(numBufferParams)] numConstantBuffers = reader.read_int() self.m_ConstantBuffers = [ @@ -280,8 +272,7 @@ def __init__(self, reader): self.m_UAVParams = [UAVParameter(reader) for _ in range(numUAVParams)] numSamplers = reader.read_int() - self.m_Samplers = [SamplerParameter( - reader) for _ in range(numSamplers)] + self.m_Samplers = [SamplerParameter(reader) for _ in range(numSamplers)] class SerializedSubProgram: @@ -291,7 +282,7 @@ def __init__(self, reader): self.m_BlobIndex = reader.read_u_int() self.m_Channels = ParserBindChannels(reader) - if (2019,) <= version < (2021,2): # 2019 ~2021.1 + if (2019,) <= version < (2021, 2): # 2019 ~2021.1 self.m_GlobalKeywordIndices = reader.read_u_short_array() reader.align_stream() self.m_LocalKeywordIndices = reader.read_u_short_array() @@ -305,16 +296,18 @@ def __init__(self, reader): self.m_GpuProgramType = ShaderGpuProgramType(reader.read_byte()) reader.align_stream() - if version >= (2021,1,4) or (version[0] == 2020 and version >= (2020,3,2)): + if version >= (2021, 1, 4) or (version[0] == 2020 and version >= (2020, 3, 2)): self.m_Parameters = SerializedProgramParameters(reader) else: numVectorParams = reader.read_int() - self.m_VectorParams = [VectorParameter( - reader) for _ in range(numVectorParams)] + self.m_VectorParams = [ + VectorParameter(reader) for _ in range(numVectorParams) + ] numMatrixParams = reader.read_int() - self.m_MatrixParams = [MatrixParameter( - reader) for _ in range(numMatrixParams)] + self.m_MatrixParams = [ + MatrixParameter(reader) for _ in range(numMatrixParams) + ] numTextureParams = reader.read_int() self.m_TextureParams = [ @@ -322,8 +315,9 @@ def __init__(self, reader): ] numBufferParams = reader.read_int() - self.m_BufferParams = [BufferBinding( - reader) for _ in range(numBufferParams)] + self.m_BufferParams = [ + BufferBinding(reader) for _ in range(numBufferParams) + ] numConstantBuffers = reader.read_int() self.m_ConstantBuffers = [ @@ -338,6 +332,10 @@ def __init__(self, reader): numUAVParams = reader.read_int() self.m_UAVParams = [UAVParameter(reader) for _ in range(numUAVParams)] + if version >= (2017,): # 2017 and up + numSamplers = reader.read_int() + self.m_Samples = [SamplerParameter(reader) for _ in range(numSamplers)] + if version >= (2017, 2): # 2017.2 and up if version >= (2021,): self.m_ShaderRequirements = reader.read_long() @@ -354,7 +352,7 @@ def __init__(self, reader): SerializedSubProgram(reader) for _ in range(numSubPrograms) ] - if version >= (2021,1,4) or (version[0] == 2020 and version >= (2020,3,2)): + if version >= (2021, 1, 4) or (version[0] == 2020 and version >= (2020, 3, 2)): self.m_CommonParameters = SerializedProgramParameters(reader) @@ -440,8 +438,7 @@ def __init__(self, reader): self.m_PropInfo = SerializedProperties(reader) numSubShaders = reader.read_int() - self.m_SubShaders = [SerializedSubShader( - reader) for _ in range(numSubShaders)] + self.m_SubShaders = [SerializedSubShader(reader) for _ in range(numSubShaders)] if version >= (2021, 2): self.m_KeywordNames = reader.read_string_array() @@ -459,7 +456,8 @@ def __init__(self, reader): if version >= (2021,): m_CustomEditorForRenderPipelinesSize = reader.read_int() self.m_CustomEditorForRenderPipelines = [ - SerializedCustomEditorForRenderPipeline(reader) for _ in range(m_CustomEditorForRenderPipelinesSize) + SerializedCustomEditorForRenderPipeline(reader) + for _ in range(m_CustomEditorForRenderPipelinesSize) ] self.m_DisableNoSubshadersMessage = reader.read_boolean() From 9083a0dcb4f9052337c35ae9615b48429c0789cb Mon Sep 17 00:00:00 2001 From: able Date: Sun, 6 Feb 2022 05:00:18 +0800 Subject: [PATCH 042/599] fix bug on split files (#83) --- UnityPy/helpers/ImportHelper.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/UnityPy/helpers/ImportHelper.py b/UnityPy/helpers/ImportHelper.py index 35c35556..ed830250 100644 --- a/UnityPy/helpers/ImportHelper.py +++ b/UnityPy/helpers/ImportHelper.py @@ -6,7 +6,7 @@ def file_name_without_extension(file_name: str) -> str: - return os.path.splitext(os.path.basename(file_name))[0] + return os.path.join(os.path.dirname(file_name),os.path.splitext(os.path.basename(file_name))[0]) def list_all_files(directory: str) -> List[str]: @@ -63,10 +63,9 @@ def merge_split_assets(path: str, all_directories: bool = False): def processing_split_files(select_file: list) -> list: split_files = [fp for fp in select_file if ".split" in fp] select_file = [f for f in select_file if f not in split_files] - split_files = set([file_name_without_extension(fp) for fp in split_files]) for splitFile in split_files: - if os.path.isfile: + if os.path.isfile(splitFile) and splitFile not in select_file: select_file.append(splitFile) return select_file From 6774181f043752cb459eae69407264780ad20f29 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 5 Feb 2022 21:14:33 +0100 Subject: [PATCH 043/599] Sprite: implement new SpriteBone --- UnityPy/classes/Sprite.py | 46 ++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/UnityPy/classes/Sprite.py b/UnityPy/classes/Sprite.py index f85be9f0..91b1e603 100644 --- a/UnityPy/classes/Sprite.py +++ b/UnityPy/classes/Sprite.py @@ -5,7 +5,7 @@ from .PPtr import PPtr from ..export import SpriteHelper from ..enums import SpriteMeshType -from ..streams import EndianBinaryWriter +from ..streams import EndianBinaryWriter, EndianBinaryReader class Sprite(NamedObject): @@ -50,9 +50,11 @@ def __init__(self, reader): if version >= (2018,): # 2018 and up m_BonesSize = reader.read_int() - self.m_Bones = [ - reader.read_vector2_array() for _ in range(m_BonesSize) - ] + # TODO: might occur in earlier 2020 versions - 2020.3.13 reported + if version >= (2020,3,): + self.m_Bones = [SpriteBone() for _ in range(m_BonesSize)] + else: + self.m_Bones = [reader.read_vector2_array() for _ in range(m_BonesSize)] def save(self, writer: EndianBinaryWriter = None): if writer is None: @@ -91,8 +93,12 @@ def save(self, writer: EndianBinaryWriter = None): if version >= (2018,): # 2018 and up writer.write_int(len(self.m_Bones)) - for bone in self.m_Bones: - writer.write_vector2_array(bone) + if version >= (2020, 3): + for bone in self.m_Bones: + bone.save(writer) + else: + for bone in self.m_Bones: + writer.write_vector2_array(bone) self.set_raw_data(writer.bytes) @@ -124,10 +130,8 @@ class SpriteSettings: def __init__(self, reader): self.settingsRaw = reader.read_u_int() self.packed = self.settingsRaw & 1 # 1 - self.packingMode = SpritePackingMode( - (self.settingsRaw >> 1) & 1) # 1 - self.packingRotation = SpritePackingRotation( - (self.settingsRaw >> 2) & 0xF) # 4 + self.packingMode = SpritePackingMode((self.settingsRaw >> 1) & 1) # 1 + self.packingRotation = SpritePackingRotation((self.settingsRaw >> 2) & 0xF) # 4 self.meshType = SpriteMeshType((self.settingsRaw >> 6) & 1) # 1 # rest of the bits are reserved @@ -236,3 +240,25 @@ def save(self, writer, version): if version >= (2017,): # 2017 and up writer.write_float(self.downscaleMultiplier) + + +class SpriteBone: + name: str + position: tuple + rotation: tuple + length: float + parentId: int + + def __init__(self, reader: EndianBinaryReader) -> None: + self.name = reader.read_aligned_string() + self.position = reader.read_vector3() + self.rotation = reader.read_vector3() + self.length = reader.read_float() + self.parentId = reader.read_int() + + def save(self, writer: EndianBinaryWriter): + writer.write_aligned_string(self.name) + writer.write_vector3(self.position) + writer.write_vector3(self.rotation) + writer.write_float(self.length) + writer.write_int(self.parentId) From 415f7aa448d55f5aff154ed05313e21770be2431 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 5 Feb 2022 21:15:00 +0100 Subject: [PATCH 044/599] bump to version 1.7.33 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index b406422b..9dd9904d 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.32" +__version__ = "1.7.33" from .environment import Environment From 17d67e59a4e9316948d94f6db95caf8f3b6ebc93 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 8 Feb 2022 11:21:02 +0100 Subject: [PATCH 045/599] 1.7.34 - SpriteAtlasData 2020,2+ added fixes #81 --- UnityPy/__init__.py | 2 +- UnityPy/classes/Sprite.py | 20 +++++------------ UnityPy/classes/SpriteAtlas.py | 16 ++++++++----- UnityPy/enums/SpritePackingMode.py | 5 +++++ UnityPy/enums/SpritePackingRotation.py | 8 +++++++ UnityPy/enums/__init__.py | 2 ++ UnityPy/export/SpriteHelper.py | 31 +++++++++++--------------- 7 files changed, 45 insertions(+), 39 deletions(-) create mode 100644 UnityPy/enums/SpritePackingMode.py create mode 100644 UnityPy/enums/SpritePackingRotation.py diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 9dd9904d..42e40360 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.33" +__version__ = "1.7.34" from .environment import Environment diff --git a/UnityPy/classes/Sprite.py b/UnityPy/classes/Sprite.py index 91b1e603..3f65e84e 100644 --- a/UnityPy/classes/Sprite.py +++ b/UnityPy/classes/Sprite.py @@ -4,7 +4,7 @@ from .NamedObject import NamedObject from .PPtr import PPtr from ..export import SpriteHelper -from ..enums import SpriteMeshType +from ..enums import SpriteMeshType, SpritePackingMode, SpritePackingRotation from ..streams import EndianBinaryWriter, EndianBinaryReader @@ -51,7 +51,10 @@ def __init__(self, reader): if version >= (2018,): # 2018 and up m_BonesSize = reader.read_int() # TODO: might occur in earlier 2020 versions - 2020.3.13 reported - if version >= (2020,3,): + if version >= ( + 2020, + 3, + ): self.m_Bones = [SpriteBone() for _ in range(m_BonesSize)] else: self.m_Bones = [reader.read_vector2_array() for _ in range(m_BonesSize)] @@ -113,19 +116,6 @@ def save(self, writer): writer.write_string_to_null(self.name) -class SpritePackingRotation(IntEnum): - kSPRNone = (0,) - kSPRFlipHorizontal = (1,) - kSPRFlipVertical = (2,) - kSPRRotate180 = (3,) - kSPRRotate90 = 4 - - -class SpritePackingMode(IntEnum): - kSPMTight = (0,) - kSPMRectangle = 1 - - class SpriteSettings: def __init__(self, reader): self.settingsRaw = reader.read_u_int() diff --git a/UnityPy/classes/SpriteAtlas.py b/UnityPy/classes/SpriteAtlas.py index 01c62381..8bf65c45 100644 --- a/UnityPy/classes/SpriteAtlas.py +++ b/UnityPy/classes/SpriteAtlas.py @@ -1,14 +1,13 @@ from .NamedObject import NamedObject from .PPtr import PPtr -from .Sprite import SpriteSettings +from .Sprite import SpriteSettings, SecondarySpriteTexture class SpriteAtlas(NamedObject): def __init__(self, reader): super().__init__(reader=reader) packed_sprites_size = reader.read_int() - self.m_PackedSprites = [PPtr(reader) - for _ in range(packed_sprites_size)] + self.m_PackedSprites = [PPtr(reader) for _ in range(packed_sprites_size)] self.m_PackedSpriteNamesToIndex = reader.read_string_array() m_render_data_map_size = reader.read_int() @@ -22,13 +21,20 @@ def __init__(self, reader): class SpriteAtlasData: def __init__(self, reader): - self.version = reader.version + self.version = version = reader.version self.texture = PPtr(reader) # Texture2D self.alphaTexture = PPtr(reader) # Texture2D self.textureRect = reader.read_rectangle_f() self.textureRectOffset = reader.read_vector2() - if self.version >= (2017, 2): # 2017.2 and up + if version >= (2017, 2): # 2017.2 and up self.atlasRectOffset = reader.read_vector2() self.uvTransform = reader.read_vector4() self.downscaleMultiplier = reader.read_float() self.settingsRaw = SpriteSettings(reader) + + if version >= (2020, 2): + secondaryTexturesSize = reader.read_int() + self.secondaryTextures = [ + SecondarySpriteTexture(reader) for _ in range(secondaryTexturesSize) + ] + reader.align_stream() diff --git a/UnityPy/enums/SpritePackingMode.py b/UnityPy/enums/SpritePackingMode.py new file mode 100644 index 00000000..007208e2 --- /dev/null +++ b/UnityPy/enums/SpritePackingMode.py @@ -0,0 +1,5 @@ +from enum import IntEnum + +class SpritePackingMode(IntEnum): + kSPMTight = 0 + kSPMRectangle = 1 \ No newline at end of file diff --git a/UnityPy/enums/SpritePackingRotation.py b/UnityPy/enums/SpritePackingRotation.py new file mode 100644 index 00000000..14d108a8 --- /dev/null +++ b/UnityPy/enums/SpritePackingRotation.py @@ -0,0 +1,8 @@ +from enum import IntEnum + +class SpritePackingRotation(IntEnum): + kSPRNone = 0 + kSPRFlipHorizontal = 1 + kSPRFlipVertical = 2 + kSPRRotate180 = 3 + kSPRRotate90 = 4 diff --git a/UnityPy/enums/__init__.py b/UnityPy/enums/__init__.py index 2c2e054b..d919e69a 100644 --- a/UnityPy/enums/__init__.py +++ b/UnityPy/enums/__init__.py @@ -9,5 +9,7 @@ from .ShaderCompilerPlatform import ShaderCompilerPlatform from .ShaderGpuProgramType import ShaderGpuProgramType from .SerializedPropertyType import SerializedPropertyType +from .SpritePackingMode import SpritePackingMode +from .SpritePackingRotation import SpritePackingRotation from .TextureDimension import TextureDimension from .PassType import PassType diff --git a/UnityPy/export/SpriteHelper.py b/UnityPy/export/SpriteHelper.py index 2c39f4f1..8263a257 100644 --- a/UnityPy/export/SpriteHelper.py +++ b/UnityPy/export/SpriteHelper.py @@ -1,28 +1,18 @@ -from enum import IntEnum +from enum import IntEnum, IntFlag from PIL import Image, ImageDraw from .Texture2DConverter import get_image_from_texture2d -from ..enums import ClassIDType +from ..enums import ClassIDType, SpritePackingMode, SpritePackingRotation from ..streams import EndianBinaryReader -# should be imported from Sprite, but too lazy to fix the import issues caused by that -class SpritePackingRotation(IntEnum): - kSPRNone = (0,) - kSPRFlipHorizontal = (1,) - kSPRFlipVertical = (2,) - kSPRRotate180 = (3,) - kSPRRotate90 = 4 - - -class SpritePackingMode(IntEnum): - kSPMTight = (0,) - kSPMRectangle = 1 - - def get_image(sprite, texture, alpha_texture) -> Image: - if alpha_texture and getattr(alpha_texture, "type", ClassIDType.UnknownType) == ClassIDType.Texture2D: + if ( + alpha_texture + and getattr(alpha_texture, "type", ClassIDType.UnknownType) + == ClassIDType.Texture2D + ): cache_id = (texture.path_id, alpha_texture.path_id) if cache_id not in sprite.assets_file._cache: original_image = get_image_from_texture2d(texture.read(), False) @@ -65,7 +55,12 @@ def get_image_from_sprite(m_Sprite) -> Image: original_image = get_image(m_Sprite, m_Texture2D, alpha_texture) sprite_image = original_image.crop( - (texture_rect.x, texture_rect.y, texture_rect.x + texture_rect.width, texture_rect.y + texture_rect.height) + ( + texture_rect.x, + texture_rect.y, + texture_rect.x + texture_rect.width, + texture_rect.y + texture_rect.height, + ) ) if settings_raw.packed == 1: From 10fbaae441dc19e21f12eb1fbc6570c044a4db76 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 13 Feb 2022 12:50:26 +0100 Subject: [PATCH 046/599] fix #87 --- UnityPy/tools/extractor.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/tools/extractor.py b/UnityPy/tools/extractor.py index df161e79..f20e3526 100644 --- a/UnityPy/tools/extractor.py +++ b/UnityPy/tools/extractor.py @@ -154,9 +154,9 @@ def exportFont(obj: Font, fp: str, extension: str = "") -> List[int]: return [obj.path_id] -def exportMesh(obj: Mesh, fp: str, extension=".obf") -> List[int]: +def exportMesh(obj: Mesh, fp: str, extension=".obj") -> List[int]: if not extension: - extension = ".obf" + extension = ".obj" with open(f"{fp}{extension}", "wt", encoding="utf8", newline="") as f: f.write(obj.export()) return [obj.path_id] From bc1c28b838a76221fee811f783c72362670c094d Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 27 Feb 2022 20:55:52 +0100 Subject: [PATCH 047/599] 1.7.35 - better splitfile handling fix #90 --- UnityPy/__init__.py | 2 +- UnityPy/environment.py | 89 ++++++++++++++++++++++++--------- UnityPy/helpers/ImportHelper.py | 37 ++------------ 3 files changed, 69 insertions(+), 59 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 42e40360..09ac261c 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.34" +__version__ = "1.7.35" from .environment import Environment diff --git a/UnityPy/environment.py b/UnityPy/environment.py index f3610157..bfbeca6f 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -1,6 +1,8 @@ +from functools import reduce import io import os from zipfile import ZipFile +import re from . import files from .files import File @@ -9,6 +11,8 @@ from .streams import EndianBinaryReader from .files import SerializedFile +reSplitFile = re.compile(r"^(.+)\.split(\d+)$") + class Environment: files: dict @@ -42,23 +46,58 @@ def __init__(self, *args): def load_files(self, files: list): """Loads all files (list) into the AssetsManager and merges .split files for common usage.""" - # ImportHelper.merge_split_assets(path) - # to_read_file = ImportHelper.processing_split_files(files) + # filter split files + i = 0 + splits = [] + while i < len(files): + path = files[i] + splitMatch = reSplitFile.match(path) + if reSplitFile.match(path): + name = splitMatch[1] + if name not in splits: + splits.append(name) + files.remove(path) + else: + i += 1 + + # merge splits + for basepath in splits: + # merge data + data = io.BytesIO() + for i in range(1, 999): + item = f"{basepath}.split{i}" + if os.path.exists(item): + with open(item, "rb") as f: + data.write(f.read()) + else: + break + self.files[self.reduce_path(basepath)] = self.load_file(data) + + # load all other files self.load(files) def load_folder(self, path: str): """Loads all files in the given path and its subdirs into the AssetsManager.""" - ImportHelper.merge_split_assets(path, True) - files = ImportHelper.list_all_files(path) - to_read_file = ImportHelper.processing_split_files(files) - self.load(to_read_file) + self.load_files( + [ + os.path.join(root, f) + for root, dirs, files in os.walk(path) + for f in files + ] + ) + + def reduce_path(self, fp: str) -> str: + return fp[len(self.path) :].lstrip("/\\") def load(self, files: list): """Loads all files into the AssetsManager.""" - for f in files: - self.files[f[len(self.path) :].lstrip("/\\")] = self.load_file( - open(f, "rb"), self - ) + self.files.update( + { + self.reduce_path(f): self.load_file(open(f, "rb")) + for f in files + if os.path.exists(f) + } + ) def load_file(self, stream, parent=None): if not parent: @@ -96,14 +135,13 @@ def load_zip_file(self, value): buffer = value z = ZipFile(buffer) - splits = {} + splits = [] for path in z.namelist(): - - if path[-7:-1] == ".split": - name = path[:-7] + splitMatch = reSplitFile.match(path) + if reSplitFile.match(path): + name = splitMatch[1] if name not in splits: splits[name] = [] - splits[name].append(path) continue stream = z.open(path) @@ -118,13 +156,17 @@ def load_zip_file(self, value): cur.files[name] = self.load_file(stream, cur) # merge splits - for path, items in splits.items(): + for basepath in splits: # merge data data = io.BytesIO() - for item in items: - with z.open(item) as f: - data.write(f.read()) - *path, name = path.split("/") + for i in range(1, 999): + item = f"{basepath}.split{i}" + if item in z.namelist(): + with z.open(item) as f: + data.write(f.read()) + else: + break + *path, name = basepath.split("/") cur = self for d in path: if d not in cur.files: @@ -135,9 +177,9 @@ def load_zip_file(self, value): z.close() def save(self, pack="none"): - """ Saves all changed assets. - Mark assets as changed using `.mark_changed()`. - pack = "none" (default) or "lz4" + """Saves all changed assets. + Mark assets as changed using `.mark_changed()`. + pack = "none" (default) or "lz4" """ for f in self.files: if self.files[f].is_changed: @@ -197,4 +239,3 @@ def register_cab(self, name: str, item: object) -> None: def get_cab(self, name: str) -> object: return self.cabs.get(name.lower(), None) - diff --git a/UnityPy/helpers/ImportHelper.py b/UnityPy/helpers/ImportHelper.py index ed830250..1bc8af70 100644 --- a/UnityPy/helpers/ImportHelper.py +++ b/UnityPy/helpers/ImportHelper.py @@ -6,7 +6,9 @@ def file_name_without_extension(file_name: str) -> str: - return os.path.join(os.path.dirname(file_name),os.path.splitext(os.path.basename(file_name))[0]) + return os.path.join( + os.path.dirname(file_name), os.path.splitext(os.path.basename(file_name))[0] + ) def list_all_files(directory: str) -> List[str]: @@ -37,39 +39,6 @@ def find_all_files(directory: str, search_str: str) -> List[str]: ] -def merge_split_assets(path: str, all_directories: bool = False): - if all_directories: - split_files = [fp for fp in list_all_files(path) if fp[-7:] == ".split0"] - else: - split_files = [ - os.path.join(path, fp) for fp in os.listdir(path) if fp[-7:] == ".split0" - ] - - for split_file in split_files: - dest_file = file_name_without_extension(split_file) - dest_path = os.path.dirname(split_file) - dest_full = os.path.join(dest_path, dest_file) - - if not os.path.exists(dest_full): - with open(dest_full, "wb") as f: - i = 0 - while True: - split_part = "".join([dest_full, ".split", str(i)]) - if not os.path.isfile(split_part): - break - f.write(open(split_part, "rb").read()) - - -def processing_split_files(select_file: list) -> list: - split_files = [fp for fp in select_file if ".split" in fp] - select_file = [f for f in select_file if f not in split_files] - split_files = set([file_name_without_extension(fp) for fp in split_files]) - for splitFile in split_files: - if os.path.isfile(splitFile) and splitFile not in select_file: - select_file.append(splitFile) - return select_file - - def check_file_type(input_) -> Union[FileType, EndianBinaryReader]: if isinstance(input_, str) and os.path.isfile(input_): reader = EndianBinaryReader(open(input_, "rb")) From 0b876bd7d27f0e19aadb85950f1e7f23cc2117b8 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 4 Mar 2022 11:49:15 +0100 Subject: [PATCH 048/599] 1.7.36 - add MeshRendererExporter README - add Renderer exporter and fix some mistakes 1.7.37 - fix 1.7.36 --- README.md | 49 ++++++---- UnityPy/__init__.py | 2 +- UnityPy/classes/Mesh.py | 4 +- UnityPy/classes/Renderer.py | 7 +- UnityPy/export/MeshExporter.py | 52 +++++++--- UnityPy/export/MeshRendererExporter.py | 125 +++++++++++++++++++++++++ UnityPy/export/__init__.py | 2 +- 7 files changed, 205 insertions(+), 36 deletions(-) create mode 100644 UnityPy/export/MeshRendererExporter.py diff --git a/README.md b/README.md index 07085566..e832a21a 100644 --- a/README.md +++ b/README.md @@ -12,14 +12,14 @@ So far following obj types can be edited: - Texture2D - Sprite(indirectly via linked Texture2D) - TextAsset - - MonoBehaviour + - MonoBehaviour (and all other types that you have the typetree of) If you need advice or if you want to talk about (game) data-mining, feel free to join the [UnityPy Discord](https://discord.gg/C6txv7M). If you're making an income by using UnityPy, -please donate a small part to it to a charitable cause of your choice or sponsor this project with a small amount. +please donate a small part of it to a charitable cause of your choice or sponsor this project with a small amount. 1. [Installation](#installation) @@ -102,7 +102,7 @@ You probably have to read [Important Classes](#important-classes) and [Important Object Types](#important-object-types) to understand how it works. People who have slightly advanced python skills should take a look at [UnityPy/tools/extractor.py](UnityPy/tools/extractor.py) for a more advanced example. -It can also be used as general template or simply as importable tool. +It can also be used as the general template or simply as an importable tool. ## Important Classes @@ -114,14 +114,14 @@ It can be initialized via: * a file path - apk files can be loaded as well * a folder path - loads all files in that folder (bad idea for folders with a lot of files) -* a stream - e.g. io.BytesIO, filestream,... +* a stream - e.g. io.BytesIO, file stream,... * a bytes object - will be loaded into a stream -UnityPy can detect itself if the file is a WebFile, BundleFile, Asset or APK itself. +UnityPy can detect itself if the file is a WebFile, BundleFile, Asset, or APK itself. The unpacked assets will be loaded into ``.files``, which is a dict consisting of ``asset-name : asset``. -The all objects of the loaded assets can be easily accessed via ``.objects``, +All objects of the loaded assets can be easily accessed via ``.objects``, which itself is a simple recursive iterator. ```python @@ -276,7 +276,7 @@ for obj in env.objects: * ``.samples`` - ``{sample-name : sample-data}`` The samples are converted into the .wav format. -The sample-data is a .wav file in bytes. +The sample data is a .wav file in bytes. ```python clip : AudioClip @@ -285,11 +285,26 @@ for name, data in clip.samples.items(): f.write(data) ``` +### [Font](UnityPy/classes/Font.py) + +```python +if obj.type.name == "Font": + font : Font = obj.read() + if font.m_FontData: + extension = ".ttf" + if font.m_FontData[0:4] == b"OTTO": + extension = ".otf" + + with open(os.path.join(path, font.name+extension), "wb") as f: + f.write(font.m_FontData) +``` + + ### [Mesh](UnityPy/classes/Mesh.py) * ``.export()`` - mesh exported as .obj (str) -The mesh is converted into an Wavefront .obj file. +The mesh is converted into a Wavefront .obj file. ```python mesh : Mesh @@ -298,16 +313,16 @@ with open(f"{mesh.name}.obj", "wt", newline = "") as f: f.write(mesh.export()) ``` -### [Font](UnityPy/classes/Font.py) +### [Renderer, MeshRenderer, SkinnedMeshRenderer] +ALPHA-VERSION + +* ``.export(export_dir)`` - exports the associated mesh, materials, and textures into the given directory + +The mesh and materials will be in the Wavefront formats. ```python -if obj.type.name == "Font": - font : Font = obj.read() - if font.m_FontData: - extension = ".ttf" - if font.m_FontData[0:4] == b"OTTO": - extension = ".otf" +mesh_renderer : Renderer +export_dir: str - with open(os.path.join(path, font.name+extension), "wb") as f: - f.write(font.m_FontData) +mesh_renderer.export(export_dir) ``` diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 09ac261c..713117c7 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.35" +__version__ = "1.7.37" from .environment import Environment diff --git a/UnityPy/classes/Mesh.py b/UnityPy/classes/Mesh.py index 82ca2e69..1248dc7a 100644 --- a/UnityPy/classes/Mesh.py +++ b/UnityPy/classes/Mesh.py @@ -9,7 +9,7 @@ from ..enums import GfxPrimitiveType import struct from enum import IntEnum -from ..export.MeshExporter import export_mesh +from ..export import MeshExporter class MinMaxAABB: @@ -339,7 +339,7 @@ def save(self, writer, version): class Mesh(NamedObject): def export(self): - return export_mesh(self) + return MeshExporter.export_mesh(self) def __init__(self, reader): super().__init__(reader=reader) diff --git a/UnityPy/classes/Renderer.py b/UnityPy/classes/Renderer.py index 5cdc9ad4..4e65f415 100644 --- a/UnityPy/classes/Renderer.py +++ b/UnityPy/classes/Renderer.py @@ -1,5 +1,6 @@ from .Component import Component from .PPtr import PPtr +from ..export import MeshRendererExporter class StaticBatchInfo: @@ -55,8 +56,7 @@ def __init__(self, reader): self.m_LightmapTilingOffsetDynamic = reader.read_vector4() m_MaterialsSize = reader.read_int() - self.m_Materials = [PPtr(reader) - for _ in range(m_MaterialsSize)] # Material + self.m_Materials = [PPtr(reader) for _ in range(m_MaterialsSize)] # Material if version < (3,): # 3.0 down self.m_LightmapTilingOffset = reader.read_vector4() @@ -90,3 +90,6 @@ def __init__(self, reader): # SInt16 m_SortingLayer 5.6 and up self.m_SortingOrder = reader.read_short() reader.align_stream() + + def export(self, export_dir: str) -> None: + MeshRendererExporter.export_mesh_renderer(self, export_dir) diff --git a/UnityPy/export/MeshExporter.py b/UnityPy/export/MeshExporter.py index 461ffda9..db68c8a9 100644 --- a/UnityPy/export/MeshExporter.py +++ b/UnityPy/export/MeshExporter.py @@ -1,10 +1,19 @@ -import re -def export_mesh(m_Mesh): +from UnityPy.classes import Mesh + + +def export_mesh(m_Mesh: Mesh, format="obj") -> str: + if format == "obj": + return export_mesh_obj(m_Mesh) + raise NotImplementedError(f"Export format {format} not implemented") + + +def export_mesh_obj(m_Mesh, material_names: list = None): if m_Mesh.m_VertexCount <= 0: return False sb = [f"g {m_Mesh.name}\r\n"] - + if material_names: + sb.append(f"mtllib {m_Mesh.name}.mtl\r\n") # region Vertices if not m_Mesh.m_Vertices: return False @@ -14,8 +23,13 @@ def export_mesh(m_Mesh): c = 4 for v in range(int(m_Mesh.m_VertexCount)): - sb.append("v {0:.7G} {1:.7G} {2:.7G}\r\n".format( - -m_Mesh.m_Vertices[v * c], m_Mesh.m_Vertices[v * c + 1], m_Mesh.m_Vertices[v * c + 2]).replace("nan","0")) + sb.append( + "v {0:.7G} {1:.7G} {2:.7G}\r\n".format( + -m_Mesh.m_Vertices[v * c], + m_Mesh.m_Vertices[v * c + 1], + m_Mesh.m_Vertices[v * c + 2], + ).replace("nan", "0") + ) # endregion # region UV @@ -26,8 +40,11 @@ def export_mesh(m_Mesh): c = 3 for v in range(int(m_Mesh.m_VertexCount)): - sb.append("vt {0:.7G} {1:.7G}\r\n".format( - m_Mesh.m_UV0[v * c], m_Mesh.m_UV0[v * c + 1]).replace("nan","0")) + sb.append( + "vt {0:.7G} {1:.7G}\r\n".format( + m_Mesh.m_UV0[v * c], m_Mesh.m_UV0[v * c + 1] + ).replace("nan", "0") + ) # endregion # region Normals @@ -38,21 +55,30 @@ def export_mesh(m_Mesh): c = 4 for v in range(int(m_Mesh.m_VertexCount)): - sb.append("vn {0:.7G} {1:.7G} {2:.7G}\r\n".format( - -m_Mesh.m_Normals[v * c], m_Mesh.m_Normals[v * c + 1], m_Mesh.m_Normals[v * c + 2]).replace("nan","0")) + sb.append( + "vn {0:.7G} {1:.7G} {2:.7G}\r\n".format( + -m_Mesh.m_Normals[v * c], + m_Mesh.m_Normals[v * c + 1], + m_Mesh.m_Normals[v * c + 2], + ).replace("nan", "0") + ) # endregion # region Face sum = 0 for i in range(len(m_Mesh.m_SubMeshes)): sb.append(f"g {m_Mesh.name}_{i}\r\n") + if material_names and i < len(material_names) and material_names[i]: + sb.append(f"usemtl {material_names[i]}\r\n") indexCount = m_Mesh.m_SubMeshes[i].indexCount end = sum + indexCount // 3 for f in range(sum, end): - sb.append("f {0}/{0}/{0} {1}/{1}/{1} {2}/{2}/{2}\r\n".format( - m_Mesh.m_Indices[f * 3 + 2] + 1, - m_Mesh.m_Indices[f * 3 + 1] + 1, - m_Mesh.m_Indices[f * 3] + 1) + sb.append( + "f {0}/{0}/{0} {1}/{1}/{1} {2}/{2}/{2}\r\n".format( + m_Mesh.m_Indices[f * 3 + 2] + 1, + m_Mesh.m_Indices[f * 3 + 1] + 1, + m_Mesh.m_Indices[f * 3] + 1, + ) ) sum = end # endregion diff --git a/UnityPy/export/MeshRendererExporter.py b/UnityPy/export/MeshRendererExporter.py new file mode 100644 index 00000000..0799edfb --- /dev/null +++ b/UnityPy/export/MeshRendererExporter.py @@ -0,0 +1,125 @@ +import os +from ..classes import Renderer, SkinnedMeshRenderer, Material, Texture2D +from .MeshExporter import export_mesh_obj + + +def get_mesh(meshR: Renderer): + if isinstance(meshR, SkinnedMeshRenderer.SkinnedMeshRenderer): + if meshR.m_Mesh: + return meshR.m_Mesh.read() + else: + m_GameObject = meshR.m_GameObject.read() + if m_GameObject.m_MeshFilter: + return m_GameObject.m_MeshFilter.m_Mesh.read() + return None + + +def export_mesh_renderer(obj: Renderer, export_dir: str) -> None: + meshR = obj.read() + mesh = get_mesh(meshR) + if not mesh: + return + + firstSubMesh = 0 + if hasattr(meshR, "m_StaticBatchInfo") and meshR.m_StaticBatchInfo.subMeshCount > 0: + firstSubMesh = meshR.m_StaticBatchInfo.firstSubMesh + elif hasattr(meshR, "m_SubsetIndices"): + firstSubMesh = min(meshR.m_SubsetIndices) + + materials = [] + material_names = [] + for i, submesh in enumerate(mesh.m_SubMeshes): + mat = None + if i - firstSubMesh < len(meshR.m_Materials): + matPtr = meshR.m_Materials[i - firstSubMesh] + if matPtr: + mat = matPtr.read() + if not mat: + material_names.append(None) + continue + materials.append(export_material(mat)) + material_names.append(mat.m_Name) + # save material textures + for key, texEnv in mat.m_SavedProperties.m_TexEnvs.items(): + if not texEnv.m_Texture: + continue + tex = texEnv.m_Texture.read() + texName = f"{tex.m_Name if tex.m_Name else key}.png" + tex.read().image.save(os.path.join(export_dir, texName)) + + # save .obj + with open( + os.path.join(export_dir, f"{mesh.name}.obj"), "wt", encoding="utf8", newline="" + ) as f: + f.write(export_mesh_obj(mesh, material_names)) + + # save .mtl + with open( + os.path.join(export_dir, f"{mesh.name}.mtl"), "wt", encoding="utf8", newline="" + ) as f: + f.write("\n".join(materials)) + + +def export_material(mat: Material) -> str: + """Creates a material file (.mtl) for the given material.""" + + def clt(color): # color to tuple + return ( + color if isinstance(color, tuple) else (color.R, color.G, color.B, color.A) + ) + + colors = mat.m_SavedProperties.m_Colors + floats = mat.m_SavedProperties.m_Floats + texEnvs = mat.m_SavedProperties.m_TexEnvs + + diffuse = clt(colors.get("_Color", (0.8, 0.8, 0.8, 1))) + ambient = clt(colors.get("_SColor", (0.2, 0.2, 0.2, 1))) + emissive = clt(colors.get("_EmissionColor", (0, 0, 0, 1))) + specular = clt(colors.get("_SpecularColor", (0.2, 0.2, 0.2, 1))) + reflection = clt(colors.get("_ReflectColor", (0, 0, 0, 1))) + shininess = floats.get("_Shininess", 20.0) + transparency = floats.get("_Transparency", 0.0) + + sb = [] + sb.append(f"newmtl {mat.m_Name}") + # Ka r g b + # defines the ambient color of the material to be (r,g,b). The default is (0.2,0.2,0.2); + sb.append(f"Ka {ambient[0]:.4f} {ambient[1]:.4f} {ambient[2]:.4f}") + # Kd r g b + # defines the diffuse color of the material to be (r,g,b). The default is (0.8,0.8,0.8); + sb.append(f"Kd {diffuse[0]:.4f} {diffuse[1]:.4f} {diffuse[2]:.4f}") + # Ks r g b + # defines the specular color of the material to be (r,g,b). This color shows up in highlights. The default is (1.0,1.0,1.0); + sb.append(f"Ks {specular[0]:.4f} {specular[1]:.4f} {specular[2]:.4f}") + # d alpha + # defines the non-transparency of the material to be alpha. The default is 1.0 (not transparent at all). The quantities d and Tr are the opposites of each other, and specifying transparency or nontransparency is simply a matter of user convenience. + # Tr alpha + # defines the transparency of the material to be alpha. The default is 0.0 (not transparent at all). The quantities d and Tr are the opposites of each other, and specifying transparency or nontransparency is simply a matter of user convenience. + sb.append(f"Tr {transparency:.4f}") + # Ns s + # defines the shininess of the material to be s. The default is 0.0; + sb.append(f"Ns {shininess:.4f}") + # illum n + # denotes the illumination model used by the material. illum = 1 indicates a flat material with no specular highlights, so the value of Ks is not used. illum = 2 denotes the presence of specular highlights, and so a specification for Ks is required. + # map_Ka filename + # names a file containing a texture map, which should just be an ASCII dump of RGB values; + texName = None + tex = None + for key, texEnv in texEnvs.items(): + if not texEnv.m_Texture: + continue + tex = texEnv.m_Texture.read() + texName = f"{tex.m_Name if tex.m_Name else key}.png" + if key == "_MainTex": + sb.append(f"map_Kd {texName}") + elif key == "_BumpMap": + # TODO: bump is default, some use map_bump + sb.append(f"map_bump {texName}") + sb.append(f"bump {texName}") + elif "Specular" in key: + sb.append(f"map_Ks {texName}") + elif "Normal" in key: + # TODO: figure out the key + pass + ret = "\n".join(sb) + return ret diff --git a/UnityPy/export/__init__.py b/UnityPy/export/__init__.py index 0759e2fb..995eb774 100644 --- a/UnityPy/export/__init__.py +++ b/UnityPy/export/__init__.py @@ -1 +1 @@ -from . import SpriteHelper, Texture2DConverter, AudioClipConverter, MeshExporter +from . import MeshRendererExporter, SpriteHelper, Texture2DConverter, AudioClipConverter, MeshExporter From 7967144a1725054e0d1b27746a99544f07c5f3a4 Mon Sep 17 00:00:00 2001 From: jerryhwq <842791049@qq.com> Date: Sun, 6 Mar 2022 08:21:22 +0800 Subject: [PATCH 049/599] fix for Unity 2021.2 (#92) --- UnityPy/export/ShaderConverter.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/UnityPy/export/ShaderConverter.py b/UnityPy/export/ShaderConverter.py index 76ab0917..235bbc29 100644 --- a/UnityPy/export/ShaderConverter.py +++ b/UnityPy/export/ShaderConverter.py @@ -478,6 +478,7 @@ def __init__(self, reader: EndianBinaryReader): #201708220 - Unity 2017.3, Unity 2017.4 & Unity 2018.1 #201802150 - Unity 2018.2 & Unity 2018.3 #201806140 - Unity 2019.1~2020.1 + #202012090 - Unity 2021.2 self.m_Version = reader.read_int() self.m_ProgramType = ShaderGpuProgramType(reader.read_int()) @@ -492,7 +493,7 @@ def __init__(self, reader: EndianBinaryReader): for i in range(m_KeywordSize): self.m_Keywords.append(reader.read_aligned_string()) - if self.m_Version >= 201806140: + if 201806140 <= self.m_Version < 202012090: m_LocalKeywordsSize = reader.read_int() self.m_LocalKeywords = [] From f70d2f18c7ce37dd70e98fe909e086ecd9d82e28 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 6 Mar 2022 14:00:12 +0100 Subject: [PATCH 050/599] resolve #93 --- UnityPy/export/ShaderConverter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/export/ShaderConverter.py b/UnityPy/export/ShaderConverter.py index 235bbc29..fb59ba61 100644 --- a/UnityPy/export/ShaderConverter.py +++ b/UnityPy/export/ShaderConverter.py @@ -558,7 +558,7 @@ def Export(self): ShaderGpuProgramType.kShaderGpuProgramMetalVS, ShaderGpuProgramType.kShaderGpuProgramMetalFS ]: - reader = EndianBinaryReader(self.m_ProgramCode) + reader = EndianBinaryReader(self.m_ProgramCode, endian = "<") fourCC = reader.read_u_int() if fourCC == 0xf00dcafe: offset = reader.read_int() From ddf3a663034dc626cc94c04151e380c567c209b4 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 6 Mar 2022 14:01:20 +0100 Subject: [PATCH 051/599] bump to 1.7.38 to release Shaderconverter fixes --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 713117c7..4d44b72a 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.37" +__version__ = "1.7.38" from .environment import Environment From be664b0be08e442fc14e88973186d513beb6c465 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 7 Mar 2022 00:47:01 +0100 Subject: [PATCH 052/599] 1.7.39 - MeshRendererExporter fix fetch MeshFilter from m_GameObject.m_Components make sure that the export_dir exists --- README.md | 6 +++++- UnityPy/__init__.py | 2 +- UnityPy/export/MeshRendererExporter.py | 7 +++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e832a21a..6325905f 100644 --- a/README.md +++ b/README.md @@ -313,7 +313,7 @@ with open(f"{mesh.name}.obj", "wt", newline = "") as f: f.write(mesh.export()) ``` -### [Renderer, MeshRenderer, SkinnedMeshRenderer] +### Renderer, MeshRenderer, SkinnedMeshRenderer ALPHA-VERSION * ``.export(export_dir)`` - exports the associated mesh, materials, and textures into the given directory @@ -324,5 +324,9 @@ The mesh and materials will be in the Wavefront formats. mesh_renderer : Renderer export_dir: str +if mesh_renderer.m_GameObject: + # get the name of the model + game_object = mesh_renderer.m_GameObject.read() + export_dir = os.path.join(export_dir, game_object.name) mesh_renderer.export(export_dir) ``` diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 4d44b72a..8e69dbf9 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.38" +__version__ = "1.7.39" from .environment import Environment diff --git a/UnityPy/export/MeshRendererExporter.py b/UnityPy/export/MeshRendererExporter.py index 0799edfb..263f0f37 100644 --- a/UnityPy/export/MeshRendererExporter.py +++ b/UnityPy/export/MeshRendererExporter.py @@ -1,5 +1,6 @@ import os from ..classes import Renderer, SkinnedMeshRenderer, Material, Texture2D +from ..enums import ClassIDType from .MeshExporter import export_mesh_obj @@ -9,12 +10,14 @@ def get_mesh(meshR: Renderer): return meshR.m_Mesh.read() else: m_GameObject = meshR.m_GameObject.read() - if m_GameObject.m_MeshFilter: - return m_GameObject.m_MeshFilter.m_Mesh.read() + for component in m_GameObject.m_Components: + if component.type == ClassIDType.MeshFilter: + return component.read().m_Mesh.read() return None def export_mesh_renderer(obj: Renderer, export_dir: str) -> None: + os.makedirs(export_dir, exist_ok=True) meshR = obj.read() mesh = get_mesh(meshR) if not mesh: From 6a9e604fbaa5623d872e2c4c4b72f5b5570ca365 Mon Sep 17 00:00:00 2001 From: able Date: Fri, 11 Mar 2022 06:01:42 +0800 Subject: [PATCH 053/599] Sometimes, the split file number starts at 0 (#94) * Sometimes, the split file number starts at 0 * implement splitpath searching from 0 in apks and don't break default case Co-authored-by: Rudolf Kolbe --- UnityPy/environment.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/UnityPy/environment.py b/UnityPy/environment.py index bfbeca6f..3dfec029 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -64,12 +64,12 @@ def load_files(self, files: list): for basepath in splits: # merge data data = io.BytesIO() - for i in range(1, 999): + for i in range(0, 999): item = f"{basepath}.split{i}" if os.path.exists(item): with open(item, "rb") as f: data.write(f.read()) - else: + elif i: break self.files[self.reduce_path(basepath)] = self.load_file(data) @@ -159,12 +159,12 @@ def load_zip_file(self, value): for basepath in splits: # merge data data = io.BytesIO() - for i in range(1, 999): + for i in range(0, 999): item = f"{basepath}.split{i}" if item in z.namelist(): with z.open(item) as f: data.write(f.read()) - else: + elif i: break *path, name = basepath.split("/") cur = self From e60c8d488cb9f62acab651216480fdfe87adec34 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 10 Mar 2022 22:49:37 +0100 Subject: [PATCH 054/599] Mesh: fix kPrimitiveTriangles Indices copying range --- UnityPy/classes/Mesh.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/classes/Mesh.py b/UnityPy/classes/Mesh.py index 1248dc7a..1c805dbd 100644 --- a/UnityPy/classes/Mesh.py +++ b/UnityPy/classes/Mesh.py @@ -801,7 +801,7 @@ def GetTriangles(self): topology = m_SubMesh.topology if topology == GfxPrimitiveType.kPrimitiveTriangles: m_Indices.extend( - m_IndexBuffer[firstIndex : firstIndex + indexCount * 3] + m_IndexBuffer[firstIndex : firstIndex + indexCount - indexCount % 3] ) elif ( From 41240950ced4166b4300906685aa270e09759e1a Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 10 Mar 2022 22:49:59 +0100 Subject: [PATCH 055/599] make Objects hashable and comparable --- UnityPy/classes/Object.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/UnityPy/classes/Object.py b/UnityPy/classes/Object.py index b5fd749a..e065cbad 100644 --- a/UnityPy/classes/Object.py +++ b/UnityPy/classes/Object.py @@ -116,7 +116,7 @@ def __getattr__(self, name): if name == "type_tree": return self.type_tree elif name == "read": - return lambda : self + return lambda: self return getattr(self.type_tree, name) def get(self, key, default=None): @@ -125,6 +125,12 @@ def get(self, key, default=None): def __repr__(self): return "<%s %s>" % (self.__class__.__name__, self.name) + def __hash__(self): + return hash(self.path_id) + + def __eq__(self, other): + return self.path_id == other.path_id + class NodeHelper: def __init__(self, data, assets_file): From 7a45608bfc34bee6c2267a528274fd0c961d6f39 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 10 Mar 2022 22:50:34 +0100 Subject: [PATCH 056/599] make access to GameObject components easier --- UnityPy/classes/GameObject.py | 40 ++++++++++++++++++++++++-- UnityPy/classes/PPtr.py | 27 ++++++++++++----- UnityPy/export/MeshRendererExporter.py | 5 ++-- 3 files changed, 60 insertions(+), 12 deletions(-) diff --git a/UnityPy/classes/GameObject.py b/UnityPy/classes/GameObject.py index 838f649d..c6e1fa9b 100644 --- a/UnityPy/classes/GameObject.py +++ b/UnityPy/classes/GameObject.py @@ -1,15 +1,51 @@ +from tkinter.messagebox import NO from .EditorExtension import EditorExtension from .PPtr import PPtr +from ..enums import ClassIDType class GameObject(EditorExtension): + m_Components: list + m_Layer: int + name: str + m_Animator: PPtr + m_Animation: PPtr + m_Transform: PPtr + m_MeshRenderer: PPtr + m_SkinnedMeshRender: PPtr + m_MeshFilter: PPtr + def __init__(self, reader): super().__init__(reader=reader) + + self.m_Animator = None + self.m_Animation = None + self.m_Transform = None + self.m_MeshRenderer = None + self.m_SkinnedMeshRenderer = None + self.m_MeshFilter = None + component_size = reader.read_int() - self.m_Components = [None]*component_size + + self.m_Components = [None] * component_size for i in range(component_size): if self.version < (5, 5): first = reader.read_int() - self.m_Components[i] = PPtr(reader) + component = PPtr(reader) + self.m_Components[i] = component + + if component.type == ClassIDType.Animator: + self.m_Animator = component + elif component.type == ClassIDType.Animation: + self.m_Animation = component + elif component.type == ClassIDType.Transform: + self.m_Transform = component + elif component.type == ClassIDType.MeshRenderer: + self.m_MeshRenderer = component + elif component.type == ClassIDType.SkinnedMeshRenderer: + self.m_SkinnedMeshRenderer = component + elif component.type == ClassIDType.MeshFilter: + self.m_MeshFilter = component + self.m_Layer = reader.read_int() self.name = reader.read_aligned_string() diff --git a/UnityPy/classes/PPtr.py b/UnityPy/classes/PPtr.py index 41bbf402..8c4d2723 100644 --- a/UnityPy/classes/PPtr.py +++ b/UnityPy/classes/PPtr.py @@ -6,6 +6,7 @@ import os from .. import environment + def save_ptr(obj, writer: EndianBinaryWriter): if isinstance(obj, PPtr): writer.write_int(obj.file_id) @@ -16,8 +17,10 @@ def save_ptr(obj, writer: EndianBinaryWriter): else: writer.write_long(obj.path_id) + cached_managers = dict() + class PPtr: def __init__(self, reader: ObjectReader): self._version = reader.version2 @@ -43,7 +46,7 @@ def get_obj(self): external_name = self.assets_file.externals[self.file_id - 1].name # try to find it in the already registered cabs manager = environment.get_cab(external_name) - + if not manager: # guess we have to try to find it as file then path = environment.path @@ -53,7 +56,9 @@ def get_obj(self): for root, dirs, files in os.walk(path): for name in files: if name in possible_names: - manager = environment.load_file(os.path.join(root, name)) + manager = environment.load_file( + os.path.join(root, name) + ) break else: # else is reached if the previous loop didn't break @@ -75,16 +80,24 @@ def get_obj(self): return self._obj - def __getattr__(self, key): + @property + def type(self): obj = self.get_obj() if obj is None: - if key == "type": - return ClassIDType.UnknownType - raise AttributeError(key) + return ClassIDType.UnknownType + return obj.type + + def __getattr__(self, key): + obj = self.get_obj() return getattr(obj, key) def __repr__(self): - return "<%s %s>" % (self.__class__.__name__, self._obj.__class__.__repr__(self.get_obj()) if self.get_obj() else "Not Found") + return "<%s %s>" % ( + self.__class__.__name__, + self._obj.__class__.__repr__(self.get_obj()) + if self.get_obj() + else "Not Found", + ) def __bool__(self): return True if self.get_obj() else False diff --git a/UnityPy/export/MeshRendererExporter.py b/UnityPy/export/MeshRendererExporter.py index 263f0f37..c7be4027 100644 --- a/UnityPy/export/MeshRendererExporter.py +++ b/UnityPy/export/MeshRendererExporter.py @@ -10,9 +10,8 @@ def get_mesh(meshR: Renderer): return meshR.m_Mesh.read() else: m_GameObject = meshR.m_GameObject.read() - for component in m_GameObject.m_Components: - if component.type == ClassIDType.MeshFilter: - return component.read().m_Mesh.read() + if m_GameObject.m_MeshFilter: + return m_GameObject.m_MeshFilter.read().m_Mesh.read() return None From 28768b55b811769d7e029eb0aeaa608844f81340 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 10 Mar 2022 23:00:11 +0100 Subject: [PATCH 057/599] update math classes --- UnityPy/math/Color.py | 2 +- UnityPy/math/Matrix4x4.py | 392 ++++++++++++++------------------------ UnityPy/math/Vector3.py | 241 ++++++++--------------- 3 files changed, 227 insertions(+), 408 deletions(-) diff --git a/UnityPy/math/Color.py b/UnityPy/math/Color.py index ff008fda..fced5e1c 100644 --- a/UnityPy/math/Color.py +++ b/UnityPy/math/Color.py @@ -7,7 +7,7 @@ class Color: B: float A: float - def __init__(self, r: float, g: float, b: float, a: float): + def __init__(self, r: float = 0.0, g: float = 0.0, b: float = 0.0, a: float = 0.0): self.R = r self.G = g self.B = b diff --git a/UnityPy/math/Matrix4x4.py b/UnityPy/math/Matrix4x4.py index de142c48..bf73b1d0 100644 --- a/UnityPy/math/Matrix4x4.py +++ b/UnityPy/math/Matrix4x4.py @@ -1,255 +1,149 @@ -class Matrix4x4: - M: list +from .Vector3 import Vector3 +class Matrix4x4: def __init__(self, values): if len(values) != 16: raise ValueError( "There must be sixteen and only sixteen input values for Matrix." ) - self.M = [values[i * 4 : i * 4 + 4] for i in range(0, 4)] - - -""" -using System; -using System.Runtime.InteropServices; - -namespace AssetStudio -{ - [StructLayout(LayoutKind.Sequential, Pack = 4)] - public struct Matrix4x4 : IEquatable - { - public float M00; - public float M10; - public float M20; - public float M30; - - public float M01; - public float M11; - public float M21; - public float M31; - - public float M02; - public float M12; - public float M22; - public float M32; - - public float M03; - public float M13; - public float M23; - public float M33; - - public Matrix4x4(float[] values) - { - if (values == null) - throw new ArgumentNullException(nameof(values)); - if (values.Length != 16) - throw new ArgumentOutOfRangeException(nameof(values), "There must be sixteen and only sixteen input values for Matrix."); - - M00 = values[0]; - M10 = values[1]; - M20 = values[2]; - M30 = values[3]; - - M01 = values[4]; - M11 = values[5]; - M21 = values[6]; - M31 = values[7]; - - M02 = values[8]; - M12 = values[9]; - M22 = values[10]; - M32 = values[11]; - - M03 = values[12]; - M13 = values[13]; - M23 = values[14]; - M33 = values[15]; - } - - public float this[int row, int column] - { - get => this[row + column * 4]; - - set => this[row + column * 4] = value; - } - - public float this[int index] - { - get - { - switch (index) - { - case 0: return M00; - case 1: return M10; - case 2: return M20; - case 3: return M30; - case 4: return M01; - case 5: return M11; - case 6: return M21; - case 7: return M31; - case 8: return M02; - case 9: return M12; - case 10: return M22; - case 11: return M32; - case 12: return M03; - case 13: return M13; - case 14: return M23; - case 15: return M33; - default: throw new ArgumentOutOfRangeException(nameof(index), "Invalid Matrix4x4 index!"); - } - } - - set - { - switch (index) - { - case 0: M00 = value; break; - case 1: M10 = value; break; - case 2: M20 = value; break; - case 3: M30 = value; break; - case 4: M01 = value; break; - case 5: M11 = value; break; - case 6: M21 = value; break; - case 7: M31 = value; break; - case 8: M02 = value; break; - case 9: M12 = value; break; - case 10: M22 = value; break; - case 11: M32 = value; break; - case 12: M03 = value; break; - case 13: M13 = value; break; - case 14: M23 = value; break; - case 15: M33 = value; break; - default: throw new ArgumentOutOfRangeException(nameof(index), "Invalid Matrix4x4 index!"); - } - } - } - - public override int GetHashCode() - { - return GetColumn(0).GetHashCode() ^ (GetColumn(1).GetHashCode() << 2) ^ (GetColumn(2).GetHashCode() >> 2) ^ (GetColumn(3).GetHashCode() >> 1); - } - - public override bool Equals(object other) - { - if (!(other is Matrix4x4)) - return false; - return Equals((Matrix4x4)other); - } - - public bool Equals(Matrix4x4 other) - { - return GetColumn(0).Equals(other.GetColumn(0)) - && GetColumn(1).Equals(other.GetColumn(1)) - && GetColumn(2).Equals(other.GetColumn(2)) - && GetColumn(3).Equals(other.GetColumn(3)); - } - - public Vector4 GetColumn(int index) - { - switch (index) - { - case 0: return new Vector4(M00, M10, M20, M30); - case 1: return new Vector4(M01, M11, M21, M31); - case 2: return new Vector4(M02, M12, M22, M32); - case 3: return new Vector4(M03, M13, M23, M33); - default: throw new IndexOutOfRangeException("Invalid column index!"); - } - } - - public Vector4 GetRow(int index) - { - switch (index) - { - case 0: return new Vector4(M00, M01, M02, M03); - case 1: return new Vector4(M10, M11, M12, M13); - case 2: return new Vector4(M20, M21, M22, M23); - case 3: return new Vector4(M30, M31, M32, M33); - default: throw new IndexOutOfRangeException("Invalid row index!"); - } - } - - public static Matrix4x4 operator *(Matrix4x4 lhs, Matrix4x4 rhs) - { - Matrix4x4 res; - res.M00 = lhs.M00 * rhs.M00 + lhs.M01 * rhs.M10 + lhs.M02 * rhs.M20 + lhs.M03 * rhs.M30; - res.M01 = lhs.M00 * rhs.M01 + lhs.M01 * rhs.M11 + lhs.M02 * rhs.M21 + lhs.M03 * rhs.M31; - res.M02 = lhs.M00 * rhs.M02 + lhs.M01 * rhs.M12 + lhs.M02 * rhs.M22 + lhs.M03 * rhs.M32; - res.M03 = lhs.M00 * rhs.M03 + lhs.M01 * rhs.M13 + lhs.M02 * rhs.M23 + lhs.M03 * rhs.M33; - - res.M10 = lhs.M10 * rhs.M00 + lhs.M11 * rhs.M10 + lhs.M12 * rhs.M20 + lhs.M13 * rhs.M30; - res.M11 = lhs.M10 * rhs.M01 + lhs.M11 * rhs.M11 + lhs.M12 * rhs.M21 + lhs.M13 * rhs.M31; - res.M12 = lhs.M10 * rhs.M02 + lhs.M11 * rhs.M12 + lhs.M12 * rhs.M22 + lhs.M13 * rhs.M32; - res.M13 = lhs.M10 * rhs.M03 + lhs.M11 * rhs.M13 + lhs.M12 * rhs.M23 + lhs.M13 * rhs.M33; - - res.M20 = lhs.M20 * rhs.M00 + lhs.M21 * rhs.M10 + lhs.M22 * rhs.M20 + lhs.M23 * rhs.M30; - res.M21 = lhs.M20 * rhs.M01 + lhs.M21 * rhs.M11 + lhs.M22 * rhs.M21 + lhs.M23 * rhs.M31; - res.M22 = lhs.M20 * rhs.M02 + lhs.M21 * rhs.M12 + lhs.M22 * rhs.M22 + lhs.M23 * rhs.M32; - res.M23 = lhs.M20 * rhs.M03 + lhs.M21 * rhs.M13 + lhs.M22 * rhs.M23 + lhs.M23 * rhs.M33; - - res.M30 = lhs.M30 * rhs.M00 + lhs.M31 * rhs.M10 + lhs.M32 * rhs.M20 + lhs.M33 * rhs.M30; - res.M31 = lhs.M30 * rhs.M01 + lhs.M31 * rhs.M11 + lhs.M32 * rhs.M21 + lhs.M33 * rhs.M31; - res.M32 = lhs.M30 * rhs.M02 + lhs.M31 * rhs.M12 + lhs.M32 * rhs.M22 + lhs.M33 * rhs.M32; - res.M33 = lhs.M30 * rhs.M03 + lhs.M31 * rhs.M13 + lhs.M32 * rhs.M23 + lhs.M33 * rhs.M33; - - return res; - } - - public static bool operator ==(Matrix4x4 lhs, Matrix4x4 rhs) - { - return lhs.GetColumn(0) == rhs.GetColumn(0) - && lhs.GetColumn(1) == rhs.GetColumn(1) - && lhs.GetColumn(2) == rhs.GetColumn(2) - && lhs.GetColumn(3) == rhs.GetColumn(3); - } - - public static bool operator !=(Matrix4x4 lhs, Matrix4x4 rhs) - { - return !(lhs == rhs); - } - - public static Matrix4x4 Scale(Vector3 vector) - { - Matrix4x4 m; - m.M00 = vector.X; m.M01 = 0F; m.M02 = 0F; m.M03 = 0F; - m.M10 = 0F; m.M11 = vector.Y; m.M12 = 0F; m.M13 = 0F; - m.M20 = 0F; m.M21 = 0F; m.M22 = vector.Z; m.M23 = 0F; - m.M30 = 0F; m.M31 = 0F; m.M32 = 0F; m.M33 = 1F; - return m; - } - - public static Matrix4x4 Translate(Vector3 vector) - { - Matrix4x4 m; - m.M00 = 1F; m.M01 = 0F; m.M02 = 0F; m.M03 = vector.X; - m.M10 = 0F; m.M11 = 1F; m.M12 = 0F; m.M13 = vector.Y; - m.M20 = 0F; m.M21 = 0F; m.M22 = 1F; m.M23 = vector.Z; - m.M30 = 0F; m.M31 = 0F; m.M32 = 0F; m.M33 = 1F; - return m; - } - - public static Matrix4x4 Rotate(Quaternion q) - { - float x = q.X * 2.0F; - float y = q.Y * 2.0F; - float z = q.Z * 2.0F; - float xx = q.X * x; - float yy = q.Y * y; - float zz = q.Z * z; - float xy = q.X * y; - float xz = q.X * z; - float yz = q.Y * z; - float wx = q.W * x; - float wy = q.W * y; - float wz = q.W * z; - - Matrix4x4 m; - m.M00 = 1.0f - (yy + zz); m.M10 = xy + wz; m.M20 = xz - wy; m.M30 = 0.0F; - m.M01 = xy - wz; m.M11 = 1.0f - (xx + zz); m.M21 = yz + wx; m.M31 = 0.0F; - m.M02 = xz + wy; m.M12 = yz - wx; m.M22 = 1.0f - (xx + yy); m.M32 = 0.0F; - m.M03 = 0.0F; m.M13 = 0.0F; m.M23 = 0.0F; m.M33 = 1.0F; - return m; - } - } -} - -""" + self.M00 = values[0] + self.M10 = values[1] + self.M20 = values[2] + self.M30 = values[3] + + self.M01 = values[4] + self.M11 = values[5] + self.M21 = values[6] + self.M31 = values[7] + + self.M02 = values[8] + self.M12 = values[9] + self.M22 = values[10] + self.M32 = values[11] + + self.M03 = values[12] + self.M13 = values[13] + self.M23 = values[14] + self.M33 = values[15] + + @property + def M(self): + return [ + self.M00, self.M10, self.M20, self.M30, + self.M01, self.M11, self.M21, self.M31, + self.M02, self.M12, self.M22, self.M32, + self.M03, self.M13, self.M23, self.M33 + ] + @M.setter + def M(self, values: list): + for i,v in enumerate(values): + self[i] = v + + + def __getitem__(self, index): + if isinstance(index, tuple): + # row, column + index = index[0] + index[0]*4 + if index == 0: + return self.M00 + elif index == 1: + return self.M10 + elif index == 2: + return self.M20 + elif index == 3: + return self.M30 + elif index == 4: + return self.M01 + elif index == 5: + return self.M11 + elif index == 6: + return self.M21 + elif index == 7: + return self.M31 + elif index == 8: + return self.M02 + elif index == 9: + return self.M12 + elif index == 10: + return self.M22 + elif index == 11: + return self.M32 + elif index == 12: + return self.M03 + elif index == 13: + return self.M13 + elif index == 14: + return self.M23 + elif index == 15: + return self.M33 + + def __setitem__(self, index, value): + if isinstance(index, tuple): + # row, column + index = index[0] + index[0]*4 + if index == 0: + self.M00 = value + elif index == 1: + self.M10 = value + elif index == 2: + self.M20 = value + elif index == 3: + self.M30 = value + elif index == 4: + self.M01 = value + elif index == 5: + self.M11 = value + elif index == 6: + self.M21 = value + elif index == 7: + self.M31 = value + elif index == 8: + self.M02 = value + elif index == 9: + self.M12 = value + elif index == 10: + self.M22 = value + elif index == 11: + self.M32 = value + elif index == 12: + self.M03 = value + elif index == 13: + self.M13 = value + elif index == 14: + self.M23 = value + elif index == 15: + self.M33 = value + + def __eq__(self, other): + if not isinstance(other, Matrix4x4): + return False + print() + + + def __mul__(lhs, rhs): + res = Matrix4x4([0]*16) + res.M00 = lhs.M00 * rhs.M00 + lhs.M01 * rhs.M10 + lhs.M02 * rhs.M20 + lhs.M03 * rhs.M30 + res.M01 = lhs.M00 * rhs.M01 + lhs.M01 * rhs.M11 + lhs.M02 * rhs.M21 + lhs.M03 * rhs.M31 + res.M02 = lhs.M00 * rhs.M02 + lhs.M01 * rhs.M12 + lhs.M02 * rhs.M22 + lhs.M03 * rhs.M32 + res.M03 = lhs.M00 * rhs.M03 + lhs.M01 * rhs.M13 + lhs.M02 * rhs.M23 + lhs.M03 * rhs.M33 + + res.M10 = lhs.M10 * rhs.M00 + lhs.M11 * rhs.M10 + lhs.M12 * rhs.M20 + lhs.M13 * rhs.M30 + res.M11 = lhs.M10 * rhs.M01 + lhs.M11 * rhs.M11 + lhs.M12 * rhs.M21 + lhs.M13 * rhs.M31 + res.M12 = lhs.M10 * rhs.M02 + lhs.M11 * rhs.M12 + lhs.M12 * rhs.M22 + lhs.M13 * rhs.M32 + res.M13 = lhs.M10 * rhs.M03 + lhs.M11 * rhs.M13 + lhs.M12 * rhs.M23 + lhs.M13 * rhs.M33 + + res.M20 = lhs.M20 * rhs.M00 + lhs.M21 * rhs.M10 + lhs.M22 * rhs.M20 + lhs.M23 * rhs.M30 + res.M21 = lhs.M20 * rhs.M01 + lhs.M21 * rhs.M11 + lhs.M22 * rhs.M21 + lhs.M23 * rhs.M31 + res.M22 = lhs.M20 * rhs.M02 + lhs.M21 * rhs.M12 + lhs.M22 * rhs.M22 + lhs.M23 * rhs.M32 + res.M23 = lhs.M20 * rhs.M03 + lhs.M21 * rhs.M13 + lhs.M22 * rhs.M23 + lhs.M23 * rhs.M33 + + res.M30 = lhs.M30 * rhs.M00 + lhs.M31 * rhs.M10 + lhs.M32 * rhs.M20 + lhs.M33 * rhs.M30 + res.M31 = lhs.M30 * rhs.M01 + lhs.M31 * rhs.M11 + lhs.M32 * rhs.M21 + lhs.M33 * rhs.M31 + res.M32 = lhs.M30 * rhs.M02 + lhs.M31 * rhs.M12 + lhs.M32 * rhs.M22 + lhs.M33 * rhs.M32 + res.M33 = lhs.M30 * rhs.M03 + lhs.M31 * rhs.M13 + lhs.M32 * rhs.M23 + lhs.M33 * rhs.M33 + + return res + + @staticmethod + def Scale(vector: Vector3): + return Matrix4x4([vector.X, 0, 0, 0, 0, vector.Y, 0, 0, 0, 0, vector.Z, 0, 0, 0, 0, 1]) diff --git a/UnityPy/math/Vector3.py b/UnityPy/math/Vector3.py index b73a4dd6..5e19f994 100644 --- a/UnityPy/math/Vector3.py +++ b/UnityPy/math/Vector3.py @@ -1,10 +1,15 @@ +from dataclasses import dataclass from math import sqrt +kEpsilon = 0.00001 + + +@dataclass class Vector3: - X: float - Y: float - Z: float + X: float = 0.0 + Y: float = 0.0 + Z: float = 0.0 def __init__(self, *args): if len(args) == 3 or len(args) == 1 and isinstance(args[0], (tuple, list)): @@ -13,162 +18,82 @@ def __init__(self, *args): # dirty patch for Vector4 self.__dict__ = args[0].__dict__ - def length(self) -> float: - return sqrt(self.X ** 2 + self.Y ** 2 + self.Z ** 2) + def __getitem__(self, index): + return (self.X, self.Y, self.Z)[index] + + def __setitem__(self, index, value): + if index == 0: + self.X = value + elif index == 1: + self.Y = value + elif index == 2: + self.Z = value + else: + raise IndexError("Index out of range") + + def __hash__(self): + return self.X.__hash__() ^ (self.Y.__hash__() << 2) ^ (self.Z.__hash__() >> 2) + + def __eq__(self, other): + if isinstance(other, Vector3): + return self.X == other.X and self.Y == other.Y and self.Z == other.Z + else: + return False def normalize(self): length = self.length() + if length > kEpsilon: + invNorm = 1.0 / length + self.X *= invNorm + self.Y *= invNorm + self.Z *= invNorm + else: + X = 0 + Y = 0 + Z = 0 + + def Normalize(self): + self.normalize() + + def length(self): + return sqrt(self.LengthSquared()) + + def Length(self): + return self.length() + + def LengthSquared(self): + return self.X ** 2 + self.Y ** 2 + self.Y ** 2 + + @staticmethod + def Zero(): + return Vector3(0, 0, 0) + + @staticmethod + def One(): + return Vector3(1, 1, 1) + + def __add__(a, b): + return Vector3(a.X + b.X, a.Y + b.Y, a.Z + b.Z) + + def __sub__(a, b): + return Vector3(a.X - b.X, a.Y - b.Y, a.Z - b.Z) + + def __mul__(a, d): + return Vector3(a.X * d, a.Y * d, a.Z * d) + + def __div__(a, d): + return Vector3(a.X / d, a.Y / d, a.Z / d) + + def __eq__(lhs, rhs): + return (lhs - rhs).LengthSquared() < kEpsilon + + def __ne__(lhs, rhs): + return not (lhs == rhs) + + def Vector2(self): + from .Vector2 import Vector2 + return Vector2(self.X, self.Y) - invNorm = 1.0 / length - self.X *= invNorm - self.Y *= invNorm - self.Z *= invNorm - - -""" -using System; -using System.Runtime.InteropServices; - -namespace AssetStudio -{ - [StructLayout(LayoutKind.Sequential, Pack = 4)] - public struct Vector3 : IEquatable - { - public float X; - public float Y; - public float Z; - - public Vector3(float x, float y, float z) - { - X = x; - Y = y; - Z = z; - } - - public float this[int index] - { - get - { - switch (index) - { - case 0: return X; - case 1: return Y; - case 2: return Z; - default: throw new ArgumentOutOfRangeException(nameof(index), "Invalid Vector3 index!"); - } - } - - set - { - switch (index) - { - case 0: X = value; break; - case 1: Y = value; break; - case 2: Z = value; break; - default: throw new ArgumentOutOfRangeException(nameof(index), "Invalid Vector3 index!"); - } - } - } - - public override int GetHashCode() - { - return X.GetHashCode() ^ (Y.GetHashCode() << 2) ^ (Z.GetHashCode() >> 2); - } - - public override bool Equals(object other) - { - if (!(other is Vector3)) - return false; - return Equals((Vector3)other); - } - - public bool Equals(Vector3 other) - { - return X.Equals(other.X) && Y.Equals(other.Y) && Z.Equals(other.Z); - } - - public void Normalize() - { - var length = Length(); - if (length > kEpsilon) - { - var invNorm = 1.0f / length; - X *= invNorm; - Y *= invNorm; - Z *= invNorm; - } - else - { - X = 0; - Y = 0; - Z = 0; - } - } - - public float Length() - { - return (float)Math.Sqrt(LengthSquared()); - } - - public float LengthSquared() - { - return X * X + Y * Y + Z * Z; - } - - public static Vector3 Zero => new Vector3(); - - public static Vector3 operator +(Vector3 a, Vector3 b) - { - return new Vector3(a.X + b.X, a.Y + b.Y, a.Z + b.Z); - } - - public static Vector3 operator -(Vector3 a, Vector3 b) - { - return new Vector3(a.X - b.X, a.Y - b.Y, a.Z - b.Z); - } - - public static Vector3 operator -(Vector3 a) - { - return new Vector3(-a.X, -a.Y, -a.Z); - } - - public static Vector3 operator *(Vector3 a, float d) - { - return new Vector3(a.X * d, a.Y * d, a.Z * d); - } - - public static Vector3 operator *(float d, Vector3 a) - { - return new Vector3(a.X * d, a.Y * d, a.Z * d); - } - - public static Vector3 operator /(Vector3 a, float d) - { - return new Vector3(a.X / d, a.Y / d, a.Z / d); - } - - public static bool operator ==(Vector3 lhs, Vector3 rhs) - { - return (lhs - rhs).LengthSquared() < kEpsilon * kEpsilon; - } - - public static bool operator !=(Vector3 lhs, Vector3 rhs) - { - return !(lhs == rhs); - } - - public static implicit operator Vector2(Vector3 v) - { - return new Vector2(v.X, v.Y); - } - - public static implicit operator Vector4(Vector3 v) - { - return new Vector4(v.X, v.Y, v.Z, 0.0F); - } - - private const float kEpsilon = 0.00001F; - } -} - -""" + def Vector4(self): + from .Vector4 import Vector4 + return Vector4(self.X, self.Y, self.Z, 0.0) From f380cbfcb6a70660de2fb6f51c3bce7044f7a5ed Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 10 Mar 2022 23:01:56 +0100 Subject: [PATCH 058/599] bump to 1.7.40 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 8e69dbf9..91c60367 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.39" +__version__ = "1.7.40" from .environment import Environment From c429696b5bea6f3c02a73a0e4285cdfbad3be7de Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 13 Mar 2022 00:11:47 +0100 Subject: [PATCH 059/599] 1.7.41 - fix and optimize Matrix4x4 a bit --- UnityPy/__init__.py | 2 +- UnityPy/math/Matrix4x4.py | 367 +++++++++++++++++++++++++------------- 2 files changed, 243 insertions(+), 126 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 91c60367..6603e933 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.40" +__version__ = "1.7.41" from .environment import Environment diff --git a/UnityPy/math/Matrix4x4.py b/UnityPy/math/Matrix4x4.py index bf73b1d0..a38c5967 100644 --- a/UnityPy/math/Matrix4x4.py +++ b/UnityPy/math/Matrix4x4.py @@ -1,149 +1,266 @@ from .Vector3 import Vector3 + class Matrix4x4: + M: list + def __init__(self, values): if len(values) != 16: raise ValueError( "There must be sixteen and only sixteen input values for Matrix." ) - self.M00 = values[0] - self.M10 = values[1] - self.M20 = values[2] - self.M30 = values[3] - - self.M01 = values[4] - self.M11 = values[5] - self.M21 = values[6] - self.M31 = values[7] - - self.M02 = values[8] - self.M12 = values[9] - self.M22 = values[10] - self.M32 = values[11] - - self.M03 = values[12] - self.M13 = values[13] - self.M23 = values[14] - self.M33 = values[15] - - @property - def M(self): - return [ - self.M00, self.M10, self.M20, self.M30, - self.M01, self.M11, self.M21, self.M31, - self.M02, self.M12, self.M22, self.M32, - self.M03, self.M13, self.M23, self.M33 - ] - @M.setter - def M(self, values: list): - for i,v in enumerate(values): - self[i] = v - + self.M = values def __getitem__(self, index): if isinstance(index, tuple): - # row, column - index = index[0] + index[0]*4 - if index == 0: - return self.M00 - elif index == 1: - return self.M10 - elif index == 2: - return self.M20 - elif index == 3: - return self.M30 - elif index == 4: - return self.M01 - elif index == 5: - return self.M11 - elif index == 6: - return self.M21 - elif index == 7: - return self.M31 - elif index == 8: - return self.M02 - elif index == 9: - return self.M12 - elif index == 10: - return self.M22 - elif index == 11: - return self.M32 - elif index == 12: - return self.M03 - elif index == 13: - return self.M13 - elif index == 14: - return self.M23 - elif index == 15: - return self.M33 + index = index[0] + index[1] * 4 + return self.M[index] def __setitem__(self, index, value): if isinstance(index, tuple): # row, column - index = index[0] + index[0]*4 - if index == 0: - self.M00 = value - elif index == 1: - self.M10 = value - elif index == 2: - self.M20 = value - elif index == 3: - self.M30 = value - elif index == 4: - self.M01 = value - elif index == 5: - self.M11 = value - elif index == 6: - self.M21 = value - elif index == 7: - self.M31 = value - elif index == 8: - self.M02 = value - elif index == 9: - self.M12 = value - elif index == 10: - self.M22 = value - elif index == 11: - self.M32 = value - elif index == 12: - self.M03 = value - elif index == 13: - self.M13 = value - elif index == 14: - self.M23 = value - elif index == 15: - self.M33 = value + index = index[0] + index[1] * 4 + self.M[index] = value def __eq__(self, other): if not isinstance(other, Matrix4x4): return False print() - def __mul__(lhs, rhs): - res = Matrix4x4([0]*16) - res.M00 = lhs.M00 * rhs.M00 + lhs.M01 * rhs.M10 + lhs.M02 * rhs.M20 + lhs.M03 * rhs.M30 - res.M01 = lhs.M00 * rhs.M01 + lhs.M01 * rhs.M11 + lhs.M02 * rhs.M21 + lhs.M03 * rhs.M31 - res.M02 = lhs.M00 * rhs.M02 + lhs.M01 * rhs.M12 + lhs.M02 * rhs.M22 + lhs.M03 * rhs.M32 - res.M03 = lhs.M00 * rhs.M03 + lhs.M01 * rhs.M13 + lhs.M02 * rhs.M23 + lhs.M03 * rhs.M33 - - res.M10 = lhs.M10 * rhs.M00 + lhs.M11 * rhs.M10 + lhs.M12 * rhs.M20 + lhs.M13 * rhs.M30 - res.M11 = lhs.M10 * rhs.M01 + lhs.M11 * rhs.M11 + lhs.M12 * rhs.M21 + lhs.M13 * rhs.M31 - res.M12 = lhs.M10 * rhs.M02 + lhs.M11 * rhs.M12 + lhs.M12 * rhs.M22 + lhs.M13 * rhs.M32 - res.M13 = lhs.M10 * rhs.M03 + lhs.M11 * rhs.M13 + lhs.M12 * rhs.M23 + lhs.M13 * rhs.M33 - - res.M20 = lhs.M20 * rhs.M00 + lhs.M21 * rhs.M10 + lhs.M22 * rhs.M20 + lhs.M23 * rhs.M30 - res.M21 = lhs.M20 * rhs.M01 + lhs.M21 * rhs.M11 + lhs.M22 * rhs.M21 + lhs.M23 * rhs.M31 - res.M22 = lhs.M20 * rhs.M02 + lhs.M21 * rhs.M12 + lhs.M22 * rhs.M22 + lhs.M23 * rhs.M32 - res.M23 = lhs.M20 * rhs.M03 + lhs.M21 * rhs.M13 + lhs.M22 * rhs.M23 + lhs.M23 * rhs.M33 - - res.M30 = lhs.M30 * rhs.M00 + lhs.M31 * rhs.M10 + lhs.M32 * rhs.M20 + lhs.M33 * rhs.M30 - res.M31 = lhs.M30 * rhs.M01 + lhs.M31 * rhs.M11 + lhs.M32 * rhs.M21 + lhs.M33 * rhs.M31 - res.M32 = lhs.M30 * rhs.M02 + lhs.M31 * rhs.M12 + lhs.M32 * rhs.M22 + lhs.M33 * rhs.M32 - res.M33 = lhs.M30 * rhs.M03 + lhs.M31 * rhs.M13 + lhs.M32 * rhs.M23 + lhs.M33 * rhs.M33 - - return res - + res = Matrix4x4([0] * 16) + res.M00 = ( + lhs.M00 * rhs.M00 + + lhs.M01 * rhs.M10 + + lhs.M02 * rhs.M20 + + lhs.M03 * rhs.M30 + ) + res.M01 = ( + lhs.M00 * rhs.M01 + + lhs.M01 * rhs.M11 + + lhs.M02 * rhs.M21 + + lhs.M03 * rhs.M31 + ) + res.M02 = ( + lhs.M00 * rhs.M02 + + lhs.M01 * rhs.M12 + + lhs.M02 * rhs.M22 + + lhs.M03 * rhs.M32 + ) + res.M03 = ( + lhs.M00 * rhs.M03 + + lhs.M01 * rhs.M13 + + lhs.M02 * rhs.M23 + + lhs.M03 * rhs.M33 + ) + + res.M10 = ( + lhs.M10 * rhs.M00 + + lhs.M11 * rhs.M10 + + lhs.M12 * rhs.M20 + + lhs.M13 * rhs.M30 + ) + res.M11 = ( + lhs.M10 * rhs.M01 + + lhs.M11 * rhs.M11 + + lhs.M12 * rhs.M21 + + lhs.M13 * rhs.M31 + ) + res.M12 = ( + lhs.M10 * rhs.M02 + + lhs.M11 * rhs.M12 + + lhs.M12 * rhs.M22 + + lhs.M13 * rhs.M32 + ) + res.M13 = ( + lhs.M10 * rhs.M03 + + lhs.M11 * rhs.M13 + + lhs.M12 * rhs.M23 + + lhs.M13 * rhs.M33 + ) + + res.M20 = ( + lhs.M20 * rhs.M00 + + lhs.M21 * rhs.M10 + + lhs.M22 * rhs.M20 + + lhs.M23 * rhs.M30 + ) + res.M21 = ( + lhs.M20 * rhs.M01 + + lhs.M21 * rhs.M11 + + lhs.M22 * rhs.M21 + + lhs.M23 * rhs.M31 + ) + res.M22 = ( + lhs.M20 * rhs.M02 + + lhs.M21 * rhs.M12 + + lhs.M22 * rhs.M22 + + lhs.M23 * rhs.M32 + ) + res.M23 = ( + lhs.M20 * rhs.M03 + + lhs.M21 * rhs.M13 + + lhs.M22 * rhs.M23 + + lhs.M23 * rhs.M33 + ) + + res.M30 = ( + lhs.M30 * rhs.M00 + + lhs.M31 * rhs.M10 + + lhs.M32 * rhs.M20 + + lhs.M33 * rhs.M30 + ) + res.M31 = ( + lhs.M30 * rhs.M01 + + lhs.M31 * rhs.M11 + + lhs.M32 * rhs.M21 + + lhs.M33 * rhs.M31 + ) + res.M32 = ( + lhs.M30 * rhs.M02 + + lhs.M31 * rhs.M12 + + lhs.M32 * rhs.M22 + + lhs.M33 * rhs.M32 + ) + res.M33 = ( + lhs.M30 * rhs.M03 + + lhs.M31 * rhs.M13 + + lhs.M32 * rhs.M23 + + lhs.M33 * rhs.M33 + ) + + return res + @staticmethod def Scale(vector: Vector3): - return Matrix4x4([vector.X, 0, 0, 0, 0, vector.Y, 0, 0, 0, 0, vector.Z, 0, 0, 0, 0, 1]) + return Matrix4x4( + [vector.X, 0, 0, 0, 0, vector.Y, 0, 0, 0, 0, vector.Z, 0, 0, 0, 0, 1] + ) + + @property + def M00(self): + return self.M[0] + + @M00.setter + def M00(self, value): + self.M[0] = value + + @property + def M10(self): + return self.M[1] + + @M10.setter + def M10(self, value): + self.M[1] = value + + @property + def M20(self): + return self.M[2] + + @M20.setter + def M20(self, value): + self.M[2] = value + + @property + def M30(self): + return self.M[3] + + @M30.setter + def M30(self, value): + self.M[3] = value + + @property + def M01(self): + return self.M[4] + + @M01.setter + def M01(self, value): + self.M[4] = value + + @property + def M11(self): + return self.M[5] + + @M11.setter + def M11(self, value): + self.M[5] = value + + @property + def M21(self): + return self.M[6] + + @M21.setter + def M21(self, value): + self.M[6] = value + + @property + def M31(self): + return self.M[7] + + @M31.setter + def M31(self, value): + self.M[7] = value + + @property + def M02(self): + return self.M[8] + + @M02.setter + def M02(self, value): + self.M[8] = value + + @property + def M12(self): + return self.M[9] + + @M12.setter + def M12(self, value): + self.M[9] = value + + @property + def M22(self): + return self.M[10] + + @M22.setter + def M22(self, value): + self.M[10] = value + + @property + def M32(self): + return self.M[11] + + @M32.setter + def M32(self, value): + self.M[11] = value + + @property + def M03(self): + return self.M[12] + + @M03.setter + def M03(self, value): + self.M[12] = value + + @property + def M13(self): + return self.M[13] + + @M13.setter + def M13(self, value): + self.M[13] = value + + @property + def M23(self): + return self.M[14] + + @M23.setter + def M23(self, value): + self.M[14] = value + + @property + def M33(self): + return self.M[15] + + @M33.setter + def M33(self, value): + self.M[15] = value From 24fdf83132ad52603de1381e450e0e8fb998a410 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 14 Mar 2022 21:19:06 +0100 Subject: [PATCH 060/599] 1.7.42 - fix asset finding of PPtr --- UnityPy/__init__.py | 2 +- UnityPy/classes/PPtr.py | 21 ++++++++------------- UnityPy/environment.py | 6 ++++-- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 6603e933..631dfb57 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.41" +__version__ = "1.7.42" from .environment import Environment diff --git a/UnityPy/classes/PPtr.py b/UnityPy/classes/PPtr.py index 8c4d2723..2b105d26 100644 --- a/UnityPy/classes/PPtr.py +++ b/UnityPy/classes/PPtr.py @@ -18,9 +18,6 @@ def save_ptr(obj, writer: EndianBinaryWriter): writer.write_long(obj.path_id) -cached_managers = dict() - - class PPtr: def __init__(self, reader: ObjectReader): self._version = reader.version2 @@ -43,14 +40,14 @@ def get_obj(self): elif self.file_id > 0 and self.file_id - 1 < len(self.assets_file.externals): if self.index == -2: environment = self.assets_file.environment - external_name = self.assets_file.externals[self.file_id - 1].name + external_name = self.external_name # try to find it in the already registered cabs manager = environment.get_cab(external_name) if not manager: # guess we have to try to find it as file then path = environment.path - if path: + if path is not None: basename = os.path.basename(external_name) possible_names = [basename, basename.lower(), basename.upper()] for root, dirs, files in os.walk(path): @@ -59,24 +56,18 @@ def get_obj(self): manager = environment.load_file( os.path.join(root, name) ) + environment.register_cab(name, manager) break else: # else is reached if the previous loop didn't break continue break - print(external_name, "not found") - # else: - # if external_name not in cached_managers: - # typ, reader = ImportHelper.check_file_type(external_name) - # if typ == FileType.AssetsFile: - # cached_managers[external_name] = files.SerializedFile(reader) - # if external_name in cached_managers: - # manager = cached_managers[external_name] if manager and self.path_id in manager.objects: self._obj = manager.objects[self.path_id] else: self._obj = None + print(external_name, "not found") return self._obj @@ -87,6 +78,10 @@ def type(self): return ClassIDType.UnknownType return obj.type + @property + def external_name(self): + return self.assets_file.externals[self.file_id - 1].name + def __getattr__(self, key): obj = self.get_obj() return getattr(obj, key) diff --git a/UnityPy/environment.py b/UnityPy/environment.py index 3dfec029..49868a6c 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -3,7 +3,6 @@ import os from zipfile import ZipFile import re - from . import files from .files import File from .enums import FileType @@ -22,7 +21,7 @@ class Environment: def __init__(self, *args): self.files = {} self.cabs = {} - self.path = "." + self.path = None self.out_path = os.path.join(os.getcwd(), "output") if args: @@ -43,6 +42,9 @@ def __init__(self, *args): if len(self.files) == 1: self.file = list(self.files.values())[0] + + if self.path == "": + self.path = os.getcwd() def load_files(self, files: list): """Loads all files (list) into the AssetsManager and merges .split files for common usage.""" From c6ad0effe5e24d6be3ff6e79df96f943ccc28b96 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 16 Mar 2022 11:39:58 +0100 Subject: [PATCH 061/599] 1.7.43 - explain dependency not found and fix external_name property --- UnityPy/__init__.py | 2 +- UnityPy/classes/PPtr.py | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 631dfb57..4f620305 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.42" +__version__ = "1.7.43" from .environment import Environment diff --git a/UnityPy/classes/PPtr.py b/UnityPy/classes/PPtr.py index 2b105d26..eaa0b458 100644 --- a/UnityPy/classes/PPtr.py +++ b/UnityPy/classes/PPtr.py @@ -62,12 +62,19 @@ def get_obj(self): # else is reached if the previous loop didn't break continue break - if manager and self.path_id in manager.objects: self._obj = manager.objects[self.path_id] else: self._obj = None - print(external_name, "not found") + if self.external_name: + print(f"Couldn't find dependency {self.external_name}") + print("You can try to load it manually to the environment in advance") + print("for Web-&BundleFiles: env.load_file(dependency)") + print( + "for SerializedFiles: env.register_cab(depdency_basename, env.load_file(dependency)" + ) + else: + print(f"Couldn't find referenced object with path_id {self.path_id}") return self._obj @@ -80,7 +87,8 @@ def type(self): @property def external_name(self): - return self.assets_file.externals[self.file_id - 1].name + if self.file_id > 0 and self.file_id - 1 < len(self.assets_file.externals): + return self.assets_file.externals[self.file_id - 1].name def __getattr__(self, key): obj = self.get_obj() From e1f27b2e374ee6705acb55b55255e6ac39845e38 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Mar 2022 22:25:01 +0100 Subject: [PATCH 062/599] 1.8.0 - add UnityPyBoost and update Mesh float conversion --- UnityPy/__init__.py | 2 +- UnityPy/classes/AnimationClip.py | 24 +++- UnityPy/classes/Mesh.py | 201 +++++++++++++++++++++---------- UnityPyBoost/AnimationClip.c | 150 +++++++++++++++++++++++ UnityPyBoost/AnimationClip.h | 5 + UnityPyBoost/Mesh.c | 198 ++++++++++++++++++++++++++++++ UnityPyBoost/Mesh.h | 6 + UnityPyBoost/ReadMe.md | 7 ++ UnityPyBoost/UnityPyBoost.c | 45 +++++++ UnityPyBoost/setup.py | 23 ++++ UnityPyBoost/swap.h | 32 +++++ setup.py | 101 ++++++++++------ 12 files changed, 691 insertions(+), 103 deletions(-) create mode 100644 UnityPyBoost/AnimationClip.c create mode 100644 UnityPyBoost/AnimationClip.h create mode 100644 UnityPyBoost/Mesh.c create mode 100644 UnityPyBoost/Mesh.h create mode 100644 UnityPyBoost/ReadMe.md create mode 100644 UnityPyBoost/UnityPyBoost.c create mode 100644 UnityPyBoost/setup.py create mode 100644 UnityPyBoost/swap.h diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 4f620305..72c9ee65 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.7.43" +__version__ = "1.8.0" from .environment import Environment diff --git a/UnityPy/classes/AnimationClip.py b/UnityPy/classes/AnimationClip.py index f93734a1..9176ab1d 100644 --- a/UnityPy/classes/AnimationClip.py +++ b/UnityPy/classes/AnimationClip.py @@ -7,6 +7,11 @@ from ..math import Quaternion, Vector3 from ..streams import EndianBinaryReader +try: + from UnityPy import UnityPyBoost +except ImportError: + UnityPyBoost = None + def uint(num): if num < 0 or num > 4294967295: @@ -76,6 +81,19 @@ def UnpackFloats( start: int = 0, numChunks: int = -1, ): + if UnityPyBoost: + return UnityPyBoost.unpack_floats( + self.m_NumItems, + self.m_Range, + self.m_Start, + bytes(self.m_Data), + self.m_BitSize, + itemCountInChunk, + chunkStride, + start, + numChunks, + ) + bitPos: int = self.m_BitSize * start indexPos: int = bitPos // 8 bitPos %= 8 @@ -103,7 +121,6 @@ def UnpackFloats( x &= uint((1 << self.m_BitSize) - 1) # (uint)(1 << m_BitSize) - 1u denomi = scale * ((1 << self.m_BitSize) - 1) data.append((x / denomi if denomi else float("inf")) + self.m_Start) - return data @@ -129,6 +146,11 @@ def save(self, writer): writer.align_stream() def UnpackInts(self): + if UnityPyBoost: + return UnityPyBoost.unpack_ints( + self.m_NumItems, bytes(self.m_Data), self.m_BitSize + ) + data = [0] * self.m_NumItems indexPos = 0 bitPos = 0 diff --git a/UnityPy/classes/Mesh.py b/UnityPy/classes/Mesh.py index 1c805dbd..600122c5 100644 --- a/UnityPy/classes/Mesh.py +++ b/UnityPy/classes/Mesh.py @@ -1,4 +1,5 @@ import math +from typing import List from .AnimationClip import AABB, PackedFloatVector, PackedIntVector from .NamedObject import NamedObject @@ -11,6 +12,11 @@ from enum import IntEnum from ..export import MeshExporter +try: + from UnityPy import UnityPyBoost +except: + UnityPyBoost = None + class MinMaxAABB: def __init__(self, reader): @@ -533,39 +539,42 @@ def ReadVertexData(self): componentByteSize = MeshHelper.GetFormatSize( version, m_Channel.format ) - componentBytes = bytearray( - m_VertexCount * m_Channel.dimension * componentByteSize - ) - for v in range(m_VertexCount): - vertexOffset = ( - int(m_Stream.offset) - + m_Channel.offset - + int(m_Stream.stride) * v + swap = self.reader.endian == "<" and componentByteSize > 1 + + if UnityPyBoost: + componentBytes = UnityPyBoost.unpack_vertexdata( + bytes(m_VertexData.m_DataSize), + componentByteSize, + m_VertexCount, + m_Stream.offset, + m_Stream.stride, + m_Channel.offset, + m_Channel.dimension, + swap, + ) + else: + componentBytes = bytearray( + m_VertexCount * m_Channel.dimension * componentByteSize ) - for d in range(m_Channel.dimension): - componentOffsetSrc = ( - vertexOffset + componentByteSize * d - ) # src offset - componentOffsetDst = componentByteSize * ( - v * m_Channel.dimension + d - ) # dst offst - - buff = m_VertexData.m_DataSize[ - componentOffsetSrc : componentOffsetSrc - + componentByteSize - ] - - if ( - self.reader.endian == "<" and componentByteSize > 1 - ): # swap bytes - buff = buff[::-1] - - componentBytes[ - componentOffsetDst : componentOffsetDst - + componentByteSize - ] = buff - # Buffer.BlockCopy(m_VertexData.m_DataSize, componentOffset, componentBytes, componentByteSize * (v * m_Channel.dimension + d), componentByteSize); - # (Array src, int srcOffset, Array dst, int dstOffset, int count); + + vertexBaseOffset = m_Stream.offset + m_Channel.offset + for v in range(m_VertexCount): + vertexOffset = vertexBaseOffset + m_Stream.stride * v + for d in range(m_Channel.dimension): + componentOffset = vertexOffset + componentByteSize * d + vertexDataSrc = componentOffset + componentDataSrc = componentByteSize * ( + v * m_Channel.dimension + d + ) + buff = m_VertexData.m_DataSize[ + vertexDataSrc : vertexDataSrc + componentByteSize + ] + if swap: # swap bytes + buff = buff[::-1] + componentBytes[ + componentDataSrc : componentDataSrc + + componentByteSize + ] = buff if MeshHelper.IsIntFormat(version, m_Channel.format): componentsIntArray = MeshHelper.BytesToIntArray( @@ -573,7 +582,9 @@ def ReadVertexData(self): ) else: componentsFloatArray = MeshHelper.BytesToFloatArray( - componentBytes, componentByteSize + componentBytes, + componentByteSize, + MeshHelper.ToVertexFormat(m_Channel.format, version), ) if version[0] >= 2018: @@ -929,29 +940,29 @@ def GetFormatSize(version, format: int) -> int: elif format == VertexFormat.kVertexFormatSInt32: return 4 else: - if format == VertexFormatV2019.kVertexFormatFloat: + if format == VertexFormat2017.kVertexFormatFloat: return 4 - elif format == VertexFormatV2019.kVertexFormatFloat16: + elif format == VertexFormat2017.kVertexFormatFloat16: return 2 - elif format == VertexFormatV2019.kVertexFormatUNorm8: + elif format == VertexFormat2017.kVertexFormatUNorm8: return 1 - elif format == VertexFormatV2019.kVertexFormatSNorm8: + elif format == VertexFormat2017.kVertexFormatSNorm8: return 1 - elif format == VertexFormatV2019.kVertexFormatUNorm16: + elif format == VertexFormat2017.kVertexFormatUNorm16: return 2 - elif format == VertexFormatV2019.kVertexFormatSNorm16: + elif format == VertexFormat2017.kVertexFormatSNorm16: return 2 - elif format == VertexFormatV2019.kVertexFormatUInt8: + elif format == VertexFormat2017.kVertexFormatUInt8: return 1 - elif format == VertexFormatV2019.kVertexFormatSInt8: + elif format == VertexFormat2017.kVertexFormatSInt8: return 1 - elif format == VertexFormatV2019.kVertexFormatUInt16: + elif format == VertexFormat2017.kVertexFormatUInt16: return 2 - elif format == VertexFormatV2019.kVertexFormatSInt16: + elif format == VertexFormat2017.kVertexFormatSInt16: return 2 - elif format == VertexFormatV2019.kVertexFormatUInt32: + elif format == VertexFormat2017.kVertexFormatUInt32: return 4 - elif format == VertexFormatV2019.kVertexFormatSInt32: + elif format == VertexFormat2017.kVertexFormatSInt32: return 4 raise ValueError(format) @@ -965,24 +976,92 @@ def IsIntFormat(version, format: int) -> bool: return format >= 6 @staticmethod - def BytesToFloatArray(inputBytes, size): - return [ - inputBytes[i] / 255.0 - if size == 1 - else struct.unpack(">e", inputBytes[i * 2 : i * 2 + 2])[0] - if size == 2 - else struct.unpack(">f", inputBytes[i * 4 : i * 4 + 4])[0] - if size == 4 - else 0 - for i in range(len(inputBytes) // size) - ] + def BytesToFloatArray(inputBytes, size, vformat: "VertexFormat") -> List[float]: + # return [ + # inputBytes[i] / 255.0 + # if size == 1 + # else struct.unpack(">e", inputBytes[i * 2 : i * 2 + 2])[0] + # if size == 2 + # else struct.unpack(">f", inputBytes[i * 4 : i * 4 + 4])[0] + # if size == 4 + # else 0 + # for i in range(len(inputBytes) // size) + # ] + if vformat == VertexFormat.kVertexFormatFloat: + return struct.unpack(f">{'f'*(len(inputBytes)//4)}", inputBytes) + elif vformat == VertexFormat.kVertexFormatFloat16: + return struct.unpack(f">{'e'*(len(inputBytes)//2)}", inputBytes) + elif vformat == VertexFormat.kVertexFormatUNorm8: + return [byte / 255.0 for byte in inputBytes] + elif vformat == VertexFormat.kVertexFormatSNorm8: + return [max(((byte - 128) / 127.0), -1.0) for byte in inputBytes] + elif vformat == VertexFormat.kVertexFormatUNorm16: + return [ + x / 65535.0 + for x in struct.unpack(f">{'H'*(len(inputBytes)//2)}", inputBytes) + ] + elif vformat == VertexFormat.kVertexFormatSNorm16: + return [ + max(((x - 32768) / 32767.0), -1.0) + for x in struct.unpack(f">{'h'*(len(inputBytes)//2)}", inputBytes) + ] @staticmethod def BytesToIntArray(inputBytes, size): - return [ - int.from_bytes(inputBytes[i : i + size], byteorder="big", signed=True) - for i in range(0, len(inputBytes), size) - ] + if size == 1: + return [x for x in inputBytes] + elif size == 2: + return [x for x in struct.unpack(">H" * (len(inputBytes) // 2), inputBytes)] + elif size == 4: + return [x for x in struct.unpack(">I" * (len(inputBytes) // 4), inputBytes)] + + @staticmethod + def ToVertexFormat(format: int, version: List[int]) -> "VertexFormat": + if version[0] < 2017: + if format == VertexChannelFormat.kChannelFormatFloat: + return VertexFormat.kVertexFormatFloat + elif format == VertexChannelFormat.kChannelFormatFloat16: + return VertexFormat.kVertexFormatFloat16 + elif format == VertexChannelFormat.kChannelFormatColor: # in 4.x is size 4 + return VertexFormat.kVertexFormatUNorm8 + elif format == VertexChannelFormat.kChannelFormatByte: + return VertexFormat.kVertexFormatUInt8 + elif format == VertexChannelFormat.kChannelFormatUInt32: # in 5.x + return VertexFormat.kVertexFormatUInt32 + else: + raise ValueError(f"Failed to convert {format.name} to VertexFormat") + elif version[0] < 2019: + if format == VertexFormat2017.kVertexFormatFloat: + return VertexFormat.kVertexFormatFloat + elif format == VertexFormat2017.kVertexFormatFloat16: + return VertexFormat.kVertexFormatFloat16 + elif ( + format == VertexFormat2017.kVertexFormatColor + or format == VertexFormat2017.kVertexFormatUNorm8 + ): + return VertexFormat.kVertexFormatUNorm8 + elif format == VertexFormat2017.kVertexFormatSNorm8: + return VertexFormat.kVertexFormatSNorm8 + elif format == VertexFormat2017.kVertexFormatUNorm16: + return VertexFormat.kVertexFormatUNorm16 + elif format == VertexFormat2017.kVertexFormatSNorm16: + return VertexFormat.kVertexFormatSNorm16 + elif format == VertexFormat2017.kVertexFormatUInt8: + return VertexFormat.kVertexFormatUInt8 + elif format == VertexFormat2017.kVertexFormatSInt8: + return VertexFormat.kVertexFormatSInt8 + elif format == VertexFormat2017.kVertexFormatUInt16: + return VertexFormat.kVertexFormatUInt16 + elif format == VertexFormat2017.kVertexFormatSInt16: + return VertexFormat.kVertexFormatSInt16 + elif format == VertexFormat2017.kVertexFormatUInt32: + return VertexFormat.kVertexFormatUInt32 + elif format == VertexFormat2017.kVertexFormatSInt32: + return VertexFormat.kVertexFormatSInt32 + else: + raise ValueError(f"Failed to convert {format.name} to VertexFormat") + else: + return VertexFormat(format) class VertexChannelFormat(IntEnum): @@ -1009,7 +1088,7 @@ class VertexFormat(IntEnum): kVertexFormatSInt32 = 12 -class VertexFormatV2019(IntEnum): +class VertexFormat2017(IntEnum): kVertexFormatFloat = 0 kVertexFormatFloat16 = 1 kVertexFormatUNorm8 = 2 diff --git a/UnityPyBoost/AnimationClip.c b/UnityPyBoost/AnimationClip.c new file mode 100644 index 00000000..59ef7c98 --- /dev/null +++ b/UnityPyBoost/AnimationClip.c @@ -0,0 +1,150 @@ +#include "AnimationClip.h" +#include + +#define MIN(x, y) (((x) < (y)) ? (x) : (y)) + +/* AnimationClip.py */ +static float *UnpackFloats(uint32_t m_NumItems, float m_Range, float m_Start, uint8_t *m_Data, char m_BitSize, int itemCountInChunk, int chunkStride, int start, int numChunks) +{ + int bitPos = m_BitSize * start; + int indexPos = bitPos / 8; + bitPos %= 8; + + float scale = 1.0f / m_Range; + if (numChunks == -1) + numChunks = (int)m_NumItems / itemCountInChunk; + + // TODO: might be better to use ulong instead of uint + uint32_t end = chunkStride * numChunks / 4; + // TODO: check if this is correct + float *data = (float *)malloc(sizeof(float) * numChunks * itemCountInChunk); + float *dataStart = data; + for (uint32_t index = 0; index != end; index += chunkStride / 4) + { + for (int i = 0; i < itemCountInChunk; ++i) + { + uint32_t x = 0; + int bits = 0; + while (bits < m_BitSize) + { + x |= (uint32_t)((m_Data[indexPos] >> bitPos) << bits); + int num = MIN(m_BitSize - bits, 8 - bitPos); + bitPos += num; + bits += num; + if (bitPos == 8) + { + indexPos++; + bitPos = 0; + } + } + x &= (uint32_t)(1 << m_BitSize) - 1u; + *data++ = (x / (scale * ((1 << m_BitSize) - 1)) + m_Start); + } + } + return dataStart; +} + +// TODO: check if bitPos, bits, and num can be reduced to chars +static int *UnpackInts(uint32_t m_NumItems, uint8_t *m_Data, char m_BitSize) +{ + int *data = (int *)malloc(m_NumItems * sizeof(int)); + + int indexPos = 0; + int bitPos = 0; + for (uint32_t i = 0; i < m_NumItems; i++) + { + int bits = 0; + data[i] = 0; + while (bits < m_BitSize) + { + data[i] |= (m_Data[indexPos] >> bitPos) << bits; + int num = MIN(m_BitSize - bits, 8 - bitPos); + bitPos += num; + bits += num; + if (bitPos == 8) + { + indexPos++; + bitPos = 0; + } + } + data[i] &= (1 << m_BitSize) - 1; + } + return data; +} + +// TODO: implement unpack quaternions + +PyObject *unpack_floats(PyObject *self, PyObject *args) +{ + // define vars + uint32_t m_NumItems; + float m_Range; + float m_Start; + uint8_t *m_Data; + char m_BitSize; + int itemCountInChunk; + int chunkStride; + int start; + int numChunks; + Py_ssize_t data_size; + + start = 0; + numChunks = -1; + if (!PyArg_ParseTuple(args, "Iffy#bii|ii", &m_NumItems, &m_Range, &m_Start, &m_Data, &data_size, &m_BitSize, &itemCountInChunk, &chunkStride, &start, &numChunks)) + return NULL; + + // decode + float *array = UnpackFloats(m_NumItems, m_Range, m_Start, m_Data, m_BitSize, itemCountInChunk, chunkStride, start, numChunks); + + if (numChunks == -1) + numChunks = (int)m_NumItems / itemCountInChunk; + Py_ssize_t array_len = numChunks * itemCountInChunk; + // return + PyObject *lst = PyList_New(array_len); + if (!lst) + return NULL; + for (Py_ssize_t i = 0; i < array_len; i++) + { + PyObject *num = PyFloat_FromDouble(array[i]); + if (!num) + { + Py_DECREF(lst); + return NULL; + } + PyList_SET_ITEM(lst, i, num); // reference to num stolen + } + free(array); + return lst; +} + +PyObject *unpack_ints(PyObject *self, PyObject *args) +{ + // define vars + uint32_t m_NumItems; + uint8_t *m_Data; + char m_BitSize; + Py_ssize_t data_size; + + if (!PyArg_ParseTuple(args, "Iy#b", &m_NumItems, &m_Data, &data_size, &m_BitSize)) + return NULL; + + // decode + int *array = UnpackInts(m_NumItems, m_Data, m_BitSize); + + // return + PyObject *lst = PyList_New(m_NumItems); + if (!lst) + return NULL; + for (uint32_t i = 0; i < m_NumItems; i++) + { + PyObject *num = PyLong_FromLong(array[i]); + if (!num) + { + Py_DECREF(lst); + return NULL; + } + PyList_SET_ITEM(lst, i, num); // reference to num stolen + } + free(array); + return lst; +} \ No newline at end of file diff --git a/UnityPyBoost/AnimationClip.h b/UnityPyBoost/AnimationClip.h new file mode 100644 index 00000000..f231d55f --- /dev/null +++ b/UnityPyBoost/AnimationClip.h @@ -0,0 +1,5 @@ +#define PY_SSIZE_T_CLEAN +#pragma once +#include +PyObject *unpack_floats(PyObject *self, PyObject *args); +PyObject *unpack_ints(PyObject *self, PyObject *args); \ No newline at end of file diff --git a/UnityPyBoost/Mesh.c b/UnityPyBoost/Mesh.c new file mode 100644 index 00000000..539ec3f5 --- /dev/null +++ b/UnityPyBoost/Mesh.c @@ -0,0 +1,198 @@ +#include "Mesh.h" +#include +#include + +#define MAX(x, y) (((x) > (y)) ? (x) : (y)) + +enum +{ + kVertexFormatFloat, + kVertexFormatFloat16, + kVertexFormatUNorm8, + kVertexFormatSNorm8, + kVertexFormatUNorm16, + kVertexFormatSNorm16, + kVertexFormatUInt8, + kVertexFormatSInt8, + kVertexFormatUInt16, + kVertexFormatSInt16, + kVertexFormatUInt32, + kVertexFormatSInt32 +}; + +PyObject *unpack_vertexdata(PyObject *self, PyObject *args) +{ + // define vars + int componentByteSize; + uint32_t m_VertexCount; + char swap; + // char format; + uint8_t *vertexData; // m_VertexData.m_DataSize + uint32_t m_StreamOffset; + uint32_t m_StreamStride; + uint32_t m_ChannelOffset; + uint32_t m_ChannelDimension; + Py_ssize_t vertexDataSize; + + if (!PyArg_ParseTuple(args, "y#iIIIIIb", &vertexData, &vertexDataSize, &componentByteSize, &m_VertexCount, &m_StreamOffset, &m_StreamStride, &m_ChannelOffset, &m_ChannelDimension, &swap)) + return NULL; + + Py_ssize_t componentBytesLength = m_VertexCount * m_ChannelDimension * componentByteSize; + uint8_t *componentBytes = (uint8_t *)PyMem_Malloc(componentBytesLength + 1); + componentBytes[componentBytesLength] = 0; + + // check if max values are ok + uint32_t maxVertexDataAccess = (m_VertexCount - 1) * m_StreamStride + m_ChannelOffset + m_StreamOffset + componentByteSize * (m_ChannelDimension - 1) + componentByteSize; + if (maxVertexDataAccess > vertexDataSize) + { + printf("maxVertexDataAccess: %d, vertexDataSize: %d\n", maxVertexDataAccess, vertexDataSize); + PyErr_SetString(PyExc_ValueError, "Vertex data access out of bounds"); + return NULL; + } + + for (uint32_t v = 0; v < m_VertexCount; v++) + { + uint32_t vertexOffset = m_StreamOffset + m_ChannelOffset + m_StreamStride * v; + for (uint32_t d = 0; d < m_ChannelDimension; d++) + { + uint32_t vertexDataOffset = vertexOffset + componentByteSize * d; + uint32_t componentOffset = componentByteSize * (v * m_ChannelDimension + d); + memcpy(componentBytes + componentOffset, vertexData + vertexDataOffset, componentByteSize); + } + } + + if (swap) // swap bytes + { + if (componentByteSize == 2) + { + uint16_t *componentUints = (uint16_t *)componentBytes; + for (uint32_t i = 0; i < componentBytesLength; i += 2) + { + *componentUints = bswap16(*componentUints); + } + } + else if (componentByteSize == 4) + { + + uint32_t *componentUints = (uint32_t *)componentBytes; + for (uint32_t i = 0; i < componentBytesLength; i += 4) + { + *componentUints++ = bswap32(*componentUints); + } + } + } + + PyObject *res = PyByteArray_FromStringAndSize(componentBytes, componentBytesLength); + PyMem_Free(componentBytes); + return res; + + // fast enough in Python + // uint32_t itemCount = componentBytesLength / componentByteSize; + // PyObject *lst = PyList_New(itemCount); + // if (!lst) + // return NULL; + + // switch (format) + // { + // case kVertexFormatFloat: + // { + // float *items = (float *)componentBytes; + // for (uint32_t i = 0; i < itemCount; i++) + // { + // PyList_SetItem(lst, i, PyFloat_FromDouble((double)*items++)); + // } + // // result[i] = BitConverter.ToSingle(inputBytes, i * 4); + // break; + // } + // case kVertexFormatFloat16: + // { + // uint16_t *items = (uint16_t *)componentBytes; + // for (uint32_t i = 0; i < itemCount; i++) + // { + // double x = _PyFloat_Unpack2(items++, 0); + // if (x == -1.0 && PyErr_Occurred()) + // { + // return NULL; + // } + // PyList_SetItem(lst, i, PyFloat_FromDouble(x)); + // } + // // result[i] = Half.ToHalf(inputBytes, i * 2); + // break; + // } + // case kVertexFormatUNorm8: + // { + // uint8_t *items = componentBytes; + // for (uint32_t i = 0; i < itemCount; i++) + // { + // PyList_SetItem(lst, i, PyFloat_FromDouble((double)(*items++ / 255.0f))); + // } + // // result[i] = inputBytes[i] / 255f; + // break; + // } + // case kVertexFormatSNorm8: + // { + // int8_t *items = (int8_t *)componentBytes; + // for (uint32_t i = 0; i < itemCount; i++) + // { + // PyList_SetItem(lst, i, PyFloat_FromDouble((double)MAX((*items++ / 127.0f), -1.0f))); + // } + // // result[i] = Math.Max((sbyte)inputBytes[i] / 127f, -1f); + // break; + // } + // case kVertexFormatUNorm16: + // { + // uint16_t *items = (uint16_t *)componentBytes; + // for (uint32_t i = 0; i < itemCount; i++) + // { + // PyList_SetItem(lst, i, PyFloat_FromDouble((double)(*items++ / 65535.0f))); + // } + // // result[i] = BitConverter.ToUInt16(inputBytes, i * 2) / 65535f; + // break; + // } + // case kVertexFormatSNorm16: + // { + // int16_t *items = (int16_t *)componentBytes; + // for (uint32_t i = 0; i < itemCount; i++) + // { + // PyList_SetItem(lst, i, PyFloat_FromDouble((double)MAX((*items++ / 32767.0f), -1.0f))); + // } + // // result[i] = Math.Max(BitConverter.ToInt16(inputBytes, i * 2) / 32767f, -1f); + // break; + // } + // case kVertexFormatUInt8: + // case kVertexFormatSInt8: + // { + // uint8_t *items = componentBytes; + // for (uint32_t i = 0; i < itemCount; i++) + // { + // PyList_SetItem(lst, i, PyLong_FromUnsignedLong((uint32_t)*items++)); + // } + // // result[i] = inputBytes[i]; + // break; + // } + // case kVertexFormatUInt16: + // case kVertexFormatSInt16: + // { + // uint16_t *items = (uint16_t *)componentBytes; + // for (uint32_t i = 0; i < itemCount; i++) + // { + // PyList_SetItem(lst, i, PyLong_FromUnsignedLong((uint32_t)*items++)); + // } + // // result[i] = BitConverter.ToInt16(inputBytes, i * 2); + // break; + // } + // case kVertexFormatUInt32: + // case kVertexFormatSInt32: + // { + // uint32_t *items = (uint32_t *)componentBytes; + // for (uint32_t i = 0; i < itemCount; i++) + // { + // PyList_SetItem(lst, i, PyLong_FromUnsignedLong(*items++)); + // } + // // result[i] = BitConverter.ToInt32(inputBytes, i * 4); + // break; + // } + // } + // free(componentBytes); + // return lst; +} diff --git a/UnityPyBoost/Mesh.h b/UnityPyBoost/Mesh.h new file mode 100644 index 00000000..e74f9ba1 --- /dev/null +++ b/UnityPyBoost/Mesh.h @@ -0,0 +1,6 @@ +#define PY_SSIZE_T_CLEAN +#pragma once +#include "AnimationClip.h" +#include + +PyObject *unpack_vertexdata(PyObject *self, PyObject *args); \ No newline at end of file diff --git a/UnityPyBoost/ReadMe.md b/UnityPyBoost/ReadMe.md new file mode 100644 index 00000000..18fb32e7 --- /dev/null +++ b/UnityPyBoost/ReadMe.md @@ -0,0 +1,7 @@ +# UnityPyBoost + +A C-extension for UnityPy that accelerates various parts of UnityPy (by a lot). + +## Structure + +The filename corresponds to where the original python functionality is situated. diff --git a/UnityPyBoost/UnityPyBoost.c b/UnityPyBoost/UnityPyBoost.c new file mode 100644 index 00000000..9b0f5554 --- /dev/null +++ b/UnityPyBoost/UnityPyBoost.c @@ -0,0 +1,45 @@ +#define PY_SSIZE_T_CLEAN +#pragma once +#include +#include "AnimationClip.h" +#include "Mesh.h" + +/* Mesh.py */ + +static struct PyMethodDef method_table[] = { + {"unpack_floats", + (PyCFunction)unpack_floats, + METH_VARARGS, + "replacement for PackedFloatVector.unpack_floats"}, + {"unpack_ints", + (PyCFunction)unpack_ints, + METH_VARARGS, + "replacement for PackedIntVector.unpack_ints"}, + {"unpack_vertexdata", + (PyCFunction)unpack_vertexdata, + METH_VARARGS, + "replacement for VertexData to ComponentData in Mesh.ReadVertexData"}, + {NULL, + NULL, + 0, + NULL} // Sentinel value ending the table +}; + +// A struct contains the definition of a module +static PyModuleDef UnityPyBoost_module = { + PyModuleDef_HEAD_INIT, + "UnityPyBoost", // Module name + "TODO", + -1, // Optional size of the module state memory + method_table, + NULL, // Optional slot definitions + NULL, // Optional traversal function + NULL, // Optional clear function + NULL // Optional module deallocation function +}; + +// The module init function +PyMODINIT_FUNC PyInit_UnityPyBoost(void) +{ + return PyModule_Create(&UnityPyBoost_module); +} \ No newline at end of file diff --git a/UnityPyBoost/setup.py b/UnityPyBoost/setup.py new file mode 100644 index 00000000..1533ee4f --- /dev/null +++ b/UnityPyBoost/setup.py @@ -0,0 +1,23 @@ +from setuptools import setup, Extension, find_packages +import os +import platform + +local = os.path.dirname(os.path.abspath(__file__)) + +setup( + name="UnityPyBoost", + description="TODO", + author="K0lb3", + version="0.0.2", + ext_modules=[ + Extension( + "UnityPyBoost", + [ + os.path.join(local, f) + for f in os.listdir(local) if f.endswith(".c") + ], + language="c", + include_dirs=[local], + ) + ], +) \ No newline at end of file diff --git a/UnityPyBoost/swap.h b/UnityPyBoost/swap.h new file mode 100644 index 00000000..106db94d --- /dev/null +++ b/UnityPyBoost/swap.h @@ -0,0 +1,32 @@ +// set swap funcions (source: old version of nodejs/src/node_buffer.cc) +#if defined(__GNUC__) || defined(__clang__) +#define bswap16(x) __builtin_bswap16(x) +#define bswap32(x) __builtin_bswap32(x) +#define bswap64(x) __builtin_bswap64(x) +#elif defined(__linux__) +#include +#define bswap16(x) bswap_16(x) +#define bswap32(x) bswap_32(x) +#define bswap64(x) bswap_64(x) +#elif defined(_MSC_VER) +#include +#define bswap16(x) _byteswap_ushort(x) +#define bswap32(x) _byteswap_ulong(x) +#define bswap64(x) _byteswap_uint64(x) +#else +#define bswap16 ((x) << 8) | ((x) >> 8) +#define bswap32 \ + (((x)&0xFF) << 24) | \ + (((x)&0xFF00) << 8) | \ + (((x) >> 8) & 0xFF00) | \ + (((x) >> 24) & 0xFF) +#define bswap64 \ + (((x)&0xFF00000000000000ull) >> 56) | \ + (((x)&0x00FF000000000000ull) >> 40) | \ + (((x)&0x0000FF0000000000ull) >> 24) | \ + (((x)&0x000000FF00000000ull) >> 8) | \ + (((x)&0x00000000FF000000ull) << 8) | \ + (((x)&0x0000000000FF0000ull) << 24) | \ + (((x)&0x000000000000FF00ull) << 40) | \ + (((x)&0x00000000000000FFull) << 56) +#endif \ No newline at end of file diff --git a/setup.py b/setup.py index a2c535e8..da2639d1 100644 --- a/setup.py +++ b/setup.py @@ -1,45 +1,66 @@ -import setuptools +from setuptools import setup, Extension, find_packages from UnityPy import __version__ as version with open("README.md", "r") as fh: - long_description = fh.read() + long_description = fh.read() -setuptools.setup( - name="UnityPy", - packages=setuptools.find_packages(), - include_package_data = True, - version=version, - author="K0lb3", - description="A pythonic port of AssetStudio by Perfare", - long_description=long_description, - long_description_content_type="text/markdown", - url="https://github.com/K0lb3/UnityPy", - download_url="https://github.com/K0lb3/UnityPy/tarball/master", - keywords=['python', 'unity', 'unity-asset', 'python3', 'data-minig', 'unitypack', 'assetstudio', 'unity-asset-extractor'], - classifiers=[ - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - "Intended Audience :: Developers", - "Development Status :: 5 - Production/Stable", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: Games/Entertainment", - "Topic :: Multimedia :: Graphics", - ], - install_requires=[ - # block compression/decompression - "lz4", # BundleFile block compression - "brotli", # WebFile compression - # Texture & Sprite handling - "Pillow", - "texture2ddecoder", # texture decompression - "etcpak", # ETC & DXT compression - # raw typetree dumping - "tabulate" - ] +import os + +local = "./UnityPyBoost" + +setup( + name="UnityPy", + packages=find_packages(), + include_package_data=True, + version=version, + author="K0lb3", + description="A pythonic port of AssetStudio by Perfare", + long_description=long_description, + long_description_content_type="text/markdown", + url="https://github.com/K0lb3/UnityPy", + download_url="https://github.com/K0lb3/UnityPy/tarball/master", + keywords=[ + "python", + "unity", + "unity-asset", + "python3", + "data-minig", + "unitypack", + "assetstudio", + "unity-asset-extractor", + ], + classifiers=[ + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Intended Audience :: Developers", + "Development Status :: 5 - Production/Stable", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Games/Entertainment", + "Topic :: Multimedia :: Graphics", + ], + install_requires=[ + # block compression/decompression + "lz4", # BundleFile block compression + "brotli", # WebFile compression + # Texture & Sprite handling + "Pillow", + "texture2ddecoder", # texture decompression + "etcpak", # ETC & DXT compression + # raw typetree dumping + "tabulate", + ], + ext_modules=[ + Extension( + "UnityPy.UnityPyBoost", + [os.path.join(local, f) for f in os.listdir(local) if f.endswith(".c")], + language="c", + include_dirs=[local], + ) + ], ) From efccdba51b088e238bd34127ca654a452d70d368 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Mar 2022 23:33:19 +0100 Subject: [PATCH 063/599] 1.8.1 - use signed int for Mesh.BytesToIntArray --- UnityPy/__init__.py | 2 +- UnityPy/classes/Mesh.py | 14 ++------------ 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 72c9ee65..8e57a784 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.0" +__version__ = "1.8.1" from .environment import Environment diff --git a/UnityPy/classes/Mesh.py b/UnityPy/classes/Mesh.py index 600122c5..104fdcb8 100644 --- a/UnityPy/classes/Mesh.py +++ b/UnityPy/classes/Mesh.py @@ -977,16 +977,6 @@ def IsIntFormat(version, format: int) -> bool: @staticmethod def BytesToFloatArray(inputBytes, size, vformat: "VertexFormat") -> List[float]: - # return [ - # inputBytes[i] / 255.0 - # if size == 1 - # else struct.unpack(">e", inputBytes[i * 2 : i * 2 + 2])[0] - # if size == 2 - # else struct.unpack(">f", inputBytes[i * 4 : i * 4 + 4])[0] - # if size == 4 - # else 0 - # for i in range(len(inputBytes) // size) - # ] if vformat == VertexFormat.kVertexFormatFloat: return struct.unpack(f">{'f'*(len(inputBytes)//4)}", inputBytes) elif vformat == VertexFormat.kVertexFormatFloat16: @@ -1011,9 +1001,9 @@ def BytesToIntArray(inputBytes, size): if size == 1: return [x for x in inputBytes] elif size == 2: - return [x for x in struct.unpack(">H" * (len(inputBytes) // 2), inputBytes)] + return [x for x in struct.unpack(">h" * (len(inputBytes) // 2), inputBytes)] elif size == 4: - return [x for x in struct.unpack(">I" * (len(inputBytes) // 4), inputBytes)] + return [x for x in struct.unpack(">i" * (len(inputBytes) // 4), inputBytes)] @staticmethod def ToVertexFormat(format: int, version: List[int]) -> "VertexFormat": From 0fa532d762a3d3124aef9275ef96426c26b02a7d Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Mar 2022 12:10:44 +0100 Subject: [PATCH 064/599] 1.8.2 - remove print warning for invalid pointers --- UnityPy/__init__.py | 2 +- UnityPy/classes/PPtr.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 8e57a784..c4e8c4f3 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.1" +__version__ = "1.8.2" from .environment import Environment diff --git a/UnityPy/classes/PPtr.py b/UnityPy/classes/PPtr.py index eaa0b458..cae164a3 100644 --- a/UnityPy/classes/PPtr.py +++ b/UnityPy/classes/PPtr.py @@ -73,7 +73,7 @@ def get_obj(self): print( "for SerializedFiles: env.register_cab(depdency_basename, env.load_file(dependency)" ) - else: + elif self.path_id: print(f"Couldn't find referenced object with path_id {self.path_id}") return self._obj From b1d43cf8da690699b079e666f5d6c0a932949825 Mon Sep 17 00:00:00 2001 From: Parnassius Date: Tue, 22 Mar 2022 13:51:57 +0100 Subject: [PATCH 065/599] 1.8.3 - Remove unused tkinter import (#97) * Remove unused tkinter import This caused UnityPy to crash on import if tkinter was not installed. The import was originally added in 7a45608bfc34bee6c2267a528274fd0c961d6f39 * Update __init__.py Co-authored-by: Rudolf Kolbe --- UnityPy/__init__.py | 2 +- UnityPy/classes/GameObject.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index c4e8c4f3..c4fb2b4a 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.2" +__version__ = "1.8.3" from .environment import Environment diff --git a/UnityPy/classes/GameObject.py b/UnityPy/classes/GameObject.py index c6e1fa9b..a3492170 100644 --- a/UnityPy/classes/GameObject.py +++ b/UnityPy/classes/GameObject.py @@ -1,4 +1,3 @@ -from tkinter.messagebox import NO from .EditorExtension import EditorExtension from .PPtr import PPtr from ..enums import ClassIDType From ee39aee4f5fd6a1317dc5b59d7196c0c4e6f0cb8 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Mar 2022 15:32:37 +0100 Subject: [PATCH 066/599] 1.8.4 - add UnityPyBoost header files to manifest --- MANIFEST.in | 2 +- UnityPy/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index c6bf4863..6066bdd6 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,3 @@ include UnityPy/* - +recursive-include UnityPyBoost *.c *.h recursive-include UnityPy/lib *.dll *.lib *.so *.dylib \ No newline at end of file diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index c4fb2b4a..ecf4b2c1 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.3" +__version__ = "1.8.4" from .environment import Environment From b0ff0f0bab3aca959cb1436eac5179e32b05403a Mon Sep 17 00:00:00 2001 From: squaresmile Date: Wed, 23 Mar 2022 00:16:48 +0700 Subject: [PATCH 067/599] Added 3.10 and arm wheels (#98) --- .github/workflows/python-package.yml | 81 +++++++++++----------------- 1 file changed, 31 insertions(+), 50 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 9f011b52..3f76fbab 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -1,75 +1,56 @@ name: Test and Publish -on: [push, pull_request] - +on: [push, pull_request, workflow_dispatch] jobs: deploy: strategy: fail-fast: false matrix: - os: [ - "ubuntu-latest", - "macOS-latest", - "windows-latest" - ] - python-version: [ - #"3.10", not yet available on ubuntu - "3.9", - "3.8", - "3.7", - #"3.6" not available anymore on macOS - ] - architecture: ["x86", "x64"] - + os: ["ubuntu-latest", "macOS-latest", "windows-latest"] + timeout-minutes: 30 runs-on: ${{ matrix.os }} - name: ${{ matrix.os }} ${{ matrix.architecture }} - ${{ matrix.python-version }} - env: - DEPENDENCIES: lz4 brotli Pillow texture2ddecoder tabulate etcpak + name: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - - name: Set up Python ${{ matrix.python-version }} + - name: Set up Python uses: actions/setup-python@v1 with: - python-version: ${{ matrix.python-version }} - + python-version: '3.10' + - name: Install dependencies run: | - python -m pip install --upgrade pip - pip install --upgrade wheel setuptools twine - pip install pytest ${{ env.DEPENDENCIES }} - - - name: Install module - run: | - pip install . --use-feature=in-tree-build - - - name: Test with pytest - run: | - pytest -v -s - - - name: Build Python wheel - if: success() && runner.os != 'Linux' && github.event_name == 'push' - run: | - python setup.py sdist bdist_wheel + python -m pip install --upgrade pip wheel setuptools + pip install --upgrade twine + + - name: Set up QEMU + if: runner.os == 'Linux' + uses: docker/setup-qemu-action@v1 + with: + platforms: all + + - name: Build wheels + uses: pypa/cibuildwheel@v2.3.1 + env: + CIBW_ARCHS_LINUX: auto aarch64 + CIBW_BEFORE_BUILD: pip install -U lz4 brotli Pillow texture2ddecoder etcpak tabulate + CIBW_BUILD: | + cp37-manylinux_x86_64 cp37-manylinux_i686 cp37-manylinux_aarch64 cp37-win_amd64 cp37-win32 cp37-macosx_x86_64 + cp38-manylinux_x86_64 cp38-manylinux_i686 cp38-manylinux_aarch64 cp38-win_amd64 cp38-win32 cp38-macosx_x86_64 + cp39-manylinux_x86_64 cp39-manylinux_i686 cp39-manylinux_aarch64 cp39-win_amd64 cp39-win32 cp39-macosx_x86_64 + cp310-manylinux_x86_64 cp310-manylinux_i686 cp310-manylinux_aarch64 cp310-win_amd64 cp310-win32 cp310-macosx_x86_64 + CIBW_REPAIR_WHEEL_COMMAND: '' # Disable auditwheel + CIBW_TEST_REQUIRES: pytest + CIBW_TEST_COMMAND: pytest -v -s {package}/tests -# TODO - fix missing PIL components -# - name: Build manylinux Python wheels -# if: success() && runner.os == 'Linux' && github.event_name == 'push' -# uses: RalfG/python-wheels-manylinux-build@v0.3.4-manylinux2010_x86_64 -# with: -# python-versions: 'cp36-cp36m cp37-cp37m cp38-cp38 cp39-cp39' -# system-packages: 'jpeg-devel zlib-devel' -# build-requirements: ${{ env.DEPENDENCIES }} - - name: Publish wheels to PyPI - if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' && runner.os != 'Linux' # TODO - remove != Linux once manylinux is fixed + if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} run: | - twine upload dist/* --skip-existing - + twine upload ./wheelhouse/*.whl --skip-existing From 691e12b995a1f82f562dedc690b7df691d7d4fa8 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Mar 2022 21:54:16 +0100 Subject: [PATCH 068/599] use a seperate worker for each python version (#99) * use a seperate worker for each python version * rename linux wheels to manylinux2014 --- .github/workflows/python-package.yml | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 3f76fbab..9ba2c1fb 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -8,11 +8,12 @@ jobs: fail-fast: false matrix: os: ["ubuntu-latest", "macOS-latest", "windows-latest"] + cp: ["cp37","cp38","cp39","cp310"] timeout-minutes: 30 runs-on: ${{ matrix.os }} - name: ${{ matrix.os }} + name: ${{ matrix.os }} - ${{ matrix.cp }} steps: - uses: actions/checkout@v2 @@ -39,14 +40,23 @@ jobs: CIBW_ARCHS_LINUX: auto aarch64 CIBW_BEFORE_BUILD: pip install -U lz4 brotli Pillow texture2ddecoder etcpak tabulate CIBW_BUILD: | - cp37-manylinux_x86_64 cp37-manylinux_i686 cp37-manylinux_aarch64 cp37-win_amd64 cp37-win32 cp37-macosx_x86_64 - cp38-manylinux_x86_64 cp38-manylinux_i686 cp38-manylinux_aarch64 cp38-win_amd64 cp38-win32 cp38-macosx_x86_64 - cp39-manylinux_x86_64 cp39-manylinux_i686 cp39-manylinux_aarch64 cp39-win_amd64 cp39-win32 cp39-macosx_x86_64 - cp310-manylinux_x86_64 cp310-manylinux_i686 cp310-manylinux_aarch64 cp310-win_amd64 cp310-win32 cp310-macosx_x86_64 + ${{ matrix.cp }}-manylinux_x86_64 ${{ matrix.cp }}-manylinux_i686 ${{ matrix.cp }}-manylinux_aarch64 ${{ matrix.cp }}-win_amd64 ${{ matrix.cp }}-win32 ${{ matrix.cp }}-macosx_x86_64 CIBW_REPAIR_WHEEL_COMMAND: '' # Disable auditwheel CIBW_TEST_REQUIRES: pytest CIBW_TEST_COMMAND: pytest -v -s {package}/tests + - name: Rename Linux wheels to ManyLinux + if: runner.os == 'Linux' + uses: jannekem/run-python-script-action@v1 + with: + script: | + import os + wheeldir = "./wheelhouse" + for f in os.listdir(wheeldir): + fp = os.path.join(wheeldir, f) + print(fp,"->",fp.replace("linux", "manylinux2014")) + os.rename(fp, fp.replace("linux", "manylinux2014")) + - name: Publish wheels to PyPI if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' env: From cab5cafdc99313e8f2c10a2b328a17b92519e8ea Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 30 Mar 2022 21:49:04 +0200 Subject: [PATCH 069/599] 1.8.5 - fix Mesh VertexFormat --- UnityPy/__init__.py | 2 +- UnityPy/classes/Mesh.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index ecf4b2c1..85c0eeb5 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.4" +__version__ = "1.8.5" from .environment import Environment diff --git a/UnityPy/classes/Mesh.py b/UnityPy/classes/Mesh.py index 104fdcb8..c0762e41 100644 --- a/UnityPy/classes/Mesh.py +++ b/UnityPy/classes/Mesh.py @@ -1062,7 +1062,7 @@ class VertexChannelFormat(IntEnum): kChannelFormatUInt32 = 4 -class VertexFormat(IntEnum): +class VertexFormat2017(IntEnum): kVertexFormatFloat = 0 kVertexFormatFloat16 = 1 kVertexFormatColor = 2 @@ -1078,7 +1078,7 @@ class VertexFormat(IntEnum): kVertexFormatSInt32 = 12 -class VertexFormat2017(IntEnum): +class VertexFormat(IntEnum): kVertexFormatFloat = 0 kVertexFormatFloat16 = 1 kVertexFormatUNorm8 = 2 From 70a4d6fcacb94fa1d437d173421a70974f92b4ce Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 8 Apr 2022 12:37:23 +0200 Subject: [PATCH 070/599] GameObject - also assign RectTransform as self.m_Transform --- UnityPy/classes/GameObject.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/classes/GameObject.py b/UnityPy/classes/GameObject.py index a3492170..7517fc40 100644 --- a/UnityPy/classes/GameObject.py +++ b/UnityPy/classes/GameObject.py @@ -37,7 +37,7 @@ def __init__(self, reader): self.m_Animator = component elif component.type == ClassIDType.Animation: self.m_Animation = component - elif component.type == ClassIDType.Transform: + elif component.type in [ClassIDType.Transform, ClassIDType.RectTransform]: self.m_Transform = component elif component.type == ClassIDType.MeshRenderer: self.m_MeshRenderer = component From 341912c9332f95fca0526dba9478ddd724597eb4 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 8 Apr 2022 12:38:17 +0200 Subject: [PATCH 071/599] Mesh - adjust GetFormatSize and fix BytesToIntArray --- UnityPy/classes/Mesh.py | 102 +++++++++++++--------------------------- 1 file changed, 33 insertions(+), 69 deletions(-) diff --git a/UnityPy/classes/Mesh.py b/UnityPy/classes/Mesh.py index c0762e41..3540cd37 100644 --- a/UnityPy/classes/Mesh.py +++ b/UnityPy/classes/Mesh.py @@ -189,7 +189,9 @@ def GetStreams(self): if m_Channel.dimension > 0: chnMask |= 1 << chn # Shift 1UInt << chn stride += m_Channel.dimension * MeshHelper.GetFormatSize( - self.reader.version, m_Channel.format + MeshHelper.ToVertexFormat( + m_Channel.format, self.reader.version + ) ) self.m_Streams[s] = StreamInfo( channelMask=chnMask, @@ -233,7 +235,7 @@ def GetChannels(self): m_Channel.format = 0 # kChannelFormatFloat m_Channel.dimension = 4 offset += m_Channel.dimension * MeshHelper.GetFormatSize( - self.reader.version, m_Channel.format + MeshHelper.ToVertexFormat(m_Channel.format, self.reader.version) ) @@ -537,7 +539,7 @@ def ReadVertexData(self): m_Channel.dimension = 4 componentByteSize = MeshHelper.GetFormatSize( - version, m_Channel.format + MeshHelper.ToVertexFormat(m_Channel.format, self.reader.version) ) swap = self.reader.endian == "<" and componentByteSize > 1 @@ -900,70 +902,28 @@ def GetUV(self, uv: int): class MeshHelper: @staticmethod - def GetFormatSize(version, format: int) -> int: - if version[0] < 2017: - if format == VertexChannelFormat.kChannelFormatFloat: - return 4 - elif format == VertexChannelFormat.kChannelFormatFloat16: - return 2 - elif format == VertexChannelFormat.kChannelFormatColor: # in 4.x is size 4 - return 1 - elif format == VertexChannelFormat.kChannelFormatByte: - return 1 - elif format == VertexChannelFormat.kChannelFormatUInt32: # in 5.x - return 4 - elif version[0] < 2019: - if format == VertexFormat.kVertexFormatFloat: - return 4 - elif format == VertexFormat.kVertexFormatFloat16: - return 2 - elif format == VertexFormat.kVertexFormatColor: - return 1 - elif format == VertexFormat.kVertexFormatUNorm8: - return 1 - elif format == VertexFormat.kVertexFormatSNorm8: - return 1 - elif format == VertexFormat.kVertexFormatUNorm16: - return 2 - elif format == VertexFormat.kVertexFormatSNorm16: - return 2 - elif format == VertexFormat.kVertexFormatUInt8: - return 1 - elif format == VertexFormat.kVertexFormatSInt8: - return 1 - elif format == VertexFormat.kVertexFormatUInt16: - return 2 - elif format == VertexFormat.kVertexFormatSInt16: - return 2 - elif format == VertexFormat.kVertexFormatUInt32: - return 4 - elif format == VertexFormat.kVertexFormatSInt32: - return 4 - else: - if format == VertexFormat2017.kVertexFormatFloat: - return 4 - elif format == VertexFormat2017.kVertexFormatFloat16: - return 2 - elif format == VertexFormat2017.kVertexFormatUNorm8: - return 1 - elif format == VertexFormat2017.kVertexFormatSNorm8: - return 1 - elif format == VertexFormat2017.kVertexFormatUNorm16: - return 2 - elif format == VertexFormat2017.kVertexFormatSNorm16: - return 2 - elif format == VertexFormat2017.kVertexFormatUInt8: - return 1 - elif format == VertexFormat2017.kVertexFormatSInt8: - return 1 - elif format == VertexFormat2017.kVertexFormatUInt16: - return 2 - elif format == VertexFormat2017.kVertexFormatSInt16: - return 2 - elif format == VertexFormat2017.kVertexFormatUInt32: - return 4 - elif format == VertexFormat2017.kVertexFormatSInt32: - return 4 + def GetFormatSize(format: int) -> int: + if format in [ + VertexFormat.kVertexFormatFloat, + VertexFormat.kVertexFormatUInt32, + VertexFormat.kVertexFormatSInt32, + ]: + return 4 + elif format in [ + VertexFormat.kVertexFormatFloat16, + VertexFormat.kVertexFormatUNorm16, + VertexFormat.kVertexFormatSNorm16, + VertexFormat.kVertexFormatUInt16, + VertexFormat.kVertexFormatSInt16, + ]: + return 2 + elif format in [ + VertexFormat.kVertexFormatUNorm8, + VertexFormat.kVertexFormatSNorm8, + VertexFormat.kVertexFormatUInt8, + VertexFormat.kVertexFormatSInt8, + ]: + return 1 raise ValueError(format) @staticmethod @@ -1001,9 +961,13 @@ def BytesToIntArray(inputBytes, size): if size == 1: return [x for x in inputBytes] elif size == 2: - return [x for x in struct.unpack(">h" * (len(inputBytes) // 2), inputBytes)] + return [ + x for x in struct.unpack(f">{'h'*(len(inputBytes)//2)}", inputBytes) + ] elif size == 4: - return [x for x in struct.unpack(">i" * (len(inputBytes) // 4), inputBytes)] + return [ + x for x in struct.unpack(f">{'i'*(len(inputBytes)//4)}", inputBytes) + ] @staticmethod def ToVertexFormat(format: int, version: List[int]) -> "VertexFormat": From 8272418cf17dc1ae96d9d456ea663cad4ba35cf1 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 8 Apr 2022 12:38:27 +0200 Subject: [PATCH 072/599] bump version to 1.8.6 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 85c0eeb5..549e9d05 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.5" +__version__ = "1.8.6" from .environment import Environment From d7ec347fabd19d1439ee52cafbd4eea3dfba1a52 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 9 Apr 2022 21:59:49 +0200 Subject: [PATCH 073/599] Include Source in pypi dist (#102) --- .github/workflows/python-package.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 9ba2c1fb..4fe350a1 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -57,10 +57,12 @@ jobs: print(fp,"->",fp.replace("linux", "manylinux2014")) os.rename(fp, fp.replace("linux", "manylinux2014")) - - name: Publish wheels to PyPI + - name: Publish to PyPI if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} run: | twine upload ./wheelhouse/*.whl --skip-existing + twine upload ./dist/*.tar.gz --skip-existing + From 2fab4c68060eb201ddab0f19a5ff34d7ba65c959 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 9 Apr 2022 22:08:09 +0200 Subject: [PATCH 074/599] Update python-package.yml --- .github/workflows/python-package.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 4fe350a1..e82f1c7e 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -64,5 +64,6 @@ jobs: TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} run: | twine upload ./wheelhouse/*.whl --skip-existing + python setup.py sdist twine upload ./dist/*.tar.gz --skip-existing From 9151ba831520bcbe146f9c2308c75b1ba8fd11b3 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 9 Apr 2022 22:13:52 +0200 Subject: [PATCH 075/599] Update python-package.yml --- .github/workflows/python-package.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index e82f1c7e..09516871 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -27,6 +27,7 @@ jobs: run: | python -m pip install --upgrade pip wheel setuptools pip install --upgrade twine + pip install -U lz4 brotli Pillow texture2ddecoder etcpak tabulate - name: Set up QEMU if: runner.os == 'Linux' From a0920eb048c9aeefdc93ffd34373d0d08ee1426d Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 12 Apr 2022 14:42:26 +0200 Subject: [PATCH 076/599] 1.8.7 - fix MeshRendererExporter --- UnityPy/__init__.py | 2 +- UnityPy/classes/MeshFilter.py | 2 +- UnityPy/export/MeshRendererExporter.py | 12 +++++++----- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 549e9d05..a2c2580f 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.6" +__version__ = "1.8.7" from .environment import Environment diff --git a/UnityPy/classes/MeshFilter.py b/UnityPy/classes/MeshFilter.py index ea66311e..0a2da5e1 100644 --- a/UnityPy/classes/MeshFilter.py +++ b/UnityPy/classes/MeshFilter.py @@ -5,4 +5,4 @@ class MeshFilter(Component): def __init__(self, reader): super().__init__(reader=reader) - self.Mesh = PPtr(reader) + self.m_Mesh = PPtr(reader) diff --git a/UnityPy/export/MeshRendererExporter.py b/UnityPy/export/MeshRendererExporter.py index c7be4027..b568c92f 100644 --- a/UnityPy/export/MeshRendererExporter.py +++ b/UnityPy/export/MeshRendererExporter.py @@ -11,7 +11,9 @@ def get_mesh(meshR: Renderer): else: m_GameObject = meshR.m_GameObject.read() if m_GameObject.m_MeshFilter: - return m_GameObject.m_MeshFilter.read().m_Mesh.read() + filter = m_GameObject.m_MeshFilter.read() + if filter.m_Mesh: + return filter.m_Mesh.read() return None @@ -40,13 +42,13 @@ def export_mesh_renderer(obj: Renderer, export_dir: str) -> None: material_names.append(None) continue materials.append(export_material(mat)) - material_names.append(mat.m_Name) + material_names.append(mat.name) # save material textures for key, texEnv in mat.m_SavedProperties.m_TexEnvs.items(): if not texEnv.m_Texture: continue tex = texEnv.m_Texture.read() - texName = f"{tex.m_Name if tex.m_Name else key}.png" + texName = f"{tex.name if tex.name else key}.png" tex.read().image.save(os.path.join(export_dir, texName)) # save .obj @@ -83,7 +85,7 @@ def clt(color): # color to tuple transparency = floats.get("_Transparency", 0.0) sb = [] - sb.append(f"newmtl {mat.m_Name}") + sb.append(f"newmtl {mat.name}") # Ka r g b # defines the ambient color of the material to be (r,g,b). The default is (0.2,0.2,0.2); sb.append(f"Ka {ambient[0]:.4f} {ambient[1]:.4f} {ambient[2]:.4f}") @@ -111,7 +113,7 @@ def clt(color): # color to tuple if not texEnv.m_Texture: continue tex = texEnv.m_Texture.read() - texName = f"{tex.m_Name if tex.m_Name else key}.png" + texName = f"{tex.name if tex.name else key}.png" if key == "_MainTex": sb.append(f"map_Kd {texName}") elif key == "_BumpMap": From c32b82dd9f3119ab354766f3c82cfc0753dbfc68 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 13 Apr 2022 13:53:48 +0200 Subject: [PATCH 077/599] Mesh - ChannelInfo.dimension fix --- UnityPy/classes/Mesh.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/classes/Mesh.py b/UnityPy/classes/Mesh.py index 3540cd37..1985bdd6 100644 --- a/UnityPy/classes/Mesh.py +++ b/UnityPy/classes/Mesh.py @@ -107,7 +107,7 @@ def __init__(self, reader): self.stream = reader.read_byte() self.offset = reader.read_byte() self.format = reader.read_byte() - self.dimension = reader.read_byte() + self.dimension = reader.read_byte() & 0xF def save(self, writer): writer.write_byte(self.stream) From b97390b1463c50664d8053bffacd66e24b23b6af Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 13 Apr 2022 13:54:10 +0200 Subject: [PATCH 078/599] MeshRendererExporter - check if mat index is negative --- UnityPy/export/MeshRendererExporter.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/UnityPy/export/MeshRendererExporter.py b/UnityPy/export/MeshRendererExporter.py index b568c92f..83fe11db 100644 --- a/UnityPy/export/MeshRendererExporter.py +++ b/UnityPy/export/MeshRendererExporter.py @@ -33,12 +33,13 @@ def export_mesh_renderer(obj: Renderer, export_dir: str) -> None: materials = [] material_names = [] for i, submesh in enumerate(mesh.m_SubMeshes): - mat = None - if i - firstSubMesh < len(meshR.m_Materials): - matPtr = meshR.m_Materials[i - firstSubMesh] - if matPtr: - mat = matPtr.read() - if not mat: + mat_index = i - firstSubMesh + if mat_index < 0 or mat_index >= len(meshR.m_Materials): + continue + matPtr = meshR.m_Materials[i - firstSubMesh] + if matPtr: + mat = matPtr.read() + else: material_names.append(None) continue materials.append(export_material(mat)) From c00b8e78514a28d55aa36c39b56558252fbcf66d Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 13 Apr 2022 13:54:32 +0200 Subject: [PATCH 079/599] bump version to 1.8.8 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index a2c2580f..49e07f2e 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.7" +__version__ = "1.8.8" from .environment import Environment From 7b7a26ccf14b638681304086594d91887e96352d Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 22 Apr 2022 10:03:34 +0200 Subject: [PATCH 080/599] improve zip loader --- UnityPy/environment.py | 69 ++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 40 deletions(-) diff --git a/UnityPy/environment.py b/UnityPy/environment.py index 49868a6c..bdb0ca47 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -10,7 +10,7 @@ from .streams import EndianBinaryReader from .files import SerializedFile -reSplitFile = re.compile(r"^(.+)\.split(\d+)$") +reSplit = re.compile(r"(.+/(\w+?\.split))\d+") class Environment: @@ -42,7 +42,7 @@ def __init__(self, *args): if len(self.files) == 1: self.file = list(self.files.values())[0] - + if self.path == "": self.path = os.getcwd() @@ -137,44 +137,33 @@ def load_zip_file(self, value): buffer = value z = ZipFile(buffer) - splits = [] - for path in z.namelist(): - splitMatch = reSplitFile.match(path) - if reSplitFile.match(path): - name = splitMatch[1] - if name not in splits: - splits[name] = [] - continue - - stream = z.open(path) - if stream._orig_file_size == 0: - continue - *path, name = path.split("/") - cur = self - for d in path: - if d not in cur.files: - cur.files[d] = files.File(self) - cur = cur.files[d] - cur.files[name] = self.load_file(stream, cur) - - # merge splits - for basepath in splits: - # merge data - data = io.BytesIO() - for i in range(0, 999): - item = f"{basepath}.split{i}" - if item in z.namelist(): - with z.open(item) as f: - data.write(f.read()) - elif i: - break - *path, name = basepath.split("/") - cur = self - for d in path: - if d not in cur.files: - cur.files[d] = files.File(self) - cur = cur.files[d] - cur.files[name] = self.load_file(data, cur) + split_files = [] + namelist = z.namelist() + for path in namelist: + splitMatch = reSplit.match(path) + if splitMatch: + data = [] + basepath, basename = splitMatch.groups() + + if basepath in split_files: + continue + + split_files.append(basepath) + data = [] + for i in range(0, 999): + item = f"{basepath}.split{i}" + if item in namelist: + with z.open(item) as f: + data.append(f.read()) + elif i: + break + data = b"".join(data) + + self.files[basepath] = self.cabs[basename] = self.load_file(data, self) + else: + self.files[path] = self.cabs[os.path.basename(path)] = self.load_file( + z.open(path).read(), self + ) z.close() From 0fee97595dd0dad31d4fdf975ca08e420852907c Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 22 Apr 2022 10:40:14 +0200 Subject: [PATCH 081/599] improve folder splitfile handling --- 001_2018_dog | Bin 0 -> 659671 bytes UnityPy/environment.py | 81 ++++++++++++++++++++++------------------- demo.res | Bin 0 -> 930128 bytes 3 files changed, 44 insertions(+), 37 deletions(-) create mode 100644 001_2018_dog create mode 100644 demo.res diff --git a/001_2018_dog b/001_2018_dog new file mode 100644 index 0000000000000000000000000000000000000000..639e45d3c395e6193fa8f20ef92a4c87c9133673 GIT binary patch literal 659671 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 z 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 Syd2_=eu0YnE#i}U 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�CH7um`zOgcJGt(=D^QdFCfCmHPv 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 z z{@(zirsO=Fwnq&gnDD;cw($4u=Bq}{i^eeFUT$aOtI%+F&DY^jvM3XTGOB*03j;q@ z6O}x60U}lS=G5Z1;E8d#bQsg<$9-1*|FX@#3+|T>_$tEGF>Z@+rEiTHzUuN{^Y*U$ zrhypND*YI8lpZhm`J0FWBR`hqhh*Rdm{o<_(3`b8{~W4pbm_T5eK6qA{pgBU@v1R` z5JV$mMq(C)&z4}PalJ21eSm%U4ozg?4+kyAwJ+7Ct8)_CsvTzO9v2H|tx{9-7r3vF zJ@iGzM;{a%D5fsldptRsfc>*HU|80^E#^jz{G+&0%sBY}s4Pl`$5L*hL$Dk@YP219 z^c;s=8OBM|QSqLAI^aN_XVAo=2OOg9$2Mthe6p|cr`p$L&7JD_qcw3;h01cWp^$#T z#TgW~WP?FWMw`1p{o7U*CT@D6`C~kN#X%}Qq09Flm$4=mc81W%1&`VeZVEsHuf3o(;XA7DoZD!CvN;Pr2|Rq&a?aI2uFiL4enfVp$x2`9fM53k(d!5Dk@X%xErg31@9_e^ z!LYUw`7O;DdT@F;l=T&jQKXQa-r|3tc6bxUi^8M9b3<_nel; z9bhH#QdivZ7b@MzmoTvrk9#}lBp*Y6HljyRnv~7{45-wFxzFP0B6^q%aD6d*UqOp5 zWAJ{*NUF<(E@{`I-!Q7!Q-zhKJB<7~QBO7xX-`_WtoOsDq#C7qnXvV&Hcg;oCMu|t zbmecXnb(LC3=;)C%kTo0LUe&Ev zUz#2M!L!WI!aavvH_|G`l>rZP7_T7PU@AO+)X#v5h0;6RRfp!RxEK-@oVaWJQQJZt z7?wiTK|%-oo3)z|j7sbbG|8!fMb~uLe#p&*@iq)iW;D?OShWUSssgE{f#=?ak%XSJpdE!zUr5 zhzu|YHBEK_woN3yBs+IvRb_9sG0n6SwATZQ>kG-kFjVYe?%Im;5naHr@|_yID|!Oq zU7j|4ZW(FAc>(bN1fodBXnTbXkMR8#Q|16VV3DN1Zpn1LZn$F`HEa~kTZ<6?a=^`9 zun`z=`HAQMO9N)|NA-TK5!p+&T~H`L`ietJfx(h4S_>TX0noSVyPyMgi}j3 zu_PfDzf#5I)Y1)qqs^(JV-p+HY>SG9u5@ExX+t&L=tP4Xo4DbM8=dhdTDIZFHe7IH z8~uJ+`Ms}0>$YECuO=Zmf1dlgulu^MKcDM!`TN7mWr-J8F6_b@VUzSS3fu6kS-BzC zIOUMDj_o;Bq`NxZrLxG(QQH%rbE=-qpH0|Bj(D-!W-C;=Ti0fn{`@hzE9vr)%Y{>Q za}ITO9>Lx$_mT45mW<9y=qPgi4u?H(Qtl_QNsOKm!| zYTc&XEt~4FDQ=T~@n=u`*Q$hOq&E!dCq(2}pA~z+3B9h6=+ZY^ZgUGJxC(+?wVr>AF2_4Si>VD!5(_nC}3*(yHkR%93{ z`G#G~{9<7XEldfI@40Og;PqjIvWvsudL`NXmUq4`ewWzI-G(u`!joB_2$ZhtZp0=t93eVG`6Zqb(3?>7U)5yGBwXK#& zf9V*Xu&4RN-ng@R?ssJ)h@TiPUhNGZEa*6En|>12oi0cP)7#?>oJ9@3#xe@Vn}PP0 zHGE|Ry8{In?A)Lo))SAqQ`aQWMAdQE2iODp+yM)iWHh?C5Aix z;%osL|9x-YkA%HcOxw~+eR8WFW>mS2D!tW?|A-0CmaH25&J;=1abLA2A8T%q_8om`doJv zO(BAobMt)>LDhF-n9ehGe8Ouw*5 z_FLVLKLKctQ$rCA!<=gO7H_Z%mjzL`DzVMRPF3RSO9yTHy8MW(@V7^+QhNPy7CON! zXKchx0Phi0Iieu37CdTJ(6=-!!2!`-{>t~(ERKKmcfW<}#+hT$JxWhpP(X?%JOHhv#{@VRI=cIq*5Qv=1}>}hc?^- zsv(yWbMD!|%VGm^HfwM0)YRwnr}?#KpMDD}W>X5>xZKHlgqu(`kbtdo&gA+g1QZHB z+NdO%#r`)kssG{#VD^pN?0;|>YL&~(9?WHCbJ`cq!3#fT#}t#?m01@wUIUkkZkkoGOQrpV~ z$C-vOK*-CIA{EZ~3j*DJUCBj%Rc&s+Yf@n`hQabaU~)0nq)G`AkT+$o$nRujU;doDcf+wBI1oY;xR7Z&DSmned{cSZ3u>^2CPjgJLdj4Vbi1H<$HIQayE^fB=(R8_20f zNwqgh_y(SfGZb&$cy{<6G#3;5rf^1dmE0e|wUdV=Sv=>2mmEG<^@b?(KsdnZg8{?( z4Y|bohj|ySg&!@DHfWy{5z}3wsIrwWo2J5Jl1*PCWL4i%%gS9Lk4bx#_kEtkE-EJ_ z>C#3DCQekErTn6A*wLadv6{#v7jg(QEQ5Kt9-bE-Lb1Et+^%|zl==o%Wl^$0;!{?L znLY68cfYkJY0-vPr@p3qfgGnKMZaLp2x)hV$$`l@*)0R z;5xF~kSp#hmW7E7a<>i0+fPRNynSFcag=yC(2@vqjVV84{PwIg(=Xz1T7}A;ogd4-}Yvj`oaYJlHqyj?`ivumC)9K`M zTsAfJ`{pp9k3cQ%ww(ogP!-i#;I_MRs(M7Ea+$|{+=?SjyT-~BO!m5j*2H{)}oWN-JqI@o`nmnqy16`y+JJ z(e~kzPHYfp7~~sxwlu8efXOF0^0y=QH{m-J6RIMjbz^<)FmqWhcHDLH|=P{`&7>u;S{sRLj~ zWFKLCaI?^4BAhL%C&rLDi15jsv0+7^&5?>5A8ceId25l=UF0p+A`nrWe^iw&9u`B{neAq` z@BGR~J5Q^oyJ#w=+g*)anvr5&ZepNT z(9`(aHpLi)p2|?i9SlW=LOhm;aaA6v`xgY}k2+pVL{%$`+pQ+7>gK{o${*UBR9gW2 z8hf#y{`@wVQ?v8c=@wVd*Q>#UDd8R-txpNF@T_avG2T>Fl-?I;$y4u%n#H?#t6eYq zjy+!HaI_?96{baGE6oIpp*$7m5~(qx2~Gh|$wTotv{$p)GLi+M7U|BwET8kn&&iWl zF>{(1HA-QQXtK4O&w4En>(hG*6@+1uOrM%|9TSiT>l8@t{P`TvBSyiKPfmOi3Rhm3 z@4A5`vnsrMk$Gg`m~sP^lIkqT$f|GtF9ssPE!S@GU%>W1#-Y1uQYT#Z5) z2JJwTVoZ1+?83wcg>EW^;BZ&SwhKL=UH6`n5?3piUkZ=s9KlHK7x9z?VGg?*idwkz z&g#tnBL9HaPbADtjYoo(M{Nnr^f{i4j<=NRW3I_LJLo-xD8Fuc-`6OKegajhX(U75 zj1X_Py=O}c2Oj4_g)|uAV=tcJdEcXQEi`$y?u?X2Z;H`?GH+|1{v0K7q#2V=#sM}h zc~V2E&7sYKunX5~@;OlG*NP1#Xe;RYFFBGb4GN{a!#T-a2+OXUQC%NYeY;^|#GBKL zjGj%XcG3tzsQZJ=x7{ZaaiQShAT8{!{j;+tBs2Vg>4=-oxYt(C_2qU~nc*hDu(fbv zEL{*1Ya+>U{EWMF$%o)=@(e@g2EOL4pUa)|)U$fY_eMmEu2Ip7s^PG@4tYnIA++AC z_2y2aP!?VY6oYkW{<)8TJ7)*Be~{H-pYx zO8_}A+^v5O-jRwoebKjwImLKLbdIZ-%cn}QD!8Hgcc@BhdYV-VqT2+VD{A-`RApdB z?+T|<{sTQ&xgDW&Jz6YhZq$06RiVZ~K4qJx!q7sP*W^yuE0kF=ik4_TrMly4QQSLD zpJ=6Z(?YgG8jpm2(Wj(X(O7Tcj=a@#dtubB0Leg;-}w0`H?(Hh%JMmP zF>IE@no`El*3j}fm@w9A9;S@(O+AS$cd6nK{_2JoovKDcK&cSu>wQ9G>V28q7CC+a z{o$ItpEP`A{Bd{TJX^ROp?dOqIpf;j8Xl&E9GnCI!CSoCCIKr%?w4L~8oAw8`EN(` zz@BmZK$_#^%KFyNaj?mFw%t%cfn+4=3UGCuRhvJ8PX~gCNh?Xtz1ujbfmpV+dW}7N zX_21j)b+ld?uqHuem$6S*V0na_A|flwpJ@D#w(nW)YB0dMgQ)VL8P4JOF!*^Zh+Hk zt@#!hgrpU2xrV{+VQ31IZz^0muNT4^fuVh3vBU1d6>iw~S(W``4w{-J&B(7xO-m49 zb=zy4I%n9k*;Cch8>;kJCi9r&`&{IW?U zp;gC8Hm1s4s&NB+Md`XjX|_pxFdbJDaXZ~lFz8FFC=2&KB_-~N;P-8+8ld|@g6w*qyx6ml?5#Ht~HDndET_ca`8#H6@=!$akI|&fr$zGP*_@|$&a7SbQeQ=h-t#>9g*lfCn+?hKyZNbnDttA|d(yZGj#9R?@6+eU6o;Ero zS?4jTW2skZs8XYz?LD>?;V?AstaNhj0kQZly7Kc$S|^`Ja&L;Z!L=r0No-1_ka{K( zxgSfgS+T7x9G5$jKB1dzB{fKC!{N9VqD$m1`R~Vkb*Z^{m%X&Rs4zX|pY3ku%^KID zivN8oD!l%tT~lA1Z*oi8%b z%XaAotcW$L_wLBZHE$8?tIAxHa;NTe7j99Jh!b=U1u6pw?dBTpA5dZxS))b-o8H;BUr%d{U+$?Ir zQ$unka0{_Q#yJxaD*x6Pa8Q*lSZ_8t$;-+&4#v_$ValMb=gdM4`C4)Uk@kt|sjrcx z0L((NBJZk8CWX=r^??DsZ?`RJ*sijkZ9n)$yLt^t%t9l?RF0vTH{{rXCq9N6>{6Mn zs^?C#$Y>IKn_D&H&OYK!+==?Y#HYHc?p?FlgHH&)N^^N7QGhFIkuI9aSGjx?ReR@r@V$E~k2U8BTHQ8QR? z7yGwGS~>F1I)n9MCF5cxzwB1vUR_|rE@K`!$jML3@m#vGTeT(jKYgw}18k@EP0Sj8+gpQAJf7OtK4=5Me=JCQ~aw>4(H;i-%N1Wb>|Be4ZL?7p%i&QO_Z zqGxZ2C)_QBa34lo(udR-W-Hb%n~oy$}`d_wgqSUq@`y8dAJ%YGOB^bGtL?lBP#~68v%CMff;SRjQ z5hyq5N6h#mNW;5+XJ~FKDNkp$Aza_Zz3~Lk$3w5Y$oWSI|7Ip0cgUL37}s@{x{^U4 zPzT%ICndAC&7&2;q>q`3SEPza*w?~lPyHE)d3F3Kd{3o!F`*lgyB%36aQ-w1yYt2+sv};*HsPT!L%#zEQ zM-gm*1J-fyH>eY@H?xI$eJY5rz& z)7?~BU5)czphNXc3Ux@$m9PNzM<{HY>iK9_kJbo>_;j;}bQUK_PO6CNSO8e8GUTFOk<0Z{IWeTZfYz6b zY*w3pQ;!`27C<2U8F%K2nX$Iz!I-U>WB~8ocJ_}VcIHlIv~IPF7e3B2mZqe}2#ug* zg4182?6lcX`eRa34p_cy^-U;&;4E_J9_4S31uJ|nUFHpPjnO2~OxQ~{L=d?QPj^%K z9+!!m?WCEAbieBksF^QuU6RWpXu*iD+b2}(d@{!xjbQ4)c zQX> zPHe_g7{j7BGu)}k6Y$i(b_552jF2rJ0?{n}P^3;P#*TUd{IItcGR9%` zrAX@&Oe98Ka_awX9Us7Jg9;G6hh{>N`2;aS`tHKU`(P*`fHH*h(jT+(h=x3fwsJwM6|Y>8 zqmMTz?JU_Jo247!0rK?>qFlE-RDYT6dGbw?=}3~!9&*g3YecGPt_6N``M86uk7JlF zrBH*WJEJtzl^u3QPlYGSTxkSn^~GspD`rdV%9TdDc%{Owyt3V_U6B;u=B-CJCl>)X zT0E{Q;t0ZP>Ex*Ao0$t{rrBM&Au=#06AB7qWI%dA2VW3pzERQx9E8t`0*s};Wk#N| zvoUJp&Fbn$?efkdJ=N^4f5t7|N=`#9HM?UQrd6u_5r&Go2%+`ZvrU3Pm2`D#+<%78 zBzQ*>E0=$?nR&3Cj9MQ!h!mh8z^0{&%v>9e(h)U)q6T`j+Vl@0iwdvjjO{D0<&U?K zqRG+Q21lYg6YiiPp2Q39_1_FpiC2mBSZK9NuUH_P2-$#7afY{q*PES|HwswvK@Pkh zC^G+CWCr3iGD;n6<)w&iOyTDQ<+kd|E}J>^SWXR+7jo-w`%OJOz&KxS(OVhDsoG9^ zt9N*V8&GLP>+bg2o`wO>oqdTgg9_A+U$_8d{q`J&`96iTD5WHny%rz+y&h!2O=eS~al8>pNuoYnx*OXE+lf9Krit zH>oMh0aBCExyBEby_mUSM{X3`#T(4My>SyOEXXlhAlh>0_`OzTqCi6MF za=}scTT$tVyYgPw{H5!Lb&50=7SYE~3e8_pb9eF__o#u(e5J!D;O3uDe%4gZVIP0j zF_}6cDGTWLdKnKSrx`U;Ahf-YN4>6Nyz7|Bb$cGo#n>;s!>X~pTo5}Kh*^As4fnVW4*heLZu$9LMF#Qzy!sOgp$J&)Q#F0@wukb~sh}>}H zpr<4wl7aP~Emf7JYCbM!qwXAXx!}_2zJB_EYruov@CL8gRME|Ll=kVdR4s}}7WF=o zkw_%!R#2Eo8>Waa*N|8+7yp)n7sLJ3^H(sFha|DJWT!sT*>>~b2hV)&^Y1^M%AJvh zfBfF84&H--`&|~U0a?34-#4r0@>b6S^AdO9CYMZ<1k>HsTjl5dnk(UO?Ge&?InOV% zQ_fT0!{n|H?RK+=aKl=nqi6Hmo<~O1+5!_LA;@h^76&P5^%fU{N+uT(Z6oputzMQW zi_du7hKN1)+m=FN5Dr{)MZm8S=6$zz48?k?4NfD^RGR$P0?ZSlPM zSw8y**mgUb&X&!sT!3M^Kct33g({tV}du1D&S9H;M^cthdxOFVHxl1e5O)>Qsf zaMUXnmjb@>6&`IHWjB7?n)qDrQ<&J5IEQJ696RP|+phA6h%d+*PLrl-NwQqIM#4(3 zRTc25J8_p_oaAgCR9rr6;9y8=7;yzR2tSwCyRc ziZ+F8=TDF3n?O(A!8asmo8q)>lbjc5L9b0kexk& z7A}=+{vkzZtD0qKrNB_@3FIltVy`+0#g)n`ikmd8IAcMW>fD5X4-g}-Qg)`59lZUy z$J(oDT67WkJlqXr#A_l|5AOQ@tV)`}8{~6%P7tJFReZNQvyroAB_X%%GpZs4nIv%a z1_qxN54=aaY368SEwN>vV^A|kSDtz)u*)y~mF@mfVd8gG+f6t>ur9RiO&1F`Dzyoa z%1R62W)JFx*T7I=n0V`E z-7}`bRBUIcA~A7@2XVZ1^4;p~d!ZfdR=UT@(Hs5`{=$z+r|c#g>%G_B&JR!`{#Tc5 zG6&Wn3y*cxFOl_E9mP4|6y6x8hY$Wb z@EySkZX%~@!BNFkEjU5~YhXMTIaE(vsZO<_Wmc*{p#%m-WqcF(Rdzu-ZG|P#p|C&^ z7?MXiZiO?EGtN`Au+ePN$NJ}X2|S3FcM-*=VjBIIYBGp80z+Ca!mh0JnDjfB*` zuoTD|!{A}{;V_eF(HkBsx_Qo2my-f!b@r;{$py>Q?%vLs+)o1Nb>lP*5rqTdNA){> zV$bE$t5b5*jp=thEN&vOGhQp8GhaU@s5oG9gjbWY-;bt1t8E+(2@cJutiX@Ogz;UJ z7d!L*M7eHcEauF_OvW>vo@w`@X>U8p(uQ0D%`1S41~;*ftb-RJvDfQG!+p}Y49g^F z4{YBFu@hY}(s1~`*tKoWfDbiH^%Sfme>m>ay|Flb52(J$^==%qjltcle9x*G#1SeMfsjwQJWM+`D{NMpO63| zcWF9-SM&LyA@6Oq;7s`}u6$GjCy@7)Z2FPh;W3b2xQg9HyG%<6%$l7KopF21d5yE# z%HmrouCmuS3X3)nUvtG4QpK*k_IADpL|*PWowdY1(2M~`PTrieVEyc}8p0!le#xp) zSFgInrQD7@BgKV9!JYx;C133ZV2(OsG=i7EJcA?DK}n=gH5EE_o?VDl*aho_k9)-R z3ZV3er^Y;$m2wRK;0RF8CzqjK3(Gz_ni|l0AYi>p@Optd4!0UPAJ0n#ya+^(9%ItkHke`jMuC-%-OS&q$(wOc_NcBh{;5>6 zm+|mn@kUb0PL&;1D`f8dtn?uYGK#oVu1a4jyrN5!eo9hg{4nney+eB*ltnSTEHx3c zUDctQ;m5R(QvzHHAISEWy%`^ogu6o#LkOQ(NT$^3Bw7xfF0|P%%B;AiDn_Q250B~g93ISk!V8^wiNvM7^dmaF;8jbnyw>TyhCAQ;H{fH~4Ec>jJG4G^mZliWjl zP&hKOGk<0aU=s*A0ri>st-6Fna8S^g6q{b*!BP{3#l>3#W@+C|n^w780i18bniEaZ z*+H5B9J}#bp&Z7N#MdcQ5X4sSNUjDs z1uL0qi_z1@uSk_0#~I&7F2)KRY4fc3eqoz~T)j*YUbo~oypCGCaK{65ywQjZvwo6^ zlzy%>kLN<4Qz-H7HM?E71+W#7o}J;P8g||p4q;d1Fi}!ZT}%R|&A1#5bKNzAt`RTX z&#Mw|GY`xMo+(lCZQq~mf=rob+e3sS-2clojf~fz3mijthL$}08jE3;cfgcj-?Sw~ zwK*@dgs-#|IyM=U?V9_ekv;PF-N0j&S*-D9?vVaJG{it~u#6iB(W1p=sU>1U6)uX@ zKO$!W)U%s9xtW&9B}hj>2KdC_XwqZ&-A=CzhZhJo5^l}=gK*^mV5LYs7pM5!rLU7P zsOJ~~e$8&O#U~@JN5gFgB#Y{%`H(ovOh`o$R6${-Ye zo`T}Gwos*@#p#*>xpTFi@5uF}#OV5)rkkgpm>hqx4W{rMU&5t53Ow=H9&@!puJ`G< znXb{t589yyN-X|swk{YKsGa|wGH07n~br)(JNhKE?|23|>NhkX-GuM$UuS4xwm z({o4uaue#_ z7zVdfEToR6`>XXD&G8BA#@-p$N!6<&nWN$UAj(#{$&yWLE?JUdKPL7rXFzgk*WyT~ zEX)qAy!FH3^)jr^rc<5UgxoQ>jcXMz49^P0va^~9FDhrzCpZYN_)*e|uZMW07V@oB z_C5EN4ewCL3saAuxbI`_J4ECN5QAJn6(ES%i)t6Zp}EA3CO%)$l~E_VR<1u>^=*37)QDL6#mS?3h_;Q&r|%i>#Z$1Q|9!mFdc;PtTjOi zx_%QlhnR)#sqCJdwu>8}4Kdq5nO%G5!<$le$nCK-yi9;Hn2mb>W2+xzsn_Tji1uiBJu?Z}7UKbiwLb7<1aVQ_tUVF_6X-+v&8sgWve zV(wfg*Eyv`G%M=rnC%#FbaAO#QbK|Vy^dV{%QcW5C$GB-;2q&&TS!bu$2*O>o1bHz zxw!z&+hTyn{{C-1*^Ya*aA7YmsmK>ZWn2h;$zdw>_?;zbN&K`D-=07|=sfb{nR5$)wVq zU6|8sQ6i^h3kZET`(9j5PF^l+@$2;Mxg!E)QpMG1Q*p%kolhM&x56|Bv0vIkmm#~B-=h+zzkNfkqC{8J()gf#E!y1-kh;?KGz zODi$95!K%-RYuKSsDgjzxI{S|YA9ruKI~3jz*xwR!$hpFf0V5}gqO$RQXT9MOxM4a z2gY(C;l;yVtHTXS_c$E@^7TPLn}g_sn|hG9KPJ5)UHCCR*+4EmZoB7!!x>yTUXy*i zRFra4iWT&^#5n%l=M-`3z~k?8y1jgZ7w+R!deFBU%0sye?A92I?Iv9hS0A6%{;(P% zLtFNQ(HGEJUKf$ql~6I1wi|`R!5oa{yv5VBnDZ!3=NsMC8+#-)r8aRD7(OX#APsV6 z->iCfDz`~YxN zXcKcG1gNpiL%h=?1O;-5dtlu5Gi(T0^^ZHr8oUYrCF}-dSKN`(bV3&*=UCV$i`Y1T zU*t$$S3lbGr~VZ0A|>3F$=yH`c-3u?aVUl)h)Y&EwwFC{mnY=rXgaDEYIOS^JKF#h zB-q%<4Gz@mF3D+(A*PUB+*#xHXP6GW42 zGTA9g8##5_#U{d-+8_~_fC)9Fx#CxJQ;irvoTgkPT<*1q`0~xvEAmMT&2ku}*@8xM z>vVk~S42>Eh?7^+R_nsWgRescg@V1POw-p@+hZDGTsqHl-HU_0@i+Y8sG1Dv=}EQk zs|Mq49 zxp&y$-JcJWyl=gSU!A@^b+wnw}FT1_7a2U#AMxj+G|X*76Oq2*oF z4?2pB?I=IX3oG1~=G=+ONkN?VNVMhNFsFV#yo(VQZ@+a}Wxg-a~^J{Ysqz-c{%GgJeXqfqyKQ$q3zKcb6k zRYps5G_qtc-R9o2g+#~?fkg|kX8tvIC&C@^lyNV_rX+h+i~`)mvMbrLEoE01ueh0O zUf-YFF7KBjH2e2aF$w6u(6cGv>N)83iiN}D1~qds$hPfJhaGTgO-Y*`Pg*~a&iB1I z0nzBfdCJLl_DXKuZ!rj)hp!O$$q}fr)KC@g@p9hEZWO?qo?x1YA_%~=;1|jfc*bPM zbY@7CY{Tg#b`!(N%*d7Iy<{etc&6+A$W{an78sY7$qjDG1G6A{l|8DoRLQroA@{TE z#vRZT>_YHNWTgrOAvq7PzKnkqC{w`lcTxk7<#WNW4gQ+07zoeDB9|PR3R#k5k?Kk9 z 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

D7r#(ohc=j86$|*eCxw;HFqzh45!`kB;wT-P5 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 literal 0 HcmV?d00001 diff --git a/UnityPy/environment.py b/UnityPy/environment.py index bdb0ca47..06c19ac6 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -10,7 +10,7 @@ from .streams import EndianBinaryReader from .files import SerializedFile -reSplit = re.compile(r"(.+/(\w+?\.split))\d+") +reSplit = re.compile(r"(.+[/\\](\w+?\.split))\d+") class Environment: @@ -50,33 +50,32 @@ def load_files(self, files: list): """Loads all files (list) into the AssetsManager and merges .split files for common usage.""" # filter split files i = 0 - splits = [] - while i < len(files): - path = files[i] - splitMatch = reSplitFile.match(path) - if reSplitFile.match(path): - name = splitMatch[1] - if name not in splits: - splits.append(name) - files.remove(path) + split_files = [] + for path in files: + splitMatch = reSplit.match(path) + if splitMatch: + data = [] + basepath, basename = splitMatch.groups() + + if basepath in split_files: + continue + + split_files.append(basepath) + data = [] + for i in range(0, 999): + item = f"{basepath}.split{i}" + if item in files: + with open(item, "rb") as f: + data.append(f.read()) + elif i: + break + data = b"".join(data) + + self.files[basepath] = self.load_file(data, self, basename) else: - i += 1 - - # merge splits - for basepath in splits: - # merge data - data = io.BytesIO() - for i in range(0, 999): - item = f"{basepath}.split{i}" - if os.path.exists(item): - with open(item, "rb") as f: - data.write(f.read()) - elif i: - break - self.files[self.reduce_path(basepath)] = self.load_file(data) - - # load all other files - self.load(files) + self.files[path] = self.cabs[os.path.basename(path)] = self.load_file( + open(path, "rb").read(), self, path + ) def load_folder(self, path: str): """Loads all files in the given path and its subdirs into the AssetsManager.""" @@ -95,24 +94,30 @@ def load(self, files: list): """Loads all files into the AssetsManager.""" self.files.update( { - self.reduce_path(f): self.load_file(open(f, "rb")) + self.reduce_path(f): self.load_file(open(f, "rb"), self, f) for f in files if os.path.exists(f) } ) - def load_file(self, stream, parent=None): + def load_file(self, stream, parent=None, name: str = None): if not parent: parent = self typ, reader = ImportHelper.check_file_type(stream) try: - stream_name = getattr( - stream, - "name", - str(stream.__hash__()) if hasattr(stream, "__hash__") else "", + stream_name = ( + name + if name + else getattr( + stream, + "name", + str(stream.__hash__()) if hasattr(stream, "__hash__") else "", + ) ) if typ == FileType.AssetsFile: - return files.SerializedFile(reader, parent, name=stream_name) + f = files.SerializedFile(reader, parent, name=stream_name) + self.register_cab(stream_name, f) + return f elif typ == FileType.BundleFile: return files.BundleFile(reader, parent, name=stream_name) elif typ == FileType.WebFile: @@ -120,7 +125,9 @@ def load_file(self, stream, parent=None): elif typ == FileType.ZIP: self.load_zip_file(stream) elif typ == FileType.ResourceFile: - return EndianBinaryReader(stream) + f = EndianBinaryReader(stream) + self.register_cab(stream_name, f) + return f except Exception as e: # just to be sure # cuz the SerializedFile detection isn't perfect @@ -226,7 +233,7 @@ def get(self, key: str, default=None): return getattr(self, key, default) def register_cab(self, name: str, item: object) -> None: - self.cabs[name.lower()] = item + self.cabs[os.path.basename(name.lower())] = item def get_cab(self, name: str) -> object: - return self.cabs.get(name.lower(), None) + return self.cabs.get(os.path.basename(name.lower()), None) diff --git a/demo.res b/demo.res new file mode 100644 index 0000000000000000000000000000000000000000..281f761655cf91413c3fd41fb2901ff134b4a37a GIT binary patch literal 930128 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

qSRc%JKBe zi?pc!l=G7{S?}HOy|dx z%6E=d&nUh%J)D8a_tnk0TpIC?Z&;OJ5Idd2&!1wBvGTit8{U@=BcT!#uTuG*9<+uQ zHM);5c~*&fIVop~lYiqs;5@U+LZ_ToE>&X!TX{Ebf3=CbR}L2?{bWBz^5;b^V%(7; zOf~JRUWrN+B+A(cy+BSO6V;!rn2~)=RXaqvm6(stdRc*87zW+(_HDb5?3HUVmfUL@ zRUUKO@~x?|N>C!$6K(a#7vv{YIZ zsK;9~Lm3O_*@4KMPxeq7!9aQpG-Q0ZD1OFChHSLYEN_Ahw$h5`%bW;V_fG)GGc7%t zfEn-(a}(JiUUz~b{EGt;-ojiaqd93R-{+zybx$lVA-4e2Dn)|+z~;!@8H&7&u#{O? z_%D(_PPc@n!sI&y;?t%1d97k=G%j*qC(2(in8~HiIUSHD zvQVl`Ux8QvZAEK1zhO4r%ZpSr6s3Xc`f>ZPU4Z)iH-azg!qxq!5M zJOMPO+gnnAXUjmFEW`slFU?wWpJFb4_A?L4>+^DZu||i10c7XrjmnL>l}I(QnA^WG zQ6f5=#blvkR!_d*=L!=1hH5W4yMQiq#!p0sT$7A|-gIy^E;$W+@e=GIWCe*+LDje}djqnJ<@Y1OP;giRxzAP%=S)smnl9Yk`cN-> zCEat?w3^{Us5JU9S)f<`Ea%?mkE32lUs9RB&3K&H&jX~qE9#9rkuyfgd{b0MJCI`# z^D|0TEO8nO>`KuX4X|X}{;S;})#RMB{dDp;q@u1Zy2t>3O4`>7-D7;9%KeTg9}`(m zF+T>{kZ8XdFp`O$tMcrLEPWM<(2=VC^AhAxLARge@^&;h$vH2N@{`A%Mt>qzE;>Gs zf=JmzT2nj7tJKZ(^0lnw^EH zS^0}%y}IjM#}U{ZhIMMMel0F5e^=l%4KF!CYfNBbbpP4m>YK5vGOR6=?Lz9&W7a>N zZt#x(hg{}2*c+YtU~f95pSl*SJTm6h2j$W&SG#qk6hsQOCe&c;(z?#wP{g^2K0tDV z!1c~qG(^qyBR5Z1?tu(Cq3-&t!_ciexk=cp9QqVOiA=`s+c`+d{24J+qduL1!`I$joUeX7_Mpqxtvy}@{_X!dc)U&KZ|Em=d4d~9} zwJ-+aq#QtNcQGenzuVq z9%&1f>5w7_w7VwL%R*e-A;&AzmlObmth_zcFs?hSf)RF^6XyQq!}LhyXHf}}lWxE< zdZq5f@fw`YQE`Xe zOs;Z4uRaB0dw8)P9vz}u&d7Lz+EzT#d@6qOh;xzYNtAo{`_oz>shb7*DY@1P%f{?p z-;NNUOMYMEp-xoSQSCL*{KYWHm z`f}dg9QcZWI*Gzx+*ayVA~1plfo#V_6d^I?L$Zc?8(WTF$FF43_3g9B8@~OyNqBKN z#(DXuO#8+n=wl5_RCmgv2E6#FIhH|Z;4fDE0Hf-*pG!4Vd@!N@+{-Di1@EpoHZ~ z%JwCu?@-~HPe0A%L+j00Bs!;S<*WZF>!%9O+&sP*J>lRF{&oO{{-*XS6h;d}u+Rp$ za|G6LXN_S}0VX8=VitxI2*d|=?u zAjKi}P;I1F_o2~Y94q8R_IF#x!1|;u=4=$vN6z~ulhROZ&=w1*)}`$-hYpYgcf}@e zBBTiS?GW7Wg8bV3>0%-QL~N!vq6C_Roe@60Eflq;C0}FbmY!tu6keAM3ITXKJ%ydrsz*92QU$C`YY;)_mY4R5!bY`Nt zGax4ahIk3tLrv!330#C*I9%0sRT3eFm&i|&FS(GJo`NOrD9$SiFq{LFn{)1bp}q*1 z$@qCiFy}OC?Wd}X1D!oG`P0Bn&lclxQxdx*vFLY&tE9XP>wZBQ5#?P_%#idX@$XP-idu7(=`V~W?FC!mGBE<9 z)lnqa+8Ye*KfYs4kDo~DoSYgbepIUJ`I8e|;Z34g*jyXU(LvUsookxU4$6}_fRS}O zchxRL9A7vl>H4@`4jZ#g7#}Hu0}r}OAi!qyhz`Pg()Z;$oMbf3_>xqOM`>NE@Nium z40iY|OZ{u~HxA2n^+>32x90j)UX|~O)tPn39JuPv>O~1*(GP zofVwFCoMkIm@V_qw)&TYky)u_J1EyVJKYFFgnmL+xNM zLxl4knuiM_NYfQ~yA=kfP6)F@iiA1Y4!2%RA3!Xm3jQca&ot_ZnXIm1Qijam8XI#; z<@=z#OO>whaNnvkTAo_ekNa6E!?Uj*3MiS2dQV+&T!m$Ti9HoZ>v+BJGZHk`qMPuX zeq>Iciy(on%l)I3B95ed`{|w#)7iyfXxY{C@7s@KyVdhqWjxkw% z6hx;qQZ)Vsa%s|kR0WZ9n~;)V=v=_QOvaVvEdUdYA7KOD-2$59q{~FTZBw*&T747* z5X3lEyH zya+l7f+24M0Z46vOK0jT=R5ej2iuRJaGrLCkDcx~VqKpM8b17k_O}*8bx#&^=)bel9octL!)XdI8bK4SwycxF<4`(CzQ} zNA2D1d*_@5_B~*8az(rDsG74c&LBUcHP80_k5=Rls(&9}1BtX~ze~!ledoIYm2GqB zZKJyQmm_GCT`G{-=Sw`lzC3a~8l8i$v4@E`^Xs*V$|G*8s5B~FR>zUB(Ygejpd+we z(cOn(ix|oMJed@J{^7|kU`pWaSnB)VgR{qp7a{i4SsXIbVCU_EXA&i-GY>^GW5G;D{ogww zmAAAB>=qINs(Fl!svwR|T#JFg=}K)LneyZ^=kY>QB3r7CM)XqB{sshYmo2YOeybCQ z7R>2=WG>khga@vl+)Iy`+4K}L(mgXX4inwKCF5^5O^uO!^oGqQ zk~VcldvhV|zDg%KdkamrA%+>>Uty5eCz59g1AS~Yy4_gAbdsDZ5533_S^VV!)+D4F zoAw_`|MO-lD;@sOIE9ww6h@`37LM)kmV)HuML)JWW}4OHZu~poQ>SqBlnylsTY^!i ze{K+xaFx(Qg8ZsKq8A7pibAEr8B$*MXzy3dMvPrDs1}rZw`sOFY(I%mJn-@9YcU;m z2Tw4PH)?0D#k^CK58K~!s$m%ka`5P4dUDx+&Nr@r;^C0>aV#@*Vi3{{R7U#!?;aVn zf);e+ZOxAv_uB*Mx!Ei-FPy}s-%sYRs=WzB4`^sa9DX6+Ct&c2=InBTKZjRUus2H5 zw|9EXj@rUABRD=V=S2%ee~2Ad-WGwcDy93b9Y@7M?oZ%7YT$cRHRz`a^}B0N#c#%t zVtEuP_KtNk2H#xA_653SYNyXIo(byHqU^)5Y}U-8h@@FFTX0C8*1B~% z9aKWAhmCUiS71b``!SY9%Ijc^b%!m}ROo?d-f#%bif>$;=!%CUmPT9gl|yh4*PaB- zQ^Kj{49`q~ksiiggP z^y9q`?7;|h$etxBwzXcdY)#a|vTU`kPZ1CS*!Km~5(WA=^>sf~IQHLYJiuJD);Fj>mc+5pW7kuuLvqrH$PzArMaT33M=ZgcsuD)wW zfEa`|b7SlU;Ok{)#WtAOT*mK&Uck&1bF+4%KVWSAx_qN08i@``FA)1}0F9e!f%KtG zjhAN?bVz-N;-BSa?%Z*QKu*@@XoOPV6r9&_$b`|Cuj{qa-amni1UEgYU~5dTFGNa; znhy9?Sj~eSH8ideX>5~4SyfS}B)K06Uc_ z`_T!*xzHe|uu7hTSqrTvSy{pxUwU6wB^poT9I51*&gqc&9FQUVo=y6Rz7#;cW!=wS zhcAC=-KWF6{BRrc@r7B2;V_nG4Z;x0-r#hOy;jM)Q3>e7B?)|tx_Jq5+?dvciS2Jw zlSLAB5@_-EE`i!tnaG#>CA!ax*}pN7OXw2brX@Qqg2}az%hQs(^|^fVxLM5G!dFT$ zrKdpOh3VNSRwscDL7-Ug;+PVI1hP*9_2eZbhP+aCLfa!5YdGa2v#|&EmkaYst6(>F zr4wiH-UrT0tyi*RDL)1dLeF5{ND?0+?_G`-kwE47!>1zH(AY;2Bq(iYXoSqh04ltW zaO9OiBPmd*WATk|FETGsBEcONl1B?n2uVq-PyLjSR;L;}>Zh+y%jJ^iYB%`;VdZ=U zG*gWgXdv$q(0)^P3DO>tRg$9Z$Kz7iEe#B(b|5h-G>pxmGE62#3UanI=8&;AVcX+*yypL7iJbgn(@YYEHC&oX1u7o>rB=bhG>X|Hk6k`F zpy?iW_sL&hMxHi{^S2~6s%-0i7RMAjk9R-&e;`}-bvED_AGM6#q@7zLx$Cs+sTdNm z63jYvZ>2fJ_xeW(hF^L@9v1l5(RQx8;-%K!o2SPuBokpY)xv4lH}V0xaFY$f%z%<{nfhLDA?aB zFn9X79HP|Y{;+b@BZrz{`R{H+uskI=@8?Sr^L^sq6_WX&MM~=uy-jf67L18N{%3V$ z)f}c^rEz!5SoXhC+rSaz z%@-$djK;L_3$?mPuYPMJCA2S2f4@~N$C(=DUYyD-eVv?_zV+AD7olfMkDEW)hwrwZ zTQq(kXl-OK>zwlHPU>}ljh)~TCsd>z|0f%pW(BN(*xn6r!=Qf@?eECw?`4&ji8mIw z53NvBFBAJ0K|adn|4_L6Eu3gJ6k&tIg`?MEW@IMke1ivSlOvrAusESXYz9pYi7f7w zbYicG=4Mg*yNYWuRVDKquDE8j_)T2WHDvbiO0Omk-4+eOuR+T`yYKa4N=v zskO?d&RrYeOFWLR=~VoJKmK)E+u_pg)4P2x%jQI>Uv(#Lnoac?KgQ@-ukn$~heo>_d4M z*>8I!ssizz;a+z4L!TFs300^3N63RrG)r-kg^U9}(R{&GJ05sS?W>0&!!1``#R^iL zKp!+0=WFLr`l7>QncVcPTN0OG?V!?1592%m>j05J0cfyAEB*N$_2|1l{GV0kKatzP zzSz0!)LX1-#|?Sbw1G!$tIcMl|BfBKODx$mqvp?4I5FtVrJ#zqob3Zxma)c-GEsY> zCVK_(w);jMHF{D%!9-&jW!s9hQc8UN%7lU&ztU|Ii4t`Im%&=-jn(1A52H+w9$JG@ z=mfH5Ih{iC^_E1?tFa<2bm~Tn%;(^of`gA$9-6!!MT+2jSX0sfBSP>S6nz&&2~QF2 zZ67YNGBS{;fc{Kp-_wJcS(*TAo+}Y9o z{#|G;H{s}5`X7ixRl1}^Si6QagjHl_C8B}GDpgXC3R(mo0E((U_%zI=nJiE54*kP* z2pTFbf`G!w9G{w>*QMI}5{_g++LG4BxU82M;70i51s5kZ_ zNy>RexsTlM2n z1}i-0+z(OeqIy^>*xwfPsF1{wfDiF0ud%}~8|#UEvwd8@Jj1wO*DkeN!#ASp-8el! zdaT)mb;mX#RWDcWF;BS5{KbZ!++9s(Bqx_sV3gWo z&on#EoW}AToOYDn9-a$7zh$wf6xBDY5op*h(QX zQmbQ%o-d$#B8(@yV<9zrzWrTgDLjkc4C zL*BXiwf0D6_JkRKTlai?c0WA%r#GqZ#j0nK*QBQs$p{$sZL?RmTWXw?W`A+&%THRp z(^RKa>P5eV6w6D)nA5VvK0$WvT=~9BBlrIP;sk8nAsroF`ukItp(j0|%Lehf-yfWa z=IWE*7Ua7|>i)GR9!}_U+K-OCcKKv1s4uAPfi~=A4i1xJ{~g^x?PRR7e{5{dxJTf? zWIw8M9KKI*-vs9hy5wOSxrW+Q8A&MptlB)*cD!=Wq`r)l|4UHcf1ql={Px)bjv8k)|5! zmn3~%`}@s2LYsUVd9dGO;wYLO#*<5oDM9nC45xk@I6^NMN&hTJtp&VCly_FoOgSJA zD#bO4dUZ$uM>hzvlJh$>n};a=upn>UXgZFI-5J!}>1nK7?2S0VK-XGD+EumCD}@Bz z=t69bO8mgp7F3T7rjJsat0Gx@fC)w)B@;08@VI-4ZK+006RP^v)#UH^0`)xE-~7pM z_V=eHDoE{p;_CKum&jRe!_?xF-(0+W$;?jcl{k?n_N%L>tidr;r@}y+y52wOPLe5b zWMd>jn83>gD#Z65d#IASm4D^f+CPD`DTSf)F;sB{_9=eKvcFS3yI}8RhxkVuO>0P5 zCGwA|$0B?S{uQEzB9z%Z`HNS_hBVwDmZGC4s}Dp4HTQVo*uG67HOiqaRjMXSi5O=Cd|N9`!IH8%}d zknBDLb-@hf%xGN8;LxCt|7PM0BA5W#7m{>4-HclQdf|vhzeDkVRPBZPcEN|(-=;|S%$0a zjgxq0G5-(FD;sYW!BmUvQQWq4*M}pDUxnvd@8|C8RPo^mo~N>{!mZZZq)#SJNxxGf zpSzwN$>t{L@olLRS;p?bC-_u@c6X2Buq<5a^wcfa_Wa@# zW78&_$)*r!ciggYlufr@tt{DxzWkpt68{f|a{yXpF9samd2lui2E8_yAS*+H#J;)X z#|#Zc@0mH!>ae{2zL!XEZzyM6 z05*@t-otJ64GVXi|412sYPo?U3t(b?XGcJI5CK+>;(Q45QO`4S!B!~9Ruo`L4=dPV zOjD&Q%x%7}AstRbN6JZIZG%H#?38(6GHil!GHh={g6W?IvtCu=B07Jt2A-V1V;&dm zwHvHl#04UE&yy{V^W|Q1{kP7`px+Kpf1CxODs=KYz^1(s%Tz1G9<{762?(IE z$avaAdzWas|2!}EAhICDVAF=W#{CH!X917)ll>k2Y0ETSLy(>JOE^dcrz0B4($1gF zMJ5d|1d;8%KtWPvqWM)y-tTcf8r}}9=V!xnITgM3Z?}ycUl?@k0&o{k9!Jky(Ed5^ zHZH9dwPpTM?G1GZpW4*{fCHtFCoW_}4lduX>|9$t_a6*ivY_LxH z_a6_E6Xkfb_nPCCM{JFfC2%yy@Aq$Q?;@_(pi$HXLU$qqMSOa5L$@6{1|Tf4^xgdtLV_vHksYMSgX8vGNhot4r)xD@Kl_y8XSJ z7obn9KTmc;f$b}HoGq|_gZ8mNey!%pG?kzFlYB$YSza#!CrS?l3aS#4_tlgXs~R%S zj+~{BNwGr7UZRq}K-%iD|3#_V@h5o>9eek0F6?LqsiHd#J7o7P-V+YBpvZ&@RF=x+ zW^im9oIh}&`F_^I_vTXn!sUP>2ySs@4xGTY9nFQK2I!x5{KZ3YfWTA0R3vEQ`A5rx z*!VuI{^TkyN_l?3_~h!%ScBKNE%JL_{QW0aZ~PfX0v`{5a`oZ_6l#6SPQ29zSG9*( zSn}vb^_$WM$RO2ratfG7Zy1HvU!RTQ9CW^ok~`&vNY3m0KvWxW5-XqiDWQHo4Za~o-@gBFhi%FGc!0* zBp)Lgx+yHbWooaJ##e{6HT>d)HiTjI=Lp_l`m*idou6ZoO0b_$USTs~J3GTBu&I1T zU0dQ!q6t^}tzmeg!HI_1rA>30Id|>y9Zu=H@Ows}{QKvB@%)4E76=A&>Ccm=e*23* zVV^;nk&{COx^E>wA2wl^DhrX@x44b%tF&?g9D$XiD2(9XVB96jR6V|^=2du-C|Ycp zfJUi8Pw7YrZY5!Qj+3n2W$>xxh%zGbDXQ`qkpkr|NDjaQr{($LO)VwkXp?DL(lVsv z49|yF-BNdL(0^{p%lyND=<@&WB)^EpMbzv7mwts*@DHN#1KZ-0nnhMl7yRNZnp z+RL{$WnhxLjOYbEG?X7dkKjDtoa;Tog-RWJE=rYBe;2?g-ABr9LD|Lf#2Q^6AkU$5 zAIH47Ci!zgX)02DRj1Hx6ihs`k7_RrU|h8-QvR)ggF5q~f0Vz9YZd5;%0uVWe?vL8 z;uKtZaH{S|KZN7piVNneE7B^(-?0vjVn{CGvVZvG#rUCfeP(F|`khi&*b+t4*IYOZ zZI7UIXzy4Tj`U_te5SSngDRS(ejHTJyG9xHM8Txe%$*qV-j}S zCqek`Y#6u3O%cSTPH{R9X0t=eP=9?cjRZ;#vx^41*L#UGQnjix(x{MfMKB zi{Z@7Em!($WH+RC7s|M0iUkud;WLeDJeDr|bD>dHIM1x{ zcSf=?5};SIxugmBm2Wt5jK+Wyr)gkp3nRA)j0wVV8>|r+8aIWEbE|O@d#pG#I88FR z-An0(!6DRy{NnErQfz2CJ?@O#kLV70#~V}-%)@61jV|{?Y%tD zdCqgr7c9w_VT(Xexx#s52Zs~~r{0ay`MUm2bl>6^0@b6FkgDPFTMYxKlH;6tf|cp$ z4vdB5C^3K715CRA+O?$6a~uw6gTbVQh|R2D)i_q7s#l3D`Es*!vj#_$no2NcEvO5s z%R2lw6P}VdL2XL7cLqEtLz*CbN`Ium<^VS31PJ$#uT?Kb_;WkjQedsnM z>O)+dG!AAb(x}zk*WiiF(Us_kS5|FS%y3j)++3TvnL{TC;ga{tS+p0<-K4j1#uBNv z9u!t>6&Y`Q@-6>x)4;%hxdu1Yj{*mf-PT>uM%VC%awMvg-8dy-NPF;;nq1*rhvb++pp$}d?6Dlwy($JXjAeA;B;S{BemtJvds@(Vx z!o6}T%fGA6p9KOXN_S1>K_c6$)`DLgHPJlDUR)Mr_?Hfs<#AgP&DMH6iMbovog*j& zHHE`GG%lQ%)bCZLOkoR-=vUF`C#~5OiCv9IODg>c#++hukV`unV{c4gcQPE+wH|#C zr?fnUjFr;mJcc#M|1pItk{uNQO*wRclXW&eC2$yCD2@g@6&_rTri)M&cWk!39+{P~ zlpMoixNKek>v*44Tj6S^&(s7ip!J13bNBoVaztR`QPt!)_RO-p>?XpG8#AzzzJ*o@ zKd!DD#VlaIZL24pAl4A`Y{fiI!|9Tgnp6-AmAQ6#o*ib-^@-0c3uBy^pVcN3lDetS zdwUf4j^SuVPjg<9asF-3_1Pj4#{NX3y}q7tL~}IE&CVJwi})U)pF!@Y2-Xz^A&6lj zJze9OQifUe5#_V8sB9(DGd|FFgK>ou3<&2$oW&kT9XWCMQ&TqkK zH6xXg&NQP{q}$gI2u|dQc+3ZCTR&!=e5?(yWmM^F+l>IhXy&BhhZ&@Q{6)xPcULUrzddIGBo9=)v-*nh1dSK z`q2L{^7wFNXm;+IPP3F~zu6wLgEp>WQX1lHXQobAbZ*Rj%UIEPOJ5$e5ps{*ey}?7 z+^}(#q`zoD-M*$RvU?avs43jzbj4}BwGZJAV#+E`O@2){UD2!E0a^%_C-L21AwGMQ zNVgT-|0M6OKn|^?H{&N2{KA2OTtctow8iSdQzHj5FRD5gE$ItHc&VYgznd(6RjvAE zm34G?pFJ-=!kctkAG|u|P0A(zvi-mSgue<`PFiN>KQl#v(EYnx`$n@r_X@kVS$}lu z!^4W`5=9$IRfivZALhx;B>e-QeKa*Fj}cR7>F+;l)7PRX`RKYyFEKQtN*%2sh?MKQ zc;WjUmUiGA0zeeL>iBT{F6vWzP5sp~!k3v?R4MYx;2^J4c$IZaCNqCQA{OJi9}rn`3ZP z8p^~Sz6g>q@h6}dH$&yuCT?~6RYVav<{UUXV zjJ9NRiFyb{{Hs>kby=LBuj7?t;<=HYUa7Yu>OnZBVE7QL{%`Iozx08tLwTE1UaDqA z$h6rCI)+MS5|zwdoOG0z|I^7!f8KTqw5+Ic9u*|<-E-%M&7&L$W5WIPSAw^USEdh> z1@9e<%%iPMS_eA6^4^Kl^E@AwT+?6`B7i%HWZHaCc(tQy!Fzjw^n`9&iOPP7Ei=v0 zn}E;}x&qFC>U&ucan#HWvGUG$5WNMGjo6Wv&*;m1@0`O2mO2^q>`$D^cqY)w-uEs- zKln39zr`{`-!blAI!g}{y?c8^9fXSZH=Z~F@GXBcDwRLT-Z{5tya0UBnm}G&fe-*2 zuEp#|-cpsHpyb;cdFS+rQgSA7_lZ;K<-f?Fs@3C%803jlvd4Ks zTT>m0fK?!_+P&apo3v1pk)@RTz^n zUD)t^!J(&RlqElX1@7P6f1py#=8_z=PB#xnPsbRIADP!KOr0 zW5s|-tj1=5*3aer33>*jI9JNZJy*!LP zu3eKuSlW1z$0ZT22iwdbK*-SUq^?$qyH}ucw7azoViB zvOPGED(oow`^4y}xps{WwOmzEK`i{1u$8SrHI*&Y;>8DhIx5?f{f2Hu~Hjn4zjg0wYi$H>1Ijf7;U}*{}7P|Q0?u^Y5{hs34%Y6+qcT~ zjTbYRZO$h1K0aP-A?1zrjZ=E@$R$w3>!b6Nl&}x{%Ah#ge>0<(uokq;xcg@%t~8w9 z=wz`CfGZa)5Qm^!vDGRLl>t^Qq2zo>5NlJZ$mq=*ezb3H3JhguMS>aHgiw>BjF<2x zUn>%%gEpH7ytaj!DputSvK_;M^h}lAj;l0e!oFV=$3Ox%udd!8Bg0Lhrsu+!BJ{3< zAyjZLob?bvmWP|Tg|TRS5d?$3=QEMknU6Y;rORvIn5AraiXKHe2kwbY?_Q0vrx)Vx z=-K2LsjQ7?Yfuc}!B7*whb(OYI?vgU7o<@Y-qHjS!Q?BO^MH#`ij2RwqFeAnh^(Mg zTZ5QvF(-0OB#R;0XtSLJ_4b@dPP(wt5R3?MjWeS%R883>QM%VEFQHZP=N7PA{MONm zcJvo2e^?$c6=MD$AL==IWSGXPmWY0KMs6T-q36FdVy`og(htp5>&MLj!^Me5@AO0= ztlG01#+-vg<}GMz_eElvCv{2;-AD9+Zj6uJeHFBOMNHF|MWhO%k_Y?XBZ5VRH1AJjT z!V4V*7*PJaZ=zrb$L|4^_yEZ&ILLo(>Qy5V9YOBOHgGEkO$Qgh19G7i@JLq!)!BK~ z*&niW5D#P&$9?v?`3%-SMey0Y_4PUuuI|Q*`OnhZi1BRWX!w$j_m(vF>nYgDkD@A!E_E0uqAZufzDd-`!+4<3B?SJrW&4-T5P&#vtc29kH^w~V#HqO`icJ}TZvq%FkkZqa9F2bn}~Wv zaQtmvR*2$ypnbe{GG?xIEfm%?SnN~sFi+=qUl!rq8W37J_7|6qFiSa)^|!gdGZCZb z@M_n%FxcJSuaOo?rUiBvFCQ)}F!3vH8*ebOZne<-p{N#H**WKBq1#EMDPAV@vc9hr zATQOla$es@{$gXTHR@kDNvCtPzQZ*((sxeMdFk84pmZEMm8#modisJ{a{8lQi`I-t31lZ;IY~9sA)SH}>%6gnB%e_} zI`{7BT&?H*i`RL)UUtygjHuxpc+|zXXN{3O;sSB?^oi5Lx*|q|UmZN9Y+rz-JEFeK z=5FZ!5<0A*zI#gWvK#Ct%bhg_t%Q5(Adv{7HuX+O7s~abAKw>0wJIee3#Q*a9U;V| zCD{Mgs!F(K&TVDIg)|chim}IypOml##Fh@$0MK(H-jwwS02TdCv)ic!Tg| zym6ff`~T$!RVPjzjDQ8_xpDmuZU40ec+IyHQ8EEkZSOr;IG}qazFe(gqpFVN#g{Dw zHD{FJSA9+e`+RUv9Bf^4GY{TM;WP-ew24c^<>|SI@`a9tP=+2;Skuf@LUvT!?aCcK z>%X2lkGxo0gjkqU7b5zWKEUmQ4UhsV)Ac^Q7HGFjX z9VTE2B>Lxp=9Cfv4H}5FXg#5w7RpfEm4H_`ckz+bwe&)naY@z^L#QL~<^(sW#+mdY zF3y-I#sKwv6C??XNy?C+P!+asCiTT^B{tn*H8)u4N<6UU;NYA|08A8sCfL`{UQeGr z46L7`9=Vc}FI2q~kx-z(AMAOY>L1Xixb4b;&Iv-CTzX~8NN6yH zb7r_S^BVM?Ap+Dn5()$c8SUBKh0fKSfwlTi>)`n+63|J=68B&>NxAr6;YaM7LB|&^ z9c;KsIK1d&7$Hi?UXQ;ziNVmU(Kj_!Z#P%*jDEE!JQWSA=8|orwnYA-%!3b5Si^%Q zkk$0mokRtg0&Wvppu*pYK$Kx45;%o(i&*blX3+tQ9WT9c@7Ltn)U|80uMKFgF1TB( z!@*gB6Z|*?A;!H{18^cIz~(l&gfn`flj6%{@)K<1V+W61IWQFUGK(cmT{EH!O4_iL zUHi1D>J?6rR6H;`G%)8$yEsH?Ctu6Y;^dMJk^LgrDKvlrFx+;edNh@quUA37=2-Qp zc3Yv8{ZqAiv?#0siIo|QcCc`?BHE0oDC9!c4*85=q3+hc0Tc`9In{av4ZoS_=*QR6 z=3PKA))Mlj1l?xS`BVrc--&D2GlAoc+vzoU{TMPNftW<0PUBK6IsVPE0KT+Lgw|<^C zHh-u6m^hF!%^Nr3TlNe${e0q27lh^~Kx+4f&{DjJrftT0W#S1DD+FO+bJF)7)7koWNc4 zt=X`~rgz}GcSmD+=D0fyS))Oy_2l&>oD}^08zA95x?Ghv5~1RAHpti#tpeg$YdsN| zlDjm;3)eL1rd1^+Qk+vAP3ZUmz&LRc`+?S&8X8gvjPS;3!-+H?@5objH-8uxlBCDV* zov1C8(7Cj0K{C$3|8i4N9OAT#$OCzvxR6UNx5fL2vBn3vj2FcaAwt^#{8p1lZogh* zw@5hB_f}&;baGI}l zTpT8)iOFgi$>hee&a?-ug2-x=$#S6S&d5as~D`}ne}zvc?~!EE27tPHe+&5W}@DFu{cR9u-AR7NOJ5! zA<#5)gd?C|qR)$ae((7CL!A*I`{YR|mET+ENzgl3=8;NRU|R!X1JF}4i!_7we*pG@S@2r%L z6_ZkWS-sz4AfMA+(~?SWChK<{rX#)KTBW=K&vgwvwrBMhIkJkv>u_x?nbHhUl*MWA zCe+t>HSPqC!H{}i=YVoSz%w9Tqttv=w6x;`zp&`TW!Cr_D?!+}+GR&DV#4rgjnmZL z;@B7?7BCX+Sg66rz-I3BsLed?oJid;{~AVFj%X){7H~bQHjwy&R-8&!ALBqk2m__A ztJf8x{e@3!e7b>-VA-WFmHjooaoJ_zB~BV!;j8-exN_C^J;PP%b3l%q#92?miDLOI*Tvc?o9E@y=m>=?T0f6Au zm$>*er)^nh!_3(RQYevwR(T!X60<`IyIkH7Uie*gjYv{hanZ_vzr$@LA&|8Q^_X}2 z80zbRWUXs2u85W21&Ijbc@S}0d3$U=SqjPfZQ~Ou^qd!sjag5e-ZZY}C+R<7Gukt~ zX}ohjnzVG*PVbFmgs*Zku!!d^$saWPr$0JJy{?S#rIAC^3#J3uDm90+;JriB5e+T% z=GK20^S}4-H0+?}b;lF`?tiataeXGee8m6nAN?vY6$z{Rch~-V?Q|BJn%7DoxaEIu z^%;Ev-Bb`I-}lo$SJh5`bXw^Dr05gCQ;3Obry)|F%H^SSwfB$85_xV%=TPRlI_Ug? zdLK!?gV|Iuc3*M}OkoZQ*R8E`InXPjBub=i2FS;|9MRD2F~C2|N{pv@@eU6`YIv&( zXAl7@G?}CWVbuDGNI>3zRlEqkfiPRTc|DE0r`?CImO@1YZ-A4J=!Vq3f#nQh@&)7z zx~q_2TjD$+-0PeX7a`8T$Jg@M&ZXQp|tUD z#W)S^k8pCT2_TRHa*i~B*SW$tUXL;~*+7I>Hf0hXn@*k>D+({R^L3*4`MpQ>jt%8g zSL0;QSoLTY;%L}nNXv!9FCuyY$iW^SeKAVCoc2G2ZN#GMTqt>QKi5voLMYLxN*kNK znVEn>!33}&sgk($dUPgTE+0Iy_edieo1A|0zUO~5zG)OqheM=+Gmh5APKp$rk)Fuk zJ0lCnyYpstPUCjBjjCogFFO&uHbpV^xkgwwVjqihZTZP)N~aGOh0%h3)8v}L91o@$ zHpV_gJ>A(zFkay*F&&K)rfebs0-d;faL{l#d7bh4Q-oEtlHiliu?7s1&UQTu9#lo3 zo!DbjB6%Xz(}k|YXq=-X^3kPm3)RR7tZ7gwj~Em}bU4A9%uP{5NLtfBpjU8mj!tN0 z9DAPDP$IwxS#9O?D4`pb{s#wUKfUf&{+W&lUf@DAGnr46+np<y7 zoT20wiZtoTiqHrCdT?woXnx!#8!BP6H^e$SyZe)*3BVaB^%FWG5W1bk;L#&d9v;1K zB$7i-r*l~da%5&QlW7Nnkr@65WLmg}GkqfNbcyM$NIdTD?hG*6G>MqB>Hy!B zgMbosbix;Tw%bhXz2qnPz+@a?@Rygypgcw9mwF_?%P%d@FpeVQ&SBxFCCXvHo}ZaF+->^I z&HBl(-09C-w6v- z`T6?JjQ^kQ$a5gt1I^B>n;5bdk|hGb#u1Xcwd zG8$GIITHVd^~kHkx7S592T}jH)J`$*(`}R38%#%!^$5h|0<_Wn{Au~u%Q^*&@n>DC zVxi3fW@)=97MVmCf3=ph7pvUfS8IWmXV`c4Oba@Evg4)h_GvS26<0ogxd}0esYjAM zo14P5-SPt%bR7AV-rTRkRM&hS@tIY+2K!6#+Z7&O2=nPlH_*&o&G_k(OB6mUMQ z{C&iHx^W_Z5$l1OEiv|x^qa->HO4cU@Y+9c>;%V1LqUbFj7xtR$jz^bT3xzO|BAb4 zjQ*xbcT^UQnM++TI+m)B1oAf2CX(I2Y&JoZS+hfomAL_z+AX++%7^6u&R2u0@i z`)!A&YtLlxoOFtp{^_B@BMUaaj+gpLS4JZ0>(dWUzX(*4m5cHp_TD3q2BK%l%OY`q zw@N}>i})k%==^ZxhVJtZ7~$FcewU_k!&K00k;zLj5F z@W(A<=T{@*nSgcYr`KUu-hK|MS5kRdj(9O(+EnNd#kb(uFHgmv<>(pksUBjdisI2_ zo#IQZXw)bwR-Rpb<$(AtVr=J(J}cen+9cge;`d|MjFpb6r!Ddpv3hiONck2Kx9D0= z%i3zlJCKBYe+ZVMe|Li;Eb2>JZ$b397Eznx_%?4X8a>`e0M*nH^H!85s{%9Wd));J zkt-nF3r&1%_pzBkdKKDqK3?G=_re#q$Ux)#$5@Uyc_l}E#Dw>r0j`Jukp=C?Zcl~) zZQ4LLN&mfUCccX9RbDPTDX~HT9Cz?)D_(HQnlc_j?3$%SrOY;y#Bl#6c3%>=RAKkO zAHj}0AD~OHY&fF~0rD0MN>?r}mQh@91YNA67XN7J31kmY%kaCZ7+IP{=agzV${@r5 z4w=$Tv@gK#+Qli1Y&ZvpBcz!`)2vB?lZ?pFxm8ox3Dj2_2l}%z zmgc|t@(?!Caq8ZRL|%0B!m7ZB2V#k+x#Z#E@HG02K%u@e45TxbCQxdxh(<^Yp*;nu zTw5$VWH=!ZU761_9$jpl?yv|LC62Z?yi=3J5o#N|%3DqvZUDyXHjU*4>~c;{&{=90 z>Qv?v7*CBT*%=!-$~CF!90HCK8!1HwRHK5Pj4t8!2^1-Gw%%i}M>$!eA{;(1=uVCS zqvz=axZGp|?oMm}P$sWnq?bPsJ`F)`5imDti{$e!653n@!%2p!Ggtqq`)r61wVs z0+&sciG1EFNrb)9IyaXp7=@XR2ioiHysjd`b}U=S&6&odZI^^O zoi0J**9NMVE)PB|*A5Nz_tT?a^6;w3j;_G2V^e;3i)s$CV*;UV8&BW3q0MdrP2nWP zNPF{6o4wu`+FpsaUNwH6BY$ekcpa#jeYK(scog8>9VkP`Mn$r>B9w@vQk1p~3$m&& z;Now#cR@OyQYJF`gT)3Zk`irl?b!*50KRNb<)SvFd|6$*jmR6@fVg)vDu_%^{%(P! z`OxBHml1D*c&EN?NxpL6m?+lHgVW{k!Khx9-NG?(SWlMaXqqIWo3Exm22#1bsk3u% zP}A@rcA>Mg7F5wvf{1N=d_0Vs95`8DoqU;ySC{1xwjr!aCzso(!zHpURu$zpKZ^Rs zJG{p2y(B>zTh~{v=eulJa2Aef-`X^LcIql!^mrfs#Gm~+ii89rNOr)khGXxm!>XQ} z*B0-s=mk@0LSEUzhh|PDUq)@Xen($aHwOh0;=7V~G=X^c&9B0L`b176$U&qlytP1fW~4CF?!bvy`LD;bs}5R`UUldQU@mzDEzdP^@o zM&#YJ*4%7W9rTiRc!BYILMxh5keie_{m~Lp_RmMdI%{srM5CVcPv|+KE~}Hm&P%2f zIT$@BG#8~2Wc_v76l=krUKv^_v{I{nKhb|*t!FhKJAObmsuGielOC6nu(U3~#^_5l zcNI}*<0NE25JA1v7_Ey5fD55l0OZa~j18^{dE7}9Y&joS&d;kZly_-w`s>B%RXbWk zB-Lp+aO0};8Nw0yH;qH{_V^;q$rAPzB9To~ysA>t4=l+Z$sku=uBQcm6<`o>l0W=z zPw#|;b+eMF=)LV=#40s3e0a#3e65(c*|d;uFV?u)aINg#YiSQLJ;&Ofr~pF-nZg21(|B0loWQUI!}5x zQLc0}@oMC>^j<^NVT}^^cou?}Y|Y5ICJaz>keFW&U-pj+w#-Z&`4fcw)?N~WVw^L) zL^=bweK`>U=IbJR7ieOSeQ$zF7->d&f3SV=TS!YR6=kd`Q~p!0+M z2ruvEBMBK;>dycT)XoL5UiSxux4HOLF1a0rxfj}?HU$aBeB5#S*$7-BM}N`K6knPDDt`{bfNE zADEkyUa|mcGlSJIOzuX4vq{h9hY;Uu-zVmq(AlF!1GeM_MUPu(W9 zhP;qVvvZ10l$6iDur4oPQ+$PuMle{EcFMG&KF7TqqiE$LOTKw!`22yC8Md2?=>c|@ zr!e}oQkCTfWi($sL6U3bp5DkCQ1w8Q)O~EEm)_MfJ9sTEy$v8_9S=GutZW1#c%os{ z*VIu?{#eN8V%lv0(&?4tN3JOaYmSKSJRfXG=hJrAUVTexMndAVH~A(2hb@I+Nu-|x zcyf*>|5!Q`zk`>zath_OuMlmqAHNebSNh?J8#8ydM`BYmNw(JGnPLuJ6qH0PYQL6l zHviEg?(fKD@lt$?i+fo#7Uwwec-gzS>r}F+f-994$~4Te+A2nnGtzJja3nk-0Y;XM9iD0PQ@=EX>6NGL{yPHTr~PwBv&hu&Mo?3&jO=E)Bm6M4jxny%7Z~-59AUrdZ*D>Z9EiFWC`d&_;)wZa*A9L4Vm&gP} zhmY8zF}>x5yUz{BnP#8(-B-vI> zIeMHuRhFSH$f;NISEX%4|1fl5BxL3;C_%9Fd?h3@C%Lfkwwz^piqPX4dAql#t2^iQ zYS@B_?_@S@$^t^Eo{rhnE|Wev0#X#-7OaIpYq1?|i<~^t)zk6NL~^5ZVSGEj)R>ty z5dtK=4NCtrCWXGhUA|_xVilq<@UlHZrIRFo%lNR!ip*6m-Efs+i8^(+nM&oar`_!? zt2so{pB5WAI&PF7RzJPI@GwOLB|R!fX3fl}3rP_tZtSzi5;KUVlowb}hdi{cZt6zH z9~bv@w6?1%A9p};rSbpQxng8?OE<_t1Oehd?R`u1HYPgF@~;AHvDr_ihwkhe%3|7> zkJi*h8J4krKbh<97V*sNR&y05-klyV*hBcD44jVjb;;~PcRz7A>EWnQ{y=R2B9q8o zq(|3BBc}ceZry5hqhlLN@2^RCWQQoSOaf|`C6vX>19B}&#Y!J?U!(!Cm|S>1ep@t^ z(;b`ogEKSOlHhez7akCXzj@9dstreSooV4gXt*OLWOq$W=v26UxJh?DA%>c&Cld*A z!wBEOx0@+@y%{6Qygvh-M&@Yr*4Jqda_albRAmtkf-XZ39U|h7S5JDW;~R%8p&&bQM?t^2&MeeJHl@zuxY(33Pk!KtZ#@^}_Mt zp57_AqiVo5gdy5%bb`H#Vz4P>u?YsLTY6KIX{WZ{+w?$?Q zv1RP|fq8Q+F91T=*NBq8K#Be!T17i0cu#c{gchCK*@web?a1si3} z=aA%Emsf~5-4tT+NvpKv`RS%+6p(|N}R!UV>?dO_E(E^cQEzVP(S|Dq!Q=}bNxb)*hG~Dd6 z(pud=A^ivI7?+Qg+2fV0r#IeLli&$Ql-8wDy1U}|0q9i8&k+4l;ee&X*vE+>PWz;x zvTFvV4_dzKZTMhkQfj%YMh}X8ft?Au&SC@`M*2?bf8@nWgdM4#ifB$kVr_>&LN*X~ z*q5d#kD6xIS!z=W z)_z}<&vuH4iV2YyTMRc|bd60!B3YTNSJ4WB4gV#`mKIRQxMTgq(2Ty5wkeM{<}-GE zjrh~^!$G7xqU*%zDq5U*eL>+#0AbtnG++5B?=-rTJH9-aV!L+V!b= ztMV&EEmJlk{4bX_-ul&g}?sY@S$ma?r*gSljzI18g!a` zrp6uOq3Pb~#2zcm6%PTAA|xD@@jXZ?60px5&4*AkQ=`tb)GV#_!zh@-gYWC`l4G@J z(ksh`fMTS-#l}?k4L*&&M=3mqaN#^{2>+jE|9bzzFw*~-~ z`V_v}8VJsrn3d@Zn?jd%4l(eAmaX&FPfGQe_|(Th?k4v=cV+l^-^qI?CzDHdu`7qH zk3|ThVOE5k%gM!0(Q0kU`as63EXEIlYIBun_tPR_arHpAhOiABnzakeHSS&lK9Bhw zjvV6{;YE(N34dCj$bdM_nT!{KFK*$4{SDB(H^Eei?`+`hx1%$u-PpJpj$o5XFPYk1 zhH@&_%)4)P4nb|Y}W0+Uq0L;p4qSiG^5apD!9X-kZrnDSNHbcRa*r2S%CGRh4%1 zb&<%0hrm_xYnvO)VXkj~OH5?)7|ul6(F7_lC`UU& zf;yDP3aso~TR%0I#-RElu(2Fyw>0j9_3MQ=kVkKOe=f%B-dpM<$Adx?$%p}w+|Ev< zqy8+M5p*x`b(Cd z`1*2pY0T&VOw0)zP;SJ-dg}0TV79hFq_ewwL9z)N+XxkwVsR++gD6I2E&w?_>-oc2 zpUFSBsN|Pb`kKPKzqPx*i*?xW&>L&)&Tpp^XhXH=+elJCStQwO)YV zC{D(b(+^)3^Pr`xxaY0K%n4{S$y=qW^H&a4cFaU4boBIwC4Tuy^{1TVyz|A^PioGu zo*$0t6K6qm9S-KB>{ClRONR+9rp*}POI3p)w=3mUto;o{et$hthcu30R2+~#bowC@ z3~5|75BF#Ug{~ca+2GKG&adt1&5{vLa}|b~dDW_0cNIZO{3I{F$qA2tXY9(M#AKuQ z<_#KZEgGv{Sg86^Rx}pBOjK(riad0Jmbo%Yh*ql@^!$Zbn8e%{u%M zEDH13=IK9CPF)4{TVY+rjZfoCcK4on`%oaEJMbu_GtdyV39DTY;@y4b#Q0Pp>w*ZvAY6!LximVA;3;B=+`)k%cMaoNoixD^KWRE2z-*j~&dg!(Qp zD8gE;$$ie(4M&xpO|NpkZaO&gX^#9^`Xyp2mHv;VaO%uGmrLHtNiU4_!ksvr8p@^@ zA--xwa6OBRO5V9`JOVEQc_l*U?{6E^A>^Rm$Ea1hr*&fDVyC>5S`E7o8KVtiE9RNz z?m;vrJi^I$^z05{%+o8w5;0&v0T7rT6xMqWUy5c}znW^hG zl>S6LQmdO^vxuEPDRtc!^| zUCjb%)l;A4lii$z>Q5qJ?&qa5RW^_Ql>*EGjmvw8a!kM*`XVm*9YnXS(L{dUcnCBg zDFm8WhTMlygduU)@@V=V8WNwfnv0zyl(=($i|<4eDCus#ib8~O2iThE-wK_LM8b42 z^{01k-`zVN8BgEKLHsL!78IjyOjl_7OPsz*v>xxoZK#NdqoCE6OI0F8~rnVVlow-WsyIMz}{lsMtc@+N%(l!3-KCKLJw z`XkanBN)2mhJ^(|o~9Mp0h=Gpy%Cj(o1+q0pNWRmm7J0DbwAS&`36jEnC(LMc$H8+ zdPSHlvujI`k2u{iPg)}KL04PSQ5vCJP$F0!5xi@|$c4%)tfJ=dzj!hhle`tV9CH#w z;22#O=!~Shsg-zr!F&p`?9h8&A5lH#ehiJ>9$Oe1T=7kKP&_)6dT-fYav8;GT5S|2;!n-K7mA*p)cIP|w4vub5e z^o^h+(i>Cw=dK_SLpawRFa1aB+r1-Q4|R4zB#`>#rm|Y<9(g-7(v@Gh@T9V!eUx~BznG>-o711nwd~?u^#8@Jm+E06;#^d;CF~9izpcD}P5Iq8UOqIZ@4kMmo&N4|D1Sj!V$k@V!r(B}WTvDMf=wB% zIByAPfYy!QuJe<(gd8UzHExa%RjIQ|jE}!^IC~Y4)-7XJk^Zn{u%I?t@8so0chBdu z>MMT7)ci#QAy=4Fwop+JcU*#vpI7yATC!?9V*cc@?*N25tcf5)(Zcm|_nxknI)cz@%3 zK8Rga{;Yi413Ao>l-iWSXEa>YaiI{Yl zpe^j?e5?+WB0boY*D>HXUoFU*{p6M=lH}-ARlZyCllaQY%#=jjB`SH*HKl#is+Hf_ z3t&A-&x`wZtLgyy4yDCh`r_K58yTYnwyeeCPZ~Zv{1z)OGLE^1(H=;gVo%>OL0VUo z<_LLYS&lXH+V9HptesF9GUqFT>?fON^SKGLgUI*XGLGf)VlJY8(0(~qgc6A^QxYLbJ=69A(B-fx66~DJC1^Zi0iLICr-8MlY+InKVXB7lDU?$g! zd3{6M#878IdD1y8d{8VnHctzYyyo3}_q34L9~Z36m&KjSBF37%(*leWFlug@*0+uL zx~7E;9;&zosSAjzIREFL4^?%bwq;Z4d@D;y-yt&%8S4PU?Pa3s91)jnlslGHh<$Vk-uk^9w0L44@8Zq zjuC#*ccJ%i<&by<1Z{lXLViHB&lMYuBnhZIN|XYW-WrRXtrk0pd@ntuPVve6kF_6! z9OL2nnFP;PquUhajMtWWd5S3MShO#!DZ7zf4rNCsL3nNLZv1neeq(!JRI zX*=76)rQ)fob%Io8D)k3JXGIkxm_7BNZ1S6LZQwF8)KD zPBZ$PW5nyO`ZmP1JvQ4L2!OD2gdaYGVTGPDRCpD_3tM<5(nG*iN^G%DuE{^-R5UB+ zg$nj5j9LZLX4{x+2%ytRf!08;2#Ki9T-@a5MtZ*`Wb&T#ct)aCE}qoAAto@q!Ra; zcjX@gYPsV_z@OI407K>Di$ZGE>t_y*Df@~Pu$ATS6)9ireEm$(K!EPYN1g5QCDn({ z==X8S&$qrly*ngQ3oul<&nnq_N`6||5kQCa4jAaiQ5)sUqIs= z(a>oA?gFiRdzY=wZefcMJ=N6BgC)Z#x;heexe%iG^QqAZw%=)&9J~?Vp)aEZG&R+n6aC)x<{$@H@%F8HeN zz3@diS&P>h}LYt>5XHKeA7$fIVe9WKKH3Y>U zCRu5H9LN2qJt$=c=TrtVhg%#>g>5Fb_FIYY)?M|JH5CWC%rRuctDzVW_7mF2hYH8vI2JY%OlCH+uO#lk?9-_iW_N+_)iL`9yqQ$nvO%2HKpeKLHd z@7X-I^U9{a<9$Na3+H=}hqga7hqD%*4J4?Q6GGy7ggf+moKi}(7liQfkZk90Mv=P~(cMRqQ^xJ(oN zRAv+2KUj&X#KOgkCz(Ji^`fQqa5n8~?WnJg(Zz5qZIkD+6O7$8EOZJ21Lap=nnf@r zmA3_M#%vN$?e}XVvs!}Y)k&<I^neU*GIBB z4It}VO%t&9b}Y{)9R(xj-;_?^?R26wqU*DA3!nZikw}U5`=&?&NqTGd;D9P1tp4o| z2F=(yioW`FCF(g|OP4hSO@f5Y0|lGk|v}t(nM@#n{o2vK5&GVsb=y%ylFF zklPm$8_M!Yx2s3EwgQfH)u6FGMu=;Blb#D?WQpkC5@v$|<1L;RJt2+@Xu+N}R&wHF z>v#a38w-8A`tO0ZuLXgYXzwqBQVY-CvKmhlrP?=DheHW4xO%lVVXP6V+Nbs83J(T+ zCLe(j)A1wja2V&)0)CLmQUmrE^3KBg84|mq8U!?`VRJR~%R>nGN8?p31ICSQi?=MJ&GHte%p}pBOnX(zlQ><9<34Kiml2VadY9 z$+Aqc7}1v$s|6J5*!=ALRJ8DB!&_? z5kbvu1}q3nmJ+%A39l`3<5TuavLQJSf!@rgeq>Y{c~|?4rGOrDN{LuIed3ha1)J4) zN%QLIcTUkQgn-rHUn_jQ4{8_l=m^&L8MS9lobn{{of(K95l~bJk>yb4`t<+%zgzTQ zbICrijR@-&_-J1EwME=o`%c7o&yA|zSBm2QmmNBzyi|<3|DiMS|Bs`$0c+zt(}mv| z2?LTrBiTul_=guGs49XrU^^z;CLRGM;=o+a^ymA4C6^kQRdMed13m>T~9 z5xCl5QGbyk#aE^l2Nz8yRy@UfS<2fh@FBca5oZv@<7-)Ih7})Y&|ak|KlN=NYo1y> zzR3N738fppMI!$RrW~nvU69`77}UO1T!23-kYasyOy7l1JJtk-5nn{I^yB$>JkIi@ zr{co7n5etkT#IF4>H935-BWQv`gs}IyC>G}=ggU^eKYO7ejNFK!bpbGfM-$dnIYiX zxc2+5i9v;fIG4j}AKH?$aqXE?X5NMnsbll0CO4K*?tynRsj|6eQCr6k_6@_?NjQUX zsQ*bwY^nv6t>GcV;eg)wVcGGhc zAB`Ui%_ZF|jyBz9FQ9IzLKAU`ErC%z!vd8_;VUQKOll8GfARt`pt+w0UDg@9i4n7KdQLqH`vVbTF#WPD_!P95`bo*_#l;O!xn6-f7 zu6>6OcX(G@FBONyj1B%yCU2zRP2SJn&5X|zr`Po4Qln`OJLVRW3brQ_ONd}ElQV;> ztwH$9=kI!DoQ;1>;jQvHEZ2YHTJ`@cSgrZHHIHy?F8NBUkxbxSkmzG(s|_so2rK{P zcUVgtk}g62Wj8;p>uLSJ??G<dWnob5PtrJz+l9yDR|cKoCiv zIMStrtyMYTw%@w4!(8<<7IieJ1fSrCgA@_Lw+>jBdZZLlzU12&4F+@7K8q)J3SE$8KSb?ejBumzKv6Z-NJl_>qSO~z6fvgn?4<|l^hQ0?QBLNtqHhMg| zh@7G?r)R$><$QrW%9DXZgB20mlP8Qgy0!;20$W?($_?}^!a|20kTR@TbV0I2o&+RB znu~AYVq&WGdLBE|=X%5)_GR7XTGJ6=s>Pt2ve1TXTEyB~xHn2BKcWd6D}Q~9f7v<9 zr)-4(97^$Jv0Sk^hEhxBh!@GQh9-BU4HJQgJIo?Oq?!Y8p-}c;3o>%t zvB)2lg9=xkY}hdTwIuR|10_LD9RZLB*d`7fh7H9r;G$(x*p9MXM!DK*7;Nrq?TD=O z3|QB1w6!7*L_1!+Hn80KKvt*?DVR=HE(WOwB%Na{(zMO1yz+&jA>StQi7mRVHtdpr zzf7xv2NShy0h1)vmkZ6`K}v8lp(|3Y^dUSz5TeV`GUD-}8l(}yrJ}DDgl{r{Pc*!R zZ$4u31~!v^;7OY)15YIYU1wLS)+~@`jtzG7N}oYFlwMdewcMa`(@aDhliLjWf}^xN zx}P+oa{#t;HCX~dTDZAmFp>J9qcUSB+?Tg-S4hf!q!&8}JTeDX{e-Gxvh83@fXYMo zXneLcRkuYa$3rgV`br~hKiIQr6^D+j3XrGEHOEf(4{j30KgrVl9V_RPo?K$$=4mvN z9w{ifIv};rHKK|0nejk+n$6fc=I~c?rirrX)u~OK9MTD{9`dKLK$BKxKZgch`9`_M z-{QJ_b1L&1!);-d>JZuff8fu1c7zHd_EE8s|oqTJ@ZNK_iH0)u-NZf3?$Vek5V?9 zBdvdvp=O|;J%y3XUYz^iS*%zr8keZH<1>mSZNU#b=~ziCh0LRz4_RjMzY_gRRO3cT5H1o&-2V+G zQ!V=zT^G=tisYJ+O#U_r@zk%@eZ%~W%8bPo*oVA8L8WbhR~L^YUqFR6&j-(aQowjt}> zLgp!x_N}%TUwmOCRn6is(=)%zt^Ywa<)WFIwm@)1&U~E}=z+ay!~Z2l|7uGkv{+U6 ztzNTF*A*Bd2pO;2a{fzx!kZs$AvW*W+#D-GTKEAyX(+qx>yhoevojj`W4h#tKz-F_ zA4paCu?MU>X9?Gk=@yfobQ;I_pCQ~7Y(k%;%L2xhK-eucEiBvscuD;k7xDkk(6F2h z04gLIB6N&w#8rW`m7!*mRD%@8jXgI6V^P^(&HV*G_uNV3YvZ()d@1%g@F7ifTfsreUX?+=CziWQwzt6W%n6Yg{#x z8+`>x2kVTbq-6gA7gOxH=FGQ;@XurDx~@R^jOuC1J(nEIt$P(pI9qo%i=Rb^k~!|g z7=#OeCXwJ!An-Fax89|E87pDHxRo7VUzfj%cG9SjTj&1wHW@6jJCR%WNe8$Azwq2N z(vj<_BMcYhvr0Guk`*IMy&rg{M>GOJj=nx&1lYNCIt9Azxx~U8P?HNxpKNJN;G+!5 z{4IQ>c#1x2q*Q4`nvb%LbES(p3P*^e=dYs;`Z}C6b#7=wAMU}=^7};l>JXd0fy=KH z|C=@m?L4uh^SEjUeH9nb86O?V=1Bh)bcDkL!{Yf<-a5B}voP{8k!$x^OjfX)B;>u( z_bIygnGhfMtRyV>YAhVcP|#Z_E-`ZF^v%H_+6>8r;SWS1BkKtk^xV315H~oKZnRe5 z(QzHvFpT{}zrmf!`S>8H zMBIAKEV7w~F_uHNA@g?($8iS#2rGUQ6(CgC1;XYU81C;|pvUsx;0c-aSJ%rjsTz2% zRdiVs5r~=|G_Z}l@T-a5RROui&3kzvY^JACvo$<&Yn}5SpXK52u)$UP9z2M#8P8!O zSc<$jpM2^I$!R)v5JuwCu3oAZ4cupaKH$#~^4A?3SyknJg&c|RP`YS{w9^V108)~( z0-Q%j6fPk2jf9hO)vKZL*2d(GzRa#3!KF*1{CkvAu@Af$fZIw@u7Vu{@!OsWo8|(M zulDdT`M1j46RlR3@LY`NT8Bq_IMEj~(pG=7fI3!P@Q~bg4E7GUAd+0ZLd!ha7YGQF z&uU^5JbeartHq3P(B)1eBP}T3a-l5FMr>~E%B|SIOD_IMMQOH&*XaLZv}9}AV?{a- zLo9hv_*V|4lf0`;;+a(P;EDmAu)UQwmJy`>&Tm0YmGX6(WK+Mx2*^V1n~vx-*J z*^X(OsRcidghF}7=F2DXG0q3o_B5z)72?oR6U$3Ks~5==Azj1l;OOCiu{Nx;uMXDr zLaS^@HfrkDPgde+RZ1;x53U&tshStMU~z8MYMu$K7#n_apsNtaR+_T;ggCx~bfTkC zJo7a+^_OMBzoWNtgFcdC89n!~LHEEBBFqytcZSgdI7VG)V*4J$d+l!iSx^lP=>&Zb zCg}}xET(*JZ(F09w88+BBLn6qRZMh#zTfEuWL8B=QM+j~`Jbz;K%pX0{u10h$qmsD z1^s(wzJ_b3Ki{H>MBd-rz0fFp!z9=sVp~wziWFgm_MSl_8&2r9N_3b?*??yu0WvnJ z&7|A5H|n(vx95PGl{9SkwugcBxQ`n(dkEZn6e|Hf05vGo#n|;VHvdiZr}305U8HRnRs@dzW6F692G_o_g$Z@<9czkB(`#kVXc$Z)<9@ zs>EaeMed@Ps%b-fcDq0ppNVBZxx+2CS{jqU|D&T>|Iab>zJ;Y^Eb@09lCBR6KgZ`g zdp6>3eGx3(rjfL8zo1|Fi`>PQ`D8+hn^NE7<|98dm!R19oaf#8G@JT=d~jmPyJ13n-x!>x^k0gD!wSn{s6gO8Yxqw7|-Fov`h zg~LNnfcpxOTH1V*&#MSBX(ihe+pf5Yb$>& zQZE9a0Jcup@rvZz3IXXL$k?7>6jA_8;rtASD)J3(U1y+dtH}L5i-qsYF_;t34-q?f zGN~M-T0uc9==ZfaONu-)KFX$c_?IU>p8uFi{H5FL`g63cMgDt6{yqzmFk)+)2hYpx zOm(rO9QY7kJt%@8{y%L0LJ2ljak6|7=UFJMWV3)G*dWMJVxTx_T@YD~l%%HckifwK z$8OY2S4PcfPY4%WeFs;`{}nwKL-G_hSGhkKQYWJ$8wz@eK`&d?T{eP)lI}zgFqZra z2NVK|Q92hx3!1Tlu$7S^lsMH6;!c;U82>kg5nWAlz-k8=?NohFpN1&$k8ttL;6vn} z5aIg*W<8KG$^DnvGei9$Pr3;3!9T?K#SS=UFJSyo=>~f#5C9Y!f~sS0nmkK@A;%CA z?spN3L~xi4G+9{p`g-I8Is(s9R@#p=xwi)r2En$+>&Ttoub>bg@+&g5(YFG;QAsCY zw0<->x7i4^QW6dk^y%YCNuI4A0{e=8kS^MzDLg%&S;iUp$Mz)dG~ySo&EFgsD_H=H z)CYt-#>!Q8HsWbpu#lpHN+QYZce|~CPk)W8%{YnvH*iHDDO91%N{yZa9-ts)CubHN zUdSVWp&0T`7;vs{B#wLfTimN?o!cw`t36CX+ouWgg}^#k_-}ozo}GbFdU}1GZ2MYl zQ)SbL1Vl&27$iOtK%y2h)Oa5d*I7p3yusnMQtNVwdnGmy4Ft|x1nz&a&TFyGXnv(2 z1Jm)gp(q@|#*7V-0U6h#WaANzXg?xUIEKVk=^c2uV=T5(!XCbEj10>RfuCr2{Zx+N z>2#meU;ICZLg*jA+bB>%JiUHDXVS|9#IDjMprlxOeNO1oEZV|l4ID!N} z6*62~SW$`*I7x7?OqY$IcG$=;x`T9v%SJR-9RuEb6c>czgzIsosQ+pI&B0M5&Gn8q zZl0Xz4i<5Dg1-^tE!i->(k@H%RSSqI5<>3SiMzsum4EX7U;c(y{xJQIPY4#{4&ae-pe6Nv2w4NV4@}h{rzAr>nHLB%QP;aF1b|&=X-7vpojCIHZ1-$yb{NI1i8wsG z5f_;gU>3o{Cs7X|h&=NBxQGFu(R3VldwiU)Z!G1kyrPb7)MTNOkPiicBBW3#^C~Y; zG*3nV6cFeoHO?~=qDyeCZd^*|NG60I5yQnXC^FRP^DxuD0iFc+8KJB)&Q~T927VWb zFxc7;mom)wM&EMlsjSL!{McuBEE+jh*V~v-M>EXpq<_fN4GvmoQJ1+a zz{DiTk)QgAv#u9)jR@u?f@zyIes+M8R7C`D$0N*7%e+az6vpxb8?+`8hBu#heQ3EA zRfYn2=cQ1r6$7YZB+xCmS7P53J2KC2cn zqQ_#q8y#|Va;Mt4j2yCIc%ZMZjF7H~a~0ndfMN8;eOTDBcPnG9c?erJ?qjhqn0ei3 z)C2v({rjT%7@h@o2s{jqIU(eG4EFwg4l|=vjL4Ds!POF=C-@{*`{}w~fF`^EK9Twd z>q3}C*d@bGABs`hLr|{8DT;LQFyb2+QMnFJF+6<#UWPdEX}%&I09!zPer&9A7D>2> z2yb+?CsOv_P1J1$@(Y+|l@V^sJ5%j&t&7R`^3YOlc?qwKQ3H;#Wzo723Kno(M`r3m z0YftR>Sx*qMbl*c47w(v$p^0Sqba28M=_v+`JFPhu%P&ui2UgPZmT$Y> zpO{)nVz&M;0`~9bkC(s`lku?AwRr7fppY{&9D5tTxCVYC+lP%c;w%lFLN*L!L9j1k zta6@@=hcNK3+gaQq(AB$d>?$_T$tpMF#hES-~1v#`2fD|P7d?T*#%nl+WZX_SGD|OSe;&*$CD%~ZdB!qXAvM4OX;{SG;qiLe>@*dR#xKoLbUdW&I-IX3h#c3*N>tJHJ(gT z%_7NW7NR^Oo>TjRNfz6ET}xMV!gu+c3gHOOd|b7cn0@d2F5kjJ!0V_}V4Wpz4%mW@ z;uMcKv03{oF3=5~C;k$Ap#ZvZ_^HDfjlymRNewh9!8@@C=@%9o;1>s2jV{Y(oLMDM z-(#rL02eGS8_5E>kh}!sQyG!40*K<4!yu%5I88MsRB^$QGCuz{{?g*M?}zU?uz8d?VW3D*>7MlWoK8|SplGrc6)&2LXsa1NULt>bG-$Fp$p#&ttv!UVg;$Mb8d$aFI@x`IG|gmC3jP9pyrHkV&Gr+S(^ zB`6!^O+)xj46{MWc!g}nQc&ICUl<;biao88#?2C421BoR$}c2Yatk9IHfzLxZ9c0Y zsBZ~7g%qs93k5#{{8E&KL}4NkA-5TdzychCuH)~pq%xww=Cr3L!(<4-S6l;eSr{JO z@PptiJw5?=9VkjO3xt#sx!`o=&t8U|$Sg-ez@`-(!&~HQfU-bP7kM^^Z^cxPeRLA_ zs0toSgmPt4cw#Vpz3)Xoqd75A0JsKawrYXHNMqdbchcu^&H{~=jl*w#Fk2YGSuig| z&1VMtLu+da5f}yC(g1Qi#zhO3Wrp0Yya`c2<5C`v533Z1XJ_=v5DJqQQcOyao#)if zC=N=iA5@Zc{M!7$%u*wZ@A;LF&}$dZsbeEqH^P#w2$Jv$yR)2Ob(UP4uaBaYCLSKc z<;vw!6RNyg`rH*KcAj%8WWH{sf{2XP@UhKg0^2gtw&MHo9cbqwGR?lyz@ZF4CTf;Rdc*9c&Yf{7?+gSVbMUmXb zd`F`+2mr>`WEq3xpp{Wto;W)b2qY2DcrzgMNk`HsZiuGwl4yVwdNw%*4}}#cXEuyY zobN;_%^vTY=$54+a6(i$FykurT&Ju_ARTgY^MRjeXAzL}4QH{=kuf!o!_YUHZ(=v7 z8L2`n557?|7#+RzsjUv7jbU+D~7W>vTt}Imv*<$p{ zNp@~wlPkl=k);hQHFV-wANK#*&wV;;gF7jCcDdS{{8Fdf5&6uf;~ zs-Pz)klaDo%1}}pxP$-CnC?6hBJo1-?(MFf5O$KQL;YR&Y!J~17-=s=025t$5zp-| zF)3$Ir_5TPI*`9Bmff+l=BvGDda*24oXe%&-gD= z^(wv)`4C)=GRu#y$%rU?te?EXcFpn&X;mN&hDVtk0xQi%xatl~p1v;$o#aF((EGU{N3e^FaZ}jvCwpV%4rLT>R!A?k~ z2ncQenU^0?Q8ncQ8U*#)g>LXbR|gZxw9Xx-O+O2YZ0IE~0Pr;2UCyG03Gc*-Bt@khOU7ymfN974goeIhki( z7HB$|23YHHsfZg>++i043n|!Q**gmx!!JtJ2ifibzZKW=D4=|xJ+z{hv`k!;FG1s3 z6v3+Q1kX#hm-`11fElPF9wgWvK+2(WXL>lnmx@{Z zHq4P$@+O3@9RxlgJS0-&8T^zL$ul9=txBY}u2-~`16c^>vK)DJXw{EHcZDzq;p#`Z zlkJ11UOjjn40KPxSe4l$%K{;C%JeF*Jl@z7VbMDPdIf-sm%3x{=*?5CKwATwkg$E) z4h$D=aSV)8V*G&vmlOr2ip#vmnquFW7_94-Mr0z9BdthhY-DVmF;EaWX5g|=N}xz& zU{#2<1`Ln}DccWWsN=>&!%}w~G!R%h24V=c5*D5r#GCGyU~)ZDh=|k4L4bLIlw1#O zx3_HEbK0X_e-UX9nYuR{(>*8<1~qKmC7ydhGKN+i5F4boaLQ({CZwi9=IWGq&bP z?GF`On1r(sCXleejh_WTGp^sxk&4n^u^Y0@L`f+-O7wEE0zjN7GI*1BwsH-kt>5BV z0x(T+zxsF{xDEi_i3?tqxwaC=1itFW5vUD{pa8_uYH!Oz+{A6ApB*gSBC8B)n=2OOY;jbt!dF!Q)6Xq&Ri!^&-G+Td*R5>I)((@h`jm|l zmqvKwlFXs{8Ny$(uQBOPp->qLzK+D40dKt5TtLq~MRir!%9$x?L*YcyUyW*P)Y9a( zvZz%n5kMAJmKbav&m$6m-#fvR^SvL)&sqJ|;&I^ko=ddK&QM?=a=0LumMF^F_aS9i z+I?}Jq?3(+qKGZc~=Y994){mJ59;QtNf_HZPoJi?TI^GZXk)B}Ghej%fI^ zq(uSTCtM}93D?x~Mrjq5a(@CSpE-H!LuSRcC!J0)@N~6d)Gew4*`599HT6c}GXj-5 zLLcLJFKqa2^H@@#$YT~YTTEGzpU3T?ZBszmYR4*UcDeT|TTz?Exp)VpjR~DF8UvNQ zMJ%z($kccrD9WhLl)!VUijoD)pOp2r3V<^f6}2fQ0zC^YfJYjVC;r7TOo(Wn)J>TWI0p4Y({)^F4h?? zpp~4+;2YnFc7~_t7V-)M^zhmn(KCZ3RhM95ay9|ZYKjghUo~_Ue4%_REmdKknZTht zi2SaUVSktZpz3m65Gp4~`XD4QNAA4tEl| zkQGWOB5xajBIPBs7q$;csS3iC>;eDdaZnMGG-Vf zvc}?V{wQ%5M?_9QuLCE9&_qpCDOD8VxQ#FQI6}6z<1^9`6D^Q4fe_`@LV(&B{}v$g z$rxB7-OqXfXK?ig5(@{!(w5UQ)+cKYJ1db66>NiM!oPW0tW?5KM%Ku4GsQ6#&k#F! z=voYt4@CiK?KpaF#%jrqNNkKlNOx{#Lq#J@mO7jw3yCQb-rLX}kbN$;5HLsv{VNQgXr*~7eL;}u~T;Dp*P@&AGfHw={Cg3pI!aRc{S@NjE=ut*eC!$1MF}cYe)gaq3A-5fc5+m7^6v4$44$>LyojKDGan?^? zJ=rJ{mTtiVZX@xc!7=#iqc_Jd8k?sw1P_49GXF3G;|GL%GQ39pj&}ry8Rh+hu1i4J z3@>07kkCfoSP-O0**uvTJcfF53%bq;JEV!h_Fe*X3_IlNJC9Ec!d+Tf1DjI&8Y7-dfP25kK>?2(~YhSl?F&dHGeu2mkT`9%O;=~3+0s1Mi#3QcVppXgpi zkK^QKu7*R&m)Pzl#4^VdB3JwbRqEYvW=`kxLgM@Ri z%**{?q&;bU>#Kuo7lB13M_#Jy-jLZw*>VJ^72DnJ$^PED?m`@u1GWI$g_6ruC2D5u zBa~xvHIOfgt`$St{enxA+cC7J+RUf@b7viH0}y#I8?QS zT1QhglW3p7Thkv5OH~82txp$jy$x%{S#Yku1-$8xwFZ}(+(W?X9l4k1E!g8->L#s$;Royr_rTWbbG>krhgCzjU?Z7b2mLUk zve`o^XbyAaEn==4WP1@KyJhw}gFtsMX^89`s0*$7;Tuz0G6%5ywLRbMUG*0!d6AMA ze3s8z1NtoP#s!UZ9v%7KgN%(Xw`LyN;%A|jwUuW|JAFOkbL@4tC(GH-{x&CA=+xaZ`8CB@4NK56(VjvG%|ca18~?^u(MSIs8{n_7C1b z!U9D>G7ca$8P_{f(*-fr{60I2q11=5~K~eD#Gw(7;0o_#vbMOgIwl=smHS z;lA5B1Lp)om1>TC=vzr*2dMoK0Wlp~vS1C^gu?)>U+3^wN$Qc;568-;$A(A7pzN5s zGG0{b`3f0tda|)m)okr(RGZe=acAeum8pWUnX)a*&h{t{v8g~H@0M(#wx|nkH=6Bs z*+qtDaUh`J%mFvxLw z{ScXM)$YGrQrnWrU;gx4UqmDEg{HT0*1%I=Bj>G zaRFALDzGf5aGY*!h|~J~AYyEwsB~G)qvhj6IK_BQ>?z3V?e%Kp&}!(Un%n;8pqeWq z&POLJfR(!%oWFo-y4hga$YZs>Fh^kstw7bnVk@f_7GY#TY&gRxDxs?O6bisdQI6|` zrEnw99i5D+S=i$~2E9V4GfLEj1yt97SjgGhh_$JaSnT19tqo4AC>I9rA^I-Q$ujXj zO7wc^_^*#&Hh|b3Wg<*?@YlY}#X?qc#CrOh|aVFx2-@g3Ow1S%ho1px8wZd4|(EbM=d5F zC%P_&)#Mz761YYN2EL3AUBf9zt`SAh!#OF4dc2{_F5Fuwrw9L7r*3N=?kkGb|B6aD z7l>?_Jf8q*mfJNB;C%soEDfIeOKmR}Q#ISvR0)K_g-gxsn21src-tcC(z+e^@nb&# z2!lk*vBi&7c$#MH&=yeIfgLHU?G!2(KYu}fh}Eq;gd`%j&;9PZr0O&%=8xw`kYA=q z9mypT1`09>G$FaI{LFPYJF+68E#jR^8U<}@Z6(|Sz3fvfc@f|gnhgi!h4zX_8J2RJ zK5cFCZ!K~2-uo!CQK~89fN_6p;}Q|}n6#R<1dEfOVi;>^u1^F6{A{0VW37!A4&WLC zfrH)ez=fB-ZdzFjaGWEWv+alDx3V=1ggcG%ctqPOhn?qU8b6pF7nUM*E{u^m2&z3D{kOxa^;A%X`9R1l$L5)vTa{>v?!F(Qt0Ll z29g$9#z@6=AJ__v3)uPslA+i%u z_t_a1ERu*&$8YK%h=xn-jvd@{=k$xiBgjJ3R4Vm=$aGI%|0Gnx%G4L_Mo- zcL)NaS@7Qc7JCHK8d`^8fm{$G0I_A^5qUL0ng5PyaPy?GR=l*nF1h??hKhX!$}q}y z7$uw;QgNDQ7#Y&hX9kT zUSWqx*={%MHk63uFvRF4X^V8PjT*?`IqkRWcKRl>7m#ODos00i5YIJz4T^cuYD2GXg>q5%^6ua%Pyt10;bf z7Ty81%?sVZ(xov7**Q)sZYU@Vt9{4JfoG82=*4#LZl!k!aVBwz3bl2vw%+KIYF=mI z1i+%+T(Y7F>j^klinf8e?#e(gAE`Ocb^*2B(DwQ;E0K-Isb#?%&$6Vhm+f-J9c5gp0H$6iCpybC67Yue*Ka)tmnZve9ZGvhiER%=3g3<}HL zL!hD|IqAxjNrH>g_>Jp+5GPJn@Vv5VAh9kGi8%`LcVWpQkXTnse`r}?t&1Rs!T9ut z_!oxtEVpA8eK4?;7JdfS>#}mF+MY3i z*~0O+%_^A8yU;y`94+H~h$hjsh9{|hU(2cxqSkx>9WGgY*GnO~QCI+LF^u=*jjRl9 zFuKMDa<(HORY`2>JHhYDrD*4Xkvv4JUIn-V$%jDqV0#E8@arXc-)2)9VD|{rA6PDX zg`4;x(@;is9T}&4p1NrYCulwMMxf6@fCTk=JU&~ z3hEeYj!OieoAVOZCKgRowH+rL_D0y{<^aCPIY) zt9Q+|jgUP@S#@~h{=L+rg!gnpq3ns+YC8sbk4fQt1L%LJkQ3+Tua2*%pi74a&@-fx z#C0$}Tjb7ISrny`NOf(a92k%6Xh3N0>5N?&mw69Yuh{Cs# z=Fh2D5Z71$$G9pEKZ4JB&)3r5)-d%x+#g{fwuNxz(%@zIKPJFea1QKpgE;wg4@&e+ z{I2H~H)Ues%I!qnB{ba_+0eESsR`nLA)K7Emj0dFeY)ZT#8udJP*YDpBPFeBTz`UW zv!*V%E*O`J(9w~Kl$krOHFX!#mb;&%b`qp{E-Wo2*t?%-D6*P*-?tb<1cPdS5WK&2 zPC?0mr>NY$qnIJm91o6+jKCGCOWBLqRVv=!3rR;8PjgI3Ih|}Q6>re?7UY^_uA|X{ zk#K>>+9&G;r3Qk}4)EP7B^vH)9y%B|q!pEtCp`H6Srw^cMcj!-kIjiwBNPB`D_1U% z=IiK&UG1o(ySyr@Vd>Udf#quKdA^3#9wV7*@_$WcsS%N2ZH1fcZYF?PoE^C#2IC7t z@nZ6lgjORs3_W!ts%&KJ-J@icM@g=tt#k1U zi*hw1?*sIZXiY}}{&7l; z3B4JCk#Q642@7#?jNPg1hU&;2!8(2z851uOP8R>;4p3}x_)%2>EkURQDUG63&GL*_ z4$qxZcx2dX7ZtvmjWpSP8q@v%A$?i_16>~h+E*JRR-z%p#k7wh`qOG8avXg0N?L3p zzjV|_%o&dfGnrsRA{6yqc81@IJ-ZF0&>Cs1jp6`oK?$B#O<9_&sYAsr0ypTCi9OEm z%wjfe>2V>r8I-Mw&A{DPlm(xFr43;x(a6vn0J}sV;cH2Bn>;YRWd!>9 z9tqx$IXD5nXh^iitL?x+*Uei1(i3-axN{v__j$gWtgen{h?ALNN z^~t%+Zb%qnEbG}Ub*9*NIH{ zbDxLJn253uI|4+UB$?aZOuE8ceS6=UuB0ed%YN8*E896pe;Fhno2+DS&NiVUqkLwH^EnLpdR^)aZ^l2;J5V%QH2AxkjRyaC=GaT%r*`zTYuR|VZ^X1xH-bZT|Y$_9X}(=dsit94T5z{Pi+rmwWVcXW#0sOO%Vo? zj`-SGfC4qw@WXvaFqg!AoD=gpfI2x^3g9~OP^o3=#^Hr<676LB^p;n=EV**><`CTv zE{6-}9M7LDW>vyBOq@A+bqM*A04blif-C~IjJ1@B(0v_}C=RF0Uz-RW>ow>@lvJjk z4jt=Gl#~EATt|0z480Mwa;_4vx4m0xp?7Yh=?2!obKMXIUeDR=2>9fjj(pvn%13XP zPA55?+-oh>Bg+SGS3*qPg-R715|kkzt|vhF25uDB1fPta487SvrEvcD1a{8jw=i@Ielgza`m0OtiWX2Pp~i)kZ-C1-GZE^Q z$@Ef&D$q68b$>h6AG|1#Sp+z^DIY=+-9o}!2`@B{sj7ygewiFYdEV#-P6q6xWi-S`cm|n* zh#7-9kj)l~`Fx7@UqaxL&kOec@mAP=1UPKzM3!MfP-+<@KB2t_kV{x~6n~o44#s97 zVj!RPfe=&5!ArHdft85^Gr^le=Z8cS1fS?sn_^#k59Y`P5iS^yi``zT6s`+|8OMd} z62!~@&f*>;jxf-z3tbEm#X{qVLO}>;JdqZY@KpQK%F2d+2R0aF)!0UlAA1{_SO$Iu zjSmHq6yrm5)Hp9QjMP$EA0Cjdgc(}q$6X#2U^|Gvl4wtXea#xV=E?Tn4}FBBEwuKf z_THHBFNMtGuMBmB=BB3Ra=S>RuAl9W_kABFmy>S|vE7KH3?B4!NWRqcHrUQy_(b;c zr2a*eE(RKu(g9q@lwDcg? z2+&(*7>$%+>!kEe`Ut$!S&xjME*gAuw!)V)fJnRAo3jddV zflY(#rf{gS9R^KoQQB}cKADEXf$j?!EMh;xV-(8hw(WKJKe3kKNjWc2Xse$tm%YS~ zKSpXXt4{O}!p|T{g#CDSzCdt68J9`S1oE7ja#JitX^@{xvg zn&T!Q9>$5Y*(lj)S(JBtEYHI4+uEv)i*_l0<2G{~7zTLpux=AzN4 z+h!RDEp;X~Hs{D8FQLD{eoPy28gUGgfp5P*czFs5l=r$Cpc8%@pto;hO~FC>^m~x7 zF0PK5c(lvC*7YN3uq9j)J(`58w80rf>N5E{L&?$ zmlV>%o^KQRb`I83I0y@bMMdm8Wn2R#Z5EU%!ZVwdZ0Hm02&QU?{Pfq(fsIn-M@z>d z*Ot!S`YqTA`Ki$1D0#Q9&%gT}AmWM(c$LLNsbsXRN6V(krIob2i?U9?g%Yd0ml3uw z3W32-6YGEK42xl|SPX0;&0qocYuhx|6#0vGhivoeBXKAhP_86ZdlR0>KDUTwwHw@HJPYN;p>2iSAx3`+ zqF@d7m?jCr;tR-`q)`6`WL?T#g3irHK8Byo8Pq#1a5T2T$TmT0K<-iNaESk(MRbYQwLXCi(NNJkGp zrpPD*&hX)Z>4p(>w~-Z3$x*=z&7GQayh9wcA>1AULK!AdLNt=x!R=~l>#Xd&I&>@~ zXN^sH8%Hvai0z?x@kS3NS8&WjR(UMc==N+XxF^~H7WmHu?`v-W$~AhLnlewJrnqe; zVNEEM$uzeQL`UP1CS1=eGXvAp8yoH%g;$Y(ayqcm#4`-Bg$6HAMpwq_ArAV5poLpB^9 z$sx{iO2~~M#K(6Cj!=DgVZr0}vyQGvO?%_Wu&g zhKxK8wlB{d_}xg9{Eb>ajo#iF2Yifi-$Xu0Boh%hJne?DSdJ%@gAz&|iy)Z8?`y{j z;x;?Sw@R=TgC+e99b?=AfkTSlQy8TWbDXe^3+0|L(S0Snu_s;x37@MNzdCp|B+INv ztg9vA)U&gFeQT)w=xU2PwP%NV!OkLwhjEl`uYgHY6eRSXnuX?|J6SY#Y^6B#~2|FJb2m$EIx+er{N{kWr1tc55T5w!YKjfFqj7${x zC_TYus<@~?{jJI3$Z!Uzh?!u$vpgx>SP_WaUg}BLxU`^D5}_VOAH3TN9UUX!P~iom zuOO!$<*AqT|IScX5E2aY-n^?N3bqFP3Xh$kE9h0X0qi_hWpfYo_k; z*09y)5vwC+6Y38=mx_f{HHReMQ13XuF%le+OTP8kK_Dz({M(|muJ=75{_~At&MtG# z*M?RFYXYDr^3XWMlS6ggFG56V5~#PmyUME7G9qRSCjc*R@IVHS%Bw!XReTY7UB>T3 z=4V`gI+RFQFyfd!U?>nwWNJUluL{$bE}bVVPRfvoGyVzTUl#54~21EHx$MJf$*z>BJbTIKmAB6f9MAt-C$$;48y;- z-feJ{5XRezVio<%=1AM&Pw`sz`n}_DPsueuRN=RGB(i-y$}WWFK8g-!yr(1Zja#eA z)40Ne=q@hRygZH-g|<}W1s74%ODWP|To?VXzZLpWfENZU)0glQ47o_%@z+Dx;(jQr{~Th6n^Oy_IwINzuZ%-V9mM^>-WG+NL&KwKSU|YyLS)Z(q22BMjE^5U zHaLeWJ&rurKZG&QJm;t^ZKwN8z>pjf479rw+qao>&mIPU@6LE$jh#7}Uso*>K=F70 z+UQhU_{`8+ws;<%d1kq6dSVC_AFLl;xSv2fz5c;$pMeLDQ=HIJ(V<hee9tQBIc zJO9Z4=2@w#wmuwb@ZR~yf#2vm#j`UOVu9kx-XPh+t_#2^bLb%b(Ccpl&_YN6kX-xg zw{ulyshnWpU}_A*78~%y*1fp42AYLz^XXMoQE-tmsV2f#j#*T=W&4mSI~x<)>Fr$8 zQ)i+Cr*I6Jr$DZ}G(b4|SENI1#wMbWrfDvZc1>oOdVpx|L7&d!IAJZQAji?7KP{eB z6`}?*&!YI8Q4Rqpz;(*0)YFeIYKLYmbGKp2)X?Ad|C99gVQrjuy6`h2VS_MeB(aa_F!8fqz)Qk{6X3z1BqL#HfWHs6O+?)qNJw{ecO%|$0nmC z(%Q>OU;6;6?bOX?-*aiNF2`rD-8Y$a;ti|3#p4g1aH)&*-s<_wV1yXW$Mf93`*;8D zJDjk>0c$wE>K*u4R*kD!pI0r$ZPM&=H&y9dZL;zdKlR8X(PSYD*SX@pvyom^4J5!D zloP%dOeFZ^gq6FdrSTuiV*sFJKoA;;_L20kLeb=n&yHMqu9q*Ng_X7sdFoNfE(O zd8xy&(mG2Ksu4CgiSIaQR-!f``oQ?kyDWTpFF+}B-B<@A-I2N#hh`_Q{@%Rgn`PGn zz&1g(qT293&G4b81)yLadB^x{$+}1gnv9MMNL|pxCuxClEH5)2M%GKIxKNSHh!u_^ zCQf1WA1rTOg~u+FO|pu-B79T=&bm<{p17j{UAg4LNUX=2+Y-#s=vc7iNP?r|sQSwo zbAoA|*HokkkOXMPlsb%JHu(gqrxrrg5uifD3W>yaTHY?6gD`Yq#Mo`4;v1#IQg~jt`W}bdUPs( zTNqOm_l8;>n78elK&X}pe?q2PA^iML z#R{2mqa?ndu3^JOvGT|>K&X8K@qkqK%mZ{O6xi$){<9ONdWMoqW~=4Jx%Zb~U z8%cw{5%(_^3d;xnOg5GV?){}w)M@|3|AAk-IQ!`BTdNxGW9%#$qiF&T0^TRR%}Yz5 zc^_o~zw?o35IN=R2EuJ`fCHPYiWwt}LzN9H;azxVf447?xp!A-%ojm}$QdiXceg{z zKi_HqW#_%SowT_#zCG06H8bO`P2ZDjQWcUK>fE(@4W)CVRd5N(!lq0p1@*q#Ul0hU zw2-upgHns3Jl(zfhs6>i?>-F?vY3FX?p|TM=s4h3XZJJvhv7aAgHegIK^-*I0rNE9 zlAe5!Rh;p1PjRuO77IBxK4aCPZNJE+Al59g)53Zi4T)wR&(r&2Po>^uoVZ!=HTbd zSV}70!{IP><#FgH#nBpqv3+F^#ywF^!7wq30^>f4Wt$h4W@i%^TOsg~AU5RStwl|E zJOWWhR7(Za=CJt&EKTO-Vs-N4Kx1ESz0CQ7D1>)0K564hBnB(%OnN=w>JAz^5t8LN z*X&=7b5(WcN*VE}sLk@>0_l$}7(bkwcFDNoZQogeeIkMbT*wOLc!;(^q18HxRC^#_ z43JrV*PE5dtC)Y&gEPfy=__Ur%qwPU#cgL5;_QSF8lU9?^M;WDCVisB|e+>EQY;XV7 z(fMddR(yop)ly9KUb5+JCwy&3F~;OG8tpsfZ9H_{UI7F0MQ@LR57uNJBxyG#lV%xd z>++`j9^IkQmLdtCrer1G`@pEc5uWK-jxO{X+aO2FVrU(ZuyrJ>xj0aQ3?;A>*$(G& z?C#6CT#ec!$FP3z?D>N6K*pt` zb7t=Q1HMVuid(>)34b_$DB>k6n7fMw$xp}raK3HA3#%OTuSU&GBOYPtv44bjZv4ex z%{=x8%#{Ph--c`Vi~sG{&Ocy!9De`~6~BD)U*7t)Kw1M>;Y7eDLfEe6yLUQ5awm6l z)Msp4eMjl+F9@aoIsiq42O!H&v4rqNeZ}}c@VgYnG7VG9P_~o!TK3Ad_;(w-@7xxx z>W80w4XjE}-7!j6u_lgXd0%E>S+-*Am^*dlYot02CsCcN-vt@J)Z3fAeVcd=6hM$O zMRU7R%j^xO(@`z41NZB`aBZ%;TiT5?-vSs@qw@^aM~dT}%o{Cv69-sF=AXDH{dou7(I586Da0FrFQw=o{l)}k;A z*8H=au#Pq=#y)pq9D$-ZVQZCTH3ck?EVWw@ZZ6!9Gtrzu z*Nb@wEP;=GEzOPf*apR`Ed4O%VH5xp_U`f(UA>`7JCPp)l0n)3PMy{ z-n^j2E~@$FaJ;zLmzmTADCe=##IPokr)?pg-BP!lW_iMjjdSx}#=*(XLXkMokF7<2 zH`H-q&qR$(2-+smy3t(s|N>y#%%O zCY+=s@S%gSJ}d)7pqNWinR7A+%nkU>inKsee3?nCg&R41>}PW@K^7VsFcc#{>?l&= zR+~$-L0uEKArihgid}91AT=e?5K}ia5?8$h+(7l$TtMb-BuO35r&%mRJr{?qHeHd+ zs{RK29gZ|#)U*-RdK%t=mtG%7#omhoutTcbH$IulrO~Qeh`c_orUC(Z)!4akbpY2Q z$Wdd5;qxV{nPskSPdl`mC{8GW` zx;r0z^HyS??7XHGgmek|S%ywngmWOmKbD(7_c2AvCcM6=ILZ_Fqd_YcI09edMW~?I z&Xa`~&Q2hGNsU)fywF+&cN&$($buB2Oa5#uI{(d{tcJ}Alpxt&{0h(CH&%nhxb9qt z)+-$~7j$GpCdT5T2?|QVw#ilJO01!iV&h*T8MPU}WHauS1P5p# zE&@+ zG6}$i%Wk9E=3%YOVZr2B2w*ot;x5^=d110Jxd;8mRzecGUY^K%_mb@OkFn0ZqeDzn-ib-&-gL40Ft+e=v@&En)zKWmm64jE4Hq-T8QpdA4(0$;*Q-h`kQUk zRmgej(G$(axQC%STrx_bAH zv@TTHsV*();DPhknYVoF^(Jc|&l_zIwZM>JIt@h_6dVOZg~aqBHXgw-);4}-Ku(Q( z5$_mnAHO=_Ln0>s*!d!w#Si>2`_>KcqvpL`!@69kVlYD5-qP(GSxP)YagXDcrbwxS z4@tgFu;b)`j`$Le97pga7CwpYxy(0BLsmpd4P*TSzZWd<=#eah-`;K%u26^P6aYN#Zj_Z+109p50mhSXJJ9qZy7DBeoTgE%(Z0^djE_OQ9X>oS+Xgan~Z(}18Ni&@RANb#PK zb5s^8-7f6$jMH#8*IJ^}DodDc7~X@>DkIzNMJP@69EelOfpAxMGkVHPsvQ#=R!;Nf zREiSK(rAqzlBG$VP{K-@8?01Qz{Z@=jHy$kJe&dT?O|EByKaV~$B?MY^)9Kjf`08w zD@YxQ_wLv_?CUmOWKVDXXKEz`3tPK$u{ki8r@1*}5L{?Qu`9m6!pzI%g`5v?tP-=Z zFWH!cwFBE>E@5r*dgu8(gRvRTUorUbzk&%oJYvX=)N$52>62zeL<%a+1f zaH5ApHOR6}$G1Pjx!hHCiQPw9ySzDUs8(9Qat2x5KE#juNbk|B$8L1YM}Z}fa7DIb z-(j3W)z(w}1A3{a04^<9XgQ#^dS)a7v}k4J$)r^T@85rUOxQ*EgGAWeP+jz%ysKFabkFFo+7yUf zGC{cYZ9@@Q&ZeVM86{##z!u!CSJ0AlykHzUi0N9IX_1w-iL1w^FmMl(ji<-j@RwrQ zURLO3;i^EKBdTH*@QP6%&rxCvd(r2}4mxg4B{=&xou=A7ipMp8$NEtwX z-{hp$i$WXszO|3QCgR>*z~1x4@Z?Io#GEub zUVV00MK6p`lG78@*Hbzc&#*K3Bv%#An@!}cz2i?bS54@tI9hnC zI1Q1v_oCp&wT_3@vc2;2 z444yWdogbqlsAH&^bA~5;?7h}_GF30jT%Qk4)oCpM5K#T^WP&r+kPO!9o=(p&Yat+PlK!F@ z7?dvEJd#qG#&^usn0m8fv^^Mnx4g9$fThPDq|9By-$LQ^UyVjRv- zfF4QCi4u-IGZ0@%OCVm?vMqk$1(;t!=R%B^5mNpiMUshJUJZ_~C7ApCSyi;7j&Wup z=t@EI;LGLem6ovs{t6%%Tz5O}q1KuCUqBa!*{w5!n2eiJN*RwzHy#=f@OGP=5dDBy z(@Uz*K#~|FAkAuVt~ZIUA}M_TP$-zONFI_H@^82RnM1K8RPntt8T#U@l5?SoSh2`01G*ka4TVRtViF4&Ha;wo6MQF)plj)RPiG%b=+1y7- z%Hato#Fjt93__+=PnVK|K7`$B?LvW`m# zo&EDT?(7DI{gk1ar>jyr!6Z4|e=END~7v{7Z*uOg24Trxz z4>?9qL|Bjf2C_O9&C(AeUu&3FZ9N2Gj7)oPWwd|4)9|m6)qS1%D z8fEOHrMMQ&XbqQ$A@Uf)50-rQ?j&FSM;>Znx>Fa2u~m6k8%19J$Ls0tdv{UPcA}i@ zVV)>^jYtB0bMOYQY$VAb#T3Uw2YNJUdLUGl^>usDG6@us9xCwwkp`P#zHJe#L~{1^ zgK7p@_T*XFIW|xMFsy3vQYb#t*(F`V1q(Jmm!eTk+w5$xWghxcfxJs-Xlkc04#*%n~qr$D1^*_#@^t9itEdAt?A&%F!LOd-2E7Ong`h&JTSTy>*SQq zQv7x~U2K8-vG;q=s&#`cu)XUhn?%m=Bc7LyMZjAS-6b! z)7~J~rm&gCXZi`oyeXkigvIgloJ)m_v~$k~Fz`($%PFCrQW`eRU0-5oig>u7o?#r6 z-VfuqNKGK4D&Mv90>gLvva*54Kp^VNn{pRxM7!cNb+PO;2&6bqD%OT>jygME`w*22 zpd;M?83Vcx$!gY)JFi7`xi^yUW3gvEF;s!X#ucJX$Ta-t{?A3MzmKq^HH=UZ2^v(G zCZj;qDS2FJ2zzL9g=Zg_z8>GmvJ~?u+=7?W>0)I&W0uQzr1W7Q)4PvDk0r9^(!;xmHXkxzN`?iSXI2wX~@i zLB!5ZZy;xdTJ+1UK_9oB5;vYab1cNdiHv5-H-u`K*9b#4a9-8geRUKvT%7H=wK^S5 z)|2@9R*X!@Dwc0+t2d)X6MG0}ZB5TbU9jsY2!C}dt%-Po%G+nOg%OtQEf@#atJJf0 zTp{o_P3&G1V{J&+qNpO=3b7p%XUlkFn&cOAKZyR=|Gu~W`%I%z+6t2bO+}A-R|4X@ z;s1S?5bM17tKquQ>|F)m@G| z|I1h}pFH0_F{R0qq}*8h&z<3`C(j?!=G}jdj6L)(o&TTn2~Dr->M0vzms zbDIx0mQuJW2kDR9zr zyaj4WN?iGN_^VNZ0tRBW?=ZL-+F-Da8Ov8uh6LvUVoAlJV{tj^VeFDMSTn%E=uI9U>oux-lqvYAZh#2Pd^*@%!d(E=J1N(iB~>bh@dR(=3XPB&=mm~_U0p5x|;tup~l$9DD~my zD3BNboK0b^T=eyEvCJ%Ud`+}Ekmxt7&yNjUIvldVcSn94Lyp%bfSwZjY0!0W50f={ z9Vy#^KfA@Hxnw+6#6io+M+$J?EoAi)lNfB#;p;4YpO#Qhxi!|p@QQWK2Ckkq)-@GI zbL=)-IB9j{YGlf+Z)c*$rUH3)0q`W@juCDTzZ``&Q_SZjU>%C(V;$z8cNF&6qei_+ z%Gdmx)sH?B_&m@Grc$~1PJ+5BnpM7&-K z(JYVOVQ9`yu~2bnrt*0Kzh$}H9_C@4ZC7c&5a*h| z-z;=BFGLQ7$VR5qC?-njrU07D<@O@Ayp>>h!Kjzdfr!PQ3i2iJ#T$DaG^(1)`9!*} zIsn+3LJh&SVItB-!-XK($h3nIl^rH=t#@od_MyHyb9G>BK+WamZ{5;&bR8HVD!g~d z9!#Nb-{Ep)^N%PwQjlDaGsjHIb z@T6M8bdr@s6#1#?sbVqjwu9lMzVysY)vd+k%F)6LC&M{kMopHY{8qN{-MLzqK-ln3 zWqsetaS+FoMhQuF3FjuTlS!oF_YhIMAA!f7%UDEHD&gsmO@V`5l*fqB-<%yW7R8m= zOJ32^z;CcU8GS`VtSb0yuF|%FaaMpUW|R)AW1~7J&?-3@ST$r(@`0( zE8<$2v$q~uJ&TjA@9C>Cu7FO5&yBLT4W5lTkr4L&&9h(pP9~9+n3l^yCXJt0oLG73 z58Cxv7$TA|tc%@Cl74GZDHz*;Zs%NS3<5r(6#}!9 zoH_`E^SGgac zb+9V*$w2Rdil{htM?*p2lSHTE&TRpjwZ6?B zM5BUauFoW}FBJMg5sSHE>=Eptp{o$XehajT?&_NdD!TLxqE_7$^D;6*z8Gc+ohbL{ zH)3f;!j&29qC11%eB|Z_DDva}-*;e4aM*ZytOZeUmbvTQiS2|~QA4k%`EB^hxgYOp zL$H1Gayqx9m)Ml}NQ?W)xjEdfeEA-PJ^baz>{AguoBmM_>&bK;fVg?^!n)|D*+#;> z)$(z@rtw`w2zoez#`!i%+#TO4ay7sGA_xG?G!_7xHiV*cdVLwo1i7plGS*WD%ut|L zSy)iX+wcKAy>*m}#FjG(C5FwBj?*>9qhK)zSqaYfG#8C3<#gg_T@V<%xAUBdTftxM z2+>KN=39o&_;2tKR)R5+>@YTdex|Mt2QTds@y#;C%g@nl-K%gzcGoSZlDvHLSWA~o zqSKNa%e#CAXBKAPBN6~<3Dc5rbE$3&Dw&n1^S+4W`!<@xb5PC_i@KWw5x$93g?|5+ThnU23FnV-BVX^OFYjS~ z3Q;y!M=QHvy}%LJ~G7YDqJv*PAn<6o5k{d;{d)c z#RSzsgLjTr8lh_N7mVZY>Rc;F5mv{j!Vy|EAuzovx$*XDT1&&?fVcN|RJTW9u58h| z(|6&b>wIslEpnp+I&W`cJp(T)D!JO02KUIkHP|D^rt9wARcp?h+afndVS^511hoUd zP!OJ2Z zxgPSQ%|VRbt^j8IVMs-T_RbxiBiutPM8Xw}TgtZs-5jb4FZEtu#<+WXIF%#YQL7Va z*KzeTP*)fGij zz?||H6>snlVC$Q%Gpv=JjVw%z@)=HR&&cLa|8(j~E>=6EJlyr^p9U_u$T}9N{NbY? z{s}G)y2ft=vTe3lNPuj7n})pMS_Jx2W0gtdfxOgIH-oO%lg`7Tcsa{)(u7pb3u+Mrx*v^xO8D4z^ z(Cd0G^$lMV4w(<*HI`_MTSw_XXk0Nwi+LH1;9Q8T2qHJ`)}O0hz67CS4r9q()Gi_jVafYQk)Y<8p1dEpWHCD_(M!UWm)2&U@SqL)+M z5rttyShdne{Og!ZF>CERaRTz6qQvf3t?y`aP{S?~Pgrm# zSjdV1iag=Y=0<__sFSI*L>xu$B!TZrZDy&&-oa6}s9Zv^g#9{_EHK9(W;-s(vEfLv#qILhs@t^9!bD z<#rQ(Mc&@lBZGx6!8VElU@6CzuxzF3?$Kh)i;Icv_~1l%68pG3n@Is~71?Ea^p6uQ zJ(y|t@`UUyWiN~=8&?BQMt1%aFj7XN^8l@D>R$^&UZbw8Gtuk4c?{WTEDGYf{-d#` z-z_eR{bTLp;1Ar3i^8^xUEi8PswVUnTc-yHn8iIZWy1s#aWu$gBXVT`Y= zwAry#q>koX%5E$bvRpOZokI+gp}s_^E0sVnqsovibUdsIdH5;91dWlnP(DL2m5>Gz4LCsS-Zmo7V{8% z#oc%BilndDGW*}}-4%a?hblB%BkSqAogEx(?FYrgxFz9hE(l;lEv01>x|wZ(M94*Y zN%Gf@;0S70nMNhqT0Hmhb)o)m3qo`!3K7h07Xi*0)@Dn_7nOUcq@oOFX6hggE~Fb* z=a-isqqQQOW?&N6(gRxoonuT)(5AEBA-l{D1>M$0q$`NKh)fR9osZ7XFH0(wc)2+f zEv}0L#XTvEZuRvJb5<%54)p`+*490vMDWRKGm&V zH5$BXq*IjO6T}*MGK+VReo5q)iR8l&?pmlR-*d{lg{TD%qw*>C#mB|n3HPJ3v*|k~ zND_bXzsPHS!Ee4fg?=!0Y>y|1i9~U&ZKvAX1?#w3O}@N(zsyA)QQ;7X_nYnkq%uQ z2qF~W-d&7K9@3jOjV!6m#-vg;)Zf#cbGg!Y#b)8Va9$fC5| z<6a~`M0D-~4q_o#&Ch}3cA=HQeC zs~<<3`NXqCeh-``tv*NChg#>d3$k88M7{!}ZaazcU2rirFIPdSIQeXY7goM|iOLcE zr$pFRolZ-?A&HlwooFF4y~?xHNcNAw(_~ z&=Wf>ow_+%hX(`PE>lJs+Zap2!}E3mDIyVm>dbUYdm$+xCn{1w-U-474MMh^Vo}+t zuZ>l9!Q0z=@1EjjO`YT=s7i>=s9%lV;N@($H+}c>0^2*Pj|UH!Rw(o^F-eAW4KIRq zS5wjm75@#64D%iWs5j2N0qZU*QMx7No0m$N*F| zM9=uR{UnLM!T^84#C03Lpj8J9Vj_a%d>uGco)ZZKb;$TEw7LFcVUf^m5R!6{!N8~mOoCM=u!zoCpH2BOT^|O zQcGd<6Td|4_QZGy6B&h3Ht8QxgzZ1%5euDP%y zpqJ9B1-jk#06gfu0syX+tqO>H%w#R!ap5LJNCncWA6_U3p%*@b>nD_K$YJD?iIB<_ z$ztJTm}GsJd=_Z-T$uar3XJC(w(86XUTN4?2!y$&TG_nv7_s!gPA}b;*s=@?ziFo(W|0?vX*=HR)B5Y&NODbhH%G~AeDZ+x}^ehwPVo3MB^AW56EQS7T!(!BxCf$iB#vD5-YMjhI$ zhE1Iq==`B}+0?)CLOMpvBI$zAJetv0Q))efjzNnrv!us24Pl<|S|m&4eZ=?2zo zStNZfNWAirv35AJ!ARri*O7A*@?=IYA{=STWHRzr&^+y#ksOZXAoyFPoNxrVy$Q95 zKz^tl8t+DnP9$5ZhkPoOb$dJmumVYJrxPusUkxs&G&cr{-;u~6aAVVRTuB+v7wBJ| z(s0)Rf-zyt?kS8X@ROxX{0Jf!UWE>zHkS(~A2W&$f&Ls$gvK%A@nChQz4|Md6J77_ z9hQo36Ab-UAMm5mZz+xeL@}=u@-q*9r1Qi<6!`~`lFqQDRQz$l3|$UwUC-Q=kK4lJ z?IHI}?IZXN&hqwn)%aZQFP8ycurU>N9fNuC2-<8sJGi%{C%ZJP!h?n>=o?;`l<}G! zIH7#7_jlNip<2ahY^dPe(`rSK99pTyjix}p)dzbw5fS&{NQ5W|U zUJ^J6uCb0_JP+2gaClus$Y9frNJz&c!t`MveLrBKd2AH)D+|wXmf(eI-L%(>p+38l zQlCF~nghA+O%kR@`kU(IdC}fi=_#(An&H>s3_*&tG?H&*#-V%fZ5R#&)Dj03mLXBI zm=gpNXlQNS)6=S*kkzN(2RZL5p2AzR0!bbOlW8`FE853VMkcpJIS+6=7D2H!{J}_jM0pr3bZ`MElaBRCQKC9`W8W7#@wqDsT^}`8nYwhvPl;B|v9p z^=(Ww2Na(E28*ekGJtzBnS|9OTagA`>tcvmv3llRWI=GFtMK;3%~2XHk2?l&*v6z? zL^*3WNTZ{Dg4plt2E?rFNtBwEk&3D?PXilb7)xyAklT?cr;Inot{!Xg6Xdaq-~#OE zyM(l4xs5l@GJ_zd`QH%E{>oMOH~04bPWS<1S7UnzFiag`+>|u9nI;Ryj#tg*adc59 z*^Q&L^Xlk+hJQ=N#=}e${F(Q{Q@M+|-Hng){9r9P00pamVuAt(fNQ$CU}mB|v)Y z5oanWTfHk@XzfBv0?qpat)1ux&2x1gQvE`|bivHO@JjViYnQ5~NS!E~Kk=J9I=o0r zQ92TEZ*qd6lRKX|(eov*#>pPi4@XC^%kjgMG)w~S>t z{auwF!i_*gMRCN5{`@h#iqH?d57 z1cd@=A=%(u5`^OVeO=mo+G6Yy+Q&cW@v=|<&qc`i`swh=FvddW#kJsa#{7xnw6O{| zL3=@Hz-} zGoHNoHX^l~jrDv%pruDxVP*+mFx1kOs4Tz_ktU~o;f=2+q@U>#$ALrJD|^%oTRwPo zknWKYZ&ZT*39D)XLyKq(ls}qD{l6SJbihAfTMUqNcx+%<>%{}U&!5fC6(`o6Xd6F( zxvDvf%y3~;pyexIZh{cYTuNV6))9YZB};H#SIeNb*&X-gCrJ@c za2*~AW*PF>d=9i=Q+K|9Mx^0QX=El5T6kaw;s7iOEZevT^nB(V%d}5LqmzJ^6+ObQ z3X;^pFw${iuK|#0S6X0qFprD$_gAF9sj8i3$PYhj3-yjn(o*SYTWESdr`}owKbkD+ znxKnHG^U>61?Qn_5oj#}EQ{8|1~)qBTabS!V)Ax#Qy`O(tYhO>u0>{w=@5s?{a|}Q zce!}tg73 zJO-E@Gr1IS_p_gU>z?a{Q)5Us?93b7kG6ge1v2Txhgrg>(9(E~_v?#r)M3noAL~dR z|MWG^)&bl8Oae_Xh;(UT3TeR?AQSZQ5*mv;WLXdDW9^aI`k3AnzwmWrJftB>vGak! zs?&wMM4gU&cw18^C%(&MYo5j&pxQ}1ib~^z)*!Q1kf31*Y}!HJS0QR0Ka(!!+38FpzvbwKnl$= zf;WtEa3G^xD3B3{ZAJbr{Az2{w@bQGf@HNbgL*30&5+Tr;FwC5hKJ);N?s@6h6K4) zLMhK4Zwp-=RMm^qx{FH2``oeU99X4;N1fx9J;S;#Fh`FgDr))LSuA8=WP)=VL)L5EWWivFWU^%9ghk3LkoHE-Qiq3b7C=!K3n&q3|-MdCX z)56l{N!%aht%1uomg8u%a;=4LEIdoVtpB#JcJBjH`)7@%9Ok#0w8z-dZ=coa5KM3e&1+ewfV4oePi2KM(+Vq0;;L(6x!nTY>wP zb+{W=BmEadvWne)c=W?7D~7zj1;W@U^2nYQL$Ud8?9ODkzj}zSoteYqWIWoU59eYD z0Ejg$(V3|_tR_stEL^fg=W;kW9@vL8L(V&A)Zv)f9hdaS3Rv7@rRrg++ z{WgO{1QIvzdmr(s83XR2mkQrc0Mpg%cJgm*pD#d4MhvZAGTJ%rFXezejP zf(TCz#zn#xQpN?mmeL;?`((7=Z_%>8gwOy(Ck{ZHaL7ZFtV3OpaY6a3{2kP>gp+B^ z$zO3MNuQca*QW0#AF+)wFPjtF?270ka)a%z`iKo*vN%6BQ+zkxhlRuj*T;Co2RBMssqXtaSn~Ddv{9jvt5CN2rF6c-W@Yf;}WaIzz;ZQtPJbu z`}o9qXDp@`5Rt&%_r4L{dhnBDvOaQMsTxM)AoB2PB`^ytu5vXT60D%~?l%c&q1T(@ z+gP5K$-W6q&Sm-hUF6AR=Uj?a?C%I;e2NS(I{rKU7VdN+cbVhcD5*S8+}115_32Z3P>4h{%V|SK=y-FZ*wXRM8u#WEAJxGY9h+WVxYuc zTHaaJkBx^;%coNct^&SN!qH1l(`hr3^EjPCGs6MayJ-~cLZ5Z*+ zu>S?&1U%@AE`9@v*Nb8QWdw1m;Yy4YoZ`%5gK__AHt`}QpRb%Q7N25x9y+iAcXp1! z%%I&t&cp*0`#nlGQLrdQLlovk{zj7dHu*b~p=?rdBmJ0&@AS6}WaeTn<759<0C~%E z`VZi^TPA%qIyP8mk%4oha@mOhb1gShhkl^&tB`Zz{bQM2N>W~w!{&nV3jatTanVL4 zTL%w@>8^R4nTzQ2?{S8Y4;+QumwzgMcJ)1W-Izp_oO$B-U~w_#)q^TSzIv}^U}<sg9vYl<#O)C?S41jwg6)rb30yiTxj}UJ2mt3Ahr#!8lrq0B#iIKmqAMY{2RLYh7 zEe`B;KRo92r3I0-b;!iCRhx?mr-;(T(A*oF<}_OUp2DJx=e?;(O?`_9zoFD0IWlVE z|0euPI5r1*m`_6jp8R3+ms@kGqz_yaVGcH1T$wC+lL?W7TR>3AKD@My7JuTP7~u$3 zK*Aihg?SJh%o<)g=*d9qlC+`C$jZ+W=>TmIS~}AN`4<-$y|EQ0in%Xx$z5C#F$<(6 zmY$zs-+aee*#+A=Z@M_~YtG!?!yI+QXz>yeUwQQy3aNScIRAug3+er9Vu`#benvq7IB{mcD9iIQ@j}AASvf^?k4b!ppR>>*+3l&`*<5Wrw6&0AxphrZcy+7- zHh=>K);1X5CcZ}{VBKBYj%QrN)5`v)YN0z>&S{?vCbz60)^;d2gWUR)H;*0YS@6zb zOJ-Wwnw6Y&&jG|5yDejy&4TFcMzq3DgM@mV_tnN(QEHdb$ZCsQKS@O_T zfjl&U=3>o-o1>Vmx3G2HXg|+Q0*+RVrwM*jd9fL98)E9|#A~fyNY6zSq8rrhsC3qtd*TMP$Tdh3sAh^igO&rKZgcmG7s+lwkxi{G2eCgI!Q> zf|&&{R|n2Umapg3Bp}%~uVw)V!+93Y-xpO8W+`3RoSCat9Jm&3vj}*@MNGDAT~2%B z?vBaH-wlK5hYqzEKr!J)z=9=^Tu+3sYx%eBF>6opzln4yg13S@Qr3Cg_ zJhIo*BHQkU7p`m_U3tku7Z)x5ncINzj-k(JcWKSypW~ZQPql)m$*_Qv@g`g~6VS>L z5Q$5fJUx5-L!`0PA}$Wp9ecEOcsP>+nm$6_t@(k*TRWH6buiYW5{=+=f-hV zuanjl7)6h7Srf!}6A9-EqueBHF2MM6_>+O;CR8{lUmyQuU;#OpNjH1OkJ=B{L#h_f z`1MrY^N?asy@Nnn3n*pG*Rz8YEnT&615^VBChmg8>aTAK7>icI`QgYusgU!U_(bvd^P(1pnDpv zYK9pVUv}u(WC@jc7@A2k`Jcmyb;m1uB0R>CTwKX<_%8jPpPm{=RVF*H4kowT(n(_0 zS93)EMy{ufJhlYn#7@KTbeUZ1Gg8G;5ESXtW>rA4_JJw@~r3F?#a^(|T=1sH?{LuKvt3{bQE1p`eRJ0b8k_x`eZ{0OuUxnkEndb!zad`u z0MmpcB7hIUWEdN>40W0H`w{kX3wlE4?dGw8F~2C%iSs{w8<2*n&o^C8eS(fd)U?c#NTXP2!POQSBJCME)IP%+C3kmIXC;sX!3uo;N94zoSG_cBmDM; zshk!EVDvEuh3#CvM8tD9{(JeI-IoMN$cv+V%_1-I#;Hbq=Z4isqdVIFGhrKoVAfGut_Mt84rw|Pt- z#FJqnjOm5ZL}=@3-Ceet_5Qwd_KZGZfHu0zxBRk^{9f7b9}OiW=jrqLygu*u>mm7W z?0X;UFF&u$I~9^Rrjtpr#0Qc;Gg5E_j*e0W0oX@Dkz2@J}%tm?2tjK=n4$ z=#Olr_-x{HGO`a#?f212qq$(ZpKD{VitcKGAyb(90TEu+1-^&fhlSZE23SSWS}4wr z=dNTS9>@L&;xx>90WZxSXVX~;8=!o>um|H3{`bE$BTcm7)sshFgelwOgnx7wkllh+ z-g|;(ZSJ#OSWB+3Er(!Un_b`57W@^;h&k%M`XO(Sf#k2pre1y19iK2TPe@H_j{Epf zZX^w%H)6SZ_DJ2LM8WSz$DZwqyhia)(bC=KRw?5yhx5SBqb;^-jl2iDFcNtuyEeuS znc2WPT0X0DJ^@~Cc6BK72@y;^jn%g5ZYaQT>g=(iGpfR7Qp(3Ujn&G}F`;1Xx5)@n z#Nw#DgXQ8!v~vpu!Z%cr5tYIT%Ch`0t^ABg|3)*8l_~P;K!C(s!(wqo=rE0{J=1_0Atv-vsGJ<-2I*75?-9%A!4b zQOESL#Wa^`PIsQbalx}ln7U5PG?E6 z9J31+eDvK0HjOzekWK!$1J#G?!EbKyEG;P+n+E+x34Nk(?#7ZgIw7<6Tr@*HD0m2+ zI|dEbP-3jEO7d~UxAy_7L4_=2anL%dJXk&f9m1Lwn2^D}W9{PJK+BGDZrC_oS;#}J0G%1tSXPUkCpJVief?)!H58))D=X0IRSDBrTK|D1)f(6; zU+ek^aZZvbuASEN={b{?B1hnw4r8eI2=hn-wk6=~IsXih)D$xmUj6&uo&KZMKf4@< z27!V%|GxU!7ZV2Z}T{z z-^wPUEGwym7ba$FmfATjbcTr!OAqUUE74^f623M^Y;5VuHx>qn9)h~7yaKAeFN3L+ zfE1Y=P4rP%>3GY;1RTMM@aI0{4G9Xo7-b5Id(mV4kV|zp!t1}LBch@1`fu>M!4c95 zF}oR(LokBD;IxH4@T)ihd1LXA#TqHWQ8X{b7N^nVe$l2q;iw^){a~pTk41TFIyh_P zb;#HV0<}J~sS_Jm4s#GhfDX;~B&Tb^aPN5iHC&8BV?D27bJ)X$Mcc%_V6;-5q z!vK?xc3Eclrtw}3=S42Fb=gQ$Khmxk5Q)u455RxTNUL_~=VpCi2c|pcb~tcs>}fd~ z@zRn^oJHA3YZJSiBwAaM8I8#qS(V)Yhny8k62j_t*3ZN`?UI$|{+dWq_Om6l6oCIT zvgNSkVo6)MK&*t(QF2DIwv9b|gx3Mnpzp+-V^WKdq{HjY-SUsj3+#4U+5xAL%prpl zW!DvOc(Hj3EmqA;i!j@W{{3ryf;gYrg#NzsSLSkZJ_lBb4?{(rr^J|TbmWnI4+c$T z2*Tn3XnG!YJK-{_h}LP>Oq=8JLVkOV%YnW(OYZLv`7ulxhYe0mz%@sk)F$_r|LBae zfQN1AZ%a*CM2`GGXdXZrTY6YW9%;DVg&2l*-wz;XCxV6#CS;s2UY4$UCKH-wPHFX>aid(O4!s+FxQtVw<$+0YIoqfXj{mgSmMA~c=)|z>zF|$6T{EBua;c{?*gCZKhMO1LOSnlWuzGH4= z2TBosb1U*!rpM=_rFDAkp^Ys>mR>}v90la47DQlB_PDu+*K%YMe1Rwd+%CWK>8uo2 z(6lM;DZ~tv3xCAOPFnsi@GvrVwoZ6enLL#+chL9W(Yda{S`cH&!!?25P3b4m~-VXNNb;9j6252G`0HcE~h z%Bh^UVOT|ji3%c9Kz<7T5+&c%pWNZovr@zPLd#t3;J29kCpwQT8 zZ+upu86EfQVlCR?#1glfQvjqNf#R?-4@B92H!o>>x@7$uIoG<}93p`^b5_oPXy+0h zGW9}Hxm#DFfR9MY=^!sPsf{h934p0py>!Ifu`Z4VepL}_4(uQG0mz<@RM-(#2OOhqKw*Cs*t~>&sML;u%%qu}_=&rq z6A6>2)U90LNfuird?Wn|W*uiBIjb7`%xv6q6wOfHBzl%5-0ONw+ww!3!M;GVvZp0x zM;ovEcQ}f;J!HUv3J;z*2`A7Ya%(=t$z=4R^WCur$c6zC>vktdhC=y?r2d(jJ9q=- z6f*!PX}t*j&oI8pBM}{s?CA+8|mI6OZm>`HjYI#aXo@+pF4H*B>S@xg2QP7hpB zl*Re^;DgQ9g0TYp+s6Cb+oxI7F|sy!iHs{F1sXu2GS1IwtAM?-JOq?YhW`NnM)c zYF;Kjo0qseJHE)rk(wS;X|26Op*CTFh*)!3(%F8$dw!m08!T4fzd7X+ksFJDd&Y`2 zOFUVwn@!v_B3#?0PI!U(PHkQ`5_1v~$*5c^Gyry2P9g^!pW{EHfvlC#trGFEQXFRD zvT%psx9h}Q5IE8GF_y%RPJD!o(L0~PwgeTi%y$L?iLEc#k{J{WER4_u<|WB=Uw^zt zD_C#DxaCOQ3wD>CV4gamBQ#BNR9f8Af z<~P#wct^z``}NmYgO(P;!XqsQueU^N@Jv^D>>(rmcM={d&|IEHL9xA~U3dm7&92(Q ziBO#PQvAM6g%fu16%08!EyuH@tm!+4I?mus8@R*fM()u>$!s52A6pc#8t*6EzLGeg zIAhiEt84&aS^)fwpA=(qVm9DKX^f`(rN=3GtG(LlzY`+dbFOQxGEJuhGxn9$*8Ouv zlT#VJWGahB7Q;SV&ER&M)$flfc(S&aVmCIV8Hr?SKH6e5dKXwCmbU!%!w(lxIOh$| zUh4v&)VjHK=!RC-b0IIAVSjte&kS(%B7uyeX<3!ARJI<3g^#sR?cg6)upv8`RRyi! zgs_fCclYGBpM_hr_hmi}APoMF%Xy}FMpObPYh)z#y7O|}Q zZQg(iqfTC{)KBxOKergzDzX*}{l+bA?F!g=JZqj5-z%+Kgc{`=gfW?|vUz1?(8RyZ zsUGKcb7c^p?zD}LX^TPN`(?I5(2?bJL@TyQlSf~cDKtxURq@>S#6TuQ9{*nL=3+B5 zcmDo&;Zq*TB7+J+11PecIDeJp)df;n?4^YgfV?xl@0-DQXsyMTt{ZqX2N(01@)&A3 zGRuKP$)?i8MdYiE*;Uxw7y=Z(<096%<$AKc`NAc1KK$a=`@Xz%Ht+~7a~r?Bc%7u^ zS+dLU**mVpn3PRBK3jgm?&Rw~nOc4#`1<+ z*g|W8^b-9iqT|G#;DE=>}sCTcz@* z^8QdF@t!uf${Bb0u~_?7*k&BakG>Ckp`uuv*09jMN8~l>QSMjf3z(#9+Gik;*M>2Y zY)cc~0&M6xC=d-$<9tmjWpO``uH=$Jc7B~xm5yaWiF;%jze;g6l1Iu;9w{_HGFruM zh1M$lUosHB;oK1rDgA5@asIv$t!JZgUbI1uXM^`{4PYcg4#Q;?PCk{94He2DtTTSl zk_!=X7=tr8fZsFBKmZ~JvSaU(e@rnk1CcNAQ$^g1d1(7)*dQ_G-MwHBhT;ZM1dhaA zc{o$9b7n{g{b^ErTf_$`=Qc63%GK<)5wE$1`3Yo$MFUrPZ38VdFuBZDHWo_kW`1#$ zz21c&*|YzQ z8%Yg*-_w~TPRUK=+g!-*RaTUcoPZNfjrIjPa;q*q{X)=`9rBWwXx2xuD|Bp2*Ez6B zM^#0M6tXE!=Ooeowz9*ABH;FtdJRc5kFO-!WF~Fof2h-bL-=husP%t~ImukwL`b_- zkae<^GbiEw(w|l<>|=y4vc=pvMjJv?nP8BlZlqJ*^u2SRk*L0V>4=G2jG;Z2Tj>hE zlZ7oCR-JQ9w)PIirv_Xw9Vn}{RfAEgvZ*WCNJay^O&z!Am9CP;+Gzn*Y>iO9qug|* zLiTX;?3;;)>6}f`q7ESymTblHOqjjbJk3~3tp=RJUOc^(ut`!_q@yBIK}iKCBO^1= zrrnEKqS7$2;Ni$am`edfa>8iA5snG?y?*PhIY8#B$sV4KBq7vCxjpv<^Oxhl_@C@5 zaFCEF7a-|5+Miq{osOEq+w=N2~HT-+>u4MRrrpCjh0yBN$gY?AK{u1KZOgmM7r` zNxdt*zO>BcBrtD-B+a0#;QN4;ori%`oGx~V$f^3kvkljdbc78sE;_*=w*A@>`(BsF84?ysgeY#CeaUadmG3IBsdgE4K>;$W0dd`)R=22EEAn9zI%3C)qamjY=--cT`r zv|ANPW1s7bFJglcd@)nxkB12bLHsLx`#(Ge%-9N~9$ZtWy{>J3p38i+-)NZtLTB_` z(I%y?29LOuX=5)hEJ>!mkKxQi3ND8rzNqLQRHhv~Ve`641s0~Bj|cF|FdFh*X=7k?IQUK%FdT?aD;nQhcUu(=pZ5O4>gQ(q8%*v$i#q3D$30rGk7dXWM@t& z8lWiU>@GJwv=DL%vfq5#5Yr0MSmM5v7%P!cR(irDRZ1 z6laZ2e&s$g6OCBSyu8nb)cHGt0oqgWAq%&HXK}q1Gl1yWf3npZ?P%kk+0{B2iw_0R zqW-RJMwSPiRwAw|jtzduT8Nlx0}Q0$;1%4LZLuo z=@#_4-DUOKkS+)kBDzhN$CPetXaa8A^OHuSwx;_u$h6RPv`qF4AWglJpve9S?-upVc5AEw1Qo4eL0QnV0Z~U^h zy&KGPgJ&-giiQqCg%%AD32RC~+O;~dG;;sNo^1758BI*pX({y|RbD|QA2czZY0Rn} zf)xvxS7%$q4yKLgC@r;XU+vqR)f*3q4236)$6|5it|{TIPz^ zoV;xfO9}$t58Omq1+f(Pm>e^Im|r%2uGM*(VDezox^`T=egtWf1}&9nF79HV8_Ohy zj<8?;@-OSBMkl=JS5U$;hdv*?G&JfhVA5I(K2Q1FYqau&{E75D`T3WZ9I>zl!@(!7 zeR&B@PRxg;KgPex|A}+$`QB&Yi{Nw5@TBMapB)?T)_^C;(eTtVj~sKfGnhn^S@(=H zYvtEOIOIVd;vkJb>s{vQb2-qs=g47nV3y+Et%|1!A;CyGA^M&Je4+l> z)Q#Z@FZXl&(eClQ@$QZwfuY#-VaybMe%s+4<2Q!MvuKq1Z+Wh9-PZ z5V4q1$X|3C;O5%K_|T9MCLb})R*NuiB{F}n_VjPo{zYyX#=07f%>U2*&;RBZ(ruT) za|f78*;Vn*kcCg(?S?>LK~Cj!-PyIi2N5lB4tA@qa`osDy9#AOYPEWzYf0tPbPRd) z?D0`AdUq#ja%#BAy#$@C@Xg-d;hcdl>gon%L(^Ef`^zDVkJPW9>QzS#{0f?R%r({v z5iN-Vcx-<5##or9$M7Y8SxID78%svF1@=c2UAg{A6 zi1BBt91PEZPgXVN_gg^Gv+sQ#kmzKw<4TAnhi$c!Jj|#POjb0%*Xf*Om;NNOqUAIl z`#Qxmqu!RS$C8=kGi7E&x1-b6@HvU(r|o)eO>^#m-t}^r!?Js{0&*4+LI=1vYVE9v zIJXpQb(ekjvdshX_Emo8y;*&3rzt72CVd!11Rx)lh)uO%XyGq5uR7R)>jv(VX1r@&e$w6y;+-E;dhq$pgPnWj)batTJ<8F< z_jbA65gWv53!65@;|7+d5`ktO!javsh1rDj;O=r)XFM7q+*r9w`7=8|`|yghDSbC5 zD_nN3L7tlf_=>!My!E+RE`>QQ{8MP#?UnD9@=WWtR==Hab?Qy zxGP-PQY4@Y`=&d81STq=ZO+XKVZu+A0=ogk=)^y4>^$6tQxpD5d@l&OmeAbn+Elab z`)vam47bnCqTnP_^)jI?bF=bQir?FqI<)lS9DJK7;cpD?Jdr*m&aHAA6q5K?!u+0y zf7@t}sS1GMJ|h2u^BT^`#Ox$b6ZS=L)4g~Xcb z>n?Zvi$!&Ab~%RwWE%X1-tgQks-XT#V1nrZB#<#Q7ufAG6)~ zAyUb((z^PZ%Nxktth9m(1{#*0*B0@8TZpi?#J?1E%M?q=k*P;Lg`Np~A)}A1D;>ln zgg&&)u@d&}qjT=s9~`U z7v=+kl@K|8AY9PeA4*zj^!_PY{MFI3E!eZ+Y{c^i;inI@ngGmbnfMw|pC{ZC-Oc^y zS`8oESqP9sMpRNeDI8r85|x2iYj=UHOw7$Hk5l5UeR4;f#-T-=?!JD*k|T=ym`W?` zYs>vhxIPG+By~0t_joiK5zM8ALU5q5MLf#%X&a&L)Qg#|E>Nx~^UzG#7DIm736Z!>r zmLGn}g&#t3XBPjld;LKzOV6_#Z>l?jKT2k@_`HMm8sA;I;BMCdBoy|#!CUi0$1n5T zXo=X8d__$jykT#Yh$Zg~TyN!HiI7|GuYLY2Ewus{)NZeNL41Z(f141dG&U#``2qGL zr}IyEQ1ya=xyFCJdP1v$t7au_o$!L%-=_K62tOb$EyNHa!XklZ9dp+CAqg4@_c?`4 z2Zuj=3-w!@(P~w>dolmn8pJ2(eW~(3tZIYsi+4T*DfhFsZdpZl0#a^U@hF-tnEPI1 zXfcCkaVWO$v>LJOm!Tpa#$&*dU9~lJQ3Wrx_libCU~B4x6}HgUe;J@kJ>u-k;m-g4 z+Ig6gi<#QMXEs2!3*s!_{={@xs!I|Yb5)h;XS1tWXCiA2kLRIXRVGkmQI0FC|63(I zITB@dfhm_|8U-z+;uZrHGpUE_rv+^8hL~?3-UlZgX>l+>_0ZK_+yWGDIC$x&#fG>; z>OXoG<|?Xp$ih5`Pr0XBgSLD-JLup|Xn^@1DV98lmxnTUQ@FiDcpmck@-1R}Ovdc~ zNIA|PA?&Z?0}MvX=+|HS(i`1e9qPqAjwrvevorqNufLA`itzj@i?*ik2BJkBQPrqq zHDBd(NBv=~y7@+{3I-#^r@KGm}WzONew38Zj`2QRH3_Y7IZJt%zczi6>aK!~4z`Im{8yN=_x zhR=6QA%v5Afx(wO;BjDxE(`2AT=4n+DKdl^uD9^B3sZ|>-4GV0&)yx0McXjBF_xSbe)fqZ){tqxgz zN83;yQxnyefhEMW$`X*`Hw`DtjCH>n1P^01sVaOwzF+Zy>{wCqz^h+tkpUlJeQo##GxgoH!* zxSxH)mFqrxM2W|J57U8XGNS<1J6C)I1~cs2IbVGhA=#5#w7uzcA)E65KK0#5Av`wc>Td;p^Z)$j7vlF=FHN2&+fta< z_*|~)N-WY$2d#`P(7h?H(#~~^jk~?tD?db>S1RK1F*@=Xms8~k_NC8r;QXQdWq+9_ zT7}qHpHscCAe(6E*x{ZQGz`6kfdUvsHP%~bB|+MT27$@5!3nHgGZH3wlLJi6RP?AT z7f>hT*W^OVuo=rE@*8}2ubNl#sK8!*5dK}+M7AVLsf1t1@f7&(p%_w6%kA@XmExXK z8w3-9%{l=pXd$#})R%hl95f=vC!_5AJWn_4N*wSf=Tj@74l5MC+1I3AJ3iFikGr#5 zKM=bUBWn%~>j!Esk79=4&X4KEnpKz?o*TBQ{xKED(%h^13;VHm=`J5ov{(quI|Jf> znpCg>ZwE-<`l)hPw=8!^sg2q7M45pl0Sw<+2YVS=Y_!tJmbFNhB!N2IO1BJpjbI}k z0@)EJcMcI7h(Fo1jymYcNMvs@G%9Ri^S;`gs<>BpfGOkX_5Z)nf=f$sehd22Vp&P+^QVW=A<9lhGYujRc&)ML$B?^E_skf&K@^^2aI~---^`|6P}&bl3$`%H!C-bu;g=5QHHz)htk@sn!?7-(;W5`;N=VmLp`?{7--5l0X)QzO_%NhMm zW@sZ)Vx5RH3NrN-uFlS=>{|h7KQ89>U!E{5XMoawL4@B*9s^KHm6Q7&p!r4%(Sq0% znW4kx2*}A`MAuW!-?ETCrBU2tl=3M;$YXKEM2Y_tPrLu|4;336S~lZ#XQ2^n7>fId zkTXSLEvlr!@BBqH>(dL7a_6PRsJg`KivxrhYst-FlGyvbDlyjc*jxK0v6#E4sFP1{Mh2o)^4n9?) z0%8-$f3R!*8~ZI7W>L=lgnb&(HZvMAA^VIlXVIslf=NJgJodCT95L&;J(QCz@&oau z5)s3i?gmn2gM@jt+ASxPD`qlvKM|kaS>VAhh>ajEXq3>ZOr=vkYpJpr?GVzyqt9ra z3C{v&@lFM$Iwq5SVmCwS5rf%Q7iH5a=EX#j8Q-#=LY#nbk6xsuKG(Tc)Z#S2sHcE= zOX5%+%7BTGi=1pxP#dKYKeP|BDr^lS3`^(mY3yN?PGJB?NOtM9*3l3{Z`4<&`yhB- zhy%A#@|jlDG778{s$_;?;Ng*v-R*6TxX(=ZOm@Mm5K35s*(=i#b5ewxB+@raYOZ(* z9zlvs3a4F52~LwvnXJC)2LIQIgQ;Q;kV$}6J#(HCWV6DWb!?{yWQPZj`@K&4QIY+Q zfrG!39!lzgPM%=feF=YwWr`N3&6SZ%ok$SU9Uz4Le^I|QV{R~qg1VJeflJKC!ARn9 z3v6Ln9Mpo!;Zl^F4@9nregi7gE_})b_9hj%i)Q~+asfs~l78hpW88vQk)*GZzr2_~ zVpm}jKVR=cWKjBrsmk#sB_&w(hBLE@{u1=hPF0Tlw^W&~=gEO_{!$L|-X9~R+y+FV z1Y?Axm(Fx#bXgG2~3wm{cVky4tJkxwQdLf<^v$c;w6hkcw@J_+-3K0 zEB2orxOT)5=DtI;oIFQVWS;9f+TwsFM>8JS*J8A8S5eLseyVq-5%GJ?2CM&{Uw*9VciVw6T73a-sC@ z^^ozrIB)c59ATcxjcP$c$l;34u(3enAtaQhlgUOqG~lzUxREGt6?eu4CG3NZ6*X;v z02YyY&JeG;%n+tasap-8*!YoPR9}7eEA2~41$6jb#6iKn%t;2fArcnGxtG<>d*7I>@j6|Hp9{(2-)NWhy zw)%sqNZzi1L!%|o)ilY$s9aG9Q!VA^UCtNr^!+~1hzF;sr?#^*Oba^?51(sAP?c3o zYnpn=jV2mPj_tn)fYd!00|~EY(5LqO?$Wg*o#6z}4mN?xSIL1iLLN-k$l>FN#Trd4 zq0gbC3~hTsFm3n63nTQB&(vr5Y=?)$YT~#I2Syg{_9$n{H~gA;l>hSLug)rqdLYeT zefs6aC96pKp8WKsk#Jj^5-`~hj1=PJ$#YMAx_<cM>WIT%C}*H^oj-(p zrv2BCdpyt*q2B7epl39d_K z<_Jl{?oRs$EhV>}f;+r{Rwa}UA1}S$m0g9&i7y2yH3=+LMt+*rm5?gEwyh@zEGUFDVdgjZ`j z1UcO#*LZjF#*19$^P7yLx@ipaL&Q4WR$e=9c9P#Hr8 zZL8Io{kij%yuH|u3UKn_?^RrtpS5?|W6UKyoG~N#VC-=t^EPhr#jp4f!gdeFbVJ5&Wd)PBD6H;)j_xGf9R?lqbHNjdC{d2T z8(XO6eMgkK(1gO+v+HNtHIX{nTTj>4EU0YYo@#woeN!#@ZW3d9w5b|<3b6ntXm~mE zuOg80y4_Y4UjP(^Z`*pT#iqlxV45VjZy8K2w=QqV1DsP<9cMB1K5rLfBrQ8(J9m9` zEC80=Z=knG@tIb8MXdAFo74hA%*V1p9YC@>=ATL$0z-~eggfn)#JxP4BxP`HlUvwu z7Y%l})3mX5p@7fOIZd0B`X^XxU+-{}YTsQ$%cjlcZU>rGr^cGx%0^6U`Ac4wn0tMz z@Oph5xPqPR6%DJP@@kvx9S->mRB$9f_lSw~`eB;Q>^VJldRS`nZ^w*yWAZdWnd%nl z=O#}N$5nS&NZ)^c81SP2bL6n^1h8ClpGq5)Hko9;EFvcn8J&fnl8w^Or#(VnC40Alk)-sDHB&pE^%ag1{Ur z2f^7gwOVMk10P8)V3KNxb{mJVj_(KEZKK7~$uMZg;hRc699vqz@5vHje_BNQFFV&J zApMnC8&o8;@1G6%X9`f3Vv-Uc?T%lm0W*p)tQhvKqk?WqG;w!S`~k({yN{Km=u`)6 zjXAeX4g_?>gdP0GC>#^;tUXNFKq*S0v=huuObhI_OrWp-B=RsbqC9|TQQA4ZYh=i) zMxBHRY0Wc>+Th%rxXm1w(#)0om%w)$?So1rm10C3z|IaeA7?zkEZ0(5jDDb+O6-!w zj`({D4tIo()Riqgp?SqjmR;^+Hk}%sWx@FQ1JdIb>jZNmcOzmlJAxVPawgD1v=>V3 zaOPl5=_oOlE?KQ-csP!*Es~HPClrQ7_3`n(fhCrr#7ZK*e{i5i)le3crYT?AMzzog zlqya3&Zt911C678hVwYW0-=0eL_AmK4xLe*Ch#1$n>|jGj>84y*%$FowDW&UFI=n~ zal!&L_yo`z#S&UL8PcPo%TdLJv>~ErFHAA7Z#39%qebxs0}K~v z=A_6MG?qwzcHVk_|1)3wCiTJ;871T$I>Iv-B85rv17_HK+7{uprgReLu1t++U+8?L zn&Qe4=QYb2?Z8)bG;%MfvCvB-%WIpj9VsX6A0)X8fb__wyi!aNPy|()c|#o6+}E*Ok4fHHb28`#)B9jpmj6*QDbWQh`+3ASi_oHKB|Pzo<<1& z-3sVA3_)TqtA*2jU>)2RDx=}WHeW`0yQby_Ohh#0)+DNNzI%#|-cY0;oU*$W4p;Bt z;@IbV1f1}_6<*|=!x8H$R67c-n9HkQJlc)nr~ITM9_xUb6UfhN#RGZl;%Qf8eKKRJ zKubRw!KVLzD?(=m6|I#xcjw(+(lVOM`!{U=U;^$Gr`>cnJt}T!8^58R`C`u(3{&Aj zY^#*fyniai>owxV;HAr#3$Zh3`tnkP;Y^)kYQ9u>wj%)FI&b0%-9Ul7h-Ek$~AEfzP zpM5eST9R1yx!;!eLq--B_ch^u+Z~GvyJO^9D=qBnyD)XOg?K}Dg*59A5}0lghP&w^ z&WlMnvKs?~(ZzPo{M^V5gnf8N8MbN1iRF-fA(Z6o4i9{;mPFFL{=@?4H3Gu{!38!f z3uaWpd!aM&KhV!9OfmuZf;{W`!)BMzyL~g{JgnP1SYKw{-4xHo`H#jIV zbHIER6+GIgyu@6EcI8!rMAL6x!|Tt6S9f;^I~k`8ilq&gb>a zcQGxQ3&aN~rXHu4R~XVjjU_t<3oWA{=T>{s2T06YO}S?_M^@}cDQ?KauQ+_86x_2r77|P=Hu&QjW(|8qfq$V;VVi7Kw4+8< zD6z#>6&^C8Vkj=>k`MMW_uthPAepD?eS7YT5ewT}8`zo??F3+H1P!#GeK4KkGWlw{ zdJt_SC!r8qkDA*VfY?Dt%^CbOT?y(H(>Pf<2&$V5NI*7$<0zUF`{$fOG|O<%9}sre zY7Zs?-+yLy*f9|V|Gc9mtM(s36MCg|HET&$O!?E0%JaR$*|pM%WXbes&cILP(m7!J|N1=r9|tnYil86 znBxGPBWa8*zkBE=>V7q&Mr{RQe78hq{xjo|P;m*qwMoi?s zkGoqgemsl@ilS{`F<74B(Dsll2oPYfu546b%fEv7Fb5D`Rl@L$gh?jx?crqEEv}%@ z#tirxVc(VziexaC3YtLg07dgUe!nhVNuJiWG&|RCI z{2$9a;XzrjP%s3$)AnSoy&c4XSV}pW8&rD0I$7%wojR1mu#9%(Bcp9t=!gR9jh>b)5 zxk!lkR*@fooJLiZ*Q7mr#Dun`bw&l1C)~|i_0k459%eR@A=cGRZX$$l^n>@D>oS)! z(z>FWD;@;Ji^Ial?i6Epgr)c}fm3aJjo->z0q~}7x*bc=MJVBOBC! zYDx-d+88ipQnGNCwTF0|LlW+8<^lqYDJf}Z_#zUQ#7x5VF?#0lGBC~|im%tdd(m)K zjclX?6ed^<+K3B>86g_UqO~1t_#%(jK8h0l z9bj$KVk9CbXd0znFBqz(YKA>NH7Ggg01=!y$1Wac{+D8OydE`Rp5deFSXe}DUxx!M z`A0Y!gCDo^Dv3;I1w_tlmPt|R%;Fx%IPol)0^}br#^+~qs``-A&A!5dfR|^k;)n3J zw)ld#kXeSW-PHL+Kr_An4nhf)j*h|G^HsrLqBv4YLLox{9HJi~Y;aLIL;_#a5_txQ1m&~#m{iEN((IMh8o-9G+A@l&zhKe z?b&2RBlom~!u`4Inu?wlqa|P=k(rA2=rk>`c33oB-YsEy{7ywfL#JIJyR)Fa^>Zkl zRo<@{K47Xh)79|^ON7E=)`PMV%={{imW5CN7Mf>b?a)%UObgx9fdQ`nBf&YHEN9wJ zwseHu8s>@Jm5z>fi0wBQheb$s-CG`Wpk7B9<6~P8?^mpuD*dVwAx!0>7LZ|-36C%K zBM^@Bmi`s;T(MH6>R~9TR*QA#BgSUrztXP+~P{Ww}ZVdOj3MNKJ3DbN-Eu>Xc(3{SywCWFOrY(QT z8}}WoO!*v?w|zAiE+vl;Ijir>i~GlCX1|OJrl$SlopvjVc>AYzjCe;?NFjbV&PIu@ z@1e7UQ}irq2qr*1`HVlxn)VNlV}ptkOa-jq4T|+S6!Emj+7!*Sd&dZEoDgQ4N6P!_ z+GYYQHP=OKhmKV7BC5UCtK_D1IP3M zlXU6`dk;}N0eC6{zbtFP56-6v=f-H@)TK~xgZ%qnKE1xNzCK^>gu)-h;!LfEd7S;I z$Je?qpS`CIPxHB-P3ClQ>^+vk{79|&?OH>XB|Aj2ys21; z+qJ_u22q>Ql-u+Fod%KQ)h*rmMi_sh#Xq%W5(#l(KmLmOTM;sP0U{aZQBH$b5Hgwi zu5Ov)wx0>q>YUFvp-?wu83hlGA-UN2-HT%`j*rC{a^wO0Dk|gOH^FK-u$%A<+!f+W z@`DF}^WW)MeH^5GCdx~@G=K536b7KM)YSoz1 zhL02Qu=6{>eCoP05o!8pxukr>3NrY?fRsz;uUF}De;m#|?(ze5IPgdIh zWt;iHFkR1XJ>)JuvQS7Ac3rQ2fUd`WI>wX3uhR7~h~JsCCeY{bc4l48Dfijq3)uZK zf%_*s1;Nw@hI`dW>i*%pb}W75q1`!EvJ5-s-QAP?U>GQYEX&1zLMSjB3RjhDWqWng*;#6V+mMr&zD+*{xdQb=;k zP7b2dRVkj=6SNyD?swQjL5g+JJiCl+WC6+cCdt&6v7@aD)qGR`}$A>9I+;dP2C) zsL~U<$PW*n|D<;eX*&Y25y?~HL7F=?*%$vG%+5H<_fG-;V1k7K1|NJK@5q&7K8pB0 zva1UgBSzM9!+q{}!Jq@6ui0HdkkicV>IdPp1}hsL5roQ(DyI8k!V}rUR0X2BaYaK@ z=Lf5;9L3Cte_E#Lj@}$boep*uG78OUyM}3XHqO%BH^)wo$uoX$WF_IYN0L4sRx~Yu zwr5pQV`&k7Ijj^o*TFlVb?V9Ir7u74u=5YHG6`lZ2b2}hh;5hm#swjCqJx2qne2#aUjD|t1)E=O;piZic=X2ZlkonY&;Fm z^0mp#r!3$fO9vY8-_j1)1i-t3k)CGlb{XxUw<&%rqiX*Hd`3s^ZTwjE6Y_0B5f1z< zk2{Q!C2nPwD?i!zf#0g65nv}~2t=EN+_%cfZuD9TM3Tuv-&Y)}Lnng-uHNUc`;luS z|B@Xt;;W_qHKzl?qj zfdvBrUL_gYWH@sHpf%V%FMH-@Bmajv;QZUB zZQGVh>u{ok`6v1cM0|s(41APnAihi(SyRd&ho&@7Xm$#NGTp10b=q1RO~>s_2?zyv z_$h_xB90PmHhu;tvoeEXtT~0Wi0gsr^*)jqIlm?vu1#zP$_KsllZ|6%Q~_O&BK(e@ z|MGZhgeMV-h?8X#OCBQdud{`p-2^AcQ=pM&3qOT~5gc3KVpGF`ks*|_rHwcr{=!A{ zt}|%yTH@qXu%KyWN-F#`d@(fY0gelPva|40!>1lTgOOqFgsDF!@u)XmElc?{^(>0O zzC+mcm@C=8;=Yx^jU~oVI6(ntsYVG#=-mgy7cWfBsQw^!bXNAjIQfPy$WpsBM%X{H@zzQ5mxLc79I0=2QN#?E0+ zcooVupV0%XR#oak*OSR==s+yn{G9X^o9_u8UF8>7qX<-j)_&CY3~{ccq;q+L?aFq( zuU}>5k@qvJ@^Y%^<(`Ue!v9~k%EkSG@Fg+?E}^e(XO?U%A;LyyJSH1pGe-1mDGB^% zCiVfh04a+Pov7%K+iNu8EvAn>bAPxa%D&QcvPHFr3InD#F!GF}aZNMrAhb1v;-+h} zA&q5{QP&Vf9S^Z<0+#UHIQ_KJNa{j@}xPJqS&~QqpT;a%pqpcV= z#(+?KxAA1k2uDrc-_Gpl51FL2pVF*EXHN0nlr|k6>IL-uL-7%iq z9rCd+-5l#1=$s9=@kRFTu&lI8X-%%PEd{8zgU-3Xl2|MTsc1*1I#v)d-S4s(HLfq& zbHi;o6Dq(_^tswJnXu;OUe{1~20kOrrw2eh8RD=rA1MBS5SDvvfOs#fzHOBXiPrI4 zd7)~2H^4jx2HNeoAIoUv4HXXhT=NaL+R?6{;CE_(T$W9Jzni)NfzuM|am{%n3ZgnW zYjd*4=&woq%l;9tz@hzZ-ak$X3j6}wJcxd6cc*6Eyu)L}k3UB9ba64j2)`R&cA`@` zkpxJ7!&MWOG2{-9+;A;*9_SX$&;4g_dw#4YUxHn!E4~E(Hqw2*-_zMK`1M!ZJw3-p z&iDH*#zD-D3}^Ei5@!Bg-#UwKEMb>K7(xGz(^~JDK^nwYw*v3W>v@*Fr!E@hGN{OW z1B)Mqmb487 zv=Jn=N-&=9a3BsX#8gBmR9)SII$&>hmF|HF@b>t%ZB@FGLNykbti`lH9yC(2brWrf zD{E=y>D6I|d9L>A7BUkDF@xsKl)zBp)`}@E3I-wH&^on+{X06n?C@2mWfdLVuw__R z8(7LKOg9A9=rDD%bH`txnln(Q*S%$UJ2FnSM70GVb?ZZJ02=1SRN#Y&kfrK zCI$z=)IL9aO17@TS|tsi9zYpK1ocns<*|>bCRy<5A=;hht6PwRVkemg+*?p}S-^Gp z|44fK_$KOnU;I0h(1(PQNmXR;5jusI*3^)p^0fCZFom|HDl%0=sEf@M+CtrRO;NOD zrJaUSAg;SZbgxU@^*5$i>SSxObi4WkOR^L}#of(OdwR~wky+%SO;Lhpd+d$d%zbz7 z{;{vAOfr*s_fu+4M>N<3UZVQ~vaQ?TlluhH=;hqD03QpjJq;Rf_?2+>)V{nx2&Ki01Bz~EW71f(3$8}hj!^5{=%|976 zB_=wt4m7zndiYelV9h%=RCJG>qR}lUMm%`VQgD}8vPnXsi&8NE6zdb92|3m6Vea&K znS*bhI)sue>6U2r)FGiDD^*ylo(PS1%u40W!if+HGCn{5rgksBiZ%7~ORP=?ajW8$ zRa00IF9weeF|LGV8mkazAW8A%T_-}tL3ajFTrH9IZ?KoCX@wjJvKLM^_s}Y-Wpc^c zrluYx5_^YOpFaf);f_gK;H)aM-aww%a~{Rmm2`$s1}_&6>-sYEI&%?C6=caqH94sX zmObPG_DQ?7hoBH4_|LAXaEzY^2fIg4mfa@*Wa(Iw)kAouOB_- znu&yY6yjO|^xJ1l{4xklH`>iOMaxm+Tc4sX1fDI=wdQ!4$4-s6b$GNNV6jv=j`vL5 zOuYZN1HyNPWj=m(s30K+~)$ z48&4TA$S>FEgAK7g2+#ln}&wqoW(GU2yq%Ys`kT+;28uo19W-(_T>(< zDT;T%0j&4_eiRP{l(Yzz$+THoM#z=I@itB8&Nlm3QVD~G6r2C)83uq(>UW-ra`PW@zsq_rui#pW%Cvn9$g?<@Y&a87va zfSrc>yX1X(B?vw&#~hKCvFT|RBc_5?LU{yhvSl=Lg@d1=wu~^@jM3|NU&vZ5@(V0CFLbdGG0)u>*&s4h8fkX zoLfE!n2@H#VZx16^p}>NVG1#y2HO6329@c=LicsI|4-`l_(uK#IE1)9fGj`Fyv(KJwI0|ND9#|L_j2tvz!) z6*YEUZS87!XEd!zzmlqvYg-0)Zslvf8$>s$qS7?wf>(F*;lVk3Xh&kK`>oT(K8cuz zpao`X*-ICXG2+`YIV z2AQfPLiHGyAc?4}R;20r_`KbV>!#aOJc%pu%wy#)dYl+9-Lq4qV zG#mXAjIQN*)pPc^>p@+v_MK}<`jZL;;cLnE?fiPKF0>|P$W9fM)J_6B-pN_l423by zY`UVReJsC~4?vWIDl5eIzw=8y&NrWRuKeZb453#aZ}CUTuF}CJHTCVdX;J6=j_4MU z6sq)a4brS>{IEk>+nqhq6wJ-F=ki;syL(=k zRxrzTZt{(55*Xe4AX=rlU~^MYpNf@A7L;Mb17UzVtFNmw+GeIiTDD4=hWxGhd=I?m z?3@7w4>E0m;WRe|bloT7@(5gsxfm^}%1@UD{un54~0xZz{Q7nO1&0$IY zP5CGA_gMi8G!Y3zM;~J)jFWO6Kf*PXdVeuTL^ zz)8io7&UWe5h}H@%NdDXNAaJOe91Gwq%GSj3=uz8LX}7{@}L~z7`Vx$!`eVhq%q%eWw~#$psQ{L35)D93jarV!Ff& zcXenM?v#HYS8kNKgV}>i_rTbFKf5saT2U?D+c5w^1JW)(R6On&f_Wj_=MM!&)=0lL zrX0%N21yB!zNHF=X=O6UhG^x9yAXKAsdTM8H=79Gt4l0<_9SdtW^LwZAkx?N zLCk_*1uJq%%8Y9Bm~Q^=74^D_d-(aR(;Hh{!(d4|ktS!73w9kmsgrS6ieG+G@d^3) zNO@{*QeRzJR)+i7chc|ksfat)M~7^DKDU89(IEV~avc%gb`L7$PV=)A%vG)4_b zbnH9TbdrQ(Gw~V<#D#+=`_F*3R3N^2YHB##E^{RH-#oxGHStmw$Fbd^#7nseO9>1n z=^clH<4Jugu?&{j)%`F6;tXh^(Hzzvi#D7H%_KG8$z>#AuSQKW9(|#)TXnhgGEtZn zCK3LHti%gd_%Gin#seRy-Jzta&FW86@C_2b&Pvt0ii6YXOdN9%yAm6^ zne_e*5+UFc?9F6*qL2wnJQ3|oa@ffIv8zKzQE`ui&?xhNU@;U`|@*P`mZRGi-#|9;^Oj*&nIxR-d3!m=v_7S1jP)`dVuNh z6q3116_aDgqQJ^0v8dt3snG%2pIT?7m``d)W>niUmY_6ak6d()c#vUsGx?J?n8!<& zjU8^?B;7}m0S=;`6hY)EQx3FFTw9n#dyPLbQX1BHN?M12d(wDhWX2cH!>a@k$0st@ z3K>@OmJOq^fM1w3n!R0VLS$Whc2Ov%=t#%SyO~_{ zsPz~Nsy$8nCX?h}F%sP0pLX$lA?sw;;!02{7#=1_bdcf~F~|?vksWT!j81tu9I)|* zI^}>gkS4^kd`3|S<)8q|6wkYb%w-d zk|G=Ce(XHWGbqmrUuMlHqh|DEo3#9>QHAA!hSzbnZ}=6Zykw1$EvRc7a|R>fGP^?j z>IgtGpQiDPXz#xs9kM%4-AoqovUE-?4TC3ouZ$k^k7{=hItLwC8~-LkGoLV#=rS&8 zbdqfpbA<&Jmw8m$P~U+=&rY|;7aJI#95zLu3{J9qYS**Lk(@AiHnL@T zk?CW&I*lf*0=8NPm31@^AkV}cN&Oe2N2vuM^RUUHiUt|g+eagW5SIif@WA~rre%pj z5X^cMCbh{C&xb~479*tNg=lH+|6SR~AD#w`m%f=adJoYO*`T^7lY$ZS6>jQgGV`-L zj!A@1dhj$)Ek7zJCAui>lFG%mPCEzNwsRC|hXnaktCPD*MPZ+LtSD*~iISeanOycl z;rEtui-k}JKD_K@?vF*KjH5j52@3}9SeKJT?wS$rq*%g^C!s=NPk2iP$3sZ)LQ6#` z#I^DEKp49B>#va3ATDVQ0;jut>+9&hAsa^ybRZfBh#Mb&uB%VI+UoWJ!`YXjy8-;T zUF`}oM{4rt9_^~uW|q5kThu{C^WY{T{}0M*wpJjxbPwWTB!m_{(p>Ccn@NY6ywz2H zESONXKbjrg?kpKR-pVZO?nY3+=(m^?^H%R{uq&IH3-a*=bbP(_hBTecGTSh;xF1It zTbqW(it?9g$G?H?N1D&=6Q7*a6YE!<<)>x*kdLSKoZ2y}i^Ae2t`@S~=bJI9o{AZO+)R!xUXty%z2#ir`*SM*}S? zK%qBaH|L^yGx~i3^;~dgt)BU!O;L7Vakgn!!rT_;(CT%HmpIMl0Xr|;oyOuJ`nVJ7 z6A%fOBCHRv&hF}MX`4y@Xcb*EOtz3XyQy{MSUqDw^%_s^cZsC>3jdEwQay>LoYU_j zwves1Pd(vcth<)fq>(>`&P>ac>$~Xs=5wu6LlIQ4sEq)xw&A802b2w2GO4cWQ5`IL zLsivR#Cl9VO*cZ0ysvccPlz^uspFTTgJ>_WqWuHPmg?-@Hc=M4o#84U7;b3fHdpx} z?uLWJ_YQg&KcC%O>|1Fg@-lZ{&#c%M41WM~Q+k3}-(&~C%wgXT#eV>B868(GqfZH7 zq=jtyWe=(%&a%oBfudn`N!TW@?}ol5jA&Nu(!3OJ+e{1}I&pgX)NE8WI;)q@3=M%j zb9hkoC9#;s+G%P1bfUmr5=Nya5pGjhjc$Y=F{O|_ZQI7bxlQQk`i88qX~yLiza#Ox zxN~pzi2IF@Zk2@lg8ko)ijPq!>+na9ni-`D^Gw#@o5A*&!}~ccFaP_Ty=g_ceT%K= zerUnczEF`L!?Pr<>*86mpnY4LS27t>77H@k3CpguI2;1dF{T)h)jcTaST3a|9e<$p zOP+n*$gbwk?YrVk{lh3NYrcA9N!_rCUr5-aOASOiY%P}mQW6<}Z15;+3f1#ZJO>ph zP`Xi;*=-Ce<7Z|#5A6TUs014;L$0tX9G`pepjsKS_fMbkF2vr)KxXw3%j(8`u+ech zszr4Ylh^z~h^`wOl{{VdhUfV9N9cZ_Mfdh*`KHwIc1*s4g6U|EX1Nzk!-Bp040T$) z8|cV$Ed~e)%COR_qU#0%WHBDn>IRQ{R4RDx$dzp!I@BFhA>ANRb5irzB`wkYv(Mwz zBjCSFqJ=FA38pNeuo)+w%($Zh5k4t`BzV!m;=qzxt^M+lL~X#99%U(R8IgZeH3V%S z$Fpb8^AFhBbRT;{O$C=EJ(`tb>nlyMQ3v<%^6ZO;#Fq`;J6nr( ze_9)%sh1#lomGf0=KZ1t4OyDD z>B(fAp@fgcWXI%0QB8Eq@|=+q+K(1bCZkzQw)7N}grbi*jB%ujm~@vw@a3~6yV&5q zYekBoX>!7-{hG-88+7z`CMQyUP&rTSAmOphD_sHwY$sF>jiS@-Oa-ApEvPT{4; z28UH!NF>Y=;U%w0jp5i8six48i!G-?-^Qtkt2k79sgf0ueZ;XG|RGp%sMdQ7^q z10i2za>6S!Zvp!1_%6&5pgp5D~M7rkisJ)@!>l>62=SkQ*-Xnak5V;@A`63{RN7xSt{B$CAI18ED=IrK+Hn?3Qa3NXH)^bLPEU)ay)Gt9!^d$ z%+Z!XO*P@<*#zEzj>a*)UrA2L7SVay9J}mEptxDX&iz=Tio$66F_YfSOC(LAw3mx6 zqH-Hg>r=Q;yta>c0VJNHSjxZ(J7O_fN>0QLBx))*p=V6NGb=cFp-0h&?2{AmW+Dvx zJsn96A3f^*8^BHm6k~GN(&*nR4Fkyu?>^kpA{*ur0tc3ie#?w&+lAt0O@G^Vo>clg zE}RPyhr3YvrjrvjvN&AX-VVkCmfl=7z&(j0uD%`{C`p8psQGv{DCH9douc_XMvxiT zXmWy&fAZL6mp(Be{LjW4AzDYiD(-#C%IY%-+Mq0IEFF|)X2J@g66~s3S4-0692^?G zd}d-IY7Xu`t%uE~-T)~roJch=kufBa^g1pw~9GsdNz(9*Ixi44s_m@WD zyc_2JKKsq+~3UnT!r%lmKU>73pRsgA7p z3b7~mWzgZ{&jU{Me$X=!bePTYHUurY)DuBdL>zs&=)8KOM~w{+#ea{e)50E4^xxRR zirc^KI)XHnAv0J$=2kEQPrr!lif?Icaba^1*1)&DL)%En>E?jE{%~`k*srGbes*)U zV|dgBAgJ1p>CGOWS9)z9dZv9L_Nh6_X2M?)D6l7S^Hph^-aBC>!H<$&ox;c>4 zHg`7%i~ZZDPel~cd~IKcPZZ+?Tdz2MNmIi9+&*w@JZEW0@q+ zE8SQpJ3ugX`XjOTM9Wf-&TavBkw{HBEK?2pA}z6=@V-)$jR#fNrit>h)mNM*9vv}K zP1A;46p#lR+NL#fw5oOhtSSm-tkv~r%FsK9mw=rnHm0!jS_>B@-d`63CR<3f=a)L` zm0CbMTb-kq(_V#T7IV}BdmR1NZPTT)h2k3L)65n)oWx(wV$wutxf>5ATCL!dsr>rp zYqPmtAwmPXvN^!J{0V9)zh74tS9SNa`Pd4Q8rm8di=FbL2t40oFSFal0#`}cGp;Z= zyGQ3^Ne*7b)*fvdF_#u}Jo5&0Jfq;oVXfr`j&`vrFs^8yAG{tq2+~>F94F6*4+dky zF*Fmlg{I7Y4fvogscx2K&-eUsEQ{ONj7n%+f)st%n`mnG6OnTV?E|_;E=aIO~v~UnE zTe^038X7zA{ws&8mes|W0 zF*s#oA8sxVqMm~}8sZY8N3&4a;ddU*k-YayX?N-fCmGL4JHSnguw?la-lG&Q=lw?h zVFYH9gq0>=?0xfWQ_mE>qN5vv&XZ(B{ zPlWk1!O)+2dc%#6ntP(ltvvf+R|%XwBDB=b&=n=H(v>OhW(A$1nNo&O!mmlHUzUue zDBzTgiy^F^DA(ZGaod1A(yu0sh@|-d3-|F5@Iz>0qVdiT)IL=On~&QJ#a?QCZAim> zFFuuDk=iVd+MoeUiU*kwu#QA)Tx$p5;$)$rCp$=g$0%kZBXc2D&!uN#vV~xI!J?3L zMHCCAD3n0I<1^6rk8)-nk$?f z1(lK|cd*ze0incPL;UOICzB}rmqfz1f4)wy%Z<0jHF)9nf;f!Mu5T^UXAy0 z`m0OB!?Sx?io-Y#L@2~txBvxwHDo$^%Hle5TG!feV9i=hBuUaJSR-Wg4v<2vyUE|P zy<~Mb9K#2B>zZUZ3||`D6#-+Gb;GopOk&LuF-Xduyb-N0HR2+qcE?(?tHP z8hWEZ{~~*Jr>}SkS=n#QRqD)XxlyB?ifyFHRlp>Pb^XoEfaaMPxX9UU(o5G>6Xvre}sCFWu7 zVpEUy{2adEIk-iQ>Z+p6*6FnA3*OV+G6D;;$r)6Vo0-gnZ2k+S0JB|*Lk#;G_@oalgE8#W9RS^CKfk51JK&h=*c&Yn zKOE@}&=GzGHE%&}*9Rj_eokC+n@>Sr-kNyO82wE=3vz;K)iHHD#min>1D>r=o+J7b zM)s~@`V%=TkZ8evCz?J3_C`l5sdl4SZu{&;Xj=J>xy59Znx)y{b1jnQ)8Yu#+3TOP z2XRB0u`%x{7;_#kq;1?^twHb48{n_(D4S6}C(0$hDR8`nJ2i(X*uMs%fRqMpmw}s$ z--x6Tf@a7HM`VD{!(zHpi~Ic?T(a1e`WKfH4qFAwFi-%n3uv=r0EG!};lPbf%%%8l zP_CE46aI&Qx4v96!*SV|IugxUEMW~5N>&aF6oeSGd9woqL&4&=(qTbQlf}a~vIa`Z zg~%}`Q7d@<{3lD5_IMr<&Vn6@&o@=D813xRJg%XE6_#c*>$cV88t7?^)Qa~=PYU3C(Q z&>6+z+R*8OWUOFA_Qm5zQZE!zxY%nxH{#9Mxa;$(kg}g58}@Gc^q@MU_IuYJEV+38 zlq;$DM91>8#-Q*EK!+%i5?`UdWOB8&AgxMi7n+Me)!XI5?j{60%sPcg%iITAW=t4% zon0+%Owa7OPUf#!;FhqVQdL4wCYHBRCZ859Xe~x5Bk9}-MdcJMm}Sd`_dn@7%Pgk7 zh3;$Eni06>YoEM%)|K{Fu)sRqa7#{{>Fhgu2rYMy%e#zK+KryhdwK+36Qa!Jx4l>@^bs%#_r=+cOCE z8XU>+fD(r>ZlUCNsMJ%thKZC(CKKsL#xrQ-cz;Eh`f7le!(4$MUSo*00ao%U4gjZo z{C|Ftm|;SRUBqj-gYa{S(3QnozUPdaZ8fJ80LjctZ8q=RnwpEd!yK8#=rl8iby~dV z?yx|%4R%ax_>$`VIy!{}f-?t3Bpx^=sSKM@w487OfWURiJDj{&8um#_M#-y=O}F)X z!D3rj?C#g_94#u24dHKasJ!7ahZnEgdf31a{?gXdG%|rPFUtj`@Ncqg%HV$-YPOFT z)I-dr^y_Z?W9p7<&ay28K6osJU1`uNiLhr5m&cth4SR2(#IYV0Da1g-8AxkOzm10r zlLH_5}<5S@f*IM{^u_V-^z@8Ehu41fzzbsZR;_q`elec(#aHNnU9?aqSjC& z*dj9w<2n(f)mu?3N#r3qKIXtVA$;fzzBz2}x8bt*#?{%&(jCy-(}2@=9|}Zy=ShMI)b7X4G zXbg;TqCLI97PnOEVS@d4-+-V*^5OnO9Xa@%s?sw!one(s!7$q6p3bB!_a4BdUF}Ju zwAsCT5RKDuhU6${4=-OMsUC!O0n6)vn+$D|t*B2|BWEjRV0zgnbG&dsc&u}BqVSlU zdz4YE-n0j;!9t!qOQIB`r941nS!;gu>xv9c2TD(I3wy{f6d1HVMpnMyztxkH@Ozdn zoQSPdjvWwpxRPn!pB-|{XFS%W8fs)CL)U(}~8wEPKgvroB@S_o(NZZ6-T zlwnM7EDnrMZvzFWtGlNdHPLsdle_yuRRJY1Fhn*tR|nt?i?R>zYuWHrMtP9%zuaLe zi;aGBo5?0}m}zJB8^pQYH^78&!(Eyujo0?AbeLw}p!m_HG)-P4au?%Ecwp>)lsWJ9 z-ai?}v_L{UvCge*HT|&t+^~V#^VOPy;20%>(rj=Kqv1QdR6%;f$MBYer;)Z zfT4Ca2XgJBV{!5_dtN=>3J$%07TJ5Va>g~*4_UD+6zLJ}$5z?vV@3swf%~z)I&f~^ zFdjzl_Tx-*f*uT1Wx92Fh=uwH3dsI%(Z-> z0k0N$d!?SFd76Ld((aK&E?%C!(7=p@(!K;KJbY36&5ASNmG`=?pBz#}FMaUH#l8@& zP7T52eFWWk-xW!q4{n10!vkOAa0kbTycUrT}7b zJqH@3l?L(UgI(9rKTazqiQ=;cD+Atzh7@isyDDgi$W-I`P_Yl@YcD50EIJr$^3P0d z-TqCAL}yNN-GMoKq-kIBcFOyzw;5%OZDwlL_;^)elb?Tzar4H)B0j!jPu*&JS@?EJ zOCCUyS_?Z3AzuL{#E}wf!1Itg$r6=2O(Yv7*VeY!){nZRk14@g4NFa$N$$-K!_IKp z9ZeJIEce2+E?+dT_sItuTyQB*-J+s|u$5A6ET*@mzD6~~luP5AVBCcD>_%3M`^h`U zrJ@D^N^W=k_9%uLwy?iHdV)gLM3{2BeJFvL$Ssuz{09c`hOxxCeS2FQ&*mVutCMGn z%x3Y&L_({p?42=|Y2twh*}}qHtYKi*kvRjW=vZ+coj5Tci>GXS95YxR+6NIc>jnF5~^VlDGeQ0?0+`;5pcxRet36{<@=^tbB2y?AU)rayl zhV}21JLaTN?Ck}Q2k*AfbFe8;9C%`8z#!$ZfnxDL?y@PWj2oyr_X$BaYI@S6P#Kt$V4j2ti66uDA#J z3+}N2=t>x;x1hAEC9!|+`LkX7z=+~sXxR06anDo)Vj}*?bL^onub*|P3AL*q8>11T zdHcH#qkaMuRL_!%!>FiI!W}n-e`h}}@-Cv-^+b+w*UuWY&3Dc&xxGS>=H`Bd7Wl?< zot_zyB8i(@PoC>^g|(OV_MI{YMpa1`m^Tyk|Jmz&A)tnx&qBC3IuOR3z2|*w z0>I-JBT2RiE)*_3EE6combUkM$#Ni5iajf8X?pYQKv~4a*0z3f@RZG@dNlGzPO#|O zU%OSJWN>4nJa_GrWT@y;4(6C8+nqmp;v(l>OAab}{%4fV}s4}Mo zJOV#G&>d<5ETQ+y4+V>`9a2LyEo`Uxr|-}czcFg>&6e}vL`1(J+(n`ckQBD}TXVSj zT4fsDHijkK=R|AXIGL=WGCAH zh5O?zgE=6z#O#yFiu@??whWdI>Jbz8Roa8rBPd%{8#+5b#bV=;n93$6ly+?X50$&; z0r)qgNb# zZ`Y`qdd{*EPQzjzq>(G#Q(-=jRY%DF(lfw^kR=sTB#U!Owb{75r9&{DC5eZs{b73^ zn0zg#F{<>V&y6Kxh{MeA^cq*agyVF?943jhI0xM-pe<4iCf`D$?6(c8DW*zMv~7GI z9@JG3Xy7VH1@k=&(~{FG0c4ZrEv;|o3LsTjGj57`^B_Pgi^zEofO-oEr{swzHPl;( z7|-CRrKc7AcxTMv&;?7eryd25aFYp=t{fD3LTwI)paFXf!Ukt#Hba0o_3#0+jPmCe z2Co{$|KhDg!D{;L%Q&2JeSu3RPGx#*EJ~aX{Rvz%XK6SR;i>AkM@PZC+?~^lCagVb zSv4A=6^mIgSX*#Hk_19Guxb-#`P!C71M=#u9HPi>K=Pg8#fw)wC<) z#iZ06ARfznF{sDSXP>1HYH4)Dq@~xWH_XIP8% zq96lfe2AO}p>ao55Ck?hF=eIW$9ZU5RQ5x#iv1<0yMsQ7Hem*dYjSgN$^rIO%E^rp zVgDl`m#RoCu@dq|;|zLMw{NqHT-|8tDB^#BkiB7aEUidPuVjQFR*%^{JgR)iV1dB5 zX%a0;wD;NWVn5uzQnzo*!3{ROql3pl=Ox}>EO88J!Yf5Mc+b!m?_w$N?52@9eqYj$ z>*sx%t8;%5l?{pCztZ!5%W$O3eEYWK+}Q=%eKIcJgCg{~);xzJcKbHN@-Nb+Q7wAT z$P@OuTI@GFUUf$&8cI&j@uxNIrwBCk?+RSoSAPb=jTedXyT)oiZ08*OYX?3EH3vIX z)gg2e@4s#cy4*emAZA@_&-<-y2;<@wMv31z$JbcrSJAs(iOHcCT;0;)9 z>k+tkA(MKJKXtYE_U-6T9t&cORyfjm{bW;5-s&@H$!>10q?M%9jXH2(zy2=XXzszTadl&zN%#54JpQALh8pqj6idikAH4EuR~_Kc;oG+p zvu%FhYT*P$$fBJkgKpeWFZtiZbPh`~n~iX!v46yaCV{qrf8f%gi$cHAy9nt}{hwk! zlDxm&`@q#rr$giI(a)b9|Fk4Lt-GZ~j8Srccm3*nsNLlC72kT&H2)}*D=%y8>*<(@ z5tg*>#v|g&;DrG*qbqyx>OS2!tzdWWGb;hYM#&YJ%GCpx!bU3h!EIse9 z@^7rQUv2}>=na2Sc6ehgsA8_@$L!o=g5}W$iKtUjI!MlkngVLSV&^79G@I4?X3$L& zpEiNGr^aHRnvD6T@73_9sNkANj7*yc>c8siX3|Od}xkOSEeym#T#l{)qZz` z{1qlwV)$w+k~O*4si=YJSN^+jD8>%cd?$~b;UqI*tswEmK?uV3lhwb7-&r zt^!PaIAClC6O1JWhFe0LBsckzrV<5(GgICpg-)DlIeN89KL#j%Xb9@<6SG~KDV$F7z@&zDbyvoYJ#wyTh)H#$$lN{f`#w+l65Meh`P&R~U(}3uN z%g#k+&1xeZcPl|+sNq={9JEJwS&f>bmS@2tPrXXw&lBbo>o)CimXhPYY7MQaVD(5@ z^l`!&I?wW*r5H$JiRY>KipD=8abjRNv5o19-z=}!p;PwDWJzu38j=?3DCs8Gz?YJ2 zT5d zQJt+Lax-W2cSSAv!^)GGm#a6ln(_w7uc(xTJ>C$VqWH%NVL9K%TJ9Z+!-)4jiJmK0 zZ+YVT^8L|^`Th9r1jgBa5czXDb&T^DbpfskM+q&JfU35nLctWbjY|F6s*?8%;8Vy8 z%MG=od>~(D_=?Y-hloU8{{iA~?0kOrj$7MF_;`y`1W240k4FW~iuFsoLeM>MO;y!;qDf#@|5s#kw6(|H!_UFAvN8P?Qb|2K~Qpx8B zjz-{>6;+Aod}h;^7tW@oaqhuhn!Wx>vkJzP%D&dgUjL{`^|^;q&@X+_kae+1g`3n5 z87A=}iPkTMC$_tD7FxIzhV zI1{*!&K-^3Z~!`+7vsPWRQTIJ6Ap4kLT90uI*zpbW&Z z0cO{dKnw{>c|^}}3=y9oDSLwp4bB{l;aFs?n3^g>Tv&W9gu=LXOjT}~4QX|4gDrze z=pL1|8_@g(!i5eJE|tjUPbBWd3{kEoQ6bXtxocqE&)Z3=Fe_R{;twJ}4?N5Foc-hK zFk#l19W!{p$(aSVRGFE(Z`)uDjCUM}UcWX=F4z{XPlsVJ3}L7z3UJ;6W`bh5*PoOf zYwF#=xtwe)<{+Fi1<@c1&g6>@tQF@+$YPRs%Gsm)ydomw^wAkxid1*(2g)`Ngq7%O zbR7V;#Y!`!I9UjRfkiuKKts_i&QV=^65r%YI!2+VD;|mrq%2#(-k&ALJYL!hTsF06 zjWjdG6K8$BO5+p;!26fUnzpt!#=12)`fWr_kllSj*bD##TSH=q!B`b+tA~MJHx{UB zrVU7(cK0^lH2Cg-1;em5z+<3%IY$J7wQOZ9Y)+BGeLc;A8M7HT2acrE5_o0J0i?~N zHW51KyErT1zbWz0a`Mm`or##S5r5t72VZGgCfocbwI0Xg+dB462`ec6U-tNqx2mYd z`8ftY{r5Ysq|borB|iO!SI=GTM13*%*(EdNP#;fA;d;o@J2 z@~4L5Ei1>yMxnW>AzK@+wW?wJKms8*w0K1d4aYR?_N^i>!^m_OP4c0kL3MZfB&N0|vC{H~!b{SO5y&!u~eCCHupVw`7~ zBC&xaHnaA31n8FkY~9T;g?@7)uP{eS%&Y7GogYE$Re_CluYb`tO&*eVk90LaG&z(2 z2wg(Bf!3r#=iW}`2%oTrFM>h969x_+T_<{$`s`+tO(R`5;H9L2C#EpR=LG1w@%Aal z?c2O8E^crPIgm<*&^#ccmAc(AB|p^J9DKh8tgVNm$)V)%Nv6 zQ<&0<1L$w1UL)R6<9YS+w>r(wYdt&&>3O)!yA~tQK`(lAcJTK!d};@Gc%($S%j%Ig z=R3J)H%_N@T3Jg8y_NOtX(`13P3C<`wVzo;dHWmuSDfzp7ZNy4EAxJ8%L)X1N>+aN zAkO*kBu)`27f}FneDO|WoE#_vAB&V`JS@Y(Nk&+*SRIywbmB~<%{;JQSp)*r?$cV^ zc#;K@zW$NHu^5~PcA^YXvhE*%DHm1+Y~!XuXc*q*9`3SzwtKMHu6uYQK6&Zzpw_Ou zM=M`>Cq@nry3xtDQi%nvZ^0SEJ@#*S;Nssy<1#Dk(uD(b+_mR}i&^2JTgfPG&55#) zs+TU^!sJa9s=^0v1bGR~Pw!}~Q>N?dwaMNOi_WzeYTD{`8#5dY&hag&1^Enl?u!th zq1;p3a7hCJ%mSmtU+(B?_$k(j?B_>;JAovorID#AJgJzudK)w~JS6{>C>L*=0z2zE(tauRwJ|4%MEP?qbcL>t1I81- z|4P@+2D-wex?SGk19N;=)_^lS#l8-|4Zgw_8{(hF$B_}16VJ*x>zl*l&n?7O90##_tmH+l=our9A4kdN_BekH5>ZwBzYfZ7VBECq+ zKlfj4U0kOD?cyk_EFW(oYTLHSNv{179)gnL#H+mwInZ!rjb|)I+qqiyb?G673OA8<2GXXX4k<$2_PrFVj;H9FtsbF`C*FG9K1{;jEZS$EBiBV~e6sf$oDio7-MQjHcZ>?XBa25B*A%3-`I?%@p$>;fDAlQxQB7 zOiui9zE4H^gF=B_6fbS)Q;}B-P?D`VOV$Z0OzUQN{N%r2p68HD9IvBDWns6fIP!J; zcMO2Lg8Usz&=O5@Kn$golmsHy#-*syrZv+_?84VRbFw;wqhT_XjUSxc6tKZ|O#)g( zLLaDe0+^ZIHnM^&%H$#^Y|1a8$YtM>v0+E2!#$iT%82@0XOVkpMyity|Nq2~@mD19~w3gc% z*w6r@!YSx1;^qFGEoJtB2o!h!N}{jtu$k=u3Rwq9yjQq?GXD4yJ{YyUJoZIDs!I_G zY-Cl~laUKZ^gAIECX>lq+v#XeA$@?sYhk70FO;{ZL)iYW07<;C70%sg1g~vQ_bVEz z(e*FKY+=-r$OhsqJ7{9c!}b$IxQCt8;}nud48s4ih6V0Ul>d()Is&j{1%;760;`NPm z#yb4MY|+dPg5_r&Cm&*IES$!Y($3)qdH5tk0hG69-=@^lMELE74&8*i#Yl?ySjgQD zcnULyWuunt060ms`yLGtTMVTUS`U!UWfo72*JTk zVATYNX9_k<>C*~Y<`U>7uhIg30AOQ@GvG7wyvkuzX3^QR+?atP5Dy+Jkxl-uTyBm$ z+Ji=E7zZ@UOm*@_`}$}>OeTPkwb{xZe@uxofW zToV2+iF-r#w1l&Jr}X{=-hy?{V%tXkNh8!83>tq1>@5{ky4;a6g>)SOmtWV@(?&bk*hZ)0hAbP6aw>4NYxJd9-rOS;t4ErTvanRPj2*P{=kv|&pifQphG z3eK@`LlQC*k+y!wIm z0|0&rSQ(`J-RW_e6vFtAsV<9s3$zvYtt9*wPaf;}$F#bPpJf!r*A*fB22~MRzL%z> z2Ey!U?F%CIx2=ui4a{HUeOgk71jqP2CX25^eJigur0zta@_L2cu1_b#{6dzbvNi1W z_2j>3)EDzVKi9gmp}u_@?xSZuXOGG3I^MA|Mxr+e4+56-UrS~N2-6!Z8dtBjK<3*a zU4!XCXA2a-L$_}k$&avX-p~f@J8_F7m`9p=Ui4`s&!BBVu8wb9zJ~!WvGI7TZB+Y^ z$<^$Q=MW$CdvwNgD2!bdctyBlU4`yT7Qeuc=t-y#fMDk{-y&OxkEG^j&l$<`- z>haXK$qN~Ro)5%(v&w;cy`MG*&E~QpvYZJ2A@zTHJ|s$nhAvF5=5~)%YXZ#^O8#YM zaUg78TXy@F^kxtgxNG}#P}|`jT~l5h+}P5eI>oUS`B<_94z$EZ2TWWT6s7lDnIfY= zgr%sC+;P?r|37E~^WVXMUHU7~liH=gVy2W@(r!_Xb?ri%b~qf61Q`8og?|i(dym_z z#jRcJk;mYrb34U;(Xg>D0(yVcLZz&1V_o#mH2>>2j>#87bNu#LB*Kv2)tr@&K*3{% z16zWM=Dysud$6RJ5M3vqpY5)3mLJBS(``PT-EZ&~Ew|}z{s~H(FJ!+)R2`A?;$nQD zv{&+n@v2JB!76`!y-!2&5ufL8Mt$z{r4?l!k^dLXT{m*yg2`I$aqIEveBSG0S5A4q zgiZg#zR2KFF6OXs(pf46p~3lTIb_!X-9M(Lq|PA_*=U{ z!#KgF9)@DnpM2YX>z0@eC^xnegC?O8OA#gL+b<<4dFesC(5qL+ZrzfyD+bF{jWv+? z0WSBm8`8E%#!|O_@VWf z;N1ZCx-z*LqX(XXGu~!Ib70otZD1q`4-$C}LEs_5n+blR?B%E1G=-l_#BI{qH9YIE zJ1``&!H2k!9cR~+#q?nzkCH2EYy6WFW+~6w7;UUwlks#Y(Y(T%Ur8(vm(@~*@Z}HX zmqT|MCbBwDMS6SAxG6`_`KtHl<#aXRM;Z$2b|>t zRM58YSadFYKAVI!iss8i=MpbUh2KM)Cj0=QvLxEbBe_dMqsU19-ms*WXqgyKpidTR zJfOHUaO`Sjn!LspWhOO#Pv{_;SHtkFoJ@-Ir7EP;+qQp!ZX}5p&R&Y7pVsiljyqbx zehkFc*;4bsW9F-xi~-dan-a(~=n+FItMM3v2z?KdLJl>z^DyYnyiKsXRiy zc?Ew+dL)@lYU|jplbpdQEd&A47$Pl;oqmR}y+^g(Mhp?@8bVdj4Oh`ga%9Lp_Smy&s2FazckfOQEV! z$8atGA)N^QUzXkmyovit7e6zSKO|vmWb#ErUs{-1f(^?+fawyw3Jp*QXuWT zc`Q2`F<>hc;ZIl#=L=IM!&5rn9t1-=UCPN_z{RcLTr=|Qn!dAIf}tl7HuAl#ngD@T zu0h)karlMqeBxWAT>mOsbV$sP0_ZWj#y8Ec?kU1y0&~Ig)MKfjqJgQN5rtvt02z<$ zbx$-Eob*G!Z2@9|Eg|cyKYJ<&f1pKPT{(Hm^G&2`Ha3j)Y2P%<&Db?ge|M&NO9Rq> z5(})R0*6(FW)SE6jLD63ptA9)JD;py4+_s;kv@Sh{Dc&3oyNthTES;Eeal+;iP~o^ntF?O6YOQ zLR86h_wZa&eh3fghbM?LG?j#ck73`3f+#JOQsFR#a-T%8)s2GGH00x30E3Y{zKvfj zVCJNL8=L}SqV}iq6KpDFxCQ^6uu6=laLsl-qO+-_C`JFr(8a+txEQIF;)YIo7&9VP zTdh?pQ6~O!)llh>9cz@@8pEYSkP{H$!)CDeQL572sli8+Y+H0ZrTn*qo}K<+I*tWJ zB(|?fB~>sJNz@@6r!XQf5nXmj%tCN7Ti=V*h}z5EjV^} zf8xbWCo|QQaqq^_Ss3qoNmyGK(gEHw4vT@5;SR1jgI}{T((;|@{8B0zbs`V5SDFuZ zr&8S7V;jO*cWGxTSt_x7|Csc5qCTEV#y`T-94i@GNWoJ~T9gvNbR|QH&yd7qJ)cV@ zL(Pl2m1of4f;Ed=-N@^3sIWZVCPDBS3Z|za`XFHPjf?rGc^JWmpa-_`ynahX4i`Sh zYTgY%nNy7ixFr3iwkuyFV^X*ib>Zr2tYi|;28K=zHsv3GJeBl3)N^_46l}==I(`Cl z7GnDb;!`ZXz=>4IIKCEV9ZdA|odL9w1`C5HXCkq;1BxFQj0Cq$`Qu%NY7$QkZXb~5 zmARxduA;Su)Up*JyDk9j1D57(Mr=EWg`WA=cm18+O)h>9aSu}BUn+4@BYU-vgSr1x zhE0DY{^0BP9=~~TxNR|az2o+0l9lHwjIMgz#*$$RZi90I@4e;DZF&Bssn*_IkNhPh zJqil4$7ih>&&HQcIZG?(6nFq+7$eA7aN<_!LioJ&5CdvfQ*(z>R_KZx=eKV9KiQ_l z0<3eRpaB0XLjsroppBj+an50h_9!0)ds`u9;zhin{zkq6&mH?&MrLA4IeG=vw+0BJ z<-EC6y$Qq|?bxuyc$}=O+kNiorc~w*-_D1wDBPNwtn^>Qa2kJiI*5odY>+>Fr7uuZ z^T>p!TqS4vck2e=5vU6$@iqQtPvYl{w1aElKB!z5FlO(%0}xK0UNd18v5%&<%p7b9 zM;CY}qfFI((B|#(V5Uoke+)82nN9!8ojbyld)E2oj+Q0)0grhf=&2qYzI2SYuukCT zK9Is3qBOat$e;LEK6A%o;wwNpz&T%S#dhL$GsaN6i%nEw<%3{{qY z7!&e_HaA%^gsg`(b4NvX?w-9L4z^53DDhv)^B->rkDv%M17AfD_LdBFqII6viOh+G!zERX}=+z^cJ9U0RP)-H5cTS)|fXFzAINv_MU)nvY z;sGk+U-h)PzR1G@ndI6netiO3(wrqxiuTGRE|`?(gvo6K(kp8+x0Ny$Kd;(>2N7TT zNO7zie~ZdGZy5g{{nuB*OQq)*Zr_$lw|QOFFx)@A)-V)-k-dGJ5`5`#&qcGeT7CZG z{uuF*>}_eK{L$AR{r<=35ogJ)xIItGfsg)i^Jh2r$8>hWdwc%(=MH@9ADz#C4C}Ix zj@(KUNpP(_36Xg{tkd^z95{E&nfl%3F=Xbtu`%s0Uz+^!WG)?2T)%m4GCij2e{O;9 z)bjO-jeB3Xsx5Z4M6Fum$N%lxLOwe^KX;ouamo3=K2A^KSn)>pSAH{qc~$hV)(V#a zBP7@c4DBnl`dOG;Xv~=7SQqxX=0eLwS|?TzzaIXXduz?QO`8;aT=eksufP6!!bW1z zQ6I#ubAMU*l|Y+Zx)!&=UD*<@w&`&jG7=&QEZEDYVxHHf^gjwb+F z!paIz+jyJZxZfcv{{e%)*QTf&i8Y3-j;!50b9lZHrcOy_rSd zq6V~&$t=TT)K7bx4HbmfyX(<=*CxP-JD(W0y55CG&Mwwi{4+-{B09#p!b-r%G(`N0 zBG5jh4kprRWpur@+Mpxb0#gTVUzVEI4o>x`WsLS}4AL++`#YN4mie^&nJ+MTFqhNd zAjOv{=D<{sZQ^ZDrzRir;A-oa~=?2TH;l-bNZgBhHe8+1|>9pscN&6=NVs&wh4;EAA2giaR9DK*kDg_;k9zGOY zHvmO#umMzf6|2{~!o(=2^qHQHt_Z7=gU1pX_LSVM5i10T4~m~d97fHNkN+*7Z2k;b}Iw&72@vtu)L{Aq49mWQ9b#C$gSwx9gmeE#h zSqi(9XgQO(yS}Y^!N@R7=3dt0Ko*9F@u19aNd%Ml8^nF3cFD#nNLX!uDF9lTe%>m6 zo8g5`*&1X&+Rm;Ej9byl#SKxvzyEIVMyJ=SG4i(Hw!x>aqppPUq$ojkeg)NTk8_RE zHGZp4;o)1O9DeOCZ87l!%6tzQmzEmdToBkaE-=x@O-87GdV+pST{QP9}+!L zr{%6^`3jc)Zf9#Af{nlrSf0E0Ygo{@XF;v>Pa7QMq`yJ3Z4)UPCpm&@XORL!{g+K? zL&r3!FKn%GL%hf2a4O+ibi?vM_gEdLe_v)6c_6+GRN0@Uv41H@EP3Wo?qTXg^esPHG(nrDpkK z_wnn`NW7Hq(o(auBju>oXk%xm$PpuT`A-Mwd{a|uHZe--|LkSM@S11&I#3^otsY6u z<{scz1mYaM|5X8BZezvuXRcHgT8$F}(?g9-lShZ-^n|!lCdFtaWId@&+w1^PK&x)N`i)Cg`;6cj}Nzt$IWt2lC*kjcZ-*m zNLXJr#I0VF{|g5(E|s&3(_eOeWV8x7Ts2fwx3h8zT>@qKbg z*GI!jYPO4nt?R4c{~EcsFfQx^_Gw&&s?^o!9MR%R-lZ+eW%8XM4j zv74lg8x2FzDp=XceJJ%*OvLHfCFkX_{+P*Dt>Gj@tuXCQp$Q8XMmxpRlsV7xCTJ?} zfs+H;C$VZ@|5#EV$3BtaN*e7ija?iBpiCK->lgmf*OJEYI-~zdB7<5DVJ>O*Fi=I> z5oqy_vxbR;mrlU(9d*NpOF8*fu*#yL#HEZ?WWl&Igtv`_Ke$i`cC7cC7o;Mt%X3be zcXENoe~>gmH7kQYTOeZ6y2^SO(Br8q70*Pg16~u1O(3b z{}X5%ZnKh0%iN)jJyUJHt#VxP!>SM)oe+GRrj3UxM7pPa5{DjI!NDjhg6G5Fb%dYg zj54(Qxye((SCy#!0yQemC&qePuQzv~kro-h+l_CGWLpFu32o9;8{n@(D#3#mJ-_pG zRiY0Ghi;9^I_!;Zzi4N*Lpw@hoto8yrDF9zF*$oSVo2#k8AtM`JM=|&ja4Fu%hS)q zdB4l0meU1h_n9l(2AXnk7o}zBA`Nt57b7t3mH+`7g<7g9{ugdcw67`9SSfxFPVSbj zG~KylY^e(@W%HQ_cwUrieA@<$v|d_xoSNM;2j97lk~^a4JwDWWN4!lM2L5hotj`aK zgcw9Xr~H@3l7o5(O&(YC6+F3Xmm*aOhO5iGAsvl*7ZqK2jH2jIwA#^WFpdUowR{Px ziQc?Rdl(QQ08jgtTis80pxu+S8V!Q1Ww&m5?2_Lc8Y^n2PR7GxAHzNgVkDcnqYR@d z)ZV@UsFY1>5BEL^DINH6BMA^l(0@3OJYeEs6u{8m=YoM{UIu>S!Z-W`J=@(|QFIL);qFzj1M$G^p~ zfuiALV5YSj;vRSIB(^)&acw4%+35toq%*;=(o0yC6{Ar*8~vx9S4+arEF~Uu@X`-A zmWI93YF7T>K}Oo z^=K<8I#gftU`YDhKX z1HPItfE?gG%f8b#;hxAx?{6~?9|Q$kk{t}cmW2Gak?cDUdzO*#AGL+D_hk-0N0lSh z@P%nGzz??_Zbg=)LvoNf{p_&s3*E{_xmQ}Z?pjy?+Qf-#cex{wX0&LdD4he+XAksD z9h?{+ABV4aPv57iS{94%8yuB_QbU^jZ6K`pg7d*Ma{cY#sL84rm!JSmVK z*Dw`YxB4j>9>Xz6GxGmJX-BT{`+E$oaTVU za8BUq0EAiPRmP}+|FnC1prd1PiI#(!{oLUCfrvZT45c0P+4P5?o1>K}+XKa&lwL%n z0^daCJs<2vBJDcLF}~$1?gV`|OH6y6AJ6$jr{@sg$U-&#$AjzrE;f8fWR)MIq?Z=1 zqYo}c|Fiex*=>RDk+SN7$w-t3wF!$K(j7%7$C380&GUbqVkvhpo{LmxLFWFM`3 zD%d=+@N|^fbF;@ljkmVS?{o$LT&G(y<&3m?FWU%8WoN>%^=8kFhBz@oN&8ICR^LQT zO&rc};AJ?&Ww!8W21fFKqh6|8W%drB-gL2>V;S%)_3*fx98dYZ&rDclZs$5b#0q3H zBYU>28_0%L2N47!{^S^q0>8_=E<777l8YFbr@%&>QD1{0NYKV@gT3l+%&Mt(9W;e0 zou5|t-kUwWtpHannY((25AN}`ba!<`k-+vl;0f4GDWi;8f}P_TUn&Rcp#)3fAGz5^@gH#eAciEm(2XhQ7b<1HCL`lcmNIBe(?x0xbU!tJU>~F`nD@uZPtM$W2Hjr$^9`G zjJloSsvYUX6=%9Tfh~PSu8L$+v)?TJcZX=5YKDZ+{VAlMptaz7NTZ%vD^Xsamx7^0{kSkIM>e(ct!+*{TRnd9Hu zGXh6AIm_FR#Tvr^yCcb2qZl}%)RorodqTvaDyx-9D1{dmWla^fy61YthDSPp>^|)r zI+Rv$%Y{$v_IlF_p09+c3r7i`oK?0t;NY}*rxy(jhzDk_h3E|dS0a!^c~5hO zQPdIturM~I%4KwUIi%|mEE4Ujg;c_Vp-Bu$hL%Qym+^>;P0s#eEy+x8Ypg{lnw>TN zH`GY2oW`+hc#Bakpln?uM!QeJku}t!TdgX75~Ki`tCPR^D_ivaT|i-)p$a<-vDhzIqt(jjya z4&###!QXEULwLcBABukCMIBB~cbXJdQE*C@42?{Hj$#piB;k!<6Yva&XuQ8e9|QQO zu#SfK{Sd++^`Z5%v-}pvAs)9B$9X3Vj*epXm;Q>Ojh>jT%))XkDci)$V`s)9U&HMt zN;r}LPa28@oqkCXUTbmTxeYdWW(+-iU4*$v*jT!&GL?%H&s0d{8G~YBmNz*l8UQ$q zDsxOd^1DLRI5jxk(rKh-E01xOW4#i;)diVr56?&$sd>>FPA8E}zV{=J>ayWbPPS3v zr@mm{V2ehwpQ4XQr%`;=xsZVm;phLMSLFF@gopphsVf4{24>p27elnbARO8@!2R2r z#grnQxGyl=THlD4P$^|4SE)*nzIBdH8_Rl8)Z}+rUE=~yzHRk$VJME<+xH`L)|^u4 zn?x~Rc&ZH`D%?)~Lq0exWl%!xV7aF$@$0pjJBi=Pv3-G`O;kbI3*~F_(JLEb{&3y^ z>MbP9Xm31reoh5qdhmdAto(CXyZ=eL5JTXl8`VF{~hywRQ<{JO4cdw+r2JO zDEgFFkz7PdJsK-8RK=OOE-)g}iyBYAt(C7_3_=;b8Uc?}E`Rab(aEf?Sou{7{kM-V zUGe5$M{-UsI&8fbn*9ELFm3Ds@Gtg{y_4(szVx>zSh#Z^Lfr|{7sQFeq;hdEr0CDU z9sLnWXZcfsM9CUJ@m0!xBsfx#`NrUM;U&5bN22iLW`vuOnpjNgo}lnl+Z5xO$r z`+g^}bZN4v-5SYyGcsjte&?A&V`@DN-@1S}5gkPV9_SoiiC#403rEK;f&$Z^nk^jO z!Xv?w0X;s(?~l#2fj*KK>2qpS=~SSoeWc6{5WIm+&`Y@I5tp?JNd?Q*66~q!5rs~u zXgF{N#JPcP9J_Y>mSrkAXmoVu@TdXUKz_r}sR7D<5yHKQxSI__7X!591$!V)42zI_ zU3*s!>W}nWJQwa}UAwm%HPU#F2k}%htpyhgUu6ktg-es`JF_lW$=f_4u{WKrYbcln zMsepheix(s{Iy?Cc7v)-l>sL*h@nY{@6qksaq0_yd}(r=B^{6XuaJ`N#_Q;Ta|bq9t~JCc)YWo3 zP3Mj|4?LRs-ToMS0x!_*=)b)Zz%4eQsAC?CQEI5g#AY6B9MV#GFDRBOSybnlu_`1K zo4%NzBTE2}pvM}AD6*u_r|v&@Aa>x<%dyhqMi+E=QvXEpH=OC%gU6c+5`syEGT*p` zkEa4ne^#`)*?9Co>=(ap#cNc#S?6Ydzwe`Oz3?as$is)GCxF#pJoW~hcs2h0D5D30K~bRPfXl@I;3!NSFUykj z|Gx#hMW0)(Z^3g_sKNgwONJeo&ll(ia6&*|ce&hdiIg7nG-}F+uZV<#L!}3Voje*p z#tW~u_^KpcfsGf)xPeN<*KIan+l{QV4jyoD^Yrz9ZAN&aD&)Vg`Gml00B~uTrQX&H zo9$5hmFYh$z!KUPx(W_-1M9?m9%(y_63#qIGjKv-!XX{bI(ysTVM6g5*H*xb>}`XK z2S*CPnm}e8WQCx^NOg4Jebr;iSoXB;^#QK})wh9jma@*9J$qWm$43fObq@n)^l)pw zyE8S9&14?NwV+wOC}O{2W1IKjQcKwpAnXkZMmgMO+SS>q<30-8d*~p$V|pBDCxflN z?`F@|R;b`Hhu0x-hjKgI@-Z?G-0TUH@;pbsB$mI~51kRMt4pDvd0-FF^gPHK88he> zcpiPR37={RIEw}@hKX_V?%urn@*N>>w4{;j?XVuyEn$wR>k{)Q(g z)}Y=*V*W?Kxu^ApCm$KnnCL-gqqixKG=@dxnci&>wSk^8tO988>jxlG(9JVZZ1TQf zF|>W4?_Z#0#(x}~Ify<_Em#E=H%t)zfu32qr3ur%ec)u9(VTY+g~i_chf6}^z864{Iu@yN8UX}Apzr#JLcw*^h}UhIQ1^KUDh+jKM%x}J-F zIVtVPtbhvpw8#Wi=eogR5aY9M#dLw3eecfnL~u62sV-KYMIe{MP9yUaPpb3T;8YJl zm+N?deS=^ZYA%<@M0-e{+|vpzZ`=~e^m6OiOwXZtKhGR4jm`8xju7Ic$DF4@mV%xU zjPFV8qkQLkcp34v~Nz8W(}9#ee*9n7$ZS%=%8 zFT$H%K7~AYOQ#;CR}jAVvg57{oftbkXfau>FbtyUaMf56y``|(O>da1V#%}KbV%or zBZ0_0bcPl}axsY}$YMp?(2=)MY&em)m$Ia)< zN{5R4g+{-iDu5cr)>aK|2LiJ+4H|}ExllTEDxi>U1PlwD!kJYU2i?$5NF|v7z(#Xv z`1Bxkb%L^ivk@k_3a^#OD8AdE5W_(!AeevLRh>$Td~v3%zmOG2vxL;F`MyBo1)Mbv zVc_rt>s+BS^5w}hV>cpMzJ$S`Uxxl!v!TF6PZZLCC_Kz*u=1+L2K(`reIlPr&U&nw zm1#6ha@ign!3n|fFmac^%*^KV2oum5UL_lFI2~IuIV&dEYv$^yGh=Kp-Hpg006qtW z^p<#uj9<8fs11-VP7anDqotplVippV4H#?8CB`9c)pf;!7VvxL@eEyx%6yJO$21jjRMVeaY2R}>T&@r(!S^XOOt2LQv16|xzh5+V3XGU@~@ zP`zzHRkV)S4?9*%W;S4X6S@^sTnXaxWxv5b+ZWin1H>Qg z&h2T-)AMJwYhA`{;qThw)=J}hJw zMI=w4%>$k{TzbD54|E3WdU}x~Mz&p(Q%45#<1%7D3V!n{`bUI~PJGa; zVS5L4xY(IHh8Z!Hj+Z&OJ1Tu{w_rUX&;z!F8)g(lLWnN*$K2WR3B&+e38>g}lil7h z3qFxe`I~DcL+M;sibuVO$-f_yLAfRf6={BRp|jG{ka^~SIU!CYG|DB7-ZwWYv_JOj zz;rgRX+-y#+9Bbl=ei7)kmUE{ZyONTI|-A5K2v^3EOpC3nJ6%{&krKyC~n`P?1u}T zU+hTZD;ZO75}jow6p71rrEg%W73C*Z59%=3!>92o3!bb9H!V3h+&X<7f((S+Dt(Bk zD!U|dH$|2g1N=Te)IgeCI5L!dxP!xn$Dyu3(NgYcqG;n%r7YmXLcb_mP{k}U6EnnX1|YCaHBDKhuU)TPN0w1`gF_gtEcxZUGX z^oo8S=?z>Riw5~m4y;Hi)qVRjoOy`;I7LA_Wduv-qISh~6|vJ|zD2Y12ae+?EDud8 zXc&&rh*6!(Yv*9|wZ%^KmLpR422gHC-Ck(9BQk;e?^C>9bdPzsgmZd|<*tYcX+~V) z*m_vvF!mtk>+|K1>*_~@gKaFQlks!^20~FQvd@ZARWpa8nm~aQ)K;x)2I3{T5K?4{ zDBpw(ErK)j3BDX_9b%Wf5h}VtaNy6xTElUt$jT`AyJ; zonVp3fH=R)#cPSO6402DO+m$Dyt5lj&@UftW5{Jq*kH*qC-qk3YBc;0S6@>zKB_Lm zcehAJJPsCqz(c*~p_K|x2McHu%ti*e3}|0Xi%OzA z+0Tg;Xog@y6l8S9?HhxFB7m{Z3|G+M)}Szfo<$;zx4oWWamVE)0xr1hr_L|4E=Xo7 zg#b~kDT6EtGK*2iOFf6%Al{Ufsjp~Y_@La`y+n53;Wp?kC?bdAOxk<6Z7Jfi%1qxd zsGT zqL+JHeN~{!izHvzELEk@XGki3`N%F)-9k%Cloj{1e!5vJ#>)8shaGPo{B$#Vvm#^v%GvrI z<2cC-``&edL&&&tY%dBc1}4C6%+Q5xhyYpeGT|);$i8P?fND04CzvDrwxBcE9f9pS zvJD{$=!qCad2s5WrnyGrrXeR)@cZ;4bZp5W9cF$7l&2KX9+BCxr|tR|y2c;}-CIB; ztKFj$lH+B4vTx8f5LVf~{;_=lC6#N@%J=>_piPX9KuzQ#+H66qQZymuwQUg5KnH=R zW8Vs0xlW0#kSi<5sIk1u4Mcw(;u1h8lwC78+uV6y&~ODrw=KpiOV? z0*V8??#>F zeKj;ugAmIsP^~q*=vjUY{Y3zaLV#B(VkO#%VOVT}TiM`2{{WzPP!dJSVPgP*OiJ&= z@mtW3139#)bD>#BQzqPO`)Q=h(6lWByUOgqA>w86@Bd!H)$+9aWnH(6h|v zg;Ggc0g~Ativu;Ik6ZDIBMZm3f=dK7?!pNbU*<^$LE_@!Vw5Ur1bbe%NO0eHQ7b=& zlGW)J1L2IsC}$A9*dp0!?%u*3CG3i(SHrI-RRn*gY~#FMg-xkgdw{FQB594pdn+lx zmF-r-*PD~GT)~^EYu2mB3$7aYVpKP>m`Z~ofwWdA|Al%lS~&>t+YNg~I#bU3k^2=D zsq+p`A}Gtm+v{`Qrg!5o5VYkPV33^seTAylaT6J?<0V}M%W8o5X*jS`%rON9d4 z2%8`#;Q%wDA@+%0a2?3t-fl%RFC76!9fq02sv($F2gfM)Gl*(3CbMGi-H)@bAW*6x z8_3lml5dHZV>S9phe-dVDNY-i3W{6S=n*ikcywVMquAme`N zhj0J<_lSV?ZoQg{D;N>p?#hhmv$W++4)Mb!q_hC%L7w5U;y4#*K&1sZ7frY31@80m zOHR}>`%%cQz;_b~l&$Ul4}8tP3K@59GYT6F4V>Jy>669qo!bJ39O}MKh~SLKfe*U=Wi5h`?BdRmW6k_0@|5dG7>vWWvJRreHF_j$Q?B z*N%Z0ii0xc89xOEJYCxfSJD0Ro5N(8AN_B~SsMhhU6#Wa-bi z#R{!pyaZ(+@8KAcJz>4t5MI<44Ex3;}{P=H;H6NIcbOmR_vGqJ*%68hrS$lKR3Cp(_5f(gHNZ-O!tx3l}f$*&pundz&V#5`M?zi|zBnH;jVnWD<|!g$Si(hr=uu`;vpedO>>< zkmjMg>mZ2*f8Io_yr6>?cAMTVNvuB;+aK%JgF)m|7}*}Y6x$z;SgrQVZNZLPJ`>9p zL|`j8r%)D42_LWC<<6ku>%|Cw0m|!N9@)- zt&XRzR1LXu*Ymg1@pH6Vwjh$D2>PU+5CbR|O`&UmlCZFbnF}eaYt!B)T7ik#yFZqi z&U$6kL)}wnwXylQJ<4BlBI%FKm`1x^@t=<$coZQPG-UI0v&hQ)6S5`{tPbVyCjY=k zg-8i-oo97)?*-&b8isOB@3=jyF9du6q58eXA+Q$}Dm@V}Tif`d&Zh za6p-xf03&-E2 z!$=p4b*wWTE$~W6EooQHmnKgI;8MM>@WkTFkkQl&P@{C0?}e+gdKR{FtqN9^s41X| zS?{YztZtm+8*8B}ivW_Nhn*rAAPM^$HSWhJ(sN*z&O!?e$gVK56>IL&Q_^+SMZ<@t%jna2V=z=+z30)YKRhLZjIw1R;BTLE(CS z!p#@HR&Rk<`P4=4O=()it|&t$6Ps<}kr9Qsy}bSN5_ZR1qnq6G z$;op+S-;{Vgg8DN?_mSVF&XmgZMCtf3^4}%spNx$y}nRr@tOJL@6R1WTzj(3*{GyA z=9iUkID1>2jTC9}Dr@B-iYvz-t4^a*O`}!bAj}hrECT`z(L!5?W z3w$2h`EGC9xJ|??;VUOE?A2?SWfWbOKo{MU@AeJCn010;So)hcokz|Vb!rR9%cSmC z82|P_ZyUUBFOJDe>bk(5Ht-Lx3nVyE8Bg_Emp3mn{v!N4B9{p8gcSk2XzhX^IL|U< zm!TVxoz@W;I@a@?=Yt+NmXe8)OOy}K77dKR_H$;36LG?`gD5k~OKk6{!EJ*nlne26 zc->%M0NE}025Rl8pm|V%+pQJ7|BV-KO!cAtAH3|YOqo{M80gd2?t(>0z%@Vsv(<;& z@(S>XOg@AOke*5~j#|~^zu`f((c)YZHhpU=y8}zWEnw(TjKHkPTcdXeFF4l)O*_2P z5$pl!zQD7=wLS#v9GzU&7 zG|)=MPU-k3>s&ILu?w9YqeKIDF?dsVD+o2Qnee50!_;c z1$sO-q<7kFE8tULN3%vphr}GY7~D3Xb!9QczQJ_^==CBap;&Sl2vz{8aUfHk+9ZZc zF%_w_XYh0Yt_d;2m(-HuaOPQE$J*h@*{yMeq62{(Igwbk40XkI5CPJG{zUo2P;xMw z&rcu@PzyB#JCcLBd>;ETS{ARuduSZ!LT-cevz1jta(ON4Z^kXqAg9KdwJ75?R!YuLg95@-+3sg_)|H$Qm-%f|@ZIrymdF;mQDwnn!fZev8_g#^83N(X25$6SZgq zv3^Woela>gKd3S|uL ziIzhm1LYC?J7hh1J0c#e^Ok&K6^X0-RYT}|7G8p#4mQ@74)q0)8_aVq=!_KWR=4y&zh1mikT6XZ9)Ilyn*7E-okTWTd3e*^hGP`I~Mc0 z%u=*coQGGXP({FVzls(pS|=6@ut(%7TEi215H1hE3=vStbizcLuT)<R|3>jdid! zYX_DTmQ#rn(eEiMAbRtd#4*L_P_eO_P? zHUU>1N63fzV%MU8c;P;9-$8#W2au@k~mp6O3f)OjUn3|C7CehBF63vb-**=8q>fB`C09hxZZcrKK zCgHnkDz(jlAZB#7h;G_q>fJvy)e5npX&z*jp_$f&j!uMx%Bg{wR<>sREtn^@I>VG4 z-{{s_t&5BNXTps`=cn^Z)C_b}Y8cA5Ojvm{j7{)wrjS#Z4&%HaXOH#0 zCx+5_2-%l%7S$om2C-W@xgruB(W;@@L8EJW6FzsWLhiF%g*tu<0bD9O@qX`v*Uatc zu1xB^Z6fD<@Y<1qsNFFmu6Sep_phA_KqmuzI0L<|t51wg=fIaJf|1cS_KeuFpCEhOa~P1>d2znQX5O+Rc!^obHvj1S6a%RW5^hircrKdq`fg3d`5~jMZPWMIy2l>!c3#AaE{(y}#~7-a-$D^|+P! zQap45=MDa;8vnsx(yA@poqxU|qMk1xaa*zBLNH#kKtH$M<$}Ow5a2vcwlLYa^#t}h zvEnjP3+$iz5bzK9Ydl|TGg-8+{H8H*Lp&kmbNNTW&QNTBwDq>#C}bMgxg=6^zAf-v z;TA&S5{T(aT!5nYn>{wMx9x&RpsCU%bdPF5ViLjG&l+F(CGGLCJ1FlxluChNF1l-* z=2Dplf@^o(5K)^8o(5+QZbe!EUAmf6N$sAuZ}yzn%mUtl!z8VchueCDFT*6pxYvI{ z>=Cqy{E|S!L^m3G1S<$wGT|=JCkp=~(hXMW5uk}5`qe_l279#8gCvC>_EfWpui?<$ z6v8Z_zJ(FJqh&P`qyo3lON~837BN1WGN76qT|BH&keaJr-n)z4HQ{E(!tB(u5NXHB zyVqx~lPb-~pw;g(*C{PtoIe`)0F9q+4(VwCa}c%Zbv8~4EKV~46GZhm7PBZY|5UuN zIn?A8nIXh#pvz59Pa_Lb!6)p_ajS=U`Q*D0#2>M0^!CXMQwK+|WK&6tNdA)-j=a01 zP+FuZj*h(Bhb^&ywhswN8|rY*oA@&26nuUqp8i9Ip;~%-`{3Tzg{N{FhR>+--0Vlk z$Y|BtB*T*zK?D3l>OFOKsvptA>$u&FyS@cAZ61nm3*LOwrgTnV*6T9m@{zMQk2Ot? z#~(1M6gQ(IldB*s(hvYj>30V4auIrt_Z@y#AMPPqXy$+sxWCg6eVru&G|lhm59xX* zJasUAQNYoPE(jUgeY1b9Pg%@hy_UTU3SdD3+T1~qq78fykN7njSq;n=7CX{Zo zyC8yw#Vwl$* zh0&8&iY1f#g3{MLsbn2FqvbD6Cg1gwE36gp>|=`yx<8c^3oh}oQ-!hvFp8iTAeMlv zoiLd*OdI;tx1o2o3je@_01A|+ZZ9%y@;;Ei7rmnh@|9XoQ71~@HOepwWG(p9pp`SX z@)$%jSA1;!MZItElR_;mQ(*zPpI5*>FCqhZ_Xm{jT;7c>)hHHmRf2t8)|COYOJB`P z1s+}@uSu?mF1q>tm~8*f_&VI2@&JMnuZ$u-@nHcRA5S?rAdUb%vNjveu%x+6e3co1 z0A$V-;?8L0JWK$*9to|qVqW~|5Vb1qlINjX0Icyu+`?OSUm9awFufa)`6Ha}K-5{$vNpFU+>2eh z0ibF>^To|M-Wnw^QSf|e=OW2<7lV%i$mkfC6Q!Mn`ClwQuzrc}Cc zJBbG#iMXu-+HEQr7JRS^NoA--d37!1p}qaFpCPjdGPLzQeGH8V^f);be${rMEhNxR zprwTrL4`$H<><-~E3F2<;1N(267-GMa5qPfHVy%{adzthvaqYRmmY7*;YTy}JzjK( zo}J0mN`t9D2t~Ts|7-Bz$UfADFbD+*YfUb%!6nCNTny;C6>~jQL8-yh1FW_2(C;ivOImyy8oEZ;<*%&H?tK`Y9K!wu9@S86?MpYHcHzwRx?tv|E!TUinX6e?v zlVj0M>e6IY*o%rCfj0mS&cQ_;NvHHXx6$18EIiONW8F((1tgM^!`7*zV_t~(Woin8 zvt=Bfauk7HneWV)KJi6X5||9_Z4JZ8LPCMN5-(eK-K(u4>8s-C_=q*(c2L4BLG>4U zw{YL7Soz7-xk*OeQDrkn;Yn7 z6zZTTfJn2|H4+DB3erV4+nN@!(?G-inuP11sV5>CsVuX#CXzUM`I)Icc5!| zKX2zYB#MNl@1Y6O#?n9|Z4!rcmsN0k&K>yZg+~qkx8R7he1>jEKD@k?;N+&y=D?x( zmcjH~1Vc44GN1C;;~S9eIo<&s$aL~P;r=(^3RVq`jDSX0%CC1ti-q(ZRt0ki03VQp z=BB4QJP^9)Q5jyh^t!EvbDwoKuDAZOKb*au)9_XX082Pz9shZ9CjJ%Gc?oW_t{6rk zPwxgF#ov@0uYvhc<>EK?qn?ol~APK*RRgP^if7b_8zkR*-SAjm+rY7TkPyu zRUrLZ~Ej z#w}S{oc|(PiHn6uUo4m(G|__{aiEcc=&r7Id8~0Ws%LzF`4=Gr5d8+koS?a~5qwto zhn}r4)wQUK;O&5%411fcdSnz=6u>~SZ=HO7WCRwb5aZ@R+;A}p_4=ync%4c^QQP4Y zg2gU1sTE`!Pa{LF1UfOafr8Rn=SIL9$ogzuAs2V9YMcv9t@jmEbBhg zjtiR?yxwOxJAXp>xecyn-;IU~n>vj0)(6tJQn$0&y5CORmf9j z7R#R6B~@9&hP~jh8XYa(IKAAn*(Xrsx@d<+`IeUMa5!PdFgyVT_47PbGE<$XXk{wQ zJUs<3xq4iny;46)xdD_uPRKEk6>v5hv;%o%RW>L>m`N6tL0iH6B>B>|~oFQU+x9*x0;7{2E zR=nBs>E;Ba%0TD3XUn$Wjm^d~R$!GQXV*5uF(-|sM2UFv-QhOz0aoP>vvl%8@7Ws7 zV4)CL@UV4=D6+jLFKh!;wAiFDaBx590f`i>_PSI0o>rcgr;LZ62!8rKDB4U}^b?LB+=;K+#1;<%67 zrTloc0zE?0utLwCbq>0f6@J_EEMz_vg)ytli-U&`Y8}njiTSB>3i747 z*ZqhWUmosX+iJ}fx}Q(=vpx?{1UB(kM*yAsQ1d+zXJ!1A%j;a z|Bs~ik8h$**M`3{NlTkR^G!em6*6rDl!THgQeclOOlc{tfKJhn<*c?-ER`y_Q>30+ z*LDa6q3YRK-5=t*&sh8sCR-D!)qN?Yk=Aw5p68SIS^DDp(MN~=fHajg=e(aD`-!K? zd*wX-AxWDilbP?_-}}Dq>$+}Z*_z?MUf^s7o*ch*@$(A=KGG8N5!#@)uH3pXlTLTZ z3=hm*&bR$qW&j2+7-$4&m(sCZO9jky>VmtsXgf*X*Rp(>g=O?XecxQ?{Q$EN&Jo!C zz0(Xn3!IXuQ5UR(oXwhp{RBzuJjN_V2!HEBV`AkJXPEWn^g%|Q4k~`qLqP?(br!}H z`xL?f>?^J`7paP1KlJ%oS164Xi&cyTpmuNJKkuGH-YhaUK_C^+`&e@nUhxadi~EO$ zqR@ki#T!|(OJP7G;^WDH#AHP*j-hlSi}3b_^L;3+O*9iHt*8-^jM@BQ3k}NH@9v~F z369j5$`!k*-)(y>g3NQh=!aU05JU`)4gZ`&E@)bk)-CzDHmo%lGDrQ+vN#z3k@ftP zBS*30jRllYYIJE?2E9a#i`wCfjV^%+A<$%Uru_FL7!z{dx@5ff*5udOhhh0fNyOtF zbKRP}JG|)QJJGyl!khO_e)aMH`>bpM%!hn;lH>2B;DzqJe348|MpiR^3)h947ZrN` z8=w-$2WCC9E_@@wCE!UNpO-)Bh-SQl%Emltl>;S(%OO$N=_pf^6gv=7XU(SxgaQ79 z?u3LCS0H7cWE?r|1;=Zhrb}N8%*2xDVOSNFNW^4PZ%%%@$od9|l5hY@i3p#5=78B1 z4Bnj7;Ts6`JIY)!1AwU9g^cm&%}FDeJFihv;_NjG#K6%ClKQqtB}AbmPBZucXy`JE z6rCneIKYZ>J zLaWEO; zfi@RM%FhpEq@u8nUQhd?R-+$QA0vWoH3`5@^-SNamZ^0phxeS-0eLf-0gqUd2%?1X z!+ffs1hR7641SQ>Akl~u$2Jg#KRO zD4g|(gc>%;I?4Ts1z!V8f9tE<5%82DSoz_5y!OmnBjMtDLd=6de6Owze`NwkJKff* zC2mKHtbf#*1F>{S`{6bzI{w9QHH;E6zW=l=x>6}R2UK`0@ekR_+cr!`S8P;*z5YBR zQEYvtPlY&=%yEBpy={F>p|D1ol2-xE>}@J^ULDxsQ9a+~%D< z{}>7M!NRHMAGc-ZncbI8_qF}htJo8ZsyCP}fiV?tm0<&a>d3c;@2kQwfJ~D5$BeR- zf6cLgqCEF_Zcj%P`=|KjNE3uy9;DFJZe7C@X{;ZO_i)6bEO;~PXbj9}aV@L6#T`en zkCL^hpI_zStJICwyPDXpf`fjwujtKOqL6YT7Ep(ODYv;lyqbJqfV1VxqozwC^E_OJ z2=2boc%Ls?o}iP4kC|_O=QuoaKG@#c-hluMi2N;w>7(<(;$X8-24n45DA6FjJHV4DyZuA-}wk83uSzjLfWyU7GYnu zRzPf&4wFOi0S%NGM3*x`6*(I*h|6|#I3X0uYC$7+OjBmK?4!W_(*aK77cTST8|XZi z@`9ys)NLk30XQA!2pJ;eMuLW{X%UY-)V^^jeNi?MLWQ6!6ygDDEo4AwLFs`ymC*7; z0tHMSMfxhZk#EZcdk1|xYTp9E1ZK+pAInj^kPm21{sAUzVnlHxMCN*4&D(J0Hz|ZA zc`zWV7=IEouI@S6gDF@}_ab-1(kdM1gRn5icBY~1;LNA4AU##Jv=_A!N0}vQWg+5y z1%#O|aFzpC1mwgRlSc}SomT{b)7$WVmJ{_z(nFvdP|C>mid5XEU{PhL|7N#}?`Mg$ zx20e;4W|K^F(GK1oKZNQ-c9|OO36E&E*>Sg``!ZzPBgxnC~)a-FGkFan01`3t}mJ$ zGy}rA0OAr`{Wd>_XmbX5_0S8Sfi-cjmo(pqE-R|uvsz;n(d9=Rh09QBfk}b9z z*}7v|A@G=K%#BugSle~!GY@a$RdW_xu zE+^>5)lrxCAjU(v6;^o{gRw%r#l>)-kyv5PaOcJFPNT$hzI$=<4V1d=s4g&*s##HW z^x~v(5yD}wz%tRi$DjMOO7HLpmfsRbLH(yyL!Pn7%FYwdeJX-XY7$v#`1q&d*bu*% zmDe>p&OQz;s|%K<5kqH#Hhczy8NoF?S)m!bahIziCtR%PF%#4o`NxnbtMPbSl!Hwv zNHA!Nuk18}&jKlrN8~aPaZ{{A$VZc-=W#&9MEmg*K-nu!mp2z+OxE*9qZTEQOkYPe zrm*XPmn}{wijl1FlV=JrbS=zut{E;sVjMCh*p?^$Ufw(wVpXo@^xuu$^I^bm0ti*8vvWSw) zecm12mbnY#!?(^VHO2^OHjRMt5YlvmLAa~1Zx#uav>Xl@wprZR{>qwNu&(e#ED?^e zIj;IMmU5m@gki(W2sJGplQ$9nTHGkMkm#m9!Oev8_`0-7T@C6V?;MGXxTm*Lc6>E; zDhm-a4B=nk)r&)_y9OM4aPKu-oi5nO@P?BmXj%-pdqrY;)Ds-(FxsF5!c&Zpg>T-ZvXZJw-Y~Rks?;k zB$LR~_g4omXY8s3ZDSc|R^4-TaG3+eOll za}GEs&Os)N0d2e$2datdO5udUlYPPWyVW@zIJ3JnHuHl3z^$w_6$?n@)cf71x`Xk! zPbLR5?&yda$QbY22+kE{PtL&c1?FKvk!c02378M5UpY!UKoOt`cm_f&i#mXaE6|4% z3H)M6SgdrKSSM_hGiKJ#ASIi%0q}l1P0-s0Vr?BfN`acp$p}qO&^ub6RjG~!!suin1RSEeUT3De_;X8h{JPwzzG1!U^`C@+l!_qtKpXgbV7~s zHq3be;;bmdb#sdQ1^OWp23&>!?B@~XKK*V;d-R8o62$K8egF*N08GZ{_)-5p& z=9#+o+qWtE8U%pxw&Xu<=PH(lTRs2nhAg&R9f-kENs}LAgopQH+TRcV2=8a;(tF9! z7}-kEyG0u}enRExc{DK0?hpQP8(z0zu^dX&I+T{;20{I);|B_@$P#RBH_)5=HgWrF zJ~Nf}OrN@vZ~fu+2aEVO9Ow0i2;p%Fm}v2<7=EO7v?Old9RWI)t$+bOmbg9qv9KN# zY5^?yAdj7L4^bcD&88TxdejnG@a9xAyinrcGnD!7=zOmmV>(^^-wCzyAxwKWIn%hl z!W|-V;2l1B13t&PS}jnk&N&0|`P<*aWAx6R0GJ+Np=!3ke_4fB_US!Ri zJACe;-a!zla}vdgoL6AX=<1(^&kR@&;92)xYHR~3Ibw;D!$<(lAFVoyhMPyapLXjD zr0yL@=YCO}_$LgACEdZsHcx-AdHNQVqq{~x7>9OYU4Bk?IB)x{?paM-L;lyc<9|l; z9(47%VyC;sl?MWSL0{af-}~t>ENBiv1Dx`re6)6Na9uhCiFL?Y32tG_H1b5iP?F))Rb--zLdi>%_*S2rOSVNOClWcG)uY*O{)7QWKwG=Md9iO^ zB~F!y#^AO0hb2=Mpr&iFVGD%YQr5w5V#8``3_0Heqq!r2F%Yy{VB-US<~qfAG8c~m z7d;;Q#b{svX>dn^?87712YPnruF<~@C@If8nlpi6(I**x*Y`_d^NV(v6v=&4gx)CN^=CNY{p&a!f0qYuQ7!C)rlnqK_dFitL%-(lm< zV80pAe3U_mFO$ z6F81IV3UQ$E?;5Nf+5w+VEC@v{fQq=N$v_6I!`h0J*kM}ic9&CbFG9+XWEII&GP-av(WO!ZKn|cGsbpP2>{vL?{loy~MVQ!%_|&D5w|m z83Y4I;O~z&tE*U$;s{1wPo5bxM-f|>pCG6IzH|7zn&b*_J!=58s&RD#;eII``tq+A z)cXuNd7WD`{GJAKR-Ie|OuiICY1w-6uNOv;geRfapl1_xj-g)J4Ktd_=P($|34dug z^FKEhwk>9O{@{+YgFZ#`=O5G>&#HmAN;*HsBljmr#+g&MF1`n2ta)?T-uRw2_oEwY zxAAk$^S_gA0DE5SHmOfW5#9f}R7qW@`3I`{I-6=SJcIa=AP+p=G#0Tj(SJSx7Tv0| zaLDJNgUj9cx%Ps{Qb92bfU|;8+hW0Qe*6$%CTys8S<$lKgKQV?CLp!aP5f*y?yt4^ zc=Q|cP+%o$A=8z1jXFm{nwoFT75CtX1oW%D+%iH+vDK7mFk6)yOByoT3^W8hQYEo% zMfPasF^q`cW<_Et#fLFBJ%l2L3iy+fA*VB8A$#vX@zm(9QCK9!^+y}P+j5O`;Kvj@ zHtaIOcE(?WTLf|nP53#{Yfd8jbdAjX5LDMQVX`1|9OTXpiv5Tbj?G5ySuE(}ah5er zO;&*_6CX&%GhAqn?)WhsP?1B8`t7SjPJMwjuF~v?rRj@->veF!Shxk)n6j|c844k9 zj9_@gd?t{R@O|J{7Y zHE_A`l~|k-@p+3_fBqeTF!G_=)n1n$@9l!6j*`e@{10v+u0?=%Wza$KkGDg^J5)iL zuO}>3n(B0869F}T4w(+Jc5)yHrorSyG^??zuexv09k!g(Ae&6vZl|&nFRBtGkuXgM%{#F1pP@N*-?fN`_cdwR?)fISSDRVU;1u5 zU#;Q9J2i;Fuu%COf_SZ>jNQ(%@?S4~ zUdLpr_O@gg+ri@`Vc+mmDjvxLes4dZnnF(GRGAgfI7FP}_U)*>(WmMP(oAb*K=Ju- z>Eyku+i_MvHZa9Knf`3pQ#$u;TqJ0zL&oQFk=x%#H>1oh_4Z`8D4;IAEWy`w3Kh5`5i| zgs`@)Gv~FeC&7mah;CjxHyPanIp3|X!drKo4|eWP?1TRUSX$8W6W9QT-Ri(!y9doC zXKady_76uM7`@up%ci`sDY+Ik=h40yh2-9v6d#fw01leIuJMID>E7+nt`GEeAkC2q zp#|gu0}?5jniQm_{s#b^)hS9E&oD|3Ihr$?%^eDI%d(@EhSS0CaDmk<{^ilD+_DWU zlBC>|FO6L78|z3aqNN3o>gqx!{*D%Wn5W-_F_|qRFZLmA{8r9u8F`}5mm2$y%WApy zeqX=a?1~x>ezSJ;d1CS#PY1ur9hp^?aotjiuDnEBUV=AcU}!#SJoOY3J8-9Qj)5uy zjbaJ)P7lBId^=&DfZwm@M=omFH|(iPs$y2r6MZD-x#@u?`i9)VAuuo`tswmyIo^B?j4Ad;p_B6-qY^cxHthDD?sZX(8h7~Zs~iGmq(rl<4!v&UX$29F z;UtF^r|S`mw$8)omKCx14|f2^ zVKKMzT(Q7KIjr*~Nk4}bU#X({=ExlawK6@`+hNh@lF>O1oA*jZLXlbFFgj+VR8$5{ zcqBJ-$~d0f%XX#tJT_{nGP_HEpKw>EljAc93tH>o6VhTw_n2C?+vF4YwC-jK{G|{6`u-& zW{j>;lp}oU*30n05NkUtdM2AqT4-LjKT~nm=tE57Y}BVby%!TDlU{)Vc4MX4!epAOO^>mr9Kibk1iR_Nz}J!4>iHiXMH1Q3XO9u~_TF#3*q4 zy31kf9Vw|FIbKnddBB8=PrTDyQPW!I^+?uku5f<^L}Pt3{XpBdDFP) zbkW5pfCttOIYV_i12}r${vJi|khe9AS3w}?rL4l%->Bk>wiWC45t5^TD*AXcY+nXt z+W7=fKFwtAC5D#2{e8hOi_hMG;mz+|2qbF(ev*ik?xG9?*F^&_XzUDd z#wHkOq~>C^;r!Pf5WH(>3Yeqz`a^wy3!RZ%Q0s_r4;LI047QuRmk7JcAT&+uE&03u zKprbogCV!PRjdN2H^ALRgxyAUIX!~{oJC}-^2vwA0bo9Eg0T=q^eHsb;ij#xUyN2c zBkv)JgZWiHVmZ)}nt^Gw(t;JdVHR)x7+3Ab_RJHSQg?&Tqpp{nBS9?~=XMJ|Qnfm= zvh3T`kW=1cD-($DLOQOAga|*wpO?XRO!GgQUq*2Z^Fl3hVG`b?I7hIKV1jo04$0>T zj(-1T#K=S{*Kos>u(A{BSf!du{a4h2oYG_pbSP{))-|A)uYQ+O;#zEWkU+Mc68$hsm#z_j{MA0I6A}d+my*lIjX|0luAmh6)kZw`z zS?Y3zyB}gdk|3HFH6w1@a>LC6#{WnRSLOTd;x2%+E4Cro7D^I!UZpuBo~B0y~GUUv_dUH(iPc z6-(o~k(q%Zv~B4+A#aN>*&ZRAV(s6dO~L4yQcp_O%?6CPp!?9Mo%<G!&?%E+~`_g%0LTg!5REcHeqswxTP@n0GtC~s}e)npEDVFq0m0f^* zLjUE`fQ;{7ai@wOo>AB}&JYLKl)n!K2}H?06^B(hTCuZuk$>f#ny`3tQ-(akL^kY8 zecL-ZDL=RwWDym6+yMH&ZrwmH(Z^ZN%%Mi*DgfWi2xj!hb<1iUdx00(E()cEHD~(z zi&=ETCDW;0qvnwrmmB!J?~8%5tzSF%xTHGA?F=G$r<>;+l!yGtT_y?*KA`G2EV1+{w?df}jyiLo$Mrore@isJ(qYp#N`F+LmUb=`uIYFLSHjhL8(WE zyeKYzZ-l9K7v~%t6G`|iTw=yB)2AoBx8utsyRs$g zXy^Xe^|avr5AxSnRv%gOPJP3EB_f$-runB657Dg1=)Z_YS zXOPvddytDg-5KxO8B_zI{%A2Oj{NqdUJO-NW!1T{w6a8Sj+_pP_1VO*IndY3XZ?$F zWO~5)g3HfV0$l5e8X0xpCNGEvc?Zw;1>L2^oaG?$u5B)sColea#Cd64hn~r@uP@c6 z$Kkac=ra$BhMg~szSzfSAW~0|v;s_A)iP2U43w^NQra^5{yPss}sq;T+1D)n`;|H-Zg;19y-Sy{M$gXEsbo0 zNdK~_e@Nq~V7g>_Npi5l&ml0H9w5n-mpE{#i;9NAYdn7&R<#b?;gWS{0Ge=>**DPP znMWd685kG}`SGbmmB9`axLHrc2Y~u`R3lQnE;b}*Jpo`bHrFALO?_Rd=mKh1nJsWo zR&zGbdOE`N@i;6YJ+(Y;=Cxaf>yi@7y*M0Yvk{ozANHgZ)wG*}Y**(<&G{|RwqfVa z;ELYcMeg)V6<>(J{?)P*r8i0;5kw(<3>`N1A%}Z zgB)cMHVWY-mn#&t7E7Jk;x{`>C`#AvfKp4l5#f!B~iE~ zI^|XgMVvKD7dRNltf0AEG3ksT z^jabR981dUufTlyG6>kOlgFVQV%cP!Z0UsLY76=&vx!AdoIu{BCee~>!rJm%7^RY8 zUdO$@4sY1@E|S~*j_Ns3V8V27jiDOLu9(s7i}y!FgI?0vu-{OP_W5j>wp7#@YKRJZ zkyGq`M-8aPCbGTZ(<*d|JNW!h3+t~`#Z#Y@LQd1o^JUtVDi1kQkn7jC@rHU&lo~i& z%lj9~n^1!L*OxbaIWFpZF!HkV%kWreh{&v zrUP8-GI0+huRMm!e{)LkC-N#(G}Qr+@x&Dh3Is!`JHmKR!jFD2AX|(P!ccC5(_I?9 z&w3R@2i>mV4B28`E?^6;XB2n7<7(JWh=)m-Yz^p!Vi9!E47s)nxYfMhQbD@3I9bC+ z$X%LX-x5fANS-NdIdr~{U^Wd|UqxcI9w~1%8^V1gy@0=JnU@w;#p*g>b8xRV_M>RG zQPI9;KIliOZ(kE9{5|`F=%WQNWG>C;FwzTa#|C9fRYzSCP1K!r-V|O2cG_4lY~KPv zh&M63bSEn;f=rvU7(}$JCCl27Q?OL`qNvlk&7>!liL1rSW)ur%yqlb&rF3v8E)eVC z$US$M{5TuiHqVBNWYRb@;EAg`4$2si>W6t>fKDFzDW*;7hcm>Y^I>3rEX4d@QJ> z)EKc=xJ|KEWjXzVtlSv*z#WBt0j+~aApd<=F&-H~v!gC;_7m%0^;S0 z3W6wwpXTU`O4J!N)(u<<INgvmXC!(A%VQ!c^F79V9ca|3@mii`=qjSDssQ$ae#(j6 zkmrUp=xE66{#`)UP-){*!pN;$(Jp_7WlppA_7w#bl<4_>su(ty-9er*Dwa&C*a6!_`3Kbl5c&1x6==K9MED8 z(@56i#P^sl6}?#tdc$oj*UlMuDizkRKAOuQVo24}|7CUiiV?gqX@gz6hT05{jYTUkM$P>LZawXy!ZhMn;7 z2$>`UVoAjqKxq|3?=@wZcs?W<4dIoMA9OW6InGtv@~=7)?G+fJ(9W^2OsyaRj5I(@ z&8djBwzY{Yqp#R|J;+Xu3ne6Banubeto16i%r8Y0@U5f3Ke@fY`zFWb0{p%#J)hM1 zdl|x&2f#m24UkB;TzVH4mXAD4$A-;i%xxCv6h|U+s)GzYR)lS#Q^f3CIJu;jGzocukb@HJTDlQ1f za6XJ-L+4ts9pmuZmoorIfhj1V-YQ3Ml$4a$J2|f8bANM4Rol&AKP%{9m5E<~*_xD= zktmjZ)zQ9Kd%AaWTzoEb!@yc23?gr%)hT5=hFIQ668Vfjf62IiEsoZc_DO`1>PU1+ zIkHj&xZkdJ;nRI^CKipyE=>>2#WbhicyfB!db@7{uY~4a1MIQT&eozFDJLs@zdPUQARLruR~Nrvs>l`42g zBq$TzM|A&o;4!sf+dGuJgH|pqW6@G+e6fe!KRcwCwNwqCJ5%gdXyK`~-@JF>2lyo- z4({l=o=TK4`eCVRct;Pba#m}#-*&91&)6NS^=4`f#dAECY^#mb9XtNcbA%AD%siXb zb)uQ=X^V<27ciZrcad2jEj^RRQ{O(?Ds4Na8GX1#Jz-XSUqdDs$utz0h~@FldSoVE z(Rh+%`#S40(v`iPpTY9hO(FY?Vvr0&H3?G@z)>1+VbT+~KQ6DAZen*kf8Ld#6JNZ|!MOv#X_%&8`Pg{SveJEeRg z-f0~V|DGWWcO(@>#eJpU?Z_08tRigEQ23!7$|=xX!XhGwuv{t#U|s=FSGzKQYFZ!? zM=}tFdDjMg-Of6|lN^L1pNOZ88cl zs1piGWNX7wSUnh&R64^!&4j*O>h!8v`&fLncLqIQ+?g z>@525&aVX${?Ww-@Url8AK#8xYDRvF!a5%E9&_|@T2WvdYCpS&UN zvEB|Zio`Hs9Dl_>50_M)l*J&=lSzKxTgr+9wZWI-lQ$BX-e>d#dwFQ`#xhXcj@)M^ z8@RbvnPKE-6U^b!_`o~{FHPRSe14=4frK^0g5_tLw=@b7rvKf z3Zy1(a8Dh71!agCHKt6$AHL=|GHM!`>*%Np6T&@+%}pu_d{aAdL;5+ltQ(C>S%2O$ zaYN}O(*4rr&6gt+H`Zsv?$ZC@zTjVs|M#??ECPD^s$1l&%d_Y?Wy4ACp36M=QS>gU_JjC!2> z&#Y$HY7U(00-%c;j*5E^GEZYKR*j8^lVz0xM38YA@mgi_9vQx?R#%H=gn1Zrr>-Uzls{g)m3j+wvj^Q zuP9DvlkjF3wum@k3;}pe3d_K5Yf(Ws;fzvM5Y+TRo{&f#n)GFXzhI6nL)4f3Krc1D z4R2UmWqmcW>I~+KDCsn=PVGL< z-^tsAlx8+@MD$DBSAU`2m!DJ#WA*87e^am+eIC4H_}7G^(V(Kwwc_s3nScM?2&nT) zt4$_m3gVB@xsxPaV*S`IV^&X`yna4`TuXkIt!g5LqJ1%OAqQdNwu%5l{6W z`G;>rTIbBuQ?OWs^W&L5spUW5)pYaj@DaFUornK3t4mKIIe3HDl!qkkNAL7465(I> zR|kQK2I6h}Ash#hP8iXTJ_JXMt=B(sB~BiHYP8Y^56s%ck?^;T_q{UO=xdFK261fE ztsWWaglHzFOiv;8R-cJz|P?1Z!fb^n4oU{_XSV% zp|64)hVatYhu8cWpkQs%r-TjB|NJ9JE7QXmoPk?X7yNIHI7b2l&Qu4_GU&qq!HLbz z;#!hwVIH| z<9`1%)J-PV-9Ir-So+Ybe;ep`56w@ESNmUNWKL>r{|UcP1jr?u`)Y%W+_(!jpcz|M ztSL#t&9x>EAmY;Ht91=D;CdQ)=y?q+$yURG}DiS^T zDol3AJazGjasO}8rV)Y}n@j^`=)C~q4g^DkV~94-QIlUN37LAu%x5IfwsQv1NfB+B z?d?>b;D%a+EFzSMkYJiWO5DQ`qb(QOSB!WF;P%SZAMrzu3E#i?#Eox%g`Lg+P$3EE z8JkEAe1Dq>T?BoSSql&VW!6X5xj@OMye=Q1eRCzIxi02 z1`_PjvOY*pWFt{GP?x%t%lIrXTx%yX=RU%!0f{|szJ$zv?y{RO;oMjK@d5KkxUvX2 zOoR}f>{Wt86E}3=-vh3XQ1W8VY9x2W{82ENo}a$ez`kmdMw;rmx;fz~mYO@uYq(_| zZ|z+8eq`6+=pk(7@q$H=uo>8QK!+ak=Mmjq%Dxozqn%*cj1C9bEu0qQvDpdBRZu3~ zAq)oONEBsLM|vi_o)x4T&NU1BVS(m~0(#>n_o~upUgz8JR?_u|qO2smr6Ly#TR4kH zRZqr&K5^Ciko^-L)PzuiActl|E0Eb7oo)=^i><)@S5?~o+v}WAp(xsnNKmI$#I=xH zIn3y!Bn{5HeX)?>mYJiJa{h|OdTK%I_pm;Mnq;Oe;J7g#`IWGbYDkG#Pu2@QpIlTNUKGxPAeG|LY2?x~bPQ>ek z^+QrvePxU8GlL1N{_}CZd_SzN+(U_cvLP1&b+%e>t$kjho$oZU)w6?`Z)h(cX)do3 z9;7~XWlLq-;)cv4f| z{OOinfn~*obcbHMchK#M-INzKpVWG`bYKED<$U?!j*{cNhkM$}M1CPvp1mUU7OQ`- za*;=UFKQ>A1B74_h+4hj^9%1BH)Dt(+JS7=(L-P&mVR5uZ>Nm1R(SV<{uAhpN)Oh} z_MUyHlNp9=E1!HdndV+$A{~#9JlCF#$CND?(uZ8!8#0;1O2X&Lc=p^_T#pE>vJENo zUW~Ad-Hf&!*m1V8O9={F31F7SE{tEeoP)7YDbiiu{UXRY?a5Z1GIGiGck9On$*)*y z41V(R+LWGyE?Hb{Gj0qEd z3m$D!MH;2ZZFH1>h>%>?|2}@+{ZlZGGzu1%QFqNKG>`!<7o|kaXgWQMbW*6cb?+7c zzTqlUp<9MM2D}LM!+hwI^+)9%M_oH z$YJO`^qSvNps9dn6@mBv<01%6Hw5BP0PH}cFB2w#x8azYPzXoK{~jlAZ$~OQenWhX z2bn)wfBhF8=lcKKY)VjO(lLoZaJE6~Vs(!)@J z%r(4Cbm?L$>?t!LmDJzhxZU9MAg&YP;Tjt`JUZi7839X{p60Xxb#KY|jU4e|qCZc< z(Ek#K{Bg}l6W9-a<1TCu>G2!YxJ|%oyZB?TdHhBdk)b^r4$bR?jhv&qBh-pGl<((c zyEU%Y;LQX0ZAAX*? z!sM6v5{9yVP5U4Ww1lVyWwEx4mw5&pm_!%6SwlWtMW&lWpT1T}{XeN3oEjy{67FAR zxV@;Ea|0gXTl5_NmN0RndRabF)J0qX_HC^43==&o&%Q8?7ugcaj%l#|G`VNdAyY&| zgWg$uRn>TW24<#3fzWJ%K|m3S_-7kF-ard@@WS!^m8Y>#_+SvK+-f6VHmyron6zg&ou?;vh{wdovxsDaU?c2DxiX+xCd3Cc34*uxOas(PtBJS9Zk*cT`@F=rb zqAa8SfjZ??`&{m!8#jcFWvTW#UzE_Y$T=b%Ky?##a#4p0py#xD9e(DhtCAR9dhEF@wugURh!*nic=(i&O^mvgDF36RwKW-SAdwZ|gRW{b&tE702RnO5W8Ltp zbwx{+e|+=BfLB+OVGFO2t6cHX;r=;En3@0*t@9O0OqAwVlIXttWV^nS)aKCDvMSWg zhjPTc0$kdkFP@Fss9(Bs@96nH4Eo8&$|sRO5xt6yWO3b4e_8wWY-0%7*5T zmAq^s>x$xd3Dt53+M-A`e~W8PtwWqa>gE_ioU**Py*2X-zdVg%BHi(igwf{HR|{*- zg~lW!tG`93BlpUo+3ScKwhfd{E8O0+2T_Cr6%s2E6PzfO)+)JB6={l|MnE$P4;&ai zAN&rLLYA$J6F0I!Z^D565D*76^%0;VNQ?_=iiXAzQGe+-J_V9&o9;^|41_$1U{dDs z#*!pEpZH|CVhDgm*x-xzoyU;Pu~ft;+6bN`4$&b*k<7`bM12Pq@cGrguw5V~)<;pU z9>?l~x${L;Ptu^7 zK-_-~X=(`?^RkgBMoh1WhaCpRSOT@4M7OI$IB8FVv_8`(-fM_5)PdX7iG`pXWd(%z zUov=K1m=%;>IepLL>zvVl>?4^&c!+ylSU|{z3((#Z_}0OShdi84BhrtJ;VR+WXrf^ z-r8S)?|g;hAgP2K`N&gBW5uvs= zm5MCFRH1xgyXs>Ay2a<%eu>SVu)_DRe`Ps z3rkbfPR)W0{sgBOIgyXYlXR$yb!ignh90qV>SUf zLMrm0wK@VFm!(`oms!a38(C!SrcnQE` zck>bn3MI(L(T@S)>Hz`}L$E_3Ww&23#*R!w-Nc34|$TSoa)&DO4xjO4~f2c z;JvexXWCQJ>)5fH-veEER#T#H5I)Oy5Yv!cAEerqvnnxS=5wUep*UXKHN)tKE@ zUJw4Kst^)>yP>(E-us;vwTq7Iws)HRq5NAng|MGsu5>eTs=EFH`Hj)H+J|Rs5ZNT} zH)cVzttJO=P3>mievw2zh|C2P7`9`C4u;K9SRO$l6t!Pr$tvGx&10UQd^e|}e}Gpj z^iJxNwkhs3t}O6hybbZ=W_^LB^!RGuRI?l8D2g&Q@d5W)bMy(^yWY=X{Av=O7n*{T z&B}W4|Em-OJtHa%KMeS^!HF9U>;`U_Csy2N3^?=x z{?9n7eExN1=pDCnxr7gMqi2+5d%f8DSbZ~B9VGvkkuz~K!}9$OZC+nMXQ;wyX>}Qq z9E@^g2Vmzkhs5DgE}o3$7|>c%_<}U6zyiXtj)%2AT(KGArR($~8$&oTxpa5J%}9$t z$i!58zkNf{$#S{0idr7oJ>r>9OO{vRM6-KjUh_d}lb_=kE!(@)STbU=+WhYFfJyU8 zc~G5ZikVuSDF8#7l<3J`d|(xpt^JO6VisBM$mka;S)vf;)XSshOCgfs6MJ@#cw;_X zl*3_b35E{KW}>)Bv^XC&iq;KA#;+IGTux(;qnEJFZ}(~7oZ74;Vm)xVecm%ZE&^;$ z)RYt#->)+tV%Ww1#9<;^MLzivu&I9_v(fdob_I)`DG&TtI>Z@ZPh`EWEM&Zi% z+gj#=FK;x$qU1bAIih&;nunKmZ$;i3&ySSI`4HI zq3EWQ(nxGiY?Bkqp+n@Uu4rtk6SvS9QZ5s2GO%dp4sr=_}Ub;4$4u)Aq zIHLUd+Edqn;>W{zM9qQAEuXqR7`}sqfA_i(zZ!*3petdM|9oxNsG=sL3`3R@9p8U_U--iwUD!jz+xcv$EnSSLx*d}f=dqY5C&NZQ zfJG3^gs=_cx}xS`x2iDr#&y2|t|1kzb3cwrOJT%RQroUm7_LI^wsZUJYJ`KnSMF7&f{__4_7b_YVp{A^^EyfBYKZmH#R(R@=pDrL!{tWgG1*3~? zY~uGVAcv!N_w(+DgT0H!Z^$Q(Uiu=4zUN%T@c)za?g4R>=l=LRvr7WIA-ub}cun#y zH*pbnfDqHu)(n?K&{T)i4W>t7AS4>&Wl&=iJb}puqY^J8r|qe!wG)iG&PsNVl&T?Q zrva-;@N|0`N-s7{FeJDfkK3NZH+-?|{yzKt{UyO=cXsA|pZD{8p3n1n1U}!(aK3#V zp#n_M=(ju}J(kI{J@Eag0=+N;gyxPtj;wV~&*89*C1M(ew+~DQ#{ba&U-X6j4LTl1 zg-*jjIku-&5~@?D(iuKZA0l&ZBXJEL0BWszgNP)lxqPO-J914f$<(O_t@z7P-{o{< z^3mgA^z*Iz%hN4?*$74v`K|$lFkPl>>;|Ez5}Hrg+O|Iy1e%K)r*Y(3k3Ri+enEg; zOHbR$jR%kIs$>fbsi0}TpPyGRvWBLlI(=EoYvU`MLDc&b_m*m&*CI=i>iAUw+~#$t zM*;zM-mm?D#5^30M7&05`Z6)Q>VAr_4oewKWh!&Gek$rNBXT3nBxTSumwgimD8y4& z2(X<>CiT1An`N=`y8{E!#EnwcYr^UE%=EnQ0wceK5%5v;dtLbaAOA23kuV2kjXjZ0 zwyOTI7y9#6LS0#Ngp__0aw^~Pw7M1e1WE$CY-dHZi%}0WhNSem9uJ-k3mP#(8gmGF z708)-rPYM}oE0L0DnmJ&taAO72&HH?x3&}U8O~JTq2-JHim=l}y@!nr!0VhvYTzZ? zE0oYz+?QEF^Q1To3%f`S7lBPm`##&dtnw!qQYOy_~2D&D8T~8OZ)kVp0HYV+;L@Ru& zzNX$0icT;>%f}Ok)wg!#f!q)A z6uofe%?I(Xu@c5n*8#+&S4#VMhgimo$6F7!H3fMuj1Qjc9XVh!_hqRs@LX?K+uU4x zV~kV&wd);p<~z(XUI9zOwg>-_It({38R^s28S8l1jt7j`OloXhAjEJYakU1g8wx}KdF2{e})A2+%8 zmz>ddqQ%U|8}rO|toqQQo{RvQAKxz+^pK3@r@h9hb@Y&>(71Vwv)T^Wrw&X?dTN%v zMy!wFP36+fk6c+glI(h-J;TTL>uP>sciy&H6coo_>3VK>IvIpD5BCzR#4&dYfLeFTArlMiLC(S z?`@xIYnsPWl4$A2ZL?M*FTb`Yqa9`XxGo6d)V`56dZ(Qdtg{Me|I9;> zzv#io>tx4ueDTPYBid?EDi7pkz6l5}y@n%V$~b*7 zCmmk)f^{vgZ=?=J%ECj%N)geE@#$=$QDjmXmSJ(Mw6t?3OU5Ch(N!!tCg3J5b5pj; zmBI`4PZ*goH34|yGCUGs#X8?O4@BK|%gN~@Fss$G;FJY})y$vyQ%LBq zac#ERR^VW0-i)TTK3;Kf>d%@V1swJp7Tk|Mn z=8>jU=Qk3^nXGm52vUr2;yQ{N11k=TS)BZ9`iPp1NtKO|3Rz&*wFgR#c#1k~@K2eB z6^gPd0OifFk)HXtx>U7qR-5>=XVOstT9rr>g?fi1T>4A6m?2#SC2t+ad~A?qK8Paq zHOG4FF9BS~LtoFb>(oa^ZyCYlIYV`Tcur?U6=OKD@g&6x!W;CugO7rb?S?2v!T%-8 zDpfr-Ci2J(7XiIq7>?w9w4lqG$YG+Rb z!LU>&dkwFOPr|mmY8VWMy)?`rYx`Q|Nq8j>Ob}I22)M+Q>&V&I!CgXiNIxQ@&WS( z5~<+WC{LE~k&gO)Os1TT5L75)j|mof4p1)n@ZbxWDq)0E$;dKl*P_+@{9k7^o~P?z zOTuzF0%Y{~)`mvq;zd>uUHrg61bw)%m$wW$oS|ysVQNj zJbQ$Q<*r%N=E2j;&U1zdNCe5#`tC6CR*Z?{;EU(a48x*&%;Y$hQ}x!?`@<32-<*Ve z_4${>#S8wXFD|lIyFios{(AGM>KMXg?)U3{nt$t*W2C|0!|E+hoY9v4^`THxq7=dF zefMYQ@93X}5k7PhMa+AiuBK5Dng7xsm0_;)aHHkzGjmk$=<|c|4rQ-W!m$PtX+in& zDn5sPhW%5i8na`f9d)BfTjkZ0A4a96U>-!R(yLej3}CaiVCsZpV9c-QxU%H`xOY%> zz^Tp-DyJ$rm%;=<7X=*Qi}6e72y$Azqp%w4(`>Epo%fD{7PNbMK(Z=mQ3Rb%^-R2` zRG;sNPFR_n@{?S5Enu`a)EA;TTw-M&WGs1nBxh4H#0Q`@**)46pYM=($c=K= zMvMC*9F|fIoc_B-9&3WZ*9|5f>p6{XjALwBggi02d$gfrzL;PZiAcn;5?_*Gx8jLn zhP9d^)ML+-$oEHZQg&+m0Xuk)5tOhJC|yAMcuy(BA~AsXtd`K{Uk+MvvA|_F`TE}+ zX*}hKFh0^#RvW^kKk%#~r~*N^bPH&Nx$ca3azlJ9gV$J1YBs6U6#(i&Djd>Q+LTz; znSMMbmYZK|RSOFswz=i*$U9Y}IC@KL4KI{dhEpd3)P;c08k?}bw4*#6_Ge+NByn_i zLV037h=K$G%Z~vG3ovI97ZYVMbDmW1;Ur`|1sseI#%8@xkSE8o#{71-Qj3Zb`k9`UV{RZMPkd8I*mb|7h=e(iU_&k z3DD~yqcc5Av`$_@&x)HWPaq=@u4$g>KO1s{63eN&B@5V|k>e4&OVmD18&*SZ{R19& z2kRpa9f$Cn=Cm|mV<584eOYDoK-RT&-cke^flyj@PSejijpx?+v7^frZNNF`#>cVjV-Yg zmV4!L;uzqMD=dG2N+?{%%BH91X*MrbO3a5oOevelLg1(X;Y{?$W8(cSG~ZU)Dj9WvpxYYz1yH?UFzVF_Hp<1}jC z&#{b38}!~v#j?wSB-I6qW<%Ryt>Kt3+5-h^g2-(ZyiQ)l0)}P)og0U&_k|( zD3$trIS}E*a@(HW)>^;dES6St+C4qnK(_0ct9e#-oLY(fsVbv5@2d|*D2 zou2yAy6r%b)iEAbJ|*ToU6sIhKI6(2X{nUE&6`*?t@2>5~Oy4RHZOm zNWHz6Cs*Fz(Yw&+8(`egK>ig2gT3agY3n@*otrV`s{k%`$PBJOP&i!BqZ+9u<(ITh zYHHcovv)4(*AchGCUHEdcZfCuWV-Xn_I=PCoN(1DwziC(yk=O*pyv&R1yQaJHZ&NK za|(QLCZ)~=f&%hyiP_7fG37RTS!m;|_l0eJj>JcV-N2Ba^p^6(NSr0oawQ{By$#JQ zaCB42f40K$BHbIugu?b#`g<;M0$3RNh*1>mkaIvt1r|Ngx(y21PMxO#(^Xk-&2`8O zvkbbrnrrI4(P*(e3LM+IEjrX!EV?ksSNVlFi}H(LBkU(#m^{|jkPJ?n=hUfvUAv6A z`~P5_BPLeIf7BR5ec;brBb4Pv^~4ZbD_W0%U=4juGT;kjOPuBCb*@E}c)}^+q#M$0 zA?)0vVGigRf%jpP|u6@e1rw}pM7L<9aCFax2~)EA^q z)?bB1EnFIalS}zGU+CW%fCe1?N#dX|SkRv6w3C0KF9^KF6- zYL|#U+S79zAOV6YXB821GhVs!3*ph5{Am@hNEl>$-{Qm!KB02#Thgz)Hdhs@L#{DA z3|3v1UtMS(M@iYH7xV1p@>Cc{0lwwSRp?4`#4<_3Db|H%z2+@;>$k0+96>&}S8(RW zhZV}jZcL*VURb2e41RJ%k9RW4(a+$!{fTzml}aq(ghAv!tZxCtp}MFZqXY&Gc4KZO zFRcMzl4s1COSl-CUC6wAV}_Yi14gk^%#?3Ad9I(#Qzx$&;w>j14zYe>-2&sAt|ceC zVVg6aB3aKa!E0Cww$Ox*Bo=!<@G;m^cu3+F4-z7QL$TD%DV^zTK&yP6TO&2ZH!ur` z$cW3K6F!y(eH%%zVNA+tgJig)(|ljH}~>L6KR}@@S`_I5|aNx*-dEA_n&33FaG6 zkYuIX5ptHvF|3L*LLV;}h(Z^cSY0E-|5J3*%|cB%{cl!OQ`HL6z&hk`KXUqwL zaJv&J$wF901sZ?wb=vz)J8ffxPRP7XU9-#?S;LF3K!9vB^K2%y<1uBiUu0TqC=-fF zj4L{>x!C&j%22ed-R@bOuUiD&W^2ir&Kpn^Q|?W(dX3`+(?dnk0`rc_#(V@ z7djg8xPp`cxns(je@@X z6J$e`{Z|d50{$0vJwLoS)X_d2OqAfemoCiq5%k?>1|Aw*-0y8@3~F#awVxTjso&@; zu}xkycho}`J&47{$(cW5yU(9FSK@RG(N$e{0A|j=7S<4H)b)_H zVoSqu=&T~ApTcYnM|#8=Q;J7l7_|2LP0mK%$K;8nyweF_NIqU`5~4y(u2#f9aF{sW zT@?d7k=;Z)kasF5mT>xkEs#o|N<#B1ih50VI24b$pFJ~-Upl-|II4`sd@E7_M2YWJ z!M7Fmsz`LDFNbf%6r~DIb~fJ$2W+C#3hGXHi11iBtXj1aS3qebQi})QaEw!Pgpw>L z&S(|35TCzz-XDfVHvI~-5>v)(EU(87zWF>D+zx9E09j!{Fs|evM7d6wt`)Ubj?fu5 zWFIF&-@sfmmYYkg;;bB(m#iSK{L1B)Zz_dBrBX&B93Dkg-|YUByvXHN*9mh?DJ`E9 z9_82%%aR63WWZ_hhozx_PHZ;zTvc%IbWqHJ#%E)HV?$Iapt~bVd7q(LNX5i0gDN>S z9xG=WVU<|E$HoEI-rnIS7@eBuMTTQ4ogcY~7v^Nu)v34djtkw?g`a#)t?KUDHy>{0FjxG%8`)EL13B{!dVg7w$3~h^q zftoh@-qIgt#7-#*pW?M_m&S0;BooCnDK zEveK$u3Q#*DvPY#8%-%E5K(l|iCNX4&NVkwBzcMH$RBfS5t_=ON)ae8s^!zuK|PyO zSyg6HQIYrwZ;I$a;T@~y81?85?>?suEWtx!1<`Dk@XR(3IcPbDM! za<}l5l#hsb=826!*_|`pn(Y9`laT|qZH=)YBiiIGX3+fq^-n!P+lZPF%?%RFoMm5)E{ zS6;@>Lpo-OZcgojgTJ^7Bp!|iiNkiO8vkYzmT+l}5~)Pbwx2xCnJsiXEp>H9$Z~`N z5Bjf9D9qL~)z-C3ea9{~;pyf&!q@}mHM9_;O}x>uSdP32auC8>#Kk2RiO=<9wCj1c zh=4Z`Fh`NT?V&8Oh7|@BR|cbLp$u=JfKPDfN&;_r^WQmws2RHkK`Jx$62~lt68O(u zn);yB502QNKj#yDaB2a9%A2~Bm?q}#wZt)NJ?(k{Njhn|GYP<@_#Xz_=D>O z`Qcn++`M_YTOiB(aINH1(ST+EKgBK+wVhN}@_I4cp~y^a(L58?qz&x77k8FCD#+)N{m}bg5 znZw1*8|g0TpOyy&+B-80e^xYBUbK{YLN>R|M*F^d(ZcbI_!^ETrzb6Yt#A|67>UNh z;y!Iv%M4&gJRZZXA=@8*Q?)vh){f7NQ84r7nv?`=2kB|uH5BOG$ z;j!!^KS^+EbnM zMc8~td7E-0u?})p<=VJ9udXKI4eQXv12~|Fc`#Dqh)CcltA5VMJW>yParCU*;~LXB zn=Xj{6TLI~5+Y}i2&;+0$s@wyu-|CTkI%*!lpW>pyi43b%yMEKaYu>MMk+n2lyHOH z6l?gm{Co8!^bu=&SrLwzN-iPNlS-V6ts&NTK&c@yj4eU9$Ef;~K{PnIdC_<8AaRfr zBHy(cG`SHl7W7RGRuSvi@?utr-wK!l18+`tEf!f-FU~nN8yi{- z>X;pX>cG=Pq}8y19umue38*_tEBORmJ2sVtoIWL&m(6nM_@zAb2yBNY#6heC(&aUk zoxS`}!sg-Nn<4Huiso513SMn5o{tYV1a*X@Cq8B`o~LCnE;QF{8TF1r-HyF*P5Kc* zS3jEL&4d1n6F0ewWWv)^ zH7JHOFe=p0LS*WuTTp9gZ((RTA7c0!K)0DC*M;H`B zId4@}OsBr4i@Dfyr2|*JiS$%;*obvBonkiF<*cx*WiCFlwkld2g8mAKeNBzeYovE5 zrPaJ6Jf2v@!2n7}Zo5t;cS82vFcXe=h(5{T5$u8Q6|cUYd)J752jt9$cEeGoFJz#8 zRq8mYs%vct7acKw$R$=U5*`BUT0zVVqW$#Veo|zp&}Z+q?8_Tsc6?kRBdn0uSMYLv zdOnmS)ikslLmI(#((s!^a>96i6n zP8WjF4`Mcs@|-A^89cApIp9(C2g?nKA=1=f*g%qI5mTx%EGr%%yhJKHk{w&MMV#7R z3L@D=uL&XS&oZo(2L=YjKY+vyyp3{aM|`qdMOpBx=1cofV4fpO+@ip$2yYwE#_=~h zGGHFrm`vn6836q7`H1XH@6vMUG1c^FgvvG;RY+(%$`L^6!Z&Itk~pTZg6@%B_-cG? z46n)SR1+UjfVs-a^$l@p38z$d6@V7?V>^iB^~ajUYa7T#gozAJq(ra54EkI(U(&0h zz`Vj6kemqtj8Fi&`YU$HTG(yqx8U}8g1SO&v3oopeyEFf1p7L-Ccavh<#g(hVz2|k0U_Zb?^h5gLrQ!|@T@{Hul|4# zJ7rfnP;R_dl6FVE18d8ZT1YGYFQ<6B!2qvMU3a&TFoQyga-5s1Tet z|4ztJD##>19HqJH>Gi#WGXG2n$~w9qQ2BtMN>H8N%c&|h+P}DJtv|D_UC6Se+d=BH zjXk0S-+dd^>W>_28z>er!L9REvg1fW&+cjKw7v>j%$)62&B5ut9f{xf`IfG>WXhKn`y!ombnWW=rduXN{#x$YzH4FVI2ItyZJv7dSlg^2@Kl2&b?SvT z_Z`2G?qWsACNdRIg>)G)G;)*{#2!O2=g(XsSKip&wae;IIX>|@iCpxY`XF-NMuF>^ z4PKRy7hR`bg53rm@AT74q^h+3P2g|Ue2LfB?x}{gq@MD}&No*#=hn|bQ0j8?cRX3o z*EN2CmKVTTt-c}^Aga4S7KOYsAN& z=Zd_}mA2N8%!qSoJ_ zL#LpeSC6%AZ%%dYZIn0{OHfw5jb6(uA6L414mK;6yFotpYF*iOd|C9VMQnMDGl!|6 zA9vY>f94pGfO9WT3D*$vD z)u9RdHcQ2oRM&-~r}P|;2wWR8z6pgVEmEg>t}8PnS~`BaS6rWN%lQ|goww__q8wKr zB&&ctxQHFe`S}@;6OR!W`>PHSh|HRE9MKt2fv9X=YU<;1Fec1DvcA9 zmet@Yi!5!PZ;u1V>N2N1Ug|6fD@9->>bo&sGDv*9LaHAQ&8C4LZo%jizgQ6>S+rPW zYY{&%(GvIXrYhV)0`^?qK+IdnFKT$XZM_=*imt)njg+#6lUBLfm0KZc!EsEq4m(hk zlvCrsT14m)x*4-jHBUM;L5Arq#+!A0hWf_NIm3JE;zjf2nx+duh-Og@shq{Z7Rllg*Acxb zzc`vepsTD61q>f^wKSx{DE`qcBq3M!`8y2eA|j(_A(nn1_MN=i z0L!6ap^}j6f5bMUP0bPQY{IF8ucs|ptcmc33#L*ExbRnr9J4ckn$w=4sJ_Og8#Tey zP@lkg&h`txSpK03^wn7DZGy)V3RdWg)L3dlb7znzD|`b^a~T(T-!-Xi$cR{LoxX77 z9#4Ke_BT(*eP|xzH0_H57M8NPSfF4!&RnQ}eqQGAjfs?(t(s{gS>KZ#ezbf8ZPP&q{he8lBZr6eqnIHzrgIs!tWiN zZWzBB!T#FdX^)#Xz#$_2%Aqh(>2iR_>Tv_amW$}-y@MsjbV{OF0@XoGnN>h}AGo)l zMN1sw(kHV(jXIqnwVYDXymuHIc1XM(J-&HfBfY9n%YXp%MieGEi{_n7(bewSSWcza z;q}VYQ>V)C;S0311Hj<3Slp&_sAF%$tsfWe#RpcA06cd&Voub*0Nffd2_7Yhk+PKG zHCt@Te^-_`y+1KGdTM*j|EYv#wU=hNxX7l`;UT9Cn|bRybhEs?%o`rltI*^F1xhNoGwlhVfxyfzl1`-2x(=MnePyZ6+mmdi~|}@K}1)PpA}#cu&5|gW93#I_wSF#R&t6| z35R0HcWm;fo={T14{l58X2`P|gYt{h9WBjAg>-NIEGJywy1m|!+P{#PRu1*#)xji0 zF5v`_yD0ms?lh^T|I@wA#NiykkBnA^L+T6Ccm$0m8-XzaVLHfZbX+}osqNSfsNQo zD%VAX)8gs%`xo{D+rR_()vhTTDH|Io5#IwZ&C>|xyyHU__*m4g`kFBYp=aTK^Aj#& zuiDtNu}6K8i*P;Kjw3sIY&NIQ`n~#E*Ty3U_ciJk;ngO2$NLBO`Qs2MvAfV`U%zi4 z6`vMgqFEBzeyq)r>TJ|rBBCyA!+gHgF1tR#rVf~oVk>EfG&ZcnzSu9_lTMtR0{4xq^m4)rq_1Zn|DRt-3 z2eF`L!`*01dwFqB{w82ZCm(FovDr4XLO4s}4LW}St#I2^4A`UGzhh~S>}zeFPxfWY zd9;$eT7L`%>d^>{8O7>Dfb{f~+il*8KWDv|0ECM_un4l%c3o}MftC`J^7dxOsoQ7K zuabE1sZBjyyTZ;8ef&rHn~vnxLCM=GJpL3~_3Gvt{mQS9%;9LxvFU?d+udR;W`n`mo$HtU>1du;Z5X-UdxAJMqFh*A6_6QOMBQEU{q|Ulel3bhM>ZnfUs{NEyOm)N_7jw7q^_aeA zfvl(14gRr`*smn*U^8FOI&3jQ8KXr0yFD=g`gui@GmS*rz4ZOM{!e;_q^xSs6+@41ut`UGnqH15i`}jjY*8#A(=`G!W?Z9?`xj;%Zq>NN3D;j z=hj*i1TZH$O&|9F5Q}%@4YyoM^WILPydBT9(x-+Eu8eDS1(Sme-YzfFDx)F9Rw1) z5It&uxN9S36`4kjm$}{A_t3IICMRqW?*Cl=V_d2u(zljbmgyR1CWVMm3G|LGRq>z|yE{!GZDEr!Ebz&*L-iqpHRGQ$@qq=$i)sv6qkVS$uB zdQ)8Xh(6qw$YbofLckkV$3^hzZA83#i!nEcuXqQ@SHTE}Kn`M(R`sldcuizQgw~XV z4MQRH5qfZK9G=!VIDI0Vo5n>XlhPBIaL&F-iQF=#39ax|9lK~H7?I!fJdg$~v9xz; z-uyz0xXvWLM-mnff+f}l6RN(xixVx)Kti*V{wBI8INTd#3gB!uqyF{|KsogTkfir-t{vn?O+h659!$oGuMtGtg{eEcZ_=kH1;t}Ez zUp{}cNa$Jiba~SpvP(k16_16TKI{#~Dw>++HPZa$x!S?hkO^4RhT* zwnLxRIZnt~+mM`=N!JU55B0~}C*wL6)B;I7W7ok)2GBt0Pch7>GQ(xgS-)wA9dM6` z(J!;Op^;z1l%<|`4qdchIU#wr3@77Zj5KD|g?dhfinEQQXW-~KgSmD#cIXW8tPMNB z3jybrkEH?>7xg$H2yk|{8NokD{z7_c2?_+|<54ee340srue@Tf#y#8f2m}MOA(YVR zBf_2vbTeu;V(kD^_H}}Py3h;lcPLJ|-rX?6fds>e{f(T>SK|y!@=E%C)L0!8K|F=` z(AcXzZr6C6)ir*2ErG(2$d=@U_o4;XTVZP-=nN!y@h&*NX%}q~@YQcr4u*zO_&lr@ zk^{yn8pm=t6M3U1ZiR>NTm)JJV7kf48vP>JN zR?#f0qCBo+CrMfsvPkVgI{;1=1@N|W*4?>|5tAb8UB;AGHZH&>UB{hURN&1_@SZP+ zfyQKx!x{vq5FPU~j@J*U@qYMHH(Z=Zew)1}=xbm=%3~W6^LI}V#`_x@J5n-Qv9v?W zyUj(o9lti9Mw+|;8^dE?j)>Hq)E6!95f+!DzggjbEClg43(-&r-!Rd}N!PpJxL?10 z+oU)~cJpR|atTD2Ei24$_ym@8P3-~w2lHIXEAWUC-%-&s~Cg(>d1QCwJ8~^XZ0J&h%zrN_rRY zbf`hNtA=<{rr3@8cn#@oe?TpM9=vTEVp%Fe3KdoQ_LfU+2Z|cZyF5^&Hj#)*=fppP zo#hhY0<}BxZNg{`%Dp~{#U$2r?o|+#iK-GsTZA8EwMthnPl?x5$*hvm@9+tv8;_Sm zJ}du;LvutpXyM%;IEo9TsM0Nob`!guFsNw$h0_P^B9A32Brf8)-)Esj+bR9v1?XS+56{gq(qh)BBL?%mjfSn`1U z4tu*-^yRmwEUs%uPewQ9LsrN{g?9M>&M_qcmFI;$M=l-k8Z!%+4TGPE_k$0>=-z}W zs-eS&`^436@96E?HMjTv#;GZ-qj0*@`cvR?TlKbv*|18MzQyN%ysx^x!s~U&{2kpN zw@q5`>{vyl3wHG-;p4XLF@5>0d44CvoOSI6{hX+Bg+HmYyTyaMCPnr8i`nXpb^h5I z?CZqR8mA))QzSxHZyZlKo$~EZ!J`gR-Jtv@`9T=c@kZh$PAH}f>5XL-qwSBVx7I`5 z+mIwpoN_Y_Ds78}u|v=GY;PV5Iiit2quC9KatP1E&BCph+QRB|J0s7&-8-_2%r(ry zg!#zFZ5A9`h;L`l_H9k6UUtt@V03Y==rQQ0mln3SN8UPgtU0e9KJa)te!i}u!?K`1 zVb}PDP{VfE>%?riFQ*R$aR88b;tTpE6)DXpV$F&0`% z!6uq*`0{NCX$zAR7v%kzf=j*hJEapp9g?Ow;l`@5F>69ukJs$vc|J8Up%^W5jg4ay z7nB~%X-lqk4)_@q_tLorM{)7QMBz+d7Syw3u-PVnDsNK~2p}Ola3` zL7f|4aVNI=THV$Hf=bVrFfCkrpTHx$%~dz_Q2a*M~AOa1oaR zN_*?fU^n`;$b%<$g)Rh)uGq6!A#eiKtqQz?cVn9%*{I3N;FMcJvR~igr zY|r|6%fd}a75fHcJZ|f^WsZppj5=t+?_@O9FdyOEnzqFc6gle$%!!GRp4e~$ zWKZRAiO*r-S}Hm5soO$`*`EUr7)}}84kTsg9H*iZFyTur4m6YEc76)pXjAZn zffeX-DEH#{0ar&#C-8@ykO}VSD{%~Ba1AQQS`xVjSLCqLaJ>b?_f+i2!ksV%8-+w1 zIATN1tiwAdlOKNe`Fo#7r#mp~?!C{EC`*gzC?mHO@wmAg&o?FGSRkKCWL+v1RLPDP z&!@KDA7td|^Y5MC|CK+S;CDW9-fyH$FSmL}J9M5Rg?Ku*(=Z7ad1`Cc$km2v+>2QG zTA$I8KF)7N20n(QN`wky^unCHpJt>rtAWsfh3%VD0Y_jB>mg^;d{8H7!S;^!&8C1y z|9$u9oufu-kALDqoq7^$NQkG#B~+D@^kJ1-oBA5`HR^dSbNA1Yi3|Ee>1nXTIbX$9 z%C`iE8Qez%th8zx6t-sQJk~st6xRi<4)3(}TyQ=WVuXEqPMfnQ(hIW1m~TqrhIJp! zI{)c8gpXqU<1oB?Hl9nR92OC8KL6!8;eS!HtG^k5(0?=|gPL21=jTAq@bo#oWqDH! zBzqW%B!}%H;@IkkF`tS(^b2suHCWdESjM5O^Kq=ERIv&YVPKH}|B#q(ZPd^e&K8?1 z!=ACSh^(VcbrBxIS+b%E;iHy5B#avU%1w(*;xgz5c1qN`&)@Bb!wVY!IU$bA=ar9K zkP9nDAfx*TQMlbUxkA*TKOU zgu&L+>j%bALnq|x+d{Jwr1+Y;*c9IQzItz}sR=jFMCA(CM9MI}G;$ai)!!>vdpn># z+`g@u!5&A%(^N_9Cz%%B(a51$2 z-A>t@o+vd`6@?hFN0e*K$v8Y1m&y7X$a!m395KLQ@FtM)u;K58zUf3xS^R55zJGBd zCsV+lg>MILKqAM6^tOnSWhWBZgdPRJCfe)E0y?Edv7>f85J4A^4^zrT%4D=A34Ph> zBvfX215yE}X_a(+QQNzIcDAn%&5@I0@A{^W#{1E0$e_f)Tn`mri?yIa@Xh5ZITx#_ z;=4YdSt3?9_pT>>_5`@=H8ojIICOAqM~@IGrY-M-+lUsy?Z=48KB?Y zIkImr2v1V7bEM6A>)bSDerBOh&Ves{P2Z%vm#prZLY>x1k82~q4%?d>Q_=70$fed0<#&s80syifp+%tn zuI5f`*FY@nFBmeu0;#_)&^a5c-MYLI^h^8rHBTU&8e1Xc#NJ&Q0-5e|m>e*x&X z);oMR1&Qs@qKDBIq<`3$u(f{N91a(k2t=Rm-5J>5=V-q?WkIiXwt4%uj=j@K(@nGF zE64|&{zmjDw;pST?%tsiOgPJUq6DW}BBymzH}7>i=+wVsj9E7(4x?dRByaB7)HBi+ zR84i1Fpa4HXA$Oifp!Ngf^cDBaP+M^^H5v&M&$t_+G`IVc4lGhcSmC*&EZ7X`jQ0z zgPNjbDysafrE6Diy`zu)jL4a_$M)sbD}7HL!&D8G0MUX4+1Tv=8iP?WsV#4tbkhBW zwP;u(}=#%_bCw6+zuW zLy4RfDJgr;uF$SG=l+poSfhQL!qKP`yHNc3iXjMzgq(t6Z!BGPu7;Z1DP^Hbzk0nd zit2x9GN>|=n~zq-O$!rE^Tg>ot6G_IjvR`nnkFtp8r&-T>^3!?#N84i*MxLZ-#-o3 zRdLX)#HrR@{f_Qb6j4LD<;l*5D1udHB4<Z)+Dqd5I)7AWmZ7R9m&WFz{mHRB;1 z6jXfV{MkXxvnb)^q`avlsJaX-u1|NP(rAM2o6a8cJ(g|g!zPn z_A#w7GbvX|a`|xHl_afElGRQO8l;mB2p8DqaFiQtJXnT2i8GX?bE5cr{ z0%gon8b}ZxP8RQpOIDs>PCS!kDNv&f`mQ*7Su}8@IC0HiW(Z3#I<6v4R1ss@?i%S# z27?Oml-MFmK$Cvj)p!08bQ3T5B`m{(B(%>SN$-fl&gob-y-TlOhfxVy4n0ekTnp-` zDmnk(3zCzUe|wt_-VactIlps1{)_B3kXo1p#Ss_(yKt|Jlb7mwz5<=RijJ1}aQ4lH zq2oTc>^bioMd0>*lOIx!zAKlmj0;QrFAQR$goShB=eJpD$ejQDu(Slk^3Lan??<{3%V`b{A0~Vh zvPWwPeMnkITe%3WV&&$N`RG6=UbbahT#iQC6qEV)ND@nEz;@D z=U<4~p7)}KX92X1LMl3=K2TEX>cX%?brb7*>rVyeWv-yT1(j^8WD~}d@^}V`pR5Z8 zquNpu>AESD(wEW^WzY_2!)~vMV$c|PB|P6g#2)kWM{>r!V=I7z*QXTFk&-)K~C6Zavk86=q8_i9{H6G`h8p;;6lU1 z1yTJD))NLt`^QY)k2IrwK7zHMS7D67!Jj1ZHa7J+4V`}yhNoAtbxq*V1QUj4!@zJP za)y(*b)88s-UDjBkhYA7*U;T&&RYNY21e*%(N#VhMUO1CCvuA5>P{=NMpGi6Rz$Ci z3IO2rj`ohGWWsgd=sZurG3GY}l@%`R+fsk38*dtO?Sv)Pxdj9IbP$bEhqainComyd zSrj8Xvqr~os~BN7pO0iN#!V2GXQ*iD%&G1*<|j~XW?m434M;4O1FL-spD~7I;(x9` z#jA40o@sP%>G0I$*r&tdfos0eNiz&(XZyS?lVh&dPtWy*dx=Q*fd4z+;15fSe|YEl z=LXvwk!iI)2QU;@6WpFpho9>oZ%E3JJdg@!w$F6!dHD0J^VVJzuyz)GKK*;&205ea z?0?mr?{@a>5f>}QrOfm3=?-fZmyjE-9O>HDB+QCej^x$FegZwO_({*C82j-ey5x>u zulF~^a`rSI5PV}PU0(Cl6Q@Of$nV$x>4zEkk?=$MKkdk?@6a73YBp=n6X*(r);%E1 z{QEoi#%^puM}q!PlKwMM|7%A*U#Uh@6gY(xb{G;4babx9)yOkld3DXKp<^0`UO-Bf z40lUfLooCkLw8krcB$7c^A(Ygjm+xx<|NBI8 z9@B$(K5>;Z6A&coB-=)X<_$q$30c2lDUeuBnGcRPYeFntm)t)}dBt=Im^3Zo;SpnzOTO z7g!-Ib3ikgE$f7CpW0{4C6gkh_6T(E^S!EuT(RWYcaBUQD9P^YBaN*`3ImoLkNjUk z@}6qbVZ{ej*tr9(&Z^ZeY-oc(4}%+=W{xiQkPJ+EO_h|yj(b#lgzenk+-_NLme|SH z7vq$TkR8?a^B72Gg5SNe4)SLl%u{W6Ij>cu(NciN_h)2hMxZF(?ib0*UioKBiVMNxuKPl4Z6tc-`Z1SnhKUurrpT%@F zV7B_9A>or}r+cUN`4^(a$~{7VVIWp!myvf{6$`zV`Ddb78>7Z?pGclIJ~3dZcD-hnuXeoN`ZTN8Cp?*z`4}sqs^Y(E=sx+`5Inke;Iqzl#|& zaLCT$#T(FzzgR;T=PkT+11Eg!IXfIlUaQlbO+y9%GI{9iAod!pU2Ef(s$yH__(a&y z-FjR5Ovt+aA!Bd|Q4c6{CX{PsbJ#)}S)6c^$b?;oQwOQ(M1mJtjNjMzVK9NL29#3N zo0)D>-mn-*Lk&agltCOEeS9S^)2Y!eO6wEw2hiaWFHr-c-s-$sIZXe`3`W{SG*Wf|MG-=U#&*Sl4DVo6e&9Tg*B1 z;`y0jhr>4{I!hlJZAVh9Wp@1snmq@?7&yyyeFo1&)!J)CT=Wr{taFy+P_W$UOV_lE zt4YLKIb`KL^dbyY=CkmX^zQB-C=Pr`ZMzYk1?l5&Z1k&38y*>Pq>YOoJd76_1J(_6 zRR1XsBAA4{zp?{M=q|DM+6Mg9^jsW-<3@~vEwb<+ddfp75?Ml&w(pO|Q$tDB$w%%f z09%WWg70h!&Uem}B`s(B^*C&ZAh>^=ME)l)l`P*pP8DX*3lB!TJoo&;_wjy5Tz5-!IBlylb+PZdOH zo#q<&F*zBzE)K$s_eQd9>M!Y8=`HuH%<*QMc)z6v04acJ31Fc!JRajoPdU-otexMx z7ZD|~Ve24qezg}%_NGDk?M1O0*z?1xfm_&mX4q?_y%bs2sK9ah5;vu*{PDqHM?-`V z-Bqh58{@2C9mEi7Hc9B^7<~mO6u})FTVVh+L{_bAQq!qzt^xE$)H~n^0M0AOvZ+JA z^``iIV%ZMN(@bYStJ(Q8=IC-=T?V^n1dRePAD7pKl4Ate3-^8$VQ&W?{R+TeCIpgX;~ki zb8C2q->wKrtVw-iWl&kN{#`;@9NS^6wr2%D50>6=QW{2fA*;YeEPM9|a{FVcl#( z;_V1hd>ejecTCaGSWPOLpHFlv$+fgr$os$R)hs8Le5u{)}S-aijm}P6r;-M{vDj1(LQYL zA5_xgK~Fv-7kNJ%gj$V}_pLj|o(Kh-Gb+S2Y*qUpyr1{dQx{7^%{PNGb9-rs$KV6R z9&zi%tklQ|_BH8Qr3m);$z<0?2ze>YW@>K6WIsD!JeQqpu0%@Wu2ca7Gd#=RQ8jiCf}@ZgbRqAy)ibIqd&P}TAUM+ z?iy{d&S7M@$9FZgr_iLYTxeahMRw%#+y+np6)x)mAx{o_7$0)-U*kUTaJeGZu+_WK zmrzLJU)&CTOL(&eyl@q=pD9IH;^>M!x6FtUqsAC%_3|2Bqu3(_9&V#ETV&ag&@c|P zOX6Kls9@Nj>|5m{_rttzC{-xmNC2 zmBnIHY(%ZqXiBA(!xzed!-jsV&`pyn7~%aA_Yj<7j;m&^E(7Ypo9d?%*KR~`XL0Gg zR0;eZMNC;$1x^G$l@iw4c_R$(-|WHL*|;W-V8+Q4t4jETq78BCw$^5Erd_%F&|7=! zS{J)*HgWYsZ4mGeN-XJXmt|Qz$;TdU^@dDV4_8|rhKI=6)#Ux8+%%K>;1lQ$B+0U0 zqh0k)4_!(b68weR>QN{@F0x)+bGu6$!35bJ-i|OUF7WpfSqFIAWx%+=)F@836E54bMeDz+w{~y&2|sCfVK0g3K0;jJ?8cfnPH}|2K}> zo2DDfZ)AbUYJa?%<3ZkT7`fZkthpPe8{Mqu%qv&B*rqQtBjw2lD*DzmNhk9;T8yOPKqk0fcW2cVu;yK1H0ZQ(U&NkbVs{Yt0tt(%;hNJeg&$o=W{59fv^yB! z_`%@3>Z}_+3F@RPn=t_eJ^Ot`iVYThHIDO#N3H1nU^v&1<{?MEOzQ|_+*?Wi=^E4* z65}~rpSX}11a?n9LT~XBmKE~_%h<Kbu(dKTyLcXD@Xx2^a4aJFq| z8+1wlawIWeEgzCB6rqE!T|_!9*zT7s++p<_E90E)q2Ww=#46i%y3T=uljgok(pPIw z&vtaGD0uaecGvBlhP3wKK~QyIWH&3Wff1~_bFOpl_k!>N?hOQjK7ksBA-Ro(!m+Ty z-iYqKn1N# zXA&Z1V}Y6~_mD+_a-_=g3nQE>7nwP9vEi0h2QxQ8O_h!nn+RZo%Xn^uSF$lY`<1Le z)#3Gi39A?LA*DgubBw~RQ$R~G0TX$6xILZmscTo>qgIfxwL!U&!M<#68xG$L8*3X5 z52pQMB?jdW>+Z(-qaX4ourM=;Ad3P}X{!(&_iLy?xbvltM)L+CnChw8(>SOoY&pin z;&#rfX5tklwiJafo*8WA_2Ez`NsoUt8nlGGFeHL)xdI2$=y+&&{#|2Urzi3TGa5uv zY1^>Xgrq)7;Ww4^&%>}PTh}X5uZox~rv!h?GQyoDPISg0^|8%93ws26*Yn5Q&!q68 z0xb{24@mx;Vi!&LpxV|C(|0|qv*>S`6Wt*ytNOI4ybjXg+&M+b^{n2V7}fCj#$sea z6(!Z2Tr8rlc0s?>EUsy2o}c$(KZrJm5pyuQdFf$|SRDag1u$F$iE=GTpX5;`#;5r1 zA=QRHh4*Gs{%M7OXmmD}n&p^QxMyy+8?}q-*Wj`w{@K4@x$WUmL&o|9`^=k(WF3V( zX>ImU9|$>P%b4U(;SRsOF`d$kC5@;DL40zTw>hQb>Qk^)tKwt_m9T69y$`otT!;^i zfQTOB8=BGaUS-xlb#Y$|h??4b(TmCA>EW^F8$sM_<(!B@7NOL)pa84-erXg5|L#wq zO};-9a%x%skJ}enXX3f;G5j)`jk=iT>-d<;%BfOWmbG^KSf{vwdo@XSoe5f$5~BP( zk@Ce=_+$H*$=sy{Iz4>kVqDW=%Qs)dUKOj5#b;vK#0;Flm5oO(ei@7qi9aeyO?h%D z*0mz7k>gdJvhAW!YwKZ(!BAdKF}mw!G%BF}AS=vZIyveov`CfXYG>TXSWU0ci*RaA|J|5VKvj{0GQtoU3e7S(p=@!0YhM%jy z=BNRhDZ+ywZlkg$SLAlD*@6Tf!fmksgG3AZqJvl4ki#WVzK5LX?8xH#WTaK^^U&!p}pvS z>GLGGw>%H7@aorzs;Z%6%_INAm6p2<+rfiu#^=hD z&uY8!d-Df(_b!ClSPR3iNBAhjQ$})#Q~$87?|g7~ACUJqW~QZENJ_TGhX#P0sQXTt z^9Mga<$~4+ek$+A55d{?OJ|T~ip1pj0E;g*DsN^hD+-(mpM01^Zg1P*=Y6DgaK9kW z6WIL1d}bv11S34gwMDj8Spz}!X-NE+h1{;llZ<$oBujlrQ38=iz?vY*m%}|-IQmg! zg9y%cUGf)f@){RLFC~u*x3)D949;FQxYrnvID)J*c=^(nv&F>)s$|=7O(E8}q%|`< zZ46pq+wWqtb_*e2KFZu9d91OBQ3>VE`7y*!o0d%}zlH{u7EHu!%haq1isdch&^Ga$ zeEDmctn3kwJ-i~wxpR1~ORJd}eI=vcV@5$E z!!6mYDE`MJBK{XELNWr9G2;H+tTBwVqy%122vW`TBTQ?xlB6F|&H`=>_HR8&?2fyC$H$)x{ z%1bl-+S+xN({UZnp9_PtA|t?vb+W>(O!7s?t6&T(Utz^JOUHv~6r*-Ngi3xSb)F;R zqkPVeta^*VG3w|B>Vc2&@Gv>gL?v52pp_9MsjL#M2yre(xUqiid-F+V&$VHe4c*`! zLeQBJ>+At-5!{cBN=I5|i~Cas5;;OO8$PKbO(m83I|N#fwv<`eXxVzWO$H9tW%VGZ z`efFALil;HlJT&P!_)#agAx8A>){T$iRG4g+lJYGe{uD04Q%Waz80%eS zPI&5#?TP+bnXA8{^r!!R#8qt=_a%v;WA_?VP_1$gLEmOaGCjPe|*IVG8K!wsOXG!*i1dp;UYBdsqW7!0|bbQ@nx>K_?>*)mcQ zdE9o_wLnm)TklO9F?iAStHJ`eZf?ZoVOZtojdO|u;o8PC&Ew8kO|@_T5za(nO#|9m z%!0>tcsLbA4GH4S%ehj?t`oyUi>*$Xh$@!3r3$nw62R(?w6ZaWUEyh^LYv`>HoD#! z&xjnb`cORfHPY4kV7?0w2*dMLiCLeNizMR%RZe$Q!r4ok!4}E_b{Fa0JdWotHYWRS zfor|$Jq-Gw?ldb!{CyW==tSq$>?WR8z!lz=9|GIVD>~|aHIW~Z1x7aUV-v~@SQtnR zFKIsBOO)2_{PAA(;ar|$#eOs8*x?mmZ&x&`X2I4l+eiHxzwTEP#{r)eC^&66x}Bo> zl9K#4g$fRH#^_IA2fEu3j1;g6L9~iPfs3QCF{D%!h_o_{{a|$E^TdBNn%rZSOwb1* z?r&y(ITW%A^Ax0~kPnS5&(rOt@1_+ScSN8&LUHi8QPSj<5dra}?p>DQYPkDoZ&j)@ ztF|XBgTz|CO@OgLZ7C$Ho8Wl^0HD(Fjj*qTXLjC2oa;!QvN7U zS;c=bD#|(fSHBfF*A{p(5fnDGZ_V<@?J8Jg=AVl2zq zEi?6Hlo96X6- zL{8m9e`ovb+;x`(rTz|@D0Hr zfC+kh4eIbx=;!jS)}mI$*^dR{h3{ew$I?9z>ToZ|guH zOa4J#kWc%J$wH173U?l8b%ry|Ix1#7+;(0wB_DuoV#M~AXqfL{d1dFCrV%UTem{du zX;BlaUC-95i0Y~)0GdS}--@7T8RPMlXqgy73!7l1Gx{2nr;>kP6x)lgULo{60LrK& zosrf14xbgh-XW`q0={YCa-MG6(7m@@{qo?UU`~&JKIoF%d`=+p`&?u7;|;y-6X^vH zLDsukF{UKtl%IXeT#}42lGPgY-*mqgW;^SSgraK3|-!} zIe@sMC28YMXum*WU_g9^`2Q-@g53AW^BvGGsM;Bf$DV?9H7O&k@XrXD?-AyvjmR&G z3KXE~{XU*&B``NEu5#m2BP$^kK|G1DQs5Z|-9_s4LU?Y|w0p8{;gDg(#NKbtEG!-nV4(lZzwsJ_*>P=#I_l&(!!qG z@H(op!lyC24iENgDWCpN-?fe%1_lzElW*IiXbi{= z8VA*KIOmO-6hTx6*;2ojTzwZfa+0mCrQINvMfqCw;K+iAe8!9GLzawT-?wKN=V)eu z7?Ame#W|6Cz-WJHFqGN9PqRId7ji}~bw+?4%`Kbb0HJc#H^-v_?69vfa4iitvEDbH znU@wH>W8dtN1_jN4a11=JaGGNsco=v(BuwkTkAvU0~^cI z59%P*vQ}R73ZEE;;@Cn){Tf9k8W#p!7IaeungA8G>a2DLq%o4;shU4C6uEV&D>7o?tnXA5iQ#Aa#1C_fJmJD@ zpYT*J6m!Z#3&N@wFB~3@qc|EH%OX5q0%^uv&XO!F;m=50ISVacPwaxS4s9z|W(3>A z7ZCPCW0z=cPOOsDZ5xJ$2J{EFjd@c_K;Ot9*osEc(B&?qU_3=toxXG|myxJuZYUh& z*O=sWD>M4vQ!DZ_`6}Il_@MeiPmd}vB2}M+a#bGx#RYo)_Dn``%dPB!Py6hu)`3HN z=g#f@&P($$w)FiEZBL`Fk@!73w|moY?WuGm6AO|cp;+6eVDToMBPsRH?$YOXZqKlx zxU}eC&Xe8S2U12z;cBMEmS9#d{U2+0B0=PV*K#LGkw)Z)G{L>a8%ON3X=5{TEfCe$sBc3u+k3YBm{#3qit`a0a}^O&iPO3lVBi z0ub4vuXM?)_dzVH?7)#Dvd`Y7Zd#L0Awc4JyOr}XTqg(KjodzK7@u9G*q=>`Tzux; zn2jaRS3)pca4+7&KY(4%Ac@q{(iv&Vm4%g!;^hLY7mu*Q$q9%|%iQkdrp@UVuvPgN zH+GdlN#7DX;l(uX1jJ%70JT5{)zGJ* zm&5xwlc86?m!9Gg-|nm$DL;axEgJO!>CxsS3ssW(@W6=MASP*BF(f|N{W-c#ms=Gh zQq(>ok;m}_VuWhQtP;#k!R&pb2Eym6xBld zv-K&T*BkkCA6%LyAVn~dm}}(|#PoZk;b7wG6-IdB6}AZkBrTOmKKoMB`yxtf%SpT! zF3gBl0dmX`ya9}UGPAEQr>6k*H^SC$1$Q4s&qklP)w}y>M?z0-dg;ScyN}K-gaPyC z^jrdl`K`}SZSLKl3446|MmP7y!5;+IVYGWYtF#l34hr+{lvtCmD`kVZfguD?o|kLyVW4(V@$i-pOUH}{~av-0U+fl8nEU3u9Bq$l~^SIpmB&}Z)sm8JB$0}@t=;9_nrNSR{YaF=9(Myw% z9LY9`de9k6T$)51mYA(_zNH!bf2g&Bi5)9-@xCUZ4Ao>Tfp5Q>7T`S({m$uIR|&0B0pOHD$z8pz8~oz2J|RupTT z?(5gkE5HL9_XD*9<(DRtUof8Ut?Nj)6Z-?Odt9g8NDzCNAC?XP8&Xo8a~@)(vwSE@ zEUW&3xVx&(1d-N+T;|hbuEhf~>>|JI+^nYg@yIe&IxQ!`lOtgb%gT@N1-&uacG_rf zM`({~#`^hm(1}l;Aeym+Bgnn5jG#dsRV9X=rsOeJxZ43pZ3o(+`M$(4R(Step5x|} z#oVO!u29?ibn>|e{j&Rs|&t`860?3dWCJ5L`T?3fQCXJ}G8mFpJeQLK(e59;q@ zodi)GgXKT!7VfEdHxrKWtah@iZP1?x5N7|6AggT)jbvRBmXW{ah{|7QWozKXXeiU% zd1+Fqf@Vt^P~q%mZFN0>o)!)#H!r5s0TVt&o<#H5s!Hd3*~1^x$`g!W6l>nITS693nwm!u*_V@eta`NbyTuNy#g;mGmb$U2s1 zI90dp*ylF_mnPNcDEUI=&8X93b`;W!HNjN7rkaSLU$}V(~NBH3LgX(q&Oa_qbRG zkN~bgdm8zP!hoifo7GMAK~gA|v*UPgLtt&x1I99=eBO7k zhYf`bMEKJ$z^kqZSO+xlt8#b3r|X%8UHQ$TkGc=_miqh8Ohr{w;Pc*tJ#(QqS%DRL zyZ1y6@!o|bp6vGrPK=)KMGqo$?bQw7$&hw3>crK%d(V2=}y~SGN?G}rkW!b+3 zz?OiiZgfmaBld*W>wxx!h(&1;x{4srQ)Kqo)@St;2uM}zxf~h8>DU;}mco&G+(bEi zuQRs65l!YHrLf#-RI>)la9qWu_=1{Sv8(nVpu0>IzF}|$_D?PQE zCG1W92d7H^sJ3>ZwCA%c=KKgMXF4mvPf+|^fv7;j)#pt|{8VZBwK>qeeeOnP9$%C9 zE2uT!(vczyeH+!P-RIhl3BF89!R?Y;t9|HQ@$Fg`P@4`7{YGhDD_et(^8gT0&`O%F zbnfpkKAZW^e^d5?ks{6;slTb$ph3hKtBYBd|2D~;U@*aL1ZP>Peq_A9tt{+vW3fUXL)?F@=LTLbLh#Ef(tn#rF`o1R{+_c5KF1aP zWfGs;-3~U;)hiLT5d^qdjYvF>D=$mn>NUK2%Nd;jx3eY>11GMkAL(0$LuaX@Z%j7n;s)w1P;i z?*Er!B<`B>XpTbPJ;rbroN4!`uOlx zv4|IW$?|fYIam)`{Iw${tlOQ_;&?Etol5k;HZhPIUk-*>Ljc+nKFR5{PYbrXi8Hk0-TbQ1%bLt7#=AmW5nYvSmu!4p@=8I*i| zStq_2Y1!7)-qE>$p-g6FFw^rIJi+ZshnR6+ooO-iKT>&q2Q&`!E7Not8dcMciT0L% z)n_a0l?^f5(jmGY;CdT+0j@=bn^50LS{r&%-tQ#K)#*P)o*8`R{BD#0E@mlkb%syr zKQ7*V^n;iCY1Vgj=D*b>^CSFx^<~6>3s+}~3o3UdSMSI{YHg%krnkh({$NS(8`ai8 zY_9dgQ^)(JQ`#J~Jzwa~9|i?`LBGj08mlp)7FKJQZyv}WJlCoKic9+5D4q>=Zy!f{ z3;E05;fCGbDNRB1NpmA8Pi*R4J^A|C05uLC z>?K8RnVI(7sh5S$?L{q7=gf2g*JpX_ZRmt);eiX&(?XF50kD?X04wx0{q_{vRfv-e z{owmxzWz42KXk;R{0pAXCcPaTdFPK4+CegYUwHdqjCZsv2T@c2>a_-y_`?$9KVD8I zBI6LwA?;M_)tBeyqE-Pos0`u1o@CRS%ZBnd4`9a;SJKCN{)L3EuJdNjD4ity1U8d% zah{ym9rlITB8e|3mGUbk|88rje|~BTl?~vo1+f)4?m=I3aB316ppQqDv0Za1*k_e5 zM_Y7ZYO+!L1*>hf1Ben-ev81f^wWx|Nio6|el!ep9w#1ewK&bVRCN}uk)FfYzElzrVWgIsIeVCJ5zsxL5O%}*2xsN4}fPAG+ zl9^a@VpMOlP;~_2~L&gZiM3x3#1D`gGpjgG`{pYUx#@^8anW;%F z4FynjY(AK2o|??(V#UPs(tP_Y#zw!Cb;rfPz|cvYImMA@)zi)Cgoc6Qz&n$lmF7kk zZca_AN9?RD?C3yU5eDEUi9aXtunD_{zhAsm3C~_;_+B2WaaNX12`CzLljnDPacgYF ze9z^*r?q|~F*Ob1BH7QI}tb7UYejaL+j`*j60cqKCH#JLrws6bVWrfY))*?5Lk z-$zw8$0{r%@#@&3-$4FJ!Q(+Y_kHe~+6ihuY~_}~ou`8#Ur^ITlgQGwLHV0JkSNA( zjxqd+VXnJmYRYprH|iP0?MVF(9E3~fusG>2{Mg4vQ6(l^`ZvOFxe5`(<&b{%XG&c7 zcrXkG=yn2-M7uN;T?UHG* z7yx7Fp7%0X_ns=ywkzEu3n)zt@a7#;#9qTRsw6EE!z}9-k<{6WUQ5Er!T4u`!}<)oQ{@uL%$%zPjTJu;Ah&1`Z&1D?Wz;XH~YardN2i2HKtI zbIcV;=3SQ4!IPONPCO~_P|(RvO@R)^ZDqymdr*ywC7dDI{YZb|GRSB)%2zNpP}$F6 zk-C9RNF_3oiHYR0!U4YQjKq@kpN{*4t4m!NN2vLZAU-4gD0w~;#}=&DkdZ|SP=38~ z)=+@(atPe!xHM!Al;3kM^6?>@j1X(X##;>4*!}?CQC>-sToJyJz|M{R5Nhw>BBm9X zkRq|Ar5}rhQ3nM;)}Gs8mYB##P`4&52>cptwbJSH zS#TfL!-xlu<~%R{FQ)KpaREzvh8qF{10hx?Enq%8e7?8Y7bL7Dkp=0{^A0JrRMcPM zkM|^>U}Z)Pm`{x6|767JOy)3p3ruYdTCn>fj0XG>PIMn>DL|A)PT`4Bq-X)#QH*NZ z6IN3MGJCAFP7GDMf*zQ!V~o&#FOemRu@Zk+38N=}7uE#5e!Ve>X5g2FFds5j#P>L} z@a_(p&FqI6F6!Dd*bsn6+bm)3O*}pygI})y5tB;E@@%DP?b5CjgS!JD7S3t8T#X9M z`W=RH8SZB*k?CQz*wW)1@%daNxAvpqLp}JrXTBuqyGsvZV+obekYJ<}CNiyrC&jaT z>@0&NA!2$X!-($+=e!YMiEo;W|MPdoZ?;}~={V&R|AXxJNvV8IJ~4Q_hum|L-4x?% zkzsf8#Oh`I`J+OGSz~cINZg)y{LRM$3W{{;?YGhGXI42me&vc7+}zxuSUB3(Q{uM< zJ2c+)IC_4yDn0u7CXX=}SmZ<03oLQ6Cw-^+8%6m)z z#)smcWM_4AHhoRxX&4xYB7(-jx}4>|1Fg3mE@v=&WkxfhzP^ejCqQJ;w~Z%aT?*oz z)zxRxK_P3vsx4XS9h}%Q>Ouatwd~z=3mWnENw#8$=R8W0B@YSyLDO4HlLj!&++86h#rKv_GhkndkE(R9#+PqT$9{>u-d^ zpc=d~Ep`dj8=~(-sJ-UwMp=?@4p%$-=k@HfYzFe{Hh@71B?BW`dH1f?`YoD~z`Gu- z-#!CIT8j^L)6-(lwN90RKf5wzAPG(l5Wg(bAA5X8oQp4*JoHl2^u|OANruNB-01Z# zSmo=2N>9WdTtDEp@IT|Pz8rfbS2THZpGWNr{O2cnuC~p#_(JjnyRYtDKy|ROfAg#z7enH!7CugnN8L=ro!?!P^HWrqGu z+}yjXRnN)wn4sG~?-#amb@aXU&ND3-$&YTU4aTp`@Q{$&RPBoo@mpbXx`y1Wa%Co8 zQS=|8`qG~YT4rViRzKS^Gb8%=585K%C-o%h|F`e(=+(U)=)42xwQqOhV2OXus-5vP4(Gr5 zh4>{m%^f4%y}K-gd`CaF*ZDra2Ahod-yYaAy1R$qZ0c@LapUmro@5t4Gp*&~@M${O z+dNc`ZkYOA-FTRu3_^IFl-XcukKYKEqoqw`F@O80Pz1Ors@7Gach|k6zdgm5EYgVI-;q87*(;!K3M*)~>z1*L?f1xu;!LrkL2T_MQ)(dwC85SF;3TR5o1F1IU>u z$^w}Sma{l*dH(RICKN`?0f1{ik)TS6%1X#$%e@rybLC>E;}YFl;k@{9a%-V+i9d__ zZ~Fymv`@)@V5EPp>qrG5!f)r*m0X5f#LDl9i3=Z%qLX2k_G)!p5PuFTEG*@+5bDiX zT2&OZB=Z@~YCoae!jg^6E}#`T66d(U|CvGR4#UMg<-o?MFpH`P&F@YLyZIiw!qZYO zzI^HzB+{C>utIiGeTk7*nYn!4Iwm|W3i z6xG-!bWX)tT*<~_h1cf<>oPSah`wMSPP1&$HyOV*sf(GU8@UsorduHwS`i&@j##l1 zDfvFy8;x}GkZ%xt6|7|hivL_|>&JuRK?=qSSovvCjhCBw)^mO0>9G-c@v-N9`R7F;bPC7xkh(gu2`o`bz~Az(5p?t;6h8 zj)bzcgOvOy(r#IrA{)mWi|aa0T37`_pG@Hx@@?6sN)M0(7my;_Gdl{Ba^YB6>=D4|3^&l)HW&v9M~3f% zfaBYyf-@0d$;)a=&h%#$4YEB2D(rn8ux@g>kCpFL0gO{QM)g%#!agzqr-cuU19wC) znY6Xspm3FipQbH)Fa#eqtt>vq(TTyfkOjhVI$PLCMw4hPK$JQQJ+rY8)XMBB2_T>H zNe%Ss6GA~Ab_@S`2r5%qH`;e69s$As*AguA)>e^(BHxAKQRa;%R zu#o9dS&?^+xr`Y{D7ynqlJi^~R6?0$#1;~NQwU)*2kR+jgulXDG9`gpJjxhmMgpDw zz`9IFhYVmv{dsNkz%S>7#SAYrjrA*9+5i@-2x6T!d(s*sI7R{qt8)Ne10J6j@XrM@ zJWO(KnbTw9e|1qGEOJ^n2Sx6YEMpK~F*wuGV(o4*lR2|i$=XV=QFq7ZLdw*XDAi(< zv0N^ziw)C>G$N!*%ej{%d9|teBx6U3_P^7Ojbl}A%^f;vc7%}t+@&CCCR=;^_iWeX?pru<W%>evcj$^bO`{z=jBNbzcV7I844H`BM)`9QW;Dj1q!F6gCB@s_jpGwEU zW>^S^Oi9MBAQc)P&*V={D*wfxh`Tf4*CN!_5Xhvx@ZgnCahC^sZY<0Z3eI)7$(NW2 zhvsKHcK3MaMywjgicGCH9wi}%=<79LH2C-xOp*~3qlbDuXNqAk*TKr=V%7R7QaTq@ zF+IP?^?VzR*c#CB6p+hqvmYXdh+=nNd0Atl0Q>gj_){9XE>k6zf%H`YeHA@iX~BXF zO(A_p`z3GBl^JE}q0LZ_@5r`_=DgdR6J&|F9`A*=x^G_LNdI0#aG?_!|J`*>s3<~u z>xrT*PPnTow|Tq8V#TWnSBGV91(3>NBl zrBVWi2t_LUHIiRt)ktYikMJ6}(YL4Oc}%vD-Hw8lf%=)k3g5AJVg2^^i*%P$aT51W zLvO?<$)1a-m&C?R(P&h$HJ%L|U_gACpVwdG&I)`+fr`($0OposZi67PHj(uIf+&-K3Wn}tR01{y3 zjawG$nhdq z)OEG1eSS7QGwr$MH|EbzmGqXER}an1XuYk!JVnTqi6WY_aERR9<<^(JNi^>CCu#?LgyjNw0UVyg&_h@$h+%4!DBqC!84;dHDQu|GKON zqPQHgP0?y=a_hN(xv@8KA#ZRX9J1&?CuzeD*5x8F3TlyY-_`F7rj1KdurYCgC4K#x zk1u$(GLhQ=C6y9a_WOcS6=<~!`k&A~grq}c5K^qK;_7G_O0gv`LIM>3aZSlDyze4+ zJMp(L$xxGP%rds1*jV)}gS2~EwXyIz#oKFB01`!qeQ~TEOfe+Lf15>xPJ(}-uPzRl zHDW!MQpGG_J4EcPicl|%o_32#wuu+QII?bG0o$MnV3aH1ieuMzKo_eym5SZs5Vfsx zs6RPBIYCKW>QEYhv@KCP?@UhFr9vVAq2;jKc{QPP#%OKIe1hqz$S#2nvy_q$ILi(>OR-eSamC z`b9DcT#Y{+wrb!U2uQG9=YWWjavtTRH!6Zb3!g1Fd7ZREZc-^QiBt#Aq*(-Olv`9= zhOPpLT!ly11Y7V&+}^#T;Ba?NPH-mtz>TWQ@Kltn&1!pATAXtNy~WahgB$=_@`y;< zCl?3ChG5+%Ct{- zda5F=V7&3J@AEx_vDaAx@5?v!3_9nUIhIj=Crktf^+rY@xd!g^#Nok6qbWk3;(>{t zVY&N%Ot{JS)%!mz{$wIC8e}a4QxnQU;QGY&0+b8r=uG{!dp)X-D%M@-u$n%VcHQ|k9=Z7OD7XtU{kr#l2bBA_g#3o0&~Hk2)%IG>%^pRKK#~~Gxf-8$$f+UO z$K`XW+<^QCNd>d`=@qI=$<}An1;69WpQaPlW+1SO{YGmR?m|y(4~U*1&A9Lm&kv zShN~r(-^VWEes4Gm(TM@^raPOG~{6!&(hYX#zw-SBN%1n)7sg2!!S&&{C&ZF&99po zJ;R76tB?{G0o~gwTE;UH&b`Pf;bP-yJ~vNe>dqlSi|Zt_Bf+2r1{KIR0M42WmitxY z*>#x^cn+M(wLl%j0*U=r)WBvEDS&N^BDB;eGEqb;6pM;(R0i@m)QjQTO5ZC~+Tr6E z4*ufD`Wq}}hWjgQssJKagr&Z}!KR9wt!oS|SdvsII?!QtUqDHyfL8PBeeEqR25x_hnpco+vUkIF(af?o*i8Cu;l;!J zy)f~loaIhn7b3D_MEbjxqoP&4+}Uk|@gOM?MAT}{V@R~bu#8siy!hSWAvBoFVT{pl z{s&xY;JqaN#eNaW9kNRdb0S2X8^sefPHEWTG2hORP+yL->Ic@FT<04=QeO7B7GnKjN4 zJg>xU3&5Los;(E$AHDLjw?pwf1rY%6-f%oc9>V&nayHK!u2+sjl?9lpPkBl{dZ5)C zB$xIv8GGvel+x+cSc z@>tB>1QyX%* zqcX7`q0|fAMS|%SUpL9bRbm9c3<7O^8f8UXm##HwnsQ}&>K~U?aw3E1)4U1@U;V<| z!U@WPzV%j@%k81AV?q~X3gS5SepCFFUQ<%$1sw?J#|IivB8 zEt+0yMLDzfQ?6Guwlxh6z43;?il4O=*N98ZGId{VGt~^a2`d_o-Y;A4Fl?seUm>cC ziJgB4*5*JiersgrqC6Wb{;chT?a?zq3)xJEf&I8(30f4m z!r_6xf4s7{J$1$%VY_qv-Dq4e55|#J8u)GN+{l3S$_)1xyw!ub&tJb5^gPRYI_q9` zL&S*@8!H=n1XHomA))fxP}Zb;F%x*c44BR82>zt_ooMnk;v~qo3=|YtMSAP|YJTYI z%N;?dGqx6_+#LTL7Q4iFK1A>t)OnMLb-%O%^>di3^A`wlUVg|%yy9Rq;Kt7nb1p%JT$9C3et4kqTiG77P-xs^B%IghEYvEuMKhAnq^A4

-r}r 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 lfy>#5D=<4F!5qc5$DIzK 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
KoI@{3kV6nC71IdeGT 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xs)UKeqLT~LV; ze+f3T!lQP&?c|m9FmgBMJ(9l8*k`g>l8Sblv2RnBNA{AJ;YD716~0%;8v8;sni$#B zhd<57Q)*=#i;z$!=_+4^8aZgQkWpa?aV}bCO~|5?Sf_eznD+pgp1yexZ6{RV&?}#U zQDlqb_O5fmJ~4zp3^5D)I~pzx&atoqcXa#uzG<79AXMpoRnHLU8m_a-Vgs9I$?O}E zqGDQeCeSY<1kjcA=Cx4Sv)E(y*n$HmYa+aUV6UD9WAN60YmM;G48Yg{cwqsO`vGmb&)727xl_Y3dxAAQtB5I~bi$Nx z`u8WTUd(OEBI1ufTMb^#aqd82E1kd&-i-!*fn; z8k)6wl9&~z!#XPa!aFvalE89`Y+a!wwNFfle_3a`x1)pTwjN)_N@6>p(FlK>Tm5K{ zQ6Q++WE2?O9Cps}((_QZ$=>taj`AAir(v9jv!m3opomZqW5FC(1Ox=rH~7!j%>6VF z7q!_rim=?@ktt+CnaEnxIsZ|nGwT;S_S^hlFj&%BOI23w(=el39cg9H#61C!t!}ea z7wP4s1n~KXC&dQTDPzT37gz7?>23^Fybd~MwHrEkAs~yRmEjwW7BmEvkKSsft1s{Y z`y*_6E91On!2HN7b?_?~ql$eO;k(@uY|VRuI!ybUtM2*Yv*&&EuGj$_MPD#;VeCRc(#<)uj84v2&;HJnqO zcOX6dX?Jg3D@_~EhJFqJQ@KS14RbJ}Y+X}BGttm>udGAj{Bp^kKYa6BhKQ{+Ijf9R zIoQQqwD)2l>t|xffNe!)vob>3trvTVjBOwyk{d}0JNecMT}OA^Nf?u`bfp|s!D08o+VnUVZt7y?*NhBPO62YUGSZc$ z3AL6$D@D69;a^Rd=Vf1q!xa^DYkhVHMr*b#9J=J|P>skjp5GAs_OK+Iv(^Too(zLQ z*s4ZoPqO6JD4r)@SY>ffE{*A)dTP@g!qnBbwX&Irt+1&tYyuORmQgc&1XxqF3#xvH73Aoq=`DsgHz`HJ-(ks$>s79j~7cuYsnzksCG?V41vBuLFB zx88WJks}p7F1aX`PTrPZn-HkxgI!B}Jq!K=yb(?8Pqg z3k80I0L1mY90i}6B6qy5M`j3Z&~x}fFP|?bd5TEO9{3#^Z<)suF%JeZJk^^JSX$6+ zzu0S?RuZhC^xnt~PRBmpXQnbjbo1k=6=u!aR0Ir?t^&1*1}?<`N7n&qu-M7V{a+m; zJyw{Nx=)Ug)ANl0om$974M(@^>_^Xc(lWqlK~m*E%@DP0U90d2aLAYXueGCL2k~{z zryRL04vOqC#1ctw4i_$Tn?KFKGu0t)7~nFkhq}l>90nCDB|dLK2r=~yfl?`hX!3>GOrL^flG}7F)fwjs(?+ZUuitsE@(0WXhZLS%Z%$y56-ZZ}NWX-Gvb)fZ33!ky()r5zbH@x$KGq^)2 zv?e67_8m>rW*#&ZByw8f43*gC2RZV4O;yPSuv2D}iM{Z_N-<;j;5S-tR>eRg?l<6Qh z#Lf8i!&k@iewo2=%B}oi8T5=5B({t#-z=Wa9yVv)Ot|c|a}9~8nR%%`g1Y%gzLPjU zId)HVcacHQ|MP{TkZHME?_f_iULE&-=x`ka`uL0=(f`S+l67qrRUNWRCYeq7;9>~h z$g99IZb90=xzVHFD-iF=9gC~gEzdMgjF;K(rObC%SS|6a5P(;mV6oXsC&rYm%Wf}N zhnA~uoqc7<*}SeT!gr!kXkv_A_8e0peSvU5?gal`&Tl(s%%sf^z2wVpn?0=$2#-j* zuHX*6@XXoqG2u5PaJJ=Sy+4yCV`JoW?Kzy+ScF}0V0)JaZEVVZ=iN*h_r`ORLCBE@}^r1{tm+jw$+Q<^9+qAk{UqEp|tZ{0z?(u!6mHlz<9ulezXx-@!KW0h+ zbQJj=z~~#f_+j*d0TcX@L?NM>-{ICP!=$oh!v#gdyTo>vVxYaN0HY+LJ?hAiw>0~0 z7JZ;MqIjWkPB0}rvy5(UhX)TVCoDlK<(L{7vMsOBqSB6&GJ){&vWhs|$- zp?TTr2f3{22tt6#(LfZoJD@e6Kdh<)F+#|XIPY?)Rc_!3QzDQxqPSmml8?#@I`G?= zylyp&PNVa-`x_Iqg!AO8y9RA4D2v4Y&m{Dt{l?SE$Pmj2>BRfsn*Fs6Jpl^5CP`eD zY)BPdoRk9tnBA6{V$`-ytZC8r>D;J$89A(?m3-ICupMbY8Gt+IKb6}_BF2$6ur9az zI`swzPh}sqFXgYd%Gcre?RyDX%}g^n%n+A?#L+4i@6clp6D7C8FSqMMNI$f~VWWwR z481tcSGMg6^5u+Cq?tw400tkdm`%76_+5U9c&NCC##xtcodu zkx(^>l~d+4`_``^AXNvsb=sUph=!7$&#_>-+)-z=_Y<5hZ?`Se2S2f&*Pz6&2a|#& zJo~ltCZ_CW+|ipUmZbC88!dS}09$gKi6?~A-a@2X_I!0LxC5XXgK3;?5Kvy+5^k&jB zzK>^ZV4vZeHLS(5AJ9hAW`P~BSdhCZS@4g=9tL-ftE6R2#UT|-{puk8Ac&<6k#Edv zQLnCayHnJZ(&D9$avKO!zwVi5%yv7ml(9(M>^SX3rK?wWvj86o*Fq^L61(-i&Br;& zgXE8ovzyjVCX)Nf-S2FUtZG!di^j*5_t~^E^ZV)KHlYFXF|)?ltu(Pd1zfTS;NiY)Gv`19q37)Vb8#rCzz92+Ik|H72wY^_-sAFt&D_y{^X?wo+kMill z>Gg_Mp@`;SZ+`0wbAz3!%Cy4fEiqeI6D<~}v7mE)KHsx)0nE08HQ#A3)zbhLd1ecs zgqZ#tMHXQn*-R&|bLs(e4a2C3O!3pS^OZ# zV=Qb@S*qIF(KyKthkx00;r5aZK=|gnyW_)QOixno;-~4;R*ryRRomg1HVucBhoxPx z$s>d67sEp%%YfYrratuGHS#cV+nT_r?*m4#lP7O;Zvv#8?J-(-@_AbazB42f!*Do+ zrpr6o1~EX$FW*;=HvbR?l&L19;jo71wQNU!Y&Aot5S{|8#N3ev0O{uI?SBGrs>ZkA zQ-SpM4nSTW65l@@W?lRb<8s%J58&Dvq?=NBx=WcWEW$h9f_Iv~4I9o6cw}s<1K);C z!Fg3SvM4#RC0Xpaugc?lt}w4VZ8O`G&D4~LzFU<>iIr0*b9 zj)N)R=(};v&CZ?B*>paQ6DDHXJuR&WNKh&)WLsKA z`~Aa1yqQI7i$yI=74eipCX8)J>=h77V7`idxp7dvFdkuULU3I>I63DUkMP?Lj6((0 zg|M63l7r{nqh_HxnYRO*Q94x?_CIjzT@*t`8`HNJ7sv ze}%CFjkH^03Ho}=HxFzPPmhmL2)-6qyW?BDRX-D9$`w=G#*wDAtp^IN3hhQAy`-)c z#0TgJVD+#K%mMHJEtwmSNCF91E2a^rV^8wBHA{P3XkpE+Bp25VD$~f6;I}x!H8kv3 z)>FbwlzCApbOjg~108pw6<+3Mmgs6CyKk0|=4Kh$8J_JWV* z?WDdWeRoCG0@_)X<7D4`M>;1 zPH%YBpllh7@D8Dvkweersuph+37oVa`)D&QtF{0D2s6~NPS%hHbYX%*#MsZT=|S?L z053!hv9)-q+z?np*n^1W^V`A`GyP4u5Y%r53B@MTK;3! z1z=Va2cm)Oj*{*Fms0;=v^PWi$R;9$wtwH(lYoJ7-c|* z?i8cnL>+p^@R0pcmez2f2YF;$0Num4U?Y{sPm>X%GqWbxX>Z!%;h_LR01_Cmi5}R@ zw34kC@&qDCvR@twzxg8JKXvGXwnUU;iJ5UPooUs)zs&aNO6o2Sn-ybn{syKwX?z3;h(XK{G#F^>> z_lw_#W#2$ThM6WTiu{Ck$CE@tO#BIoJ-qDhRIqvjb>45ohx?5lc?QR4uYblsW7L4zLPvYGq99 zmIL~}MpZ5z3Y%A^2-s8KAf?)bU;kWt@^M_9QKsj^VfI$1v9HH(Sb#eyjZ)%WWf+D+ zLWoLZfP8(p0klL|=wLmVI&u5T>X~q*8>Ox6GVax;Z^M_mEYP&U^>Gy63oye>DDnID zZ^OpE5mgp(Ct>UFtw>;PNEG*NzcB#iuc0tVFy#JucT%8e{_bV-9uIDVeKgS5Z|w7b zpTGwy0nWj`2=Wd07eir&&t_PvR*4eVP*{AZ9q4q|`?Qo83JVYC?(FBvtGD2OFiM@h ze-g7elLI_O+G@UB5Ap>Db9P{zh{_6~@2g{z4XQ|TM2W8c(7vnxjkb8) z4U@p8RriIjwOep?mCn0z`dDDn6ve!h%7eMT(;<4dQ}bzmOWS}z1)Q2Pr{>$R_Cz;I z+k_DV+bKq$E4SmPxuxwh;UoPPS>K8q5M*ciVHYKuOCvcoSOoR2xn%|SK-|H6%aUbt zXpNqS8(r@#i3;RJ{4-M_7&|B-GsXyCfoR@fs!dtfA?&13Y#eUz=7& zh~uz#VJ^vo(}Vee;eL_y>YLNbHoXw31(tGj>lmN5pa^M{_*iR2Rj~;ZoA4AVZ-Jv6 z42Yz4ERq=`49gaZYGbJZr%B8o6H;8;{fOQ%7BOewGRwuiNe7`n*L)=h>pwaqClLBa zi10ioH~gnWDCZri>TdoaMG0gH6`H!UGce-28a1G8|YC zYFi)P-W%^gKr_r{nm5JLcZQ?i%ts|M626?#_u-36cEU*6(=^_N{CXG$UVwavNHnV#!T6;15vlt6NU52h0(&2c1b z>W|0O$$;j|Hg-K64klDea3sHHH9NgoCANqf(?C(|}kE14pm z7f(KO9X1UPU16&*-vs?YnbuYUU!$qY*?@*eqz#=i-8yuIq=n{U)DgVKR4;kxO4Zj~ zUb%zC6kk=4!&gB4QYyv9q?_PKnW3959O;*RaoD}^6*OY#e67BB{iJZ{O5R(}P+_e# z+1eAn68IG{X9@m+Bptr8K+m*^#M!6L7a51H2Ue z6^b#F~zi70Cujo)^(g&r44Vh^QmJl1`cnh@Rb#q%}{6x(mpVgAOa>V9b zhZ`)nG$n(rJn?E;I=)~oftAJc;ZctWELowt7f7UTeINANWRYw;(od0_p2E@0+7%#M zbA;X57n?`IwoH`a6<}_lKT@fOXa-AFiitQ*p`z8J+Hh?WS0TyrJRIk@&a@Sd)@wsIHrwMU2VM7K(vDy>t2N^8QYTd$; z43;du)@~Lkq(Z^0+{D<(|Ojg2xlJ8v(jLw*4rv6z`MpLcxRK3<<0cLNUk`+|#k+7o%L`tE0~ zYEjdIyd2T_q5m?Rw%k~zM0S>x=a^B0^W?*k^Iy56Fy5&&BC z80WW6)K9BhwvUZE(}kN0(i<+U3h>!u>;~!flJo{7B3tYtvjQ?kY=k#+xdVlQF1NBx zan`7w%%%99-%z}Hjcxz_y)nWbZD!u8O@qY$ScKaGF6sqd@A3F?axE|Vn9rU|E9?6E ziA*PPa`#k?@h=Dh;zAM_`L{H@x^ZJFL?8nASVLM_e4sNwMjS{Cku;f7X^{Ovd;7Xp zB-=|wFp6&3{Ym@8zRR~670QPROP|OEt&+55Pl#fgr9b_cZl#+n_{|l&AR_WrdtMc0 z=c4BSIr5{HW10t)EmjLlwSUn3dR5*7g9Aegcyj#af{fi2W%HimVuj>X1%{TL0!0pf zXg884-nMsBgFjn1DWjh8Iya@?$qHV%>zg8)n=^)fw&TI0?eczo~D)R_P=-us_ z*2A$)R<7c$Hqz2QeqbO=uRK8lcRMP5+uA!!s}IN4vj~%W`1Zmi2m{OVKrTGHX4TS; zc_-5AiJF#n(I^cwi((5aMfS08K9=KWi#tFcEiWNy&Puosxv=2y=tyi)OIn-0Z&Eg$ z_U1RQ4}*YEJU<`GicvemmwE||z;Ia5wd7TmNLq9soOUC&Lx`YsAx&Uj;}Eua7X~zN z3;oX|R0MQY!e%FdLGSmdMiiZvp)oW7T493dVMY&JWJ(yq8Qmn1L75-MX3wRg457G( zrJdpR{b?49I&|gHf4T5>-ls5~sl_%D%yIF#UjBZ#5UrHf^4xE!{3`1XJ3qIy=rF%9sWKK6L*f<(|7kbs*c51zBlXH zZ^tF3I!cDVzsuaqe9DlGR+WUm$2@bixmX&N@b}~qBI@p!8sF#1$4+<@Sn>s`49>** zewA1nk#a}r{ErxNyf1ttJff(!@b@4D3JWaZ>+>EUZ7+=<=|{V#0ZI9SiBH2Gzg!D* z5lernpAe$rI7h;S9GvG!t)$vK;qUp?%?l>_!hzzr9%R~uL!b6H60pEv$#f4irV4~> zEwFHA!VMkn=N4vwSGKd?X2biOcIAGXizS=&kgJHYAXm=25w3pQPxQAm2zY;WMQd~q zAruuT%vV!3S1ev)n`X!+z=W9LLLfdQb)`&ep!HV2g#X=EIX|5+iTKwA9bSh_ATX46 zdL#)H;Io8ZyrORawQ<7!Yb`+1#w&lbKlA#h zK=&}{=l_xPK5$Lk_y71i2SNy<2e$tCSl81=z)&Q(+S*UI_V6!M=Ys7mb>9_&vs(PK zMp`?Uu5d=QHQFu4t*ubI6KBPXnAjBUN5!Ot7LcG362hN|X^R$PnQ>btizfGbroXn2 zM|0fW`~JP(ufNaN^Tjb#rdR*lsfY!>BBE$G%IT>$5gh|TczKX8^Q_^DH0Y6rat%a( zDYE8b3&h?st56*`Cj@agXWk|Q$O)}64XM4^eX-dG83N|jbT3B~my^;u7x=PSmN2zS2uCj97uHUKqupi(rAT-~+-q8!|Fp65x`5~5+)QOH*T)Vi67G>`m2 zB~UHQs!wt8_PS+gt)xxYzX*mTww^U8n#)nCs(BX1<6>W2(IU*E&A|qZ37#QEubjiA z(Z4L>5?SA0dmgI#mm1(^4UDM4Lmd(F%{$nR3ZjxzQ|7wQ8@wozFWEPI>dUqG03*V2;Y!W~ki zhFNW9*5miRf`TTqER!(q3dm`HEMJh(GU3mfV-?MNlQf*nl|{m}cPHGA?ts!{4w_3W z=61A4F%t5sXO)blcdjoje?KQ3kNj_$>(QdWMpamMbTPBP^u|utTh+nm2{VQN9{B56 z^9cnqd1}G<36jFOOry@8(_mD->X={>b21XGqg{Vqw_9uxKM$E#0&paEEVGE?<8SGI z!4N#5ZmuPMkunAW!cHdqSm76g{@^bt-B86w3w7?|?`irpn)z0q-)IpP85zOnWcrux zDjQ9?<1Y;dhrxdVBS$>nVIeKto$J@qAn(&is0)6z(-*sbtz>aF&>;}`bwoYut_%&k zaCn|~o|OQ%HXPu)S>wvUJo5`veCmgHDfc0Oo*;~z!e%A!8wpQfN%OU#j7?vrnfHyX z^p;B^400h6JgT}@UTqi}WP_8BLXbDzlcd4H5}FwE+|}nq)!=}JA^Oy%KBoeH>!;GllJ%Pd zVwpg6mP$glt?=1G--DQ!(z5&E94e0W9%{&0c@J0k$`@KS0l#fW;h~Jl9Xr zWKYJ8EnYEVz|ZxYy_7A6gyWw15Yfo$z~-ws8HiJgW}cj3X@WRTKs!oK!D4j>lAQBJ zwak(~)*WaF#ic>lg!hx@-xwQ-`XWADW-Q<@grF?EO(l$f&lJ3rr3h9?2&mBHu>@D} zRGucOEUA*D@tVPbVwP;bhG-K=R*CE{fhOpMd(pu`UEzlAK)H0R3COpT-Z-SNnk;`= z3<^*g-Cn08LAb9ENzP4!gY@(b``xA}4@tEl?*g<%jhbu#zX=(|UtYQ7K>r>Nsb9D> zBpTxe2XtBV7WfmaWcy~f$sv~GJM3ENuC#_g z)1#K{AuI9M$Q|e<;`-m|F{qxsj(Z}J5oQ7LAU28>h2RpIku6fLge2ERk`aJuqSI24 zD1md3ZA616Xc=Y^l`w6Hw$kBqsu;53(s|!)7TO|hy3;IU(%W47px5@~xnrtE#o%C= z&2AAj*gc(S-oTqB8h0`)!)pb`1utidyGEej8*k9J|*svW@u< zWq+RNwxWtbBzeu>1}`5F4k*!C!BTU3ydhkYi5JUGFlZ%R38`Mgd}wBgI#NCwe368A z%EH?g-){B?)up)nx@E?fL#k%;1PW#G0Ojb{P|PoNrnbrgU$r_FRf4FoT}bjGI8!4p zGL4#=UHLNIigj(<6i%N6GtV`*0yqv^gbT09B*K46O$g9Obnq6`M>V_axJDyEVMxZd zo1e}#`M>4$DVfRiM%^oQU4J#OSexpH^fy0UW-^fHFq6Xn)~BM2TeFr|XJ;A7Uv$Yv zvA`d~TT%m-T~`zu6@3I)0W*8FbnQz!;4pF|_j)FLWH7g0PC$H~)?7rmrHQu_WBs`i3BNNb(F!X^a;y9?zH7oT+pmWc2 zg0?WLm?n$+<31k-hTn$fA-8QY&l);Sr(U6;c0JNOdf?@Qvc;Z-X9`+?vgwpvAiD)%eQ@lu!#mVs+dlyg0Wx z9t_e&8#Y*O_dm23ODx6k?fCofm~_icx9f*NbU+$tm=ee9<~iY|KC7SSNIUxeyJB#@ z%rgN`w^ZQ2<>;lm=2_E@>PYKCHTf$V`@W0n_r8aMOYBFFH=s752Jn%j%q;dqS4V?p zCsE4$pDfu3mE`@4=53DL`tP`z)y-Ep%-{k?@qg5YnBH6ATd8P>zT0;$VLwG z%MTu|;YWsWu2+g$RfB$WC5>}+c?i!B`oopX;eH|yD-`=AVbDLF=>GMCGUG;f;8a7N z0z;?qc5(ocJ1<(T9q12EhhGl~l?h=J{CL(glWvR!e12ze(C>1Ym_?I3scY^;#Q{H` z*^qH5)x&y1)$nPZ)L)!<= zj0sck%G>@J5fy{}A^X;k$J$OJ<6UkgcvQwm_!(cEM_g$XFX;@p?(Cb^`G^!7@T2z- zU&Pmts1d`Qfg#K+aQTQ0gZ7^pI5TS~IGK%zR)s*=?*D9f28$3XR$@roA8-R(kQug$ zrz98TA6XdU=P)vQzw3Vr4ZkT5${^i;y094^78p5=TY}x7A%)#%#^~u!+)j)@t6lUu zB8WAEe%*e;Py3WYr5!%QlW(2*z&wp+pcRrBnT($Ubx$&9dI-_|&+J5 zHFk>a#(bgWbMOGj`~DF+c#$y{2@=XoGW+f1;W5mXnKv=1av+C!(WxgI-4(<>f+}^c zh`c;+J{lxONBq)MG=435eKStw1FoklPn;;Szz}>ZNQw{Scfo#Xu;&-#HFIVlKlF}W76VbVppcpQ zl1nyn2E0JWtLJxZleAIt4Z@+0+L1p*PgqGXs6V$M*-(C4q0o`_>(`dY{RrSSm&97?LgI_cJrOSoT;qKD!)Z)H$lJoZ) zmCC1|+LtauBCq-Fv9%;WB6`T~+dTNssC1L_638%;`LuuO3nT}R`&Pyy00pm!D51! z{>hPzrX~6dPJqK96fFqSw1_+dV2+$0ZOAqmqAC?2_iQ-{=IOiEeIySK&(3^$qfvfz zxnZ99m$mcIEVlWS&C2{doIcMXx5lKH?fNxkTDDGZo@ec-)9FKs;cFTv2pi@(I_e_L z)=_LWoKCa8V=)DF!^78#?f-6gwRNMZS#sjY;4)WduiW9wr-1$`$3@VN=44=HAl)a0 z2Ko_hD#?O$&=Zv?4fLncuVTTnUZS#U0G#n`Xc)uQM9@qP^fPl@8IbuBD9i@>iz)W$ zyJ`86{Q)hg!v_2e5UC$3Gsc<%F$6|}6T-=}XJoIAbdPZ2eF$1+iBUOy0pk5m^qCv* zD~tB52fcDQH7Jx}$unOlk=p2n3i)fp?Znal$4*xAwyV(9iuC(g-DLaNSl}L4)7bBa-#jNQ%ec|x1zH_D(XEO_F9Z2H6;O2j{&3-u z`4~iHi`?q>^AkN}K2#gIujTsvMZCEZqGgRWvc2CA_YvV7(PY!&_Y3@_8%+TofpbiB z=3#o0TE2$NKhf`3XW%Zj#|aT}Awsi$frQksVnFOJ-&PZ9#Ghs6pI}k$;Y2onitC(Hg@-tXPq^e>xp+z^!>?_UU&I$I zRv%WcYRjXS&@nSLMX4c0v8MUWxNwmM6gmD;#g7>ceN3ystrJg@EWD0aScS8LeM2l= zCDZ-UB}I+}{118Gm+D6p%x~=JQu(!hO0#Bb{R90UUGs^}KRkd$alv07cn*Y9%XlJO zADU_38klLW-?>Ogm7!t53xOUnpsV`qU$-N0SYbH6nZyq-CEm zpCI@o1xXZ=F!V|rn02D*8u|8yqm@mPl^0UC160G?YEG%iQDhU4oUZ;R2=M^DK}n5t z>Yf$nU$LaOa0YbLS!NOt<#VCXgkEnOH?{^ZKzF1|_TN90@s=oG=KMbuv`6yvz%+GR!GEvovmvs0b= zMpDstYL&_woJ3qZ=tb;D6T+!rURLkep%2n>_Lb7_7U`zX`36AY-N)80En)biG$P+_ zK#JDj_Y?UWhGT1;CmMDMX}hxxH!IIZ_t{*juNYFQ6jYjk)KGXmFN~K#$=rWseQEAR z@OjI(Z`-|Apwc56`R`4~DxGHwKmh-u@!O#DuUOairsWwKqCzL5dU-7nZzi$qBBfu31_Vs{ zUiFKF2Uej^=xDfCBSG}DW;^RT(RIA8Io$|+XK|M1wVfxrvUD8{LGhF!m;;x3NxvSm;py>!1Dsq>?MW@0tji80=SeDiMLqbKkNMg-S@BO)2d# z)^)6+Wxzk*F*}J@GqgmLASpJMEVi6PJco->6a$9alEn)cR3JQz(jwZz%obz%+Vai7Pf?;c5Si*pF| zpjoq!3cfty)zB_V?)#BcRpZM0``me1YFZ-lh|{1(`ne^)aZDm!nZVfjy!h z$&W~R7=3Fd+?}Q5xjeYMu;iB_J6vu~h|pr`+cF;lR}{Zp?C%3|2zt5fuS&JrW)UcAY>}et(~5CcTB7w}x-1!Ef-F(aYwayK@W!smT*!T+0x8i)Zm% zBf@6%e)8B8;;9JYJDa_$+M?sp8Z$u`77D!tX&k>&Iqnk@(s?Q0@bY!&uT}J>Cq~O{ zcnAFEr3xtqcuzA_i$f^4Dt??DZ-kH}_V=Z+v?xV$4;wxV_|-N=*|gbM!fu5 zUzTg@*7}jXj&>91|9!*#lzr<{A6%#F?4lSM9t0E1$kcfuj3QTZhoi7sk9nLJ1E`m3#%#Y1gG%oGscm<5d5h84*sMz$C_+xu91Qo@Z(sMO~L#`%7`+{jjvcFc?JgwCp&_B zvBY+err>q;`9zxsBU0~K*MsvwbIOX6Zxko6nWdjt6iz36J;FY2{9X*DTVuFd)i!J3 zJGNXPF8Ftg_3n}H7IEdcSQ0tErWIsZl546=w~F~r&CW{ZNo}qb`#EkD1-84_CO!S- zzI-QExbA9c{K13Z@aiwWF~dh#ghq!xka)}hDgjv2ab2(>ILtg#n^L7LDu{6$zIHHm zsj8p_Q+(G(p+V2@Afa|z(xV0~Lf6EghqkaF zrm2?GNfl4Iwgg@^5;Ne7Zl-2-RWpCG65!>XGLio+QF%(2V{m%gF8XNGfxQ zCCrYEJl^JcPwnq33BLhK9on5!J_mwTK~K`BswrYc%>qNG-c606T+;7Tf)kV8vwCdO z*xTpGZNE>qiq1w*B}xeC^RW-ntA*4jkfMa_cnuag;QW0)R}%Xg#6Mry+UG^606gQb zjg9?4V+Iw{t7)P?C6c~g_|kv;?dq|Nv2rM})AeKht0NgVnypqS8)oQzc<5v0x5sTP zVU6es${<8jt_X#2nq4-$;hFh3@3w6_f){Fj_8~^D83~1|cR-@qtBHp$Qc2|!a<;=8 z+Fdl;c>j70hSSx5-|wc0x;%d0j(h(eLQh|Pzed6>0#>h|T?nFQTy4wH)FC>PF2h(s z2gTL2oXh)%iS@u(HpI0*t zm>e|{3m!5jW0)bViHKMPMHRza+RgI{8$w(dO>;Iv(HhA)ZC@{24bx;XMQWf6=|kqH z7rVa=ak`W_>n-8Qh2#!2wk&Kku5?%P&pp@Y4NlwBd1%oIN3QkM=Olh@U?y#)hs@KNYM#lbG#YiJw6Fw)joUk*9>tV7Of#;)hjpL99!`JLz zqcI>q*H{qUQ9gXFfCrzQX0DMq6ElKoMlJi|9U#C67af^yDM6N+8z)Yh%po%naztYU zOl42c8)v$Z5vM6I=lCq9ZHRS@x}3QP$QG+_mUu+`4-$u8Da|G*9nE@0l;*3DP^>^3}2I3bpN~a9aG9CDpp>j zS?*cC*xX*1y-AVY1nAEEhlEbG+`7U*5nF_LDvL2s*O-J{Rg?NDqW=tDVG-Kb*kGuo zF{*Xw*&;^I(&#Rr@oTJe-%DztF{6Ku6WoG6%VW#&4RBJdrG@pt*b0sEg`?}Cz&oO6LaWJ0~iEfEu+ zP1KK@dmAk=6;TWhc<3XvGA}S%=M(vJ!C87j7NmPC9qhA31O0LyjpVz)oHdFkVd3GC z@RMovz~ztu|Ek4C#)Yn~s(LHei0!mixH*;ks8?kX^1?f(cL4Ptdx_J`uor^ zEV;xo>4pi64iSuHFV!FtWU{L9_AvNP_586eQn?`3=L_#tuO55PmGaNzmOdZ&e&vMx zd2IezO97SC=VNBDe;#{njQ(Vf4}HnCe;!*s7D7JYHT=KEvj2oY|+WXX@;7R!Pl!?VgcDb;!z`3PRsdv*IQ)w8uAf6BhHBA?WNP~t0QA0E)axy zdy8GK(}bPPml@(AZ!e*s0-1SXc_V_)kSVe(CCNTHvOf^58D_Bk#hFjl?va%NN-8&a zdpviMSg0U(xEOx_5)7QFJTJv+AgNgO9z1Z7fEsIPG36BW5?23)lk7-(;lIh-yywJR zzqdytr)z^x>i}AkyglIut|{4@QE0(&{)O1A%WP#PyWR%!76TSpCMGN$eFTsI+($TF zZSMBE3ULvAaVIGwP!N+C5UrJU5r2Zi@02g>$TD0Tj2@4tDjgV2xUx4O$c4Yn% z!Nb!p1Jr|8;8IR(HN)8yp!yduMP@UZ&BZav=oyKoFTU-!?L^mEJA1~SEwFUB^6}mt z*Vnjy!yOO+czc)w$_kofYRxi+>C~GbHE9X*sw6wD6-^%=zaU1V@I>uObQ|5$hE3ai zURFdeNIS?9-NL!)@!lTY3?fVu=G80iMBeW0DYDS#f}!*Bg9JFc-kxF$>QQ$vqb7CX zlHQ&Yv*s^V*2ZY;R&S4;E&*6Yz=XrR~P z+WOR?08eW^=P7ECr~f%o`N8$Qj#nLVsI?(KacwELGqsuQdDy{{Xf8f*d%Pgd+2Dhc& zO)DrV&2Wv8F_W*dG3_DWO+X=--1*CB_a{mpOm%jjaw^onIA;{u{5OC2D;U%z%~ zQ4QKvX>fDw^uj-MrSs2XI>K#Qy!p1Z!1b&^k@aB9mk{)2ml54hP9K9emH|37xD}om z2q&}gmv*3<6Sa_XxM1OE=X-bvtUkh`ao8RH7vQ^V$lmly38iqxPy!@Zuc+E>A1Kl$ zs>QPPD-6d_9b#jbQtC=9g-k1rKuF2I38uJjqm;v zP$3!7%#>+d75DDn2Pj>b%v3t~|17aJ4Goz;egiF4!&DPT6OackB@g~n4aHVzUZpPZ z`8)*=B_mqShdv$}&}rb%y?InjpIbIK2+Y9woQ`H-WlH$lUF{9VFUQJ|=$YNJO*PUk zmc>qZQo*!)ATBPJPk3=EX;@(Q^%GzXBRM`;!dXpe<*8Jyuq!DU3ke%<`NRz$qR zMxx2m?LA-aPfyo8LcU$S>v>ohF{eq?{p7RcmEOJQqrpv*-_MjA_nsGE9aj z&|||^AW7`31hH$ONUXtGFq1S-S6ph9cvX{US`U&RD^a3Wj&`7aU-(ZI07N;U%xK#D z4on%}coL0d}kk~A}N4I+HsOEM8;MyHp*dj}KYwhqw+4KG<_S}h z?HjiF6($j<2%G8sY_?8_*Yx(t!;jGn=8;LX!e~~%PCUyCH+!ogyh|+lCz$=jO^a3Eu>t!+XJO_rgpb`3qp-Lwntu}4vqjD6_y~k9@hmcSdzMF zrbkC84Ow3k63+GX*b58C0-T*tU^>7kQ5Qj;tZ@FdZvE4;Ah3dZd11E~eiWrf;UZzQ z&``uhSM_3 z(MrMf9nlpszDO`NvxuH0V@N6V8yqCXv9N{^{Tk1`<^o&K z6;M3?=ZF40*GCp1Ued1t+^s*Xn^9>z7Ty@VC^*m;4JA2w93ZY1^r**@S z&`lq;_g3|K;6Cj=jCn4cllrdIYbwxw{H$~U<@U#be9rNnZ=kU2epT%Bs29B1a_^1{r$$+0?O12(C6Zr|7s#&?c z-*slIva)@z<3=S-%?=E(vIELW>sJ-v!R7@z_~eYC<4`wTxdAZrA7_-q{HTt30K~zTV{mbpNGl)HR_jDQVq<5#J@*A zy#d&4M2mVR{R_1>&)uk`L@P89of`g=no4gDE=8$22|l~@x&j)5@OxWto+}uZV(MpQ znm-=sx_M5KZi`$S(t|p#R^y;9Ua#>?LN4@>(*BbQLdw3wuCv7awWe+dQC(ySX5g9| z+aP{0uJHAm-oICt^TM+-_HBJ&eJNMQ6W9FAEG*WgCF}$g2I>9}iISyY5#@H6S3|B4 z`ssB)yBH~hXYuofV-;|X(ox4cM8A#tf7W&}Fs@ln*k9G|E?rtOzp-%_Px#%X&>@6U z5gBnMCeG5_ix=YzX*jlacge+5ihVfw|7x>0eNrmbSPSf6My&dJZF+O_{4kNRGK=A6 z1#cB=@N)hbkr!8`tP{n&$hE-_TL#|z2#Dhqo6>Ff$j^S;0lh;N&_5&k+!w@+1|r&j zCewVeeq$A&C4Pq7omk>{#|Xt98S00K_;72x32<8he;Dj%go0gL0wva#bOmQGu$Wf{ zI_g4vh+_(jo#wp2@w#&gw%`b_Y*lXl0ZE*3_Hmi!#cc|2djoIK>VeBDpo{sLxXQs=tpcArm9rp+1}^#v=Dmj z!Ah$FWvYF?Vs`uby^i^yT(nOn!m|q%P7oO~n*$ocUX1v>nzQhzdGOs4W5nC5-YM_| z#e%KKW=FzB-rf?kvY5ir&?;cD_|cM0D_O7~_%u~4!of71VS#O)zz+X9B*B&>W?28q z1YRvK;mlk`&Pdsz>>g3LRoX;2E}WjFJOpq6u3+P&-m6ONKct*LcBz#>az2$@j0qUd z?D3E^o^+U3kD(U{%0I4p2>#)5TsrO}f+a)Nk)89Q>v(WJ!A_Q$l|X;FML|N)gviZk zY=(@IAaOk&WwD-AfyKn#cnEEjX6CC`mn6AR5jj8fSrK9efm5 zui$<`A~he-WJQeQ$@X30X4h-Q*GUq@1LlZb^0YEp`L zQ^qxhXtcQ5Vo-*|bHo*AhKVL8;b)=N2&Z zI=iYH&xmB2jvV`V)=)RPZQ-?s34M|w_Nd?aqwqd+xF4hQk_4hP$~EC%QhX+~hYqff8~%4K|iywvmy^7?X#kSmw%6i+GBFO<~#FmoUSA$-uH4IGO#h9KTEUIWTZ z5S|mF(vB;aS;$7wF=`Ts!N8C&l`N$+SvMF+h%48S23Q|Qu^~kglOlsoo>xC%69Hi# zt_sVBka_jXs}OIwbLBFf^aaU1x(C7WNaV`p;v$0EEL8b02|q<&!Fd=3ldv4Ka4D?N zdW?zuiRW@MrumHQQA>7J<30bqp34EyE+ z9~~OhQU6X$Y5k-@5tX<^fmb$GYNE=G^2HDz3#Yw`-{ZC#D=ubMV&93bPa0GzAHE*G zbU5vKnDZiK@Hnaa%#TF4-L>sf7z2zVZhG? zF|QLbJzJACoyfL*Rk6FYK)S6XbTW~>vFVjkfA@oSZ*6Ajg_W+h|PLqyQiUyICVD8{aWz zZ#rdDv|!rvke=@vq1~+i0P=O13aibi9LcFd2eHUNe-YB(=Hy1x3WMTU47e>hLHtG8 zXjxIEb(+2fx=LnAUXqRdRRw?u5BQ50F9;@iEbkf>()LIKMx`u9B&*RVG&hNUKdNW2 ztkUXlS$1(PP9(OMWb3|!DLkAtUZ{u^Oi;j?qvPvAnZAK+JXo9iT zM4}w$^Xig!nn~CBPLq&WtAxTzW;R(njl5Cv!Mg!-7h`fL4k~~x_4djLDW;Y1j}9sl z!7V-+^EQMnI{BXyygjR^Y;gUdflEDjoqfGM2@;Hdraf;Zn1a1m*Ha5H&lGNi3$0Gy z)vE&8onVzFQYZ#j6HNWY=}EaOLu*N+GA~h+A&Pz|Dtz3PUg%TU%U7>d%YvO?^SE?A z_muRu2TDPgK$3e%NNVw1CUVO}#3wxy^f4a?Nn`dTVotA9s5kXoDdM5Xpe1=e8@uow zd1ao4{8UvipP67uP88TT*(6Cn;Ygwr)=DTa&L>RxOlD5rf-M`84*Z17&E}Lj5^grr zNaTegJP$;m5+YeGJ!hj+5QR?^O4{!e5yBRTEHlJDqd<~Q=8+#rJ_%J8uSpPk{hMNW z0w#TUF_Z+Eht&f;!H1v#h?yihHNsZDt|LJ-5@b%Ippbi;NS@2pY3h;%z^XpMIU^*6 z?uMK!Pjs(bz>>s;Y)&-@_6d#5S)uQ7Bj`-i%*t*r3W@v;qAmrhcCjx=CJQOE&Br!i^kXjZzqLHVhpENNT*2SmCM0o87?o4C(8aI z|Cgd=gGqyh2-+<-d{P_K36FV~43R(8~)*Ks24v@hT0yzC~2YD-voICZaeT!l7U~CUPF1(oC8~c?oL6=l{`gSRX<;4R;$d6-L!@)Akx3 zXDeN(DoRl-5#!82wdseJv7N=Y*Cmo?<> znpGC%arikk{#g1IH?#}{cZX#{6&K@1J?`ntEoiL%4uW#&c{QpYcfGDoI{e_cDZA>T z;EQ{^rv%@RA69-3wW7EvZST8$P-8ipKx4F3fW?XPU&&&teuqH%hAN)2`ucmamR6lT ztekhW(Wr_xHVyRPa45|ZYlmfiv-S>@WE+&`gL&5DrX8ffKj53GwqzetmROIi)dmSQ z*q5XOG(=g9ZM456gMHHhOh2Uj92(rL!V-VGK?5?gfS z$YEt?@16z$J@XK3{`hbk25lh19WA~fo3^dBU2G%;K26%Ej#=#|dT;yzd<+VPSU>yg$=GoFq6|Ab-VF1QDouLkexRxUn%j!xy4-#f22&=w7b-Jo1z31 z2mI%UL~7GHK04Uv`Wl_gbFg;48;kh*`}j1M@@B=cwSTKNrVsSFTxk$E|DKTBdatnNPs3n!ciTt^T zSZ=m88gn)g>KtCD{9jXZI-u{+w5O@B2j?npE$XzqYv3~|%=kn7w=Az>0f|s8cuBV` zCm=cDRSQqvTBJC5!YGt+SPB!K{L`BjrQ+bbFuu^X45MV6J`AZ!Ik95@Ik5_ls5*!u zum&fGo$A+0EN!ZKj3ffFO0R|x#~D~W26t8hQ05dG9dhbmDIHevRvFFmPCFe1>FA zhq>g-S|Il3t5ga|pD&mc2gGblg1iLRhAZ_i-0cDtb|l)J6iO)2nlK0WDe^=t9%U2i zwE^5w*v}kNmzXE9_W>M%M+CjF6nF+y2=Z&jJOvXXp=9|2N|fUxfCdccmD3lWGYRgF ze#FNP*;8wy6lrvK5Iap4Td|q|!JhHVk9|e4EFo1#K3s$dA!J=x=Gv;9kpu16N=ReK z-RW}CGAs~H^6MDPzV#8zqZckp?v9x{auo&_AH{DJMJYeP65``nj4%@pzzGD2PI^SE zCjTZQ?<>=hGU5&V@Q zqDCKX`OMalS98+a(3H*}#REa)KXwZPijF%4i4r>V(1(ja3~bTzw2XGS$iEbeE}ehJ zgpfJu>LBo>-p93<8+}>R|wWBTG1z!H(u_b z>?O+ojvTi@p-PhA>9nxFd$V4-0o9Q|ZCYwsp?7K{KA-TgqW!&!XE1UGi0cGdVaZ5Q5Upu1@8Os;^7YZmP`J3u7$Pg51|yVOR@9 zd+=dnb`>^k5_FxXctI)@pGk@aeZAz1Bsv?lM||YJ|Apv3qe(lG15GHseQL6|$NX@j z^wHHEDGxyK<5s6b9E2yt{o7sMt4S$aaI-5A_)K?3P)Jy4R375xW__AkIxTPKdOb7wFlu^eqK9SC>*+s3lhf}SQa3e1Yxa7E*fjI2RnU?u zE5Z-SJP(-<;hdbR+}tRZI!VzD{h;iG?nO1=bq_e18g63qU4trM7{iw~ z_v_>?MOtjT$BjcDE6EYiZz8$MZu3XAuO!@bpTUoEzr|_hPr(fciS^(zVd^GQ%q5$jUQqmdO zBOfR?TUQ>WRMzIpoxovi`EL#*zdIE1wb^f5^hs zmwRc^zB7MRGpHnBTs~UoGWE#w|l=EZI!JWa(ZNXPB%2{ugd2%VsM9@BAsb9cN@rB@m9`hjS;# zpM?&xqv#ev;#H{N%^&Y*FR>(pZ79*(q!Dm=d?Jlpr+`xyggHm?S$wE9bl!G5ggMTF zybcycE%d8|^AJrC?n!s<<7bw##5H9C{5fGNG*%L{7d(13c@b>^oi;tO5VXNOkG=*W z9msJR_-8N_V0V6p(yUPH2}d*59^l0mX*qN1PLyHp-w;n z<|5jH!7a%iI-Ga@xQS6n*d|7$4EKTUYR1ZSwu1(7RR=0$Zfv`UHdUSNupHA4!Qt9q z0wP@OYM&XN99H+E=F-H~l=I!~@bAtZ4#=?|0VM5}&N|)i{tE}~{2mkdADXUSqS&f4 z^$#k~w>QLrYwGRFVpqQjp_*M)h6(C*o8`5i+ogEZe;RW zcJz5tP7hBV+B@_PTrp`oFP8;V*>_B%itxi!a9YFO-p0DTQH8J1t9zvO)_0?D1Em^< zR4GO}8h#Aye>%Iw5*iv6ajRA}VOz~&uby69Cis2yBfIx@by^e#G-5@=KLp8|5dg)s zW`Q<=VR83Sonx$R<%sI2f}$eOC31e^l0Ex=xYUKppcB|;$*M2S&j+#%Wjsm1&!!*9 zem;P_WHpa!7h=!S2aZ*6F_ADb*OsAg2SQ!g$3=reYMA0HvKHh(WxW)#RYUi%6hB>G z34gfkrE-YyhsoK0V?<Y7@Jx>dcrNFhHr znR&#)60#8ruxY}=zX}hBWdx4lI;lD;z!4#4vdcrZRYbY69hbY!Q|}VEn>Q==#bV8u zyAf0_4ifz)BR`+H(jA_-?L+9l)J>9W%H2m08Y3my#kiq=!kR$XMQ#B@I+W+S^!)rL z7{Mh-R;f?G$y5-~CD{`n>$i;|r`GLOC%<9J*`%^sTaX|KLEAAPCviV9AvLA@$+&}&w;iGo&0 z(WPanKfZ`bfvO$rsJ zHEm9th$q3TfE%{Oy-&jUGKN?3z_@<$9ScOyQQ6ijtEA z$+u{ba6#hA8t}Yya++GUlyd&qUYeCJ1Uy6>o1PEIV~qsI~Yg5u93@{B;pd^P?6>YObR-%X3Eh8&uP8 zMegnP*6A3Q0hTDDCZ|syQYI*L;E?(;L*MuaTi@4_vhs2bu^ehU;lM6i0hsFlbQlWd z`#M1!=JZ639cY1j2RdNarSqe8)a^u2-=gec1CW75x&;jMi#YiQolcZ_(TFtyx*fLF=U<0f%bi#s*;dr;G-5B4p2^4>l8#T5C5zZr8~IK#>@B~7H7Tmy?DIt{}mLR@_dE!5xU&l+FqA0rQ5DT z^F9Cj`Uj}|tP{DAqPNrH`o-@KVY?lj%d~v28-c6*LxIlT?{PP=p!af?{QwFAI+3B% z1{F^46|?L8t@YoZ7(&q2FA%TCwR{Lg6`e!xn1pE>-_@aDzmOKD0xJxXuf_;fxZG0m zk+P$KnN;c<^uGTzN@Xv2jL7T0;3I45YXXh zodtm_>kny1IRn*#$kmfMi1JPxQyfLHJ@36bq@&@y_lD49;T-W^?KdY3*)(gKwWb<7 zgKezbeyf3~kgoBxF7HuK)dx=0k#`emec?}g5lRbm))56gIn$-dEZrQqRmTfT%9Y0N z8`)?o;}yu46Z71=GL`pOMR_A3J(uxrKD&ic6D6!d|C5%_X0_*ekFA9qLaeLUt_&CM z3w*tnD<|aYWfV$)D#iUn&L)l%u}yv?Qn8Mt{u+5ug4h>pS-;pKI#Soc27ch_M(|?j zNwAQ(F5YjFd%9g`kiJ*4so{*WkVtvDTb~?)URz=KdTluXs~$Jz{ogB}(aU)$GCb~a z&s?sTksxz=NyNu_+^*&SyBhAA=XSxx=;bc*wL9qHtSAeyU8F%Fhh0TwB z_HMl4M&r#2BVwADyN395@cp<9ANAkr?!+yAhVZNWp9<%L@kVUB4qza_WGYnY`H}8R z{Wq0i`4{Vm;^K994mkLh9UyveVIz{ldXmDjSE1Jmnwp)6ek>n+a~*VWIHR#~JnC-8 zEWaZuSHLkH4+f3yc7ExZn!k;(!knF5U(;Wm8Iy9%C{%&Lc(RE#)u+i4tF1?j8vaX_bW9-!mwNAm? z#)*(1f>yvpNmr?{O}`hu^1WcqcA-KfHQl|bUTiYIcl!H_44KTs=ixlO&pGc?akT2; zPkZglcIc4Qgkup?rau5+HS7MZ-j5wW$a`W?;{FQXw)bN{mf^4S3y+)@4g9r$L}FFh za}Dw|ztZ0u$n85CJ!v@LwsPMvzWB8ObsXyWn*k7I1KKTWO^YEE;FT^((a;Fm&#SIp z2Y88)UpoXwh}O*uxZV0V94B$+Z&n7~Zt|JZ_|mN?R#SvD+u|qk5B80>g-9!D?FaiN zb;)48uxa_3SF!SJ`S4+K&OlG-yRB(CC%9?luSim}L(6}5Qk)h~3z!wjc&*3L*U@_t zC|zN|TvHd;V)7Ouxt{~aT);7P>G^+FF+Oh_#sTSBVED_aoWP~+isI(!$Ut-`*oTDn zgd^=p{&?RRICDy!gSb+T7J?-*mTr9_KZ<|TTsB6+@lxo%b#zg^+B3re-9d|hc)=MP zw*s-F9KVe9H+6}+=7D0PoD<@-1rZDy<(2^3sJs+W{Sb`Y5)10&B?d188or2{fF2vT z5#tv6RMo`n9%$}66D*wYInu?qK1ijmRIutqDwJo+Ss1;07o#x-|1P0M^mx5jp7O59UMGCDs{S|-8kCK-G-HKaWt}Ficz~eOe)Q5F% z_AB_3Uv47trg{m+NWftLAnZo37a(#1)#77ayx#|Xe`OPDH*3^loUdJOBgcoJ;$#U2 zJn_P5AtQw9k{F z@Y1Z+y~rd3PPqhuc!N!6DAEgrer?>WUC=hLg1~H-z#lNtL5c5gi+hkM!(iTCY%3;$ z9tDk^KsyNZFPASbmnXf}xv7mvPMQcyWJ%5I7TAo9?->gD*3wEmu{67>^&FDDB|FIuN#48O3W8WRcJ2kfMs{fG?+^-+6z;R*!F8ajpL^!TN ztwUlvVqUv~mvQ{Nhr`P79pwQP_TRXIq!mzQ+(oLjxtffh1)SpZMaR|a;~zG9`bQ~r zmG!TxI(~aI&R5)(;m{}KT{Y+Uch3#oLD0%m8M5labB@FB8ExDJ+w}7rJzVtj7f>i{vW#Q)C8li)T_SSbt-Y5A9i73012W(%Hi@?V|Hm+gfU zSC4p^^w|w5WA~i7ZTsxMw*ah+W#_KEVi;@OS6$q{X5zCTb^Q~x!6!Yat8H(-Yn#P6 ztdp&X^N~I&&&<1AYkFiI4oH1j%y4{(w6pzoaP5d0ytPc4lrzjfY3;vp9nljm+X-I} zIKBDCb??k8TZT5fM^WB?<2ny?+_}PSf&Ur2E{0}$hvzl{_f~_SkQife;>K!Am=qlL z3bZGGb0zfS^-oNc+h^19*L%GM-%MUUr!e^Q9nftO;OoVMZ#_{q=KShkD{E@xPp=##(rJ3c>Ebyd#TUexTn+xwRpTn3a#b^1E+Y}E9k9FXa_ zQ!46OeLf@G`!N8yb5TjRE@^)-arI*{7um@otDnI3cm(VI?-}ziOiaMqA}i`j_u(Ru zJ%!DG2{@+j`8i^LyFGK>#>O|%<;~sq$1hy%L4aX!G(2r}&BOggf8prkqwwG|)_Ibz zhd=HS>7{i%3~c;B(6t&HGiQH%h0=oq+D{^YQ7}!#Ilh(gCnC-H09&V)0R8WZOT7w-)E--zM7uPTw30=1)*tqzS}8DMC6|)u^x42 z4=##uNMUH&|7exl<{p2~;^3aB;kgF6A zcQ2J?iVGjX~T`)a;~;+%wX&+?@h_K7H>QpnN_eH!emg zoGy%)u7TL!Fo^8$GeJ|1q2NBY-JguwJpSJc) zs@Z3OgPuwe%r22fch%USil2NICq(#kIjie*n*<2X*Cov6A1_1g@@T9EGB}pD_S<($ z3z|mjU7*wPb&;?Y8I7DyRCdWQ@lF44aBJCeZfXfuxk$p`%rYJT$eVX1j)d$lz6xio zcIp$BBu|ZCXj}$GV)P_z2)aK}w%mQE-jz)B<0&xaZe2qdy4cs{@3_%1HGdP1A+O*< zP`K*7W2HE5Ldc^C_n-6rv4KtQf+lgML=lUM z9gw0&Jl$E)gus@?Pu6eW9q8>G^=9YP0EzAREvz;HsemyEzE{5esKcP@8JbTN!N? zD1%;dvq~btGvQ-_vFrQWuWnz5|SjvlECjp8`B!Oe!5fdbDMqLTALwOgszD_ zk`D|LC; zY#k~*!lH%RUp@{kE z5uU7);RvKTgh#qcJ(t0dXDFZZTtoW0ewdCumkmPJ+S6-z!$Ohm?$C1I2zFB~N zNaJ$ltk-bR5AAA2R3@+DV!t`e!Ni{Ke;_5<%MgWtE*FS7tv~gt`pZ68!|UJSxwXo} z1na+Ko6qevftTmu?TO1i33&}V>#n<=EdM28`sZM`K^(0+UUc4nNo!3fY3|=McABkv zKMdWyc;GST&v*FRJ>xu+)8fm}ebvwS6t}NyS{UP8x6l51QYmt1znt>L_yDeHZ|*KueBItm zhKwbwyarZm47KR6)#5QNpWWc+#9pUzDXi6Sn(as$Rn){32RMcDxF%?$e+zTkl6MR% zVB(q!ZFJ?cHke>dy-pBpyiVzSDvDT+eC%vUVq~vK>{2lK7079hvQIkaHXtv>D3UeU zaBM&U5H+g?;);)!%DM{U-8UpIz1H1kY;dt-#HWFat}x}z$us3U(5P-=)Ymm5>`n6`KGc?~ zU-NYhIMNRfL^@Bm*&cN53#I40hgoy0KE>E|VSw^luj(4EI=hCxi*;TwJ>?9H)?anX zdZm%0D@P4Ds7IqnrSl^xt5(-^6(mQIHw4;^k4~yfHH*xdf%>2NQDo8zDdT9g{!YCT zxeE*9$cFqo^&dKQEI#vGnMmcyNW_gz=YM?Afzmofsgvj%eJSo~G33D4b{3jn?bqN!3QehWw2*9kz+$r9B(l09XQIixD5##M5jA{UtbjSnKPb==x|7 zrFf{#P|fItkqHDtE97w3V7Pih$nIH=_3ogy9;DIZHnKU6s3>RfLNUfME{#VK*U~k( zEJ>JRc@Be|xv70nN9GUYAOE0sL^Im*tO^!B8=>%w5iS_iGqY|tqa7DOnPyE7YT z0*gw_e(Fv@q6(dwc+#FIL87mN6=tSFs=V|NGp32nwVv)7Mbr-eA+LXKtbGNz z6TpLSzVy+f6)yspG!E&S!mP*ayMWx1s)zZReYz(71GtnQ9TAZtX*d|ywdv!kdgUV) z71s@Fb9_?|6`IwLFFHl%?;3_zMtlEDcDehncH;N=eqMCTa3L#YUh9HOH~+Z0HSQkP zE1v3WKBTnGK7MCq{Q9u9QOfM~=X$GVA0M0-AA`@Pquwis!5NOLHxj4o%@d^b2JHOm z*`RlcyPRk@r}XwXPE`%PGdMoJ&j}Zkx%P329r*;X#eGgUPC)L$+QD}X#^HUYS>NO) zf%ELGngInkywNUs%#~LI{=F$G;mtj+I;F0+H#9lKUvsQz+i15-2m1fgV`BUr|Fpbq zU$q5A4}a+q=*qFu_Xw;UachTb|X z1An(zAiSGm)qFAHPT)w(n5O3S-{z^@+IGx$E`4OzF3TOfa}ch~PEtMH7YC#&%-mL(1ZL7x_eXw*R^Ec6IBwK+(XYAk zj^Q9=b^__M-5;4W{sV3LhH8oQT^Ia&L$hlSv_+f=Nj6$FwP)IT>uw_9JeEq9U(|0j za&)9@9Hbxpl&Ti49a!17r72EshxYBO$c2YTYy_3XpQ6JD+-9nS8}MQq9w8CdHXSV; z2YD4p=iFhfGe3x~Y%fd1aKbsX%3W(DhQ+ED{O2gOG0* zCgJGR(Sb=Lg@JyTjP!SL9Qhu+o<$>xP5I+PTabJ%hiL~wM7LEv*~rQbPP&B(XFVGx z{;Pm6O;Vv#AS%69ZB8~%k6E}h#yhnHosq0?Kt>1r)0Tj7LB&Bha3(foHG&CU=)%I4 zdWEI(F2wB9_6!_EvIJ^^1>_#W8B&XycOta2q0EuLC_Fk5f{8KpDVGnW0X-Yawjz>7 z$;zaOaXg2Q1(8a%3oqPY%2|K6Q?9mH9O<=%f$N=8M72n1c0E2$z#`+B|2STnD%*vN z3R#_Vw^M2Jha)#3w@}nNiipzzSmPTj7QwD5BQfgKzFgeP$Ep${6KT35@kmb!gXOMw;bTju?N2 zU_OtA6V}555-jTYVju`5TRWmwMuJ<`jl1A=S+DNzX~ist0tm{9(q&C>{d{Wig?3qs ztZ$Jm>{oe8K@T`kNAKc*+bT1c+m<)L|5osLG>J;B1x<}IUV$FL8|Eo`bSmjsi+GEX z=yePg3ad|qGY-q}nl7{tF2+(ejiTvHgd+{!A(p2l7Ovu`6DuH&2T7mA3x`MRTOvsu z^~6d@$bHq~*1v%(g~@u&S*$#$^fTVAkkOe9E~l*A_fuZ#s`hKnu+r$e(9W03W6o>n z&2Y(lq1~D#9YgwmZ=I_6vA(^GQ2LtFRoDE}3q)+|HGCwHabaj3rBY^-s}8!ZkOz># zGi$Fo`_26f!IvM_2^g&Pk;)V`hUsp(q#IS$>7uVEAMZ z-OsxFEuHPT-sK-8zS}aszlZhQHg|XAirdbg$UiW?sZ+m3HTyc8z#Y_;CY`OhChk9< z>xVqtc__aBx=hXLmGe-0Ee+pQ#g+fEkY2rV0cs9NXH{bVb<~V0fr|*&Z9DPZJg7|{ zoYp`m=dJo(!*?s=o32NYXVKG5{IU;D{1{H(bxYv{1-hk0n}B>4#h16eK}HH(lFn5j z1$0t$qa9eL+;a(mYs3HEIXJw}&dr#0Bf`*+ygMMal7XP7cbn%sJ~y5>7*fpq%fT`50Y7adbCT^!td_*4}jG;ir@m%sbs zV3?uU^L?vcT#E#Lv9v;kWyT{agHJ}Z zBuMun1s~exqNVfvfSh46ARE3~dOYvqd7k*IMk{bdC2>)p*7ZovhaSWt|8J-+UBe0J ztubfueKmfu10K+#vA}apV@^q*_fdz;mXvO3^6LJ<)_l}4gRJm754y+d0Ku4ff^tO5 zc=4n5!F@E{wiUl2R<&svIR)yC!9pR@0v(&BZ}4hz2K?HbgZ`;`NlQq(6#L-}zV>Ph ztQ`G zq|G_QPct;u*t9HHU_jC}!-SC4kbF6uUY=^V;Lliu>4_*c&h&Ntb{s3mZiQ&I} zH;kl2#TZIsFiMC}$)l0DHKX;DwmLUes*n@Y{0rslZJV29)ky8F;*b4f5aX`8$i#zR zwYQQX2l%+P`RV?b@m&rd9q>OHORM=Vd>!9C>zp$N@5WV^Rdl{zB(Z)GN=9^RUthPU z`CO|b_ZtQmy6T+RUwpg06^yZlF(gs>RLRwT7UZpP??&s1{n6(3vpv>9Nw@u1;qbcl z))@{wCFs{!rQHD#@o@bq>j+feWOQnelDQ?OPk)Ten zjOt+qFAGgsAS=796h1z%%zX_kkx9IZ|5;mszW}9IvZ9(XHX=`Z3Lw&Dls!m@b&fh+ zc8OJLObk@TpX@}DgdaBQAe4Z^;An4e9l$GAU5zoVjcUIK7btgjY=RzRC*pWvL<>5O zNEuQMD$v?nr#&k&rcIdmgvf+jdp2OY0{c7n)zz4NHkKp<(UVK-%>71z;j8kwCriv~ z0p8Hc?*60)YNe1UMC47|etoVxj*^ua0M0bq^-XQvzzV%|<;LLSS0mT=cN*!E#Y>Hw z%6k9nbmx~7>dOvlL|R18{!S#|A;ag&Sl~25Xs*}SsO@LvpYGlST$PZxDUb-Tag$@Z zAftB4TfZ1*;!a;>k@6>`e@Ls<{}S*<^h-#&)!l-}%Zz!`+_c?qZ1G4$J|9 z8iN9dKY~wkm0fnOP>L5WR z?_1HVA@sN;Xj^|?2&@P5@GVRDR+e)vZ;Q|CL#KMStAq0jWQ~vac=|CCG2{z;aKi9b z{O{+jvFT5;wW56ADu&x ze(OWjjKWW&)fX@XhpkWJfpXw7@Q2Rv`H$?wRHd-*G|ZXxd>e_|4E~>T8?hO1hTwEe zS?k_dorvG(iEOh=4m6#nd1A*|2vfH40FcuDelz4p_;I50yq25TW-<$M)=*`oS>MqL zh(qF{ zq#V}ZK16q?q47VWe7yFI}F%>235(Booo2n1@!>J22``tv8$eEWRNr8ZX>xiv?dqy{FJjthIWr^@ z55*hAOk3@(!@z4E8PCsET{eB^s;#) zn<08kX*n?K^AxgaNlIHXKD437K&eiZPu1)rCm@Iiz%aaUKhYba)F&}ZB`cy z2VlE>!W&??z1ueCEP#~uoFo`TZ!@suqE|=j z|Aatj5)0-;fJ+B(S7~l-9(XofC|*P12)AlA&JzZu>~+7jKd6br#^+BM1oGPx|LMaw zD4%>HUnsWHh2(i}b8Myn4hd_zwa~m17qM!b16PqP=ie27S%6R}w*S1^ejs_%+hQ~9 z`4Cq(PNZr#90Paie_Jix?f39FsT|ZnODtGTUJ|Ox_J{Kq^#gn+uGgEfFkVRBls_zB zXm|>sf^~2VZ67ewWTV=#>&x4aV?id`Gj{!SPq&gBHPNvFL})qzF(%Pvs#7lu42Svs zpEOret!!=X+3?>;P3rAg)+Q;+Ly7FCLG4FK7!*i|2KHO|oG?dy;T!ONHiEnM^_w^2 zBEv0{r@r|5>vC&zSOcQ+QRl82)#YurKIRYTnyw*LBjRdp9>hA8bAC~W>=0K7RKos@ zb&({b`Wc6I4`Oq63-D1dkvP|cWI{JlQgWCc02*z_G`{K_M|n{i*~dg zJ_XV>cc!{(f`Lb%Jw|l4?e{2XR>I|Te1%(4WGlNzAMEX^*{tgQ#0dOC72IJd)cWhC*{+LnzBNQG?fIKy8iwU@_*8`=KTpCloW16FTQMfv&ZZ zr^dR@%qG@&6H6ne-BZ_=*#N3e1pQ`}Ef+M8BqZkT!Oi$*MDo>yNM7!q+w_LTW5$A5 zcIt_;xlNf3iuy|h-6)MsWA()~YKUH(i{MI~pkczyA0zd>_5J;9Qea=J?{&(^KalA) zJEyhl>0(LGk*tk%GL6dU|>7>Vd`!_KzMpaodu+YwOfKie!h7Q`}ExO<)CQY+6k zv;L#%$sccN!?~FEZ}OnP;C#6|^$l>2yU#XrA$*@dFQ{)|RWsYx3sZ7nP@{!sj__)l9@6+i6b zsOOuwC$8MxX>M!D?c+f!4qLv4V@$|t%m2m(`}X^wa~34|a45biN-mFzu?TcjHT)RI zaUIsx-rp$LZD z-uJDl-tmI0TqPCjgkRtcgyNHMR0E%>>4afb^uUn(33*%u8fZlM~LM$nBxkMo^6&i(n_2eaY;2c;y$y{YdGpxQtm+Q zN{sGAq#7|JTTyg;2mzmPnqxx)5^r(EA^%EEjOFuJ@w5QkOtSW=sDUG`DLqvt1Xk6l zNLwjS~Y=sKuMEE4g_BxMJr?Nujh?` z=iwo)fh^`*g#in;cPdZr7g=3!VPy^Zi`Oe{H=zZrY0wUJZp*((FimQoDBBuZE1{1 zxd8Zb-T>q;>$D-N*c!-efa~>!NOLlez+9*Twl*fu*LvyMgTdZ9NLCZ&yX+jz4V(cg z7d0G&3ZK=iNKd@_VcoN67>oHma&+LD^S9NNZvvenuE74=>Udmbn-zLw$0nq+fm4kq z{vTgS&-|>~VonIOz886A-!sY2EHefXhHzUU;imlz{{&{7lCz8ZjToJO3F?4C?U*ctqU2l)sqxWHXVItPKm5J(R#RS4nFfvAx=4Qq5D3HliPKRoS zaDk_{R8rhEB8UPZx82scCC!S)T9H~N5|WT?*c2IyMk`f6UV$neSQ4N&L__-mw-nv{ zOALem$$w<%P_tB{$BTKH!3|fzh0=tod830&$a&H=SvgIZ{#g245XnnsJu%y#!}C`H z7e>>PC-_Mtjtqld&r?Zs80CRljAC#otkV$lQrQ9YJ2yeD{`}PgefmH@;%*F3jV)ki zxtR<{aKChM=BsEe-#PzX8N5T|20fy1L$BNI0)vMwXS1?WyX;$uSr_TKdH$wZU~-NM zv{-hr5`#^+$gb4L%pTbO=xIKI$q=r7(i6%sL~6c&*{5Y!jg8rQLQ0OsC(XaKStikildJR%L>Cwl-4El_Y)z>6#yG$gH)nBW-^m^FU ztcdeZ9WBjlxK<~-v$9Y~HW%=y-8W$2zzT%esFd*CwNZcr=g*3!eRYabZNy2Fy7twn z7Bd?rVe+kBA^TClWEFpo_Bwfu6+H*?KgWt^Bwz?$Wby*?15DQ4^OXtc#y>}2fRuZnhEpR5(r(tq z@~Mrz6!|tjf!-cWv0kevJhC$OR0jq?@)wXkG80%+QB($B5(p>0IEsKzQPk~L<0h7? z5;GoihnTkmhae(7iboaL+PCmg4}MUA<=&Dr78>v0^s_kwK>Nw(6E)DVi{|@KwU^_O zGtxx%^1!ONCyG7_)T~VNYHGJdS4CTZ)JV|x^fWTRLJ)P)Nh70`5=r#SB7A(vr=?14 zpHlD3nptfS@#)wYfg(_Jd&IPWwc&~U?D(V+#Ql<1rZzh|KJ2M%Q4m|06b%kdSdy}d z!N>8TyHSrm#9+%+fZxby((W4{4i5Qtg7uy%EHCdI^#fXlH1k;Aus19I^l(~jba;G7 ztx+2}RD*!iMpa`PPLLUC9EF}go-;-9YXobz48a+Ga)}f{tqXvh(x)Gw%nud+Q)61cWjwzq&|i!3J9YTwr2CjSH!vc~*71eW;7t8t_CeMKF_A%8N|c zfQh9XW(IRVO@#2HId|2NrV)$`0gUQB#T64w`oJc4;`0|`S{HbukV0id;bt6NiD0{x zOFx#3!AMWP5oC}^;SCp=&`Rh(F|+6sUnB;N0fnIwm!Uj1*9(HWmoa9D&6mro@kF8z z1xa`S+q!RP1&HkGFmSl!GRiz+A`wfw(u%0sdK10ai#pM-p)r=juZ%=s;CwivqpGc{ zY^+CoW{Io%v`d`FkM#(}c}hxZ%JaAPAgN1<+=Pr&T2tb1)_tOx1KxL9q`$a6vSsN{nE8lIJBktN1UD9t=G zbh>TVnv|5p1c(Pfa>XMZg7Tazz5n{Nw)RTJL}1g{-*MH8Uk=lVdiXjeWQNZ$%KU<9LzeW;hXqqqo4U4 zWqKHdZ{nNU%ti_`eC}Ei^<-@+WFxdZH}i-gCwZ_hK`zC?z=^Vb9^E!lD636{+%j&y z7>YhW!e=Ew|OE9Il;q$nA%YFC{w)M_h zNcfS^OvaxgV&1Sedjv?|ZIMBht3bTb%`>!y_#*~ES7G$w*;#QFG=eB>$CWZ2E8oH0 zcqHa{(cc~ae*kSuEldtfE6E7R6Klq6{mnnpRzao2);yR{J{(-U_1mpwMbUXt2PzP4 z+SRL|Qn2V)S;MXJ>PjXoW*f^-Iugs^qLNu_(@L;Shm{Gn#tYLdug6g2ojkiv;TaLl zvWKh-wI+5U8jHfFGgvi`OajOtX=Degm~NnXHh8yS7^lQo1?y51VG_s3ZwyIKYNgbt z=#cn~mNdJ^$D8}e1^l1MTl=44+E>@|fA5wz>ti_Ap6u zw5Fx2TM&IV3nXeYoh!MYbB9(GK8kvNaZB(}AodJ+TsVh_rI#V7Dr6D)m)5rQZ3(D8 ztQnSTHf1cD0IH{{Jp_`Oq*9ZLJslEhLF7&BIG;7~1Qn2^foVyl&*or zKYWxUYZH0@U&9G6>Z#Y|MzF;1z&`QIZcqOQjmY>Meh09AIfBhBB=F2JBplYW#k#!XA&gr)Bi&`)JV$#U|HnW$S0J8?>jUai< z=qKCIJAp|fbA$dgEa99RVlKbAuhSrW*yyxA;WQMD+#LcQV>E$<4ek}1f6FpQmk%Rt zqi7`9r$nlgerlaL{VI-zZkpo}nYadP?%L}^;bf!*Uk#4}bK4w5Ud}G$HO)L82o7!T zyW3co@B=ftKC}WP3`V?zaCm5%{DY-IbERTq_&Wh)O(n1;oMrfNpPEo%T{lk8cMsL| zxr_C@iQa#F&<*ZDAA*hoQMe3=;Uy$t{lI+WhJ;Lh0$Y--`Lzf70F@x&24{KKFA3LF z!XIzilpg_t;_`Ta%fF3U3h>)SBCu!B8z9CcCRF;cF}K3G_4x3CKBPD=WULVDk8B@7 zB*UD5^e!KIX8=-)FGLJE0BFwe=P29^m32w1_zKRtt7|^I{3v$rqU{Dq@JIRu)->!vtKryOZH%V9{X|OpLDpxFM9f%ZrnkVkk!_*{ z2a>9T__2Xd2GmO!&tb46bW$5`wzb>8p$511W6IcE(E3lgYN<{g5iz~UJ&2K70a(RLDHD>L%SK&Le&|soeXJ>#-k2)*0eInK31`6g=vHHp`|RmBCsVx8*st3HM0K0ra@YnGatCL!p4}~ z7dU!UFQw%40{Md`?$?lnId+={)XADuXhzUXhuK{6)EKt-g4-7*8?$5j)#8yGLkS)t ztz?~H3O?6}X`J7d8fo&r$O;(7QmBiaJ_Vu->vdtbo)y#fd^Ip-Wb!SLNu~)iQZHID z5qtN?Hg~RkaRVod35yCj1w5SawI6bHFq*dBp5#(Oc7+rVkd6R0R|% z_BziV4otaK6(FEcBJKUhQNxs5hXM#3{b%%J7_D>N*eAS z7On*Ok#@H1ULV>MfJCG5Wb9?`OgO{Tzea96Nk0*e8V+E7D`!{YhuaG4H&L8}{*u-~ZQ?tZy|gbZtz{=AA4=QIAfjv+m$9&nAt!mlWt z3lg51+l?ndSO%}nK0YKXdukd_I({Xsf(X_FZm|;C7B&`*96)al#e$2>-CZ=|?!(nn z$O_)&KoAxMj3KVgy8K0B7wY;&NNtRR-_&ZKodt?oh=(^ZYcm5nr9Xlz|3hFny`SX@Q$va{R7SbJa;F8WcJQcw3fCt6 zihuv)_eI8sQB#9TjK-5a9K*Z&ILfQ3G~vGU&i3tZbD?7tUbX`dij-f~T^DtIV_4_2^ z4%^5Xs5ToV4EtU$19HDaGkT{onDC>9RU>EmUWTM$%Tvu5!pwFEeZ1O?@c(bxfh)&P z{%s>?hAjylqp+?sH?tt|HsxU112H3EstqH7g8gh<5W z{~a-g3vzlP^8S1DG_vqu0#+u?GLdNkY&oQEOhgn1l-G0XhH)29k|Tx(3vX;@&P0si z8%_wcde~KWuM$4ZAdk=bh#s~_E|$-_eX8PVJjs>pJ~JF0N&+ac0cS-H<_%m{0YHF> z*jx3UBV*l}Aw|7yj-h~8&K3}Ehr5!Fi$@`_0TtMwcfYS}U_utMu0q3NC6ajmr1&Fy z5QWB+ou4D_T5)HqF11@H!;fqA!d@BqdHMtEx8j-OZDc zU3fWxDlU<}+oX|N@z3fnBlq!7$0D0;WXebjo8_R-g{>I>!}zkY`ayMw7|6il5f#O< zSm3pXM~X+@ypI4`O6Q6e^`}2^VB3C`cUCs5RtMPK&I8YzUkDYAK| z4W+){zKbzBM;ClPp0RrZ&v#9j-Kv*zj`37(^hx*pDf&uVa9fwr0`ny`54E4+NOqg= zhc%6#1y*%Ec;ME**AQa%9Ozror<0O(ILndo%RZ&JrV>DuF<3cz7eEL~_ZRz$QyWB{ zytt+xqIu(r;IICD6g%|i?P{#iM!yVZX*@m~MAr_m0-kJ`;a%Mr96Hcv?k3NB4Wz9d zA3oTpLF*Z8kV&CGEcA3Ia9LjWi$1JIjG8krjPkN2<2eBSEEXp%jGC@@SvG@_N_=;vcH*?={LP?l|EJ?=6AQo zI?aU?i6I);>7!B0dkq7zZT$5iIb#kgSPAWn=2*-oS`Yp)HD2f?dl9^s3B*ussQ`HP z$S0k`YCP~GMWJbFc+k+a$MK#^SB+dBf&X;kHE{Lz0bqq zq3}eFDP^dJV>K8A{wZ#NZQ_O5GOMn%1b0uYKn;-N#`j4#&8HJfRnl5(A;zz@sp$CEFDxSL@=Ff zu%$r9(vcKRz=p4fZ_89*qK%WI9#vvf{XSTapWSDRPmX4x5&&29|57Uwr0M*qFkQ>j z?;P>sD5Xd^vF@KCsRl1HBBg63mJuj}QUbO(8vA{^KMcEp)jeumqmXg=YDis}GyyE_Z@mm3!9}rQ& zh4VJ1wspid(r8b>%-&-g5pIRM3XqzW0`7k%MZ&VgzIJQMt*%}76b{0RmOeRK}aV*e?ySXKR9 ztf$|Nc!CG)sV;LH?gb-tsVdoL-wM_|2&e7j`l|vvRhJ*)R`)C#JL0CbtGe#PD}Jvb zHf3YcIg3gKnB@e_2o8kU1{EtSCrY|!zwq6ZAw;%y6;JGhBVX$YZ0j2JG{0_2t%fBQ zH(Tk|oQfJ^5J?H6@lC9+Sg`1vkz^@@3wbl1c8%hBUh69AQjG3|mDYa~cneZ6%>G9- z5DQdwx#X}nHEu_g|C@B5Y(VN9>;*Y_zw-D|`8Rn7`VbR8fBcwj7G7AoUyQ86V?BFg z|9068NtZ~vI&tVlvKZX=msLrrKQ`d4TJH2uDOZzU!rVNEHo$Hmx$!I|Vxrw=`Tzt- z9_%;9v2N{(phrJ}^_ROcg(}(AI5u?N5sWY_(i-u5Ca%1l{a#wo_S>=)8U?w?IR);; zAgQ;ZpZIqSQbzgfl{aNCv8Eq6gDS$hcz_N^hJQs+@l@`sKZX*Z<^Cya!J(ftt0BsJ z-s%0fa%soiqyTLDU1@dsuA7P;;eqws`w{qy7MVQ|MU9h3jOb;iNcBf; z%fgdKR^UA-Qh!V%RXy*p|GKvm^1*`D4V~3>m{n4JqTMg2l z^(%tayHMMN-O8gD9M=M(kIW{CBkvEFVE8&>l#@wwv|jo$dt`H85o^RS!t8&ZCYQtY z#a1W*flutQZ#0y6x&9b_jeO0?@ET<#Enywzag%AvT2j>dV=2|b(`8?HbE5tz=!won z1L4UfAh8xv+;@VTQb87v5+(-Lp-*3T{HQdG8#ED!#YQK*sb7{y%&gr?v-Y2`&V1VZ zy;i^ylU()3tUtkGtEe$gOmK|-21F$CXd+&QcN!f39zsP_WBpOoPtDm>b|zLkYeE6! z3(haczt2)3@7{jLa041dO}NF>jxFy4#kK?;IE(*!*fi6hrN_X5rnL%gF-RRA(X;hO zk!d|=6OIq`CEP@~Hij%ZPz>ujp}1rdE58fBIXc{}7;*h8*@jJJ#XzFfVq-DSUYR}! zLo8Y}k+2^>X8K932{x8Ik+jG#GcuM)N(5!-?;i^kN53A%LQ@?ioU6k6Dpyj)0F2Oj z1Tx}^q%`BPFbhb(#9Fy8!5Upub=5?dAM5>6%J{f+{{OG4c zz6(Bd2Fdv_AL39$t|~%_;sHPi)1x^z5fK5axaL) z9p!%~S6#ga(BZ+oNSs(cyVXAh25>kcu{KSr26RWD$o){MKWbWzJ^6I1jZ-=h=4B5P ziJPf?^kw6hV)}OB)@Q+*#)&ZDE&WsaKMSg1V;1Ct*PGfWPeoKpKZk;B4&NX|jO~`% zJqh)7cZm4soqo>I_2rsM2#Y~P%wdvdpGjK2giT)i=RnaJ)TPKGV(wi<=WfSUqfE8i z@UgfhGUT8?ZtI$K?tz8%@bp?>+^rPSE}O>w7Cx#d?6iS$K_FzQNpD)|)ooql?(>R1 zO#XKb+q&FMzx;yOqfXPytYb=}N_EOnCkfU$94E}zUxWamt&5L4riwM{*SNTiPE9X! z4{dhLwT2_vx~cl#Q)q+keCiiNzC^+e=l-hj_*1u&HYR5Pg1+Wn zgr}TSG-dTr3t9y5Fk&*{-7S!kH9R?@h9Dv`QjN;f0{_|$nOP#OQ4qw!+K2U9T;zsk zkk8;0UiLgZ>I}aI{xm;RqIaudnzc9@VipuA_h6Hp2xZ`zFWu!BBz>O2IMsPrk%Utz zKCg0D%Pu&|xgAIvm{M4zm!S0++YqS#ZeyTcWre9rTJB#ejuCf)Ke&2mqS@2vrMyKa z!n%-pzQ~J3(oyw6)G!~r*@l+J>{-K!KrsY8n^jyaYJ}9_%j)(J2QT3wqP}K0~9GbqaIBJH&?PcFT9wYEf*a1y#XK$NLniTn31@P2<6SKQD?uf%qm0reb9mNng4YprGT=x$E*4tRHs%H zcaD3?`t=a=zS4qKY~ z+cHWN^<^8KJr^x~VdPK{TsR3Y^IBEDBl>Bd(VEt}_(Z7{@)$7k4N7 zZJJl7^ncyg-{KZE&L{%UzJo*=hw)UO1wFv-c!)4O%B_}w zU9G8fK$2Lwa%q=Eb!fOne%*_c&V?&ILI&23p(Rjs?w%PTFjj+2Y{8X8hM%5~e=b>EjMMDF8%Quu%DijwKUtG8+VU9r!6u%U-6wHSM$sOdm1+ED0EHoIlc%Pgl zeSxbFy~9m^DWLZ#J8dK%=!y@Drs_sS$xD{9^l1r1KK0X<(e&G8X6qM!bo^^h>h6ia~VXDJz`o8w|nl z+mE;)jb|L=b)e+(lK8iyh8qCO9->;9av*>O_063oDmlFVILA~->aBi`%{{{(d|Wj# z>$U`Sbv`7Vur@|i+;zVfXx8D`&`EkbGRT>{;deM{EKnMo@tlVJ27yZGJj<~q*_f0) z;w2;p^MDqYGf*GOg8uqm$96*Nt3h_hy6b9_#znu?WP7PL2Qz(1%g<`S*)VX##!n_AYf%!v-bRd)BnSh zCmPSpnRDLr-p+eXpaIT8^E8k|Kx-Cgg^Px}jfW>|EO$?y@sk9K%Ykmy)`XI{lNyVw zY|w*jp4OC-_(Rm|23LM+b8yl+1otiKmf5z)F5!mDjo@fD`+wC*C1wXs@gfSxwF2=b zSh(^~(_f#ostTQm;?}6oC7cs?4IRddCHQ{%)xWdi?6-NUzYO=d=e6bt+wxqhH39#j z%LnyZw;pn5V18UB_?m~Zz3}v*PY*D(=9pBQOu4+ zz*P7R-9zi~r3mHKyvvc8GG9?uPz~FD{p;=_@A?HrfI&vf_3u#h`m|w02p_)wb>O6# zknIi6K_l-l_5yQw;(G>Ann%TvH0xFx;^jeZIR&i+?-poyNCm1$}OvzX700+QW2BlRuykc_*!6*hg&=6e^bAEF z1P4b*?t0D6ZI-g+*Fuo2RWg%Z2_s-lpK;Ad=}07n+?krGOyZ8HSxWTAz@4kIj9FC_ zyrX2Tq*tnr#BE?cEBhbo+@m71l~%>?C7_?e5};%T##3N&s!e-Lh@KC1pf8r3cGC0E zyWsvka9xfh)0(ANP2XM>erFrhIec{-4oSQ%&sv4b!ieL<*sDypUZhMCZ}ivnX-^UO zky^yx=$F#x7QuEdEx$4FtY4d9SFkK1ei@u3YGuK_!W;e1`sLb5uou1Fmm2HPBS`I{ z^06_3TxtBD!V4H}Tp)f!fy{6037uX@N0Q8kTUJ1lgd9ZMu&nrl>->BMHA&EUNa@0N zU7pu!UzXo7FNC_@l~>!7)PA9VTN_5KdhM|Kuy5NyW(amR^R>gsmnKD4&R&IU1-Izp zi-k`k+R;@tV!U>E(3eHLAWtps!9{Q?j<@kg$_8~SCS92OVxju>#`P}K``TgQ2Uxv) zZ)#EMwZmfOhwp^8flrR@HQGgzKHb*;w?By+@?Sf`XYx<=i)tPiJ5B}f2pKD*0n0#o zyb$q~p_2h);j}F`>R=ICejG4Vyy1K4r4?5n;v`5uP=9GnR{D6mpsxmUTiCElWD0l(BXVMH$ibyF6jzgpVa!}@ThpS-bp zAi$0fsZ8EG%lVf}jLu?-xMkAh3Ut7^rpkzwoJL9poi2ke1YkBI3}J7R0k9klp`LPQ zzPl;HoWp5;MQ`Hhhiv9$7e|e$qaP9q4*^X=y@@G(B5x1Er5l_v*Q!^?zrQ>(PX;mr zXZc(I2X~aLy1HLAppkVk0c_dh1eI!&U3is?qjAqM#1y@;%qJ z34+Erd&OErncUThZ-a(bz86(Hy4$C=GA2SuH161~=@cs?Gv5uZ4dnSL%=us|W-^VT1tPRM zx6hV0rGU7~fetr}LWCi+qUZZv>&N~M?v<~F+$L5i3EQJ!iQ|wNX)V_WU~@4i^k5pm zXpd0-lqJf{lBg2_nuLIFs}44lfFz6V%wkW-W%yV&SlWK0|MgJRLEr}Rba1hvqaO~XNk4_G5lxjtaVCe`dkJ;Xu zeWkV!%z6TvrCi(B^{#3Kg9V|8Zt4kbYeUI0(3-Fv{M_yAByG~l^Zl>3#o;e!evMuw zPq#VU))}F<=%^D#hz=hLZmCn|a|CEl%-G^9IE+A39?@Ngq5fOO?11a+aM8@!wD-Iu;CF}!zF6@u2TXy)+AW!`G zw<4M^Tsg(>@x%P?Hu1PEUc-^F%OnlJ*SMdA;E7c=>a7ObGtC<+o{%Z~Y0$GmKRAVF z^RL9=xho2J&5!iMhvvxm#KsYGBIEEO?kUhj%T?3l@zOUU)pr`^2xcMwAa7wPDKbgQ z51$g!8yu+vCKjv~gAr|qCWWVcTlih)p>+scQ zh*wQYSvDX#G4iJyUZWT{;x#-8h|kj)hGV#G8Ycx#Iu5@~PRLOC&HB{(_03pf9EA5? z{ndM}kMKdAfB}U)UY$Ad^nmy1(W1kL&Yt=bhPiJI7BIAHg>B|YC;p1^naYE_c|%5y zj06_)s*t*K5*j+sllq|GzFH)**;j`ay+#5j8oc;OU(s!3I-CGqulot>ye<6|~l|GK|(!FZfyeA`>D z4?W~3(*+)SQ32C;1e~tJhpq^99H{OY0%E8|X1f zW^JmbABLh7K(^%q%;GdtG`;LNXg0W-yNP;>4!R7jK;>YyON^sEJuu>%AhqO<`ckQH zSqQd^i$^b}z~CI%f>W6A=1Zw)CwLhF%S6|RuJTs2t;ONZu@3c>LrEQe&)(Et_e2wq zInET&*HL70;@Zs3TIzY1>vGTrA88$8l>@Af4W}h{ic~~7UjpNHnMFks({d}dHsvxP znrs_x;jdAo1LVZT!V(RkpjJhfV(}8JKHAsy3!QuSVNJcM`r)|SJrQS>-bDSd(H)f$L_^~7MC-6AA_mY}k;62b1j+?` zTPR=vx2*;pV%+$vOS2e|HC(3A1V-F)39lg~2i*>Y)?rEg;dEWM;#w+VL519rG_`eD zh#CQ^5|A%Rf@k=K_WS9sh>fq01($($W?xZkVr#6nFEYt4*>=>&o`t7!LS@ygDEJ|3 zq>?Nn7b*BN&K1a;19L=098z}MWdhU$)KpaPN9MmLUx%g)xeuzHCD&n(uMc2=5!8FI zapxn`_$DW3X9Pqn!hWtgO>n;Y^Zir&W6mN7!!Q;Ht9UAofU+P`S$$bcoE@rWQ+h&E z{4Nv0QH%~PZf2g-3!4g0{6l_e9s>3W7^Kh4PvHoci!qj(xU>T}d6xb52fna?;skmz z%q_KjDG)1{CIT-nV6z>FE||n!2xjmjfp{9Y8BTJgfrUNdB=C($2C2WYW37PlqQJu@ zZ#$S3_J&aQ&Wu=JUzNNYs3KOq5PCg?(ix_Ya)FVXSc4{Beks1__`uVlBHeJk{1TPH zLtPyz`pC-Zf9uu$4x|CU{1T672$Wxr@`R))OgQlJOUS+X=gnax2ti%c^m(yzkk^lshW9*EwldikXSnN&n17FE66Ox$}pD^#i{(;D0pf5+K9Fp;6^ z)E*vqZD4{Hm@hXgFA;xam0RuTk%2kyq|35#^6M^uLdYh9A6mh;N*EIy~=Pyco0Tf zX{C(w%7JYT*p3u>V$FwDrUFNA49UHwN-sA@id_j5^V=a>Pv?(AUC1s4I*pt)v3t#D zr3Wo67pJ80)-Ei)W5T{o%A5CN{b?N3nk@K8O_QZZ+*Gh#&y2@ z=`^sl?MC};ZJbA`4}js@lL3%u zKu5AH+C>fpjE+AdMh9VpUb9oDm!>AVhR}r61c>-Y*M05CJbBWZ*CWoaJLs#CII|OB z*Aukf%TaST;$#e?q?-rFNA) zv*9|eP<+&vd_P3(E5Ni!*5fEOZHl(-X#Wf) zTNMend-`u6@dD8?*ZX1h)e$9>b6$G#dq8k5!iiH1;;w^DT1oHIFi9h%Hr3p8Rz56Nqd-gY#r%U!@+7-(#Mj(3=ZUsc z36xdtOmZdB<|geZzr0I3Sjh&Q2eFY#_rMfC66OFhPMyTaMAUCpV;j7{bNaZ;Must20QHvs5`kSj>##2JNHaVqF;QP7^(piCjS0H zun%g7LMVVDr4niUU=uAi@r5Gd4~TEpWaA@<10*Z86Ng6V2$P`+mpXV z7A277!dkw$DZco_n!-i!i<5b#N@YZpHM*W$mJ`tF%}t-ebQkM1Z$x0Feq?0~-BmcI zBoSI0e?)X*%E|SpUi%zK5^0`6I&~wAQi_Ath?F zTlr@SKEXRx9$MDaJZl;`rhwl~*`TL#gATemTd9@+k=ufdsDL+79Ysj~Eo#WrCG>O_ zFG>Ium8QlGiIl@N2>3us-EQ zG#h#oAsCbCF;=lwGY#A14$_B-!D$FF=?r)+fib9L1SclW(7~ozzAx8SUr`ophF12~ zL3c2HQ}zh86A?Q9r-#zzPu>WFVQ7ITId?%Y$T>m;e^uOpZ z9E4*6=+{YSdNf$lh4QN%fA4wJmRwX$4y%H8>!!lzU=%p=ksILF|1Rf?OiPi;S;VIc z_YO8m>xKJQtW8$s8<4!voVUYnppQ8(M+h09ykJ}o2<*qdeZA(&qSVwx^GFO4<_Lx- zam{uFr5<$i*~yH@JJ@?wA_;gid$*mlbBknTevXVQOc_8lONqH?4^9tKzz8>Xz=igEgwwA8eYV zvE^TlMN<+Z!qYj7nhpAx&%)lhBTkSM&vIe)De+Eo(-qa9eFZ$%7~dg~2#4=b+-DE6 zcw|*)3T~M+SR_`CbiyrTwZHmc$egGGfzUUDH077qhkCA=`#5{WK)l%iPdVOObEO!h z;D&5gZ6D_1qIgiYcbrO2-2c^w5A!JeQ>v{ay8vr|KjR{ehGBOSxAZ2N5fhSfGh3y2z zP3HEt;nZUo%?CUZO3D=iK>7!afRnj3PJRGHMUg2Go}@awXPWk2@x7+*4ZizS+mTej zXxc~daPY}iTy_>YCYtv8R)0Kr^uwpx+=xrSO_d8ig?sq$2(DzZ-^|$hZc&?K>_`CD z!j;$G4;}pw*T`xmqBoHiLF(zK+r4j&_*;D$|KU?y19t#&+V`lZv#6~I=_Bra{6FyD zolrVg!jZhs_vp?OTTwu097MJ8=)0w^x!n7L%WC~r@?5q{l?uSJf?UGE~g$O(>wcJ|As z^kHkE&1@R|_40@Mj>@P&#vjWLag@yhWB?L38D%&($umDMUOlC<=GW2-Ti<5 zP^6FdUlI15ct3=zP8GKX zFGA1YCVWJ~eSFJv@rSZO(sU>J*Pz$EouLI8es(X7YCjcW?<&lAy1pZ z&s>42wu7n$)!%@KL!?_ARoUA^-rG8J;zgJ^BL2< zUw!;m=5q*DIAXfS@Z6TVQ#B|sGHv*y4%2AbAD=-yi3@=^7?7sC(}LlZeJHho4nMz3 zgzDr6CDwuGF5&7xHM#v);$Qv_Y=_DZV0}qy zt|`2Q&=02}lbVzFHVgub5_}UNQl{D8)_9Uw>cGbSf#fVmdsl;~(8z4Znw{%TuuW02dQucfZVjRwJ@&Hij;A;%*-TxIj4x}^$ zqIxf1+N%*)1RMgCf?2#1E8@>?p)E7uLgfd)ksNq0rwH$gmaTx>@$qXAwIxXJ=W!mt zW}yu4XqKQNyUDUy^O`0;w!w))0ZseGCz0&^WO--1c}HdVSvYcSX#T_6;FY~~ewp3FiBr_~Lc`S!1UJTU_OIOPoJ&lwDI9*gk<+n<}inty4WXX-q zrQkh$Ms_O?l?dbNze#4a4%f$u3Y#Z^<7wY(}XR*^(SZf>Z2&H<89hY z|Jo|&d157DRiD`1v{#so)39!=%quDsHH@LCg6RV7RC*11~?9=Q)4<0hk z+%OO9Ck;#DNp3e1;KZCAt#k2K)0lbrz&_EhHbg60*1fyV>S@r# zJ3ov!=I`0X|5Hi0|ETt>lD)fTDVgQrfvxXCR0cDi2oF33p)}`x$lBjPua)-gI{UA! zzNG~NPl-TXMaqzflq@U9f>HN!-2&Zr4|o_>>vJIoxZi=Yk9@e}TN!;XB9DmO{YT#A zDYy?d*fjg)M@~ehmF(LMWhOhpQ@w-s@4gZQNvYp}U0bxQqUXzX@H3 z15bN^-@hj~868(tD&67g;Ia8@<)PX>R4`Cbn?1R3-T9%lep969rw)EIcpbqA}`3GmlX?z?h*=#4((q?h*Z72n)A4UT^+>4qY|Ri+KY;^kbAB`U3u6OB$hV$V>) z)WD7yErSDZD00=trnDhG^{^D=#u{kgPYF@l68VkJS0Mn_o1!scdVwWOd{IwWF{ z%aaP2MM=VeoeRLqyH~R#gRaC#jbJ-+ASqBh%13$gdx6lXhyeabJ1@{k^cW$p{{I19^OPfv=tie;Dq4ZzsII-;7fQZ!DV8z`CmhB2-jRL zEM9&Q(S0|D2-(%#6`_Q`F{I66hGO6=bQRX8sML7WF&mLj*m zDX33m#i+{p?fyO5mXiBdD1ZTu$+J{nUgd=WN<{_YfA_vnEDm&30Y2iXn%nRBidXh` zL}8uGPQWtC108b?36E^*>8C)ID%utgX2s&n^gYrewm6f!M=T`YgY%6lKm^-kN0iY0 zh4S-DjyMr+MN%Q+dz}I^{Y&f|FEewk;(z=^heYLr@|EA|57al2IfiKmGuxAJzBwJ4 zo%{C0-(#@+A}hTsn^m6UURPHo?cRNR;IQIR1*rdx5Xj2dw}-dH6qM}vKZ^TzpIx2Y z^;HB3>`fC!(Z1d2_;7-IlBKlcbgJfeH7g=8)nb0|2J(Xu@xi%f5uYX|3L>G1ts;Z= z?GDBrd?XZvqckmdj`*ZHt;=wZ>HBu81)t2k;_F+~#YRnI?`~ddkA$A{7r~vjcXzx( z_JtO8kxN19rMUWo@N<6F=`#223P#eJvvEZSoMt>to?V#ipVlR@CHr>G0r0IZiTQhX z`Ci1nmF#e1qmKLEA1n!DB>0WvNRs6EMg9nrOy9Tr?3OENgIy6#AiJ*0+_xJ_WUl}o zM{}KSVGk<`CQ1HWC<%AJ z8<>*6YbW;}MSL3;7!y6ab|(J?ft@@1&qT+gyLO8IvhnWNw z1#?g-3*RxVih3Q_R7`gxCHL5M46^oPm$BQmdnc+Q+1Gdw$WKV&{3yvbJW3E;pZ`wc$qWH7)5k(%LxHD%Qd^P?+!6#MtZsY;}`T%!i z5+-+^quJo>mFQo!dl#|V4H)2E&eW0JI?K}cT?2uW)-mky{-Vnt!8AK9*4>Y^g=V~{ z2}HE2RD~>kj|BYtc0zVAG#_)@sG8=rJ-fs@MnI=3uXpdRE0W`b>qFfGtl{n1vrC&I zYOpc;9?AJgw-h>(f3XsXTL4`eg)=th@7YbC*-<(ZxIEj#&sb$M-Q#fwEa>4OY99G$ z&u;Fs|8so^0bUbukC1bK_`A@gRRn{b33QL|5pCelB>$|^g@HJ^|5pfJ>%4ju>lS~A zujPqgKC5*U2jEFIJ{mFi?v9+sfo3iuh6!)3YVI_?6=3a9=wN2CckgamGheu`8M!}b zHjQWdN#LFU4LN0!&kv2P|EUfhV2{iyJ3nB9^?(roune9>vs6~-&C^o)lE}o(?%9_97rIF53mlzNkKu!IKk)G1jSChKpHP()Vv*0m@UD45N?>Je1%u;j-dY zlL2@YSh*|sZ|%KEV}u7L1#rC8(u#Nxqr<9HjI7{Q9qPz>9LJ^M3j&)B{Ng6dYnro$ zVbHt0XO|GB$n&cRfeMhWmO$z@_w1rPo28s9i!QsNDV^e`iqde;fUjYaKpVk?Rkt(9 z<|UR}#%LIP7~ZwmsH##?rjK0Z3ryz@jy|02DMoH0O}I_Y)}{>s@o!2EO@OG5oHI zBK#eul{Ou5Kzn!DwpPJjTrynM{v3C;bl6ICO7b|qiL0?NFu%Xlp38F)s=qRx$bc10f8{6^@8i3|%n z7^aAXfTG>IWE&W(8u0cM?b%hZTAnH1#IUc|!jlGpu&VQDvjdV7A1xY-zv8pMe6v3i znlP*W9gHj#2{}(ca(VZz=Q2s4w<004%I)2?YYiTD?XW7Pw%_d6`Yzx3$N)q69QeNq z!Wqc*3Rr!}oOlJJu6DsY0WumNQ}MhIdLtyt*!I;<)AGv9!bvF;EAWYQ-w2XXwNQ$F z9uR2hy@`ba9lF?G*XKr+I)(VUK5>={8tQ;$AqlM|eO{-5|6BgWZKbZAJA!G9_T;j7)0j-or~B0=)MX{< zi=|_hU5HVZEgiQx6fj6ynrYkpt*l`AYjeIMA z(hvNr0wqs_$HKA^ay?SiX6c^=KN&c(!z!J`osXw4{m*azO~5jKunYy91o~As9GB*w ze8AO!cL8ot#!_$KF@?1pYk`T54uZ8J!#OYpUnvigUR4Q`?yen51^^0ab3y4M$Van z|MCF%0!iYo3(y(>x%5?D6tctSEE?u%!By)pt{lq%Dx&;682)NZDFEWRVHnV1@;ARN zQeJzzf}Kjs%No`wO(h`g>u8@CH<7JJOipe1|ib%M#FH zrTApfy1Dp|AFYSz0B)eE-7dl6Y(;F51{*OwQdET1RAj|;V?-wM5XuT=#fm#sIwTBp zF=EHSsOI9qvo2Fpfa%13+|Jy@wh1?i2+FiTg21I;q&xjj)xE*=clQX?e-O|feol#Y1 z9N?tKubX2|1i@$7e}sYPr=e?S7T|lzy-ro#xt&^JLrJFR8|@;h zC?+Rm-_&;I?cA>_RPg}nFNAONSg# zWbE9oKPN>(N?(tdp0nMD)Z+}I=XUk)kbQ)`iyl^=crsoNb`{;RZNIvcb`DZh8Xav0_Y#plai89TNs zmQDd~$!jh6iux}M2#fz*YFIaP86Df8x^l}3j^G7GY1jypv$~^E*@$NDp z9%XW)VAR>?X>$IU3j4r2Q2WqjK%(3N&|i}qyj7aSR}av7OiTI;J~ut;Bb#qo?j77$ zA^A~L&Z2DL?7XOT4$6WD!uP{`dhJD3pd$b!FcygMop(X%Vf zBL*9{{=96+9E0K_=(IEy0GNQc^UM*2cxjj(odG`A&%OMgz090T40_qL184`4=AfgP{V(`3%pt64^DCj;;r8y3T(qy`?6)%fCd|Xr# zb?(3>YV!TyYk_e$N?(}BMJsntuG$V4i_B(!4nT%l}dPH3~b#a5SNsHh(B;aX$MBWZv+?}y~zcD zQ`}}X9hy6dT_P9t^~sN7F#;F8D3seU4eW8@D;Rl(Uqs%%H3H3;0B%`-27@Z^^;?mY zKqW2-6edXb#h+Umwc#P34eK6^n$D3$ifceLjwgC*$;H&+fsBcphDDv4;|H zQ=kVMIGW6f@dquiNZDMQOtaizgc0cnc4%7-v5V?@0O0S$Ah0^h)TD$=cq3!i&<)y;;p&IG_QdeVxKL6Nx+%IxD@8IDX zj6~DNC9)|fUfWnN{_6+RhSws}u*!vtxj7mPH$cH+2)5_&chw1@kQKuNIH{Z;;K(LJ zAqoCyiJ9{92pdyr>G%t7feMG}Wb|3LBE7gOAe0EYpz=DuWsSnlE$A755{2nw#uTLT zyw#rb*pwHDS#o3G4T17Bz|^Vv7nqkt`o(pW*mHm=vG>kC)fwI8BM;0MXoH@@9Iql! z4);N}I*?&a{AW+p_0cYo9vARuVt!h%(j&y+a-Hpw0Q?4DJR6G<$N$z?&rcFR*Ro;? z2={=>JdX`mT|nZjs1Gwk-EfN~k~+s8WL66?Ur1vFAr=AHiOs=KT#-cSz#wXD;B2sD zM*kc?_9ehSzAU zf55J<^ju8kT;Byxrbw(-xFP2{jyNcsacauv+O1S?!hv*hA64`wEJrq3D2W(H9n}qH ztSlY9n2?w>o_O^Ra9YGBYs1FGn2r;pZ`pKgsB$q;AJa#G=6Rk1dW5fts*Rv{ER%wJ z(x8VWDxxr7I0f2XKU{*JIQfx0Z(a0m)?|yX$Pd31tr}ASERev4lCaCQUgnq+D12NR z=E9JAsTF0X>O$fvfoJs()8xRRp2o zoRf;a1yGelBO&SkW?<*LPddS58p9X+s+zt!>VwKjsY!nG+s>lKdJ47_tnuWW>-9UG zRo6u31HaE-WEgiF>+Nxdy9FI5vlDb+=kl2Ua|!p5M`L20e1_z}%WES4!j(!WdHKTG z#(I6SxUw|ov`ibEld&!jH>oUq(eF&M*%@M5USpKUYYYnpgMa;RaJFYVFqsbd;Mmh)6v+FVS%+};x2%dp<ZpDsHQ+4C4pcbF{cM z^t^G9-S*h6zNwSP$0Qs0+i`RSEyEBVk%ZW#J~ab=wEE_PHKmoYOVZ^0#(L?Y>;{1* zMJ$zio)<;6u}O0q7_b;$#`JLj-xJF@m;A~eC-|$0jiIyG)OZWl;B+MVQiR6MuP$YFemsdDnGabfBXvXtri$Yq{@+zs)qWA_09&> z2;68;G{;NA+P*}mail|nD3Rr-Wq+V2-uKtSKLopxBut=akAVC%3ibim0XMT^nWd0$^-K{>Vw=3^PF0}cUww>V(@Kjt^oiElUN zfb+U1AQSjaF!+~54Xa?J_zNyac`~OnPB}Fo2ZWgrDkXdn?tOnSXY^)j3~m$HB)CGJ zaMI5Mh@RvIB{ZWsGGP_q9MnYfm9KtU|Tb`!*n2oqVrwoy9POJH}GMal@otVH|LG;l4u3+7{ zoYM;s%h*tNCGt*7DXvts-tw_ODLuFNH2J6(kx3=t(sP+nr!&F`hig8Cu(|7kWihX; zluxTHJ?%JY`fMboZ6B@-w>vWD>2&aTA}8$pY5Y2j{Jr;I$qtty|2ME+Wa7CivhfAB z7=!?bN>kZNP2drc}wyE%TqAlk18oEaE?cuiA0VvqS zKO)zB`o(ZVH1dEgPH(RGVz@DS2L(Mv+lDUyE>~5MWwc+*U&LCBL=;HGAGl41O`3b9&w%puUhsyk&-C z#m6_^#?UDv2(2Fmv*R(;<}!7A9l#lOC+7XR+LTBYBld$Q@GxeVyhnyI3sl@1y zSzi$!vMZBHJh5JWwWZSu8Ku2`D8CFW7Ny}{Kk`PdX>>5>Tx-|ZM;%uq$R@~0vd8^y zG%9YWL(&trJoohRBuy{!u|&+u@o{f)+-{MI2=~lg0Vr&{m6>zSb4)kgV?e}jzTEj< z=vE)DtDI(i9c)=(;q1d;U^KbPX@7g_5oT{&*5B}mglzY127}AWJ1>!%~1S&@p z%yy3Cvjvy@4af9F`E@n&y!N&JMCSoRzgt%;&TM}e7tJFhZ`9QW=V0WGj?Q~#T@82S z;KTl@T^U(k7=m)3kFF{@Qk02hLOpPvcGT5OOX@)lkNDleYZ=(fWFf5ZFj^L~ICrSY zU#*HFyHP|av%DtH3Q#MtlS&yIon~`$U2QzOy%tuUMGy-64P*Y;Jp#*fCK-0UfddQ}BLztoJP(S4~u6hqMR9Pis8n`6qD zQY#(NKGV*l5U4vfu27z8SLWceb31h(wefFY+|xyt(TlTFhLAXUQiJAB89o#}#J)|8 z;S8tFQf6v{)>KHRS`l8jN{~seipe;Ns>_+l`o0L z9R=+vk+Msq=>;PQ_T@?<)0Y5Q1S{xg$w!8lOPsXbHrcr$9pj{cN~s!RCY&MVtcmdW~w0yZy9nGg@Rk?+syC` zqfQrZr7FYX(|B6Q8TI&{wMo#Rv-sn~!4OV+yeFD`iX|JS3qhsomw6jk2G})*X>8)M zL@!+$_C!_K&?78YKxwOJ?0=u<>65lt={a=lb1Jp=HQW@n^qdagU0scDw4G~i2*u?JOt39ldd?XeUx;@;lOF-#N=+oQ!Y4OrDSS^s)G|opolZF%!s##OHZrQ7@2u;jYhY5FbAqX0S=Wi1GtFLK~J>w^lz?$>)Cu6C}JC{ z3_o(!eLy8*&mo(tGW^xi)2WE9`BtJd>?$h8XXbJRFz~hOh%`;-bIx&V7zs60fJ^C% z5q>7J9zJ)p63MwV;sd@FB(5rF1RlEm3>Cn~ePwngmCERUaI=NRyVO>4gmx!4^o zT2NP~&TG%T-WFRJRe_Z1{2jTYCt|8Oq1u~suYWO2r&F-Mkb4L0Z#*8~`j zr?o7;?upS}^Nd1VE@0rq>4;;Sb9dYx#^0?|9{^U#c3iEi)vx2HL}%_PwcP)-&-UCN zJ`S%L&SPmdo=Q6=5VIh!^nkse6CcV~>iEB|x&$U2x3Ln*Ij7;5Nokh7SIGUQ&G*QR zhly$U=8IutWUNX`gX&ZH#qb0*b2dhy@=LKIwEW|F#z*Up#}=V59s40$ko%1%HnGsr zAx`4#I!Z1;WtP#&578Lv2xfjfrrIjvdR^@rezf;EBmp(KChBTI@h!(=rD4KRNkHma z?2OI>JZjp%2tROOa@@^BPsfQ!#v@_V~`0$}IxS>N_| ze$>%~lW%4Cw*N-Jfg{7q4bj_v)5v#Y-$k2jvMI2H$W8Kb4PEXrV(V%m>FqeU_??{{ z@w!@><8qSe6~;AJZH-3BDfU}n-KY-btg9*bOe^?Y11o>8LpP$e)zjFIZFI};Io8>3 zq-v`p({4^_QNWX(&gZYyR#TZL?;Y(8DEH7#ifgO6?Bk_A+;v^`X4KZ`oF2g~=mAt) zy*@48CPYvJXnd@_18=TYb74L&yK0a_Br$KL$17w>=y_XPEk4Dso)1|y-mZH=t6~lk z6*hKvB=^-;s~1R0SJgY0$7-v2QU3fTFBq;XwXhTAj1GDG5Nr`3wzdXFXm2D-G8{&2 z_3vzXD-TI~5RwH87@&P?wt&j3-eUIQ+UkNbZgQJefuc>jMhwi+F6O|rP=Pe>D7-r| z>7Q#7F7`qG2T9bXtnpAej+j@0#G(>|MPwx&QrUvpo~&4%KbXk_0&_}cmBJ{J4MHXU zyrrp*qmUaeg6S2Z6q4>_q-d>3+J_?{7BxfwiOHVLtLF>DK7agoumZpctoeP%aNr~@ zyFA&ib#Zu?`DFE>WIqaPjEy^MtF?dIcr(=6)nN+sm6kW#bF;6$ONBF}wnkt@=q6nP zm>p4kI?!C!Crs?)`TxdZF5(t?1Wpx!|90Oce{WZ3@kuY%9iii;xb(aCx^W31Vu3#z zy~aVnTC`G@a{bO7WQ56|3(4H_PWWkpq`lLEV|JJ0j+3CaKWepa;&sSZm1jJgKhbXa zl}stxjls3Hx526%Em-6T*<7R_2 zo^v_95f&a1?#<++c~;o%^uIu*NwTdg5B&uXJJDR5rQ{6mFI+kU-BZ2KIsY%Co@j*C zu)NWUONo?MvGMjbGNa!a-98%iUIU5*|90^6mcNWPj;a|LT$=IHUnaJXE}U>dSXeP? zl>8ne+x{bOW$9lg){Vwd!V{=1+7E6YT{miwOBWgcGv$Z2k1ifvuRHZ1tF9aUV)%Ko zs6i|RwR1>!K8+6P*elNS%<4mnM{`DT261pGII+f;zA0xEQBe>mW%F}J|2z2q0A~0F z_|$DJn{(TU6S2l9?RN8Z z)n_G+`&6Jj7DeyyHf!Aq!=+Aj)mKyw(Qb6x_S1*6aEau19DGm2)`g#kEMmBfWM*R+ z4MW(v>cK4+a4!2|cwP7aOL%mSoP;()!qN^Ec(dh-mMg^kF>L|9r~Qo2y%NkKz2sI} zUA0ZVQoj+W3QyEZlc=kqwPor~-#*tcGLGd#YMjJxf|6 zm!4}oHV%=>51vxjDwW|AUE}U10r8W%LovU8q;ixP?HCuf@OH!y|7{(18{%f`lp8B#LhD2}Vc?MK0eb3UUgE?nwww^`# zi2p2Th`kX4$@-pJTp5ERe+hK~4krfjyDtT=97Rs$UTGLkqFaoi*KFh8r{q*9&v2dj zzy|XghLKL=FaT*evD|};4b$_gw+73P&qsK6Y;5B94lHR2@&8!1kTq0}$t!3R{t*d= zVl+Jpa#BQVy z<|6T!_{_?jQJ4TYhKq~Sp^MCOI*7^jXfP^1R-4J# zQM2_5ReD0(afvD-QH8-d8mD3u#WQQR>T40}E9y>^Kp^5TG`|V1?a0g=CmZDLTe!$~ zfN?VX1L8?sh%ysFdg=Wu-Wtsv)tw>`@^c;FAsI@k7pRt(w0)wTgdj1=i_uBmx3d}s zq;jZ9rp5|u=KlpMvoTT?Cw`>|KE4UeuX?M`QUGN4ZufZ2R<0blfe;pASbY|^9Z28; ziU5H)%0oS5mU~;V;@f0YG>+G76(?OxU}d?Z69K~a&WdX`;_CW6gJ-{Dr>ubx`T~_g zaci6WrLcYUHcZK`nytYfUr-5V6|(~a*_K^6m0PGWDnw2dNckK2(Ov*Li~^QUjHvtv zDkqS5zfHAChjOo%o>OXBiTUJn?ZogcKO&Q=YPRV=%5RGW=ZiI4=bYl#DQz*_Fr46a zWpd`cwkVLCw<6HdE(v9@JX&M;xL-HNoxJUnHHS*i9q%IaMXcGT{+!P_4d!CFRMf<> z&=Pi$Ak5NhE8AknyBresXU*Tmum1m50xh$}nOv7bHrbwAh|_qAPt)eNMK5(xzkd{*sNV&o7%K4V#JPFN# z%W;UAnWW}!pt0TUHCqKOFVq0`Q8lKqN!ygRg39PEKa7k~Ok}lZa$E9&O26uI7V`}M zaZ5a1C^{KP+L?IH!F6FEa?b=Cv`0q2fk|)OIR{SI)!QPupLhy9QJ5T&rB=O7`q9Bg z94Tnbbv4O0B2~x}%{{4M-{&?9ZMcExL7C;A@$uYkjUr~vi?(3vsl;GoIQOLZVqW!& zdbJAno_jLx90%a^UnO$}7oW~OSzPQes(*FGS3iHv3S6Ha+dXDh|H>AuDL}sjQUi~f z?&=q>_|${J0er-{{;R{)FV6At86PY@eW~kKeC)5)F9s_<{xtWb=a|ZNPJm}hlY+PX z$B)rnms$NHOoHFjb59;Wh60edRML`DH{oGymT}d&?Ztw!9R4${Vz{CUvKQBna&l0s zkJbBwKY~6{TJTv5(9c!1?M2FvXIaTLT}kHSZ7

$NrgC4`v5!*qR~DC>`$Yg8<>7 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⋙G@c(ZJ1C+ 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 literal 0 HcmV?d00001 From 05da7ce79e8955a0ec9dee38c1b2772ce268da48 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 22 Apr 2022 10:41:18 +0200 Subject: [PATCH 082/599] add configurable fallback version for SerializedFIles --- UnityPy/config.py | 2 ++ UnityPy/files/SerializedFile.py | 10 ++++++++++ 2 files changed, 12 insertions(+) create mode 100644 UnityPy/config.py diff --git a/UnityPy/config.py b/UnityPy/config.py new file mode 100644 index 00000000..7761332e --- /dev/null +++ b/UnityPy/config.py @@ -0,0 +1,2 @@ +# used when no version is defined by the SerializedFile or its BundleFile +FALLBACK_UNITY_VERSION = "2.5.0f5" diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index c7b33e12..17b940f1 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -7,6 +7,10 @@ from ..streams import EndianBinaryReader, EndianBinaryWriter from ..helpers.TypeTreeHelper import TypeTreeNode +from .. import config +# only print the version warning once +VERSION_WARNED = False + RECURSION_LIMIT = sys.getrecursionlimit() @@ -290,6 +294,12 @@ def set_version(self, string_version): # weird case, but apparently can happen? # check "cant read Texture2D by 2020.3.13 f1 AssetBundle #77" for details string_version = self.parent.version_engine + if string_version == "0.0.0": + global VERSION_WARNED + if not VERSION_WARNED: + print(f"Warning: 0.0.0 version found, defaulting to UnityPy.config.FALLBACK_UNITY_VERSION\n{config.FALLBACK_UNITY_VERSION}") + VERSION_WARNED = True + string_version = config.FALLBACK_UNITY_VERSION build_type = re.findall(r"([^\d.])", string_version) self.build_type = BuildType(build_type[0] if build_type else "") version_split = re.split(r"\D", string_version) From 52e97d2ec4202dad32695ed862a4fb75a939f3be Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 22 Apr 2022 10:41:32 +0200 Subject: [PATCH 083/599] 1.8.9 - bump version --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 49e07f2e..5772eb1f 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.8" +__version__ = "1.8.9" from .environment import Environment From fa88c4064a1054fe283ffa715f7c83fe85d42e1a Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 20 May 2022 10:19:06 +0200 Subject: [PATCH 084/599] ^.8.10 - fix UnityPyBoost.Mesh.unpack_vertex (#109) * Update Mesh.c * Update __init__.py * Update setup.py * Delete 001_2018_dog --- 001_2018_dog | Bin 659671 -> 0 bytes UnityPy/__init__.py | 2 +- UnityPyBoost/Mesh.c | 4 ++-- UnityPyBoost/setup.py | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 001_2018_dog diff --git a/001_2018_dog b/001_2018_dog deleted file mode 100644 index 639e45d3c395e6193fa8f20ef92a4c87c9133673..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 659671 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 z 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 Syd2_=eu0YnE#i}U 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�CH7um`zOgcJGt(=D^QdFCfCmHPv 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 z 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 z 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

D7r#(ohc=j86$|*eCxw;HFqzh45!`kB;wT-P5 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 diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 5772eb1f..323b123c 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.9" +__version__ = "1.8.10" from .environment import Environment diff --git a/UnityPyBoost/Mesh.c b/UnityPyBoost/Mesh.c index 539ec3f5..8b928a47 100644 --- a/UnityPyBoost/Mesh.c +++ b/UnityPyBoost/Mesh.c @@ -25,7 +25,7 @@ PyObject *unpack_vertexdata(PyObject *self, PyObject *args) // define vars int componentByteSize; uint32_t m_VertexCount; - char swap; + uint8_t swap; // char format; uint8_t *vertexData; // m_VertexData.m_DataSize uint32_t m_StreamOffset; @@ -68,7 +68,7 @@ PyObject *unpack_vertexdata(PyObject *self, PyObject *args) uint16_t *componentUints = (uint16_t *)componentBytes; for (uint32_t i = 0; i < componentBytesLength; i += 2) { - *componentUints = bswap16(*componentUints); + *componentUints++ = bswap16(*componentUints); } } else if (componentByteSize == 4) diff --git a/UnityPyBoost/setup.py b/UnityPyBoost/setup.py index 1533ee4f..fc197c1f 100644 --- a/UnityPyBoost/setup.py +++ b/UnityPyBoost/setup.py @@ -8,7 +8,7 @@ name="UnityPyBoost", description="TODO", author="K0lb3", - version="0.0.2", + version="0.0.3", ext_modules=[ Extension( "UnityPyBoost", @@ -20,4 +20,4 @@ include_dirs=[local], ) ], -) \ No newline at end of file +) From cefcb22bb5174e57005e49d07369b9fe27214ad5 Mon Sep 17 00:00:00 2001 From: yuanyan3060 <58114805+yuanyan3060@users.noreply.github.com> Date: Fri, 20 May 2022 16:20:54 +0800 Subject: [PATCH 085/599] fix type hint Image to Image.Image (#108) Co-authored-by: yuanyan --- UnityPy/export/SpriteHelper.py | 4 ++-- UnityPy/export/Texture2DConverter.py | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/UnityPy/export/SpriteHelper.py b/UnityPy/export/SpriteHelper.py index 8263a257..ba172d4e 100644 --- a/UnityPy/export/SpriteHelper.py +++ b/UnityPy/export/SpriteHelper.py @@ -7,7 +7,7 @@ from ..streams import EndianBinaryReader -def get_image(sprite, texture, alpha_texture) -> Image: +def get_image(sprite, texture, alpha_texture) -> Image.Image: if ( alpha_texture and getattr(alpha_texture, "type", ClassIDType.UnknownType) @@ -29,7 +29,7 @@ def get_image(sprite, texture, alpha_texture) -> Image: return sprite.assets_file._cache[cache_id] -def get_image_from_sprite(m_Sprite) -> Image: +def get_image_from_sprite(m_Sprite) -> Image.Image: atlas = None if m_Sprite.m_SpriteAtlas: atlas = m_Sprite.m_SpriteAtlas.read() diff --git a/UnityPy/export/Texture2DConverter.py b/UnityPy/export/Texture2DConverter.py index e7f56764..e7e13675 100644 --- a/UnityPy/export/Texture2DConverter.py +++ b/UnityPy/export/Texture2DConverter.py @@ -9,7 +9,7 @@ TF = TextureFormat -def image_to_texture2d(img: Image, target_texture_format: TF, flip: bool = True): +def image_to_texture2d(img: Image.Image, target_texture_format: TF, flip: bool = True): if flip: img = img.transpose(Image.FLIP_TOP_BOTTOM) @@ -76,7 +76,7 @@ def image_to_texture2d(img: Image, target_texture_format: TF, flip: bool = True) return enc_img, tex_format -def get_image_from_texture2d(texture_2d, flip=True) -> Image: +def get_image_from_texture2d(texture_2d, flip=True) -> Image.Image: """converts the given texture into PIL.Image :param texture_2d: texture to be converterd @@ -153,7 +153,7 @@ def pillow( codec: str, args, swap: tuple = None, -) -> Image: +) -> Image.Image: img = ( Image.frombytes(mode, (width, height), image_data, codec, args) if width @@ -165,7 +165,7 @@ def pillow( return img -def atc(image_data: bytes, width: int, height: int, alpha: bool) -> Image: +def atc(image_data: bytes, width: int, height: int, alpha: bool) -> Image.Image: if alpha: image_data = texture2ddecoder.decode_atc_rgba8(image_data, width, height) else: @@ -174,7 +174,7 @@ def atc(image_data: bytes, width: int, height: int, alpha: bool) -> Image: return Image.frombytes("RGBA", (width, height), image_data, "raw", "BGRA") -def astc(image_data: bytes, width: int, height: int, block_size: tuple) -> Image: +def astc(image_data: bytes, width: int, height: int, block_size: tuple) -> Image.Image: image_data = texture2ddecoder.decode_astc(image_data, width, height, *block_size) return Image.frombytes("RGBA", (width, height), image_data, "raw", "BGRA") @@ -219,7 +219,7 @@ def half( codec: str, args, swap: tuple = None, -) -> Image: +) -> Image.Image: # convert half-float to int8 stream = BytesIO(image_data) image_data = bytes( From cd501bae4e0f8d40006b9c443e227b33434f8cbc Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 20 May 2022 10:21:27 +0200 Subject: [PATCH 086/599] bump version to 1.8.11 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 323b123c..07ac9ddd 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.10" +__version__ = "1.8.11" from .environment import Environment From 15dabd156348c248755715ed1d06a91df66ba5d0 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 20 May 2022 10:28:53 +0200 Subject: [PATCH 087/599] fix-SpriteHelper-(use-getattr-and-fix-triangles) (#110) * fixes #107 * Update SpriteHelper.py * Update __init__.py --- UnityPy/__init__.py | 2 +- UnityPy/export/SpriteHelper.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 07ac9ddd..2c7b7acb 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.11" +__version__ = "1.8.12" from .environment import Environment diff --git a/UnityPy/export/SpriteHelper.py b/UnityPy/export/SpriteHelper.py index ba172d4e..ffcbf98e 100644 --- a/UnityPy/export/SpriteHelper.py +++ b/UnityPy/export/SpriteHelper.py @@ -31,9 +31,9 @@ def get_image(sprite, texture, alpha_texture) -> Image.Image: def get_image_from_sprite(m_Sprite) -> Image.Image: atlas = None - if m_Sprite.m_SpriteAtlas: + if getattr(m_Sprite, "m_SpriteAtlas", None): atlas = m_Sprite.m_SpriteAtlas.read() - elif m_Sprite.m_AtlasTags: + elif getattr(m_Sprite, "m_AtlasTags", None): # looks like the direct pointer is empty, let's try to find the Atlas via its name for obj in m_Sprite.assets_file.objects.values(): if obj.type == ClassIDType.SpriteAtlas: @@ -110,7 +110,7 @@ def get_triangles(m_Sprite): points = [] if hasattr(m_RD, "vertices"): # 5.6 down vertices = [v.pos for v in m_RD.vertices] - points = [vertices[index] for index in range(m_RD.indices)] + points = [vertices[index] for index in m_RD.indices] else: # 5.6 and up m_Channel = m_RD.m_VertexData.m_Channels[0] # kShaderChannelVertex m_Stream = m_RD.m_VertexData.m_Streams[m_Channel.stream] From 5ecd94fb899b314f534ba1ee3a5975bd10a0364a Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 20 May 2022 11:14:19 +0200 Subject: [PATCH 088/599] 1.8.13 - BundleFile fix for Unity2021.3.2f1 (#111) * Update BundleFile.py * Update __init__.py --- UnityPy/__init__.py | 2 +- UnityPy/files/BundleFile.py | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 2c7b7acb..2b380a95 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.12" +__version__ = "1.8.13" from .environment import Environment diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index e3aa932f..61173de4 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -132,13 +132,20 @@ def read_fs(self, reader: EndianBinaryReader): # def read_blocks(reader : EndianBinaryReader, blocksStream): def decompress_block(blockInfo): switch = blockInfo.flags & 0x3F # kStorageBlockCompressionTypeMask + + # fix based on https://github.com/Perfare/AssetStudio/pull/981 + compressed_data = reader.read_bytes(blockInfo.compressedSize) + offset = reNot0.search(compressed_data).regs[0][0] + if offset: + compressed_data = compressed_data[offset:] + if switch == 1: # LZMA return CompressionHelper.decompress_lzma( - reader.read_bytes(blockInfo.compressedSize) + compressed_data ) elif switch in [2, 3]: # LZ4, LZ4HC return CompressionHelper.decompress_lz4( - reader.read_bytes(blockInfo.compressedSize), + compressed_data, blockInfo.uncompressedSize, ) # elif switch == 4: #LZHAM: From 32d4b91bf71cbbc1075e522b188d05a3f504f9d1 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 20 May 2022 13:48:10 +0200 Subject: [PATCH 089/599] implement missing reNot0 (#114) fixes #112 fixes #113 --- UnityPy/__init__.py | 2 +- UnityPy/files/BundleFile.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 2b380a95..c7839759 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.13" +__version__ = "1.8.14" from .environment import Environment diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 61173de4..0d0ce0aa 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -1,9 +1,10 @@ from . import File from ..helpers import CompressionHelper from ..streams import EndianBinaryReader, EndianBinaryWriter - +import re from collections import namedtuple +reNot0 = re.compile(b"[^\x00]") BlockInfo = namedtuple("BlockInfo", "uncompressedSize compressedSize flags") DirectoryInfoFS = namedtuple("DirectoryInfoFS", "offset size flags path") From f1c8a1f3ba0e7b147bae4ec753ad6d6255128168 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 May 2022 13:09:15 +0200 Subject: [PATCH 090/599] BundleFile - implement AssetStudio/commit/1fcf7a4364aa0153b2c8a0e21bbcf24f0a0730c2 --- UnityPy/files/BundleFile.py | 61 ++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 0d0ce0aa..f956369d 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -1,10 +1,9 @@ -from . import File +from . import File from ..helpers import CompressionHelper from ..streams import EndianBinaryReader, EndianBinaryWriter import re from collections import namedtuple -reNot0 = re.compile(b"[^\x00]") BlockInfo = namedtuple("BlockInfo", "uncompressedSize compressedSize flags") DirectoryInfoFS = namedtuple("DirectoryInfoFS", "offset size flags path") @@ -16,7 +15,7 @@ class BundleFile(File.File): version_engine: str version_player: str - def __init__(self, reader: EndianBinaryReader, parent: File, name: str=None): + def __init__(self, reader: EndianBinaryReader, parent: File, name: str = None): super().__init__(parent=parent, name=name) signature = self.signature = reader.read_string_to_null() self.version = reader.read_u_int() @@ -87,11 +86,11 @@ def read_fs(self, reader: EndianBinaryReader): if self.version >= 7: reader.align_stream(16) - _position = reader.Position + start = reader.Position if self._data_flags & 0x80 != 0: # kArchiveBlocksInfoAtTheEnd reader.Position = reader.Length - compressedSize blocksInfoBytes = reader.read_bytes(compressedSize) - reader.Position = _position + reader.Position = start else: # 0x40 kArchiveBlocksAndDirectoryInfoCombined blocksInfoBytes = reader.read_bytes(compressedSize) @@ -105,7 +104,7 @@ def read_fs(self, reader: EndianBinaryReader): ) # elif switch == 4: #LZHAM: - blocksInfoReader = EndianBinaryReader(blocksInfoBytes, offset=_position) + blocksInfoReader = EndianBinaryReader(blocksInfoBytes, offset=start) uncompressedDataHash = blocksInfoReader.read_bytes(16) blocksInfoCount = blocksInfoReader.read_int() @@ -133,17 +132,12 @@ def read_fs(self, reader: EndianBinaryReader): # def read_blocks(reader : EndianBinaryReader, blocksStream): def decompress_block(blockInfo): switch = blockInfo.flags & 0x3F # kStorageBlockCompressionTypeMask - + # fix based on https://github.com/Perfare/AssetStudio/pull/981 compressed_data = reader.read_bytes(blockInfo.compressedSize) - offset = reNot0.search(compressed_data).regs[0][0] - if offset: - compressed_data = compressed_data[offset:] - + if switch == 1: # LZMA - return CompressionHelper.decompress_lzma( - compressed_data - ) + return CompressionHelper.decompress_lzma(compressed_data) elif switch in [2, 3]: # LZ4, LZ4HC return CompressionHelper.decompress_lz4( compressed_data, @@ -156,25 +150,30 @@ def decompress_block(blockInfo): if m_BlocksInfo: self._block_info_flags = m_BlocksInfo[0].flags + compressed_block_size = sum( + blockInfo.compressedSize for blockInfo in m_BlocksInfo + ) + padding = reader.Length - start - compressedSize - compressed_block_size + reader.Position += padding + blocksReader = EndianBinaryReader( b"".join(decompress_block(blockInfo) for blockInfo in m_BlocksInfo), - offset=(blocksInfoReader.real_offset()) + offset=(blocksInfoReader.real_offset()), ) return m_DirectoryInfo, blocksReader - def save(self, packer=None): """ - Rewrites the BundleFile and returns it as bytes object. - - packer: - can be either one of the following strings - or tuple consisting of (block_info_flag, data_flag) - allowed strings: - none - no compression, default, safest bet - lz4 - lz4 compression - original - uses the original flags + Rewrites the BundleFile and returns it as bytes object. + + packer: + can be either one of the following strings + or tuple consisting of (block_info_flag, data_flag) + allowed strings: + none - no compression, default, safest bet + lz4 - lz4 compression + original - uses the original flags """ # file_header # signature (string_to_null) @@ -197,7 +196,11 @@ def save(self, packer=None): if not packer or packer == "none": self.save_fs(writer, 64, 64) elif packer == "original": - self.save_fs(writer, block_info_flag=self._block_info_flags, data_flag=self._data_flags) + self.save_fs( + writer, + block_info_flag=self._block_info_flags, + data_flag=self._data_flags, + ) elif packer == "lz4": self.save_fs(writer, block_info_flag=194, data_flag=2) elif isinstance(packer, tuple): @@ -206,7 +209,7 @@ def save(self, packer=None): raise NotImplemented("UnityFS - Packer:", packer) return writer.bytes - def save_fs(self, writer: EndianBinaryWriter, block_info_flag : int, data_flag : int): + def save_fs(self, writer: EndianBinaryWriter, block_info_flag: int, data_flag: int): # header # compressed blockinfo (block details & directionary) # compressed assets @@ -262,7 +265,9 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag : int, data_flag : name, f.flags, data_writer.write_bytes( - f.bytes if isinstance(f, (EndianBinaryReader, EndianBinaryWriter)) else f.save() + f.bytes + if isinstance(f, (EndianBinaryReader, EndianBinaryWriter)) + else f.save() ), ) for name, f in self.files.items() From 04018aae967006b12c4f6143720af2b541df073c Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 May 2022 13:17:38 +0200 Subject: [PATCH 091/599] BundleFile - unify data decompression into a new function --- UnityPy/files/BundleFile.py | 69 +++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index f956369d..77b20762 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -94,16 +94,9 @@ def read_fs(self, reader: EndianBinaryReader): else: # 0x40 kArchiveBlocksAndDirectoryInfoCombined blocksInfoBytes = reader.read_bytes(compressedSize) - switch = self._data_flags & 0x3F - - if switch == 1: # LZMA - blocksInfoBytes = CompressionHelper.decompress_lzma(blocksInfoBytes) - elif switch in [2, 3]: # LZ4, LZ4HC - blocksInfoBytes = CompressionHelper.decompress_lz4( - blocksInfoBytes, uncompressedSize - ) - # elif switch == 4: #LZHAM: - + blocksInfoBytes = decompress_data( + blocksInfoBytes, uncompressedSize, self._data_flags + ) blocksInfoReader = EndianBinaryReader(blocksInfoBytes, offset=start) uncompressedDataHash = blocksInfoReader.read_bytes(16) @@ -129,24 +122,6 @@ def read_fs(self, reader: EndianBinaryReader): for _ in range(nodesCount) ] - # def read_blocks(reader : EndianBinaryReader, blocksStream): - def decompress_block(blockInfo): - switch = blockInfo.flags & 0x3F # kStorageBlockCompressionTypeMask - - # fix based on https://github.com/Perfare/AssetStudio/pull/981 - compressed_data = reader.read_bytes(blockInfo.compressedSize) - - if switch == 1: # LZMA - return CompressionHelper.decompress_lzma(compressed_data) - elif switch in [2, 3]: # LZ4, LZ4HC - return CompressionHelper.decompress_lz4( - compressed_data, - blockInfo.uncompressedSize, - ) - # elif switch == 4: #LZHAM: - else: # no compression - return reader.read_bytes(blockInfo.uncompressedSize) - if m_BlocksInfo: self._block_info_flags = m_BlocksInfo[0].flags @@ -157,7 +132,14 @@ def decompress_block(blockInfo): reader.Position += padding blocksReader = EndianBinaryReader( - b"".join(decompress_block(blockInfo) for blockInfo in m_BlocksInfo), + b"".join( + decompress_data( + reader.read_bytes(blockInfo.compressedSize), + blockInfo.uncompressedSize, + blockInfo.flags, + ) + for blockInfo in m_BlocksInfo + ), offset=(blocksInfoReader.real_offset()), ) @@ -365,3 +347,32 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag: int, data_flag: i else: writer.write(block_data) writer.write(file_data) + + +def decompress_data( + compressed_data: bytes, uncompressed_size: int, flags: int +) -> bytes: + """ + Parameters + ---------- + compressed_data : bytes + The compressed data. + uncompressed_size : int + The uncompressed size of the data. + flags : int + The flags of the data. + + Returns + ------- + bytes + The decompressed data.""" + switch = flags & 0x3F + + if switch == 1: # LZMA + return CompressionHelper.decompress_lzma(compressed_data) + elif switch in [2, 3]: # LZ4, LZ4HC + return CompressionHelper.decompress_lz4(compressed_data, uncompressed_size) + elif switch == 4: # LZHAM + raise NotImplementedError("LZHAM decompression not implemented") + else: + return compressed_data From 43e23fb0a68f7cc714e667c61ac8b907e49ec6af Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 May 2022 13:18:01 +0200 Subject: [PATCH 092/599] Delete demo.res --- demo.res | Bin 930128 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 demo.res diff --git a/demo.res b/demo.res deleted file mode 100644 index 281f761655cf91413c3fd41fb2901ff134b4a37a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 930128 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

-r}r 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 lfy>#5D=<4F!5qc5$DIzK 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
KoI@{3kV6nC71IdeGT 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xs)UKeqLT~LV; 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

$NrgC4`v5!*qR~DC>`$Yg8<>7 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⋙G@c(ZJ1C+ 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 From 96174ce883c468f0a4a81cd39417de27e409a7bb Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 May 2022 13:18:35 +0200 Subject: [PATCH 093/599] Fix setup.py Fails from Source (#116) * Update setup.py * workflow - remove preinstallation of dependencies --- .github/workflows/python-package.yml | 2 -- setup.py | 22 +++++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 09516871..dcbb98f9 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -27,7 +27,6 @@ jobs: run: | python -m pip install --upgrade pip wheel setuptools pip install --upgrade twine - pip install -U lz4 brotli Pillow texture2ddecoder etcpak tabulate - name: Set up QEMU if: runner.os == 'Linux' @@ -39,7 +38,6 @@ jobs: uses: pypa/cibuildwheel@v2.3.1 env: CIBW_ARCHS_LINUX: auto aarch64 - CIBW_BEFORE_BUILD: pip install -U lz4 brotli Pillow texture2ddecoder etcpak tabulate CIBW_BUILD: | ${{ matrix.cp }}-manylinux_x86_64 ${{ matrix.cp }}-manylinux_i686 ${{ matrix.cp }}-manylinux_aarch64 ${{ matrix.cp }}-win_amd64 ${{ matrix.cp }}-win32 ${{ matrix.cp }}-macosx_x86_64 CIBW_REPAIR_WHEEL_COMMAND: '' # Disable auditwheel diff --git a/setup.py b/setup.py index da2639d1..516de08d 100644 --- a/setup.py +++ b/setup.py @@ -1,12 +1,16 @@ from setuptools import setup, Extension, find_packages -from UnityPy import __version__ as version +import os +import re -with open("README.md", "r") as fh: - long_description = fh.read() +INSTALL_DIR = os.path.dirname(os.path.realpath(__file__)) +UNITYPYBOOST_DIR = os.path.join(INSTALL_DIR, "UnityPyBoost") -import os +version = None +with open(os.path.join(INSTALL_DIR, "UnityPy", "__init__.py"), "rt") as f: + version = re.search(r'__version__ = "([^"]+)"', f.read()).group(1) -local = "./UnityPyBoost" +with open(os.path.join(INSTALL_DIR, "README.md"), "rt") as fh: + long_description = fh.read() setup( name="UnityPy", @@ -58,9 +62,13 @@ ext_modules=[ Extension( "UnityPy.UnityPyBoost", - [os.path.join(local, f) for f in os.listdir(local) if f.endswith(".c")], + [ + f"UnityPyBoost/{f}" + for f in os.listdir(UNITYPYBOOST_DIR) + if f.endswith(".c") + ], language="c", - include_dirs=[local], + include_dirs=[UNITYPYBOOST_DIR], ) ], ) From e4d834527ae5dd13d43bbef4d31572f92a4c8afe Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 May 2022 13:19:04 +0200 Subject: [PATCH 094/599] 1.8.15 - bump version --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index c7839759..f77a4d78 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.14" +__version__ = "1.8.15" from .environment import Environment From ce87733a32d137be57aac826d3d766a1c69223ec Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 7 Jun 2022 15:09:37 +0200 Subject: [PATCH 095/599] improve EndianBinaryReader performance --- UnityPy/streams/EndianBinaryReader.py | 282 +++++++++++++++++++++++--- 1 file changed, 258 insertions(+), 24 deletions(-) diff --git a/UnityPy/streams/EndianBinaryReader.py b/UnityPy/streams/EndianBinaryReader.py index 9fe4738a..bb685535 100644 --- a/UnityPy/streams/EndianBinaryReader.py +++ b/UnityPy/streams/EndianBinaryReader.py @@ -1,8 +1,39 @@ import io -from struct import unpack +import sys +from struct import Struct, unpack +import re + +reNot0 = re.compile(b"(.*?)\x00") + +SYS_ENDIAN = "<" if sys.byteorder == "little" else ">" from ..math import Color, Matrix4x4, Quaternion, Vector2, Vector3, Vector4, Rectangle +# generate unpack and unpack_from functions +TYPE_PARAM_SIZE_LIST = [ + ("short", "h", 2), + ("u_short", "H", 2), + ("int", "i", 4), + ("u_int", "I", 4), + ("long", "q", 8), + ("u_long", "Q", 8), + ("half", "e", 2), + ("float", "f", 4), + ("double", "d", 8), + ("vec2", "2f", 8), + ("vec3", "3f", 12), + ("vec4", "4f", 16), +] + +LOCALS = locals() +for endian_s, endian_l in (("<", "little"), (">", "big")): + for typ, param, _ in TYPE_PARAM_SIZE_LIST: + LOCALS[f"unpack_{endian_l}_{typ}"] = Struct(f"{endian_s}{param}").unpack + LOCALS[f"unpack_{endian_l}_{typ}_from"] = Struct( + f"{endian_s}{param}" + ).unpack_from +unpack_little_vec2 = Struct(f""): + raise ValueError("Invalid endian") + if value != self._endian: + setattr( + self, + "__class__", + EndianBinaryReader_Memoryview_LittleEndian + if value == "<" + else EndianBinaryReader_Memoryview_BigEndian, + ) + self._endian = value + @property def bytes(self): return self.view @@ -199,7 +258,7 @@ def dispose(self): def read(self, length: int): if not length: return b"" - ret = self.view[self.Position: self.Position + length] + ret = self.view[self.Position : self.Position + length] self.Position += length return ret @@ -212,19 +271,142 @@ def read_aligned_string(self): return result return "" + def read_string_to_null(self, max_length=32767) -> str: + match = reNot0.search(self.view, self.Position, self.Position + max_length) + if not match: + raise ValueError("Unterminated string") + ret = match[1].decode("utf8", "surrogateescape") + self.Position = match.end() + return ret + + +class EndianBinaryReader_Memoryview_LittleEndian(EndianBinaryReader_Memoryview): + def read_u_short(self): + (ret,) = unpack_little_u_short_from(self.view, self.Position) + self.Position += 2 + return ret + + def read_short(self): + (ret,) = unpack_little_short_from(self.view, self.Position) + self.Position += 2 + return ret + + def read_int(self): + (ret,) = unpack_little_int_from(self.view, self.Position) + self.Position += 4 + return ret + + def read_u_int(self): + (ret,) = unpack_little_u_int_from(self.view, self.Position) + self.Position += 4 + return ret + + def read_long(self): + (ret,) = unpack_little_long_from(self.view, self.Position) + self.Position += 8 + return ret + + def read_u_long(self): + (ret,) = unpack_little_u_long_from(self.view, self.Position) + self.Position += 8 + return ret + + def read_half(self): + (ret,) = unpack_little_half_from(self.view, self.Position) + self.Position += 2 + return ret + + def read_float(self): + (ret,) = unpack_little_float_from(self.view, self.Position) + self.Position += 4 + return ret + + def read_double(self): + (ret,) = unpack_little_double_from(self.view, self.Position) + self.Position += 8 + return ret + + +class EndianBinaryReader_Memoryview_BigEndian(EndianBinaryReader_Memoryview): + def read_u_short(self): + (ret,) = unpack_big_u_short_from(self.view, self.Position) + self.Position += 2 + return ret + + def read_short(self): + (ret,) = unpack_big_short_from(self.view, self.Position) + self.Position += 2 + return ret + + def read_int(self): + (ret,) = unpack_big_int_from(self.view, self.Position) + self.Position += 4 + return ret + + def read_u_int(self): + (ret,) = unpack_big_u_int_from(self.view, self.Position) + self.Position += 4 + return ret + + def read_long(self): + (ret,) = unpack_big_long_from(self.view, self.Position) + self.Position += 8 + return ret + + def read_u_long(self): + (ret,) = unpack_big_u_long_from(self.view, self.Position) + self.Position += 8 + return ret + + def read_half(self): + (ret,) = unpack_big_half_from(self.view, self.Position) + self.Position += 2 + return ret + + def read_float(self): + (ret,) = unpack_big_float_from(self.view, self.Position) + self.Position += 4 + return ret + + def read_double(self): + (ret,) = unpack_big_double_from(self.view, self.Position) + self.Position += 8 + return ret + class EndianBinaryReader_Streamable(EndianBinaryReader): + __slots__ = ("stream", "_endian", "BaseOffset") stream: io.BufferedReader def __init__(self, stream, endian=">", offset=0): + self._endian = "" self.stream = stream super().__init__(stream, endian=endian, offset=offset) + self.read = self.stream.read def get_position(self): return self.stream.tell() def set_position(self, value): - self.stream.seek(value+self.BaseOffset) + self.stream.seek(value + self.BaseOffset) + + @property + def endian(self): + return self._endian + + @endian.setter + def endian(self, value): + if value not in ("<", ">"): + raise ValueError("Invalid endian") + if value != self._endian: + setattr( + self, + "__class__", + EndianBinaryReader_Streamable_LittleEndian + if value == "<" + else EndianBinaryReader_Streamable_BigEndian, + ) + self._endian = value @property def Length(self): @@ -247,8 +429,60 @@ def dispose(self): self.stream.close() pass - def read(self, length: int): - if not length: - return b"" - return self.stream.read(length) +class EndianBinaryReader_Streamable_LittleEndian(EndianBinaryReader_Streamable): + def read_u_short(self): + return unpack_little_u_short(self.read(2))[0] + + def read_short(self): + return unpack_little_short(self.read(2))[0] + + def read_int(self): + return unpack_little_int(self.read(4))[0] + + def read_u_int(self): + return unpack_little_u_int(self.read(4))[0] + + def read_long(self): + return unpack_little_long(self.read(8))[0] + + def read_u_long(self): + return unpack_little_u_long(self.read(8))[0] + + def read_half(self): + return unpack_little_half(self.read(2))[0] + + def read_float(self): + return unpack_little_float(self.read(4))[0] + + def read_double(self): + return unpack_little_double(self.read(8))[0] + + +class EndianBinaryReader_Streamable_BigEndian(EndianBinaryReader_Streamable): + def read_u_short(self): + return unpack_big_u_short(self.read(2))[0] + + def read_short(self): + return unpack_big_short(self.read(2))[0] + + def read_int(self): + return unpack_big_int(self.read(4))[0] + + def read_u_int(self): + return unpack_big_u_int(self.read(4))[0] + + def read_long(self): + return unpack_big_long(self.read(8))[0] + + def read_u_long(self): + return unpack_big_u_long(self.read(8))[0] + + def read_half(self): + return unpack_big_half(self.read(2))[0] + + def read_float(self): + return unpack_big_float(self.read(4))[0] + + def read_double(self): + return unpack_big_double(self.read(8))[0] From d35dcbfebaf8a416242c907db641e2930607d4e7 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 7 Jun 2022 15:26:09 +0200 Subject: [PATCH 096/599] add typehints to EndianBinaryReader --- UnityPy/streams/EndianBinaryReader.py | 63 +++++++++++++++------------ 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/UnityPy/streams/EndianBinaryReader.py b/UnityPy/streams/EndianBinaryReader.py index bb685535..b61b8796 100644 --- a/UnityPy/streams/EndianBinaryReader.py +++ b/UnityPy/streams/EndianBinaryReader.py @@ -2,6 +2,8 @@ import sys from struct import Struct, unpack import re +from typing import List, Union +from io import BytesIO reNot0 = re.compile(b"(.*?)\x00") @@ -41,13 +43,16 @@ class EndianBinaryReader: Position: int BaseOffset: int - def __new__(cls, item, endian=">", offset=0): + def __new__( + cls, + item: Union[bytes, bytearray, memoryview, BytesIO], + endian: str = ">", + offset: int = 0, + ): if isinstance(item, (bytes, bytearray, memoryview)): obj = super(EndianBinaryReader, cls).__new__(EndianBinaryReader_Memoryview) else: - obj = super(EndianBinaryReader, cls).__new__( - EndianBinaryReader_Streamable - ) + obj = super(EndianBinaryReader, cls).__new__(EndianBinaryReader_Streamable) obj.__init__(item, endian) return obj @@ -121,7 +126,7 @@ def read_string_to_null(self, max_length=32767) -> str: raise ValueError("Unterminated string: %r" % ret) return b"".join(ret).decode("utf8", "surrogateescape") - def read_aligned_string(self): + def read_aligned_string(self) -> str: length = self.read_int() if 0 < length <= self.Length - self.Position: string_data = bytes(self.read_bytes(length)) @@ -133,89 +138,89 @@ def read_aligned_string(self): def align_stream(self, alignment=4): self.Position += (alignment - self.Position % alignment) % alignment - def read_quaternion(self): + def read_quaternion(self) -> Quaternion: return Quaternion( self.read_float(), self.read_float(), self.read_float(), self.read_float() ) - def read_vector2(self): + def read_vector2(self) -> Vector2: return Vector2(self.read_float(), self.read_float()) - def read_vector3(self): + def read_vector3(self) -> Vector3: return Vector3(self.read_float(), self.read_float(), self.read_float()) - def read_vector4(self): + def read_vector4(self) -> Vector4: return Vector4( self.read_float(), self.read_float(), self.read_float(), self.read_float() ) - def read_rectangle_f(self): + def read_rectangle_f(self) -> Rectangle: return Rectangle( self.read_float(), self.read_float(), self.read_float(), self.read_float() ) - def read_color4(self): + def read_color4(self) -> Color: return Color( self.read_float(), self.read_float(), self.read_float(), self.read_float() ) - def read_byte_array(self): + def read_byte_array(self) -> bytes: return self.read(self.read_int()) - def read_matrix(self): + def read_matrix(self) -> Matrix4x4: return Matrix4x4(self.read_float_array(16)) - def read_array(self, command, length: int): + def read_array(self, command, length: int) -> list: return [command() for _ in range(length)] - def read_array_struct(self, param: str, length: int = None): + def read_array_struct(self, param: str, length: int = None) -> list: if length is None: length = self.read_int() struct = Struct(f"{self.endian}{length}{param}") return struct.unpack(self.read(struct.size)) - def read_boolean_array(self, length: int = None): + def read_boolean_array(self, length: int = None) -> List[bool]: return self.read_array_struct("?", length) - def read_u_short_array(self, length: int = None): + def read_u_short_array(self, length: int = None) -> List[int]: return self.read_array_struct("h", length) - def read_short_array(self, length: int = None): + def read_short_array(self, length: int = None) -> List[int]: return self.read_array_struct("H", length) - def read_int_array(self, length: int = None): + def read_int_array(self, length: int = None) -> List[int]: return self.read_array_struct("i", length) - def read_u_int_array(self, length: int = None): + def read_u_int_array(self, length: int = None) -> List[int]: return self.read_array_struct("I", length) - def read_u_int_array_array(self, length: int = None): + def read_u_int_array_array(self, length: int = None) -> List[List[int]]: return self.read_array( self.read_u_int_array, length if length is not None else self.read_int() ) - def read_float_array(self, length: int = None): + def read_float_array(self, length: int = None) -> List[float]: return self.read_array_struct("f", length) - def read_string_array(self): + def read_string_array(self) -> List[str]: return self.read_array(self.read_aligned_string, self.read_int()) - def read_vector2_array(self): + def read_vector2_array(self) -> List[Vector2]: return self.read_array(self.read_vector2, self.read_int()) - def read_vector4_array(self): + def read_vector4_array(self) -> List[Vector4]: return self.read_array(self.read_vector4, self.read_int()) - def read_matrix_array(self): + def read_matrix_array(self) -> List[Matrix4x4]: return self.read_array(self.read_matrix, self.read_int()) - def real_offset(self): + def real_offset(self) -> int: """Returns offset in the underlying file. (Not working with unpacked streams.) """ return self.BaseOffset + self.Position - def read_the_rest(self, obj_start, obj_size): + def read_the_rest(self, obj_start: int, obj_size: int) -> bytes: """Returns the rest of the current reader bytes.""" return self.read_bytes(obj_size - (self.Position - obj_start)) @@ -235,7 +240,7 @@ def endian(self): return self._endian @endian.setter - def endian(self, value): + def endian(self, value: str): if value not in ("<", ">"): raise ValueError("Invalid endian") if value != self._endian: From 17d333f1dd3fa87df4488840e969097d41b86635 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 7 Jun 2022 15:28:03 +0200 Subject: [PATCH 097/599] improve SerializedFile parsing performance --- UnityPy/files/SerializedFile.py | 78 +++++++++++++++++++-------------- UnityPy/helpers/ImportHelper.py | 5 ++- 2 files changed, 48 insertions(+), 35 deletions(-) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 17b940f1..988100dd 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -1,18 +1,18 @@ import os import re -import sys from . import File, ObjectReader from ..enums import BuildTarget, ClassIDType, CommonString from ..streams import EndianBinaryReader, EndianBinaryWriter from ..helpers.TypeTreeHelper import TypeTreeNode +from struct import Struct + from .. import config + # only print the version warning once VERSION_WARNED = False -RECURSION_LIMIT = sys.getrecursionlimit() - class SerializedFileHeader: metadata_size: int @@ -23,10 +23,12 @@ class SerializedFileHeader: reserved: bytes def __init__(self, reader: EndianBinaryReader): - self.metadata_size = reader.read_u_int() - self.file_size = reader.read_u_int() - self.version = reader.read_u_int() - self.data_offset = reader.read_u_int() + ( + self.metadata_size, + self.file_size, + self.version, + self.data_offset, + ) = reader.read_u_int_array(4) class LocalSerializedObjectIdentifier: # script type @@ -121,11 +123,11 @@ def __init__(self, reader, serialized_file): self.old_type_hash = reader.read_bytes(16) # Hash128 if serialized_file._enable_type_tree: - type_tree = [] + type_tree = None if version >= 12 or version == 10: - self.string_data = serialized_file.read_type_tree_blob(type_tree) + type_tree, self.string_data = serialized_file.read_type_tree_blob() else: - serialized_file.read_type_tree(type_tree) + type_tree = serialized_file.read_type_tree() if version >= 21: self.type_dependencies = reader.read_int_array() @@ -297,7 +299,9 @@ def set_version(self, string_version): if string_version == "0.0.0": global VERSION_WARNED if not VERSION_WARNED: - print(f"Warning: 0.0.0 version found, defaulting to UnityPy.config.FALLBACK_UNITY_VERSION\n{config.FALLBACK_UNITY_VERSION}") + print( + f"Warning: 0.0.0 version found, defaulting to UnityPy.config.FALLBACK_UNITY_VERSION\n{config.FALLBACK_UNITY_VERSION}" + ) VERSION_WARNED = True string_version = config.FALLBACK_UNITY_VERSION build_type = re.findall(r"([^\d.])", string_version) @@ -305,7 +309,8 @@ def set_version(self, string_version): version_split = re.split(r"\D", string_version) self.version = tuple(int(x) for x in version_split) - def read_type_tree(self, type_tree): + def read_type_tree(self): + type_tree = [] level_stack = [[0, 1]] while level_stack: level, count = level_stack[-1] @@ -336,32 +341,41 @@ def read_type_tree(self, type_tree): level_stack.append([level + 1, children_count]) return type_tree - def read_type_tree_blob(self, type_tree): + def read_type_tree_blob(self): reader = self.reader number_of_nodes = self.reader.read_int() string_buffer_size = self.reader.read_int() - for _ in range(number_of_nodes): - node = TypeTreeNode() - type_tree.append(node) - node.version = reader.read_u_short() - node.level = reader.read_byte() - node.is_array = reader.read_boolean() - node.type_str_offset = reader.read_u_int() - node.name_str_offset = reader.read_u_int() - node.byte_size = reader.read_int() - node.index = reader.read_int() - node.meta_flag = reader.read_int() - - if self.header.version >= 19: - node.ref_type_hash = reader.read_u_long() + type = f"{reader.endian}hb?IIiii" + keys = [ + "version", + "level", + "is_array", + "type_str_offset", + "name_str_offset", + "byte_size", + "index", + "meta_flag", + ] + if self.header.version >= 19: + type += "Q" + keys.append("ref_type_hash") + node_struct = Struct(type) + struct_data = reader.read(node_struct.size * number_of_nodes) string_buffer_reader = EndianBinaryReader( reader.read(string_buffer_size), reader.endian ) - for node in type_tree: + + if not config.SERIALIZED_FILE_PARSE_TYPETREE: + return + + type_tree = [None] * number_of_nodes + for i, raw_node in enumerate(node_struct.iter_unpack(struct_data)): + node = TypeTreeNode(zip(keys, raw_node)) node.type = read_string(string_buffer_reader, node.type_str_offset) node.name = read_string(string_buffer_reader, node.name_str_offset) + type_tree[i] = node return string_buffer_reader.bytes @@ -374,7 +388,7 @@ def get_writeable_cab(self, name: str = "CAB-UnityPy_Mod.resS"): self.parent, (File.BundleFile.BundleFile, File.WebFile.WebFile) ): return None - + cab = self.parent.get_writeable_cab(name) cab.path = f"archive:/{self.name}/{name}" if not any(cab.path == x.path for x in self.externals): @@ -602,8 +616,4 @@ def read_string(string_buffer_reader: EndianBinaryReader, value: int) -> str: return string_buffer_reader.read_string_to_null() offset = value & 0x7FFFFFFF - if offset in CommonString: - return CommonString[offset] - - return str(offset) - + return CommonString.get(offset, str(offset)) diff --git a/UnityPy/helpers/ImportHelper.py b/UnityPy/helpers/ImportHelper.py index 1bc8af70..2fd62ae7 100644 --- a/UnityPy/helpers/ImportHelper.py +++ b/UnityPy/helpers/ImportHelper.py @@ -53,7 +53,10 @@ def check_file_type(input_) -> Union[FileType, EndianBinaryReader]: if reader.Length < 20: return FileType.ResourceFile, reader - signature = reader.read_string_to_null(20) + try: + signature = reader.read_string_to_null(20) + except ValueError: + signature = "" reader.Position = 0 if signature in [ "UnityWeb", From 906012ed6b845233e74d9e23fd209911c241a95d Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 7 Jun 2022 15:35:02 +0200 Subject: [PATCH 098/599] improve splitfile handling --- UnityPy/environment.py | 202 ++++++++++++++++++++++++----------------- 1 file changed, 118 insertions(+), 84 deletions(-) diff --git a/UnityPy/environment.py b/UnityPy/environment.py index 06c19ac6..e9c1515e 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -1,16 +1,16 @@ -from functools import reduce +from typing import List, Callable, Dict, Union import io import os from zipfile import ZipFile import re from . import files -from .files import File +from .files import File, ObjectReader from .enums import FileType from .helpers import ImportHelper from .streams import EndianBinaryReader from .files import SerializedFile -reSplit = re.compile(r"(.+[/\\](\w+?\.split))\d+") +reSplit = re.compile(r"(.*?([^\/\\]+?))\.split\d+") class Environment: @@ -32,13 +32,16 @@ def __init__(self, *args): self.load_zip_file(arg) else: self.path = os.path.dirname(arg) - self.load_files([arg]) + if reSplit.match(arg): + self.load_files([arg]) + else: + self.load_file(arg) elif os.path.isdir(arg): self.path = arg self.load_folder(arg) else: self.path = None - self.files[str(len(self.files))] = self.load_file(stream=arg) + self.load_file(file=arg) if len(self.files) == 1: self.file = list(self.files.values())[0] @@ -46,39 +49,12 @@ def __init__(self, *args): if self.path == "": self.path = os.getcwd() - def load_files(self, files: list): - """Loads all files (list) into the AssetsManager and merges .split files for common usage.""" - # filter split files - i = 0 - split_files = [] - for path in files: - splitMatch = reSplit.match(path) - if splitMatch: - data = [] - basepath, basename = splitMatch.groups() - - if basepath in split_files: - continue - - split_files.append(basepath) - data = [] - for i in range(0, 999): - item = f"{basepath}.split{i}" - if item in files: - with open(item, "rb") as f: - data.append(f.read()) - elif i: - break - data = b"".join(data) - - self.files[basepath] = self.load_file(data, self, basename) - else: - self.files[path] = self.cabs[os.path.basename(path)] = self.load_file( - open(path, "rb").read(), self, path - ) + def load_files(self, files: List[str]): + """Loads all files (list) into the Environment and merges .split files for common usage.""" + self.load_assets(files, lambda x: open(x, "rb")) def load_folder(self, path: str): - """Loads all files in the given path and its subdirs into the AssetsManager.""" + """Loads all files in the given path and its subdirs into the Environment.""" self.load_files( [ os.path.join(root, f) @@ -87,52 +63,75 @@ def load_folder(self, path: str): ] ) - def reduce_path(self, fp: str) -> str: - return fp[len(self.path) :].lstrip("/\\") - def load(self, files: list): - """Loads all files into the AssetsManager.""" + """Loads all files into the Environment.""" self.files.update( { - self.reduce_path(f): self.load_file(open(f, "rb"), self, f) + os.path.basename(f): self.load_file(open(f, "rb"), self, f) for f in files if os.path.exists(f) } ) - def load_file(self, stream, parent=None, name: str = None): + def load_file( + self, + file: Union[io.IOBase, str], + parent: Union["Environment", File] = None, + name: str = None, + ): if not parent: parent = self - typ, reader = ImportHelper.check_file_type(stream) + if isinstance(file, str): + split_match = reSplit.match(file) + if split_match: + basepath, basename = split_match.groups() + file = [] + for i in range(0, 999): + item = f"{basepath}.split{i}" + if item in files: + with open(item, "rb") as f: + file.append(f.read()) + elif i: + break + name = basepath + file = b"".join(file) + else: + name = file + file = open(file, "rb") + + typ, reader = ImportHelper.check_file_type(file) + try: stream_name = ( name if name else getattr( - stream, + file, "name", - str(stream.__hash__()) if hasattr(stream, "__hash__") else "", + str(file.__hash__()) if hasattr(file, "__hash__") else "", ) ) + if typ == FileType.AssetsFile: f = files.SerializedFile(reader, parent, name=stream_name) self.register_cab(stream_name, f) - return f elif typ == FileType.BundleFile: - return files.BundleFile(reader, parent, name=stream_name) + f = files.BundleFile(reader, parent, name=stream_name) elif typ == FileType.WebFile: - return files.WebFile(reader, parent, name=stream_name) + f = files.WebFile(reader, parent, name=stream_name) elif typ == FileType.ZIP: - self.load_zip_file(stream) + f = self.load_zip_file(file) elif typ == FileType.ResourceFile: - f = EndianBinaryReader(stream) + f = EndianBinaryReader(file) self.register_cab(stream_name, f) - return f + + self.files[stream_name] = f + return f except Exception as e: # just to be sure # cuz the SerializedFile detection isn't perfect print("Error loading, reverting to EndianBinaryReader:\n", e) - return EndianBinaryReader(stream) + return EndianBinaryReader(file) def load_zip_file(self, value): buffer = None @@ -144,34 +143,7 @@ def load_zip_file(self, value): buffer = value z = ZipFile(buffer) - split_files = [] - namelist = z.namelist() - for path in namelist: - splitMatch = reSplit.match(path) - if splitMatch: - data = [] - basepath, basename = splitMatch.groups() - - if basepath in split_files: - continue - - split_files.append(basepath) - data = [] - for i in range(0, 999): - item = f"{basepath}.split{i}" - if item in namelist: - with z.open(item) as f: - data.append(f.read()) - elif i: - break - data = b"".join(data) - - self.files[basepath] = self.cabs[basename] = self.load_file(data, self) - else: - self.files[path] = self.cabs[os.path.basename(path)] = self.load_file( - z.open(path).read(), self - ) - + self.load_assets(z.namelist(), lambda x: z.open(x, "r")) z.close() def save(self, pack="none"): @@ -187,7 +159,9 @@ def save(self, pack="none"): out.write(self.files[f].save(packer=pack)) @property - def objects(self) -> list: + def objects(self) -> List[ObjectReader]: + """Returns a list of all objects in the Environment.""" + def search(item): ret = [] if not isinstance(item, Environment) and getattr(item, "objects", None): @@ -205,7 +179,8 @@ def search(item): return search(self) @property - def container(self): + def container(self) -> Dict[str, ObjectReader]: + """Returns a dictionary of all objects in the Environment.""" return { path: obj for f in self.files.values() @@ -232,8 +207,67 @@ def gen_all_asset_files(file, ret=[]): def get(self, key: str, default=None): return getattr(self, key, default) - def register_cab(self, name: str, item: object) -> None: + def register_cab(self, name: str, item: File) -> None: + """ + Registers a cab file. + + Parameters + ---------- + name : str + The name of the cab file. + item : File + The file to register. + """ self.cabs[os.path.basename(name.lower())] = item - def get_cab(self, name: str) -> object: + def get_cab(self, name: str) -> File: + """ + Returns the cab file with the given name. + + Parameters + ---------- + name : str + The name of the cab file. + + Returns + ------- + File + The cab file. + """ return self.cabs.get(os.path.basename(name.lower()), None) + + def load_assets(self, assets: List[str], open_f: Callable[[str], io.IOBase]): + """ + Load all assets from a list of files via the given open_f function. + + Parameters + ---------- + assets : List[str] + List of files to load. + open_f : Callable[[str], io.IOBase] + Function to open the files. + The function takes a file path and returns an io.IOBase object. + """ + split_files = [] + for path in assets: + splitMatch = reSplit.match(path) + if splitMatch: + basepath, basename = splitMatch.groups() + + if basepath in split_files: + continue + + split_files.append(basepath) + data = [] + for i in range(0, 999): + item = f"{basepath}.split{i}" + if item in assets: + with open_f(item) as f: + data.append(f.read()) + elif i: + break + data = b"".join(data) + path = basepath + else: + data = open_f(path).read() + self.load_file(data, name=path) From 9b3cc501ca9c4b41604d0904e0729c5233a27796 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 7 Jun 2022 15:37:15 +0200 Subject: [PATCH 099/599] fix SerializedFile - add SERIALIZED_FILE_PARSE_TYPETREE to config --- UnityPy/config.py | 4 ++++ UnityPy/files/SerializedFile.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/UnityPy/config.py b/UnityPy/config.py index 7761332e..f1481b03 100644 --- a/UnityPy/config.py +++ b/UnityPy/config.py @@ -1,2 +1,6 @@ # used when no version is defined by the SerializedFile or its BundleFile FALLBACK_UNITY_VERSION = "2.5.0f5" +# determines if the typetree structures for the Object types will be parsed +# disabling this will reduce the load time by a lot (half of the time is spend on parsing the typetrees) +# but it will also prevent saving an edited file +SERIALIZED_FILE_PARSE_TYPETREE = True diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 988100dd..b06c8aab 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -368,7 +368,7 @@ def read_type_tree_blob(self): ) if not config.SERIALIZED_FILE_PARSE_TYPETREE: - return + return string_buffer_reader.bytes type_tree = [None] * number_of_nodes for i, raw_node in enumerate(node_struct.iter_unpack(struct_data)): From 1832445985856b7e78c4e4a08f6f8b980b999e09 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 7 Jun 2022 15:37:34 +0200 Subject: [PATCH 100/599] fix Object __eq__ --- UnityPy/classes/Object.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/UnityPy/classes/Object.py b/UnityPy/classes/Object.py index e065cbad..df9e5b98 100644 --- a/UnityPy/classes/Object.py +++ b/UnityPy/classes/Object.py @@ -129,7 +129,11 @@ def __hash__(self): return hash(self.path_id) def __eq__(self, other): - return self.path_id == other.path_id + if isinstance(other, Object): + return self.path_id == other.path_id + elif isinstance(other, int): + return self.path_id == other + return False class NodeHelper: From 3e7027af94f73d5fdc71856593421aae604c1ff6 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 7 Jun 2022 15:51:39 +0200 Subject: [PATCH 101/599] SerializedFile - fix read_typetree_blob --- UnityPy/files/SerializedFile.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index b06c8aab..b2b046d8 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -372,12 +372,11 @@ def read_type_tree_blob(self): type_tree = [None] * number_of_nodes for i, raw_node in enumerate(node_struct.iter_unpack(struct_data)): - node = TypeTreeNode(zip(keys, raw_node)) + type_tree[i] = node = TypeTreeNode(zip(keys, raw_node)) node.type = read_string(string_buffer_reader, node.type_str_offset) node.name = read_string(string_buffer_reader, node.name_str_offset) - type_tree[i] = node - return string_buffer_reader.bytes + return type_tree, string_buffer_reader.bytes def get_writeable_cab(self, name: str = "CAB-UnityPy_Mod.resS"): """ From 6b861c7ba118f49f4ecc355c2b7d087c2226cd3b Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 7 Jun 2022 15:51:48 +0200 Subject: [PATCH 102/599] bump version to 1.8.16 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index f77a4d78..a53698bc 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.15" +__version__ = "1.8.16" from .environment import Environment From 6c5fdfd03c02573bca0dc331a36cd745e482cb3f Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 7 Jun 2022 16:05:17 +0200 Subject: [PATCH 103/599] 1.8.17 - fix SERIALIZED_FILE_PARSE_TYPETREE --- UnityPy/__init__.py | 2 +- UnityPy/files/SerializedFile.py | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index a53698bc..74ac6427 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.16" +__version__ = "1.8.17" from .environment import Environment diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index b2b046d8..a4ceef1e 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -123,17 +123,14 @@ def __init__(self, reader, serialized_file): self.old_type_hash = reader.read_bytes(16) # Hash128 if serialized_file._enable_type_tree: - type_tree = None if version >= 12 or version == 10: - type_tree, self.string_data = serialized_file.read_type_tree_blob() + self.nodes, self.string_data = serialized_file.read_type_tree_blob() else: - type_tree = serialized_file.read_type_tree() + self.nodes = serialized_file.read_type_tree() if version >= 21: self.type_dependencies = reader.read_int_array() - self.nodes = type_tree - def write(self, serialized_file, writer): version = serialized_file.header.version writer.write_int(self.class_id) @@ -239,6 +236,8 @@ def __init__(self, reader: EndianBinaryReader, parent=None, name=None): # ReadTypes type_count = reader.read_int() self.types = [SerializedType(reader, self) for _ in range(type_count)] + if config.SERIALIZED_FILE_PARSE_TYPETREE is False: + self._enable_type_tree = False self.big_id_enabled = 0 if 7 <= header.version < 14: @@ -368,7 +367,7 @@ def read_type_tree_blob(self): ) if not config.SERIALIZED_FILE_PARSE_TYPETREE: - return string_buffer_reader.bytes + return [], string_buffer_reader.bytes type_tree = [None] * number_of_nodes for i, raw_node in enumerate(node_struct.iter_unpack(struct_data)): From 1e89a2877ac8b2c60fd9c0048fd70a0c904d9767 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 10 Jun 2022 21:56:52 +0200 Subject: [PATCH 104/599] EndianBinaryReader - use BufferedIOBytes for decisions and implement better vector reader --- UnityPy/streams/EndianBinaryReader.py | 67 ++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 7 deletions(-) diff --git a/UnityPy/streams/EndianBinaryReader.py b/UnityPy/streams/EndianBinaryReader.py index b61b8796..1c9e7295 100644 --- a/UnityPy/streams/EndianBinaryReader.py +++ b/UnityPy/streams/EndianBinaryReader.py @@ -3,7 +3,7 @@ from struct import Struct, unpack import re from typing import List, Union -from io import BytesIO +from io import BytesIO, BufferedIOBase reNot0 = re.compile(b"(.*?)\x00") @@ -22,9 +22,9 @@ ("half", "e", 2), ("float", "f", 4), ("double", "d", 8), - ("vec2", "2f", 8), - ("vec3", "3f", 12), - ("vec4", "4f", 16), + ("vector2", "2f", 8), + ("vector3", "3f", 12), + ("vector4", "4f", 16), ] LOCALS = locals() @@ -34,7 +34,6 @@ LOCALS[f"unpack_{endian_l}_{typ}_from"] = Struct( f"{endian_s}{param}" ).unpack_from -unpack_little_vec2 = Struct(f" Date: Fri, 10 Jun 2022 21:59:17 +0200 Subject: [PATCH 105/599] TypeTreeHelper - use slots for TypeTreeNodes --- UnityPy/helpers/TypeTreeHelper.py | 168 +++++++++++++++++------------- 1 file changed, 93 insertions(+), 75 deletions(-) diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index fefba0c5..127500f7 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -6,6 +6,20 @@ class TypeTreeNode(object): + __slots__ = ( + "type", + "name", + "byte_size", + "index", + "is_array", + "version", + "meta_flag", + "level", + "type_str_offset", + "name_str_offset", + "type", + "name", + ) type: str name: str byte_size: int @@ -16,10 +30,15 @@ class TypeTreeNode(object): level: int type_str_offset: int name_str_offset: int + type: str + name: str - def __init__(self, data: dict = None): + def __init__(self, data: dict = None, **kwargs): + if not data and kwargs: + data = kwargs if data: - self.__dict__.update(data) + for key, val in data.items(): + setattr(self, key, val) def __repr__(self): return f"" @@ -28,15 +47,15 @@ def __repr__(self): def node_dict_to_class(nodes: List[dict]) -> List[TypeTreeNode]: """Converts all dict-type nodes into TypeTreeNodes - Parameters - ---------- - nodes : List[dict] - nodes/nodes of the typetree as dict + Parameters + ---------- + nodes : List[dict] + nodes/nodes of the typetree as dict - Returns - ------- - List[TypeTreeNode] - a list of TypeTreeNode-type nodes + Returns + ------- + List[TypeTreeNode] + a list of TypeTreeNode-type nodes """ return [TypeTreeNode(node) for node in nodes] @@ -44,15 +63,15 @@ def node_dict_to_class(nodes: List[dict]) -> List[TypeTreeNode]: def check_nodes(nodes: List[Union[dict, TypeTreeNode]]) -> List[TypeTreeNode]: """Checks the type of the nodes and converts them if necessary. - Parameters - ---------- - nodes : List[Union[dict, TypeTreeNode]] - nodes/nodes of the typetree as dict or TypeTreeNode + Parameters + ---------- + nodes : List[Union[dict, TypeTreeNode]] + nodes/nodes of the typetree as dict or TypeTreeNode - Returns - ------- - List[TypeTreeNode] - a list of TypeTreeNode-type nodes + Returns + ------- + List[TypeTreeNode] + a list of TypeTreeNode-type nodes """ if isinstance(nodes, list): if len(nodes) == 0: @@ -91,17 +110,17 @@ def check_nodes(nodes: List[Union[dict, TypeTreeNode]]) -> List[TypeTreeNode]: def get_nodes(nodes: List[TypeTreeNode], index: int) -> list: """Copies all nodes above the level of the node at the set index. - Parameters - ---------- - nodes : list - nodes/nodes of the typetree - index : int - index of the node - - Returns - ------- - list - A list of nodes + Parameters + ---------- + nodes : list + nodes/nodes of the typetree + index : int + index of the node + + Returns + ------- + list + A list of nodes """ nodes2 = [nodes[index]] level = nodes[index].level @@ -117,17 +136,17 @@ def read_typetree( ) -> dict: """Reads the typetree of the object contained in the reader via the node list. - Parameters - ---------- - nodes : list - List of nodes/nodes - reader : EndianBinaryReader - Reader of the object to be parsed - - Returns - ------- - dict - The parsed typtree + Parameters + ---------- + nodes : list + List of nodes/nodes + reader : EndianBinaryReader + Reader of the object to be parsed + + Returns + ------- + dict + The parsed typtree """ # reader.reset() nodes = check_nodes(nodes) @@ -224,19 +243,19 @@ def read_typetree_str( ) -> list: """Reads the typetree of the object contained in the reader via the node list and dumps it as string. - Parameters - ---------- - sb : list - StringBuilder - a list used to build the string dump, should be empty - nodes : list - List of nodes/nodes - reader : EndianBinaryReader - Reader of the object to be parsed - - Returns - ------- - list - The sb given as input + Parameters + ---------- + sb : list + StringBuilder - a list used to build the string dump, should be empty + nodes : list + List of nodes/nodes + reader : EndianBinaryReader + Reader of the object to be parsed + + Returns + ------- + list + The sb given as input """ # reader.reset() nodes = check_nodes(nodes) @@ -370,15 +389,15 @@ def read_value_str( def dump_typetree(nodes: List[TypeTreeNode]) -> str: """Dumps the structure of the given nodes. - Parameters - ---------- - nodes : list - List of nodes/nodes + Parameters + ---------- + nodes : list + List of nodes/nodes - Returns - ------- - str - The dumped structure + Returns + ------- + str + The dumped structure """ field_names = ["level", "type", "name", "meta_flag"] rows = [[getattr(x, key) for key in field_names] for x in nodes] @@ -390,19 +409,19 @@ def write_typetree( ) -> EndianBinaryWriter: """Writes the data of the object via the given typetree of the object into the writer. - Parameters - ---------- - obj : dict - Object to be saved - nodes : list - List of nodes/nodes - writer : EndianBinaryWriter - Writer of the object to be saved - - Returns - ------- - EndianBinaryWriter - The writer that was used to save the data of the given object. + Parameters + ---------- + obj : dict + Object to be saved + nodes : list + List of nodes/nodes + writer : EndianBinaryWriter + Writer of the object to be saved + + Returns + ------- + EndianBinaryWriter + The writer that was used to save the data of the given object. """ if not writer: writer = EndianBinaryWriter() @@ -488,4 +507,3 @@ def write_value( if align: writer.align_stream() - From 96531ff57b8328a93211af442fbb83534d352631 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 10 Jun 2022 22:21:51 +0200 Subject: [PATCH 106/599] implement Tpk typetree bundle of AssetRipper/Tpk --- UnityPy/files/ObjectReader.py | 56 ++-- UnityPy/helpers/Tpk.py | 511 +++++++++++++++++++++++++++++ UnityPy/resources/uncompressed.tpk | Bin 0 -> 1029887 bytes 3 files changed, 542 insertions(+), 25 deletions(-) create mode 100644 UnityPy/helpers/Tpk.py create mode 100644 UnityPy/resources/uncompressed.tpk diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index f197ac90..62bda2a2 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -1,8 +1,10 @@ from ..enums import ClassIDType from . import SerializedFile from .. import classes +from ..classes.Object import NodeHelper from ..streams import EndianBinaryReader, EndianBinaryWriter from ..helpers import TypeTreeHelper +from ..helpers.Tpk import get_typetree_nodes class ObjectReader: @@ -58,10 +60,12 @@ def __init__(self, assets_file, reader: EndianBinaryReader): self.class_id = reader.read_u_short() if types: self.serialized_type = ( - x for x in types if x.class_id == self.type_id).__next__() + x for x in types if x.class_id == self.type_id + ).__next__() else: self.serialized_type = SerializedFile.SerializedType( - reader, self.assets_file) + reader, self.assets_file + ) else: typ = types[self.type_id] self.serialized_type = typ @@ -80,7 +84,9 @@ def __init__(self, assets_file, reader: EndianBinaryReader): if header.version == 15 or header.version == 16: self.stripped = reader.read_byte() - def write(self, header, writer: EndianBinaryWriter, data_writer: EndianBinaryWriter): + def write( + self, header, writer: EndianBinaryWriter, data_writer: EndianBinaryWriter + ): if self.assets_file.big_id_enabled: writer.write_long(self.path_id) elif header.version < 14: @@ -150,20 +156,18 @@ def reset(self): self.reader.Position = self.byte_start def read(self): - try: - obj = getattr(classes, self.type.name, classes.Object)(self) - except Exception as e: - raise e - # TODO: only specific exceptions here? - except: - # HACK: in case the parsing via the class fails this solution - # uses the type tree to set the variables and then changes the class - obj = classes.Object(self) - obj.__class__ = getattr(classes, self.type.name, classes.Object) - for key, val in obj.__dict__.items(): - if " " in key: - obj.__dict__[key.replace(" ", "_")] = val - delattr(obj, key) + cls = getattr(classes, self.type.name, None) + + obj = None + if cls: + try: + obj = cls(self) + except Exception as e: + print(e) + if not obj: + typetree = self.read_typetree() + if typetree: + obj = NodeHelper(typetree, self.assets_file) self._read_until = self.reader.Position return obj @@ -189,8 +193,7 @@ def dump_typetree(self, nodes: list = None) -> str: if nodes: TypeTreeHelper.read_typetree_str(sb, nodes, self) elif getattr(self.serialized_type, "nodes", None): - TypeTreeHelper.read_typetree_str( - sb, self.serialized_type.nodes, self) + TypeTreeHelper.read_typetree_str(sb, self.serialized_type.nodes, self) return "".join(sb) return "" @@ -205,18 +208,22 @@ def read_typetree(self, nodes: list = None) -> dict: if nodes: tree = TypeTreeHelper.read_typetree(nodes, self) elif self.serialized_type.nodes: - tree = TypeTreeHelper.read_typetree( - self.serialized_type.nodes, self) + tree = TypeTreeHelper.read_typetree(self.serialized_type.nodes, self) + else: + nodes = get_typetree_nodes(self.class_id, self.version) + if nodes: + tree = TypeTreeHelper.read_typetree(nodes, self) return tree - def save_typetree(self, tree: dict, nodes: list = None, writer: EndianBinaryWriter = None): + def save_typetree( + self, tree: dict, nodes: list = None, writer: EndianBinaryWriter = None + ): if not writer: writer = EndianBinaryWriter(endian=self.reader.endian) if nodes: TypeTreeHelper.write_typetree(tree, nodes, writer) elif self.serialized_type.nodes: - TypeTreeHelper.write_typetree( - tree, self.serialized_type.nodes, writer) + TypeTreeHelper.write_typetree(tree, self.serialized_type.nodes, writer) else: raise ValueError("There are no TypeTree nodes for this object.") data = writer.bytes @@ -234,4 +241,3 @@ def set_raw_data(self, data): self.data = data if self.assets_file: self.assets_file.mark_changed() - diff --git a/UnityPy/helpers/Tpk.py b/UnityPy/helpers/Tpk.py new file mode 100644 index 00000000..4f2c67af --- /dev/null +++ b/UnityPy/helpers/Tpk.py @@ -0,0 +1,511 @@ +from __future__ import annotations +from enum import IntEnum, IntFlag +from struct import Struct +from io import BytesIO +from typing import List, Tuple, Any, Dict +from .TypeTreeHelper import TypeTreeNode + +TPKTYPETREE: TpkTypeTreeBlob = None +NODES_CACHE: dict = {} + + +def init(): + import os + + with open( + os.path.join(os.path.dirname(os.path.dirname(__file__)), "resources", "uncompressed.tpk"), "rb" + ) as f: + global TPKTYPETREE + TPKTYPETREE = TpkFile(f).GetDataBlob() + + +def get_typetree_nodes(class_id: int, version: tuple): + global NODES_CACHE + key = (class_id, version) + if key in NODES_CACHE: + return NODES_CACHE[key] + + class_info = TPKTYPETREE.ClassInformation[class_id].getVersionedClass( + UnityVersion.fromList(*version) + ) + if class_info is None: + raise ValueError("Could not find class info for class id {}".format(class_id)) + + nodes = generate_flat_nodes(class_info) + NODES_CACHE[key] = nodes + return nodes + + +def generate_flat_nodes(class_info: TpkUnityClass) -> List[TypeTreeNode]: + nodes = [] + NODES = TPKTYPETREE.NodeBuffer.Nodes + stack = [(class_info.ReleaseRootNode, 0)] + index = 0 + while stack: + node_id, level = stack.pop(0) + node: TpkUnityNode = NODES[node_id] + nodes.append( + TypeTreeNode( + byte_size=node.ByteSize, + index=index, + version=node.Version, + meta_flag=node.MetaFlag, + level=level, + type=TPKTYPETREE.StringBuffer.Strings[node.TypeName], + name=TPKTYPETREE.StringBuffer.Strings[node.Name], + ) + ) + stack = [(node_id, level + 1) for node_id in node.SubNodes] + stack + index += 1 + return nodes + + +###################################################################################### +# +# Enums +# +###################################################################################### + + +class TpkCompressionType(IntEnum): + NONE = 0 + Lz4 = 1 + Lzma = 2 + Brotli = 3 + + +class UnityVersionType(IntEnum): + Alpha = 0 + Beta = 1 + China = 2 + Final = 3 + Patch = 4 + Experimental = 5 + + +class TpkDataType(IntEnum): + TypeTreeInformation = 0 + Collection = 1 + FileSystem = 2 + Json = 3 + ReferenceAssemblies = 4 + EngineAssets = 5 + + def ToBlob(self, stream): + if self.value == TpkDataType.TypeTreeInformation: + return TpkTypeTreeBlob(stream) + elif self.value == TpkDataType.Collection: + return TpkCollectionBlob(stream) + elif self.value == TpkDataType.FileSystem: + return TpkFileSystemBlob(stream) + elif self.value == TpkDataType.Json: + return TpkJsonBlob(stream) + else: + raise Exception("Unimplemented TpkDataType -> Blob conversion") + + +class TpkUnityClassFlags(IntFlag): + NONE = 0 + IsAbstract = 1 + IsSealed = 2 + IsEditorOnly = 4 + IsReleaseOnly = 8 + IsStripped = 16 + Reserved = 32 + HasEditorRootNode = 64 + HasReleaseRootNode = 128 + + +###################################################################################### +# +# Main Class +# +###################################################################################### + + +class TpkFile: + Struct = Struct(" TpkDataBlob: + decompressed = None + if self.CompressionType == TpkCompressionType.NONE: + decompressed = self.CompressedBytes + + elif self.CompressionType == TpkCompressionType.Lz4: + import lz4.block + + decompressed = lz4.block.decompress( + self.CompressedBytes, self.UncompressedSize + ) + + elif self.CompressionType == TpkCompressionType.Lzma: + import lzma + + raise Exception("LZMA compression not implemented") + + elif self.CompressionType == TpkCompressionType.Brotli: + import brotli + + decompressed = brotli.decompress(self.CompressedBytes) + + else: + raise Exception("Invalid compression type") + + return self.DataType.ToBlob(BytesIO(decompressed)) + + +###################################################################################### +# +# Blobs +# +###################################################################################### + + +class TpkDataBlob: + __slots__ = "DataType" + DataType: TpkDataType + + def __init__(self, stream: BytesIO) -> None: + raise NotImplementedError("TpkDataBlob is an abstract class") + + +class TpkTypeTreeBlob(TpkDataBlob): + __slots__ = ( + "CreationTime", + "Versions", + "ClassInformation", + "CommonString", + "NodeBuffer", + "StringBuffer", + ) + CreationTime: int + Versions: List[UnityVersion] + ClassInformation: Dict[int, TpkClassInformation] # List[TpkClassInformation] + CommonString: TpkCommonString + NodeBuffer: TpkUnityNodeBuffer + StringBuffer: TpkStringBuffer + DataType: TpkDataType = TpkDataType.TypeTreeInformation + + def __init__(self, stream: BytesIO) -> None: + (self.CreationTime,) = INT64.unpack(stream.read(INT64.size)) + (versionCount,) = INT32.unpack(stream.read(INT32.size)) + self.Versions = [UnityVersion.fromStream(stream) for _ in range(versionCount)] + (classCount,) = INT32.unpack(stream.read(INT32.size)) + self.ClassInformation = { + x.ID: x for x in (TpkClassInformation(stream) for _ in range(classCount)) + } + self.CommonString = TpkCommonString(stream) + self.NodeBuffer = TpkUnityNodeBuffer(stream) + self.StringBuffer = TpkStringBuffer(stream) + + +class TpkCollectionBlob(TpkDataBlob): + __slots__ = "Blobs" + Blobs: List[Tuple[str, TpkDataBlob]] + + def __init__(self, stream: BytesIO) -> None: + (count,) = INT32.unpack(stream.read(INT32.size)) + self.Blobs = [ + # relativePath, data + ( + read_string(stream), + TpkDataType(BYTE.unpack(stream.read(1))[0]).ToBlob(stream), + ) + for _ in range(count) + ] + + +class TpkFileSystemBlob(TpkDataBlob): + __slots__ = "Files" + # TODO: check if dict might be better + Files: List[Tuple[str, bytes]] + + def __init__(self, stream: BytesIO) -> None: + (count,) = INT32.unpack(stream.read(INT32.size)) + self.Files = [ + # relativePath, data + (read_string(stream), read_data(stream)) + for _ in range(count) + ] + + +class TpkJsonBlob(TpkDataBlob): + __slots__ = "Text" + Text: str + DataType = TpkDataType.Json + + def __init__(self, stream: BytesIO) -> None: + self.Text = read_string(stream) + + +###################################################################################### +# +# Unity +# +###################################################################################### + + +class UnityVersion(int): + # https://github.com/AssetRipper/VersionUtilities/blob/master/VersionUtilities/UnityVersion.cs + """ + use following static methos instead of the constructor(__init__): + UnityVersion.fromStream(stream: BytesIO) + UnityVersion.fromString(version: str) + UnityVersion.fromList(major: int, minor: int, patch: int, build: int) + """ + + @staticmethod + def fromStream(stream: BytesIO) -> UnityVersion: + (m_data,) = UINT64.unpack(stream.read(UINT64.size)) + return UnityVersion(m_data) + + @staticmethod + def fromString(version: str) -> UnityVersion: + return UnityVersion(version.split(".")) + + @staticmethod + def fromList(major: int, minor: int, patch: int, build: int) -> UnityVersion: + return UnityVersion(major << 48 | minor << 32 | patch << 16 | build) + + @property + def major(self) -> int: + return (self >> 48) & 0xFFFF + + @property + def minor(self) -> int: + return (self >> 32) & 0xFFFF + + @property + def build(self) -> int: + return (self >> 16) & 0xFFFF + + @property + def type(self) -> int: + return UnityVersionType(self >> 8) & 0xFF + + @property + def type_number(self) -> int: + return self & 0xFF + + def __repr__(self) -> str: + return f"UnityVersion {self.major}.{self.minor}.{self.build}.{self.type_number}" + + +class TpkUnityClass: + __slots__ = ("Name", "Base", "Flags", "EditorRootNode", "ReleaseRootNode") + Struct = Struct(" None: + self.Name, self.Base, Flags = TpkUnityClass.Struct.unpack( + stream.read(TpkUnityClass.Struct.size) + ) + self.Flags = TpkUnityClassFlags(Flags) + self.EditorRootNode = self.ReleaseRootNode = None + if self.Flags & TpkUnityClassFlags.HasEditorRootNode: + (self.EditorRootNode,) = UINT16.unpack(stream.read(UINT16.size)) + if self.Flags & TpkUnityClassFlags.HasReleaseRootNode: + (self.ReleaseRootNode,) = UINT16.unpack(stream.read(UINT16.size)) + + def __eq__(self, other: TpkUnityClass) -> bool: + return self.__dict__ == other.__dict__ + + def __hash__(self) -> int: + # TODO + return hash(self.__dict__) + + +class TpkClassInformation: + __slots__ = ("ID", "Classes") + ID: int + # TODO - might want to use dict + Classes: List[Tuple[UnityVersion, TpkUnityClass]] + + def __init__(self, stream: BytesIO) -> None: + (self.ID,) = INT32.unpack(stream.read(INT32.size)) + (count,) = INT32.unpack(stream.read(INT32.size)) + self.Classes = [ + ( + UnityVersion.fromStream(stream), + TpkUnityClass(stream) if stream.read(1)[0] else None, + ) + for _ in range(count) + ] + + def getVersionedClass(self, version: UnityVersion) -> TpkUnityClass: + return get_item_for_version(version, self.Classes) + + +class TpkUnityNodeBuffer: + Nodes: List[TpkUnityNode] + + def __init__(self, stream: BytesIO) -> None: + (count,) = INT32.unpack(stream.read(INT32.size)) + self.Nodes = [TpkUnityNode(stream) for _ in range(count)] + + def __getitem__(self, index: int) -> TpkUnityNode: + return self.Nodes[index] + + +class TpkUnityNode: + __slots__ = ( + "TypeName", + "Name", + "ByteSize", + "Version", + "TypeFlags", + "MetaFlag", + "SubNodes", + ) + Struct = Struct(" None: + ( + self.TypeName, + self.Name, + self.ByteSize, + self.Version, + self.TypeFlags, + self.MetaFlag, + count, + ) = TpkUnityNode.Struct.unpack(stream.read(TpkUnityNode.Struct.size)) + + SubNodeStruct = Struct(f"<{count}H") + self.SubNodes = list(SubNodeStruct.unpack(stream.read(SubNodeStruct.size))) + + def __eq__(self, other: TpkUnityNode) -> bool: + return self.__dict__ == other.__dict__ + + def __hash__(self) -> int: + # TODO + return hash(self.__dict__) + + +###################################################################################### +# +# Strings +# +###################################################################################### + + +class TpkStringBuffer: + __slots__ = "Strings" + Strings: List[str] + + def __init__(self, stream: BytesIO) -> None: + self.Strings = [ + read_string(stream) for _ in range(INT32.unpack(stream.read(INT32.size))[0]) + ] + + @property + def Count(self) -> int: + return len(self.Strings) + + +class TpkCommonString: + __slots__ = ("VersionInformation", "StringBufferIndices") + VersionInformation: List[Tuple[UnityVersion, int]] + StringBufferIndices: List[int] + + def __init__(self, stream: BytesIO) -> None: + (versionCount,) = INT32.unpack(stream.read(INT32.size)) + self.VersionInformation = [ + (UnityVersion.fromStream(stream), stream.read(1)[0]) + for _ in range(versionCount) + ] + (indicesCount,) = INT32.unpack(stream.read(INT32.size)) + indicesStruct = Struct(f"<{indicesCount}H") + self.StringBufferIndices = indicesStruct.unpack(stream.read(indicesStruct.size)) + + def GetStrings(self, buffer: TpkStringBuffer) -> List[str]: + return [buffer.Strings[i] for i in self.StringBufferIndices] + + def GetCount(self, exactVersion: UnityVersion) -> int: + return get_item_for_version(exactVersion, self.VersionInformation) + + +###################################################################################### +# +# helper functions +# +###################################################################################### + +BYTE = Struct("b") +UINT16 = Struct(" str: + # varint + shift = 0 + length = 0 + while True: + (i,) = stream.read(1) + length |= (i & 0x7F) << shift + shift += 7 + if not (i & 0x80): + break + # string + return stream.read(length).decode("utf-8") + + +def read_data(stream: BytesIO) -> bytes: + return stream.read(INT32.unpack(stream.read(INT32.size))[0]) + + +def get_item_for_version( + exactVersion: UnityVersion, items: List[Tuple[UnityVersion, Any]] +) -> Any: + ret = None + for version, item in items: + if exactVersion >= version: + ret = item + else: + break + if ret: + return ret + raise ValueError("Could not find exact version") + + +init() diff --git a/UnityPy/resources/uncompressed.tpk b/UnityPy/resources/uncompressed.tpk new file mode 100644 index 0000000000000000000000000000000000000000..5128be38c63ae9f67cdcf2d2e55e5fb69babd169 GIT binary patch literal 1029887 zcmZUc2Y6IP*T;9$b`#PQ5=if)k-ACP-H>d`CfQgK?7h)cs#xd(D%cei>>aU-0*WHW z7`xcO0-_)#fQo{>yzlFG&VOd-EGdyVWAO_5upx92lNQT_51{-M;KifLVD2?={_v^K1zl|ayix@jGoJq z%d6j9EB=jIfvexB4erCgBk1~YlA+LBU9Wz#-u#>OX32VUIh!p4zwKIvXc?*{-BXum z8AA0`za3gSwT#r#W^?HKDH(#_Trbv)^;eP_3%~gv!s)(BvVMwl`;nyyv*hcPWc%@N zwjWEX3ncw-k|9(cEu|%2$G?>w)phDO)kR;YB->YAj~1ruVKFV0-PL`V^YfKN@1ft^ zE0{-U>Cn;%84{{w3RRz5AXUpDS`O8c>&ySn&tn;a{-~a(IQ0$uJGY*Co+`(!!uASE zwxYU^l3Yu5A0_$!tLq`@`P_p;wB%;u-(gyYYZ;-XLrbTYky=J+IY>)8)d%<0lIzF6 zxqeD=e^YuX$^DIghil3GjqRYMo%{>`PWQLlzICv^ELmTctS?K}mnG}VlJ#ZD`m$tw zS+c$?x!G=dG z=d)ycu~hw6>A}BQ4<$Jc@NbGqklcTj9*}f>DE(%ASh7AWSs#|H4@=gECF{eI^3+LQ_uE~%-|o`=c9-tAyUi0^2{;m4G(w~2; zey{ZB->Tm${rR`*_ey{Mt@=Id!Tp^j_ji`u-&t~hXGyUDGD1s-mQF1rwT#koke1O} z#%LLc>mw3abi#%jsq317$K2}_<$u;keSOZHcm?5`}@ zUs`zuTKSC;IrEZJXK zvcIxqe`U%3%98z+CHpH&_E(nduPoVLS+c*fWPfGJ{>qa5l_mQtOZHc4H=1?WZMz+V zw2am=M$1?&x&L!H<-fbN|L)fQyIcG3ZtcIjwg2wc{<~ZI?{4kCbRUd2yGalBQOw-&Hm1k{hcNIJ4^O=mhA6r zFZOr-&Hm1k{hcNIJ4^O=mhA5=+22{Rzq4e2XUYD~lKq_}`#Veacb4q$EZN`bxm5p9 zlB6~y&r}De$@XN){fZ^qlO^{nmTX6s+>cnY9a*aJTG^3*tMOXdk$i zH(7GrWXW-pCC5#c95-2V++@jdlO@MZmK--(a@=Ieag!y-O_m%tS#sQD8K-5umI;t5 zjw<_yP&pMxseWWH{;lGvY6t$U;_4npoc{NCExCR8-?@EQa{I94c44XFud+M;R&iI^ zn}4ggtL)9c)x3-JA-nN!HSbdP=HF~@mOO7{$@XT+_EnPOGymrJ%#!0XOODShIX<)G z_{@^yGfR#yEIGcgd8snwIHWW@wqIWtNuNTIOh(t7V>+ z`H(!W*ll|qJf5)R@q{IhCoGj;@6~?2SNru|^aK8PH4oXV{g3WL?T7nlsr--bqkk*^ z+pGO`yG&pIEX#u}su5Ny}s{2Wy$4WvZ4#v>d8snwIHWWm| zUG%>zeUq#!?YDa!%5V1~uJV19zwUK#JmufYZ>c`;E7e}idAw(-{FmBY z|5pC1+Kc~P`7i0G|6Td7YB&CO<-dEi|B`;X9LG!kcaE1Vl|Qp&e`d-4%#!_?CHpf= z_Ggyt&n(%WS@L{~CC|55@_dUW&$n3ee2XQ|w^;IgizUyuSn_;}CC|55@_dUW&$n1| zykN=kf+fcbmK-mFe$cP|pkMnzzn-`E>v67Mk8}NquXbBM+KDB%6H7I2^=rTB*M8Hl z{ia`!Tm5?6>eqfl&m}wZ^=jOr=jz{T+@j~|-)jBcug5KVzUFG&qUXcESh9byWdG`S z%%yVte=LGIY+T9;+qhR6%7*DlwG9Q~=xGPZbYwe%S!YGIM|~4z@~$ZJdEys|WKhbd zk@tcO%Pr1THlf@MNKfhOrA$IOTLZGJMiH#LL9TXR;|{KXRhc~RHEy#uLz%0Z7Bq2m z;~9z3or7Rcx-A=oM*zDfE~yPjjw2UyRn}FN*_yabbVr%e+%o76O+jw2Q3RTTT3=8HHyFv zAdB5^mKr;N6nNh(RkIKBGLVbACUvRx%m5p>Y<0Gt8e6T{0HoGYi`+bV63B>Lcdi<> z23%docI6(x+7|R1VIngcrXx(7SsF5v5 z_&#PWgEFtRzTT?*gJx6aK5D!O5-t;*xk#DdTtyKs!=tCA+;FdELp2gOlZ@Wq!4swj+So3h3S_lrf2yM?bwrwkoeY~{iwI;>;fIAhNQdxn1~R?o(i(ekfCG7; z=0OnH733E8tunxY6njg&#^FHjZo0RL+ZxLqCOu4e!pDneW4WcaWwxHRwsm4TknxTQ zupFm9>>wLsUW-xbnIJh7dsqSr%KV-9k5~@mn)GYaP51zrl6!4B*AF%T*;=@*kSCf# z4j2Di%u`Mw_L7hic5)%-mtKHj#m<()eKwbFDOD4oAemV;tIF6CWgf42LTm|goBN3x zGxUIzdCR@QM1;EYyKV2anSg>a5uJ`sGf4zFJ8(`wg&3MPNg1jICQ=}tZg00r83fCm z(|t~WlNf0O+vHK(N?Xr6ws+Ac2=bbIDM21&s$-h;Z;=1Q{!jWhNL@m`^ly-uq@*M@ zv8KKYGC7lp?#-r*O3n=|WBNCj>3t-7rSxx*%W^N5{tdFd@asZuf3zFO3ngnxxJ}S* zAYYVzS;`AV_yEYJst>EUO@xf9`A}LCWmea$sZq;I8gxL0H551So#7`SOWnl{rfoqg zyp>)v=zu)vQv~ThkZ~>JTU1NZfC4h7ZC+b26{X0-?T@qvlO&34^>6c=K7y+vJEJ-| zA!UiUD{V(kEm=80I^IiKrE9B5T0Cc@3KrIR&x*AY}+DU4>H|xsq`n1 ze`9TNCSHOxB#e;$1d^OISo#ylluRbNKbbP7KbbP7KY=`!y-NBM$n4xX(w{)SDcm9b z31n@_I_Xa!TT8b|e**ca>SO6oAScv(Ed2@O<(gNdKY^4qluCaBS>`S^{mGV2My1{+ zp>zX*=@c6H|j+=C~ZD#{3LqV(di{PC<&3E=PtO^D~gvj5Zl| zKvrblnQ7+jAgS4RW}1)-GB59hqc(%c|~UTY;_TC)*)u0g(BQt7Jv`N(7bJ5w#O5QcM>>!s8<1 z%;W&1GN~%bST{GGu3C_LwOCh^y<%OE*K6LX$s)aYQg3?3XFTCMZ2K7mVP2E166Qe` zIJQQx7U(PYJL#%RVkgC_uu6k5$PI}%CK^paT9ew6*yYfBK)Nyl(tAK2$b3*HEg&yv zZ_Ey!{!w?{o710TYK$_s5zSD+w>*@GMtN zE}34!xeFn4OXktQ&!@d;Ai`BkN^g{bALMZ9&v1D3Z%r<&LbK-j!ANX>1xPYaLU@>;!^v86F%k$e1#u-~hs9 zxZg^dr&^wtfe2S!)wZC`_!7vSZFjYq>^sO=9cOo_A&yqgAT3?3UBOJCBJ;ZDV=;iK z3Ci>b=6B`N(=CJ5=QLRL{BHY0JO^Zv<7&h%>dQ7eNJmnqcm>F^+}qJdko^GJUh}m? z7?8W%U(3`Bq{jPoO&Mun8LYPQ6!j?kF?RMG_=zUl#7{sTbUZ}ylBeyI`2gvQdPsa6 zh7N;|x134My2dfOTOxkcSsTXg4DxSO=peoi;yB3g zI7QH7LC#1zN1`Lhu^A^wbOc$I`IL;LATQ-^kXR3rP&ODXib*HP6YgiEwLnICTcou> zo@{!yiG38l4l=1_T1yp?;(=BfVRzem=Gf3F&GCekOkeS?pj7?BwU?-48Nmq-VKu*lKS|)cO&t^U+qX@{G*>A~IZiJouw==IR z&v*yOh$45988blIi`_-WUqH?-JEzRVXpr4idt~AU5>-2>mdoIr7)W!2Pdo_ZS+~zj z-0UE&-Zp6ykWZU7H>syn_6elXw;4-lv=Yc8EswS+{|%O@Z*6Eba~YJ`)3&!w?Q_xc z0i?vgw~c!{mf|4Jj>rzRhY&2Ys^f7YdN&Yd`iYnY1xQinuuc{IDYAp?>fBAsP`wuh z64B-8GP_hD*+hc-O6n>uW5xrNS=zO%i)(?s4vR8ts?MAlzGlQuF@<7LE623uZwizth&*wjib0}0N^coebK z(=9lCYi`qSr(yGY`%U7un!GEa3uJ@iRSB{n*Ckz_WL8B?dYPE%7s%+mF>oaetsqIY z$+c_(R2bxWcXF+%Fi592xwe6{-J5?`T#>KgfO6eSAmzIBy0Q2l=37Qww)<9H#);)4sRe zbbOGIKxkkDm9b2gPNUYcZX1ADR`wv4l|6`MWe;Lm*@IYC_8`2ncOR+6>Hkj)5Q`Qd z7A-(5T7X!z0I_HR!diGq3(IhRhW&JV&vW+G(yu_?aP*;HVPFPniffkq0?7D;36fs` zxhLsf3^>Tgg4~dPW4h^kOnR9ZF9Dg7H#N@$3Xn;alPlGM0}2!%LtS&0iwdYPCSgUrdBD{%p&vbIWU1M-r)N@@c#+B?RpjKlqtDSQf(-+rtDo= z&w!j*d%DcVK&CV-mf0A{2kyl(8v{ARdybb~1r7xATA(Lz6cI~^UBzpa^pFg+0Oqnb>?gY}Gv`;z@$TxXAr1OBBQL6|BO^{9Q9eHNZ1Uc8cBk$-VwRoCBY)@WDzGwmR zx8ont0%U*E0nq|vXWqA>1<0ATia-mH58dAyEo{fq!!5gnFL2N84(XPMgJd`}oMy=b zGA-_M={z7mCjBhxFzMZsw-@SQGzR&w?31!l^h}Fie`f#O-g8vQ(eg}?OlKCJNiJfu zgZz^8t2_auKW`tRa0u_xfE=p&qe`Wvf`rSM2^`9tRjUY$0`if2pD~KM&w1W`c_)yj zmLm~gu%>5*oGY4w0Xg4$Tf=Cw0gpW=hrHNHU{~`y`#*yAIJsX3%w?(0rE`yv+ZN3woFZpf3j1G z{nC&b)ao2yDR}@AA>B&{XAh3CFla)R9Czu9jVbRe&EZRiRf@KY8W5pV}irmHML_g6ce z5ttP+TYL(n%vmnp50aRiBz**jY;jLEHMX5{j+|73Sf;Ze zmgy{rWjYIDna+X?oX*-#rHAugtm#*O(WU}z-ONGF(XTWau$cqGn>nUmfy^8`gNelw{EAMZKK_L6f4oFV}nO=LT z*d63E_vezP0-5N&NVa!CCbUkJ?H!QCtxIHXXs%L82})&v+}(DMZ0~>!YL9L=ehl(l z`)b+V0omUEwQTQz+~!{@+dClb9sZ6psD&(})89NPm>V)rT1k^{CEkGycUDM`1(}pQ zS$ZtUu>9hD6PeY0Y86480y*F=&Np!iWU99~pA!kZinN_Y|HCq5|HDJ}^&vNi1A$aJ zZwN7+2BakV1_W({Uy#d^FHbh=fGn!Ly4GZc&L2W|ZtZOAJcpiXIYM9$p$*;@A$Q6% zLF%0i67oS-$2~8zPLM?jSIYtnWM1<8WOHBuU;yMR z|8_Yr0Mg#+@8r;H$4Ovr!C8Shf%AxvK_o22gixy=w%sKiUXuY?DiF?6jioCs?h+e9 zv)4yMR!YwR8R2xx&KOZOIQvkJaR` ztdl^}a?+)Lg0$uP^SP&?H-dB&cNUvo1af=ra_L1N_ch$#U^1>C1zm+*7gPOs5p9N- zVIdT_-Vgau>Zi#^s2>I#O?F9*L43{@sWHgLxYwk{AS;tsNsU2%&HPPj%%nFXCkr*k ziC&O{IX{XGKmz&Q;-er>6+JDPdrgj(16!Kp%T6xH!jeVe#~_L2N#$lw)=~zkO^~~4 zACTSya>#vHJQCze?_sw&{04Hk>E|Yuho+JMc;Z272#?}JGb z$YTEz|0P5?TW;E|IfQm)=G#9N|I=hZJ{!c6&jzvNvq3ERY!FL68^n^&2C?L`K{%hy zJCrzy!K9A~#|tfC+>Ce z0g$JYpOG<$NiP#Kbq6^%|2Xt-XbCd7Jf+P9L7q!qO+L;GoFHk=UM)4| zGQCVpjX{pjA0;swWM%DRQa_Mi+>c59KxTPo%R&U?*QVKC<5Q;0bgD6Xk@1(K*q|4clb1uk|f!JdEBg_sZ$h8To3~T`MV)DCEKadmh-<4St$kVloU=j!N ztNS;JA|P|TbG?_6-j>DBi9FW+5%NFLU6cKyJ4nE}AG$*?O*TOb^ed3m@^tA}nyju> zTMN`@K+fwpzheez!9Hj#cuEKsBB7y7FfM2^U?BoxS%{nxLd#-TbR9-<=mqj2S<5Ut zK(5VLEL%As**Q5f3V@8x&&gq*z(@%4OwqGN#=Ai>$}^>YAkWvnApHvDclQg@uR!K` z=S#m*Wt#qwvkV|>+SkhB0A!i}c0bP+5V=4e^RMz>M#M6QI4#5%(laPDNi3(yL1{mb zZs$R1Kah`-4@Q_dF38`R|H{$}cwlP7%`kp7IHBMQ7fV^1ylFS@Io@jVd z`T@va?kA-mfGqM}E$a`Ehkc4*{Q)wgE{Gou^5k1Nl7p3+ZzpQ}U;x1rQTKD#|OxJ3wBpeMNd9 z$lvZ)q!)r*9#JjO}_K|vB#d^&R@j)+)A({+GlYm&#Bp{YF35X?4qV6*=O#)&`lYnrV zWDeB-(-e*Zqt{JCN(V*L$xb z%l$d9N$%iT*(af&g_PK%MD*7-ai7OQ^mjKw)`RFTaDu#@_>P=D2l;aF*1>!qb|zJ?+H@DaM8~dK~e)kbuz?FBq88HhbQB-^ahKsrG5 z*Em7OW{;yX{C$z&(-&o5O+zu00zMTE=d*pOb<|iVo zkC0z-e$6r8?nIftiExjSGBLTax!hZXBoX1c5#FlCRqOL#rij8;4(j|&ArrP>ki1y< zQlaW&L9(&%H6rXgLGo_ldpIeL$b>uZDB3AGCXi!_cNWp3RP+MbUi`IWoj?jpzAiTN zIgl|WCzkNn5#-L7m0T{{l_+x;5w3-l*<7+kUN=OUDWy#Gdk7%6g6Qvog4_e5<15IM zrBBhD(fZq9i26QAkW41RI?Gj4h_K~_Tvl^A5%$60Rr8q8RmchA=|f!^F4jlL8})tltdEel ziSRbHkWECmZwT2!gf$fMMg5octf7#t_1o(CT#S%!>UY$ekq!Fv*YB(6T1c56Gzl}c z_z6URH56C<2BNj2pFxf@l;6DpDQhaH z?*s5Rn1ZBI6TF{;GHp%mR7QUn5+u;nO+zisBM1vd0SLVTe<&Ls+oC!*rU zZe910z9yeJ%!;dyBci@^6fAR}?|vW8Y;iCEWmfqf_o<9;u*_e+zvb`%%4E0v?Nf&b zf@O+YhP5c~4w7;r>`ij#;Vl&{yh;~R-_k&YN6+9@?iLRb{f$FBtC7qN+ zZ3d8&=+3+Xl`_w^JcmrZkdIqF!GQ-M$*qI&g$E&-ty!%qk_7b`(duqhkt9gkTm7vn zZUjkZYgeo4he6U!L`8`pIfaPIPz1@@ApEJBAi1dZVr-@hnGT}AOo+PA0MXwf1i1`E zf0YpA%GQ~5AN{>SkOi#^iRdp5f-C~j-xdV94n%)d5M&vM{=Oi{9U%G(f*@-_^tS{- z-UQKK6$IG=qQ5H$@+FA=vLHxI8*8Y)EeMj`meXdw9tctlqP`!fe8)wEdjfVaPzJ4I zA!r>7S=83m%DqLdx|fLZILfl(KI@6_T1?8swq&lnK>4MFI9qW>f+qrV;qax#eijv&Y>L{v-&-Um8UO_5zinT7sEeqOf=xtfSM zVuUhx5HUGfkjMQ`_|2XO$PYx!;c1Yfj^YmWHcIg6T^)fAvj>GTqlj?p$kR{kIH^M& zX9`|*8WEFA$5j`0jP2mok*h8uqT*Qas!KX1b+ErnnM*pRcBpwvu*`HKYTgngR}cw) zn^3jR)g9O1jUKtr4Imt~f>+%NqQ4{v4L5`6Zv=vT4x+yX2=ZOW_jG6dT|kf@JANXf zzvu_@7l{6*AILu->MMRq!+$$$og8WL{W_EhbWZIE<~>xI*E_H2P`*QZeJHbs2)Daj z)!(_VQ_V$#Wqu)|W{g3S*u_MDQxEqU45GiP2a?j2DsL)*w)BU<;lBCAp9)W z5POdxU0s1L)$4*!KZl6wbwP3-5!LI0WHJ%ee}d%QuJ`2qCfqqZ5D`#4Ay}r72-j4e zeq7*qBKj+Gxau?zj{L!^E)0yNGU`il%Btf6n2GIG>cfE67)aw+|*WsC6I6EBPBF zzX_7*%5s_6Bgi06mdnfoL7w$yxy*5^MWl*lyD>DB)Y%idSJVM{+WCweZ~++~JwXn* zfUJpKD+gRaz8SnjR0er9f1{`jlI_Y7l|iCCIifPibKV?L`RXGr_+QF_T3;Okv7B-Q zv7B-Qv7B-Qv7B-Q8Fk^g@zP zlS7i^19{&0f@liz?ciO5P2z+}FB79F$Q${6qA5t8D_>d`B-WEJEerC3H{Z4RNKF%1 z)89gW7fm%eESiF>ajq3jL3R(`BbqYlWnwf1c{Bel(G;Z6RV12%#CeKDQ;;>@BG(eq z)UtJ#6iQon{|mK;nN+GKpGhiJlb=O*ke8h6p*xb9AaSwrlBfhZF8=sT|GvO`S z@B=w8_&Z7!>LeS;;!GwSa;RUKGA7Ap%9s`fsm`g9gg3~$`R~C_NbG=oTeM4#7lOP} zvO%`@K&~ji5($|QUUY+$RF}$T9>|F`rLvg^Qsyd0QUXh3koOxtkn}c4yypW+Z-cD$ zu9M9?kSBbKV3`1NdCL{DnFsPx`+C{T13BpbQ8x2Hx;u~RypCF%2SO97(?aRJJUVL= z#ssNrke8jWI87^oyq)llv=YeogMW~I$)uNw>6aky=YN3Xa(1>H$n45F^3EN|#Hx$r zojZ`>t_tb9APJrd>AN5=dMjLJ+6Yq8Q7Z4;fqWeJBya=O771mlABL=S_QZ%V2WpI% zp~)}On?YW6ZZw`~yOA#D*?}=!W+?4AB!nf0afLb4W7p&@xedtc&bMTk0l6f4k_OLD1UzPkh${ZT}7hC`tY>>Cp-=R#nb_$TeSt+vT1LDf56Bp3r6LA5M zJwz438K#DcsF=&rn*^XNDbTxE5oY9 z?LgjhzHhpm9V8;fA-Xf^Wn!ER1ASc2l*y{hXe?at11^rfB?C; z>JkYMAdRk(Qa_MX&q%2s$VTr-2@oJ<9pw@rKt2s@4%|vM;6P&fUOU@hWLT5f0OTX* z$6^DJ(eY!%1|aVzd>}ReNl2kj=2De0Ap*HB^LjaR%cPfyu?ooU{5@h7kcE|t#3~?@ zswRt7K$=|5Vik}fo@TKM$ZOtau?ooWjta2~$dK|B8Vm+Lp_IO3JB8UJ)FOkTWVlyjpjIfY}j$47szJk zR?!P2FQr&KT$3eo(geisI?A=|$eND{rE?M|hMgo&0NLjJN}d2xno=e;XVS;S)EwmJ z{9jOW#8F%oB%wS+f*k8Q&a|WL_9H8N8dvzdu=7P7knPU%F=J!%*g>jNs!?Iw7-Wp= zM7i-DN7nOvj=2|xjg=dNeC-@7HwLLqaY?N}e$97@Z9%Rtzd>vZa z0LayYyzcGwt{}ZE%eMD1!IVUwU225e1!ld%Bg8|Ng^^uo|f2lX_hj1Wyhe#;*r zMgcj)b*AVAlIb~9yawbAZ=cuXr17jkOSimE2eRD1!ha{}ZiyumIhNcUc8k~)WS?`t z#1fDb<4=-U0@qSYn)gGB+D~StOD|;cbvo$kjjoKi6tPP2fhg0MOLva+pgzWvNUX&w5TS( zON)XWaDFFt0y#PUlz3j4pqqpEQ#z!LK_UyH3RG5~Y78>LHBo812Z=n8@~-Nxdx=<9$M4bKIqLZ{>@QgzYx22tU6A<5gh=kFm@G;k3b$PUrWcq^nn48`>UAfEqit68X|NRMjl<}Mi+-A zAv0@kl+`iHeAIBG^gczrAIm{-kfi31y($H|+hGUUM?|GSgT(3kSXR&|^E442QqXHa zzG(SazUT~++@8{YKb0w_|BT=6A(ean8}_fbzb1c3Yl9?54i--axjgy`crw}_WLo@m zI-z zOhcJt{m01$7YLW(euNkS@`8VjY)pYvchtzn6v$B>N6W?($O#>zX)8u=vw(zjhRQaJ zDPv*{NNtx(HXlGf=-Nb^A$p4dWI|w~Y!QGg4lD_9zeZ{wFxI3#?iTm+I9nJ$42m$5y3q&BuN(k4H=KyD0D6gf<^d4w*qte_*qqQZJy;dOEmNO5F|xyTOkV9G-> zKLAN8NG>pe4`gx45`;N~Cy-^X+r?c#3O%<=cmnytd%Nq=BlSvSy+(vLLNCl#HThFQ z21sdSV|W<13Wo!bhf^LAO+f}1q{vJLe3v1mw|_m7*6&YQYfE3uL)V5tR+%XAScV5xr1mt9MAjV@K*$ z7)GnBW5bUVy+DRXR!BR7JeIObv;Y}ekS6U2a$U*w(vBdHx>ia%f)smJN;`sV^R9HQ zBE5LW+qg&x*I{({7|{!)GO|ka0(m^;3DFBAy&yxZ1M-+l5m*PL#FHV`0r|?CQSdlv zz{8u-qMWrjIs8=70;D>!MzjEVGUX|mN`Snd@qv6g0%TZLiL4DkvI=r!Z~=L-e7y|a zAgf&Kbsmh)G=Y55uvyaBAf=wolEwzv?%mw*1l7divz1(%)5Fg|ZQvW4{3X5tQX6@O z_y)++DbI+NL2?W7#L6I#yA*+yLCQRNVr7u8y?F&|NH0rUe@-8aujF;ixwajEkG<okq zCOv&AZ%WRENpD9^r{s1)h7}Y`F9+!@e?xjX$SbZ55+^_^JR2lVfb8<_mdPi`_su^v zzeKuQdU-<_E%wHSj}r@m)JKk!J`M6#%D8Z|RtG657#D6P&LFS4#)YfZJ9!_-mWI#7 z`#>r^pNaQ@?D6jPt|z_t%l9UhxWks(daey$A>Ie_zleXu`#?OAUYX2-%!!_h$t*VZ zK#F5aFiK$D0O^T+UAFo_E{nfh<^dpIC2TkI06WO$lr32BU{Vb7ar!4RDF*o@<5QUw zgOnD0n!$F$(gmcyXkU@pu>kqA_%AsN4pLMyjFvb0PsV^uEuAK3uR%U2-&C$nLeS(I zWM0+$Ds@6ANZM=sa{d@)-gdnsiy4s58@`ZM0;%$RA*}?`@7*Vh5RlCFtafuE2V_#` zWcjl)Am;|olWCxo!6J>$YJjwKx5}TDQCD@J7kHU^gC#q4Vi;xC9t~e9Jr$%ea%H$l zOMuLao*!+t13|t`*d;9q@L_jR)KxW6!kz5qWHz_+LCW6!y)JjYQ`OKvVVj@VLr&eMj$WPwdg4ane zOV(^0>-9|dv!WMBXJnV?1u`#Q5zH(>cBSl=D9NOkiD?NCS3#X<3i5^PONogf^`0*! zCW0LDe(5?uvsjC!6F35{3tuOZ2E^_NkE}7$%k)20)^f3R|kBgOW){2!4Dxv86P4;5 z8$~&gYih2g_b&Las|LxRa$4cJ@-h_2j$u28neND>Z)(LA(xf0yRz4*!4S_UQ`Q)`7 zkcHKYi`OM=|sxseV7@E_Nui3>=E zH&b5U09o6(u2JPLCGy7^>z@d0FzFWP6mZ3t5BtD)>Nzm62V>Jr~1pUFv~%tqg9 zJ~FfFJ|L&IoQCd$4h8a9%c>SW%qe6{>xr#=h*!wzt!L0Nbq*TAXU%S%Lqs2L$9=Z8 zZj-zfh`+6)&E%~>*0!yaFW`Y>x97+g@Ic;cf4^N#J@#m8l>3MK&7oqHS=_ONvP-;l z3YJ;hu}(7CD8pB=HE=)|q_^`8`J(_J&aOx~MhjBk)zHNbhx|9l(Ot(#P737HuFYM% za6(W8Ssqv+87PoP0*^`t3M8XDv-?M~VI^H@0_D1}nPENU5yQn_L2iz^Mf?@y_?S`f zS4=cPK8W2U{tDtqaEf<=Bqb)(ORK!;PW=R=DY04n6=d(w{-GxO4pNy}CElsZWc6q9 zs}=B9kg3_z^y%UP9UCO#l3xv4VoQTHjFCPA4=--3#T@L+fz$dc;o zB#R63Z=J24r%MR0AcyOJmY1kOz8$e^gnGSzJP+hz_a*WI7Rb$>TRiN+@J^6lJ->N4 zt1N`esJwpgK7+j};=#D;#m1K!ReubY$!{u<{UMY&tNH9^6)nhzK$?9%A6p(C404|D zeDP_J$-XJ#(;$7mH}MJ-ULFD|ZYiOchq!fucb?QbS-cZvzG~er-U-sx7HCs@2;@T` zue5Ct?*z$f&zBcF6!GW#Rm2TmRp>90mm5%~$NxILTA{rYAY2Z5hSW> zka!-*30x1HDI&=9!XIRE#-#6>ifg6Mf?QvHgY;RD@cIbpp&)xl^vh@g za;v9*gh^t8tZ#f-#s-jcn$K-!>!R0yO!ZBpUZZ0%$k(mkNNbxi9J4U#2N~xdFRcW! zzT;(Sr2%F5)fzgoZ_1clI|x7PKS#E}hui`qBHYpfAWNf`Neh6S6LT(F0QLrPq&d^n z&Kk`PK*}=8W#J2QSz&obIC&`+z93yC0eN}ZlreJyCVkge+#sz4a&z@9(n=ta^-Ny~-1oCR*MrkFG3z{#KRsxyfyG&XMF!X>d^IVo~!U4!@jXjMKq&si^nWobZW<9prXT zQoYd~H5CoyFlM_O*r|Fay3 z#d07Q#9Szr0~wMwR4fN_W#Le<9FsmK#&RIbs&5y|fh5-t7R!O$;TbHJ19_vdPb>#A zzIlRJ4&+MTOtBou-qwDx+<-FLa;A*2+<-FLa;8iaS&rW`G<|OG|Fay3#d08HW5$W) zK+@9E#d07s3)9m~))M5O;{V7wYbJe6j4eU#s9r9%1WBn+6%K>GyEln9?%K>GyElrt0NA|*gw&m!EF%khm?uoir21}3$ zF%!j>AX#bIVoQ)&h1t>zne^ROu~ddVkQLQ;iseAk>odf1s*EQ?EC=#-<2zzGkc*oy z5zB$h@y!*>fgEW4PAoT|jJBL9V=OnIjJBL96GN7>3~~nu^h}SKE>RmK(h((58|1zy zG9`^wc(VZHp~Qz}Ap}y9R%t9}i#@WD{{4R)9>mh&K`x59SQ-hWDy>=?31oI*wRx1C zNgor_y+Q7(zFQgzB(pwC8VTf1PnI+i$h(d2Nh5(wYMv~O1TxPzUm6MI`_><%kp`5} zjbzH0MjB8?H}RsV2B}G_O$(vmjF&?|T$y#0f#T>xYe10b?3irxIWLd{Ip0Zs7-VkYyh3ws z6XeCxmt4emK7j*_4)F#Bar>| z2V~_4^23OOvT_8u%X3gxjv((hejxE0WJ>c?iPs=k`4&jL207UJqr_`d#$|K9OTuGjk3NUP)0{^Qzn^O+wyi~1h@9Ah}qKGAdf^nDyq<*vF)gi5dGq?yJ6E#y*gO`a&7|K<@Sw%Gd|8sqsUxCCIeq>0(Qeg}y~T9-TN> zW*bZuwah0RbkeV9LBusOpU`BG%qKurMh$Y9vvVNJOIFAcVJ3ZdSKNbn7xs5Rej0IT zM9PuRjA7$il2ssQM44rfnxJk~lMecR-omwl`!a2&AyR zNZuv@Ine%HyP02ryw=e}yRz&B!Dnsh_>74D{1VFir{lje2Ql|iyQ#Ft0J5#~t4WUCFX@3*zqbba5@Pa|?1>*XdonXD(zy*F^bq?kMwQ*Hf~) z3-U$RmtD!0tG@60p-UwgZUT72HPq0 zD9gmYj33n(@umc2kk_Mnqs+IULEex0K*BW0D={1Ja2zQCIX-q2!ZarTAbVo>O5g?= zoRA`c8>A$$RKhgKGilFaONgfnc96O0^XQuodVv6vkew(wcaVDv6OnUA5Cm})J0+{g zq;E&XPRWgdJX`&o1SXJUYmSq^1aeXR#S(@<{v7d_gdvcpJ%7nmALO^j-(`9VGOu~Q zOiw|s_uU{vu)3=CcNu~Ql+i=5DPxA<0cG?MY|4~Sw+?nJyzX*bIGv?i;%U{3%xh-L70=F>^FM!NUoJGeOcqpW)jk-_bLK@_`RzY%e;w?DxAY^UgIwJb3 z+_;L%$lg*E>GN&!F8K=suf-F&GJmFg9|UA$(QEQ|pFtiiSt)aVkh=1E`9uy#Y;{~U zPfihlLH=z2OE%R(lKjd3`>0It{3Y!4XgHlpwd^*5+?{fdoLB^jEx0GeY=%A>PVaj& z;edtK0=da`vz%cB$@SbUXBa^~@qQ}jLP75I-{pUZ^vb6HIGqQ*9^+|SL1dwvjRu(+ zJxk6;gCxWz#+uWzAfF_BDyL;Z?oW9@&OL*CnEnw>z&K)%uY=ff?YX?a20sSbQ2MG& zRG9RsGCbj>sR9U>F%$3sW%L)6O&Mb+Q-=E!EGK2C&tdWaGNQ>XQ-uL#_{)(r?3yxW zx(%|%x7Npl8YTuHu9iBP7=Rq#GOC5I!a)v@D_dsD%fKKnwXAPZUKV`TsMZrCLYOk< z;1vj$G28zj=ld_vul3P@1v0H`x(tONA9a1)#V-tEPy^`-1Y}S%Wz@512s33~qgpUE zy=FB>nzqPx=`|n=q8G~9&eh@cCc~BSGv#b2$o7=4rN@I*6;$JlE_wvW!J;4W*M-n- zAe&uVq{oA}JX@s4gZ${-;_8LH2Wa|YIPC-<7kRwA=dorGkv%DU(Nj4kWqaeu>TO`v zPmer9st0m)^flrXAZ4-TlKledPuVBc1F0`)km`Z_RCGwH2eQ?*O{xdd;MpeC13B#7 z=ISF&c~)c^;;nFcb9+MML^&)Ca((>7NE0MM-cM9z*zN5gKcpNKO+h>b2N7t{5Fo!6 z9mMf>Ay1YNK_?>DL>X7Lx(ba2vfcHy%LGY~|F(baGM|(M8S4Mq^(NJX2Rc)m&$zLc zN3Jl9WqXVM*%Gg85!CYrMdizE1?0u(m(etsn}GDiz9~%u^1qaSO`FqK@aaBhXU&&m zs!V#PNpHK)t0 z2gFgAB*$Grsz)r4Sr3TE(WD7GEG4O_>ruL9&~3o7GW0ifJHc`Ofv3 z_-V>;L_z#CWhhir-D$Z2;%RGa;|VqnIe|2GGq4PG-fuM)&^PU zQv@R+$gGyxEvB_Wd~Gdl{6+!VA7o?uYx4O&ke~dA~nDS#q2g ze$pr$a6sQ8uJ^?JRjuB&Y7LtkJNNFYwC{jNZ*|uLBrE0(Vt4+ z1z8iX2tqu_IjQHSa$iBZ3FMoC9iltPlfxB3_y#$lP7$mHKu-4TC@{K%xEgm9bdjdH z^q+aF>b(dG--UyU2AO#x$i##q{E>L*1@cPLh9r}y1GzW-K3V~4p8}beIbXgg2C^;t zD_IkQEXn&y)`TFFi>6>`McaVfRCaTj8L&Y1SKTasHXg)XtI8m^4{~h7aq{LB$b0Vh z@pmI&6_9vuf*c$MIn{fbSIwR%hJn1$wnkDfAW`jW+RWSyIfPBgX<4KVGOvD_BN14v9mQMCN%nCu)6XDhoa&&-+ zPLQC?2}D#Rrg@^dO4U6`_$qU_6lESDVp1j`{|h+f8_ghRbUV9GBYim4V|vzb2lcF1 z2W><@!nOm*b#d3r-!VGSf27q_jMb-a#@l`%H-lxN2l}inJt1Mt+fei4NrVvj2+zYZ4~o9LQz0bL6iL zf^2v1mv#f0f4b5JC%h^~}K4DxK;b7EbP1qln~uatrK6FbC~Aaj!E zCY!$doa5oxo<$i~%TZ~NlKfK1W8kVFK`#VZT)Ra6-X_TH4R=U11NqK-+!m`6<%mcZ!FkH?aGwEYuMmUfgt8bDX4&tbH*0ZIdDadUe zr)*AwywbQqGMXUgHJ>jTO_1rnOC_TTvZHmU-wl*=gsA%Q) z7vzq@U($`2GU){Um!agcQzhNnp#HoQLO2*nA?q!?I2yT z0cpMd7%DS1ZJg{HfLxY-IgKlNqyhOm{U6aCWO?B~qC1nmmnzoF9s$Uc)lZ4HfHc)N zOKm__dYYv+Am29bqHRe1w|+o!+w$5-9g0FUM>A!VX9fwE8AUd*#H2B7gXJ+RBpQH> zPg_AFyPmy+tSDR&V_JeqUyvXsf%xiG8F)I#W1bZ;X7&!UyKztBXwrf|4QBfCNvy@w zG0#8?ae!N5VcH^T36Lw&uN1q3+*x>~*quq=TNQ6hp8+|s{v@$7$STiC zVr7uMjs0R}ko>j+v9c*+tZd4hNp+(t+IVLGbEC;zzkg!>E3+j{E=2uMV@+-Y!90_R zo#)5=AKwe~V<+t?d>8w@WW+(r6Nbwu57L_0Msq02XYi~FWM$%G;)5VRBpysO<331p zhEL|KAa`Z^WF`P|ajq|eTNQIwkntrGB*O&qR>?auiv{_p^kd}F5p_V$s610L10e5I zy(iyI1-Yx{Zh6}sq@ba&!MyDbGQ)kD%$Pt5y+vO27X)d=3zFTG(_}mZq`s}8t%fYi z(aTtOzmrzHb#e7Fw+C6Av_w{oili?=1i*L+@dF(~-8IZWz zc$xo!taiuO8lM5_@W$8Hk(Qjf3-lt8#-fpuoCe9M z%@yl_yx`6i>wp~N&8=-DO?h@~taI4;v$Ll?&M%rCX5Al4S|yr-yp*|KG-cAeDf>gw z6l7Z7bkP)~si;}L@DDP%c#3=-2PCm1Njv~#eAxt9{eu+OmPq|T*1AiiejvwriBR3} zsw&8(ff<33L^vI9YWzFbuQRSoY7Fvt(i2i+ke4%Gks34U{V4lmsWHfs4;psNNH`E)DL8xyG-f_a=f>!wux$D>D_;D#O#hcN@@f0WYSS_ z#-l(k&$~iA3Z%SN5sX40FS@VDGadyp%6o#hou0{~kg?!jY{6sVj+JMEypXg;EC{k8 z^Hs4Rlip9VKNSmtT$Q&#EC_N+(WylyFAtJdk}f?2_7OqyCEhHVS|Gk;gv6mdmTvU*wk?UINF=}*`viD;10 z)G|p#gWQ%dIu!Y0SfoPB$ zOKy_31-YX1N@-h=`-eX`oKFFwZ9z`0I$fp`AdPiR(rzFRk9btt4dfWlanf!erHy5> zGzA&nT-j{WpCAi57j}M5*5~6XrUm@m0?)=jD=h%>Yr?P60wDCRp|k+Vj*K1D0z7de zJAvfn=7=o^l+m^{Wq5J{TY@YewpeTlvb1EW*b-!J>0GfTlfG5MSBWh_&Z#;_YzgA8 z^NTG(o*40j*b-!nXN*TJqIWw`i$3~$8qHsmjd(aScIu3zRN~9=uSgOEWL)ZaNrHgv zEEq2-8<1y)KPxF4kW=bTm6VMlo>L`d15(#m-`GzYSO%Pa*_eiv5(t9@%u86YKULS(`Cjn>XX%lG=>n z+Jq&B%c2A1-XZr%Z9v-6+od)jSsB?<8+BFIeNr1Hz4sC^wE_91;8&>)$VGJ*OKm{T z_gpNs0cmZ#xbDD_wKVsm+O88z!c0Kpq(KpwtG$pWY$00m;e8mD+&ZpY?#$ zhDk3IQyY-q3VxT`fLu~HNooUffoGD`2BfWVQr&k)*5*vE&F1(mQkyfmHW7&qX&aD- zhCD2_0qIQdlG=deW#mh3)KyszOKq6+K19US2IP-|KczMxlk28PZ9p#cOp)4vv^P$v zdy;Cyi!_r^`Y4hPv~5ZFOyVfWvnkKXsS=Rk^3hagY5o|N-1AmyGX z<@^iCH{KnxaRQRsJOpRDu}ubYxBnjhH>4#e>5QgZBWXGLTf*;nLj?=*!YCrQCf+7? z2bqvMG1bhBnDjC+76kdWV3$}BRNZKG({^PhzO zie4bg6IX~{AQz`zBC|S>Te5DYxqv<}3*yX1AT{ z0{On+2hj`U>^eozvLI)9evr)=5KrR|1@DkfyihYE$jf{nFg7(#o&fSmK^$f}SV)6p z)@4b}L0UXnQge{3#_Yx~=52AW@rUqn&3G!{mE=lt->0OYsP*!3f+X}vt zdV(BXcdTdua-!#0(E_Br@z}a;q(v|t11-K_EzU?in|w{rVnCYGn|_G&p_>a!gZ=%(C%t;m=N;Lwe~W zFCaH%GSO>3Q-;@tNa~p~W{hIedv(q=(q}+^Ecgk125S(ICBv>8ru>lBG9Yi1^hw$S zD)uMws`n2+z(a^xpRnVV~|4ycMdU$ zV34tOil7gJoa?!Bh#4I~nj3wM2k8myL#9P99kjt_|B;BrB{-DuFe?kjnLiR+N zi-7#6V4`eetE+~8D*gpBuWtVTvGyMDQ5D|<@0nY6Sz16K5Nap^mXc5m!jh0pHh}~i zDos?1hz(G&Ar=gxfQl7RK|mC2C>F#DC}2QELF^3+pg()>Qheu}d+*Gh*+u=o_wxJr z)BWBvXU?2CQ|{ckbCsn`PES-TOPN#_RTYuXd9%JxvhfjhF7`2a$17#fl_-Oc;X*P^ zuw5xqr8eV*WSV0t+z=u4P+alGC@Dkh4PmmllGcF2q*fL6xM8wbZBdkZ=2 z>o<l8 zE0n*P3@$oc`P(N=mA|Eo^mjo*}8-``S3`di9KfBR&K^0!Z7%HL8(&R3-# z>2IGLUi35iTN}4W)EilEL*txmbz&rw10Ax}iIGe`>AqX}lF97CtCcUAoSC><`I5;I zMMo-MGRa9ES@a895v+=En;J`Ps$EWdWd)PJJG56;5UKgB`~Q>`Os*}QtE^x$F)>$J z!Q`l-qlXme#I+FY55HdkgsbLHPnznxw0ta=-I<@C;x<0X+zMC3TYMC4h#eVB}!;{cOmi>$mq%u=0`Rw^c1shDV`VxpCb36<(k%t4FEDR>0ShD1(( z-YCTJ!DM2KNiAeKiEJVw%gMyei>Pukxv|hATuvruB_gVvOpYsxA#CL+=bCb7KQ$_geo6?%lNU~+b%wz7iB(4yLTd(nzu?T$-+30W~PXAoN9 z&uEz()#7Nr_faxuw>U@L4Y5q;mT|lr@;4kZIla{xd`b;(L1c1ctDDp#CL)`N$kH&W zn^#YjhRMx^9^uk3IVVw1m4?Z%qI!Azur%6iwVFy(l`~kChRM(t!&GUQOlfhh@-mT4 zM5J9z>gQ!CyO_)?^a$JKrAlNeyO<0w%F3gy6u~1o_8`BNGbQI-)sC3V&Am>|JDD`k zyH0(>k;$0OW7XqHCIjPx)V!0)Pu+i3y%v+Dg&tu`nM_UmtnSg7oLF=c-bpm_MtLSn z%1$bhqmGoJH7g$XrA!ulN#t0_AbpKU(o5{U}_o+OYT#~p?<;i4x(J4jEFi#q><(&6goOf-QmUFQz z1GF;>K9|gznRBHwi%D+Yl`@fFa(|&mJl9gHOA}XyTuWp^(WynMKS#OWoI(+8e0uoZ4cA~|XM$9O2qhGETzt5^D&%+DLHUg>XbCi;XD zjc7hnC1SE5Z=^~z3=?VL@eA$syQ=vtm59lryjh%xy+ovDYyQh>mll)b`;1b%w3w_+ zj8eO_n0#6ERnc(Flg_b~rTdi(UEF+$+F!_Ie~Sa^NERj~t&-fS^3ooYA98=j z^M1^gx8p==w&%a9_VF=U)$<{BtHb1kJ|`;MnLLm`6zxl!-=S)Y$>O{_RBaKd*^&R6 zsx2lb^%<>7%;dquXjNh+KNtN{bUfy%4L)`2W1i17-+;A+O$<9o!DK{>k!oOJvNUg` z+Sx~>CLlb0VlugpC&R6o$wP^eEo4W@L>S)cl#hKVQC;$z)cK+3ImEldJn&uj+=$>7tcQMYd zkH>U2ZrMb=i@{`It3k@QOnz?ti&`*avMzVM@*9(7d3W-JgBL8A#5&hj=W`ILu?lS7 zYsmc#lZOi)QSY}hDeqCCwu3NvwC8H|ITt2Hy^7W6T$qgSb&7hwmB|f#Zd9jwF!`(R zUbQgA&Oin00QGL#Z$^E4()#qH83@;m@KIg*Zq_WX?Oc1si znb-8P%aQn>5MY_#%l=UP6_dfK!`0_pm^_(!O1-Pbq*Hlk^*I+Nuas|7pL1c7Us0ew z=fdQgf!C_fxiHx{aFg2YFH?~>cyWbE&7jR{|38!Zm09XgASV4Qi_}LYm<+8PrcOCv z@?PcpYH@|h!m35;b1qEotGZtu-NPhzaNEHhunAFp$i=!3sg>olYObdI-5Vllo7avf z$rQy4~S*JdVlvMJU5(OyQPXpG;G)Z--=Pn=^*4lp)9PJX*@oJUUFK z4WRo}eikcbytNvf1W7&LuneX|h1^viorV5d)%qc|+RkKM_x0WPqbvtWAbVUE-XT5K zdX4Igh-@Mv?|zsx$ZM$XewfTJ^au}0OwLU-RChm2Mie#7J7DHHG7F#DuWh|fKa93nq6|EK^?|V)A&!6BRTYrG7=0=FKd8PI_zZ zZK^a(TI97<5yIrI!sRMLm|T=t&d;j24`A{`;zuzMdp@CVWtiOD zXP%nQFmd}u`q7xcrD5`PBBEZwV6wmHKv6xG!3beeR+Umm{zw^$BHqm*WlqHsQ(KiK zrhSzg_T=u#l{-$E)NWf_?TKXaK;8rF1D@m&scBHqpn!7Vi4K#krCUpBjftO$Fd0`l zu5us}ig4NXS2w_I-80)=sWx#l8P)Lw^@;+M!+Q5s8?>3M>(^Ip&}K5Sf8XBgP&+LG z$Q<@Iz_yX!p+G$^W%5ed?9mXnTy)9ns+tCq z&4nJ}&|z|AqN`LRnA}>_H7^*xVWO$HXG4ttL|%VY(@c{2rD|5fWJ{q(I4dSsB}(&y znUG*|ThYRzWwYqEI8?eLX^rbnlcq@ME|bQIE;s2>q+x|gk0yGzN%Kj=JtiGOviF+w z7^3%?^jM~*EOm11&h zpWD=ptCuQqn_5(0@^=vw%jGpDb4#uZEu)Yw=crMf$%S2~s#idm z^zMDA>S35X)9+B#!!Q}%A7!v>;hR1t6OyMUsTbv&J|%CHFr&VWhF(pG%-Esx?%ZmhVef<}7o*_o`be72HCKt&Q&{i|L_8J-IU zbyL$2$MwrPO;`I=m^>HXz~$q`B_;)hJ=D0)q$1Hn&HR{jD(X>4%Sh}~CRu|U4DQKR zgnYV%deDbDJ=`hikDwAocrXmidJ)aqu(i|6o$6@h_V{Auc9x0fcj1X2H#R1B7Ti@p z)yJkY*-*GqnaS`?Qh z{<-00V#EGU2h9!W+>ktYtp>7sTXD--QJRwmkctW31?SeejytdU1Q z=)?{RUYpZ~d+JL-zEMS&Y9{oU(Bp8lobRUa-`w3C)(H0j_RCM?)4W2Fi+W5`qdm(^ z>^Vv8=wmXb*Cf@lm^@!tqjvN$S=IL;6+=v}NX%4ijmd(dTlk)qcXs+Dp;necGEuY; zV@S%#@sY{81N0Aw&SE${CEb~J7i)!~ElV2-- zQ@aP5Tr=p}L8oJz<+dI8vZ@jGQcVi7rx;amP{pYu|uiqqPwxF$y9QY zE+o?k^9svM-E~?=9)kiG9MuSKQw#8qrixr*CM$ZZPyr@o=yTt^iB!r^ljTv6$?`tS z`*5d7c``Y<{N!?J7n5lf(<;8-|8wVDtW??HhoBW3jx89fo)|D0-eah;i^<9!58@{a z{Lcb0c^Zj#M#QeDVDd)Kp#{=XCg=8|RJ2hqkeN;-u$^Td?DLTNP!N-^k$4*sf>Z~P z$WEAL^7^3+dj%td$s37>)C8JI)8b~u!j5^-!=!Qm5kH=ooQ*`rlT0PIKS~+dq?ml4 z^fYtV&7`Q5h#!Sgh9a6{PRhtAlrl03ncP&?tXM{&OeO1<$!X=yie+3fc^iqa{kUXu zQbn_3S^rEfub823fthSaLV9?r$>fBAGw@U)KX#e?f`liPv}KdYjzKdj?mc5wIa90w zj@`+P`iYuh1;f>|C?<~X&LC`SSnHX6R%v1%FcySkWr9X1B9wIVC zLNflyEoEevBW2{sEoEfYN*OtFOPTv;9(9IR;M&SkPYu|_$UNw?zes#r`mmTXc}IVKB|x2UNclW3||N){p{<4@(J40rbwGa(s& zDko(gd;G>rc|9bk+G}W7c&uQJDkzg)y?U$LXC~|WJgcT@L~4l0%9b+TaxeA}OfKs; zT`li1`7SYCE$=bO9?*1vtbQUjL}c}|%m*bqm7kd0o?MK6@&kfX5s?8QWn@4|8R<(Y zBLhOpeAQ|n9rDDtBi!0%){eByK!aZDN)Hz}5*3zN^29^sLL$yKGZ)YOZ~j`G*k)QicV6@RIz z7n4PUZXfi{wJT4eIFu#+1$+DrZ}xnvXAsliwA)2XWJ=^qd>Xnjcu>kcHWO`sEfZ~j zEfd;byT09hllf6BS1=CYzfz?Y^y;BD7%-XGYm#c#Odjup1SjX5CzEfHNGD4f>0~J* zrvgkqPfX&xIP979DxTC!4#rG+l=Z|1`u^8~n7mrHL*1o@WNKlB;tt%t!ypzOH>xEUt^;6YfPwL zyX(EvbF|c3DRrxUtyNi=Y)Z6NWnogMxNh-B1(k;eErl(AnX0U7zi$1!r8ewAnf#U5 zo9J}**h0-~I~u>(cvEq|5|tB^Hxnf)Cnhjs;#N-2humJ-*Bam$!Ce-N*|LR z#lw|8CTpr5uWD!N`;qjW*zY8zkIDZMCndC5GcVBWrFdlNv|K1p1 zCLGuAWTlVE7m1UVJ|<os^MtyO4}Ox05niSIrzq5iL9BUQMu$-cNj>EM?NU_yhki6>JYo9;$k{ zDyzlH%erwwJ%EYM#mO6@TCzS98o0hYybo{6lSAU~=1_g@b6#jFxb{_Lm({L!XqPMLQn)nDnkVRGm1>XG9}7~Zw)^p6WWTg@4c6wS+~T&ya!6*$sDHRI9k)LxV;*om|RzWJ@39_eN1*%epoqe+@$kSrAoby;v`vI zT6|T{H5ZdbQtwv0vg!HamvOYs^41lYj2kds-6Jr0v*c~{aYQEjOa3mA^SrH1c4luP z5)A%=Nmgk?e0WD6$-{XulT>Mi+CML4NDs#ulWR+_E2Z7Nii|58uj*6ENZ&G9P=2fW zU?Gzq%6}@CZJWuxgH{gW`7+(fF_}<#n%W)6WKZR1mEIiywqPc^t3Iuog`U$|O(Ywm z^OfRlDmt0GQ}V8gP9_VJi&S(nsgtU!`lXPJ-!DlSX?sYX=i#SMt89Vxwq0)ok zZ4$;XmzSveD1?10!k2g?!5)&IUvQTsQ=NZ!KW||*$SO`*jT|sCLss%qdRFpMdRFpM zarLzhrIhpPOEIer*Oy$65uAgjqkZSUaB)LTMw-YKBr?Bbff89e z>Fmau$V?JhT(U%o{QbpeO*E0&*>kctEG@Z1iQGJSc1umAvjGHeZ#T4k}aTMisJ zR`bX_%3y8DI+elJ{Y}PcA`406xsnY^CaQd9Cjyh1HQURjL&;+D-NTTs8hx1GtY$=g&f$Rw7kt$M+bjNc1N88VGqV@SsD z1*Oa%?RHE#I(+|lXv84W(L1YUNnTM2-`A8X=mz0tDNtteDo*z-3KP7)w zc@o(|MCK`FWS&w+<|$=lo>FGds&mV<8vU4R^q1tXsz#aEDM!V4NXD;GDI;q%B;(hp zlzFqumz7$cpHQB^C4X0WGI3K8m1juC&r{0CJVP>mo>Jzjo;4S1dG5rygo+jVrDBDz zNq_P+=}W#Q{m9pj>p!;v*&w$IeML>FU1>XmT3zsOQX7MaQ7K}*!@BupAqHmtm}BGHqk4l>VLO>y#kp!DxjIn7{ld3klY zyrE!HQ8BQBQgUa-o zUYeNoSTCwLS;5zkmo7+Ms9q0Za%K5dYEsVR>+)~PgH5A?$x#E39!O!snKKzsRZ=DQ zBr~Z%B9{-Cyjb;;dO?Rt$H6aEz4PpG^u(6;gY&#<5xHPNYC-DIn~Q2wuPtlwm8N(@ zTvnbcmkUr#oC+65aDV4LlN|$J!t1G|GC9nKIZRLjY8`XE`nY=LYMdj^~jNg4p z8M(iYNw>k>2QP2brWHlJEM0?Um%@fg6_YEdbE5LXo;6?fCG#lU*a2;t;mG-F#g2;K z#(&N0lJZJ!Gc@nDir3XT0+W{pZdK-mWPJ0a%$qZA>p>j`ZRX{i29UlH14m+T`CS*2 z%>%b6eIXfNpOjhk+~~{5a<50lu)CD>4X+$gx#_hsb~&!XVorGFu4edz?61nbmDAs7 z(v;G8>sokaH6GzqQ&`ofs(#<8eYtb6Z47k0va1<}&%~-pGWg)4qTXXPk=-ORx#}z> z^6rmc@%)pXps|)cWYgJI=O~d$SDiOS)AA{aOsP6oiO{-`{PWHacVIlK<~h^q zx5&92D<=+DS{Ag-X%rc4x5_!PVe6bWISb)enClF-j<9lbW{Q=y4!2H2x3`D9Xxp5Y z&@QJb+LLq#xCv3_ekExCRs-CR)ecs{QPv`{T$H$lF|d~6CrEq2^hhU|3GH(_(2(O z8-L%ZOO9wVu*sk%zc#(H)+vL@IdrNbwMhI=`itSP<^$SeMSxD)V+jvLu^1FTc#!~Y z<*`tT77iGW^OGH70;xEVkcvIf2+yhV6%(K%;G^i2hTaxt01vt-Qy>5LH~t9_9(2%v zy7+R92U${JL0mjZ-M0#D!@rQ3R5rl6Y{=%~FAs!NizGFLdYD%>G!0ZkHA!Y6$_bG0 zQFCaa>uL_vm9u71ivPy!r4PK^LeBL-D`*|~fD%~fk|y~74(CNfX*Fq~QMC>hn4EJ6 zMol)>doGFvg~0zX(zw2SGn8+KQJCgudd^F2-!lXCQy$I37MCLO!og4M0n+A;yFdV& z0fsDT^Q9<}z*5Db3qmi0&IIGo)dby4&|L?epfkPa!$zVG2XZkdG9Vuc0wYiaE%z?u zLyt_j7rM>2P6b-1;)9s#go%3wwM=p#KrmSc*;Owd;chvLt`SD1iYUx4oD33S1)Fw$iEIIYT> zVmSlq*)FZ6>1`nxn;-aAB) zEWl1eNf$v1%2^R9OVVW*1_j9lMh0NtJ&*yl76bzAtANUMRF#efr=!D76b|!T$}b$| zK2TxKARms96@tKK69-{TADIcq;V90NO30y*4@XNmERc%*A(?O-j?t5+;Ml-pUJaz+ zxBy@l_*aGr#^b-~a!;_C!NU-Z2wE^mG%_6>pN>YQqZ886i6)A}NxFyQFxmuT zbdZ9v(&b#b6c1sZ%dvFS?VhYBiD8ul-6ht!p0$+KWMx?&_852N4& zI1!B;4P!9haj1DbrVTli#4QYq2^c`b^x~b0URE7hHOb-YW+oJfQuq%=4E__u)#(Ai zc)`CooS|DBhcitu(FBuBFxdoW=^!7@&eRU_;hfBPN+ukKbEQ@?9UJF)QZ84u**Kgp z<+xVjaDfg|aG~@9OQc|`1gts*7fFyLk`L2lUY%6~kHf`MH7A^aKQF`oqAIBdoU)K? zbM)y%m;{sIEOf*TbGPuLkh~~E5BL-E^G>ul6UBz zB#FdPlaXYu4qUh)0G?m3gXe6!KtuMUo3m2YASIS${nJkJ76i?5$K|1UYVD{ojRn-TLyQf!zCEep=pMV z3GagCSo2=5O1{UuElj*Z>pK}Pg}Y%PEYeN72Wz*nUN0H6-Iqz*{itoZt_|<%K(&-y zGzWodDLzmw#RsaTFsML_f>|O02Oh*5(1+mROyztelVy*hWh->cR%58##>kH>8}5Y% z;4zFN?LNi@3b;kE1lE|B0-VB>LHj^yz)|Hs9W;mg1K>4>P!kuqlq56(3xJ$}1wh_s zcwi-(>wATO1JA%(pj+%vD0Z(9mLRzptEBgF?6&B;^=n`kX72v z%d4;hUV}$bism|ArC?tW41IbjUVyFeGQ0xYaHZsRGZ9Tv&0>eeW9Tv87K#n>({m=+ zV1kVS@G2pNKKCk-+E1~msF14mPUE9C z{T93p@4&n89=s19z)tuOcH;uuXQp_)e-I7jPnOadSaLB4l9c~a_yS|(wV=^JHMO=c z;SJSPDVaAOgcCDd3SVR5*JWaa0=~h<^``EI9eM%DnP0)T@EwMuR&tARA;OTq$#HKn zAnpENcy#nzL!BTIZgj>!@*MpKCb96}7W@pqphLCWXUc_I`LBE-=-Lrl3}fhc-w-cj z7wfJz$f#TJ)8ICH(HuVK^n{YACmcR1eCuKe1qrJu z!-&Yo{4*3GL%y{z-!Ely%tAm+#4(68KgTgz4Dg)^zSltvelWq0Ciuw&KkMLYEJiNd z#BQhsbwpiJPt+G#qJd~A4$0)mMp&S)^a3@;0{y0Ij>GRJ_`?K$n&2-J>@~qY6YMv^ z0TcXf0uY9$g$XPZ*d}mH;OgL4bZk;NwgDb`)KoMRIik5}AzF%7qP1uvaz$IwPP7*t zL|!IGcSJ}3qC2`1I$GYdP-N>98V1WSYrkJ02@B$)OD6SQQGG-NagCA!x*>|1XeH|N zdk&Esp8jMA_5xH;OIOeXQB0zw7ymBQ)BP2P`Xa{>Pk2(M2O`RmR-gufvlpB`>h&0d7CLwjbE7Dv8-Qx>>m)Qez}`Z*A}VT&CZeue z3F11yE=311=xTy)Cg^U0d>y3l7*q0%?=+g*@_X+DXo;34%spii2GkMe;{^;nT63%i zBg9B?yci`;5GRV0#Aq=_j1}X=$znYAnZ5qIXz%|ndgy-_E&T7Ieg3OxYjj9wbdZf6 zsP<0hIZg}}!^CiLikKiy6{m^Q#Tg>(N(@Ny?P1c{(v_X?0(l=@S=V=^?#PK^5em1^fIrL2_RQ<-Qn@^M;Gb;w*8tI7dto=Zb7d$R4Vi{6o)f`=_G; z0it>!sTh>VXho-z&y&*UJ}8wSNu*e4i$e}vD5i>w#I$gCO6utzKISb`*h7#tqxpi~5o2mt@a0m;EliJQedF<&eYw}@NCZNd<%ol%H-UaC633N2KAG`eL>Cb#6n*i0B7 zVCg2u;S^aYKawVx;8Yz@w;xmlT4TcK z-?7ow2fFNC%!f;4RiU1sIfhmgAeS&b*B^wvs)Kt6WJf_IA&+^vJtNj)6{~Vq;#E%3 zMWt|Adc7doOHo-6HYh>0K#2b6zxgi((*q}X>veIsie*s36Y2!Bg8CP^;k&6$F#BK^ z=48GQgR6DjSK@%v7wzyfb77NsUet)qVoP|)Avr7h}F& zMhia9TpORD&Ut#-b|G3|B77362L?XyG{GDlP~rRs!xTCcpP!1)#Q!oE?(_7*eUV?tZo1`pQD}F+KOHF-sabydHxq$DnG2EpinzhQwB{c?WZ_CAs z^a94=?!Y=KHO;2(F~Pk$xKsB@6szes@w@m#{3-qtdo%fEAC_a8ZsC4$8EU0+_%}1O zx0+^_8^sRsuGlU1h#$m{Vi)`@ei6Tl12}hUh?~)5l*Cw79n{ z>X_1cA=}E>3puFM=!IO1jH2NRT}R#{qrB#r!Ki4uQMJ;Iim_2?jj?uSqw1heqcPS+ zWHiRQY-g}W=iBMEtPFN$rQ6vc-Oh$=XIk?(#QKNk(Fipg&7-kpgh6c%fr$04sAtu; znphM92e9wFA4AA${X+#-Q~N`NLD z>S7!o3R(w>;9ndb*1>h~2m_k0;2-U{NWr7QGyswW@qwwHXchjmu+;&pV@=R1J-IyGC@!~8G^AX^d!9WI($uh$ zGDHpuiK^@N7DIE*))1M;p`8 zrgZdtI;u%Wo72&jbo4?xdNCcnl#aHhqnFdsE9q!kI@+F&UQI_k($Q<_==F5;Mml=a zM2}&(`-2|c+q8v_Ru`+Q)y?W|Cb_T22+xIZhRr2H3$4^W$@i$Mx@$|OGcP=X|p7<{BBiQ`mE(-DVHOt8xY zyLAwQJvvCir+T(CaHd5b_PZ$?yqVJsoPK4*pJ&4FU?zcdb+A@X?mN;t$~xK_VjW{0 zYaM3|wT4;4tr6Bp>v(IFb%J#wjxR>;-uRN1dw`AHJ#6HD2v^*}a~^GtvBqMD_hsN2 z8X?L5U+EwPUk9%8BvSB=1W8Jgf^YRCb>TZ1!PQjzU&0r@Yy9bscW1i@PPWEdr&trL zQ?1jiP|r$QgS`n#6+!`LSd<+_82;lKWay6K7#iq3)0&7ylzUM~FBMVlMG3$UK>-5r zqYhH=lb&Y^XJ)<;UXsvm6>m`c-Y+ppRR_y(i(s;KmUXsujy1(P*E-MIjnh}HX~)ob zQzX2}l`~7huV&`INsuHFe7>v~AP#@%;1~RPIZ9H%SJOJ9*Z%)~1MG#?RO=#Znsu@D zB+gA8+#oBJG($E2HwAy90%|e7lm2NhOF!&dGIm&hp^mf;YXR*z}StVf1?(=wTrIg{DxnasgV{?;?O z+S;pojoQ>z)-@&;2;*Q`LFY;Cz`(Fg;OL+NA`B=nI#Vm7cRr%&s8%|PrK8#=a;+7? zT`pCS3pZLfSvOnrtodkc9hRnG;J*~qwX{Yi@On@OC~@$uYu8!VTQ^t>tXr&GEhAB; zt!rWNdTaxCFP;_IkYxp#Ruj)cFE-FEjYC5d9HN6p))+x9m4$0$HOBWKLm&=K^dvFJ zHbGMz&Vegj$QOCDu~w4r`fpr*)UL+**OR7@BAuY`?c>5KBP| zSr3({4g;d4<=;?IjHo^1F`R}Q@z&Y|ZA_4>1AJjLv+`BYPL>u+?Jc#(p}kB_reWQ5 z&_OH6lgaS9*A=wFDO8&0nq$IYC?b2Kd#(Gd`>mDM1J;AqD(fNZVe1j=QEN3;8;KsH zL}NgrD>b3eNa{V@sesOz3l@jCZgOb9hnEx|LQ4rU8%x<$0{V?TV7?CGP+)={Cg^E` zUOJ!&W@uk`1Rl56TI;O!*0a`g__}THbQh-JP#G$0XbSk-2JF)$8A=n>G|$JNuby)Z z`k5f11DtG{pvVNpI_QKyY0UFm1|E>%&v_rWp0J*@p0b{{p0PGq8?8;&^Hzj2iG%ES$+UBa`q80GN*YnDDb$iPW=L zAC+KEq0Y&MSFIh^YdqTzoQ(hWno5}^w?0u+c`!WdVt6dPiFd~3vdcp#;4PeWRhSh! zP=X{{gAq7LchDZF45Eixl(#jp)Hm3#1A6x6-FLiUy>0D+cdU1<_pJ9ZJEfhJ<0P|6 zX2-x#REvEaDA{R!Xt{8BV2{`7hW4_wXBDBnEFM^dn}V>s6s+y=Ulx2~?Xm{zE{@^_ z&*G1*-PR&3b{%e`n8wS7lmx3atfVn~YASK?CEqLHGfbYXUdB)>mGa$g(&%+qp*aM} zS@5~_MR=m(!Fuo|&LNHrD$mpS72kdMi0V}kq|RFe~aKy++6I?hBX7#dWm=eZ+%Ptyp3n#hUX)Ap}X<2Tl~){oXt*3Z^2 zcus&9^}e8sljh*kFuX*VhF1I|#fxy6GOhHXqL3WjZTx|8KRhs!pnyLyW4V${Hc`tA zCq+a__hQl!GAYaL!@E4sN-~Az{<8LCHzMCr3cN1wz)%kVLU$70Q!*EhM@?K7FUd$> zF%_$&c zRqYH#$jV%V2I)m;XdlGlL(t+ljFY9Kn8JbhWD|@x!6_0@3asD>LEJ-^>D-(F9B9h}BeGP38xSOlRbxL$*y1&79V6Fb{(YB#fU?B;e0n*>7-ZfkRAX$pmQ zZPTnSczPVJcsAx(XpLSwLsmRO0d3GVlVm9nQL!fLpaRZfKqbHoyjzR2O+@$X!Q>M4 zIMCK^XScUI*eN(i`i=C%>6kQ#RQ%~ZLrH%zrLbEPF|LPU4+{LOmMLYF44gS*gSKU(pu2f?q+wl zpRn@n0=tLZQ){Sf{jtys>+5{IzIvlOFO`~6AHbB5JFC4zeW?45+gF)JB8>lHn?$Gu_##oxQeB>bm(vyzuE+%QFd~CW_4Um}Ir@_Z#_-lVBtu>F zEECMu0lxpLgV3W0Z+SL`GX<%X{zH31k^s#SD6H5H2Wz9s9;}4}rnjKdJ{-g0Y8eg) z1ss9>_BFZzt3YkyLZ#j`#D(huDX+A+g(I*k0P-DR56pz?xjkcW5O8?M{W12j_Dr}T z^M$z>;+;85KgAIHID4plOt>thiXL_j!?Ii(l!c&x;dbbCR!@#rf7+n`C_s@A1O$zB z&_H?EOLn|H3cEG=9;%ltU-ivgY)ahRvqgbVX^5LR97dFywanJ$p35ehifz7ms>nf{cV?rEsq zm)jNgKzoqA)H>2W%0Aj2VUM)O*kkRJ?eX?0_5}MhGa>CL|Mx^Gz$F>Xg8oV3KiD>I z3+$$!1QwcLkqK^>AW2E^E$5(AP))k&{%J`%T56&g+#xlQBFuc53GOt(T_#wrgA}Zg zMP#KZxZ4ExnBZO$+-HLOB}kIi6s(lM&*cFVJZOSdCV0pM51Zf-6Fe$`Z^s%5d^;XD z!4oEU(gaUQz)DwJkKqlR7bVrSOn8+&%bsn|v9HF10-rW(F&mySQ4H4Vl@fz>I>?6g z>4~1zW$;mf2{z~;1skR1e(5)v;CU0&NWg`S!Dd})4A&iGS5I0~@PbU@=klTnUNXT} z9mL>eU1=+LMNV^2X|OQ1Efd_H3BH;RW3WTdBnGdU;B_5j!y9HjWaAn{FtMxlnsX~$ zgOFoeU~D$LYs$rN3#8_{_i-@MZpX9X{&06q?xb6|l{k>RC$%9I@PPe}elKLfefEP| zVziDDufoJ{%ftu;JcNDyhk6a9;3El=m;>z8)!V545&O|h8LY+(KF~9G3|qp-I>KFm zxMZPuZXe#6?lMsfcAIsuN0*`g^V4+nnTcZXKV4G_7bb%4or;K|`-KU^SAgEZAYrK6wI(J$%fR};nHH$A@?{2l;r9FO6; zgCDQ~_|pV`>EIUpNjB4LrW){+B7igPiS{IWvVE3)wtbF0#Xi?Q&pzM2z`g}8w5Qq^ z+0*Qc?Mv)S?aS=x_T_f9J;T1jo@rlcUt?cu&$X|!ueWcoZ?tc+Z?@;z^X&!pE%vSU zZT3QYk$t~D^*~{$}_TBb9_PzGQ_8R+f`w9C=`ziZr`x$$!z0O{5 zKWjf{Z?HGoo9yT98hf+7#eTtl(SFI^YQJp1VsEpz+ppR?aJH#Na5SI7M2$pA5A2mu z!N4eWGnnF+`E~mZE_JxfK{?;V5(c@3W`#6O_HOHD!hv8CO1Y{NYGUwr;B~q{GXubL zM7<%&2XwHg1}q)yLk&mz64k*oV7du<8}CcrvEQ}dv){Krut}^`iP4J|rbzf9)Evrk z7#?e>o+wezh(JA2Vz3Mxei`12D=hHUcz{cIZ2=Q`y?zQ@o1}b6EGZU*Ld>5N2DjE% zz(@AS_9yl(oE6?_t+006^dM=EZHU+75@Z&QLsUA6t&Br06U20Y3%3$bL9r_8=pY|x zdC0Rrm!_}YrqVdn)8+8NiVh<9lgdd2uMTQx5&X~o-2TG;(*DZ++WyA=7T1n6FwmD<3KD3C)NjVYZhE>D4{cFkWq9)^wPO-ISq^`O zZh31X3Tyw_{sq;Lka5$yTC5j8*xuzBt`h|T%(;@MpTe+ke3R@~0-iqOT-Loiyb@GgX3tLRMb z_g;RALrdMOE$}A=0+qMg3Wjhx0y-Y#iwOFeAYp?35@1Sz!|*4)&Et0)UjNs{`Pu%#?&@@N zx;y#KT0uhHlu#`&1@fUd^SF_expDV0z%B__kORG(FKl|nZh&2SunT1eyO7F!p$M~_ zgU0&pTJGE67ub3_y`4jyLZ^>Iudk8lrAn0dZDbIO!+3cw#Kpi@RP}PE8 zf}>3^#01Ca;Bfm0Y`4<6E|fZDPRc2FDxAY{De@qfDpAQ;l`0ry*Ww6T;v}7!VxTj~ zA)%p4h#o}i0?UPbo{M7sAey1S7@Vm!9-iJ`9N`>?S%#W3wSgl|C=kVPc{Ff2WsS#Q z4^QvW@cCjOfmt!&0L2#$2ddza_9j7 z4Qj!q7@QDfi0Sb!4kzlsg)sr}nu7~tO)$;`C+lFeeF$5N3P^_o$2+5(6Py#BcDSPJ zmxeBQlNzcIZL)HbGdf%!o@6~3gY|Jz&^r(hVEoTnjQ*yl9Qc$m?)cfE|tcclgD6Epn?rW(7dTd?6pEW-56;T$Bmpij}n8@1-v_ z!DS|xt^>Ng_gW_V6wkJGraPBA)y_1$+ds&K>dY77AP;y1tTup7Fhdp-0lh9nZx3II z6?{eJ^30URQF@q$>kJ36;i`jOn3efL3})-P@v)f+uGRq_8>=^!Gx7Q`Y$w!yssZOG z6r0{~wM3lloa0P!&UMan&UY?wE_9|k7dg|Mi=9iHOPv|c70yiODrc56+nM8B?Ofwr z>&$hobFSwRkknQwwQc`@P)Q3jen*8y`W;mYu9xK@3fE%B!Pz6#=IzBz&dm-9v_L_> zz`^YWUAh4;(H~vnzgDmy$dZ`XH!g!)bQs4ovzEcF>2N;IGef zGf(zCn3aGCvEXKsQ>4}$M-?WfRgF+-nUEm@e(DIhwO_PKJw>wLn zJDg?C9=Id@P8DC;l+x9t6W^SMJ597y&8(>hwc##jxwAqmF=BdBc{dupL{EMXjzueU zFVZbWE4Vuy#^D~lG;z4s1oxTXeiN)T!2>#|fCq!dE^^655Bg`^R^S@9-=XRk@D)H^ zMGPJ`!6Q0Yjy|Iq6V6+x9_qn;&i&3x=K<$IXO;7i^RV-X^Qg1hdCXa(`H@r9gU8X2 zcS%1Y6z~LA{-b&xF<7mGy6~8uC?+ak&B4m_xSkk~V>Q8(I>?7-g3eInQXD+P$Kc|j zth!tr*6E-E)-xbyU_ycCw^YEhCW@KQ-JeDuqBuE_d>Db}oDI%KXOr{1QU}(YG-@&^DlEe=UtPTks;*NQOrE5^8)-*SHnYCLJwtXaPBBb=9=1?_TFg=PBoD z=NV_Mv(8!XJnOvRyzIQl=0d4cFbY3RF@>-R~_7akCFP%317p6TVz5O zejU*ZCK@7MOm|7>6(Vv8buIE0q5!<4S8G0=fgN};SH%OZiHDp~3wAhfIBz;{Id41f zIPW^|IX9x3U@BQ1EJZDXJDqLL`{qTu&Gs&|f^C7-WS-Y;w}S2I@D;3Gza4v$A37g} zYuAHI;bU~p%Ymr`1$=_7?A4%@glN@%ha8NO1mfx2(BIIL#NbU6yrqLUE|2@wNh(R{ zJ36R?*V%^= zqO>KEnv&GM4`74+O3xw=Uz^|?6MUbyPe;0o7rZP#&KH{wR!Cq*qc=GJ!WxOLrn zZhg10nY0n#*Z+I66#T81;6TU(%syD|G8gGzfTpe?O1oE0v8HYu53V(O4a)>>06e$F zA!35432N!Uab)*NI`Awex0T!4Z4>r9U7!hHE_&W}g5DmXfVM86zL4kDgEiBI&D|Dm zJ5$_yu$EaAU!MzX#k}w@4s}gX&jj^NkY$1fCTM7aLrl=f1dUD5#01$UXljCHI*8%A zyH?#X{26+Ai&pf!kj`^Ex}Dt4ZrttSc6GbC-Q9c)=>oTh+tcmk_I4>@6-raJRntp_ zv{3bLiQ>>g&mN!p=%6|N46T0!&y=o!KJH;|Xt}18GY-9q;(^e@IROj$xe1qaYWrsU zyPm!{wAOQvLmLz1nxL%-+L@re2|DPY75*$#uA}*m=ksFxSYwHsbW7bbcOIl%5)7>s zdi&2!q3~ifYN7yEi_r}5!-cv5F)$)J1|3a_PCAG~XC2^cmO9A8pR}jK4+zyc4s-`$ zyi~eX97}^SdJe~EDsYeBi0bJc=~B|r1Anh`{P$!oq`AI}ZWF%mX8`<}r;Ma!0?+kB z++*Bh-C{S60>%+3xc(Ykgzmb!86uy1DjJ_z)t7v7R5z3g^;YWLr#|j5cetCD$~%d` zNaZd4Qi_q-OZU(-F3`=S>55m5Q7&DgVZpBl8z|aGVcY4Ys|Y`NC*v`0dYcl5nxN1G zeRR+he|A@y2TT7~z)9|CcZ@sM9p|3xl2BVE@U{-(P-%iH6Aab?z5!?g zd80^HX?K|PljchoqmPczeRK($Cy#R@Iofc1w3Ml)ip_$fuo6NQYr$pi^zgKR1{ccU za?IdJJ#n?0)Dzdi?=ekw&vVarFK{n(r@9xp)7(ql8JW~wf$B0af|azh`PqGEgX82*?NQH+@CAcUx~5>Ovg@`3u8 z5`*x^ln~&)EB6}rT6eCS_F!xoT$icb*Sl#SQ@X*;_%Wp$U3?!=_fQt@C_YYih*1Oe zum)~+gF2Y^Z?!N#y%rW=)C|@0Fq}@Oea&%ia!+^Z$d5_xE$H%F-QmuN^d>*jIX(<& z1!9!08y~8f;6xM1S2ef_P=|a~BLHK}Bx7|zPsKvZ2M#QC?{Js7cVh9!=`Q{fPI6Ap zEISN!hFXd@^cSMMZ9;%{`psd@p&7EJ4=pFDE}kxUnnPW@2kXJ3SQ8V2njk1( zwL967U)fcOQ*c(`3z0-YI0MZIRZA2eaUXNnxR2wQOe54Jd^8fW*0UfAQ_|sNe1MWB z8G{Q@f2c0D!-c+`0x*B-8o$7AhMyl8Pwuzi8Fwv~XlfYJD0;SUE6o>B&V?u4r`)IA zb?$oX`{c7@yoi6HXU74M&yE8ipB;N(w0%)f4Fnu`&fVZ{bT_$Cn3i6&a7j=)y(A2u zaW`uvK}g3L86}Cr^R8Ex8h4BPf*X2@jR``Q;Kv|!f4VT;1ecqj+62bC$N1u!E)n`* zm8ztf&XwW%aA7-lV6VD6+)4O!EJM}L*0pBCoUj5KJ?Y_EDEM6LeqVE6ci(W|bZ6*e zWB5|20eIoE6y8QBUmaG3r_Z7n1|n-XwKalg@qC4bF`^`q;hH(M~9;16$pf-B;Xg?pyA=?g#Ep z_ahvVK1m-VUvhV48Y6e(7^!v|aJGBgORz4;)4p-^uTM=V5NYolq7c7c7^)&Xg22sq zR?-)k>wLXrU%GRh1*S{pI=7f82Dj>wf-i^ZAPx(4kizGNUOz`R;$I3M>lt9N36@BZ zq$Dv|sw<7d9VS?2f;)8(!;fWY{aXqj1sZlNmw>a4!wOvo9!G0}drWYz1itC_NkB!x zvfOWil_pqaf`?4-unto2h;I6W>21=A*byh& zNWo)zuI<$GVJd3cAn3uRP#5!CBlANlpk5?}PY$*En1{JhJkwomHJz&HjdNeQU%TJ9 z-@4zq-@8A!Ke|7;KfAxUzq-Gri!2>b2V^oj``G#N;| zu1jq9OF+3*2M0g|hJxKA(lgR4(mQf!q%hJaa#+L=r_%<#GNp^wg*RmdqH@}yR~Ozg z5k9F5O6pmNPbzirhHoMH82@Oxnuzp|6h(?7X*aqrWgbpTA`9U?nR7K6lZ?C@(u;_K zs?>x6(P;aF%=4CP*s1HJTjCFO%StFfY;prj3 z`+hn6WYiAJBNdT>kwKBlNL6HTzc<#vf*bP(MzkpNQ7RY`Sx#S{^6*|kpC%} z@}GeD|0*@3`|z{_EdB3#>G1_j6Z~a@y(ZXag8e2qpaZJNP>|MUhu#4@-7_N}xf3Ik zB9kL$W$F^n&Q!2-uwZ}c1)CE25;F|tKv8o-WL)Ir$oR-euRK4K@u-uWyu31sL!Pv8G$+|XTK2#>p5QN-({U2*=$`9xiB&{ za#6$(rS+UlVi8{>nSq%EubX(HJtD?s+I1XUNvH=ne4=N%wytiOp^3(Z8IhThD0p0N=}dVY~2tS zu8-Wnrremxl$+3$Cb}s%Bg!#R9GdGcZLFJ1kvuOlKe8ZVT(EtNyMb`52t{{VPtwe} zEt7={vB3?|hmA#%R_Z+h)al=iWYD-clg1^ev87(XrI8kTd1xU;4KcSz?l1)+GVtkQ z3|i~%!Eb7sAlC$Kb%00i%BrP8VTaJp1no`G!323G=xBmYCg?0dlCq6KTsN#0{tUH5 znpjd(xht|fvLbSKatOX|JQwd!)v9Fl+O7FzF+r z;V)qtABv<_cs_o6?H@mh=zUia=XCnZQ^xW1!MrgzqJC@SG|LbPpI}dyo8$Qap~Hr8 z2kk-5C8i^3Lr)r_p(APO#NJM*XFN6>nhICbdLHd`c|3IX?e>U%_HFpk)g&f@Qq({d zP&$f@2(BkIb;&h+JbEZ*|jlD03%R@S3=> z57PE`K_+kj2))f6!Tl?J;4plZv>znk9=sUDADT*UF`DWNc>oCwAqV-a@;`r^`Jgd) zO6WtjMehIQo2NS?#-{=4h`ZIHF9*`+{<>hP{B9-qa^M>Ne4p_hBASEVoA~)?w*R*q4KacDWf8vRv)W!qd4|0;|mywKzp?-xuoN*ZH*O5_vd-3P7)QxS+j>K_}$KcDB4g{w2|GF3C3E71@yQVjU^Q2X^lBsdbnXkeKR%MThDox{+= z&&=1SVv5c#h~q_SO@6@9EIoK%+<0w}R+qfj290->ltOx2$=G#l`+JU?bH)A$ZLToH=v0v< zum-&S7oJFwoAxj_!(&>As>ig(Wfz~~dY2bLk(;)tRph2EYGqimvZGFvmaL3R4g?pB zB^Z2{3o}c*sXyo)YOQE+hiZt_@^4|4fN|3#@RrHAX%TqKVtiG_+r6c}tdjB5E49$* z;L|If050!yL&fN(0H*;#zGW*Ig|=;aV3ISy^`Czdu%JP-VU%`4roqtpp0vS}l*{uy zJtgKtgBd{q&7#@3BQO}>s;N-4=vNx_ zr(PLdC<_2U6790k2b9Pk^XouX^pI$yXbxt8GYHh#BHA)ayJlOU!oXAM>0IzqG=tXB zwx}{RPjP&e{aw1?dkQt6zW%sluuD)0P%9T9ZiO^KHxsB=SUE{2JWe#&wSoXU$Y}d$ zhiG0j9|{6*l5*R>kPkgF;gBf;3{wIiP4PfJZhj431HvRW#G_rJU8A9Mb-W6r-MtxV zu{%1sXHaEcE#_n5&~A<(#yVoDf~rL))s`;p80{489PJh@i1vsYLJ@SYcbP68iW&kZ zp$4jy0`x;qoEK@e6~zmMI9>9lO$oki%&62w+{TBgIVuEIEN{#qK!XAT0ezwscw$c) zs!B(L)6wB33RMx9RTKbOMIOk9BV=WB6%|E`qXRHBj?9dYmRO6JA(?O)+BXqPD)66b z+FS0mo&N3sI4s&X+Ao@j_K%iClhMIY8ZC<+2}i-vK#4}EL|Ir%|0F&X#e`eCL!#SDpl+5@%i8aqmlQ`sp324VvXtqDxHV@ z_~@u;+QQZ{I3YanP<+$&nG>T6aUcx^q=1v6+K$m&v^wl_zn#udj`Jjx&sjp-F-krk z6CE2J7d<(XW#cnhb_!ayLbq%}G;PP|=;#A*YIGjzr!x41Uc?V(+OK(2-qPZAk!R~#5jFX*TDv?_cn zTTPEfgPte2p`92#E4mrBz}eArqAzH7z9?RY+uoD#6g&-K!AE_!_>tP=U$kz8m*ExI z2HW9vFp@SrNDkp7q0>gFU;yj=>;?XJHJx*Lu`@6HEv!ipObh)i>O*KtJf(xNss5J#ssnGYt!*~yF!wa26VZpW0xzU{%GCe%q z6hcw>6aIp|un+db0k|&QXV7KZ%Xd9i><2*$Bq-np?BtINs*Mo2Y^VuFm|&y{jyJ(5 z9ncFlzV9g)2j)fRM;AnIi4Jp5IM{^~4|d_C%on!fr)9jZIAbW`-^ z=&jM)q6?#oqPIuu3fYN@YKqa`qK`OC)E0Gu?-UZQ1ARq5{1Q@sQ6!4R08t{6qEsx2 z?tx~(J0PBqsa{erT1FHW6|fz9-7oD)sixO7f`)!$lor;Sh|XehbZPXC=wPudY6#P= z`gF0DxcZfc+9*@h7lf;O*D$xqdy zz0|UBWE-a^!uM+=s3eKHFh20FrzOv7k7pZ_%c);Q#SP(}=m;@V94|(R6U2$)Br#fy z5o5(Tak98KdSCSZ=*n=gQWE;4^#d5JV|CRJ;+S`eMAc;Hq6n=%Qf@BhhKOeRcSl!6 zABq}gH27CD!d;k(egJxnnt~BYq;9wrcuh)L6_9dK_;_|EXv{-yKG1c$Z^vcu>E%?*=WWM*zL? z-~JGY4^jQ@Yo@qTTqS0S*c_tmr$EvtdV+R;H^}yP*Eog4d$kG@T6V!Rx5=@^H^A z;0+v_X9d+C9yIf@d>K|N@?lOUOl9ka7NJ!^+1`r29epQr+1^br+k5F{d!NfT-z?h) znaj2lb*q9D3gww1o{rU33-Ui|KjEDS zsbQl?4HU$THL)-}k$$Lw7sZwEaa;+XBscJ<$x8SPc`6P3d7gyoDhtKhCPAn#;zE5H z7wW6zmianasBe&`(lXy7q_oVpsu~_sj;V@f!)O4R06*k^%>R`CIZq@#A`&_`ixSU++cBBixAsFj{96!MH=>VN zwoR>`T9$90>X0H5!Ge!iMv0AZ5AVWWmA)ULcI5Z~?JrReVj6+Ywp{L`}GjZtIIP_c`nj43nk3%oSp%>%O zOL6GsIP^*!dNmHc7KdJsLvN_iUD)|(0Z79VwqpnAoLZj$J^x1@-$Lk`p3>8LM$hUw zJ+JG!p_{s;+q$C{bXWIuUoYwndNaMb-l(_GTk5Ont@PIVo5)gdcM)wOCjccGSW-|L zZ6YVYeC_SpfiQvi!wxOx1#$(aF46JA1ZbxZP7O(IpV}d{V``_=&KO*C*VJyQ-BUwT z!%};s_Dm^Ri?u@PXWBb8JT(GCql}W5n~PD<(eg?a4!;;XbHLfO3z;7n|ZmRTsUhzECBktHkIoi;?_@%AJTjgEd&| zaG|vFL)K$b$EL=m#;1-;-KPm0of4L=_xVu0_rKTX!mZOqTP#e>UHW| zbdiw9`*v2t5YppN6sJCt*P6XUl_$Jb))bt!>NkOc2K4w@kK)Ol$1UV0Q7 z-OVRhDEe{pj75+sMFVTW!fUXddt(!_BgqvmsG(+c~isg$Qex?&J+S5RN zs!BiyWD|fA6ib+BU^+@u11QI$B)fUVRD~aqut2@B*t0w5M__vh`z~G@2_pxV-9{%; z!ScwgNvsly(PyzY@V&6GUZpb_I_4Ox$D+>;(Z$%Z;a45SmJOi9*s?q5JL;oRL}5mZ zu3(Zr&u3tJeJ5QGC|jjds^qVk5!Z>^+E?#ZKW^);SW_i#>u$Odhn05_7L9dxy>6gZ zN)iLL1}dRgtir(dp9H0}FL&O;xV+6nmeII=+I*k#UD}s+mhL22!k4lD*PKJ+3hL25# z$0ft#li}l%VQIM?)lyn=N3gW)j$mo&9l_G_JA$Ppcmzw!@CcTc;t?z@$0Jx;l1H$# zERSGmX&%AS@;rj2C3*x)%k&7Amg*5KE!QJhTCzv5v}})HY3Uxp((;|dW3amm9k~OJ z_WSB1_5Jky^#k-#`e^+?{UH5deT+UU5Q-)-%NXx2VsZJ+kO2}Bg1e&@E@n6y1J^#d^OrN*`Cxig~ zjjP}j^%I4ViRbB)^z-!#^b7Ti^o#XN^h@>0`epjrVHm~B^}icPahiUA5JvHl zFo@z6`jz^0{VIJ<7)v)~SP=B}SD~$%oNXQDC!t({2?dSxM-AXJ;Pt3;*wfU_CC6b}Gu)5+#mk|j? z@MC0>J-15G9WIN1Z$e-`6cJ^ljg4aYjR7Zvdz9oAFt-A~SHDmHU4559r!Ps_xw zj=}u_i4m%`ro%O#3_B^UyLuu~vgbRi<5s`7{RSfD*RbY<;9i50j!9Q8;Z90sSz zfbzhIItY7W^q4+d7o*-~aafZEG#a0Az0HSMa-B0rPZ%?w!0~x%IL_5FJgFHUxzp7AiXA>zOk|D!jINN-yDDy~|BOyi)XFGJFbze0Q4F>=F;8UFoB^4R z%9RPkU~9r>*BkR)P^&8bC%WtBSBWp^D~x=WOh)0z21Pvir_6{~7`H4=G6;Dc81Sk_ z!$Pm@#Jm^=>~4(+g)xzK{3^*#NFq$~WUILy1~yD^tY)Jd5>8nwyfJg7@a_(w6uhCo znbe8i!cK67oOzxeD|x%je4RpgZ4gzBZzXButP{j5N*X3q1zC_0!EUvfS0jalYGh6{ z6@Bq3&pvp0{PBkzGfLh#`Y8JBKoMgN>BJ*!y{eYI0DYs!LiBvA*9p->c0;k?JKyPbg718fg(<;ze!w%MDA)~%i*qs9jg+v` z$TdIdKkIcP*DOULl*l!|U>^)0bck2+!sNge_A6#rV%YqKb%Wf4m>>0JIz@t6 zuK%vHNH7_LBEg8kQv}(cSaI-_oS_6y;VX)%umqzRA5o>q?4AWYMcqoK;}$Iq%F{&@D1VoiiB)` zdSe{ADGuGNLKSobt6`s@f3=?q+^Pb%sle?aP^LWBV{`JwLX{2gZH%_Y>P9=Gz0tww zXslr7)rCs5CKBxv5s969<-Y$ZvtWMGfSqmv8uYI$ z(m)BbC7PHBPX3WZF)@h}xsU!}f6bR-R55Q!GU2kKCYuoZ>65b?dq6uJdAdQ=FQV7rUDo%2Qn4CD_9b?w`Ad zLH@ZFQs%^aR9+@h{8sZ@+hp(6-NB99LUc#J&9ONt3wQC6n~fJGxSIn|#wNj~>OJAu zKz}1}uMFIQ8H9aubaB(i=xg*d%0_=oN9)I!1?UhY%iroueMBFcrnv3y$TNrK+AUeXCsXY`|+Jm@n65On$ zU~6L=Ls(y-09cXfuq}3s2f~7C(rstlhl&uoA@A!`VJl;>nn(|U2rj`RVWSXp96=sc zfyY!}whUC@ak<&hSR@3>jA>DcpGHQ)1{%X~ z62%8HXE37)KgM8Alt(7{?mpjPb^C#_`4p#)-yB#>qz2IK`M?oNAnA zoNk8Po->d49Au3>=S;(ZpLqGynP>q1Sp}A=z%MGWOa*>bf!|bMxeSmKWHReV zAxI7z8nqT$OKml+mDU;`)wI=C*V<|AwGP^kI0SDW5gKr|agK4Wah@^BIN!LyxX`#r ztUK|d6M~De?mzIl6R5!@2>mHTzv*wHRKgg|*D_P#VB;*~Qe(2A5RfMlo`hlJa?0qC zQUUa9&1A>_;!hSbGEjkRj)}(za7fLmKwbrO8Ngs|GSgEuCr6c{DHeayz#=l8q7{MJcD$qp*x~f1)1=do5wN+pp z8E6IT%3Y@wbPItpDTsVY55V8l8LEJuIc6Ex8#fp?8aEj?8@Cv@8n+p@8+RCY8h06Y z8}}IZ8uuCZ8xI%{8V?x{8;=-|8jl&XjfUKM|D4G{SYK_=fwV9f{kkYsq(d-5^O9325h1L=)qm!Wx$EKYmMuSr;MkKXN+f! z=Zv|yq}xo+Q-U5U&{G9^sX%WTFrbeNRG_cilAEH}Y6>Id-Y^ef+ zWS|vnCD*fGuAeBejrDxPc++^xm}ks4-ZtJb-ZkDc-ZwtL(ThEX3KSAmZEN%uEwmv< z-^zVtY=iEjW1yegu3m53Hn(k#Y)k|0#AFc`IYeX<6^UL?$f z?JBUdteU~O!D8_`%JhlxsqvZdxv|*z!uS&9TT7h%BKgeR+Vv9FNlvK1u5#hKh7>_#F>^TbWGeGMkay#C4u`Vfd?dkqvBu*M$39A!GS7pkPPgD{+|a%^`Osc zZ1#8K593etWTlxYbE%OwGiKH#_tT-yc+JM3N9qLd&^UN-?%vvuM6$ z@)%x%!{zVLfFoq!F!{S^v68Ear&2G$T=b*T$z0RyY~H6S+3CzU>7qi-)(wtAZ-v1^ zAv!cGp`Q+EfGxq%vbZG}Cj+m;@$pgMxSV9J@Z)1%BKp1 zQm~G>ep2QQF!M2T=I-W^f-*64bh%wJ*D}{OH#83dg@i7*qeS5b79dhfg6x}M@h8f~ zZ)%<(7ayHvZdOYYMo@BR*Bu=e1`y3~Yz~>JofZch;dEY-b9Zb!3jggcfbD4iF%Gb&w)aJP$Tpo@K~8&eqmAM`{f14?W;9dmk+}(^-`MK=Sq$&@?Dl1Xt_Q3Klkc;DC=7I|*x_#ck+|%64R1(s_;0j#G+nBBU z47f<P-+Jiv^_ zHydTHAimjXY!M~C*@0$h6>Ovr#*CMQy{9JV7_$PGhMJ&SVfUY`0#N|Ffa0={qD)8$ zE|+zMar0DQstQb#0Ryg3fh$9xR*Il+7AjS8kV*rHVh?xbLx zc|2<7?(lm-P=gatGeQVA;>P2xk%QMNz#73kO5s38nEROfn%`guw~;0f-=^gbGRKpYvxk_6nunQ(n@5;Onn#&O<4VcO9b+DAo@kzADs0>1dEq}}hyeye&7r8Iml-M$ zMN|tYnp6rQk{Q$O>Abgd?Vlk7Qmiw|Qh}?&eo`CYDfk&Fk3N#Jj=9e;Cz@xPXW=(7 zKZ3PN+%EF*no%o|`Mdb#kj# zU{+XunaWo})lf5244doC8%!k$J-`JCt?S7=BR5Tr5koQ)Y{2!hBp4`E1#Xmq3Pe#^ zNK_m?ZVH7DfSXm|mJlcti4ul|Y-7Z@Ew`GtnYWvA^p-o!JI%YyyUkb(m*!FomlbC< z;8wXZ-7(mT;375)!}3G(_vY?1FT<$uO28H71C)<a>rUvrQ$DIsn0flRf$X z{*sfuC(O2R8(*kXUbb&(3%AEX^mXZ3>D$tG zr|(Js8xOBAn62F16fGS2|F9OGHKPY;y|Z`9Blz+Z?~cJnKOE%!VF?vVj> z9VNGki_6dZWSR=xzd~&u`ycGTubAhg&rP3~o|IM}PyScw^HuXT^L6tLp&u)qY2E+W zL&{fhWPMXwx#$OfCkQ@CZLLnT@r zRLScu8z|-A9Pi@XUne+6kS_|(@xF=C;li_6WJ%*S_b7dGUP+9cO&jnqA5oZOClT))YA~uC3q^K29;90#C>k6?jyocq|0UC<)p_ z%n1Sd8-d-q4IwY(36WAE!?fGKHvfki^Lo58=gU;8aE!>EFM|~; zQ?ryZ$<1-fx+{MvejB6#)~>-~TI7jobhw;Bp2{=OtW|;Mct?RU5~8DR>4W8qCFZ|4 zXXUN?RS(Ey07u~rDRG+M)4EC`&A@hfIcygy0A7mj6R2;bz_ct&l(z;>2OH&mk@q>G z)WAXL6%{hzb-94oumDLRo>Bk`K??Da+p8fr1T`ok^hOAUWxg4Q-r^9uJIQG;$kobY zwF;JNHCWB8=2l};1zTWY&vQ1cf-Nlr-j-`);CPa$35Wlo9|PV~Dc)Cs4`kq7S+*R? zHa6SZYGbvvR!@?w9ZL3&ELnSNzRVV%z2 zNv5?sB^dCLT$K_mQh|?E;1d=2R0TehfeL&ceg!ohS75OUe4zqgs=!w&@U;qjqXOTm zz!DYsE(FRX*@E1{-0Jw7KK3d_;^=CXthKDQt#zz*t!~zO*80{4R(ESdYa?r8YZFWH zKg>OmO@%I2+yn8Z7V|-zh3{qclyL5qx}fwZ8YO{cxnHA0IGVxEg0rEg)yrCz`>kHW z^5lf2xnFXD88C51e;QUFt1mM8J(+%4?vLbzrMXl-fl-O#%pv1oxTM>Sj0|Y`(9JfJ zV1QMzHkUd&;xvK`wEoONp7-h+(=Du}xqMQ&f1(3aiE<2H>KJm#B`{UMQUO~AviY3I zHV1>Ot*ouBZLDpr?W}Cxsh{{$?&t6uMbY!n&njE}tu3v=))3^eG*?Kf#?qXd413A2 zp9~k1;AOc6jK32$P1K8QoZ=+i9iOE|rqqlr@-4->reHT~cN{+2$W&QqD+48rASdy$ zp`FM_gE3~Sd}|TH(>`kt>pN{vYcDGcLu(J7!`_sIPBOo&YEYSlHD!u5u)j&w9&U}W z_ObR&>Tx4+XzeHpqrrYw2V@|rXMd|%zP(I!fYm5drD3SGw>1hWo6D4=trB#WCHynj zMW$)O*W+DPsDv-iBvoQ?J(xq zT6k}7?O^R_?PTq2?PBd}9cV>k<3ZNJ))?z>924bH@(6W=q(vuMnJ**Sz0V}P+IBS`_LW{=q`k{!%tC?J^=8DL(&`oYR z12$HHO=MsrwQWzdPD*Oqld(=4hIPVb)S!yc(6rQpkIyd4^++BJmgRcZOXyWEp>Mr} ze#r@B<=MU_8~%sJ`ZKJF_*t}(zxBe=3UvWiSV=*1h#(Hil zSN$BTyZTw4Vok8l#m{mBnesdwk;8yPBov<+6AC&X3rfk^FR=Q{1!-_07E+d}F2V_I z3mIzC2dWt_!Hk>BRF@*Or3z&+5}!06Y=xYH02ZtU1FXxf;Yq5Rf;AW<^P7r;?Y1&M zjDe*BgJqzE!So~%O0c~O?4SZW%D^zRU)mn!4aRr_24M4EVO?oWw`N#P)>YQkNi~>> zHP}Y3!8NGeon)v<|1-C<42?1W%6At1M*+c2j}fRbZ$J3{!zURA5gT zs9^j((nC1k;YCmgl&MiGLT{4i6z@twED+zzA8QrMZ2Q))Ewil#eLLEe9mT-PS$U zz1Dr$k;3S>$QFNM)=Cdpi7pQxw5GtmB3}(2verd`grcII%?Z~1*28KtU2d}k;i&~v zX9@c9x^bYN40OY2g5jx6dmI8-5Wo_QlIhU#ybM&}K;BG@_5M*a(GHg8sK>0?*5lS3 z>j~>g>nX8IbL+mRu|f9Zwby1-gFIu6$&bwkb2@QmcX@~84~>I||sOmn?*`a*C5wij!r4g7QggqIuSQoN6Y>RHtAS zC8~X`cf?9jX|yAG7c1p)vrYmvc+aXvZOx$f@nbujSDis0VC~w=Wg2j*3@0@VlT=;8 zaC!=Gz6_j$#Y^kz&#cd_#nu-!xr77_zLewwCf8Re*V&<52x{;(%5{NU2%UN=VqByG z7t25eF5&%`sqrjXPkH#p`WC0fCDwP=_tp<_HU21x8>sOo6!*+f+?pDHM(ENIs?~rN z?w89D?WLy35?&?`tmGPmWZqUka>8)nEf$D^(vHUZ_@@sS+Lf6UA&)7(_WRbFPy$qZ#i-a)^?V{aaHzG8 zFzbc#*mMBy>O!MhsQo0gTPx&sQ^>1Km2ZvE%^`#tX>DM`EiyF5T!w3A;Zu)}6cUPQ zhdghU8ML==RMpVNZfmb@cfh*b5Ykqu{Eqgq`EeqYflsZL_GZb>JD7_NK*wBb|;D!0}Z%KZu1J~3XpK~HZTN0&@U4jR=oLU*#K+C8zQnRuJo6s2q(n>(H%UAk5-6}$tthF><|bj9#?@mAy6g~1D=rO zslbyVMU4mg%8@Ciz|&l{q&5u}qaV0uWQd;VJR66ei$inc(DQNVg*f!03cZwnIZ_&l z-iQ$*g#|HtIP_{9dMysU9*5pgAp_o&6=T3#GB6P4MQ1d!eeZmg+dz0bnYIG&gbh-r zYANO)7h<<%c7zeJ=7j%?_uw0?`7|8 z54T6y``G*1Bkld{I_}`R2Ubk~S%ry{2elh0uH1RlcA9dMUAd34l`Irlr#^87-VJ+7 zt-uO&PD^XG3cMFml!+wfQrne0c^_ok87EW7xS50PF}6bNN&dHGQs#rZExgaa$Y{7G z$GGjWXhaCiz~s!Kb{*Hahv7J`xW+x)j=9D?!e*{<>v}ys(yrt6lqEF6C*cWhm85ck zd;1J0FE@XTEjt1Yk}|*(roadCM?F>N&L#s|+LDjARZo;*8Bvk}AIc+%;%hH*qjzR@ zRGtFdjme&#J;5HG?P0_m^HD6(B(ha-&9@L8x?YoAgohRiG4Y&|otmANy&`*MHX_SH zfBD9r{O1V{^7yqwuk0zd=tqyp$iGLR3-XyR6X0dKtPyg+wk7LEGz*Cz6LZ6Mnw{jc zO;{1KkEtH9;01`fsp17FfilER7Py~fufFh`M?d}?N5J7EJNbmwgR3Lf* z;y~yHhy$S)AP$6HfH)9(0pdXD1&9No7a$IVUVu0ddI91<=mm%ap%)+ygkFF+5PAXP zKQ~(0{cSyBKuz$dl=z3>?{0Wd# z93h;XRr6{=PI0caMYlLHKQB?K34UH?;i`L)T+YJ$!hE*&4b;}jxYUj z0`kwoT%`PD++;67Zv-Ra&O~O}%h03H$6;}0;&dK-QUho#z#obuY`~{7O$j~=ff^Ng z_z+?acr{%ldHA^1zRkYfzQZ1q`<%~B#DHxj#^e?!fnUTy^7J7%JS5*MdGjvYFz>c? z^B!CArO+nWTEsmnTw`BnGk+h~+sxm`jrPqpdHlG=zSF+fPUsipUt^{n`PWELJa+=Y z6t4)g8V;_iV~6`u4CdJ3dYd_RxY2&VCf5#3j1qh)>w6x26<5kU_&N#vCJri&8zO%w zN$wk-0nvfOLpFJSc-Vf#e$-ajw7{ArF{qbac$C|}){DN+|G;G}*E&TTcpSfnALY8E z4=h}^uu-~}tpY#E%c}424;->~1v zo|2KyAmv2ie1IB*jvC)WohzOL=Gig70B_p!?Uncicsr>@-?3wU0p3OEx3EQP6@5}y z901UZ#~sY~?7htQZ6zs#z5!T*0n61!pPC`9(Z4eO!(H$1VL?^Gsq5TQ^Y;*Hw*oG3>7d#piGk4 zVClSn;-4Bu;&XJV2c@ukWzz{g=SS>0c9^+JnSa6&!jpC5s@zV>EluhvzaY1Q%x#&i zxLjz2QRYH>k^Qlq$$esfYJX;bZZEdKu)nmwvcI;!vA?yK*x%XT+dtSp+rK6i@*5VS zIAvIl(|7n>fOQ)@%$AjeqXi%3wA%fh)OaQv@c>@*KtY^+SD-33N|$y z2yJRO5ZcsmAhfCBKxk9LfzYOg0gbS>+O<~K+li0`Yd9rmU8kF~p0mEQfz#dD(Amh@ z*tsLWPV}+z^>+o<<+@>`l4wI;#)iZ0-Hmgn$(*`3cT(bFGD7PFYwgHY$w&4AJMw(; zyZwhP`#$;8R(+p1PBVx6pEP$GolTrgoz0vcPERLcj#!+Nh7Y#7=#34e%n^N@zdfq= zbrMJQeprYys+S!_6(#JR++T~Vg#OOoRe}L?qWybHUVBKJRMS$8L*K`v9Stl zq5_+$z-B7YLk7C*8|v+`IMy+7yxhXs(i!Az`Dr=*4R*ghfO22;0tYL)8xX7sC&M)snR6HF12>VLX{*8A&+1$)M6caC5h47 z&?o!=YbrWE+dG-XRM^c?l2TaD-LT{K3t6Cu8Z5K>)?+cuQId$oFl5m`WKol14Elx` zAa{r|wj!@tnObo#XKzRGNfWtIVV-F=%59w61dmmQqh=J+$bF4Sw5Yzil_aLVkL%Mb zNsRuJ`t(W?qi+kJXZRYZR%yCHS6tXce&NYe&1kHuLO|0RPx`aI07?=QpaPqRLpZh! zen8j^^dSWwlLliQ#X${^w!z)h(8cR9xnpzVa!qE%J_O}cGB_w7^Jo(%75&)BM@sj3H>sOTBFW3Xt&dkq!M z5)2q9cVz>%kb#wWlNs-*PGN4&kvAFgC3BpkWR|_jtT^jh^_8L|F{KRBx8k#W8QUTS zbf7Xw-#QK&s?}U0Y!`mMsDHMP9W1M1+i2-TQ-20daV9vYI$uZzUzk99{?l;K*hc1f zI?f4^JsZkL>**n3Zw-L$WnfDbLFgBeWyZ-))gi05Gn|Rena){`LP(YwDv7YiD%VQ; z9uJO!&zAtEFJXznz;m7RurfRH$`Gi*Bxg*1C$3jSFf)Do!jcz&%x=k)pf4H|L}px+ z9~V~b#cGkdcaUq!Eoi2~4#xS;1JLX^i^ipf)87cM4SuT9l=mf7+dYAQ^2 zlq4GKCp&}mS^QA0f2~^7hXlbO3)kwr#jP6bGvbo2-M&T)ZD6No{pJ! zmov{mXefuY8o%H4L3%MR%pR*K;Y{S%jJE}o@ES+3@@6%;+PPNT958UIbDc8Hmm5zt_97cx@3Pu=ajklClE#-P%oEcm1!HA0;!_!$w5OhKV3 zxYxNasi6C@py9l6U^a1hz~P>PNE=m>m>VYDhj}$vp1K(I zNh4O8v5TgmGqaC4qw-2JO+zd}ILcw$Oc#5}0ZHAV8;nYVD=?amolG%k$}a=^M*}z& zk%!q1ImUS0nd3a+JSi%Sl4)Q66e?^#UPHF%eH!=mW0K1624j=qLz3WwQI@W#A{3RR z&A_wHbIx2RF|6zJD8)gc6tzq*IEoX9W?{2^Y(C?>=&Z8$2oGCe#aSv4J+>}m>9x1j zZEIrGdQ4#jZ>wK%{?g0pR~`1U`Y^o@pIk^gY;xhR7qDkh`>>Z7&sncKD|ox`2C0sp zP_usZrlS~&@*4xZjIiFqlefd=k1GpD$iPuiH$vH{`OwDoNZvjSddF$P+lpX{0BDa@ zps7%pB8ZMY{`XMAW8}>5BXq0`jX~cU<79}a#>)^wN6vJ{WFf9MpVTR@F;3@4A=M}8BbaJo3 zcT$m6)~4TMk&1Eo4^GTZ{70vbo%l~lJby->ikxX zo6?7c@<#qwMU!ew)1b3T8?jmL%+ywo`ZxbXXKF)IVW;Qdwt;mqO<7oAG<_eXeVO{h z`P2D2^~S{Q@BXKSieNSRG+M0rk|az=hp4tGM${0egY$cKb3wueYH+zli5P9@OMln z^99j((kj$3pWNsln@_H);wsRRj|qV-58kKHQYKh}ag*)jYyW3pY5JG+ecEs7d-eOU zqcq5wDTH#8wSb&yRYS;sV{;Y)SE#N}5p>Pqpoj)>rRQBlX z#o1%B$7aW6$7kyV>}^(v1?+8JXa#449}>_{E426JUseE|sRC!Iz}YHrjtZQs0_Ul~ zBo#Pc1ujs53svAE6}VUhE>VF?W#BaZbbgmZwfCS!p=DvULaRdSLYqR{!s>-~h4zIG zg^qDiYcNUucBO)NZbrlyH;JsjxxeIlFs-*`3UH6f#;n$^;dN?(xecawD7{ zKEbN8DPoGSl0qm2n-t`?r8RImY>Kj9E(^L@LAjD?z6uxZ8yD!By+_id(-VtOE@XNY zDlk><0OB<}R*7cDX(2_K0Oby+TeyozzRBrbh;DNF6qqyrzJ-2;RlCyqn=0t*B&wi) zTm=IPN`2PGc22HIXZ2;^$s;x~G!xgNHn}DvGp92M=4L3YCM0Z3_G_Az)PZFkw5)tQ;l`E+}UO(P6^2 zg}LUCLgHZpPg2%Q8~>M0{O6>_tqUs8jBQ=ku@ct)J0*RYJEK~n?Mtn5>{1Z7F9@Yz z*Mhu#snPA0#BX=x7j0i^bVCbub}PdQE7`5=kyOH-Sc0-!*{cxSt?XT>vs)RS#B&7l zRCX)-6cTnT`xff%Rz?;Qb}MWLLP^VU4|ioam;wFt#H|89m%u-%^KA@0U=!FBZ76%f z0RX?E8qO+~Sblk86GcU=<&ParlTXu%^S?W-+efYuFVYq3zikHmJMGh}0E-j-Y zc<#0G{`?U*$$YFyE4~U`&9#PN;74Q^4Qro9?NbQ)~ zDYbKIm(;GQ-BP=!jw&2oIHoWxwMS~tl#;z!ZAG%;jC-esr$(d{a@6YAMGF&ZOS%?$ zEbvcqQsLyJ_OIgid2QJKv#IBuQYgXoTwlbSTJi?olI(*}j^OBcJvx9pweYfaT5@rx zV{x;>;;K~K83leuA#8TY-TYLTP?#vnQWFJb37wg6AQX;m>J=v&_+nCUvT;`7?7}&P z*zwJ|qH<{7q#gZvD6QgXV^VzZI=>(fUO_e32z5dI!HbfXI|HF>?GZHP!XJ9^qrBhd zdxKutX^F46FD@t<9Q-iqkv77Ovie=vT7LA+?X_vS|6yvNj+bHht>47kpNUz4n^oWz z6}VLf_DZjmzZSax>y@$4LY#(O&#i4;#~Fc{B)cR<#pjc}(*(+GFPp}XVIJ#pyX zICNhex<3v*5QiRAp$a@CSG)obtH2{F@TdwrrUJ7=piE6*z~iBY=x?0w=J1np`jgE9 zZQ+R|@X0u+thsK*QS9%ZQ(ay-IbBVklAcmvM=nzf^vri!VUm8neu2)O`NmJHt|%mj zA^5L4ue!2ut-flHebp1I>4h1ErovT)s|zy=*A%WTTvwP?xV~^h;l{#Eg_{ev6mBit zR=B-zN4=A+&Hljx_wT7%dEm=EBGMZV1eU8a4e zOXeB#nqqHwSJ zYVEH+6eAXmFjrM!BRsD{hI*r?90rMJMo$->3C@h3EhuE{%t$1__=0j5Qw%NJg=@mU zVs80-p^n{V8*JOZ$4J;JU}ML(3T)xiGV@Z>YUpKL4TW0;W;F0hL9y9Lb81Rw`yc_~$Qi)=v)(Trr4478W zPVKD%8M)0X9Ouk0yj@V3tR@9cTQwGn{R$soA}f|UhAy;2;f5}pgr5k}`?u;Uo(O$_ zjjfyreHfky1&r#R2raQzVQ``tQ@kd5Pk%1oyKNfx} z{EQp8+e6B76`41r-qJ~5wc_zN0`p`b3-ftx+5Yo7U$DQk=){H4b+Kg$8ZgGMwY%8KOex!t?L~#)^Ll zUIT?e6enJkmz5=EE5X~m_7F7BJ1X$53~Zg<20a9_YOcqG7(P|!aB{H~b?snB0-4?EF zr&Tw`kB{H+$}$O7s-UB+I0i9W^jAE77%c|3)aG_A+zo5j#Q$WUhn~>gWp9VIPP9umMf1U+ohT>xY9-3f6Qx zWBrO@{i;;IF37qWc2R0^{HfwU;T#o^CIwyHk|byi?BuTH;_K^B3kYhkwyVS+Vlj`_ zaMy85FpxXmqk?DzUd($82ewoxzK|&@@TEK#wSuoyVB7G7woGh4M-GDf2yTGWE8ERo z&t2c$!0ql%)Xvp5bT@K|lpmp2=^`YF=vDog_zYZuW93qt&|e@QhoL>HkPP6yLH^xQ zBvLf;#}*7iOiqAJ-Ob#+vprlQ5$=j}wMmjEVr+x3vV)KZ+K4XU=9PdiveFpzVU2vJ z{GO=A6EHa_hwr5DfJ}QlKPTVY?c+|@uGVI1v$X5ATeMrX+ce5DI?6&0d+HO%0&To6 zU1B2}I!G*IH~xu_5{RKV{oNn*A7yBO`yE!9e@Rt#alry_GObipf^4XhirWOoM~%VN z{4+A#q*h*{nzwL!xJ1%1B8k*Yi6!_2lbQOc4PmJ)VYJ@g%Kbd8B+`1HU>kmwEBd~( zOlHHEFSKr=7T(rX2%?H^i&M-=yn`{Xl@<7n_XV#^LeA9A;Hsc@XJ=u5;G|&VUx+Yp zj<$pNB{R^09kHz@@Ed;uHQ34hU7k_0u(SK6_M-Nc_O&JsEmbPafnAWra$aSc+%(t~ z#Rh}1L!R`rAor(E{X1A+h>?kQcjc%X8{w@Zx1XivsFIs_Zl2x68scv6zLB4=eUSe! zzeL;3{Z3l|3-Uu7(GCwsX(jz}Q68b@Sr zSB@h>QAE@l9YGGOQr zgAwjN?!N9wcRzQ3u?G-4`dSab=F7_Z8HJD`LyeiVkrAO3jCK!nm1d&(nl(@qAcZ$j z4{Nx4ko$+01>4{sS*=Q0aAcqYg|JHHD$-b3CEkGecLt5R#<*kML!|0p0#)Zwl-&#k zMNoso+`CZK0)vjwIki0hd;X97pLx(VJ*B7hjGonVdS2IcLpOCxw{=G^=&tVRzFyQD z^k#Z2BXoAD(FU((SQSG;PXJKM1=%=ew_;YrbedrOYNVUn;Vrn z&OP2e0Y?KjY*C~JP_87SyyAW1Np4qtp-M`ZZ*ih#c`s~pWUs+_ja6Q1mzBt92-1Vi_lQ#2J~EPYvl&?Jh$$Z7itT5G`hAz~}2&s-?{1r)3T!~UBrY6(fn5oGOw~nbv zQxeaskf&m5ay3G2!pdSbG-!{0Y1+o2)m2DwW1a)%#{3%hTK76^AjOsWEH`G;GR2+g zu4Z4ab|rQ#d;@mWE_OR3!N<7dQXJa{?@hKyNdr~|+DBstQIJ1zGSv*`V}6cJtEsi@ zo7{Emo84R7TU{b+ACZx}OPN5EZ-Q6t#N)iwq}2JTjrGZ?%Tfx16`gp9*-Fqs?tZOM zkfA6kRl7i*ONsRvWDQ;(27nxA?*rI4|1A`*-a_yn!PPcxEE(xQX0?e(4X&S@np$s9jT zV@F~vLkT*{UE?Gyd;r!uC|s;WuXJC%clt?p8@*4O$ht*jtP&zY2@Z`WZzP1V*+Zfk zpPFR`Jmc=83(pa~DiymVMW*w@+9?gsxg+#_^s#79ufW7$EE?G>Frz*u89p`{9;d>L z_jna%ypKzUAL08N>g$o*k0!&9CBw62n5k)O_Hh~JI+-KGocakF=G0HhFsFV>hB@`q z$?!AD@Ut?^c|Vs7&y`_bBUGepQBm*&wbzh!2Qtu$X(zr zbQifFyPvq9x(dto@J|^Uu!j6eSD;fgpV6m?{<%~jdf7z;NYOc@C=($0NvqZX!A}|k z1V3pE5d5SOAXz9?asBg+`>ngg{SH_D3voCRW{E~v6q$WjaZu=jhlwA@p-)t(0-uEw zP;I`!K*}nxSOvb20Rz62rK!MqJeYlLxsRF{Zb>xPJ;`c>j?)y?1;FN>v>YR3d-zzQn(7nPYPGTAt77^ zhlFqy91_A+a7YMO!66}B1%sq;6|9y*xC)+42v@-&AzTHAgm4uc62et*NO)k$ASr?c zi6BL=AfN;%!Dzy?HM~yVnqFsY1|bRtlSqn!A<{}w zFsdkk^f;7&SdZxHuAS5)*1;YjJPxID*YzYbN8%=#IWpNKGe-^yW{w;Z%p5r+m^pGt zFmvRPVCKjn!OW3Ef|(LXY3Ul zUM_YivdR~3z1S-CECRoDMf1zA+^=2rx$yVyzh!{=gZrcVll!x~)cwU>=Kkvb<}P=C zcjX7ef4G0TcpBoRytJ3`vR=;1d%9*e+K`gnc4 zeqPzDc$<3zy)C>gy+Phq-qv27hsM2EVvhNrYXBP>c}Nhg3^+vmigzd7!XAU&pMt9^ z4~oe|iCq%KcT&;zi#;#i&Kv9{zDjPsf{mD(wKv*NURjd`==&1P)59yZ7xWD?8)Y`m zY?7f1HOg>Sl%ZyxUWasZBo+4ZJmLtufuqa19+{q*UYXuCzC_$V;%i|Y=%P*~I|#`R zu1zI1dAo%Aif;8j)DO!Xo;f0OWag;M(V1g1$7aT5#%GSpe55bX$p!eSnML}?`ozqc znX@uyXU@r-n>jD@iTu zbVtUMO3+PSBbMNGq^1spKUMr^z#A&?rVNzeEftt20|Q}xI&>^7&YNh$B2(hMx(d9b z0`JN|3EoqI_hrC9V`ZsMCHPPUK2m`NDljuT24H%*Mg}Udkb47QnybJf8F)4QT6!3& zG|+8x80ro4_VD)f_VV`jhI=EteY}0Wk=}mZ{@wxJC~vfPpm&gWus6mV>&-=Jg#8*B zqnXBn%)*RiEXo{$3xxILt&#!j%K#4<6rAZ010EUZFz;|rNzR2~gDCM2x$ww%ZAAk~ zi>#83?#JU9*cncXtYXQ`Ew>_LG`hLqVT2kBiMGrx9^rG_wIuQiY!EIIuo(a-u1|0L z9h`^qyA(R^l;iu1^N6%-L`rrJaiR+B7do9UBQcCbtL}}XT%>h21fQ9om_Od5D{ zdAnGGS7eG3Mm zl18UUV??AX?w_EDEAThee(O}H$rKI zL4x1>Csi!c&qdzFo|2JXY}C^Qk)H~i86*IGHuw{T-z-57Ss_{IDFcnri!W2OD%FcZ zG4@uWZcsJ?6AS>d(P3U8n=tHWsEzhmJi-0sOZyZ|^RAFKRwyCesa@#_R){3F2GhNE zc*je%2=pu8@dg>2Fk^o%A(V;uDpbLMWEC_)C2BD)V-_}-)j+|;cuUQuMn57u!@Js> z>0RSp>uoAGBR{#u_jTT|{AJ$d-V|@Dcb!T`_m`aDIu!Yp@UWv+zj2m_R&0WGLkfqC z%X57U;p{>cMB1~G7H{-!l2lt|s=XQatXqWjK~RHRyn%8pQgDNJD~?m4c`&>2=!Ojt zwsaG=G~IaIE)`N6|2nyMV4Y5k>Qu!-?(|j=%H=L^Kx*r#DM(UsI65G;O&r_``%w5r z5#>GJy|N6fqW7T;gTji|^m@OyrCia-(&;Am0X2~hDcxzZUxlO6c7o9CwLd33gP0on&A;{BrJt zc+X;w+C!!)!JaZO)EFkKcCPolw+qq?3QDU+78s($GqvZu>$MkZq;zQ-RxXLC1bfS+ zmS7(h*jEOI8zW@7Uh!V__ClI%qr#$nO{B?}Jto;}HR8=8V%pavk)4~_q_$h6fv!sR zct5KI6T*`=C795gUhLz4F8h}BO&}{8SLfl!zaQU?GXC>DB|s319rU(WCw34^sK7}1 zn?O&R;kQu&a=)Q*paj>-84b8j1!l>> zRhnc=m4^?#kG$Vf3%rHiBJblQ-F$-M#Q}01KE<{AD7hmXrjM380?Ef+-_WpB1$06Y z53}=urv}<#{(nC6dK5nQ7AFbx1q!5i0s0aLqkE!ND-A6a<)p-vN|SUph;mXl!pS#c zQIvyh8^6V(ln5tFJSF;u3Ez38SnLhOCC_@nqDgejvn2bT7sbqY-}}n@D{h9q_9$}3 z_ui(pxEX(2(|w&4X!^&vrhoF3nyrJgLF8;mt<%r{piXFUCik%{93%q<9IOJ(qLTn@ zd}x9(QMcr?PYK4#*_z;pIMv~@5mE*x*U8>*-XCH=pmk&G4L=p)qmH;KnuU6|G)Wiptb)mUJvyBZ@V6#X5dpzuzpzo zKRAhYu{J}e?@EE|{zv9ER+It9@zIKn^qnCZ_V8nh_8*<|UGiP?WJ=uLFTwFV7kzQG zc054^PE>)DRN!P4sH(szDlkC>PE~=^WI%aZOmC6+#qa8u{I&eG z{e;)ZUicchUWP23E*C03SuQj6oFP+`V4@7r>*S-5G}u@~?r!TpYVPLmnqSXf-`~Ke z%p;=AWCFS>*~B-%Wy}uBL*3}%R{R8u4!wRWY~(9h>b>nHQsrrGYlJhSQJ$7FwAMLGR(>CKH*$=2PrirW(?3=lr;Qh18}XG^FTZ!Tx4b#(?HhP1 zltDG(hs3_6MwrCQj!x*#SD`Fiz{O$NvT&gc2%di#h2Z&@1EJ?%4xGi`XK^6({L6vR z^DhTN&%Yc9J^ykb^!&?#(DN?`LeIY(2tEIDAoTppfzb0W2SU%k90)!CGT=1*qS}ce z{zZTX6@PPopudH`r9a5u%HP`G#^2W8&L8X#@wfMP@OQ+PxmeaHMg!uD2F9`imxe$Y zdE!Z0xI<-acYyRByGoy`1H0iWVzS(zyCZa29J)LXO^HKO??{?7g`{;vK|f0)0Azo);Kzqca^jCoyVRgzV z5S%3kEYRT_>sxEMwZx*}Q4^gpe#|A_Sg~#RU~>res55yS4FWYd)K|Qk;%mpagT2F( zxE+Dq6rZL?`if6e+(!DpSif6G`73>Da&%G|$6y)CQzXGY+Y{PX?e^yBpf?gc&> zfnVq+7=iy&h81`$?9|vtsh3|R4_F3VEq@1XVPCEe_othwg|&cZSexUdOvaD6IC~ap;~nbZ;EG zFAm)whaQMS55}Q~;?To!=#e<|XdHSh4$Y23kH?`oap;LS^kf`*N`=t9Vc3Cbp1>ac zj0!v(0%f8w;JK)a6M%l~RJQ2HPKD6VS;!|S>BSJJF>ZvH)J*(1DVQ|oukvxyCH|%U zS^C-fG3jH|~P$EA-?pQE3vpO{{COVi0dg`@d*kCFb0HR)yk<^B|Zsz1%Y!oSj= z?$7X>{Hy${{h9tX{U! z)W6$&itXuY!SPd)T?yZntLCE$i+Yx)G!3g+TcN?)y7-x}ZBoszJ2ShQR&(4k$|nNB zuRB>p@+2}sogU=HPc1r6h}P$_)#@mpvYZ`dksZOP#AJ*rc+lid4U^=}$os@!MY}!{iO6q+dHje9fQn~kcMEm0u_G%jI_Sk84Q=d%;~0YICU-G*xX{lZ zqx%AR&QIp4n84-H1nx_po4|eLD@JgUUsJMi``qVda9^v0^sPlCU;B!In_7%;)I=*J zGI3jyv}^wkkD3${x9|M~6Sp7yx3O2Z!P?U}j6XbDVy`SEgoay`-YZ*zcja&3J>&iG zvq9Pv4AzEd7-@?8v0^+c@Im-3)sPB&Cov>R^fTh^`e({(2zxu!V zM8;)BGPd&<37TL*C=d1sZh^Ki30xEhKSKVS2V&r_$o%yW|4)D20u=x7h=fauBxL>? zC05{*uwG?M1+pRQg})Q(6_LVDj=?BX7!ozxgmTc zX&~ddm%UF>mTe-Dc}Er{(u-u#MTB%(6Vy$%vtuNUuvi`<-7p?kaL>0v(9)`5iBt_V&q;V+tVzmh*610pZhH3|d14zrXAQS3g* zS$kyn(Y!d`xy`)Yye>B@cYW@L+>N=Lb9b0`nvqj$+ixt+FSIDOEGmpz3zi>$g^hST zU6Xjrz#(ApG4dxHQ{iN%>d+DO8O}uKOy?}8bx|QD_g8VEOW~Vn+@cYejPEGkJ8ciL z_^(R8hUJIm-|{Kq`!x7Y{sd>hu9@%SEVA%JsM(s}OJtjUFny-uEDxuK26=RnM>lI@s?dvCT+W@&Kmj>O7 zbuJAyEUxs@V56imHpViPOM^{{u^WO-i*;@YHcR5!19>Vp1U-uhHw3+kb#DlI7wLvT z8O%z;-0*LWIZ6?oYjeTB#k_+1O_~kqU+o9OgvtY&VktozgcVszl#Bg~G0*M(3T-7= zmJ0kF7F?5ru2#tOI@nK&v$}Y-vU!mRJ4J+SR+mW(SSo*0jqpqK`B$;}wN=&o~5TxElkOhthE<6Nj>KC>MwFaY&CtMjSHZkQImQION2k zLL74AkQayiI8=;74RNSh9BLki8skulIMgx@trmw`#i7=5s7)Md8;4d`A?2KTF@CzM zX14gx4l1`S&eX}L!T+w4=0QdIta+>A*2Qg#+ZMMg4lWKUZeQG?xMOjr;?Bigin|tf zEACz#S{zo~qqt{ruj1at;l&ZfeTw@QM;7-h?q58hII1|hcwq6M;=#o+#j(Xhit+R4 z|IkTvum6&h=y(Gg(9V?B#md^04t@UGBKPoOon>yDzqrhe7>Vn^GFu0>LJyQTh1LhN zX&yYP7;`sybg`|yx?RWJF@6RFi znmFbak{e{i{4tUZNWvFZEy^FnDaC*Ih5b{873d&;P;H^3DI8$3t#VsfBMIyj2bJ&f zoBzV^@w9(D>7QOaqd2kHlzz&*D*d#1b^4n0wdw29v(mSv?@r&7o~Hlbce%n#=sy4P zsh@wB@uuDx&){j-5}X)OciOeA!_Ku6kv z>cwMrx`ep6_?v%8@zUbt;%^v;i-^~Vh}kiFoU94fipG}q$eJ#x=oW$ROp!%&sV+VM zp?ifXMSkfZkW*0+VMHcg&yaTTKy{t4f&s9u3UmvBL6l`}R3gZ9wEJuv>}z8Gv_RBm+cz}yizg+vFHpaScK0+BpehxJ3C zOn`ERLUxkzGn7lU=)Fm~cun!z_&G{L!Z}J(wno@sC40ed|DT!~t}p)Ia-(Gypy`w1mV!pFTzL?MV?-nBo3Y zhBkDUKiXFKm}tWgnoTXWJf$r0zWcxLcoi)P|95S^?knD3OaC%3#sZ7%rHjCC1v{a!B zz_!pM4i1E#wXES<@J}71K*-!m&|3x?p^qwp@|FB5d?k+-UrV2%ADTWay`??KJ|cZ& z`l$5L>B+!diT?9_YkYl7hZBz#&r45AU#_2@z94;J`l9s3=}Xd=ria)snU|$6Pftlt zO;1Z-k-joLJv}2m&y+Vqvx|=x=M@_Re4G5crb3nl zM$i)8H#_3GKPGtxWZM;4vXW~%Fk(BuNC|=v8q61_A&e({51dtV{Sp(IhV0axJ5#ZZ1SMCccF9ZW!=ECUs|lE3PO zGEwxzs;-H@gI+@>v>QVY+$e4a3yM8qVR2FMWBkorV+KSxw8uyWAjz>2AG-Wywdo6+ z<~Pgt$oI_m%J<8c^IJpz{DAy+Fc^lQEp-O=h%&iYyA_e|kK`93d9Vee;5)30gWzBo z17qP3I1~Fp`JQq_31F_$>67``>glm5J5hO8m%$laMt0SR9%kmXDc(Ho;HgCr5>liO$c( zDQM}yj}U4lFD+gMm)D@6ucYCZ;!SWso=0F0jEQKsL&};8-xa?v{!sk3u&k(%kSoV1 zv4Uq)^cCPgt&G2+70luQ{YhK;>qDSSz%9|pL4UHIBa9pjMBhs|a@-tN15qrap*!5h z^+m<9%mxgQwb~sjW=yMM2zOEyO13#)3~B)|Fa*j(QGzWvV@6SeEoDF&uPMtQbE~ju z$YDCg_P3m^AHIDQGa3gGE1``kko`{0ji)txz<;{a_xxkS|75RMp447nv2Df2p z!E1;l#Mi|rRk1Kkg)`0_|TL%t=ZXGxfx^>_{=+=P)p<4$AoThKb zdjbI-G&ZzoXxXq@L#u|?4Q(3QHmu&zuAzNHhlY*~YczCfShJx5Px6nIdJw=PAazu- z?Pudd=Y}`oEtm)M;ca*ax-=YEcn{u(g+PxSK7rR)@f$BS;Omm`OTh9pSgT>Htl)N) zchiIcVjavpC_GfDWnQ=8A=w!LId}X5)^6z5ka3lyG_Zuh=8#B9RNP+K?}~%X?c?C3 zt5~ZIQLv_P=&uR3QNxbrs?}-}%)CRmE30MR6bF!<__%`z{#0ORK2&jF7Zuo51$GO8 zGG#Jgca`bTkfO%50>e~bj}WNw;P(=NsTm!jZ_v=aVdI9)8hSMJZ0Oa{yP;1*--dn- z<%a$ZA~EtuH`)QIIEvPeuBl(~0UQB(YOs03TbP6UI>qeNv}}YKSW9Y&7>!`~lfqGB zV8amH0QASd2&@8-UkXNl2KqNYGf&CFN-u+XSi%n39eJ=kJwgy9L^Y%e$}v+TiM1*iq3tHKx!Buw%pj$KH2FwpcqJESb`D+3`ja4AW;eC0E&v313^VFi8`G(iT15U)KSFhq;Mtluq&qU*@e-1 zd)o62gsLN*`NVw=E^~TTp$lNdRR=g5%MC|aF@@+{H;z`q;$SDCvv9G{Md*sp-FHZK zOm-8x3zrH#gq}iwp;NMRa!K(1;P2r-!qu60b;#_4_HZ#)eh<5$sYC&~B#*#S(3+Mo zle~EdwJ6v%Str5ePX0meUejge-K{w9?tI=NEDBzld@P7-GHm`rH^#1o|I^V7(N2bc zOu&-?F2eji=$X7MsX|jv2gDevy)e%?PI(LbCne{&U$9i9xt{VYG-==U;d5`7C%u^z zz!>yR&V>7HJ4Y!6xB~O_hG??#?alUR8quduF?4w`)VCPAq8RE|3|(0a^)H476hi}x zp{t6atBavQEOa@(dUH)NbZs$oT`_chF*KNmR2afSG+O;o9^zsfW#G!B9ovXTHtL@o zkQ|u2DtUEsQ1Y7OwaM#}*Cz)jha@j5ADSGN9G<)(IU;#u@}}g?$)ZltqWqRpog$B& zf{S}JGFcSWXjJk5QH{*iMepQbp-(c1(S!OWM<==9N7Nh4CTL=fSK4{81KK9ZB;XQh zd~?dT9dBtgM|z8g-qJA5SlvXuMEyjAM8m{bVWMzi;-my6t>Kb}(Wn&@oq;->hD6q< z6?L~Z<&74`2)7Ei31fwE!ZX1M0wtu!trj7E6;$vfZ3XwUIz%by#E0?Hk<(NdLHb=X z%rUC;cLavBKn`wjtY?-|v}P-c?rS_3oS2-HoSeKPIZen`+?kvqa6~c`le`@o;!F%E z)-)IxLX`J~AHin-16E|NKwoGln!P=BOiA98oSN(s>@HCvdNay;=>zOic0a{g3s-YJ1 zL~KJXPVPk+XBG52U}K+|phU;JM68T66Th;0xC8r~#CEZ*;C4c1lz7*S1-W#mbTBrR zr{CH88}C;vPtsSWo)lJ~L120v-BNTDZ@|RXu9iIitGJS+Bn@2>m!Bp^fve&9$$f0e zO4abAJP}(vkK*@0-s$z2HC@Y(WPvDbao(d?L%Y#Ykz4Q!#M88Xcp~{^G8K8s+g+#; zrF%##vAf)C&m|NTU{#U}^yaq7)5+%LT%r$+?bA5oMzJHVN||GnXPUcpg=o=2_aHYHN}U(9Bx4!Ik@0$k~ZE!L`C#Mq)vO7`%uQ zM>!G^6yT-gpU7<0mZ{Xs$%82M3X0fok0o;{^eQUl6c&YAg$>|UJI|*|0D2^PCSFhW zO7u?jVV0={jydoKN|v0RV8q zd8|6`C+*OJ0n7)**c;$g@NBY8qHV$sE%-w6wd7C2=kR%OWAfs}+sSv5?UXioDiuSsTZjqX%J}`IWcl=gsaeU z9K>c-?g+jw>%{x<7e7?`+<8C-d@l6PW@ zhMmEHpa9?D#9&T=RxOHftnb_8_eoAF&d6|GDVaYO%iL93=146_ThXsi5)94tZ^T|rUk$qFm$7I1`h=$vn)Bd!?rw-HCgWDDeiJ8C;_ev z?&g6h4v?i3DonF`mub}#(AhuVUYVIAxwC(S{e+7N+!LN^Gto*G!LLY4K#^fOs}CbQ zkA1IJf)S3qn43p91?~yYaE0elxU7Vg2nwI+2+vZw?N&=umGF1_0I~}HNbXPmnfxm` zKJqu7Uki#)5tX14!VsY`M#U^L@={`G5K8kWlpom)=~kfmF?Vc|#upkMzuGs*S1WXL z;<(T@*p0-~QNA_C+|z~#N3K()i%(p40^tL|9i zEbWIx*~gZcI;YwtKG^2C$}`fZA-xPAfp;%mRZhTbx}Jrby^&c3H%7)MR!1HU4#Rb3 zVQA3CHjTn!cKJe2?VgXk7r6!|cfieb1p@!`p4G|RJXr;B! zSqQoLdW&Z~TXWaj+?Ktpzc5LObWdAh+{1xF}H zD#s|tD{n>CMMlRrM8=e^>N+THiBk~d#aGl7j2voP9;yqz&S^C|%BSPkZS-nNU8SBP z!F*@DQ*yLr3v28Tn5G(pA(?D{pK5mFA8I@)F_c)v$dp5}O}(o9i; zOB_Z71!%4uFz7>5<(pUwMTj0C=)-BH%9KUbxS$U$m7<^zr=uRu*8;5$0dl3Joq^K0 zpbxFE<(D}H#bN^3Q6Mba7>8378anz+g+_sBphTnX{So3eda+=rK4&-xIpzK0<>oGEYQt?Hkg6i9SU@9v9J$2h0P)c zD?AzG>0H@PX`r+(uFngZERd4+xQj504y`!dwLr8yruFq$AQPMem!Q;#oEZdB0lHy*Kf%_w3{SGawP8xS zROx|iD_JTDR;pD?Vo0$ z5fTlrW6w(k*1pOWUW<&_f$QT+l;~JwYOw_9uW&{$ghq8!q^q(z(p~AN3_!Ej1P-`h zrb$H$=Bc>wu_h~58_!m@X}bm~BYoZ`%bVTn8mx!E>~BtUSYNB`7ye|S>#$Ql<8*48 z3;e+@45;hj^~zv{gMC23NAUfZA`Op}ohhBlGdoodRy)~b^9ZZ(tW*E_JXT<>gf|vQ z7D)nvG zG!bo$si>dT8t9Gp58C2hWsWkp&>|nO1+U{f!N;7bJmGuBx7zot?>=P?oLJlgb8wQ6 zRucVlHvWN=eT|E$YN4)Gm}u#0do@s-^MtQO=qcYy-zwkJzWK@mWudZ2dD+(?_=<0b ze`R7-;#o9wjqEIhf-$7hu6CtSm$hO!Ykf;Rl1}&K9Ic!h^v>rF=$#x2V0&1K^Vb8N&v zf988g!O)^{j)eNOi~^dp0MEoMLqXZiq3f9k=_d?5=YQ0@9x%ZeJcje&1$I#>D8S>& z0-=OsI`;yGeH2;+*9%W5Pb%*F7amVNb0gW~sb>R@r=ATso_aRmco((vjdL}R?)Lf$f!^WZil)*}6 zmGZRmjIvsJR(Vc&URk5OpsZD1R9;eER$ftFRk)g_k!8R4y{7!+``P!4Z?~`NFb@dc zP?|{{?WV0Eu8jVMI@psYN9Tt#Er^%Axi2wZZp>?JQ4T2ihVF(`;xletHu7c zC7)TLe&7dpfHm3Xz_rB|x4! zT|*~`G?}=`=6I(GUW4mcv73>)y-V%2P9G{QLe0dN66b}Qi!=pD7>WTtjW9)7uiktvo2eR%Hda zt`V50X~I1I^R8Xf-A^(X^q6oHjKNp*qsIOu6S7pDuaz-ada4dBVBYI%cZPVDILCK# zv~jex_=VCU`lWKIcv|!_v6t9e>?8ISzfp2gjyZ`fc{pq;-pHYOTCGfP3RHt`TPF}AY%Nq`FDF3?s7puZ#VISa_J&5@C%6f%6l0@ctzu*9PBD~F15q2R9_!C4BZ z@C{!G6}IzG6m~ceG6}FA4~gCPW~m?){Vgjx2Rj|0Kv50ea>f|~W?!fV>q>#E0!4+P z!D32)N0kDPE(NYHmC-|`GTKmz^5IgHre9r?vI6#(GU^V!u zSnw_!#hz83h~9#8r3mp19Lh@fU7`eoz_QI4Bh}!&;709`HW^UkJ||WOh$H(#bDxL!M{JY{>I0 znGJcKC9|RG#jKK!vZRtz!z49x;!L9J)W&T zPlINahh%8TvdM5F3*erD(+ROVQw!RN2TtaJ#yoHe4>aL{rVfy$xm1HwBlc1O0eg(p zVx2~)>$T^FI=hxVFVxwPCwQ_6tq*Pp(nWM(5a#i3CYrL%=82|kL!M~LHspz>Y(t)C z$~NSQrffr=Xv#L^iKc8ro@mN8Y(t)C$~NSQrffr=Xv#L^iKc8r zo@mN8Y(t)C$~NSQrffr=Xv#L^iKc8ro@mN8 zY(t)C$~NSQrffr=Xv#L^iKc8ro@mN8Y(v%f<%SAJ@DTH;ARSc9 zqk<;jc~p=B%%g%7n2AeMX3`)TwiK1Y``Jd!I8a&%HD_{jNOW-R=g1D&=vID?~~wCR?lWq51u9mJ=tn%CSB&x z6!LQefLZ4aJq0(YyBpW$TVzbvRC<4(aL{Q_9?UDr2`%PuJECb{!sQSe=2_| ze=9%);v*vQlQk6*36K{ng2WAU6e2PSlQ>BbLd;mOD$$5eQp6x`;J-AvE7UeB#RKtI z#n;5w#W%z^#SB>(x;MTk^mh22@Vntn;cDavawMrvYLJ@bC~`D8h8#<3k>f}usZEY2 zb;t>%E~!WAlLn+AIgy-18j+JpV{!^>OEENMwjCpmHkX+_Q?XOXkX zIpkb&9yy;}Kw6VFq%CPj+LH^(MWh4iNIH?ul+%GLT$Ft|o&>MOpjkh0$xswd6W-QM5y}W3*GWbM$)BB|4Z4Aw$V9 zGMwB%MvxoHP2^^B3(1p_WE2@q#*kadZDcGNN5+#0_$h<&3R6Ais{F!F$v2UmzH_*(o%+%E1A zzZD+}eJ6e|CXn#Vf@<8Moq5M-mpC>^NoutI-Ltp(e-U?EWb{~ zB)=i8%eIrJLh(2!in{S0{IrD^K%dNQVHF?$agRo4IG6S)Nlll8*0P%zgh}VoC6+b$DO#Ik5on$@xvUp4@{lrYN zs0-bd{TV0OD)xf+FPK}!KhLc?N~9eEe|)fql+0}}=61PLX-Fx+uY{`-+}S&f3Zd~4 zcaz_+QI_#J=XSK=z=mg5SyC1k|VFg6dO6 zl_R6xZY)7#l+y*ZvW~`F=Ph$=|03=ZkN4N{pWv_S9~-2^bPQO;_}H0c0$8$sc>TxO zZ=lq3g?T~?@icEei_p-&U7VS0A+{_9_rv=`B}ANFinfKAD+T9Z09$4Bnd+6U_L^f& z+?%y;g+i*VhSi7~Rby&go#>zBx3A<<_Sr7GQW)L#9o~a6(kHC@BBNzEU8gacZ?i=6 zL=%5g|Ed0FPEM4;^JFG<8aohaB@A>HuC%`Js?SwCa5WDM;(=>;;94HIjs?yW&-eCa z35cqynyRZQ^*pitfs)R~a^2)sgxlA~26u^B|7rfDI$BUvLrtrX3zWF0OHBJ(DKd}O z2`#=k>6G|pI70QzMCP~r95_-f8mHCO3o&DBax&=>!5ZoUVUWMbN_fXD1z7Ux_;t)(WRqqldP1-uA#Y+1;%Fy-6l{d7Um)?cY! zv*N*-U^jmquihpYgA=gEy4jYEf&$c4yLf60AsSY{ zlfSdS9-knB2}hx~Edt34R=Af(MBW=@p&^&-P?+bnHs-g#iKDff) zNbSQ)w&!i?RMOXfvfAH2(9e-j=LkEgUu1A8J9Mp`56#v#W&I*UO3_|dinav?w)ONU zSH#d#A_kYDZ6OXR1=DBhM`FuZHo8s;E5|-o-$ZSyo~kxeo2xC<)6}fGHS~FCq<@ru zwEv6Hm!Yx#asKiC3I5yt)E0gf`Z{FWLz+<^H=|0%9{y{xm?%#27SZggc$V+jbz1#! zJ1TNI{!6=Kp1$I2uM(Fh9~W}!87d_>)+L~W!A`0MQ|%lmyO~2Z_{4UMaKWW8JYpR) z3qaj-D}%Lz#|N(r-XoS5oe=ef(08G8N)4cMao|s}dq1TY;5^lHMT|nG z79M+Lf-$%NnP;%ftyLPY*j`K{vmee^+o*H>^ZYeoVX3k$Dh3x|5iTiYTqr^e+Ntf; zrT%69<^C1^2mKHE_k{L_9`!%wf81X}s|!)9`Cb(SxJa#p8|*2AY7ejq^Eev+#os6p zgug;-{4e-B;yJ7!zf?+YCzQLAmD^dZ2`?1uzXoMHZA0s?i~3M0iCt0R^Q^>65L(MZ ztyLQA*{;$&UMGUxp$_Uw|0@6f(4V2z{%8Hq`7c(xsok-Z-(%l$3I*_@_>z}11RMSD z`ZxJE`?vUesPFp&@|{R;PY@{D_O_~mw(6y7PnAoi-m7MU3?uCN#Qg9F-!itdhAagt z;bxYi5^mvvJP(Xy0SQL20N%!D2OHkTcYs2+H%4xXsF=NFZ-Q{S+E=|o?WbO;_E!gB z4c+QW%oo(WjRm~nEOGpr;Vg47*3E{p$uN#(ds}=*tcwYSPjDKd`Qoyx)UIWhlwDEQ zzwBytkUF638ueOrd}M;N1L#PX;dWOT%78bpDtq9+68_1XtC6S~`_q@I_D`W(9h4*=?;D(1*R(L>c?>TvZ2 zuR+0NtgAUN0z2?z=L@31bfYT4R8|EErm+Ct6y|{$JTQ|5#)PW=Suw_hX8kjUd$8Om zx#bSR&FU>`ULC29Qb(&}N|pXrEd3O=^tY)p%;7bk`_B}SVIC{tUewGJQbUAs>UecR zDUEJNjb^hNO+<|ru<~SB$O7{*17<-mL7lALQ7VHwF@yWq4DM1VMkaY7TxY9e)k*5z z>OASb;(Zl#W3!E@*^THoZ#7t748Dby)l+UCOjW0qQffLX^`>q4s7wK7sB~0OTW5`` z08CNuQD+v$)nIisc59Czv_mb@bs3i=pb^ANeG(lF)`+0?V3AXSS(@Pz^cSV_tSvce zScgZe%QfVh^1bRDl}iqQH&MoihWc63^MLNI_6lMY93veo)sl{rDy7=e@lqY>1gWkh zOZBAsQUi%TlTKMLa9Jw~3++QO8OU@1m)n!2#u7~~a=E1m)i9xzo0)fCv$@nlq7mg= zN~cRxfD(FwKA8KOEXgrQGSHRfy&7?*bQYHEZ0Vdrsn5l7o`>bGC!Jp?djshLi88ly znavp1hi0opwvvH3@Y_V9F)^DL{A&LE4@*0veZH9C~*YlXAe#4EY(Ba z6I_*Tk8%24)TNL}zaeP%%F{W;gg1De)k4_aWHI9nyju?9;NUjk$f%<{4M$)nH^7`* zy25QKG>dLhcj;28htyNLOrm6-Pd3vh+Dnjw#m=0F;^=na*-lKfECniIi8CnZ??`b! z&+>o+WGRINOIa4b--!xFYXdLPOGip2R(-2*#EX7w1e?3KPpivWD^|3Sr8&|`Yc(=2 z^BODxo>d==l(3MZcDXa7XX0w9LX05t|U4gmVK%)R-tV)lm zkE=dOl{MLr(o#rzLVZ$wN?oZ=PClbPr@qLu(`}%`V{B}7UaOC}2Ct9Q0_(h}ke)iX ztL;@RPjkD@DJZ~eDy*jCva8=elc&E>DFZ>hIRH%8Z~ z@2Jnmr%Scs94ient?K70O=QOT`xRT&$FX8Oy^ZcRnRi{d1iEZk zjYYi3lAd=X)X*W@U1}${m&ZgelrNGy$hG4gf7>)db7t32wYu?az`o3t4dLRTTIzM&_CcgG7h4`zpB5f`_$jnKh*sy zu)*Oo&QfxwTqVzvXUq4>bL6@5Jb7XCNA)xLb9tM5fAl-~CwaHLG`c+cyZnc|BDz=o zlNXf2vBis6i6WG+8rH)1M^oWy;UmIJqpPAd!ZpLDh%NA4vHn}&`%>T!#o!>eC^ej- z9QyS2W#4*u1J=RO;bX$jM2`)xNP;G4K8+KZ!9pGU6!t)ZFfM^JmF4LOpf8&}$Buy2 zxES#m3Li*XK=V$F$Vexjpw>*fnRO@(Y0t1;Ndm}P(W$~9C0t5gM4Jg*0EejdG;6io z*+0f7(Xf^=O~zPCe(cDWU8HNfH7xKhl-QKGA;7F81gKy%ER2jfkkq0u+#BT&Z?kAa zk=3p)r1RrjuVq@fMoI}#QNR#ZfTmr?_7`_`UKy?(*0uc=906UO+ex0VP1%ByG;EU! zYxzcg!D`cjDWw}VY3;@63GtVrbs`yUW2{8$Rzp>H**Ea$dP9ICG`t$azS{RA8~@6l zG^^l9?Unee@i(GxMyqShl-J@Mp^S~ilVETJwx#OAORj0Jj`OX#QKoY(N|g0MCSncUiK}4O7q3h8wdOMCkI3p*WCa>%4VfX5H?7Kv zXa&x63W}frCuyzN!ug<{)(D6CYizTlXEG1G!2@ryKwWsNR2QoY>q@~G{(@z%gbh5f zkp(0?xn=B8E4bO-a|fW?pLV#CN_d-P&A~fPKgT{w7fA2&z$ORCQi?h7o~yS#o4<-; zr(&Wt_6=t~8U>r=Zc=0I6zv&b6RoLss@6rk)3RDitwZp1tz$5!ouReT&eZ0> z=F*aHbtO~hpnoFsYz+^;*fLkb2R!g03&`*h3sl0#Jn#t*e98l#v49L)Spe_mIyFlx z7VCbS17sppSMIYi?}Cs$jTsIiE;R z)hT=o-sC*4z>j~?Wq|$3M-x0-1@wi+kL6DsjnVtW4Bn)~Q| zG-*D1?+MXPy*x^hm3ZIYbOdx?W~^TBK3va{Q>iYYOGY2rwvSozbR^hCW#8epowks~ zj4N!v!;PnZY^Ps}TQSx-q-hiFBO&j)1S^#`*mc-oKRC-91O>Prp&uP+4TW}Km4D)d zGR#uwlh_LQ*{Sw|H2QV@9jan4-}3a#(*7*I9j?_T!eDKPHdLEmHcaCP=?aD?`6=>q z@!;LXX5elZA9}4YLgSbZ{o30Iw5h+bwOa}Mc;I&)_=5-b^T3}x@D~sK%>xi+X1+=g zc)-U4A`kd^K;nS_4+ME2!~-%9gn1ys1L!Y`UB>fO5#xb44f%-hqfCn1#z==F?5)U-ufs=WlF%O)=15J3KDG!{=1I>7# zIS;hpfzx;(%L6TW;B+3y@xU28(257nB(f%ACad>*)f2U_z$8y;xO z1MPUAJr7*S0~hf?2Oj9i1D$xFGY?$M16_EaD-T@41KoI_I}cpS13h@4Cl6f41HE{l zHxKmTfy;TIFArS71O0g5N*?IX0|R(qAP-!{16T9FARf4e2d?FT>v-UL9vI96!+2mg z58S{5BY5CO9=M4IZsvhocp%RMBY9vH4~*u4F+6Z958TEBV|id44~*x52|RE+4@~5N zNjxx_2kzj3J9*$P9=MwartrW$JTR39rt!dZ9+<%bL!v{YW89@v4cM>!sr{w>t${A+ zK3&xPx}*p6pdQj?J*-Fcs2I9sVh3sRbA6{J*69ZTF>Z1qBH;1A}e7w zt9B*a%L8+GU@i~L>G;1M2plm{N;fya5^2_ATo2cF`Al{~PD2cG7EXLw*W4?N2Q&+)+XJg|lbUf_YX zJn$k9yu<@9^S~=S@G1|y#sjbOz#Ba9CJ(&D1M7HTJr8W)fsH)yHV?eR1MjjxRdiN# zt7~0Ofg|!;{V^rrf$dNaMb-ah1LQ z`i1&MdI!CuUKQQ+->X0+yvJ5aC2Zz_Ej;i(4}8D_AM(IQJn%6Oe8K~t^1x?2u$2cs z=YefJ@C6Ti$pc^Uz}GzR4G(PRfgL>XEf4JEf$wj8aWC5 zdaQkjxp1>~i4v zv`4kaw8yn4v?sNvw3XT_?P={9ZMF8S_MG;-wnlqFTdTdOy`;UYy`sIUy{5gcy`jCS zy``Am#cdLR9Ay{~?S-cP?$@2?Ng2kKYpSL=iHYxHaN>-6jO z!Fnb9%+_xu{K5mfd0-C@ zPE&ygd^{lXfS(5>9tiM2kOx9MAoD<&2O>NW<$)Lv#CagW17$o=&H}q5dm=sD;Z_5N z=tK2k`f&XQeT06aev^K)ev6*hN9v>W(fSzuR{b`8tUgX3uTRi#*C*Kv&-cT9&HO>AiQ37zc5#)q|IDXGk7#l)D4NO3s-TOxKw3^DyU3KNFS4?V<=CLJ-k(5l8~6|3xXs9oFjXWFc6|g7>o5N zC^1hj5MT+~qG`^(B+P(%HRv&J&pE{d1`l{#>ZlAgrp4@I82lAqT-KNB%k<^?3Vng_ zOtBB-(|8S+aU48Xen|J00EN&JJd7n+#a_dG1fd;H*G4)48e<^aYEC%|(7aGxxY~8d zbe%ft!k|*H4At2p%20y^j>IajUXYD{(Q~&a^e6SF^p&O5UWGay!7B8$p7FFG6!Q)ZgBFYk-=uK3!Hml}a`th+k#S$yw1h&z0P}ixVELJAeVoPVg+*}2(>u>1m z^!54%eWQ+nD_JoToWui-SRe-{I~mb@&<~(751irvSxV6mi=V)MEi(~-cl3AlP5OKK zW_=6OT6uFUy^qz(SAjhgB!8Uwx+cOrTa3;$% z08PkQEHnbm*4aGN%A+(2^uss$c72EbEu$_bP~)`|bvuI<@Etejs0{o6rouhkJs;9DOf)AZJ_M?D{903Rl@TYzupZi~>bN?He+dIsK+#w}H z2fIg^t#o{>qisHfEX|c3@wY)5kLj~l4QvJdp$jQrN=$LY#r1e`tc#rm7QxD*yVy16 zcreh)eO_84y&$cX#$)96!!d@T6j}jCOO%VAv#IXlsjgo{9;N<}_%X37@lyiZQgE{K zCUnEvbh68%a`di%rzrqeErU4yW6!%A!_W}x&bgvpbZaP>KYVE z(dj^S9Y_UJ;Z!6QO(jxgsq$1sD#;W%YZjT~rx&>?C&9YtS-OT*xXdXCYCv6@yNkUJ zMBAsB_VUuSz1@yUE5ipyDxLCHWdWQ687xMBHpG3kRJT~);!c9Wh@8p-`jdlx4v?il z54QH~#dsBHDLs`+9g#XRRXtTB#gWlI$`W)J2b3;UchM7b%G+@&aisWBgTgS%|($>Zly`BAN$Fi@{1*hR*<6g~fm2YRuB}47!~qUEtSC z)lW4@QGyy4N1iUE-K0ryEhf?qQux6j4#7&et^k=f3E@h(o(Bf=z?rN{1`J{Q#x=-r zI?AF#^RA;3Rpg{pqtwZ%#;H?M^%G4}l+Y8l!~9NRNh)C&o4ow zQe-GfI0OH+^s%j~sSnkrSwWxXsTQfzQk2;Cj?2>zfsO+0Y317s-$ zMr&Y;G6H`+2@@>6?4_WY;pwSd>WoyY6eY4hbn&bxQtjlk zQs!OVC z>XKBqRQJ?w{Gx5^63TF1>ipCNsn)4BskW(hsrIQ$S))eB@f_%ZHvLxDF44B@iO_8< z)HpmkHpUB~muadOPNVbL;*7(Y#O`dUiU_sheNrXgTDcrE8S9lOKwpIVInzs_B#rU) zN{?}-D(@jP0^Yd^>1a8wMEg3PmDfKtDpuw^lZteH=$*PE)h{(5^(L-W1{89@zu-Uo zh++vnuEIi0VD-2<^&WOl&$7(*vK^Qj#3xc4PvME^dg|e^y=<$1OQ4q+`{R)G(7N*J zWWgocb4X{F#|<-ME?>B0dvy{{-Hv>oF^-FnAcg3UGYQOuNlq2yDZWE$CQWvr0_nWa zn9yC`sr%4DPnt=0^D^$lO&`1DDAorzrEV_F$qe|7bW5qepT|CP2P<)8YT|+FWkl-6 z)F?ig){B`Cg?k)PYiODG`!Iq^p=O+Vkzs}dWKmrVRNl_%@C7D%No}S>LrD;*a)2xa zaxjaX7^bo7w*cIh8k-uI8lRewx}7O^-W)3vv5!t=m7RoRd5)6}%>{Lv%hFKY<~cN3 zN^>upvj}&j?o8cPD$lzy&)KZJDG1%?Kqw9U@-cG!d=w?O z0loh8-I|)5x+gU?H7zwg#SsL+o7@ma+E+Pg)0m%53xqMHz}t$!(e5=k`fcckS*hmX z7U9|6V%uMm_hK1G*|&_$FUdKn1@60uZvGxyVuCT4hs9=M zH#I+Xnl!Fh)0!~87|g+h0L=ma&<{s|o2|Rmij-Xx7=qXV#so_e9$QCq(p z>t(!GoB%6QV?rm3&WGaRgiyi&J5FcDk^|i6cWnvg6ozG~2U8zOA7hw;tx~6O=kP|ZJg}Sv?vFj-{e~0a>C`i+)u|D9xt=zf9||3VP7&?GkEgnYKZ&kN zJwsF_uh*{|FncIEpJ{(3Ki9z_RY-`yc zzL!$l%DyQ3vaCeMc^Ny-<<1qDLJPc-8Wg&s_}po^)g@_4Kxr*{)szp$GKEn)|0+YgG{_QMoc&J%I9aIg}7^e-x*3=i8K1}hkUWO#%H zD&bKUkl`^F$id@mFMQ44G!#ZzbneL0X^+0lcx>Qvv}#YVHYfr0Lk*lxw1!SnQu(&j z7pW($X18XVdY)#l2qXg|!=u6^pa!&n9!Ld@KqgQvFgl!z9U1r}^=ay})ETkk0yP5L zpl0Bxz}D25@NZ@N%6>2Vqila!yyDNYH{-2hlfxAiV)>UTv!S`{>J)1KKO>_#xPRmf z5W9~TT?5wr->^fDQqFU+YkIeO;l;PWez5>Q@@F=J8!!SETP;Ws2>z17940Bv@L*38Bwqw9>7@a4hz zxMY{_tAq1#$u3_ME^xkUv1}L)86y~PcRmZUwvGJSl5b52_6}whWQ=x!YF2mSh-erG zZ?XzMJ3R{b`32~e921)K&pN{{cIh90O9E#EK9;H*1Em^9ks*Iws%dzaKUhL)MUFCN z!jB$Ru-Hc%dwI#UyVyOdgydsONv?&G_pp+WGj_6)!v&q^!pG8;ff`2t0F8lkRiH!; zwM*r2Jm#>E&7qF5gKZt^NYOQLjB!~Y6s$C^2=oh_z>|c4C;0o|J%~$odyrslnOQvp z9Sy7)Uh{p|2k86fLjpqs!vgcdx#(3^C+Aq=*iQ~j9ALNPTqlwGfom*z90_$2aT8-K zKR*(=WVc+^4s)q+N~uuH$l23BI$kl|g{e7=Lzi#?B{8UmbdtV0UVy2JK2tAbOFA+csgOCx8EaE_2( zIOj=Z*u>^1!+R`{gUwDo&}u-7yM+hdX8{>LU}ebgArE}S0y+5Dk%7geOP)_y3K>3S zfog15ISRY-=)jo3{J?_1!T_l_(-;p9Xr2?MtN`^_JaMxSL3z|qtjrbal{c+zZBU;?3aS;?>j9vJA5yCH&GR>Sdp|$mH6J6WiVPo zbxf^<<9VPC3)F?7K1WVp7ruztR^tBisI zT#a2}pdHxGq@%ih&r7_fw8U#s;&-gX>kLl|x)MDtXsa_AnSWrJhZwuu=07O&Fl7Fb zWgd=YapL2;%;m?sC#Q+&Ch- zob)EQg1zpkRCVlscGRj?@ausRek+}T;Yd)SLbu1i@uw1gX8{@hV1XR$XU$Cx{&s+Z zj2sSE0slw;6n=6bI6#&nGWg<5wmA?T3X8?>02YhHviybJ&=c-D1QTJhafflIahGwo zF~zvY+gqpwp_X9BYg- z#v2oi+l`6FBxAZU!c+6 zJDRa5BTgYPJAekBccCzId=d>dFcGT@;2cbCL!$y@t(HajtzsEm9_;8Z z5e8@%#*6YOBSQ6xB}UB(kAboq^nPk%*zNKMj1w$9spBuI6hS>73CuI@Gv*tMj3X-+ z8_xxn8jqHmiI<_cI*#URX#ZGl9B(Z+teMEI^A*M$VWr&MaNvk&oqLljA;#8aCE#O+ zsGl=NaCy%IWh_t$2I!~qH{GN=xK>d>L7@qo?)DIPF*Ak6|% z{FOFn(eQZKc*J>v>=U4{YRt zw|U?l9(b1rHu1oFJg}JuwqciMH2s1HzT|z%Cy6i3fgW0gvwuZOSyfYP@E=ZoFZ*5a8U*o18^i9!vafzKAc)oX06f*)#Hv67nK==uZ?ev?Zyt{ zTVtp3U8zEUk0m^kE#VKw`e5z2wLNO8wmx_~3sho8j%su;?=pTWCH`j=e;h0R7sK<~ z5fyJ*0?%tlbY19Hpy#zCQyI@|M-(W7T=^O0t;)|VKdb!g@^i}1EkCdP{PGLRTbH*f zZ(H83ynVR=x7p6v0_2g!fU!IZv0{FH~uvKGX6FoEu?*EG3`%F=|DP|4yEaHQCX}vtZrK4 z66`Vd8owI98FJb)@6#lDdm)_mJQzhm0U~M7gHaTsLYxPqOu+MClnpo!M%jS#V3Y}X z9*m;Ep?iYo!KlMy@H`kr8G;Z?$J2>)S-L!3kxrH>y@I889*m+q0+6)l!6*vR^9JX^ zsKZml^I()I!Si4g1w_!&dOB4~BLg*Z9*m;20;EwR=fNmbp69_R6YxA3WoD2{S4$sJ zDuW|21LwggGlS}B&x27E!qA>+HJwS{gAj$fJT%938ldc^jVRICjzM|#Smt99 zs$UE>V4+{oGBtFdJgt?0kg?W6Mcc+N8?P8&8ebVd8oP~}>7&v|r)#B;OIN0A7sf{Y zLZzYvT26axlu)(~YUVtpW>(Y*#T8Z8swhqwy6@vvqaLG14o+l0lw>%GUFS{1r|9WA z&pM^+EhK_hiv7g_;+fIsD&7%q3tcS^62Db;DrZL67Vr=M~=(mY` z%BPl(4^0StrwkE?io?X=;tk>m@%GU7%1z>o_$^{y94XF>|DcQ#e^jdC=SN42v*J4w zlS6le?hM^naZ^R>=vfuJlm(&h65l6&QhrvZmH(pbRwjshl)cKYidO!cvQL>EpCnEe zXN2w$?-c2)lT*Zd#HnJN=C=h#ihn5kl|Plgl)n`q0`U=%_{o|I zi3G@t6)#o1T=7c9d~u<;NL(z2h)lvHP8y~YgpkL@C&XDHm1smKDPoYdB7IQtW$_g; zP3{V{jY{!A{8jNa@pbVH@l7#97KZMPFABXKekc5HcvH9{X(UTplG90! zoIzTVGs#)xY;q1cmz+n=Cl`>`qz!3H+L89;LUIx5Ksu66q%*mgbRk{IC8QhaPA(-q zNKbMZ=|y^zKIC%Jms~;mkt<1mGJp&uSCOm9AW~7*K6+vF8gebUj$9P&5bYT46zv?n zo^**0CPTr-H;@tJMsgFmncPD1WF#3yMw2n*R&pB|OU9A$WCFRJOeB-YWO4_& zliWq_CR4~gWGb0Prjr?DCaEIbqrv#4(OG0RxtGi#J)%9My`sIN^T`5oKY4)6iO-GC zi{BTYA72n(7+)M;5`Q4RG`=jpJie4HBM-)xlNIDa@(_8LJVG8NkCDg86XZ$q6j@1D zk*CQsWHot~JV%}^EqRf=L|!JZkXOmuZE#xhc>)2<*zgxGi zghuvIq=O!SzUXRQ;io{r^P+2`QU>;9v>V);u8q@pi}7rjrZZ!Je|Bw zNt+M14)ixkH%)U-f!dqyczBXNz)PWK0u5|E9>rT9jNUNmhYoLT$J3@l?sJ8t3-?M6 zhn6+<_&@!6|k}q)kGP(wgugDPeVFpdAkh z?Ym=Ml1ey@)rZ?Mao_ej(8kGgM#nVWZQ&T{Yh#CEY3*~)fm))9Mdv^!SQWb%O^b8r zLqR;>O3%gnEp(}X%OI1kpV8H8mu%)ska>=MVq`LROZN|&%(x{dV9n6;o+Feam1C6d z>9->5BBSFQB4gr)_e_eC(GQ19QQQ*ytc`*K^ho!z9!^1Vw4z-rRZZ!cu7^*!WbH*9 zO*Z#NTe9^o!|5!*%@}?EZz=R|u@vf+KG={UHeGA!#ywnu-O<$4jm%cL1UZp+GB{r|E7L(E2 zt*r_g6b7?>a%amdbs5(4%51c-NT5=ALOOkTZk^iK!EL$r3_-~}cTdgOOjMptK&`sx zdb2kS6D9LncS>5rEs7b2i6`<{;cTIH4saTOo!1IeN_?v!%^jTE4PYOi4^AJ}DLYHX zorT&B;5`u?oIcE>Q!k+eXR^J=KIfsEgn2rVy5~GMqz`e@GXiUaJL$PG%^l*nCp|Z% z4|>w$O`Zg26||&X8h_|G;HH8r{)bHk`Sky<-^Kqo8T^xP2qHtp3 zq{K5pN_w-gP@opsp5oqJdp!UjwC}0CyqezGvq^n~JI4Cz4MlXQYpg z%q&%=DwN4RvNO9{1 z__1`3;R{SZMj9xWMs`I^r@ndV`_j~{Z$P=ik_s@tRIwIdvBo)3WAe1A7UE$_8@BN! zXv+ibSYWJ`n>FgoVNv?G$e)ojm8!(7L<1!nU7TK$z8_aObt2StZ&wU`et88SD5c<1 zRPZ)d!DR?7W}$`YTUlumEKjdUcT|#5C0dlxgQYTh2&Il;r9PY<8XV?@{4g`|NIDfA zT9JeM?4~l;z}$Bv4F$9*@@RT>q`T5j>1{lgt_JPxV_n*`=7~cTIyfT_L3*D&2OZfq zzX;DlsTH%@T!j0@C(}=rD#A)E!iA2!LSwGNlbB9yQ{|vDn}G@!vrP0VeHVu*i;CfO z`>s5V3YQc^-FPSm-JRU1Ah1_NLHvInpue*svd;((bVBey?|k5ibg2`9r_=v^X9Ulr zOP><_=d6ZSr~jv&6+D|hoRfkBt%jaUf2%y7UXy+yy*ABt^K-0Iga7_c?y4AtOWD!7 zAKjOGI1r9cYLBX6G+b(aEXz)J6<=zKuHW4 z2yC(pi`a+pa&VbrnzA&9CFlx7i|WZ?c(l4)L#`>`tG<<9m*xn9z$Q1bZWCEYp!N%c z?1GX8qS##iy84!St8`;@o%)XYe0;i8E6y=jaO+T;jb)Od7h6d==*^aidlg&6SFsQ9 zCiW(rJ-9cq-%Hz1UR$kiFQLtcuir_(o8Fvu-^I3wXb>;@F1DTA2UYZA_0kEf@J}L0 zA@l!*e*i8=z_S%&yXVs#7MfJ_0O|T*U)y8Il)#1X2;qjn1F16tHwQjRmki@kOi*GW z`59IT7s_L6x+oCGr|HkrhY^TlTd67gi*!*SjxWH&KNvoDrO-b)LYv zyI(PMB@gAGKihM-=m1R}zh*v0!1nZx^tb7q>Hmyq2%Hj)aa0^m_W!C-1vwbtR7#|PkL{f-WvKf z{abn;zXeJUz7ECWy)jVe5u6{tn>p{zzaOpTK`sE$%n!wqgTYRf6*AAk5C_OoBnm^F z+QDDx1U@D-%y!446ooMNASRnEFi;8&alYRTV;vw%S@Q9banBKN5YCl@nNUW~gfo#$G?R~yKUlH~vz?Eu zHKy4d$9{MDAf8ENN=y=EnWBYMdFJN$ElxY+>DOK?Q<1qIHKyweE3OP)o=HPS$oMj1 z#-EWgflM-E-y=R8BloY0IK!!xEuq$bt<~k$&i_uIh^y28YA3S)?H`H%_laojgq-_t z^NG0H^Br5Xuhl-r?rSxZPPAP#=zfkFS#knvo4El!;NNJ^=l=%ufxJWiw>U)n$M$?u z86#tQhp^+hX@Xi`aDBuqC==wtJvOR;u1u_dtt~tv8dz z>mHZ|{HcW79dkr~FL(nU#GT{VOsx#{2t1%WhfR=!iO%Y~Aeak1RpxwHnE|M3XATjo zDu&+x2O^bW5?cy-QcC?~tz8%0%8a(dfzL}%$goGP16={6;Qn%WtSU_QE^p0UhC6tO zGy7Nnk1_lIF}H_*hm~CYOoI%2E#SX)%m07JYOb{Lm*Gx!gjR#Q+^=2x$gdULU7(`F z7JmfzJ5&i%SjI}YhXquadWgX_`2XXm8&cj zrtzbpDNcrTYsESwr;DXV&;%O8De!qkQ`lDVMMcxhm-s)1ER0^A#Y8!n&Q9w&n85-Y ztzbgd)JymLzK-v#*dE^zuUURn`O)Ralpk9@Rj5^dTzO@A?egQxn`c^N7FEm;IL0I# z9-9ms@y$zWEO7gd{yb}y!&1QZ461@-lkdT1*aGiE%gl#RE7>ppF?<5s;0qWW{EBCz zSN^=@AAy&+b$F(C-_Qr$q@U35p^B{v4EN6ivmGEyb)9Qf7A-&?@ZM!2*dTdEreU&C z@|0wgWYgrS$!5t`nKLtIWm+UpOJ?Ye-Hl=uFgD$gzP?i&-Faq z(Cgtu0zpuK^D{@FFBa`!);$6G;Kicg1(`YtE`RkOV0VGQ%3FtvGwmYnBNs+GM!F}Ci&RExM~;uwiCh`!AGs#d zDAGA`LZoh_UZj4cL8M{i#K^Ugn=Iw6<5#+&{%o>MqHSVF@O@!d@TcG>$=8xU37^B~ z!6uO|nT^R0k~#Q9pjBel9{wi>^XwXhEdCB#ETLBK_1;F?liZtZ?Q7#}>ucw`B-1T( zq3+A@MH0uD(lrza}{$T4AMqX!h>DOMN|j`;zs)D{cL9RCLV{0SFdRY-{#L1B`Ph6nQxENaV6iuZ$8r-RnvvK<`YwVEqE*eD#e?j7p47j7jv#JQ2Ay@nqzw$Zd(S ziE)V&tV=pp?{zQf+!(n$vpT{h(^pT-gjwj~M?efLluaGgoB}aZBlH6vy3C8kFI7;k<5x*JLD^ z@0dhX6rYL+-egBLqrZx>k57o-9xrm08(iwd zV+g9K+jfT9bODBDI1j+Gf(PI~^8XuNDz6(bFV6pOM5f5u@5amlo&9bqCG}>M$~pVp zk|}cb8O}M9 z%M&*!Ba{adqcfDaL7|lj)1$fP;w7U*-UUDwiJ`M~+ukyk_NI=#06=dY@wSXl+y-Cq zq%?dfH3D9e94vIkIhBrPa1jqIc7QCUkYNei>14Q{1#<9!!$LVw=u#e7#skZFURCtnSQsJp$ zXk{_9iia>bJu6&>XILN#t63(aT!v>|8q^R~e2xd6XMt+4#{DSGqfMkQlU9Qlia{0D zviZ?kdeMdKx_pU;FhV?=XAaU4YJlmV!cPufaT>`2Ugd$;c;Iy&c*6m*R7eiqbO1}} zTMkg5P+?uMuIpJ{4cOo?6{Hxjkq6%9fp;9h%I94^9~CwgL+|lWGpR?!{)|~e>ubM{ z+eDlF-|(G3J~JV6d&Z5bF)=eKGdXid=FZGrnY%MnGWTTII2-Jl%G3-E6fiC0jkfWx z-(Z`bnUR^9smjdC%+B1KnUk5DnU}dQGe5H+voNzLvpBOP^Is8_H%`ZYjtB1l%n-K? zBPH)v0M;PAN3|YTsi(2e9&E^Pe!_?6WV|u+A8<0ZnR2knS>Iwy0d!zrO<=x9)hcP0 zG+X+l{N2oE^|SJOrERc4+FHI)qB~F=W8r(WB!fv_4L)>NCA3OtaPa1G3+K~g4c$jr zuWrulET3Ptplo5;qO$MG8{<})J%{FLXSWB-w6ZS2?d8+UW|Yk=t18=);Rxx?KbK?+ z*8N9Lqhg^k&YIF(c7j#Yaaf#p(SsHZw2w-Ce|(&o31>RRKv4pGl4->%EYAn9O1k&F@qB%44{445z+h@yfK1vv$C7BOLb zDrQB&gjo!jz?=~SepNfuGt<3u$Kk{GeE-k;J>GfMRn^t0x~99j>aFy<={$MITw5Rr zc^cf-V=cq=YRuXyQbQxBqd*umv?U8r**1HL zKO95j1qJZ`~@3ZFxj@)t$$5bEzEde+TMb@pN(?v03GusT?X2Q(=o%P#xmcdunDqu%QTTs z3vJ1!&;|09F~S6Y1oAZx_=W`($hYhq5Xg5d2KV?U4`oaZ`iF!g3#=LFpxk`^r&y1EDfg{C7 zjoT-h;QE1HJmV5{lQHhG?s4t|+|LDmEI%9|0L6ko8=L*Pz)w4a4UM0xe=M4*mU?F} zj&7e!A!7~ai@|(361;zBk!jFfMCP7l^tE}GLBDL8qbzrxw&n!uZ6nx!T7MVF7Ivu? z$j=4FZ=ywCO8bv8N z!P?Rb?|9r(T!%L#@{M_uh>@Mh&@T1u_Jx1m^pe-^$`(LC}s&@SxeTDmq9cy6%7Q1A9vUj_QP*|RGj3f zOm(o45QInD>GNYipK~Dyj|C7Hf)GJm2tovLAqbDn*n}XQl{qdG3m%_2A!8eY@I+w4 zg&;gBV;gaBcBYYtgC_$EF5=)R87`=x=?Hjg#x~;MsTqgvDW)%$9UZ1~o##2vcXskG zb}n%q%Ca(jVVgJN!~FaCTe=FwN9Sd6sKIS#jgzjxIs^&C&(4Md5m*w=CuYU}!EN{S z%w?{5ndW4oY0d}J|N6#zM&`_aHs3}w-29cBZw&6SaFfurytIQ_ev9j8*NWJui6N0q ziF^I!<#`e?);215(iiw22ETRw^b}1CS&I>FySn#ucXM}lpPixcZINWCNm33M*BIZ{ z9(g7kq7~EI{NjS4YgPY{ZV|^yeItDRXueIrgqW5>hm+&%Vy0o5=~Syyu1}jAZO5L zN5~!=%VEp6xD1#gH~!@KqRgLua?Fx?$o@1_rzQ-bdB}2ys)|=!@jT5$-I{LRhPjf;WMyiw0xN9pJFFHvEQ9q( z;Ve{0`;wbVCAgWF0N-NWlDW(0Aqk^XienQZNp}1;6YdojU7*@4tQDEtGUiJx4i%k~ z@TnF>Dv%VNTiOjUyC6V;8!-#ze+24R&aG@*Q<+ z&?@-~D%smgN44u*vMRGEc5&>I*jV2L52EdAqG^dStO(!gZv=JCWsP-VqFo>3(0D%A z$9@7n1I>!;`Ro-&w00&M&u6dj*5=4_XN*JR`P>;3NDDeCv<{o&nCsBDQv|rli@r6E z=Nu1b>h))g0Cm*ks6CQd>#$5o4Om82!<0O&$U?_-kVi8mT;I~UUd(fS+@9+bz_pUj zR;O6!g~8<_&{HZ=v_1K!*ecppF+ zIxlf>9pvx;_fWL5$%mpFGtGD^iucmmQ_8Mli85@z!<=;!4EU|Sago#hFRp z$qmju{Wm#pcHZK=)j2PIM*Ph9{P$3&pA%mYUl>0(eqQ|i_yzH0@hjpN z#`8pEbxs>+Tc_^zh;zY9RyiMZ{>%B0^Q!oFnO0EY@*KEn1%abjz(8jU%A3tZtvgbYKVbj)3z*SNyof$Tj{%T+8Z>5#~&R6P! z;oSz+<%z_OK%U4fU?DUXj*6+l;~`x_T|;|@9AdYSO@p0ch%8_m>=Nhc4Msx>I))Bh z1AL_tak+DkQ0LGP*N1Vp_)&bKt5;}>YpUx&*FmmBT%X1ZA&xi(f;WdOLzL1zu0Uj( zUIIjcp90Amdt99cFdt;%-+-YS7)3yananh_cu8vqoa3l1dR>>;)!frP_GMp7v4oBq zGaMa#^0y06lo`=#Ktk)sK)HQE!0R*u;M60np9CgqKMDPklQhhmu$SK}hv7LBLsJ+-h>?rOg z?k+wftPwhi9l{;WxrWmKzw0rHUdhM4KsvFN=E)u`0MgPMQlJoE2z6lroxPpCBcMPR zs{+KD;dx$ID_j>^C%hoMD14QCNmvoG1-!f37ZgYjqtEJ~4l>X?(8?DUpm#5EZ?Uh~AGi;- z7Ma|Kc!yXE{6I56{6zRv*d%NgJ`+BNRVgjvzZ1R(W@D{|rs!k5W2^-zIyQHZI9$9X^o_7Z81Ef#MZntn zid%(=-icN)tqr?rE3E5Y>{Nw0Wfj@1KH%-$SV15Af;=g(yam#i2YdpNWi0cwK>8VD zj6)0yWiJCzhk(i6$;H;_3nc-KoZ%TMev|w*`Can+FX*PAVEZ;ZmWEc$sjyuuNDkTp?U3v=#Rddx!sSJ6^|2-hedp%c#=397V&AYh$Yg+$?cOzdl^8U?9HpJ{w$!D94#0o0lu!)vdD0E z`Z+_{*x#J{Vy4sD9C5CAx@f)ApC_In(p!Cwu>?)mSeD1au`T71nCTN2E&9MU&8|T9 zF%&H7SJ1cvSilat5m;M-E(B+ZXNw#QOqkrX%#^S|1{%WDp>$k41oL*%jEb;Ov<;nr z*-ouUucrrv&k)d9fq$Bz^cHv$;9ar4LD0WdQ~9wO{WGQino9Dq^SyBP=Nb& zJ$^@-*Ql3>i^V14rQ%ZY;m9MA2GL9(P-ha96}!hC71IceG*PV`UrL~*6F}cuT@4q+6;XUd$9djF|7nOxGTds~Y3Ho_@*siKuvXkK z)`P?YljR2SM)4+byH~Or{rt=Bm9?6g=pQaJzVic&CWSwI;HbECSuNS+qPE!&Z_f zV|l=V%Z}A56Qovr4>2yjQ$WykC4kMD%VZ zI=gnPh!a`9)?Q(!GfqK7ws6&Yr4(&ab9tg5h`b%1h-T4%nwN=11LBBkAMRI@MFO7i zBZSbtgygDhk57gw#{q&(Up^{6R@8A1M;;fS5Lb!VYDDj4qHBF=hlpVkkY}-W{1x^g z2!C`CAqR#JG(N!VQS2DTl^|w3hSfzva!~jn>jE@GF02u!f;^T*QM+A-x%nbA_f4;I;`O$%60>=hs1=d!st9)HNE^vI{mCAV8Yn5L{ z5@pFUK8S-&r~Yc!sc)8c>RaN!(T8t0-G}d#_TdJR>oPv#MdO|I?oR5g5SeC7br?1W z=^Z|bjSuXFtz~iK*T}ZWrs(^2lj8$u*i1Hv)kg6M;YcgUNj?GGJr>tApV)-p!)fP*2D?{}smoclnp$AH{!M1Ja3W{maU)^S=~$Iq*tgeISz% z6H-D>D2Z%BP2>_aiI$00iCq%;MC-(^i8hJ0iP}WFMEgXCM8|{{@V0r85B_ltcqs93 z;*rGa#G{GF5|1aINZ5z0rT6NbYrxq5f@{E^Um~;-+>u&K-8Q6$ROW%2{Ug(+57@Y~ zFEbLR{XroAf|Z_xaXSe8%xfT893OuF;Lt;`NtlS%Edo-WvuaNu9|ox9jA{_#Db6&^ z0{9bSjE2ZjrJ$pE5H~l@`x_|G-^Aa=@8XN2-^YK5@5~6{O?y{u6aNs2^pB6#?dkti zP=fz?AFFZybw#>kONFXZ4>`v8?yp1b(T#nj;y1p#U6S@0#36VX(yZav_&p4fXOpJbldw>Js2173U70&#mZ)1GKY;sTk))=pyr>Q+5H@il|| z1*8+aG$LS7Z!bq=jR|On-WHtqH`V+OTj)__oVh zTuTZxrYuAa}Wh7COBw4ad3oLYk@3aEb z;yQX{=U9!>Wu=C|j8e`s{XP8pg@ak$<$+~^5}*JR$qj9S_Vy;&xOKiDL?5>RzVm%g zD?kh4my7<7nwND_Z)vHk!S&xZG5bjW$@Dahf2|j!9*LfbUWvK{ zCaL*ve6RPF`bjjo?f;&knIzrl;WyovlB7EiYL=hH-co<*_4NC&kAU@{Mw!U86^-gaxDnL#Pl!zM6L8YB&thJePpoJvER zH{6V?uWf)srD0YTPItxOpdN?O;Pe{tzS0Dj;Xck*WZ6Kl0JqfMs|F=&&R7|{ykWVQl3Qu+_wV9%8PV>j5= zs*>b6b8p1$FARIc^E4R^9@7xAkxlt!e#smo9V>B#_+%Tw0+~a%B8>@ma89im>+!ku zp7wZ&Bf#re`;+$Lp|ZKOvZBE7X!&&G(7ax2Rg%mr1)afz1ac!wEL9~=ksfnB?s~%Yr0XeH zb>c$*u#l(RTmH1`8P~I}HLmAeJ9;;Is&tyv`0Z%ZyKTKRN7BB!=1S%h>eD6d5%oX2 z?hf9UPWapGx;wI<%zbwut3fz-p<4KqVBLkzluj($yXwy*gDLgn;VNs(ISlR0stV*> zRx>8adAv$alJj|xKrUeWhf}E6?PP^|wzRbTtN2{k*YSq(L7~%Kmz94WKF@!?{{sKX z71n4I+KoAHckRdwXkJQ&r4|sQovFJ z0En3WvyU+<2Etjs4u9P&dD|hTF zNek?MwRDYS4ef8O8-&rGd2pO#&>vQw>=Q|M>^krY*gaYi9WB;@htWl z149Q~YXIsHQXalC?1SGpo$B%R%x%(2>2~Q3sXTmLV+GgS7YO7Awss6qY|EPqQ|yK? z#jB)yB-=p6_re(p7pV9?iN+;H?jSYJLX1m%lhiSGvviAetF%Ju6zdYZQ@TsKTe@Ge zk5Y_Hr>h8+bEU<#y!*hFh2 zSg;j=ivnyf&mcagFfY%b@E_irjjxLkGu{nxYQ$WNR6f*c~i1YJ@Te>OZXSBexZhA=YrVr=YZ?ME#cqnz+1dO zdv__e8<7F~9jQlf12FmB9^2`&#Xgg|&uC1vDjmLPQ3Gph9G;K7FBO7)gC9umSz{3+ z1@_=Z38G8+EcdPs@}acF>$9uS)_CD9@RHZ2cPw|G zRGv*B&lN_>NPs%XX6Z-oPe$k&0Qt$g(tA?x;78IY(x)K8XCQF7oxoeXVS8}I4tz^E zM*WIV8ajj}A$UKRzL36@zLLI{CWOsM%hQ901&<2uln}h%NEm|mmT)&aac&9svH;%lP_b*Vo#5tmdT?IwJLyO1?BL{}&6xZIOQf@Pa2;fe)Df6i zrj3it3C<1vEX92hs>_kLgKUMti4vRXYg5s$P?3|Z=r^f1TaknO4wXdNO11&0q7>AD z<+T;C>R8Y=X&+#Zo}Bt}alvxAG&s?&8(eaT^k>Q4@>q!c-QOe^fP8ZB^5C-I^57N0 zD}z@BueM|51y%!DRzA64X=pv>9)4GH$WD22a7oZ3`{nC{Hw14C-W0q!cuVls;ELdF z!Ii<=gLed{q^G9izCH#wAaxKy-r}8XH_79^1lv#8DM=QzO={)Cxi*&DOaYhF;`B zH?uwBC9^6rAu$w{uM1bmao~<2p0#bZsQtLLUC#DVoA#yuw$X)3#kUNa86hr}{J9)re2A~cxLga3POFinZ-<;h&s|?U;4a6OL z&$m7HZYg)DE)BBWO5R02+kcM#i}-P_<_B5M%S|18@3^hlt)uJc>YOLu4{dkUIDcd%*q1c-GYeAWt4Jw-y8lt$CDz{INS>!CBoM2<*~iyRQ?E*}~>GTB2uEHX3MQ$9S>ORkf9 z%SR`lNMnp;Ovm7)_UvKWxXc0L) z#B*2j?xfR`6jDN!r`qH9tV-UKyf@iTJ}>rQ^5Nv;Nsb(&+cl5yVdyuD5pFt{nPyP$ zq8T*HhlUV`9<&%jRf%@Ac4j-5m3ft3p?Y2FL?tj7|E8 zG2NhRtl?l++ZPnbqsG_*&ytACVTjm@5tj$a?Zv_J5ZM}ad8ph;6i9C)wVOsy`tX1P z59rGSx|&n6C?n^QA;smaNlCU-u`0LJGikPALJe6y+IeX9>?Sq?*Vea`QDY%X4D0LTZ3 z6J#^Q@kIG^K2k7-1lASngU=L;REEYLY_Rq)S`wmc#TEkohtLO zcw^+L(wn0gdD;&6j2-YRmczKd+h8>0q!vy!;4N8^S^*cy7Z)H#@*N}}BpxLnEnB1c;sUgt=hJs=o*!Nebc=DgOXjU6 zlg%_eN<41+(^O-O)3h1Wk4BFzoqpVyq(Nnu#*aM)M&np{mOK+i<9OMOAA5p48%E>A z;%IQ8Bl7wO9&3zj&$?+kfCN{C(kx4-X_nR)uXQko2^XZo42^BIskYY)EmXxRGRG|0 zEP*L;fvh)e1r#mjd@hI^6RPey_(z_G&3g&_)^{s2pvGLXUKsD`oa&N#(AhQBE!92M zBh@q2D~0#rBYk~R@25xk3aP%SdU=k#R|?t8H`!DcckLZv&_A`EmrvB0!F>6|rPDP< z-;r*fo#NOu@0NRZ>JRVB#wG#{hj-ilKfJH7pu+<%S%P;KyJx<9mTY5+o()H#FS5kv z$gg@Bi^e=woKZQmasgkA$BJ5kKwf3FtB1VC177C=Z?J$od6NaylDACNFT=fn7MZ!0 zyln>-$U7{#KsK;|_3-E9V#gKDL~5>~wRfI;zI=gvp?s0NNWNIUL|!a+P9b_f6J3iA zX@{63?-~7AkK=;A?S~X6yfNwD4Zmx}agwESgUrQy#MlZLG*Zc|5igT%B0u_yF(u97 z0(qY`)wqa%-E?in21#5l|J6YfIWhRagN+NYvtohe$p`Gv=gCGEz`f$|F>wg5X4VS~ zDPGuJ1M7u*$8oJ(@{Z#=x#S&32g@k@8Q-tg8Q%NrD!E@-ZRUEp(U%;xurU9e|5tM= zg9t-xXTDt4fj)vq74IN7$!pmcJoqS4i&4?7>bSD*RlTcjmbEw)93p5UjamDw65zX?0a$ho#6UlidtnuPN_z)^4sxH&J)tqF5+O{W`;s+T-W^9LLoLT(#}$UN%A=zBAn{D zAqnIQcFhXpOBRqMU-3j9@->UIzxx|AqBRUY+28#w3lPY6EQvtAX91hTpIPe(KtP;_ zUvh$`_Ou~AzhK^1DQZY7J=R5P5CYPZF!@-f(Q|d=ZofE$~otVS(;&yD+}8K+BU$tQ<8BA=^6c{R>8`_Ehr6r^82|n^1n0WWb6x5`-*tiOlJteH zi(HG-i(D7GE^!SF{SsdnsIOk)y41C^UX1*6dA3htKw@BGP-1XmNMdMWSYmi$-^6~2 z5s3qoY69=5wa?@ERcBW%s9IQcZq<^i->P4!URu>q)g#k0 zqkSxMWDzjsnkEoP&`=e1u!{MxI}841E33h=mrteGNpMD_yV0u;Jp2WS0`x5sj9!NZx_*bHNLD3s^>6!GmvPyPj zkx;v&Ktd7ixQ5^n9bTZjjq7pz8{E;gFDYFmnVz`XH7Cuj`lH-d{7G)kMJLBFW8BfP zteSI6S0H7k^z|SsXJB0X|A89YD({Ral5OPw+wo22NcI22@lF1E#g-&zT2o!)0Z%x> zoRvGtukwi=o73{&m_r#@g?K3QJDir68;3FgbdYWG4f-vju1fGo>JM2K6d@}tOFmz{ zwwgom5w@5MUTM0Q)BK;?B9}%Midy(e4jC^HShUyE+daKMQ?dp%`F9T0xvKcn`<+)& zl0?{UhZ9mbOtYMYd5ps}uVQl~>Qk)8X~mKAD~%kd!O)SYVMv1hMbGgHqki}kvr2GE zdC8wr%0Z=RSMkzN4m;v3z9U;_bM4FKE9Q{WR1S%MRP*0C;NxGfnz`jO43Nas6&WA5{9ZN0=SM@_K#jkI1{dfI}y@PmA0=}{_n?M+P>iz zRw7DNsZjpDL1q7X9W#;*v6(Q=oxo!~+2Fa%bGc_j^p*5$$@ikmJR8Y1p7*2Idam|- z2uTe%QapRIC!qvfOrrKiU4PCqWrv+${(M5t?N@arNt$<{GFZasn$|<;X*{G|je2Zd z^0oBm(W@iZM6QjrP_B!75#@~4rYze^g+ng2Y%7%>W+V~3Zm_Ge#FFojO553k8D%Ni z%a9+KIf$tAv&4o6kc+fSy_J@f!`(g2>@oNu5GU&^dU@(fficp8Uc>e#h?yozJOzfT zem9Fi2T`p8X?P7~IWSPms6ngY)hJH5JVqN=e^H5XFcc-Lv;^D;sq(#AQSD3n-VShR z9-<+%AR7W%qFO80BvOFwE=5t`|L}rZW1Cm7z;cc3AbF(~U>cX%GL&m>i5va3q@9Ut z^;c|f2kr>oHkMA%Vz%(>k!-&|c|CcB8}&kXIW3o7h~~H+iLv(pITeIw&2L zxD=B(G%qyCM97mpphY+)`cIy8<^h$)_FTl-9m?Y-i3j?wld^~MM5wcZMMhU)x6%SG z6g|3!4Rv;fs=AO5D)uBBD?Y5)Gi@8Q-X5(V*{dj}QruAw`hUE45@O?SDe7Lp{t6oF~Is@;>nA@p_llYqx~jNcAM$l^#k@rI%8t^n#cP zy_G&nLFuauf%=dLlbfRuKoo{?YYIIHS>-KXgZQPNB>R_w#*~7_mV(BWf)3z8c`}}D zCgi&30TWq3flMm4$LQDscD{wBvLTkX;DHdT+Hb6zFs^Mj5M&Qw~tZD-)E7$|Pm7GDVq1_VG_Btl08Ue; zD>M?|ValbBJVYLHLtVyHwh0cXE%Ld3QjSt8%i4`XVh8NVx%?H978yX5wAa}9DAdvfc zzymDcUUHu~rP0VaQ8`KZOyFVw;)TeLw_*)BLCFQyl67RZ!ZB>otQJ`ra7p#>)>s== z?Y-&iPm$Xt_fG4h?-<=pC|wY$Ryne@vESCb)hmXSQtWs+WzZ)RKcC zhM`BBPl17NQ~V2I(5+#gJ6x~K0fm}lj|W@FLZpTTwT&S;)v-l#Bt2c32UBVnI;Dz? zNy|tp$UCIX%X+N+OyxGIWh8G0Y+VWz$gV6ufwbWPZ-A!@o%rw{*1(GJCn4=3?IS_> zjT65f)5EWn&Q#7-Fiv7E7_?{t>Dtdt7AmWx^Ay`yhUY`yv^6>c7&*uV3iT)yG~TF( z>>U&5D`zQZE9WQ+lnWL6h=v@i#+(y1Mz6t;?GANn%N^Q8=lF^k7BLa5^2&c5}_&x|{U|u=XH{W-b4~uKeVmHiit-vOUBhodH<|J`kK{5`D4X(|+G`O60GONPp zXCz%D!>&jRwKH4j);&QzNxlh_o^ zwPdmxQO-0cVb-#oVAk@0wmhJg1r$g-2ac{j!Z@$nQ-B65kSR3YE8xLTflM_3bqEkh z2bO7`Oy)as3J-XOyjdRBl)9Q0`RjQtq}h_g29QoMcvo zeRGc@LJP4f{lgM9+2zW;N}DhzLyH}j!SYRqdIJs4`%5KwfS15UE>|8@?(!u`XI5K; zVYBMOf_`)6Nmo{%<;k8rpc@b9&H|F87t0o(4b-tXJt94=I8O4o@`SPnd+`(i3;ZGF zVP(B=hUXDwweqO)nDV6EKs*KA(88YUcz_*nyd7|Y9dM!@aEcvp zsvYn^JK#a3z)6wGR-l_~R6bNbQa)BDMGkJP;1K(QeIkci3uxy|vja}I10H4vJlqaA z!w%TGsP=HYipoh_HoMvZ+t>lymI9B69BHixUJ)tZDBmjI!GaXXOm^7{xY_mG_kQl@F9pluwmS%4X#=<#Xi=laN8-d0x5)dDzLO&+ zPCasSWS!X%sW-X`xH-sGkwM`(yj*h)05Hex{S1~hWT#>QgTkLtn*j;1ZSz?k^Pp|z zP@vBv5AkJh68%{r8_3%1e?buRbVJa3BnxE+h0kGmp4}MFayy=3;CU9yGm;g^xok@o z0?#s2PIpnx3VSJIz;OY~F`hji7+9V|Ig1ReO$6q+#V3LIJcGDcV=8+g5TlWy_Y&3~ z&6Z_va#$>`;`GHDIs&qWr4lvNhS3*;d(IviWT5Y=rEZ z-NGzVy{T=WsRfp4+iV|}sf*MC@y~YT?SQ;DOWr=4B+FP3O1``lbY&^%DjswND~gls zp6z5eWP5-h%UNT%bGAUPX8W{5q@%S0A9+^k0DaRjyIZzPwkxo>#wdolGt>q|j57@*<|+6)TnMmoiD<)Fs8i3QMz`Y>r7KqMLw_3N@2Q-4&nclO_kso%%i zbyx$wg)U@EV(RzJmc-QWmt|w>>uVpc{*>Y;@SfRj+3wjM*`C>6*@I%f;I!CYSsGPe zN5-o^9<8hX!J?zk58wuZG5Q5^Gwq<_z7F4Xw-_UeJqUnXc|eMNLobj4>{lPWAvT`* z7kLO|povijpiNMYR}}cQTTkFzo_>@M$PUa7$_~!fhTDbPhdYE9#fD^uX3ud9%OXiH zlcXFz)f-3d3)LaAp_?fG+HjZ3_F=bYzT+&%gT8Ydh^U%~0&wL~;0niKs7dpidzfRm z3C5c6mBJAJIqw9e%rkQHKDU;y}N*z$6PJv!k*XIxrK$ z=I<;hGQAkat%C=tpufIqQ0nLV+Y;W)y!O^OPZ&tBm?`I%J@Ti{QNwPR|i zI0+Djn0y37qiJYo!LcWzbTm=$KHV&|$=gxdxi)z_*v=gkz7y2VP^d(oRCr-t%4e_e z4=zO9%|t}aXI=Y)SL2ad-J*3wG7vKjq7>9^)!Pk03GD~qF`-+oz4{nd)4=v z?{#~@E-V%7qEf*Y>4II%3wE)+V3z>bN*dS!o8Tae0knvf6+xHqAnaHD>Vfv_M~;sj zpEzv$wV_n}%Sy$+To-={E53&;%YN=y>-fU)ur;FzHHVf1@5QWmR{&^vDd-9wR3K;2 z%@XgPaI?IdPSHpm0#1QNhPp(*(4<$24dkKN(D1PE1=%+oOR|?{mu9cbJ`?-a@d5e3 z_hRhD%vIT|v#-R~$F9j<9X0;L6Rw zTZ%IfosTSHX*1A9tQDnV-Bv2r%Esp3?e=2b0bIHHcPD_j`G+8G{@qy=9>>fgyf*)A zguka$_xK_-4l)}V*74`&|% z?v|`UCiYhEHhb<{yj(gV%EppT$YfKJPU!J0rW1N1Ynx8!$!tkFp{KGX>4dZjOVSBF zlWiiMkhPFWCuE9h8ETjbFcp@Q=Rh7VozU~yl5|3=vyWyU%RZfbHoFEySPKGk>4Y?a zw|G}YEZ%u8Lcv^?AqwWQ3~68{%aAF%3aL&EGnIgGIT3R4OtH%yvmRzx*2sJU?R1b= zvx+5CN)hy0Htv&Itk<(i7Ryb>1SbR!2)_Zi2^RNF`1Zbssy^&YLbyCg)nr}vh3t#j zm$ENsU&+3eZ8{Uu+u07mj=|l6M+Z3#S^)-^raNy1-Fa8`?(C}UzYN{kHTX^zb0OUb zYIh9CfLlvFe)gDV$M?P;d_Ver@*xU_{?<{@{FzH=;R-11Y8IOG8K>yn>XV&{6HziI z3euZ}ke`C?6<9y!r+`zw;=!(7AA;@z7PvWp4niy!*_iz>`(?}){B7)2z|NZ$ns?rF z2^LvS2c5;X6v$hK^;rjWusK~>j2&VH8N&pE<5(mBdG+PS~; z*z#HB$CZDc{UZBi_A5}ooTya&mWXN=aH5(8oT#*b6BQj_=91SK;kRj{oM^G>?u@(QzPLXgikHQ|W{J!LmzJ>^&Lf;BmLKVy z>1^dcHN1;|Bl!W4xuCRKZ*JcS?KtQ0&J&y`I!|)0h#{NVFd+I&)LeYF=KyDAuvHgY zXAn19+O&&LGR_fV44KBAd;s0s)n~Z*$S_0c7P!^Br+opF7R}V3Oj)E)A)U1)4Vu(loKb+81uG-}Uhw?ei( z+ZAOqu_Wm4jPcf@$WsOomxt~7Y)KwAQB~BeDuyzlSrsLD*i_Xv4_ijfsa*TCJZv@4 zaGHm$E2w}*HbpEd*%WWr^Uvugl2o~(Vm~2%V!TbLK6-2Tr1e2~_%U}?fpmm-O~nma+mk)c2O@iE0BvuaA37^^ zcIceYg3!XyxuNqy=Z7u`T^PD3v?z3O=#tRl(2~%lp{1dQ&}E^^L(4+TL$&G^p({g> z8HJTVAphb45AlG9S-^DXVNSZ^*Q3W=8?~+4PHnGtP&=x-sWe@kuJ18$JKc9oUsp%0 zX;;}@)!o&_&Lz&04x$^djSzb@E<_T>$LgtT?`pfN+PPS1xtAcE$weuQh`_P>DqH>O)3~Fl(wLq$!)Y7Vh@dQWiw3At6G&!F@GW_fjd4R+N zWEQZ3WWl;L>^kl2@#(-brfVK$3&pA%mYUl>0(eqQ|icpnv00X`jg!=5jbA8<#wE{pdqa?X=-Fd~d*;AwViwxI>G zJKL=obFPdxke(8Ug5Ioi2^I~~X|b2Wy86JsC4~eeUJFao3Rqn2~baAY-H!G&vw%41}Dmw$| za&mO({1?bEY}>)>hy~=y@hqS~PGHvu+?DWvlX$>v7BCCumuwD-pB$ndsfrdjhR*?K0-YTWW%+ouPKcCf?eA{4pI+Rk5oIkI0OtuOp8tdTC@># zTGO+9E?HFGI)KFqvshb;Sa2#7>}wWS^}%)VMUn2VC&B~$JzR*khl!@?11rKi0cMdo z!Oi#Su(jd!q9{C<2$0b73+(&w8tzr)J0trB!6ei*~@5 zN`V4-nQf#%USR={V#gQ`>^N`|dX*Id{f1uSK_2ot&*u$;PaX1snavXY=6s8FBXW@& zT@7-BU0+-Veeotsez{s8?-*5J4RCh0!2r}Dpp)=!X&-bF-YW${if>kafqcLM3S^_f z9C<@+9~yu<1SH8vtcciCAD4nY;XwuRslf>u0qadXV6y?JLkxj@#)`L;e9p3M@Gd1^ zl!CrAK&w$72Ff8czX7U85K8?u4-&{XY<(f}EsKMPr{D3QrQ~}S)ZqOovIS>n(E!vV{2p~F`Pm>_t%*tFv;=?xux@Q6PRpt4X==SXN1dyluFg}>P|sB7t7oZa ztLLcas~4yjsy^`|^=Q{Iu47%ZT#MBC{(V9;iEz{5ZT{WJP>ZAA$A5?~OrM)RFMWRc zg7k&yi_(kI7pKp0{TTl#z9oLKdWpI$TVnS_`*eqNr^FtKo6=3k8m*V+{4E0WU8!EB&P-gbUZY;CUZ-BK-k{#7-lX2F z-lE>BRzy~)x2Y@D+ttNnb9mp-h|tK;sL<%p{-I+NV?!0GCHhkB>_@5Cm(OTAlNr9PE-I`LBC<-{wA^@)4c`&1fK ziCbt#*hY%_UtealvA==kb`WS3-7usdTlg*ZL&c)V>#jFkZ@S)cz3oE8eN05n^Myrm zfs+v0Y5K<_y+=S^mle+`ZuKvRvx+(K4GBE2SXBO@>yQvfgmD*|LeCQ)>xz^oeiq=> zrO;bMKRp}BBkF4P@a$&SXD$xK3x={;7zTPg-O{a1N>AO6CV1xi5T&(=V)`UuVH67S zi%PHGG?_KGr3s$V!VfMD4Zo&zG}AYVA{0o%g@yR9_+!l-U55}Z$us7TM$?u(UfSO2 z))(%l)o0Wub4Rlb?Z3N9*;GM4^aLq&`OSWuWH{v^O4dZdel!cWMk>H+Hs}eMjG8Zw z&d^ELs^2E8-w=R|m*eYT_iQkHu8SOAQ2%89=@-?X6His=K~BrWrb9~eLmLUCNf$u0 zNDR*gSwLs_b8Jz};vP;D z3H0C0lRCEMo~~Xl%juhoya8+Bh-^<+Z#(d`;9;dad%F7A;r4VD?7-cj{`*YnQ^w>p z-7cT^zplQizNNmczN2nX%aaS;=enuCCX!!nlE;fvgF1LNMVKd3`SZDcY**w-!1x}4 z8VKnN<(Mm5?`YGn8bw8i()ZO5)V(}=dp4?6JS0JfL7fEssvAe1;uyg85cRO#hZk%H zn|V7=j^F`D@_?B<;3yt&G!Hn21q^fzaxu=fo7KBpn}s(mc)T5pS$4QRUB}sh^WIO6*=J!4L>fjP5nb9 zxf5Nd*@Nrt!Sn3FXV`nm0B z6yG^jEPyKdKzHg>&z!a=X76?sl6{ki(9%S}X-kXn;{c~E^aFZ&`pJv#SKRB}ueo1$ zPfEVw_6ipOtz}-*lRL=cSp8@^nB$5uXRKE6FW5XSbkq+Ar@TO}H^K?jfmral`-}0l z2}0l(@JD*Jx-Ew*=D1KeH#2fn{Fnz(6;8hI{t)^za}G=LTjL&T-Vb^*IQY z!@QyXRBeC?3-n1q=N?Km(v!)R(9zosj!rvH9_f*C?SNrhvw>7eBg3&CER33kT3C^> zo)_34iKg+TIU2nZC9YY%jidum_cp018nPbmnc$h|ndF)5nc_h-%MPNQR9g}9U%)@#vclg}s5@SGf4n|v|-Ncj>^t8y;VDB}awXpmBj zU-U3oO%{PL!80yr>vdc2w9~Z_P`8CXh6B3a=z&@Bbc_57e_H6N#h}r*%@LQCnnMnN zUVD}BNOyo58w5k7&rj>ZeKYx1^6g}u&|ByuoDf08_9mjXa9Nb8`ux#1By+CgBb3<@ zEXH}G7vq%H3J!sSIw(LT2S4VNen0s^5(^oJti1Am@?Rj#2td`m5{0{+v^a z$JuUYu!(vrytjcgdOvzdpIjj~KprSxD+Ih9?OPD=K0+Uij2U@lMoFee^# z0G#BLD2@sKtAl^AfjXj`+3I8goxPpClK@k%G67Z2@H{W96|M`d6J8Kr6uwHnB&>*a z7Q2XD#XZHrxo%>2aY$}xZdfkhbww>Y#@dH&`+{EHUe@+Spt5~)`{jnq`^x*tBjl0t zD0#HJzxbVB&gM3z*m*X2AgO0Bfgvpze{mQMu8%{$jw( zL=G`&26_kbG-H5fB+x{?gBzQ4gS>;hE1^qup`B3EIOwdQR#s*m0q(`>*2 zmjw**4zcnKK}F+p6LOyjp9-6V&BABGM0sLvQtoqMq<5qh5!;UK7@hkDR*3O9ja>*m z!#%BXxsbVMYHqZ5w3U_DVD+8wJun+N#04`d!bT&&f;i~%WZ{Wsk2T3b3g;$-i;OXu`ihHom{M5S2RheVTNa< z_)YTLtp~uP(5XXy$dlOO1hrQ-)AdnvpKdrEf*p&qi>7tuFoCjJ*+69zK`I#odY_y1zX9pfyz=*AWSPe zbOrJdf1o^p4WR=LfhHk>XSbw`eSttkR<=|$WyK6Y3r^3?%bk%sGdDkXR_^TF zIk^R(iDWC1Ii`7{uwUR$eo-!Ql6Vzm|FthW}L-F zzs*W4HdBGi_wA-TZ|Tzm^iec#KfTmB_<9nC^2zpL5Yb&3rb8JT2Nx* zXazPV&gHpfVB###U6H#ocUA7{+%<-YbFH0?K`SV+F|-038{_)i4LfFI&?-u73|dfP zV`v37HpWf4n{&6=+ZY;+jg7GaXl^Rfl-LYZfD)TQE3mN$R_1PRo<)GQ-ePYNXv}Rb zg1hW20*zH87JDd(aAO_kd?h_JB2|dw>E*3s&uanW6o!1MPof?$+FG zp#AU2-I=>Pw+giXy}3tnt8<$O9ZrOcwrk;;fH!OBFHXiHK zgzeoO&k^T}r;F>z8nTw;0yTjLL-WKl#I?C~xfL;za-^Iot{N5EX05>fE_wTGAAln| z%V(Z>xLuYyhHV&)&7N2Cf!2YSA?NdJ)xTA6NInqDTKu*C{6@Dt>A6w^ky1~UKV7~i z^jt_zb&o$&{tF=DHK1-lQbauBQ&YLrd6DxYHL3Z&mMKKUxFI^Cb^yhq?9QHZ{<*g* z`P9eJv&2(mj#=~GoKRveGmd#s$7X)i5=1@?Lt*>06JIHe_jFEmNj>Q7n(CJ7p6Ze6 znd+6o==>vneNykINBIh=zNvb7j=Wb2+02Iy(&u9(jL42L=%0EWSe$M4F%4pYj0(vC zse!3MslllssiCQ1so|-8Q}>enQX^8X*vQnV)acaM)VP!<7K|a2t4t=8DA z)b}lt1BJ=k%zJ~0akfSOh%T)l726^l0p13is3uy0w4q^3fGzwKNLwCIYXIsHV^`=7 zlv?k0de4ipZ;5WoZO(m`Llk=3U61Fr*1|7f^ii+qt)`a<4dC^BbZQ})mAXj0I&wnl z8y!ur#(W%Z)ot5Tp0jy2&C9_sJM}$VyQ%z^v=|ISaR9U*&)1-F=1@Rpi|U3JOTd2#!$0A5jXA)?`Y>zquP)C}m^!OjUuav-5f#`TCrHc|O_Ol)0NI;xy zA~r7bHI8Q^H#)9pfdu_b0y~*0>Ucms*hIA+wX>pJCB6{Rh+d8$(EyW3J8Ewn{S!bx z(27piCf_gDidX}p_czh)`b9&Gl`(r9oy!emQ~Im)4{2W}l4-@FnA7#y7He9pZLzM! z3oTx3ai}zuMWZ9vKv=Z>q%qQ1X`D2gMK{&Ix6)S`s0>zyD#MkL%4lUpWvp@%i)@OJ zs%%kNSt(XZm2#z0Ih{qLSL6-ETbZlOSGK7<5)dqLE+_)du6C8}D?1bs6zDg7&1tS5 zT2X-%j29JkfC5)f#{oMH7yl+l!Jm7>Z+%_UCLwoM&F+=cs;5`)QQ5iDU4wBB5!n*H z57m<$nm|ruD-p;^EZ}(f)8Yw8`<=4G8oO8eYTPycV!eoN@d(sr28zcc=1CjYn41lh z)YY!u>Wibv9jqBxeSW4@dQkP?>O(S!oQ1y7JJM_(i&hV4mI1Lo3`3cQ3;ipHRS&P; zw|c*7M70c!_Arb`+7E6IaaHNn@vX-JvYA#O{1d+GH z6VWCE+Bma8*7iRtJ|?2Ne>n2E_=LDhL`f0d5)4#pza8SMa0_TLujyTA1DR1dvvPsF z9{5Z)N5@+2dGh)41@eXRMe-u~V)+tzvD`U@=%}ytk=LrVLtF@3v!z;U6@u#*F2SNB_;6Ne}^NXt< zO5P2>Ydv&!k)?7hQ&Y2{d_y_YlvpO7No10lRHj8{D)f}45LJE*3YE+nv1QG(;&WoF z8VvF@jwH|n_^X9|AizG78jU9`H&yoap6cCD{fei1&3exqxAr2kQ3Puz z)#I=&Cp|&rvx{u89soK>ubQoq^Wb|zs~Ub0aRBkfot!Y z+29j_U5qkACAeOP2l~~F5A?6Ozw)6YMH>kk6GtORL=YU+|9t_M|Gx zQHL0!Un=$yOk8AN4iDN!)YO)>D{EiYp{!%sZe_cdbt)TKGpc5E&Hgou^kItuAs~0t zKS3MFXGZ?68V`t#}^JU@DV@@(-qyc;6JYPN-D1itqC z?D@{qqx^`#k%5_kp5@P1_9{O*a7^IXz^uU9%5{~mi^m0y54=(tFMF->%SfUuSvIET z^~zSkR+%nkdzLwpt14|~z!_4Z(wztN-~l~(KrbFpX8`J8GJv(c5nSZxEQ9|jkUn&xVL1Z6pmUP~3I;|Uf_lSd zVOg$zcnGU_ckv!tGcPc$W_rzGcB<)c=<`pkd#r=ZsOjk6%`XE(ZOVg|+N*5uGIw;J zvH@kwJy&=JmbLeHFciaTJdiuGW@F`tl{B3;Hl!Y%lBjc=mQH(0&745OoAjo(WNz7TPaq2nAFbXMF-~QHQWMd)3@}j z)tgiSayXDhs>oKig;rnbxyrN9v&gg9!!)kybmz%Q>^D6#<(UFzc6&D8%DDULoTDh(Ahswdx z>BZYCf2{ne@!OL@x)qcN8~7$3*Wez9PDnY?e8Z zSoPkfGuftvtE1zi6Qh%&lcTeuJ78;SPIPXxYgM-@eR^z;?6m$=^gb{Z2*%g=%0rr@ z0Hj;M)>ZFav!j+r?}^?UT@k%6x-z;ddVlnR=!4ORq7O$Oiyl?^Nc7R@F#Utn_E=U& zpNX!j*}rN_bZc}=b+WQe<%2asrBo?bUKk&t*QR@lJd_(O9J9IfbE}UNfDg&XY96m?ta+m5$(pBXo~~J4^Gwac z)S}cTa`C{N@fWAo*1T5pdJV;ZXMBV7Q*aJ>Y0^ywCUK*8Yi>=wU-O?D4=df$ZQzNy za-Y)hDmu{ZDMTLkccHgx-mZD4W@*Zc`jc(;qN7NFx`BV+?ob!bxy~!AZg5^zHP87= z`Hu2m%YQ51S&lddSHL+r7Z<4ht$JrQiZ?IR#f138_@wwk=VIr|$|cTQoJE|M^Km6y zhssiJVAXxjhbsT7fERbBS`zYNS!!RdKHin<#_h+|ad*Ua9rU6!5ln;sGU zb0=^oawl;obEj~pas#CK?sqzJD^kDH zm23OET)E~~=S9bmPm7vzSN`Ls+*PSV0|%6SQ@*IkRq|Eow(9Y*2{B)_zj{aYuhpl- zFNy!t;|uMcbazj>&5Ad4_CGA%&>!{U84-sf=vaE)gqm&J|Dm((gQ;eGI=A}+=UaA# zEjUzHk*G(<D2L1fn^WKfmXv(!Kq}e zUNn#dsEP4`|EY=b+0=8XmiVr_C&$a;yO#|9(a|!``yZMdTmJeP6J$Lal=IK9dj@+& zgGu00F>R&h$eO)%KN`)&CFQnF{+J@SN z+J~;F#6r$Cg|yPnP&d1{?Tk-r*S0dtK@+@bf{(Af2*-5hl2h+X*)u+t*|-3;cHIU? zL`rl%hf(-tD7=U){0gh^z(Pjh*P!rXvheGvS!i|^(l;HPXhZ7N)ElYk&>2`EeS6v5 z>G-znyRz@gwv>#me3ND>gmziUUi2nx{bV;X9d*!pv_u!GZ;7|`B>y>)cTzu<>=B~G z?D`}>E>sr2N3UHUBnf>3i@YP1{~m!+`xDlI545*GV`J{NWOZsIG5obdKSMEXOizkJsLs-LvuhKF48vG4x)Z$pAQ~i zUUYYST;ikD^7zN8Pg0+zCMPzgGO#mI2`u{PfHcL4mGRF~_g6B8*Cuc?RB~TpbE+p? zgU=mU#3!hXBsUOkk!%s9HqQZdP$e2hIyf%ai}@n;W$G)Ii}N+qeHQ8BY)RFlb8-#F z0-=x2C4rmttw}!+8xV@akZ2$75xYI!A-ptxNBqwCvUsO(m+&VwAEZ7^O-M{ke4g4X z+%3F!c%SgT;hwQxv74&)3)h9ahrdaEoB9qaG@n5oh(vr)2>Rf!KHyyl_wVGy))XI< z@)2Y$W9?!tU_LN1ngL9Zy?qO;rL|wJmYA@=T(17O)LDycSGS@`pbb2 z8aCh7urCYj#{v(tg9ii;w1S1`*VJ#RohigS_yXR^9}qme zY4Qpk@w5V_*9n$8?7N| z3Xr2V#b2Utf9r-hfOaH!-c{?a_0$&EhHAOm*0q(jvD%tihS3rD0J_-P8V3^j3xgMt zkOa_7J2cA<&9*~xXs8FdU0;IMBwqEl;eScUe41BymCx`}ty~*K>DukA4g9vCb3G}v z9lt**)QQ^jxDOdk?f}KRlf^so?SmbxP$7Cgu?HVS9cnw)cB$Q~){Ab0n{XCGFu^;~ z$k~WbBg37M+Rpr-&=IjNa5TZ&f@xt%D{jt4-+vFlfv} zzW_SWfh@k>z;{8;k;?KN#9wIf#Io{w@CUOBA7U@uhhJd5zOVo^e7N)xA{mvgVPCt3 z{aBS827KFchl;Zr9?pMXbSbIy5xj&(lRbPs{L?bBjT5u@f}nM5?9bQphw?}A{duZ@ zcJ-Cb`cw19-65qEqkXI#QhF~;nf>5d>tonBYDw$at8}Xqv+iNCYIgyx8e*mhI@o#% z3Ll+a5BXg!U4dQe<9WaTyejL+f$@gFS5JWcUT2-O9q2@WUa~{4+M(BIXf0VYzNvE( ze=;BTpTeKYNBpnE85#_P>RuoP4dUM+1$jWwFn6Ut=CATs6B+OIW}F5>-X?{d&c8_t zae|Pj{|sW(>BY~4;%|_}hwzt^dDh%$Wq4J1Fh7)^!}>lt3q)K-W?LJ^uVIHSn2Uz< z*VIzP0+?Qh^On5UhNl-b&hlS$HJD*#3X#ro5Ru`~bvSWIr)H=;YEh)6(WBwM zrTt2$*1qYORXe+OPVET(LjGIFhv>t?(fmtQm+_bLuY_L>FREQ!`&QW2*$+0=*<n_ZzXegmFDJX#iyBCPN)c~NZ}>D34o*y_ zh#$+32A)1d+nU4@-6L2c+Ti~JSGf*X(&)>u^;BV#^@{9Pz{1U!-sk9jxsMX{xe4aGe zcu^_QfPnI>E!KM*%F$b8=ZA{xZ?cBxQFy*AZz$_ zdlqDC^5i>sBYpBXv$z&g-(HYRpL_>Tr4}}?0kBdF&#I!>{V=9qL$4!gJ#xf-|kvw=gPZ6~wzsq?lEw1r0wsg_>%!*t2-;rY%KdUnA7tJKE4nFG+Sz~V$qgDI~-V?nic~AD9;yu+n$a_D( ztn~x@gZx12jah7pv19lU%!uu*ADs^LFt&H(B)Ox2N+^r(e_WJY$v?tB%2Om4q?OeO zaKD!RYMezjW^Rbe>*z)Eay_KCe}1kA?hkZB=*Ey6{^A~L#BF$re;WK2vl!sG+ZN=C z)nVX<&`o5qXZUCN*`YZhV`aAyua7^;ujZfQ>(R}*!niC*TbKjtG++@4M9^Zh#~MI6 z0lpTO+zyHP0^Ugnn4r) z8!dx=#D8%=W`C;CU8YUO9g7`=Ds;CU#C>Um=&!?^Z}M;PI3uS4HsHQ|oqvOWn~$L7 zq;93q50B+uX(*1n_a3rA)Cq;B{&6Q1{`+&ajr^kQ(=gio2=M3ld z&c1;){CZzQEy?KFveOFx8`m3N;TJcN z+w)capO@Y9HU1s`f#kdVd%UrM|2{Yynoo|z4wUUGunQ9vbb#CI20SANBHtofMtxgIZSEb_aC z1Ol#N*Q%2HOG;d&uAza4%C5$$mom6L56~(T3vvxKwT0xp+oMi_u6Y5*@ z)@8!CB46@!LLR(KsIzLzgftV*c{2c*uvKq>bf>w`mMhSgeE!@wxY)jCv0(PpOj892 zw-hP@qi%6aF@Uq@%^&d1h%?>%0b+2bo8j<;^!B>ZV(*XqPdv_bW6N}7w7{0>#w1W-;7tM* z2Hqr4Vc<;y6$aiUP+{N=0wWCk5BzriXZ{y{2mdSo8^4oBf|2RQA=pyQ7;=0bDh#|q zV1$8p3NE1qsb&mGJ`b_o>Vi%;Mia5+Y7!V>;5|a2P$V!?%^1QMVc>mG#sg(=s+l}b z9jBT(8wP~_*5Z^E0q86$Y`js2E!B)cV1$h?5lV$-C6d8f772_*GKO$w*!VJmkw``p z#S9y72xEke*Gh3hoVNV@nRCFXz~W38PVix zg{06%V5NAmMUywA`aD!Ld4sTvX!5)u2#jneMroXfB+pyr^H722%`#HHGRzqCl0fDm zk%hFN2wt?3wB=s3iUdNQ`}5V~^E_bn+RRDE=Xo$6;h}tlhuH)#dW6)+iykF`kms@d z3O>%3>hm<_BRr9h@FbgXU+6w70q04}2yKOSLVKZu&{5b!=p=L&_7u7ZdkK3B`v}w} z=2XtNnd3FDGH>IJ#4iQHVQt)k7b2k*3qc_ygoScpX&@q03vr=FNC+tbCw>tHRoEBi zS}OG(9x6C10n^pc2n<(4BT$K4Oi@%K7n8uS;F>6g1=k1+3$76u7F;7REI1}GEckvx zo$xc?UD#i!7kUUigWf&H`ACx&HTZUngH3g_dF2TXol{^;N7!-L-ucjQ8$i?g#hUvv6nqhhe3#SREH{bMXdN52cChWrWo+%8; zXL>cU4Eu@+Oe1=h&4>;IBg(XcnsA04)Cdeas1X=;P$Mu*nMPokGL676Wg3BD$}l0X zDLY#@M>tnFPd8=f3nPS)!UeP`tA+1vs}bua7)IlD>ouG;bT=;;-vy+ zuw=y6@@QicmEPs|Zs-~bUnp_S+p#qYclCD5oqvHR9VULwLVt4iD5r}nL`5-f+0@B_eGhGT^}s8>#Z03B$Y&=XFk zTFyH-QQKB;$F3Hrv>&nGIRJl0;t%}HN41KgaYgv68h*38U2t~kY8tqP2FBCC1R9t~ z1CwZAG7Vfy15;>VDh*sm1Jh_=It|RAf$K@&s-m$)`XLb9A3-!xm?TUVt`(*TQ-$k< zX~J}2hH$+wQp7Ul?Z1+F-EE-jRO{-4Hfunr0h{JP*qn10HO^$~zU2bu?;NV)B8 zTq#au{Je3M#Q@gOzza06mIl_*zcKj!hh_Ov11!sznqu|nMYle1G>&K8 zt3&#FX0QRldge{S0^w$1p|D6;EG!Xj5pET}irpsME-V#{G$i`^o*8R&zHo=2r6HkM zJn+Vv#Ajd*bAgt){_LO9LJVpDpZx>NtD$Fed!`MTb#4t6=N{koGa}s^q41Xr6qDB$ z41c-sd}xh*&sRb(WL400Lg-!ZT07S(Xq_GOqCvU+-mLa8`H-?C^dbp((Mu%oG92^5 zk@)rMwasbk+ypc{H$4o)a6`@tW(zz5&?_W#mM?-{%|Q)VY$@E9dd&{KPD5~jGzZn; zf|Y>)dXt9Y=&cZb`nle!M{hguKdeCR`2miH{}Ga)pdp!hOO@ z;p?(h!s>$ig$INOg@=Skg~x=)g+}2C;Yr~s;b~#D@Qm=R@SO0xKnc<^iM32b1pUY8 z1binAcc>eEU_3;v*>3b94SYlcACthvC7&2a!IEfsyMQ$&j6~RAu0ki zc7Hbsn}sGqM3dwoDkHUT?HW^H^ZULOxyNJmBTlq#>x>OdGg|Z( zfetCHvsyz+n@nExr7;7b?2i|HMFRE63@M%Es7GIuuUr)*%YzozQ%$XUvCRX)mv zHm6vyt6~zr*UNjLQycJg0prGTOOE4HLYjA$eirJKeLM6oP9x+&1bs_>nv|k%;L3vK zm4yQ0tj5Hjq@TX#8{^tMQ91iWVIZ^G1s{NcHFka>A*H?3&mc!M}Cz3yT0hlJlGw{X_#l z)4(q@u!96F?h~#9*YYdLF~Iek;b3VT@T_u*Ws!P>$_!0)z(E5AIiL=+c#*Tr1%Gpm zgIL#P#w!RM4s>%6t_6|MD0e+7qUCsVadoQd(DWvc6CUU5@!G(2#IlsC($~cwO!Op(8>^g}T=c z4WAVr79JixJA6*~-0*qf^TQ*;Bf}Sj_Y%8_qr;blEe@SlRkzT7torLAn12fu*0xVa^GavWVhsg$-3lKDZxQ=aZ%kD2mp=y{+@$uNQtBv@DMM)C`OC730+- zBmKlG)W$ls824{dc5tmTgxY`*Y?a~1iLQ?vE*@c>;W3PtLyrUt^Fl5aC4dgpU&MM~ zqn^{FP4$e(QR3jpun5*;r-wIe5*Fh?3yKaY4P|F?%>)8y^>yH%xT<5IpgLfGkT0M9( zw?-TqN4wg0zF3bGvT+fl8l8-LR9i^R*rB#|sGS{ZZ-+YAp^kQF4?EP!4t2Ied)lEc zc4#jS2d^+M!-{=m0x(pdIRMhYq5l zDs-@Ya;`#$u)sbn@K6@mmj(7?frqic!&%@FEbvGc*q;R+#R89Jfdg3JF)Z*{7I+*B zJe~!fzyeQXfhV!RlUd*?EbvqoIFJPnVu6EM;At%IbQXAq9gLte&4Jhe^OaB;)u`7hOmL z7tz4QG;j$GjG}={O#nIt+_TX%a2X9;P6G`zFop)Mpn)rC;3^szO9SI*;A#?xpli%d zG)&oeJ2b%#O|(Ok?9gO8bgdnlLPPavYR=|nM;^pap@C^RAnS5apT=@QY2l3}L!3jM zXE_h78dr3-^Bm_F|J%C^CIWP&P$x5oD++_Dj)5fU2?gz z!8txYr{wGME1X-(=aw82xYBt;iB$7N>9s{uil!D_T2@r;t!CXeZAoG!d;xrf`2XPo z_(&070lz@JP`pUISiD3WC0;6y7B3So7aPPe;uYeR;#J~Uah!Oyc#Sw-oFGmVCyA5A zYsD$zRPj1-nmApYAzm-e6laOE#W~_!@doimah^C|yh&Uj-YhN@7m16-CE_jOt>SIs z?c!4L4)IQLnRu6Yx42xqN4!^DA>Jph6jzD&iw}qoiVukoi;swpijRqpi;dzF;*;W2 z;?v@4@fq=1@j3B%agF$bxK>;zt`}bvUlKQnFN?2;uZpjUuZwSpZ;Ee;Z;S7Uf8KTW z-Jki7R<7XgV7 zcBXE9;|zwzz3=zM7F`%`ox3pJbV2jVcs-JHyG_}7|4%)!{Gs@#oLIJsg%CfaO_tF0 zBmhSZb3h$-IH;qq!i`s~DJ@pF-#$@{-PKe1;s&QJW2)z_mrrtgCLh}!CE$*$Q~f5fgCEu#A`ZsS+J8IIIo;ex z!pk_1yBpn4xSw=4F==i4y^~hc1 zOh5UE>hLi8)I}UcGwwpnML+9Xt`q~#UTu)5V-F>8>|vYO;)4&r=0EsgkOF8PIbZB3 zphlk&l9}v2B-t{P;A;)m@rPLsEtqfrLZ(JxBJU`4N@Pli{Ns=k8P1cqK@(`EZjg`+ zV>Y`A8A1!-ed~#nyb;P8=bOqFl;Oo#SX2!)G@wG{ll)RZDway5QYk1=%fv?1 zaeA3JBrz6>{n?Ns)~LrCn}lvNl!A)k2d^Dp0e|%cVIwdLtCC)&D^DI^QCAxnzqsZC?b(OqrsgJ+3J+UbK`{ld)Z&kea<+Un`N@^5gL zt#RshFH>Z=wp=@|J=cM|E!L6SgKHOSAM3<*=5CLj8sC%a!tKTF&F#Z2jXhksdzs>| zT&AEL#@0-C9eYEDOO7usouBx&^CSB^lRfr%SpA|=pGulmjooVf&}h{o%(X98an{+ z<3|4pww2mR?WGP9@woQqS`Uy5xHVU8G$+g1w}@^F9Jb+i~CzM%$aZ{=Sd2uhhKj?-CkOiu+lATzIVB zmwTXfKtON99p!%TSHCh~cu3fzTV3#Ro9Si0gl3doU*?H-llGGW;h#&URO2F+pnIA} zmyda;XC*lR@*IHKpEZ8!Vf;`BV0uVR9)RgdlZ^u~J*D;fr=fl=!*G)4qU{yGRCMyl zF-Q513KaE3wX?YtJN5(Fj1~t=>t@DjmV+ebX_kYbebi}|LnP{8N>is<`baH0&0?}s z!M_bxwWZ5zTJZ00iYal;yZEn#|Nf?U4!S=#LK^T;om(^qJ&=PMHOO!)^@N817Ps<; z^6lj_lGi8Aov*{CBP5)=-s)KX+rl63b}M(gm4AQw>85tS^l9dtf5q;XeUdTvzP#wc zoI`*eO7IXKqJf8L;1L>llm;FnfqL|~v1*3uv|1WT4ljCw2A(7V2|YyvPt(9^62K>v z&xJM>!f!(Zs&2*!<)fsdr2*10(y`KU((%#>(uvYZ(#g^((y0c2wDmp2<~S2W*InDuFi?w9pf^RfDCx!6$rr@CnRxL(TKmFH{Su<-$vP7B<~W z!@DONOTH-ERI<6GHk1st38g}ONC=4`DI|x|p()|6v2L+x@#*my@iP-c5;Nno;qQ?MY?olRXlL^6^W=OxMcN>MsC zy$*hkbgp!sgmWt6@pKb3OFwe%v5cpF^m%j-GS8#;6DeOv`Nu7>txEmAZF>7ewc8uo zeHLi__`a{o|b`H!#_LdX&A+pyPo8v=V zBsJ|rFy{P=!H0m$PUM-9y}%&+S!YHbO!bK#8vU%gby?qNzv!mw&DG4P8(sdiQzQ8l zs7KG|97X7Kgec?s-#Y-KX`iBb_Ik8LWw)$=$CH5UcSerOU1iyPE&NtkLTk*ygho?5*%uzcgzsYvbiOd$u|2PTUyj3du-RH^mfCp51P>7bUmxaA7Z6YwFej z60q|;(vZ{u8Pj)ly-yqXW1Htb8}81y?9lhZ+T38MOLr!5b{5>XxY;Q;?-tyWTXv`2 zid%JO++KHEcRP1`cL#SzH!j%QEEvi*x9K7&C~~G*1Rw1)>gwe_0AwEM?wzggAgJMB zsIhIf&i3v;Zd?@K(bCl{%htB5LR4T&9~IcLb)to#EhkC43~f0{qC#7;E4AE-$If*D zYTs%Ku?(99=cB2TEx6@%5;M5vH0dQc6kyr7z@hjr^YmcFcbWnIeo-z83{(YqN2Nl2 z4%AOF;80RCY0!aYN>q59-}5q3#;ta@7ajlUfB35Tzi&;kmP>MNxD>~80w;13Cv#~| z;Vz4}EE(MHZRx+#W2T};R$7dU89VX`TL8*k1fOi3H8d>|@V#eicAHpVFselBYhSE= zsdhu{%eAl6zFjN&CBN)X`xXBX|4{$A{*S6U`3ID${*1q^zn%Y`+V=hq{*M0h{FKkL zt0-jiBrT)&Dmr8J^<;o0F9edsOG4Uy8T=2<*NV3k@w5*=_I#~3Ny}OP)kw~|Sjv-}6%!y^iK%%52=YRv*_@&pV9^`{IHgxkb5=^P zTcu5r+obRK+oflq%{`!q-bkF%YpL`_#8RmiX4g`w0pu#x033H$uM`9JxVv{sU&WS5 zw+nYkR8UxiikFR`qCI?n54W5Fu)t1*ccv^+wCI_-cu@XJeIK$BPp{I~m;`tR`H>0jo*%YV0jx&I#j zsj-2v^1}TKEt9$fJukH_Y?p;}F9X6CCVfeN@~YA`(n|l>(pCOQvQ@Hm@|se$kT3{% z?+j1KbJ3;#7ox}c_&3||2wI;z8Pb69QdmPV^Ns@>UQ~H8_blo( z;3X4i0EGJVOZ}~%e(R+dCHqzCKW=UF@7qFoN!lR&@fo#WmLgm$t~FP|T^f&aqvJ+S z?cE=MyU!(`95^K~Ffb^vko$*hnf#sk!2j%t#oROj=h1^LN^Y8#&<1lc8Bf7RGC|DM zh&SC|lWz9DF74B1-&{ID-6WADEukQTWXl))nuK!&=`HDP=^g1^={@Ov=|9p3l94_5L&-Q<&XAPnVDrcM z4mN+htAov-NT23C*lc7mX6Rw$F=mh$$Du!yHc9w6w9j*e!}762jtVX3Aw!_gqh&p0 zkQjLnKbO9czLd<&#f(yn%!gk?sn4O5EqAdw0vWlBzkwEMnGzYb7}<*%Bu2Kx@1*ag zX5}x&ntmyn`HLCinfVfbkQf<^HDT6#i41X!jEP#gpCmGeF{7-J#h6LbvL-S~THZt^ zNz0tbBx$)5nItWHB7?-ppZJTkL;4j4gEgb^Z_-Y<FMUPx47s*ZKHD<^)G8;2UyGXF;ll`)p+n7<_mfhHV?~Lrm z%u-Z-W3v=9HDj?%<~J^pOXZ+!%U*0sF|sx?>NfHhGf7(JMkYzi-N+!>aui$D&=NZ` zN*P&-nItW_Ba@`1cVv+ABzP>7!*aRI$q^anDsCmWmMi3_Tq!r}cF!A>FuX`{4R z`byd&eJgF1wn^KiAEl*%pQQrXDZ6C1?3Hn@;(#2IV{#t%LQ7BS&#r`1`fDVnd!doE zjK$1STFzo7iRnXV0+~L9Mq>I98j0ycXe6c&fk_M>A}-g+Z%YZeR!+)o{cL9ZFfikJY_(Q_mSdSwfzQLV)mka0 zt=33PgRGIXT+7V5m7 zIlSmC8hD!q-l2haY2ZB?c%KBQW$@(gW$FJ7&qSL`4-Xs}=pQ&L zaCBfm;GcPik_ydXp3SsRo<@X?T?FUgm@}_Ym<-Qh4J8S)G2RaRk1^Xi>hNq!Z94zn zvj*fQ^!f4#nG)RGvj%oS#*ty{7&OA-`G0$4_(FM?M}{wyjU&UlH^Q!zab)-s*&6u+ zIv5|x8YSC~3|}fUj|`8N>yep>6dH`5*ayZF%l;dH4|6~rhN!C&`@nwkAA42ea=Aes zBO577^W9dU)Y$tEzAn)`CF;>fxz5RUSKDB_U@Q1P?142Pyh`4f$^=8;icxnn z$I8sRnd4;J-OQ`y-*GkL8o8;vnWH6qH?tIU(pC55?q*&kZ%y$*sVSnIpGaxi^o@@R z@6UbqHq?R zkLEz(*K>sdgfK?(Ze!q_;k@42H?W3Z?`x=><(&C98G{?-`vG#TLhw#BPc0AHOx0@0i)Y>-&1QF<6?sBYEfl zq%qiJ7z6ArBXpI1y}%9s-+*A+GtSt~FZj58pmS8RhZ9wI4(u5?)aj}|$+=(PROcXP zvSzUJbmwQ~^?`XZB>;bPH@9d#y0Zvtfq(1Z7ZyP`lQVHW`rJ?#)4_J3FYHmutI(G$ z@GCnQKwsw$0)sRM;>rVPiyivL4t+~Q_2@fOw+4_#P2Ao7axZ>?e6zezHj^#2^eEr6 zspnFs#4m}@41Hg|wR}=+a_rjJl-ShRb+Ku&>9HBH3C=$!)XE}xvFzXqI49@g0@X|8 z->PqscUIpjqxfxdAaT3gSmx$D+*4&wm#r>)rmSOZk65Qz=h&XHF0p=9O3m!#oa77q zu9r*y%IW;?4ZrexmQk0=?}+w=)ZG*P|LR0fO-2{|#Ubhbj;Y8zS?opMn|1_G&0e&X z2DXuagnpob?KJQs3E)r{qd~YH<0a9eP#4SOyX3oNGg{no`5yUR8AtcJBdc%L8XMs* zR>(Ngix-U~!}8XnoH5tzr$di}-~tg12tqC!#(ZJH2oE;mzWC_WMV^jT3w-r~;l(TE zRk9YgmMRzmBfhI5)Bx+c+uAkrbA@f~cH6q&mv(TstsB4{!yU^V#~sg|z@5mQ#GTBY z!kx+u_3j)0jDuekq|bIt28a4R`6;`{77Yihg+Z>@J;WNqa`^20L4QiNy* z%YIdN5L$rd7PmGe^5Lo7r=rMhV(BgBPH15u+|eq(ZbitDhp$U@AxP- zH_{kdqxXD_n%Y85?a7*+lzF`-+;*tks7XpF2{n;PJSBHXl*hwyip>KTbWMf``Z@Pu zlWjmL+M5)M&${$2*bD86y1<6o-mq`e$iC4~!geLVj znuPU-yP@)tdfobVB97#7ixch2-Nko zsOE)0U2oOYX!$P%wp?BtWa@+wJD1nX@-B0EVHRs|XM1Np+6f=ScapvRnoNaCU`Jed zT^^Ar2)n{J$K7F1cvw|ocw}ODRZ-X*Hf}&uV)EU8HUuq+wdUrFFu^qh6Y*n{3j|3M$1cjR~F_vA;(F&)l%WqkNG^g4P2 zy@|TV-bRu5yXZaiJ{*M`S@K-mJ>lD>Vyk5B*r8@l0RVy=m-K96cH6|Wbt(dzQcS3-zM0`|1CFFvmK%bI)zsT*Sq~VWtLQ8-o9XPcpwF;3#&KI7%HsN61m;u)H8fr#R99^f@WJAkEcuu8Tn^=rI1`!wt{=cu_g|p(r6oj-w8?7^ydW4r4P+(NL?s{(SK_Y?pesqf8WvwE@Lfal)w1})z&DZPYeVqq`bB{6T9S`X zUq^Pb3l-KT(~0!$PHO{o#YO1YsiXi2plKw;v+Ayfx~G$TO4^NH@er?;GaSmU_vr6h z0m`KPeybvSOWH!M1!2qBaG-YSOZ1lL&TTQ;k*G??)9zYNZ6cjar_w@NPN&mqx;>$w z-nI@P@?uiKj_C`77m?5&0L`>Rv+U4pJ2Z!edXRlzg4QHn^|s-ENpwngPVbrSlHMyV z)ylO&l&;;*8t8k2&h@0webW1rLY-*e^!CJ$tm0jvcz3dRH&)klhG#dQoJ{J{?Smbx zMGH|hyBG}Uq>oJZPal;&I=z>8OnP+qvasb$Di%?Ix`mDKc zRF~&O2!TTQTfBemQMK1Ot_@EKA6+}3_L$nPv14nGt6eWstnhK2htbl>c-a_F`0o~5 zMj@`qfd*PT!?4BIS$7)@vi}1n8x8 zhBJ+_BW)CP$V)WzvZr~5_A)5Efh>GEK(CSzuHrQsS_@TJEOZe#m6xVRryJ5^(pRJ- z{#WAG7o|~C|4I<_0x9S!Rx?k7X1-1GjZ42tR_KHZqyDQ|#jk;C-XM#QPhajM^mU_^ z;Z@jch-#D5*VIx(Sl~pHt;!kSO%uS{ zUP&&rO-+w+4L>wDy0xjQZiA|J7$!h7k+)l`GOWiX@KU%9yQvMyI|#n)qnnS`fl6MIZ&}*u zby=YTbZ7c5sCPcy!~nX9h8Vr`241rw`R+|qaf{6>NRNj5mi8;XK0PZvFFikfQ+i2y zY5H5ohv>t?yVEaKEl=N*ekJ^B__go~Yio>$e2e`due3kpRry|*``H8W0cbn*x;)6L zeVM)XhwZgLlJ7NmlwJE{P&@S+JPr``8eoWe4IXFdxXP~MQ+6Gn&i5LuZfa~k13FNz z!L#&(Hp3G?1dq5e{Y3i7^mDmKyqABTba#3M$hprLFxuGN01HvqkTdKC>l&6Z?7x7q z=Ch7n2U?q6p*wc^x1bZPNxzU@XYC!M_!fKd7um&Mf=>H1tD`Q}g^amljALUy!e{vi z6SHlziF!lV+=a3(skv!z1=<$=A-t)!Z$ZC;!wQa%ZLa;i_K1Qb3;GuvRd95{fPxVv zBTFtQc{%+``qlJnc2$k%Yg5%EP^y{)N>zhEsj3A;Z;q00q~A=xm3}*2kEZzWr@sEV zk9QVbVFQ5K3ZYG;!*4F`{}SF2{x$qtc)b7J^m}Pk?kF!Pca|5H7nKLfi_58EcyT{p zfzt9VWF5hr)#k(aT>8Z&XBV7PAQW9zDi*yjkLAblQ~{iYn9XRJ8I9pK119NfOkWhY z{iF04i1BOj8;r2eb5TAG-s7sJ@%#jSBHs|2#82k0wL7NT$? z2G#gCFo(@23xAs)s>k+qLtjB*KdOwkiKpUUrN2veig%9h8SfI`D_&#ug^jj-58`em zb>5mDsK@LDai{?y)5H8Cz0InV@#T3uJg~cS4-85;&~}jfkfA0Pf|p_L@!e~M3ef50 zKe6Nu0eQI&(hC1VD^-LJFMidZN6-__I`#=C`3x~ zxAZN1yJY)hhh)bj6;0iEFUTnG#$IFo4a{_MXL@GAtOA=F#ze+Y!=dC=BVQPGLlI-s zGo36@aJ3RD%xw?AV?#(nMKs{00Ur(cX&^uY#WYYt1En+&q=66(l+i$#1n{Oc&U&Cv z;l;?MxD}65s1zw)#i#g{fKsfKD5XkJ!D+PK0aktM#_<1koklC9SQBYIWs2ak!O(Y= zNJ}doKt0H-K-<&Z^~3p2kl0{7;Bf^yI9aZIi25YoEO@JcVk^p4YGvpTa$Fz-%Yh%* zYJuI1qsiJx*QE|+r_-B?0;rr^#;#DXG;9oXt(<6Wd21!A4A5cyRVlStDLiRH0t4r` zSb_6>`L_Vx-lo|7`rJyhS-vZA7nmN+@#GyVCvrKf6%T7uAg%<^ab#m_lw);m@vs27 z<~)^9mh-ksjrWjIX_8%O8+)ZGx>6^!nTP5acC0h(Ii5-CEGo@PzF@rM`DYtR*_q~@ z-xO2gnmcPqN`ZolGqfI-44@ID){1g2+0#Y2aWOb~T2fUyIVlD=^ol{U*3qa9$qS&4 zcdVuWc2*QCU!BHBrgwoy>_8phnam_zn+-A}<4b#GCEromL!n46WDu;?>1q{J!xk6W z^gW@vX$FLsvvJ&c_#(R#uj=fj zXjgUiR`ylu161*H=;r1XWVCiNJcPC6hR1%;+U3T|2!5p;s6wenT+Ura_$Poilh1Bh z+KVFOjO|6ONFadDAq8&)58+%pbe?4QWOeE_E2jNfeD^xxwK7Jg_V|v5qW#IHRVYW2{o;hHt;Z;2^as7>W1;vFWbxww zdWU=>8|1g??ZDfdb8Aju>3AX(e~T=B5$6*&O^n>-_-J&9Z3iFNZ6Bjq$u;9F8Bye{ya9Xf_ASOEo(&q0ma`*M_D z+t<>qQXw2Dc#eCX8=}0xt>uO)mOU$NP_}lRMRZhyrspta4(d4} zUu^Li{yJr9^15VU^|a)9&hwokoFkpnlUEn@4hS{fmGMOriu{Q$%P(;DuDZ~9k@I5b zCC*XKiA7(Pk9N*3x!l>{93P)kvcF>9SG&^rM`pCBS7s!yPd4&T@FT=@&7-LvN>AmF z&1%t0IY2p3>8<3ypLVFySJCdLt>yFOv^Y%ZP+7_yr3_GxS58)%x@>%k(!9&YO^5RO zd+(+_A^x5aUw?N%uTz!%xq7Y#*OTkT4XiwXJCN(m9mE~X9m4hD4(0lC{kX%p!?`24 zBe_A9{kfyKqq&xy${(lpkAjde{3r7Gn6xxmC0wgXSuVLm$`G4SGm{t zclZaA@AB{Q){9uCDX&BDL(MoNT6it(e`~%uPceJK;zT*1C$df+Sd)lTwQ1}+ekn6`6C{%_rb~v(Ke+w8H%SI{}Dx0|bi%Lo;!TG|G8KRA~1iPRBIw@y` z8#H?ZCk$y56hQaWu2KNqOFQXsR*;lcp;W#&gqLrDfoAP^W!1 z$daxh_4Pg%jZt=TDDqH=BXWh}j8JSv;FpsOHqpz{^C0u3#SJMy$;en@=rn4Mz&KF# zM)F|P)yfgNUb>S}fD(~wfNv1pq=6)#`H4J1xk90c_)`|cjA7on5;lem+1l>lWENka zNC3?y`KBn>Ij32nLUgS%Rk_Kvz%|UZSLNQ;eQ)Eu(08z8G0$4Yfu^ylI|8a(Nb=2K z@%;?)R*-x%S$s!>ya!0W*(|=}fbVgVZ!YxylO!}nxxsm37J~7OI}Q3!xn6m|^`L8( z@@vr}u18&ux#lQ0C^xd|SP#dpSLX!6Sa6{EP{%VlDEmJC0)FbVH1w47X=}A`C_-7F z+^oFrdc$>cU86lzGZRg(BmmY#PBx3=gN3@o}5~HZgoXijrTJ`0DHe zknP9vwFRAhYKBFYDDmoBtbK&)v{z#kJcnz^+2}SF-&o+APVy~f@g-mZAWcqXce3~< zg1j3^d3Uk+rUKv1B;Rsnl7F%la--XoJCtS0-O4>I5l6z&xfhHFtW8ua6x>gE>d5ue zy~>Qpeahg-u*faS7)Qp1iTb2!uC^&IV$IKZ>Ue3izk8LvoUvd=m2+j6Ci}Y|P+s(E z0`*DAxVvWTD7_Lw&XI-h%M@E73@5ykWsn)u&4bWy&TJzF#Hg3)~mFFLGb({@L>!(Pz5g=Rtw}NWp6qD!{85X+{h1`i+PK zXye;!_yNBjTCEu2U0+ZhFPY^QN+sVj7)NpToSE&7ALA%t6O61WSPyvK zF0|Ntv-efyHO1%Aa;E4CS_xXl6b3=dm%<=u*-{t;EmsPIpk+#75VSlg41$&=g+b7A zq}T|I3@L9YZz@0YZz*pp?W zR(6#i#ioUkVa-NhOfnrISNdJXA#81u`AlKtQ2A8Zs2o$X37VceQii#$LqW@+Vyo21 z!Db^cvZs8me4%`)nAuZoWf-|rzJ@ZNXUk~0Q*337Y-%>bB1aXRz`;IL_NM^CYP?z& zgL@zr(1E@q=D|8`g8d%m!Af%bY^y@$VJShQJ(Bc|@~vXe#IjB4@9A$n2I>Z8+>$R9 zGZ%|ZVP+7EP2j6N^n4BM*yK>KBE~!(uCGWM*R!w7hH#f|h}WLD2HAFbG=q z6$U}ey<#IUGOzrq{HE-Lp<&Iuf>eiEpgL7{Hn!{&$dh@+7-&CvB~(qWDA%Jn>9f|O z8X8FC02o6!17@Aor?kFETJ9EG1AQJXbBm2YFiCOuqjnPuS*mT}S;+HZt ztWJbfpf&l#YH43=Vwp)_IF-!ZCJPZ&5saiSHW@~GHU>dU_`)D)>0THFE!hi$prv|Y z5VS-u41$*C#YV`JKh z*OSnMF+2&4pk-pS)xz*3I;(rCUDQ0D1Qy2dB=&|fowH>ao`j}=mV?cv0MqjCt9DhJ zY58%@UDQ05AJ@#Z{BjO=R+0>koaq8OH6 zBQPw#MqpTeOki04o@y`k0C<#E%YUHSTRliUm~HvB@sh{#8w114xyEQG!)j|IIZ$ZL3yQIA!RQ;*jT?+NOO>PhO!wBe<*tF=)L zlbcaHsGZck)P2-qp_{s&+FjjWT^i`29-{V94+WEZc-G|hR|lx4s9sb{dZOp(_rUb6 z2~}SaY3aGuG1XU8Us=5#twHNh8(+%zaNw%yvDF`n7Yob6sFkBtL92l(RaFYsx`v=% z%jU(;P23b;5HAUrhPRgl!}NYqb3`+o(QqrcByasiM&XRnx@8!x@Du<{$$|$BnXr`6SsH+N8{l+-srF~NmQ@7~H zr}e>YMu8fxK2!2+$(q0mftptPmOocQG2*+!Gz*nj==W|Bl8J^kiUUs8#5CIO~-Co_9dE7eIsoU$_drU19^>5Rb`aa^ib%?~{NRJz~U%z_KvMha`s^ zeMABo^r^9O;D8MaC;Gl*Yst2f4BE(oKSrNq14}`hG-WSW8`O6pVt@jb!GOe|2VJ6$ zQZH3UtCy)`tfSgdhntrwy#hwHB}z~Ol)6%lf)LzOx@6+KlTmOi6x?JiXX4ud4m1uX zlOx}9iUznT;3=BpX%ct>-dRg6E;K=%s7_KRv)XqpsF@3ZqNzDW zU5}2@kFz<<<`7YP8lZw})bZ+6^*R+&uUo6bN8r;mFqQ_!k-(K`e{axyEG{%%ouOW@ z&QuqmdM`dxp6%)d@JR3@Uw|S(8|X$oU|+=YP?n-MvoiIfE`7B8P+}SV+Q{qb6^+*h zU(oQQi`0wNtJJI2Y3eL>wmL_htKOjA2t6ekY^VWOG&oIV`7*CC%?ut}xG6L%_*-yx za8mUF@dM-Mt0UBr>V@h&b-rqS-5T+}+xp1sG5hOANiT+pij=F#TmTYn*TC^P&v(d; z|BY!Q;}{-L(1LvR+RnKGIRU=;__uQ5pTa^_ye+xvHM^R z_=qDy{ubI9np1|#ehX3saO?#$Hl)dBHD7g_&gX;9Ut7N&9q3+og1IPT+UObxPq2Hg zWsP{iRj0r7YkMTRK{faOCZh9NO+qWw`_z@{MXe|{d@zD!_(qqbkAzsxFk2lA!?DPJ z9)46SN>FnH7>;UX?H6bq9#2bQADG(vdPwa{?h4_smJidQ13hdV8=OxPctJPm)&k_O}HN~HUQBz3@c%IfO>4>Kb*e+C(N`JCpT+YW1QQTElT4qh4)Pzo-hu#5SKfgr9G{ru9qe`qnSDeyQ~t zaf%IlX(YoBtt~a;c^lj7!{Cx%Kchy?p1or25yPGx34BMAe6OiTm|c&H7NFPFeyrPj zZ$P&nP8NPs?MpVx++!rQepP)-JvM$^oMPWa^N`-5MHQAK64|nv5TWMi@YLuvt!f!W7wffbT&^ z&B&>meb~%150jut*OPqPi6-gKej4!INb>yzReVf(Blr;iCwAylJG3zeWp%>^7n$Pm z*bbzplP$*|nyr-|)F0KK)nC*d>aXf=>Q0qnDnc|%1bvvREBn$2r4jTI4H51Ue&58> z(x7z+KvDb>x-xT+YEc# zK>Xf>fgw>LpZIXN~7J|G$8Z>YiLeNY|_!x&eRQ3F=3o^|DC zPx#oQE~*u0ZY&}Otm$wCG9@$-J6srE|;S z!OtQGj-re8&HiX|7CFX2up0{O06WjbH#3)sWULRaPMf@1Wnh*ipHgdhmYs7@BNki} z*(2O32Q^?Qno&Sm{O0PbL&hQmc3(r8vdo7loGH&#WGXXWv^^JS6skoig363WEd}22I~ML%EDixdg48H+y!^EuXIWioAH3Y^A;XYxd@O9ZL;R#`N!TrJm!h^y?LMp>&9v6g+ zn0Z=QEj%MUD?BGWFHmB%@Dwc(VChEVQ2DFS&`%A0wc~GTXy`@~S_elzKO>>u>G#Q2 zg>-j%E?O(B6V?ka3NHy8gqMX^1SO+pGMTr8w*{&Q4r7s@SwdaNx4?_`G63xx){FKg zfpEb-Vf>Wcd+fk-vXktbL|KrekK0 zOs7oe%$}Jp8A@=pnM<8gtM(QlmS<}C1??d&b&=uPYwy)QdwGtiTK?BebyD8 zy(PG}2DK+2w0R@LwA6 z^yj|3p)9`e7eId6Iu@IuzHki%aNe_;ILp+isdqH=Nq{UofM|x!w;G=GX=J^}Lebe| z(c;XV`Z-f<8=&4wbh_`Oz{i140xr*|fsKLB0-FLaR=*$I9QZu&Mc~W8SAnksTLRw% zI+YxiIVN*l=J?E};BytPR5Kp@2~gb~FPdkp_u_wIpocMI;qgSQqN2tk=+29L8=yzZ%;pzC<);xnSEuon6~l)x$#({e z?^Td@pV>YvZ-|x8csIAe($xOO27~r)p2gxj9A1?6B;W8%bx}O43e3K^XbBpYIXjan zZd=^0xP5Vl;*Q086n84_pE@dabZS6qx_-d696A7)yXP#&QxzxsPVt@U`ylX*dw$Kk zL4VnM!u!Ie%FUIZSAJ2s)xFLAgL}K%;pv|_Df3(4r)0X8oSGS!8SXpV zcaE=H$=ZtjO3w40?;GJ8>04K^zT%DQ3w(nzgEOaR&ddzWd==!1BgN-r-l!1#LRFVy zEu$42K7xm1IXn34>CA=32 zFkZQ{Us!Rd3o+PV;oDm+k%z%!f~`~?=6H-$!L=Bo>97_u(|LFbSY z%H^5i-m|liF35=*GFZSWeIU9t`FmIfVworGIW;xL$9W>2i!+yGT6tP~Dm+n7%v0sL z(pO&`_qxKS0i&pyIGw@OA=ZGxHM=G+X@h^M)$GV93G@20gMo6&Tq7;yXzgJcbN z23?A;AvNZ{S{t-!^zmW>a-#8>-zs)itk(P3wwBadWxe5cqV5K_LN2`hC)P=89f?@+ZBDt zun1E#8_9Z%4Pm(HlsU{(r8kCR!Z%l}WJ??n+&x%*OZCR0ZhKhs{L1*Q))rx}&rr$w z%>5c`%Dx$ynHeq1pFghkE>#R)WoWv9MIXbbngI(vlqWhTQ>ZWW=-rMNx98FzBsPcF zI7~XR8{{B)kI@A_;&T2P&pfM{!rg=Yqxm49loW7Nri5H%!gVj8LD*&`w!WN!0anYt=9HZ?9qF%%+_48b2sksD+$I)I!~z34y^2%sUk zxfAro-=S5c9(#ixw`H#Kd?zgQEb@FWEcS3^y`tmd2Shtp?OD~O>Tchb%E_tC;_aEG zna{;rJj-fs_1xyU-Luqlr{^Bu*OdoGdq-EK?)BYO^Loia(Q8v%g>AwQ!gk><&(zc* z(Y>o4O!bK#8oeXax~y-sUvyLT=IS4X6*ZI+d!fHxh409(7o5v2k-g1>BTH#RonrC8 zP&bK;VSP+AfDX>ho7vZKdFDfXHBMgzDa+M!Pv-dO3DIkc#}}U%{nr1T|8xI>%9|@Y zmhVwsSw?F00FZ*5PaLoe$S)bAj$OzEzoxy3THt zopjAehlhC;|H{n$nd^#+0|%6M@^7u&R{2Ba;OO+??Ug@P{!~d7#0fxmRm7ru_pI)7 zi-&{mpBuV&&+7h=Rd<8$JmCA1n0Hxl^1Cixy?@m&ObTS&e}c$IS>XPPRF*|jKr zNg6{1XjJq`LS7b}Tl^G!ihWDUdpfh3>|1kh(^BAOS^cB_50S$mJH1D0aKR?JGai~++$To2FUSEKJV z)3!FVO|Q#^vg6V;SyxBLM<+%nMJGqsWp=<(syWfQ(XLh9{*S#cfp4mK9^ag8(zH#R zrlC!Gq-m0uqj^V?qH-0AoN}pvq96!}7YYgrA{r3n5L84(igJ43fq36XK@mYf4iN!C z@j$?XLk>Cp&*r_CcNPlbSN;9zM}*GK%+BuH-PxU;ohf4Hv5X9>tdkRbSD!Y?km}K< zdC(?Gx`?k8j~l-2?-?zqQi}J58lDCo=I)kmX}?s%dkId27fAVi6{+BKCUe>Fr+H*e*(lQJaSz2aigkl}5XeZ}vTH82MuQ=M2Q9`9H93?=+-h{gL}4R0Ud z5mLM#)$q))gr=T=v;2Ni!^^`F40u-u7H_8--Y?=O;4I$HYIudfFZBeR#rstauLST? zPrzBc-4W3fa11h_9g$s;Un0Ln_Q02|khdBlhsZ%HAD}&K>j?gNA6wCWHG#Y!5Gmz% z5Nf5RpdTXxxw{^2x(llFyT~VnZM()bGTTBYVx)3=e zi@i7D%pmR1pHAdD5z)GIF1^d(GP*P*zgMaM`TlGhMr1;^RuS@_G(U(&C%>vLFNGX{ zsoijLdC-$8c&h>Lm=w=Q9?njAqTp|=Ln}*Hm8PkYr;`@+hm_m|pg*Oc1)&|%i%j7> zeVj0mW-^16A>i{gU!)@Sd@!BprP1QDNF;shtw$S6H&OnP#Xb|mUR5Y9@f~q z`Y9{!yxu~w7SWE7SPIMppXb9MMXS^%C`nL3c9cq?L)h^$LK;w4;e4C`Tmw2EZtFRr zSU@)^h6#0-1J09@n9z9!2@eyxOiprn3Q&b>xx{valGGvsDk#Vw; zYzTs0nW8|L!hm{80VdQ-4!BAV=q&~Guw4ONo@y+#oxFf-L^dXykYm#OKqj+PkriU8 zI&2MW1-3$))8?`j*@|r?wo;qhR%Y|q%57d-09`F*UXA(+cN|#aeAJI08z_;0ruwrD zsK1nG9;Bj4c_!cqBAb}J3s*~+nAb?TT}X=NLGm;J^FZX%kerqUttBG{`X2kDv;l4d zQrv2>Y;DOdwu@6B5Eniw*_3QXR*}ug7GyQqifl)EZPyCU6}+@@Fh!@DfPg>t+z>4g zs0ssTq7G2$bwUlet2+Yd`V^=ZgK&h=8-#v@ZbY4-%S4Nwuvu*2N;%i$BzDY`hXSO?OFp(92jSk%`#pRu^ z_yt*3EUeVkXi%#4xbaAqcpXQ^-=6hz?vAXTS!Fq%obnuRjxWcbL*xW=?$Lqlx0DM7cVK(#E^EufA>UsR8Jkynwu$v%>?3b=UKTn%GnaEd{)n!cng@pB$H z=(Kb_Tf*3$D|x=;g^~p&%EZt8$i3c?f%7$zv4pS0*-zNdCM&{OyZYH=xd5@3WL?<+ zuOMZ}nRO-(yn?JoBUAZMsu27H&@iEMp_Kp_E(KJh0m-gUX}v3Zy;|Z2a=fhZh_baE*AA6gYdtp z;aLUbNS06`U6$8j5P8-zI}9dqiUpPW#0eY}_0=~Rd&qNZlD{mL`F_Dp4--;cfqD?BTzEff1q) zlV`K%YtI%>R{kXYWW98ofSEicFu~eX*e0Bsyd{ti5y<&#G?oe8pnU7u=4oYUZTQY3 ztrrtsCJ^Ru^`4C6dLX$4z6#e~Ql-7$qz}>$*59JPRX;>ORDaNO$n%Hiu;+;9sOOmH zxaZsSZRwhFZMm-e`}7~u$LaOuhH_*1eR|w0Kc;U_mr97M>n2nemh{Zotf(5@CDrf| zbhmH{D+NnjAsb9+loSv_eu%-#4qYS=M$jDL04IP0Xtb1^k7Q#276}9f z7aaF$rRgclcya$FgZu+_<=7d8hKu<&#MqS+5%9=0J}nr%o084MDl? z5%289ajeGFRWMe)Ko*q52Ev^z9N7cpgX9$QA=roeQX*lAkSwqU4k~v~xiq5H!{i{6 zjcFwd?&M1ix#^~tyib^Bnr4~Ckq1h};hpX$)xtYXC8gn=9wAFpfrHMdyKz_{)!t=8 zY^d}uTcFarxIm?MPZsj!0rD|&I$1-icBV8+3EP=CPKm5DJuso9-6#&(F^yCU*)fBZ zhU|Ep?2`(cflsapg#H&1I=HINW`qtCx>q_GWltW2C%dB&|L|cpc?NGM3ZUChm&IZ0 z)nJ|F))n|0j-nI9vlKsT8gEM(k@08HqIu+#Vmm7fe2QG0E;bz{F=wKu!Mrn0%JCVJ zciHCVhv3mYpA>s^bH%(zH(SU%irPU~sN>(@XDbuwpY>f;cqjdRE>iV$kUH;gbC9Y_ z0RDcD8zcYjOGr-0f7>Ob%#bQJx5{`3duD4r?PbUl0 z|JLx)Klpzy6Vrg;*~`Ur&iL_~{bkQ9o_(b+yIyg<>Uz!fy6X+so36K9Z@b=cz3Y12 z{)YWc`&;(6?eEy%wZCV7-~NI9Lwl`#k$tiKBm2kp{>~-#`s884=l^OnIdvSXg6#vk z&o(IqfW3qUy+Qr}XG6S<;Y|^M@Qu}NmhAFD*1^_g&ZVwTUDon9 zz5-nzm}B}fAdV5wopz-~Y|K{GA~tHPY7rZ^RketX+^Sl{#%@(DVxzaJ7P0YLRg2gN zt|~<;FPs!)yY`X#9n-IZk~j_#_$P9?r8 zOSh4f#&=br+ux*~kWyRVg|}IN4vwUr8a3y9&M8$Oe>E zDN;4o>?Xyr+_AAHE4YWW2Ki|2Dt!2O?y5y>U|H27Hngm25gS}qwTKNbt6Ibcm{l!e zL(Hla)e&SiH@J`do!n0zAaQheNAMtdi2Q>*Ov-Flbr}HPA^BjlACsSwpOK%FYskHU zFUa-e2J$QNIm;&UM{+y)6KM$kOyc%BcL+0$q|pm6ls6fP{+n=m$iT`Qq}%! zk*fA*i&V8gTcoP}*&< zs5-Pi=2VCFPowJ4{%O=-(*Eg`2}`4<{n;k7vD{TYrHb~?pe)o$v_H#GRr|9=s@fkH zsc8Q!Dx0!Wb!vZ1rK0_FfhsFWrK?GPBvs2OjES-}&srF|(f{pL4(h+=wchw?Q?awk))&6Xes`h7#RJA`_q^kYd zB313r7O84~T%@A?i>P9%1V)Tl`H2^n1ZJ|(z}i| zLD}U%3+|%vbl#UVrOx&P7@1Jbzz3oJuW_1EXFJ|THTpJJa=R?M#Q1yOdEXsuPT`l{ zb=@M!g!nt&d7nxI*+oWsm4`~a7wqYLzq37@WMZ~a5%ZrNU?wCyV!&oSaFKr?btzkg z0r*uzIsA=>VFJ6*OJ6m#qFPh==qn)#MglPX*(UTc#KGXMPZRJD6Zq}O0N;T{QGzjB z2%m&WAmWnX$G`%9$>L`NVgc1Dj4BLho+EO?#!oQXQthbr)J0SWsw35j>P(3*Vrvs{ zWm}%z1s10Vg~bWWe=%i3Q&QcKtV;HhAOp3bE}{6h1ea3$YXX^nzTns2l@k2=`QYfB zKB+56IUlqg&`uV#T^2)Kcs?zSq%K5g?@nDt2@%?{5VdtjN|$l3D?)pZBuDnG)G3-J zdOwAG7C!;HQu1Arz?rBgC4K?~Kn?0esm5Nv3cg?;K42l{iM{rFiH8Dy+gIyd6cQLWBBIvdk9VlxNK8MHH82y0|qsB&bN5Q3MVPVy1QFK~ZCc zo#1N_?t`SAp3i41_HnDrgC3LKC6MNV6oO-1T}0R=u$4f>hdjolV&^i978KCZlf1-ITa4O$C%;HIbMZQG-QxRkDyjulgej2g$*X^T+$+`<(c+6EL;D54vYyY`>>;G@=t;Z7g z661*R!~|j@aUU^>m`vPHJU~21JWM=7JW5O>9wVj`HN*_!apDPLCNYbcM?6V9MLbPB zL(C_hC7vUmCte^H5HAw15U&!i5w8<(5N{H15pNUk5bqN25$_Wp5ZE>Un&4vMBjRIX z3GoTBl=zfbMl2^jBUTVAiB-hs#A;#>qgF0%}=_psy^_p+pA zU1gbJf873reWty)rH`errJrT4eV%H2W7%#t)7{@F?7J2w=gfza5x}EyVA&prkQ{h;E{R)gA zdICXQ5B}V?H+Ns|@40<~R|j`zjdiXKe&v;+nqi-#M5;y)rCb-PfTvs+5&uD5bSL#_ z&hL5q^Cr0_yY6>A;Cj$C#r2SDs_S9bMBTx>>hQy!M?AH@MZO_KsPuhr%kYKaivyPg zChP9kl?NV6e?a$$Yl`k6-BjJfx<_=KEX#eX&S|4_+UVTVv9shoCEM)Y{-1j~cDl=p z^zqpFT)P*bC!fx7S@^@OX$F6mjD=lwVdsgZq}9k` z#cGaKb?}dBG*!C(%PiXd)PYO<5@QrKnmV%^Z5jJ=IAX~epP9-0VcR3ZlPG*%#4#vj zL9F;wDg@=F#KElO;j?69I98sNKpy?-VNNUKZcX4EUA$H%t(29|FaiY@w6Nq}_jlgw z122_)@BP91qj$1^Z<>W9!^DWi27Vs#3uOZIzx z*1*Y&gC{FKtyO;t^$<0cQeE}`i?44^cWZa< z`hUQh*%&suf8Cn-P*5Jd|J0^Lg<18V5kq`HsA3NYk3w>)je?H>Ruqp>8?>U!evCI? zH(l+1w+2oZUrLE*P%?#kZf*akcl3`_mxZqk_YTkW%<{ahn~^@v^_XkAtHw3M^|<#P%_B%@o?ITN8`d0Zq_pSDw>TTt@ zwf$UJssGK($~C&Rx{^R4O|wuJg^}6VsK&biolhDo`GJ0s{$_tUk<(!Tn=~o^MM@~sR~E= zY*ache@r|H%WrIlxhIp zdEhKHE#)j#l>l7cXDsRCAodx3xaN}^b<%yt-0k&<{m$Vw$rKU_sc#?|d4Sl9T+abXB zZY5}s60}zik}1IIf8bhdAvGsBH~3rLXx;9-nyiZ~ryKTcsrOTFpOQOD{+UD0yx@~T zA<)26!B*jysMg_^sW#zPsJ7u(soGqF-Dv+P_v73pxu4`lT`^bORq1NzI?vTH+$sE+ zXS(Mz->E|m{4dqwXyP7XOq~axDa1p>)H>ZbW)pLWxpg{oEF@kcUj7?gI-UzEojT4P zhMx00?|H$K`=2}v$(E%N|MSbVe`-;ZUaHCR@$o?h>&nXadhm@Pn-xJuh;wzRC-M_W zWa`z3SoK;3;nADR1C9$0&2Nd6s_dh+IHyZa)73&iiO1Hpsnxu`rt-YPSz5OD4 z2YW|*Cwpgm7yHHbOYE20`#HPXyV<+jFSB26?_s~fex<#qy_fwedvALm`_=Zo_I~#M z_G|0|?AO|_vtMt&!G5ECp#A@DMBm|A(`{Tv6?~*X=rVnc6ktI!gm)i!J6#;AMvu$4 z+)t!%YB5fA$b@DJM;FZ4gl5SBv!#Hv+&Q))z{JP0TAbRrlyDPegoh|6yo8VN6WO`6 zIG>scy-U4Ey-$5WeMr?(i>SraN0cmY5AWE|r`%z4_TYRy1zfJ45b-gknx_Y+0A%y@ zoQ$X%%}sR$h^@%lPzndn`XyRe5?D&95Rs{>uyp+7j<8L*3 zk_Tv#$I_?3j{&&Zs0?PX31?g4-Yy3q|8H{=ZJBgJww%w29? ziB_QzZW-IcdP^i`($@M^YP3TSY0+oyS*Vru2{Z0CPT*2V$)fied`4fIFWqPInSB|) z&F(dn#h2;J@@4z1z8qh^&*5v}EASQioIaPY$XD$1`1ZRGxDUDia36M?(9_cCaR>N{ zh-%0}$J|Asl8~XySmq9SLf()+6bywz6(KsbPGYR6WsMbIfQ5Is)PH0>b-Q(#6!ay4 z9#w*-DM61ZLDS`+mYmGoV9G+v-Cvm2Qb*kzsIRDv)Fx^(6(|dqSy8C$kXvlh=4AdF zWUiJn-9ojHGS#826z(z=@^65=xs?1{incOhP#P)>ZKJG+DT|gh51n6j9=z|t-JBAc zw`F`swG3StY87f7YF5@Jl$LRwtyf5fjH7YO(PX(naMIJd6NxOPWawEZNhPwBsz%T7 zlNVJX_*o8*14Y8~$!BWNKOQv0ai z)y3Mc6zhOoEFCNmqtQWX11Bw(Ac2rL=#Q)8v126Td2;Ov%Xv*cM6T>n(#if9WOBju{0Z%-R02I^)>@OEhS!DHONAL$Yo;WnBq{dbog~&CLIgQiu8yts7BMY zys%hSa9DjgC2SQ7_$HM{3I7iJ%U4pEue z*o5Ae3KBr?NCDO8-Bi6$6K>3VQosk&6&YXj)|9GzBR71b_oV`q(bLg~DG&&&LFO!( zxq?cXE39-5eS_{sU7MnN({I)d(*2y*#&VbEZcoB9$}`$?k7tZ$tmj_OIL~;`1kXfI zRXDBqAR<wgCtd`T0NIjs zH<-OocR_m4GsPocl-gQ+^nYVn^3%KWYMqOmi=8+iu?_CH@#c(EtU?Sz=^?v5XXIb> zOFf@@7TAV{Zx8RVznPwuC1WlGTR7F(UC9cfnn;zI2`!cbK9U1ImIC;|%G@>(r(+bN zCWq)ST|q}^d4OdOIa3s1S&k~%6(wNMNp?jE(1bMXias@@c0~!4h0ZHaSVvh$Tko-s zv5vKlvpy5pkv~7M&-ZMAp+A9yxEBH+?xW~H&?xJm&A z@h$@*u?q2S_n8{ejp;+CCUibpp4v<#a2NWs^U-HY&ttau#ykDCs71e# zu`jN->}t%$q<_KZ&(?tX!HNzS9w|Ipc&zYv;fcaO3z1Xf)H-!ez0=?{I@6r#&J7uQ z^fD|ooVmgUwU0*C`RyF-9Tzz|I668yIXXMKI4*X)i7s(m>d@J`I=VT!J9;>HYjJn_ z3P(>zFUKBWBr;AEr>5EI_tFSCv-;brM>s?}#F|_}MLNWqz^ADzK!+^J;dBTFWuaOA z+5S2Hx&C?nC;d%_@T~vEz?HNuQ=-^~*Zv6EU&x)_6U-HY?>yqqiN@dLT9CHO*GZgSl`z4w72c`z} zC9gyAX&b+q+#m&PmBynI9)7Oyuk^3-f9_xHA3$GAuko+-uk(i^6_H3}qkofMMus1L zo}54yEaI>1yaEn7!bGBxSR@`%4H)4(joC?y*yN+D#j}I8^=^`ngN@ScTskz6zKNcd z%qK4z1zL17U7Ro8e!v*U7Q#VbIrvJ-b1>{NrWj?$o6XWah6#Pmf4Jm_1mjIMm`?D} zgsSmN(X6fr-#ATBh_eYA{_{Z11QyK0rWWEH9TmeU_HSg z9lC=aLEkC1abd6)-A0e38yjAblHUbQzCj4OhnrN5wn&>?jkXE^+(KCp%{JWXg(Dr_ zLf=Xcq5GJxHV>umroXl9G0ZIe+M1EO#lO|R!@1MB%bB1@(fbVt3stC$X|)^ zd6#)KZO_cl92D75;Lq?EotMephsp%J5N5@hiFW4kKI;RqW0CP5b9H8kaZ5qVOv30kZVi?hJ;pKSKdgtXN32J!$E;bo$E|(6 zpJmM{EjRY__V-@n9pD{LkBaDW26@>YmsQPhJ^uGrx{_-zo?MCK#7o-GYtSw9*a$0^ z3X`oCJ6OV6Ws5l zo5Hq*uX_LTo3;AK;5wT^?2~TJ#9wl2@Pvi!eHjw_C57T@G)S&zzZ29dtYC1T{k`-f zWTWle=jY5p`Kiy3Z$w{@ycwC2iSI?@8T*|Fob%~t>HdXNGY>ica2|F(N6Uz9FdXVb zc7Uss(<0(2GOln!;eCaZ3MUt?j2v^Wb51X;DQr^Iw218h86i7GPEHcyrU=(Q@sjX$ zWVv}Ow~EWq*d;-XAdAD?MI{b1KXJ}%BXH({qwCrT$VBd_BJ#g!*YZPZ*HVSY>dx$4 z;@t-v3ef@LgVGG*!_wN)MWu^NKPvsWbV=zarE|Tn(mSLlFJZxcjW&>GGJ}*M;02p6 zsz%yWgmhdnoSc44iNXQ4rvOzLB6Fm}er)`j$$G`*5V-{F8P_8tpTI744Zx|c5ZvnC zq~D_7rhg@J$Xqf+L^-V{V_1}2SI>;qPatYbkdfQ6@B<#(5ln`uwufyO_!{|oq+v8d zK*P~=r3ewUO9&n`8#ev#X1|yHk~M;URs);RFMJnaLkHd}{mKK9TPL&wer+pM$m@1o z?FaOSbS=Gz#wZm6iZLk@Uuc5hzj(pG?LwvS$Am(1Kv)XcZQCQric`3MOfR87p$%xS zAR6XoK>MTs6Z%~aC`$pVFv)N5t4Q;faUkbBM*OT z@l*-xODM3AZ2l7fKJ2l%vaH;h-m&fZ2n~t%~#VhFMk}sd<}gX0nFFZLICsq z(0{3~i9c#~8V2E?Q)lu)cio9XYxhjO+mZ}tyhhd9XVeGJr~AL+O$ zM`$fClIR$S{av-loBb1v1Wg_{)HMlAyn_xPZJu7J8Q(_gq=0Iq&%+-Q_Zo15pFB3S zI|cw3J=#g{qJO4;Nwz}79=GCGNh<&w3-TMZ;?Gno0H{H`;p3$7_2wX4%{+}&llq8! zvy6Eu$2Yc5_R{+#RaCK6{0?n3NZYy}I;wsg52|rI1RT?)9RGmcJIIfHEDr9yLvp|$ za=>9Z;D{V>R1P>M2OO6JPRId&$^l5D2LV%KKY%oHfL0FB$pLyfz#s)2KvqqaP>U5E zp^wtX=;QPW`cE1$8b-_L7(HWPj7%Dn&X^edJzEL{TC|roGb&>@gRvl!wD&E{g-{#k zdW5IB9(kBVl&h5qpbUN>qU1LfEkH=V0P%p-0>lD#V>dxo z01VI}8ly{(Z)(98f`ovHQIPUYP9iy)M(=Y zsnNy*QlpIrq(&PLNR2igkQ!|~AT`=}Kx(w{fYfN?0jbf(15%@n2c$+D3pjwX^Q!n> z##b_hjFWLOMNBbM!jv*@ri}40<&2l{F@A<%0*nFW@;$0ae%c%uD0-Fy253-7ZJ2~% zm{_I5q=GpB3%qFCz}w*QCTKgohdw|brZbrwCYPCN&1W1;1EzopG7&jhc5-7>H$jc& z0)E8cHJFY2D9aJgYg0anJk7`uge3AbQwFPdYGm>ZO~}so3&I_WZ15{Lfp92>P{UNiC*j)+w;P5Th8vC;KMjj46ugr~b2ub6(~GLmpcafQm%-_zL#SrXI2{5{ zD!Y|EomirEUx@xsV~L(!F=%-9C;C8I_{>$}^FIG6+rX!!3?fVoYRgn`#Q6LRVm?w|hkkqwcJ5tY%=9$1D`ENk(YyoizARPy&b_`bdabBYU1 zF+w$RNG-IofCTlAZP1yK$2O2f5~zQG0wpVPYysKRQ+K^DU6gG3*R0oa!TGpJ{8w1= zk5OfhL+bDUsFYIqTqF;2l42VR_Hcn89U56a&~R6|c<@x=(wV3m3?7>_Cuw))2ICDz zJVZGM87=tlU&j1x9{HCuzma>%wtt6X`{fLq75t1H+m)UDxB8wdt5b6qKVzqDCHoPM zGxoz(GE@5DR-*>|>R|;3Q^8}ijssOFTj|1TfTWed+ao8Z6U zzED_p_!!gY0&d6?gr8e>{>#gb!sYR4aCtn9ya9t5!R7Hza2lBiCnfIe&71YG??;uR zxnnZAA3cBux~HIr&{Whl?NNx-|4>ndt6SP<-W6UlhsvRIFpHZ67Wqj(kopo=qr%i? z4jZFVX{|XQjEnw(&D@!V$`%JQ5+eBjlfjJCqc5MWNd6`CKef{S7vuR4WzI$PpX-_D zS?7Dw^OWal&oiF+o@YJ(7GM18s7MNs#rw}d31$>?%9#Jc``%mVx&!!+X1MpZ+^b~n z$b#SZ)`x6<=Ckm^H~DM?i>^WM6jX7J?*{lif#4}qc3Kzn#gU%o`Q+OLV;Nbo5s3>o zNniEjXxJ@{7aCg|Cr8>FWrYSL6y>90xkJaD`qV2VEJg-u;%yhXDDt&oprK==xpyLS znR#KsO9l94mFOm4iN3$%?wpaU=b?j-)}*ea+q2;A7W{^UdFxwQ<#UC4>8z}*xzb~kZ1bvJWY zxtpa`r8RfAa96uqx;vsys6P-*NlJ=v_ccfnU5_qz_i$g~zS7;(-OGKIySKZK`)c=4 z)HbcJyPvzi`wlb$UE>~!)}(jgUo`+5uEndl02^GqEHolgoyG!n@<-64O3`P6 z1B>J#2p*qLfJcH0D#F77espLab9q{iG{q!ppnp6_mL%nKT6ZKjzS>t9_KESUj0wFe9o!I@TMl?f3J9QgrGPil zTYQ%x=tdoSgL#vAi&60xI@7LLj$UWjgeGsx+18!VMBZ326B8ai+Dk{g1^hd~f50Q}(fT%VnA*D~wsIlLFc@Gh5zrvHd(3%+ZLs#NC25+L?U zi9cbmNTNQ`BP`Cx%u=SKxs#cH4FfIFkdm>dbfEey6KZF_=yy(0rMmU-x845v^JQB$dYBqqcoTp{3>FcxDV9H$v@b^~@^Z)R{& z1EEL@+G#V>34*mW=YY^4ymeyn?@b$*Ha^XO%J`|sa{L-T5(W4$@G&3_9Y#mcHuE>k zadZMrP7@7Q{J>ZX`r=#Y@y*GR2?QFbLxZ-#%I1;s-3Y?r(Tg3M0LQ_}0r_i~RqbND7oC;K8f;vS*8P%XTv6GEpD#o~*l| zkM5IB=%1mF{CpoJS;EIAq`T`<$Rr$)g33ZZcq@y0G9^B)Ilb&x<~L@yWHV5Uzt2px z2kQ1pne1hzNOKxt@jW4TXdm;ePDT9RfyIMT@%J;Q$Pe`k;}0ERPLdz$ATX8XhdRV4 z@xTAL>2j=v{9A(P`ap)AIgGeru>x?c+jq8X2R}}TNv;lV0THPy&;~2TJ)3F7!`d> z7MO|BqSMhFesyK1YkE|cR|-cgWA&{*DkPyYMAI@%QPm_=arYhv}0MPvWc3k zC?;tpkYvH~S2wb#LQS$l6S_!{0BS@n;aAL#+k#k95=64kE1P&)ksC?o}#P&fssf*K&oXGLlis!9OBgd!;ni~s;q3iuvTc@m{C zF74Yi6QZS9d=@aAStfyln&G5j_UIJN{k8{e-ODa3yS%K4>p@$7)DdkET@}27TuK#0 z3!~1cD_Rtl5!)e!Sba%Qrx}CpuFz zplqJT8=bGYx$H&FLd}4j>&Y9)8%a!xZw@%pT#)$GM0=r`qItv5LwRF!0yhx@LNeqG zMW3)}2Z85k5QOVvoDhyzcj7+A$gQ&T0vP=o0UZ>OtfzUzLsD6JHClsiE4#6*vqp86 zGpS*h9KJ)LkJ>|B+>ul;j#R*>e@*j-CKA1~Y%_z=NC6E8){-LJ0SFxhnQ7vL&n0T?Ksf1${ z%dr`794+No6+I5b-27pMY92j_P%VJPF{vu72BA`oMexHaS0jXWDop;yZ5exK_sPC6 zI?UHEd$>=eWcmGGE8uJ}iDt3}wFb`hJHoUDVw04(T~ue%i$Pk{CfYvQLR+Xbf^0MX znT}@*H{Wwnhv=#zA|sFy%m`(KGd?f6EW08jl0jxr8FU7d5zUBYtj>g8hO{pmgAlXi zpm~}nl^<-5bReX`2Ro=ar0EhptU01NsuA^$rk4G57X$CvQr?$DN5TZf9cBd46A1R; z{1)VWTc_;K*^h*#g`Nn_49yBPiMEXH)oerC(k_a2jCP84j;^zPVOwvzG^!YqOHMW< zyMYw4A=y28z<4nAng;|)N3~^($`+R`En8N$ysT};%Cg^$`;!RVlI28~M?WuHUACrd zZP~iAO=UtqU!QS9#^8+aisBhUe{U{hd;FFRS!?lCE!)m_pq;g$MWMx^%Tnz;Kch$V zqUfcdV)W>8kcyl3!ZJ4+{hqcz?LgYWv;}~2z8XrAwpe>OtyJsQ;!KzU0fpb2;l*fz zc_MG$0t9aCf2G;Te{=yTOHk=dt+=DnRngwj9ra95DPx1P4AzeUpPq6DH)^;p!Cw6A z%5~Is%y!&%!Zsn}>(G`E%EK|8b$Mxd>5w)uGp`z5Z@?t@Px7Z4MN>N~4iHNLsxV}? zv?d&3m92?2Ne$HAq#d4hvv!cypMF<%zi9vHHPNlXvA%nKGD6-URX4!`q@p_)pwT(0 zjST;3W}-1l;3%mw!!HHvC+Kz2;=uLMiM|`6iJVEk$-eu2--o989`jB2)%a%kWNb?~ zyIS4NI61rh(4EtuTe($A7(l1KySPnzyLOm%xb_b1W(KnvA+TZ7RG#YcL(HJ4o<^xb zuv&yuDMM@V&>0LX9J^+5jlkPxaaW(rOnHl(7)RbcxuNowXa$#?lpF25F{cLInekcR zy$o6IQej8-bLc>*g|>d$=XPl5!c;>OxS_+M9qUPa2VU8w*0&K+nOH(f)#1@2p*y3m zI?qRSu1JrdR0K)*%G`=1I_hFop+$E`M`=ZRh6T<<2{`JW;Png!YS5_YG0kx)Xms?b zbZX-$TlYkV=E=ZXgn=)oQE7^KSYjHc1ir+5EKXC1_wx5f$3?@IM9vG@cjS%8dolYS z7e=O`fgCcsO%tPGB$dayc(}rV5^GvzNY_|&r|cwS{5ZV#towP;54@n|(VU#eA$a*HARTuKdqHGpsj zo`}wjVhJCH0frfG zyHP7cV}m-25k!#zL0oQyYR56>7HaWM?Hlb=(HhjWM1}$@AZ&eb(L7E4tb6k%r=kR| zIukt$OI`=Qsq8uHIXHNzI5u3wiHIjJ5cBq}8Z<=neDsCruiCxZecIo(`?WQvI<_QR zJrlhcZEWbqR}C=u@(ZI~rM;{}FGU-K3&WRjU`}!J2X68G9^C!u?saK(I2b>^*OQTC ziqxeXwTHC#1wH5vzvSx;g(6#l`0U)vbCsvJ$DwPWE6`mRZJ&-&MK%L=QI;dAggZFX zMVSwGAY)noMVZgNJrmucoCAZUy@I1vvYVB+qt|#U!f~Ap0mpvki$(%1R!_2x2OhFh zvx4Tkp!i~;SUi`eN2gjF>psqIpWZ}=(JBQrb}oq#79bTnsmMV>Q^ilP2Ev8}%fz12 zMOy$CGZQU>4aqzFZU&z}HE3~k4A&C|piGGGqGoD8jP}*lMqBDoaiyi9rK9e=@Kw5I zmh;2?be_`wx(mV|MXN0`@;vCL`VkhP_m$g(xM`L0ZgM4D&+r$uAfXm5jZX52n#bE2 zK85D3kY3Czixwfb(kf7d)+np7pq?n#*nNp7yA&(lcTn)HN zt)hi$6@9LT`H~uDxw79aXplJP0zNfZ&|oF#79}WG`e6sdhdocNCFiRFr(`L*tQs|u ze%gH0RC+I%je6;t-I`!vTJDaDO$+ zuv4t8P!%51Gtn;Sirvxy_%k$ey|TYI!F0!?2@(W9vhK6pM76wiq&mg{f8bz@2o zC9oj7qZ@#MXaj(=)$fsrRLc_Y1>!HI#QUNq)IvJqn@g`?F}M9{+ztS@DrpxVga)?H zReYNwbdegcgBq}-8nBZZu(KMliyH7^HQ*&`z)RJDUDbfy)POzIfLEviuT%r}R0H-> z174*D?5zguqXxWM4cJ!=*iQ}EUky0Vr1ISxW$?h{_{H9Tann}iS{*liqXZVAo=Wl} z^rF%#RD>2Pfq3QS7w2T{_E>&wzx9BX2g2;pp)Y+Ke2y6Z$^$z+0GL*N37(0b<@OsPTAlpOQOD?xarsoN;CJVb7}QBc58{BH!9*sPuiWi*6adFkD0z(-#LW z2~5`AuPYBcc3N*c)7LJgs{?BSBT6Qg+*dNG(cEeI}Rg>pECXuWt_i8e~(@kzB1f9EIb-N6rJXJ%r)Irdo^h=WupXh4xnVzRuS6HukpmcJ}u6 zi|ifj9qpa$o$X!h7uzqfUuy5?>}v03?{2@$e!0De{R;b)_MY}$_N(l@?S1T5+xy!4 z+56kCu@A6cYroEZz5NFJjrM_d9Beu#mK(Fh{td4;-nGAHf8YLr{X=`LeUW{!{UiIw z_WsT#_G`n}g%Ih+?86#l}#-q#@Zmgj5V7T>PCTIV9?V&^b&I9Y@~S6lK{ zD}l1b=`NM$jHggDeOebYJN< z>Ne>%>oB4uf0PnM2Tv98zKJv33GWg{qZvt~-3#e6!EiS@dR-J7@1|ybuNz>I5wW=y z>P9zmb#U_X#uCUZ?Wy(LShiEQOP38Ot)NMqy?{sI@9=vW#-(ADpnxJ=@Z&-g%7tQX zPnv*#fL?~~rt;XhG>nEV034d&dB7tu!u0{hsq-A_k6BPY|Ez^Q zhY~RcP2*po04+zX66^3x?FoIXOFf@@HZy_P?creT&Gf7+8S^4AI!RsQ`E*!vbFY$B zA#@G?B#Is^i;CS~FdF_Wq8^kYSWuAf7rd{~pmt!dB6a+xDAg}vU7qwQ!&L| zKm$D;6Q2rzCq8R1vFRuzttc7`>nPyL3I~7b5X;kqs-^q=>8Pc27hjVefOd%{25;T3 zL1Zizi^tx{(&Ud0>+&mOcaaTaGGv_NQw^;l@a&OnaB_>q^W;Z)cT+FJI?orLJIf;a zacLO2sep{Vf7r1rMQaRbwE`M{tuA&(T9LlNv(dB3v)S{tXNxB*f0BN(Ui=9$izfvZ zI7Eiv$#g2>mOy-~K+IpzvMjLw)VH2(o>qp|hVMM$Ix$&yfy~O)SvNr&AQ%Y*+&B~Z zZd_U~!;hZro}WCC>>ZxpJi9%wX+$PgAmJvS%1COiHj-K>M^bg{5~yBszJv#Lv3Z(7 zdc`OuhFCl}rIm+3E&7w8ZRw#eTJwgcOp07=;QJ1nMzrYiSdUnLX;r)e;Vsw$^jE}g&=1th&~ScPe96lf zo6wEGNA#UcXrLT$lN@lf956@@7%T_eBL|F=0t75%l zePUO~`o<1=4tf6Y9QGXX9Q7RY9QS;izAar-t}WMT?;pc!$&cyV z)5UWeSJqXiEF@V^&R#W>bd&kd20hG8^829f7F>rX#6!L!`kLn2Sj&8j;1dw=kmrkv z&?7uUJZ4#4Uxc>sHeCVuur3ERW|?515#12GG4^x%FX?Ub<4%!s;;qyJVPa2B&4&aY z4>!d`o(TeH72-ia{Fsz@a0~|@;MOC23zUX#j@=TQrJoH$@_gq7&NB3*T2r1<0_QtE0>(7&i(s6UW?F#Q$%tNPdUDze=Mvdt9>qCvOE%FrTZ zJ+)8|XLw{=J3O{fjpH4_@k1%c5dc~&1r3hP&^?|6VY#6Lpnt=|VsGi+)=vu`Pk&GU zzWxLK^zfark+BEigNs&f!KdQZ*j=%?VOcSD2WAWAX+|hbzz<}k@<&2v!MZXkHY|U5 z{vG+EzCl&EH)o>JAol$kqN+9Mp4g;}$zqTJjfp)UUJzawemOkbFh{vt1cN!>m$*WH zOqQ#epS()o3h4FnBps%P4bZsQ_}B#TlFdsy5v2W$?_`v~qv5_74rGEGkP2inHg<1p zQmlXe!2GAf??LlLtrI$yb(oSB8S4SGi2i0Qt<=ZUT!b$w>-ekaN<%|K5fontZN{?!+ATiCH8C_b;1}%8 z4J`~);pW`}s4ODJ1VE+~5J1^-fK>`GA)gcwKn7R9*;c{n;DxGn;n}In;V-KdoqSe zI|!uM0squQ0U%QKpB#-k8@d=SHZ(DW0R@k1?num!Ys|f?;f*i}#gdH6>@_Pc?qT>G zUa5=b1b_L=?;7x(#=0D&8=AH?C_^=I^Fxe6LsiX%7V>)#Tvbm)FT+)a-iAJgs}0p? zeg+;z_)iu5K`+26rP!CMtWYn)oPS=t9Knr#?8OWfkE|CnQoBK10lN(04K;5_P6A(! zy`r|Xyb9GUkXG|rEPz@G>p%j?1E{qWU_ou9hq7vTE!S2GBElBbP710H?Ub(gg6rXE zq%k1FtNE|xYYq7(hpEuuG^86|&tDMpmEUiBKm1bc_1GJ+H)C(b-j2N!ld)laS5JpQ zLvA2(Gn{wCtwH?_O(79VeZJ5K&~;6u$xc3uU7&BIJa&jSFVLCX7pgNE%i`Ecld*gh zt7kHnk3l|JGL|JVm1HceBZ4xR03PjM=G4YkD9)f)l)ILf;ZbsDAmx@&ei_6I*T($Su{E)^u_{w@Qw!5DD@MidS2$GG z2S<+7ms<#7vxhaHuq5M`KO?NKWW1WXB?An0bs7LPRqz|`9QfhSiUIeRv2FRdP_lGk z@OvQ2Wq`_cr(nt$jaJ8c8M>G*HjS}dV!G7S)fCL?X6kOb%yhY_hY6E$hXE`cHf5Zg z;LVJ;l;VB@T<~^)Ya;ehjnbQA7>pMR42B;K+6-336G{U)oy{nH6QbEMC9t8fVe)~4 z0oWyQP??d&frgc)r!3>i3FJg_O6Gm!Byx@E{Nf9WH#6VFzKu01Zd}~4yiHq1od!-DZ*u1G~{&=0X@#%4*8 zFxLcrYBbWgj9gA$Uiu@LSc+_lh0GKqF$Z?3X1(`w2d&)KOvE}!ck1HQv{tNjl zd0#m^JQnsf&?b1~dxs4-4F5^~RHF`3znzkt5;5N#;2Q|sQ@)$LzdY*E#UChtuzX7S zL*);X`nVyU72HEwgDMG$*jt6^rkA{N`U%ra(=5|CauhY1dWURUzBN`+e6aLma$9VB z>~nGrxi|20?AO=^@+))E!2dE-Z#t(#FNFy;T&%D($Q{2ONJW}hhr;F@N124Y zmL>N9`E642^7ySrR(wu7no~CAfH`Ph>s;sb#*gL7kkX*{#l`#5e&+`WND5u$FCj`6 z!SPkJpGZSQ{3A<6*2k7`hRd-!Q`|gGz5vL#hxYjPG=V_cfg@iA*W`($MwK!s?dgEl=@lj05m*v?6I9kwZ>FmQ! z#+$Q5lNb9PH!-o1I#1E5iZzRNG?z?z=xDrVwSYCNmH17%235x|ly->@HH%lpTgFXj z7re0(=?D{I;D{vwdIr^mHJd;!{_XrXPVT!UI@+be->A!LH&2z^QX zQpqr?Vuw*zn1F4h!>C)lwR9NqGSr}P(eCm>d~<-oUUMBGSid%HQHr+-Y7m(qc-sj6 zqD!<_#HZ#S&3QQYkz8X*(?GMpo&FUyC}&6c&hlO53(!7gLwX2H z-f>K}`Yh+3*@^6=>HRxpOtn8H85cVha z_;5B%SRD4J1AG#Em5G;`1UAG7)2zxlAU>`5vEu2)A6T!A*A&-U7g-luF+r6;fFGek zv{+TtO98d3fGQ5Mqa@JfVsw1Xz=^^J*-=C63W$9K#JXjkr&(s5ubI^V6JR?L$5~Bg z9F=ymn^lf}3OjNV2-SL+uR zah~Q~-mHjkjai?JcfgN^TXI<79@nknCC6HoTyktfV99x#_oJ~U@SGbOw?TYu(LCa9 zlHi3{(UZO{zPw^ZMbBWb;FQc?d@@uV2Um$S!Aw9@6;7eydhupwf;pfBhB75vbQV*z zRl#ErE8Gzvb}&<-)bEUkGQ&!aey%OtbP?8s;qg1-Bjb0)KX0(Q!L=naG`z8uA{=bc zNy>>I*K))!DmGU1D7m6UhOWl(^2{DefhW{6y5|_^0$RM^)u6HQ?ot_f*RL9MPdu&Q z-griVrQn+iYe7yyZh@^pOkaz?j)ERv@ng#I@t&Cjl%n>Q)+Y3=qo6@SLBS6d6XT@? z?gAMaUT>uc*Gu{ECjne{c|o8cTp&ZhY7Q6O40KJnag`8zu#84z0aZX33~05SksmDoeR*Vz*tj6gtM{fS(MJF}b~@w+mYjEn zx4rX$BERb*X9wqiqJ&gZen#=UyO`P(bar-eUhKTYc?nn$@TyV=--X3+*AC(SUMhaM z_?6f}{$kgQK0teg&`NQqEGnLnRBj(wKPvvX`1N8eK1LS> zOJqAm4RJkOFo>2M{%WNL{aUfRVsC{Btp`rrDwlwNn9$d9z!oXs3;4AUM*F>tAwSD5 zlhO#yX4e#1F~4No8=q7c-H3ua3q}__E)4`Hh+>IkMdoQLQpaQHANIS>(?r#PslaJ~ z$YC;Y>mk{2zYt#_)_%Mic@eLn(tD4EaFnY|fok#Rtd7NO@f0Y5K`+O{T*?U*GspAs z+{iX$i{wRKioX)aXGpAqx%sR`#Sv9s+Sim7zaCdq{D!<@HvFTw$~WW7a+WJC@Fvtz zYFz)?v_grs4y{xI*XGnuE58rjxkhY`*PsvLpMn)fG~|jzTg|uQule7JzZ-vonN7YI zU*un+ebfJz|84&}{tx56$cKJ^gou3XU*iA7ztsP!f0bjeo6woj)9@h(sbA{hRzM`R>nj`%lN|2os4$Vv%^{HtKfjyoijs z6B;J9S@8!`-gd=@p24gHHWW0CNKOLyA65$d4wII)Sx~UMP~%9`NV5ooM)9{}!a6!n zGe!+~uM&8VU>?;ZaK)d-o0yxLmx<>be(8b3ax8~IGMYEhU~CQgEG~)%DAX_7_i3tF z;*~%=PD;Egez!3p2I zEthwV#uDQ|v8m)QY^$7^Fq(<6la;Bniw!8(```%)73z#9t-X4bi;OqMK>e zbz>6{ej@ct@WsOOZ+?Q_tqb*qVC4eB=9zSD|GiY zQiH@d@j>a=Do>d&fR_%I7O!-`+ldC4zq5RA`N5(${%F~5`N^`w@_F%A>rTrq%g>fy zEWcWQv+TC)vBa~wMJ|tg8^1EL!@4cLu2@Be??8s<`Od+-HR$_zHJXu*yPfTN_(wJB zB)u3kq0Z9fPUPIKLF0i$2(3k{*O(Sm!*ckshek0`dyJe0nh{?@X`FthY)Yew!C|5pDF=T7G? zXM!F@?>8JU95fsU*p$B_QdZpkEZRJ`I&>p92ooKvOZ}ICxtWXjRSv6ZCtpA3>Q3aV91zJtIXD!`kc0z?J|$X zad3+EnaAQ(I-MH4wb&GUJpNt5_XTfo!%ff9#wEio*Jv|d?Hy&d8}p6BBX>j`#suFfnmZYgM)Nf_P6t-&&*$2i9PhxM@ai1n!Tm^CZ+xV5kMv#dF#<;H&A z{@!c61H4D#qawPT6LEGB$*N|!uln~^Dhe$RE#}rx(UOikPz%1nno993u4TWEw$dVm zmdDGf2I(qSay`iPK5y5oL0`x9m2698C`M?hP}oSiWfs%xN?3Xs3QNxyuHx!9LUTZP z-pYlmI8<=7AZ`r0aBR@=kz)lDBgR6Oql_p!DN)_%;=X`tuoh_x(XhTqt!Mz$pp44K zhV^pLI#Krk7FNTS%FN0~%#WI7Md0Yg6?`Y6fhGy3h+9jBl!z5$Ev|NR{Cg?BuoKGR zK7b4XM}FdqemE7a3_(o$qm)+s>5dR=N6S#yPsbOEyA_&}ymSJOoK$=>{5>_OL1huz zk#gy*!g$!!wwlW#`Ed#2p}tQYBa^MXllu zk|i*4e&w(0Sc7C~r7W8({}utuH&;8vh~rb4OGbJhj<_plo2xB1WoB^GK}LuJi=K+a zC_Ux#clDT%G7jdnnhXiQWfK<{2`>T>{IFj^W$ExqmJaxY_`CWmrz00{l4ZXuQMr;k zOv@};xY|JFZJ86i6TQ3r&y{kEh!h#Wu~kEZmyuF+k&n7b9mKOyk+e6Oz?_^P8Dre% zpKF|F{N4Yg(Vp9?@ZOTvg_T7Oi_R-rXx{Cd?A=K`8+k4guAEEHqjwQc8yA#5W1Me% z!T7TIH)or|wuP^H9}2!=ezEk+tagR>d-wYf_z(K;4km)5f-f2$^j=W(wzs0PLt)3l z=OYbrI~8^=+)=!<_|;OGD2>rSB}g@Dl*4a6VU8iRPkOu(&#$e)O^D*=mkf=aUt)wB z^AAcR>*MBj%B|lv?hA9)2Vo_DITEdmRgTY`klCvcUt{gcnC+b7jONAioVhY0ypo>` zeTQI+$E{=?PDC@d3ZPmvDYGHW*q?Y?d{qLkL+4eBqU4^G_yQnKMagA}8&!&2U7%ua z`fTT#Yye1t&C7ug;5Dd=DV%YBW#h^znVFW>dGU<>&I8W*^s{u6%Bh)$oPRhEJD;Ov z#5iYCeaJ4ADqO+s=+Vr_%}?<0zM3ax#O^phLzi)OCl=Vea$upT%bHi=*3|qz_O1lJ ziQ@ZDk|t@6rcK+lG)>c{>5-&u+MK&-5-0=#xlvA)8{`sCzzZ-Sh$5#TM?p?SM3mD5 zFY2u*hcR{?LE>v7gGDnKy4{-n@A;JM(>M?O>}9b6wUJ zwgw(D`Rmo=xeGo#$8SlF=ZJIc06BhxbL{9Bj3CcZM4WSB;qUOmo&87o;cv8XS6KK6 zUbq`MGG@$z* z+4e}FlEEJ0mm}fSB{HGqNSJ(_<&nbh5H6pyjJFtXHO?{4HSTr(4lklDH`W`&1+5F1 zg@h=`ET4@R`LrqW5}8POZwKEco-nvbWPsJ+Y3we01Ja*WUR$?cF%oMp zxqzR2Q$%hN9EGca{wh{Z_9P??#x&ig*sd7t zUu#@vye@y3zc6#S{|)CT|2s|*mZKrd%DD8fNfI!|U%@WIa%TL5>&saG9`%P#X0(WG z%=#kCpw%%425c|zda%{F&A8pT!?@Gc)aZLkP!aj+=x0OUupIqf% z!#@G$dAQg2`2f!G9EM@G9EU5ZTv=Pp1BIIh7}faJ}6V+HGaV( zXP!5DR5~2U#mgPGCPsX2(zZg|wZ`-ejeB;lY8NQSKf@jW%1YdOc4?Dkce&;;u z6d+3@?ijK(Ll7WKBLakf_ecE#WNFkQ01Du%6MZZhpeo>12U}u z|I#_t|AX_GbEf}h|1VBQ{?&zo_v5I}lz7*Q)H^$|V{c9D*g5fzB}77TC~#rs62eSi zXAXPRc0TwsADB)$r6!pv#UwW=Op@xe@$iihyQhfQXV>|d7W|1HYIXJ;WYq^L0aRXo z)49_nuU1zt^b;A-rjtvGfR*I?k$(7r7!l`Q3-~zqi~YCzch@x3JX!Np&C@l<+4Y~@ zfbsDy-uESsbiai4{E5QI{cK9Hui!Vv_ORJ((>c43zIqA6m7#3tvroK-$P5Qz2EmJb z?(hL+d&0Hb)!=&4btLO3Z{gQKYnKd z7S=$=lE1kdE3nqz9d9*rb9bE|JG_m;yx8Gw6#8c8)^x7f=ju|^wWeE5_nICxJ!|g7 zDs70uN=wr3g63)g|H&o_M{a|^SJrt#k_K$3x!b?7rcHHSb=&IRHSMY+)g7ukSNouM z690^V+CZ3Mv>c&^-2>|w!!tzMvB}>PZy4`PZuEDpzSrNgdQn=h>gC{)csaI1h;ry? z3gx~J?y!1Q_lJiF0)L6$B#p=-lF-|X5m}ewLU3Ox>tT!oj1iwO0Iz{J0o=(PkwJLw zbR4gZTYZr3k98k)9e15@rMdO)Oo#@Ujsme~!oGjS2*|AZMSy%LycDLW>Mr7>L0wPAh1##mEivU1CO}hVf z9Nee;-)3jIrpT7*vRyaGqOw~Gm+RV9ewRI6b|kxA*HydE{)&Bt&R+C&`n=TnsS8pk zXQrA}<_Al=Yg>?TTaa+ywY4DOuCuPUzE*ap^)BlM>)qCk)_bg*toK?sTQf86v)*sr zV%=&TS^0X|5^yN}JZ*1nA8lW4KW%^Q1j7Z|O!FYEQa4z;!m!eChhddrh<2!UxORkg zongIUROLN}Rk|&Pt%k?*cNlgWwpq7Ze<<2!+HTrm+G%>g^q}b>)5E4+rbkSVn$8pn zmoPdv{3H0bXOrQ<5pHw9h2)ui4!DRU5uN5~vDC6fvctaXJa zik4cJ%j#t}7OarXD7ZuRPhgg}AeJAny=Hse_J-|E+grA`ZSUC5)J{L^f6nhVY&3Zc zUPFz^W%3#PhI>rI3Mm6^2pDP&LBl4~qxtuhh74gtYeO4Do#9?nv~XJCW>cD3XP#a- zvS4OGx;ewFH{V!zpXq+n7Sr&;5ryfN42#~9X&F}8&d`Ed-c;1`Zxey`;I{_udbNF>Z(hZghKV*UgnX{Ot5w9QBwm}a5vHrt}4;c52y zU-9qvCks;Zs{erhHUD29s%Dd8qWjD?=`GIR*|JeD0AD9stOD>&B9Sm-o&P6hY)j2r z$2!Nq`7H4b|C@e3vetjkn`<#=EqmFs=G<}G|LolHe`%=jvq!>icl{UI?dMBhC_Nh@ zBDUD>7FV?89P%IfW_07f)OMe_vBK?l1PsJK=sPkiGUf2YKDu~NhwdIcSN5JCg)Prx zi4Eu?9uv0wegFSc^Z$YWuMddZV*Xpqe~bBVG5?L;S2`W@j~gr8{Lg?fZ_&j)WbvaY zya9KGd6jfGj33zGX)gn2^tQ6QjIJCkYoiTRj*wZ4M#^d{pY}wwcQ^*z2zXO zCyT6}}n~PxZO*cIc&q_#6KR91l8}hi^nt^sw^Og^2t13iiHz9lT}V zwwk!`&fm8_EVw97?0>raKRN!w2hr?0&wjpru56yH#J((bzU+1rinrR_%XQ-Wpa04= zl$Q0TWxe^|tvAFA7!E6<@fR?1FbqBcVZ3knC*iHf|Ch7=7GsxZm|SQyOex%3wy*4! zvi)Tv9TRP@mK`XYWV_mSjqO_7b++qmlUpvGwA?uUhhK+$=YONDmG@!m`(+=L9nNmZ ze=`56{A;SOg)tY00g>yD`kRGZ=ZU?^`}?bnfZH1rE!gu*?4ai^*#=pvL1id({qNp?{5v<^Ew(Guo8`US@NasnoXmC+rmE$z zmvPb~;1k|Ig;pH;rx)}7DIySPpRJ+S{`cX1p78(bZwB;e_-}+BJ(VcLv9(fgY#nLr z;Q9~2!L{&PE9z_5`=j{Yk3s_a_$q^c*^jR>`0@2mKcLW6AQMmKKfg*SLec-ftjSX9 zpSlcmW{2S|Yw{De-L?kX#g3txr_}2{HJpjsKr$M|2WES zF;)LrQ}uUjAI?^Dg@1X&?}|9VXdcQAp;e-o##=Mw;CqOZCph(%gCB5$3LGN|#c@Ji z6qY5xDXr|+0urLKX^58!N=c>0DrypN~c=<@Y9EJYB@4! z+L1wv^%`OL?^`eKe3La+e~%}Ab{ee4Jn;w^&l`1U#Nko$rEx;cp;m#*c&8QRP=U)y z!WAUpN|JCDNti$qCX$3nB;jh3a1BYgmLyz960Ro+lS#r9oG>o?lI+&7)v=TGC`6^t zq_U`N%0T5%xl}7Ek1|sEl!+>!%v2#&L|Ld}YCjuw3LU`14l9CNkS}%1-3N7tbj5nB zzC>TDFVmOnZF;-jp|8--&$3b%R)`qTUPkfn6ly#CY7vr4q8~B|k3~$_L7a(A{O=Hl@5`h4LL%>{Qs9Q2=sTvFpL7 z?mrxVIzUBk`WNc2)Cbjv)StPP5?MtB)h%nava_UnR*$S!g+y@_Orj|TBcMJ5DIxle z{Y1bG{7glZ_8C~Z@;C+_j=xMfZvx6+J6@Rh(CGensz! zJ{5f{`c(vM11hFuP0dP(1khSvO9@0~!ULp%AhjIK;UY;Pq6CDf*{WNGq!bXQ{ADBb z=bLB=HUs$>XMU=E#W@unDmqrQDVBR^N~uwKT2n-JHB^|yjQjWy?no(RFl^ODWg3k@ zR&J2n!cp4G1zbmYC7>N7?N21Vo=AFwB)yE+n+ofVQ0=K`#W_?5Do68Lp@;+>VRbLz zj5<*_s4?x8g9ox6%sQ8vU9nskiivAPXUJlz8q?G+R0K@NXT%;hFg(&2*idDBrgo)n zF78GV$tb)^v zhmFMusF_80Ge4JnA^B2*#%v^Yu~;)lB{p+(Vl&6E&0LB%Qx3*bUrY8%t|+VZh>YAg z$a@Lij7uPCRU&CMNt(i%7X@ri6aX^R;Q(rB#V~3(HG&#XwfB54`2>8T?CR<6xsfF2z{IqYXZ86!CDB^zl^pe)wOAfO_-k8 zgd3CT+Kk3@Z6@SR=-N#bp+$VO%d4UOOr>t1qSUOo{sc4^c)EIed#1rDgX|LP(WL-R z`KQ5|lqBJ+WC^#%?0W*Mw^;Q?(>Dr0e%x!E4hDOMcn%i#koJ`Jl3rvwRD8Jjd}(iK zA8B7{KWTsI1l>g4B;764Z0c5O4(vNZRIcw5MCB6*QTYTyR4#!KwH5S^no zLfPH07@J)alSr76$u>>0E9SH%bpBZBIH_P9Q$eM5DYc=j#_F=Vtsd*;)e;tzf-RXW z;#kvm7ZuiJ@M6+ZX@WRh2aAYP-YywVMcmEKKODuX`RMp)fwT$VFaD|_WK zs!Vn?jbPdw<*-+-h_Q%(n>po(%~3#Ls_=_%Q;}6RQv{0~*ab~590A+Nkcqc&5`sE7 zxKQ6_bFL3Vh=5!19O#;$5#~fKYCs`PImEE-&^zu3Luqne6#O3*SO5b&GK4z#7h0$} zac=0}kT5q+s6&JtFc06|q1bHmNs<7af*eGmV1T5xT%Mfml6JR>Z zaWKA-uR{bCIGllXp$aUCj}XcLmV>2u#q|pAJd=GxL9w5Xw@_QDak5KfoeFMBy-aqw z>^V;-?NsXx)~I!wb-MLN>kR8m>rK{K)|;)jSZ7=JcwX|n?732Qm284+qHK|MR_e{E zZ7Xj{ot>(&e3Ly%CieM77`v^hm!P&$>r+#7-=-fo8(g=TW}DRJKg@|&pk~W{%HHc) zY~AO%-P%z0WZ8~p-p$-eojMATI8ecvM9g@AdXRdE`pWY#wTo)(lgpD-|H_Lh@hEOj zQBPAjhFn9d76_cb=}p%&)Y%gmXhdbQi%ri`&r#1)OboXdsDD!wH`e@I8$;x5uJJK? z^Sz`2I#*lfI$KQ;eu*hd#(3VWr&}K1hu{~3n&#;a&3NAWg7rPO-FtPV!~0OGPDije zH{)bIk(mlC<5!d@Tv1+?9gtlI|El3{Gzu(WK*psxd#O;-=#0y9!bRgUF3)LQbV){C zQQM*`bDl9>WAAJ4XP;^BZy#X4&vCzFi{nE3MfQRALH5D+t&VMu?T%~QdtiUu1=(p3 zO8}6&7%Uo}vyUn?Z>XFmamH42wzGI2wK4_Uzi>x%X#dhjz8~(=h;p2pNtA=9as6`rvhQ zjj0D^S&z9NcN59Tw?*V>lC;=iXhPpiljy_~)Cy@lp#eE)Z`jwW-n73rrDZT}sqWFONkb2kt5%n?k z3H2%U8TC2kHSbaNDDs)VpbFp-bwV6n6 zTzyOR?COPSw^q-oepMAP*P7pRf8_nx8#IT^-Alfr4pN7x!_?Q*H`KROkCL7xbE}U~ zN1@`#^n#r|KF%r0lb(wORTj~XEt!mK9#`v+GJd2!^}6jM`_JRhx4s__4)+t)M$snL zK;#?42FhUrf1r+01B!lz!p0BAnIz!^sE8eni%6taR3=O6tmrK4epJ^9>R0MFs*_o* za3m|$MbU*U^#?3yjs}Po8vV@}#?xCv{1d)JM@r*a>N{6Hu@IMoDQI zokGiL1+Ao0X%&4`rB*QCOhme%b$aVqFS8R$2DuEBYv_K8enRGoIP)J=#~`~4k`LO8 z$rOEnVt|mPCeBhv->dyW6?BDMKdaJdwIVh7EK(&;QYTN+B~MCEo|KV1NuNCF#$?S` zD`q55nwcy~saMA8VuvRScAB2fq_gNw=5ZyLl#DOAwB)jq3(eWIfzF|G>G{>I=sem; z4^#{k_B9$lW}cot~>39N;ZC$cir&hF0p42W`(on_FSZ(aGV}zoNm-jI% zt5T~}RqCqmyhpr8z2AF(@E-G;=|Z}QmaB&s4KQ!fUSPh^yiNO*?jrL*Xk1LmySyM- zQm#H%*m-JL^^GMG-^`MmN@kVZTvAM1>03+GilSuY)e2j(q(Xh6khLDNw%czkDW&I? zc&swt{E`JF3rlV*SzMjsllydzGCISdRy>@Hn_96edD0`vlO9c;v^#lHL-M32lP5iu zENQ2HXDo?T(LC4{&hqN=Oh+4+jjnUq>9#Hh-Og1(M_j&ge|fH>y{nQw$5lmla5?FY zu4=lI3$P!c*)`f0-ynux=6$Ml$%o!5^G`)zQr}a*P`^_r zsqgI)T1{)|GU%(;jG{M14ml zNz`{_l0cBBcq7EEN5^>zfn$s`?IHn3w2aZV+b>NsJQ3sAm5_RC1BvA*BNfLG7m?TjL z4kd{=aHv;(`#2h$=c_R)SBd@3fhmu4bIELk5 zfde-L>a3^($1oRl;Fu&)2aZV+b>NsJQ3sAm5_RC1BvA*BNfLG7m?TjLj!6=A;82o? z12>EwPLCiQxRLb5^eB2Xbl}F&W9e~X4jeO2lQ?kPbWG~NF=C23a7>b@1Ba5D;lN!+ zUrt}q90!i6TGW9o!o(ADiU?zm?TjLj!6=A z;Fu&)2aZV+b>NsJQ3sAm5_RBE65+t5#~rw9>Fen0>B%(XwoRd@(l^jinsC-i;gMpZ zo93lCH?1|@jy{*}M)#n+Gc_RX0)>0mGO;!QWaKD6xMS~)q<*pRmb7$f;y-Qs2->!8Q@pfZ?4~6f4EM% z{&WGi#4UBp+$nCkTj5r^Q{5`J;2=#>7lju-OVj5;KTIHP6mptR+rc*=g=dToH@_tb z-;snPI6(!Dl7#O`!Ve_j7*6;To(LB4a-@QV^lkJadNF-Fy@Xy$FQY{ov>Y}_(ATIz z^>kQeYdOB2mlJ zDSQs_VG)*OT%bItUz%|;V_C)=bH~C?g;!NgsPg*e&@1UxRcq;Wu$8<5IjIIhG+H-&*gJD-A<3w>-0G%)m&XeI|=rt zX4xl~fRPq#<`j$R-7ZcoxQ`?)2lwNoI>qD^<`o3ADa=@hOFKKeI^UO%mv?uzE$y$~ zlD9Q)3%!-zMkkE*i}LMaW4!~8^$1+^chYriN3sVU=*w3x^#k-k^~UO5c{ANavH}Pb zBj5w_%F-5oafE_{v{dYtj}(5vStE8u=Mgw5wW)#um4HX-%_&S_WCfz=y51=Dr`pf7 zpKDVTUueJ7ex*IAeZ~A?#v$!t?bq6GwBKsK(;m?t)%tXOosZEU`z~@G%=pCjnpt3* zI2-UdtnOa?lF}3OBK8|#4pUthR=w*1f~&sDHN-tsJxo2(b%X0;?NRxvqW3d2nIDvY zSbi}7Q2ycksOw>R7yYCBxcn#i&vJ>PkF#~nZu+Eli1Ud27x@qJq0X>wm~*)EQuSr( z%hj!QFXw&X`_lK7?@IMm>Iv$J>b-gU^4>B}Qjc(sbbjj_<2>q{s-EsLq~)Yt?)=_Y zt|>2|)0mhmB3*iySeHJT*riXMNtZs|c$Yqt*rm^sUD^p+x6|#+=l+(?RDrGdTGESM zOIT+>4eyj$6f<2m#pu!*>M^BbOUIS|>=V(b7h&_i6n?glfIY%hg_->6@cZQz z;T2j?kcMe~UgdTu1$v~0CO=&Jq~ICXvo2w+b;zWz0nA5-! z;!Xoch&v4oLEtoSgt*hd5#mk*M~FKO3_;*DAVMlQK)*)6PQO9FNxwzEO}~Sgs5+)W z@4^OUanB;qY?Xlb=qps%_edRdu$E-}2G`$%`YFy;RqKk@(l66{>3#I8^!pf7SRVD# z2axII_!{>ieW~g)q1UGZAJK@JkQIkt&zi=+4!>TP`9}tiUjG6;vh?E8QKc`@AJa1Z zNgp%KiOT;9{Q9O;s|9OuGc5CK1#kLdBO>$f#ji{7QJUWOeMWyyGc6!8DdFT7CO@6# zN~Hm#<8|orv&1Mh%8V(-efZrDE^G=a{d3-Lc|L{1B*~U$-|YN7Z?^L*wlbnndaSbK z+2K`A{`Myn0&eT#*MVcMJRm|_<-}KmY@(_gdF5QWi8(WVqz4tB&Ra}@PV#H*Au zehzDoWKfKH=XW$gh7aH%F$e6#i>Je8JrG}zQ8OXoL7c$By|NVqVFhAvuUphd^5>Qw zvfbm{AWvtpb2yZlbZbB#aHJ4$bJY**i3bc}ve*V*`E z`SJ3f%5QK)9n&050eWS{s1*fz{kw%Yre`{vy;a0t0e?KJM|#inro6u*STybNO$9s1 ztgn|E*EPMLnMyRTKw1lbB;a?tf660xoSG2BlhpT_eqj+f*cno(?PNZWVbqd&91Ok$PvRddKG%yRF zG@u2)2rHKWS>PbN^)GNYcxC&OmRF|)7W#<{NZGig9MHg780J7F9o~Vz9$p`enemvn z0ts#4J1+qt2i(jpzFeX8lABWEFIJJPZ8OwayZLQA$|ncPKx#l0PzN*tLEE?ovRc@- zCvaiX0*}MK60{AT1Sl7}Z*$iJ9hrol4C?|a@C@F&^^#|~r?jvMtYA6dIj$nkje9El zX(34l^nuJkR$#qkh9cpHS`L^gyxbrG=>WDrG2e~&gX|Pw2;>BQE6NqNp4-5*f~|jE zD1ijz1)juP&p-Rg4j9QqbcGR-_uystOP53fx^ziE=_NzxYudfpmHro8FS_=)UUCs^ z6A}87zx3jnV19cP-i|%DrgP0cSC^WuHQj2u*Yv3AS#zgfphln}3P-mj-2yvuLF`B> zW_+V?4i^UqsBaXZ(i+%UbBYL+C4sKh_xgKQFG}lGtp)q=(RtMo0k7aI?_OTtky@dL z|7C%4vC+0cAz#M%*#j@(BPWHr?jVU0;0QRutGr4V!D^UuG$%M9PJT_C{JJ>#4KcDC zyvdWfS)>AQ;d3nl-o`s50^T7B?~;V~NW%MZLLKZx_(bxf#Hv4pJsm$vMDhdzKWl}` zP=|=CKrQU&5Ac2t2KM9qoWF`J?8Hd)e{8QP(grpWuZ%1U|;Q2B~02k|+Tkp$Z=4h2~Wd?uBuVwn{BHOp+qt>-Z3( zeuOUUHzeU(obVMc7d~X2166@8fv$mWf$o7G*pLy$xDgU7fJVp(j)=ADJG^oorZ1fX z=dl$tT0&%2vr55dLlqruj3d%Oq23XhIgWfbM)V)VM0bK?V&n+;5%1p!I8G9N!U^9u zCUU<(|Ga}b1_y=&2)4~xxp*ea@X!tl!JEy`{r?Xh3l0x7FOWmaW5Kz$ zdA9ks1-6B@+iZ($zj#h~e)at3`Q7t}=cMOP5AaI7Qm@Rr&;N>lzdyw*_bR+fZ>m@2 zReLpFtvAi9^QL=W^&jxR=HG7HVcThY!1kc+A=|^YUA9MTkJ=uyJ#K3n{$euh*!OJz zbO5-P$Aa5T+f6%6J53Lm9yC2t8M{GTbeT5=-L8bBa z{dDd|tn_mr;}-`Ku*#eB)e&d39DFN;Zj%7DE&_gyFVS_dJ@GiC>_brcKllzEA6K*M zJp1|fxw3h(61#ZZzLuq>Wodad|Gv_YA#7-EXk(}|+-v$bE-hmMV*^{QBP(AoTLKQH zpQr7u?W66h?WgUponW{?`_IQ06<=J4FI*IBNSQ<5zcM^@lRmI{;Q`lQ9hX|XVq#GZ zv>0A>i{WiCye)=zm2Qh+tKsqd9fqBTZPxA9ABxV@t4|gYLIr-~omvrRu=ZbVlP(J^ z(I3nHF`I-XYHi~YWdA9o$ zmz%G~K2X6fLErAK2_#%@zBWMIUS=*gUl(ZPaxTT44j#M0i<9rOSrVWEYv5PQ+RRlLwxFu-zw-pD0Ww4UR&o(!j4t@C0V#<@JCMhV#`YF= za0?Vi@Nsi8{O5W|V5LJL#+W8e2X(n^b8ijI3Cs=53(N)czmF_#- ztK3zlzRH(MSG!*>t=8A*U3$c97S9X?^Ew?iiy#}pKqIVAB$F77ClS<)7yop=&58s$ zWBTHBmRf>@c7}WlWP9IMO#@6oa?G+n}xKU2uC~ zNg${2eeePJ(D50VsQdyfEfDgn6XAzmB_RA#oX@fV&gD%ggcp`(rw6)B&9whLcMter zp)H#fWx_KtNjE8HDQ{NVK`P!JJ5b>SE|eM@LV=qF$pWeg; zE%4&+9hOy=)s{7uwU%|3^_Dv=cUe>w8!UHQHd^knY_i;I*=)Jba=&GZWvgXvU|nE+ z;LgBZfenFemhBdGg{C5{LU@_Af!Pq>4R34?iABLf0~kf)xG`Xctw(c7&XADFTWPr` zP?=81RCLBNiAZ#BqC}fXiDY1<<-WiUB@sFeMMpuyBo;soMOq86?P8nC>1sU~k#!IT zb-WNZ7uh-33;OtgcP{Qy+_kt{u`|6oy(Zn2p62OZ+@pB5MCWM_xwV1W*#XkVi#XHi zyqfeB`7FuJ61^wW^Bv^fNi5@ZppvI~7H8F#1*j-NLjA^@`{NSeacSYl5s|#Y)H2Knu_f(218H2 zZ&y4Ff}j}>Ita6MEJekkVJ&vLnI>n9wHIp_jU(F z!tXT%o(x1Qo(eo2ND_YU8OVqTzxQlFH2mIkfh6Jgo`)=m@Ov)=h;Vx7n2echF9woC z+j}uUM43Ww<(M)}e=D~UYR&+D;CRiM4vr~*R32CUq`VJi35aDWkea0@ltogD^bMHB z&S&AKKGGB-iW3Sr#Z8^&1e`huYd}VmRbOfPRmdz{stYT@|va;o6^<^u{euVNYg&oCOHNH1a?Rid;UM;;w zdad+2>3i-IY_nK4{LIx8@$r zCe6K?&6@i(_iMIjwraL%hM9(&vX$+Wf}xXuw*uA5niz>SYg!<;s;wI9jP$ny4`^nl zKd8yE=2}}>Z%(gb19Y*&&d-X;ns)+^X^3QG-7!nkK#fV2q6io0r1%i&tfMxJ67m77L(%jx*< zTtKt00|eXVT>9q%lYJe~v9hsBm=U*3E2Jx>cSu)BS4-DO*Gkt(=Xh$gb3Kc6Dv*s2 zWI5z;FKi{+`9+ynkzDV*u3D7wkhFufqxBK#H$}@lovh0}&r16!pOYR5v`IabGR;2S z{&4!Pbi`sA&%zMfpCuMv?MW=&7MGvjAx{TuJ?lK5fNs{erSC{Pv)SUx%^Tp4q<4Ah zLF>Yd*R$F4t@L~84^kqN0?xH>r7vWoq+>8XAY-1{apt@WE_MUj z?^yh92lL!tL^0Y^|#F$)>;zE;w$4VL~h3BAr7$6(*m@Ckw}Bxo1&E zNcK#6m(;L~2v)`~;LQnHX27Rh1mwgCbx;J5^l{7Q{_QXXS1z7A0$Rlhs5IPu<;Mwi zQAkh$6F&_Q!DtXXhmJyD_1qd+ZAvY+`-s9NuOwYw3xj?d;)_8PcAug)2Ndum)T8Nt z_r2(UGCCLc{rP0z&j5KD2Gsr=p55@@i)*#&i~eP%p(@7 zOIh0zt*hnqd!zLpYjdx~4A!nNtTfzVSY;TZ9jYC!9id%kSZ^3rd5>Y0uBlh^Qfrev zxoP4xnCt(BYcOZ05yCIR{0^6~kTy`=b%?652yX6XP0VEqby zd&(Sa43f`M>R}e-DzIGmrIyRmPgUZbr6eMPm7kHDkQgJ($O@VuMX^VCkQ4#t_+koW z2B3iL1Ga$(;^?}{>nkT$PN_U@Q>W}sZAjImjMZvW(o!;OAJjdh)1{=RjMF}ndBiZa zk|>-9np!k7B`amW^%uy(&eqQk9Cxx+530Rhuh094PLeadQkLWQPOYZA6wG`96q*&5 z%WStWUENPLNdB7jb?f9}XUZ&P2xe~JGjqO;-NGNYy`1`%^&RWG*7vOMTR*Vsa^|GW zO%e81d&uG{o&~q*XIP-~x{s}&SUbo&%0IOVi*Wp$<> zw0>tjV%;f;fJppm7c2w7a9BF-q44MG^`NhJdZn?JNJd*uCSfFAj?+WV1s;`hp?6%$ z_>{3Q+Z9kUwhx_gJ>q26KM;ohIDKU;sXp0NIE{muHj^$+XEsh^}u zN~9&SlFw2*AfNNLF3s~5SC0}kGSI;9BCin^OyaKl<&?YtCZ7XkW;I4==fd*V@;351d0Tlq`65sXGmhai@@L4?0n)=o z-eun9-g@r}?@I3--c{b!-ZkE}-gVyf-aEZ^SXA^FZ93>FN1(=GIT4nR8x7Pv6wa?2 za;V}f=MFVc@&)o&aJ*P<$Hb{0I_Y{%4`dUSA39u+Pg|Z3r>Tg~K=~l~VEGXFQ28+V zAzU~3v#RM3m<`BxMH?cw{Zm?Zho>RSA&c zMYh3DZs?SoHI`f-qmFwgXTSGV?*VU}s;#P>>Y9w#ORg>aQB0xXKzWk;~jQ7CltxR%Cc$D-y={p*3rcNGiB&#FInqGY$&)eiN6{MYhJ zeZOZO!4G#it6L8$e9!5g*X_~1q%Fz~Wxt^N6=v)KJCdDuTt+nSthpt*^D^dVl;+M- zmgPPJPwfR}o?q{#1Ey&zV8zca2oQYx8I6q?EPjVtqKcwsjD$EtAxM1#TC`3&IJEP4 z5AkT{=hh0*^Rco~SayCK4<444G(;hY5swGorB;XrPvE3;iyw)W&ZDt+uI*Zjqp>6T zpvYPQ8apl@QAaW?_U7#6y`!T$t6Ul9#8!ehv)W!D}WOEDb z6}An=xB^ZGqrIJTyX1Dw?Uvg;w?}Tz++Mlo~1Jz6-ev)4m;UnZM~5XWpKvC~R$SW1n39t8TveV_YEq;2po(byEMQ zet9OyJeg4eE3Sbxvd!anfz!dy`hz8hN)DHN!`dR&;BY=oJ-8KInL7vUsM=ZeK-CZu z?;gSDpZ;O-aNn_H7I0~+Zm^LTL77wFZn_cM*Hf`4H-{n zJeAQK7U;tl5MCQdEFjD51G5k1v-6!u@?S4`F=L}-b*q7}z{Pw4&PhT8h4Wu)ekFq` zbRgqPSZD-aD7jE~no*IgH0(0~=ODoyebqqMB;TH@m#YRk200d{eN$G>W@X2eAFykE z*ZHRSrutrKwZGNq!X9`wPJnuVXM4TsovI58FD&ebXXmzl_25RIGVdmzCQqC9QB_8s zJ})ybD{ly%nHM29uT@@N-se@beMNbeys>yTZc#xzOY-b_m3f!J3}M(wY*V-lsAsG5 zYVurpSHKJ%VFp$?IjK+vS*bT~O#aw>e;$>WQi^W2Tn#e|&NH|cbD2@bP@b|hr8G5` z{d${80r_TvBd)INrTfo$`9-_sTyn|NQ*(p-(pSGIP51fcZi5L*|FgyUdT62jkg=GIQCPxq;@zkfvrv zH4KHB1s9Ekf;?$n5u0^SWISzt#{7U8@qPn(+JZd*=cU6hTUAG@zOQ;6azk^B9atf^ z)xP;f3yKyN-Bz@yXmQaR-&$z!=Rh+h;KuKC#=&kEB=8m(X;6PWk(Yr{**VFQug{yD zH$879en*FAt##_0mF)AW`1;6MyXoLwU#9aDkmbyFZuM>Vy@20#D2SWI>0p;{XZa(( zM}2p=*Hk~|d$Rml=|klYm+vZnqBVy1>sGfs zOOZ9cU|nHP_e9I31*usov@*s#+Qi@@(`tzd3Yz7X3B!v_tF3`;Mwgh;{Dwc=z}qb@ zyfZkJ~tPmdUoxtwM~n+L5SKJ9=e?_kalxp zSTtQo6}(c63?LfF*bfJ;!fwF=SO+%_t}?H7Ng$F|sQ4hSeVR>SQGDnqR#+7?)W2k$ z$oLh;UHCoYj|^SrQGZh-7_cJv*^c{XDkp*uaGO9p1VIotV4QD74|Pm`#JxY{1f?`T)pwB%xxXv`9RtsoG<4|)r0o_PW~?b?*8*3?|ajt#%adQ zX}$eK1PAWhQ9Wq-#nvC$8d=|sSA1dfkF%Lrzm@x*fVy**@fPE)#yQ5h#=Xwp;epk1 zW4$q4(7J#bflr&loroBbIJ32E+z57v`0BSBw;8t^cNljXA22>>e8~8)ahLHCax73>v;(Ie58tZ|%O?S8Dgya#18$krd#iT5I6d+N4n= zm;pUd%SVwQLI!aAS)>?^g&uH04@jU7{OsU7Od^9YoKSxVPa-JGucITf?7)M&RuSNh zJ70CM4}cr5Sa`O=$oqD!JMc~|1AR|q=1|`eP(70kp}t=V2S^|eufaZ8Ra~o(a-}N~ z3H`+PKz2ak0{h`Vu_?x%Nqkg`67_8HC^{2I-TYDQ0K7vIJCleSfDe*b>;O^Zf4r}F z{C_4h0qT!u=Ar$W%mkc1o|y;LXEGnhJDBs-P}|44kGhV#PPo$CdUqzgah2oFb+>Zo zxgBl-_x{Xo*7HdCIUv9-=5Y36Lg^6{v&jmOz75 zARMo~4kiF%TVEUBkDVI2^mMoNKhz$p6%S3wZtSVQbz`4ceFU_Q>jdf(Km^i3kN8j^ zou7nWBxpcu!z%DIbQy_II=|G4gwi=d5+&e7Z3G{cUd=B z@3#JXuDz>3JKioqvjm8@+4A_?Y*`R{-oqI7lwiW^Y&j$mud@+}c%6+%#OrK%P~>&C zBB%^TD^i21V3OC_YRHIqovjIqzRuPLlf2GOgDi;G*}7oT*V*a8B(Jm6gEgrxVHjT- z_`~;U-e-C6!f|{tKwS(sIPK$vIz-?c4E7dn@E>q6xX8zu!K`3*kU8Tb#GwCH7eh<{ z;br+)#}II6e>G6!*|JLJ23sD6y;8QnY@}nN?bWjXB3^RKI+^MHYk(WiisxaI|HIG2 zNMnRQ5F;$|Uky;%Vv#@dJe~PW=Chg4WqM4XdweFpi89fqFFap*x>xq7TxMNveW`4} z{Z;$*g|iE9Eo|AjoX*bWnEyxrC`XG;{&(ACb82DC-G)c~=*wgp81KBy=}fCmt4V{$ zr)i!vZ<;TyZ)v~M{-wlqqOL>Uv%Sa}|H3w~*TKYIrR9ihWn zSOoX3U+R{-59$u-iuG1~iM~`{rZ3mq^me^NU!k9$#fK$$zGhM3;=(bOv6dx;OAD73 zE-xHs+25tFS-Fd$v`O<^Tk+D)Xd=X++cTQN6*X1wy#iI>?mdYJe?k3O7IG zh45C}LKaBMDEFkDX&-~Q+8IB9B7jJX&k%?-5KID(S__Zb2zbj^KzaB2fxCFz~9Q;MlT8m-&FqjBn!rs|Z?@HHFN5L#7Z3v8n=HaI+BsUE>-9 zS)en_ZaASki%_VBiBSd`txvJRvrsZGYkpS0;{L@0io>P_Svj6uPb<$p$A#6;*W`JO zo_vqVQ{d?oJU7@mNU&%Hn#%wo!}f;ti?k5GMZ{pkZh%?Y8N%FEVmgDzWoRNgEOWV$ zDU8>{8f;-QLY5UkelQ>Cg1B1sDKPu1#iugzC0iIWi_ZPofe4zNX;z2>1#;$Q_Dm0avv6^w3D>R=L_%!{~ zt29ncwWdb%Ua?E#)_62mY6zLLp)N48UQI2nm`dG1MX6a-d(ZchPrxV2fM#&8tLL>W zBq_py6I6L0%Yun`s7ckFKt#o@ zw-_d>9dySR&#}^RQo&SLflBLAYC~C#)n#>CJ=Uv&msb<`rp(xAGE=~C&}0g>A48?PP3j7Y3CnGauKoy68e;Hxq(!ZhTF;NkuDuIhC+^aT9S>&)2xFiJfn((lj(O@3tbx>>t zk9oPcsx<=i$}6@b*mS5@0xdQNO4{_o5zqto&?BH{oKOeb0DbtK{Jm;K5Jo7jLxc$6 zv1VDqj&#;%Lg^?+FOunbaRQs;{5YWwQI><=#BEYV1iYXk*!IB-!TamDQC$xD5nNJp zK!2Q+4syVSiKL6-qz2@RrGo*63*w|G^4c=Mir~s%4j3#XqntTlNSwqL9%vX8C&9w- zzGHAT^eu;y@{hpf&jBOj#aK?m48!B37^ii?^-ze5g+wGo1dNI^2k0jPMw5gwBw;K` z7#AnhAs#Al2`*p+jF0C)8Ayy?{XcMJG1E0CI5(K(TBgf(-5`s~ZYf-@+fuXEvCi>b z_H@~i?0Q{S?LPY}_7ysN(bwtoQs<{GNS&OSYF3#aEZs(}PfgK%n||CpFZhS~`O+6k zhZbH}IJqXrH9xo@NFwv1ubvBow*?N)iI{PmxwqWzVXxn3Z$@a2suWg_0 z72AH>tF{BS*KDub-mtxCd&~B=?H${@woQ(S?*HWnzeT}l;k3fdrZlt8JiTya!OVhm zbB0-OzOnE=)BUC`rs0Jn3ezna7QH3YGOV(lq4AG$i-VaN_gU|^zChg`Jar^F=CZ_+ z;L_l-pb$@Yd5}ZYebn%n;c>$ghTVn+!;^-m3{M*x$Ih(}w(>q~y(73LxHfoa@cpv8 zf*XQ&2R8=q32q90P{;=uvuG{M0N}7Od#3dt0;3-gAcD7Xu<_CZH{MUj43jn70JrNHJd^wEhkPz%s@Uet@5B@y-SaKQX zk23GUUkEOg-6lil8?ZTulmcE1Ug=$(vL@we*)y>Oc*cnmQo-uVHI-{C-%NQcWk}B3 zDGC*VMl2kPJ;ABomx4rw6xfkW!eq@9O(w4_3UG1GsGQL`V{^vkT#~Z~_U~Glh~9|8 zdeH}!V9~zdKB~~Xp%Nt`Y2%4Ay*GL1ct_^!3vM9skA(s;2X_QOGTK3-kzJg11@|2u z)(Hm|L9s5*x-yYS03f475)K0SwczVP5;a)_GdUxUnVhTuLQNK|IQ&s3I?6aTZgSEc zFo&Gn3pSCRZ1`%Hh@Cu<&no=J(lqqsbNIr-6)7oxGCy3Xp&Wv;0E3x74?!6cFqHX& z4{kyWQIrY5WfeR0!Yl}AS@7wYHxQ^gA=GjN+!KG)Ru_fMB(RqmKrU|O7e`-yFz1t? z82&QBDlc|`)jSpigfsIXnK?xvk|eMf0xX~n`!rG5i;343h|J>G7W#-m}}I8aH+dL6Ri|%=fKCP!8VFEv9ES1u+O0UawzBz)G=y6(XT-jxCXDz z4z9%sYru7hJwX{`eg7+)mN&6sza*7s=-BHs}6eymkcRU zf$MR`bHU^o0cipJk$~RHsr-VDNX&vHSkOToBCZ0`kQPi44v7TFLZ2!>jeo9;GOfHv z3qq1mO2`gw!0XP|>j8%W0V_%YzkA2armW0m=?3eGQCP_nS(wvxrwDLzd|8`3$- z=nMyk3(jg0nPr=`Uzf&iv@9lpE)wGsQ zqvfFtI-fSt1+?5@p?~wLLnU-tsD>8R^fq)eG(A1k6iu&#VCN!=eGZ*evGs5i2*u6} zi70l2Zch&=$_gdb(4KU!BpRAza3(b}I9DeQjt#C{$p*zsw=Vh6TV?*Ks5PAt$_{m- zd(hw84WSF^f%G6aC`0K>=<)QWa8Ry{4a!71Cp3+=gK4<-I>B__MJs~#2!(NPtrQ}< zqj?TbSa0Oj4-p86cS@i~iJ#7z@)aZzgS}NK+c(pk7rK!S*BV3lp+>;otD3d_ZC+Ib z=)3TClF3ITqT5L(2r)fEhs+uJjs3uz7JTm^3V{|c^phC8_@a;{gb?G2jH$4lcm@Je zo_9wbK@wD+$cp?oG7G|;M`*I_+RJl8Yi}a*yueWwZmKx!c>)K%;*51f937sh#?mZZ z5NAn%vh$w1Be*2v0_8#d(u|WC%QEJe#h~Ab!pNJ#3td$;p~~xH5Zw`|`g+*oto6q) zku(QZJpyLNbquK({Gf3YKG!2)7M=qEKCFZ}+0kaO!8xBh8FEBbNQlPHVMjPa)uBz` zYYhj;R<{POgvWG0>W=Gv(xG}D=IcT60Fnbs;QYDIogB1;D}-u_fSdW2L?LGa4qoU6 zB0zXgh=7FW-9SeWfx;8X$el)Hg#XUni-5K8Q=h|u7x<~XAB3of4HUD*V{eST$vx1wT@`vf9C z(nTJNUvP+t8yImYF9MHWcx*)^p<^ooq+hruB0VIMIrSva`-Kf+rW%ofn_M^f2w;C< zNe0@V$bd>R2|3^ve2b1QqRb{qa&Rl|@O+s5VY*-`O99J^>WjvNN=qZ)Bho?tFixn0 z+6G3Zk4#5y5v!##kX0})bV+D93-ij7k$uQ2FcgdmEiW1!8fhOJdeJ;SG|aWNTqsM7 zAt8$_Cd*|cLk+BlXLosw-AKre2znqKDirpBNJc{?5)A?O<{OQNU>2iIo9chsd;tVot$tyq~XDFW``9cwfXB4AaV5Yywi z2Iej=I|DM|uJD@BwV_)y*M+VRO%6>7O%2@;iiW0zriX3}%?Qm5-4vP?ngfSGFcEq6 zMGM5up(MTUrag3$-e;0Td!I=X?R_RmwD*}L(cWj0M0=k}676UvNwlL;Qls5CJ9KMk zPH1juUTA)30qn+wq1(i|kpT-`6e8k!I0SR|^p0Yh5In@(%uRM;_z?8&7EL$!!>>~b z0YrH3#}VX0h!8PGkhMceSrACIDW7ob;ql)r?#LN^mX&}Np&JxYAxQ?F_r2^}8CuOM zE^8MM66^ur9if|Qi3Ay7$b)3r@a`nDY`{M$V7I(M{-pdVc|tt4Rw-++6JjU_I*wi& zS`O~d7R(h1SQna{k{z2qtQ0yBF752>>U>{5Uf$i=wsf|;zj{mF*1RqBR(gFXp{5t* zcZ$_?7p!SS?CUf;l_g+9sE!3@l|$j7L};S+Qr{gKsNPt;D{rQoNLB!0Vg#&-n+jMQ z06W+MUD;S?WW+AG=YX{_!vibKh@z(n*ShRr9cP|1>d+;46==`HBO@*mus+VV4iQw~ zPOb?0CnDSxC)6QA4sdcfWX$*?cVU!hG3JrCJb;F#) zotLUFQ(vxbt$R7|3*VQ%uY6akuToD?PgL*CyEn8sbYF;%!E%3SOK59oTj*Qg80S&n zRP}V1AuT73e;dC&v?H`LL>DEanDEwMVt1g^Uy4Y#)uTe*|m!>`7I81-dDhLse2iI>D zk%!?d^XnPtnLqBJ>Zx ztwx<~_peaA61t^yf9TcFk@5o}MmC}dy1bAqYXoeJ%K&Rd%hx?5VG~KX7boO^&GEKI zk@RT!x{o9gaeX3iH1QBa9gH^>Zc!h}pIds!c8_zDv(mrL^*z1bb=bB+(VVzGZ-m|q zy%mZ&PWayr{p!D8v7ofJU{~oop?5=7{%*$Z#(SNOgd1u{gd6(b2t|Ys;t#0MK=QGM zn9(LOqXW^zOhl|9p|uo-+aaS35ygdBq z@uMZyBHSOJ?{$cBGEEQARZi9qSAjWTo^if$fpMYnHsjZ!Z$gWW!n-65%ueB3xQ+RP zb6}CPE&<<#RPdV{>vBVe@P~`{#5(jsco|{Drz0Ug;?vR4MAr?jA#P?i5DZZ7HLV~K zFe+K^5!uMzBO*$Pt$0Kh;fhCuo8s?*I)bMRIE6>5(!+M2st6ItN%+y24CvH^C{T_d zS?H8epazNrQsS_CPJcrnj05%eZ3qZNwE-ecIsGR5GkY2$K9o>bxd>527No0O5)nK~ zXzLpfAH~j7JoXghoi!G9iYbPoPW6O#g0(%oZ;DRlgwQNR+$rIrpbHR*Xi?Awwy zEbB8z+9DX{H0uZo1-k0PHO3ybVI5UvDu%u0|J)`D%gd#DRX!1nkm6Dt@2JK_Xb5P+@t`0zuI zEPQ%6BdiZIIznV*wk5(0L|`vld}DFC&z<<-ULAcG2hB|j>F^Nlk@(?QOb_hfQJk<7*8`;V#&CYv6fOvx!-ZiYSpkHJC>XQgyi*Fx z9`GR|dk~9il)$r5BKDWiG;+IiB8zYtC&GgXZO@1-A`#i15m`i-FZ?5LVpK39;FoYt z5=m%IqL^Jt-&7>T?hV~geE}p z5MKr0@kFIA08fY!cPA3pfQH0RduzaxiNtfjQ(Wv&0E*x_{b1z~ z42QzuaO-fJFi{BILrk8Th^|(8#x|Ufutu%C?Dq#MA7=+Gu#W4tATL}&VzEj zjmvd@_)WuGIH`Ad4Xl9US62l2A?-z#a2A}cq_0>d{Sqtb4=Z^OuVg^j2`l0F!AiJW z=BOHO^qt9c)9z&tcK$Ut4U!mvwxb3D#`|NFBf&%5V4AeCRQ{I zR`da0(Qr6SryiA&VijDRSivY*!H0MSqr<8uR4`Vof^mrzTmmcj2(Ms#*bbx++Agl< z=wqFXB&3i8IZikZg{)(Fz`q&b{Jh?Iee(L|^~>v@Hz4nVybJR#${UzBDDSfH<>4#B zSBB9rv}X%M8Qr}~tPv9u8!-_!;$yrKlfu&^B^&@cIuuR;W2ilnmn2UVpo#?M5{>sY zVijGRSkZN`qEGOOt`EzlC8-;r;OGM^tSBF>DqCH)rfhB5y0Z0Ucb45%Heb6yyHI@R;zW;j6=w!_&eyg>Mb#fP=zp=u}(< z=0a!*ff9d3j{Ds3JTcMcL(#s(xh;T``a9hA%E1wma1>89q25t*43NH?S zgNq@9Xu{*=w~Gm~1PbysF33_S$oF_PaxehCi4?T+FkXQivR_iLEWA8iFILG4Sji#0 zl9iBzO%Vx*RQzZ-j^|nxK89BWZ_vRimW5Y~RkH^2`~hdM7LtC(Ns$UI_=P0>gja() zY<>7nu}bcO9M?z$a~s}TfE{*%@31KBC>8jfC%}J0!XG#x0(a7wR;$2CJjbtw-=I`+ zHJ5{X!kfbPh8G$)L+kt}p7$lg%fcq9L67j9@WSvN;dSA=!yCi*h3^kX^$=4SzUmc> zq8vzaFoG6HbFii@fUWI-pYbBnyWCY35Jl`3KtmwU5$GXf2vTye5k^X~J-j2lGyH&9 z$36)8%JAAB3Im*l60+C|wQO4$F?v{x%`V7h5qHyq5$_S$UxML)BICn>2-t8iIi&nS zHbW4M49V6x~VEq)nQ(Y15=v+B7XqH|d?UY1%ZKO*Y;N;(>UA z2%ezmFA546E)_)%Q4SFh@IE-b5YdWq2y!2u;C)|sAR-|DOm;WfnWU#}Etq~EN8i4A z^JaGTy*F>(ytmr@n)`KkBmRC6?nd~!L=!9Ck}Ywsa=+nT6RAtaHLXkDiZ=4KaO8x+ zwJuVZtZzx&ZQ#Wnv80r6NxdCfQrvzUurwxJ4?nth9sPxLbQB$MWebqaslsg zt8pUu0)96dnfD?W@cZugrl)j^d#8Je`vVdMO(}Y`5kAuBQzNHT4$|=PvOpW2W3*_~ zao%O1w_5|QD-!QP8j;eU2R?~hdY{6jN7(wGxg#j{X^P?(krcm#6bZxrt4N9$H%0NA zNQ&P=ii8dST_nZ+O;P+IlH!k$B4Mom6iIPVQxx|{Qv3x{B&_paBPm|n6vf{oDIS0n z33L39NQ(b!isGM<6c0g)gl+s+B*o!PQ9Ke!@hGH77{Px>QXJJ3ML3f><}KzEw>&Y* zjccXpVIP`W~|h#{o;g8(9(aAr*2 z${v*UQg1YGQ9WNfQ#PZJF&@gFSvXtvkZfG;9NGBXxw4)1UH0AfJ@$9)@7Z@d_Bh_R ze_;R6{*isJeS>44{cXp`_Kl8D?3)~)+TU?BrhR5_Px;|8x}1KgHkOUNE!oIp68GQ8 zM=ri1fg}tRF}b*iA?`YeBMroN9xCZ7y2%R?DAJ&5WF^Q8Tak!|dbsC9&cx95#+3M8 z(mDXs|A9}_>cMAepQqIu)>*GizSLMv6Ua%RX;c;%Lt{hzfG6N73hF2h{yzW!+N2-L z&sUn11!|hA1}diGuB}^IIH+`&c?S44hslo)EB7xs&Cd^q)yAbOx?|DZk*V=3Q~wf z+f`fE4x;Vv;>3*^jSkO1uE+49VVog-A5X?g<4ILy?L$b3H;vIh5=Gpv0?l;lJo; z4gM~^g4NmttVin4pwFb`+C(jvc=gJVl@Dp6E{nolA^>qM-4AyzoqsL8C*6x~Mp3u%!mYcqq(vs~S)w$P9PPXy=M{OaT=1aSnYh%>pYv z_exNL@2p{^T^wM6zoIiKo{kKhPxqlOpb5>K)xmzn?)y>2H1n<0aB2i~8+AK1k{U&g zrtY8u)EH_kHI5ojO`z_i?xOCdCQ|oM_fnIn`>4s(6ly9pjk=$jPW@>=WdF;4*nY%* z)c&{qm>pD0s-@Mk>Mf3~j%|*(YI(JyI=(ugT3M~CPOMf}Csij`r&Mou>~QRKET>jb z&r>f@FH$d2FH21K^|a386f45-9LB;86Bo*@v@_WFO7`JNsBR z$dTkob7VPjIr1DuPJB*64$AtL&k1(aKnn6JuB1hwf*i0Y zouLV-G6a->QDOz@Wf0zN^k}Hal7vxv0|@U9S_=C^x=jJufQ*MzWdtC$24u%ix8=ke z;y+Xoh;qOoWP-gaB?w2;K{99<75L^%2`WPX24Uzym7uCox9F9yARTfPoD774HsH39 zcH{x}5P(4tLR}h92z5D*9#2n*8mbplnK6}Fpexk%&=u*-x?&xrv*@h45?!fowDH-Z zJB;PJ3SFhHO1IXr&SBF%X|U_6b(MxH!<}@E&Y^qCFu+)=bL#4J^*WdCX~U|V=ZYG1 zZXK=j=osBIhPP^48?bj5eK$RkK5F!3cH=$9dyRM01?pa?jU9q@7gt+M4nN{r;Cj^ck@+##jV`G>O!VaaED495uem)N5l`%;@st}IgKS) z^LNrAaoZVVK|MZ+gt#t>iR+lSj*06o-rvtWA$RynAjQ)gDS<2Om<&J}J`(yvUxNSg zH#X1>^zn5<;b_=jzCZS!nphCcC| zisswiDXK`VOs#_1kxmVD%0SY=KJE?oVF-GLIoc1miLx8!QQqAj`czMa3cqL$j zd6O^!*!TOqA6W(e4}T9A`?k71vmLb_vx1V0lt<`=^p~oyRo|$-Ref%Ymn@>s($0@R zUD8wAOZ#x$+`32UnYjd^40!0=S^^H&%v>e#3XDNc;7=hu=0yYGUuXeLz%|!2&otlk zh-raop=punQPX24Wyurt6Q(CkPnn)JJ!5*-^qgt2X^Cm6X+hn>x%nUSDbk)YWm$j@`l zznK)U(X>msqw=un1^Pw$CHiH0C0$-yQEM&GfRciPrYKy$0=Z^!va4txPF4n9r4O3^ zjMjWLZ0^OIzeZPSY+_J6$S!#uo;>MEx&k%u3$xFCpJ%`qa#AGd@(giN3d~mInN%f|_Ze$94spqEF)%HpC z7Q8{Pq2Hw6qSw;v==Jml`fYk6y@`H@KBwf|lJiQ=FX>ZqK}j8TVaX`%XszfF4-u3C zI(4)7EQ|vtfi3V5Z;}$NWVj}{>D@}-qr6uPiUZqdhk0P?xdtcy8T0E$Tm+_(_LrPg za&pNjC7uGg-B}x-sI+gVi3X_9P9!1=&I$#&G64Qqz}dL$5|WQ3!iNEroU`r8M|RP> zX@X34o70aVB0uwUz{^o_!4b3eRoiOY5b5>O5y>}5hf0eRMyCw453*lr-)Eg*zSB%J zMYV66Z!iY0_|PMygsrZY`ntxRXSvpXkNG-#Aa#=YKJ#Sr=Or`Ev&^&251Hqf3Btw} zIcc7p9+-q`jGW9w2g?N{s2tExx*~-Df5It(%Yi34IGp)ZgbkyS@m!^a32vCuo1+>) zmk{^SAJd=E6B9qB^AoW2h%)dIy_fz>{22&J>vJfVeDVBezzyLGS`VD57$^mpaf)(y zGW-=iE$K4rq>3oQ@@q)73a9!Fq*_8w3=6&sWvWDT15bSGLv_y>1jtJ;hSJ~$0JLPj zq`#$~PJAZu*~I4(7bh-BT$=bD{XLzc_<=5q$Kr^^L2n}y->-W$@kbH`1=4ojUUCQa2m!u~bo>I72vh|I%bGN`b}SP-rGe0wB;MUry_XC_)ZT<*)$Aw|*K3ExOUls}gKMn7h^ zx@e;kTq9)vMmM4W=*zc*q87dAaNc_1n>s)bknRS1z%l8a2B~bH^>6i;U}i4S4BdZ5 z-)?kdacUk0_5)|{e0*A2&?mIn4`Rr{1vrKr^bG-m80YHGgJv$b&>PW0UuQl<|3x3B zj|6YqmW3b1hi=;*rN3}2ugwJ)3iAh%`1#8P7exbJ91VC$B#;GJ2EW=l zu7_P}Fi_CLT=>d%tKf3s)0G%H*yZv=`Yp1qy1({kl+cO4=?qtA-$*`21CPWb^>k$R zjTdX1%e^7<#Cd+O+j4%i|7L%qwr}YrrTt3_tL7ETJqpj9gdSA~?eX<%YX5r~kGd}3 zQM{*p0TijG)&x%^c$A(r&2xo|3&nTXRGvgndv7SKJ*#xD>Q?Js)4i^1)V-lwqkB`A zQ2&;0P|jN2)uq>zzEHSMw_bNcX?pe0(p|cr9J|dAxiYI?E==-p{_tc^OGkHvAi2F0 zLMXbQFo_m4F(@pZ15i3|m+g?<4*w0hM*=YG#f6&d^_y!O@~_t1pm*nArx~iJ^9O5~ zd~g0u`nL?jEqyE(SSDEdS}wFaXI*SvV!haMiRDtuWtM)HrPgKE<<{Z0RL@4J;TJ-p z{PqA94|3&iaiw{Td5@Q};K~pS5C?!SAT}}_;^F@T0LDM2#NVP$=`po>sAi{Ym+MB& z+c_mwrB!8B8>K<%sL3>ln-p^SA3O<=4t@l;0}9Q})Zx^?X;|uSfqLL^jS+kwrRNxwNRJ z>Q~oquHRjAmGhMIm3LK)sT^DRQ7zqLUv*jDANgO^{^2_8I#T<0?Jt%*kIJcbCOPE| z8fT8v;LLT(ttRK;Y9Z}slf0en?A#g=Y4wXVk7_bak7<5Ly`@YKjd!hjMwD4S^)+{um3YpmpIJ7mY7oT0fW{+ra9n!h!(G?Vg9F`jDtU)jxN)iq{Msb^l<0_Q@fc;t;} zTh;W)iGI*$gwy9}mj@}k!|oi!RC9Dijv9n21yvc9;_2gn^FWnnHaJ=E${?Tw*gPlU zgO>qM4O3(HD8aS(SB5SLKLSwV-QXm(d`Y;*b8bdi!+9Ap?fDsfGA_vIRfAs=Mg-BW zFhme-x~{H1J>!gwGc(T0=$X+g;%b5r>}4f3HvL%<}!5uXGb-l!LfJ_UJuHjZR_=X3QJ>Nv%h>aWyatG`ii&D*E>R{fp&d-V_MAJsppe^&2T*Ch8Tf7SU( z%_ZgEXg;mknJ4C;5wSiGoC;ZgCJuXlr@>Wt6TS+S;D0#40&d0uN-zuuV5308(TW`~ z32Od@`gCjU0eM5T0 z>S8^qj*~tAgB6l5R}E01TFIZN_si$yf22uF+grS^_?w(>bH2+7RK4t6>HJ-OK>mmP zpj@Ijznrc--SfA)fBDbyKjpv5$x6EKWPMrlRm~ZmGd*W{dV0RDxk>du)y=A5s?Ax? zG(6kzT*E!}_tw9gcZ+IZ`QnBp4NDuAHJszQrhI?RXw}#%U6MX2$Ms81abj_k=ilR-)3-Ws?1{Q5_4l25`=&GVk&PzSA z)HIjYmG0t}6~Rhf=q-003!C{*lNZC*JO%a3H;Q~ov2AJGtb{1M%z z8+?wBJX~aeYshg+Afdvvh${E+i`GyekZ=lL;uOd^`-|c_BG8066CQuXQ{fkWl4wOE zX0sf<71@0K00I?len^yKI8V{%g+RhbCBZX8W)l1?l-{gxsB6_K*lWPiP`sNPs+Y8`{#xuIXiP^XFrtf&fVXDY?=PHk-V%Ri0JvwTi3V*U)Iq- zNdgJ~B$eQ#s<5}dA#HzXL829+VvFvc_1 zGtLu8p4bw~-O1R&pcG8-MBPQ-2{n2@d|z^xXLRx%VvrP!_uTEd84g5bOkNI-=jf#DPoXLm8cIv0Q#xu`d{=kd|nV zC4-;*RL?XI0hR&;91C#;u^s$eQsNN^{h&`L_``xP@zb^m`t;ya9zz0Vh&QjuE|r4J zxS7%16SJUuVtk0Q@UC~jQj7#{M>@ep7sK)|~q$ACcSCp3noc-cSF z%1Ci*+^KF((h{hGl_5q^gL`m>vq~-C-e8}h9w$bQV4-J`hX6|f0*;Z43x*c*Hc+^F z?IfIt6u!#GBe8}0gaoz(Jn5;z#~oex5=gl4y&JMXtPljkW>*QO1wo;~Pt~V|sw_iH zDex;6d+vwJM#wfAd^Z6T@_Fv1Jnk&I8NfvY8T^atM@w<(|o+$qC}6 z#IGQM60ia~7#_sAvw#^m-~squiJTx(@S^7>DAH$zdJLc*Zz-Kgerzi}(?v``EcCIx z?0JO*O928#*&ZsB)#UfE+A}+n=4)`B6JRMozzfr{k3ISeCXnzKJO}R$or(w+!ayzY zPzp8wK<&eLi|Bn4NO+%0Fjl;%kOCir10K;Y5YN68Oo4-)r=Kqd%D{Th2G84`xi~-Q zE7?c_C17Ku=ussv#G9hmw;6UsfTaKd7eQP?Mq9w65Gax}a_|@qAQDHZqt=7n?%ClX zN_dLnadvv5CZS45yR`i%b82qgTiwUEear>Dt8R=eRNq4pau|a_R>l8Ck`c~!1y5=$NTkiBSzI!wVI@F}P5l3okE<%RMlqws2KkYu4D!RCa8}qRDItUWZ%Cm9 zbNWcr=Jen25n)}Lj$`YxsL67x$7>*ROF4vMp~$XEj|Kr8#e2R~AP3Z`oNXOiNe3#uqCC!>&4t5QUHK> zup@J4=B~_CW_RYE%y%a0xW<1$TFYF1j7Hj8j4dEj2Z?U7;~A1B89 zX6SariFF(^a_~}kvB0+vzJ^)y&x8N+p1^P*1G-tElqcCA(AJw>=8NJD3_>jpqjCxL zag>#MjU?jWdnNQ#MgYaDkl|KgK3s+Gg%oB0@nm8w;FU1LuygP-{8hA4ktYXcD`5&5 z;(-isU=~!97sgkGd_%Bj0EF}y{0kCaH}Xb>*ifuw@Ea8b z^XI_V)_$h{$pweDFiq?|`bCM;6HXQW$#DKj=;1#Y&c#uN^G}A+Rd0m_4=T~;1OISe z5er@w#GQnJ4*-$#$rO?EsfKYd|2XSYEhCcf=<`M111A%a^{I}D$of>zv@7eAiy^jF z$F~dH9CKpF@@d4J*y?`jIl6~+of9n4^5%*VDVy=uS1Q>vk=a?+EkJ;F2$I+Hd>alN5X_MTFg?0lQ;lY>lxUbQ}{3@`rNGZ zvd+)ylXXE>->eI>F3P$%>yoTXvo6cJ!9CP{qx&W|3tkg!0`78EskBUbDNiAQ2DD4L zO8R~NtJ2ld1?j)$vW%a38oVCfpXbBU}qAf3rE}Dz|PYdf>8Sc zJ5Og=um+#OOLdot_rcIb<2oy5-AtDCu*^!BB74vS5fx_J=1DFnVF-N7Zed=R`94Y)QEI7jxd47uWD0Z ztivTHktYi!scI=xRv+d9hG>@7VtOsqh`0?cPKbqHaIU1Q=qB$&r@+xQhptkr4+huq zw-)4Jw`GBHkL82f4{JY*|16l@HS}nd;t~clNE+fAIy_0$rA+iBRZXyGbK0Fz*y|Ua zz4qs+>d!>aQzaOvd>Z`jV4(7>{2Kx;tSxV486?^`1bPISJ?-rdL^o89cAp_Y6r=%mhH858Nj~Ob%$f}6W5RxcAktBGy zAoeyv0Q@wPu4P2|i6jilzH=QJt3vvT2QyureWxux$|n58?PI#DJd!PZl7pG9%kM(4 zB7Blv$pVo%Mto~6)iIc9A;pXsfyf<$r%M^k2sva3G%j6A_%V?w22U|Fm}xp=4AGEF zG1FWFB6|#eUvMzPU6v-0xch>_Ln3=jbP5C#PJzfBL(Z9yLxw;T=1h1@(rrbOlt?rpoe7>3WiZpav?c@*E+N(&=`mdF>lUSLse7{|EVHx10xrARv6%EjJ{xR**7IoV|iTIt2m=r$8hSh)#h(!YL4!*`re+kZ=ku+*ubCU6Xg#!w4+c7}^0t zV;KPAq@ti(+~1kYoT=Vo*=m`SY{~yVWpculgsBN5(-QKOc`p_%t6h{3m;7VOfxOAC zqj~F#HWXcMyv;bWQeSmLT@l@ubBb7O={EBq>o97&d58HH>Q-tvHG;a0x}6$HjiN?V zcZg~?HeYDB`7*oB7uo%1C3a&D!tUuHB!o(!+uY#k8o?5I0ICF=1lNWHxiY|G@FYwW zjwr5Ic`Z1aHrKeR@j(Rl-*a;@x}Zke}3IYA?x>!kgj6gPGFr>#pXB^RAe1@L~IjTS{+snPvNv zSa3G!rF|!)qZl|>@LKL>9H0bSgy}@jBeYmYmx^!dto>2uF-BW8D>=RD4p~4p(KtJK zN#z3TLhDcIV`V?5Ka?EPV)q*Fs0-A+P}|xY5|1-aFtNfovD>J9)i>)dQm5rz)@gw} ztvl-a7d2UT5H69LOv|SL;kAsl1GLQLn)QVn3O}@2s&6f|R=<>xoU8|1g$xm(F#sL# z#VP1gD^i%9bg4Df^9+OP@}Mq=ORdiaFSW8@8?J+hGr-my9TwCtZu`+8YNQ0)aeb!* zJ8*y+>N72Ndj zDSVwB@aD(ljm;aEw*_njn?Vm%k!qDXvmw1^LS9zGIH$WlyCJ7xMDd3h?ZrEacNUkHmz9^7zhC@8@k)khif)gz)T9=k zrHRH=(g9QsIjB9G&s(pUYpdXdm0S`>!+EX2Bl(HS|vBQb_X` zauUIlGLvFL6{WbkXuRs0qHBw;D>_)yC=R|yH73y|zc=9Zs;^Q+OGg6MFv5u#A6`eE zmv`RD*qcmK^&favI{$Dkk_F-rLR^Ln9qfb;AzI9H-xRVQyo-x>RI&Iy64VWDFm7Pp zX1Hwk;Y|1Zn(O)-jACX+B;S_I-zL-qPyRApxa0 zpd7p+Llz2@@TiFlY-P4F+nI7O7ADw@0v;C)YysniJo6l@7BGPX+=&B3sp*9#q15yO zAe5S317jMXFb=1t*91^$q8-dmW*4)Y*~7fcyvMxHe87lO(>H}8s<5VMM4=KRszll9 zQ7b9PaP5pwIl!)#`@ zFbcz`v=za%sP>>S2eXHoi8Y zR#|&W&6Rbk+7ECh@nqG+LoQi0rjY~i`@=MH0A|uTt@8BBEmdb!o>_TTWzWi9m1kEz z>iACl;h?RM6!b{>9)37eg9QhJ25JC)I6pAGwdVvu!F^c(-rnC-|0A=#o~al@vlZTo zv++3*M=<=voLTXV=zSVn1mO z1p*1Da1c*Z-Vr|1>6$CbF01QT*S}8i6`-o;@D0bDkke%k$R3pSQg1YG=@u!MV@}95 z)SFZ+RZI7&&)qgBBrjOH@;I$~Iw1w$ThNXLu*65}!uG@7H@=~^Re}49neTL;i}zY` zFho8hcb0p$`ysa+d;x3r1x4~Z;=lex^j+`Yn`7>yS-Br_e) zMxEqsrc{O0o9unVy~a(Cv&t`MuY9NiINKV7U-4$)XX^{igdexC+!UIl^ zHeg-kfc4%MGWANm86*lyl(NOW)2)GzhX@0cuvBJj-pD28?@TtPJwd-ov*Cu$5H>(a6rAKLcz}F!i0;&%hLO$BbP36J~X0IW1l&WISReAQfH@@ zhr#h+jd`tkyZs}_QM!kBdF_8jkQR9}T+>|lyH*z&s{ExVmF8B(1nCy@R&y-Yv`A;x z73(OSMQ7EO=t^~?jn5X{VJz2G=qhzpy0wmV4x8>tgI!mxt29&@YIF|WQ-%S?TAfo@ zr>obwbWa;r94THRV|0Ym*(Po?{~M>X#BJuTWPt^jg%lXn zPbi%9`w)OZ0Ac~1xJG{D;yJN()4W2t$LcNd&PnJ|bkqm#NFrjWlNK zMj1DoW4ftO*FzW6O|R=3b#Lg_=-$*N)W4-0l(SZMb?G&wFBGoRt=HX9nqED$beHZY z$8PgOuFUF}3zIzUa^0G{iT|K8?m@(aOH8<2XB})EV!hsagLSfXigl{BKo=7(t97sG zxB4JPEjcK=M!-axzG`qie%g>#ss=wqf_@Bv8j&X>t8{u~xq!^lKg#|r`>X75 z*^#oNWlm3>r{3f8RCp`BRo-J|M1y3|96AwVjjl!GLDsc&6VcdeA{sl4C|Ip&(1HyB z(9x>p7FkN|X}Pz`hRa6CZj;?EyEkEtBduzZt9!ipnB5w)TVtxF^HmEkTslLwbZ-F@ zsalYOTSzblm4?{C?WMyG?*D)|cK*j)+%Y%8?~dcGRM&~=;{K0_<46G$DUOMN=L9U^ z`6T*ex|xt?mp2^pOkA32UlsYbRNCrE_o5dorWV!bt}J@L;e&=U$E_amO%;Nn_EeGY zNOp*AMsWvwu)32K5V`DP+l&)on~_v|A|(nsu{0Zzyjv-{al$3>zJw-FP)wunh=}hb z<7NBNO-6W%JMu-37Dd#=(W1>zlR=*RkV*>?n!ctZH2v_AAZkze3nc%wqk_UJw1rT3 zV&{;+C2?JCy~cX2HFi{Rg?gZRp>DQok?yL}ww7#Y+bQHAKC?;iz90bN5(-=xHi3Y| z84B)Z!B2RkgcAIW-!C9;VxS_Zttp^zhWAWw#BB^+t8Qa(O_g9j&IsXQkCyGEm$y~f zPB=8e3a8<~T3-$L3B{9&TRd&C!vAu#VN2j{LoMKrW`)QME6!Siavf-?bV^4Ji_f64 zs2s{b{YaHiGaOu!ZlWp5TGCPzLL+vU$egY@-HL5KPK3=zZ0oVh+%;KB+ols)U`Rmv z5dC4`AD98-7hI(Xsf%*p!$9{=U37t0s14oM>rCRrEx~?wOkEU>Z6VnQKkMB&*+(?? zBXeXB1L}^+K3X>rHCP)=!3Vz>RJTh4=E2yCUxh#l4y2H%!EYpp1-}bsq=bPV6a3W5 zVLsX5w}(DI0N#|n6(kLTh>i+e>b=a{&)eVoNa=#o%f0>e@5L#Ugdad`#Ug*e055?c z6apLI%?3V|@T~{?%LWGoj<}DX$j94M%C|w@E4{7H$V(8-ge8f@nRo?a!bKb*&F^v> zm(X{G%>pDaZ%1&Rf^37H(m#ZHYKU*H@>-#U%k33R{Q*EBm=ETf=9%W39x*L2Ei^4M zJ!*Q)q%3)Ye!}#m=_%9Gre{pgnw~Q)HZ3tNH7%%HShuL|(YnX#949JG`lHVyHXrVxA;bO>KjxVj;dtDz)U zGVrkJM(>JvB1v*_$lVnE)d;Vo`OM4VG|2>cLmS_CN#QNg^DT!j&i)fVg^bHYGUuE& za%m~OC78IGNCnzdN&1F38JXRbz5{OkqfM;bj59(Pcj=A(TTB*Jd)&yBvl=w zqrz#b2=Z;!QDH)Qa8R)H(EdmQE4dQqG0Dy3FPYd}{*HTEcOnx$-HD)vT$qzuK9RYn z=@Xer@KHASGh`=vkqMR!v^XFI?iob}5%N2ZugiCtT<8k+UiU=rRPR3bG_RT_5EI}c z5hJA0w`vaI)A>B@*Kn2{vR&Z}Yrsa+F6EBO!=@ML7wMPim+6)C1K#r5idt)d29y*W zG)1wF9)#8rs}Zp%0W-WloUjbc^d2<*8Ljy&*xZXZpY5&E*uC5(jI6`WB5Gp|H~j*y`Hl|IZ9px>r9(wpda=(*l=O3p1gujKraJ|!2F%=6Y!7nY3Dj@D{G zXd)3|DWFs5i_@-fz$Ea9cQ%-$ceS!BL<-KB199Zaemp2ug>5^}cBCJoJ?wYgtT*k4;0F};L$qfgUH2X$2f~8CLoyhC5&+DH z8Mx3lo5Xz}$e4TEw$Zl9_Kt0{ZHsNIZJTYUZIA6;+k3W8iass6$8@i0Qe~Z%*8WD- zYhBut3?~~LR4wJvGFq>8zx9`*Q5F~djF%v*2h9E&X9@fop&2-Ij&C~T)U#{-D1AaodjQ!8t1Plw9 z$OvJWaXkYw<&bk)LV{Qz&ES2*oO3#gFM64Gxpzfde9_N0<%@pa%L19uUr>1g!X1UG z+>>_$U-GW9Ms-LfMcfVyqmGLkABTp|yM^U2RnrjZ_0p~KZSpa3V}p-S8m9n?2bm9E z@%j~`6?=1b${UJyK?JN^L?l9#jmE2Rr!X-{mbZr`V6}H-9B0w5B~Ix>nq0qa(u(203YQ)QMA^( z&iiq`BHFfTJ)Dd<@g7M6Hh6&s+bhO__wzr<|1ke;uM)&%#KDeH{|sWFC%?1cEt*_7 znDYyC_GyyI+9}!#3i=jYSl~8H)#~jT_DuU0>%|r8EA!|q`(97BJ;!da=h{zoo#xs_ zZ}Ohb5Tp#Cy@ZP4kqs);$ER{JLY~4q-CfGUjOm(}q$d}iQn;UfMS2o5%YJI%Z2Ma2 z`SIr3b<&^fJPF^%jj@cioXniUyqvN!1(Ev$4wWaD9o!E`Co|vP6d^(Gb<(A)m{Iky zeWT+O`zFVy_IDhOX`k6Yx4)V8R@&OMb!m3P7xo&1!%%B*8osoDW$#(qt8`Z3?7~gv zZINm{Aoos=9+w#S531Q8l9CS(jiPK{bo~V@h~ZFSd?aaZbOZDcfj= z*8=1rJ&2SzAgcaZ!G)UZ^_y!O@~_t1pm*ng=DAKYR8Qv*)-d_r{G0S|8HQW>ST3+k zu=KTDXo+Lw%*B?^Jzsdf^gL%>Y+YhiFqc>^wOnTDXIW}pW?gPYRsVK-o2dJ@$7{@c zyp#oskh#V{j(`yH%GaAhX_Q+Z@%o;ZXs&NV%VZGq;26Jsi10uFUOsu_0LlLof_}+M18*wJCFM?t`WkxP0i9n0zLqLVc$r&kv zd5)+^VPf$4Kn^tFMFIJRfK(iilo9goqGmGivG)`2r~eg$c6Q-}sH0bhIdkc5b)6qJ`FCW?(_hGXbk*myhM z_&W&7zZ3IB=P~?)z98+oQMn($xhrKZJ58n z=2mgkc)q6s*J=CHXH;@weLOP z{lk0Et4~zod`rO#+CQUleF(BRT7|uwzr1pghcBQ8d4oj2fgMS}T?GmFf))oG9rhma z9`zCk=)4I%FlD5}bDGdrLIMINw5{n821&sZ5AccC0(^!Rr^GiKOc9PmAPn*$^%*nr zLvs)W$snj85>!ZnSkNOhn}`^gEIO%zzoObcaXz_E;fwbXkK%yvU`=|O__LOQ)Vj1f zZJi#NL)`@spDExAzQ7>A_k)p1b&1#@8@WNMeQH>*L741d<0N0i#!ux-#u`IBG(#zH zhKlf>HNH>ynm+s%QwqnGN&+Py)ko|Vay$4U>ksMOFI!I7J96U1lK*CZqqcA9C8hmK zWBY{IKA|)B346`or9b0p%y}bcP0sKNWCRnUq%*SPbZ>DI>1<^|F|KZi3sk5?Z1@7z zql%NW?=&t^{hV`O(YMr7WXMHT})H7g`VoVNA^ehX8Qw$TkH=O zHk#ishc64C`0C8yiz&2Ww%;5vh4$|#G+vZ+MhgAzEKVZT8F7_FoGk*~HQC{9GA#vq z^n$J=gRl1tWi#Bmcr_~R^LVXXw4=;+=eP}SlP}ku=Qg?t1Q=C^JvM^Bv}lh5cUW*& z3IAgRhe<$bhJe8!3^^zhHo9DsgW7a}+?fzd5(q#)(nnQ$t9tl~d}d#9a2J*bAEFN6 zLn-*MiV`a$4p@|8fxECjg!;1x2&=pL3V=q!4;gjE4OsyHER zRBz>idgCaT`wrkGYf+KE@Oe{-Z-3Q+szX&twp3e%FU>Yxqqk+)GHqEltBq)=37#x9 z*Fd}%Z$y(b56p9`!K3*3oeeViSS09i5+nrq@%vFth;J^~&+e=C)%c=C1@aAqs6ZT1 zFgf`z)Nq0-dz69+)y|2j`dEd6SQ7Dno*AU+y(=$B?&yS2q3)vUBZWz%qE~|oLGeJf z1y$L%Kn)h*4$50f<)Bhfq)49uumx1{%_JylND7j`7vN=)hc&>ZS%H!3Od(V6bNL#4 zZXbaV5AerIP%ZR=`T)QlxjkgW`co*?>V>Mwh7ZFR+8(AuLID7}x5jAi<}mUVpQxTr zgO81E4z01xVOrj0>VIc*$P1Fu-CkpKoG^*h7jjU8%V@zc=VzyTd*NC)Gbj5Zy>Kx> z8!H|bOWN0wG5t-O=DaBB{-$|HijzoD%K`^}T0)50yl(9S>BzZ>*|f1bjoqh|+G#$Y zF0EQy-Mtf0ac;ydOPpa)J8#Dcnz3_?3{SUk2q1Yi(=26agOGaq@En;6oi$IZKl913Bb#5RHt z$R3pSQg1YGQ9WNfQ#PZJF&@gFSvXtvkZfG;9NGBXxw4)1UH0AfJ@$9)@7Z@d_Bh_R ze_;R6{*nC{4LlN$)U(&V!LiT&wxg?WA#t&VVvk!acl+47;~{tZiD8=%v2%Fx@s18z zYhyhkaq{u5W<@YP2A&Z-(l~xi4}Jj0pXtFfej=G3{E$u{(<9~>iJ2a^QzNNS)M)As zDnN~)#!};`@zezBPU__c? z+mG2nwWL~FEvw$**y`Bkh^v-YE2`tG6RMTfs_MjQb#+p8a&=1ecE=9KPRDX;1@%1j z0`(&G67@2*l6r+&MZHR`re337ry8j%t!t<^skf-L)H-TCwSjt@+DL7p-k~;ATd1wn zHtIyF&vjxLA1&l?6j#BD$hs(wlkD$H_P*g>Aum`*g-UD942jEKIgLO0N^u~|C zUa-&lIT#lIC778@kkG>JP{kaw;jB8m*&zwmb9Os=zR6AyNpEG}H`$3Ts`0pVpbw?- z8w0V^O5x7HiN8sWX$qAm(ev*VREcz<6XK-%-x_G@Os;(*CGx~l3EZLJ5C$ol7vnf_ zp9udS003>|xfpiA<(#I_Dh3pdQRx(V#fb9T$}<$1iY!I8!l1}ij8jdnpHasq85Mi8 z{7IC;q}XRIP!uZ0tNzp+()^`4tU01Ns!2}U@3^99Q}TlR9*TiQ8=QlRt}Obseu(c) z=2DL=HO-}UrMtM~3j{OuP;GF2@2+HG7*v4g!r6%9W+a>_!eT13KcIbH@}i{N{-F(_ zm4wmaVGO_cF$-v1qZ3OpKc?Aau{}_15AJ!KeRtkpSnb-H?;OZT*4RnBuo@ty{qTSx0WI!5=5;jP-~u7Gij@mWJs-c7#b zys^eXxf60z@-%s=dE<=F85SFs7_Kl5G^Us|rc_g!X+Y_Tu?x}z4|x_$$QV;h#>8X{ z6_YVB88awnt?ug5Yf4`zT&G*FyP-6_dT8k`-A|5(TsQkNt6wfm^7LdDxKfxFE$Gyk zNNI&giJc0^T(c*xS<;foPy!~j$AlXsl!DP40x$?b*eTi*K&XtPZ}koLb+)H3CRk#E z<-aRf2(i%_>25prVsPucd2JCL(L8!SLAavKh5!g5D1*2VlnWy~dL0@4db{s>)eWkl zs&}%!tof?u49}UKvphXLU)S8E`k(4%)iBlOtY;dYZFsKX-Mm{=1IrgTENNKUu&m)6 z&;FXxsq59FKl=lY!`Y7v93=*I*>UtfA_t=c zm3ZAF7O){#ErY%wLeA(<2=in-9q@4`%HMTkd}IoGg4wkO3X;%uSiZfZttSw zM~>s@whE9)Q-zSLSuweqFh%yDVVdlI+4PuK=|3LucPHKP$6a^PcheK;iP^F{{E@K~-EsPxkfJo)b*W8Vqbk`CT{F|Hy2wXDWu! z-iovFmf_GVt81$7%!+3mXID&5>RrKta}$yD=QIHP4+~Bfv;tt@@8k|XCngnRQZaV9 zBotWn-;|2?`=m6-dX2l^~;(mw!n~`gVMmy zf{Aq}Bw^LcX8Xn^jTeKY;340)Wn+^xp%QYi$2c&@_d}Vbba2*gIaV1_TuAO=-_K>g zlJvfV`q6a-ALA@eDXGem1M}p3Y1f3fR zIxiA*ek7<*B=6l@tgzrh;Q@*Et z&-kA8J?C5OTjE>lTjpEtTj6{DA0(&ierl{pPwd3|#SKt6W7#I?7 z0Z!cz>1J5yQs}%=Z9VB1eJ}Z5_O0~2;#=igte9FKJu(pZyW}Zw@_I?@KrL{BPt)qbXKA0Oz2>Vo ztg~L3e5tXThT)s4IM@umR|fte+b03Mb)%@QSThAU&7=lb;%{@iRSm8Rff}RguezB2 zis>(E3f+7@kg0U@89}De&F2KUpFZBQf^_x?mpw1q7r2p4xl`$Sm&?V3=vw;%u&cSFYtP!plUg7{Ezx3_&8`SNc0 z@G;ap+yTRfRhz_nUg6Z?9jv??BqRZwn=i(;rLD!-nrpyTSDkhi|8^JsH7cDsHx`byd~c?sX&-$4Q-_(H@|8H|%M6 zw;^CX5nKt_iKI9V3?a&l9328Jo~I)`-oo>v;P?rb z=jOUQm~}X-MqxEb(xvHlmmkTxr~GT4Kcb>&L5=aW3D);b<)=(gj za0*}I6v#RIi{d&W(1bY?9)HDC;eEwP#7MFny%pIGjuL^YdRO+u?0d5(W#5*1}{5^rm6heYOcxqcMs0bu{R3EoyUI-+d z!Y8evKp^21E=J+{!YL?PLxDiTDG*LtcWh%H+t|l8_FcNMpBcKY z*cB&{-FIuR2fd{t<$@wE^#nS1Hiey-bx+p4S;-)oe=Grw zT(qc$Rf7jZp`j2c0jcbC+|t!RJ)T+mM_C&CSJ~mRBV|X+oSr&Qy~pLL@K$=OyvNFj z2Fai~^y_gw8C^FJNVr^P!40?vRtbiNkJsSF0G_wqNCIvm0skWbH7L>#G6Bg~xL+hgv}5h9 zEKRI)G&rUuC8~$l@V+9TAs5KCGPJOM}M5gb*OOJsOJ7i%T>w z*Mg&IbB&uSZ#2y}4)R{QA-M~UXWNFEuFp--Dz%B) zk;R9St5e71jm;aEw*_njn?Vm%k!qDXvmw1^LS9zGIH$WlyTQ%UtcM*@{Gm-(qp!)R zxuT3lRDwJ4X5^D5y zDrAvGo4?%F&Yy>d`kvfIo4-J@7?}-fpc($PCn9rys08lf6=Zwf-!& zC)y@tJ(y^bBs4q>lnZ(xVAH?lXe|6^}viSF%C7<5IqkAV9#BFxQ4!1PEU z3mzaB@`E8ja8(|{<9pLWGiWi51xk4mEVEm0c9}1VPqz#&xs@Hxj$m(NiAKrLNNO7S zF+S%3k_Z6+3Pn9cv#bP*s(Hh1h3#E1BZL3^5oPZ4C;G~2qxH7JHX1reX5!LeK0iZA z9REEa|8Lti+BVtVv2C_(v2C?&vjy0lwmr6YZSUDWDf+bN9@D+1NtJb4TKgMSuXSlp zGMsF1P_>jt%V@pY{nlTKMp<0+GhTvl256q_w95M{r&kWF5Sp`K7XB&;Pfl(ZdU87M zAY5N{LtPPVri*Ecw$Pnj#A~O0mwmT=kNsWyd-mOqJ&yP7AJ{*%e`G&K1CPWb_58Ce zdD|@=myy`&E%DAt=uvgh9$&wv_RU(oE<=~8%hHWBX6r^7H=DPZx0<(^2U&+v+s!-7 zw@|lI!>JL}ZO2u~(e2a@YA3ae+D+}D-lg87-lsmGp0*CN{pR@HVWqFKj;#YOiR)_X zHP&mb*I5T!hgh$--e8?zX>@R#Ru@#UqQ2HeYI#1$$F53r-DY zi=7z~u*0?ikC!)!uNN1W zQ{`_JuPt6zyuNrt@dWlxmLQiC)G2KzBWAP_Sx!4_`*23}Ax5pPcZxR`Zz#!CZW{Qs5Pwc{pgh_2CRGW=sku zvG=i2BE=@dNU=G1<0))|JY8)0NWc*($`ma!hNK`fZW=}pYG0J6@P2kSn2*z&&OU@& zQc^ILeSnq2U^U+U)IjYA0FmNfd*rut{Fh*6 zEwx`uC88vpo5T`z+C-YTZmklo~)W z3@y(^M45rSn3|V8DC?!(Xx^fFzILW;Mj>N7ls~g@w(KFE+v^ZA;Z&(`$May6Y8YW}oVY0T&^#xFsJ&J?2TNmJZPzL6Mh3q1XVk4)y9)-;} zDMUI>0v>}(>LYk`Aaat(!Cn%u4+ngxz%-=-_BcfTVD1y_lk8K``h6Pq`vKnXGwgdf z5yW+Z@1HP%-d>!Y2Z>lgU?_a(Ej;;OdcmDYS$v)vn z9(bI-g-DMwF|hu}*?Wl`P|U5;=5Wm8$KFzSVosIg!Krd$SX)YXY%G{63^ZB(y<_87 zy2G(?G$!=GpURs#nm_{d-;Agt@yjn}i&`LiWHm`a?pW1;QWwBOP$w+^uWoID|ChxJL@1`-|R z?1+ZOf@i{S8NOB0?Ilj)5$WvVDobu+TX20vbN586D|wpcS@Ec)V3TP+I9W3{xEbI# z4<=Y8F3v1BE6nlc1hdktGAEipG;Oa`o0H7R<}GZBSz}H$>&+SFOmmhw+ni%Im~+i} z=0fxDrURyfraw)GOj9(e&`BBEM#(^Y!Bcq&1>(I3!|lSh!8b8kgY8AOL(u&s=r%|Z zVaXuX0Dz(2M@+dTOX+2_yg*T4Dk&`a!M1}vVB5)-l~k4NtQ7au$n~@fk{yAQ-Ob*r z8IFVYK+udx(9B5CtVq!8NYEiXU|?vov6%X_s;;>MEx&kNeq7+|t`keKb*nQQ$8lR^?ZgK{sO$avx^q&)Mh_BeM*>Biy;efHtJaT(~hY64Xx0t?FZIj(aeld9;g9zx_zAy?QnYzLz$*R7^+KEvL@!4y9C-SGB!9C1_>CXv`kKa_ z6G3odY<5%pgy$^K#aH3~-Jqn%EAJ_OONuo`u(6o{AG5YDW4%~MbAfCdW!&*H!VUmf zn>i)kmA}Qc$D8KY`bQ>?N=$W|;|rcOKDs;?vX;_gYV}afPS-BijheS}N~%h$%Bsq% z)*Ch$(mj2c3z##!XL{fBX84ye%b7ELXZp_aW%{%H*?xkQ0koG;9iQE@mHR*fy{Ubm za8fe9XYeH)??7(G^66_=ayGX!p60nB^yh{S!!vPlX0SWk!1bjpS_L6|{c<{sf8Mny{a7?^B zjRy{Yt>5YQo9g`a{;Lb#&$y%c$ARV^TfjcD`;SS$CpdrwpN1wI2`caoeEu`fApAY- zZAG^XEPkuM#9!(!^OyT8{FVMHzs+y=SNm)HE`NjH?Wg@7KjZiM5s~#_BKlxBX=@v+ z!DnJ;0IKTy2A)?{9BYwYmtE)g69{oo4R8;Nv{!2dqYpB~*>_5CzBaU^Ar!8#J|y4* z8~|$^YtcIk=|NcIm;_7-0T@J-1v7ELx!UuzneYMcH&%jE{bwYd=0Dy4isB6anf|l< zJ^gAhRf{?E)-Xyi3ui?MF2w<`E^??N)G_S29|`Cm0x$@p0%o&Jg#Yra$U$%aIsS9~ z=lRd~TfhLEJSSSGc`aoQ73gQ%-G;HhD17CJ8XW8)7%7pz{Jq0Q80X|uICT7x!Mo2NBu^R*^z zfwoZFLt6yz&WXk!AjcmFjsKkBy9kay090U8{g2G{dZuCs%~qU5U*R9&-$m&bpjb)p>tx}P`3|Ie-kUd4{}4`RppuWZHDK%NCu zSOf1`4{ULw?-re-{D{wx46=Qv|D_57ECmQC2S4Fsem*jNdA2*pZE%}>x$Zo-(LK@M zk0y|mAQD9heijIGnr1XKA5f)8Uhg2TcGOJrBd|!kN&y1y$44N}FpEyyxtsq463Q?e zez-~Zj!rZ!$>2HnVs{{QyJv@IqW7?8l6#tau3O?==zhZ8j|O_|=qCY2aV~Ywb}w_! z2g}_n+=<>O-{1XkZBECJtET%m;*%$K=uh)M;D5ut#@zyAZ)1!R^w3hC0qOjbfelW9 z4K5zuxfP8(UbJYpxM%r^$A}~X>%p&~uQd>WFR3_%aJ!jee*FK4AAgQNd=D_@$uH8G zb;UYLXZb&S&jH?4)%Hn~rb(JMY16c&yG_S!I%t!$Nt!lIdv8{mGTe;P1}M^DTb2qI za3T%_MO08hoCqlTxfM}{EC+sWap3&?RS*T0;eSqYliYifwrMHQLUbk6JQw!zj;#n-;TDq-NC4VeQE!W74l8Tdpn*4~$;iiWS64Mvi z|BHFjusQLK#4U-gOn?%oH{Rw+tKd9?NpRS6S9St0Rc;F8UR^75S5m8}0QJI9#oVQW zxhqr&;7>N?3E&S89sfRYHFvJNy!RT&;oh1`O;pk#X zgan-m^gV(LwpHDoJdcmX(RF8Do?MNB@o=A{wG@WNzj+yTW*eB-QlCKW3L=YEdP2>; zM+f_j>V)!NCCH1DJZM~P{7&?P=tt2{q64Zh&Klz|*#luUoZ+$&vitQb^$#0;5XHe` zEl>odhPBk6ajOBH3c+QNxd$UK^hrHljokd1PDC=={6_Cvejm|UE8VWxq4-RdtC^Lr)I2YUjKl^??=i)` zC|`pad>G8Et9`6u>?79AcORLJk4af$coUi^4a|3?AhU~35v(_b-4sg@SKdeKf6AHa zihI02Js(mdbgeD@jTH9L+>1-Ti@GUgZrZnmMe-fdrfgT%6G^9&ax9HSvulJYowP9L;R;aa>OxBCE z*f425rV~eqS&xL6^{89h(fgg*j?jY(WGvH+5HrnmW0?6b!!UD{ZSCwU;b5t>u3)@= zf_|bN8=&XHfftn!9Ca(K{U)jDOuG7na;2$p2}l7*$870}-5r;YF$oVj$+>-$m=Ycv zi9Z^AWIR;-*DK?(5#UrHH}Jna2cZcaghKGQd$rJ?K3?CMeWWe6i}zDsQdRjk3l<3^ zT6^*=?riQH?p55YxwiufD(DBR-W{O7WdQks115f8W@u*ikq zGrTJ@$VGtdp*uo7NM^v0h2Sj#Hm$7$do^?2M6IfbF4Mqv(;OaAYZXAm_oHhjLcutjT#eXKl_SIqPzN zNqQ>x@tpO!C#ip_%Zp{~%E^(8clz}LV4hjBvtW0@IOTZdl8FDy#u}qQXWvF7uyK%* z5dBB&&FPnV5dNe!hhCdoPyAB3X5^W=!;2;k%9Me-wQ|iQ_!r~CF)Sw-E~wInSM$w& z-jp!27+SO#%1;gun0>;hMb$!9XE=3~HB@9?0kXWVCTJPL&0o=SBE7#MaMi^)kORbK zA%IcY^qk=j^d|M-#g~}?Lfs+bhI7m6mR++!#?eIb+n3BeBf?BGEkJm?2x>5PGJ(6?3xQa+Pf)$9Cl7VjOEvgV(?+#JXn#X`yss>lLzo__&OqDlbbXE_s4fq*zJDMIdc3iG|sA?U46Q1cLtB( zlj?ufK*Q05Xt^mkW{G5E=4}p5GC(mHy{Czt=hpd*@Uq&*_5#C>6=~l^ipWO#&X$c zAqdN5gFsj=8?7137Q=H^9?RtU%@<>U2(WxH;Hkmug7gObLEvg|!SiTt2jHQEN=1`){o#cx_4@eNo-Ww9|aX=UwfStoh z!E=~LQLv8!%D6*c2u9Mx{%-eD`a;v?~TTrj5iyj(d{AtCEVTd~<$saZ2&1+|jwWa&PN#)%3Gr&8~*Xy4Sv%H!nm@}Mwk5{^ns{1Qz z!IB^f7)cN>?Y?~0CFV}bXQ2mJ3Pb@T1)|y5O#;Nr&ECpXLLg?_ZLyN?%*r;dlJDcq z!?Yxb@YqP5=3f#-;s6O7@F>iXf+Cwyc8m@HBB1&A-?TJgx-dhyGIn?3OG>SAqPf;Q z$^5bsYbpkvH57x67)G=-2XIT7^D!aP_Rtk`>A-6=t~(|exjG%tIn0x3Zz!xO%G855 z2?cF1wKttB1)(dg9PavZSDM`w z=DN)h+S=I%f*y>JvB(vIEt-;&HPVNr@#+5;HM3x?G_%r&{NlJ7{>YyR$+rmI=(@j=epuN`-ToHfW<`xj@0X^Pne;z$s~zTD-&%222YUF$53C4qb(RKzWn zJ|ALHSQQ72FNK&*_o!`(73!@aW5cqw+d_WRR|BB#w2h^RTB0)NyT}#fU94qgJXQ5wYzQv5HX5CG))5!bFLyw_yWufm30iK8c zH#(y+UB4^dvx2UgObAV5NK?q1$bC`GAuS;}f_aj9wL_h4$}#O%UY~tKHike3Z{x41 zy6-kW$|Z%;<9cg)1v+knIwg0SdQtWj>W-+z*|%ojmVF>^dGPG%;30lKAL9MfT;-t4BGURyW=d~2tHPS_JWS~os10POvHbPL znt1!ZLzl#()sqrG>>BYrbiD10+ONc#qs-GThRkds7*czzfp{P{}+4{-ihATiX$-ZyzYR zJ?)OPC24o2ElpdN_F&0FCAN~^%GQ`sCzOMn?iA^~ZFSaI2;#g$!cG7?$>g2vFSGdQ zBWAzlN2RR2_SXSB1{2Q_S=JrLeY!P?K}}&WA%sc(WYSyOrG}2w`KjxYB2v0@$Bjxq z=Us7cIEQqFJ!2*Q^o2qY?`H7mKmcGfHwqR-a2^i`zy)(O8+cDL%}^W@GS@|bbudf8 z>sBmG>HNr0D|FDAS7k_2#*n zJ37Cn>@;jJzh8B^5o;0(j}7-D5)ASP_>fkg;9;bi=sI}#8S_eN6*Z)4XjMRg!?2`J zmo<30Lx)`|x;{N!*9-UQiFNgNda^rUSBuVXKJFWddnBwQe)GYb3qgYW4RY=QER&Lm z1Cnq+G7d;#15h6HQizVeq)2@7pmX#un_n@%YVIT-`fIFw=yYD~YQ|;d^d?5yP@VqtALIHQb-QehZTUAe%5Mf$}EX4vlu}tdbJyJ5a;<9){sO6~4s` z$%)T+;p%1B!w|Uf^|CZ}52hataw>7<-@zIo6*GcMZ4kdkmVsi>#+g4uhi-uz)fYIVkV8M zIwY`d_yTSN6+*vPu5H+FuA(PO>vFvwMM(C0Nd2YxYcNdlamXhjSVMtR-eWeHN@JpV ztye4D+4{R@)b*0(=C>QNxd$UK^hrJ5*4+G=PDD_@&pz!*kbwgfI3N=TWZ{5p9FXGy zz|R2H=pfhtOe{TjLc3g%`2$rf{nq@Q`FryZ<{!;Jng3_*D%2pTuRXu@wLkaEq#rU` z6rxYAe9ztC)Yx#Xbh~1Q;xkpQW>&sZ^SmH35*sMJ#|+sQWeeYR>hdAK>;Ry=k7%Et zvLIz)%3iP&>;ajgEYZv2`0|*N>r)1mFVt0(C6rf?MzWHelk=HMUJ_dpS5jAi5mMaa zx%GTV4XyE}kI%wBntO4{cTqQ`%uV~2ut>fm+LZ0ex&liXHkhKv^Yf4PU^wgE+E;hF zx)KcWpdQm(SE7}%Xe;Qm^(`(`6{-t0g(ZbEi)Iz+3g?$$LuK@s+Ts#lq#M{-HWhtD zKZZ8G$F%;+Ue~-nqU-)rzBWuN&F=$tZum>3bp_+~ z6Z8}H*Z@7h;d@buL9WN29r8sESeGvbN;c>xD2nB=K`D7+kdK2XDXXq&3^-vvY5vy? zEIZRb5WYhmOaF-cnEZtNl>ChRoGjE1)+#fkATQ%+x}VCY9E%u`>>9ZtmTL9@T)?#) zP5;YZcOL9s#qJ(zDVD03pfHe-$G1pqS#NEh00S`YpP4CD>FjXI&E0E ztJn|L1sMl@n-;_u#?!JaJba+oS|t_9E{6^_&%nRvcO;JSZfB@PmfDO-87op0>Q$U6 z8EZIM>c=?E8S6P4I8&mg4ZdRV^ueh6B5!vYd}jmcwwv#YC7@66aIlKx8^R17c>;sb z5F5TP^#}4t@+Xp|tw0pV^CB$FP3l0vRUp!`0<30Nn3ceVAIyF+-c!P=uQ=$TIM=&E zQ-U($N-a^AXx1>BUBk#A&Ru+l)`A0KEDy2~2*7i)|H$N)4djZ%vZzDk?jav3 zRQ(p6gYcge#6`wO4vI{OOpHv5OpZ*6OpQ#7OpnZnR77S*W<_R4VjQV&^NZwI_ETR{ zRrxmy76~L;d-5#qZ0;QHRott&w+ObBMi(zOJZxHPk`><*8B=^Mw}X3g>Wat>MGq-g zD}Rky!2K=e-pG}vq2j%{@8sSW`LpCU!R>-O1lL3hQiLf_Yu5;Pk-td(Ou5Z)B4vBl zj;z|$t5UBiYB9zZH|w*E*~T0rVeBbi@@FqifKvK+xRmtG!W$>*x*{-d5vVD{h9#tL z5zHp#u*t^|8+}eEc5+YIE%-?BiQ-emXNu1iUnnAD7xQlA;b=B`(Zpf*mF~JzkcwNp z-Mv;x_q7MzmA+DZt+0ezL%&flM@C)iyj`O_BX{0q8tig2Tt0fvMV-v~OTl=}1kFTE zt!9#@PIE+YRPmSMZ^b`~V~XR76N;|{Ukf;yA(`CF1A=b_^%`DgXeK|?p+PJ2o#1-` zlSVXPt#`nD4~?!%VBZadWtm2jUZCdUt};zyXko-}fHvr^kgB{UAh>;SGtjk}c~>$a z;3}Yo_m&dxy#>Aa8cQv|)_Gy%!JZue$iZBGW9ZnFumVAWus~E$VoA}Z>e6(fqPnz8 zQZ|S$O}Q-PY4MiG%Tvas2tld$0tLGRS%8G-AR$^dA$rSJ$yN!&+9QC3T#+_Ctud`B zO>4O%rOX0o#Z;J!Ql|1?g>Yk5N%8N7!-hW$D}}3s4+w7@Jill`(dSxY=6+2<%8|71 zwMPuc49B%6wTE(3Dn&Z6PESVY#+jtLL|u|DSr@7-wHPdk#!OvAd6BN$MQPTx=&tm; zC>WKw@D1&ZI*ravolz$(k0~Ff8=*Utn^t+5Zk*0Qj@L~z)#|3}8g)&Ox(X+CGjy@# z^L3#>=UsQWXFw9mQmZf-*#huI#m!ZBRPC==QdMaY8^u7+UihB?7XHv%uly>@cVI1r zAq(6q-_;$95P&`!y^0WUA@hk5h=+neU@-!21ouR(h(gB$`o9@{MO(6;(Z+%@_8Lk& zLDJ{d?cZWKTL}WcS6eN^^GD?0qgbKXmHlpR=f3{I+yBeNE5xhBYsBlsW@55(3-KoL z7O|DsMr{61ODI9z198I)k^GEzMxgr^~!AoAGy<$O7h5_8+x<@Mn<=#^rO<+-+>r|(`LdqCtVSVfsvGb{+dbBft*HOK~5(d$tJRyY$2~CTgf)Eoy3Sh33BkkNl@Wgc@rWW6FhUzIbVN&sxaTT z^h^c51rNh8jX)#Rh&16Eu_i(jsgY>jD}BFoU+FW%CgNG*IpROW^TZ3pi^NMr@GxAh zSfkjN{jg%K;t|E8ipLa>E4FIaDdgtuT0!MPGFtkSV!dLA)}6iaXY)wQ*{G`0-Erv4 zgS%nw$Thrs9*m*wPCO3`DJDa3z%yEmL*|_`9Fm#Y)*qJ~6BHSO2`SG(gF*k~k{Fv= z)Thx>XWs(Qb7tdDa4^DKH^XA?-)kRh#P-@JL8bQs+~Iox&JVKp(_S(ncnR)*m*DrR zFR^6E74l4ZmONXYBPZm!a-}>^o-d!5x-RS5)I#}Sd6B$Wz7?xY(;sz0{gc6CnLNFL zBT9oil*ygd^X+K29@_*t6bJ<-wzlB`I;(92eAod1QkT4~+Ns*5+O687+N*j;^{%Re z+^70b^^xjh)mK?xXDv#vvuJ5i{a|=sW0q-fX!?GyIw1Z4LdnPf9m`%(ft|G1`t|8_U^N4GS4r2Z}Tu!XFOuIj( ziAPD|`;P{r-qNK?|CZqGycpR%@MTJdE*}iPfH-hf{?+-{9jlMwM<7i<=U^QMVk zFo<~(y#GW#9~sG$@U9TQ6#bh#nkVDU%U>G7gU5l(Ma6l3NWu^Z{X^ZqQDW;y*;--1{8bLR>lJPn%jV>I4caK8F%oXrV=nSCM0cu?>@8stImWxpT1 zkp`?r2=bt=c+hkU^Rnf~#U!XL&MEd?B&HX>DG)DwA+U7G*ZcO`-)w0)>yG)oQOo-- zv=CUkTsKwlPJR~duB{S+g6OR(r1esWniBXYM@M7N+`(XdM*w3U=8nK9wWMpvl#&+ zz|}CQYb85{>@}8LP~*PEA@d^uYaq7E;ZLZ0MSuv5)5IR@|MyCM}8dcWZ2^wQ8cbp%@b9R zRMm=3C~HsxavlWF2a>O7@N$cFdC=#leq9KO`<*0WzeN}WXgcvk$)3G(#gV*q}`@H zroAS9($^+zdUXSGk9?;>Rx(ALl z!fOigH_|NWY-XPju)=b$WtQ}Af57GbfcN+VuJ8x^JJw^-L2H8s>NX$meU|$zD=n)m z4_F?wbd!(wAvk|5AMa}4e7tKq%g6gL?2hH*UF$C&?<0Zb<9#&ne7wF*u_U-6KS^-? zroerI^#;Nh2fcw$`li5LXYrFQ_NmU2+pdQzgC)1!fM<(!CAZz!b#mLMAtEff?K61J zSf*lllf``(z~pbXGT~)d<7dDt6M8#|v!zV<53SzuTNVsWCYmqfPs*AvlJjHva|*92 zjN`}i2k{g5N&IB~LeXtyck9zBG9s1##ULtz;HUHVD>L{C{&k|iq<>5QksgyCm!6PD zMjtG#%i0zBP+BIxK5K`rS7pJ@7BPF+6?eVK;gkkM(gB^rJlX70FJVnlvKPFGfesTx z#vAxyGb7GW(*_SNtf7F$;jC{HH~~CfXA03BT($W!fy!_#`XL=vdWTQ%=)DK)AEASS(Q6XZ<|IWj7)f-Y*QLW zP$f9Kswt^1r%|POEzM3p-dM*WBZ>M#(_@3{yHnM9|;9sVsLPdY&SVQ-h>1}`o zyEBhMv`ntA4{L-X;=Ko)`*P(E0gCR1J;O*Ar_2eUO73iv|b%7m(95Q zAyz0$mM2dsUy(Moe3!+MJFWcfl*aN&#T#?5reeTu*y3#HfDK7tSzAvKsPqKYXMrKU7g31y(lsS3(SRZ=FZ zirQ;=$AS>;_98-MLVAXPnWzA9Z%>>PZOtwZ>NbM9ji7F$`hCm$)%&V@le!?N;C)Wf z8wD?R1FGutE7>yRDPGDsEba`Iw~{-0ac}eggGz zW7zmUwZwvp*&qoRD!GI`#Hjeu%r;!`ndNiK7q~W8?o(Z@Gi~mEf7E>msl)WSU*Y;( z9{Ad+&-IJo8;AhY=pOK=(fu|sjqZ1yXms6T25k{IbuoiR)N?T-7F^2Q79@FLXP4y+ zpIvceJUNI=AQQ3QIrD@AbsccD!tALjn3Udw%i8&W2a3+1WBjVf*>uk!!Y zs>Bqs_jR*=vfM}Q$=;j&PWHRm4rN5}Gz*?);``+H%kMTUH{4_BO^8=-gb$24E$P!l zJb_2#_E#q5-_4ecb8Eevr#%TS^PJ5l1i=>7dLD56|FisJS;RdOvq!y5u~&VUVsrKz z*_|ak4)XjU&v#W#d@soJ&pyw;^E~4Dfw3unT>k>uw@&9uS~3uV5!6WPLTan|BI;u5 zQtEPQ9Cd(g`4M=G9ZG|hI%v6IFxG$v?MAK#7sy7*ka5O|yaSq1c9s2NdarD^*)+J( zXg1bU4yucEr-v;=2R~UlaQxxJIypR@#T zsX=}p0@&s+NMn^40R$y--M%dYn5cmwKsdi64`)3(O43=G9sC|AMPY@DRA`o zXxhgfy_Ou1YQ0tHN}>t38G$mvG?^)?D(dxAQ$}^v=qSCm#8hgk%6P-L#rUT2E#p?> zHsk$O+l@PnZyR?ScNupZS5}S68=W^MZ*1O$c^Boas!Fn^S?9{;$r!0PU8(7eQRytI z;Aki{U50f9SS(~wrLZm%-oga&K&G`cyFO}kl8)p0UTH0Nl;=ZI8WOEkp1N97T~b|{ z5vtZ{!@`B?EGuEgx`^O6>)VvEsLr<^VBwWwpYTe;`UCkR={LkOmpMKWl6BUE4}4mdYXozJVrd9b8@dtw*!s z!Z&%LdPWQe4gmreIg$Wyc%?haWV^0OWrBBd9{NSCmS_}ohbe0trtd!Ex=#xAH<&}W>pR=QoWL-Cm^S2HVLsd-)y8Ho**(F-2xi!=d5 zIYkJ_`8hCW2>^^Ul4BCUn-GW?3eU&~y@`Sau;nladI$%xk{hG0!>uEj=RRk%3*SiC znUUNW;k&?^3zSgia>_FtK)_#eK^_jsX9EhsOI)$H3m1&Gj>#=3#}JfFScG{ zz07*KbsTFg=(QaW*Wv~CLQb&yBw-$9^_PTsqIJD_u0|FTg?0(j=p@ze4o-rjY-Nv9 z2SLDnz2$VcHq;vqf$2MVQ0)T%1w6cIzzI z)dNCz>3mUC+zeLt%`PcyChR`b+Z~NI%i2b72YtQvM(5|I=Zch~_Y>2~)5~XDk4Iw- z1#q$04Kza5rG9XqZESJLcTqQ`%uV~2ut>fm+LZ0ex&liXHe6;eHqSreSnwIoy`XUA zkcpqc!r&%B(7%GmV_3@`1|&&ytu?}xy0zj}x_SPV|5~{GvF^_pbRaYxRxNwcVm*td zG~6w{H0;Ny<*H+3kv6-s;P+^5;rt%SlsZq5pg5qE{GcyS5i4T zuAuxn>-AQyY(&ZNvLVKy#!%=CR#={`9bAskJt?xN!3WhctU#TA#k&>e*6 z+}i@F?K?GMT?vLdp%<@GU5Qr4qOXv#dTt*$Tqo()MRx5}S6otDs47$!Y6?pVXBN#W z(iP4x!v<6If?|JYuN1O0DiRlnwE zJIUH&_>#A{)mN^U{8np|u-OTsc}zIC&5F>mkzHQdWy+)|nBe0~q)fWq%8h#6EHlIy zTIhry0@>r>eWb z5D)6b`~NHZd(H1N+U_sqYs0hxtx#(%nXDISv4PTiK`V|jjP1=Stu|gFt*~-iU}3<6%7?l6|*X?shD5! zu=SRTUGm+`W|82jiuDy8QSVj0UwL!Yuhd%Wl8TiToT}9ok5)`D?qq)gLeFcaG(2Km zM!iw7rJ|c*cLX-$ienZ3R&b5$t>H#VEbD#qCVNAdf-fp=uDYXYf5nojO3Q}sFh&{uVnp{* zCZ?yYiMV;-0nkV_QFkRbQ;(7@)RmN4+e}UglF=e^Y^O# z2O=2cmit`i-}Bb!I2jYf2Rif5ReE!o`30-d937X``9o1$xaZ+!07AjHRWDj!vL3C9 z4HvSh3W2)$m;F)n3Zw|Lc)V&Auo(z58satU@v0M5SOfI_pa+;+LCG2RehP+2@5+8R zxBpcc3hIZm~Gp(cZ%ETqnvkAc8Xhcu^C9oAF;^{?0Px$j)jl#z4>ZLi{lTj>0E6X4a&*_G#dSWofEq=Orp8d)tlO=A zLoIh$0}i!(+uBK}C3?W3tpk!k0tRgez@n`Ks;YLE?J3(^_DmEp(pGeKU)&L_l z-?1_yHGMojeCu`ez~kdR+T%kArm{uvLeStYe+fVu)ZUhdRfHMCgnXg%7D_vyNx@wH z7ux;WPjkQ2ex?0d`;GR1_FJtcWvB21>xi_Hl<%~FR^uXr3tT6r?QDf`V^&G=?}o#M zKMeb*f^Yfowq<)&1MbYh*JjL?lUNp*?3 zBweyDR9R{jm}Ne zM^i4>~(dA6hQL` zT8~O7cAd`L#s8FkVhtpbGEI)LPa_=gyw2Sb6AK#IKB5v33z~4ybatAo5b(M63xD#( zekfmD!S4Je?$;+^`SpEe)n{OiX-r?XuLJjG^KFU=C_x97paToa-V_v2f&xmNxL&+k zzQV9ZJ|$mVd0K+(K)S?7N!dpn={xIgbt|`x+s>WAU8=ZIU>EPFzND)1Zx$>PNVN9k zS=`y&IozwbS95O>Y$=T{UTk>SwALgm4ysIoDie_=TqD*5OEWJ_eJW{v(uSnE)cRCO zx-|Vp<4t{%5%tWdOnMXci!q_{~@Oe-L-cXIc*rS>2K< z_U81qx}@)W6FjyyM}MO}pnfy@t>~@M+oIJ;->OTJN|Urnx}@*bR?G1G5&8EhRwxGU zu@$T@SuEdLx~)_te=JEY*T{>Kij(?t{e}K}d|_Ig(_av)JJktB(CIFS)g3wRI8~lY z%OzmNsorhz8<~0p9tl_(%%gZ@Y6$qt>Zi)33&@I2b+=^2r@Dcx2vs+b6{G3`b{nPo zxAhbxwFr^2Jp*T67UEePWsmS&|}6iAwQj=IEQu z%>9>LW30&7OULy7&WZvnkuXrw#rK!gCFi!ny8qoA&ogGUxYx-yec4few7Leyl>FIU zF~zTMLCnq+zkcgk#zWmLrurR(tA2SP!KwQ7iy+Zg`J3cV`I{W5@;9XunkUhOF-zy9dJ~h7~|2ah;xH0y=D55We>dA$=|FS86m+Mtv zhsf=X4*f%1DKipalD!Y%UqYA1NFuaf8x-Y=3WZTosW2(7i@84LhL{^;Zi+Dzcc?dn zYz)~XS)#sEy*TF9nA>7*k5Sl`sRyO4)FL!BFp7{ylLUH(WM$0VY8N6QXm$r~p`b*B zv4ss-1M>h*gb!deB5Dx{+BGvYPw<}Pt>Zn#%eJlO&9nR|I3n1@dzP1DW2AK8m{6Yx zK)_4=YIoW#lq!z{a&1^vz;H0isrUk}qV;Kq zbst97B>a(cBnOXe+*a)}N|hzQnDt5dr{x8uvnqF(-ZqU$7@6=u*`_p%n2H_;TJ{|& zZWk7Mzo!oH*VotE1Djy|0DYl-Cx)_%t%C11V&@$IKnB-s+Ok0El_0dOUbLuYZ)ceS z-ANGH^>Im%7K>;?|4r~e%+@%I9eGP?9uT+^Ek(k|9j-KqZ>x5ycByu&_Nex%-ch}) z>LB;2K2&|A`dIZ<*4J5!(r-y$T%?y7Wrv9}nL%bwvLuxfTB1^Bl2yqLDi38{ZW(8( zw3%!e>UhvK;w43Q7A-BRAM8aiJY=@}{6o~cPReK539^vCSVBc&MN&n2b#g^YMQX*( z)C41G!y{P*m^v}>Ep+`eG{IP|`qMrHG_vLjQo6zN5T*3mG$k~%C{8TzBiet$0 z=r)6bD~H=wfUDWJo)I=I!?3uM48tRBn5+ER@!!9|7C??+6oR>IJ(3X2^8lPY6qB)g6P4F9 zDf?pEB{q~_DL|pW=TUimOO6oy1S|Eq#5BaUKnF9GQU~N>_M*#~s!FgK0W&4zpsMm( zFKg?7g5G!=CVvE-Y|jVzV}fmq_DyZ9JWd`jA0)pfH9(`9yK8`1I#s3kCB%w^exc0syPlAnCGNL!GUQdJXk9 zSG|UAFtQ6V_+Uh-^e011La=~MD0ZzzqG?Z4mUeZIU1t1m`DXGB@}u$&<=>^56tbjs zeX*Wu^RcH@^{G9rcO;Qup;xEV0e3hXu#P2WZHfH!g7m`lD{OBnRp~LQveZIQrxpchsjW?XX11{(f=W7TE9&u;(h$F$@(U_L|Ixj~= zXWpZ9{Vt@1=s-SGlCXc%(uC>44B^Vy-H9(LwZ@6&TJt1xi|tAq);I!m-ZTMR?->Y< z0}?NU`sdkB*^6LMCtd_z)V_WM?zC5QHuW%P+N;#O&ulHCZm`{GyUBL5tx!8ytIUvsyo{sii`be(myzTaIA1IjYB3%P z#Ra!^mIdoJ*u9FmHXLv}1TAJ0{GJj^j3tDLvF@-f2{bzD&Q7AEu-xz>cwzQ!8VYV_ zzqFy?4jizA4Y&=eVHpmwTyU4|ZrgI!@RjECh1E3ftg_q6qivvKf~0 z2A{@%7XNMhck$oH{}TUe{Gs^Y;}6IG5&viWy|$bP){RsMXE3Mas*<@S^Ge={e>Z+= z>V38m-8T_}a#*H|)+58805e{Z9wy*6UIt<>T4f_6Qu$vDq9O=>I)A@1gRkIUC;ChJ zxAY%a>hrktgfuexU};^}uE>YdGWqpcJ9ICaUotzgCTIO#mT7LRe$#|oj4-k);cNrX zh1K`uU|&&8fM1c{h`@(@zoXUocf9eBAa#7seYuGG_G|kTJU_Di#rf z4=raCv&n`rN$-U~Y4G=gJZsCc66OclB@x45&A|W2+$n^ACz;mv%`Q&(ANc-a)dQcm z?WBv%pm{+WnKdn6upz&>$z~x~>UsBID*%3jCNZ>lXtg>3h-dJwY}qTSMdn+~jUi1T zb0YUey<}?%$q~$x)TE5xhBnQ);T zIGU5qwl{44+$gu$w%P`U8|60JcH0h{gu+}^X)WU_(pex_ATFDo`JTRK^PkcAbamnm=A3jab}NXb@oYf`(V;< z&a`vjWAOFH#3ng;0Dm67lOw@O_T_&b6bt3FNCJQG;Fi8$vY7hJh8{$DA8>&SEC#FC zpBI^TMD7uek(9^-4}dil4_EAGip5~FOEmowilz^`#bVT&1HQ6#W1C-VT~e{Kf>X7+ z;%nOkqmON#Dan4*Q)|CpjL6#mEyP5E2Rw^q0`T7$I5{M)!LW8jI~Ok2PUZJD3>*Rw zPzWAmGaVs#hz)Rm=zJG8s}C3Y$@V{6Z#j`W64$@Ez9)Q$CeMQLp|eYz5Io{tOt=*w z7f880_|vJtK>#6ml-)uI#y|@jtHon@i^ti32f-8Zs5q|^>4Q-0ep&L0PhMZ}4mk3ad28Yy z_I`4x>rvZZw$+eQPgkVa_J+GI0K(7+^)gvmwjuk{u)p!9LTFLKn~1?W?+|FdKLN~4 z0An|u`p)BB848#RtrLDUo-T!!AI!)A(IsYNPx#jdBMF{jf1tx@g;fOHiVgr$;i`Ui~DOe4?; zHNGV%?=(I`Y$Bc|o+JK4JWsqpyhsE!Fa82p&mGMR&yKOFyUrusOJMA(Gwln{?qhw9 zG4Rlgz{i406jrKf>%Ut(*!!3p&eo)o7RnCEUS;V zygVA}2K9~Vd~rwAI!S~*(tdT!ddX7lGA-(&hPZg}Kg20^QpIlSYA6Ixd#`q|vB#`R z-)?PZ;qo12_a7UF%&T5CfJZuDYbZ|t^}B2G_J%#@y#>Ri2YbW*g9Dz&0WaWy7jeK# zIN)U*@Cpui6$iYA1761gn{mJ!IA9A7coPS_g#)(YfNeNnI}X@^1K!2~J8{4+9IzV) z?7;zhalkt`;9WLgQ~a~>U%@SPp?$D@Q+y2Q6GX@;`mL9u5D+OXwlj^Q@asoLQI&lK zc+VrrKp+RG?aweoC5Qt_?L~Ht6Ab@!%@X}01n;wXgxh*eyQ~fJFi)i+F!Q(8j-iNw zVoV?gaIM{Kqo&6udNFp__G)YZMZlDGjTXBt3=0Z1#Z9T(};c zzFTpOJWc|NLv@qjj=4K8*oN4Vqn=x;Rs6vd4EpGQ z>XF&uy$d-h$AZs%L7)4AzQ944QGFOZpk^@;B*L#;bVtb-V;9sD=c^LmIG>(Du75?tU3p@L*1JLOmG>k4)p4nL1& z-a31|{nf1XRlx(%oANOz^#-NhvEmEG7l|(xx63aTN2iPzPY~ZHKRX8^#;k(gJ8=e_ zX>}&~VoNt7$meN3f6@{(XQJf3K~5j!^!=98-yPI&Vw@hatqP3Nt#N2v7yc5DA-39v@&vIO4-f&pv9#z2Da zyuue0A;BTKR2uS4gMWKPN<63~Dz}N4lGkR(I=Ea!nE^8HhHZ4x5gK!hXDM;a)!Afr zTy9I=jJ&bg^`KNOqB; zSfNs=6|?PahL*uXkRe0f3AAS(`~}u@W%SBp5ZzgsI(LSeXZ6(OJJ_|-KTD!Z(m@4R=b>gx5AYAciM8r3huq!g~|7EuS;IZ{X)H? zbiexT(l6CJOTSX@D*al$yL5B(H|hiGH>2N*-Wt6vTAlQ*x+JMINt>ig`d)3d49_2t zA9Sk=y44xwm2#8($)vZmOAQ^V^HbL)MWnP=N2V-DbtGS(EJ=~3M5QcDeJW{v(uSnE z)cRCOx-|Vp<4wlp#?FdOoGXrX3+>n0ePV`A?_G2tGA{r3P}kxK!T;FoAG<%|m(v^V zeVDg}eK|cf)I#txdm=)9&Cyd!f-=AD_#2J=e7%f;o9%50rf z3Fv%xwC$mQad}uF+?Z8T{JY_>;Sa+;>q_A&;RC`O2mhJ&xz?DuUsI5BB<&Xa5yLUV zaqUU%q1=>8kxs1BlM%XcCaEq_m!wP9g(^!e21}wbQ@7Y&r1LYa5?!h8(_F1ir_<}o zbOv3yjybIgT_@9;+2yom`A#brUROGsjz;I6&TV#Sc})2*-3Z;G+_cKebmMdea=dP$ zsa7{#*QjfP)2VPyXNK-}`+QwLOyzu)9V6<@rgFXtI+s2h&AQeJ!T)*QZRe%!QKJ+|=XQP^dXnc>ew-hmczp@{9O>f*loy3@Bf611)#{N;tOi_K| z`tl9s8_S{2w@SNm}t8TRDBAzMVRQ_x^HmUK@G;%7F z>C1eXJ)ew$Z9nmE)WI6DO)}Ue_lk33k9{*GV$+;5pm*JOdL;PG^XWRTr0>SKEJ?Jn zg>C-&G`v7xs2{8^(iiJhdbM7oFVUCkpRnun<$5M26GDYya*4G5F|4zf>s4~r!0aox ztJ}wAD*Y#AuHmreBIlKx*$mWQKb2shYW(eoOu5qG`U@kw_+>O)Q4B1-cqc&8>hD! z!Wjz=vi*G}ct*QXL9wO>p0VeLrRoKHuq3)~N%a00E^@vIHVNR6=OlEVUwmN{NQCDY zeG-O&iIQ50Sv@9G0@?Zx>?)nxVM`4jV3DMBmxmG=oUi;t?q%Cao}tLX-L_(1V{Jzsb@#<*6T)5@vd zGqA1{REKHz$5S|&Fcg8GOeFY&eGs`*3enl`PG3r)?e@+yF;RAm41c+pj?$79Z7}LP zAH}88x`Ofg3Hph8OBpsuZ+sM)=*DrzbLg6?i0lwpHdZ7nh%b!y0bUNTE6>0t^z7n1 zx}Mzh-S$29+KfpVD^e8dRh%gqYdBfz$2iRy>p2@ZQ=+B~zGCq7!KnKpZ+97#)dT64 z05kcI_jY6EwnyEWBcP_G-lizGJ>H}oHu)Gfp|5j^oy=jk;3LH+icb}vDLz+xp@@uK z%)6Dx90{S>=tUEU&855U6zqPBx4Ybj3bc-2DZW-%Lam|SD3~Lou65q7QJ#@I?=lT` zxfyO6J?A2y(OmoXrC_{ff@Y$oRx?Rcr#YfHs`yLsx8fhgF~xDk3B^}}uLYdUkW6mo z0l~L|dJQi#G?Sm{(4dw1PVl{eNh2Dt);nOnhsM4hNC^I9Ut)!zf?aSo6dduiFu`Sm z{C~xJ!TrSksohj^5`7T z7C|J~=UF^&&#^0j>#^+v^( zif%AI)^({ERM_PJ#3TfNd0r9cw6NmosNiT%il={PFOwN$<|Io}DWN4QWhPmb?4a^c z*5#IQmP(rm)`C&NV}jun{t0mDJi{Td116(pyn)}SPALCXg1k7%gT~dy??gX{eiZ#A zI-m;UtT7IgJrGvI`N2M1HbQp4ex?3l<5~(s6%VHvIEqrkT1pK5cI)v_@mdbB=iMrd zaYq#(P!^abGeuQJy`E~ysE!&PrPr32N=;Q6Zy2{2-!#5u+-lrryuWI@afk73<4)r) z<8I^1s!@5P^Ty2%6scXn2=IR}lkZ}; z{OqFZ7yBaNEldy({Aw@Fu8$g>)J0)k|8+=yvlHgsd{^Bfnn{L(RV3dKX6VQh7=(t{ z@O`O-^#}4Ne+70AL3#fl_oAT<`|6z%TeZv0UGaL5Xmm5dnJ8ZbHLwrzr}<9v2P$(B$h?_ zEgpOfqQQy>AGdd5y*yz@)=O+Hg?`r3&r2W}ht&AYn_Gj;JJeY; znOB46?T3y~hyt54zXqFg2>h_ZYF2;~?0veIkI5cmgGv)a&r(7J72mUoImA`O)xDCl(M3iR*~ljn@-55H}Jx5jPWyh+Bxo#I3|_#O=f##1i68VkvQl@h|n? z>VMS7)W_8))F;*ds)2^13DIyh!61#Z5u_okxy#U?|EPMJex!M%WuwB8FRHw&I=u3O z?7P8Fl2PI@;+_T!pPo!fu1EtCob=r00Q%>4LP3IH2LR|E#Eez-?<*2svyuwL4aFM> zOQVN@42(e7Q$~V&EvV5j!k_eU=yi2KPMRpn@t?@Z8q_G(+lUVZ7wEVFo}2c)qPTgQ7r^w-pye)kN3GY8ZzPA~FOPZi|734;Vz>pm)u_-Tk`fe`0*<)L4N>F3BB?(5WpO?2u2f9HKC$RG4=97Ef{0T)vT z=%oF$6vuR|v{D&07YxQ4@Zh4j9tc60n~@_v2mq$;EoZzZcnbbg%m3fC);X(Yv}^~6 zhXm1c5&|1FB*ISBP%rU^P(!I<)NpFBT;M!(=q7w{0X2#mO^u8LK}*SW|sv;v!H0EeN!7NkCQX=^>t>? zF07eJ%p!uqS$`@_({qdV;F_YE;u=+rx<*s8#kSSvr{?tHYgQJh)ddbLVhqpSHnnwi2@ zU&BmdOLq!~=i+J=yCG^82PH(tT_yxP#{EOhkPqE@-Et@&#(D`ul3PWM`;|bq1W5bk z!ISMgKG}>lJ@?fLo^AcF=-T;ww$Y3%c(!fs;o0U+Y~G_I3hUI_5tR$#y+{s7S0xsz|R+u1Kj!tsrY|rY0Ck8`dx!_-{5#I$O#(1G!+K?Ow|w+brqb z{=v)rgYWSVUg017cdVZwDJjbsECVOZC(S$4KM=k{9!s~>SZi!G_L`cSAvJ~C!CGa8 z6y#+bP2X?vb6yXH=QYV3nFEH^RMY6`h2w$YHAmC`@{eEyL{P;>FtVmts$zmfAR+I9 znkBa5HYreLs57eazOw2wx-f%}s-g1K)tc&(>dK5zwN4urE>u5jLuPPn=FtJo+|Rtn z_|AJQK5s6#&^d2E-7oT;^~L^XeMxt-7Qy@0r9QL8thr1z(Fywn(1MNKsKy0vRKXjS zZA(yFpq!yPT>3|;(l|xAV8E5U>AyFs(^UcoiMyCFW+*(R`?>~N_Z4LVG0b3u4mk^j zZvr9Htp%V{$$3+IA;BJL0q{~bELE-)*;$z|y z;#1;@;8Ap16xXNoD8iUoFfhxXc;9(p0(6?^4FZ5aV$w86T{{q2Ya1P|-zDbyhW6%G z^Xzs#~scmv|Yh(BYGiuu% ztxa&1CrjWAn(Jz(k7`ELG&hA#p59#B&Y8`b!?}txOK_ock<^}MBb(bAP%}8Jv)gFc z70rg6+AzJo)zL)H#yye|tvg(9NXeK64^>gt>CKaBnRG^48fH7{(@>kXc1KJ6u-e%T zjWZh4s-{nGp2c{878SN}jw-BnOs$>S&^)76Ts5Pm3oJn&E(xC#N|FfJ;M- z9$7tO@?=NrX!uUZ8b*vxgOD^AC=J1+BWqjXCQf%$H8nKWLcF|5&CSzgRI{Tk%>{C# zkxRjR_jpMaWnN*8|i^t&*l@CPi1JR6&n$_Goz23c_ zRkIt~qNX!<7(oQ+9k;eN&l0pY)mxfd>l~r*#i(z*z!y2Pt-ZNrG~9ye&X+=5 zJEI*g4}8gI)U}K4O)WFp>D7jBYt?K=o6reEm?f}TU28)Nddtzb5Xb!6F$JP?!6TdK zKdNW6w>LLMwm4s`nGV;VQMJ?ChqD?Wi0kEZw+Wll3b(&~4zJ!(TOZzrxCTUy0BudR zE&PV2nU2e{+1;Hv~bG3Oi3Y2{4eOybmrj)JUXay;aSkmJ-&hYMDJVS{7V z$mZ5|^dxjvLw);H{!~Z9l&S5KCWtSs4sJ|Z%kY|u`q@lMOvSiB9(mqvC-Oz49{URW}GvKB-O&M0(b_Lu__@E7b+oK#! z^$x_f(RmLgz=EX+XW=w7C6h}J^5DY_Hv!Ql+IC`<`T_=***>UvLT8ImAJJ)Z~ zW1HYUk8Evjf$!j)(Ni6ccDPcbYiBy@X<&n+joVn;0yhC-H#f~}lUi!q+TA^zr$`eV zCESU~)g;0>l$$zNPjqO|OjUDI^5 z3f#Y-C4!?P+M8#!NzvNWIpBv%1JD_Pwh7W}hif*Q9#Atm*85;g16pC%u<(6yFI8Kl zlW6y!XiZ1Ym;_0Ki2k3jH*IPwS@wS8oVGFZjHmA2?R|#*ob%#7VFaG`3r7ILwsvE~ zL3rqn=x_*W0lF5Fww46ueER$QXI8C2K;IXjRav!a)sU5yQ)RWANvct?ZE(9WY@QwV zdNxklRBGM$&5Xvz=B}x^LdCcOtk=t`YLHM(T*)c@+Dp2p!?Q@wOD_o38{cDLE$Nw$ zpE9yM`|(qt;H>3|@9a&TWa7$ynpaT#^j?^XsqkB=G6A23)(rPML+lleJ6uUJOls$B z$oh!T%6EGRFM9@s-?#hk8+{g5Ej@&oiR#dFJ%$ZXS$cnmWj3Uvp@J%Vp)pHKZ}$SI zo(zXfga&pDLLIO`V6b*NT1rpT9$3W3x7&@BP5d)!N|_))9D8r#>=9Iy9;a0pqUp9; z^2B(fdNb)l2)`bDsw<0+^5hF6HD=1EKTe#OGZBHEq|?z*%y~xGOQwaJ-o$Cg8q(s2 z1izzy)c-L})}OP21O9+&;FI#0kMJ~Q9NYHQFqv)(U2V{&+v(AuEq1Iw$3F;L$47I< zN`GRVCf{eYWrP>*Y;A3CPZ_1wlU5Kkm_-x#OChShtN9%;G++sHX6wWG0|r#J3d`w3 z{ad>`w+)+F>z;H*Nw=9yT^fq8{l};E?5UDHZTvBNY;VyKiWU;<#YCl;*!Y8QZ_{@+ z%w(FiH)wy~{JweeL-O<~f9w2J_}lm)Stq?tdY$w-=?duz=?duz=?&5wq&G-!Y}{e^ zKf#fH{It#ojY;Fknb=D`L4b4p+`&FO>1`yQ!3jOTP!hE!w}+>%wg}+N`f4 zf>zl`Y?i>pH-jYk-z0K*^9N^FX}g)m79ke;hgOZ0dTzE2L%Sk!1)c`THk(T`IXZ)y zo%K2`ZPlG5>Bl`2gtT<%Q3TUGcF{2)7!MbDz~(?FgjMV#q~PJNR86k~p=I5Bp3OOX z`eEa$$<(Ir+CvuNDdKBNVUw@3#puLr($a8TcmL62h^F5$afv;;{FzOM_zi}#%b-Db zm>*DMtJ^&54VWQ`D^LRFq}~@FIAb;Vvrx!@6RH15FiHmV&?XQzO2Ob4Z@=#$_f6Z& z_6QBL-%vOX)Z_^hR!6$>Z|=2W^;7?*Kl4q0_yH*b=J2~D44;%KQvL)IZ4Z!G8PKK> z#S%xo!9Pcd@pf@!Xj+_YzE{)crxAr8ub;zZoz?pYOVtfnUlXJS0}8# zhVD zX%F*^a--M;!28&IUz^rI;3DI6aG$G2xz?&Y!0m!{MNP zJQ^nVnjMHnt?JsH_q}e<=@)7yqhpM49sKJghYTf+5Gu5^-T7AFHAAd+M<_UoFv{*; zXp_!I-O{rsEOo6*kwzC`oNIgiuxFaN!vv*=xD?1WMVP>OQw(LvS=L>am=Bb6AF&_8 zHD}ZdLTyOODB3Se@i37-;Ucj#ZF9U8%7hFDteKP=H;Raibk~=FD{v$PMC^6pd#{&j zOhWneb9;CuV#9uw6=e4o#TV<=?*7{DbmHQiMpqY*`_2&k;==X_UKxSe$j_6fW9jv= zbY(2PF_zvOOFtV+KOalKn1!wk!pC106R+k9IqOeLsr6E-Qc7)dXKXM&W3rZ2PJY71%}H*c_(IA;{Tu9PIl>m0o~A?;3*^43B7uWah>>9kutwbO)&{ zuyDL!`V_B<6pN`h@D!`9mL8y?9qgYRUG{9F*%=+f)AU!wD90r%^%*3D)mY$iGG<%U z?TV?PrR^qEj1hCDJ}yqd8sE#Xd*M5iZ$H*-jm|pBM2=>kUJzY7>N!mVgv8*Cp9q9Q zk9sNt?eUCSx7iuN@8;_GEwPfX=g^wBJ5hkuNU|}h#gbA?*k`BRg(Wt*AD*k#hTa0R zVM1cd9@q27O8#iFnwQ=D!#nQ+M?@4Fyj9S?E>|IyS4nH9(dh(&HL01>aI1AZ(plHT z{4VYXQv?d{#5CB<-X1Jx9sM8tj+sW*pKIznh)<{z^y*RLSbILre$(ql(aRo(SE%}p zn^aPQxqjz;Y@)1#c=)DwYHy!fx2O_;5S&rtscMSaD+XRoL5m>*$Malq*lZ^tE=hEQR&RY@^h?ZrK%h)7VMf2NKmUQ)LmW;GB15ju7 zobpi-Qem|%d3Bii^#VzdV?=0NYb(;lC~4c1ybciwCHK3XtJ=vYBzNh{#5H9!oekdE zpv+)6opV)uKL|e=my>!2N_D)>Dq&Uk&qNt%SX@c|qfbj=ocEq}gl<=${Q?3hp zAs^?*ovT1)YNj6|oiTH%qFGG38~PUn@8v6EU>d14yPLm;)2(mjaK zQox9YEnx-+f?#S#{GBiHg4zmKX(!k2c{R5$@cNd*v^8H^&7k7}~hm1q0#HAyK=&}yfB`kJ?@ian`!`Xe+@hHlZsfh_SbFS3-u zdkp{cPx3zYQ{?n&@3Q;X8%ph=Y($IKPtb>)4WIm3iM`}xxHL+W{d(2}FmesZMgT-nG>zzI%@xIaA>i6pmO#-I1TQ>J|-%-3utG?fT zd+>3#K$g-6P=`^!&-gK-Ik`%I*!=s(56}L-d3XK!-`Ahs;s2|NeK{wj_uB_&C}p=1 ztFb(_z%NvM$zY`jhAoqh_+da7FB^b6?8B=e1NODv`W7;#8@*wWiq{(bwiFJu9(^wC zhVk;N{s|a|c3<1K0e=cW6aK~NsfzRV|60c%zQS8}pjM>(w2GK8G&s zz}^p&&s5R}69y0LOCP%ot10QjmXR)oPi8G&bHI_Uu>E@I&(f%dz6G9(%`a)mQRU&N zc9{Hg1QAR5YHBhTjPaW`MWIl`QM%n2unjY)3!~cZ_x5nVTOTni-PU5EgwcfM&dN>#r^iJV3XG7H39mX!F#%#)HU7}=Il2O&ZB&Br4tJ`a;)Vbxyyc+ePJg+c$> zvY-k``mje%c{)kR^%ubn3{nHgB*JbQvR3Rxmy09pexq~QxJtuD@R^}NvoQEJjrbjy zDLv+#(}C^FmUFl8C$$K>>}3>-{Znl7A#A`HthkU7f&b1k(Tb2HYgvN%?C zWg#uqU70T^)aj>qLX)=^b{hQ@wJe;XsnqFmR_ltkuddVK$Q8q{1#=o}{9~WJF8O>0 z(}O>U(L>0AjGD4ANgDF%hF5xKs8pfrNz!R^sdJ-9u&l&3&^ULCm@|SA*{+F>ya&_8 zvj$!WBJg2i=KvfW?g!*pZX?Nz-2Bz(SOqI8Ahszzg9_RFrqjS&&`g(k+-hBDiQ?#F zo9G(0AcVFtLNwb>t03~JRmwnw!t@cQi)F(w|i&k`b`cN;=^UV6_PR-6H6&%t#qt`*y**9u?sY*jmD8heweprxi! zNoG}J6#4GZ>9duLd(Mdu%fW02X6jJ_e@91d+M@Y07Sc7;?|TZjRL%HBk%BT) zsa%~o2a+b8h+ym=zQv1SiXC9<%Yk11vb`18rwOriJW#9%o<*fKNbm-&O9>kjw)xC8 z(yR0Sum@cxZ$3*|CM&dka-!Al1_ON`MpINQR=p6(Xb`VvJ|x4--r$==U6~G8;)$%% zXMH`}i+mvue#1N}FS`UaM76v(~EfAum+SJR4>k{iX^TCA6I|Rfb-0`vYX0 z<2z8jDo&Wg2AV_vT@SyN@VoKHOu+g~x)SN01y|Zp!i6|UEe(!j%3vY7O6Vn8V}h%R z$VpbBn*+itppL8h4A+)e=lY?Ydk00R^_{ly;coQqlM2d`$w z$}H({Ka*B?ru;%flbPbOO*nzqh#lYl}6I3rVh4<#fMw>R^7$pOpE~Ob$OGC$0jK;H~QTp8* zve@O{I7A5`l0B^lr<{~R`t3k95)I;XZU;AH?P z4%^kloovQ4EHxqipq0*=nnD^=xV?ogT%0T)Zcj+TLXO#0yQk z)F!-Hl!P6dBFh12X8knISo^Amz)jBbB*ZnV)jK~7M+DM^&p2LpPmz_<^r+n(f))ix z)PXbl1?bi}BPi8X0allLJ~Jt7f>ksJqja{Inv5%R`ci5?lfY)q%=gQl?>5!rx!6(b zzZN7FX8lVs;S`b+@BmO+9IpZy4HK|6MCcS+O!-hVZqUr^8NBdk%`|X&Rzx20iILhi15; ze!GV=2I%9d%)mf-Y&rHln=lY1rn52(x4$Lyd(%cY`W9hG9_d%*O9^+qRJb+Hpm%!LsO}$PKdw-T!<1st$NJiw{c=jU5$G7CZV}w5rI*Zm1?0oEP zJ00A6?%IElWg8;FTCGQ3NKEd~yrhdzhFhB*AUbe_U;Q_ek|>*WPM9QjkAx+PJ=khC z6QpocNHGvjAc{anF>+a|+zo61SvqM7QD@S#dciCXV5NynJHuh4c_v-_k!*v0RHq1z zWtob+1eN)V*hPb!l`hx_x0j49JVe|Z9J|A{J3$2JYvya<+DRBmeDcpBS^9bR zhNZ2Ca7+qZsV2?Fl}zGv!=B&0G1Cy3hjFa~m10q(M(^~leX*P}d$wwVSx5V8Uer_) z{g1+@_w?z#99*v7>YxQ)zfde0u2>(%Mjo(DdC#CFJ80NXPVk+?VXoV}Vy;v~ju&7S zHW-A||MB73!Ao!yUZfQa$@?}gc`VW)59`@eC41UHIJc%~*x>H92H4@G-B~D%`0vQ? zHW=CXsFOA{pkiTs9sT{)U7QxZ6JWlLw2d=wdV7}b12EEgZ>fxQxoZzP4zW2Xc#W*t z>%tEds!T#QUOC8Knf#0iNFAVy+H2^dAd;ckclCHQ8XTkVU>vm$033`u;=xYQQ{iAy z1ZK0as52q9{cjDLXV5T)N50~?YH9mhW-mu~fQW+20~8dK$$jHg$6tF5T4bPUY0P0~Ix%`L1j){pIYtnQa3?mYI=V&m@#xx;7pU$A&4+z-!PeYeodxsnzG3 z+GOI`g&xp>I~su*W7FN+Y67O@yfIt~MRJp`D6-E|4uc);8w#d#>ML7_zfEVi@yBWj zQN(NLIe%+zzlmRu$jTNPR7gZEm6Yx$M8Q}bW6i+f0MN&iq6IEP+!6Dr-GCo`Vpjj6 z9-MxPJ9^I{z=G8XdJsf{H5)r;19s!V=GV&xE!OkeT2h3pjJ>3z%^;@ND-Jhk>iux7 zh;N};6UTTKCt|jvb?sAwMT2}lNsjUOQ#>4VxaC{Ae2UQ-?=19?njiI3+@LtB@QvIa z#^Nnz_{Zl=gFypjZyR_@t&wQ zBk3e`%1%5_^fB3YhZFBHe2)ebt@bI$FDB1hn@^+xbbaMs;~2&2M8|%ZMo%wD^4h4@ zv!N3~?Zgzg1rg@N`cdyNu>)sn1{l8IX}zOnpOxVi5IjPP5LQn#SHyKG`8dL|RWDy4 zKZ#w3lt~oU;t8ikSuxa%K;Fh5s?90|AYY=bR?cFPL@-b*bxKhNqO53vB?g-^a1#JK2^q-?{`>6(SZQv_-v#{z`g zx-5AE{VaiXb1fCF9C^D4b1=Xg`{O4hsDRL%NABT=4!_k%p@oBn(kP&el!r0{cpE

g1CPpx0Ts!XxR$|KFfQU6R%+$N(#|hIagjH#Ecd8qI~|4M!V4a&tTPyr&~fo3 z>|h@b_K)l>z7TRmj5)i&+V7ns54AF0z_-1JzJBg+F!j9d{l2J(VJAnjoPzeH?H#F9kZ9 zNLWNhb})T9YPV3XqdV}8={-A)T6aeolYQVuRq@+q5jHxaCeUw;mJy=t`IvyOV9{mC zs?mCk5WHaCDM&4|LFZ!|ANoH#_7_KJS%V*pNMQ(9KQL={B7*6Q4?Kn9zZ??b0=hdUZDA7ulD_aCY1suVh zw#l!K=`jZvs6lWvkM40$1NP9$_sn$_M^=_ftSj(=B|9w)L|x~u(|c}3RoAV6&a{dI zFg!RCgH?r9&8oxS1?y*D%9WXF&UV~K^(vQ6#oqA+XUk92H>9;-W{U|vaP1{N;FxVJ z6C^dhfJA}c(U5=#OIzJ;&>;uA7~2|FKP@U3+P`WSi)D0PV>(ar0lB~geHhJq+y3A4 zUPv;qP)h3QT=^PqL0D8=1a?)+NpmRUY#dqk59LGYA2_egGz?1PEJ|uPiwK|l>?qVl zzmUaXg(JOAJ~j9fVs%hcLW=N6w!~1=XSul?vm4>JNTXSGav@=iPGF-3V8fO?0nJzl zMLMN6l!6ED9*N$Lh1&Y50K*#6!Qk!gD4JP5mA&wxu@jYxfK9{R>EMy4&N$M8s`aaL zYWU`u&LkDOw&iY^S$k&=J{`v4%SF%#p{bGG%#`^A@?i^Qg+@r+Nap&{{2&55o!SXr zJrcJCy?VN0BDYr^-}yP0P4jBAeQyQ&89tT43S4h%Yq$sLV@Qz?ykG$_hrU#ExpAf; z>ymGz@JKOi!rg|BIIkS%=nxwxMh9h4#wY#2p1^G8-w=mRd%$z755AGOH0Q_f94O zfsqJx!s60O97gdSD%TcIV!Gi`#uG;rSMNc`AOBY!)Y_>04Qa@;KytKp>|sCMoW)+o zieWzL1h0asN|7R}I#%=!v%mlrGxk`Xy?~mLN03G>jyN8Dp zo(tM)vDl!}Q&fQ7V80tE&402p$dCQcORbF9|2O4it*}MzV!iksA4A{Twk{aVK>_e9 z^u9U#DKFsw`EA>A5SmsfEgNg|Y!?5=ckN!qmfFuGLJQfk@v&v+9D-;~I|K1}JU4ev zyg!}=g0_3DhvQ&`A@hq}9na8*ehIsZ$XvqKk3&KVt?5MO1sZu26i=?7=45WFM%lq> zI%ih8-S16COFD@avb-BR*rU&?qw~JO-WzQ(O^aK#Dd#X&fYZP#>-8 z_JTY);ag-UvRASQxH3~f7vb_+^Mt;EIS<%{}qX41W`7EXzZsQl@XU<30XQW@hW9( zKkZNw0bZNHj)aS}Pn)31pLVn^pkM7Knk#$Fcq_)RkT@^opir2BtFj#zzKC5E4FNl3 zm8cIL9Boe+#2qMERIQ5nZf7o?1P2Rrg9&ck3q+9?s=ly`xe5XQf^;r>RMreAA)B8S z3vX^o%OmMQt`dB?Xg*ZZJ)$gEyc|*cinG8z5y%2#!{Ls+TXbGIs7XO&67rKFJ58ib z;jq9r3FO)&wWG^6qY#G|&@w4gM87#FYNzI`~T{X3BC2yf7bn{;y)Yyv*|z2{O7s+#J#J1JdSRNBshth=v ztW%x?>y#%r?)={3QEd>9YJzo1XsXFGR0wkHn1?N9q2lai$H8Z?B6761*2O2n4*{BS z^=_)QFg;*%CEyZ|a8`sI>Ym=~5Ag0JyeU*Y9@Ae!|B=XHo~_Y?pUwrH0h9+brH<#r zLczRYbOg-@c-5RFBD{p&kbO_?Se7dXEqhRmM_v&dj^LtKd~teB(ci>#j9AV@*oWQE zvf;<%oo~t2Q~g`lzl#2C=-;OPJ=4GE`uAc22ID+=>ObrLQ}Le-|Jn4PXa4ite_l*L z_4JVJQ(|?}%&vXBI0R{LlI=80(%DE3unxaribwBpN#>9NiG)j7y@&OTh zXirh$zi{f&h!}M{S+&sa;?1K#U>Kobp2QXN(TD&Rr>QR?fjOFx3(qJ;_CiTdeAVw? z^zS$Q`+bhN_EoQ)WWkXlqsH?D9x%5Yujr1*#GPh$_*DPa^{=9T8+UD>?Ekv`uh{<$ z5ylZBT@Wd>yIYIqW4AmxV_o;>Njho{N0T2vIb_ZP+Gx8t5?aZJG5z8{zs(^}YI7p= z7&LW~fUIzl$@eMm2R5qtI6z((#$@v%F?MtY&YX?cTD0VE&_Z}JQ{u0{E1YM+o4gc` zgux6yn?m_D99uZ}PFQfG?vl9r?JL7(FMpR>(c;D4mhzUZ(;6;mpAG-n^q*(uU)fAJ7NB^l3goiyPN}lo&Vq4@)nW~sLL1?=hrm`PlJR;W9UX^g z6WeXhCKu9G&cU6nl6Zzq$mJ*EailWCGS zTmi;Kk#og4IH?a^!zF6LL!fa;;Y zQmizo_O8SYFSsE!8wxl*(>}{3E5z3pDeIXwE{4=D=v1;LKQm4C@x*I95Um3h?I>%V9{rrez?l4Y?3*0@5Z2hxWSHO z#9+)C^L5-j^HmWxr1-Yd@T}9568dJGEJ`?>&>;O`FRRh)Tmw6 z(Y#DuIR-x*b+Id)^&s2#M?$Ej@o`nF!T5YQP*KM6m%!OP+W(trM!HYE2NyH_R;Ah^>B-7I!bXCHT~TSu@668}XJ=FCbFdH+dd6F7v^D~W)nkBei?%4D_uYM}xT^^oQc~OZ5P#Zf>7hMGMqjU%*?&pf%k|HFBRiT398r!N#}>=ak^H5NAVjM8%1D6 z6FV8y%jtp?$LuKXSwBdBEWIevDbKu@Lg6q8Oc4XnLeQtv#Ht97=+fYJFkirAbt91N zx6tUF?Ma0J(NxPt1@$L8b|D`E+c=+U=*9z;5$|Da&SbO4IWCkB6Mnvjp~)Nw#H7r> zAEmJ9@+8nKh%lA_EOCf4rgY{*dnVJaN7l@K9=O3p&EF7gO$W++?;F1$}|8945Gzu9ga-iyF5zas++mw4GMyoE|w-o>2w%5V6k+ywvfJAL&H`puws zj%TNbZdNE!e9rX>DhAu;ITwkdC(XvKG)NllWer~#w=jupb@@O}y&Ii3@JCPO8~_0r zHuQY=yKtRB)2{ht!UFPb{>$)R{`oHoNXUTTcOHAeigJL*YMlj9SX$Yg7jJt+zt!CP zmz4Yg3dq{=@<-Xz;p96cEqz{9a*#JBX$Nw^@fRk!+IwS_@fg)2v>Q)mlnUskC|T=5 zCgFSZ1{h^$L}Nv=X9{D!s1tnP4ZU*!+p?9+A=;MhRJRuZabmL9|3c;#Y&QF_vx<&R zx&%axY4`8w->ee{*b)-FQA|#wNx*?#*gqwgb;EL-f$+>E8FOt#NSHuq2}*5q3cf2` zr&YefeT1bTGAI0H^WHQdc0XpMtHaSbaLyiM7Q>?T#(6*uA5sDM9lBRk`%r`BTD7R; zavZeA<#`Nd{wc$$X-nIq)cdSdX24m=zzd`ku72ht{vhO?_s2pz9iY|zjSZUX946xf z^?ra<-O)etovW+0=$o#Ms7bM=2W$KtJ@Enz;Q!EPP;U4?sNd?RT|#!@Q~=C=fgx+_ ze?yU%uSe`9AWv6DbNz$}(ZoG1U?s?}JOs4~|Aklardw4u zro3+w1pAA%o=Fb}AT?{G!s*A53P&H6;!CvOy7EQOjqlfO;yt)03Ds! zrq~o~8eQEQoZCrX#s?`eiAhR+RD8U>aUOVBS&>(PFF*-2+_0Fs4(51?iQ?pjFG zxl)pz1sj=1Vx?grZFU1X6n$~JL%I+WFh_E$HPdQJARr0j#gAHs`|Cn*hG;~w>~|Bz zu`i}w6!lf0D8o{mDt4reg%a*W9hOi)Q7fd13TcwI?J>?`xunwN_%U%GWc#(j#Q0zQ za-e>8p8^*%Kns4ATAabkN6t5#Y#`&hWk~WeOoTPoK4kd3oTuX(#<}IAVC|W+Vp?wM z5BL=Oe^;vcr}lq6Tb3$A)B|6mO6+>zEgJ6o&Lj812~$!Wi?NSe8&``%5nBmwVBnbc z)mZ|8rnyXBDz|(c4m&^*-`GoKb#l54wuKmAnm_1>;VO}R!&7z)jge9;9BmiOaupvZ z{LiEavW7AqGIi9dbS7_6ReElU@InssO^z3~uyeGVc*)wR9bwput<6^<4cto_Ct}=e zShz6CQ?V#5u2p@+!oK45GYHqJwPH)xz~H^8z2&ZDxdO$HL@WK3Fb+(k)o=A!srUs*KW0NKT>EvuEAsVM(GT}5%m*))x0h*0APY7J zOj)+NY>O|D7>fq&+o!$CS`sO-{Zz*2)nU7Nro9}LL39d{K%I~mLBUpc4`(7d70?|E zvtll(bo&kV*<*Z_CA&*f)~~CjBB64H&|7v)I6PgwG@1%sx^RCSUgLx$!Pn)e@qF`Ib(}ifIzdbI zqrIjn50?=@M7(c0L#I#a${IC&DNAu)*C5Loq>h_8w)fLs0mQ*Ki;S1QCl3aVig!Wv zimTAkB3ws6FK?vaxwn8RdAx5$MM2GOkFoC;!DH|J`?Uff%vc$&blK$uK9R**3SEcF z_;& z*6XzQgX!=xs|LhPs>Aj0TM54#QyH-pu@ps3@7j-36DMXm-sVq`sf@$|8E8p35Znpc@NEm}j; z$suYOVcc@>n%3ZMC&7_*#?Hj}?!+}cLGEA8o(h8gat4G?F#-Lzm203czd!hPvz}nB z2+wM`e-re}@AGb6jv9iA^S1N@KdEp|lgiqG$>YE>PCz8NG2y=U0^bS12<_D-$*rc> z`KI*Ib)GV?R1=qG=Uy&qo55pZB|^YmAIy;gMp++7C*#vXB-^w>jQ02_Y z`pp*UI-Xfixt3?zl~#u^iFcaR0P(%II%s@o|H?bEXzXNxlCevTgIr~y zF*J6wYj_g5ZMAtRa+oR;MMqoxyud1!1+ta#q@ki{j1K07b9S*b#!(NFxDT4^nrVVR zJSt_%kxCadf;8!)p?kFYYsH+!CR#u?S|U1t4#+#p1VtMIEe-NhCthf3BqvR6xYJO% z;19PP-{XtHH1N<}k7Bz(Eq#LgvW_(1AEEfoyDiEL2>%iamailABqD>{o6`yJxgvSR zlP0rmH~W|qn;q*yWWC;pn28ehJ?%9gahpb;-*ojR=mG>%M#^YYxNCkm z46*C!u{}uWv};<<2zHvzYoE0Ji~^hkX*7GIeCHxz`*DWjUa+q{!rU~3YDSJ8BmlJ(xzfkcQC!$AMS<_!pd4S! z_ut=Yx~{>}>vq0*#hxqnOogd5h_Qr2nG>7SIJ_pEM2RXpgl|w*gBRtdW0y({j8K(< zw=TF8<+RqlupHKj<$MTEKRTab8Ox5WML7M4NiX6@Ro;CT0`eXL!lRtKe@8f@!hZdW za@^qNzO7^V=KDIHAA215W!yH=;K{JLH8@oi2jnATzZ;x2Q(!+_9`D+L+otBL%X!ozxesKkej_^=rtp2dgf@!>^$co`pF{V^qbOe$Be_(a5j03%{Rc-qLG zHnXQ^e=y79w6+HgotuhtZiM7F?lTO&O+qJ*Bo$JD8OXMLLmB?e{^b4tqkn=J%Wkdt^in z_nj;`)WcvXz=SODTP&fiaCsb<9oG`ngsm2$k^UG#`SQv#GwHfFaQz-Q8Jgm{CY^N2 zwQE~`?+Tm_159t+DK&T!Kn%n*3?2pUsK%Lad3MOw=ZEDUp|#f7JgIR>G<)U~e4U|1 z)V0DM$N^NIbg8M3$Pt*m zx-D;!UN_oW(g(+QL46|_+2G298pB{{i+?x{k1n$-d4`46l(}|o42F7&I>w=3A>v`- zgZ92dYpvzHjtDALu#vmpu14P2~V;r2%90!awHW^itCR>?U zI;o0{C}it~6SUM+}C0g1H{Px|m99g3i|J#sV}O0q=TjG*XqxCq5I2=X0_vE`L%SgH)Z1 zIb4JoULrNVh2Ro?sA;Xta0Ks%$u8tid)2hL7Mgn3AKetGBe_oEY<7caq8IG=m!y^` zuLwAU`NnUrtW@D*-5H2WX-*ji$h^+Bm?Droiz$rtk;B@IiEf94fSFWa8Vp9FQeE6> z59A==$`Ak;$F+Asq6v!4kw_kNf`!=pcKQr_8;8i#{uG^PR>j&FMDFSpE-~?Pl`4C; zp3#JejHFz&o84hpsYbkt9A%}-Rg57*^e)~X`Db94Jq8@ejYuXpmmt@e1kM2Hkc2&_ zQ`w`bSKvKuGPDmyEr#Uyh{{L`h>hk7F-v!ibyGg$SWNy@dO6sQV*&ATyfOw|Fds9* zxuY{>Hqv?1retYs+Cp|SJaWt=wtunT4?PJdH=qYr>bN zR-M3g7hf4+N$`dux`HsSEWT;uHYqPk<#1}UkA}TiDbbRk+z^op76|+(O^%LP#v7#U zq1eKWsifvy0*|HOQm+H`5zz2@MqZgPUsg7&dCnf=xHES`E3FkU#9K%=Bgg4_MJNrp z0yWZ2mky$nws1W4iyg4JRV;W7=J17#d&`0$@Fk9Ua*`N_Me}PwUdWyqIlmq_Q^%{N zkT{1Hj;pPSsXnNE32Yc)$#pz=A!owha>34M%{O?-GA=vwkc%P24fbS5X0fvnN(fId-)D~Xz zr$;>tf+Le3(M^bS#xz+NNa2ep2Sdv8#4NQ~{EGGiB1RupXC3PMzz_XidQa<_O@d=V z79&MpTPi%e>T@Oyd*xx{a>+v|ct!T@38P8r%PlK;+RL8xNyyPqu2bCj6|d!C=vw$&!_}{mj&abVcNw z?ah)pAV&l}Xo5f_%y+^Pa|9e`w+l^R5Dog!(zb-1L-%SbRX%eim7Spz^ic9O) z*9um|6fq>IDnSrgqIAoY%Ayk#8$mULUcLJ3Urj!8PE~Y0oQkwa0^aNYD3oCA_aN8E zvPf=O@UX3en%lTOc5!ZJ^)b3!Ai@feSy%gqafHlgWI!_}Po!9`JaVNDfr{7(;LCx6 z9V2LX4)(%@c{UuSQxuMxXag}9+l|rrDcW|fOd?DdQ=b7e$@?cLQ;CymnGCpKM?K@s z__jC4Qb(|+s0NxC@r12vPZU5+7$bAw}r&1f2lWsggGbw58s5AU3y zTrsUOzk>r1UzoTixrFP+a%oj|2HNKkc5#AFF^63loVjPri-#oaoUVxx1!V%bXLxu9 zL5NjL%R!b9Gu1O$@%GNJMSC}(*tPWSUVYD~NAKLOdV)O&YC;-v9DFXM?ztsn{kDwC zZ5bQ4Wo+J-@$3&KRclRS1GkRmQTC%aHXs}Q3g>Knoa|t~U7=y5R`MJewbSStMwy8V z93XbD5v`UK!i=ZZwM|~y(=M&==k>B%yWqbEn!PWIt;6RfF8Ybf7_OCMz5g+9qr@HaQ}o;BQ1ON=oiA9bFjZ z5api!$c1ix{%it@a?wb|-be-P{IKiT#1H!uG(9rbA3xak^0xZh-Q-kFAxxHhw;MH|J5|pJh|?-*OW3UNp!Qiu4p3}`2oIxuf!e9Jo-?L|J&KwPf<3|@c+NeoV z_KmiUdEX}Dt|663hlAgdW1hmw(TK`brnU;? zcv-qvcBQ>v-)rbPOh0KXndiY6EY8@&F?cpre;LcjnPG&7-r)XNHn#H4L323%X>HIy zjTLn}%9l3r?1&;W6l+E)1)r0E%=vqKAV2j`Vi|v9cu)j@C}zTfQHg=<*k?nOP=@e0 zu@M)8p@gG?r9A2q>;@_KCBhTpZH=#*w(nDcW8kY9%#}2z)r%j_%wDN{sKU_3NO@bRXus3ixXIav_vNcC49&a~^0@EKc+yTZgSNh8=_1M-lO@_s=?^nu zi1w4?(upIyd;bN(bXeXhko4-ax{UO4mTJN(P{2FTuqYyKkgdg-F zU7g@bzJpVNIAuX60ja(shoVoI@ApP^(P^XKFea@Ec~QZ_IJ&S4wbB%zs@1CZFEgp` zr4vgt*uiaQyy#;ikI@Xm#-E?%Tkw>P^#Q(cE7yy@X7sHTWGf5QoURxsPwQogg@wxV zOq?y>>)?RY#YVOZr9=!d*=rLuk3Y~No(&TVqe!rW5xC4!F|8B0YFcQ;PR#S%InW&i zSrMt61GS9g&hKXjqy%^{mX0N9xHh;Tq`KI zl)`jmlXfUxFrBnK$dK$8DpoTuiR?rsp=JSEStgQ%cuLj*IAd%Nc4sRQoOiR@DP%q% z*>VXxIWysVWVA5YphJv6_sca7ODITnjL}b2BdaN=5W;n)m2zztRoxII-uL7qLT5VjSqUk;HICxJy4&D=w zgZISa;63p;cuzbI-V=|e_r#;=J@IIIPhS0z52RIE>smA%7ID-HwHR^?>UnFKdtWCC z@;e)12ufE@;4=M>r(y)sLY!}QdZQM#OPy3}J#P0>NzmP#I}eyL__^iomI&? z5Qo5>CSA>kSHd#5Pfry*_vn-8J|*0tZ7zV(cB0K&X?P*u@weqPWiiwp>ghDT;>n3) zEA@oEpLXtdtGyw2HGk|P_|czM7FhOvV)hlIu#7DeB|F#PQKxrGu&SMp-DYEiT#%Jd zSN#QxLQ7mtL^+I!jM~PBgRN8OgU%e@C;6#lbFn@0N5I|%hVK}QZaA+9VM(!QY{0tI z4?eQ#eLO!NG!!VvOUsENI%5C~gIn!&j<0q()FF2u8n9Vt0LBiIb|$i(5PEEgSw(=7 zxkiOtWabJ{xP=aJfHon@l2}kjDgnhiC3Lq+VuE863iA%mY=XuiHSHjN;t^1HH zwk%yNFeEHSo}tecj&9n>tltEz+yvaX3Am|=k!4J=fiw^OZr!=1)KhR}*twgDX0zYr zc1{?BRAbT?bxWN5Y8;kP4Z&7Y{sgmQU#NT!YRg><7r}NHpl`R|bE51Y2WBfQU>V~t zBOnVm_hZKJXC&l(ql;ER<3=aS7DWNg%ofdznnT;Ml*3Hq#Rago#G;b@tX6PBc0z(! zxGqPsqe?Rs0UkYCf-%wRW!6$A$Yz;w#Hx7sKA*!OU30x;@lVVl^LVs}K+n~yb^+X{0m5=>X!d8khTLbX(rr?%ho3Z4 zjDo~Jg&ap+$a^vKFCi0TVUZEWHV;y53!wCF!Ui$8GNEEQWE5EE2LV(|Lwmzo`7ywK z`{699Ny5G}#}3uy6*^2~6`q7+P0zn8ygTTqNbFT2UVfD;>F!x=}Q5M`XoSq`@I0Bu=kDgmCgoZj7=9Y z52Jx^44^02OxsPu-N9VZahmtGM$pM`Czww~QK#S5q6!w4K2IPVxj18vR(wYC+knw? zEsH@VKy`>n(1SduL#9vY%-%sjJ)#|J@6Ei$q^js%v|(z5)+XdINooKc^B$PGGpbfo zdqEWXFz6|>9J-*QIlBZvJoDDR+ymuKM7!SL>J;u!r|pFl#t;)z{YKqbX}ybkz*%o7 zxojK;qQ;{p2On)6uI&;R6J{7QxGtu`wLs?rz^NPIAb_s`Cg!KCLTL0Zfd^0R zq6r}%*~mmp(20y-?Sbu~T8_qmBphqLC|{_;&Yu!O!(P?0 zbiL&m^tE2?YrSOUJib;Ls2E(C!wVP(ww0V=IJK%HH5OqGk=tg~Bk7o5rO1P#%oxd) z>E}8$O6gW^~nbGke2 zaLwCH$kg-Xw|JDf&-gpDgVs@kSjUZFplL73N}%d^2MRoSFo4oClXyhe6cw<6um^OFl+!!!`tN6_fYEA_FYEiLC+Ul-!Q?p$O+g zw)^M`RGrk=vuH99a6vIm>aK4odTS zCLUdt+Z08JaPz?IDumVGCuEA()R(ZJThq2Lk8=*HGOW{VWO(0vC#gCurN4#n@tpJ+O zhToPlk>ruI&*x3#U^aJpIJl+vY`Z5;P*yl@H%?kIu#*EJW}MXJ>x2OhKCYcm^F%>l zX!UciZfh+CdsBa+?W>=xmiv=D<_|qlP}82m*wQEVsgFQs`am>R;_<6wQBuqsa5M= zORZY}T58q$*HWw2zm{6H{M!8iRUp_UFUqZYQEt_Xa;sjHTlJ#csu$%} zy(qWpMY&Zk%B^})Zq>_jt6r8{^|IWmm*rNyEVt@qxm7RAt$JB*)ys0LUY1++s@$qq zEFU;cUatHnB@U~mf*=iw$APuuf4>{|mi!zE*I zyp$ZvmHo6(c%z)$EGM6plh4aZ-5gb@>Sa0k3JFrV*XQ`QjP=_xDz{~9+?GKY&6_{| z?6!>Ow`IJzE#u{F8Ltp-8YiF6+WoIj^T+l4v64S-*QIN%jxR&1%Mb-&6NuMCkdUKt`^yfS3t8brQ$E>G`eMPS0=6c6xqmw$t-lvz?ybn(g%b z*6c9TwoFkG_b%g17a(D#3y?6=1xT3b0wm0I0TO1q00}c)fP|SYK*CHHAg^+If|6#? zm$)xB<`Cr;`UayfSsL$V9ZW+JWcemQgFBwcjuNu~PWBRA;@DF0#vrFd6;uR`6OP4l z{$Y$5-I}w0YtHSpZQT0K=B+vMW4*a;&u`6nacj=YTXSs03qzo@Sr{3LqhcBq^l(0W z(m-fB0DS1RaUwzK1`}3-8DZg*Wni{_pdTvbU_9f>=kZExKH2_aQQubHw23gsQ9ssv zIU}}mtM&h45WAL*_XtYlM#r@wVueE|v@7}SQ|lPq*A{Rg(Oas`w2#750irI3GS@&2 zxvg5M7+k(kDg!mX3ujf=p+?hCG(r?3JwS5S%(XgCm&PIM*C1kPPFOaD4SC)5hBI&X z_P4k8zJ9KKsIG1yq8cju_K z|ADvHAKw6cbGZMZ`gMIJWF37x-2S+?`(cMV<^t^VyV^ls<9>bT>(0Ku^5yIL*k>y@ zeYSG@XDc^+wo>|RR%7wAl^^$Zx88g`tR1MYpLP$AXv>HF!}sds{bHUP`tfL&4$c|) z=;Qls4NpjYt{pLE>x-7Rzq7OVvCdF^UH_B%D>v6)Db*iSUVml0{>ptH_0WO+4@_dM zx?3%Sk3R1^_@`3ot?EBM){nmK)!x24s(pBS?{I%_kKbjp17i-2flDgYnSucVK0KsE zF)~j?C1kFc3z@F9gk+b}^OxZ^XctVgq{lp;i@7N7&yV?#m(sxtA~@y=eFsjo=02|& zBXl1`x|kQ({v^o1wEsnS!LjgFgS;=&6`kHG08|squJWXsM*Av{N?I*Q#&JyNUhlBO zZlZmQE0NBcxWk&IWQz`#&NN)JFv6N=PV_P3HFaYj;hNu25=!9*j9ZyCmm+Sn4H?V% z=dqYc4wIX_RU6Y2r)o|*XYGiFj&KLd zRB!J1N>-u}NORiiRWQl)Ug9w==RGUdx@;w4$|_sKF^pi~I+o^T4Z3(qD3|tklPL`# zug;4?feHWeBCW<<0V@-wEM$>?*c!2d9kPzgBi>lqO?Fdh9Q4IFsIfT{7k0PC!VvKm zD-X&5&2qYwr^7eqVjcDs?iXe>ZAXYvDquI|Zu$lkVPA-Mx5$iJG-P2LKm4a&=&Ja$h zpiKh%o6l4nx<_MgGnAoW3u8GU^l9vF!|idzRzx~i*t3_)}LZ# zEw#&(tx}OH+-K5QLR}mK;h3Q*0kkD08IcNauLAKuTw1B%CH)`sG ze%86$>w>bO$=1_@}zYhf;g&nb?M>bV&#?BwGri0#TJ0tSwwE)%Z-~!jT#1 zj5q@g4C32$Ajd@d3KVxeM_ZHJ!XTlCxNy&Mb`RIT&yDn5_3%O4qVN-_8dE=h&%p`U ze1d!<(z(pQE6n?uKo*e>H^}EF8v6r;P;`Eba4EIhY;`e6D7~CRB2isx;`r!$W%x{A>{FG4ql7~pU|Ukx$c$14Z(I&a=vFj zu{&#?)J_5G5|2Bs;{46H_#3h4k450v3-faSl+&jV^Nh|I2LzbGX+|?I7RPYOj&(8J zwKRRci0a~Oa%}#-GddcgsTo53yEA>PFr2={G>(x?5 zygP&mlCzlA#+A@|E|n93$qIy*(nr_Jg)F$Ec;835Q zxXl``lCBQQfd|a9b~>?BXxpRn{**t`>Y2;DEgVS4J4>84CORmuX0b#eFNp^dR$2Q^zvOpGq16d|yf`2iPP z;2s3fxNF>8N7%(28TYeVN`=>_Bd~t7ls|?{dbAg67;6~Hg*9{ac8|qcb_#SBMG2GZ z;E-T1K4~1!o+iC>*rqG-wp^2yIWQMp#$$h}9|C9}Pa*C$bS%YUXqdp(D4vgH`*~bj zN-+yg@uoMOu2^rAuJ%aEaX9PJSWbCS#`su|IlQAIs5*y}hrPCaYC5&$CYuKhh})l^ zQz0s8IAy>9j%Verk&qmiJQuQ{F+3OLENEYVxTpoU?82KQIWKN}Mw9E(VcuA`6puoh zSM4v}>yL2cKRK~uT;b>^oz{sUJ1XZ#O<@To;&LqnYwVYJP{yNex`>Ofbyp`SbmYxG zHYU6Bd3RtjX)rd|5*Z#^l%JoZ-p4W1uQ-U@fkHz1_7DPG~$?iPsvjE9elD8pJV@W(N}69<9Q2e-hbz$BX~lcE!Dq21&R z-saoJ0OpW`c*dUhPdi#xZ*Xi*T03V+^BW8`+_?4|O|0ZB<85Gv-BX%(AMEH@Jj`L8bK%k@ z2C?=hg9qR{7AAVPOzX0s2wk0=3bCNQX0XZ`0dtbp8JaP86mK9hS!HP$bAXyl^;0?t@FJEtju|69lO;&%mmp1k)0kyk;4IkiFig9 z*>w0qT#3CR>l3Zs2(Jo2d%f;ydq@;~=6esE)+22rLc)+J$0#&SnIvQYIYfAu%k43F zhA)*GX}~flgdlB&yM{sHL1TjW=ij!5|2pdbaMHV&X_zEyVdSUu`JTi-I13#El#I*R z>q_#%VAy(@Xj)}If{Msh2ylP@y9+R&g$9Ui8X^~zT}U}}I*XISv#aEGuM!;rmwh~u zs7ggOorMhtk~!4gzR>-r-1yVVGR6bEwOLk@(Z&P332ra_+gMmOW#q@-jop2GLlK5v zf!=QVoQCMh4X^k~i4gEjINxV(rLAM_n|KMzz#ek6JblOI=7`;Bq_pe;5JtZgaZjfY zLXfk3d)JN{`3{Rh=BL1zg?5*PctaK{Q}z*yQ+8{CEL@p*T5dCjDWk@2An7zQZV7ML zV5C$Lmrmm~m(|`Ii(oUI_ZM-U7nEaH+*jsZZEGQRL6#r88?6-Ws}Ah>hQ_gcVs1-| z|3GuyO41m`FFP2iN?PZVb&Z1`|Wq3SpOW+ z*z|$klz{1RoxtzrH@$8HC#`HU7|XFr!coDnyW5~0eX_+d>ic-wOoh2FWmw^`)pJVL zLN9XCezV^C7L{Sw0#d*@=|CnZs&Eh0-ep$`B#~3KRnamCSdyIu4j8528jT@ScMNNX zg+kh8omExr35OTLkHB39;6^pPPk4p^GV&Lo%R+K0YEUmNrAWs0;S~|GRm?EXRvqK1SOJEe%HbF^ z+!rl@e`v8Y=fo+tlbruFdxMy#pnOv4E|M=%8SRXn_~{gaMD68LiUTKxE0vOdD#mX; znQbV_b~u7IS4?Qvwex(@ptESg$`)f0)O%3UqCp^_3>&Pp7{YT?$%q_rpM?*VNL#IE zadc`rV2WNXN;|a{654ixNys+mE7yOGDdPXiE7D+FQ*JDQI?XG&F&ECp-oG((%{v&Q z8U-#8_EY___+%dk9U849^oEn2*sosey+p?1T#7Z|Lc0R~7oUyP839){f>^3N7**2h7UHD*$9P$y$Gk)~No zHQba*0gnXiESgRiB7Y8soUe3Fl+}Suse_pY7r|K7`}kP6LxFvfW3;yMB!elKjaHvs zWw<&bT)sucN@YND>MaS*Y2;3SWQsfySwdkjk6t2(RpKt$L;~YnB4CZ#_HV+ya1p7oKdDeBH{_Jxcyw#dY9oa)`PetJ zPB`_OtQCMhSQ@^?7LvGI0+2ujpkbq9XyGXm5`mhJU1uSwmpxb%E?#_Nc0O`=@+Q23ZI?LOm-W5wIi^7XfjHtrk1j1yyDW!>pduiWcuJoL_ zzl3yVvmq{lcKM6MydUwjVJI5kZ6lx>9*=qhxOB!N*EpDQLpG~ouN-4&iRhV+~>p&>P1zh|x*N5c^7PP|B*9~kferQBH~W!**i{WAL#!5}}I zteet90Gsq7Z{A4Y9yid&X?#k=?TuXZ*gD}+q@`Bd% z8f;G*xE%IC<&JuN?vd+o-x-pKmt{{0?s0HYlH_E-Majdrwnqv>m8oQG3lf@3k2&0F zbQH%x%!pAsYewr^V6m(PK56^)09%uwR~bKdsWkh9H$P4-(%N+} zlNa_4h^D(orT_7rC}2KL{@<6b%ZymL(|`1i(+4U9U+|t7d`K|J(aw5G&VvcKI_jaV zgfi(l@J6|imfipG=}@YuR=nDM*n5ZTmTx@}%gh|3y&{f7_-^r=tF~vcya{?mn5-id z%v?j{x-w&Q3Q@!!pJ#Vxk7r4^jNu=H++y}eB4K9mqD(5sk;elzK)IpeIU|QetCPzk z&$x|;*BEdypl)uAOuU8&<_B)@nyZ0?X4^xnjVlJ1*}?PS9lDT9u-a#TO+L1EZJd3u z?#lE3g#Cr=p^ncL?~>t&N1G|(Yt_FAr~dzo{b=Lqb1$M~27pkn=t$=h&o-&ijpR!q zMMI0}c++1I29Z&0bN9xuN0^-6r4c_!daP>e5?-1Ff$$2zRM$Ei6tsv%LyZQ8GP;Jy z11W0@vh{CFgiT6R;2Go-Q^GZc>;SsRy(sEnn6>*!K|~CQH0(N?3Q;zODe&#kb^Fvi zA{Xiz=NY>jSE5#l=_MvjGFTVu8v_5gl&{T%t4`r-WFj(<%-L`}!>eB?3!yBU7)wEA z9^a790ZZ9CZvJ}ZX7C0EA2rT6(|~LwgUp1vBmG8J-C`$2MkBw^d|_zu!%aL8Q$2A4 zD?Z$Su)zqKp&JRwLbTXau@jpG)VL&wz7{9sPbgI2SxqCtESg?L+^z>-oP|;EpW)^v z8uUoJlOmv^9)kx-FoMVz0N`35c27!>P}&WOb1V|>{;fC9P#UEx7ZgA@S`3`0;eoB@ zZix~$Ehgsi(E4=fJcQ88^q7GtF@xNfyS2~j643G>XU=}oHN%i|CR$w=d1pL5({dyr zXHFN?Qiz3yMqKBB#)W2N;EdUOI+k7^OIOCy8)NCsvGlVE!lJR*?qP7#?_K6R8Qe*5 zo?)dMM%Wl+v5;2sA<1BjdtTBIh!vORuH|nqtKYADmFpcub1e!MkH#J`E~m<0N~zyU zso$Xtc}b%jGSP?+D%YxMV3rHt@qn)I0{Q#;G=;31=r1JL{X%$V8X5U2SjVVS@@kC5 z@|zd58tw91R81-VC$3n+1laCCvaSQ~wYVJ-a}BJB`M9w!;Q=9$nkdr{8droPL}GJC z$%sVQzF>~FuYONZu**y;_bK*r(`UvOs>hiJiq<-+?irKQJ=XNBJ=aI)=h(ib8S$rC zmbujLT&+I-Hqc7aE2WUPktaiOJ!3e=*B6Kbec zr_q++@}ogmaI?9I(9*lXG&@S9!QVAXqfDHe$Z||v3RgpRGgflG!9I_>A<}al%J5e) z3PFWrYGc&LQv9o>e!fIpuBkX9GR&2d%g3h3VT!DQn!|s$kBTKQBQjWLC?i)ycNPct zf4s(1!+{09T8cLzB~-pi{47ep!DAW0P^$aZPvkaz9P2Rg&9h?Wzme&xFN~i@J^n>u zGPM5F;ev%br0Q^G3*Es8Estbfp)n=3k)<9X!$~FgB#O6BgonZx#<|GvY;A3Cvp^!V zqNH;w>}bfv+tR0KW+5bFkXd(>7#)LQXS1pQnywG6Qqqx z;@6Cf=Zd9%%}#R@JZq9y4}ZtvJpgqZope=vLfls4+>7P_j!9>9LQqRuqS?QxhypQO zdvAkA1q{x%b5#Iwiiq7iW-*j9VabXW%@z}nl^Aca4ZvhWYqAkDQl@=@J4??ggU-`gQ|^n&yB&dOiNsRjSd(W8Km%1#AoSdv zQXVkF!k@;Wheu{3vdl?tk`sISl>1f6@1j#_3~eALQ{-6{`hi1tQ>dE!mH)4?Gkko1HUr9jR7ZZJ}!?tr3d?F`M@b@zr9!X5KRy zli%l44Y{Xm-a&5`!r{NJ^qAo*r!erVzbQKDiYN}|&1hDJ{a~@YR3rs1Y-_~eOP&q6 zT5)Y7696GFI-Jg&>fAF7a@Y9rw9}a5->%ngygR-Yu0i=?(9MX}b$&=xSvczr!8L?% zH0*54;7&mXmKISvD>xU0kl&fMBw8j1w250ZsMYFq0iEmdKm_SQ^AlY`&43r#rmLWE zQQ7HD_FJ!-aTrJpM#2+B z#^;9Da%|pmcA@Ae-Vob^{8+X*5wRCy)JzAvj++8+ORr~q>9hiS|AN*JRpU&4IJW^G=$J4V zxVYvI9EcCrRVlnU!4`<`O_mg0PSBDvFYV&WDJRzd>!2&v;U=aZyI@jbS~&r+Ccn)l zX|%ZR8@DJ^eu#pxLYbUZllhGTMjBA^BncsfU)o?Y*Rq)VxIl(Thx~lfZCnU_)C0)@ z*|*t1e&=)Lk{D_sfnXVRgq4j5wc-xCEb?uYUd@h z3%}ABBwVbHl{x01>OL5VKw|>cBg5x>lW&m4OJNP!ceLNA`{}P;+1gYt)7Q39q4C4NRdB}r=JyV!c zF#wNYNGx1-*35!17H!7dNIWxj$Ga);0@TRwkx-7o@&GX#`4kIA-dILkj={?S4sbi~ zuNt-*E-@K7xEfdaz+bxE^ZTQ{^w5#^KaaLoPXW~$c*uH4+6o=~x6ArTfYT|u-c317 zQzxr@-0Keo$r{r;rDxFx88`2vaThD&kSlG#;BO9}@&&lWr}s$jW0GEgK=2BYAli3OLcIWwiQp}DX zZEj3Jwx7QGQ!#aA{oBj+{p06)r3qjDsFb)k`Uz%s!>-E%rXqlfq73wsO0iS3T$fb` zC?JIpeK zp-)N8#ZX&?j4Y%UQb*5k+J!VZv_u)hCCk@{77GIeA+ql{F0d}bvf?9SjkSu%lQ&zO zMq<%rgmIf6#nx=YJy;Yb7j&oBvoA5-*7Nej27L+dOofUUEQix7v5D2VhV=O{G#3dX zty^)zII7+pIulITvhtxn3b;Z-dGiWMz0C~^lSkCDaCN8tjjMX|e?ak=w|>e^OsBma zAvLrm+M_l<>tum75`sxsCft2xCu9qiNh?US3v;eTKoI6|NDjG8Gyx{&KJXz zryO+$(Lr4*e`_mTZ#rDU4_>JO8smZ)C^=tM7=P6)OIJ-yUQ1KMpj#)FKRqkIy2_1Q z%+YwpQCK*vmr9^r&SK5=N6xbZt#(X7n{#%=#8=Oik|M!6&DtC;Qt~WeZ^Xj1Yz2|< z%uUaEB<$~Pug+qAuk{SDACKHki zj*suiB8X&T%&(;{07|hOsrc5i@o?e{!_U8#*-rz65XDx~w)P!T60BmLb5)dGTE`T( zG0pg~R01uejTuMAc4Gr;yr?-TuNJIPv=Yn6yqeIo@*q{YRf;_x9()M} zIrt~sK*)}J>EI~EeDdAf9^Gkl)x(d;c~K<*&M7ROce^-uq6=!6!d3OUEERirGB8#= z>()j{)AeF#0oT7{qs+-S?OA`b;HgKrELDr3O*&sTZ0%+>YjlEJoEIU>#BFo6TB)R} zh4XaUS3VHJc^~Uy@*69anq7#IgeZqv+xC(C-i&`Vduq9GU4S_=N@IGM^C`1h?-4&! ze-Fu}icsnC(vvl{)f5nyNkaM}0?douLv}fw?ZUFUn7|_0(`BJzdFN03cucN}4bAy@ zpE>WKbzSwJ#vnPa8hhKiOwWv`p$im0N$YFjjK@@*oZJcYwgSNvEQnL-0pPU>Lj?GA z506<+V;w#1lKO?BB=m_>z}uf%#r1cMzM8N3*RJu;&!TWgEQOF#@(cgv?Z5nN7W#Oz-3q{|YvKmi2FA=;9}E=w2CLrVUNiG>uP4WW+^Ru2_(~x+ z_6xJ&akDNNM7M9sB`G#ei`d_>3nF_@Yo|%+HMm!2eH$MV;(HN~u?C)2L5ij7x6pZI zSUzP30*g_k0*DCC%A98AiJ6Y7LVT?C7`Q(J4<6+rWd=1vfJ~b*lMGM9*OgBux`XP4MTP=U*>(%>9;H4D30P$DLV~?_Xcg%#ws>q&$s~b-9V{l&ACbk znETLAq11E_NJ6X(AoX_II4nW5&LYrvnoix=q z(@ZM%iy3d8+4-L%;7apblg))Q``(lM!gkZ9iuL(X#nQ@ix`Jn6F9p#v>{;Fvz@G#LhYma=8yBYSmhZwacB({6g+R{dtH}=YU5lXgf zvAG6Np!E+Bpz;FR?wXgUU>fyj`{gjmjbA1LmV`Ozf#%$mWWG*sJAvgHcV_dO2!MFQ z0&3?#-TXOu6qcX5l|gifm#Z}fbkZuqLEvfmgftRi?!@pA9D0cG7xWI5!=A)mcb|Or z^q2A};UbhJ(VVm%l4e~ET}1NUw|b;m@KCG@`(4uiI%mw}RdMYSj8T?7y4~ z7Z!#PZ=WqEn~6>%9#!O|_f2 z59!5XSg)ikbC-P5#D9`|UU>W)ec0_sN|~`$=P5+t<$2cJRYFpT0JH50&4#AFo`%3Q zBq2)-LEG6|u`zm`B#g7Bris)rb4NxBxy@S-yXPYfh_yey`4O|H#V%QBCP}E}eHi1? zYyAF@{nVkXXLNJ##TyGV1&R?Pa8@vJ%j)%NN~#>o=Lq+X-R(8?-kS&u4F#KrUHs ztCkAIc&M*$qB!>_rfal)HDkF9on3TQUr@(5Q1D5X{(tw5qrBT2(x}%hvJm(4w3O|}pjs&yS3CR3=FV!O~WO^(u$x^no$*Sl37!3DT zZ3u)GF|Gdf(3<@6c2Bt>rJ`=#P1sv4Ovu-l1Wj3Kr)n|AYl`;}QYK3Biwbf?G@g*I zyi=olr0^hs@zI6%w(IxP27X7^vfW(^AIs*$(aX)z%dOGNN28Ys@5_XbYFlNXw5>8w+Ey7TZL174&UEX!hn)a<zCdD(AE=m$6mgVAo;E6^e%gpcn*_j?{ zKJp!y#SX0e49`_)x!HSDIRS||fAj}TY5gBW5`+mIXq|x)T4$hy))^?Fbp}dkoq-ZsXP|`E87QH3 z1}f1yhi%4;@2k`js`2@-Q&vb|AAh#>^Y?Cj_TERIZT;r6t&cz3`t4_1ze{_@ybAhc z)ARzn&Bz*#@Pc#F!yY58RvvOX6IklI(v1%a8%9h|aS8~>+YP)X2zwHNl<&o3+6@Uu z9&C;nq83EK+;Xqof!82uFisYZyZBI%qFgFBK^(!!mB@+cA02~S0dWR#nhuD}dsN26 zP59Cl_I5WK9>^2sD%tKZ{GfK3r0u%=t5&axT-DqtN6oX4qD+sb?=&z+^!BlFUhTC$ zbO+b@XzjG?o#sdVzg3HAae1wrn3+aIcr1-}K)QQM<;O$IrR73qP**!Px^-2dgf3@TVCDgdng6QzR=F)lcF+( z=M*tqQ#BM2Z;F(HDCA4P56WH|2eIjG2k*rGKs+{jN3vM(G-EwJE zfx*r2s;bd=zV}sdc;n$RvxcUdE(LP8xzpM65I$KlW-3OEM#k%#1f~w>BzC zh^$qmiMJis3Gz07o{n{Jhk)q9*M4KwO!|Oo=~g|e2T0u;y&JD>^#C;JfMDohDu*e65IYVUmI^}rr~PaT7Zo5Q$RR$;wgHJ9;JdAm`;u__u{pKd64tQ4*H zEwenJW4Yy9pFGfPGP`{1)0dygk=go`c7Q5=6mCnhKnUn1`@N)C;@Q5(;rb)cMEfwS zjlj1Lh(IhMJZ=if@+bcLKkS#@L44sqc;fZ}gy+qUi8k9_=LP4J%;c&eRFK|W-z7E| ze&x0P2vjvMUHpF&|9>JORO|j|i)tsyMAIu46o>JX9d2BFV}+%=AI}l}g%I~ajG!)} zOnk5xXMMGYpaa1}aB}k4C*09e^ZF&5#>QO^Z$ZJzL>3>5qCnI0OP*n1vOmh7o7K;) z>gS{C=Qq{Q$JNhotDoOhKfkYj{`K#S%HOv6F#Elk{oeXJ^cJ#UCvXTwimz>xJ=i-q zdVu}`pXnD5etOsJJb>(Y64u(lLNH#zh}w}-aARWXG@+!?_qN=}Hj(#!t1#ailMGuB zlM988;lQGN!L%^fk$-Tc7Zg3ze~GpdiTLRiPrw5k@E?e?9<+LGeDB14B?e>GcfcbO zKU3xyJ1q5d@3vM;qPz1vh2QZ6i-tP4SN7@-* z(wxJHU$%P0u@q($A>MDN`vLjwOf5DY5(vvVvlJbeU8oOXA9>m8AaZ-1Ks2ssG}fLs zt(ojY?Gg?fB1lBlcGoi;Odkgt7~UG*6o}`MfnY%MHu_B?$bQ@vn%`3_FmVO8J*|K2 zZ9RKA1M7M|yC$hXJKApX7zFhITdIrY&^D60W_b|tZ{ca4t94)w=IAFHBae<-i=J|% zL#DKamkHgFluQM0oBSE6SlU0Ua>IdIC0#F86$CW`SwM^w>RWy3`4bsq4lEgLU1a~G zt(v(dg`-PNlPgo?-aCX}9-NJ!dV5$QYJ zRy`F2UQJBoe_+vuJ8Pm%uE{&=X!bYqP6-J?F%y-`=s4vBm_iEXq0}q?-mkTS@{8Pn zws~55-Yt%aNNwcQqA2}}-wpb=hzzJlMV@MYwKdZAh;L+aydIV`AeTa^4p9OV?%2L& ziG`~F%h%OQ7o`z|zN<2Sqk$k_hDqa~-N>s~g`&a;`yf5LI5F1kW*f z5bss;e_1&-!=k*NZ*)7uf$O^)9$uW(OAowWvY<4vFpI-p>PPV=znm*zk^Ym#)!RzC z1MP%qDP6PG2tHldT9%YV=qsid5jFHiM)JUaszW=qp_CzF`$+^D#lDp#X9{=~DO_2H zd}fIM5N1;^kq-J{+93jHy*?Say3$MN5$~91?JXq(Q`mY0V}(BZw7|}Ci&-X8phcWj zXKYZ2JNNbo)b3$u#QCSO^dtQ15-dM0rj7H62uamK@no73TO z7LB64HAcd?(viElHOzcMhws8l1aRKBib+;WKhl{GTWkWn`2~{ zE(bt`xseO@PvIhpitAd<1{3GK|C`|{*i%b$cKfmptLK)I|MJ+G0A%py1Vl!vhQhlC z^0qR)i6rQ5PhuM-AnUSQSmMMNNvy~A zeKx8Vd^No(QGqMie9z|V79vwSX|^9OdF4g zoDu2UBMHC_yEBk>(-tLaBCEsu(|s>NcxCx3t0VoEqee@i+PB6BJZgzl1GC>Vcx`Ja zIrN<`NZDP1FrrC^7GJa7#@|Mu_jx7$daSIQp0H($S3q!56jwqB-W~3Wl1j*~9&&v~ zI|OyBHE%?jlqpy$Znn3WJBf|mK0#sQZA>9`NIPm>RUj~dHl{M75pL~Xc}^b1oc^%) zyLSG_4n=%qQbfBU#FE5oVm!GH2!jOUPp<+8TIg5Z<&r7wH;YqSsOT-=vsgIlB;90!JJYTiokV zATMxAtsEwf5^=47)i#IlnQh8;l~i8jT{d352|u3F%8H(zN~ZuXQ((DxZlY(t?23rM2DQgDNNwUBB5%R9 zs0apLf;O=PmaHjHXsg4?BjwR|$r)A#{!Imlu8rToQNSPeRwP2e7ehRYlAiV5TGY)@1nRpEwSUsx{3A85>5oEcW_ zQUI6gZEV%V({|70w#UYv31b#JlXl=!MT0VD5m5T)f3hEQJ9a0lpQH-Wj*=6Z(j)l- zyMjE9ohEUnyf9Q-SM-$Q4)cX_M&eyUIYoWu@Dka;MKvIuj^Zl&M7d_%7nN$+73T8} z!~JAK+_6~5g3G$P3!22*ldgNjZx$F;2cTM{?jBl`;t1Ra?-KE&UH@cIGuh)_V2V|7 zv5R?-uBp1tZ1wvgo+QmSY5a+rvIUbAe!R1lh(V-NHtz&Ie44fSbMH-QDQOB1O|s3D zhi8%xm6S;me3Ob5tPG^#$z!5a0FF?!BfWLvw%J$A{cJ4o3;i91rw=6jmY6NflbPCM zhAul$0Dr(>$Pr%1B49)tiAM*#C~Po?-Ld?o@RU-s8T<*={@MY)x?yn*cEdkK^rDAZ zI-2*MZ^-WDAzSNjy$bPLiz{`N$tqjOfEXmJnPxmUn}?H>Etx{Z;6U$V1Yg9AIx^%% z0z{H*KjC5aGuLN7Y~ii%Fnkfqcf-#6h&~9i=KM^uHX8)Q{&jQfYfiP`#lFk+An3=L zr4%JM_IeDJBBw$5sLXQyYjp`q@&w}2c0|{JG$~J1CBkmB^nM9Uyn^al}feL23rlzz&Y; zQr{kH(}2}(EQA4#-e<2YoB5c$*~+Pxjhfr+oje!arJRJkX>_dMN~tPCWISJ0RY^zy z?|17>m7Q!?5m8}4VQHxF-~>%(-J}*Fk}3>QBpDLMzX{U|RWW2_Hfq?MX?2`*&Z2wx zFN($}55NUemGVzz9towS2!rGWy%4ejipi!Z;UPc8MFi(vci3(mqGLC<{ZI-s$owgh zCo_FtmWa4?N-ZRzOH<$1yxFwgkG_5AA=kR>d0zE*-j;%ew}#=uy*j58*hZPCr^S%U%CBnx>Dv^1E<-@wx^F*wpvMzw6) z-0KtMs=48xk%gn^tY|Ne0^h`&>LliF%j%0rNkv-M^mBF)C?HiC6~!#`681owWIMt3 z77<$FT3E-hR>>e&qP$cB2fuz3J;C(UQ`%V6dPwY4huTK75%ck8CM=pcz!|0wDM*o6 zGu=Lx^;-LF`tfu6@e9^SYjS<-?davtqnE#2lMTDpMyc>Meg5iowF$s-iF$G_N&+@( zgo-tXFIcYp8JE}gR8%#T(%t*-*cJyA=r^;omt@VeM!)p-%({`ceswnFjHXjbU`a*E zn<1e7V3rK62oaIG@4Oqbi^}T}bXrx$hC0n>5f)fTUEfOTI`VqmmOIQWnBii>V5sVI z7q4q~FQkq;uIwqkMW>tvdaJ-nQ727?Fdv={rAtDaseusyV0@vA z2fDn9IQ70*Dy!-q>vA!bzO^gNrKB6Lm}HQ|03xG_xZ!VcX9ONoV&TzOsTtAjUo-h> zFz5dydrQwXL!&Oxcic{;i@jYWQI83-6DF1J2|{F$#Lsy~WiXoGtCqk-mvBZZ?xd05DktHgs_SWMvu(+@MQj`PuAh5VqH7LY;Pd6qr(_+$2dp%rlL+GCc8daL zY3UITl51~!fQC580HwWwJ6vG{M_-fGrdSe?z?7fKYsU(-oYy^9Sva2TlzY;9-ZELE zke??YzX(ee{_6m&R2=sTEcyyY$QBx0P}F@yj@9_> zT?AQbIK6d9u{hFU!SZ;$=?6a0f2}}`K=o=IjNRVuvWriv$e>2#FrQho4Tc9RAawJo z$vVHC2K;#%@RzmZF1u_n{+hM46jirnlPjug=E)#F`gG;DgCagi^?+==9S5k6!$^-` z!cULirH91_tn7PDNL>eohF1GAVv`c-viYTPBi2q478}jTnV@dqkZVeHqfIx@QB7Be z;}WJFT`(bE{u!nWLVWh<3E}Qv6u0)zbc~osCkfARPY^~R?gwe3Rsv!nqV#USLyVmJ|MZlg_YXdkNyn|O_QNgRlQwajVj3v!> z9P~=398o`j1yPYJD!Wm(svvf246yn4n^1_6r}>`yasu3FU{s0_k$dBQ1!vr zhslhEJ? zaBvjDj7#pkaMVMkV-xfUw}m};N7?>uk>Re=S&d4%044O65z@E`GYl3w>I%42&apUW}IXIt1lg5e@29q8xlKtex^#QawkG#H!n-J5`_t)<}wqPUvEej z!5e9hQ+&Atom-8M)^fOy`73h z+6dreNSLVItfLuxj#1E0~40*?0zaM}d6Dlrke|p+8X@}m; z&WeO^xcMX^=h+46ST*r5N!O;CKJ6gfqo<3@_GJ|=&Y=$8MtM4NUK$>LAzm_v4GXHL zHM|XbRj!Z8-g}+uOvYsF^T8p`>x`5mc=R@$B-CM}^9bz1OsFy;KdcIgH|M>uvw7uA zJB_CZ%6J2YjwOy4MpBjWgnL9S^r?m1lTuWoS~yp3TB9655!BHzh53$wU21n{>oXW8 z!KuaF*p$hn>F(jdg`zXAz1)`yJ=1V#4qih>dL}Ol$)T! zA3TMlh|`rhBsf$gU8DZ!?6akGt%VsDi|O+1>B)KfUb;%CB$AhS?pLSE?ef?WsM-Lz zLeiJIXrAu1tw0A}sPoJ%N+EBHkDCt&Y{); zf=@diT5xjdl~5aRdcBuHDPCc?G=# z&J0j6b<^)owGm{IxBkm5%1{qcs6=tuLyP4#v32jOE9ntmxvCImf6v`8d*icKv)%Y% zS%o%5=Hr#OAtI3SFzOSGnzR>5gXK3$x+BJ)syX>?8)Y6Hz2eyy-o>OI1tk-m^qZ*O60{ICFgA)bg2>^xa zm~ErN8x}!lY4|xwfn)dT>)3jp9tKSbxtnS7d@G8c9aGg!uCyev;edMC>Ug0_nTf07 zmAQN#5pkGR3qN{w{>?LLNQQPB>yko8d9R8-yF{hA-`f>3Cjm9gw zF+^5Bi-3rE9MW^VD9K_*Xk@Ts*?fK^UF@N5_W5*&u;+KWJ!B+h);UO

j@O6e-rn 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 Date: Fri, 10 Jun 2022 22:36:51 +0200 Subject: [PATCH 107/599] Update README.md --- README.md | 43 ++++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 6325905f..4e147a24 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A Unity asset extractor for Python based on [AssetStudio](https://github.com/Perfare/AssetStudio). -Next to extraction it also supports editing Unity assets. +Next to extraction, it also supports editing Unity assets. So far following obj types can be edited: - Texture2D - Sprite(indirectly via linked Texture2D) @@ -19,13 +19,14 @@ feel free to join the [UnityPy Discord](https://discord.gg/C6txv7M). If you're making an income by using UnityPy, -please donate a small part of it to a charitable cause of your choice or sponsor this project with a small amount. +please donate a small part of it to a charitable cause or sponsor this project with a small amount. 1. [Installation](#installation) 2. [Example](#example) 3. [Important Classes](#important-classes) 4. [Important Object Types](#important-object-types) +5. [Credits](#credits) ## Installation @@ -101,25 +102,25 @@ def unpack_all_assets(source_folder : str, destination_folder : str): You probably have to read [Important Classes](#important-classes) and [Important Object Types](#important-object-types) to understand how it works. -People who have slightly advanced python skills should take a look at [UnityPy/tools/extractor.py](UnityPy/tools/extractor.py) for a more advanced example. -It can also be used as the general template or simply as an importable tool. +People with slightly advanced python skills should look at [UnityPy/tools/extractor.py](UnityPy/tools/extractor.py) for a more advanced example. +It can also be used as a general template or as an importable tool. ## Important Classes ### [Environment](UnityPy/environment.py) -Environment loads and parses the files that are given to it. +Environment loads and parses the given files. It can be initialized via: * a file path - apk files can be loaded as well * a folder path - loads all files in that folder (bad idea for folders with a lot of files) -* a stream - e.g. io.BytesIO, file stream,... +* a stream - e.g., io.BytesIO, file stream,... * a bytes object - will be loaded into a stream -UnityPy can detect itself if the file is a WebFile, BundleFile, Asset, or APK itself. +UnityPy can detect if the file is a WebFile, BundleFile, Asset, or APK. -The unpacked assets will be loaded into ``.files``, which is a dict consisting of ``asset-name : asset``. +The unpacked assets will be loaded into ``.files``, a dict consisting of ``asset-name : asset``. All objects of the loaded assets can be easily accessed via ``.objects``, which itself is a simple recursive iterator. @@ -153,13 +154,13 @@ One of these objects can be an AssetBundle, which contains a file path for some All objects can be found in the ``.objects`` dict - ``{ID : object}``. -The objects which have a file path can be found in the ``.container`` dict - ``{path : object}``. +The objects with a file path can be found in the ``.container`` dict - ``{path : object}``. ### [Object](UnityPy/files/ObjectReader.py) -Objects contain the *actual* files which, e.g. textures, text files, meshes, settings, ... +Objects contain the *actual* files, e.g., textures, text files, meshes, settings, ... -To acquire the actual data of an object it has to be read first, this happens via the ``.read()`` function. This isn't done automatically to save time because only a small part of the objects are of interest. Serialized objects can be set with raw data using ``.set_raw_data(data)`` or modified with ``.save()`` function if supported. +To acquire the actual data of an object it has to be read first. This happens via the ``.read()`` function. This isn't done automatically to save time because only a small part of the objects are of interest. Serialized objects can be set with raw data using ``.set_raw_data(data)`` or modified with ``.save()`` function, if supported. ## Important Object Types @@ -190,7 +191,7 @@ for obj in env.objects: ### [Sprite](UnityPy/classes/Sprite.py) Sprites are part of a texture and can have a separate alpha-image as well. -Unlike most other extractors (including AssetStudio) UnityPy merges those two images by itself. +Unlike most other extractors (including AssetStudio), UnityPy merges those two images by itself. * ``.name`` * ``.image`` - converts the merged texture part into a ``PIL.Image`` @@ -233,8 +234,8 @@ for obj in env.objects: ### [MonoBehaviour](UnityPy/classes/MonoBehaviour.py) MonoBehaviour assets are usually used to save the class instances with their values. -If a type tree exists it can be used to read the whole data, -but if it doesn't, then it is usually necessary to investigate the class that loads the specific MonoBehaviour to extract the data. +If a type tree exists, it can be used to read the whole data, +but if it doesn't exist, then it is usually necessary to investigate the class that loads the specific MonoBehaviour to extract the data. ([example](examples/CustomMonoBehaviour/get_scriptable_texture.py)) * ``.name`` @@ -304,7 +305,7 @@ if obj.type.name == "Font": * ``.export()`` - mesh exported as .obj (str) -The mesh is converted into a Wavefront .obj file. +The mesh will be converted to the Wavefront .obj file format. ```python mesh : Mesh @@ -330,3 +331,15 @@ if mesh_renderer.m_GameObject: export_dir = os.path.join(export_dir, game_object.name) mesh_renderer.export(export_dir) ``` + +## Credits + +First of all, +thanks a lot to all contributors of UnityPy and all of its users. + +Also, +many thanks to: + +- [Perfare](https://github.com/Perfare] for creating and maintaining +- every contributor of [AssetStudio](https://github.com/Perfare/AssetStudio) +- [ds5678](https://github.com/ds5678) for the [TypeTreeDumps](https://github.com/AssetRipper/TypeTreeDumps) and the [custom minimal Tpk format](https://github.com/AssetRipper/Tpk) From 9c18bd25ee6b39a13b77826b3ff77b68cd5ea5a7 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 10 Jun 2022 22:39:38 +0200 Subject: [PATCH 108/599] 1.8.18 - include Tpk typetrees --- MANIFEST.in | 3 ++- UnityPy/__init__.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index 6066bdd6..b33f910e 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,4 @@ include UnityPy/* recursive-include UnityPyBoost *.c *.h -recursive-include UnityPy/lib *.dll *.lib *.so *.dylib \ No newline at end of file +recursive-include UnityPy/lib *.dll *.lib *.so *.dylib +recursive-include UnityPy/resources * diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 74ac6427..8e71ccaf 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.17" +__version__ = "1.8.18" from .environment import Environment From cd1a6e2ca3667102d21a31e09f3c2eae781a3e71 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 12 Jun 2022 00:57:53 +0200 Subject: [PATCH 109/599] 1.8.19 - fix TypeTreeHelper --- UnityPy/__init__.py | 2 +- UnityPy/helpers/TypeTreeHelper.py | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 8e71ccaf..8309c8ff 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.18" +__version__ = "1.8.19" from .environment import Environment diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 127500f7..eb645518 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, List, Union +from typing import Any, Dict, List, Union, Iterable, Tuple from UnityPy.streams import EndianBinaryReader, EndianBinaryWriter from ctypes import c_uint32 import tabulate @@ -19,6 +19,7 @@ class TypeTreeNode(object): "name_str_offset", "type", "name", + "ref_type_hash", ) type: str name: str @@ -32,13 +33,18 @@ class TypeTreeNode(object): name_str_offset: int type: str name: str - - def __init__(self, data: dict = None, **kwargs): - if not data and kwargs: - data = kwargs - if data: - for key, val in data.items(): - setattr(self, key, val) + ref_type_hash: str + + def __init__(self, data: Union[dict, Iterable[Tuple]] = None, **kwargs): + if isinstance(data, dict): + items = data.items() + elif kwargs: + items = kwargs.items() + else: + items = data + + for key, val in items: + setattr(self, key, val) def __repr__(self): return f"" From 3e215da0979997c19200d5e13c2578a779b8ddd5 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 15 Jun 2022 14:14:42 +0200 Subject: [PATCH 110/599] 1.8.20 - correct BundleFile data alignment based on flag (thx to lox9973#8984) --- UnityPy/__init__.py | 2 +- UnityPy/files/BundleFile.py | 33 +++++++++++++++++---------------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 8309c8ff..a04e7f89 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.19" +__version__ = "1.8.20" from .environment import Environment diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 77b20762..154cc707 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -125,11 +125,8 @@ def read_fs(self, reader: EndianBinaryReader): if m_BlocksInfo: self._block_info_flags = m_BlocksInfo[0].flags - compressed_block_size = sum( - blockInfo.compressedSize for blockInfo in m_BlocksInfo - ) - padding = reader.Length - start - compressedSize - compressed_block_size - reader.Position += padding + if self._data_flags & 0x200: + reader.align_stream(16) blocksReader = EndianBinaryReader( b"".join( @@ -241,6 +238,8 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag: int, data_flag: i # file list & file data # prep nodes and build up block data + writer_start_pos = writer.Position + data_writer = EndianBinaryWriter() files = [ ( @@ -315,17 +314,9 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag: int, data_flag: i compressed_block_data_size = len(block_data) # write the header info - ## file size - writer.write_long( - writer.Length - + 8 - + 4 - + 4 - + 4 - + (8 if self.version >= 7 else 0) - + compressed_block_data_size - + compressed_data_size - ) + ## file size - 0 for now, will be set at the end + writer_header_pos = writer.Position + writer.write_long(0) # compressed blockInfoBytes size writer.write_u_int(compressed_block_data_size) # uncompressed size @@ -342,11 +333,21 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag: int, data_flag: i writer.align_stream(16) if (block_info_flag & 0x80) != 0: # at end of file + if data_flag & 0x200: + writer.align_stream(16) writer.write(file_data) writer.write(block_data) else: writer.write(block_data) + if data_flag & 0x200: + writer.align_stream(16) writer.write(file_data) + + writer_end_pos = writer.Position + writer.Position = writer_header_pos + # correct file size + writer.write_long(writer_end_pos - writer_start_pos) + writer.Position = writer_end_pos def decompress_data( From f74bbe7d45e15e207da6f10aed0d31ca1e58d06e Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 27 Jun 2022 19:15:12 +0200 Subject: [PATCH 111/599] README fix Perfare link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4e147a24..510a7eff 100644 --- a/README.md +++ b/README.md @@ -340,6 +340,6 @@ thanks a lot to all contributors of UnityPy and all of its users. Also, many thanks to: -- [Perfare](https://github.com/Perfare] for creating and maintaining +- [Perfare](https://github.com/Perfare) for creating and maintaining - every contributor of [AssetStudio](https://github.com/Perfare/AssetStudio) - [ds5678](https://github.com/ds5678) for the [TypeTreeDumps](https://github.com/AssetRipper/TypeTreeDumps) and the [custom minimal Tpk format](https://github.com/AssetRipper/Tpk) From 1f8c3a2873a07062e228f97750894ee9e890756c Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 27 Jun 2022 23:15:03 +0200 Subject: [PATCH 112/599] 1.9.0 - better typetree node handling - error if no nodes found, instead of returning {} - save_typetree uses tpk nodes --- UnityPy/__init__.py | 2 +- UnityPy/classes/Object.py | 6 +----- UnityPy/files/ObjectReader.py | 37 +++++++++++++++-------------------- 3 files changed, 18 insertions(+), 27 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index a04e7f89..74f20420 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.8.20" +__version__ = "1.9.0" from .environment import Environment diff --git a/UnityPy/classes/Object.py b/UnityPy/classes/Object.py index df9e5b98..a2d75429 100644 --- a/UnityPy/classes/Object.py +++ b/UnityPy/classes/Object.py @@ -47,11 +47,7 @@ def dump_typetree_structure(self) -> str: return self.reader.dump_typetree_structure() def read_typetree(self, nodes: list = None) -> dict: - try: - tree = self.reader.read_typetree(nodes) - except TypeTreeError as e: - print("Failed to read TypeTree:\n", e) - return {} + tree = self.reader.read_typetree(nodes) self.type_tree = NodeHelper(tree, self.assets_file) return tree diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index 62bda2a2..394be14c 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -1,10 +1,12 @@ from ..enums import ClassIDType + from . import SerializedFile from .. import classes from ..classes.Object import NodeHelper from ..streams import EndianBinaryReader, EndianBinaryWriter from ..helpers import TypeTreeHelper from ..helpers.Tpk import get_typetree_nodes +from ..exceptions import TypeTreeError class ObjectReader: @@ -198,34 +200,27 @@ def dump_typetree(self, nodes: list = None) -> str: return "" def dump_typetree_structure(self) -> str: - if getattr(self.serialized_type, "nodes", None): - return TypeTreeHelper.dump_typetree(self.serialized_type.nodes) - return "" + return TypeTreeHelper.dump_typetree(self.get_typetree_nodes()) + + def get_typetree_nodes(self, nodes: list = None) -> list: + if not nodes: + nodes = self.serialized_type.nodes + if not nodes: + nodes = get_typetree_nodes(self.class_id, self.version) + if not nodes: + raise TypeTreeError("There are no TypeTree nodes for this object.") + return nodes def read_typetree(self, nodes: list = None) -> dict: self.reset() - tree = {} - if nodes: - tree = TypeTreeHelper.read_typetree(nodes, self) - elif self.serialized_type.nodes: - tree = TypeTreeHelper.read_typetree(self.serialized_type.nodes, self) - else: - nodes = get_typetree_nodes(self.class_id, self.version) - if nodes: - tree = TypeTreeHelper.read_typetree(nodes, self) - return tree + nodes = self.get_typetree_nodes(nodes) + return TypeTreeHelper.read_typetree(nodes, self) def save_typetree( self, tree: dict, nodes: list = None, writer: EndianBinaryWriter = None ): - if not writer: - writer = EndianBinaryWriter(endian=self.reader.endian) - if nodes: - TypeTreeHelper.write_typetree(tree, nodes, writer) - elif self.serialized_type.nodes: - TypeTreeHelper.write_typetree(tree, self.serialized_type.nodes, writer) - else: - raise ValueError("There are no TypeTree nodes for this object.") + nodes = self.get_typetree_nodes(nodes) + TypeTreeHelper.write_typetree(tree, nodes, writer) data = writer.bytes self.set_raw_data(data) return data From be8a8226b9eb6935d45e2e744df0887361c7ac1d Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 27 Jun 2022 23:28:07 +0200 Subject: [PATCH 113/599] 1.9.1 - fix ObjectReader.save_typetree --- UnityPy/__init__.py | 2 +- UnityPy/classes/Object.py | 3 --- UnityPy/files/ObjectReader.py | 4 +++- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 74f20420..d85221d7 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.0" +__version__ = "1.9.1" from .environment import Environment diff --git a/UnityPy/classes/Object.py b/UnityPy/classes/Object.py index a2d75429..8bcc4efc 100644 --- a/UnityPy/classes/Object.py +++ b/UnityPy/classes/Object.py @@ -52,9 +52,6 @@ def read_typetree(self, nodes: list = None) -> dict: return tree def save_typetree(self, nodes: list = None, writer: EndianBinaryWriter = None): - if not writer: - writer = EndianBinaryWriter(endian=self.reader.endian) - def class_to_dict(value): if isinstance(value, list): return [class_to_dict(val) for val in value] diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index 394be14c..8229168c 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -220,7 +220,9 @@ def save_typetree( self, tree: dict, nodes: list = None, writer: EndianBinaryWriter = None ): nodes = self.get_typetree_nodes(nodes) - TypeTreeHelper.write_typetree(tree, nodes, writer) + if not writer: + writer = EndianBinaryWriter(endian=self.reader.endian) + writer = TypeTreeHelper.write_typetree(tree, nodes, writer) data = writer.bytes self.set_raw_data(data) return data From 7ad80effcf0ec0be6acaf26a9ac3843db7c4a541 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 29 Jun 2022 12:27:16 +0200 Subject: [PATCH 114/599] Squashed commit of the following: commit 40fedd9bb0fbb877a3c5cfd35ddf97c045201078 Author: Rudolf Kolbe Date: Wed Jun 29 12:24:59 2022 +0200 fix get_nodes commit 6457c5dd653a88b5fcd590f35b4aee1e3b9f35fb Author: Rudolf Kolbe Date: Wed Jun 29 12:23:41 2022 +0200 decode strings withs surrogateescape commit 6e021424fe2f73ab647dd1e7b2acfb7970dd0457 Author: Rudolf Kolbe Date: Wed Jun 29 10:17:11 2022 +0200 fix memory leak commit 1e0972a2d2ff1b8154b7294e060d52df589564bf Author: Rudolf Kolbe Date: Tue Jun 28 13:36:27 2022 +0200 fix TypelessData -> memoryview commit c2441d9361c0e35f1dfdde4dd92abc3a946509a9 Author: Rudolf Kolbe Date: Tue Jun 28 00:58:25 2022 +0200 TypeTreeHelper.c - use memoryview for typelessdata and fix class key name commit 4ce01cdc76ec0479fe0c4bcb8a54f7e4488bd9a7 Author: Rudolf Kolbe Date: Mon Jun 27 23:03:11 2022 +0200 improve memoryview read_string_to_null commit fbb7687fd67417ad842ba2b6e8e66a0fb9cb5cee Author: Rudolf Kolbe Date: Mon Jun 27 23:02:52 2022 +0200 implement C-TypeTreeNode commit 60c8ebb428424f4143f5f3824701a1eaf93b44e5 Author: Rudolf Kolbe Date: Mon Jun 20 14:13:32 2022 +0200 typetreehelper - c --- UnityPy/files/SerializedFile.py | 14 +- UnityPy/helpers/ImportHelper.py | 7 +- UnityPy/helpers/TypeTreeHelper.py | 22 +- UnityPy/streams/EndianBinaryReader.py | 5 +- UnityPyBoost/TypeTreeHelper.c | 730 ++++++++++++++++++++++++++ UnityPyBoost/TypeTreeHelper.h | 29 + UnityPyBoost/UnityPyBoost.c | 9 +- 7 files changed, 799 insertions(+), 17 deletions(-) create mode 100644 UnityPyBoost/TypeTreeHelper.c create mode 100644 UnityPyBoost/TypeTreeHelper.h diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index a4ceef1e..e947cc04 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -369,11 +369,14 @@ def read_type_tree_blob(self): if not config.SERIALIZED_FILE_PARSE_TYPETREE: return [], string_buffer_reader.bytes - type_tree = [None] * number_of_nodes - for i, raw_node in enumerate(node_struct.iter_unpack(struct_data)): - type_tree[i] = node = TypeTreeNode(zip(keys, raw_node)) - node.type = read_string(string_buffer_reader, node.type_str_offset) - node.name = read_string(string_buffer_reader, node.name_str_offset) + type_tree = [ + TypeTreeNode( + **dict(zip(keys, raw_node)), + type=read_string(string_buffer_reader, raw_node[3]), + name=read_string(string_buffer_reader, raw_node[4]), + ) + for i, raw_node in enumerate(node_struct.iter_unpack(struct_data)) + ] return type_tree, string_buffer_reader.bytes @@ -414,6 +417,7 @@ def save(self, packer: str = None) -> bytes: header = self.header meta_writer = EndianBinaryWriter(endian=header.endian) data_writer = EndianBinaryWriter(endian=header.endian) + if header.version >= 7: meta_writer.write_string_to_null(self.unity_version) diff --git a/UnityPy/helpers/ImportHelper.py b/UnityPy/helpers/ImportHelper.py index 2fd62ae7..39f7365e 100644 --- a/UnityPy/helpers/ImportHelper.py +++ b/UnityPy/helpers/ImportHelper.py @@ -53,10 +53,9 @@ def check_file_type(input_) -> Union[FileType, EndianBinaryReader]: if reader.Length < 20: return FileType.ResourceFile, reader - try: - signature = reader.read_string_to_null(20) - except ValueError: - signature = "" + + signature = reader.read_string_to_null(20) + reader.Position = 0 if signature in [ "UnityWeb", diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index eb645518..5a3f85d8 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -20,6 +20,7 @@ class TypeTreeNode(object): "type", "name", "ref_type_hash", + "variable_count", ) type: str name: str @@ -34,6 +35,7 @@ class TypeTreeNode(object): type: str name: str ref_type_hash: str + variable_count: int def __init__(self, data: Union[dict, Iterable[Tuple]] = None, **kwargs): if isinstance(data, dict): @@ -50,6 +52,12 @@ def __repr__(self): return f"" +try: + from ..UnityPyBoost import TypeTreeNode, read_typetree as read_typetree_c +except: + read_typetree_c = None + + def node_dict_to_class(nodes: List[dict]) -> List[TypeTreeNode]: """Converts all dict-type nodes into TypeTreeNodes @@ -128,13 +136,11 @@ def get_nodes(nodes: List[TypeTreeNode], index: int) -> list: list A list of nodes """ - nodes2 = [nodes[index]] level = nodes[index].level - for node in nodes[index + 1 :]: + for i, node in enumerate(nodes[index + 1 :], index + 1): if node.level <= level: - return nodes2 - nodes2.append(node) - return nodes2 + return nodes[index:i] + return nodes[index:] def read_typetree( @@ -154,9 +160,13 @@ def read_typetree( dict The parsed typtree """ - # reader.reset() + reader.reset() + nodes = check_nodes(nodes) + if read_typetree_c: + return read_typetree_c(nodes, reader.read_bytes(reader.byte_size)) + obj = {} i = c_uint32(1) while i.value < len(nodes): diff --git a/UnityPy/streams/EndianBinaryReader.py b/UnityPy/streams/EndianBinaryReader.py index 1c9e7295..c89fdfbc 100644 --- a/UnityPy/streams/EndianBinaryReader.py +++ b/UnityPy/streams/EndianBinaryReader.py @@ -284,7 +284,10 @@ def read_aligned_string(self): def read_string_to_null(self, max_length=32767) -> str: match = reNot0.search(self.view, self.Position, self.Position + max_length) if not match: - raise ValueError("Unterminated string") + if self.Position + max_length >= self.Length: + raise Exception("String not terminated") + else: + return bytes(self.read_bytes(max_length)).decode("utf8", "surrogateescape") ret = match[1].decode("utf8", "surrogateescape") self.Position = match.end() return ret diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c new file mode 100644 index 00000000..a662b1ff --- /dev/null +++ b/UnityPyBoost/TypeTreeHelper.c @@ -0,0 +1,730 @@ +#define PY_SSIZE_T_CLEAN +#pragma once +#include +#include "structmember.h" +#include "TypeTreeHelper.h" +#include +#include + +typedef struct +{ + char *data; + char *dataStart; + char *dataEnd; + char swap; + PyObject *obj; +} Reader; + +#define kAlignBytesFlag 1 << 14 +#define kAnyChildUsesAlignBytesFlag 1 << 15 +static char SURROGATEESCAPE[] = "surrogateescape"; + +static inline uint32_t hash_str(const char *str) +{ + unsigned int hash = 5381; + int c; + while ((c = *str++)) + hash = ((hash << 5) + hash) + c; + return hash; +} + +static inline void align4(Reader *reader) +{ + char mod = (reader->data - reader->dataStart) % 4; + if (mod != 0) + { + reader->data += 4 - mod; + } +} + +#define HASH_SInt8 235330747 +#define HASH_UInt8 237702589 +#define HASH_char 2090147939 +#define HASH_SInt16 3470947178 +#define HASH_short 274395349 +#define HASH_UInt16 3549217964 +#define HASH_unsigned_short 878862258 +#define HASH_SInt32 3470947240 +#define HASH_int 193495088 +#define HASH_UInt32 3549218026 +#define HASH_unsigned_int 2990314445 +#define HASH_TypePtr 238243313 +#define HASH_SInt64 3470947341 +#define HASH_long_long 2373003301 +#define HASH_UInt64 3549218127 +#define HASH_unsigned_long_long 857652610 +#define HASH_FileSize 2878770112 +#define HASH_float 259121563 +#define HASH_double 4181547808 +#define HASH_bool 2090120081 +#define HASH_string 479440892 +#define HASH_TypelessData 1242572536 +#define HASH_map 193499011 + +static PyObject *getSubNodes(PyObject *nodes, int *index) +{ + PyObject *result = NULL; + TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index); + unsigned short level = node->level; + for (int i = *index + 1; i < PyList_Size(nodes); i++) + { + if (((TypeTreeNodeObject *)PyList_GetItem(nodes, i))->level <= level) + { + result = PyList_GetSlice(nodes, *index, i); + *index = i - 1; + return result; + } + } + result = PyList_GetSlice(nodes, *index, PyList_Size(nodes)); + *index = PyList_Size(nodes) - 1; + return result; +} + +static inline int PyDict_SetItemString_Safe(PyObject *dict, const char *key, PyObject *value) +{ + int ret = PyDict_SetItemString(dict, key, value); + // SetItemString increases the ref count + // so we have to decrease it here again + // so that the value will be destroyed with the dict + Py_XDECREF(value); + return ret; +} + +static inline int PyList_SetItem_Safe(PyObject *list, int i, PyObject *value) +{ + int ret = PyList_SetItem(list, i, value); + // SetItem increases the ref count + // so we have to decrease it here again + // so that the value will be destroyed with the list + // Py_XDECREF(value); + return ret; +} + +PyObject *TypeTreeHelper_ReadValueVector(PyObject *nodes, Reader *reader, int *index); + +static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int *index) +{ + if (*index >= PyList_Size(nodes)) + { + PyErr_SetString(PyExc_RuntimeError, "index out of range"); + return NULL; + } + TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index); + PyObject *value = NULL; + char align = (node->meta_flag & kAlignBytesFlag) ? 1 : 0; + // printf("RVa: %d\t%lld\t%s\t%s\t%d\t%d\n", *index, (reader->data - reader->dataStart), node->name, node->type, align, node->meta_flag); + switch (hash_str(node->type)) + { + case HASH_SInt8: + value = PyLong_FromLong((int)*reader->data++); + break; + case HASH_UInt8: + case HASH_char: + value = PyLong_FromUnsignedLong((unsigned int)*(unsigned char *)reader->data++); + break; + case HASH_SInt16: + case HASH_short: + value = PyLong_FromLong((int)*(short *)reader->data); + reader->data += 2; + break; + case HASH_UInt16: + case HASH_unsigned_short: + value = PyLong_FromUnsignedLong((unsigned int)*(unsigned short *)reader->data); + reader->data += 2; + break; + case HASH_SInt32: + case HASH_int: + value = PyLong_FromLong(*(int *)reader->data); + reader->data += 4; + break; + case HASH_UInt32: + case HASH_unsigned_int: + case HASH_TypePtr: // Type* + value = PyLong_FromUnsignedLong(*(unsigned int *)reader->data); + reader->data += 4; + break; + case HASH_SInt64: + case HASH_long_long: + value = PyLong_FromLongLong(*(long long *)reader->data); + reader->data += 8; + break; + case HASH_UInt64: + case HASH_unsigned_long_long: + case HASH_FileSize: + value = PyLong_FromUnsignedLongLong(*(unsigned long long *)reader->data); + reader->data += 8; + break; + case HASH_float: + value = PyFloat_FromDouble((double)*(float *)reader->data); + reader->data += 4; + break; + case HASH_double: + value = PyFloat_FromDouble(*(double *)reader->data); + reader->data += 8; + break; + case HASH_bool: + value = PyBool_FromLong((int)*reader->data++); + break; + case HASH_string: + int len_s = *(int *)reader->data; + reader->data += 4; + value = PyUnicode_DecodeUTF8(reader->data, len_s, SURROGATEESCAPE); + reader->data += len_s; + if (node->meta_flag & kAnyChildUsesAlignBytesFlag) + align = 1; + *index += 3; + break; + case HASH_TypelessData: + int len_td = *(int *)reader->data; + reader->data += 4; + if (len_td) + { + // value = PyBytes_FromStringAndSize(reader->data, len_td); + // TODO - copy permission from parent node + value = PyMemoryView_FromMemory(reader->data, len_td, PyBUF_READ); + reader->data += len_td; + // Py_buffer *view = (Py_buffer *)PyMemoryView_GET_BUFFER(value); + // view->obj = reader->obj; + } + else + { + value = PyBytes_FromStringAndSize(NULL, 0); + } + *index += 2; + break; + case HASH_map: + if (node->meta_flag & kAnyChildUsesAlignBytesFlag) + align = 1; + int size = (int)*(int *)reader->data; + reader->data += 4; + + *index += 4; // skip self, Array, size, pair + PyObject *first_nodes = getSubNodes(nodes, index); + *index += 1; // move to start of second + PyObject *second_nodes = getSubNodes(nodes, index); + + int sub_index; + value = PyList_New(size); + for (int i = 0; i < size; i++) + { + sub_index = 0; + PyObject *first = TypeTreeHelper_ReadValue(first_nodes, reader, &sub_index); + sub_index = 0; + PyObject *second = TypeTreeHelper_ReadValue(second_nodes, reader, &sub_index); + PyList_SetItem(value, i, PyTuple_Pack(2, first, second)); + Py_XDECREF(first); + Py_XDECREF(second); + } + break; + Py_XDECREF(first_nodes); + Py_XDECREF(second_nodes); + + default: + // Vector + TypeTreeNodeObject *node2 = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index + 1); + if (strcmp(node2->type, "Array") == 0) + { + if (node->meta_flag & kAnyChildUsesAlignBytesFlag) + align = 1; + *index += 3; // skip self, Array, size + PyObject *vector_nodes = getSubNodes(nodes, index); + int size = (int)*(int *)reader->data; + reader->data += 4; + value = PyList_New(size); + for (int i = 0; i < size; i++) + { + int sub_index = 0; + PyObject *vector_value = TypeTreeHelper_ReadValue(vector_nodes, reader, &sub_index); + PyList_SetItem_Safe(value, i, vector_value); + } + Py_XDECREF(vector_nodes); + // int vector_index = 0; + // value = TypeTreeHelper_ReadValueVector(vector_nodes, reader, &vector_index); + } + else // Class + { + PyObject *cls_nodes = getSubNodes(nodes, index); + int j = 1; + value = PyDict_New(); + char *j_name = NULL; + while (j < PyList_Size(cls_nodes)) + { + j_name = ((TypeTreeNodeObject *)PyList_GetItem(cls_nodes, j))->name; + PyDict_SetItemString_Safe(value, j_name, TypeTreeHelper_ReadValue(cls_nodes, reader, &j)); + j++; + } + Py_XDECREF(cls_nodes); + } + break; + } + + if (align) + align4(reader); + return value; +} + +static PyObject *TypeTreeHelper_ReadTypeTree(PyObject *nodes, PyObject *buf) +{ + Py_buffer view; + if (Py_TYPE(buf)->tp_as_buffer && Py_TYPE(buf)->tp_as_buffer->bf_releasebuffer) + { + buf = PyMemoryView_FromObject(buf); + if (buf == NULL) + { + return NULL; + } + } + else + { + Py_INCREF(buf); + } + + if (PyObject_GetBuffer(buf, &view, PyBUF_WRITABLE | PyBUF_SIMPLE) < 0) + { + PyErr_Clear(); + if (PyObject_GetBuffer(buf, &view, PyBUF_SIMPLE) < 0) + { + Py_DECREF(buf); + return NULL; + } + } + + Reader reader = { + .data = (char *)view.buf, + .dataStart = (char *)view.buf, + .dataEnd = (char *)view.buf + view.len, + .swap = 0, + .obj = buf}; + + PyBuffer_Release(&view); + + PyObject *result = PyDict_New(); + if (result == NULL) + { + Py_DECREF(buf); + return NULL; + } + + int index = 1; + int count = PyList_Size(nodes); + while (index < count) + { + TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, index); + PyObject *value = TypeTreeHelper_ReadValue(nodes, &reader, &index); + if (value == NULL) + { + Py_XDECREF(result); + Py_XDECREF(buf); + return NULL; + } + PyDict_SetItemString_Safe(result, node->name, value); + index++; + } + + Py_DECREF(buf); + + return result; +} + +// PyObject *TypeTreeHelper_ReadValueVector(PyObject *nodes, Reader *reader, int *index) +// { +// if (*index >= PyList_Size(nodes)) +// { +// PyErr_SetString(PyExc_RuntimeError, "index out of range"); +// return NULL; +// } +// TypeTreeNodeObject *node = PyList_GetItem(nodes, *index); +// char align = (node->meta_flag & kAlignBytesFlag) ? 1 : 0; + +// printf("RVe: %d\t%lld\t%s\t%s\t%d\t%d\n", *index, (reader->data - reader->dataStart), node->name, node->type, align, node->meta_flag); + +// int vector_size = *(int *)reader->data; +// reader->data += 4; + +// PyObject *list = PyList_New(vector_size); + +// switch (hash_str(node->type)) +// { +// case HASH_SInt8: +// for (int i = 0; i < vector_size; i++) +// { +// PyList_SetItem(list, i, PyLong_FromLong((int)*reader->data++)); +// } +// break; +// case HASH_UInt8: +// case HASH_char: +// for (int i = 0; i < vector_size; i++) +// { +// PyList_SetItem(list, i, PyLong_FromUnsignedLong((unsigned int)*(unsigned char *)reader->data++)); +// } +// break; +// case HASH_SInt16: +// case HASH_short: +// short *raw_list_s = (short *)reader->data; +// for (int i = 0; i < vector_size; i++) +// { +// PyList_SetItem(list, i, PyLong_FromLong((int)*raw_list_s++)); +// } +// reader->data = (char *)raw_list_s; +// break; +// case HASH_UInt16: +// case HASH_unsigned_short: +// unsigned short *raw_list_us = (unsigned short *)reader->data; +// for (int i = 0; i < vector_size; i++) +// { +// PyList_SetItem(list, i, PyLong_FromUnsignedLong((unsigned int)*raw_list_us++)); +// } +// reader->data = (char *)raw_list_us; +// break; +// case HASH_SInt32: +// case HASH_int: +// int *raw_list_i = (int *)reader->data; +// for (int i = 0; i < vector_size; i++) +// { +// PyList_SetItem(list, i, PyLong_FromLong(*raw_list_i++)); +// } +// reader->data = (char *)raw_list_i; +// break; +// case HASH_UInt32: +// case HASH_unsigned_int: +// case HASH_TypePtr: +// unsigned int *raw_list_ui = (unsigned int *)reader->data; +// for (int i = 0; i < vector_size; i++) +// { +// PyList_SetItem(list, i, PyLong_FromUnsignedLong(*raw_list_ui++)); +// } +// reader->data = (char *)raw_list_ui; +// break; +// case HASH_SInt64: +// case HASH_long_long: +// long long *raw_list_l = (long long *)reader->data; +// for (int i = 0; i < vector_size; i++) +// { +// PyList_SetItem(list, i, PyLong_FromLongLong(*raw_list_l++)); +// } +// reader->data = (char *)raw_list_l; +// break; +// case HASH_UInt64: +// case HASH_unsigned_long_long: +// case HASH_FileSize: +// unsigned long long *raw_list_ul = (unsigned long long *)reader->data; +// for (int i = 0; i < vector_size; i++) +// { +// PyList_SetItem(list, i, PyLong_FromUnsignedLongLong(*raw_list_ul++)); +// } +// reader->data = (char *)raw_list_ul; +// break; +// case HASH_float: +// float *raw_list_f = (float *)reader->data; +// for (int i = 0; i < vector_size; i++) +// { +// PyList_SetItem(list, i, PyFloat_FromDouble((double)*raw_list_f++)); +// } +// reader->data = (char *)raw_list_f; +// break; +// case HASH_double: +// double *raw_list_d = (double *)reader->data; +// for (int i = 0; i < vector_size; i++) +// { +// PyList_SetItem(list, i, PyFloat_FromDouble(*raw_list_d++)); +// } +// reader->data = (char *)raw_list_d; +// break; +// case HASH_bool: +// for (int i = 0; i < vector_size; i++) +// { +// PyList_SetItem(list, i, PyBool_FromLong((int)*reader->data++)); +// } +// break; +// case HASH_string: +// for (int i = 0; i < vector_size; i++) +// { +// int str_len = *(int *)reader->data; +// reader->data += 4; +// PyList_SetItem(list, i, PyUnicode_FromStringAndSize(reader->data, str_len)); +// reader->data += str_len; +// if (align) align4(reader); +// } +// index += 3; +// break; +// case HASH_TypelessData: +// for (int i = 0; i < vector_size; i++) +// { +// int str_len = *(int *)reader->data; +// reader->data += 4; +// PyList_SetItem(list, i, PyBytes_FromStringAndSize(reader->data, str_len)); +// reader->data += str_len; +// if (align) align4(reader); + +// } +// index += 2; +// break; +// case HASH_map: +// if (node->meta_flag && kAnyChildUsesAlignBytesFlag) +// align = 1; +// *index += 4; // skip self, Array, size, pair +// PyObject *first_nodes = getSubNodes(nodes, index); +// *index += 1; // move to start of second +// PyObject *second_nodes = getSubNodes(nodes, index); +// int sub_index = 0; +// for (int i = 0; i < vector_size; i++) +// { +// int size = (int)*(int *)reader->data; +// reader->data += 4; +// PyObject* item = PyList_New(size); +// for (int j = 0; j < size; j++) +// { +// sub_index = 0; +// PyObject* first = TypeTreeHelper_ReadValue(first_nodes, reader, &sub_index); +// sub_index = 0; +// PyObject* second = TypeTreeHelper_ReadValue(second_nodes, reader, &sub_index); +// PyList_SetItem(item, j, PyTuple_Pack(2, first, second)); +// } +// PyList_SetItem(list, i, item); +// if (align) align4(reader); +// } +// break; +// default: +// TypeTreeNodeObject *node2 = (TypeTreeNodeObject*) PyList_GetItem(nodes, *index + 1); +// if (strcmp(node2->type, "Array") == 0) +// { +// if (node->meta_flag && kAnyChildUsesAlignBytesFlag) +// align = 1; +// *index += 3; // skip self, Array, size +// PyObject *vector_nodes = getSubNodes(nodes, index); + +// int sub_index = 0; +// for (int i = 0; i < sub_index; i++){ +// sub_index = 0; +// PyObject* item = TypeTreeHelper_ReadValueVector(vector_nodes, reader, &sub_index); +// PyList_SetItem(list, i, item); +// if (align) align4(reader); +// } +// } +// else // Class +// { +// PyObject *cls_nodes = getSubNodes(nodes, index); +// for (int i = 0; i < vector_size; i++) +// { +// int j = 1; +// PyObject *value = PyDict_New(); +// while (j < PyList_Size(cls_nodes)) +// { +// PyDict_SetItemString(value, ((TypeTreeNodeObject*)PyList_GetItem(cls_nodes, j))->name, TypeTreeHelper_ReadValue(cls_nodes, reader, &j)); +// j++; +// } +// PyList_SetItem(list, i, value); +// if (align) align4(reader); +// } +// } +// break; +// } + +// if (align) align4(reader); +// return list; +// } + +PyObject *read_typetree(PyObject *self, PyObject *args) +{ + PyObject *nodes = PyTuple_GetItem(args, 0); + PyObject *buf = PyTuple_GetItem(args, 1); + return TypeTreeHelper_ReadTypeTree(nodes, buf); +} + +static void +TypeTreeNode_dealloc(TypeTreeNodeObject *self) +{ + PyMem_Free(self->name); + PyMem_Free(self->type); + // for (unsigned short i = 0; i < self->children_count; i++) + // { + // Py_DECREF((PyObject*)self->children[i]); + // } + // PyMem_Free(self->children); + Py_TYPE(self)->tp_free((PyObject *)self); +} + +PyObject * +TypeTreeNode_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + TypeTreeNodeObject *self; + self = (TypeTreeNodeObject *)type->tp_alloc(type, 0); + if (self != NULL) + { + self->version = 0; + self->level = 0; + self->is_array = 0; + self->byte_size = 0; + self->index = 0; + self->meta_flag = 0; + self->type = NULL; + self->name = NULL; + // self->type[0] = '\0'; + // self->name[0] = '\0'; + // self->children_count = 0; + // self->children = NULL; + self->type_str_offset = 0; + self->name_str_offset = 0; + self->ref_type_hash = 0; + self->variable_count = 0; + } + return (PyObject *)self; +} + +static int +TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject *kwds) +{ + static char *kwlist[] = { + "name", // char* + "type", // char* + "level", // uint8 + "meta_flag", // int32 + "version", // int16 + "is_array", // char + "byte_size", // int + "index", // int + "type_str_offset", // unsigned int + "name_str_offset", // unsigned int + "ref_type_hash", // unsigned long long + "variable_count", // int + NULL}; + const char *type = NULL; + const char *name = NULL; + if (!PyArg_ParseTupleAndKeywords( + args, + kwds, + "|zzbihbiiIIKi", + kwlist, + &name, + &type, + &self->level, + &self->meta_flag, + &self->version, + &self->is_array, + &self->byte_size, + &self->index, + &self->type_str_offset, + &self->name_str_offset, + &self->ref_type_hash, + &self->variable_count)) + return -1; + if (type != NULL) + { + self->type = PyMem_Malloc(strlen(type) + 1); + strcpy(self->type, type); + } + if (name != NULL) + { + self->name = PyMem_Malloc(strlen(name) + 1); + strcpy(self->name, name); + } + return 0; +}; + +static PyMemberDef TypeTreeNode_members[] = { + {"type", T_STRING, offsetof(TypeTreeNodeObject, type), 0, ""}, + {"name", T_STRING, offsetof(TypeTreeNodeObject, name), 0, ""}, + {"byte_size", T_INT, offsetof(TypeTreeNodeObject, byte_size), 0, ""}, + {"index", T_INT, offsetof(TypeTreeNodeObject, index), 0, ""}, + {"is_array", T_BOOL, offsetof(TypeTreeNodeObject, is_array), 0, ""}, + {"version", T_SHORT, offsetof(TypeTreeNodeObject, version), 0, ""}, + {"meta_flag", T_INT, offsetof(TypeTreeNodeObject, meta_flag), 0, ""}, + {"level", T_UBYTE, offsetof(TypeTreeNodeObject, level), 0, ""}, + {"type_str_offset", T_UINT, offsetof(TypeTreeNodeObject, type_str_offset), 0, ""}, + {"name_str_offset", T_UINT, offsetof(TypeTreeNodeObject, name_str_offset), 0, ""}, + {"ref_type_hash", T_ULONGLONG, offsetof(TypeTreeNodeObject, ref_type_hash), 0, ""}, + {"variable_count", T_INT, offsetof(TypeTreeNodeObject, variable_count), 0, ""}, + {NULL} /* Sentinel */ +}; + +static PyObject * +TypeTreeNode_repr(PyObject *self) +{ + TypeTreeNodeObject *node = (TypeTreeNodeObject *)self; + char *type = node->type; + char *name = node->name; + char *type_str = ""; + char *name_str = ""; + if (type != NULL) + { + type_str = PyMem_Malloc(strlen(type) + 1); + strcpy(type_str, type); + } + if (name != NULL) + { + name_str = PyMem_Malloc(strlen(name) + 1); + strcpy(name_str, name); + } + char buf[1024]; + memset(buf, 0, 1024); + sprintf(buf, "TypeTreeNode(type=%s, name=%s, byte_size=%d, index=%d, is_array=%d, version=%d, meta_flag=%d, level=%d, type_str_offset=%d, name_str_offset=%d, ref_type_hash=%llu, variable_count=%d)", type_str, name_str, node->byte_size, node->index, node->is_array, node->version, node->meta_flag, node->level, node->type_str_offset, node->name_str_offset, node->ref_type_hash, node->variable_count); + PyMem_Free(type_str); + PyMem_Free(name_str); + return PyUnicode_FromString(buf); +} + +// PyTypeObject TypeTreeNodeType; + +// static int +// TypeTreeNode_set_children(TypeTreeNodeObject *self, PyObject *value, void *closure) +// { +// PyObject *tmp; +// if (value == NULL) +// { +// PyErr_SetString(PyExc_TypeError, "Cannot delete the children attribute"); +// return -1; +// } +// if (!PyList_Check(value)) +// { +// PyErr_SetString(PyExc_TypeError, "The children attribute value must be a list"); +// return -1; +// } +// for (unsigned short i = 0; i < self->children_count; i++) +// { +// Py_DECREF((PyObject*)self->children[i]); +// } +// PyMem_Free(self->children); +// self->children_count = PyList_Size(value); +// self->children = PyMem_Malloc(sizeof(TypeTreeNodeObject *) * self->children_count); +// for (unsigned short i = 0; i < self->children_count; i++) +// { +// tmp = PyList_GetItem(value, i); +// if (!PyObject_TypeCheck(tmp, &TypeTreeNodeType)) +// { +// PyErr_SetString(PyExc_TypeError, "The children attribute value must be a list of TypeTreeNode objects"); +// return -1; +// } +// self->children[i] = (TypeTreeNodeObject *)tmp; +// Py_INCREF(tmp); +// } +// return 0; +// } + +// static PyGetSetDef TypeTreeNode_getsetters[] = { +// {"children", (getter) TypeTreeNode_get_children, (setter) TypeTreeNode_set_children, +// "", NULL}, +// {NULL} /* Sentinel */ +// }; + +PyTypeObject TypeTreeNodeType = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "UnityPyBoost.TypeTreeNode", + .tp_doc = PyDoc_STR("TypeTreeNode objects"), + .tp_basicsize = sizeof(TypeTreeNodeObject), + .tp_itemsize = 0, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_new = TypeTreeNode_new, + .tp_init = (initproc)TypeTreeNode_init, + .tp_dealloc = (destructor)TypeTreeNode_dealloc, + .tp_members = TypeTreeNode_members, + .tp_repr = (reprfunc)TypeTreeNode_repr, +}; + +int add_typetreenode_to_module(PyObject *m) +{ + if (PyType_Ready(&TypeTreeNodeType) < 0) + return -1; + Py_INCREF(&TypeTreeNodeType); + PyModule_AddObject(m, "TypeTreeNode", (PyObject *)&TypeTreeNodeType); + return 0; +} \ No newline at end of file diff --git a/UnityPyBoost/TypeTreeHelper.h b/UnityPyBoost/TypeTreeHelper.h new file mode 100644 index 00000000..ddee4f08 --- /dev/null +++ b/UnityPyBoost/TypeTreeHelper.h @@ -0,0 +1,29 @@ +#define PY_SSIZE_T_CLEAN +#pragma once +#include +#include "structmember.h" + +typedef struct TypeTreeNodeObject{ + PyObject_HEAD + short version; + unsigned char level; + char is_array; + int byte_size; + int index; + int meta_flag; + char *type; + char *name; + unsigned short children_count; + //struct TypeTreeNodeObject **children; + // UnityFS + unsigned int type_str_offset; + unsigned int name_str_offset; + // UnityFS - version >= 19 + unsigned long long ref_type_hash; + // UnityRaw - versin = 2 + int variable_count; +} TypeTreeNodeObject; + +int add_typetreenode_to_module(PyObject *m); + +PyObject* read_typetree(PyObject *self, PyObject *args); \ No newline at end of file diff --git a/UnityPyBoost/UnityPyBoost.c b/UnityPyBoost/UnityPyBoost.c index 9b0f5554..48745d35 100644 --- a/UnityPyBoost/UnityPyBoost.c +++ b/UnityPyBoost/UnityPyBoost.c @@ -3,6 +3,7 @@ #include #include "AnimationClip.h" #include "Mesh.h" +#include "TypeTreeHelper.h" /* Mesh.py */ @@ -19,6 +20,10 @@ static struct PyMethodDef method_table[] = { (PyCFunction)unpack_vertexdata, METH_VARARGS, "replacement for VertexData to ComponentData in Mesh.ReadVertexData"}, + {"read_typetree", + (PyCFunction)read_typetree, + METH_VARARGS, + "replacement for TypeTreeHelper.read_typetree"}, {NULL, NULL, 0, @@ -41,5 +46,7 @@ static PyModuleDef UnityPyBoost_module = { // The module init function PyMODINIT_FUNC PyInit_UnityPyBoost(void) { - return PyModule_Create(&UnityPyBoost_module); + PyObject* module = PyModule_Create(&UnityPyBoost_module); + add_typetreenode_to_module(module); + return module; } \ No newline at end of file From 47726a9914765557c5e35c9ce8fd8f45d63c1112 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 29 Jun 2022 12:27:43 +0200 Subject: [PATCH 115/599] 1.9.2 - C TypeTreeReader --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index d85221d7..41fb5cf7 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.1" +__version__ = "1.9.2" from .environment import Environment From b382424791962a28734ab41a3c378a23e1728755 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 29 Jun 2022 13:54:41 +0200 Subject: [PATCH 116/599] 1.9.3 - implement endianess for C TypeTreeReader --- UnityPy/__init__.py | 2 +- UnityPy/helpers/TypeTreeHelper.py | 6 +- UnityPyBoost/TypeTreeHelper.c | 99 +++++++++++++++++++++++++++---- UnityPyBoost/endian.h | 40 +++++++++++++ 4 files changed, 133 insertions(+), 14 deletions(-) create mode 100644 UnityPyBoost/endian.h diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 41fb5cf7..91f03bb2 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.2" +__version__ = "1.9.3" from .environment import Environment diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 5a3f85d8..84a95684 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -1,5 +1,5 @@ from typing import Any, Dict, List, Union, Iterable, Tuple -from UnityPy.streams import EndianBinaryReader, EndianBinaryWriter +from ..streams import EndianBinaryReader, EndianBinaryWriter from ctypes import c_uint32 import tabulate from ..exceptions import TypeTreeError as TypeTreeError @@ -165,7 +165,9 @@ def read_typetree( nodes = check_nodes(nodes) if read_typetree_c: - return read_typetree_c(nodes, reader.read_bytes(reader.byte_size)) + return read_typetree_c( + nodes, reader.read_bytes(reader.byte_size), reader.endian + ) obj = {} i = c_uint32(1) diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c index a662b1ff..66794b79 100644 --- a/UnityPyBoost/TypeTreeHelper.c +++ b/UnityPyBoost/TypeTreeHelper.c @@ -5,6 +5,7 @@ #include "TypeTreeHelper.h" #include #include +#include "endian.h" typedef struct { @@ -124,43 +125,67 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * break; case HASH_SInt16: case HASH_short: - value = PyLong_FromLong((int)*(short *)reader->data); + short value_s = *(short *)reader->data; reader->data += 2; + if (reader->swap) + value_s = (short)bswap16((unsigned short)value_s); + value = PyLong_FromLong(value_s); break; case HASH_UInt16: case HASH_unsigned_short: - value = PyLong_FromUnsignedLong((unsigned int)*(unsigned short *)reader->data); + unsigned short value_us = *(unsigned short *)reader->data; reader->data += 2; + if (reader->swap) + value_us = bswap16(value_us); + value = PyLong_FromUnsignedLong(value_us); break; case HASH_SInt32: case HASH_int: - value = PyLong_FromLong(*(int *)reader->data); + int value_i = *(int *)reader->data; reader->data += 4; + if (reader->swap) + value_i = (int)bswap32((unsigned int)value_i); + value = PyLong_FromLong(value_i); break; case HASH_UInt32: case HASH_unsigned_int: case HASH_TypePtr: // Type* - value = PyLong_FromUnsignedLong(*(unsigned int *)reader->data); + unsigned int value_ui = *(unsigned int *)reader->data; reader->data += 4; + if (reader->swap) + value_ui = bswap32(value_ui); + value = PyLong_FromUnsignedLong(value_ui); break; case HASH_SInt64: case HASH_long_long: - value = PyLong_FromLongLong(*(long long *)reader->data); + long long value_ll = *(long long *)reader->data; reader->data += 8; + if (reader->swap) + value_ll = (long long)bswap64((unsigned long long)value_ll); + value = PyLong_FromLongLong(value_ll); break; case HASH_UInt64: case HASH_unsigned_long_long: case HASH_FileSize: - value = PyLong_FromUnsignedLongLong(*(unsigned long long *)reader->data); + unsigned long long value_ull = *(unsigned long long *)reader->data; reader->data += 8; + if (reader->swap) + value_ull = bswap64(value_ull); + value = PyLong_FromUnsignedLongLong(value_ull); break; case HASH_float: - value = PyFloat_FromDouble((double)*(float *)reader->data); + float value_f = *(float *)reader->data; reader->data += 4; + if (reader->swap) + value_f = (float)bswap32((unsigned int)value_f); + value = PyFloat_FromDouble(value_f); break; case HASH_double: - value = PyFloat_FromDouble(*(double *)reader->data); + double value_d = *(double *)reader->data; reader->data += 8; + if (reader->swap) + value_d = (double)bswap64((unsigned long long)value_d); + value = PyFloat_FromDouble(value_d); break; case HASH_bool: value = PyBool_FromLong((int)*reader->data++); @@ -168,6 +193,10 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * case HASH_string: int len_s = *(int *)reader->data; reader->data += 4; + + if (reader->swap) + len_s = (int)bswap32((unsigned int)len_s); + value = PyUnicode_DecodeUTF8(reader->data, len_s, SURROGATEESCAPE); reader->data += len_s; if (node->meta_flag & kAnyChildUsesAlignBytesFlag) @@ -177,6 +206,10 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * case HASH_TypelessData: int len_td = *(int *)reader->data; reader->data += 4; + + if (reader->swap) + len_td = (int)bswap32((unsigned int)len_td); + if (len_td) { // value = PyBytes_FromStringAndSize(reader->data, len_td); @@ -198,6 +231,9 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * int size = (int)*(int *)reader->data; reader->data += 4; + if (reader->swap) + size = (int)bswap32((unsigned int)size); + *index += 4; // skip self, Array, size, pair PyObject *first_nodes = getSubNodes(nodes, index); *index += 1; // move to start of second @@ -229,6 +265,10 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * *index += 3; // skip self, Array, size PyObject *vector_nodes = getSubNodes(nodes, index); int size = (int)*(int *)reader->data; + + if (reader->swap) + size = (int)bswap32((unsigned int)size); + reader->data += 4; value = PyList_New(size); for (int i = 0; i < size; i++) @@ -263,7 +303,7 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * return value; } -static PyObject *TypeTreeHelper_ReadTypeTree(PyObject *nodes, PyObject *buf) +static PyObject *TypeTreeHelper_ReadTypeTree(PyObject *nodes, PyObject *buf, char swap) { Py_buffer view; if (Py_TYPE(buf)->tp_as_buffer && Py_TYPE(buf)->tp_as_buffer->bf_releasebuffer) @@ -293,7 +333,7 @@ static PyObject *TypeTreeHelper_ReadTypeTree(PyObject *nodes, PyObject *buf) .data = (char *)view.buf, .dataStart = (char *)view.buf, .dataEnd = (char *)view.buf + view.len, - .swap = 0, + .swap = swap, .obj = buf}; PyBuffer_Release(&view); @@ -524,11 +564,48 @@ static PyObject *TypeTreeHelper_ReadTypeTree(PyObject *nodes, PyObject *buf) // return list; // } + PyObject *read_typetree(PyObject *self, PyObject *args) { PyObject *nodes = PyTuple_GetItem(args, 0); PyObject *buf = PyTuple_GetItem(args, 1); - return TypeTreeHelper_ReadTypeTree(nodes, buf); + PyObject *swap_obj = PyTuple_GetItem(args, 2); + char swap = 0; + + if (!PyUnicode_Check(swap_obj)) + { + PyErr_SetString(PyExc_TypeError, + "The endian attribute value must be a string"); + return -1; + } + if (PyUnicode_GET_SIZE(swap_obj) != 1) + { + PyErr_SetString(PyExc_TypeError, + "The endian attribute value must be a string of size 1"); + return -1; + } + char endian = *PyUnicode_AS_DATA(swap_obj); + switch (endian) + { + case '<': + if (IS_LITTLE_ENDIAN == 0) + swap = 1; + break; + case '>': + if (IS_LITTLE_ENDIAN == 1) + swap = 1; + break; + case '=': + case '|': + break; + default: + { + PyErr_SetString(PyExc_TypeError, + "The endian attribute value must be one of '>', '<', '=', '|'"); + return -1; + } + } + return TypeTreeHelper_ReadTypeTree(nodes, buf, swap); } static void diff --git a/UnityPyBoost/endian.h b/UnityPyBoost/endian.h new file mode 100644 index 00000000..79205437 --- /dev/null +++ b/UnityPyBoost/endian.h @@ -0,0 +1,40 @@ +/* +############################################################################ + endianess definitions +############################################################################ +*/ +// check if the system is little endian +#define IS_LITTLE_ENDIAN (*(unsigned char *)&(unsigned short){1}) + +// set swap funcions (source: old version of nodejs/src/node_buffer.cc) +#if defined(__GNUC__) || defined(__clang__) +#define bswap16(x) __builtin_bswap16(x) +#define bswap32(x) __builtin_bswap32(x) +#define bswap64(x) __builtin_bswap64(x) +#elif defined(__linux__) +#include +#define bswap16(x) bswap_16(x) +#define bswap32(x) bswap_32(x) +#define bswap64(x) bswap_64(x) +#elif defined(_MSC_VER) +#include +#define bswap16(x) _byteswap_ushort(x) +#define bswap32(x) _byteswap_ulong(x) +#define bswap64(x) _byteswap_uint64(x) +#else +#define bswap16 ((x) << 8) | ((x) >> 8) +#define bswap32 \ + (((x)&0xFF) << 24) | \ + (((x)&0xFF00) << 8) | \ + (((x) >> 8) & 0xFF00) | \ + (((x) >> 24) & 0xFF) +#define bswap64 \ + (((x)&0xFF00000000000000ull) >> 56) | \ + (((x)&0x00FF000000000000ull) >> 40) | \ + (((x)&0x0000FF0000000000ull) >> 24) | \ + (((x)&0x000000FF00000000ull) >> 8) | \ + (((x)&0x00000000FF000000ull) << 8) | \ + (((x)&0x0000000000FF0000ull) << 24) | \ + (((x)&0x000000000000FF00ull) << 40) | \ + (((x)&0x00000000000000FFull) << 56) +#endif From ee5f5fe8888d6c22e0f2cb3878a4fcb01335f891 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 29 Jun 2022 22:24:35 +0200 Subject: [PATCH 117/599] 1.9.4 - TypeTreeHelper.c - transition to read function via ptr --- UnityPy/__init__.py | 2 +- UnityPyBoost/TypeTreeHelper.c | 668 +++++++++++++++------------------- 2 files changed, 296 insertions(+), 374 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 91f03bb2..ba8504de 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.3" +__version__ = "1.9.4" from .environment import Environment diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c index 66794b79..48a04019 100644 --- a/UnityPyBoost/TypeTreeHelper.c +++ b/UnityPyBoost/TypeTreeHelper.c @@ -62,6 +62,210 @@ static inline void align4(Reader *reader) #define HASH_TypelessData 1242572536 #define HASH_map 193499011 +typedef PyObject *(*read_type)(Reader *); + +static inline PyObject *read_bool(Reader *reader) +{ + return PyBool_FromLong(*(char *)reader->data++); +} + +static inline PyObject *read_SInt8(Reader *reader) +{ + return PyLong_FromLong(*(signed char *)reader->data++); +} +static inline PyObject *read_UInt8(Reader *reader) +{ + return PyLong_FromUnsignedLong(*(unsigned char *)reader->data++); +} +static inline PyObject *read_SInt16(Reader *reader) +{ + PyObject *ret = NULL; + if (reader->swap) + { + ret = PyLong_FromLong((signed short)bswap16(*(unsigned short *)reader->data)); + } + else + { + ret = PyLong_FromLong(*(signed short *)(reader->data)); + } + reader->data += 2; + return ret; +} +static inline PyObject *read_UInt16(Reader *reader) +{ + PyObject *ret = NULL; + if (reader->swap) + { + ret = PyLong_FromUnsignedLong((unsigned short)bswap16(*(unsigned short *)reader->data)); + } + else + { + ret = PyLong_FromUnsignedLong(*(unsigned short *)(reader->data)); + } + reader->data += 2; + return ret; +} +static inline PyObject *read_SInt32(Reader *reader) +{ + PyObject *ret = NULL; + if (reader->swap) + { + ret = PyLong_FromLong((signed int)bswap32(*(unsigned int *)reader->data)); + } + else + { + ret = PyLong_FromLong(*(signed int *)(reader->data)); + } + reader->data += 4; + return ret; +} +static inline PyObject *read_UInt32(Reader *reader) +{ + PyObject *ret = NULL; + if (reader->swap) + { + ret = PyLong_FromUnsignedLong((unsigned int)bswap32(*(unsigned int *)reader->data)); + } + else + { + ret = PyLong_FromUnsignedLong(*(unsigned int *)(reader->data)); + } + reader->data += 4; + return ret; +} +static inline PyObject *read_SInt64(Reader *reader) +{ + PyObject *ret = NULL; + if (reader->swap) + { + ret = PyLong_FromLongLong((signed long long)bswap64(*(unsigned long long *)reader->data)); + } + else + { + ret = PyLong_FromLongLong(*(signed long long *)(reader->data)); + } + reader->data += 8; + return ret; +} +static inline PyObject *read_UInt64(Reader *reader) +{ + PyObject *ret = NULL; + if (reader->swap) + { + ret = PyLong_FromUnsignedLongLong((unsigned long long)bswap64(*(unsigned long long *)reader->data)); + } + else + { + ret = PyLong_FromUnsignedLongLong(*(unsigned long long *)(reader->data)); + } + reader->data += 8; + return ret; +} +static inline PyObject *read_float(Reader *reader) +{ + PyObject *ret = NULL; + if (reader->swap) + { + ret = PyFloat_FromDouble((float)bswap32(*(unsigned int *)reader->data)); + } + else + { + ret = PyFloat_FromDouble(*(float *)(reader->data)); + } + reader->data += 4; + return ret; +} +static inline PyObject *read_double(Reader *reader) +{ + PyObject *ret = NULL; + if (reader->swap) + { + ret = PyFloat_FromDouble((double)bswap64(*(unsigned long long *)reader->data)); + } + else + { + ret = PyFloat_FromDouble(*(double *)(reader->data)); + } + reader->data += 8; + return ret; +} + +static inline int read_length(Reader *reader) +{ + int length = *(int *)reader->data; + reader->data += 4; + if (reader->swap) + { + length = bswap32(length); + } + return length; +} +static inline PyObject *read_string(Reader *reader) +{ + int length = read_length(reader); + PyObject *str = PyUnicode_DecodeUTF8(reader->data, length, SURROGATEESCAPE); + reader->data += length; + return str; +} + +static inline PyObject *read_TypelessData(Reader *reader) +{ + int length = read_length(reader); + // value = PyBytes_FromStringAndSize(reader->data, len_td); + // TODO - copy permission from parent node + PyObject *value = PyMemoryView_FromMemory(reader->data, length, PyBUF_READ); + reader->data += length; + // Py_buffer *view = (Py_buffer *)PyMemoryView_GET_BUFFER(value); + // view->obj = reader->obj; + return value; +} + +static inline read_type getReadFunction(int hash_value, int *index) +{ + switch (hash_value) + { + case HASH_SInt8: + return read_SInt8; + case HASH_UInt8: + case HASH_char: + return read_UInt8; + case HASH_SInt16: + case HASH_short: + return read_SInt16; + case HASH_UInt16: + case HASH_unsigned_short: + return read_UInt16; + case HASH_SInt32: + case HASH_int: + return read_SInt32; + case HASH_UInt32: + case HASH_unsigned_int: + case HASH_TypePtr: // Type* + return read_UInt32; + case HASH_SInt64: + case HASH_long_long: + return read_SInt64; + case HASH_UInt64: + case HASH_unsigned_long_long: + case HASH_FileSize: + return read_UInt64; + case HASH_float: + return read_float; + case HASH_double: + return read_double; + case HASH_bool: + return read_bool; + case HASH_string: + *index += 3; + return read_string; + case HASH_TypelessData: + *index += 2; + return read_TypelessData; + default: + return NULL; + } +} + static PyObject *getSubNodes(PyObject *nodes, int *index) { PyObject *result = NULL; @@ -101,6 +305,20 @@ static inline int PyList_SetItem_Safe(PyObject *list, int i, PyObject *value) return ret; } +static inline void initReadFuncOrNodes(PyObject *nodes, int *index, PyObject **subnodes, read_type *func, char *subalign) +{ + TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index); + *func = getReadFunction(hash_str(node->type), index); + if (*func == NULL) + { + *subnodes = getSubNodes(nodes, index); + } + else + { + *subalign = ((node->meta_flag & kAlignBytesFlag) | (node->meta_flag & kAnyChildUsesAlignBytesFlag)) ? 1 : 0; + } +} + PyObject *TypeTreeHelper_ReadValueVector(PyObject *nodes, Reader *reader, int *index); static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int *index) @@ -112,190 +330,93 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * } TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index); PyObject *value = NULL; - char align = (node->meta_flag & kAlignBytesFlag) ? 1 : 0; - // printf("RVa: %d\t%lld\t%s\t%s\t%d\t%d\n", *index, (reader->data - reader->dataStart), node->name, node->type, align, node->meta_flag); - switch (hash_str(node->type)) - { - case HASH_SInt8: - value = PyLong_FromLong((int)*reader->data++); - break; - case HASH_UInt8: - case HASH_char: - value = PyLong_FromUnsignedLong((unsigned int)*(unsigned char *)reader->data++); - break; - case HASH_SInt16: - case HASH_short: - short value_s = *(short *)reader->data; - reader->data += 2; - if (reader->swap) - value_s = (short)bswap16((unsigned short)value_s); - value = PyLong_FromLong(value_s); - break; - case HASH_UInt16: - case HASH_unsigned_short: - unsigned short value_us = *(unsigned short *)reader->data; - reader->data += 2; - if (reader->swap) - value_us = bswap16(value_us); - value = PyLong_FromUnsignedLong(value_us); - break; - case HASH_SInt32: - case HASH_int: - int value_i = *(int *)reader->data; - reader->data += 4; - if (reader->swap) - value_i = (int)bswap32((unsigned int)value_i); - value = PyLong_FromLong(value_i); - break; - case HASH_UInt32: - case HASH_unsigned_int: - case HASH_TypePtr: // Type* - unsigned int value_ui = *(unsigned int *)reader->data; - reader->data += 4; - if (reader->swap) - value_ui = bswap32(value_ui); - value = PyLong_FromUnsignedLong(value_ui); - break; - case HASH_SInt64: - case HASH_long_long: - long long value_ll = *(long long *)reader->data; - reader->data += 8; - if (reader->swap) - value_ll = (long long)bswap64((unsigned long long)value_ll); - value = PyLong_FromLongLong(value_ll); - break; - case HASH_UInt64: - case HASH_unsigned_long_long: - case HASH_FileSize: - unsigned long long value_ull = *(unsigned long long *)reader->data; - reader->data += 8; - if (reader->swap) - value_ull = bswap64(value_ull); - value = PyLong_FromUnsignedLongLong(value_ull); - break; - case HASH_float: - float value_f = *(float *)reader->data; - reader->data += 4; - if (reader->swap) - value_f = (float)bswap32((unsigned int)value_f); - value = PyFloat_FromDouble(value_f); - break; - case HASH_double: - double value_d = *(double *)reader->data; - reader->data += 8; - if (reader->swap) - value_d = (double)bswap64((unsigned long long)value_d); - value = PyFloat_FromDouble(value_d); - break; - case HASH_bool: - value = PyBool_FromLong((int)*reader->data++); - break; - case HASH_string: - int len_s = *(int *)reader->data; - reader->data += 4; - - if (reader->swap) - len_s = (int)bswap32((unsigned int)len_s); - - value = PyUnicode_DecodeUTF8(reader->data, len_s, SURROGATEESCAPE); - reader->data += len_s; - if (node->meta_flag & kAnyChildUsesAlignBytesFlag) - align = 1; - *index += 3; - break; - case HASH_TypelessData: - int len_td = *(int *)reader->data; - reader->data += 4; - - if (reader->swap) - len_td = (int)bswap32((unsigned int)len_td); + int sub_index = 0; - if (len_td) - { - // value = PyBytes_FromStringAndSize(reader->data, len_td); - // TODO - copy permission from parent node - value = PyMemoryView_FromMemory(reader->data, len_td, PyBUF_READ); - reader->data += len_td; - // Py_buffer *view = (Py_buffer *)PyMemoryView_GET_BUFFER(value); - // view->obj = reader->obj; - } - else - { - value = PyBytes_FromStringAndSize(NULL, 0); - } - *index += 2; - break; - case HASH_map: - if (node->meta_flag & kAnyChildUsesAlignBytesFlag) - align = 1; - int size = (int)*(int *)reader->data; - reader->data += 4; - - if (reader->swap) - size = (int)bswap32((unsigned int)size); - - *index += 4; // skip self, Array, size, pair - PyObject *first_nodes = getSubNodes(nodes, index); - *index += 1; // move to start of second - PyObject *second_nodes = getSubNodes(nodes, index); - - int sub_index; - value = PyList_New(size); - for (int i = 0; i < size; i++) - { - sub_index = 0; - PyObject *first = TypeTreeHelper_ReadValue(first_nodes, reader, &sub_index); - sub_index = 0; - PyObject *second = TypeTreeHelper_ReadValue(second_nodes, reader, &sub_index); - PyList_SetItem(value, i, PyTuple_Pack(2, first, second)); - Py_XDECREF(first); - Py_XDECREF(second); - } - break; - Py_XDECREF(first_nodes); - Py_XDECREF(second_nodes); + char align = ((node->meta_flag & kAlignBytesFlag) | (node->meta_flag & kAnyChildUsesAlignBytesFlag)) ? 1 : 0; + // printf("RVa: %d\t%lld\t%s\t%s\t%d\t%d\n", *index, (reader->data - reader->dataStart), node->name, node->type, align, node->meta_flag); - default: - // Vector - TypeTreeNodeObject *node2 = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index + 1); - if (strcmp(node2->type, "Array") == 0) + int hash_value = hash_str(node->type); + read_type func = getReadFunction(hash_value, index); + if (func) + { + value = func(reader); + } + else + { + if (hash_value == HASH_map) { - if (node->meta_flag & kAnyChildUsesAlignBytesFlag) - align = 1; - *index += 3; // skip self, Array, size - PyObject *vector_nodes = getSubNodes(nodes, index); - int size = (int)*(int *)reader->data; + int size = read_length(reader); + + *index += 4; // skip self, Array, size, pair + PyObject *first_nodes = NULL; + read_type first_func = NULL; + char firstalign = 0; + initReadFuncOrNodes(nodes, index, &first_nodes, &first_func, &firstalign); + *index += 1; // move to start of second + PyObject *second_nodes = NULL; + read_type second_func = NULL; + char secondalign = 0; + initReadFuncOrNodes(nodes, index, &second_nodes, &second_func, &secondalign); - if (reader->swap) - size = (int)bswap32((unsigned int)size); - - reader->data += 4; value = PyList_New(size); + PyObject *first; + PyObject *second; for (int i = 0; i < size; i++) { - int sub_index = 0; - PyObject *vector_value = TypeTreeHelper_ReadValue(vector_nodes, reader, &sub_index); - PyList_SetItem_Safe(value, i, vector_value); + sub_index = 0; + first = (first_func) ? first_func(reader) : TypeTreeHelper_ReadValue(first_nodes, reader, &sub_index); + if (firstalign) + align4(reader); + sub_index = 0; + second = (second_func) ? second_func(reader) : TypeTreeHelper_ReadValue(second_nodes, reader, &sub_index); + if (secondalign) + align4(reader); + PyList_SetItem(value, i, PyTuple_Pack(2, first, second)); + Py_XDECREF(first); + Py_XDECREF(second); } - Py_XDECREF(vector_nodes); - // int vector_index = 0; - // value = TypeTreeHelper_ReadValueVector(vector_nodes, reader, &vector_index); + Py_XDECREF(first_nodes); + Py_XDECREF(second_nodes); } - else // Class + else { - PyObject *cls_nodes = getSubNodes(nodes, index); - int j = 1; - value = PyDict_New(); - char *j_name = NULL; - while (j < PyList_Size(cls_nodes)) + TypeTreeNodeObject *node2 = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index + 1); + if (strcmp(node2->type, "Array") == 0) { - j_name = ((TypeTreeNodeObject *)PyList_GetItem(cls_nodes, j))->name; - PyDict_SetItemString_Safe(value, j_name, TypeTreeHelper_ReadValue(cls_nodes, reader, &j)); - j++; + *index += 3; // skip self, Array, size + PyObject *vector_nodes = NULL; + read_type vector_func = NULL; + char subalign = 0; + initReadFuncOrNodes(nodes, index, &vector_nodes, &vector_func, &subalign); + + int size = read_length(reader); + value = PyList_New(size); + for (int i = 0; i < size; i++) + { + // printf("i: %d - pos: %d\n", i, reader->data - reader->dataStart); + int sub_index = 0; + PyObject *vector_value = (vector_func) ? vector_func(reader) : TypeTreeHelper_ReadValue(vector_nodes, reader, &sub_index); + if (subalign) + align4(reader); + PyList_SetItem_Safe(value, i, vector_value); + } + Py_XDECREF(vector_nodes); + } + else // Class + { + PyObject *cls_nodes = getSubNodes(nodes, index); + int j = 1; + value = PyDict_New(); + char *j_name = NULL; + while (j < PyList_Size(cls_nodes)) + { + j_name = ((TypeTreeNodeObject *)PyList_GetItem(cls_nodes, j))->name; + PyDict_SetItemString_Safe(value, j_name, TypeTreeHelper_ReadValue(cls_nodes, reader, &j)); + j++; + } + Py_XDECREF(cls_nodes); } - Py_XDECREF(cls_nodes); } - break; } if (align) @@ -366,205 +487,6 @@ static PyObject *TypeTreeHelper_ReadTypeTree(PyObject *nodes, PyObject *buf, cha return result; } -// PyObject *TypeTreeHelper_ReadValueVector(PyObject *nodes, Reader *reader, int *index) -// { -// if (*index >= PyList_Size(nodes)) -// { -// PyErr_SetString(PyExc_RuntimeError, "index out of range"); -// return NULL; -// } -// TypeTreeNodeObject *node = PyList_GetItem(nodes, *index); -// char align = (node->meta_flag & kAlignBytesFlag) ? 1 : 0; - -// printf("RVe: %d\t%lld\t%s\t%s\t%d\t%d\n", *index, (reader->data - reader->dataStart), node->name, node->type, align, node->meta_flag); - -// int vector_size = *(int *)reader->data; -// reader->data += 4; - -// PyObject *list = PyList_New(vector_size); - -// switch (hash_str(node->type)) -// { -// case HASH_SInt8: -// for (int i = 0; i < vector_size; i++) -// { -// PyList_SetItem(list, i, PyLong_FromLong((int)*reader->data++)); -// } -// break; -// case HASH_UInt8: -// case HASH_char: -// for (int i = 0; i < vector_size; i++) -// { -// PyList_SetItem(list, i, PyLong_FromUnsignedLong((unsigned int)*(unsigned char *)reader->data++)); -// } -// break; -// case HASH_SInt16: -// case HASH_short: -// short *raw_list_s = (short *)reader->data; -// for (int i = 0; i < vector_size; i++) -// { -// PyList_SetItem(list, i, PyLong_FromLong((int)*raw_list_s++)); -// } -// reader->data = (char *)raw_list_s; -// break; -// case HASH_UInt16: -// case HASH_unsigned_short: -// unsigned short *raw_list_us = (unsigned short *)reader->data; -// for (int i = 0; i < vector_size; i++) -// { -// PyList_SetItem(list, i, PyLong_FromUnsignedLong((unsigned int)*raw_list_us++)); -// } -// reader->data = (char *)raw_list_us; -// break; -// case HASH_SInt32: -// case HASH_int: -// int *raw_list_i = (int *)reader->data; -// for (int i = 0; i < vector_size; i++) -// { -// PyList_SetItem(list, i, PyLong_FromLong(*raw_list_i++)); -// } -// reader->data = (char *)raw_list_i; -// break; -// case HASH_UInt32: -// case HASH_unsigned_int: -// case HASH_TypePtr: -// unsigned int *raw_list_ui = (unsigned int *)reader->data; -// for (int i = 0; i < vector_size; i++) -// { -// PyList_SetItem(list, i, PyLong_FromUnsignedLong(*raw_list_ui++)); -// } -// reader->data = (char *)raw_list_ui; -// break; -// case HASH_SInt64: -// case HASH_long_long: -// long long *raw_list_l = (long long *)reader->data; -// for (int i = 0; i < vector_size; i++) -// { -// PyList_SetItem(list, i, PyLong_FromLongLong(*raw_list_l++)); -// } -// reader->data = (char *)raw_list_l; -// break; -// case HASH_UInt64: -// case HASH_unsigned_long_long: -// case HASH_FileSize: -// unsigned long long *raw_list_ul = (unsigned long long *)reader->data; -// for (int i = 0; i < vector_size; i++) -// { -// PyList_SetItem(list, i, PyLong_FromUnsignedLongLong(*raw_list_ul++)); -// } -// reader->data = (char *)raw_list_ul; -// break; -// case HASH_float: -// float *raw_list_f = (float *)reader->data; -// for (int i = 0; i < vector_size; i++) -// { -// PyList_SetItem(list, i, PyFloat_FromDouble((double)*raw_list_f++)); -// } -// reader->data = (char *)raw_list_f; -// break; -// case HASH_double: -// double *raw_list_d = (double *)reader->data; -// for (int i = 0; i < vector_size; i++) -// { -// PyList_SetItem(list, i, PyFloat_FromDouble(*raw_list_d++)); -// } -// reader->data = (char *)raw_list_d; -// break; -// case HASH_bool: -// for (int i = 0; i < vector_size; i++) -// { -// PyList_SetItem(list, i, PyBool_FromLong((int)*reader->data++)); -// } -// break; -// case HASH_string: -// for (int i = 0; i < vector_size; i++) -// { -// int str_len = *(int *)reader->data; -// reader->data += 4; -// PyList_SetItem(list, i, PyUnicode_FromStringAndSize(reader->data, str_len)); -// reader->data += str_len; -// if (align) align4(reader); -// } -// index += 3; -// break; -// case HASH_TypelessData: -// for (int i = 0; i < vector_size; i++) -// { -// int str_len = *(int *)reader->data; -// reader->data += 4; -// PyList_SetItem(list, i, PyBytes_FromStringAndSize(reader->data, str_len)); -// reader->data += str_len; -// if (align) align4(reader); - -// } -// index += 2; -// break; -// case HASH_map: -// if (node->meta_flag && kAnyChildUsesAlignBytesFlag) -// align = 1; -// *index += 4; // skip self, Array, size, pair -// PyObject *first_nodes = getSubNodes(nodes, index); -// *index += 1; // move to start of second -// PyObject *second_nodes = getSubNodes(nodes, index); -// int sub_index = 0; -// for (int i = 0; i < vector_size; i++) -// { -// int size = (int)*(int *)reader->data; -// reader->data += 4; -// PyObject* item = PyList_New(size); -// for (int j = 0; j < size; j++) -// { -// sub_index = 0; -// PyObject* first = TypeTreeHelper_ReadValue(first_nodes, reader, &sub_index); -// sub_index = 0; -// PyObject* second = TypeTreeHelper_ReadValue(second_nodes, reader, &sub_index); -// PyList_SetItem(item, j, PyTuple_Pack(2, first, second)); -// } -// PyList_SetItem(list, i, item); -// if (align) align4(reader); -// } -// break; -// default: -// TypeTreeNodeObject *node2 = (TypeTreeNodeObject*) PyList_GetItem(nodes, *index + 1); -// if (strcmp(node2->type, "Array") == 0) -// { -// if (node->meta_flag && kAnyChildUsesAlignBytesFlag) -// align = 1; -// *index += 3; // skip self, Array, size -// PyObject *vector_nodes = getSubNodes(nodes, index); - -// int sub_index = 0; -// for (int i = 0; i < sub_index; i++){ -// sub_index = 0; -// PyObject* item = TypeTreeHelper_ReadValueVector(vector_nodes, reader, &sub_index); -// PyList_SetItem(list, i, item); -// if (align) align4(reader); -// } -// } -// else // Class -// { -// PyObject *cls_nodes = getSubNodes(nodes, index); -// for (int i = 0; i < vector_size; i++) -// { -// int j = 1; -// PyObject *value = PyDict_New(); -// while (j < PyList_Size(cls_nodes)) -// { -// PyDict_SetItemString(value, ((TypeTreeNodeObject*)PyList_GetItem(cls_nodes, j))->name, TypeTreeHelper_ReadValue(cls_nodes, reader, &j)); -// j++; -// } -// PyList_SetItem(list, i, value); -// if (align) align4(reader); -// } -// } -// break; -// } - -// if (align) align4(reader); -// return list; -// } - - PyObject *read_typetree(PyObject *self, PyObject *args) { PyObject *nodes = PyTuple_GetItem(args, 0); @@ -576,13 +498,13 @@ PyObject *read_typetree(PyObject *self, PyObject *args) { PyErr_SetString(PyExc_TypeError, "The endian attribute value must be a string"); - return -1; + return NULL; } if (PyUnicode_GET_SIZE(swap_obj) != 1) { PyErr_SetString(PyExc_TypeError, "The endian attribute value must be a string of size 1"); - return -1; + return NULL; } char endian = *PyUnicode_AS_DATA(swap_obj); switch (endian) @@ -602,7 +524,7 @@ PyObject *read_typetree(PyObject *self, PyObject *args) { PyErr_SetString(PyExc_TypeError, "The endian attribute value must be one of '>', '<', '=', '|'"); - return -1; + return NULL; } } return TypeTreeHelper_ReadTypeTree(nodes, buf, swap); From 826ed5dc5acfdfa5e1b005ee801dd29de03df153 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 14 Jul 2022 13:44:06 +0200 Subject: [PATCH 118/599] 1.9.5 - node dict to node class --- README.md | 9 +++++++++ UnityPy/__init__.py | 2 +- UnityPy/helpers/TypeTreeHelper.py | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 510a7eff..4960081c 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,15 @@ python setup.py install Visual C++ Redistributable is required for the brotli dependency. +### Crash without warning/error + +The C-implementation of the typetree reader can directly crash python. +In case this happens, the usage of the C-typetree reader can be disabled by adding these two lines to your main file. + +```python +from UnityPy.helpers import TypeTreeHelper +TypeTreeHelper.read_typetree_c = False +``` ## Example diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index ba8504de..e1763e05 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.4" +__version__ = "1.9.5" from .environment import Environment diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 84a95684..67863f53 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -71,7 +71,7 @@ def node_dict_to_class(nodes: List[dict]) -> List[TypeTreeNode]: List[TypeTreeNode] a list of TypeTreeNode-type nodes """ - return [TypeTreeNode(node) for node in nodes] + return [TypeTreeNode(**node) for node in nodes] def check_nodes(nodes: List[Union[dict, TypeTreeNode]]) -> List[TypeTreeNode]: From 0d94a39fb9f5d4333de929dcf487df0f9a19e0b4 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 16 Jul 2022 21:24:06 +0200 Subject: [PATCH 119/599] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4960081c..9792b094 100644 --- a/README.md +++ b/README.md @@ -261,7 +261,7 @@ for obj in env.objects: if obj.serialized_type.nodes: # save decoded data tree = obj.read_typetree() - fp = os.path.join(extract_dir, f"{data.name}.json") + fp = os.path.join(extract_dir, f"{tree['m_Name']}.json") with open(fp, "wt", encoding = "utf8") as f: json.dump(tree, f, ensure_ascii = False, indent = 4) else: @@ -277,7 +277,8 @@ for obj in env.objects: # apply modifications to the data within the tree obj.save_typetree(tree) else: - with open(replace_dir, data.name) as f: + data = obj.read() + with open(os.path.join(replace_dir, data.name)) as f: data.save(raw_data = f.read()) ``` From fd1f6a93b6691133507af4a64a7c7a9e43db996e Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 20 Jul 2022 09:58:01 +0200 Subject: [PATCH 120/599] TypeTreeHelper - accept generated nodes directly --- UnityPy/helpers/TypeTreeHelper.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 67863f53..65c35375 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -58,7 +58,7 @@ def __repr__(self): read_typetree_c = None -def node_dict_to_class(nodes: List[dict]) -> List[TypeTreeNode]: +def node_dict_to_node_cls(nodes: List[dict]) -> List[TypeTreeNode]: """Converts all dict-type nodes into TypeTreeNodes Parameters @@ -71,7 +71,14 @@ def node_dict_to_class(nodes: List[dict]) -> List[TypeTreeNode]: List[TypeTreeNode] a list of TypeTreeNode-type nodes """ - return [TypeTreeNode(**node) for node in nodes] + # check keys - fix m_Name from TypeTreeGenerator or other sources + if next(iter(nodes[0])).startswith("m_"): + return [ + TypeTreeNode(**{key[2:].lower(): val for key, val in node.items()}) + for node in nodes + ] + else: + return [TypeTreeNode(**node) for node in nodes] def check_nodes(nodes: List[Union[dict, TypeTreeNode]]) -> List[TypeTreeNode]: @@ -93,7 +100,7 @@ def check_nodes(nodes: List[Union[dict, TypeTreeNode]]) -> List[TypeTreeNode]: if isinstance(nodes[0], TypeTreeNode): return nodes elif isinstance(nodes[0], dict): - return node_dict_to_class(nodes) + return node_dict_to_node_cls(nodes) raise ValueError( f"nodes must be a list of dict or TypeTreeNode elements, but received {type(nodes)} - {type(nodes[0]) if isinstance(nodes, list) else ''}" ) From 2a1e007d3f07e3b42b15c17dc6f44680495639cf Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 22 Jul 2022 11:16:06 +0200 Subject: [PATCH 121/599] TypeTreeHelper.c - check position to prevent segfaults --- UnityPyBoost/TypeTreeHelper.c | 89 ++++++++++++++++++++++++----------- 1 file changed, 61 insertions(+), 28 deletions(-) diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c index 48a04019..1e5fb1a1 100644 --- a/UnityPyBoost/TypeTreeHelper.c +++ b/UnityPyBoost/TypeTreeHelper.c @@ -64,21 +64,34 @@ static inline void align4(Reader *reader) typedef PyObject *(*read_type)(Reader *); +#define CHECK_LENGTH(reader, length) \ + if (reader->data + length > reader->dataEnd) \ + { \ + PyErr_SetString(PyExc_ValueError, "Not enough data"); \ + return NULL; \ + } + static inline PyObject *read_bool(Reader *reader) { + CHECK_LENGTH(reader, 1); return PyBool_FromLong(*(char *)reader->data++); } static inline PyObject *read_SInt8(Reader *reader) { + CHECK_LENGTH(reader, 1); return PyLong_FromLong(*(signed char *)reader->data++); } + static inline PyObject *read_UInt8(Reader *reader) { + CHECK_LENGTH(reader, 1); return PyLong_FromUnsignedLong(*(unsigned char *)reader->data++); } + static inline PyObject *read_SInt16(Reader *reader) { + CHECK_LENGTH(reader, 2); PyObject *ret = NULL; if (reader->swap) { @@ -91,8 +104,10 @@ static inline PyObject *read_SInt16(Reader *reader) reader->data += 2; return ret; } + static inline PyObject *read_UInt16(Reader *reader) { + CHECK_LENGTH(reader, 2); PyObject *ret = NULL; if (reader->swap) { @@ -105,8 +120,10 @@ static inline PyObject *read_UInt16(Reader *reader) reader->data += 2; return ret; } + static inline PyObject *read_SInt32(Reader *reader) { + CHECK_LENGTH(reader, 4); PyObject *ret = NULL; if (reader->swap) { @@ -119,8 +136,10 @@ static inline PyObject *read_SInt32(Reader *reader) reader->data += 4; return ret; } + static inline PyObject *read_UInt32(Reader *reader) { + CHECK_LENGTH(reader, 4); PyObject *ret = NULL; if (reader->swap) { @@ -133,8 +152,10 @@ static inline PyObject *read_UInt32(Reader *reader) reader->data += 4; return ret; } + static inline PyObject *read_SInt64(Reader *reader) { + CHECK_LENGTH(reader, 8); PyObject *ret = NULL; if (reader->swap) { @@ -147,8 +168,10 @@ static inline PyObject *read_SInt64(Reader *reader) reader->data += 8; return ret; } + static inline PyObject *read_UInt64(Reader *reader) { + CHECK_LENGTH(reader, 8); PyObject *ret = NULL; if (reader->swap) { @@ -161,8 +184,10 @@ static inline PyObject *read_UInt64(Reader *reader) reader->data += 8; return ret; } + static inline PyObject *read_float(Reader *reader) { + CHECK_LENGTH(reader, 4); PyObject *ret = NULL; if (reader->swap) { @@ -175,8 +200,10 @@ static inline PyObject *read_float(Reader *reader) reader->data += 4; return ret; } + static inline PyObject *read_double(Reader *reader) { + CHECK_LENGTH(reader, 8); PyObject *ret = NULL; if (reader->swap) { @@ -200,9 +227,12 @@ static inline int read_length(Reader *reader) } return length; } + static inline PyObject *read_string(Reader *reader) { + CHECK_LENGTH(reader, 4); int length = read_length(reader); + CHECK_LENGTH(reader, length); PyObject *str = PyUnicode_DecodeUTF8(reader->data, length, SURROGATEESCAPE); reader->data += length; return str; @@ -210,13 +240,11 @@ static inline PyObject *read_string(Reader *reader) static inline PyObject *read_TypelessData(Reader *reader) { + CHECK_LENGTH(reader, 4); int length = read_length(reader); - // value = PyBytes_FromStringAndSize(reader->data, len_td); - // TODO - copy permission from parent node + CHECK_LENGTH(reader, length); PyObject *value = PyMemoryView_FromMemory(reader->data, length, PyBUF_READ); reader->data += length; - // Py_buffer *view = (Py_buffer *)PyMemoryView_GET_BUFFER(value); - // view->obj = reader->obj; return value; } @@ -345,6 +373,7 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * { if (hash_value == HASH_map) { + CHECK_LENGTH(reader, 4); int size = read_length(reader); *index += 4; // skip self, Array, size, pair @@ -365,10 +394,21 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * { sub_index = 0; first = (first_func) ? first_func(reader) : TypeTreeHelper_ReadValue(first_nodes, reader, &sub_index); + if (first == NULL) + { + Py_XDECREF(value); + return NULL; + } if (firstalign) align4(reader); sub_index = 0; second = (second_func) ? second_func(reader) : TypeTreeHelper_ReadValue(second_nodes, reader, &sub_index); + if (second == NULL) + { + Py_XDECREF(first); + Py_XDECREF(second); + return NULL; + } if (secondalign) align4(reader); PyList_SetItem(value, i, PyTuple_Pack(2, first, second)); @@ -383,6 +423,8 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * TypeTreeNodeObject *node2 = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index + 1); if (strcmp(node2->type, "Array") == 0) { + if (node->meta_flag & kAlignBytesFlag) + align = 1; *index += 3; // skip self, Array, size PyObject *vector_nodes = NULL; read_type vector_func = NULL; @@ -396,6 +438,11 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * // printf("i: %d - pos: %d\n", i, reader->data - reader->dataStart); int sub_index = 0; PyObject *vector_value = (vector_func) ? vector_func(reader) : TypeTreeHelper_ReadValue(vector_nodes, reader, &sub_index); + if (vector_value == NULL) + { + Py_XDECREF(value); + return NULL; + } if (subalign) align4(reader); PyList_SetItem_Safe(value, i, vector_value); @@ -411,7 +458,13 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * while (j < PyList_Size(cls_nodes)) { j_name = ((TypeTreeNodeObject *)PyList_GetItem(cls_nodes, j))->name; - PyDict_SetItemString_Safe(value, j_name, TypeTreeHelper_ReadValue(cls_nodes, reader, &j)); + PyObject *j_value = TypeTreeHelper_ReadValue(cls_nodes, reader, &j); + if (j_value == NULL) + { + Py_XDECREF(value); + return NULL; + } + PyDict_SetItemString_Safe(value, j_name, j_value); j++; } Py_XDECREF(cls_nodes); @@ -459,28 +512,8 @@ static PyObject *TypeTreeHelper_ReadTypeTree(PyObject *nodes, PyObject *buf, cha PyBuffer_Release(&view); - PyObject *result = PyDict_New(); - if (result == NULL) - { - Py_DECREF(buf); - return NULL; - } - - int index = 1; - int count = PyList_Size(nodes); - while (index < count) - { - TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, index); - PyObject *value = TypeTreeHelper_ReadValue(nodes, &reader, &index); - if (value == NULL) - { - Py_XDECREF(result); - Py_XDECREF(buf); - return NULL; - } - PyDict_SetItemString_Safe(result, node->name, value); - index++; - } + int index = 0; + PyObject *result = TypeTreeHelper_ReadValue(nodes, &reader, &index); Py_DECREF(buf); @@ -726,4 +759,4 @@ int add_typetreenode_to_module(PyObject *m) Py_INCREF(&TypeTreeNodeType); PyModule_AddObject(m, "TypeTreeNode", (PyObject *)&TypeTreeNodeType); return 0; -} \ No newline at end of file +} From 140e167d6dbfe06bd6d35fd03f3a700e992d42cf Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 22 Jul 2022 23:43:38 +0200 Subject: [PATCH 122/599] TypeTreeHelper - replace 0x4000 with kAlignBytes --- UnityPy/helpers/TypeTreeHelper.py | 32 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 65c35375..0c7e449b 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -4,6 +4,7 @@ import tabulate from ..exceptions import TypeTreeError as TypeTreeError +kAlignBytes = 0x4000 class TypeTreeNode(object): __slots__ = ( @@ -176,17 +177,12 @@ def read_typetree( nodes, reader.read_bytes(reader.byte_size), reader.endian ) - obj = {} - i = c_uint32(1) - while i.value < len(nodes): - node = nodes[i.value] - obj[node.name] = read_value(nodes, reader, i) - i.value += 1 + obj = read_value(nodes, reader, c_uint32(0)) - readed = reader.Position - reader.byte_start - if readed != reader.byte_size: + read = reader.Position - reader.byte_start + if read != reader.byte_size: raise TypeTreeError( - f"Error while read type, read {readed} bytes but expected {reader.byte_size} bytes", + f"Error while read type, read {read} bytes but expected {reader.byte_size} bytes", nodes, ) @@ -196,7 +192,7 @@ def read_typetree( def read_value(nodes: List[TypeTreeNode], reader: EndianBinaryReader, i: c_uint32): node = nodes[i.value] typ = node.type - align = (node.meta_flag & 0x4000) != 0 + align = (node.meta_flag & kAlignBytes) != 0 if typ == "SInt8": value = reader.read_byte() @@ -224,7 +220,7 @@ def read_value(nodes: List[TypeTreeNode], reader: EndianBinaryReader, i: c_uint3 value = reader.read_aligned_string() i.value += 3 # Array, Size, Data(typ) elif typ == "map": # map == MultiDict - if (nodes[i.value + 1].meta_flag & 0x4000) != 0: + if (nodes[i.value + 1].meta_flag & kAlignBytes) != 0: align = True map_ = get_nodes(nodes, i.value) i.value += len(map_) - 1 @@ -242,7 +238,7 @@ def read_value(nodes: List[TypeTreeNode], reader: EndianBinaryReader, i: c_uint3 else: # Vector if i.value < len(nodes) - 1 and nodes[i.value + 1].type == "Array": - if (nodes[i.value + 1].meta_flag & 0x4000) != 0: + if (nodes[i.value + 1].meta_flag & kAlignBytes) != 0: align = True vector = get_nodes(nodes, i.value) i.value += len(vector) - 1 @@ -305,7 +301,7 @@ def read_value_str( ) -> list: node = nodes[i.value] typ = node.type - align = (node.meta_flag & 0x4000) != 0 + align = (node.meta_flag & kAlignBytes) != 0 append = True if typ == "SInt8": @@ -340,7 +336,7 @@ def read_value_str( ) ) elif typ == "map": - if (nodes[i.value + 1].meta_flag & 0x4000) != 0: + if (nodes[i.value + 1].meta_flag & kAlignBytes) != 0: align = True map_ = get_nodes(nodes, i.value) i.value += len(map_) - 1 @@ -370,7 +366,7 @@ def read_value_str( else: # Vector if i.value < len(nodes) - 1 and nodes[i.value + 1].type == "Array": - if (nodes[i.value + 1].meta_flag & 0x4000) != 0: + if (nodes[i.value + 1].meta_flag & kAlignBytes) != 0: align = True vector = get_nodes(nodes, i.value) i.value += len(vector) - 1 @@ -466,7 +462,7 @@ def write_value( ): node = nodes[i.value] typ = node.type - align = (node.meta_flag & 0x4000) != 0 + align = (node.meta_flag & kAlignBytes) != 0 if typ == "SInt8": writer.write_byte(value) @@ -494,7 +490,7 @@ def write_value( writer.write_aligned_string(value) i.value += 3 # Array, Size, Data(typ) elif typ == "map": - if (nodes[i.value + 1].meta_flag & 0x4000) != 0: + if (nodes[i.value + 1].meta_flag & kAlignBytes) != 0: align = True map_ = get_nodes(nodes, i.value) i.value += len(map_) - 1 @@ -514,7 +510,7 @@ def write_value( else: # Vector if i.value < len(nodes) - 1 and nodes[i.value + 1].type == "Array": - if (nodes[i.value + 1].meta_flag & 0x4000) != 0: + if (nodes[i.value + 1].meta_flag & kAlignBytes) != 0: align = True vector = get_nodes(nodes, i.value) i.value += len(vector) - 1 From bfbfc77afad52391cde82d63f6ce843b52f0c183 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 22 Jul 2022 23:44:34 +0200 Subject: [PATCH 123/599] TypeTreeHelper.c - replace all kAnyChildUsesAlignBytesFlag, use better error format --- UnityPyBoost/TypeTreeHelper.c | 70 +++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c index 1e5fb1a1..97744bf3 100644 --- a/UnityPyBoost/TypeTreeHelper.c +++ b/UnityPyBoost/TypeTreeHelper.c @@ -18,6 +18,7 @@ typedef struct #define kAlignBytesFlag 1 << 14 #define kAnyChildUsesAlignBytesFlag 1 << 15 + static char SURROGATEESCAPE[] = "surrogateescape"; static inline uint32_t hash_str(const char *str) @@ -29,15 +30,6 @@ static inline uint32_t hash_str(const char *str) return hash; } -static inline void align4(Reader *reader) -{ - char mod = (reader->data - reader->dataStart) % 4; - if (mod != 0) - { - reader->data += 4 - mod; - } -} - #define HASH_SInt8 235330747 #define HASH_UInt8 237702589 #define HASH_char 2090147939 @@ -64,12 +56,37 @@ static inline void align4(Reader *reader) typedef PyObject *(*read_type)(Reader *); -#define CHECK_LENGTH(reader, length) \ - if (reader->data + length > reader->dataEnd) \ - { \ - PyErr_SetString(PyExc_ValueError, "Not enough data"); \ - return NULL; \ +#define CHECK_LENGTH(reader, length) \ + if (reader->data + length > reader->dataEnd) \ + { \ + PyErr_Format(PyExc_ValueError, "Can't read %d bytes at position %d of %d\nError occured at %s:%d:%s", length, (int)(reader->data - reader->dataStart), (int)(reader->dataEnd - reader->dataStart), __FILE__, __LINE__, __func__); \ + return NULL; \ + } + +static inline void initReadFuncOrNodes(PyObject *nodes, int *index, PyObject **subnodes, read_type *func, char *subalign) +{ + TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index); + uint32_t hash = hash_str(node->type); + *func = getReadFunction(hash, index); + if (*func == NULL) + { + *subnodes = getSubNodes(nodes, index); + } + else + { + *subalign = (node->meta_flag & kAlignBytesFlag) ? 1 : 0; + } +} + + +static inline void align4(Reader *reader) +{ + char mod = (reader->data - reader->dataStart) % 4; + if (mod != 0) + { + reader->data += 4 - mod; } +} static inline PyObject *read_bool(Reader *reader) { @@ -235,6 +252,8 @@ static inline PyObject *read_string(Reader *reader) CHECK_LENGTH(reader, length); PyObject *str = PyUnicode_DecodeUTF8(reader->data, length, SURROGATEESCAPE); reader->data += length; + // align + align4(reader); return str; } @@ -333,20 +352,6 @@ static inline int PyList_SetItem_Safe(PyObject *list, int i, PyObject *value) return ret; } -static inline void initReadFuncOrNodes(PyObject *nodes, int *index, PyObject **subnodes, read_type *func, char *subalign) -{ - TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index); - *func = getReadFunction(hash_str(node->type), index); - if (*func == NULL) - { - *subnodes = getSubNodes(nodes, index); - } - else - { - *subalign = ((node->meta_flag & kAlignBytesFlag) | (node->meta_flag & kAnyChildUsesAlignBytesFlag)) ? 1 : 0; - } -} - PyObject *TypeTreeHelper_ReadValueVector(PyObject *nodes, Reader *reader, int *index); static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int *index) @@ -360,7 +365,7 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * PyObject *value = NULL; int sub_index = 0; - char align = ((node->meta_flag & kAlignBytesFlag) | (node->meta_flag & kAnyChildUsesAlignBytesFlag)) ? 1 : 0; + char align = (node->meta_flag & kAlignBytesFlag) ? 1 : 0; // printf("RVa: %d\t%lld\t%s\t%s\t%d\t%d\n", *index, (reader->data - reader->dataStart), node->name, node->type, align, node->meta_flag); int hash_value = hash_str(node->type); @@ -373,6 +378,10 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * { if (hash_value == HASH_map) { + TypeTreeNodeObject *node2 = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index + 1); + if (node2->meta_flag & kAlignBytesFlag) + align = 1; + CHECK_LENGTH(reader, 4); int size = read_length(reader); @@ -423,7 +432,7 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * TypeTreeNodeObject *node2 = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index + 1); if (strcmp(node2->type, "Array") == 0) { - if (node->meta_flag & kAlignBytesFlag) + if (node2->meta_flag & kAlignBytesFlag) align = 1; *index += 3; // skip self, Array, size PyObject *vector_nodes = NULL; @@ -435,7 +444,6 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * value = PyList_New(size); for (int i = 0; i < size; i++) { - // printf("i: %d - pos: %d\n", i, reader->data - reader->dataStart); int sub_index = 0; PyObject *vector_value = (vector_func) ? vector_func(reader) : TypeTreeHelper_ReadValue(vector_nodes, reader, &sub_index); if (vector_value == NULL) From 901ff022d648ca143974d4d65d8dfa58c49d434b Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 23 Jul 2022 22:11:50 +0200 Subject: [PATCH 124/599] fix and improve C code --- UnityPyBoost/Mesh.c | 1 - UnityPyBoost/TypeTreeHelper.c | 58 +++++++++++++++++++++++++---------- 2 files changed, 42 insertions(+), 17 deletions(-) diff --git a/UnityPyBoost/Mesh.c b/UnityPyBoost/Mesh.c index 8b928a47..0eb618fe 100644 --- a/UnityPyBoost/Mesh.c +++ b/UnityPyBoost/Mesh.c @@ -45,7 +45,6 @@ PyObject *unpack_vertexdata(PyObject *self, PyObject *args) uint32_t maxVertexDataAccess = (m_VertexCount - 1) * m_StreamStride + m_ChannelOffset + m_StreamOffset + componentByteSize * (m_ChannelDimension - 1) + componentByteSize; if (maxVertexDataAccess > vertexDataSize) { - printf("maxVertexDataAccess: %d, vertexDataSize: %d\n", maxVertexDataAccess, vertexDataSize); PyErr_SetString(PyExc_ValueError, "Vertex data access out of bounds"); return NULL; } diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c index 97744bf3..dfcdf82f 100644 --- a/UnityPyBoost/TypeTreeHelper.c +++ b/UnityPyBoost/TypeTreeHelper.c @@ -15,21 +15,11 @@ typedef struct char swap; PyObject *obj; } Reader; +typedef PyObject *(*read_type)(Reader *); #define kAlignBytesFlag 1 << 14 #define kAnyChildUsesAlignBytesFlag 1 << 15 -static char SURROGATEESCAPE[] = "surrogateescape"; - -static inline uint32_t hash_str(const char *str) -{ - unsigned int hash = 5381; - int c; - while ((c = *str++)) - hash = ((hash << 5) + hash) + c; - return hash; -} - #define HASH_SInt8 235330747 #define HASH_UInt8 237702589 #define HASH_char 2090147939 @@ -54,8 +44,6 @@ static inline uint32_t hash_str(const char *str) #define HASH_TypelessData 1242572536 #define HASH_map 193499011 -typedef PyObject *(*read_type)(Reader *); - #define CHECK_LENGTH(reader, length) \ if (reader->data + length > reader->dataEnd) \ { \ @@ -63,6 +51,44 @@ typedef PyObject *(*read_type)(Reader *); return NULL; \ } +static char SURROGATEESCAPE[] = "surrogateescape"; + +/* function signatures */ +static int read_length(Reader *reader); +static PyObject *read_SInt8(Reader *reader); +static PyObject *read_UInt8(Reader *reader); +static PyObject *read_SInt16(Reader *reader); +static PyObject *read_UInt16(Reader *reader); +static PyObject *read_SInt32(Reader *reader); +static PyObject *read_UInt32(Reader *reader); +static PyObject *read_SInt64(Reader *reader); +static PyObject *read_UInt64(Reader *reader); +static PyObject *read_float(Reader *reader); +static PyObject *read_double(Reader *reader); +static PyObject *read_bool(Reader *reader); +static PyObject *read_string(Reader *reader); +static PyObject *read_TypelessData(Reader *reader); + +static uint32_t hash_string(const char *str); + +static read_type getReadFunction(int hash_value, int* index); +static PyObject* getSubNodes(PyObject* nodes, int* index); + +static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int *index); +static PyObject *TypeTreeHelper_ReadValueVector(PyObject *nodes, Reader *reader, int *index); + +PyObject *read_typetree(PyObject *self, PyObject *args); + +/* implementation */ +static inline uint32_t hash_str(const char *str) +{ + unsigned int hash = 5381; + int c; + while ((c = *str++)) + hash = ((hash << 5) + hash) + c; + return hash; +} + static inline void initReadFuncOrNodes(PyObject *nodes, int *index, PyObject **subnodes, read_type *func, char *subalign) { TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index); @@ -352,7 +378,7 @@ static inline int PyList_SetItem_Safe(PyObject *list, int i, PyObject *value) return ret; } -PyObject *TypeTreeHelper_ReadValueVector(PyObject *nodes, Reader *reader, int *index); + static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int *index) { @@ -541,13 +567,13 @@ PyObject *read_typetree(PyObject *self, PyObject *args) "The endian attribute value must be a string"); return NULL; } - if (PyUnicode_GET_SIZE(swap_obj) != 1) + if (PyUnicode_GET_LENGTH(swap_obj) != 1) { PyErr_SetString(PyExc_TypeError, "The endian attribute value must be a string of size 1"); return NULL; } - char endian = *PyUnicode_AS_DATA(swap_obj); + char endian = *(char*)PyUnicode_DATA(swap_obj); switch (endian) { case '<': From ae8502c0c3649a1004bc48df8ff4cac94ef918b3 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 23 Jul 2022 22:21:54 +0200 Subject: [PATCH 125/599] bump version to 1.9.6 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index e1763e05..02529079 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.5" +__version__ = "1.9.6" from .environment import Environment From 4aa57914bb7908e8575a654b44b10e557a6020de Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 28 Jul 2022 23:11:10 +0200 Subject: [PATCH 126/599] use m_{Name} for TypeTreeNodes instead --- UnityPy/files/SerializedFile.py | 72 ++++++------- UnityPy/helpers/Tpk.py | 14 +-- UnityPy/helpers/TypeTreeHelper.py | 174 +++++++++++++++--------------- UnityPyBoost/TypeTreeHelper.c | 155 ++++++++++++-------------- UnityPyBoost/TypeTreeHelper.h | 26 ++--- 5 files changed, 210 insertions(+), 231 deletions(-) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index e947cc04..f6491c38 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -320,20 +320,20 @@ def read_type_tree(self): type_tree_node = TypeTreeNode() type_tree.append(type_tree_node) - type_tree_node.level = level - type_tree_node.type = self.reader.read_string_to_null() - type_tree_node.name = self.reader.read_string_to_null() - type_tree_node.byte_size = self.reader.read_int() + type_tree_node.m_Level = level + type_tree_node.m_Type = self.reader.read_string_to_null() + type_tree_node.m_Name = self.reader.read_string_to_null() + type_tree_node.m_ByteSize = self.reader.read_int() if self.header.version == 2: - type_tree_node.variable_count = self.reader.read_int() + type_tree_node.m_VariableCount = self.reader.read_int() if self.header.version != 3: - type_tree_node.index = self.reader.read_int() + type_tree_node.m_Index = self.reader.read_int() - type_tree_node.is_array = self.reader.read_int() - type_tree_node.version = self.reader.read_int() + type_tree_node.m_IsArray = self.reader.read_int() + type_tree_node.m_Version = self.reader.read_int() if self.header.version != 3: - type_tree_node.meta_flag = self.reader.read_int() + type_tree_node.m_MetaFlag = self.reader.read_int() children_count = self.reader.read_int() if children_count: @@ -347,18 +347,18 @@ def read_type_tree_blob(self): type = f"{reader.endian}hb?IIiii" keys = [ - "version", - "level", - "is_array", - "type_str_offset", - "name_str_offset", - "byte_size", - "index", - "meta_flag", + "m_Version", + "m_Level", + "m_IsArray", + "m_TypeStrOffset", + "m_NameStrOffset", + "m_ByteSize", + "m_Index", + "m_MetaFlag", ] if self.header.version >= 19: type += "Q" - keys.append("ref_type_hash") + keys.append("m_RefTypeHash") node_struct = Struct(type) struct_data = reader.read(node_struct.size * number_of_nodes) @@ -372,8 +372,8 @@ def read_type_tree_blob(self): type_tree = [ TypeTreeNode( **dict(zip(keys, raw_node)), - type=read_string(string_buffer_reader, raw_node[3]), - name=read_string(string_buffer_reader, raw_node[4]), + m_Type=read_string(string_buffer_reader, raw_node[3]), + m_Name=read_string(string_buffer_reader, raw_node[4]), ) for i, raw_node in enumerate(node_struct.iter_unpack(struct_data)) ] @@ -542,26 +542,26 @@ def save_serialized_type( def save_type_tree(self, nodes: list, writer: EndianBinaryWriter): for i, node in nodes: - writer.write_string_to_null(node.type) - writer.write_string_to_null(node.name) + writer.write_string_to_null(node.m_Type) + writer.write_string_to_null(node.m_Name) writer.write_int(node.byte_size) if self.header.version == 2: - writer.write_int(node.variable_count) + writer.write_int(node.m_VariableCount) if self.header.version != 3: - writer.write_int(node.index) + writer.write_int(node.m_Index) - writer.write_int(node.is_array) - writer.write_int(node.version) + writer.write_int(node.m_IsArray) + writer.write_int(node.m_Version) if self.header.version != 3: - writer.write_int(node.meta_flag) + writer.write_int(node.m_MetaFlag) # calc children count children_count = 0 for node2 in nodes[i + 1 :]: - if node2.level == node.level: + if node2.m_Level == node.m_Level: break - if node2.level == node.level - 1: + if node2.m_Level == node.m_Level - 1: children_count += 1 writer.write_int(children_count) @@ -585,24 +585,24 @@ def save_type_tree5(self, nodes: list, writer: EndianBinaryWriter, str_data=b"") # nodes for i, node in enumerate(nodes): # version - writer.write_u_short(node.version) + writer.write_u_short(node.m_Version) # level - writer.write_byte(node.level) + writer.write_byte(node.m_Level) # is array - writer.write_boolean(node.is_array) + writer.write_boolean(node.m_IsArray) # type str offfset writer.write_u_int(strings_values[i][0]) # name str offset writer.write_u_int(strings_values[i][1]) # byte size - writer.write_int(node.byte_size) + writer.write_int(node.m_ByteSize) # index - writer.write_int(node.index) + writer.write_int(node.m_index) # meta flag - writer.write_int(node.meta_flag) + writer.write_int(node.m_MetaFlag) # ref hash if self.header.version > 19: - writer.write_u_long(node.ref_type_hash) + writer.write_u_long(node.m_RefTypeHash) # string buffer writer.write(string_buffer.bytes) diff --git a/UnityPy/helpers/Tpk.py b/UnityPy/helpers/Tpk.py index 4f2c67af..84b65d42 100644 --- a/UnityPy/helpers/Tpk.py +++ b/UnityPy/helpers/Tpk.py @@ -46,13 +46,13 @@ def generate_flat_nodes(class_info: TpkUnityClass) -> List[TypeTreeNode]: node: TpkUnityNode = NODES[node_id] nodes.append( TypeTreeNode( - byte_size=node.ByteSize, - index=index, - version=node.Version, - meta_flag=node.MetaFlag, - level=level, - type=TPKTYPETREE.StringBuffer.Strings[node.TypeName], - name=TPKTYPETREE.StringBuffer.Strings[node.Name], + m_ByteSize=node.ByteSize, + m_Index=index, + m_Version=node.Version, + m_MetaFlag=node.MetaFlag, + m_Level=level, + m_Type=TPKTYPETREE.StringBuffer.Strings[node.TypeName], + m_Name=TPKTYPETREE.StringBuffer.Strings[node.Name], ) ) stack = [(node_id, level + 1) for node_id in node.SubNodes] + stack diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 0c7e449b..a465c552 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -6,37 +6,34 @@ kAlignBytes = 0x4000 + class TypeTreeNode(object): __slots__ = ( - "type", - "name", - "byte_size", - "index", - "is_array", - "version", - "meta_flag", - "level", - "type_str_offset", - "name_str_offset", - "type", - "name", - "ref_type_hash", - "variable_count", + "m_Version", + "m_Level", + "m_IsArray", + "m_ByteSize", + "m_Index", + "m_MetaFlag", + "m_Type", + "m_Name", + "m_TypeStrOffset", + "m_NameStrOffset", + "m_RefTypeHash", + "m_VariableCount", ) - type: str - name: str - byte_size: int - index: int - is_array: int - version: int - meta_flag: int - level: int - type_str_offset: int - name_str_offset: int - type: str - name: str - ref_type_hash: str - variable_count: int + m_Type: str + m_Name: str + m_ByteSize: int + m_Index: int + m_Version: int + m_MetaFlag: int + m_Level: int + m_TypeStrOffset: int + m_NameStrOffset: int + m_RefTypeHash: str + m_IsArray: int + m_VariableCount: int def __init__(self, data: Union[dict, Iterable[Tuple]] = None, **kwargs): if isinstance(data, dict): @@ -50,7 +47,7 @@ def __init__(self, data: Union[dict, Iterable[Tuple]] = None, **kwargs): setattr(self, key, val) def __repr__(self): - return f"" + return f"" try: @@ -72,14 +69,19 @@ def node_dict_to_node_cls(nodes: List[dict]) -> List[TypeTreeNode]: List[TypeTreeNode] a list of TypeTreeNode-type nodes """ - # check keys - fix m_Name from TypeTreeGenerator or other sources - if next(iter(nodes[0])).startswith("m_"): + # legacy support + if not next(iter(nodes[0])).starts_with("m_"): return [ - TypeTreeNode(**{key[2:].lower(): val for key, val in node.items()}) - for node in nodes + TypeTreeNode( + m_Name=x["name"], + m_Type=x["type"], + m_Level=x["level"], + m_MetaFlag=x["meta_flag"], + ) + for x in nodes ] - else: - return [TypeTreeNode(**node) for node in nodes] + + return [TypeTreeNode(**node) for node in nodes] def check_nodes(nodes: List[Union[dict, TypeTreeNode]]) -> List[TypeTreeNode]: @@ -107,28 +109,6 @@ def check_nodes(nodes: List[Union[dict, TypeTreeNode]]) -> List[TypeTreeNode]: ) -""" -Example Nodes: -[{ - "level": 0, - "type": "MonoBehaviour", - "name": "Base", - "meta_flag": 0 -}, -{ - "level": 1, - "type": "int", - "name": "m_SomeNode", - "meta_flag": 0 -}] - -Example TypeTree: -{ - "m_SomeNode": 1 -} -""" - - def get_nodes(nodes: List[TypeTreeNode], index: int) -> list: """Copies all nodes above the level of the node at the set index. @@ -144,9 +124,9 @@ def get_nodes(nodes: List[TypeTreeNode], index: int) -> list: list A list of nodes """ - level = nodes[index].level + level = nodes[index].m_Level for i, node in enumerate(nodes[index + 1 :], index + 1): - if node.level <= level: + if node.m_Level <= level: return nodes[index:i] return nodes[index:] @@ -191,8 +171,8 @@ def read_typetree( def read_value(nodes: List[TypeTreeNode], reader: EndianBinaryReader, i: c_uint32): node = nodes[i.value] - typ = node.type - align = (node.meta_flag & kAlignBytes) != 0 + typ = node.m_Type + align = (node.m_MetaFlag & kAlignBytes) != 0 if typ == "SInt8": value = reader.read_byte() @@ -220,7 +200,7 @@ def read_value(nodes: List[TypeTreeNode], reader: EndianBinaryReader, i: c_uint3 value = reader.read_aligned_string() i.value += 3 # Array, Size, Data(typ) elif typ == "map": # map == MultiDict - if (nodes[i.value + 1].meta_flag & kAlignBytes) != 0: + if (nodes[i.value + 1].m_MetaFlag & kAlignBytes) != 0: align = True map_ = get_nodes(nodes, i.value) i.value += len(map_) - 1 @@ -237,8 +217,8 @@ def read_value(nodes: List[TypeTreeNode], reader: EndianBinaryReader, i: c_uint3 i.value += 2 # Size == int, Data(typ) == char/uint8 else: # Vector - if i.value < len(nodes) - 1 and nodes[i.value + 1].type == "Array": - if (nodes[i.value + 1].meta_flag & kAlignBytes) != 0: + if i.value < len(nodes) - 1 and nodes[i.value + 1].m_Type == "Array": + if (nodes[i.value + 1].m_MetaFlag & kAlignBytes) != 0: align = True vector = get_nodes(nodes, i.value) i.value += len(vector) - 1 @@ -300,8 +280,8 @@ def read_value_str( sb: List[str], nodes: List[TypeTreeNode], reader: EndianBinaryReader, i: c_uint32 ) -> list: node = nodes[i.value] - typ = node.type - align = (node.meta_flag & kAlignBytes) != 0 + typ = node.m_Type + align = (node.m_MetaFlag & kAlignBytes) != 0 append = True if typ == "SInt8": @@ -332,11 +312,11 @@ def read_value_str( append = False sb.append( '{0}{1} {2} = "{3}"\r\n'.format( - "\t" * node.level, node.type, node.name, value + "\t" * node.m_Level, node.m_Type, node.m_Name, value ) ) elif typ == "map": - if (nodes[i.value + 1].meta_flag & kAlignBytes) != 0: + if (nodes[i.value + 1].m_MetaFlag & kAlignBytes) != 0: align = True map_ = get_nodes(nodes, i.value) i.value += len(map_) - 1 @@ -344,14 +324,20 @@ def read_value_str( second = get_nodes(map_, 4 + len(first)) size = reader.read_int() append = False - sb.append("{0}{1} {2}\r\n".format("\t" * node.level, node.type, node.name)) - sb.append("{0}{1} {2}\r\n".format("\t" * (node.level + 1), "Array", "Array")) sb.append( - "{0}{1} {2} = {3}\r\n".format("\t" * (node.level + 1), "int", "size", size) + "{0}{1} {2}\r\n".format("\t" * node.m_Level, node.m_Type, node.m_Name) + ) + sb.append("{0}{1} {2}\r\n".format("\t" * (node.m_Level + 1), "Array", "Array")) + sb.append( + "{0}{1} {2} = {3}\r\n".format( + "\t" * (node.m_Level + 1), "int", "size", size + ) ) for j in range(size): - sb.append("{0}[{1}]\r\n".format("\t" * (node.level + 2), j)) - sb.append("{0}{1} {2}\r\n".format("\t" * (node.level + 2), "pair", "data")) + sb.append("{0}[{1}]\r\n".format("\t" * (node.m_Level + 2), j)) + sb.append( + "{0}{1} {2}\r\n".format("\t" * (node.m_Level + 2), "pair", "data") + ) read_value_str(sb, first, reader, c_uint32(0)) read_value_str(sb, second, reader, c_uint32(0)) elif typ == "TypelessData": @@ -359,30 +345,36 @@ def read_value_str( value = reader.read_bytes(size) i.value += 2 # Size == int, Data(typ) == char/uint8 append = False - sb.append("{0}{1} {2}\r\n".format("\t" * node.level, node.type, node.name)) - sb.append("{0}{1} {2} = {3}\r\n".format("\t" * node.level, "int", "size", size)) + sb.append( + "{0}{1} {2}\r\n".format("\t" * node.m_Level, node.m_Type, node.m_Name) + ) + sb.append( + "{0}{1} {2} = {3}\r\n".format("\t" * node.m_Level, "int", "size", size) + ) # sb.append("{0}{1} {2} = {3}\r\n".format( # "\t" * node.level, "UInt8", "data", base64.b64encode(value))) else: # Vector - if i.value < len(nodes) - 1 and nodes[i.value + 1].type == "Array": - if (nodes[i.value + 1].meta_flag & kAlignBytes) != 0: + if i.value < len(nodes) - 1 and nodes[i.value + 1].m_Type == "Array": + if (nodes[i.value + 1].m_MetaFlag & kAlignBytes) != 0: align = True vector = get_nodes(nodes, i.value) i.value += len(vector) - 1 size = reader.read_int() append = False - sb.append("{0}{1} {2}\r\n".format("\t" * node.level, node.type, node.name)) sb.append( - "{0}{1} {2}\r\n".format("\t" * (node.level + 1), "Array", "Array") + "{0}{1} {2}\r\n".format("\t" * node.m_Level, node.m_Type, node.m_Name) + ) + sb.append( + "{0}{1} {2}\r\n".format("\t" * (node.m_Level + 1), "Array", "Array") ) sb.append( "{0}{1} {2} = {3}\r\n".format( - "\t" * (node.level + 1), "int", "size", size + "\t" * (node.m_Level + 1), "int", "size", size ) ) for j in range(size): - sb.append("{0}[{1}]\r\n".format("\t" * (node.level + 2), j)) + sb.append("{0}[{1}]\r\n".format("\t" * (node.m_Level + 2), j)) read_value_str(sb, vector, reader, c_uint32(3)) else: # Class @@ -390,7 +382,9 @@ def read_value_str( i.value += len(clz) - 1 j = c_uint32(1) append = False - sb.append("{0}{1} {2}\r\n".format("\t" * node.level, node.type, node.name)) + sb.append( + "{0}{1} {2}\r\n".format("\t" * node.m_Level, node.m_Type, node.m_Name) + ) while j.value < len(clz): read_value_str(sb, clz, reader, j) j.value += 1 @@ -398,7 +392,7 @@ def read_value_str( if append: sb.append( "{0}{1} {2} = {3}\r\n".format( - "\t" * node.level, node.type, node.name, value + "\t" * node.m_Level, node.m_Type, node.m_Name, value ) ) @@ -420,7 +414,7 @@ def dump_typetree(nodes: List[TypeTreeNode]) -> str: str The dumped structure """ - field_names = ["level", "type", "name", "meta_flag"] + field_names = ["m_Level", "m_Type", "m_Name", "m_MetaFlag"] rows = [[getattr(x, key) for key in field_names] for x in nodes] return tabulate.tabulate(rows, headers=field_names) @@ -451,7 +445,7 @@ def write_typetree( i = c_uint32(1) while i.value < len(nodes): - value = obj[nodes[i.value].name] + value = obj[nodes[i.value].m_Name] write_value(value, nodes, writer, i) i.value += 1 return writer @@ -461,8 +455,8 @@ def write_value( value: Any, nodes: List[TypeTreeNode], writer: EndianBinaryWriter, i: c_uint32 ): node = nodes[i.value] - typ = node.type - align = (node.meta_flag & kAlignBytes) != 0 + typ = node.m_Type + align = (node.m_MetaFlag & kAlignBytes) != 0 if typ == "SInt8": writer.write_byte(value) @@ -490,7 +484,7 @@ def write_value( writer.write_aligned_string(value) i.value += 3 # Array, Size, Data(typ) elif typ == "map": - if (nodes[i.value + 1].meta_flag & kAlignBytes) != 0: + if (nodes[i.value + 1].m_MetaFlag & kAlignBytes) != 0: align = True map_ = get_nodes(nodes, i.value) i.value += len(map_) - 1 @@ -509,8 +503,8 @@ def write_value( i.value += 2 # Size == int, Data(typ) == char/uint8 else: # Vector - if i.value < len(nodes) - 1 and nodes[i.value + 1].type == "Array": - if (nodes[i.value + 1].meta_flag & kAlignBytes) != 0: + if i.value < len(nodes) - 1 and nodes[i.value + 1].m_Type == "Array": + if (nodes[i.value + 1].m_MetaFlag & kAlignBytes) != 0: align = True vector = get_nodes(nodes, i.value) i.value += len(vector) - 1 diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c index dfcdf82f..045da907 100644 --- a/UnityPyBoost/TypeTreeHelper.c +++ b/UnityPyBoost/TypeTreeHelper.c @@ -92,7 +92,7 @@ static inline uint32_t hash_str(const char *str) static inline void initReadFuncOrNodes(PyObject *nodes, int *index, PyObject **subnodes, read_type *func, char *subalign) { TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index); - uint32_t hash = hash_str(node->type); + uint32_t hash = hash_str(node->m_Type); *func = getReadFunction(hash, index); if (*func == NULL) { @@ -100,7 +100,7 @@ static inline void initReadFuncOrNodes(PyObject *nodes, int *index, PyObject **s } else { - *subalign = (node->meta_flag & kAlignBytesFlag) ? 1 : 0; + *subalign = (node->m_MetaFlag & kAlignBytesFlag) ? 1 : 0; } } @@ -343,10 +343,10 @@ static PyObject *getSubNodes(PyObject *nodes, int *index) { PyObject *result = NULL; TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index); - unsigned short level = node->level; + unsigned short level = node->m_Level; for (int i = *index + 1; i < PyList_Size(nodes); i++) { - if (((TypeTreeNodeObject *)PyList_GetItem(nodes, i))->level <= level) + if (((TypeTreeNodeObject *)PyList_GetItem(nodes, i))->m_Level <= level) { result = PyList_GetSlice(nodes, *index, i); *index = i - 1; @@ -391,10 +391,10 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * PyObject *value = NULL; int sub_index = 0; - char align = (node->meta_flag & kAlignBytesFlag) ? 1 : 0; - // printf("RVa: %d\t%lld\t%s\t%s\t%d\t%d\n", *index, (reader->data - reader->dataStart), node->name, node->type, align, node->meta_flag); + char align = (node->m_MetaFlag & kAlignBytesFlag) ? 1 : 0; + // printf("RVa: %d\t%lld\t%s\t%s\t%d\t%d\n", *index, (reader->data - reader->dataStart), node->m_Name, node->m_Type, align, node->m_MetaFlag); - int hash_value = hash_str(node->type); + int hash_value = hash_str(node->m_Type); read_type func = getReadFunction(hash_value, index); if (func) { @@ -405,7 +405,7 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * if (hash_value == HASH_map) { TypeTreeNodeObject *node2 = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index + 1); - if (node2->meta_flag & kAlignBytesFlag) + if (node2->m_MetaFlag & kAlignBytesFlag) align = 1; CHECK_LENGTH(reader, 4); @@ -456,9 +456,9 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * else { TypeTreeNodeObject *node2 = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index + 1); - if (strcmp(node2->type, "Array") == 0) + if (strcmp(node2->m_Type, "Array") == 0) { - if (node2->meta_flag & kAlignBytesFlag) + if (node2->m_MetaFlag & kAlignBytesFlag) align = 1; *index += 3; // skip self, Array, size PyObject *vector_nodes = NULL; @@ -491,7 +491,7 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * char *j_name = NULL; while (j < PyList_Size(cls_nodes)) { - j_name = ((TypeTreeNodeObject *)PyList_GetItem(cls_nodes, j))->name; + j_name = ((TypeTreeNodeObject *)PyList_GetItem(cls_nodes, j))->m_Name; PyObject *j_value = TypeTreeHelper_ReadValue(cls_nodes, reader, &j); if (j_value == NULL) { @@ -600,8 +600,8 @@ PyObject *read_typetree(PyObject *self, PyObject *args) static void TypeTreeNode_dealloc(TypeTreeNodeObject *self) { - PyMem_Free(self->name); - PyMem_Free(self->type); + PyMem_Free(self->m_Name); + PyMem_Free(self->m_Type); // for (unsigned short i = 0; i < self->children_count; i++) // { // Py_DECREF((PyObject*)self->children[i]); @@ -617,22 +617,22 @@ TypeTreeNode_new(PyTypeObject *type, PyObject *args, PyObject *kwds) self = (TypeTreeNodeObject *)type->tp_alloc(type, 0); if (self != NULL) { - self->version = 0; - self->level = 0; - self->is_array = 0; - self->byte_size = 0; - self->index = 0; - self->meta_flag = 0; - self->type = NULL; - self->name = NULL; - // self->type[0] = '\0'; - // self->name[0] = '\0'; + self->m_Version = 0; + self->m_Level = 0; + self->m_IsArray = 0; + self->m_ByteSize = 0; + self->m_Index = 0; + self->m_MetaFlag = 0; + self->m_Type = NULL; + self->m_Name = NULL; + // self->m_Type[0] = '\0'; + // self->m_Name[0] = '\0'; // self->children_count = 0; // self->children = NULL; - self->type_str_offset = 0; - self->name_str_offset = 0; - self->ref_type_hash = 0; - self->variable_count = 0; + self->m_TypeStrOffset = 0; + self->m_NameStrOffset = 0; + self->m_RefTypeHash = 0; + self->m_VariableCount = 0; } return (PyObject *)self; } @@ -641,18 +641,18 @@ static int TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject *kwds) { static char *kwlist[] = { - "name", // char* - "type", // char* - "level", // uint8 - "meta_flag", // int32 - "version", // int16 - "is_array", // char - "byte_size", // int - "index", // int - "type_str_offset", // unsigned int - "name_str_offset", // unsigned int - "ref_type_hash", // unsigned long long - "variable_count", // int + "m_Name", // char* + "m_Type", // char* + "m_Level", // uint8 + "m_MetaFlag", // int32 + "m_Version", // int16 + "m_IsArray", // char + "m_ByteSize", // int + "m_Index", // int + "m_TypeStrOffset", // unsigned int + "m_NameStrOffset", // unsigned int + "m_RefTypeHash", // unsigned long long + "m_VariableCount", // int NULL}; const char *type = NULL; const char *name = NULL; @@ -663,43 +663,43 @@ TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject *kwds) kwlist, &name, &type, - &self->level, - &self->meta_flag, - &self->version, - &self->is_array, - &self->byte_size, - &self->index, - &self->type_str_offset, - &self->name_str_offset, - &self->ref_type_hash, - &self->variable_count)) + &self->m_Level, + &self->m_MetaFlag, + &self->m_Version, + &self->m_IsArray, + &self->m_ByteSize, + &self->m_Index, + &self->m_TypeStrOffset, + &self->m_NameStrOffset, + &self->m_RefTypeHash, + &self->m_VariableCount)) return -1; if (type != NULL) { - self->type = PyMem_Malloc(strlen(type) + 1); - strcpy(self->type, type); + self->m_Type = PyMem_Malloc(strlen(type) + 1); + strcpy(self->m_Type, type); } if (name != NULL) { - self->name = PyMem_Malloc(strlen(name) + 1); - strcpy(self->name, name); + self->m_Name = PyMem_Malloc(strlen(name) + 1); + strcpy(self->m_Name, name); } return 0; }; static PyMemberDef TypeTreeNode_members[] = { - {"type", T_STRING, offsetof(TypeTreeNodeObject, type), 0, ""}, - {"name", T_STRING, offsetof(TypeTreeNodeObject, name), 0, ""}, - {"byte_size", T_INT, offsetof(TypeTreeNodeObject, byte_size), 0, ""}, - {"index", T_INT, offsetof(TypeTreeNodeObject, index), 0, ""}, - {"is_array", T_BOOL, offsetof(TypeTreeNodeObject, is_array), 0, ""}, - {"version", T_SHORT, offsetof(TypeTreeNodeObject, version), 0, ""}, - {"meta_flag", T_INT, offsetof(TypeTreeNodeObject, meta_flag), 0, ""}, - {"level", T_UBYTE, offsetof(TypeTreeNodeObject, level), 0, ""}, - {"type_str_offset", T_UINT, offsetof(TypeTreeNodeObject, type_str_offset), 0, ""}, - {"name_str_offset", T_UINT, offsetof(TypeTreeNodeObject, name_str_offset), 0, ""}, - {"ref_type_hash", T_ULONGLONG, offsetof(TypeTreeNodeObject, ref_type_hash), 0, ""}, - {"variable_count", T_INT, offsetof(TypeTreeNodeObject, variable_count), 0, ""}, + {"m_Type", T_STRING, offsetof(TypeTreeNodeObject, m_Type), 0, ""}, + {"m_Name", T_STRING, offsetof(TypeTreeNodeObject, m_Name), 0, ""}, + {"m_ByteSize", T_INT, offsetof(TypeTreeNodeObject, m_ByteSize), 0, ""}, + {"m_Index", T_INT, offsetof(TypeTreeNodeObject, m_Index), 0, ""}, + {"m_IsArray", T_BOOL, offsetof(TypeTreeNodeObject, m_IsArray), 0, ""}, + {"m_Version", T_SHORT, offsetof(TypeTreeNodeObject, m_Version), 0, ""}, + {"m_MetaFlag", T_INT, offsetof(TypeTreeNodeObject, m_MetaFlag), 0, ""}, + {"m_Level", T_UBYTE, offsetof(TypeTreeNodeObject, m_Level), 0, ""}, + {"m_TypeStrOffset", T_UINT, offsetof(TypeTreeNodeObject, m_TypeStrOffset), 0, ""}, + {"m_NameStrOffset", T_UINT, offsetof(TypeTreeNodeObject, m_NameStrOffset), 0, ""}, + {"m_RefTypeHash", T_ULONGLONG, offsetof(TypeTreeNodeObject, m_RefTypeHash), 0, ""}, + {"m_VariableCount", T_INT, offsetof(TypeTreeNodeObject, m_VariableCount), 0, ""}, {NULL} /* Sentinel */ }; @@ -707,26 +707,11 @@ static PyObject * TypeTreeNode_repr(PyObject *self) { TypeTreeNodeObject *node = (TypeTreeNodeObject *)self; - char *type = node->type; - char *name = node->name; - char *type_str = ""; - char *name_str = ""; - if (type != NULL) - { - type_str = PyMem_Malloc(strlen(type) + 1); - strcpy(type_str, type); - } - if (name != NULL) - { - name_str = PyMem_Malloc(strlen(name) + 1); - strcpy(name_str, name); - } - char buf[1024]; - memset(buf, 0, 1024); - sprintf(buf, "TypeTreeNode(type=%s, name=%s, byte_size=%d, index=%d, is_array=%d, version=%d, meta_flag=%d, level=%d, type_str_offset=%d, name_str_offset=%d, ref_type_hash=%llu, variable_count=%d)", type_str, name_str, node->byte_size, node->index, node->is_array, node->version, node->meta_flag, node->level, node->type_str_offset, node->name_str_offset, node->ref_type_hash, node->variable_count); - PyMem_Free(type_str); - PyMem_Free(name_str); - return PyUnicode_FromString(buf); + return PyUnicode_Format( + PyUnicode_FromString(""), + node->m_Level, + node->m_Type, + node->m_Name); } // PyTypeObject TypeTreeNodeType; diff --git a/UnityPyBoost/TypeTreeHelper.h b/UnityPyBoost/TypeTreeHelper.h index ddee4f08..2e05258c 100644 --- a/UnityPyBoost/TypeTreeHelper.h +++ b/UnityPyBoost/TypeTreeHelper.h @@ -5,23 +5,23 @@ typedef struct TypeTreeNodeObject{ PyObject_HEAD - short version; - unsigned char level; - char is_array; - int byte_size; - int index; - int meta_flag; - char *type; - char *name; - unsigned short children_count; + short m_Version; + unsigned char m_Level; + char m_IsArray; + int m_ByteSize; + int m_Index; + int m_MetaFlag; + char *m_Type; + char *m_Name; + //unsigned short children_count; //struct TypeTreeNodeObject **children; // UnityFS - unsigned int type_str_offset; - unsigned int name_str_offset; + unsigned int m_TypeStrOffset; + unsigned int m_NameStrOffset; // UnityFS - version >= 19 - unsigned long long ref_type_hash; + unsigned long long m_RefTypeHash; // UnityRaw - versin = 2 - int variable_count; + int m_VariableCount; } TypeTreeNodeObject; int add_typetreenode_to_module(PyObject *m); From 4df8ccf45df688d78d9c27701b575b502851e7f5 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 2 Aug 2022 22:05:04 +0200 Subject: [PATCH 127/599] fix m_Name usage for SerializedFile --- UnityPy/files/SerializedFile.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index f6491c38..9dba3169 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -574,7 +574,7 @@ def save_type_tree5(self, nodes: list, writer: EndianBinaryWriter, str_data=b"") string_buffer = EndianBinaryWriter() string_buffer.write(str_data) strings_values = [ - (node.type_str_offset, node.name_str_offset) for node in nodes + (node.m_TypeStrOffset, node.m_NameStrOffset) for node in nodes ] # number of nodes @@ -597,7 +597,7 @@ def save_type_tree5(self, nodes: list, writer: EndianBinaryWriter, str_data=b"") # byte size writer.write_int(node.m_ByteSize) # index - writer.write_int(node.m_index) + writer.write_int(node.m_Index) # meta flag writer.write_int(node.m_MetaFlag) # ref hash From a9697fd6ec2118e331c107a88a9f56618edcc034 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 2 Aug 2022 22:05:30 +0200 Subject: [PATCH 128/599] fix BundleFile saving - filesize --- UnityPy/files/BundleFile.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 154cc707..1601777d 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -75,9 +75,8 @@ def read_web_raw(self, reader: EndianBinaryReader): return m_DirectoryInfo, blocksReader def read_fs(self, reader: EndianBinaryReader): - version = self.version size = reader.read_long() - + # header compressedSize = reader.read_u_int() uncompressedSize = reader.read_u_int() @@ -238,8 +237,6 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag: int, data_flag: i # file list & file data # prep nodes and build up block data - writer_start_pos = writer.Position - data_writer = EndianBinaryWriter() files = [ ( @@ -346,7 +343,7 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag: int, data_flag: i writer_end_pos = writer.Position writer.Position = writer_header_pos # correct file size - writer.write_long(writer_end_pos - writer_start_pos) + writer.write_long(writer_end_pos) writer.Position = writer_end_pos From b8cf68ddb3aef2b39e914962c180ae4b72a0c25e Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 2 Aug 2022 23:01:32 +0200 Subject: [PATCH 129/599] only copy version specific fmod lib --- MANIFEST.in | 4 ---- UnityPy/__init__.py | 2 +- setup.py | 49 ++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 49 insertions(+), 6 deletions(-) delete mode 100644 MANIFEST.in diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index b33f910e..00000000 --- a/MANIFEST.in +++ /dev/null @@ -1,4 +0,0 @@ -include UnityPy/* -recursive-include UnityPyBoost *.c *.h -recursive-include UnityPy/lib *.dll *.lib *.so *.dylib -recursive-include UnityPy/resources * diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 02529079..7e158960 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.6" +__version__ = "1.9.7" from .environment import Environment diff --git a/setup.py b/setup.py index 516de08d..7b9de625 100644 --- a/setup.py +++ b/setup.py @@ -12,10 +12,57 @@ with open(os.path.join(INSTALL_DIR, "README.md"), "rt") as fh: long_description = fh.read() + +def get_fmod_library(): + import platform + + # determine system - Windows, Darwin, Linux, Android + system = platform.system() + if system == "Linux" and "ANDROID_BOOTLOGO" in os.environ: + system = "Android" + # determine architecture + machine = platform.machine() + arch = platform.architecture()[0] + + lib_name = "" + if system in ["Windows", "Darwin"]: + lib_name = "fmod.dll" if system == "Windows" else "libfmod.dylib" + if arch == "32bit": + arch = "x86" + elif arch == "64bit": + arch = "x64" + elif system == "Linux": + lib_name = "libfmod.so" + # Raspberry Pi and Linux on arm projects + if "arm" in machine: + if arch == "32bit": + arch = "armhf" if machine.endswith("l") else "arm" + elif arch == "64bit": + return None + elif arch == "32bit": + arch = "x86" + elif arch == "64bit": + arch = "x86_64" + else: + return None + + return f"lib/FMOD/{system}/{arch}/{lib_name}" + + setup( name="UnityPy", packages=find_packages(), - include_package_data=True, + #include_package_data=True, + package_data={ + "UnityPy": [ + get_fmod_library(), + "resources/uncompressed.tpk", + "*.c", + "*.h", + "*.cpp", + "*.hpp", + ] + }, version=version, author="K0lb3", description="A pythonic port of AssetStudio by Perfare", From 180a95619c98750a7c1b156c00e8227c77fa0e32 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 2 Aug 2022 23:11:08 +0200 Subject: [PATCH 130/599] fix TypeTreeNodeC__repr__ --- UnityPyBoost/TypeTreeHelper.c | 38 +++++++++++++++++------------------ 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c index 045da907..ead44864 100644 --- a/UnityPyBoost/TypeTreeHelper.c +++ b/UnityPyBoost/TypeTreeHelper.c @@ -71,8 +71,8 @@ static PyObject *read_TypelessData(Reader *reader); static uint32_t hash_string(const char *str); -static read_type getReadFunction(int hash_value, int* index); -static PyObject* getSubNodes(PyObject* nodes, int* index); +static read_type getReadFunction(int hash_value, int *index); +static PyObject *getSubNodes(PyObject *nodes, int *index); static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int *index); static PyObject *TypeTreeHelper_ReadValueVector(PyObject *nodes, Reader *reader, int *index); @@ -104,7 +104,6 @@ static inline void initReadFuncOrNodes(PyObject *nodes, int *index, PyObject **s } } - static inline void align4(Reader *reader) { char mod = (reader->data - reader->dataStart) % 4; @@ -378,8 +377,6 @@ static inline int PyList_SetItem_Safe(PyObject *list, int i, PyObject *value) return ret; } - - static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int *index) { if (*index >= PyList_Size(nodes)) @@ -573,7 +570,7 @@ PyObject *read_typetree(PyObject *self, PyObject *args) "The endian attribute value must be a string of size 1"); return NULL; } - char endian = *(char*)PyUnicode_DATA(swap_obj); + char endian = *(char *)PyUnicode_DATA(swap_obj); switch (endian) { case '<': @@ -641,18 +638,18 @@ static int TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject *kwds) { static char *kwlist[] = { - "m_Name", // char* - "m_Type", // char* - "m_Level", // uint8 - "m_MetaFlag", // int32 - "m_Version", // int16 - "m_IsArray", // char - "m_ByteSize", // int - "m_Index", // int - "m_TypeStrOffset", // unsigned int - "m_NameStrOffset", // unsigned int - "m_RefTypeHash", // unsigned long long - "m_VariableCount", // int + "m_Name", // char* + "m_Type", // char* + "m_Level", // uint8 + "m_MetaFlag", // int32 + "m_Version", // int16 + "m_IsArray", // char + "m_ByteSize", // int + "m_Index", // int + "m_TypeStrOffset", // unsigned int + "m_NameStrOffset", // unsigned int + "m_RefTypeHash", // unsigned long long + "m_VariableCount", // int NULL}; const char *type = NULL; const char *name = NULL; @@ -708,10 +705,11 @@ TypeTreeNode_repr(PyObject *self) { TypeTreeNodeObject *node = (TypeTreeNodeObject *)self; return PyUnicode_Format( - PyUnicode_FromString(""), + "", node->m_Level, node->m_Type, - node->m_Name); + node->m_Name + ); } // PyTypeObject TypeTreeNodeType; From efa48b9b72c9296d24f6f1a4d8faa0ec57d21234 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 2 Aug 2022 23:14:13 +0200 Subject: [PATCH 131/599] fix repr 2 --- UnityPyBoost/TypeTreeHelper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c index ead44864..fd18cf76 100644 --- a/UnityPyBoost/TypeTreeHelper.c +++ b/UnityPyBoost/TypeTreeHelper.c @@ -704,7 +704,7 @@ static PyObject * TypeTreeNode_repr(PyObject *self) { TypeTreeNodeObject *node = (TypeTreeNodeObject *)self; - return PyUnicode_Format( + return PyUnicode_FromFormat( "", node->m_Level, node->m_Type, From 3c80a06348ac5ce40c11eec1a630fc4c7f5dd798 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 3 Aug 2022 13:31:12 +0200 Subject: [PATCH 132/599] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 9792b094..53e7e7f0 100644 --- a/README.md +++ b/README.md @@ -350,6 +350,5 @@ thanks a lot to all contributors of UnityPy and all of its users. Also, many thanks to: -- [Perfare](https://github.com/Perfare) for creating and maintaining -- every contributor of [AssetStudio](https://github.com/Perfare/AssetStudio) +- [Perfare](https://github.com/Perfare) for creating and maintaining and every contributor of [AssetStudio](https://github.com/Perfare/AssetStudio) - [ds5678](https://github.com/ds5678) for the [TypeTreeDumps](https://github.com/AssetRipper/TypeTreeDumps) and the [custom minimal Tpk format](https://github.com/AssetRipper/Tpk) From 72f10cba6303fd5bbb8512826f5fd059d46e46c3 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 3 Aug 2022 13:51:03 +0200 Subject: [PATCH 133/599] Update README.md --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 53e7e7f0..b5b8a00c 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,16 @@ If you're making an income by using UnityPy, please donate a small part of it to a charitable cause or sponsor this project with a small amount. +As UnityPy is still in active development breaking changes can happen. +Those changes are usually limited to minor versions (x.y) and not to patch versions (x.y.z). +So in case that you don't want to actively maintain your project, +make sure to make a note of the used UnityPy version in your README or add a check in your code. +```python +if UnityPy.__version__ == '1.9.6': + raise ImportError("Invalid Unity version detected. Please use version 1.9.6") +``` + + 1. [Installation](#installation) 2. [Example](#example) 3. [Important Classes](#important-classes) From c959e74b4b06ceafbf1266918a2bc966efa9a051 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 3 Aug 2022 13:53:01 +0200 Subject: [PATCH 134/599] Update README.md --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b5b8a00c..abc68a13 100644 --- a/README.md +++ b/README.md @@ -18,20 +18,22 @@ If you need advice or if you want to talk about (game) data-mining, feel free to join the [UnityPy Discord](https://discord.gg/C6txv7M). -If you're making an income by using UnityPy, -please donate a small part of it to a charitable cause or sponsor this project with a small amount. +If you're using UnityPy a commercial project, +a donation to a charitable cause or a sponsorship of this project is expected. -As UnityPy is still in active development breaking changes can happen. +**As UnityPy is still in active development breaking changes can happen.** Those changes are usually limited to minor versions (x.y) and not to patch versions (x.y.z). So in case that you don't want to actively maintain your project, make sure to make a note of the used UnityPy version in your README or add a check in your code. +e.g. ```python if UnityPy.__version__ == '1.9.6': raise ImportError("Invalid Unity version detected. Please use version 1.9.6") ``` + 1. [Installation](#installation) 2. [Example](#example) 3. [Important Classes](#important-classes) From 86319da84a968b3a4e5d092d92c4b42537abcdda Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 3 Aug 2022 18:38:27 +0200 Subject: [PATCH 135/599] 1.9.8 - fix stupid typo --- UnityPy/__init__.py | 2 +- UnityPy/helpers/TypeTreeHelper.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 7e158960..0ffca8f2 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.7" +__version__ = "1.9.8" from .environment import Environment diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index a465c552..8f950b85 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -70,7 +70,7 @@ def node_dict_to_node_cls(nodes: List[dict]) -> List[TypeTreeNode]: a list of TypeTreeNode-type nodes """ # legacy support - if not next(iter(nodes[0])).starts_with("m_"): + if not next(iter(nodes[0])).startswith("m_"): return [ TypeTreeNode( m_Name=x["name"], From f8b52ba9ef280b07c658ba28ed34c0a5d1f672ee Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 3 Aug 2022 18:39:50 +0200 Subject: [PATCH 136/599] add typetree test --- tests/test_main.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/test_main.py b/tests/test_main.py index 520f0a70..8de9a6ea 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -57,6 +57,10 @@ def test_mesh(): data = data.encode('utf8').replace(b'\r', b'') assert data == wanted +def test_read_typetree(): + env = UnityPy.load(SAMPLES) + for obj in env.objects: + obj.read_typetree() if __name__ == "__main__": for x in list(locals()): From 931315fa094599176e62685bd55726e80d22c838 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 3 Aug 2022 18:40:40 +0200 Subject: [PATCH 137/599] lint test_main --- tests/test_main.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/test_main.py b/tests/test_main.py index 8de9a6ea..129061ba 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -47,21 +47,23 @@ def test_audioclip(): def test_mesh(): env = UnityPy.load(os.path.join(SAMPLES, "xinzexi_2_n_tex")) - with open(os.path.join(SAMPLES, 'xinzexi_2_n_tex_mesh'), 'rb') as f: - wanted = f.read().replace(b'\r', b'') + with open(os.path.join(SAMPLES, "xinzexi_2_n_tex_mesh"), "rb") as f: + wanted = f.read().replace(b"\r", b"") for obj in env.objects: if obj.type == "Mesh": mesh = obj.read() data = mesh.export() if isinstance(data, str): - data = data.encode('utf8').replace(b'\r', b'') + data = data.encode("utf8").replace(b"\r", b"") assert data == wanted + def test_read_typetree(): env = UnityPy.load(SAMPLES) for obj in env.objects: obj.read_typetree() + if __name__ == "__main__": for x in list(locals()): if str(x)[:4] == "test": From e54bf463d49775892104bee91fdb5a435b331acd Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 4 Aug 2022 11:27:44 +0200 Subject: [PATCH 138/599] TypeTreeHelper.py - change last .name to m_Name --- UnityPy/helpers/TypeTreeHelper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 8f950b85..729bac56 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -516,7 +516,7 @@ def write_value( i.value += len(clz) - 1 j = c_uint32(1) while j.value < len(clz): - val = value[clz[j.value].name] + val = value[clz[j.value].m_Name] write_value(val, clz, writer, j) j.value += 1 From 4c60856c9c5915febd22742f8e1b5c60f469b4b0 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 4 Aug 2022 11:33:24 +0200 Subject: [PATCH 139/599] include all c files (including the missing headers) --- UnityPy/__init__.py | 2 +- setup.py | 9 +++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 0ffca8f2..2ea0718a 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.8" +__version__ = "1.9.9" from .environment import Environment diff --git a/setup.py b/setup.py index 7b9de625..e11db8d2 100644 --- a/setup.py +++ b/setup.py @@ -52,16 +52,13 @@ def get_fmod_library(): setup( name="UnityPy", packages=find_packages(), - #include_package_data=True, + # include_package_data=True, package_data={ "UnityPy": [ get_fmod_library(), "resources/uncompressed.tpk", - "*.c", - "*.h", - "*.cpp", - "*.hpp", - ] + ], + "": ["*.c", "*.h"], }, version=version, author="K0lb3", From c0b3118cdc43c40dd4b388c07af68607ca73c839 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 4 Aug 2022 15:49:03 +0200 Subject: [PATCH 140/599] switch to modern packaging structure (#122) * switch to modern packaging structure * Update README.md --- .github/workflows/python-package.yml | 7 +- README.md | 8 +- UnityPy/__init__.py | 2 +- build_hook.py | 90 ++++++++++++++++++++ pyproject.toml | 73 +++++++++++++++++ setup.cfg | 2 - setup.py | 118 --------------------------- 7 files changed, 174 insertions(+), 126 deletions(-) create mode 100644 build_hook.py create mode 100644 pyproject.toml delete mode 100644 setup.cfg delete mode 100644 setup.py diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index dcbb98f9..24eed4ad 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -25,7 +25,7 @@ jobs: - name: Install dependencies run: | - python -m pip install --upgrade pip wheel setuptools + python -m pip install --upgrade pip wheel setuptools hatch pip install --upgrade twine - name: Set up QEMU @@ -51,18 +51,19 @@ jobs: script: | import os wheeldir = "./wheelhouse" + print(os.listdir(wheeldir)) for f in os.listdir(wheeldir): fp = os.path.join(wheeldir, f) print(fp,"->",fp.replace("linux", "manylinux2014")) os.rename(fp, fp.replace("linux", "manylinux2014")) - name: Publish to PyPI - if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' + if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' && github.ref == 'master' env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} run: | twine upload ./wheelhouse/*.whl --skip-existing - python setup.py sdist + hatch build -t sdist twine upload ./dist/*.tar.gz --skip-existing diff --git a/README.md b/README.md index abc68a13..c8bcf17c 100644 --- a/README.md +++ b/README.md @@ -44,14 +44,18 @@ if UnityPy.__version__ == '1.9.6': **Python 3.6.0 or higher is required** +via pypi + ```cmd pip install UnityPy ``` -or download/clone the git and use +from source ```cmd -python setup.py install +git clone https://github.com/K0lb3/UnityPy.git +cd UnityPy +python -m pip install . ``` ### Notes diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 2ea0718a..2139153a 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.9" +__version__ = "1.9.10" from .environment import Environment diff --git a/build_hook.py b/build_hook.py new file mode 100644 index 00000000..0ca3fe0a --- /dev/null +++ b/build_hook.py @@ -0,0 +1,90 @@ +import os + +from hatchling.builders.hooks.plugin.interface import BuildHookInterface + + +class CustomBuildHook(BuildHookInterface): + def initialize(self, version, build_data): + # set infer_tag to True to let hatchling infer the correct platform tag + build_data["infer_tag"] = True + # - + build_data["pure_python"] = False + + # add fmod lib for the target platform + fmod_lib = get_fmod_library() + if fmod_lib: + print(f"Using fmod lib: {fmod_lib}") + build_data["force_include"][fmod_lib] = fmod_lib + else: + print("No fmod lib found for the target platform") + + # compile and add UnityPyBoost + boost_fp = build_UnityPyBoost(self.root) + build_data["force_include"][boost_fp] = boost_fp + + +def build_UnityPyBoost(build_dir: str) -> str: + from distutils.core import setup, Extension + print("Building UnityPyBoost") + UnityPyBoost_dir = os.path.join(build_dir, "UnityPyBoost") + setup( + name="UnityPy", + packages=["UnityPy"], + script_args=["build_ext", "--inplace"], + ext_modules=[ + Extension( + "UnityPy.UnityPyBoost", + [ + f"UnityPyBoost/{f}" + for f in os.listdir(UnityPyBoost_dir) + if f.endswith(".c") + ], + language="c", + include_dirs=[UnityPyBoost_dir], + ) + ], + ) + print("Done building UnityPyBoost") + # return the path to the built UnityPyBoost + lib_ext = ".pyd" if os.name == "nt" else ".so" + for f in os.listdir(os.path.join(build_dir, "UnityPy")): + if f.endswith(lib_ext): + return f"UnityPy/{f}" + else: + raise Exception("Compiled UnityPyBoost was not found") + + +def get_fmod_library() -> str: + import platform + + # determine system - Windows, Darwin, Linux, Android + system = platform.system() + if system == "Linux" and "ANDROID_BOOTLOGO" in os.environ: + system = "Android" + # determine architecture + machine = platform.machine() + arch = platform.architecture()[0] + + lib_name = "" + if system in ["Windows", "Darwin"]: + lib_name = "fmod.dll" if system == "Windows" else "libfmod.dylib" + if arch == "32bit": + arch = "x86" + elif arch == "64bit": + arch = "x64" + elif system == "Linux": + lib_name = "libfmod.so" + # Raspberry Pi and Linux on arm projects + if "arm" in machine: + if arch == "32bit": + arch = "armhf" if machine.endswith("l") else "arm" + elif arch == "64bit": + return None + elif arch == "32bit": + arch = "x86" + elif arch == "64bit": + arch = "x86_64" + else: + return None + + return f"UnityPy/lib/FMOD/{system}/{arch}/{lib_name}" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..8b24cd41 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,73 @@ +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[project] +name = "UnityPy" +authors = [{ name = "Rudolf Kolbe", email = "rkolbe96@gmail.com" }] +description = "A Unity extraction and patching package" +readme = "README.md" +license = { file = "LICENSE" } +requires-python = ">=3.6" +keywords = [ + "python", + "unity", + "unity-asset", + "python3", + "data-minig", + "unitypack", + "assetstudio", + "unity-asset-extractor", +] +classifiers = [ + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Intended Audience :: Developers", + "Development Status :: 5 - Production/Stable", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Games/Entertainment", + "Topic :: Multimedia :: Graphics", +] +dependencies = [ + # block compression/decompression + "lz4", # BundleFile block compression + "brotli", # WebFile compression + # Texture & Sprite handling + "Pillow", + "texture2ddecoder", # texture decompression + "etcpak", # ETC & DXT compression + # raw typetree dumping + "tabulate", +] +dynamic = ["version"] + +[project.urls] +"Homepage" = "https://github.com/K0lb3/UnityPy" +"Bug Tracker" = "https://github.com/K0lb3/UnityPy/issues" + +[tool.hatch.version] +# path to the file containing the version number +path = "UnityPy/__init__.py" + +[tool.hatch.build.targets.sdist] +# include all files required to build the package +only-include = ["UnityPy", "UnityPyBoost", "tests", "build_hook.py"] +# exclude prebuild files +exclude = ["UnityPy/UnityPyBoost*"] + +[tool.hatch.build.targets.wheel] +# UnityPyBoost will be compiled by the hook and added to UnityPy +# therefore UnityPyBoost and hook_build aren't needed +only-include = ["UnityPy", "tests"] +# exclude all prebuild files and all FMOD libs +# the fmod lib for the target platform is force included via the hook +exclude = ["UnityPy/lib/FMOD", "UnityPy/UnityPyBoost*"] + +[tool.hatch.build.targets.wheel.hooks.custom] +path = "build_hook.py" diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 224a7795..00000000 --- a/setup.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[metadata] -description-file = README.md \ No newline at end of file diff --git a/setup.py b/setup.py deleted file mode 100644 index e11db8d2..00000000 --- a/setup.py +++ /dev/null @@ -1,118 +0,0 @@ -from setuptools import setup, Extension, find_packages -import os -import re - -INSTALL_DIR = os.path.dirname(os.path.realpath(__file__)) -UNITYPYBOOST_DIR = os.path.join(INSTALL_DIR, "UnityPyBoost") - -version = None -with open(os.path.join(INSTALL_DIR, "UnityPy", "__init__.py"), "rt") as f: - version = re.search(r'__version__ = "([^"]+)"', f.read()).group(1) - -with open(os.path.join(INSTALL_DIR, "README.md"), "rt") as fh: - long_description = fh.read() - - -def get_fmod_library(): - import platform - - # determine system - Windows, Darwin, Linux, Android - system = platform.system() - if system == "Linux" and "ANDROID_BOOTLOGO" in os.environ: - system = "Android" - # determine architecture - machine = platform.machine() - arch = platform.architecture()[0] - - lib_name = "" - if system in ["Windows", "Darwin"]: - lib_name = "fmod.dll" if system == "Windows" else "libfmod.dylib" - if arch == "32bit": - arch = "x86" - elif arch == "64bit": - arch = "x64" - elif system == "Linux": - lib_name = "libfmod.so" - # Raspberry Pi and Linux on arm projects - if "arm" in machine: - if arch == "32bit": - arch = "armhf" if machine.endswith("l") else "arm" - elif arch == "64bit": - return None - elif arch == "32bit": - arch = "x86" - elif arch == "64bit": - arch = "x86_64" - else: - return None - - return f"lib/FMOD/{system}/{arch}/{lib_name}" - - -setup( - name="UnityPy", - packages=find_packages(), - # include_package_data=True, - package_data={ - "UnityPy": [ - get_fmod_library(), - "resources/uncompressed.tpk", - ], - "": ["*.c", "*.h"], - }, - version=version, - author="K0lb3", - description="A pythonic port of AssetStudio by Perfare", - long_description=long_description, - long_description_content_type="text/markdown", - url="https://github.com/K0lb3/UnityPy", - download_url="https://github.com/K0lb3/UnityPy/tarball/master", - keywords=[ - "python", - "unity", - "unity-asset", - "python3", - "data-minig", - "unitypack", - "assetstudio", - "unity-asset-extractor", - ], - classifiers=[ - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - "Intended Audience :: Developers", - "Development Status :: 5 - Production/Stable", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: Games/Entertainment", - "Topic :: Multimedia :: Graphics", - ], - install_requires=[ - # block compression/decompression - "lz4", # BundleFile block compression - "brotli", # WebFile compression - # Texture & Sprite handling - "Pillow", - "texture2ddecoder", # texture decompression - "etcpak", # ETC & DXT compression - # raw typetree dumping - "tabulate", - ], - ext_modules=[ - Extension( - "UnityPy.UnityPyBoost", - [ - f"UnityPyBoost/{f}" - for f in os.listdir(UNITYPYBOOST_DIR) - if f.endswith(".c") - ], - language="c", - include_dirs=[UNITYPYBOOST_DIR], - ) - ], -) From 85786c89cbb318e5ebc6eb0da6d7de7a87c33527 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 4 Aug 2022 15:55:03 +0200 Subject: [PATCH 141/599] 1.9.11 - fix TypeTreeHelper (node.name -> node.m_Name) --- UnityPy/__init__.py | 2 +- UnityPy/helpers/TypeTreeHelper.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 2139153a..f0e53822 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.10" +__version__ = "1.9.11" from .environment import Environment diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 729bac56..e36ec51d 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -231,7 +231,7 @@ def read_value(nodes: List[TypeTreeNode], reader: EndianBinaryReader, i: c_uint3 j = c_uint32(1) while j.value < len(clz): clz_node = clz[j.value] - value[clz_node.name] = read_value(clz, reader, j) + value[clz_node.m_Name] = read_value(clz, reader, j) j.value += 1 if align: From 9a87a406b020c9d1d2891e46e88498447508e172 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 4 Aug 2022 16:06:01 +0200 Subject: [PATCH 142/599] Update python-package.yml --- .github/workflows/python-package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 24eed4ad..d29da5c0 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -58,7 +58,7 @@ jobs: os.rename(fp, fp.replace("linux", "manylinux2014")) - name: Publish to PyPI - if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' && github.ref == 'master' + if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' && github.ref == 'refs/heads/master' env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} From 54382ccf27c7f31ab8e9b325ce470e39f8634f13 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 16 Aug 2022 12:53:39 +0200 Subject: [PATCH 143/599] UnityPyBoost - remove endian duplicate code --- UnityPyBoost/TypeTreeHelper.c | 2 +- UnityPyBoost/endian.h | 40 ----------------------------------- UnityPyBoost/swap.h | 3 +++ 3 files changed, 4 insertions(+), 41 deletions(-) delete mode 100644 UnityPyBoost/endian.h diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c index fd18cf76..464a3aab 100644 --- a/UnityPyBoost/TypeTreeHelper.c +++ b/UnityPyBoost/TypeTreeHelper.c @@ -5,7 +5,7 @@ #include "TypeTreeHelper.h" #include #include -#include "endian.h" +#include "swap.h" typedef struct { diff --git a/UnityPyBoost/endian.h b/UnityPyBoost/endian.h deleted file mode 100644 index 79205437..00000000 --- a/UnityPyBoost/endian.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -############################################################################ - endianess definitions -############################################################################ -*/ -// check if the system is little endian -#define IS_LITTLE_ENDIAN (*(unsigned char *)&(unsigned short){1}) - -// set swap funcions (source: old version of nodejs/src/node_buffer.cc) -#if defined(__GNUC__) || defined(__clang__) -#define bswap16(x) __builtin_bswap16(x) -#define bswap32(x) __builtin_bswap32(x) -#define bswap64(x) __builtin_bswap64(x) -#elif defined(__linux__) -#include -#define bswap16(x) bswap_16(x) -#define bswap32(x) bswap_32(x) -#define bswap64(x) bswap_64(x) -#elif defined(_MSC_VER) -#include -#define bswap16(x) _byteswap_ushort(x) -#define bswap32(x) _byteswap_ulong(x) -#define bswap64(x) _byteswap_uint64(x) -#else -#define bswap16 ((x) << 8) | ((x) >> 8) -#define bswap32 \ - (((x)&0xFF) << 24) | \ - (((x)&0xFF00) << 8) | \ - (((x) >> 8) & 0xFF00) | \ - (((x) >> 24) & 0xFF) -#define bswap64 \ - (((x)&0xFF00000000000000ull) >> 56) | \ - (((x)&0x00FF000000000000ull) >> 40) | \ - (((x)&0x0000FF0000000000ull) >> 24) | \ - (((x)&0x000000FF00000000ull) >> 8) | \ - (((x)&0x00000000FF000000ull) << 8) | \ - (((x)&0x0000000000FF0000ull) << 24) | \ - (((x)&0x000000000000FF00ull) << 40) | \ - (((x)&0x00000000000000FFull) << 56) -#endif diff --git a/UnityPyBoost/swap.h b/UnityPyBoost/swap.h index 106db94d..5597a232 100644 --- a/UnityPyBoost/swap.h +++ b/UnityPyBoost/swap.h @@ -1,3 +1,6 @@ +// check if the system is little endian +#define IS_LITTLE_ENDIAN (*(unsigned char *)&(unsigned short){1}) + // set swap funcions (source: old version of nodejs/src/node_buffer.cc) #if defined(__GNUC__) || defined(__clang__) #define bswap16(x) __builtin_bswap16(x) From e9558ace2aeaee6ee1883822fead3d5fe7c7a36a Mon Sep 17 00:00:00 2001 From: Oleg Oshmyan Date: Tue, 16 Aug 2022 14:03:20 +0300 Subject: [PATCH 144/599] Fix save_fs flag confusion (#123) * Fix save_fs flag argument confusion The names of the two flags in save_fs were the exact opposite of their names in BundleFile fields and BundleFile.save. In particular, bundle_file.save("original") would end up swapping the flags, which not only was counterintuitive but could even make the output files unreadable in Unity proper (because most of the flags aren't validated or enforced by UnityPy). Rename the save_fs arguments to match BundleFile fields. Keep them in the same order so that any user-written calls without named arguments continue to work. * save_fs: raise exception if data_flag suggests no DirectoryInfo UnityPy unconditionally writes the DirectoryInfo, but if the flags don't reflect this, the asset bundle can't be loaded in Unity. I don't know what files without this flag are supposed to look like, so just require the flag to be set always. --- UnityPy/files/BundleFile.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 1601777d..c6ec7989 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -176,18 +176,18 @@ def save(self, packer=None): elif packer == "original": self.save_fs( writer, - block_info_flag=self._block_info_flags, data_flag=self._data_flags, + block_info_flag=self._block_info_flags, ) elif packer == "lz4": - self.save_fs(writer, block_info_flag=194, data_flag=2) + self.save_fs(writer, data_flag=194, block_info_flag=2) elif isinstance(packer, tuple): self.save_fs(writer, *packer) else: raise NotImplemented("UnityFS - Packer:", packer) return writer.bytes - def save_fs(self, writer: EndianBinaryWriter, block_info_flag: int, data_flag: int): + def save_fs(self, writer: EndianBinaryWriter, data_flag: int, block_info_flag: int): # header # compressed blockinfo (block details & directionary) # compressed assets @@ -256,7 +256,7 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag: int, data_flag: i uncompressed_data_size = len(file_data) # compress the data - switch = data_flag & 0x3F + switch = block_info_flag & 0x3F if switch == 1: # LZMA file_data = CompressionHelper.compress_lzma(file_data) elif switch in [2, 3]: # LZ4, LZ4HC @@ -277,9 +277,11 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag: int, data_flag: i # compressed size block_writer.write_u_int(compressed_data_size) # flag - block_writer.write_u_short(data_flag) + block_writer.write_u_short(block_info_flag) # file block info + if not data_flag & 0x40: + raise NotImplementedError("UnityPy always writes DirectoryInfo, so data_flag must include 0x40") # file count block_writer.write_int(len(files)) offset = 0 @@ -300,7 +302,7 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag: int, data_flag: i uncompressed_block_data_size = len(block_data) - switch = block_info_flag & 0x3F + switch = data_flag & 0x3F if switch == 1: # LZMA block_data = CompressionHelper.compress_lzma(block_data) elif switch in [2, 3]: # LZ4, LZ4HC @@ -318,8 +320,8 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag: int, data_flag: i writer.write_u_int(compressed_block_data_size) # uncompressed size writer.write_u_int(uncompressed_block_data_size) - # compression flag - writer.write_u_int(block_info_flag) + # compression and file layout flag + writer.write_u_int(data_flag) if self.version >= 7: # UnityFS\x00 - 8 @@ -329,7 +331,7 @@ def save_fs(self, writer: EndianBinaryWriter, block_info_flag: int, data_flag: i # sum : 28 -> +8 alignment writer.align_stream(16) - if (block_info_flag & 0x80) != 0: # at end of file + if data_flag & 0x80: # at end of file if data_flag & 0x200: writer.align_stream(16) writer.write(file_data) From 227e7737af61cc94da19e23abfae2a338dc19bdd Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 16 Aug 2022 13:05:55 +0200 Subject: [PATCH 145/599] bump version to 1.9.12 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index f0e53822..fbfaee1e 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.11" +__version__ = "1.9.12" from .environment import Environment From 09393e7f5d3d38de331da116dca0ceadb3ffe99b Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 19 Aug 2022 16:15:29 +0200 Subject: [PATCH 146/599] ObjectReader - allow error passthrough --- UnityPy/files/ObjectReader.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index 8229168c..8f24f183 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -157,7 +157,7 @@ def Position(self, pos): def reset(self): self.reader.Position = self.byte_start - def read(self): + def read(self, return_typetree_on_error: bool=True): cls = getattr(classes, self.type.name, None) obj = None @@ -165,7 +165,12 @@ def read(self): try: obj = cls(self) except Exception as e: - print(e) + if return_typetree_on_error: + print(f"Error during the parsing of object {self.path_id}") + print(e) + print("Returning the typetree") + else: + raise e if not obj: typetree = self.read_typetree() if typetree: From 52ac176ea04222f7784f7b59f2f375656ed69b86 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 19 Aug 2022 16:16:00 +0200 Subject: [PATCH 147/599] SerializedFile - fix BuildType property names --- UnityPy/files/SerializedFile.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 9dba3169..d07ff5f3 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -89,11 +89,11 @@ def __init__(self, build_type): self.build_type = build_type @property - def is_alpha(self): + def IsAlpha(self): return self.build_type == "a" @property - def is_path(self): + def IsPatch(self): return self.build_type == "p" From 382c54cd11e2cc73cdb6f0b258dbb38ba9083f07 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 19 Aug 2022 16:17:28 +0200 Subject: [PATCH 148/599] bump version to 1.9.13 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index f0e53822..8dd4a6eb 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.11" +__version__ = "1.9.13" from .environment import Environment From ded81ef2200806bbeff84e4ac2563b6747e1b87f Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 19 Aug 2022 21:48:58 +0200 Subject: [PATCH 149/599] 1.9.14 - improve c typetreereader and fix loading for old Unity versions (#128) * TypeTreeHelper.C - make name, type writable, use typehash * Fix missing serialized_type issue for old Unity versions * 1.9.14 - version bump * Object.py - fix typo --- UnityPy/__init__.py | 2 +- UnityPy/classes/Object.py | 11 +-- UnityPy/environment.py | 2 +- UnityPy/files/ObjectReader.py | 29 ++++--- UnityPy/files/SerializedFile.py | 14 ++-- UnityPy/tools/extractor.py | 2 +- UnityPyBoost/TypeTreeHelper.c | 77 +++++++++++++++---- UnityPyBoost/TypeTreeHelper.h | 2 + .../monobehaviour_from_assembly.py | 2 +- 9 files changed, 96 insertions(+), 45 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 8dd4a6eb..1502d6a1 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.13" +__version__ = "1.9.14" from .environment import Environment diff --git a/UnityPy/classes/Object.py b/UnityPy/classes/Object.py index 8bcc4efc..0565a4e1 100644 --- a/UnityPy/classes/Object.py +++ b/UnityPy/classes/Object.py @@ -36,8 +36,9 @@ def __init__(self, reader: ObjectReader): self.read_typetree() def has_struct_member(self, name: str) -> bool: - return self.serialized_type.m_Nodes and any( - [x.name == name for x in self.serialized_type.m_Nodes] + nodes = self.reader.get_typetree_nodes() + return any( + node.m_Name == name for node in nodes ) def dump_typetree(self, nodes: list = None) -> str: @@ -84,14 +85,10 @@ def save(self, writer: EndianBinaryWriter = None, intern_call=False): if intern_call: if self.platform == BuildTarget.NoTarget: writer.write_u_int(self._object_hide_flags) - elif self.serialized_type.nodes: + else: # save for objects WITHOUT specific save function # so we have to use the typetree if it exists self.save_typetree() - else: - raise NotImplementedError( - "There is no save function for this obj.type nor has it any typetree nodes that could be used." - ) def _save(self, writer): # the reader is actually an ObjectReader, diff --git a/UnityPy/environment.py b/UnityPy/environment.py index e9c1515e..c87fcbd6 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -130,7 +130,7 @@ def load_file( except Exception as e: # just to be sure # cuz the SerializedFile detection isn't perfect - print("Error loading, reverting to EndianBinaryReader:\n", e) + print("Error loading, reverting to EndianBinaryReader:\n", str(e)) return EndianBinaryReader(file) def load_zip_file(self, value): diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index 8f24f183..622e310d 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -35,6 +35,7 @@ def __init__(self, assets_file, reader: EndianBinaryReader): header = assets_file.header types = assets_file.types + # AssetStudio ObjectInfo init if assets_file.big_id_enabled: self.path_id = reader.read_long() elif header.version < 14: @@ -58,16 +59,14 @@ def __init__(self, assets_file, reader: EndianBinaryReader): self.byte_size = reader.read_u_int() self.type_id = reader.read_int() + if header.version < 16: self.class_id = reader.read_u_short() - if types: - self.serialized_type = ( - x for x in types if x.class_id == self.type_id - ).__next__() - else: - self.serialized_type = SerializedFile.SerializedType( - reader, self.assets_file - ) + self.serialized_type = None + for typ in types: + if typ.class_id == self.type_id: + self.serialized_type = typ + break else: typ = types[self.type_id] self.serialized_type = typ @@ -197,18 +196,18 @@ def __repr__(self): def dump_typetree(self, nodes: list = None) -> str: self.reset() sb = [] - if nodes: - TypeTreeHelper.read_typetree_str(sb, nodes, self) - elif getattr(self.serialized_type, "nodes", None): - TypeTreeHelper.read_typetree_str(sb, self.serialized_type.nodes, self) - return "".join(sb) - return "" + nodes = self.get_typetree(nodes) + TypeTreeHelper.read_typetree_str(sb, nodes, self) + return "".join(sb) def dump_typetree_structure(self) -> str: return TypeTreeHelper.dump_typetree(self.get_typetree_nodes()) def get_typetree_nodes(self, nodes: list = None) -> list: - if not nodes: + if nodes: + return nodes + + if self.serialized_type: nodes = self.serialized_type.nodes if not nodes: nodes = get_typetree_nodes(self.class_id, self.version) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index d07ff5f3..d9a53482 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -318,19 +318,21 @@ def read_type_tree(self): else: level_stack[-1][1] -= 1 - type_tree_node = TypeTreeNode() + type_tree_node = TypeTreeNode( + m_Level = level, + m_Type = self.reader.read_string_to_null(), + m_Name = self.reader.read_string_to_null(), + m_ByteSize = self.reader.read_int() + ) + type_tree.append(type_tree_node) - type_tree_node.m_Level = level - type_tree_node.m_Type = self.reader.read_string_to_null() - type_tree_node.m_Name = self.reader.read_string_to_null() - type_tree_node.m_ByteSize = self.reader.read_int() if self.header.version == 2: type_tree_node.m_VariableCount = self.reader.read_int() if self.header.version != 3: type_tree_node.m_Index = self.reader.read_int() - type_tree_node.m_IsArray = self.reader.read_int() + type_tree_node.m_IsArray = bool(self.reader.read_int()) type_tree_node.m_Version = self.reader.read_int() if self.header.version != 3: type_tree_node.m_MetaFlag = self.reader.read_int() diff --git a/UnityPy/tools/extractor.py b/UnityPy/tools/extractor.py index f20e3526..f71de744 100644 --- a/UnityPy/tools/extractor.py +++ b/UnityPy/tools/extractor.py @@ -174,7 +174,7 @@ def exportMonoBehaviour( obj: Union[MonoBehaviour, Object], fp: str, extension: str = "" ) -> List[int]: # TODO - add generic way to add external typetrees - if obj.serialized_type.nodes: + if obj.serialized_type and obj.serialized_type.nodes: extension = ".json" export = json.dumps(obj.read_typetree(), indent=4, ensure_ascii=False).encode( "utf8", errors="surrogateescape" diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c index 464a3aab..b3068c6d 100644 --- a/UnityPyBoost/TypeTreeHelper.c +++ b/UnityPyBoost/TypeTreeHelper.c @@ -69,8 +69,6 @@ static PyObject *read_bool(Reader *reader); static PyObject *read_string(Reader *reader); static PyObject *read_TypelessData(Reader *reader); -static uint32_t hash_string(const char *str); - static read_type getReadFunction(int hash_value, int *index); static PyObject *getSubNodes(PyObject *nodes, int *index); @@ -92,8 +90,7 @@ static inline uint32_t hash_str(const char *str) static inline void initReadFuncOrNodes(PyObject *nodes, int *index, PyObject **subnodes, read_type *func, char *subalign) { TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index); - uint32_t hash = hash_str(node->m_Type); - *func = getReadFunction(hash, index); + *func = getReadFunction(node->typehash, index); if (*func == NULL) { *subnodes = getSubNodes(nodes, index); @@ -391,7 +388,7 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * char align = (node->m_MetaFlag & kAlignBytesFlag) ? 1 : 0; // printf("RVa: %d\t%lld\t%s\t%s\t%d\t%d\n", *index, (reader->data - reader->dataStart), node->m_Name, node->m_Type, align, node->m_MetaFlag); - int hash_value = hash_str(node->m_Type); + int hash_value = node->typehash; read_type func = getReadFunction(hash_value, index); if (func) { @@ -620,10 +617,10 @@ TypeTreeNode_new(PyTypeObject *type, PyObject *args, PyObject *kwds) self->m_ByteSize = 0; self->m_Index = 0; self->m_MetaFlag = 0; - self->m_Type = NULL; - self->m_Name = NULL; - // self->m_Type[0] = '\0'; - // self->m_Name[0] = '\0'; + self->m_Type = PyMem_Malloc(sizeof(char)); + self->m_Name = PyMem_Malloc(sizeof(char)); + self->m_Type[0] = '\0'; + self->m_Name[0] = '\0'; // self->children_count = 0; // self->children = NULL; self->m_TypeStrOffset = 0; @@ -673,20 +670,66 @@ TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject *kwds) return -1; if (type != NULL) { + PyMem_Free(self->m_Type); self->m_Type = PyMem_Malloc(strlen(type) + 1); strcpy(self->m_Type, type); + self->typehash = hash_str(type); } if (name != NULL) { + PyMem_Free(self->m_Name); self->m_Name = PyMem_Malloc(strlen(name) + 1); strcpy(self->m_Name, name); } return 0; }; +static PyObject * +TypeTreeNode_getType(TypeTreeNodeObject *self, void *closure) +{ + return PyUnicode_DecodeUTF8(self->m_Type, strlen(self->m_Type), SURROGATEESCAPE); +} + +static int +TypeTreeNode_setType(TypeTreeNodeObject *self, PyObject *value, void *closure) +{ + if (!PyUnicode_Check(value)) + { + PyErr_SetString(PyExc_TypeError, "The type attribute value must be a string"); + return NULL; + } + PyMem_Free(self->m_Type); + char *type = PyUnicode_AsUTF8(value); + self->m_Type = PyMem_Malloc(strlen(type) + 1); + strcpy(self->m_Type, type); + self->typehash = hash_str(type); + return 0; +} + +static PyObject * +TypeTreeNode_getName(TypeTreeNodeObject *self, void *closure) +{ + return PyUnicode_DecodeUTF8(self->m_Name, strlen(self->m_Name), SURROGATEESCAPE); +} + +static int +TypeTreeNode_setName(TypeTreeNodeObject *self, PyObject *value, void *closure) +{ + if (!PyUnicode_Check(value)) + { + PyErr_SetString(PyExc_TypeError, "The name attribute value must be a string"); + return NULL; + } + PyMem_Free(self->m_Name); + char *name = PyUnicode_AsUTF8(value); + self->m_Name = PyMem_Malloc(strlen(name) + 1); + strcpy(self->m_Name, name); + return 0; +} + static PyMemberDef TypeTreeNode_members[] = { - {"m_Type", T_STRING, offsetof(TypeTreeNodeObject, m_Type), 0, ""}, - {"m_Name", T_STRING, offsetof(TypeTreeNodeObject, m_Name), 0, ""}, + //{"m_Type", T_STRING, offsetof(TypeTreeNodeObject, m_Type), 0, ""}, + //{"m_Name", T_STRING, offsetof(TypeTreeNodeObject, m_Name), 0, ""}, {"m_ByteSize", T_INT, offsetof(TypeTreeNodeObject, m_ByteSize), 0, ""}, {"m_Index", T_INT, offsetof(TypeTreeNodeObject, m_Index), 0, ""}, {"m_IsArray", T_BOOL, offsetof(TypeTreeNodeObject, m_IsArray), 0, ""}, @@ -700,6 +743,14 @@ static PyMemberDef TypeTreeNode_members[] = { {NULL} /* Sentinel */ }; +static PyGetSetDef TypeTreeNode_getsetters[] = { + {"m_Type", (getter)TypeTreeNode_getType, (setter)TypeTreeNode_setType, + "", NULL}, + {"m_Name", (getter)TypeTreeNode_getName, (setter)TypeTreeNode_setName, + "", NULL}, + {NULL} /* Sentinel */ +}; + static PyObject * TypeTreeNode_repr(PyObject *self) { @@ -708,8 +759,7 @@ TypeTreeNode_repr(PyObject *self) "", node->m_Level, node->m_Type, - node->m_Name - ); + node->m_Name); } // PyTypeObject TypeTreeNodeType; @@ -766,6 +816,7 @@ PyTypeObject TypeTreeNodeType = { .tp_init = (initproc)TypeTreeNode_init, .tp_dealloc = (destructor)TypeTreeNode_dealloc, .tp_members = TypeTreeNode_members, + .tp_getset = TypeTreeNode_getsetters, .tp_repr = (reprfunc)TypeTreeNode_repr, }; diff --git a/UnityPyBoost/TypeTreeHelper.h b/UnityPyBoost/TypeTreeHelper.h index 2e05258c..2fe69653 100644 --- a/UnityPyBoost/TypeTreeHelper.h +++ b/UnityPyBoost/TypeTreeHelper.h @@ -22,6 +22,8 @@ typedef struct TypeTreeNodeObject{ unsigned long long m_RefTypeHash; // UnityRaw - versin = 2 int m_VariableCount; + // helper fields + unsigned int typehash; } TypeTreeNodeObject; int add_typetreenode_to_module(PyObject *m); diff --git a/examples/MonoBehaviourFromAssembly/monobehaviour_from_assembly.py b/examples/MonoBehaviourFromAssembly/monobehaviour_from_assembly.py index aa750e13..93c98753 100644 --- a/examples/MonoBehaviourFromAssembly/monobehaviour_from_assembly.py +++ b/examples/MonoBehaviourFromAssembly/monobehaviour_from_assembly.py @@ -47,7 +47,7 @@ def export_monobehaviours(asset_path: str, trees: dict): for obj in env.objects: if obj.type == "MonoBehaviour": d = obj.read() - if obj.serialized_type.nodes: + if obj.serialized_type and obj.serialized_type.nodes: tree = obj.read_typetree() else: if not d.m_Script: From 54fe7ad0cff580c55da8e983ad6d327f70b01919 Mon Sep 17 00:00:00 2001 From: Parnassius Date: Wed, 24 Aug 2022 14:44:42 +0200 Subject: [PATCH 150/599] CI: fix names of linux wheels (#129) --- .github/workflows/python-package.yml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index d29da5c0..46f51088 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -44,19 +44,6 @@ jobs: CIBW_TEST_REQUIRES: pytest CIBW_TEST_COMMAND: pytest -v -s {package}/tests - - name: Rename Linux wheels to ManyLinux - if: runner.os == 'Linux' - uses: jannekem/run-python-script-action@v1 - with: - script: | - import os - wheeldir = "./wheelhouse" - print(os.listdir(wheeldir)) - for f in os.listdir(wheeldir): - fp = os.path.join(wheeldir, f) - print(fp,"->",fp.replace("linux", "manylinux2014")) - os.rename(fp, fp.replace("linux", "manylinux2014")) - - name: Publish to PyPI if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' && github.ref == 'refs/heads/master' env: From 3c87f86a9791cfc8deb2e714fb15b134d8ce87a7 Mon Sep 17 00:00:00 2001 From: Ai0796 <36570430+Ai0796@users.noreply.github.com> Date: Thu, 25 Aug 2022 15:18:43 -0400 Subject: [PATCH 151/599] Changed BC5 image mode argument (#130) BC5 mode "RGBA" -> "RGB" in order for PIL to build a proper decoder for the image --- UnityPy/export/Texture2DConverter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/export/Texture2DConverter.py b/UnityPy/export/Texture2DConverter.py index e7e13675..437e3e0f 100644 --- a/UnityPy/export/Texture2DConverter.py +++ b/UnityPy/export/Texture2DConverter.py @@ -254,7 +254,7 @@ def half( ( TF.YUY2, ), ( TF.RGB9e5Float, ), ( TF.BC4, pillow, "L", "bcn", 4 ), -( TF.BC5, pillow, "RGBA", "bcn", 5 ), +( TF.BC5, pillow, "RGB", "bcn", 5 ), ( TF.BC6H, pillow, "RGBA", "bcn", 6 ), ( TF.BC7, pillow, "RGBA", "bcn", 7 ), ( TF.DXT1Crunched, pillow, "RGBA", "bcn", 1 ), From bd9ce9bb48da644b61a04dfdbe6d1c5fe3b04e58 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 25 Aug 2022 21:31:49 +0200 Subject: [PATCH 152/599] bump version to 1.9.15 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 1502d6a1..d4701e7d 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.14" +__version__ = "1.9.15" from .environment import Environment From cf3c2bb826c13fc63c1b638e7d0a972357221c29 Mon Sep 17 00:00:00 2001 From: "Clarence \"Sparr\" Risher" Date: Mon, 12 Sep 2022 05:02:15 -0700 Subject: [PATCH 153/599] Fix doc mistakes (#131) --- README.md | 4 ++-- UnityPy/tools/extractor.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c8bcf17c..1701f113 100644 --- a/README.md +++ b/README.md @@ -28,8 +28,8 @@ So in case that you don't want to actively maintain your project, make sure to make a note of the used UnityPy version in your README or add a check in your code. e.g. ```python -if UnityPy.__version__ == '1.9.6': - raise ImportError("Invalid Unity version detected. Please use version 1.9.6") +if UnityPy.__version__ != '1.9.6': + raise ImportError("Invalid UnityPy version detected. Please use version 1.9.6") ``` diff --git a/UnityPy/tools/extractor.py b/UnityPy/tools/extractor.py index f71de744..b2e0c3ec 100644 --- a/UnityPy/tools/extractor.py +++ b/UnityPy/tools/extractor.py @@ -33,7 +33,7 @@ def export_obj( obj (Object, PPtr): A valid Unity object or a reference to one. fp (Path): A valid filepath where the object should be exported to. append_name (bool, optional): Decides if the obj name will be appended to the filepath. Defaults to False. - append_path_id (bool, optional): Decides if the obj name will be appended to the filepath. Defaults to False. + append_path_id (bool, optional): Decides if the obj path id will be appended to the filepath. Defaults to False. export_unknown_as_typetree (bool, optional): If set, then unimplemented objects will be exported via their typetree or dumped as bin. Defaults to False. Returns: From a63c581bfd5c6f53ae295e56bc3f72667f0b1c73 Mon Sep 17 00:00:00 2001 From: "Clarence \"Sparr\" Risher" Date: Mon, 12 Sep 2022 05:02:50 -0700 Subject: [PATCH 154/599] Update sorted() call for Python 3.6+. Fallback index for unrecognized types. (#132) --- UnityPy/tools/extractor.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/UnityPy/tools/extractor.py b/UnityPy/tools/extractor.py index b2e0c3ec..ade4bb64 100644 --- a/UnityPy/tools/extractor.py +++ b/UnityPy/tools/extractor.py @@ -92,11 +92,11 @@ def extract_assets( def defaulted_export_index(type: ClassIDType): try: return export_types_keys.index(type) - except IndexError: + except (IndexError, ValueError): return 999 if use_container: - container = sorted(env.container, lambda x: defaulted_export_index(x[1].type)) + container = sorted(env.container, key=lambda x: defaulted_export_index(x[1].type)) for obj_path, obj in container: # the check of the various sub directories is required to avoid // in the path obj_dest = os.path.join( @@ -114,7 +114,7 @@ def defaulted_export_index(type: ClassIDType): ) else: - objects = sorted(env.objects, lambda x: defaulted_export_index(x.type)) + objects = sorted(env.objects, key=lambda x: defaulted_export_index(x.type)) for obj in objects: if obj.path_id not in exported: exported.extend( From 7c3e3eef99fffe4b8aaa3f05e7b5e673708a0c98 Mon Sep 17 00:00:00 2001 From: "Clarence \"Sparr\" Risher" Date: Fri, 16 Sep 2022 02:53:17 -0700 Subject: [PATCH 155/599] Fix export_func retrieval, then don't discard it (#135) * Fix export_func retrieval, then don't discard it * fix EXPORT_TYPES usage Co-authored-by: Rudolf Kolbe --- UnityPy/tools/extractor.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/UnityPy/tools/extractor.py b/UnityPy/tools/extractor.py index ade4bb64..db7ff4bc 100644 --- a/UnityPy/tools/extractor.py +++ b/UnityPy/tools/extractor.py @@ -40,18 +40,18 @@ def export_obj( list: a list of exported object path_ids """ # figure out export function - type_name = obj.type.name - export_func = getattr(EXPORT_TYPES, type_name) - if export_unknown_as_typetree: - export_func = exportMonoBehaviour - else: - return [] + export_func = EXPORT_TYPES.get(obj.type) + if not export_func: + if export_unknown_as_typetree: + export_func = exportMonoBehaviour + else: + return [] # set filepath obj = obj.read() if append_name: - fp = os.path.join(fp, obj.name if obj.name else type_name) + fp = os.path.join(fp, obj.name if obj.name else obj.type.name) fp, extension = os.path.splitext(fp) From 706d5698a6caf0af69db940277697d3d0f4b9280 Mon Sep 17 00:00:00 2001 From: "Clarence \"Sparr\" Risher" Date: Fri, 23 Sep 2022 13:25:39 -0400 Subject: [PATCH 156/599] Add filter functionality to extractor (#133) * Add filter functionality to extractor * Reduce indenting by using continue on failed object filter --- UnityPy/tools/extractor.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/UnityPy/tools/extractor.py b/UnityPy/tools/extractor.py index db7ff4bc..f3976862 100644 --- a/UnityPy/tools/extractor.py +++ b/UnityPy/tools/extractor.py @@ -18,6 +18,7 @@ from UnityPy.enums.ClassIDType import ClassIDType from typing import Union, List, Dict from pathlib import Path +from collections.abc import Callable def export_obj( @@ -26,6 +27,7 @@ def export_obj( append_name: bool = False, append_path_id: bool = False, export_unknown_as_typetree: bool = False, + asset_filter: Callable[[Object], bool] = None, ) -> List[int]: """Exports the given object to the given filepath. @@ -35,6 +37,7 @@ def export_obj( append_name (bool, optional): Decides if the obj name will be appended to the filepath. Defaults to False. append_path_id (bool, optional): Decides if the obj path id will be appended to the filepath. Defaults to False. export_unknown_as_typetree (bool, optional): If set, then unimplemented objects will be exported via their typetree or dumped as bin. Defaults to False. + asset_filter (func(Object)->bool, optional): Determines whether to export an object. Defaults to all objects. Returns: list: a list of exported object path_ids @@ -50,6 +53,10 @@ def export_obj( # set filepath obj = obj.read() + # a filter that returned True during an earlier extract_assets check can return False now with more info from read() + if asset_filter and not asset_filter(obj): + return [] + if append_name: fp = os.path.join(fp, obj.name if obj.name else obj.type.name) @@ -69,8 +76,9 @@ def extract_assets( ignore_first_container_dirs: int = 0, append_path_id: bool = False, export_unknown_as_typetree: bool = False, + asset_filter: Callable[[Object], bool] = None, ) -> List[int]: - """Extracts all assets from the given source. + """Extracts some or all assets from the given source. Args: src (Union[Path, BytesIO, bytes, bytearray]): [description] @@ -79,6 +87,7 @@ def extract_assets( ignore_first_container_dirs (int, optional): [description]. Defaults to 0. append_path_id (bool, optional): [description]. Defaults to False. export_unknown_as_typetree (bool, optional): [description]. Defaults to False. + asset_filter (func(object)->bool, optional): Determines whether to export an object. Defaults to all objects. Returns: List[int]: [description] @@ -98,6 +107,9 @@ def defaulted_export_index(type: ClassIDType): if use_container: container = sorted(env.container, key=lambda x: defaulted_export_index(x[1].type)) for obj_path, obj in container: + # The filter here can only access metadata. The same filter may produce a different result later in extract_obj after obj.read() + if asset_filter is not None and not asset_filter(obj): + continue # the check of the various sub directories is required to avoid // in the path obj_dest = os.path.join( dst, @@ -116,6 +128,8 @@ def defaulted_export_index(type: ClassIDType): else: objects = sorted(env.objects, key=lambda x: defaulted_export_index(x.type)) for obj in objects: + if asset_filter is not None and not asset_filter(obj): + continue if obj.path_id not in exported: exported.extend( export_obj( From 493c018c4ab720d3caef642dbf45db832e000240 Mon Sep 17 00:00:00 2001 From: "Clarence \"Sparr\" Risher" Date: Sun, 2 Oct 2022 07:20:05 -0400 Subject: [PATCH 157/599] Pass asset_filter from extract_assets to export_obj (#139) --- UnityPy/tools/extractor.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/UnityPy/tools/extractor.py b/UnityPy/tools/extractor.py index f3976862..84137327 100644 --- a/UnityPy/tools/extractor.py +++ b/UnityPy/tools/extractor.py @@ -122,6 +122,7 @@ def defaulted_export_index(type: ClassIDType): obj_dest, append_path_id=append_path_id, export_unknown_as_typetree=export_unknown_as_typetree, + asset_filter=asset_filter, ) ) @@ -138,6 +139,7 @@ def defaulted_export_index(type: ClassIDType): append_name=True, append_path_id=append_path_id, export_unknown_as_typetree=export_unknown_as_typetree, + asset_filter=asset_filter, ) ) From 5d7fef542da58d876075e2a545fb525020229ccc Mon Sep 17 00:00:00 2001 From: "Clarence \"Sparr\" Risher" Date: Sun, 2 Oct 2022 07:21:04 -0400 Subject: [PATCH 158/599] Handle exportMonoBehavior for Object without serialized type or nodes (#138) --- UnityPy/tools/extractor.py | 1 + 1 file changed, 1 insertion(+) diff --git a/UnityPy/tools/extractor.py b/UnityPy/tools/extractor.py index 84137327..02ae901f 100644 --- a/UnityPy/tools/extractor.py +++ b/UnityPy/tools/extractor.py @@ -189,6 +189,7 @@ def exporShader(obj: Shader, fp: str, extension=".txt") -> List[int]: def exportMonoBehaviour( obj: Union[MonoBehaviour, Object], fp: str, extension: str = "" ) -> List[int]: + export = None # TODO - add generic way to add external typetrees if obj.serialized_type and obj.serialized_type.nodes: extension = ".json" From d1f9f9755be9447148219edefde7126e032d5c63 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 6 Oct 2022 14:01:08 +0200 Subject: [PATCH 159/599] 19.16 - Use pyfmodex (#141) and fix tests * replace copied pyfmodex code with pyfmodes lib * fix tests * fix test_audioclip for unsupported archs * run tests before building wheels * fix test again, catch NotImplemented * fix for CIOBuildWHeel test * improve test matrix name --- .github/workflows/python-package.yml | 131 +++++++----- UnityPy/__init__.py | 2 +- UnityPy/export/AudioClipConverter.py | 295 ++++++--------------------- pyproject.toml | 2 + tests/test_main.py | 23 ++- 5 files changed, 169 insertions(+), 284 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 46f51088..e9b18a3a 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -3,54 +3,83 @@ name: Test and Publish on: [push, pull_request, workflow_dispatch] jobs: - deploy: - strategy: - fail-fast: false - matrix: - os: ["ubuntu-latest", "macOS-latest", "windows-latest"] - cp: ["cp37","cp38","cp39","cp310"] - - timeout-minutes: 30 - - runs-on: ${{ matrix.os }} - name: ${{ matrix.os }} - ${{ matrix.cp }} - - steps: - - uses: actions/checkout@v2 - - - name: Set up Python - uses: actions/setup-python@v1 - with: - python-version: '3.10' - - - name: Install dependencies - run: | - python -m pip install --upgrade pip wheel setuptools hatch - pip install --upgrade twine - - - name: Set up QEMU - if: runner.os == 'Linux' - uses: docker/setup-qemu-action@v1 - with: - platforms: all - - - name: Build wheels - uses: pypa/cibuildwheel@v2.3.1 - env: - CIBW_ARCHS_LINUX: auto aarch64 - CIBW_BUILD: | - ${{ matrix.cp }}-manylinux_x86_64 ${{ matrix.cp }}-manylinux_i686 ${{ matrix.cp }}-manylinux_aarch64 ${{ matrix.cp }}-win_amd64 ${{ matrix.cp }}-win32 ${{ matrix.cp }}-macosx_x86_64 - CIBW_REPAIR_WHEEL_COMMAND: '' # Disable auditwheel - CIBW_TEST_REQUIRES: pytest - CIBW_TEST_COMMAND: pytest -v -s {package}/tests - - - name: Publish to PyPI - if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' && github.ref == 'refs/heads/master' - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} - run: | - twine upload ./wheelhouse/*.whl --skip-existing - hatch build -t sdist - twine upload ./dist/*.tar.gz --skip-existing - + test: + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest", "macOS-latest", "windows-latest"] + + runs-on: ${{ matrix.os }} + name: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: "3.7" + + - name: Install Dependencies + run: | + python -m pip install --upgrade pip pytest + + - name: Install UnityPy + run: | + pip install . + + - name: Run tests + run: | + pytest -v -s + + release: + needs: [test] + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest", "macOS-latest", "windows-latest"] + cp: ["cp37", "cp38", "cp39", "cp310"] + + timeout-minutes: 30 + + runs-on: ${{ matrix.os }} + name: ${{ matrix.os }} - ${{ matrix.cp }} + + steps: + - uses: actions/checkout@v2 + + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: "3.10" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip wheel setuptools hatch + pip install --upgrade twine + + - name: Set up QEMU + if: runner.os == 'Linux' + uses: docker/setup-qemu-action@v1 + with: + platforms: all + + - name: Build wheels + uses: pypa/cibuildwheel@v2.3.1 + env: + CIBW_ARCHS_LINUX: auto aarch64 + CIBW_BUILD: | + ${{ matrix.cp }}-manylinux_x86_64 ${{ matrix.cp }}-manylinux_i686 ${{ matrix.cp }}-manylinux_aarch64 ${{ matrix.cp }}-win_amd64 ${{ matrix.cp }}-win32 ${{ matrix.cp }}-macosx_x86_64 + CIBW_REPAIR_WHEEL_COMMAND: "" # Disable auditwheel + CIBW_TEST_REQUIRES: pytest + CIBW_TEST_COMMAND: pytest -v -s {package}/tests + + - name: Publish to PyPI + if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' && github.ref == 'refs/heads/master' + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} + run: | + twine upload ./wheelhouse/*.whl --skip-existing + hatch build -t sdist + twine upload ./dist/*.tar.gz --skip-existing diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index d4701e7d..193c27f4 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.15" +__version__ = "1.9.16" from .environment import Environment diff --git a/UnityPy/export/AudioClipConverter.py b/UnityPy/export/AudioClipConverter.py index 506d4a50..16d2a02d 100644 --- a/UnityPy/export/AudioClipConverter.py +++ b/UnityPy/export/AudioClipConverter.py @@ -1,15 +1,19 @@ -from ctypes import * -from enum import Enum +import ctypes import os import platform from UnityPy.streams import EndianBinaryWriter -_dll = None +# pyfmodex loads the dll/so/dylib on import +# so we have to adjust the environment vars +# before importing it +# This is done in import_pyfmodex() +# which will replace the global pyfmodex var +pyfmodex = None -def load_fmod_library(): - global _dll - if _dll is not None: +def import_pyfmodex(): + global pyfmodex + if pyfmodex is not None: return ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) @@ -34,69 +38,84 @@ def load_fmod_library(): arch = "armhf" if machine.endswith("l") else "arm" elif arch == "64bit": # Raise an exception for now; Once it gets supported by FMOD we can just modify the code here - _dll = False - raise NotImplementedError("ARM64 not supported by FMOD.\nUse a 32bit python version.") + pyfmodex = False + raise NotImplementedError( + "ARM64 not supported by FMOD.\nUse a 32bit python version." + ) elif arch == "32bit": arch = "x86" elif arch == "64bit": arch = "x86_64" else: - _dll = False - raise NotImplementedError("Couldn't find a correct FMOD library for your system ({system} - {arch}).") - try: - # build path and load library - LIB_PATH = os.path.join(ROOT, "lib", "FMOD", system, arch) - if system == 'Windows': - _dll = WinDLL(os.path.join(LIB_PATH, "fmod.dll")) - elif system in ["Linux", "Android"]: - _dll = CDLL(os.path.join(LIB_PATH, "libfmod.so")) - elif system == "Darwin": - _dll = CDLL(os.path.join(LIB_PATH, "libfmod.dylib")) - except Exception as e: - raise ImportError( - f"Failed to import the fmod library - Exception: {e}.\ - If you want to export AudioClips, you have to set UnityPy.export.AudioClipConverter._dll yourself." + pyfmodex = False + raise NotImplementedError( + "Couldn't find a correct FMOD library for your system ({system} - {arch})." ) + # build path and load library + LIB_PATH = os.path.join(ROOT, "lib", "FMOD", system, arch) + + # prepare the environment for pyfmodex + if system == "Windows": + # register fmod.dll, so that windll.fmod in pyfmodex can find it + ctypes.WinDLL(os.path.join(LIB_PATH, "fmod.dll")) + import pyfmodex + else: + # It's a bit more complicated on Linux and Mac + # as CDLL doesn't cache the loaded libraries. + # So our only option is to hook into the ctypes loader + # and add the path to the library there. + CDLL = ctypes.CDLL + + def cdll_hook(name, *args, **kwargs): + if name.startswith("libfmod"): + name = os.path.join(LIB_PATH, name) + return CDLL(name, *args, **kwargs) + + ctypes.CDLL = cdll_hook + import pyfmodex + + ctypes.CDLL = CDLL + def extract_audioclip_samples(audio) -> dict: """extracts all the samples from an AudioClip - :param audio: AudioClip - :type audio: AudioClip - :return: {filename : sample(bytes)} - :rtype: dict + :param audio: AudioClip + :type audio: AudioClip + :return: {filename : sample(bytes)} + :rtype: dict """ if not audio.m_AudioData: # eg. StreamedResource not available return {} magic = memoryview(audio.m_AudioData)[:4] - if magic == b'OggS': - return {'%s.ogg' % audio.name: audio.m_AudioData} - elif magic == b'RIFF': - return {'%s.wav' % audio.name: audio.m_AudioData} + if magic == b"OggS": + return {"%s.ogg" % audio.name: audio.m_AudioData} + elif magic == b"RIFF": + return {"%s.wav" % audio.name: audio.m_AudioData} return dump_samples(audio) def dump_samples(clip): - if _dll is None: - load_fmod_library() - if not _dll: + if pyfmodex is None: + import_pyfmodex() + if not pyfmodex: return {} # init system - # system = pyfmodex.System() - sys_ptr = c_void_p() - ckresult(_dll.FMOD_System_Create(byref(sys_ptr))) - # system.init(1, INIT_FLAGS.NORMAL, None) - ckresult(_dll.FMOD_System_Init(sys_ptr, clip.m_Channels, None, None)) + system = pyfmodex.System() + system.init(clip.m_Channels, pyfmodex.flags.INIT_FLAGS.NORMAL, None) + + sound = system.create_sound( + bytes(clip.m_AudioData), + pyfmodex.flags.MODE.OPENMEMORY, + exinfo=pyfmodex.system.CREATESOUNDEXINFO( + length=clip.m_Size, + numchannels=clip.m_Channels, + defaultfrequency=clip.m_Frequency, + ), + ) - # get sound - exinfo = byref(CREATESOUNDEXINFO(length=clip.m_Size)) - # sound = system.create_sound(bytes(clip.m_AudioData),mode=MODE.OPENMEMORY,exinfo=exinfo) - snd_ptr = c_void_p() - ckresult(_dll.FMOD_System_CreateSound(sys_ptr, bytes( - clip.m_AudioData), 0x00000800, exinfo, byref(snd_ptr))) - sound = Sound(snd_ptr) # iterate over subsounds samples = {} for i in range(sound.num_subsounds): @@ -109,8 +128,7 @@ def dump_samples(clip): subsound.release() sound.release() - # system.release() - ckresult(_dll.FMOD_System_Release(sys_ptr)) + system.release() return samples @@ -142,186 +160,7 @@ def subsound_to_wav(subsound): # data lock = subsound.lock(0, length) for ptr, length in lock: - ptr_data = string_at(ptr, length.value) + ptr_data = ctypes.string_at(ptr, length.value) w.write(ptr_data) subsound.unlock(*lock) return w.bytes - - -# following code is copied from -# https://github.com/tyrylu/pyfmodex -# pyfmodex can't be used by itself -# because it would require adding the libs to the path first - -class CREATESOUNDEXINFO(Structure): - _fields_ = [("cbsize", c_int), ("length", c_uint)] - - def __init__(self, *args, **kwargs): - Structure.__init__(self, *args, **kwargs) - self.cbsize = sizeof(self) - - -class so: - def __init__(self, **kwargs): - self.__dict__.update(**kwargs) - - -class Sound(object): - def __init__(self, ptr): - """Constructor. - :param ptr: The pointer representing this object. - """ - self._ptr = ptr - - def _call_fmod(self, funcname, *args): - result = getattr(_dll, funcname)(self._ptr, *args) - ckresult(result) - - @property - def num_subsounds(self): - num = c_int() - self._call_fmod("FMOD_Sound_GetNumSubSounds", byref(num)) - return num.value - - def get_subsound(self, index): - sh_ptr = c_void_p() - self._call_fmod("FMOD_Sound_GetSubSound", index, byref(sh_ptr)) - return Sound(sh_ptr) - - def get_length(self, ltype): - len = c_uint() - self._call_fmod("FMOD_Sound_GetLength", byref(len), int(ltype)) - return len.value - - @property - def format(self): - type = c_int() - format = c_int() - channels = c_int() - bits = c_int() - self._call_fmod("FMOD_Sound_GetFormat", byref(type), - byref(format), byref(channels), byref(bits)) - return so(type=type.value, format=format.value, channels=channels.value, bits=bits.value) - - @property - def default_frequency(self): - freq = c_float() - pri = c_int() - self._call_fmod("FMOD_Sound_GetDefaults", byref(freq), byref(pri)) - return freq.value - - def lock(self, offset, length): - ptr1 = c_void_p() - len1 = c_uint() - ptr2 = c_void_p() - len2 = c_uint() - ckresult(_dll.FMOD_Sound_Lock(self._ptr, offset, length, - byref(ptr1), byref(ptr2), byref(len1), byref(len2))) - return (ptr1, len1), (ptr2, len2) - - def release(self): - self._call_fmod("FMOD_Sound_Release") - - def unlock(self, i1, i2): - """I1 and I2 are tuples of form (ptr, len).""" - ckresult(_dll.FMOD_Sound_Unlock(self._ptr, i1[0], i2[0], i1[1], i2[1])) - - -def ckresult(result): - result = RESULT(result) - if result is not RESULT.OK: - raise FmodError(result) - - -class FmodError(Exception): - def __init__(self, result): - self.result = result - self.message = result.name.replace("_", " ") - - def __str__(self): - return self.message - - -class RESULT(Enum): - OK = 0 - BADCOMMAND = 1 - CHANNEL_ALLOC = 2 - CHANNEL_STOLEN = 3 - DMA = 4 - DSP_CONNECTION = 5 - DSP_DONTPROCESS = 6 - DSP_FORMAT = 7 - DSP_INUSE = 8 - DSP_NOTFOUND = 9 - DSP_RESERVED = 10 - DSP_SILENCE = 11 - DSP_TYPE = 12 - FILE_BAD = 13 - FILE_COULDNOTSEEK = 14 - FILE_DISKEJECTED = 15 - FILE_EOF = 16 - FILE_ENDOFDATA = 17 - FILE_NOTFOUND = 18 - FORMAT = 19 - HEADER_MISMATCH = 20 - HTTP = 21 - HTTP_ACCESS = 22 - HTTP_PROXY_AUTH = 23 - HTTP_SERVER_ERROR = 24 - HTTP_TIMEOUT = 25 - INITIALIZATION = 26 - INITIALIZED = 27 - INTERNAL = 28 - INVALID_FLOAT = 29 - INVALID_HANDLE = 30 - INVALID_PARAM = 31 - INVALID_POSITION = 32 - INVALID_SPEAKER = 33 - INVALID_SYNCPOINT = 34 - INVALID_THREAD = 35 - INVALID_VECTOR = 36 - MAXAUDIBLE = 37 - MEMORY = 38 - MEMORY_CANTPOINT = 39 - NEEDS3D = 40 - NEEDSHARDWARE = 41 - NET_CONNECT = 42 - NET_SOCKET_ERROR = 43 - NET_URL = 44 - NET_WOULD_BLOCK = 45 - NOTREADY = 46 - OUTPUT_ALLOCATED = 47 - OUTPUT_CREATEBUFFER = 48 - OUTPUT_DRIVERCALL = 49 - OUTPUT_FORMAT = 50 - OUTPUT_INIT = 51 - OUTPUT_NODRIVERS = 52 - PLUGIN = 53 - PLUGIN_MISSING = 54 - PLUGIN_RESOURCE = 55 - PLUGIN_VERSION = 56 - RECORD = 57 - REVERB_CHANNELGROUP = 58 - REVERB_INSTANCE = 59 - SUBSOUNDS = 60 - SUBSOUND_ALLOCATED = 61 - SUBSOUND_CANTMOVE = 62 - TAGNOTFOUND = 63 - TOOMANYCHANNELS = 64 - TRUNCATED = 65 - UNIMPLEMENTED = 66 - UNINITIALIZED = 67 - UNSUPPORTED = 68 - VERSION = 69 - EVENT_ALREADY_LOADED = 70 - EVENT_LIVEUPDATE_BUSY = 71 - EVENT_LIVEUPDATE_MISMATCH = 72 - EVENT_LIVEUPDATE_TIMEOUT = 73 - EVENT_NOTFOUND = 74 - STUDIO_UNINITIALIZED = 75 - STUDIO_NOT_LOADED = 76 - INVALID_STRING = 77 - ALREADY_LOCKED = 78 - NOT_LOCKED = 79 - RECORD_DISCONNECTED = 80 - TOOMANYSAMPLES = 81 diff --git a/pyproject.toml b/pyproject.toml index 8b24cd41..97bb649a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,6 +44,8 @@ dependencies = [ "etcpak", # ETC & DXT compression # raw typetree dumping "tabulate", + # audio extraction + "pyfmodex", ] dynamic = ["version"] diff --git a/tests/test_main.py b/tests/test_main.py index 129061ba..0702c854 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,4 +1,5 @@ import os + import UnityPy from PIL import Image @@ -22,7 +23,7 @@ def test_texture2d(): for f in os.listdir(SAMPLES): env = UnityPy.load(os.path.join(SAMPLES, f)) for obj in env.objects: - if obj.type == "Texture2D": + if obj.type.name == "Texture2D": data = obj.read() data.image.save("test.png") data.image = data.image.transpose(Image.ROTATE_90) @@ -33,14 +34,28 @@ def test_sprite(): for f in os.listdir(SAMPLES): env = UnityPy.load(os.path.join(SAMPLES, f)) for obj in env.objects: - if obj.type == "Sprite": + if obj.type.name == "Sprite": obj.read().image.save("test.png") def test_audioclip(): + # as not platforms are supported by FMOD + # we have to check if the platform is supported first + try: + UnityPy.export.AudioClipConverter.import_pyfmodex() + except NotImplementedError: + return + except OSError: + # cibuildwheel doesn't copy the .so files + # so we have to skip the test on it + print("Failed to load the fmod lib for your system.") + print("Skipping the audioclip test.") + return + if UnityPy.export.AudioClipConverter.pyfmodex is False: + return env = UnityPy.load(os.path.join(SAMPLES, "char_118_yuki.ab")) for obj in env.objects: - if obj.type == "AudioClip": + if obj.type.name == "AudioClip": clip = obj.read() assert len(clip.samples) == 1 @@ -50,7 +65,7 @@ def test_mesh(): with open(os.path.join(SAMPLES, "xinzexi_2_n_tex_mesh"), "rb") as f: wanted = f.read().replace(b"\r", b"") for obj in env.objects: - if obj.type == "Mesh": + if obj.type.name == "Mesh": mesh = obj.read() data = mesh.export() if isinstance(data, str): From 15f7d19b0f23ffaca68021cd076756eff73d4d26 Mon Sep 17 00:00:00 2001 From: "Clarence \"Sparr\" Risher" Date: Tue, 18 Oct 2022 16:32:41 -0400 Subject: [PATCH 160/599] Disambiguate path_id collision using obj type. Change extract/export return type. (#140) * Disambiguate path_id collision using obj type * Pass asset_filter from extract_assets to export_obj (#139) * Handle exportMonoBehavior for Object without serialized type or nodes (#138) * Use obj.assets_file instead of .type to disambiguate .path_id --- UnityPy/tools/extractor.py | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/UnityPy/tools/extractor.py b/UnityPy/tools/extractor.py index 02ae901f..dbb7bafb 100644 --- a/UnityPy/tools/extractor.py +++ b/UnityPy/tools/extractor.py @@ -131,7 +131,7 @@ def defaulted_export_index(type: ClassIDType): for obj in objects: if asset_filter is not None and not asset_filter(obj): continue - if obj.path_id not in exported: + if (obj.assets_file, obj.path_id) not in exported: exported.extend( export_obj( obj, @@ -156,7 +156,7 @@ def exportTextAsset(obj: TextAsset, fp: str, extension: str = ".txt") -> List[in extension = ".txt" with open(f"{fp}{extension}", "wb") as f: f.write(obj.script) - return [obj.path_id] + return [(obj.assets_file, obj.path_id)] def exportFont(obj: Font, fp: str, extension: str = "") -> List[int]: @@ -167,7 +167,7 @@ def exportFont(obj: Font, fp: str, extension: str = "") -> List[int]: extension = ".otf" with open(f"{fp}{extension}", "wb") as f: f.write(obj.m_FontData) - return [obj.path_id] + return [(obj.assets_file, obj.path_id)] def exportMesh(obj: Mesh, fp: str, extension=".obj") -> List[int]: @@ -175,7 +175,7 @@ def exportMesh(obj: Mesh, fp: str, extension=".obj") -> List[int]: extension = ".obj" with open(f"{fp}{extension}", "wt", encoding="utf8", newline="") as f: f.write(obj.export()) - return [obj.path_id] + return [(obj.assets_file, obj.path_id)] def exporShader(obj: Shader, fp: str, extension=".txt") -> List[int]: @@ -183,7 +183,7 @@ def exporShader(obj: Shader, fp: str, extension=".txt") -> List[int]: extension = ".txt" with open(f"{fp}{extension}", "wt", encoding="utf8", newline="") as f: f.write(obj.export()) - return [obj.path_id] + return [(obj.assets_file, obj.path_id)] def exportMonoBehaviour( @@ -224,7 +224,7 @@ def exportMonoBehaviour( export = obj.raw_data with open(f"{fp}{extension}", "wb") as f: f.write(export) - return [obj.path_id] + return [(obj.assets_file, obj.path_id)] def exportAudioClip(obj: AudioClip, fp: str, extension: str = "") -> List[int]: @@ -239,18 +239,22 @@ def exportAudioClip(obj: AudioClip, fp: str, extension: str = "") -> List[int]: for name, clip_data in samples.items(): with open(os.path.join(fp, f"{name}.wav"), "wb") as f: f.write(clip_data) - return [obj.path_id] + return [(obj.assets_file, obj.path_id)] def exportSprite(obj: Sprite, fp: str, extension: str = ".png") -> List[int]: if not extension: extension = ".png" obj.image.save(f"{fp}{extension}") - return [ - obj.path_id, - obj.m_RD.texture.path_id, - getattr(obj.m_RD.alphaTexture, "path_id", None), + exported = [ + (obj.assets_file, obj.path_id), + (obj.m_RD.texture.assets_file, obj.m_RD.texture.path_id), ] + alpha_assets_file = getattr(obj.m_RD.alphaTexture, "assets_file", None) + alpha_path_id = getattr(obj.m_RD.alphaTexture, "path_id", None) + if alpha_path_id and alpha_assets_file: + exported.append((alpha_assets_file, alpha_path_id)) + return exported def exportTexture2D(obj: Texture2D, fp: str, extension: str = ".png") -> List[int]: @@ -259,11 +263,11 @@ def exportTexture2D(obj: Texture2D, fp: str, extension: str = ".png") -> List[in if obj.m_Width: # textures can be empty obj.image.save(f"{fp}{extension}") - return [obj.path_id] + return [(obj.assets_file, obj.path_id)] def exportGameObject(obj: GameObject, fp: str, extension: str = "") -> List[int]: - exported = [obj.path_id] + exported = [(obj.assets_file, obj.path_id)] refs = crawl_obj(obj) if refs: os.makedirs(fp, exist_ok=True) @@ -271,7 +275,7 @@ def exportGameObject(obj: GameObject, fp: str, extension: str = "") -> List[int] # Don't export already exported objects a second time # and prevent circular calls by excluding other GameObjects. # The other GameObjects were already exported in the this call. - if ref_id in exported or ref_id.type == ClassIDType.GameObject: + if (ref.assets_file, ref_id) in exported or ref.type == ClassIDType.GameObject: continue try: exported.extend(export_obj(ref, fp, True, True)) From d5bce1caab0311b00f094d1a377145dbe5db161b Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 20 Oct 2022 13:38:31 +0200 Subject: [PATCH 161/599] 1.9.17 - fix reftype parsing for Versions 22+(#146) --- UnityPy/__init__.py | 2 +- UnityPy/files/SerializedFile.py | 23 +++++++++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 193c27f4..c299c24f 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.16" +__version__ = "1.9.17" from .environment import Environment diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index d9a53482..fe809169 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -105,7 +105,7 @@ class SerializedType: script_id: bytes # Hash128 old_type_hash: bytes # Hash128} - def __init__(self, reader, serialized_file): + def __init__(self, reader, serialized_file, is_ref_type: bool): version = serialized_file.header.version self.class_id = reader.read_int() @@ -116,11 +116,13 @@ def __init__(self, reader, serialized_file): self.script_type_index = reader.read_short() if version >= 13: - if (version < 16 and self.class_id < 0) or ( - version >= 16 and self.class_id == 114 + if ( + (is_ref_type and self.script_type_index >= 0) + or (version < 16 and self.class_id < 0) + or (version >= 16 and self.class_id == 114) ): - self.script_id = reader.read_bytes(16) # Hash128 - self.old_type_hash = reader.read_bytes(16) # Hash128 + self.script_id = reader.read_bytes(16) + self.old_type_hash = reader.read_bytes(16) if serialized_file._enable_type_tree: if version >= 12 or version == 10: @@ -129,7 +131,12 @@ def __init__(self, reader, serialized_file): self.nodes = serialized_file.read_type_tree() if version >= 21: - self.type_dependencies = reader.read_int_array() + if is_ref_type: + self.m_ClassName = reader.read_string_to_null() + self.m_NameSpace = reader.read_string_to_null() + self.m_AsmName = reader.read_string_to_null() + else: + self.type_dependencies = reader.read_int_array() def write(self, serialized_file, writer): version = serialized_file.header.version @@ -235,7 +242,7 @@ def __init__(self, reader: EndianBinaryReader, parent=None, name=None): # ReadTypes type_count = reader.read_int() - self.types = [SerializedType(reader, self) for _ in range(type_count)] + self.types = [SerializedType(reader, self, False) for _ in range(type_count)] if config.SERIALIZED_FILE_PARSE_TYPETREE is False: self._enable_type_tree = False @@ -267,7 +274,7 @@ def __init__(self, reader: EndianBinaryReader, parent=None, name=None): if header.version >= 20: ref_type_count = reader.read_int() self.ref_types = [ - SerializedType(reader, self) for _ in range(ref_type_count) + SerializedType(reader, self, True) for _ in range(ref_type_count) ] if header.version >= 5: From 9360ef6ed25df9b9b47dc78fadc660bf097cf5ba Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 20 Oct 2022 13:39:18 +0200 Subject: [PATCH 162/599] bool m_IsArray -> int/uint8 m_TypeFlags (#144) --- UnityPy/files/SerializedFile.py | 20 ++++++++++---------- UnityPy/helpers/TypeTreeHelper.py | 4 ++-- UnityPyBoost/TypeTreeHelper.c | 10 +++++----- UnityPyBoost/TypeTreeHelper.h | 2 +- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index fe809169..5479afec 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -326,12 +326,12 @@ def read_type_tree(self): level_stack[-1][1] -= 1 type_tree_node = TypeTreeNode( - m_Level = level, - m_Type = self.reader.read_string_to_null(), - m_Name = self.reader.read_string_to_null(), - m_ByteSize = self.reader.read_int() + m_Level=level, + m_Type=self.reader.read_string_to_null(), + m_Name=self.reader.read_string_to_null(), + m_ByteSize=self.reader.read_int(), ) - + type_tree.append(type_tree_node) if self.header.version == 2: type_tree_node.m_VariableCount = self.reader.read_int() @@ -339,7 +339,7 @@ def read_type_tree(self): if self.header.version != 3: type_tree_node.m_Index = self.reader.read_int() - type_tree_node.m_IsArray = bool(self.reader.read_int()) + type_tree_node.m_TypeFlags = self.reader.read_int() type_tree_node.m_Version = self.reader.read_int() if self.header.version != 3: type_tree_node.m_MetaFlag = self.reader.read_int() @@ -354,11 +354,11 @@ def read_type_tree_blob(self): number_of_nodes = self.reader.read_int() string_buffer_size = self.reader.read_int() - type = f"{reader.endian}hb?IIiii" + type = f"{reader.endian}hBBIIiii" keys = [ "m_Version", "m_Level", - "m_IsArray", + "m_TypeFlags", "m_TypeStrOffset", "m_NameStrOffset", "m_ByteSize", @@ -560,7 +560,7 @@ def save_type_tree(self, nodes: list, writer: EndianBinaryWriter): if self.header.version != 3: writer.write_int(node.m_Index) - writer.write_int(node.m_IsArray) + writer.write_int(node.m_TypeFlags) writer.write_int(node.m_Version) if self.header.version != 3: writer.write_int(node.m_MetaFlag) @@ -598,7 +598,7 @@ def save_type_tree5(self, nodes: list, writer: EndianBinaryWriter, str_data=b"") # level writer.write_byte(node.m_Level) # is array - writer.write_boolean(node.m_IsArray) + writer.write_u_byte(node.m_TypeFlags) # type str offfset writer.write_u_int(strings_values[i][0]) # name str offset diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index e36ec51d..9fa88e8d 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -11,7 +11,7 @@ class TypeTreeNode(object): __slots__ = ( "m_Version", "m_Level", - "m_IsArray", + "m_TypeFlags", "m_ByteSize", "m_Index", "m_MetaFlag", @@ -32,7 +32,7 @@ class TypeTreeNode(object): m_TypeStrOffset: int m_NameStrOffset: int m_RefTypeHash: str - m_IsArray: int + m_TypeFlags: int m_VariableCount: int def __init__(self, data: Union[dict, Iterable[Tuple]] = None, **kwargs): diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c index b3068c6d..9975d15e 100644 --- a/UnityPyBoost/TypeTreeHelper.c +++ b/UnityPyBoost/TypeTreeHelper.c @@ -613,7 +613,7 @@ TypeTreeNode_new(PyTypeObject *type, PyObject *args, PyObject *kwds) { self->m_Version = 0; self->m_Level = 0; - self->m_IsArray = 0; + self->m_TypeFlags = 0; self->m_ByteSize = 0; self->m_Index = 0; self->m_MetaFlag = 0; @@ -640,7 +640,7 @@ TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject *kwds) "m_Level", // uint8 "m_MetaFlag", // int32 "m_Version", // int16 - "m_IsArray", // char + "m_TypeFlags", // int32 "m_ByteSize", // int "m_Index", // int "m_TypeStrOffset", // unsigned int @@ -653,14 +653,14 @@ TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject *kwds) if (!PyArg_ParseTupleAndKeywords( args, kwds, - "|zzbihbiiIIKi", + "|zzbihiiiIIKi", kwlist, &name, &type, &self->m_Level, &self->m_MetaFlag, &self->m_Version, - &self->m_IsArray, + &self->m_TypeFlags, &self->m_ByteSize, &self->m_Index, &self->m_TypeStrOffset, @@ -732,7 +732,7 @@ static PyMemberDef TypeTreeNode_members[] = { //{"m_Name", T_STRING, offsetof(TypeTreeNodeObject, m_Name), 0, ""}, {"m_ByteSize", T_INT, offsetof(TypeTreeNodeObject, m_ByteSize), 0, ""}, {"m_Index", T_INT, offsetof(TypeTreeNodeObject, m_Index), 0, ""}, - {"m_IsArray", T_BOOL, offsetof(TypeTreeNodeObject, m_IsArray), 0, ""}, + {"m_TypeFlags", T_INT, offsetof(TypeTreeNodeObject, m_TypeFlags), 0, ""}, {"m_Version", T_SHORT, offsetof(TypeTreeNodeObject, m_Version), 0, ""}, {"m_MetaFlag", T_INT, offsetof(TypeTreeNodeObject, m_MetaFlag), 0, ""}, {"m_Level", T_UBYTE, offsetof(TypeTreeNodeObject, m_Level), 0, ""}, diff --git a/UnityPyBoost/TypeTreeHelper.h b/UnityPyBoost/TypeTreeHelper.h index 2fe69653..8de8fea6 100644 --- a/UnityPyBoost/TypeTreeHelper.h +++ b/UnityPyBoost/TypeTreeHelper.h @@ -7,7 +7,7 @@ typedef struct TypeTreeNodeObject{ PyObject_HEAD short m_Version; unsigned char m_Level; - char m_IsArray; + int m_TypeFlags; int m_ByteSize; int m_Index; int m_MetaFlag; From a9571fa99629f78518022a0fc8fe29b088e2361b Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 20 Oct 2022 13:39:57 +0200 Subject: [PATCH 163/599] bump version to 1.9.18 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index c299c24f..1098f936 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.17" +__version__ = "1.9.18" from .environment import Environment From b9d57395b6271831a56a664d4de00f9584bae69f Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 20 Oct 2022 20:39:01 +0200 Subject: [PATCH 164/599] 1.9.19 update SerializedType & SerializedFile writers (#147) * update SerializedType writing/saving * add test_save * bump version to 1.9.19 * add file type check for test_save * format test --- UnityPy/__init__.py | 2 +- UnityPy/files/SerializedFile.py | 27 +++++++++++++++++++-------- tests/test_main.py | 13 +++++++++++++ 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 1098f936..ae65db43 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.18" +__version__ = "1.9.19" from .environment import Environment diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 5479afec..a4de6e3f 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -134,11 +134,11 @@ def __init__(self, reader, serialized_file, is_ref_type: bool): if is_ref_type: self.m_ClassName = reader.read_string_to_null() self.m_NameSpace = reader.read_string_to_null() - self.m_AsmName = reader.read_string_to_null() + self.m_AssemblyName = reader.read_string_to_null() else: self.type_dependencies = reader.read_int_array() - def write(self, serialized_file, writer): + def write(self, serialized_file, writer, is_ref_type): version = serialized_file.header.version writer.write_int(self.class_id) @@ -149,8 +149,10 @@ def write(self, serialized_file, writer): writer.write_short(self.script_type_index) if version >= 13: - if (version < 16 and self.class_id < 0) or ( - version >= 16 and self.class_id == 114 + if ( + (is_ref_type and self.script_type_index >= 0) + or (version < 16 and self.class_id < 0) + or (version >= 16 and self.class_id == 114) ): writer.write_bytes(self.script_id) # Hash128 writer.write_bytes(self.old_type_hash) # Hash128 @@ -161,6 +163,14 @@ def write(self, serialized_file, writer): else: serialized_file.save_type_tree(self.nodes, writer) + if version >= 21: + if is_ref_type: + writer.write_string_to_null(self.m_ClassName) + writer.write_string_to_null(self.m_NameSpace) + writer.write_string_to_null(self.m_AssemblyName) + else: + writer.write_int_array(self.type_dependencies) + class SerializedFile(File.File): reader: EndianBinaryReader @@ -243,8 +253,6 @@ def __init__(self, reader: EndianBinaryReader, parent=None, name=None): # ReadTypes type_count = reader.read_int() self.types = [SerializedType(reader, self, False) for _ in range(type_count)] - if config.SERIALIZED_FILE_PARSE_TYPETREE is False: - self._enable_type_tree = False self.big_id_enabled = 0 if 7 <= header.version < 14: @@ -277,6 +285,9 @@ def __init__(self, reader: EndianBinaryReader, parent=None, name=None): SerializedType(reader, self, True) for _ in range(ref_type_count) ] + if config.SERIALIZED_FILE_PARSE_TYPETREE is False: + self._enable_type_tree = False + if header.version >= 5: self.userInformation = reader.read_string_to_null() @@ -439,7 +450,7 @@ def save(self, packer: str = None) -> bytes: # ReadTypes meta_writer.write_int(len(self.types)) for typ in self.types: - typ.write(self, meta_writer) + typ.write(self, meta_writer, False) if 7 <= header.version < 14: meta_writer.write_int(self.big_id_enabled) @@ -464,7 +475,7 @@ def save(self, packer: str = None) -> bytes: if header.version >= 20: meta_writer.write_int(len(self.ref_types)) for ref_type in self.ref_types: - ref_type.write(self, meta_writer) + ref_type.write(self, meta_writer, True) if header.version >= 5: meta_writer.write_string_to_null(self.userInformation) diff --git a/tests/test_main.py b/tests/test_main.py index 0702c854..ec8cbea9 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -79,6 +79,19 @@ def test_read_typetree(): obj.read_typetree() +def test_save(): + env = UnityPy.load(SAMPLES) + # TODO - check against original + # this only makes sure + # that the save function still produces a readable file + for name, file in env.files.items(): + if isinstance(file, UnityPy.streams.EndianBinaryReader): + continue + save1 = file.save() + save2 = UnityPy.load(save1).file.save() + assert save1 == save2 + + if __name__ == "__main__": for x in list(locals()): if str(x)[:4] == "test": From 43dddeddd730dfcc1938df722ae82fd5373981ad Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 29 Oct 2022 21:28:30 +0200 Subject: [PATCH 165/599] TypetreeHelperC - check node list length (#149) --- UnityPy/__init__.py | 2 +- UnityPyBoost/TypeTreeHelper.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index ae65db43..c99cd9cc 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.19" +__version__ = "1.9.20" from .environment import Environment diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c index 9975d15e..0d6de802 100644 --- a/UnityPyBoost/TypeTreeHelper.c +++ b/UnityPyBoost/TypeTreeHelper.c @@ -449,6 +449,12 @@ static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int * } else { + if (*index+1 >= PyList_Size(nodes)) + { + // end of nodes reached, + // so an empty class is returned + return PyDict_New(); + } TypeTreeNodeObject *node2 = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index + 1); if (strcmp(node2->m_Type, "Array") == 0) { From a4b2f066276dcfe10e117e9d58aeda2c7400e886 Mon Sep 17 00:00:00 2001 From: StarHeart Date: Tue, 8 Nov 2022 05:43:56 +0800 Subject: [PATCH 166/599] docs: fix sample code (#152) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1701f113..c4a71e17 100644 --- a/README.md +++ b/README.md @@ -227,7 +227,7 @@ __Export__ ```python for obj in env.objects: if obj.type.name == "Sprite": - data = image.read() + data = obj.read() data.image.save(path) ``` @@ -246,7 +246,7 @@ __Export__ for obj in env.objects: if obj.type.name == "TextAsset": # export asset - data = image.read() + data = obj.read() with open(path, "wb") as f: f.write(bytes(data.script)) # edit asset From 9232cdd57e93f140b2d7431905baff40e05488bc Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 23 Nov 2022 00:01:41 +0100 Subject: [PATCH 167/599] Support Encryption of CN Builds (#157) * implement CN Encryption for BundlePackages * Improve Decrypion and BundleFile handling * Update README.md * Update README.md --- README.md | 95 +++++++++-------- UnityPy/__init__.py | 1 + UnityPy/config.py | 4 +- UnityPy/enums/BundleFile.py | 26 +++++ UnityPy/enums/__init__.py | 1 + UnityPy/files/BundleFile.py | 130 +++++++++++++++-------- UnityPy/files/SerializedFile.py | 2 +- UnityPy/helpers/ArchiveStorageManager.py | 117 ++++++++++++++++++++ UnityPy/helpers/__init__.py | 2 +- 9 files changed, 285 insertions(+), 93 deletions(-) create mode 100644 UnityPy/enums/BundleFile.py create mode 100644 UnityPy/helpers/ArchiveStorageManager.py diff --git a/README.md b/README.md index c4a71e17..0bab5068 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # UnityPy + [![Discord server invite](https://discordapp.com/api/guilds/603359898507673630/embed.png)](https://discord.gg/C6txv7M) [![PyPI supported Python versions](https://img.shields.io/pypi/pyversions/UnityPy.svg)](https://pypi.python.org/pypi/UnityPy) [![Win/Mac/Linux](https://img.shields.io/badge/platform-windows%20%7C%20macos%20%7C%20linux-informational)]() @@ -9,31 +10,29 @@ A Unity asset extractor for Python based on [AssetStudio](https://github.com/Per Next to extraction, it also supports editing Unity assets. So far following obj types can be edited: - - Texture2D - - Sprite(indirectly via linked Texture2D) - - TextAsset - - MonoBehaviour (and all other types that you have the typetree of) + +- Texture2D +- Sprite(indirectly via linked Texture2D) +- TextAsset +- MonoBehaviour (and all other types that you have the typetree of) If you need advice or if you want to talk about (game) data-mining, feel free to join the [UnityPy Discord](https://discord.gg/C6txv7M). - If you're using UnityPy a commercial project, a donation to a charitable cause or a sponsorship of this project is expected. - **As UnityPy is still in active development breaking changes can happen.** Those changes are usually limited to minor versions (x.y) and not to patch versions (x.y.z). So in case that you don't want to actively maintain your project, make sure to make a note of the used UnityPy version in your README or add a check in your code. e.g. + ```python if UnityPy.__version__ != '1.9.6': raise ImportError("Invalid UnityPy version detected. Please use version 1.9.6") ``` - - 1. [Installation](#installation) 2. [Example](#example) 3. [Important Classes](#important-classes) @@ -78,7 +77,6 @@ TypeTreeHelper.read_typetree_c = False The following is a simple example. - ```python import os import UnityPy @@ -130,6 +128,10 @@ and [Important Object Types](#important-object-types) to understand how it works People with slightly advanced python skills should look at [UnityPy/tools/extractor.py](UnityPy/tools/extractor.py) for a more advanced example. It can also be used as a general template or as an importable tool. +### Setting the decryption key for Unity CN's AssetBundle encryption + +The chinese version of Unity has its own inbuild option to encrypt AssetBundles/BundleFiles. As it's a feature of Unity itself, and not a game specific protection, it is included in UnityPy as well. +To enable encryption simply use `UnityPy.set_assetbundle_decrypt_key(key)`, with key being the value that the game that loads the budles passes to `AssetBundle.SetAssetBundleDecryptKey`. ## Important Classes @@ -138,16 +140,16 @@ It can also be used as a general template or as an importable tool. Environment loads and parses the given files. It can be initialized via: -* a file path - apk files can be loaded as well -* a folder path - loads all files in that folder (bad idea for folders with a lot of files) -* a stream - e.g., io.BytesIO, file stream,... -* a bytes object - will be loaded into a stream +- a file path - apk files can be loaded as well +- a folder path - loads all files in that folder (bad idea for folders with a lot of files) +- a stream - e.g., io.BytesIO, file stream,... +- a bytes object - will be loaded into a stream UnityPy can detect if the file is a WebFile, BundleFile, Asset, or APK. -The unpacked assets will be loaded into ``.files``, a dict consisting of ``asset-name : asset``. +The unpacked assets will be loaded into `.files`, a dict consisting of `asset-name : asset`. -All objects of the loaded assets can be easily accessed via ``.objects``, +All objects of the loaded assets can be easily accessed via `.objects`, which itself is a simple recursive iterator. ```python @@ -177,15 +179,15 @@ with open(dst, "wb") as f: Assets are a container that contains multiple objects. One of these objects can be an AssetBundle, which contains a file path for some of the objects in the same asset. -All objects can be found in the ``.objects`` dict - ``{ID : object}``. +All objects can be found in the `.objects` dict - `{ID : object}`. -The objects with a file path can be found in the ``.container`` dict - ``{path : object}``. +The objects with a file path can be found in the `.container` dict - `{path : object}`. ### [Object](UnityPy/files/ObjectReader.py) -Objects contain the *actual* files, e.g., textures, text files, meshes, settings, ... +Objects contain the _actual_ files, e.g., textures, text files, meshes, settings, ... -To acquire the actual data of an object it has to be read first. This happens via the ``.read()`` function. This isn't done automatically to save time because only a small part of the objects are of interest. Serialized objects can be set with raw data using ``.set_raw_data(data)`` or modified with ``.save()`` function, if supported. +To acquire the actual data of an object it has to be read first. This happens via the `.read()` function. This isn't done automatically to save time because only a small part of the objects are of interest. Serialized objects can be set with raw data using `.set_raw_data(data)` or modified with `.save()` function, if supported. ## Important Object Types @@ -193,12 +195,13 @@ All object types can be found in [UnityPy/classes](UnityPy/classes/). ### [Texture2D](UnityPy/classes/Texture2D.py) -* ``.name`` -* ``.image`` converts the texture into a ``PIL.Image`` -* ``.m_Width`` - texture width (int) -* ``.m_Height`` - texture height (int) +- `.name` +- `.image` converts the texture into a `PIL.Image` +- `.m_Width` - texture width (int) +- `.m_Height` - texture height (int) + +**Export** -__Export__ ```python from PIL import Image for obj in env.objects: @@ -218,12 +221,13 @@ for obj in env.objects: Sprites are part of a texture and can have a separate alpha-image as well. Unlike most other extractors (including AssetStudio), UnityPy merges those two images by itself. -* ``.name`` -* ``.image`` - converts the merged texture part into a ``PIL.Image`` -* ``.m_Width`` - sprite width (int) -* ``.m_Height`` - sprite height (int) +- `.name` +- `.image` - converts the merged texture part into a `PIL.Image` +- `.m_Width` - sprite width (int) +- `.m_Height` - sprite height (int) + +**Export** -__Export__ ```python for obj in env.objects: if obj.type.name == "Sprite": @@ -235,13 +239,14 @@ for obj in env.objects: TextAssets are usually normal text files. -* ``.name`` -* ``.script`` - binary data (bytes) -* ``.text`` - script decoded via UTF8 (str) +- `.name` +- `.script` - binary data (bytes) +- `.text` - script decoded via UTF8 (str) + +Some games save binary data as TextFile, so it's usually better to use `.script`. -Some games save binary data as TextFile, so it's usually better to use ``.script``. +**Export** -__Export__ ```python for obj in env.objects: if obj.type.name == "TextAsset": @@ -263,11 +268,12 @@ If a type tree exists, it can be used to read the whole data, but if it doesn't exist, then it is usually necessary to investigate the class that loads the specific MonoBehaviour to extract the data. ([example](examples/CustomMonoBehaviour/get_scriptable_texture.py)) -* ``.name`` -* ``.script`` -* ``.raw_data`` - data after the basic initialisation +- `.name` +- `.script` +- `.raw_data` - data after the basic initialisation + +**Export** -__Export__ ```python import json @@ -300,7 +306,7 @@ for obj in env.objects: ### [AudioClip](UnityPy/classes/AudioClip.py) -* ``.samples`` - ``{sample-name : sample-data}`` +- `.samples` - `{sample-name : sample-data}` The samples are converted into the .wav format. The sample data is a .wav file in bytes. @@ -326,10 +332,9 @@ if obj.type.name == "Font": f.write(font.m_FontData) ``` - ### [Mesh](UnityPy/classes/Mesh.py) -* ``.export()`` - mesh exported as .obj (str) +- `.export()` - mesh exported as .obj (str) The mesh will be converted to the Wavefront .obj file format. @@ -341,9 +346,10 @@ with open(f"{mesh.name}.obj", "wt", newline = "") as f: ``` ### Renderer, MeshRenderer, SkinnedMeshRenderer + ALPHA-VERSION -* ``.export(export_dir)`` - exports the associated mesh, materials, and textures into the given directory +- `.export(export_dir)` - exports the associated mesh, materials, and textures into the given directory The mesh and materials will be in the Wavefront formats. @@ -366,5 +372,6 @@ thanks a lot to all contributors of UnityPy and all of its users. Also, many thanks to: -- [Perfare](https://github.com/Perfare) for creating and maintaining and every contributor of [AssetStudio](https://github.com/Perfare/AssetStudio) -- [ds5678](https://github.com/ds5678) for the [TypeTreeDumps](https://github.com/AssetRipper/TypeTreeDumps) and the [custom minimal Tpk format](https://github.com/AssetRipper/Tpk) +- [Perfare](https://github.com/Perfare) for creating and maintaining and every contributor of [AssetStudio](https://github.com/Perfare/AssetStudio) +- [ds5678](https://github.com/ds5678) for the [TypeTreeDumps](https://github.com/AssetRipper/TypeTreeDumps) and the [custom minimal Tpk format](https://github.com/AssetRipper/Tpk) +- [Razmoth](https://github.com/Razmoth) for figuring out and sharing Unity CN's AssetBundle decryption ([src](https://github.com/Razmoth/PGRStudio)). diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index c99cd9cc..d09d896a 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,6 +1,7 @@ __version__ = "1.9.20" from .environment import Environment +from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key def load(*args): diff --git a/UnityPy/config.py b/UnityPy/config.py index f1481b03..74ae264c 100644 --- a/UnityPy/config.py +++ b/UnityPy/config.py @@ -2,5 +2,7 @@ FALLBACK_UNITY_VERSION = "2.5.0f5" # determines if the typetree structures for the Object types will be parsed # disabling this will reduce the load time by a lot (half of the time is spend on parsing the typetrees) -# but it will also prevent saving an edited file +# but it will also prevent saving an edited file SERIALIZED_FILE_PARSE_TYPETREE = True +# enable for chinese version with AssetBundle encryption +USE_CN_ENCRYPTION = False diff --git a/UnityPy/enums/BundleFile.py b/UnityPy/enums/BundleFile.py new file mode 100644 index 00000000..fec1cf4a --- /dev/null +++ b/UnityPy/enums/BundleFile.py @@ -0,0 +1,26 @@ +from enum import IntFlag + + +class CompressionFlags(IntFlag): + NONE = 0 + LZMA = 1 + LZ4 = 2 + LZ4HC = 3 + LZHAM = 4 + + +class ArchiveFlagsOld(IntFlag): + CompressionTypeMask = 0x3F + BlocksAndDirectoryInfoCombined = 0x40 + BlocksInfoAtTheEnd = 0x80 + OldWebPluginCompatibility = 0x100 + UsesAssetBundleEncryption = 0x200 + + +class ArchiveFlags(IntFlag): + CompressionTypeMask = 0x3F + BlocksAndDirectoryInfoCombined = 0x40 + BlocksInfoAtTheEnd = 0x80 + OldWebPluginCompatibility = 0x100 + BlockInfoNeedPaddingAtStart = 0x200 + UsesAssetBundleEncryption = 0x400 diff --git a/UnityPy/enums/__init__.py b/UnityPy/enums/__init__.py index d919e69a..85706721 100644 --- a/UnityPy/enums/__init__.py +++ b/UnityPy/enums/__init__.py @@ -1,5 +1,6 @@ from .Audio import AudioType, AudioCompressionFormat, AUDIO_TYPE_EXTEMSION from .BuildTarget import BuildTarget +from .BundleFile import ArchiveFlags, ArchiveFlagsOld, CompressionFlags from .ClassIDType import ClassIDType from .FileType import FileType from .TextureFormat import TextureFormat diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index c6ec7989..571706e5 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -1,11 +1,19 @@ +# TODO: implement encryption for saving files +from collections import namedtuple +import re +from typing import Tuple + from . import File -from ..helpers import CompressionHelper +from ..enums import ArchiveFlags, ArchiveFlagsOld, CompressionFlags +from ..helpers import ArchiveStorageManager, CompressionHelper from ..streams import EndianBinaryReader, EndianBinaryWriter -import re -from collections import namedtuple + +from .. import config + BlockInfo = namedtuple("BlockInfo", "uncompressedSize compressedSize flags") DirectoryInfoFS = namedtuple("DirectoryInfoFS", "offset size flags path") +reVersion = re.compile(r"(\d+)\.(\d+)\.(\d+)\w.+") class BundleFile(File.File): @@ -14,6 +22,8 @@ class BundleFile(File.File): signature: str version_engine: str version_player: str + dataflags: Tuple[ArchiveFlags, ArchiveFlagsOld] + decryptor: ArchiveStorageManager.ArchiveStorageDecryptor = None def __init__(self, reader: EndianBinaryReader, parent: File, name: str = None): super().__init__(parent=parent, name=name) @@ -23,13 +33,13 @@ def __init__(self, reader: EndianBinaryReader, parent: File, name: str = None): self.version_engine = reader.read_string_to_null() if signature == "UnityArchive": - raise NotImplemented("BundleFile - UnityArchive") + raise NotImplementedError("BundleFile - UnityArchive") elif signature in ["UnityWeb", "UnityRaw"]: m_DirectoryInfo, blocksReader = self.read_web_raw(reader) elif signature == "UnityFS": m_DirectoryInfo, blocksReader = self.read_fs(reader) else: - raise NotImplemented(f"Unknown Bundle signature: {signature}") + raise NotImplementedError(f"Unknown Bundle signature: {signature}") self.read_files(blocksReader, m_DirectoryInfo) @@ -76,25 +86,44 @@ def read_web_raw(self, reader: EndianBinaryReader): def read_fs(self, reader: EndianBinaryReader): size = reader.read_long() - + # header compressedSize = reader.read_u_int() uncompressedSize = reader.read_u_int() - self._data_flags = reader.read_u_int() + self.dataflags = reader.read_u_int() + + version = tuple(map(int, reVersion.match(self.version_engine).groups())) + # https://issuetracker.unity3d.com/issues/files-within-assetbundles-do-not-start-on-aligned-boundaries-breaking-patching-on-nintendo-switch + # Unity CN introduced encryption before the alignment fix was introduced. + # Unity CN used the same flag for the encryption as later on the alignment fix, + # so we have to check the version to determine the correct flag set. + if ( + version < (2020,) + or (version[0] == 2020 and version < (2020, 3, 34)) + or (version[0] == 2021 and version < (2021, 3, 2)) + or (version[0] == 2022 and version < (2022, 1, 1)) + ): + self.dataflags = ArchiveFlagsOld(self.dataflags) + else: + self.dataflags = ArchiveFlags(self.dataflags) if self.version >= 7: reader.align_stream(16) start = reader.Position - if self._data_flags & 0x80 != 0: # kArchiveBlocksInfoAtTheEnd + if ( + self.dataflags & ArchiveFlags.BlocksInfoAtTheEnd + ): # kArchiveBlocksInfoAtTheEnd reader.Position = reader.Length - compressedSize blocksInfoBytes = reader.read_bytes(compressedSize) reader.Position = start else: # 0x40 kArchiveBlocksAndDirectoryInfoCombined + if self.dataflags & self.dataflags.UsesAssetBundleEncryption: + self.decryptor = ArchiveStorageManager.ArchiveStorageDecryptor(reader) blocksInfoBytes = reader.read_bytes(compressedSize) - blocksInfoBytes = decompress_data( - blocksInfoBytes, uncompressedSize, self._data_flags + blocksInfoBytes = self.decompress_data( + blocksInfoBytes, uncompressedSize, self.dataflags ) blocksInfoReader = EndianBinaryReader(blocksInfoBytes, offset=start) @@ -124,17 +153,21 @@ def read_fs(self, reader: EndianBinaryReader): if m_BlocksInfo: self._block_info_flags = m_BlocksInfo[0].flags - if self._data_flags & 0x200: + if ( + isinstance(self.dataflags, ArchiveFlags) + and self.dataflags & ArchiveFlags.BlockInfoNeedPaddingAtStart + ): reader.align_stream(16) blocksReader = EndianBinaryReader( b"".join( - decompress_data( + self.decompress_data( reader.read_bytes(blockInfo.compressedSize), blockInfo.uncompressedSize, blockInfo.flags, + i, ) - for blockInfo in m_BlocksInfo + for i, blockInfo in enumerate(m_BlocksInfo) ), offset=(blocksInfoReader.real_offset()), ) @@ -166,9 +199,11 @@ def save(self, packer=None): writer.write_string_to_null(self.version_engine) if self.signature == "UnityArchive": - raise NotImplemented("BundleFile - UnityArchive") + raise NotImplementedError("BundleFile - UnityArchive") elif self.signature in ["UnityWeb", "UnityRaw"]: - raise NotImplemented("Saving Unity Web and Raw bundles isn't supported yet") + raise NotImplementedError( + "Saving Unity Web and Raw bundles isn't supported yet" + ) # self.save_web_raw(writer) elif self.signature == "UnityFS": if not packer or packer == "none": @@ -184,7 +219,7 @@ def save(self, packer=None): elif isinstance(packer, tuple): self.save_fs(writer, *packer) else: - raise NotImplemented("UnityFS - Packer:", packer) + raise NotImplementedError("UnityFS - Packer:", packer) return writer.bytes def save_fs(self, writer: EndianBinaryWriter, data_flag: int, block_info_flag: int): @@ -281,7 +316,9 @@ def save_fs(self, writer: EndianBinaryWriter, data_flag: int, block_info_flag: i # file block info if not data_flag & 0x40: - raise NotImplementedError("UnityPy always writes DirectoryInfo, so data_flag must include 0x40") + raise NotImplementedError( + "UnityPy always writes DirectoryInfo, so data_flag must include 0x40" + ) # file count block_writer.write_int(len(files)) offset = 0 @@ -341,38 +378,39 @@ def save_fs(self, writer: EndianBinaryWriter, data_flag: int, block_info_flag: i if data_flag & 0x200: writer.align_stream(16) writer.write(file_data) - + writer_end_pos = writer.Position writer.Position = writer_header_pos # correct file size writer.write_long(writer_end_pos) writer.Position = writer_end_pos - -def decompress_data( - compressed_data: bytes, uncompressed_size: int, flags: int -) -> bytes: - """ - Parameters - ---------- - compressed_data : bytes - The compressed data. - uncompressed_size : int - The uncompressed size of the data. - flags : int - The flags of the data. - - Returns - ------- - bytes - The decompressed data.""" - switch = flags & 0x3F - - if switch == 1: # LZMA - return CompressionHelper.decompress_lzma(compressed_data) - elif switch in [2, 3]: # LZ4, LZ4HC - return CompressionHelper.decompress_lz4(compressed_data, uncompressed_size) - elif switch == 4: # LZHAM - raise NotImplementedError("LZHAM decompression not implemented") - else: - return compressed_data + def decompress_data( + self, compressed_data: bytes, uncompressed_size: int, flags: int, index: int = 0 + ) -> bytes: + """ + Parameters + ---------- + compressed_data : bytes + The compressed data. + uncompressed_size : int + The uncompressed size of the data. + flags : int + The flags of the data. + + Returns + ------- + bytes + The decompressed data.""" + comp_flag = flags & ArchiveFlags.CompressionTypeMask + + if comp_flag == CompressionFlags.LZMA: # LZMA + return CompressionHelper.decompress_lzma(compressed_data) + elif comp_flag in [CompressionFlags.LZ4, CompressionFlags.LZ4HC]: # LZ4, LZ4HC + if flags & 0x100: + compressed_data = self.decryptor.decrypt_block(compressed_data, index) + return CompressionHelper.decompress_lz4(compressed_data, uncompressed_size) + elif comp_flag == CompressionFlags.LZHAM: # LZHAM + raise NotImplementedError("LZHAM decompression not implemented") + else: + return compressed_data diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index a4de6e3f..d7a562ee 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -578,7 +578,7 @@ def save_type_tree(self, nodes: list, writer: EndianBinaryWriter): # calc children count children_count = 0 - for node2 in nodes[i + 1 :]: + for node2 in nodes[i + 1:]: if node2.m_Level == node.m_Level: break if node2.m_Level == node.m_Level - 1: diff --git a/UnityPy/helpers/ArchiveStorageManager.py b/UnityPy/helpers/ArchiveStorageManager.py new file mode 100644 index 00000000..62c1b46e --- /dev/null +++ b/UnityPy/helpers/ArchiveStorageManager.py @@ -0,0 +1,117 @@ +# based on: https://github.com/Razmoth/PGRStudio/blob/master/AssetStudio/PGR/PGR.cs +from typing import Tuple, Union + +from ..streams import EndianBinaryReader + +UNITY3D_SIGNATURE = b"#$unity3dchina!@" +DECRYPT_KEY: bytes = None + + +def set_assetbundle_decrypt_key(key: Union[bytes, str]): + if isinstance(key, str): + key = key.encode("utf-8", "surrogateescape") + if len(key) != 16: + raise ValueError( + f"AssetBundle Key length is wrong. It should be 16 bytes and now is {len(key)} bytes." + ) + global DECRYPT_KEY + DECRYPT_KEY = key + + +def read_vector(reader: EndianBinaryReader) -> Tuple[bytes, bytes]: + data = reader.read_bytes(0x10) + key = reader.read_string_to_null().encode("utf-8", "surrogateescape") + + return data, key + + +def decrypt_key(key: bytes, data: bytes, keybytes: bytes): + from Crypto.Cipher import AES + + key = AES.new(keybytes, AES.MODE_ECB).encrypt(key) + return bytes(x ^ y for x, y in zip(data, key)) + + +def to_uint4_array(source: bytes, offset: int = 0): + buffer = bytearray(len(source) * 2) + for j in range(len(source)): + buffer[j * 2] = source[offset + j] >> 4 + buffer[j * 2 + 1] = source[offset + j] & 15 + return buffer + + +class ArchiveStorageDecryptor: + unknown_1: int + index: bytes + substitute: bytes = bytes(0x10) + + def __init__(self, reader: EndianBinaryReader) -> None: + if DECRYPT_KEY is None: + raise LookupError( + "The BundleFile is encrypted, but no key was provided!\nYou can set the key via UnityPy.set_assetbundle_decrypt_key(key)" + ) + self.unknown_1 = reader.read_u_int() + + # read vector data/key vectors + self.data, self.key = read_vector(reader) + self.data_sig, self.key_sig = read_vector(reader) + + signature = decrypt_key(self.key_sig, self.data_sig, DECRYPT_KEY) + if signature != UNITY3D_SIGNATURE: + raise Exception(f"Invalid signature {signature} != {UNITY3D_SIGNATURE}") + + data = decrypt_key(self.key, self.data, DECRYPT_KEY) + data = to_uint4_array(data) + self.index = data[:0x10] + self.substitute = bytes( + data[0x10 + i * 4 + j] for j in range(4) for i in range(4) + ) + + def decrypt_block(self, data: bytes, index: int): + offset = 0 + size = len(data) + data = bytearray(data) + view = memoryview(data) + while offset < len(data): + offset += self.decrypt(view[offset:], index, size - offset) + index += 1 + return data + + def decrypt_byte(self, view: bytearray, offset: int, index: int): + b = ( + self.substitute[((index >> 2) & 3) + 4] + + self.substitute[index & 3] + + self.substitute[((index >> 4) & 3) + 8] + + self.substitute[(index % 256 >> 6) + 12] + ) + view[offset] = ( + (self.index[view[offset] & 0xF] - b) & 0xF + | 0x10 * (self.index[view[offset] >> 4] - b) + ) % 256 + b = view[offset] + return b, offset + 1, index + 1 + + def decrypt(self, data: bytearray, index: int, remaining: int): + offset = 0 + + curByte, offset, index = self.decrypt_byte(data, offset, index) + byteHigh = curByte >> 4 + byteLow = curByte & 0xF + + if byteHigh == 0xF: + b = 0xFF + while b == 0xFF: + b, offset, index = self.decrypt_byte(data, offset, index) + byteHigh += b + + offset += byteHigh + + if offset < remaining: + _, offset, index = self.decrypt_byte(data, offset, index) + _, offset, index = self.decrypt_byte(data, offset, index) + if byteLow == 0xF: + b = 0xFF + while b == 0xFF: + b, offset, index = self.decrypt_byte(data, offset, index) + + return offset diff --git a/UnityPy/helpers/__init__.py b/UnityPy/helpers/__init__.py index c67ce73f..066f4b96 100644 --- a/UnityPy/helpers/__init__.py +++ b/UnityPy/helpers/__init__.py @@ -1 +1 @@ -from . import CompressionHelper, ImportHelper, TypeTreeHelper +from . import ArchiveStorageManager, CompressionHelper, ImportHelper, TypeTreeHelper \ No newline at end of file From 5a42e3deb557cbcf65eec92486a576e44adb765a Mon Sep 17 00:00:00 2001 From: Wolfgang Kurz Date: Wed, 23 Nov 2022 08:06:13 +0900 Subject: [PATCH 168/599] Support 2021.1 and 2021.3 for Material.py (#154) * Support 2021.1 and 2021.3 for Material.py * Material cleanup * Update Material.py Co-authored-by: Rudolf Kolbe --- UnityPy/classes/Material.py | 56 ++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/UnityPy/classes/Material.py b/UnityPy/classes/Material.py index 5b5d796b..aa57ff49 100644 --- a/UnityPy/classes/Material.py +++ b/UnityPy/classes/Material.py @@ -8,13 +8,18 @@ def __init__(self, reader): version = self.version self.m_Shader = PPtr(reader) # Shader - if version >= (5,): # 5.0 and up + if version >= (2021,3): # 2021.3 and up + self.m_ValidKeywords = reader.read_string_array() + self.m_InvalidKeywords = reader.read_string_array() + elif version >= (5,): # 5.0 and up self.m_ShaderKeywords = reader.read_aligned_string() self.m_LightmapFlags = reader.read_u_int() - elif version >= (4, 1): # 4.x self.m_ShaderKeywords = reader.read_string_array() + if version >= (5,): + self.m_LightmapFlags = reader.read_u_int() + if version >= (5, 6): # 5.6 and up self.m_EnableInstancingVariants = reader.read_boolean() # var m_DoubleSidedGI = a_Stream.read_boolean() //2017 and up @@ -24,12 +29,10 @@ def __init__(self, reader): self.m_CustomRenderQueue = reader.read_int() if version >= (5, 1): # 5.1 and up - stringTagMapSize = reader.read_int() - self.stringTagMap = {} - for _ in range(stringTagMapSize): - first = reader.read_aligned_string() - second = reader.read_aligned_string() - self.stringTagMap[first] = second + self.stringTagMap = { + reader.read_aligned_string(): reader.read_aligned_string() + for _ in range(reader.read_int()) + } if version >= (5, 6): # 5.6 and up self.disabledShaderPasses = reader.read_string_array() @@ -46,20 +49,23 @@ def __init__(self, reader): class UnityPropertySheet: def __init__(self, reader): - m_TexEnvsSize = reader.read_int() - self.m_TexEnvs = {} - for i in range(m_TexEnvsSize): - key = reader.read_aligned_string() - self.m_TexEnvs[key] = UnityTexEnv(reader) - - m_FloatsSize = reader.read_int() - self.m_Floats = {} - for i in range(m_FloatsSize): - key = reader.read_aligned_string() - self.m_Floats[key] = reader.read_float() - - m_ColorsSize = reader.read_int() - self.m_Colors = {} - for i in range(m_ColorsSize): - key = reader.read_aligned_string() - self.m_Colors[key] = reader.read_color4() + self.m_TexEnvs = { + reader.read_aligned_string(): UnityTexEnv(reader) + for _ in range(reader.read_int()) + } + + if reader.version >= (2021,): # 2021.1 and up + self.m_Ints = { + reader.read_aligned_string(): reader.read_int() + for _ in range(reader.read_int()) + } + + self.m_Floats = { + reader.read_aligned_string(): reader.read_float() + for _ in range(reader.read_int()) + } + + self.m_Colors = { + reader.read_aligned_string(): reader.read_color4() + for _ in range(reader.read_int()) + } From b7d9f7793bbc34ae6da23ae326e427e6cd48484c Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 23 Nov 2022 00:09:49 +0100 Subject: [PATCH 169/599] 1.9.21 - version bump --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index d09d896a..2e05c616 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.20" +__version__ = "1.9.21" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key From 0b56a37234b7c99a5ced96c72996c35038bcc276 Mon Sep 17 00:00:00 2001 From: squaresmile Date: Fri, 25 Nov 2022 09:57:44 +0700 Subject: [PATCH 170/599] Switched to setuptools build backend --- .github/workflows/python-package.yml | 6 +-- pyproject.toml | 26 ++-------- setup.py | 73 ++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+), 25 deletions(-) create mode 100644 setup.py diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index e9b18a3a..64f7090d 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -55,8 +55,8 @@ jobs: - name: Install dependencies run: | - python -m pip install --upgrade pip wheel setuptools hatch - pip install --upgrade twine + python -m pip install --upgrade pip wheel setuptools + python -m pip install --upgrade twine build - name: Set up QEMU if: runner.os == 'Linux' @@ -81,5 +81,5 @@ jobs: TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} run: | twine upload ./wheelhouse/*.whl --skip-existing - hatch build -t sdist + python -m build --sdist twine upload ./dist/*.tar.gz --skip-existing diff --git a/pyproject.toml b/pyproject.toml index 97bb649a..aab8463c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [build-system] -requires = ["hatchling"] -build-backend = "hatchling.build" +requires = ["setuptools"] +build-backend = "setuptools.build_meta" [project] name = "UnityPy" @@ -53,23 +53,5 @@ dynamic = ["version"] "Homepage" = "https://github.com/K0lb3/UnityPy" "Bug Tracker" = "https://github.com/K0lb3/UnityPy/issues" -[tool.hatch.version] -# path to the file containing the version number -path = "UnityPy/__init__.py" - -[tool.hatch.build.targets.sdist] -# include all files required to build the package -only-include = ["UnityPy", "UnityPyBoost", "tests", "build_hook.py"] -# exclude prebuild files -exclude = ["UnityPy/UnityPyBoost*"] - -[tool.hatch.build.targets.wheel] -# UnityPyBoost will be compiled by the hook and added to UnityPy -# therefore UnityPyBoost and hook_build aren't needed -only-include = ["UnityPy", "tests"] -# exclude all prebuild files and all FMOD libs -# the fmod lib for the target platform is force included via the hook -exclude = ["UnityPy/lib/FMOD", "UnityPy/UnityPyBoost*"] - -[tool.hatch.build.targets.wheel.hooks.custom] -path = "build_hook.py" +[tool.setuptools.dynamic] +version = { attr = "UnityPy.__version__" } diff --git a/setup.py b/setup.py new file mode 100644 index 00000000..b4adc9d3 --- /dev/null +++ b/setup.py @@ -0,0 +1,73 @@ +import os +import platform +from setuptools import setup, Extension, find_packages + + +INSTALL_DIR = os.path.dirname(os.path.realpath(__file__)) +UNITYPYBOOST_DIR = os.path.join(INSTALL_DIR, "UnityPyBoost") + + +def get_fmod_library(): + # determine system - Windows, Darwin, Linux, Android + system = platform.system() + if system == "Linux" and "ANDROID_BOOTLOGO" in os.environ: + system = "Android" + # determine architecture + machine = platform.machine() + arch = platform.architecture()[0] + + lib_name = "" + if system in ["Windows", "Darwin"]: + lib_name = "fmod.dll" if system == "Windows" else "libfmod.dylib" + if arch == "32bit": + arch = "x86" + elif arch == "64bit": + arch = "x64" + elif system == "Linux": + lib_name = "libfmod.so" + # Raspberry Pi and Linux on arm projects + if "arm" in machine: + if arch == "32bit": + arch = "armhf" if machine.endswith("l") else "arm" + elif arch == "64bit": + return None + elif arch == "32bit": + arch = "x86" + elif arch == "64bit": + arch = "x86_64" + else: + return None + + return f"lib/FMOD/{system}/{arch}/{lib_name}" + + +unitypy_package_data = ["resources/uncompressed.tpk"] +fmod_lib = get_fmod_library() +if fmod_lib is not None: + unitypy_package_data.append(fmod_lib) + + +# These packages are missing __init__.py so setuptools will warn about unspecified packages +extra_packages = [ + "UnityPy.resources", + "UnityPy.tools", + "UnityPy.tools.libil2cpp_helper", +] + + +setup( + packages=find_packages() + extra_packages, + package_data={"UnityPy": unitypy_package_data}, + ext_modules=[ + Extension( + "UnityPy.UnityPyBoost", + [ + f"UnityPyBoost/{f}" + for f in os.listdir(UNITYPYBOOST_DIR) + if f.endswith(".c") + ], + language="c", + include_dirs=[UNITYPYBOOST_DIR], + ) + ], +) From b4b800249f993c0f21c5f843376f806c14deb958 Mon Sep 17 00:00:00 2001 From: squaresmile Date: Fri, 25 Nov 2022 09:58:17 +0700 Subject: [PATCH 171/599] Updated actions --- .github/workflows/python-package.yml | 10 ++-- build_hook.py | 90 ---------------------------- 2 files changed, 5 insertions(+), 95 deletions(-) delete mode 100644 build_hook.py diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 64f7090d..31567cf3 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -13,10 +13,10 @@ jobs: name: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Python - uses: actions/setup-python@v1 + uses: actions/setup-python@v4 with: python-version: "3.7" @@ -46,10 +46,10 @@ jobs: name: ${{ matrix.os }} - ${{ matrix.cp }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Python - uses: actions/setup-python@v1 + uses: actions/setup-python@v4 with: python-version: "3.10" @@ -60,7 +60,7 @@ jobs: - name: Set up QEMU if: runner.os == 'Linux' - uses: docker/setup-qemu-action@v1 + uses: docker/setup-qemu-action@v2 with: platforms: all diff --git a/build_hook.py b/build_hook.py deleted file mode 100644 index 0ca3fe0a..00000000 --- a/build_hook.py +++ /dev/null @@ -1,90 +0,0 @@ -import os - -from hatchling.builders.hooks.plugin.interface import BuildHookInterface - - -class CustomBuildHook(BuildHookInterface): - def initialize(self, version, build_data): - # set infer_tag to True to let hatchling infer the correct platform tag - build_data["infer_tag"] = True - # - - build_data["pure_python"] = False - - # add fmod lib for the target platform - fmod_lib = get_fmod_library() - if fmod_lib: - print(f"Using fmod lib: {fmod_lib}") - build_data["force_include"][fmod_lib] = fmod_lib - else: - print("No fmod lib found for the target platform") - - # compile and add UnityPyBoost - boost_fp = build_UnityPyBoost(self.root) - build_data["force_include"][boost_fp] = boost_fp - - -def build_UnityPyBoost(build_dir: str) -> str: - from distutils.core import setup, Extension - print("Building UnityPyBoost") - UnityPyBoost_dir = os.path.join(build_dir, "UnityPyBoost") - setup( - name="UnityPy", - packages=["UnityPy"], - script_args=["build_ext", "--inplace"], - ext_modules=[ - Extension( - "UnityPy.UnityPyBoost", - [ - f"UnityPyBoost/{f}" - for f in os.listdir(UnityPyBoost_dir) - if f.endswith(".c") - ], - language="c", - include_dirs=[UnityPyBoost_dir], - ) - ], - ) - print("Done building UnityPyBoost") - # return the path to the built UnityPyBoost - lib_ext = ".pyd" if os.name == "nt" else ".so" - for f in os.listdir(os.path.join(build_dir, "UnityPy")): - if f.endswith(lib_ext): - return f"UnityPy/{f}" - else: - raise Exception("Compiled UnityPyBoost was not found") - - -def get_fmod_library() -> str: - import platform - - # determine system - Windows, Darwin, Linux, Android - system = platform.system() - if system == "Linux" and "ANDROID_BOOTLOGO" in os.environ: - system = "Android" - # determine architecture - machine = platform.machine() - arch = platform.architecture()[0] - - lib_name = "" - if system in ["Windows", "Darwin"]: - lib_name = "fmod.dll" if system == "Windows" else "libfmod.dylib" - if arch == "32bit": - arch = "x86" - elif arch == "64bit": - arch = "x64" - elif system == "Linux": - lib_name = "libfmod.so" - # Raspberry Pi and Linux on arm projects - if "arm" in machine: - if arch == "32bit": - arch = "armhf" if machine.endswith("l") else "arm" - elif arch == "64bit": - return None - elif arch == "32bit": - arch = "x86" - elif arch == "64bit": - arch = "x86_64" - else: - return None - - return f"UnityPy/lib/FMOD/{system}/{arch}/{lib_name}" From f1c91364c3381b00b2458bab64b616cf50d9f5c6 Mon Sep 17 00:00:00 2001 From: squaresmile Date: Fri, 25 Nov 2022 09:58:34 +0700 Subject: [PATCH 172/599] Added macos arm64 and universal2 wheels --- .github/workflows/python-package.yml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 31567cf3..b0299bc6 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -37,7 +37,7 @@ jobs: strategy: fail-fast: false matrix: - os: ["ubuntu-latest", "macOS-latest", "windows-latest"] + os: ["ubuntu-20.04", "windows-2019", "macos-11"] cp: ["cp37", "cp38", "cp39", "cp310"] timeout-minutes: 30 @@ -65,14 +65,23 @@ jobs: platforms: all - name: Build wheels - uses: pypa/cibuildwheel@v2.3.1 + uses: pypa/cibuildwheel@v2.11.2 env: CIBW_ARCHS_LINUX: auto aarch64 + CIBW_ARCHS_MACOS: x86_64 arm64 universal2 CIBW_BUILD: | - ${{ matrix.cp }}-manylinux_x86_64 ${{ matrix.cp }}-manylinux_i686 ${{ matrix.cp }}-manylinux_aarch64 ${{ matrix.cp }}-win_amd64 ${{ matrix.cp }}-win32 ${{ matrix.cp }}-macosx_x86_64 + ${{ matrix.cp }}-manylinux_x86_64 + ${{ matrix.cp }}-manylinux_i686 + ${{ matrix.cp }}-manylinux_aarch64 + ${{ matrix.cp }}-win_amd64 + ${{ matrix.cp }}-win32 + ${{ matrix.cp }}-macosx_x86_64 + ${{ matrix.cp }}-macosx_arm64 + ${{ matrix.cp }}-macosx_universal2 CIBW_REPAIR_WHEEL_COMMAND: "" # Disable auditwheel CIBW_TEST_REQUIRES: pytest CIBW_TEST_COMMAND: pytest -v -s {package}/tests + CIBW_TEST_SKIP: "*-macosx_arm64 *-macosx_universal2:arm64" - name: Publish to PyPI if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' && github.ref == 'refs/heads/master' From 61fe57415487967dd86237fddbbcc84d87d5ca13 Mon Sep 17 00:00:00 2001 From: squaresmile Date: Fri, 25 Nov 2022 10:09:06 +0700 Subject: [PATCH 173/599] Added cp311 wheels --- .github/workflows/python-package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index b0299bc6..7f79b8eb 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -38,7 +38,7 @@ jobs: fail-fast: false matrix: os: ["ubuntu-20.04", "windows-2019", "macos-11"] - cp: ["cp37", "cp38", "cp39", "cp310"] + cp: ["cp37", "cp38", "cp39", "cp310", "cp311"] timeout-minutes: 30 From 55306562389f697fbe15cfd8fd89f59f69277eb5 Mon Sep 17 00:00:00 2001 From: squaresmile Date: Fri, 25 Nov 2022 23:09:26 +0700 Subject: [PATCH 174/599] Renamed linux wheels with proper platform tags --- .github/workflows/python-package.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 7f79b8eb..30d4f016 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -78,7 +78,9 @@ jobs: ${{ matrix.cp }}-macosx_x86_64 ${{ matrix.cp }}-macosx_arm64 ${{ matrix.cp }}-macosx_universal2 - CIBW_REPAIR_WHEEL_COMMAND: "" # Disable auditwheel + # Disabled repair wheel since the fmob lib is not compatible + CIBW_REPAIR_WHEEL_COMMAND: "" + CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'mv {wheel} {dest_dir}/"$(basename {wheel} | sed "s/-linux_/-manylinux_2_17_/")"' CIBW_TEST_REQUIRES: pytest CIBW_TEST_COMMAND: pytest -v -s {package}/tests CIBW_TEST_SKIP: "*-macosx_arm64 *-macosx_universal2:arm64" From 635528a9674b8babea3bb04faabb4df6279d006e Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Fri, 25 Nov 2022 22:33:30 +0100 Subject: [PATCH 175/599] fix #158 --- UnityPy/config.py | 16 ++++++++++++++-- UnityPy/files/BundleFile.py | 10 ++++++++-- UnityPy/files/SerializedFile.py | 17 ++++------------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/UnityPy/config.py b/UnityPy/config.py index 74ae264c..a22a2962 100644 --- a/UnityPy/config.py +++ b/UnityPy/config.py @@ -4,5 +4,17 @@ # disabling this will reduce the load time by a lot (half of the time is spend on parsing the typetrees) # but it will also prevent saving an edited file SERIALIZED_FILE_PARSE_TYPETREE = True -# enable for chinese version with AssetBundle encryption -USE_CN_ENCRYPTION = False + +# GLOBAL WARNING SUPPRESSION +FALLBACK_VERSION_WARNED = False # for FALLBACK_UNITY_VERSION + + +# GET FUNCTIONS +def get_fallback_version(): + global FALLBACK_VERSION_WARNED + if not FALLBACK_VERSION_WARNED: + print( + f"Warning: 0.0.0 version found, defaulting to UnityPy.config.FALLBACK_UNITY_VERSION ({FALLBACK_UNITY_VERSION})" # noqa: E501 + ) + FALLBACK_VERSION_WARNED = True + return FALLBACK_UNITY_VERSION diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 571706e5..618e9753 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -10,7 +10,6 @@ from .. import config - BlockInfo = namedtuple("BlockInfo", "uncompressedSize compressedSize flags") DirectoryInfoFS = namedtuple("DirectoryInfoFS", "offset size flags path") reVersion = re.compile(r"(\d+)\.(\d+)\.(\d+)\w.+") @@ -92,7 +91,7 @@ def read_fs(self, reader: EndianBinaryReader): uncompressedSize = reader.read_u_int() self.dataflags = reader.read_u_int() - version = tuple(map(int, reVersion.match(self.version_engine).groups())) + version = self.get_version_tuple() # https://issuetracker.unity3d.com/issues/files-within-assetbundles-do-not-start-on-aligned-boundaries-breaking-patching-on-nintendo-switch # Unity CN introduced encryption before the alignment fix was introduced. # Unity CN used the same flag for the encryption as later on the alignment fix, @@ -414,3 +413,10 @@ def decompress_data( raise NotImplementedError("LZHAM decompression not implemented") else: return compressed_data + + def get_version_tuple(self) -> Tuple[int, int, int]: + """Returns the version as a tuple.""" + version = self.version_engine + if not version or version == "0.0.0": + version = config.get_fallback_version() + return tuple(map(int, reVersion.match(version).groups())) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index d7a562ee..1248bfb3 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -10,9 +10,6 @@ from .. import config -# only print the version warning once -VERSION_WARNED = False - class SerializedFileHeader: metadata_size: int @@ -309,18 +306,12 @@ def container(self): def set_version(self, string_version): self.unity_version = string_version - if string_version == "0.0.0": + if not string_version or string_version == "0.0.0": # weird case, but apparently can happen? # check "cant read Texture2D by 2020.3.13 f1 AssetBundle #77" for details string_version = self.parent.version_engine - if string_version == "0.0.0": - global VERSION_WARNED - if not VERSION_WARNED: - print( - f"Warning: 0.0.0 version found, defaulting to UnityPy.config.FALLBACK_UNITY_VERSION\n{config.FALLBACK_UNITY_VERSION}" - ) - VERSION_WARNED = True - string_version = config.FALLBACK_UNITY_VERSION + if not string_version or string_version == "0.0.0": + string_version = config.get_fallback_version() build_type = re.findall(r"([^\d.])", string_version) self.build_type = BuildType(build_type[0] if build_type else "") version_split = re.split(r"\D", string_version) @@ -578,7 +569,7 @@ def save_type_tree(self, nodes: list, writer: EndianBinaryWriter): # calc children count children_count = 0 - for node2 in nodes[i + 1:]: + for node2 in nodes[i + 1 :]: if node2.m_Level == node.m_Level: break if node2.m_Level == node.m_Level - 1: From c34735443e8398a30d94204613ca4e9215792ca9 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 25 Nov 2022 22:54:16 +0100 Subject: [PATCH 176/599] Fix #151 (#162) * Fix #151 * Update Texture2DConverter.py --- UnityPy/export/Texture2DConverter.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/UnityPy/export/Texture2DConverter.py b/UnityPy/export/Texture2DConverter.py index 437e3e0f..6edb9a8a 100644 --- a/UnityPy/export/Texture2DConverter.py +++ b/UnityPy/export/Texture2DConverter.py @@ -24,11 +24,13 @@ def image_to_texture2d(img: Image.Image, target_texture_format: TF, flip: bool = tex_format = TF.DXT5 # ETC elif target_texture_format in [TF.ETC_RGB4, TF.ETC_RGB4Crunched, TF.ETC_RGB4_3DS]: + img = assert_rgba(img, target_texture_format) r, g, b, a = img.split() raw_img = Image.merge("RGBA", (b, g, r, a)).tobytes() enc_img = etcpak.compress_to_etc1(raw_img, img.width, img.height) tex_format = TF.ETC_RGB4 elif target_texture_format == TF.ETC2_RGB: + img = assert_rgba(img, target_texture_format) r, g, b, a = img.split() raw_img = Image.merge("RGBA", (b, g, r, a)).tobytes() enc_img = etcpak.compress_to_etc2_rgb(raw_img, img.width, img.height) @@ -37,6 +39,7 @@ def image_to_texture2d(img: Image.Image, target_texture_format: TF, flip: bool = target_texture_format in [TF.ETC2_RGBA8, TF.ETC2_RGBA8Crunched, TF.ETC2_RGBA1] or "_RGB_" in target_texture_format.name ): + img = assert_rgba(img, target_texture_format) r, g, b, a = img.split() raw_img = Image.merge("RGBA", (b, g, r, a)).tobytes() enc_img = etcpak.compress_to_etc2_rgba(raw_img, img.width, img.height) @@ -76,6 +79,15 @@ def image_to_texture2d(img: Image.Image, target_texture_format: TF, flip: bool = return enc_img, tex_format +def assert_rgba(img: Image.Image, target_texture_format: TextureFormat): + if img.mode == "RGB": + img = img.convert("RGBA") + assert ( + img.mode == "RGBA" + ), f"{target_texture_format} compression only supports RGB & RGBA images" # noqa: E501 + return img + + def get_image_from_texture2d(texture_2d, flip=True) -> Image.Image: """converts the given texture into PIL.Image From 28964952923b0a4cf12fb4a9ca051fbb4d0ac3d6 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 25 Nov 2022 22:58:37 +0100 Subject: [PATCH 177/599] Fix #145 (#163) --- UnityPy/tools/extractor.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/UnityPy/tools/extractor.py b/UnityPy/tools/extractor.py index dbb7bafb..86f6d98b 100644 --- a/UnityPy/tools/extractor.py +++ b/UnityPy/tools/extractor.py @@ -105,7 +105,9 @@ def defaulted_export_index(type: ClassIDType): return 999 if use_container: - container = sorted(env.container, key=lambda x: defaulted_export_index(x[1].type)) + container = sorted( + env.container.items(), key=lambda x: defaulted_export_index(x[1].type) + ) for obj_path, obj in container: # The filter here can only access metadata. The same filter may produce a different result later in extract_obj after obj.read() if asset_filter is not None and not asset_filter(obj): From 16039e21eef8f37eea80bdd90d08562cc1ce1710 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 25 Nov 2022 23:23:48 +0100 Subject: [PATCH 178/599] fix object repr (#164) --- UnityPy/classes/NamedObject.py | 17 +++++++++++++++-- UnityPy/classes/Object.py | 13 ++++++++----- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/UnityPy/classes/NamedObject.py b/UnityPy/classes/NamedObject.py index fd36ca45..4275a115 100644 --- a/UnityPy/classes/NamedObject.py +++ b/UnityPy/classes/NamedObject.py @@ -3,13 +3,26 @@ class NamedObject(EditorExtension): + m_Name: str + def __init__(self, reader): super().__init__(reader=reader) self.reader.reset() - self.name = self.reader.read_aligned_string() + self.m_Name = self.reader.read_aligned_string() def save(self, writer: EndianBinaryWriter = None): if not writer: writer = EndianBinaryWriter(endian=self.reader.endian) super().save(writer) - writer.write_aligned_string(self.name) + writer.write_aligned_string(self.m_Name) + + @property + def name(self): + return self.m_Name + + @name.setter + def name(self, value): + self.m_Name = value + + def __repr__(self): + return f"<{self.__class__.__name__} path_id={self.path_id} name={self.m_Name}>" diff --git a/UnityPy/classes/Object.py b/UnityPy/classes/Object.py index 0565a4e1..2bfd844b 100644 --- a/UnityPy/classes/Object.py +++ b/UnityPy/classes/Object.py @@ -5,6 +5,7 @@ from ..files import ObjectReader import types from ..exceptions import TypeTreeError as TypeTreeError +from .. import classes class Object(object): @@ -37,9 +38,7 @@ def __init__(self, reader: ObjectReader): def has_struct_member(self, name: str) -> bool: nodes = self.reader.get_typetree_nodes() - return any( - node.m_Name == name for node in nodes - ) + return any(node.m_Name == name for node in nodes) def dump_typetree(self, nodes: list = None) -> str: return self.reader.dump_typetree(nodes=nodes) @@ -113,7 +112,7 @@ def get(self, key, default=None): return getattr(self, key, default) def __repr__(self): - return "<%s %s>" % (self.__class__.__name__, self.name) + return f"<{self.__class__.__name__} path_id={self.path_id}>" def __hash__(self): return hash(self.path_id) @@ -177,4 +176,8 @@ def keys(self): return self.__dict__.keys() def __repr__(self): - return "" % self.__dict__.__repr__() + name = getattr(self, "m_Name", None) + if name: + return f"" + else: + return "" From d1dda14e980a27e4b15c4dcc6bddbfaeeadde4d3 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 25 Nov 2022 23:24:30 +0100 Subject: [PATCH 179/599] Bump version to 1.9.22 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 2e05c616..197e2051 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.21" +__version__ = "1.9.22" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key From 7a21e407e205a154ae5bb1a3e3e030c0c75d7066 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 26 Nov 2022 23:19:20 +0100 Subject: [PATCH 180/599] README - fix license badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0bab5068..f29401d7 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Discord server invite](https://discordapp.com/api/guilds/603359898507673630/embed.png)](https://discord.gg/C6txv7M) [![PyPI supported Python versions](https://img.shields.io/pypi/pyversions/UnityPy.svg)](https://pypi.python.org/pypi/UnityPy) [![Win/Mac/Linux](https://img.shields.io/badge/platform-windows%20%7C%20macos%20%7C%20linux-informational)]() -[![MIT](https://img.shields.io/pypi/l/UnityPy.svg)](https://github.com/K0lb3/UnityPy/blob/master/LICENSE) +[![MIT](https://img.shields.io/github/license/K0lb3/UnityPy)](https://github.com/K0lb3/UnityPy/blob/master/LICENSE) ![Test and Publish](https://github.com/K0lb3/UnityPy/workflows/Test%20and%20Publish/badge.svg) A Unity asset extractor for Python based on [AssetStudio](https://github.com/Perfare/AssetStudio). From f9e6e959272bcea6f238da9ad7c8a297a4524f7a Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 4 Dec 2022 21:13:01 +0100 Subject: [PATCH 181/599] Fix sdist (#165) * setup.py - include missing .h files * TypeTreeHelper.c - fix setter return * bump version --- UnityPy/__init__.py | 2 +- UnityPyBoost/TypeTreeHelper.c | 4 ++-- manifest.in | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 manifest.in diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 197e2051..a362c6d9 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.22" +__version__ = "1.9.23" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c index 0d6de802..4b017926 100644 --- a/UnityPyBoost/TypeTreeHelper.c +++ b/UnityPyBoost/TypeTreeHelper.c @@ -702,7 +702,7 @@ TypeTreeNode_setType(TypeTreeNodeObject *self, PyObject *value, void *closure) if (!PyUnicode_Check(value)) { PyErr_SetString(PyExc_TypeError, "The type attribute value must be a string"); - return NULL; + return -1; } PyMem_Free(self->m_Type); char *type = PyUnicode_AsUTF8(value); @@ -724,7 +724,7 @@ TypeTreeNode_setName(TypeTreeNodeObject *self, PyObject *value, void *closure) if (!PyUnicode_Check(value)) { PyErr_SetString(PyExc_TypeError, "The name attribute value must be a string"); - return NULL; + return -1; } PyMem_Free(self->m_Name); char *name = PyUnicode_AsUTF8(value); diff --git a/manifest.in b/manifest.in new file mode 100644 index 00000000..04762de9 --- /dev/null +++ b/manifest.in @@ -0,0 +1,2 @@ +recursive-include UnityPyBoost *.c +recursive-include UnityPyBoost *.h From ba572869925b516ee5e332699d938b9b237ba84c Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 7 Dec 2022 19:55:40 +0100 Subject: [PATCH 182/599] 1.9.24 - Fix Materials (#166) * Fix Materials * 1.9.24 - version bump --- UnityPy/__init__.py | 2 +- UnityPy/classes/Material.py | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index a362c6d9..c7f92f4c 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.23" +__version__ = "1.9.24" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key diff --git a/UnityPy/classes/Material.py b/UnityPy/classes/Material.py index aa57ff49..f8697512 100644 --- a/UnityPy/classes/Material.py +++ b/UnityPy/classes/Material.py @@ -8,12 +8,11 @@ def __init__(self, reader): version = self.version self.m_Shader = PPtr(reader) # Shader - if version >= (2021,3): # 2021.3 and up + if version >= (2021, 3): # 2021.3 and up self.m_ValidKeywords = reader.read_string_array() self.m_InvalidKeywords = reader.read_string_array() elif version >= (5,): # 5.0 and up self.m_ShaderKeywords = reader.read_aligned_string() - self.m_LightmapFlags = reader.read_u_int() elif version >= (4, 1): # 4.x self.m_ShaderKeywords = reader.read_string_array() @@ -54,7 +53,7 @@ def __init__(self, reader): for _ in range(reader.read_int()) } - if reader.version >= (2021,): # 2021.1 and up + if reader.version >= (2021,): # 2021.1 and up self.m_Ints = { reader.read_aligned_string(): reader.read_int() for _ in range(reader.read_int()) From 42245a3abdb33a0017aba6af229f5f40ef911934 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 Jan 2023 10:39:01 +0100 Subject: [PATCH 183/599] Fix UnityCN Decryption + brute-force function (#168) * fix UnityCN decryption * ArchiveStorageManager - add brute-force function and better error description. * Update __init__.py --- UnityPy/__init__.py | 2 +- UnityPy/files/BundleFile.py | 15 ++++++--- UnityPy/helpers/ArchiveStorageManager.py | 43 +++++++++++++++++++++--- 3 files changed, 49 insertions(+), 11 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index c7f92f4c..a229cd17 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.24" +__version__ = "1.9.25" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 618e9753..622d9aaa 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -1,7 +1,7 @@ # TODO: implement encryption for saving files from collections import namedtuple import re -from typing import Tuple +from typing import Tuple, Union from . import File from ..enums import ArchiveFlags, ArchiveFlagsOld, CompressionFlags @@ -106,6 +106,9 @@ def read_fs(self, reader: EndianBinaryReader): else: self.dataflags = ArchiveFlags(self.dataflags) + if self.dataflags & self.dataflags.UsesAssetBundleEncryption: + self.decryptor = ArchiveStorageManager.ArchiveStorageDecryptor(reader) + if self.version >= 7: reader.align_stream(16) @@ -117,8 +120,6 @@ def read_fs(self, reader: EndianBinaryReader): blocksInfoBytes = reader.read_bytes(compressedSize) reader.Position = start else: # 0x40 kArchiveBlocksAndDirectoryInfoCombined - if self.dataflags & self.dataflags.UsesAssetBundleEncryption: - self.decryptor = ArchiveStorageManager.ArchiveStorageDecryptor(reader) blocksInfoBytes = reader.read_bytes(compressedSize) blocksInfoBytes = self.decompress_data( @@ -385,7 +386,11 @@ def save_fs(self, writer: EndianBinaryWriter, data_flag: int, block_info_flag: i writer.Position = writer_end_pos def decompress_data( - self, compressed_data: bytes, uncompressed_size: int, flags: int, index: int = 0 + self, + compressed_data: bytes, + uncompressed_size: int, + flags: Union[int, ArchiveFlags, ArchiveFlagsOld], + index: int = 0, ) -> bytes: """ Parameters @@ -401,7 +406,7 @@ def decompress_data( ------- bytes The decompressed data.""" - comp_flag = flags & ArchiveFlags.CompressionTypeMask + comp_flag = CompressionFlags(flags & ArchiveFlags.CompressionTypeMask) if comp_flag == CompressionFlags.LZMA: # LZMA return CompressionHelper.decompress_lzma(compressed_data) diff --git a/UnityPy/helpers/ArchiveStorageManager.py b/UnityPy/helpers/ArchiveStorageManager.py index 62c1b46e..6ddd2a2c 100644 --- a/UnityPy/helpers/ArchiveStorageManager.py +++ b/UnityPy/helpers/ArchiveStorageManager.py @@ -1,4 +1,5 @@ # based on: https://github.com/Razmoth/PGRStudio/blob/master/AssetStudio/PGR/PGR.cs +import re from typing import Tuple, Union from ..streams import EndianBinaryReader @@ -20,7 +21,8 @@ def set_assetbundle_decrypt_key(key: Union[bytes, str]): def read_vector(reader: EndianBinaryReader) -> Tuple[bytes, bytes]: data = reader.read_bytes(0x10) - key = reader.read_string_to_null().encode("utf-8", "surrogateescape") + key = reader.read_bytes(0x10) + reader.Position += 1 return data, key @@ -32,6 +34,28 @@ def decrypt_key(key: bytes, data: bytes, keybytes: bytes): return bytes(x ^ y for x, y in zip(data, key)) +def brute_force_key( + fp: str, + key_sig: bytes, + data_sig: bytes, + pattern: re.Pattern = re.compile(rb"(?=(\w{16}))"), + verbose: bool = False, +): + with open(fp, "rb") as f: + data = f.read() + + matches = pattern.findall(data) + for i, key in enumerate(matches): + if verbose: + print(f"Trying {i + 1}/{len(matches)} - {key}") + signature = decrypt_key(key_sig, data_sig, key) + if signature == UNITY3D_SIGNATURE: + if verbose: + print(f"Found key: {key}") + return key + return None + + def to_uint4_array(source: bytes, offset: int = 0): buffer = bytearray(len(source) * 2) for j in range(len(source)): @@ -46,16 +70,25 @@ class ArchiveStorageDecryptor: substitute: bytes = bytes(0x10) def __init__(self, reader: EndianBinaryReader) -> None: - if DECRYPT_KEY is None: - raise LookupError( - "The BundleFile is encrypted, but no key was provided!\nYou can set the key via UnityPy.set_assetbundle_decrypt_key(key)" - ) self.unknown_1 = reader.read_u_int() # read vector data/key vectors self.data, self.key = read_vector(reader) self.data_sig, self.key_sig = read_vector(reader) + if DECRYPT_KEY is None: + raise LookupError( + "\n".join( + [ + "The BundleFile is encrypted, but no key was provided!", + "You can set the key via UnityPy.set_assetbundle_decrypt_key(key).", + "To try brute-forcing the key, use UnityPy.helpers.ArchiveStorageManager.brute_force_key(fp, key_sig, data_sig)", + f"with key_sig = {self.key_sig}, data_sig = {self.data_sig}," + "and fp being the path to global-metadata.dat or a memory dump.", + ] + ) + ) + signature = decrypt_key(self.key_sig, self.data_sig, DECRYPT_KEY) if signature != UNITY3D_SIGNATURE: raise Exception(f"Invalid signature {signature} != {UNITY3D_SIGNATURE}") From c8d41de4ee914bb63d765fcbeb063531e1eea460 Mon Sep 17 00:00:00 2001 From: K0lb3 Date: Mon, 30 Jan 2023 10:43:51 +0100 Subject: [PATCH 184/599] 1.9.26 - lz4 decompression - check if decryptor is set --- UnityPy/__init__.py | 2 +- UnityPy/files/BundleFile.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index a229cd17..297eac45 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.25" +__version__ = "1.9.26" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 622d9aaa..5e57ca8a 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -411,7 +411,7 @@ def decompress_data( if comp_flag == CompressionFlags.LZMA: # LZMA return CompressionHelper.decompress_lzma(compressed_data) elif comp_flag in [CompressionFlags.LZ4, CompressionFlags.LZ4HC]: # LZ4, LZ4HC - if flags & 0x100: + if self.decryptor is not None and flags & 0x100: compressed_data = self.decryptor.decrypt_block(compressed_data, index) return CompressionHelper.decompress_lz4(compressed_data, uncompressed_size) elif comp_flag == CompressionFlags.LZHAM: # LZHAM From 10346b4f02f2dbe0fa707799130c9f83c24f8e24 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 9 Apr 2023 11:19:53 +0200 Subject: [PATCH 185/599] 1.9.27 - BundleFile - alignment fix for Unity 2019.4.X * BundleFile - check data for block_alignment * restrict alignment check * only check alignment data for version < 7 * use correct version check * improve error message on failed file parsing * bump version --- UnityPy/__init__.py | 2 +- UnityPy/environment.py | 5 +++-- UnityPy/files/BundleFile.py | 16 ++++++++++++++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 297eac45..3ddcf3c2 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.26" +__version__ = "1.9.27" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key diff --git a/UnityPy/environment.py b/UnityPy/environment.py index c87fcbd6..2ec81118 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -129,8 +129,9 @@ def load_file( return f except Exception as e: # just to be sure - # cuz the SerializedFile detection isn't perfect - print("Error loading, reverting to EndianBinaryReader:\n", str(e)) + # because the SerializedFile detection isn't perfect + print(f"Error while loading {stream_name}: {e}") + print("Interpreting it as ResourceFile...") return EndianBinaryReader(file) def load_zip_file(self, value): diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 5e57ca8a..420e10f8 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -23,6 +23,7 @@ class BundleFile(File.File): version_player: str dataflags: Tuple[ArchiveFlags, ArchiveFlagsOld] decryptor: ArchiveStorageManager.ArchiveStorageDecryptor = None + _uses_block_alignment: bool = False def __init__(self, reader: EndianBinaryReader, parent: File, name: str = None): super().__init__(parent=parent, name=name) @@ -109,8 +110,19 @@ def read_fs(self, reader: EndianBinaryReader): if self.dataflags & self.dataflags.UsesAssetBundleEncryption: self.decryptor = ArchiveStorageManager.ArchiveStorageDecryptor(reader) + # check if we need to align the reader + # - align to 16 bytes and check if all are 0 + # - if not, reset the reader to the previous position if self.version >= 7: - reader.align_stream(16) + reader.Position = pre_align + self._uses_block_alignment = True + elif version >= (2019, 4): + pre_align = reader.Position + align_data = reader.read((16 - pre_align % 16) % 16) + if any(align_data): + reader.Position = pre_align + else: + self._uses_block_alignment = True start = reader.Position if ( @@ -360,7 +372,7 @@ def save_fs(self, writer: EndianBinaryWriter, data_flag: int, block_info_flag: i # compression and file layout flag writer.write_u_int(data_flag) - if self.version >= 7: + if self._uses_block_alignment: # UnityFS\x00 - 8 # size 8 # comp sizes 4+4 From 7fff866e98cb24d91f86cee29d5e2f789bd41468 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 9 Apr 2023 11:48:29 +0200 Subject: [PATCH 186/599] 1.9.28 - fix missing align_stream from 1.9.27 * fix alignment * Update __init__.py --- UnityPy/__init__.py | 2 +- UnityPy/files/BundleFile.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 3ddcf3c2..562c1c45 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.9.27" +__version__ = "1.9.28" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 420e10f8..54856b69 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -114,7 +114,7 @@ def read_fs(self, reader: EndianBinaryReader): # - align to 16 bytes and check if all are 0 # - if not, reset the reader to the previous position if self.version >= 7: - reader.Position = pre_align + reader.align_stream(16) self._uses_block_alignment = True elif version >= (2019, 4): pre_align = reader.Position From f813f6c8b4f3ca9010e5700725a29e7ce47d968d Mon Sep 17 00:00:00 2001 From: AhmedAhmedEG Date: Mon, 5 Jun 2023 00:04:22 +0300 Subject: [PATCH 187/599] AttributeError: 'EndianBinaryReader_Memoryview_BigEndian' object has no attribute 'is_changed' (#185) * Update environment.py Fixed a bug where Enviroment.save() function was always assuming all asset objects have the "is_changed" attributes, causing it to raise an exception if it encountered an "EndianBinaryReader_Memoryview_BigEndian" object, as that object doesn't have an "is_changed" attribute. * Fix indent and use getattribute * env-save: Use fname and fitem --------- Co-authored-by: Rudolf Kolbe --- UnityPy/environment.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/UnityPy/environment.py b/UnityPy/environment.py index 2ec81118..2d464450 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -152,12 +152,12 @@ def save(self, pack="none"): Mark assets as changed using `.mark_changed()`. pack = "none" (default) or "lz4" """ - for f in self.files: - if self.files[f].is_changed: + for fname, fitem in self.files.items(): + if getattr(fitem, "is_changed", False): with open( - os.path.join(self.out_path, os.path.basename(f)), "wb" + os.path.join(self.out_path, os.path.basename(fname)), "wb" ) as out: - out.write(self.files[f].save(packer=pack)) + out.write(fitem.save(packer=pack)) @property def objects(self) -> List[ObjectReader]: From 6cdafe36467cd62b8edb3562976bf7a9ebef99f7 Mon Sep 17 00:00:00 2001 From: Oleg Oshmyan Date: Mon, 5 Jun 2023 00:07:03 +0300 Subject: [PATCH 188/599] BundleFile: fix exception on file.save("original") (#178) Regression in commit 9232cdd57e93f140b2d7431905baff40e05488bc, which renamed _data_flags to dataflags. --- UnityPy/files/BundleFile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 54856b69..7a31da6f 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -223,7 +223,7 @@ def save(self, packer=None): elif packer == "original": self.save_fs( writer, - data_flag=self._data_flags, + data_flag=self.dataflags, block_info_flag=self._block_info_flags, ) elif packer == "lz4": From 737deb9388ee73b1e4987db12e71bea8bb7bcb3b Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 5 Jun 2023 13:20:11 +0200 Subject: [PATCH 189/599] 1.10.0 - virtual filesystem, better dependency resolving, not breaking ContainerDict (#186) * MeshRenderExporter - use m_Name instead of name * Texture2DConverter - image - error if there is no image data * Texture2D - load image data from resource lazily * rework dependency loading and resolving * SerializedFile - rework container handling * Object - use new container handling and fix NodeHelper error with tuples * add optional wrap argument for reading typetrees * File - fix read_files * implement custom filesystem handling * Update README.md * EndianBinaryReader - fix passing of LocalFileOpenener * Readme.md - min python 3.6.0 -> 3.7.0 * setup.py - possible legacy egg fix * pyproject.toml - remove 3.6 support, add 3.10 and 3.11 support --- README.md | 21 +++- UnityPy/__init__.py | 6 +- UnityPy/classes/Object.py | 13 +- UnityPy/classes/PPtr.py | 34 ++---- UnityPy/classes/Texture2D.py | 16 +-- UnityPy/environment.py | 157 ++++++++++++++++--------- UnityPy/export/MeshRendererExporter.py | 27 +++-- UnityPy/export/Texture2DConverter.py | 2 +- UnityPy/files/BundleFile.py | 6 +- UnityPy/files/File.py | 29 ++--- UnityPy/files/ObjectReader.py | 13 +- UnityPy/files/SerializedFile.py | 95 ++++++++++++--- UnityPy/helpers/ImportHelper.py | 24 +++- UnityPy/helpers/ResourceReader.py | 80 +++++-------- UnityPy/streams/EndianBinaryReader.py | 28 ++++- pyproject.toml | 5 +- setup.py | 1 + 17 files changed, 341 insertions(+), 216 deletions(-) diff --git a/README.md b/README.md index f29401d7..18149b6b 100644 --- a/README.md +++ b/README.md @@ -37,11 +37,12 @@ if UnityPy.__version__ != '1.9.6': 2. [Example](#example) 3. [Important Classes](#important-classes) 4. [Important Object Types](#important-object-types) -5. [Credits](#credits) +5. [Custom Fileystem](#custom-filesystem) +6. [Credits](#credits) ## Installation -**Python 3.6.0 or higher is required** +**Python 3.7.0 or higher is required** via pypi @@ -364,6 +365,22 @@ if mesh_renderer.m_GameObject: mesh_renderer.export(export_dir) ``` +## Custom-Filesystem + +UnityPy uses [fsspec](https://github.com/fsspec/filesystem_spec) under the hood to manage all filesystem interactions. +This allows using various different types of filesystems without having to change UnityPy's code. +It also means that you can use your own custom filesystem to e.g. handle indirection via catalog files, load assets on demand from a server, or decrypt files. + +Following methods of the filesystem have to be implemented for using it in UnityPy. + +- sep (not a function, just the seperator as character) +- isfile(self, path: str) -> bool +- isdir(self, path: str) -> bool +- exists(self, path: str, \*\*kwargs) -> bool +- walk(self, path: str, \*\*kwargs) -> Iterable[List[str], List[str], List[str]] +- open(self, path: str, mode: str = "rb", \*\*kwargs) -> file ("rb" mode required, "wt" required for ModelExporter) +- makedirs(self, path: str, exist_ok: bool = False) -> bool + ## Credits First of all, diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 562c1c45..966194da 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,11 +1,11 @@ -__version__ = "1.9.28" +__version__ = "1.10.0" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key -def load(*args): - return Environment(*args) +def load(*args, fs=None, **kwargs): + return Environment(*args, fs=fs, **kwargs) # backward compatibility diff --git a/UnityPy/classes/Object.py b/UnityPy/classes/Object.py index 2bfd844b..2c8381ee 100644 --- a/UnityPy/classes/Object.py +++ b/UnityPy/classes/Object.py @@ -5,7 +5,6 @@ from ..files import ObjectReader import types from ..exceptions import TypeTreeError as TypeTreeError -from .. import classes class Object(object): @@ -26,11 +25,7 @@ def __init__(self, reader: ObjectReader): if self.platform == BuildTarget.NoTarget: self._object_hide_flags = reader.read_u_int() - self.container = ( - self.assets_file._container[self.path_id] - if self.path_id in self.assets_file._container - else None - ) + self.container = self.assets_file.container.path_dict.get(self.path_id) self.reader.reset() if type(self) == Object: @@ -46,10 +41,10 @@ def dump_typetree(self, nodes: list = None) -> str: def dump_typetree_structure(self) -> str: return self.reader.dump_typetree_structure() - def read_typetree(self, nodes: list = None) -> dict: + def read_typetree(self, nodes: list = None, wrap: bool = False) -> dict: tree = self.reader.read_typetree(nodes) self.type_tree = NodeHelper(tree, self.assets_file) - return tree + return self.type_tree if wrap else tree def save_typetree(self, nodes: list = None, writer: EndianBinaryWriter = None): def class_to_dict(value): @@ -145,6 +140,8 @@ def __new__(cls, data, assets_file): return super(NodeHelper, cls).__new__(cls) elif isinstance(data, list): return [NodeHelper(x, assets_file) for x in data] + elif isinstance(data, tuple): + return tuple(NodeHelper(x, assets_file) for x in data) return data def __getitem__(self, item): diff --git a/UnityPy/classes/PPtr.py b/UnityPy/classes/PPtr.py index cae164a3..96ae6d64 100644 --- a/UnityPy/classes/PPtr.py +++ b/UnityPy/classes/PPtr.py @@ -1,10 +1,6 @@ from ..files import ObjectReader from ..streams import EndianBinaryWriter -from ..helpers import ImportHelper -from .. import files -from ..enums import FileType, ClassIDType -import os -from .. import environment +from ..enums import ClassIDType def save_ptr(obj, writer: EndianBinaryWriter): @@ -33,7 +29,9 @@ def save(self, writer: EndianBinaryWriter): def get_obj(self): if self._obj != None: return self._obj + manager = None + if self.file_id == 0: manager = self.assets_file @@ -43,27 +41,13 @@ def get_obj(self): external_name = self.external_name # try to find it in the already registered cabs manager = environment.get_cab(external_name) - + # not found, load all dependencies and try again if not manager: - # guess we have to try to find it as file then - path = environment.path - if path is not None: - basename = os.path.basename(external_name) - possible_names = [basename, basename.lower(), basename.upper()] - for root, dirs, files in os.walk(path): - for name in files: - if name in possible_names: - manager = environment.load_file( - os.path.join(root, name) - ) - environment.register_cab(name, manager) - break - else: - # else is reached if the previous loop didn't break - continue - break - if manager and self.path_id in manager.objects: - self._obj = manager.objects[self.path_id] + self.assets_file.load_dependencies([external_name]) + manager = environment.get_cab(external_name) + + if manager is not None: + self._obj = manager.objects.get(self.path_id) else: self._obj = None if self.external_name: diff --git a/UnityPy/classes/Texture2D.py b/UnityPy/classes/Texture2D.py index 5c5539a3..705aeaba 100644 --- a/UnityPy/classes/Texture2D.py +++ b/UnityPy/classes/Texture2D.py @@ -47,6 +47,13 @@ def image(self, img): @property def image_data(self): + if not self._image_data and self.m_StreamData is not None: + self._image_data = get_resource_data( + self.m_StreamData.path, + self.assets_file, + self.m_StreamData.offset, + self.m_StreamData.size, + ) return self._image_data def reset_streamdata(self): @@ -166,13 +173,8 @@ def __init__(self, reader): if version >= (5, 3): # 5.3 and up # always read the StreamingInfo for resaving self.m_StreamData = StreamingInfo(reader, version) - if image_data_size == 0 and self.m_StreamData.path: - self._image_data = get_resource_data( - self.m_StreamData.path, - self.assets_file, - self.m_StreamData.offset, - self.m_StreamData.size, - ) + # don't read the data directly, + # as we don't want the parser break if the file is missing def save(self, writer: EndianBinaryWriter = None): if writer is None: diff --git a/UnityPy/environment.py b/UnityPy/environment.py index 2d464450..bfec2fbc 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -1,14 +1,18 @@ -from typing import List, Callable, Dict, Union import io import os -from zipfile import ZipFile +import ntpath import re -from . import files -from .files import File, ObjectReader +from typing import List, Callable, Dict, Union +from zipfile import ZipFile + +from fsspec import AbstractFileSystem +from fsspec.implementations.local import LocalFileSystem + + +from .files import File, ObjectReader, SerializedFile from .enums import FileType from .helpers import ImportHelper from .streams import EndianBinaryReader -from .files import SerializedFile reSplit = re.compile(r"(.*?([^\/\\]+?))\.split\d+") @@ -17,26 +21,30 @@ class Environment: files: dict cabs: dict path: str + local_files: List[str] + local_files_simple: List[str] - def __init__(self, *args): + def __init__(self, *args, fs: AbstractFileSystem = None): self.files = {} self.cabs = {} self.path = None - self.out_path = os.path.join(os.getcwd(), "output") + self.fs = fs or LocalFileSystem() + self.local_files = [] + self.local_files_simple = [] if args: for arg in args: if isinstance(arg, str): - if os.path.isfile(arg): - if os.path.splitext(arg)[-1] in [".apk", ".zip"]: + if self.fs.isfile(arg): + if ntpath.splitext(arg)[-1] in [".apk", ".zip"]: self.load_zip_file(arg) else: - self.path = os.path.dirname(arg) + self.path = ntpath.dirname(arg) if reSplit.match(arg): self.load_files([arg]) else: self.load_file(arg) - elif os.path.isdir(arg): + elif self.fs.isdir(arg): self.path = arg self.load_folder(arg) else: @@ -57,8 +65,8 @@ def load_folder(self, path: str): """Loads all files in the given path and its subdirs into the Environment.""" self.load_files( [ - os.path.join(root, f) - for root, dirs, files in os.walk(path) + self.fs.sep.join([root, f]) + for root, dirs, files in self.fs.walk(path) for f in files ] ) @@ -67,9 +75,9 @@ def load(self, files: list): """Loads all files into the Environment.""" self.files.update( { - os.path.basename(f): self.load_file(open(f, "rb"), self, f) + ntpath.basename(f): self.load_file(self.fs.open(f, "rb"), self, f) for f in files - if os.path.exists(f) + if self.fs.exists(f) } ) @@ -78,9 +86,11 @@ def load_file( file: Union[io.IOBase, str], parent: Union["Environment", File] = None, name: str = None, + is_dependency: bool = False, ): if not parent: parent = self + if isinstance(file, str): split_match = reSplit.match(file) if split_match: @@ -88,8 +98,8 @@ def load_file( file = [] for i in range(0, 999): item = f"{basepath}.split{i}" - if item in files: - with open(item, "rb") as f: + if self.fs.exists(item): + with self.fs.open(item, "rb") as f: file.append(f.read()) elif i: break @@ -97,46 +107,36 @@ def load_file( file = b"".join(file) else: name = file - file = open(file, "rb") + file = self.fs.open(file, "rb") typ, reader = ImportHelper.check_file_type(file) - try: - stream_name = ( - name - if name - else getattr( - file, - "name", - str(file.__hash__()) if hasattr(file, "__hash__") else "", - ) + stream_name = ( + name + if name + else getattr( + file, + "name", + str(file.__hash__()) if hasattr(file, "__hash__") else "", + ) + ) + + if typ == FileType.ZIP: + f = self.load_zip_file(file) + else: + f = ImportHelper.parse_file( + reader, self, name=stream_name, typ=typ, is_dependency=is_dependency ) + + if isinstance(f, (SerializedFile, EndianBinaryReader)): + self.register_cab(stream_name, f) + + self.files[stream_name] = f - if typ == FileType.AssetsFile: - f = files.SerializedFile(reader, parent, name=stream_name) - self.register_cab(stream_name, f) - elif typ == FileType.BundleFile: - f = files.BundleFile(reader, parent, name=stream_name) - elif typ == FileType.WebFile: - f = files.WebFile(reader, parent, name=stream_name) - elif typ == FileType.ZIP: - f = self.load_zip_file(file) - elif typ == FileType.ResourceFile: - f = EndianBinaryReader(file) - self.register_cab(stream_name, f) - - self.files[stream_name] = f - return f - except Exception as e: - # just to be sure - # because the SerializedFile detection isn't perfect - print(f"Error while loading {stream_name}: {e}") - print("Interpreting it as ResourceFile...") - return EndianBinaryReader(file) def load_zip_file(self, value): buffer = None - if isinstance(value, str) and os.path.exists(value): + if isinstance(value, str) and self.fs.exists(value): buffer = open(value, "rb") elif isinstance(value, (bytes, bytearray)): buffer = io.BytesIO(value) @@ -147,7 +147,7 @@ def load_zip_file(self, value): self.load_assets(z.namelist(), lambda x: z.open(x, "r")) z.close() - def save(self, pack="none"): + def save(self, pack="none", out_path="output"): """Saves all changed assets. Mark assets as changed using `.mark_changed()`. pack = "none" (default) or "lz4" @@ -155,7 +155,7 @@ def save(self, pack="none"): for fname, fitem in self.files.items(): if getattr(fitem, "is_changed", False): with open( - os.path.join(self.out_path, os.path.basename(fname)), "wb" + self.fs.sep.join([out_path, ntpath.basename(f)]), "wb" ) as out: out.write(fitem.save(packer=pack)) @@ -167,6 +167,8 @@ def search(item): ret = [] if not isinstance(item, Environment) and getattr(item, "objects", None): # serialized file + if getattr(item, "is_dependency", False): + return [] return [val for val in item.objects.values()] elif getattr(item, "files", None): # WebBundle and BundleFile @@ -185,7 +187,7 @@ def container(self) -> Dict[str, ObjectReader]: return { path: obj for f in self.files.values() - if isinstance(f, File) + if isinstance(f, File) and not f.is_dependency for path, obj in f.container.items() } @@ -197,6 +199,8 @@ def assets(self) -> list: def gen_all_asset_files(file, ret=[]): for f in getattr(file, "files", {}).values(): + if getattr(f, "is_dependency", False): + continue if isinstance(f, SerializedFile): ret.append(f) else: @@ -219,7 +223,7 @@ def register_cab(self, name: str, item: File) -> None: item : File The file to register. """ - self.cabs[os.path.basename(name.lower())] = item + self.cabs[simplify_name(name)] = item def get_cab(self, name: str) -> File: """ @@ -235,7 +239,7 @@ def get_cab(self, name: str) -> File: File The cab file. """ - return self.cabs.get(os.path.basename(name.lower()), None) + return self.cabs.get(simplify_name(name), None) def load_assets(self, assets: List[str], open_f: Callable[[str], io.IOBase]): """ @@ -272,3 +276,48 @@ def load_assets(self, assets: List[str], open_f: Callable[[str], io.IOBase]): else: data = open_f(path).read() self.load_file(data, name=path) + + def find_file(self, name: str, is_dependency: bool = True) -> Union[File, None]: + """ + Finds a file in the environment. + + Parameters + ---------- + name : str + The name of the file. + is_dependency : bool + Whether the file is a dependency. + + Returns + ------- + File | None + The file if it was found, otherwise None. + """ + simple_name = simplify_name(name) + cab = self.get_cab(simple_name) + if cab: + return cab + + if len(self.local_files) == 0 and self.path: + for root, _, files in self.fs.walk(self.path): + for name in files: + self.local_files.append(self.fs.sep.join([root, name])) + + if name in self.local_files: + fp = name + elif simple_name in self.local_files_simple: + fp = self.local_files[self.local_files_simple.index(simple_name)] + else: + raise FileNotFoundError(f"File {name} not found in {self.path}") + + f = self.load_file(fp, name=name, is_dependency=is_dependency) + return f + + +def simplify_name(name: str) -> str: + """Simplifies a name by: + - removing the extension + - removing the path + - converting to lowercase + """ + return ntpath.basename(name).lower() diff --git a/UnityPy/export/MeshRendererExporter.py b/UnityPy/export/MeshRendererExporter.py index 83fe11db..233b5878 100644 --- a/UnityPy/export/MeshRendererExporter.py +++ b/UnityPy/export/MeshRendererExporter.py @@ -1,6 +1,5 @@ import os -from ..classes import Renderer, SkinnedMeshRenderer, Material, Texture2D -from ..enums import ClassIDType +from ..classes import Renderer, SkinnedMeshRenderer, Material from .MeshExporter import export_mesh_obj @@ -18,7 +17,8 @@ def get_mesh(meshR: Renderer): def export_mesh_renderer(obj: Renderer, export_dir: str) -> None: - os.makedirs(export_dir, exist_ok=True) + env = mesh.assets_file.enviroment + env.fs.makedirs(export_dir, exist_ok=True) meshR = obj.read() mesh = get_mesh(meshR) if not mesh: @@ -49,18 +49,25 @@ def export_mesh_renderer(obj: Renderer, export_dir: str) -> None: if not texEnv.m_Texture: continue tex = texEnv.m_Texture.read() - texName = f"{tex.name if tex.name else key}.png" - tex.read().image.save(os.path.join(export_dir, texName)) + texName = f"{tex.m_Name if tex.m_Name else key}.png" + with env.fs.open(env.fs.sep.join([export_dir, texName]), "wb") as f: + tex.read().image.save(f) # save .obj - with open( - os.path.join(export_dir, f"{mesh.name}.obj"), "wt", encoding="utf8", newline="" + with env.fs.open( + env.fs.sep.join([export_dir, f"{mesh.m_Name}.obj"]), + "wt", + encoding="utf8", + newline="", ) as f: f.write(export_mesh_obj(mesh, material_names)) # save .mtl - with open( - os.path.join(export_dir, f"{mesh.name}.mtl"), "wt", encoding="utf8", newline="" + with env.fs.open( + env.fs.sep.join([export_dir, f"{mesh.m_Name}.mtl"]), + "wt", + encoding="utf8", + newline="", ) as f: f.write("\n".join(materials)) @@ -114,7 +121,7 @@ def clt(color): # color to tuple if not texEnv.m_Texture: continue tex = texEnv.m_Texture.read() - texName = f"{tex.name if tex.name else key}.png" + texName = f"{tex.m_Name if tex.m_Name else key}.png" if key == "_MainTex": sb.append(f"map_Kd {texName}") elif key == "_BumpMap": diff --git a/UnityPy/export/Texture2DConverter.py b/UnityPy/export/Texture2DConverter.py index 6edb9a8a..b757a3c7 100644 --- a/UnityPy/export/Texture2DConverter.py +++ b/UnityPy/export/Texture2DConverter.py @@ -100,7 +100,7 @@ def get_image_from_texture2d(texture_2d, flip=True) -> Image.Image: """ image_data = copy(bytes(texture_2d.image_data)) if not image_data: - return Image.new("RGB", (0, 0)) + raise ValueError("Texture2D has no image data") texture_format = ( texture_2d.m_TextureFormat diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 7a31da6f..4c2d8498 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -25,8 +25,10 @@ class BundleFile(File.File): decryptor: ArchiveStorageManager.ArchiveStorageDecryptor = None _uses_block_alignment: bool = False - def __init__(self, reader: EndianBinaryReader, parent: File, name: str = None): - super().__init__(parent=parent, name=name) + def __init__( + self, reader: EndianBinaryReader, parent: File, name: str = None, **kwargs + ): + super().__init__(parent=parent, name=name, **kwargs) signature = self.signature = reader.read_string_to_null() self.version = reader.read_u_int() self.version_player = reader.read_string_to_null() diff --git a/UnityPy/files/File.py b/UnityPy/files/File.py index 4d3f43d5..2d496b9d 100644 --- a/UnityPy/files/File.py +++ b/UnityPy/files/File.py @@ -11,21 +11,26 @@ class File(object): name: str files: dict + environment: "Environment" cab_file: str is_changed: bool signature: str packer: str + is_dependency: bool # parent: File # environment: Environment - def __init__(self, parent=None, name=None): + def __init__(self, parent=None, name: str = None, is_dependency: bool = False): self.files = {} self.is_changed = False self.cab_file = "CAB-UnityPy_Mod.resS" self.parent = parent - self.environment = self.environment = getattr(parent, "environment", parent) if parent else None + self.environment = self.environment = ( + getattr(parent, "environment", parent) if parent else None + ) self.name = basename(name) if isinstance(name, str) else "" + self.is_dependency = is_dependency def get_assets(self): if isinstance(self, SerializedFile.SerializedFile): @@ -67,23 +72,12 @@ def read_files(self, reader: EndianBinaryReader, files: list): for node in files: reader.Position = node.offset name = node.path - f = EndianBinaryReader( + node_reader = EndianBinaryReader( reader.read(node.size), offset=(reader.BaseOffset + node.offset) ) - # f._flag = getattr(node, "flags", None) # required for save - typ, _ = ImportHelper.check_file_type(f) - if typ == FileType.BundleFile: - f = BundleFile.BundleFile(f, self, name=name) - elif typ == FileType.WebFile: - f = WebFile.WebFile(f, self, name=name) - elif typ == FileType.AssetsFile: - # pre-check if resource file - if not name.endswith((".resS", ".resource", ".config", ".xml", ".dat")): - # try to load the file as serialized file - try: - f = SerializedFile.SerializedFile(f, self, name=name) - except ValueError: - pass + f = ImportHelper.parse_file( + node_reader, self.parent, name, is_dependency=self.is_dependency + ) if isinstance(f, (EndianBinaryReader, SerializedFile.SerializedFile)): if self.environment: @@ -161,4 +155,3 @@ def mark_changed(self): # recursive import requires the import down here from . import BundleFile, SerializedFile, WebFile, ObjectReader - diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index 622e310d..2ebee31a 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -156,7 +156,7 @@ def Position(self, pos): def reset(self): self.reader.Position = self.byte_start - def read(self, return_typetree_on_error: bool=True): + def read(self, return_typetree_on_error: bool = True): cls = getattr(classes, self.type.name, None) obj = None @@ -171,9 +171,7 @@ def read(self, return_typetree_on_error: bool=True): else: raise e if not obj: - typetree = self.read_typetree() - if typetree: - obj = NodeHelper(typetree, self.assets_file) + obj = self.read_typetree(wrap=True) self._read_until = self.reader.Position return obj @@ -206,7 +204,7 @@ def dump_typetree_structure(self) -> str: def get_typetree_nodes(self, nodes: list = None) -> list: if nodes: return nodes - + if self.serialized_type: nodes = self.serialized_type.nodes if not nodes: @@ -215,10 +213,11 @@ def get_typetree_nodes(self, nodes: list = None) -> list: raise TypeTreeError("There are no TypeTree nodes for this object.") return nodes - def read_typetree(self, nodes: list = None) -> dict: + def read_typetree(self, nodes: list = None, wrap: bool = False) -> dict: self.reset() nodes = self.get_typetree_nodes(nodes) - return TypeTreeHelper.read_typetree(nodes, self) + res = TypeTreeHelper.read_typetree(nodes, self) + return NodeHelper(res, self.assets_file) if wrap else res def save_typetree( self, tree: dict, nodes: list = None, writer: EndianBinaryWriter = None diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 1248bfb3..314781ab 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -1,4 +1,4 @@ -import os +from ntpath import basename import re from . import File, ObjectReader @@ -57,7 +57,7 @@ class FileIdentifier: # external @property def name(self): - return os.path.basename(self.path) + return basename(self.path) def __repr__(self): return f"<{self.__class__.__name__}({self.path})>" @@ -179,10 +179,10 @@ class SerializedFile(File.File): types: list script_types: list externals: list - _container: dict objects: dict - container_: dict _cache: dict + assetbundle: "AssetBundle" + container: "ContainerHelper" header: SerializedFileHeader @property @@ -195,8 +195,8 @@ def files(self): def files(self, value): self.objects = value - def __init__(self, reader: EndianBinaryReader, parent=None, name=None): - super().__init__(parent=parent, name=name) + def __init__(self, reader: EndianBinaryReader, parent=None, name=None, **kwargs): + super().__init__(parent=parent, name=name, **kwargs) self.reader = reader self.unity_version = "2.5.0f5" @@ -207,10 +207,7 @@ def __init__(self, reader: EndianBinaryReader, parent=None, name=None): self.types = [] self.script_types = [] self.externals = [] - self._container = {} - self.objects = {} - self.container_ = {} # used to speed up mass asset extraction # some assets refer to each other, so by keeping the result # of specific assets cached the extraction can be speed up by a lot. @@ -291,18 +288,33 @@ def __init__(self, reader: EndianBinaryReader, parent=None, name=None): # read the asset_bundles to get the containers for obj in self.objects.values(): if obj.type == ClassIDType.AssetBundle: - data = obj.read() - for container, asset_info in data.m_Container.items(): - asset = asset_info.asset - self.container_[container] = asset - if hasattr(asset, "path_id"): - self._container[asset.path_id] = container - # if environment is not None: - # environment.container = {**environment.container, **self.container} + self.assetbundle = obj.read_typetree(wrap=True) + self._container = ContainerHelper(self.assetbundle.m_Container) + break + else: + self.assetbundle = None + self._container = ContainerHelper({}) @property def container(self): - return self.container_ + return self._container + + def load_dependencies(self, possible_dependencies: list = []): + """Load all external dependencies. + + Parameters + ---------- + possible_dependencies : list + List of possible dependencies for cases + where the target file is not listed as external. + """ + for file_id in self.externals: + self.environment.load_file(file_id.path, True) + for dependency in possible_dependencies: + try: + self.environment.load_file(dependency, True) + except FileNotFoundError: + pass def set_version(self, string_version): self.unity_version = string_version @@ -630,3 +642,50 @@ def read_string(string_buffer_reader: EndianBinaryReader, value: int) -> str: offset = value & 0x7FFFFFFF return CommonString.get(offset, str(offset)) + + +class ContainerHelper: + """Helper class to allow multidict containers + without breaking compatibility with old versions""" + + def __init__(self, container) -> None: + self.container = container + # support for getitem + self.container_dict = {key: value.asset for key, value in container} + self.path_dict = {value.asset.path_id: value.asset for key, value in container} + + def items(self): + return ((key, value.asset) for key, value in self.container) + + def keys(self): + return list({key for key, value in self.container}) + + def values(self): + return list({value.asset for key, value in self.container}) + + def __getitem__(self, key): + return self.container_dict[key] + + def __setitem__(self, key, value): + raise NotImplementedError("Assigning to container is not allowed!") + + def __delitem__(self, key): + raise NotImplementedError("Deleting from the container is not allowed!") + + def __iter__(self): + return iter(self.keys) + + def __len__(self): + return len(self.container) + + def __getattr__(self, name: str): + return self.container_dict[name] + + def __or__(self, other: "ContainerHelper"): + return ContainerHelper(list(set(self.container + other.container))) + + def __str__(self): + return f'{{{", ".join(f"{key}: {value}" for key, value in self.items())}}}' + + def __dict__(self): + return self.container_dict diff --git a/UnityPy/helpers/ImportHelper.py b/UnityPy/helpers/ImportHelper.py index 39f7365e..53599ef5 100644 --- a/UnityPy/helpers/ImportHelper.py +++ b/UnityPy/helpers/ImportHelper.py @@ -3,6 +3,7 @@ from .CompressionHelper import BROTLI_MAGIC, GZIP_MAGIC from ..enums import FileType from ..streams import EndianBinaryReader +from .. import files def file_name_without_extension(file_name: str) -> str: @@ -53,7 +54,6 @@ def check_file_type(input_) -> Union[FileType, EndianBinaryReader]: if reader.Length < 20: return FileType.ResourceFile, reader - signature = reader.read_string_to_null(20) reader.Position = 0 @@ -119,3 +119,25 @@ def check_file_type(input_) -> Union[FileType, EndianBinaryReader]: return FileType.ResourceFile, reader else: return FileType.AssetsFile, reader + + +def parse_file( + reader: EndianBinaryReader, + parent, + name: str, + typ: FileType = None, + is_dependency=False, +): + if typ is None: + typ, _ = check_file_type(reader) + if typ == FileType.AssetsFile and not name.endswith( + (".resS", ".resource", ".config", ".xml", ".dat") + ): + f = files.SerializedFile(reader, parent, name=name, is_dependency=is_dependency) + elif typ == FileType.BundleFile: + f = files.BundleFile(reader, parent, name=name, is_dependency=is_dependency) + elif typ == FileType.WebFile: + f = files.WebFile(reader, parent, name=name, is_dependency=is_dependency) + else: + f = reader + return f diff --git a/UnityPy/helpers/ResourceReader.py b/UnityPy/helpers/ResourceReader.py index be0cae4a..b624957a 100644 --- a/UnityPy/helpers/ResourceReader.py +++ b/UnityPy/helpers/ResourceReader.py @@ -1,4 +1,4 @@ -import os, glob +import ntpath from ..streams import EndianBinaryReader from ..files import File @@ -19,59 +19,33 @@ def get_resource_data(*args): -> -2 = offset, -1 = size """ if len(args) == 4: - reader = search_resource(res_path=args[0], assets_file=args[1]) + res_path, assets_file, offset, size = args + basename = ntpath.basename(res_path) + name, ext = ntpath.splitext(basename) + possible_names = { + basename, + f"{name}.resource", + f"{name}.assets.resS", + f"{name}.resS", + } + environment = assets_file.environment + reader = None + for possible_name in possible_names: + reader = environment.get_cab(possible_name) + if reader: + break + if not reader: + assets_file.load_dependencies(possible_names) + for possible_name in possible_names: + reader = environment.get_cab(possible_name) + if reader: + break + if not reader: + raise FileNotFoundError(f"Resource file {basename} not found") elif len(args) == 3: - reader = args[0] + reader, offset, size = args else: raise TypeError(f"3 or 4 arguments required, but only {len(args)} given") - reader.Position = args[-2] - return reader.read_bytes(args[-1]) - - -def search_resource(res_path, assets_file): - # try to find the resource in the Unity packages - base_name = os.path.basename(res_path) - if os.path.splitext(base_name)[1] == ".resource": - base_name2 = base_name.replace('.resource', '.assets.resS') - else: - base_name2 = base_name.replace('.assets.resS', '.resource') - - for p in [res_path, base_name, base_name2]: - reader = assets_file.parent.files.get(p) - if reader: - if isinstance(reader, File.File): - # in case the import helper accidentally detected a resource file as something else - reader = reader.reader - return reader - - # try to find it in the dir environment - c = assets_file - path = getattr(assets_file, "path", None) - while not path: - c = getattr(c,"parent",None) - if c == None: - raise FileNotFoundError( - f"Can't find the resource file {res_path}" - ) - path = getattr(c, "path", None) - current_directory = path - resource_file_path = os.path.join(current_directory, *res_path.split("/")) - if not os.path.isfile(resource_file_path): - resource_file_path = search_resource_file(current_directory, base_name) - if not os.path.isfile(resource_file_path): - resource_file_path = search_resource_file(current_directory, base_name.replace('.assets.resS', '.resource')) - - if os.path.isfile(resource_file_path): - return EndianBinaryReader(open(resource_file_path, "rb")) - else: - raise FileNotFoundError( - f"Can't find the resource file {res_path}" - ) - - -def search_resource_file(path, name): - #print("real file", path, name) - files = glob.glob(os.path.join(path, "**", name), recursive=True) - return files[0] if len(files) else "" - + reader.Position = offset + return reader.read_bytes(size) diff --git a/UnityPy/streams/EndianBinaryReader.py b/UnityPy/streams/EndianBinaryReader.py index c89fdfbc..0fe7f7db 100644 --- a/UnityPy/streams/EndianBinaryReader.py +++ b/UnityPy/streams/EndianBinaryReader.py @@ -1,9 +1,8 @@ -import io import sys from struct import Struct, unpack import re from typing import List, Union -from io import BytesIO, BufferedIOBase +from io import BytesIO, BufferedIOBase, IOBase, BufferedReader reNot0 = re.compile(b"(.*?)\x00") @@ -50,14 +49,29 @@ def __new__( ): if isinstance(item, (bytes, bytearray, memoryview)): obj = super(EndianBinaryReader, cls).__new__(EndianBinaryReader_Memoryview) - elif isinstance(item, BufferedIOBase): + elif isinstance(item, (IOBase, BufferedIOBase)): obj = super(EndianBinaryReader, cls).__new__(EndianBinaryReader_Streamable) elif isinstance(item, str): item = open(item, "rb") obj = super(EndianBinaryReader, cls).__new__(EndianBinaryReader_Streamable) elif isinstance(item, EndianBinaryReader): - item = item.stream if isinstance(item, EndianBinaryReader_Streamable) else item.view + item = ( + item.stream + if isinstance(item, EndianBinaryReader_Streamable) + else item.view + ) return EndianBinaryReader(item, endian, offset) + elif hasattr(item, "read"): + if hasattr(item, "seek") and hasattr(item, "tell"): + obj = super(EndianBinaryReader, cls).__new__( + EndianBinaryReader_Streamable + ) + else: + item = item.read() + obj = super(EndianBinaryReader, cls).__new__( + EndianBinaryReader_Memoryview + ) + obj.__init__(item, endian) return obj @@ -287,7 +301,9 @@ def read_string_to_null(self, max_length=32767) -> str: if self.Position + max_length >= self.Length: raise Exception("String not terminated") else: - return bytes(self.read_bytes(max_length)).decode("utf8", "surrogateescape") + return bytes(self.read_bytes(max_length)).decode( + "utf8", "surrogateescape" + ) ret = match[1].decode("utf8", "surrogateescape") self.Position = match.end() return ret @@ -419,7 +435,7 @@ def read_vector4(self): class EndianBinaryReader_Streamable(EndianBinaryReader): __slots__ = ("stream", "_endian", "BaseOffset") - stream: io.BufferedReader + stream: BufferedReader def __init__(self, stream, endian=">", offset=0): self._endian = "" diff --git a/pyproject.toml b/pyproject.toml index aab8463c..6e27f3a5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,10 +26,11 @@ classifiers = [ "Development Status :: 5 - Production/Stable", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Games/Entertainment", "Topic :: Multimedia :: Graphics", @@ -46,6 +47,8 @@ dependencies = [ "tabulate", # audio extraction "pyfmodex", + # filesystem handling + "fsspec", ] dynamic = ["version"] diff --git a/setup.py b/setup.py index b4adc9d3..23d54c66 100644 --- a/setup.py +++ b/setup.py @@ -56,6 +56,7 @@ def get_fmod_library(): setup( + name="UnityPy", packages=find_packages() + extra_packages, package_data={"UnityPy": unitypy_package_data}, ext_modules=[ From 271924507a8f1b58527447940cf7b687a34ffc60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B8=94=EB=9F=AC=EB=93=9C=EC=9C=99?= Date: Wed, 7 Jun 2023 12:29:25 +0300 Subject: [PATCH 190/599] Fix ContainerHelper from being non-iterable (#187) --- UnityPy/files/SerializedFile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 314781ab..6177c795 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -673,7 +673,7 @@ def __delitem__(self, key): raise NotImplementedError("Deleting from the container is not allowed!") def __iter__(self): - return iter(self.keys) + return iter(self.keys()) def __len__(self): return len(self.container) From 8c8492fbdb713b45517a337ab98a0c9793787b2d Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 7 Jun 2023 11:29:54 +0200 Subject: [PATCH 191/599] bump to 1.10.1 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 966194da..d7f71da1 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.0" +__version__ = "1.10.1" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key From f5138df8ff31a07b3422260d9a08fcf757cf3dce Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 18 Jul 2023 13:44:01 +0200 Subject: [PATCH 192/599] fix for SerializedFile - only try to get version_engine IF parent is a BundleFile --- UnityPy/files/File.py | 2 +- UnityPy/files/SerializedFile.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/UnityPy/files/File.py b/UnityPy/files/File.py index 2d496b9d..9c2c2f8a 100644 --- a/UnityPy/files/File.py +++ b/UnityPy/files/File.py @@ -76,7 +76,7 @@ def read_files(self, reader: EndianBinaryReader, files: list): reader.read(node.size), offset=(reader.BaseOffset + node.offset) ) f = ImportHelper.parse_file( - node_reader, self.parent, name, is_dependency=self.is_dependency + node_reader, self, name, is_dependency=self.is_dependency ) if isinstance(f, (EndianBinaryReader, SerializedFile.SerializedFile)): diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 6177c795..8f039f47 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -1,7 +1,7 @@ from ntpath import basename import re -from . import File, ObjectReader +from . import File, ObjectReader, BundleFile from ..enums import BuildTarget, ClassIDType, CommonString from ..streams import EndianBinaryReader, EndianBinaryWriter from ..helpers.TypeTreeHelper import TypeTreeNode @@ -321,7 +321,8 @@ def set_version(self, string_version): if not string_version or string_version == "0.0.0": # weird case, but apparently can happen? # check "cant read Texture2D by 2020.3.13 f1 AssetBundle #77" for details - string_version = self.parent.version_engine + if isinstance(self.parent, BundleFile.BundleFile): + string_version = self.parent.version_engine if not string_version or string_version == "0.0.0": string_version = config.get_fallback_version() build_type = re.findall(r"([^\d.])", string_version) From 4f73d26e3b8cbee6f1f91229141b9ee003fd91a4 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 18 Jul 2023 14:05:59 +0200 Subject: [PATCH 193/599] fix Renderer parser fixes #171 --- UnityPy/classes/Renderer.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/UnityPy/classes/Renderer.py b/UnityPy/classes/Renderer.py index 4e65f415..dc5334ba 100644 --- a/UnityPy/classes/Renderer.py +++ b/UnityPy/classes/Renderer.py @@ -86,10 +86,8 @@ def __init__(self, reader): self.m_SortingLayer = reader.read_short() else: self.m_SortingLayerID = reader.read_u_int() - - # SInt16 m_SortingLayer 5.6 and up - self.m_SortingOrder = reader.read_short() - reader.align_stream() + self.m_SortingOrder = reader.read_short() + reader.align_stream() def export(self, export_dir: str) -> None: MeshRendererExporter.export_mesh_renderer(self, export_dir) From 8c2397a61c84f28f2d47d99677c6918e2ce1cd3f Mon Sep 17 00:00:00 2001 From: RealSupremium <57239451+RealSupremium@users.noreply.github.com> Date: Tue, 18 Jul 2023 07:10:53 -0500 Subject: [PATCH 194/599] Convert possible_names to a list (#190) --- UnityPy/helpers/ResourceReader.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/helpers/ResourceReader.py b/UnityPy/helpers/ResourceReader.py index b624957a..e058b7ef 100644 --- a/UnityPy/helpers/ResourceReader.py +++ b/UnityPy/helpers/ResourceReader.py @@ -22,12 +22,12 @@ def get_resource_data(*args): res_path, assets_file, offset, size = args basename = ntpath.basename(res_path) name, ext = ntpath.splitext(basename) - possible_names = { + possible_names = [ basename, f"{name}.resource", f"{name}.assets.resS", f"{name}.resS", - } + ] environment = assets_file.environment reader = None for possible_name in possible_names: From 0c80cee023614ec853f07c1b713006d3cad4612a Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 18 Jul 2023 14:31:17 +0200 Subject: [PATCH 195/599] bump version to 1.10.2 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index d7f71da1..5355553f 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.1" +__version__ = "1.10.2" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key From 2fe1be2abfb8e3d53ba062f70390a517f41cfae7 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 18 Jul 2023 14:38:31 +0200 Subject: [PATCH 196/599] skip x86 tests due to PIL issues --- .github/workflows/python-package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 30d4f016..f5130430 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -83,7 +83,7 @@ jobs: CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'mv {wheel} {dest_dir}/"$(basename {wheel} | sed "s/-linux_/-manylinux_2_17_/")"' CIBW_TEST_REQUIRES: pytest CIBW_TEST_COMMAND: pytest -v -s {package}/tests - CIBW_TEST_SKIP: "*-macosx_arm64 *-macosx_universal2:arm64" + CIBW_TEST_SKIP: "*-macosx_arm64 *-macosx_universal2:arm64 *-manylinux_i686 *-win32" - name: Publish to PyPI if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' && github.ref == 'refs/heads/master' From 8997c1309b1ac0bd64c76fae58e50d1f71665809 Mon Sep 17 00:00:00 2001 From: Snowyegret <79635537+snowyegret23@users.noreply.github.com> Date: Sun, 1 Oct 2023 04:40:38 +0900 Subject: [PATCH 197/599] Update README.md (#202) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 18149b6b..e58e9131 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,7 @@ from PIL import Image for obj in env.objects: if obj.type.name == "Texture2D": # export texture - data = image.read() + data = obj.read() data.image.save(path) # edit texture fp = os.path.join(replace_dir, data.name) From 5d98090a792e36178d23464ed2ae4d768f005252 Mon Sep 17 00:00:00 2001 From: Elioty Date: Sat, 30 Sep 2023 21:43:36 +0200 Subject: [PATCH 198/599] Update SpriteHelper.py: issue #206 (#207) Fixing the flip transpose operation when extracting a packed sprite image from a texture. --- UnityPy/export/SpriteHelper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/export/SpriteHelper.py b/UnityPy/export/SpriteHelper.py index ffcbf98e..9602e9a3 100644 --- a/UnityPy/export/SpriteHelper.py +++ b/UnityPy/export/SpriteHelper.py @@ -66,10 +66,10 @@ def get_image_from_sprite(m_Sprite) -> Image.Image: if settings_raw.packed == 1: rotation = settings_raw.packingRotation if rotation == SpritePackingRotation.kSPRFlipHorizontal: - sprite_image = sprite_image.transpose(Image.FLIP_TOP_BOTTOM) + sprite_image = sprite_image.transpose(Image.FLIP_LEFT_RIGHT) # spriteImage = RotateFlip(RotateFlipType.RotateNoneFlipX) elif rotation == SpritePackingRotation.kSPRFlipVertical: - sprite_image = sprite_image.transpose(Image.FLIP_LEFT_RIGHT) + sprite_image = sprite_image.transpose(Image.FLIP_TOP_BOTTOM) # spriteImage.RotateFlip(RotateFlipType.RotateNoneFlipY) elif rotation == SpritePackingRotation.kSPRRotate180: sprite_image = sprite_image.transpose(Image.ROTATE_180) From 657a0f66cef5f44785c1f92827406eead0e4c6f2 Mon Sep 17 00:00:00 2001 From: Nattsu39 Date: Sun, 1 Oct 2023 03:44:57 +0800 Subject: [PATCH 199/599] fix: TypeError: 'ABCMeta' object is not subscriptable (#209) collections.abc.Callable cannot be used for type hints when python<3.9 --- UnityPy/tools/extractor.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/UnityPy/tools/extractor.py b/UnityPy/tools/extractor.py index 86f6d98b..4d9ecb6b 100644 --- a/UnityPy/tools/extractor.py +++ b/UnityPy/tools/extractor.py @@ -16,9 +16,8 @@ GameObject, ) from UnityPy.enums.ClassIDType import ClassIDType -from typing import Union, List, Dict +from typing import Union, List, Dict, Callable from pathlib import Path -from collections.abc import Callable def export_obj( From 52ff053be88e00ee5c8aee8c0b78c121087e29e6 Mon Sep 17 00:00:00 2001 From: TWY <24794414+t-wy@users.noreply.github.com> Date: Sun, 1 Oct 2023 04:50:17 +0900 Subject: [PATCH 200/599] Fix ContainerHelper for .container retrieval (#200) This commit is aware of the difference between _container and container_ in old versions of SerializedFile.py for compatibility. --- UnityPy/files/ObjectReader.py | 6 +----- UnityPy/files/SerializedFile.py | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index 2ebee31a..a0894340 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -139,11 +139,7 @@ def set_raw_data(self, data): @property def container(self): - return ( - self.assets_file._container[self.path_id] - if self.path_id in self.assets_file._container - else None - ) + return self.assets_file._container.path_dict.get(self.path_id) @property def Position(self): diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 8f039f47..d26efbba 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -653,7 +653,7 @@ def __init__(self, container) -> None: self.container = container # support for getitem self.container_dict = {key: value.asset for key, value in container} - self.path_dict = {value.asset.path_id: value.asset for key, value in container} + self.path_dict = {value.asset.path_id: key for key, value in container} def items(self): return ((key, value.asset) for key, value in self.container) From 910b7c173338c0a7ee037e11e3ceb81514e7147c Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 30 Sep 2023 22:36:18 +0200 Subject: [PATCH 201/599] WebFile - accept and pass kwargs to super fixes #205 --- UnityPy/files/WebFile.py | 46 +++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/UnityPy/files/WebFile.py b/UnityPy/files/WebFile.py index d0d48386..da7946aa 100644 --- a/UnityPy/files/WebFile.py +++ b/UnityPy/files/WebFile.py @@ -9,16 +9,15 @@ class WebFile(File.File): files -- list of all files in the WebFile """ - - def __init__(self, reader: EndianBinaryReader, parent: File, name=None): - """Constructor Method - """ - super().__init__(parent=parent, name=name) - + + def __init__(self, reader: EndianBinaryReader, parent: File, name=None, **kwargs): + """Constructor Method""" + super().__init__(parent=parent, name=name, **kwargs) + # check compression magic = reader.read_bytes(2) reader.Position = 0 - + if magic == CompressionHelper.GZIP_MAGIC: self.packer = "gzip" data = CompressionHelper.decompress_gzip(reader.bytes) @@ -34,16 +33,16 @@ def __init__(self, reader: EndianBinaryReader, parent: File, name=None): else: self.packer = "none" reader.endian = "<" - + # signature check signature = reader.read_string_to_null() if signature != "UnityWebData1.0": return self.signature = signature - + # read header -> contains file headers head_length = reader.read_int() - + files = [] while reader.Position < head_length: offset = reader.read_int() @@ -51,32 +50,32 @@ def __init__(self, reader: EndianBinaryReader, parent: File, name=None): path_length = reader.read_int() name = bytes(reader.read_bytes(path_length)).decode("utf-8") files.append(File.DirectoryInfo(name, offset, length)) - + self.read_files(reader, files) - + def save( - self, - files: dict = None, - packer: str = "none", - signature: str = "UnityWebData1.0", + self, + files: dict = None, + packer: str = "none", + signature: str = "UnityWebData1.0", ) -> bytes: # solve defaults if not files: files = self.files if not packer: packer = self.packer - + # get raw data files = { name: f.bytes if isinstance(f, EndianBinaryReader) else f.save() for name, f in files.items() } - + # create writer writer = EndianBinaryWriter(endian="<") # signature writer.write_string_to_null(signature) - + # data offset offset = sum( [ @@ -88,9 +87,9 @@ def save( 4, # offset int ] ) - + writer.write_int(offset) - + # 1. file headers for name, data in files.items(): # offset @@ -103,15 +102,14 @@ def save( enc_path = name.encode("utf-8") writer.write_int(len(enc_path)) writer.write(enc_path) - + # 2. file data for data in files.values(): writer.write(data) - + if packer == "gzip": return CompressionHelper.compress_gzip(writer.bytes) elif packer == "brotli": return CompressionHelper.compress_brotli(writer.bytes) else: return writer.bytes - From 63bfcc35bd47b8e165fdb66031e170d19a779c2d Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 30 Sep 2023 22:59:02 +0200 Subject: [PATCH 202/599] Texture2D - 2022 fix fixes #203 --- UnityPy/classes/Texture2D.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/UnityPy/classes/Texture2D.py b/UnityPy/classes/Texture2D.py index 705aeaba..b9b4a882 100644 --- a/UnityPy/classes/Texture2D.py +++ b/UnityPy/classes/Texture2D.py @@ -130,20 +130,23 @@ def __init__(self, reader): self.m_Width = reader.read_int() self.m_Height = reader.read_int() self.m_CompleteImageSize = reader.read_int() - if version >= (2020,): # 2020.1 and up + if version >= (2020, 1): # 2020.1 and up self.m_MipsStripped = reader.read_int() self.m_TextureFormat = TextureFormat(reader.read_int()) - if version[:2] < (5, 2): # 5.2 down + if version < (5, 2): # 3.4.0 - 5.1.5f1 self.m_MipMap = reader.read_boolean() - else: + else: # 5.2.0f2 and up self.m_MipCount = reader.read_int() if version >= (2, 6): # 2.6 and up self.m_IsReadable = reader.read_boolean() # 2.6 and up if version >= (2020,): # 2020.1 and up self.m_IsPreProcessed = reader.read_boolean() - if version >= (2019, 3): # 2019.3 and up + if (2019, 3) <= version < (2022, 2, 0): # 2019.3.0f6 - 2022.2.0a18 self.m_IgnoreMasterTextureLimit = reader.read_boolean() + if version >= (2022, 2, 0): # 2022.2.0f1 and up + self.m_IgnoreMipmapLimit = reader.read_boolean() + self.m_MipmapLimitGroupName = reader.read_aligned_string() if (3,) <= version[:2] <= (5, 4): # 3.0 - 5.4 self.m_ReadAllowed = reader.read_boolean() if version >= (2018, 2): # 2018.2 and up @@ -188,7 +191,7 @@ def save(self, writer: EndianBinaryWriter = None): if version >= (2020,): # 2020.1 and up writer.write_int(self.m_MipsStripped) writer.write_int(self.m_TextureFormat.value) - if version[:2] < (5, 2): # 5.2 down + if version < (5, 2): # 5.2 down writer.write_boolean(self.m_MipMap) else: writer.write_int(self.m_MipCount) @@ -197,8 +200,11 @@ def save(self, writer: EndianBinaryWriter = None): writer.write_boolean(self.m_IsReadable) # 2.6 and up if version >= (2020,): # 2020.1 and up writer.write_boolean(self.m_IsPreProcessed) - if version >= (2019, 3): # 2019.3 and up + if (2019, 3) <= version < (2022, 2, 0): # 2019.3.0f6 - 2022.2.0a18 writer.write_boolean(self.m_IgnoreMasterTextureLimit) + if version >= (2022, 2, 0): # 2022.2.0f1 and up + writer.write_boolean(self.m_IgnoreMipmapLimit) + writer.write_aligned_string(self.m_MipmapLimitGroupName) if (3,) <= version[:2] <= (5, 4): # 3.0 - 5.4 writer.write_boolean(self.m_ReadAllowed) # 3.0 - 5.4 if version >= (2018, 2): # 2018.2 and up From 289ec62f3387797c28fa38e58c9ff1dd266e2a65 Mon Sep 17 00:00:00 2001 From: "Clarence \"Sparr\" Risher" Date: Sat, 30 Sep 2023 17:15:50 -0400 Subject: [PATCH 203/599] Handle relative and case insensitive file paths (#191) * Handle relative and case insensitive file paths * improve find_sensitive_path (no recursion) * environment.py - look in self.path instead of cwd * fix files.File import error for type hinting * Update environment.py --------- Co-authored-by: Rudolf Kolbe --- UnityPy/environment.py | 12 +++++++++++- UnityPy/helpers/ImportHelper.py | 22 ++++++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/UnityPy/environment.py b/UnityPy/environment.py index bfec2fbc..ff790d33 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -107,6 +107,16 @@ def load_file( file = b"".join(file) else: name = file + if not os.path.exists(file): + # relative paths are in the asset directory, not the cwd + if not os.path.isabs(file): + file = os.path.join(self.path, file) + # Unity paths are case insensitive, so we need to find "Resources/Foo.asset" when the record says "resources/foo.asset" + if not os.path.exists(file): + file = ImportHelper.find_sensitive_path(self.path, file) + # nonexistent files might be packaging errors or references to Unity's global Library/ + if file is None: + return file = self.fs.open(file, "rb") typ, reader = ImportHelper.check_file_type(file) @@ -155,7 +165,7 @@ def save(self, pack="none", out_path="output"): for fname, fitem in self.files.items(): if getattr(fitem, "is_changed", False): with open( - self.fs.sep.join([out_path, ntpath.basename(f)]), "wb" + self.fs.sep.join([out_path, ntpath.basename(fname)]), "wb" ) as out: out.write(fitem.save(packer=pack)) diff --git a/UnityPy/helpers/ImportHelper.py b/UnityPy/helpers/ImportHelper.py index 53599ef5..e931daae 100644 --- a/UnityPy/helpers/ImportHelper.py +++ b/UnityPy/helpers/ImportHelper.py @@ -1,4 +1,5 @@ -import os +from __future__ import annotations +import os from typing import Union, List from .CompressionHelper import BROTLI_MAGIC, GZIP_MAGIC from ..enums import FileType @@ -127,7 +128,7 @@ def parse_file( name: str, typ: FileType = None, is_dependency=False, -): +) -> Union[files.File, EndianBinaryReader]: if typ is None: typ, _ = check_file_type(reader) if typ == FileType.AssetsFile and not name.endswith( @@ -141,3 +142,20 @@ def parse_file( else: f = reader return f + + +def find_sensitive_path(dir: str, insensitive_path: str) -> Union[str, None]: + parts = os.path.split(insensitive_path.strip(os.path.sep)) + + senstive_path = dir + for part in parts: + part_lower = part.lower() + part = next( + (name for name in os.listdir(senstive_path) if name.lower() == part_lower), + None, + ) + if next is None: + return None + senstive_path = os.path.join(senstive_path, part) + + return senstive_path From 37fef64adeccbf2fd1a491427f6b841b005b90ea Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 30 Sep 2023 23:17:26 +0200 Subject: [PATCH 204/599] 1.10.3 version bump --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 5355553f..30b0ea25 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.2" +__version__ = "1.10.3" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key From 903bdad2069886383cb5c06f166822d1425d13c5 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 14 Oct 2023 20:51:25 +0200 Subject: [PATCH 205/599] ImportHelper - fix find_sensite_path (#212) * ImportHelper - fix find_sensite_path * bump version fixes #212 --- UnityPy/__init__.py | 2 +- UnityPy/helpers/ImportHelper.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 30b0ea25..e9ab419f 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.3" +__version__ = "1.10.4" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key diff --git a/UnityPy/helpers/ImportHelper.py b/UnityPy/helpers/ImportHelper.py index e931daae..089a0a03 100644 --- a/UnityPy/helpers/ImportHelper.py +++ b/UnityPy/helpers/ImportHelper.py @@ -154,7 +154,7 @@ def find_sensitive_path(dir: str, insensitive_path: str) -> Union[str, None]: (name for name in os.listdir(senstive_path) if name.lower() == part_lower), None, ) - if next is None: + if part is None: return None senstive_path = os.path.join(senstive_path, part) From b7f7a28fa8f766bcfd8027a6871587af8afbdd62 Mon Sep 17 00:00:00 2001 From: Nattsu39 Date: Mon, 16 Oct 2023 03:50:59 +0800 Subject: [PATCH 206/599] fix: Read SpriteBone correctly (#213) Should read rotaion in SpriteBone via read_quaternion. (Only tested in version 2020.3.38) --- UnityPy/classes/Sprite.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/UnityPy/classes/Sprite.py b/UnityPy/classes/Sprite.py index 3f65e84e..291b2e73 100644 --- a/UnityPy/classes/Sprite.py +++ b/UnityPy/classes/Sprite.py @@ -55,7 +55,7 @@ def __init__(self, reader): 2020, 3, ): - self.m_Bones = [SpriteBone() for _ in range(m_BonesSize)] + self.m_Bones = [SpriteBone(self.reader) for _ in range(m_BonesSize)] else: self.m_Bones = [reader.read_vector2_array() for _ in range(m_BonesSize)] @@ -242,13 +242,13 @@ class SpriteBone: def __init__(self, reader: EndianBinaryReader) -> None: self.name = reader.read_aligned_string() self.position = reader.read_vector3() - self.rotation = reader.read_vector3() + self.rotation = reader.read_quaternion() self.length = reader.read_float() self.parentId = reader.read_int() def save(self, writer: EndianBinaryWriter): writer.write_aligned_string(self.name) writer.write_vector3(self.position) - writer.write_vector3(self.rotation) + writer.write_quaternion(self.rotation) writer.write_float(self.length) writer.write_int(self.parentId) From 99c240c88c4d35113dc7674a08904a9b21cf980c Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 15 Oct 2023 21:51:39 +0200 Subject: [PATCH 207/599] bump version to 1.10.5 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index e9ab419f..7ee0297f 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.4" +__version__ = "1.10.5" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key From f3113147cf8febe90c1d684304bde795fa9f0252 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 22 Oct 2023 15:17:34 +0200 Subject: [PATCH 208/599] 1.10.6 - fix Sprite bones for good fixes #182 --- UnityPy/__init__.py | 2 +- UnityPy/classes/Sprite.py | 33 +++++++++++++++------------ UnityPy/streams/EndianBinaryReader.py | 8 +++++++ UnityPy/streams/EndianBinaryWriter.py | 6 +++++ 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 7ee0297f..78dc97a3 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.5" +__version__ = "1.10.6" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key diff --git a/UnityPy/classes/Sprite.py b/UnityPy/classes/Sprite.py index 291b2e73..a5a1761b 100644 --- a/UnityPy/classes/Sprite.py +++ b/UnityPy/classes/Sprite.py @@ -50,14 +50,7 @@ def __init__(self, reader): if version >= (2018,): # 2018 and up m_BonesSize = reader.read_int() - # TODO: might occur in earlier 2020 versions - 2020.3.13 reported - if version >= ( - 2020, - 3, - ): - self.m_Bones = [SpriteBone(self.reader) for _ in range(m_BonesSize)] - else: - self.m_Bones = [reader.read_vector2_array() for _ in range(m_BonesSize)] + self.m_Bones = [SpriteBone(self.reader) for _ in range(m_BonesSize)] def save(self, writer: EndianBinaryWriter = None): if writer is None: @@ -96,12 +89,8 @@ def save(self, writer: EndianBinaryWriter = None): if version >= (2018,): # 2018 and up writer.write_int(len(self.m_Bones)) - if version >= (2020, 3): - for bone in self.m_Bones: - bone.save(writer) - else: - for bone in self.m_Bones: - writer.write_vector2_array(bone) + for bone in self.m_Bones: + bone.save(writer, version) self.set_raw_data(writer.bytes) @@ -241,14 +230,28 @@ class SpriteBone: def __init__(self, reader: EndianBinaryReader) -> None: self.name = reader.read_aligned_string() + + if reader.version >= (2021,): + self.guid = reader.read_aligned_string() + self.position = reader.read_vector3() self.rotation = reader.read_quaternion() self.length = reader.read_float() self.parentId = reader.read_int() - def save(self, writer: EndianBinaryWriter): + if reader.version >= (2021,): + self.color = reader.read_color_uint() + + def save(self, writer: EndianBinaryWriter, version): writer.write_aligned_string(self.name) + + if version >= (2021,): + writer.write_aligned_string(self.guid) + writer.write_vector3(self.position) writer.write_quaternion(self.rotation) writer.write_float(self.length) writer.write_int(self.parentId) + + if version >= (2021,): + writer.write_color_uint(self.color) diff --git a/UnityPy/streams/EndianBinaryReader.py b/UnityPy/streams/EndianBinaryReader.py index 0fe7f7db..2435846c 100644 --- a/UnityPy/streams/EndianBinaryReader.py +++ b/UnityPy/streams/EndianBinaryReader.py @@ -178,6 +178,14 @@ def read_rectangle_f(self) -> Rectangle: self.read_float(), self.read_float(), self.read_float(), self.read_float() ) + def read_color_uint(self): + r = self.read_u_byte() + g = self.read_u_byte() + b = self.read_u_byte() + a = self.read_u_byte() + + return Color(r / 255.0, g / 255.0, b / 255.0, a / 255.0) + def read_color4(self) -> Color: return Color( self.read_float(), self.read_float(), self.read_float(), self.read_float() diff --git a/UnityPy/streams/EndianBinaryWriter.py b/UnityPy/streams/EndianBinaryWriter.py index d9861401..6bb92969 100644 --- a/UnityPy/streams/EndianBinaryWriter.py +++ b/UnityPy/streams/EndianBinaryWriter.py @@ -123,6 +123,12 @@ def write_rectangle_f(self, value: Rectangle): self.write_float(value.width) self.write_float(value.height) + def write_color_uint(self, value: Color): + self.write_u_byte(value.R * 255) + self.write_u_byte(value.G * 255) + self.write_u_byte(value.B * 255) + self.write_u_byte(value.A * 255) + def write_color4(self, value: Color): self.write_float(value.R) self.write_float(value.G) From 3aa6906cf5f852e0d22d8b5f72ba4765dfaa4fc4 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 2 Nov 2023 12:23:05 +0100 Subject: [PATCH 209/599] Add Python 3.12 wheel --- .github/workflows/python-package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index f5130430..99cbc89b 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -38,7 +38,7 @@ jobs: fail-fast: false matrix: os: ["ubuntu-20.04", "windows-2019", "macos-11"] - cp: ["cp37", "cp38", "cp39", "cp310", "cp311"] + cp: ["cp37", "cp38", "cp39", "cp310", "cp311", "cp312"] timeout-minutes: 30 From cc87a54da0d8e15687b52cfd443dba396cf4c9dc Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 2 Nov 2023 12:26:38 +0100 Subject: [PATCH 210/599] Update cibuildwheel version --- .github/workflows/python-package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 99cbc89b..f7c0ac12 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -65,7 +65,7 @@ jobs: platforms: all - name: Build wheels - uses: pypa/cibuildwheel@v2.11.2 + uses: pypa/cibuildwheel@v2.16.2 env: CIBW_ARCHS_LINUX: auto aarch64 CIBW_ARCHS_MACOS: x86_64 arm64 universal2 From 664e9b52e1c85a8248822fac899bf9889b91f93f Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 21 Dec 2023 21:47:29 +0100 Subject: [PATCH 211/599] EndianBinaryReader - fix string reading regex --- UnityPy/streams/EndianBinaryReader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/streams/EndianBinaryReader.py b/UnityPy/streams/EndianBinaryReader.py index 2435846c..4fea9761 100644 --- a/UnityPy/streams/EndianBinaryReader.py +++ b/UnityPy/streams/EndianBinaryReader.py @@ -4,7 +4,7 @@ from typing import List, Union from io import BytesIO, BufferedIOBase, IOBase, BufferedReader -reNot0 = re.compile(b"(.*?)\x00") +reNot0 = re.compile(b"(.*?)\x00", re.S) SYS_ENDIAN = "<" if sys.byteorder == "little" else ">" From 83d736cfc5ad417480787a09ba91060d8a514cfa Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 21 Dec 2023 21:53:28 +0100 Subject: [PATCH 212/599] SerializedFile - hotfix version parsing for custom versions --- UnityPy/files/SerializedFile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index d26efbba..050c22d3 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -328,7 +328,7 @@ def set_version(self, string_version): build_type = re.findall(r"([^\d.])", string_version) self.build_type = BuildType(build_type[0] if build_type else "") version_split = re.split(r"\D", string_version) - self.version = tuple(int(x) for x in version_split) + self.version = tuple(int(x) for x in version_split[:4]) def read_type_tree(self): type_tree = [] From 46e05c557cf695cb63d23bc8f1ba24328729f112 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 21 Dec 2023 21:55:01 +0100 Subject: [PATCH 213/599] Tpk - UnityVersion - set default values for fromList --- UnityPy/helpers/Tpk.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/helpers/Tpk.py b/UnityPy/helpers/Tpk.py index 84b65d42..f523a794 100644 --- a/UnityPy/helpers/Tpk.py +++ b/UnityPy/helpers/Tpk.py @@ -292,7 +292,7 @@ def fromString(version: str) -> UnityVersion: return UnityVersion(version.split(".")) @staticmethod - def fromList(major: int, minor: int, patch: int, build: int) -> UnityVersion: + def fromList(major: int = 0, minor: int = 0, patch: int = 0, build: int = 0) -> UnityVersion: return UnityVersion(major << 48 | minor << 32 | patch << 16 | build) @property From cb7ae496abbb9dff67967a8b9691928863335787 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 21 Dec 2023 22:08:56 +0100 Subject: [PATCH 214/599] AudioClipConverter - hotfix pyfmodex --- UnityPy/export/AudioClipConverter.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/UnityPy/export/AudioClipConverter.py b/UnityPy/export/AudioClipConverter.py index 16d2a02d..85ee15bd 100644 --- a/UnityPy/export/AudioClipConverter.py +++ b/UnityPy/export/AudioClipConverter.py @@ -73,6 +73,9 @@ def cdll_hook(name, *args, **kwargs): return CDLL(name, *args, **kwargs) ctypes.CDLL = cdll_hook + + # hotfix ctypes for pyfmodex for non windows + ctypes.windll = getattr(ctypes, "windll", None) import pyfmodex ctypes.CDLL = CDLL From 50fcaf1ee64773fcc63ed10c95b98480e478fdbf Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 21 Dec 2023 22:36:20 +0100 Subject: [PATCH 215/599] AudioClipConverter - pyfmodex 0.7.1 --- UnityPy/export/AudioClipConverter.py | 29 ++++++++-------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/UnityPy/export/AudioClipConverter.py b/UnityPy/export/AudioClipConverter.py index 85ee15bd..8709fe28 100644 --- a/UnityPy/export/AudioClipConverter.py +++ b/UnityPy/export/AudioClipConverter.py @@ -57,28 +57,15 @@ def import_pyfmodex(): # prepare the environment for pyfmodex if system == "Windows": - # register fmod.dll, so that windll.fmod in pyfmodex can find it - ctypes.WinDLL(os.path.join(LIB_PATH, "fmod.dll")) - import pyfmodex + os.environ["PYFMODEX_DLL_PATH"] = os.path.join(LIB_PATH, "fmod.dll") else: - # It's a bit more complicated on Linux and Mac - # as CDLL doesn't cache the loaded libraries. - # So our only option is to hook into the ctypes loader - # and add the path to the library there. - CDLL = ctypes.CDLL - - def cdll_hook(name, *args, **kwargs): - if name.startswith("libfmod"): - name = os.path.join(LIB_PATH, name) - return CDLL(name, *args, **kwargs) - - ctypes.CDLL = cdll_hook - + ext = "dylib" if system == "Darwin" else "so" + os.environ["PYFMODEX_DLL_PATH"] = os.path.join(LIB_PATH, f"libfmod.{ext}") + # hotfix ctypes for pyfmodex for non windows ctypes.windll = getattr(ctypes, "windll", None) - import pyfmodex - - ctypes.CDLL = CDLL + + import pyfmodex def extract_audioclip_samples(audio) -> dict: @@ -112,7 +99,7 @@ def dump_samples(clip): sound = system.create_sound( bytes(clip.m_AudioData), pyfmodex.flags.MODE.OPENMEMORY, - exinfo=pyfmodex.system.CREATESOUNDEXINFO( + exinfo=pyfmodex.structure_declarations.CREATESOUNDEXINFO( length=clip.m_Size, numchannels=clip.m_Channels, defaultfrequency=clip.m_Frequency, @@ -137,7 +124,7 @@ def dump_samples(clip): def subsound_to_wav(subsound): # get sound settings - length = subsound.get_length(0x00000004) # TIMEUNIT.PCMBYTES + length = subsound.get_length(pyfmodex.enums.TIMEUNIT.PCMBYTES) channels = subsound.format.channels bits = subsound.format.bits sample_rate = int(subsound.default_frequency) From eff8260047bda1a0dbb243c07337f6e1f7ff0110 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 21 Dec 2023 22:37:04 +0100 Subject: [PATCH 216/599] pyproject.toml - enforce pyfmodex >= 0.7.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 6e27f3a5..d38992e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,7 +46,7 @@ dependencies = [ # raw typetree dumping "tabulate", # audio extraction - "pyfmodex", + "pyfmodex >= 0.7.1", # filesystem handling "fsspec", ] From 765b84cb7f57ca8e4c23b3c32a60538668d48c9f Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 21 Dec 2023 22:45:40 +0100 Subject: [PATCH 217/599] bump version to 1.10.7 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 78dc97a3..fe5f4fc5 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.6" +__version__ = "1.10.7" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key From 1890ff3f12f6ec1968baf1a684adc4d7e8866a42 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 21 Dec 2023 22:50:03 +0100 Subject: [PATCH 218/599] python-package.yml - restrict release job to master branch --- .github/workflows/python-package.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index f7c0ac12..531590a7 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -33,6 +33,7 @@ jobs: pytest -v -s release: + if: github.ref == 'refs/heads/master' needs: [test] strategy: fail-fast: false From c07f26fee62e2a79fe9cd635277fd8e282adc005 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 21 Dec 2023 23:02:05 +0100 Subject: [PATCH 219/599] replace python-package.yml with test.yml -> publish.yml (#218) --- .github/workflows/publish.yml | 74 +++++++++++++++++++++ .github/workflows/python-package.yml | 97 ---------------------------- .github/workflows/test.yml | 40 ++++++++++++ 3 files changed, 114 insertions(+), 97 deletions(-) create mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/python-package.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 00000000..9dea9b06 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,74 @@ +name: Publish + +on: + workflow_run: + workflows: Test + branches: master + types: completed + +jobs: + publish: + # `if` required because a workflow run is triggered regardless of + # the result of the previous workflow (see the documentation page) + if: ${{ github.event.workflow_run.conclusion == 'success' }} + needs: [test] + strategy: + fail-fast: false + matrix: + os: ["ubuntu-20.04", "windows-2019", "macos-11"] + cp: ["cp37", "cp38", "cp39", "cp310", "cp311", "cp312"] + + + name: ${{ matrix.os }} - ${{ matrix.cp }} + runs-on: ${{ matrix.os }} + timeout-minutes: 60 + + steps: + - uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip wheel setuptools + python -m pip install --upgrade twine build + + - name: Set up QEMU + if: runner.os == 'Linux' + uses: docker/setup-qemu-action@v2 + with: + platforms: all + + - name: Build wheels + uses: pypa/cibuildwheel@v2.16.2 + env: + CIBW_ARCHS_LINUX: auto aarch64 + CIBW_ARCHS_MACOS: x86_64 arm64 universal2 + CIBW_BUILD: | + ${{ matrix.cp }}-manylinux_x86_64 + ${{ matrix.cp }}-manylinux_i686 + ${{ matrix.cp }}-manylinux_aarch64 + ${{ matrix.cp }}-win_amd64 + ${{ matrix.cp }}-win32 + ${{ matrix.cp }}-macosx_x86_64 + ${{ matrix.cp }}-macosx_arm64 + ${{ matrix.cp }}-macosx_universal2 + # Disabled repair wheel since the fmob lib is not compatible + CIBW_REPAIR_WHEEL_COMMAND: "" + CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'mv {wheel} {dest_dir}/"$(basename {wheel} | sed "s/-linux_/-manylinux_2_17_/")"' + CIBW_TEST_REQUIRES: pytest + CIBW_TEST_COMMAND: pytest -v -s {package}/tests + CIBW_TEST_SKIP: "*-macosx_arm64 *-macosx_universal2:arm64 *-manylinux_i686 *-win32" + + - name: Publish to PyPI + if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' && github.ref == 'refs/heads/master' + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} + run: | + twine upload ./wheelhouse/*.whl --skip-existing + python -m build --sdist + twine upload ./dist/*.tar.gz --skip-existing diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml deleted file mode 100644 index 531590a7..00000000 --- a/.github/workflows/python-package.yml +++ /dev/null @@ -1,97 +0,0 @@ -name: Test and Publish - -on: [push, pull_request, workflow_dispatch] - -jobs: - test: - strategy: - fail-fast: false - matrix: - os: ["ubuntu-latest", "macOS-latest", "windows-latest"] - - runs-on: ${{ matrix.os }} - name: ${{ matrix.os }} - - steps: - - uses: actions/checkout@v3 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: "3.7" - - - name: Install Dependencies - run: | - python -m pip install --upgrade pip pytest - - - name: Install UnityPy - run: | - pip install . - - - name: Run tests - run: | - pytest -v -s - - release: - if: github.ref == 'refs/heads/master' - needs: [test] - strategy: - fail-fast: false - matrix: - os: ["ubuntu-20.04", "windows-2019", "macos-11"] - cp: ["cp37", "cp38", "cp39", "cp310", "cp311", "cp312"] - - timeout-minutes: 30 - - runs-on: ${{ matrix.os }} - name: ${{ matrix.os }} - ${{ matrix.cp }} - - steps: - - uses: actions/checkout@v3 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - - name: Install dependencies - run: | - python -m pip install --upgrade pip wheel setuptools - python -m pip install --upgrade twine build - - - name: Set up QEMU - if: runner.os == 'Linux' - uses: docker/setup-qemu-action@v2 - with: - platforms: all - - - name: Build wheels - uses: pypa/cibuildwheel@v2.16.2 - env: - CIBW_ARCHS_LINUX: auto aarch64 - CIBW_ARCHS_MACOS: x86_64 arm64 universal2 - CIBW_BUILD: | - ${{ matrix.cp }}-manylinux_x86_64 - ${{ matrix.cp }}-manylinux_i686 - ${{ matrix.cp }}-manylinux_aarch64 - ${{ matrix.cp }}-win_amd64 - ${{ matrix.cp }}-win32 - ${{ matrix.cp }}-macosx_x86_64 - ${{ matrix.cp }}-macosx_arm64 - ${{ matrix.cp }}-macosx_universal2 - # Disabled repair wheel since the fmob lib is not compatible - CIBW_REPAIR_WHEEL_COMMAND: "" - CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'mv {wheel} {dest_dir}/"$(basename {wheel} | sed "s/-linux_/-manylinux_2_17_/")"' - CIBW_TEST_REQUIRES: pytest - CIBW_TEST_COMMAND: pytest -v -s {package}/tests - CIBW_TEST_SKIP: "*-macosx_arm64 *-macosx_universal2:arm64 *-manylinux_i686 *-win32" - - - name: Publish to PyPI - if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' && github.ref == 'refs/heads/master' - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} - run: | - twine upload ./wheelhouse/*.whl --skip-existing - python -m build --sdist - twine upload ./dist/*.tar.gz --skip-existing diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..c56b5df2 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,40 @@ +name: Test + +on: + push: + branches: + - master + pull_request: {} + + + +jobs: + test: + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest", "macOS-latest", "windows-latest"] + + runs-on: ${{ matrix.os }} + name: ${{ matrix.os }} + timeout-minutes: 10 + + steps: + - uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.7" + + - name: Install Dependencies + run: | + python -m pip install --upgrade pip pytest + + - name: Install UnityPy + run: | + pip install . + + - name: Run tests + run: | + pytest -v -s From 1704fac694892e9f7fd4bac6bfe8661e8e315c09 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 21 Dec 2023 23:03:52 +0100 Subject: [PATCH 220/599] Fix publish.yml --- .github/workflows/publish.yml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9dea9b06..34fa3371 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -11,7 +11,6 @@ jobs: # `if` required because a workflow run is triggered regardless of # the result of the previous workflow (see the documentation page) if: ${{ github.event.workflow_run.conclusion == 'success' }} - needs: [test] strategy: fail-fast: false matrix: @@ -48,15 +47,15 @@ jobs: CIBW_ARCHS_LINUX: auto aarch64 CIBW_ARCHS_MACOS: x86_64 arm64 universal2 CIBW_BUILD: | - ${{ matrix.cp }}-manylinux_x86_64 - ${{ matrix.cp }}-manylinux_i686 - ${{ matrix.cp }}-manylinux_aarch64 - ${{ matrix.cp }}-win_amd64 - ${{ matrix.cp }}-win32 - ${{ matrix.cp }}-macosx_x86_64 - ${{ matrix.cp }}-macosx_arm64 - ${{ matrix.cp }}-macosx_universal2 - # Disabled repair wheel since the fmob lib is not compatible + ${{ matrix.cp }}-manylinux_x86_64 + ${{ matrix.cp }}-manylinux_i686 + ${{ matrix.cp }}-manylinux_aarch64 + ${{ matrix.cp }}-win_amd64 + ${{ matrix.cp }}-win32 + ${{ matrix.cp }}-macosx_x86_64 + ${{ matrix.cp }}-macosx_arm64 + ${{ matrix.cp }}-macosx_universal2 + # Disabled repair wheel since the fmob lib is not compatible CIBW_REPAIR_WHEEL_COMMAND: "" CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'mv {wheel} {dest_dir}/"$(basename {wheel} | sed "s/-linux_/-manylinux_2_17_/")"' CIBW_TEST_REQUIRES: pytest From c731cb0d7685851ac18ec695c757308bd2f92c99 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 2 Jan 2024 00:47:44 +0100 Subject: [PATCH 221/599] Switch Swizzle Support (#219) * Add integer texture formats, rg decoder and rgb9e5float decoder * Create SwitchDeswizzle.py * Texture2DDecoder - fix typo * implement Switch Texture Deswizzling * hotfix TextureSwizzler.c --- UnityPy/enums/TextureFormat.py | 19 ++- UnityPy/export/Texture2DConverter.py | 81 +++++++++++- UnityPy/helpers/TextureSwizzler.py | 180 +++++++++++++++++++++++++++ UnityPyBoost/TextureSwizzler.c | 96 ++++++++++++++ UnityPyBoost/TextureSwizzler.h | 5 + UnityPyBoost/UnityPyBoost.c | 9 +- UnityPyBoost/setup.py | 8 +- 7 files changed, 382 insertions(+), 16 deletions(-) create mode 100644 UnityPy/helpers/TextureSwizzler.py create mode 100644 UnityPyBoost/TextureSwizzler.c create mode 100644 UnityPyBoost/TextureSwizzler.h diff --git a/UnityPy/enums/TextureFormat.py b/UnityPy/enums/TextureFormat.py index 1e3085ae..68d5dc99 100644 --- a/UnityPy/enums/TextureFormat.py +++ b/UnityPy/enums/TextureFormat.py @@ -7,9 +7,12 @@ class TextureFormat(IntEnum): RGB24 = 3 RGBA32 = 4 ARGB32 = 5 + ARGBFloat = 6 RGB565 = 7 + BGR24 = 8 R16 = 9 DXT1 = 10 + DXT3 = 11 DXT5 = 12 RGBA4444 = 13 BGRA32 = 14 @@ -21,10 +24,11 @@ class TextureFormat(IntEnum): RGBAFloat = 20 YUY2 = 21 RGB9e5Float = 22 - BC4 = 26 - BC5 = 27 + RGBFloat = 23 BC6H = 24 BC7 = 25 + BC4 = 26 + BC5 = 27 DXT1Crunched = 28 DXT5Crunched = 29 PVRTC_RGB2 = 30 @@ -65,3 +69,14 @@ class TextureFormat(IntEnum): ASTC_HDR_8x8 = 69 ASTC_HDR_10x10 = 70 ASTC_HDR_12x12 = 71 + RG32 = 72 + RGB48 = 73 + RGBA64 = 74 + R8_SIGNED = 75 + RG16_SIGNED = 76 + RGB24_SIGNED = 77 + RGBA32_SIGNED = 78 + R16_SIGNED = 79 + RG32_SIGNED = 80 + RGB48_SIGNED = 81 + RGBA64_SIGNED = 82 diff --git a/UnityPy/export/Texture2DConverter.py b/UnityPy/export/Texture2DConverter.py index b757a3c7..331cc23d 100644 --- a/UnityPy/export/Texture2DConverter.py +++ b/UnityPy/export/Texture2DConverter.py @@ -5,6 +5,7 @@ from io import BytesIO import struct from ..enums import TextureFormat, BuildTarget +from ..helpers import TextureSwizzler TF = TextureFormat @@ -133,8 +134,20 @@ def get_image_from_texture2d(texture_2d, flip=True) -> Image.Image: image_data, texture_2d.m_Width, texture_2d.m_Height, *selection[1:] ) + if texture_2d.platform == BuildTarget.Switch and getattr( + texture_2d, "m_PlatformBlob", None + ): + gobsPerBlock = TextureSwizzler.get_switch_gobs_per_block( + texture_2d.m_PlatformBlob + ) + blockSize = TextureSwizzler.TEXTUREFORMAT_BLOCK_SIZE_MAP[ + texture_2d.m_TextureFormat + ] + img = TextureSwizzler.switch_deswizzle(img, blockSize, gobsPerBlock) + if img and flip: return img.transpose(Image.FLIP_TOP_BOTTOM) + return img @@ -241,6 +254,48 @@ def half( return pillow(image_data, width, height, mode, codec, args, swap) +RG_PADDING_MAP = { + "RGE": 16, + "RGF": 32, + "RG;16": 16, + "RG;16s": 16, + "RG;8s": 8, +} + + +def rg( + image_data: bytes, width: int, height: int, mode: str, codec: str, args +) -> Image.Image: + # convert rg to rgb by adding in zeroes + padding_size = RG_PADDING_MAP[codec] + stream = BytesIO(image_data) + padding = bytes(padding_size) + rgb_data = b"".join( + stream.read(padding_size * 2) + padding + for _ in range(image_data / (2 * padding_size)) + ) + if codec == "RGE": + return half(rgb_data, width, height, mode, "RGB", args) + else: + return pillow(rgb_data, width, height, mode, codec.replace("RG", "RGB"), args) + + +def rgb9e5float(image_data: bytes, width: int, height: int): + rgb = bytearray(width * height * 3) + for i, (n,) in enumerate(struct.iter_unpack("> 27 & 0x1F + scalef = 2 ** (scale - 24) + scaleb = scalef * 255.0 + b = (n >> 18 & 0x1FF) * scaleb + g = (n >> 9 & 0x1FF) * scaleb + r = (n & 0x1FF) * scaleb + + offset = i * 3 + rgb[offset : offset + 3] = [r, g, b] + + return Image.frombytes("RGB", (width, height), rgb, "raw", "RGB") + + CONV_TABLE = { # FORMAT FUNC #ARGS..... #----------------------- -------- -------- ------------ ----------------- ------------ ---------- @@ -249,32 +304,35 @@ def half( ( TF.RGB24, pillow, "RGB", "raw", "RGB" ), ( TF.RGBA32, pillow, "RGBA", "raw", "RGBA" ), ( TF.ARGB32, pillow, "RGBA", "raw", "ARGB" ), +( TF.ARGBFloat, pillow, "RGBA", "raw", "RGBAF", (2,1,0,3) ), ( TF.RGB565, pillow, "RGB", "raw", "BGR;16" ), +( TF.BGR24, pillow, "RGB", "raw", "BGR" ), ( TF.R8, pillow, "RGB", "raw", "R" ), ( TF.R16, pillow, "RGB", "raw", "R;16" ), -( TF.RG16, ), +( TF.RG16, rg, "RGB", "raw", "RG" ), ( TF.DXT1, pillow, "RGBA", "bcn", 1 ), +( TF.DXT3, pillow, "RGBA", "bcn", 2 ), ( TF.DXT5, pillow, "RGBA", "bcn", 3 ), ( TF.RGBA4444, pillow, "RGBA", "raw", 'RGBA;4B', (3,2,1,0) ), ( TF.BGRA32, pillow, "RGBA", "raw", "BGRA" ), ( TF.RHalf, half, "R", "raw", "R" ), -( TF.RGHalf, ), +( TF.RGHalf, rg, "RGB", "raw", "RGE" ), ( TF.RGBAHalf, half, "RGB", "raw", "RGB" ), ( TF.RFloat, pillow, "RGB", "raw", "RF" ), -( TF.RGFloat, ), +( TF.RGFloat, rg, "RGB", "raw", "RGF" ), ( TF.RGBAFloat, pillow, "RGBA", "raw", "RGBAF" ), ( TF.YUY2, ), -( TF.RGB9e5Float, ), +( TF.RGB9e5Float, rgb9e5float ), ( TF.BC4, pillow, "L", "bcn", 4 ), ( TF.BC5, pillow, "RGB", "bcn", 5 ), ( TF.BC6H, pillow, "RGBA", "bcn", 6 ), ( TF.BC7, pillow, "RGBA", "bcn", 7 ), ( TF.DXT1Crunched, pillow, "RGBA", "bcn", 1 ), ( TF.DXT5Crunched, pillow, "RGBA", "bcn", 3 ), -( TF.PVRTC_RGB2, pvrtc, True ), +( TF.PVRTC_RGB2, pvrtc, True ), ( TF.PVRTC_RGBA2, pvrtc, True ), ( TF.PVRTC_RGB4, pvrtc, False ), -( TF.PVRTC_RGBA4, pvrtc, False ), +( TF.PVRTC_RGBA4, pvrtc, False ), ( TF.ETC_RGB4, etc, (1,) ), ( TF.ATC_RGB4, atc, False ), ( TF.ATC_RGBA8, atc, True ), @@ -307,6 +365,17 @@ def half( ( TF.ASTC_HDR_8x8, astc, (8,8) ), ( TF.ASTC_HDR_10x10, astc, (10,10) ), ( TF.ASTC_HDR_12x12, astc, (12,12) ), +( TF.RG32, rg, "RGB", "raw", "RG;16" ), +( TF.RGB48, pillow, "RGB", "raw", "RGB;16" ), +( TF.RGBA64, pillow, "RGBA", "raw", "RGBA;16" ), +( TF.R8_SIGNED, pillow, "R", "raw", "R;8s" ), +( TF.RG16_SIGNED, rg, "RGB", "raw", "RG;8s" ), +( TF.RGB24_SIGNED, pillow, "RGB", "raw", "RGB;8s" ), +( TF.RGBA32_SIGNED, pillow, "RGBA", "raw", "RGBA;8s" ), +( TF.R16_SIGNED, pillow, "R", "raw", "R;16s" ), +( TF.RG32_SIGNED, rg, "RGB", "raw", "RG;16s" ), +( TF.RGB48_SIGNED, pillow, "RGB", "raw", "RGB;16s" ), +( TF.RGBA64_SIGNED, pillow, "RGBA", "raw", "RGBA;16s" ), } # format conv_table to a dict diff --git a/UnityPy/helpers/TextureSwizzler.py b/UnityPy/helpers/TextureSwizzler.py new file mode 100644 index 00000000..9f9dafaf --- /dev/null +++ b/UnityPy/helpers/TextureSwizzler.py @@ -0,0 +1,180 @@ +# based on https://github.com/nesrak1/UABEA/blob/master/TexturePlugin/Texture2DSwitchDeswizzler.cs +from typing import Dict, Tuple + +from PIL import Image + +from ..enums import TextureFormat + +try: + from ..UnityPyBoost import switch_deswizzle as switch_deswizzle_c +except: + switch_deswizzle_c = None + + +GOB_X_BLOCK_COUNT = 4 +GOB_Y_BLOCK_COUNT = 8 +BLOCKS_IN_GOB = GOB_X_BLOCK_COUNT * GOB_Y_BLOCK_COUNT + + +def ceil_divide(a: int, b: int) -> int: + return (a + b - 1) / b + + +def switch_deswizzle( + src_image: Image.Image, block_size: Tuple[int, int], gobs_per_block: int +) -> Image.Image: + src_bytes = src_image.tobytes() + pixel_width = len(src_image.mode) + + if switch_deswizzle_c: + dst_bytes = switch_deswizzle_c( + src_bytes, pixel_width, *src_image.size, *block_size, gobs_per_block + ) + return Image.frombytes(src_image.mode, src_image.size, dst_bytes) + + dst_bytes = bytearray(len(src_bytes)) + + width, height = src_image.size + block_width, block_height = block_size + block_count_x = width // block_width + block_count_y = height // block_height + + gob_count_x = block_count_x // GOB_X_BLOCK_COUNT + gob_count_y = block_count_y // GOB_Y_BLOCK_COUNT + + src_x = 0 + src_y = 0 + + block_pixel_width = block_width * pixel_width + row_pixel_width = width * pixel_width + data_size = len(src_bytes) + + GOB_MAP = [ + (((l >> 3) & 0b10) | ((l >> 1) & 0b1), ((l >> 1) & 0b110) | (l & 0b1)) + for l in range(BLOCKS_IN_GOB) + ] + + for y in range(gob_count_y): + for x in range(gob_count_x): + for k in range(gobs_per_block): + for gob_x, gob_y in GOB_MAP: + gob_dst_x = x * GOB_X_BLOCK_COUNT + gob_x + gob_dst_y = (y * gobs_per_block + k) * GOB_Y_BLOCK_COUNT + gob_y + + src_offset = ( + src_x * block_width + (src_y * block_height) * width + ) * pixel_width + dst_offset = ( + gob_dst_x * block_width + (gob_dst_y * block_height) * width + ) * pixel_width + + for by in range(block_height): + if dst_offset > data_size or src_offset > data_size: + break + copy_width = block_pixel_width + if (data_size - src_offset) < block_pixel_width: + copy_width = data_size - src_offset + elif (data_size - dst_offset) < block_pixel_width: + copy_width = data_size - dst_offset + + dst_bytes[dst_offset : dst_offset + copy_width] = src_bytes[ + src_offset : src_offset + copy_width + ] + src_offset += row_pixel_width + dst_offset += row_pixel_width + + src_x += 1 + if src_x >= block_count_x: + src_x = 0 + src_y += 1 + + return Image.frombytes(src_image.mode, src_image.size, dst_bytes) + + +def switch_swizzle( + src_image: Image.Image, block_size: Tuple[int, int], gobs_per_block: int +) -> Image.Image: + dstImage = Image.new(src_image.mode, src_image.size) + + blockCountX, blockCountY = map(ceil_divide, zip(src_image.size, block_size)) + + gob_count_x = blockCountX / GOB_X_BLOCK_COUNT + gob_count_y = blockCountY / GOB_Y_BLOCK_COUNT + + dstX = 0 + dstY = 0 + + for i in range(gob_count_y): + for j in range(gob_count_x): + for k in range(gobs_per_block): + for l in range(BLOCKS_IN_GOB): + # todo: use table for speedy boi + gobX = ((l >> 3) & 0b10) | ((l >> 1) & 0b1) + gobY = ((l >> 1) & 0b110) | (l & 0b1) + gobSrcX = j * GOB_X_BLOCK_COUNT + gobX + gobSrcY = (i * gobs_per_block + k) * GOB_Y_BLOCK_COUNT + gobY + CopyBlock( + src_image, dstImage, gobSrcX, gobSrcY, dstX, dstY, *block_size + ) + + dstX += 1 + if dstX >= blockCountX: + dstX = 0 + dstY += 1 + + return dstImage + + +# this should be the amount of pixels that can fit 16 bytes +TEXTUREFORMAT_BLOCK_SIZE_MAP: Dict[TextureFormat, Tuple[int, int]] = { + TextureFormat.Alpha8: [16, 1], # 1 byte per pixel + TextureFormat.ARGB4444: [8, 1], # 2 bytes per pixel + TextureFormat.RGBA32: [4, 1], # 4 bytes per pixel + TextureFormat.ARGB32: [4, 1], # 4 bytes per pixel + TextureFormat.ARGBFloat: [1, 1], # 16 bytes per pixel (?) + TextureFormat.RGB565: [8, 1], # 2 bytes per pixel + TextureFormat.R16: [8, 1], # 2 bytes per pixel + TextureFormat.DXT1: [8, 4], # 8 bytes per 4x4=16 pixels + TextureFormat.DXT5: [4, 4], # 16 bytes per 4x4=16 pixels + TextureFormat.RGBA4444: [8, 1], # 2 bytes per pixel + TextureFormat.BGRA32: [4, 1], # 4 bytes per pixel + TextureFormat.BC6H: [4, 4], # 16 bytes per 4x4=16 pixels + TextureFormat.BC7: [4, 4], # 16 bytes per 4x4=16 pixels + TextureFormat.BC4: [8, 4], # 8 bytes per 4x4=16 pixels + TextureFormat.BC5: [4, 4], # 16 bytes per 4x4=16 pixels + TextureFormat.ASTC_RGB_4x4: [4, 4], # 16 bytes per 4x4=16 pixels + TextureFormat.ASTC_RGB_5x5: [5, 5], # 16 bytes per 5x5=25 pixels + TextureFormat.ASTC_RGB_6x6: [6, 6], # 16 bytes per 6x6=36 pixels + TextureFormat.ASTC_RGB_8x8: [8, 8], # 16 bytes per 8x8=64 pixels + TextureFormat.ASTC_RGB_10x10: [10, 10], # 16 bytes per 10x10=100 pixels + TextureFormat.ASTC_RGB_12x12: [12, 12], # 16 bytes per 12x12=144 pixels + TextureFormat.ASTC_RGBA_4x4: [4, 4], # 16 bytes per 4x4=16 pixels + TextureFormat.ASTC_RGBA_5x5: [5, 5], # 16 bytes per 5x5=25 pixels + TextureFormat.ASTC_RGBA_6x6: [6, 6], # 16 bytes per 6x6=36 pixels + TextureFormat.ASTC_RGBA_8x8: [8, 8], # 16 bytes per 8x8=64 pixels + TextureFormat.ASTC_RGBA_10x10: [10, 10], # 16 bytes per 10x10=100 pixels + TextureFormat.ASTC_RGBA_12x12: [12, 12], # 16 bytes per 12x12=144 pixels + TextureFormat.RG16: [8, 1], # 2 bytes per pixel + TextureFormat.R8: [16, 1], # 1 byte per pixel +} + + +def get_padded_texture_size( + width: int, height: int, block_width: int, block_height: int, gobs_per_block: int +): + width = ( + ceil_divide(width, block_width * GOB_X_BLOCK_COUNT) + * block_width + * GOB_X_BLOCK_COUNT + ) + height = ( + ceil_divide(height, block_height * GOB_Y_BLOCK_COUNT * gobs_per_block) + * block_height + * GOB_Y_BLOCK_COUNT + * gobs_per_block + ) + return width, height + + +def get_switch_gobs_per_block(platform_blob: bytes) -> int: + return 1 << int.from_bytes(platform_blob[8:12], "little") diff --git a/UnityPyBoost/TextureSwizzler.c b/UnityPyBoost/TextureSwizzler.c new file mode 100644 index 00000000..c75656fc --- /dev/null +++ b/UnityPyBoost/TextureSwizzler.c @@ -0,0 +1,96 @@ +#include + +const uint32_t GOB_X_BLOCK_COUNT = 4; +const uint32_t GOB_Y_BLOCK_COUNT = 8; +const uint32_t BLOCKS_IN_GOB = 32; // GOB_X_BLOCK_COUNT * GOB_Y_BLOCK_COUNT; + +const uint32_t GOB_MAP[32][2] = {{0, 0}, {0, 1}, {1, 0}, {1, 1}, {0, 2}, {0, 3}, {1, 2}, {1, 3}, {0, 4}, {0, 5}, {1, 4}, {1, 5}, {0, 6}, {0, 7}, {1, 6}, {1, 7}, {2, 0}, {2, 1}, {3, 0}, {3, 1}, {2, 2}, {2, 3}, {3, 2}, {3, 3}, {2, 4}, {2, 5}, {3, 4}, {3, 5}, {2, 6}, {2, 7}, {3, 6}, {3, 7}}; + +PyObject *switch_deswizzle(PyObject *self, PyObject *args) +{ + // define vars + uint8_t *src_data; + Py_ssize_t data_size; + uint32_t pixel_width; + + uint32_t width; + uint32_t height; + uint32_t block_width; + uint32_t block_height; + uint32_t gobs_per_block; + + if (!PyArg_ParseTuple(args, "y#IIIIII", &src_data, &data_size, &pixel_width, &width, &height, &block_width, &block_height, &gobs_per_block)) + return NULL; + + char *dst_data = (char *)malloc(data_size); + + uint32_t block_count_x = width / block_width; + uint32_t block_count_y = height / block_height; + + uint32_t gob_count_x = block_count_x / GOB_X_BLOCK_COUNT; + uint32_t gob_count_y = block_count_y / GOB_Y_BLOCK_COUNT; + + uint32_t src_x = 0; + uint32_t src_y = 0; + + uint32_t block_pixel_width = block_width * pixel_width; + uint32_t row_pixel_width = width * pixel_width; + + uint32_t gob_x, gob_y, gob_dst_x, gob_dst_y, src_offset, dst_offset; + + for (uint32_t y = 0; y < gob_count_y; y++) + { + for (uint32_t x = 0; x < gob_count_x; x++) + { + for (uint32_t k = 0; k < gobs_per_block; k++) + { + for (uint32_t l = 0; l < BLOCKS_IN_GOB; l++) + { + // printf("%d/%d, %d/%d, %d/%d, %d/%d\n", y, gob_count_y, x, gob_count_x, k, gobs_per_block, l, gobs_per_block); + gob_x = ((l >> 3) & 0b10) | ((l >> 1) & 0b1); + gob_y = ((l >> 1) & 0b110) | (l & 0b1); + gob_dst_x = x * GOB_X_BLOCK_COUNT + gob_x; + gob_dst_y = (y * gobs_per_block + k) * GOB_Y_BLOCK_COUNT + gob_y; + + src_offset = (src_x * block_width + (src_y * block_height) * width) * pixel_width; + dst_offset = (gob_dst_x * block_width + (gob_dst_y * block_height) * width) * pixel_width; + + for (uint32_t by = 0; by < block_height; by++) + { + if ((dst_offset > data_size) || (src_offset > data_size)) + { + break; + } + uint32_t copy_width = block_pixel_width; + if ((data_size - src_offset) < block_pixel_width) + { + copy_width = data_size - src_offset; + } + else if ((data_size - dst_offset) < block_pixel_width) + { + copy_width = data_size - dst_offset; + } + + memcpy( + dst_data + dst_offset, + src_data + src_offset, + copy_width); + src_offset += row_pixel_width; + dst_offset += row_pixel_width; + } + src_x += 1; + if (src_x >= block_count_x) + { + src_x = 0; + src_y += 1; + } + } + } + } + } + + PyObject *ret = PyBytes_FromStringAndSize(dst_data, data_size); + free(dst_data); + + return ret; +} diff --git a/UnityPyBoost/TextureSwizzler.h b/UnityPyBoost/TextureSwizzler.h new file mode 100644 index 00000000..0df0aa7c --- /dev/null +++ b/UnityPyBoost/TextureSwizzler.h @@ -0,0 +1,5 @@ +#define PY_SSIZE_T_CLEAN +#pragma once +#include + +PyObject *switch_deswizzle(PyObject *self, PyObject *args); diff --git a/UnityPyBoost/UnityPyBoost.c b/UnityPyBoost/UnityPyBoost.c index 48745d35..84ced41f 100644 --- a/UnityPyBoost/UnityPyBoost.c +++ b/UnityPyBoost/UnityPyBoost.c @@ -3,6 +3,7 @@ #include #include "AnimationClip.h" #include "Mesh.h" +#include "TextureSwizzler.h" #include "TypeTreeHelper.h" /* Mesh.py */ @@ -23,7 +24,11 @@ static struct PyMethodDef method_table[] = { {"read_typetree", (PyCFunction)read_typetree, METH_VARARGS, - "replacement for TypeTreeHelper.read_typetree"}, + "replacement for TypeTreeHelper.read_typetree"}, + {"switch_deswizzle", + (PyCFunction)switch_deswizzle, + METH_VARARGS, + "replacement for TextureSwizzler.switch_deswizzle"}, {NULL, NULL, 0, @@ -46,7 +51,7 @@ static PyModuleDef UnityPyBoost_module = { // The module init function PyMODINIT_FUNC PyInit_UnityPyBoost(void) { - PyObject* module = PyModule_Create(&UnityPyBoost_module); + PyObject *module = PyModule_Create(&UnityPyBoost_module); add_typetreenode_to_module(module); return module; } \ No newline at end of file diff --git a/UnityPyBoost/setup.py b/UnityPyBoost/setup.py index fc197c1f..d5986429 100644 --- a/UnityPyBoost/setup.py +++ b/UnityPyBoost/setup.py @@ -1,6 +1,5 @@ -from setuptools import setup, Extension, find_packages +from setuptools import setup, Extension import os -import platform local = os.path.dirname(os.path.abspath(__file__)) @@ -12,10 +11,7 @@ ext_modules=[ Extension( "UnityPyBoost", - [ - os.path.join(local, f) - for f in os.listdir(local) if f.endswith(".c") - ], + [os.path.join(local, f) for f in os.listdir(local) if f.endswith(".c")], language="c", include_dirs=[local], ) From afd24bacd1a610b7b1b3cf91fb4a24ac4f15ba87 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 2 Jan 2024 10:43:44 +0100 Subject: [PATCH 222/599] add direct m4a export (#221) --- UnityPy/export/AudioClipConverter.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/UnityPy/export/AudioClipConverter.py b/UnityPy/export/AudioClipConverter.py index 8709fe28..56a50ca4 100644 --- a/UnityPy/export/AudioClipConverter.py +++ b/UnityPy/export/AudioClipConverter.py @@ -61,10 +61,10 @@ def import_pyfmodex(): else: ext = "dylib" if system == "Darwin" else "so" os.environ["PYFMODEX_DLL_PATH"] = os.path.join(LIB_PATH, f"libfmod.{ext}") - + # hotfix ctypes for pyfmodex for non windows ctypes.windll = getattr(ctypes, "windll", None) - + import pyfmodex @@ -79,11 +79,13 @@ def extract_audioclip_samples(audio) -> dict: # eg. StreamedResource not available return {} - magic = memoryview(audio.m_AudioData)[:4] - if magic == b"OggS": - return {"%s.ogg" % audio.name: audio.m_AudioData} - elif magic == b"RIFF": - return {"%s.wav" % audio.name: audio.m_AudioData} + magic = memoryview(audio.m_AudioData)[:8] + if magic[:4] == b"OggS": + return {f"{audio.m_Name}.ogg": audio.m_AudioData} + elif magic[:4] == b"RIFF": + return {f"{audio.m_Name}.wav": audio.m_AudioData} + elif magic[4:8] == b"ftyp": + return {f"{audio.m_Name}.m4a": audio.m_AudioData} return dump_samples(audio) From 04bf4694145684b7092c9c6cfa139d8565a60686 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 2 Jan 2024 10:58:48 +0100 Subject: [PATCH 223/599] 1.10.8 bump --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index fe5f4fc5..ba0b3fd3 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.7" +__version__ = "1.10.8" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key From ae96f2c903fa7935dd8c8c0e2421bacb47e0e802 Mon Sep 17 00:00:00 2001 From: ysmu Date: Mon, 8 Jan 2024 01:36:52 -0800 Subject: [PATCH 224/599] support reading of AnimationEvent from AnimationClip (#222) --- UnityPy/classes/AnimationClip.py | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/UnityPy/classes/AnimationClip.py b/UnityPy/classes/AnimationClip.py index 9176ab1d..531f87f3 100644 --- a/UnityPy/classes/AnimationClip.py +++ b/UnityPy/classes/AnimationClip.py @@ -552,6 +552,21 @@ def FindBinding(self, index): return None +class AnimationEvent: + def __init__(self, reader): + version = reader.version + self.time = reader.read_float() + self.functionName = reader.read_aligned_string() + self.data = reader.read_aligned_string() + self.objectReferenceParameter = PPtr(reader) + self.floatParameter = reader.read_float() + + if version > (3, ): + self.intParameter = reader.read_int() + + self.messageOptions = reader.read_int() + + class AnimationType(IntEnum): kLegacy = (1,) kGeneric = (2,) @@ -609,11 +624,12 @@ def __init__(self, reader): if version >= (4, 3): # 4.3 and up self.m_ClipBindingConstant = AnimationClipBindingConstant(reader) + if version >= (2018, 3): + self.m_HasGenericRootTransform = reader.read_boolean() + self.m_HasMotionFloatCurves = reader.read_boolean() + reader.align_stream() -# m_HasGenericRootTransform 2018.3 -# m_HasMotionFloatCurves 2018.3 -# numEvents = reader.read_int() -# self.m_Events = [ -# AnimationEvent(reader) -# for _ in range(numEvents) -# ] + numEvents = self.reader.read_int() + self.m_Events = [AnimationEvent(self.reader) for _ in range(numEvents)] + if version >= (2017, ): + reader.align_stream() From a9031e97483dd0a1c209c1036c81a5f86d9800a1 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 8 Jan 2024 10:37:36 +0100 Subject: [PATCH 225/599] bump to 1.10.9 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index ba0b3fd3..ff472109 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.8" +__version__ = "1.10.9" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key From 2bd6efbeab99da604cd1e8b3a684eda7bcbd58bb Mon Sep 17 00:00:00 2001 From: "Clarence \"Sparr\" Risher" Date: Mon, 8 Jan 2024 04:47:58 -0500 Subject: [PATCH 226/599] Handle case where shader platforms and shader programs counts don't match. Hacky. (#137) --- UnityPy/export/ShaderConverter.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/UnityPy/export/ShaderConverter.py b/UnityPy/export/ShaderConverter.py index fb59ba61..5ac6b4b9 100644 --- a/UnityPy/export/ShaderConverter.py +++ b/UnityPy/export/ShaderConverter.py @@ -35,6 +35,9 @@ def ConvertSerializedShader(m_Shader): platformNumber = len(m_Shader.platforms) for i in range(platformNumber): + if i >= len(m_Shader.compressedLengths) or i >= len(m_Shader.decompressedLengths): + # m_Shader.platforms shouldn't be longer than m_shader.[de]compressedLengths, but it is + break compressedSize = m_Shader.compressedLengths[i] decompressedSize = m_Shader.decompressedLengths[i] @@ -145,6 +148,10 @@ def ConvertSerializedSubPrograms(m_SubPrograms, platforms, shaderPrograms): subPrograms = list(_programList) isTier = len(subPrograms) > 1 for i in range(len(platforms)): + if i >= len(shaderPrograms): + # platforms shouldn't be longer than shaderPrograms, but it is + break + platform = platforms[i] if CheckGpuProgramUsable(platform, programKey): From 5b055bd2ee43c16ae87cc7cd3ef7dbbd484a8a34 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 8 Jan 2024 10:48:30 +0100 Subject: [PATCH 227/599] bump to 1.10.10 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index ff472109..94f8644a 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.9" +__version__ = "1.10.10" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key From 4a379303e28d932c3d9dd2c8b7b895ca6d68e1dc Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 8 Jan 2024 21:18:45 +0100 Subject: [PATCH 228/599] README.md - Windows dev --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index e58e9131..90d8646a 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,9 @@ python -m pip install . #### Windows Visual C++ Redistributable is required for the brotli dependency. +In case a new(ish) Python version is used, it can happen that the C-dependencies of UnityPy might not be precompiled for this version. +In such cases the user either has to report this as issue or follow the steps of [this issue](https://github.com/K0lb3/UnityPy/issues/223) to compile it oneself. +Another option for the user is downgrading Python to the latest version supported by UnityPy. For this see the python version badge at the top of the README. ### Crash without warning/error From 006883bf735e8d9f32032a433226db9610414426 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 8 Jan 2024 21:19:13 +0100 Subject: [PATCH 229/599] pyproject.toml - update supported python versions --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index d38992e2..19b9a6a6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,7 @@ classifiers = [ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Games/Entertainment", "Topic :: Multimedia :: Graphics", From a090a09d81e835bd18bbf6b7e73b6fce22ad461d Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 13 Jan 2024 16:28:49 +0100 Subject: [PATCH 230/599] 1.10.11 - add texture2darray support (#225) * 1.10.11 - add texture2darray support resolves #224 * fix get_image_from_texture2d * return images for Texture2DArray instead of image * Update README.md * fix get_image_from_texture2d --- README.md | 23 +++ UnityPy/__init__.py | 2 +- UnityPy/classes/Texture2DArray.py | 84 ++++++++ UnityPy/classes/__init__.py | 1 + UnityPy/enums/GraphicsFormat.py | 277 +++++++++++++++++++++++++++ UnityPy/enums/__init__.py | 1 + UnityPy/export/Texture2DConverter.py | 212 ++++++++++---------- 7 files changed, 499 insertions(+), 101 deletions(-) create mode 100644 UnityPy/classes/Texture2DArray.py create mode 100644 UnityPy/enums/GraphicsFormat.py diff --git a/README.md b/README.md index 90d8646a..854177ce 100644 --- a/README.md +++ b/README.md @@ -368,6 +368,29 @@ if mesh_renderer.m_GameObject: mesh_renderer.export(export_dir) ``` +### [Texture2DArray](UnityPy/classes/Texture2DArray.py) + +WARNING - not well tested + +- `.name` +- `.image` converts the texture2darray into a `PIL.Image` +- `.m_Width` - texture width (int) +- `.m_Height` - texture height (int) + +**Export** + +```python +import os +from PIL import Image +for obj in env.objects: + if obj.type.name == "Texture2DArray": + # export texture + data = obj.read() + for i, image in enumerate(data.images): + image.save(os.path.join(path, f"{data.m_Name}_{i}.png")) + # editing isn't supported yet! +``` + ## Custom-Filesystem UnityPy uses [fsspec](https://github.com/fsspec/filesystem_spec) under the hood to manage all filesystem interactions. diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 94f8644a..901a6a0e 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.10" +__version__ = "1.10.11" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key diff --git a/UnityPy/classes/Texture2DArray.py b/UnityPy/classes/Texture2DArray.py new file mode 100644 index 00000000..5ba6f0b2 --- /dev/null +++ b/UnityPy/classes/Texture2DArray.py @@ -0,0 +1,84 @@ +from typing import Optional, List + +from .Texture import Texture +from .Texture2D import StreamingInfo +from ..enums.GraphicsFormat import GraphicsFormat, GRAPHICS_TO_TEXTURE_MAP +from ..export import Texture2DConverter +from ..helpers.ResourceReader import get_resource_data +from PIL import Image + + +class GLTextureSettings: + m_Aniso: int + m_FilterMode: int + m_MipBias: float + m_WrapMode: Optional[int] = None + m_WrapU: Optional[int] = None + m_WrapV: Optional[int] = None + m_WrapW: Optional[int] = None + + def __init__(self, reader): + self.__dict__.update(**self.read_typetree(wrap=True).__dict__) + + +class Texture2DArray(Texture): + image_data: bytes + m_ColorSpace: int + m_DataSize: int + m_Depth: int + m_Format: GraphicsFormat + m_Height: int + m_IsReadable: bool + m_MipCount: int + m_Name: str + m_TextureSettings: GLTextureSettings + m_Width: int + m_DownscaleFallback: Optional[bool] = None + m_ForcedFallbackFormat: Optional[int] = None + m_IgnoreMipmapLimit: Optional[bool] = None + m_IsAlphaChannelOptional: Optional[bool] = None + m_MipmapLimitGroupName: Optional[str] = None + m_MipsStripped: Optional[int] = None + m_StreamData: Optional[StreamingInfo] = None + m_UsageMode: Optional[int] = None + + def __init__(self, reader): + super().__init__(reader=reader) + self.__dict__.update(**reader.read_typetree(wrap=True).__dict__) + self.m_TextureSettings.__class__ = GLTextureSettings + self.m_Format = GraphicsFormat(self.m_Format) + + @property + def image_data(self): + data = getattr(self, "image data", None) + if data is None: + data = get_resource_data( + self.m_StreamData.path, + self.assets_file, + self.m_StreamData.offset, + self.m_StreamData.size, + ) + return data + + @property + def images(self) -> List[Image.Image]: + texture_format = GRAPHICS_TO_TEXTURE_MAP.get(self.m_Format) + if not texture_format: + raise NotImplementedError( + f"GraphicsFormat {self.m_Format} not supported yet" + ) + + # calculate the number of textures in the array + texture_size = self.m_DataSize // self.m_Depth + return [ + Texture2DConverter.parse_image_data( + self.image_data[offset : offset + texture_size], + self.m_Width, + self.m_Height, + texture_format, + self.version, + 0, + None, + ) + for offset in range(0, self.m_DataSize, texture_size) + ] diff --git a/UnityPy/classes/__init__.py b/UnityPy/classes/__init__.py index 301aac1f..5cae3aac 100644 --- a/UnityPy/classes/__init__.py +++ b/UnityPy/classes/__init__.py @@ -34,5 +34,6 @@ from .TextAsset import TextAsset from .Texture import Texture from .Texture2D import Texture2D +from .Texture2DArray import Texture2DArray from .Transform import Transform from .VideoClip import VideoClip diff --git a/UnityPy/enums/GraphicsFormat.py b/UnityPy/enums/GraphicsFormat.py new file mode 100644 index 00000000..07bb568c --- /dev/null +++ b/UnityPy/enums/GraphicsFormat.py @@ -0,0 +1,277 @@ +from enum import IntEnum + +from .TextureFormat import TextureFormat + + +class GraphicsFormat(IntEnum): + NONE = 0 + R8_SRGB = 1 + R8G8_SRGB = 2 + R8G8B8_SRGB = 3 + R8G8B8A8_SRGB = 4 + + R8_UNorm = 5 + R8G8_UNorm = 6 + R8G8B8_UNorm = 7 + R8G8B8A8_UNorm = 8 + + R8_SNorm = 9 + R8G8_SNorm = 10 + R8G8B8_SNorm = 11 + R8G8B8A8_SNorm = 12 + + R8_UInt = 13 + R8G8_UInt = 14 + R8G8B8_UInt = 15 + R8G8B8A8_UInt = 16 + + R8_SInt = 17 + R8G8_SInt = 18 + R8G8B8_SInt = 19 + R8G8B8A8_SInt = 20 + + R16_UNorm = 21 + R16G16_UNorm = 22 + R16G16B16_UNorm = 23 + R16G16B16A16_UNorm = 24 + + R16_SNorm = 25 + R16G16_SNorm = 26 + R16G16B16_SNorm = 27 + R16G16B16A16_SNorm = 28 + + R16_UInt = 29 + R16G16_UInt = 30 + R16G16B16_UInt = 31 + R16G16B16A16_UInt = 32 + + R16_SInt = 33 + R16G16_SInt = 34 + R16G16B16_SInt = 35 + R16G16B16A16_SInt = 36 + + R32_UInt = 37 + R32G32_UInt = 38 + R32G32B32_UInt = 39 + R32G32B32A32_UInt = 40 + + R32_SInt = 41 + R32G32_SInt = 42 + R32G32B32_SInt = 43 + R32G32B32A32_SInt = 44 + + R16_SFloat = 45 + R16G16_SFloat = 46 + R16G16B16_SFloat = 47 + R16G16B16A16_SFloat = 48 + R32_SFloat = 49 + R32G32_SFloat = 50 + R32G32B32_SFloat = 51 + R32G32B32A32_SFloat = 52 + + B8G8R8_SRGB = 56 + B8G8R8A8_SRGB = 57 + B8G8R8_UNorm = 58 + B8G8R8A8_UNorm = 59 + B8G8R8_SNorm = 60 + B8G8R8A8_SNorm = 61 + B8G8R8_UInt = 62 + B8G8R8A8_UInt = 63 + B8G8R8_SInt = 64 + B8G8R8A8_SInt = 65 + + R4G4B4A4_UNormPack16 = 66 + B4G4R4A4_UNormPack16 = 67 + R5G6B5_UNormPack16 = 68 + B5G6R5_UNormPack16 = 69 + R5G5B5A1_UNormPack16 = 70 + B5G5R5A1_UNormPack16 = 71 + A1R5G5B5_UNormPack16 = 72 + + E5B9G9R9_UFloatPack32 = 73 + B10G11R11_UFloatPack32 = 74 + + A2B10G10R10_UNormPack32 = 75 + A2B10G10R10_UIntPack32 = 76 + A2B10G10R10_SIntPack32 = 77 + A2R10G10B10_UNormPack32 = 78 + A2R10G10B10_UIntPack32 = 79 + A2R10G10B10_SIntPack32 = 80 + A2R10G10B10_XRSRGBPack32 = 81 + A2R10G10B10_XRUNormPack32 = 82 + R10G10B10_XRSRGBPack32 = 83 + R10G10B10_XRUNormPack32 = 84 + A10R10G10B10_XRSRGBPack32 = 85 + A10R10G10B10_XRUNormPack32 = 86 + + D16_UNorm = 90 + D24_UNorm = 91 + D24_UNorm_S8_UInt = 92 + D32_SFloat = 93 + D32_SFloat_S8_UInt = 94 + S8_UInt = 95 + + RGB_DXT1_SRGB = 96 + RGBA_DXT1_SRGB = 96 + RGB_DXT1_UNorm = 97 + RGBA_DXT1_UNorm = 97 + RGBA_DXT3_SRGB = 98 + RGBA_DXT3_UNorm = 99 + RGBA_DXT5_SRGB = 100 + RGBA_DXT5_UNorm = 101 + R_BC4_UNorm = 102 + R_BC4_SNorm = 103 + RG_BC5_UNorm = 104 + RG_BC5_SNorm = 105 + RGB_BC6H_UFloat = 106 + RGB_BC6H_SFloat = 107 + RGBA_BC7_SRGB = 108 + RGBA_BC7_UNorm = 109 + + RGB_PVRTC_2Bpp_SRGB = 110 + RGB_PVRTC_2Bpp_UNorm = 111 + RGB_PVRTC_4Bpp_SRGB = 112 + RGB_PVRTC_4Bpp_UNorm = 113 + RGBA_PVRTC_2Bpp_SRGB = 114 + RGBA_PVRTC_2Bpp_UNorm = 115 + RGBA_PVRTC_4Bpp_SRGB = 116 + RGBA_PVRTC_4Bpp_UNorm = 117 + + RGB_ETC_UNorm = 118 + RGB_ETC2_SRGB = 119 + RGB_ETC2_UNorm = 120 + RGB_A1_ETC2_SRGB = 121 + RGB_A1_ETC2_UNorm = 122 + RGBA_ETC2_SRGB = 123 + RGBA_ETC2_UNorm = 124 + + R_EAC_UNorm = 125 + R_EAC_SNorm = 126 + RG_EAC_UNorm = 127 + RG_EAC_SNorm = 128 + + RGBA_ASTC4X4_SRGB = 129 + RGBA_ASTC4X4_UNorm = 130 + RGBA_ASTC5X5_SRGB = 131 + RGBA_ASTC5X5_UNorm = 132 + RGBA_ASTC6X6_SRGB = 133 + RGBA_ASTC6X6_UNorm = 134 + RGBA_ASTC8X8_SRGB = 135 + RGBA_ASTC8X8_UNorm = 136 + RGBA_ASTC10X10_SRGB = 137 + RGBA_ASTC10X10_UNorm = 138 + RGBA_ASTC12X12_SRGB = 139 + RGBA_ASTC12X12_UNorm = 140 + + YUV2 = 141 + + RGBA_ASTC4X4_UFloat = 145 + RGBA_ASTC5X5_UFloat = 146 + RGBA_ASTC6X6_UFloat = 147 + RGBA_ASTC8X8_UFloat = 148 + RGBA_ASTC10X10_UFloat = 149 + RGBA_ASTC12X12_UFloat = 150 + + D16_UNorm_S8_UInt = 151 + + +# very experimental & untested +GRAPHICS_TO_TEXTURE_MAP = { + GraphicsFormat.R8_SRGB: TextureFormat.R8, + GraphicsFormat.R8G8_SRGB: TextureFormat.RG16, + GraphicsFormat.R8G8B8_SRGB: TextureFormat.RGB24, + GraphicsFormat.R8G8B8A8_SRGB: TextureFormat.RGBA32, + GraphicsFormat.R8_UNorm: TextureFormat.R8, + GraphicsFormat.R8G8_UNorm: TextureFormat.RG16, + GraphicsFormat.R8G8B8_UNorm: TextureFormat.RGB24, + GraphicsFormat.R8G8B8A8_UNorm: TextureFormat.RGBA32, + GraphicsFormat.R8_SNorm: TextureFormat.R8_SIGNED, + GraphicsFormat.R8G8_SNorm: TextureFormat.RG16_SIGNED, + GraphicsFormat.R8G8B8_SNorm: TextureFormat.RGB24_SIGNED, + GraphicsFormat.R8G8B8A8_SNorm: TextureFormat.RGBA32_SIGNED, + GraphicsFormat.R8_UInt: TextureFormat.R16, + GraphicsFormat.R8G8_UInt: TextureFormat.RG32, + GraphicsFormat.R8G8B8_UInt: TextureFormat.RGB48, + GraphicsFormat.R8G8B8A8_UInt: TextureFormat.RGBA64, + GraphicsFormat.R8_SInt: TextureFormat.R16_SIGNED, + GraphicsFormat.R8G8_SInt: TextureFormat.RG32_SIGNED, + GraphicsFormat.R8G8B8_SInt: TextureFormat.RGB48_SIGNED, + GraphicsFormat.R8G8B8A8_SInt: TextureFormat.RGBA64_SIGNED, + GraphicsFormat.R16_UNorm: TextureFormat.R16, + GraphicsFormat.R16G16_UNorm: TextureFormat.RG32, + GraphicsFormat.R16G16B16_UNorm: TextureFormat.RGB48, + GraphicsFormat.R16G16B16A16_UNorm: TextureFormat.RGBA64, + GraphicsFormat.R16_SNorm: TextureFormat.R16_SIGNED, + GraphicsFormat.R16G16_SNorm: TextureFormat.RG32_SIGNED, + GraphicsFormat.R16G16B16_SNorm: TextureFormat.RGB48_SIGNED, + GraphicsFormat.R16G16B16A16_SNorm: TextureFormat.RGBA64_SIGNED, + GraphicsFormat.R16_UInt: TextureFormat.R16, + GraphicsFormat.R16G16_UInt: TextureFormat.RG32, + GraphicsFormat.R16G16B16_UInt: TextureFormat.RGB48, + GraphicsFormat.R16G16B16A16_UInt: TextureFormat.RGBA64, + GraphicsFormat.R16_SInt: TextureFormat.R16_SIGNED, + GraphicsFormat.R16G16_SInt: TextureFormat.RG32_SIGNED, + GraphicsFormat.R16G16B16_SInt: TextureFormat.RGB48_SIGNED, + GraphicsFormat.R16G16B16A16_SInt: TextureFormat.RGBA64_SIGNED, + GraphicsFormat.B8G8R8_SRGB: TextureFormat.BGR24, + GraphicsFormat.B8G8R8A8_SRGB: TextureFormat.BGRA32, + GraphicsFormat.B8G8R8_UNorm: TextureFormat.BGR24, + GraphicsFormat.B8G8R8A8_UNorm: TextureFormat.BGRA32, + # GraphicsFormat.B8G8R8_SNorm: TextureFormat.BGR24_SIGNED, + # GraphicsFormat.B8G8R8A8_SNorm: TextureFormat.BGRA32_SIGNED, + # GraphicsFormat.B8G8R8_UInt: TextureFormat.BGR48, + GraphicsFormat.RGB_DXT1_SRGB: TextureFormat.DXT1, + GraphicsFormat.RGBA_DXT1_SRGB: TextureFormat.DXT1, + GraphicsFormat.RGB_DXT1_UNorm: TextureFormat.DXT1, + GraphicsFormat.RGBA_DXT1_UNorm: TextureFormat.DXT1, + GraphicsFormat.RGBA_DXT3_SRGB: TextureFormat.DXT3, + GraphicsFormat.RGBA_DXT3_UNorm: TextureFormat.DXT3, + GraphicsFormat.RGBA_DXT5_SRGB: TextureFormat.DXT5, + GraphicsFormat.RGBA_DXT5_UNorm: TextureFormat.DXT5, + GraphicsFormat.R_BC4_UNorm: TextureFormat.BC4, + # GraphicsFormat.R_BC4_SNorm: TextureFormat.BC4_SIGNED, + GraphicsFormat.RG_BC5_UNorm: TextureFormat.BC5, + # GraphicsFormat.RG_BC5_SNorm: TextureFormat.BC5_SIGNED, + GraphicsFormat.RGB_BC6H_UFloat: TextureFormat.BC6H, + # GraphicsFormat.RGB_BC6H_SFloat: TextureFormat.BC6H_SIGNED, + GraphicsFormat.RGBA_BC7_SRGB: TextureFormat.BC7, + GraphicsFormat.RGBA_BC7_UNorm: TextureFormat.BC7, + GraphicsFormat.RGB_PVRTC_2Bpp_SRGB: TextureFormat.PVRTC_RGB2, + GraphicsFormat.RGB_PVRTC_2Bpp_UNorm: TextureFormat.PVRTC_RGB2, + GraphicsFormat.RGB_PVRTC_4Bpp_SRGB: TextureFormat.PVRTC_RGB4, + GraphicsFormat.RGB_PVRTC_4Bpp_UNorm: TextureFormat.PVRTC_RGB4, + GraphicsFormat.RGBA_PVRTC_2Bpp_SRGB: TextureFormat.PVRTC_RGBA2, + GraphicsFormat.RGBA_PVRTC_2Bpp_UNorm: TextureFormat.PVRTC_RGBA2, + GraphicsFormat.RGBA_PVRTC_4Bpp_SRGB: TextureFormat.PVRTC_RGBA4, + GraphicsFormat.RGBA_PVRTC_4Bpp_UNorm: TextureFormat.PVRTC_RGBA4, + GraphicsFormat.RGB_ETC_UNorm: TextureFormat.ETC_RGB4, + GraphicsFormat.RGB_ETC2_SRGB: TextureFormat.ETC2_RGB, + GraphicsFormat.RGB_ETC2_UNorm: TextureFormat.ETC2_RGB, + GraphicsFormat.RGB_A1_ETC2_SRGB: TextureFormat.ETC2_RGBA1, + GraphicsFormat.RGB_A1_ETC2_UNorm: TextureFormat.ETC2_RGBA1, + GraphicsFormat.RGBA_ETC2_SRGB: TextureFormat.ETC2_RGBA8, + GraphicsFormat.RGBA_ETC2_UNorm: TextureFormat.ETC2_RGBA8, + GraphicsFormat.R_EAC_UNorm: TextureFormat.EAC_R, + GraphicsFormat.R_EAC_SNorm: TextureFormat.EAC_R_SIGNED, + GraphicsFormat.RG_EAC_UNorm: TextureFormat.EAC_RG, + GraphicsFormat.RG_EAC_SNorm: TextureFormat.EAC_RG_SIGNED, + GraphicsFormat.RGBA_ASTC4X4_SRGB: TextureFormat.ASTC_RGBA_4x4, + GraphicsFormat.RGBA_ASTC4X4_UNorm: TextureFormat.ASTC_RGBA_4x4, + GraphicsFormat.RGBA_ASTC5X5_SRGB: TextureFormat.ASTC_RGBA_5x5, + GraphicsFormat.RGBA_ASTC5X5_UNorm: TextureFormat.ASTC_RGBA_5x5, + GraphicsFormat.RGBA_ASTC6X6_SRGB: TextureFormat.ASTC_RGBA_6x6, + GraphicsFormat.RGBA_ASTC6X6_UNorm: TextureFormat.ASTC_RGBA_6x6, + GraphicsFormat.RGBA_ASTC8X8_SRGB: TextureFormat.ASTC_RGBA_8x8, + GraphicsFormat.RGBA_ASTC8X8_UNorm: TextureFormat.ASTC_RGBA_8x8, + GraphicsFormat.RGBA_ASTC10X10_SRGB: TextureFormat.ASTC_RGBA_10x10, + GraphicsFormat.RGBA_ASTC10X10_UNorm: TextureFormat.ASTC_RGBA_10x10, + GraphicsFormat.RGBA_ASTC12X12_SRGB: TextureFormat.ASTC_RGBA_12x12, + GraphicsFormat.RGBA_ASTC12X12_UNorm: TextureFormat.ASTC_RGBA_12x12, + GraphicsFormat.YUV2: TextureFormat.YUY2, + # GraphicsFormat.RGBA_ASTC4X4_UFloat: TextureFormat.ASTC_RGBA_4x4, + # GraphicsFormat.RGBA_ASTC5X5_UFloat: TextureFormat.ASTC_RGBA_5x5, + # GraphicsFormat.RGBA_ASTC6X6_UFloat: TextureFormat.ASTC_RGBA_6x6, + # GraphicsFormat.RGBA_ASTC8X8_UFloat: TextureFormat.ASTC_RGBA_8x8, + # GraphicsFormat.RGBA_ASTC10X10_UFloat: TextureFormat.ASTC_RGBA_10x10, + # GraphicsFormat.RGBA_ASTC12X12_UFloat: TextureFormat.ASTC_RGBA_12x12, +} diff --git a/UnityPy/enums/__init__.py b/UnityPy/enums/__init__.py index 85706721..de6e5190 100644 --- a/UnityPy/enums/__init__.py +++ b/UnityPy/enums/__init__.py @@ -14,3 +14,4 @@ from .SpritePackingRotation import SpritePackingRotation from .TextureDimension import TextureDimension from .PassType import PassType +from .GraphicsFormat import GraphicsFormat diff --git a/UnityPy/export/Texture2DConverter.py b/UnityPy/export/Texture2DConverter.py index 331cc23d..fc54f3f2 100644 --- a/UnityPy/export/Texture2DConverter.py +++ b/UnityPy/export/Texture2DConverter.py @@ -89,7 +89,10 @@ def assert_rgba(img: Image.Image, target_texture_format: TextureFormat): return img -def get_image_from_texture2d(texture_2d, flip=True) -> Image.Image: +def get_image_from_texture2d( + texture_2d: "Texture2D", + flip=True, +) -> Image.Image: """converts the given texture into PIL.Image :param texture_2d: texture to be converterd @@ -99,15 +102,32 @@ def get_image_from_texture2d(texture_2d, flip=True) -> Image.Image: :return: PIL.Image object :rtype: Image """ - image_data = copy(bytes(texture_2d.image_data)) + return parse_image_data( + texture_2d.image_data, + texture_2d.m_Width, + texture_2d.m_Height, + texture_2d.m_TextureFormat, + texture_2d.version, + texture_2d.platform, + getattr(texture_2d, "m_PlatformBlob", None), + flip, + ) + + +def parse_image_data( + image_data: bytes, + width: int, + height: int, + texture_format: TextureFormat, + version: tuple, + platform: int, + platform_blob: bytes = None, + flip=True, +) -> Image.Image: + image_data = copy(bytes(image_data)) if not image_data: raise ValueError("Texture2D has no image data") - texture_format = ( - texture_2d.m_TextureFormat - if isinstance(texture_2d.m_TextureFormat, TF) - else TF(texture_2d.m_TextureFormat) - ) selection = CONV_TABLE[texture_format] if len(selection) == 0: @@ -116,10 +136,10 @@ def get_image_from_texture2d(texture_2d, flip=True) -> Image.Image: ) if texture_format in XBOX_SWAP_FORMATS: - image_data = swap_bytes_for_xbox(image_data, texture_2d.platform) + image_data = swap_bytes_for_xbox(image_data, platform) if "Crunched" in texture_format.name: - version = texture_2d.version + version = version if ( version[0] > 2017 or (version[0] == 2017 and version[1] >= 3) # 2017.3 and up @@ -130,19 +150,11 @@ def get_image_from_texture2d(texture_2d, flip=True) -> Image.Image: else: image_data = texture2ddecoder.unpack_crunch(image_data) - img = selection[0]( - image_data, texture_2d.m_Width, texture_2d.m_Height, *selection[1:] - ) + img = selection[0](image_data, width, height, *selection[1:]) - if texture_2d.platform == BuildTarget.Switch and getattr( - texture_2d, "m_PlatformBlob", None - ): - gobsPerBlock = TextureSwizzler.get_switch_gobs_per_block( - texture_2d.m_PlatformBlob - ) - blockSize = TextureSwizzler.TEXTUREFORMAT_BLOCK_SIZE_MAP[ - texture_2d.m_TextureFormat - ] + if platform == BuildTarget.Switch and platform_blob is not None: + gobsPerBlock = TextureSwizzler.get_switch_gobs_per_block(platform_blob) + blockSize = TextureSwizzler.TEXTUREFORMAT_BLOCK_SIZE_MAP[texture_format] img = TextureSwizzler.switch_deswizzle(img, blockSize, gobsPerBlock) if img and flip: @@ -297,85 +309,85 @@ def rgb9e5float(image_data: bytes, width: int, height: int): CONV_TABLE = { -# FORMAT FUNC #ARGS..... -#----------------------- -------- -------- ------------ ----------------- ------------ ---------- -( TF.Alpha8, pillow, "RGBA", "raw", "A" ), -( TF.ARGB4444, pillow, "RGBA", "raw", "RGBA;4B", (2,1,0,3) ), -( TF.RGB24, pillow, "RGB", "raw", "RGB" ), -( TF.RGBA32, pillow, "RGBA", "raw", "RGBA" ), -( TF.ARGB32, pillow, "RGBA", "raw", "ARGB" ), -( TF.ARGBFloat, pillow, "RGBA", "raw", "RGBAF", (2,1,0,3) ), -( TF.RGB565, pillow, "RGB", "raw", "BGR;16" ), -( TF.BGR24, pillow, "RGB", "raw", "BGR" ), -( TF.R8, pillow, "RGB", "raw", "R" ), -( TF.R16, pillow, "RGB", "raw", "R;16" ), -( TF.RG16, rg, "RGB", "raw", "RG" ), -( TF.DXT1, pillow, "RGBA", "bcn", 1 ), -( TF.DXT3, pillow, "RGBA", "bcn", 2 ), -( TF.DXT5, pillow, "RGBA", "bcn", 3 ), -( TF.RGBA4444, pillow, "RGBA", "raw", 'RGBA;4B', (3,2,1,0) ), -( TF.BGRA32, pillow, "RGBA", "raw", "BGRA" ), -( TF.RHalf, half, "R", "raw", "R" ), -( TF.RGHalf, rg, "RGB", "raw", "RGE" ), -( TF.RGBAHalf, half, "RGB", "raw", "RGB" ), -( TF.RFloat, pillow, "RGB", "raw", "RF" ), -( TF.RGFloat, rg, "RGB", "raw", "RGF" ), -( TF.RGBAFloat, pillow, "RGBA", "raw", "RGBAF" ), -( TF.YUY2, ), -( TF.RGB9e5Float, rgb9e5float ), -( TF.BC4, pillow, "L", "bcn", 4 ), -( TF.BC5, pillow, "RGB", "bcn", 5 ), -( TF.BC6H, pillow, "RGBA", "bcn", 6 ), -( TF.BC7, pillow, "RGBA", "bcn", 7 ), -( TF.DXT1Crunched, pillow, "RGBA", "bcn", 1 ), -( TF.DXT5Crunched, pillow, "RGBA", "bcn", 3 ), -( TF.PVRTC_RGB2, pvrtc, True ), -( TF.PVRTC_RGBA2, pvrtc, True ), -( TF.PVRTC_RGB4, pvrtc, False ), -( TF.PVRTC_RGBA4, pvrtc, False ), -( TF.ETC_RGB4, etc, (1,) ), -( TF.ATC_RGB4, atc, False ), -( TF.ATC_RGBA8, atc, True ), -( TF.EAC_R, eac, "EAC_R" ), -( TF.EAC_R_SIGNED, eac, "EAC_R:SIGNED" ), -( TF.EAC_RG, eac, "EAC_RG" ), -( TF.EAC_RG_SIGNED, eac, "EAC_RG_SIGNED" ), -( TF.ETC2_RGB, etc, (2,"RGB") ), -( TF.ETC2_RGBA1, etc, (2, "A1") ), -( TF.ETC2_RGBA8, etc, (2, "A8") ), -( TF.ASTC_RGB_4x4, astc, (4,4) ), -( TF.ASTC_RGB_5x5, astc, (5,5) ), -( TF.ASTC_RGB_6x6, astc, (6,6) ), -( TF.ASTC_RGB_8x8, astc, (8,8) ), -( TF.ASTC_RGB_10x10, astc, (10,10) ), -( TF.ASTC_RGB_12x12, astc, (12,12) ), -( TF.ASTC_RGBA_4x4, astc, (4,4) ), -( TF.ASTC_RGBA_5x5, astc, (5,5) ), -( TF.ASTC_RGBA_6x6, astc, (6,6) ), -( TF.ASTC_RGBA_8x8, astc, (8,8) ), -( TF.ASTC_RGBA_10x10, astc, (10,10) ), -( TF.ASTC_RGBA_12x12, astc, (12,12) ), -( TF.ETC_RGB4_3DS, etc, (1,) ), -( TF.ETC_RGBA8_3DS, etc, (1,) ), -( TF.ETC_RGB4Crunched, etc, (1,) ), -( TF.ETC2_RGBA8Crunched, etc, (2, "A8") ), -( TF.ASTC_HDR_4x4, astc, (4,4) ), -( TF.ASTC_HDR_5x5, astc, (5,5) ), -( TF.ASTC_HDR_6x6, astc, (6,6) ), -( TF.ASTC_HDR_8x8, astc, (8,8) ), -( TF.ASTC_HDR_10x10, astc, (10,10) ), -( TF.ASTC_HDR_12x12, astc, (12,12) ), -( TF.RG32, rg, "RGB", "raw", "RG;16" ), -( TF.RGB48, pillow, "RGB", "raw", "RGB;16" ), -( TF.RGBA64, pillow, "RGBA", "raw", "RGBA;16" ), -( TF.R8_SIGNED, pillow, "R", "raw", "R;8s" ), -( TF.RG16_SIGNED, rg, "RGB", "raw", "RG;8s" ), -( TF.RGB24_SIGNED, pillow, "RGB", "raw", "RGB;8s" ), -( TF.RGBA32_SIGNED, pillow, "RGBA", "raw", "RGBA;8s" ), -( TF.R16_SIGNED, pillow, "R", "raw", "R;16s" ), -( TF.RG32_SIGNED, rg, "RGB", "raw", "RG;16s" ), -( TF.RGB48_SIGNED, pillow, "RGB", "raw", "RGB;16s" ), -( TF.RGBA64_SIGNED, pillow, "RGBA", "raw", "RGBA;16s" ), + # FORMAT FUNC #ARGS..... + # ----------------------- -------- -------- ------------ ----------------- ------------ ---------- + (TF.Alpha8, pillow, "RGBA", "raw", "A"), + (TF.ARGB4444, pillow, "RGBA", "raw", "RGBA;4B", (2, 1, 0, 3)), + (TF.RGB24, pillow, "RGB", "raw", "RGB"), + (TF.RGBA32, pillow, "RGBA", "raw", "RGBA"), + (TF.ARGB32, pillow, "RGBA", "raw", "ARGB"), + (TF.ARGBFloat, pillow, "RGBA", "raw", "RGBAF", (2, 1, 0, 3)), + (TF.RGB565, pillow, "RGB", "raw", "BGR;16"), + (TF.BGR24, pillow, "RGB", "raw", "BGR"), + (TF.R8, pillow, "RGB", "raw", "R"), + (TF.R16, pillow, "RGB", "raw", "R;16"), + (TF.RG16, rg, "RGB", "raw", "RG"), + (TF.DXT1, pillow, "RGBA", "bcn", 1), + (TF.DXT3, pillow, "RGBA", "bcn", 2), + (TF.DXT5, pillow, "RGBA", "bcn", 3), + (TF.RGBA4444, pillow, "RGBA", "raw", "RGBA;4B", (3, 2, 1, 0)), + (TF.BGRA32, pillow, "RGBA", "raw", "BGRA"), + (TF.RHalf, half, "R", "raw", "R"), + (TF.RGHalf, rg, "RGB", "raw", "RGE"), + (TF.RGBAHalf, half, "RGB", "raw", "RGB"), + (TF.RFloat, pillow, "RGB", "raw", "RF"), + (TF.RGFloat, rg, "RGB", "raw", "RGF"), + (TF.RGBAFloat, pillow, "RGBA", "raw", "RGBAF"), + (TF.YUY2,), + (TF.RGB9e5Float, rgb9e5float), + (TF.BC4, pillow, "L", "bcn", 4), + (TF.BC5, pillow, "RGB", "bcn", 5), + (TF.BC6H, pillow, "RGBA", "bcn", 6), + (TF.BC7, pillow, "RGBA", "bcn", 7), + (TF.DXT1Crunched, pillow, "RGBA", "bcn", 1), + (TF.DXT5Crunched, pillow, "RGBA", "bcn", 3), + (TF.PVRTC_RGB2, pvrtc, True), + (TF.PVRTC_RGBA2, pvrtc, True), + (TF.PVRTC_RGB4, pvrtc, False), + (TF.PVRTC_RGBA4, pvrtc, False), + (TF.ETC_RGB4, etc, (1,)), + (TF.ATC_RGB4, atc, False), + (TF.ATC_RGBA8, atc, True), + (TF.EAC_R, eac, "EAC_R"), + (TF.EAC_R_SIGNED, eac, "EAC_R:SIGNED"), + (TF.EAC_RG, eac, "EAC_RG"), + (TF.EAC_RG_SIGNED, eac, "EAC_RG_SIGNED"), + (TF.ETC2_RGB, etc, (2, "RGB")), + (TF.ETC2_RGBA1, etc, (2, "A1")), + (TF.ETC2_RGBA8, etc, (2, "A8")), + (TF.ASTC_RGB_4x4, astc, (4, 4)), + (TF.ASTC_RGB_5x5, astc, (5, 5)), + (TF.ASTC_RGB_6x6, astc, (6, 6)), + (TF.ASTC_RGB_8x8, astc, (8, 8)), + (TF.ASTC_RGB_10x10, astc, (10, 10)), + (TF.ASTC_RGB_12x12, astc, (12, 12)), + (TF.ASTC_RGBA_4x4, astc, (4, 4)), + (TF.ASTC_RGBA_5x5, astc, (5, 5)), + (TF.ASTC_RGBA_6x6, astc, (6, 6)), + (TF.ASTC_RGBA_8x8, astc, (8, 8)), + (TF.ASTC_RGBA_10x10, astc, (10, 10)), + (TF.ASTC_RGBA_12x12, astc, (12, 12)), + (TF.ETC_RGB4_3DS, etc, (1,)), + (TF.ETC_RGBA8_3DS, etc, (1,)), + (TF.ETC_RGB4Crunched, etc, (1,)), + (TF.ETC2_RGBA8Crunched, etc, (2, "A8")), + (TF.ASTC_HDR_4x4, astc, (4, 4)), + (TF.ASTC_HDR_5x5, astc, (5, 5)), + (TF.ASTC_HDR_6x6, astc, (6, 6)), + (TF.ASTC_HDR_8x8, astc, (8, 8)), + (TF.ASTC_HDR_10x10, astc, (10, 10)), + (TF.ASTC_HDR_12x12, astc, (12, 12)), + (TF.RG32, rg, "RGB", "raw", "RG;16"), + (TF.RGB48, pillow, "RGB", "raw", "RGB;16"), + (TF.RGBA64, pillow, "RGBA", "raw", "RGBA;16"), + (TF.R8_SIGNED, pillow, "R", "raw", "R;8s"), + (TF.RG16_SIGNED, rg, "RGB", "raw", "RG;8s"), + (TF.RGB24_SIGNED, pillow, "RGB", "raw", "RGB;8s"), + (TF.RGBA32_SIGNED, pillow, "RGBA", "raw", "RGBA;8s"), + (TF.R16_SIGNED, pillow, "R", "raw", "R;16s"), + (TF.RG32_SIGNED, rg, "RGB", "raw", "RG;16s"), + (TF.RGB48_SIGNED, pillow, "RGB", "raw", "RGB;16s"), + (TF.RGBA64_SIGNED, pillow, "RGBA", "raw", "RGBA;16s"), } # format conv_table to a dict From 0364b00007cbe3200cee39876e6edfb867624e1f Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 26 Jan 2024 10:58:25 +0100 Subject: [PATCH 231/599] Texture2D - 2022 fix (#227) * Texture2D - 2022 fix * 1.10.12 version bump --- UnityPy/__init__.py | 2 +- UnityPy/classes/Texture2D.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 901a6a0e..bce3802c 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.11" +__version__ = "1.10.12" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key diff --git a/UnityPy/classes/Texture2D.py b/UnityPy/classes/Texture2D.py index b9b4a882..cc53956d 100644 --- a/UnityPy/classes/Texture2D.py +++ b/UnityPy/classes/Texture2D.py @@ -146,6 +146,7 @@ def __init__(self, reader): self.m_IgnoreMasterTextureLimit = reader.read_boolean() if version >= (2022, 2, 0): # 2022.2.0f1 and up self.m_IgnoreMipmapLimit = reader.read_boolean() + self.align_stream() self.m_MipmapLimitGroupName = reader.read_aligned_string() if (3,) <= version[:2] <= (5, 4): # 3.0 - 5.4 self.m_ReadAllowed = reader.read_boolean() @@ -204,6 +205,7 @@ def save(self, writer: EndianBinaryWriter = None): writer.write_boolean(self.m_IgnoreMasterTextureLimit) if version >= (2022, 2, 0): # 2022.2.0f1 and up writer.write_boolean(self.m_IgnoreMipmapLimit) + writer.align_stream() writer.write_aligned_string(self.m_MipmapLimitGroupName) if (3,) <= version[:2] <= (5, 4): # 3.0 - 5.4 writer.write_boolean(self.m_ReadAllowed) # 3.0 - 5.4 From 2301b1b0628415f29b97f87a34d2b35b138a4ae5 Mon Sep 17 00:00:00 2001 From: StarHeart Date: Mon, 25 Mar 2024 21:40:55 +0800 Subject: [PATCH 232/599] Fix typos (#232) --- UnityPy/helpers/ImportHelper.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/UnityPy/helpers/ImportHelper.py b/UnityPy/helpers/ImportHelper.py index 089a0a03..7e7e2a4b 100644 --- a/UnityPy/helpers/ImportHelper.py +++ b/UnityPy/helpers/ImportHelper.py @@ -147,15 +147,15 @@ def parse_file( def find_sensitive_path(dir: str, insensitive_path: str) -> Union[str, None]: parts = os.path.split(insensitive_path.strip(os.path.sep)) - senstive_path = dir + sensitive_path = dir for part in parts: part_lower = part.lower() part = next( - (name for name in os.listdir(senstive_path) if name.lower() == part_lower), + (name for name in os.listdir(sensitive_path) if name.lower() == part_lower), None, ) if part is None: return None - senstive_path = os.path.join(senstive_path, part) + sensitive_path = os.path.join(sensitive_path, part) - return senstive_path + return sensitive_path From 460641aa21d71ff3f3b6f72e4bc064e4b9225949 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 3 Apr 2024 17:00:46 +0200 Subject: [PATCH 233/599] fix publish.yml --- .github/workflows/publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 34fa3371..99df41fc 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -42,7 +42,7 @@ jobs: platforms: all - name: Build wheels - uses: pypa/cibuildwheel@v2.16.2 + uses: pypa/cibuildwheel@v2.17.0 env: CIBW_ARCHS_LINUX: auto aarch64 CIBW_ARCHS_MACOS: x86_64 arm64 universal2 @@ -56,7 +56,7 @@ jobs: ${{ matrix.cp }}-macosx_arm64 ${{ matrix.cp }}-macosx_universal2 # Disabled repair wheel since the fmob lib is not compatible - CIBW_REPAIR_WHEEL_COMMAND: "" + CIBW_REPAIR_WHEEL_COMMAND: '""' CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'mv {wheel} {dest_dir}/"$(basename {wheel} | sed "s/-linux_/-manylinux_2_17_/")"' CIBW_TEST_REQUIRES: pytest CIBW_TEST_COMMAND: pytest -v -s {package}/tests From 4111479fdbebce38d17c6811690e44b52c857351 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 3 Apr 2024 17:05:29 +0200 Subject: [PATCH 234/599] Update publish.yml --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 99df41fc..a7c4041b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -56,7 +56,7 @@ jobs: ${{ matrix.cp }}-macosx_arm64 ${{ matrix.cp }}-macosx_universal2 # Disabled repair wheel since the fmob lib is not compatible - CIBW_REPAIR_WHEEL_COMMAND: '""' + CIBW_REPAIR_WHEEL_COMMAND: '' CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'mv {wheel} {dest_dir}/"$(basename {wheel} | sed "s/-linux_/-manylinux_2_17_/")"' CIBW_TEST_REQUIRES: pytest CIBW_TEST_COMMAND: pytest -v -s {package}/tests From c62eb02f36f0a7052149f31376970ad5bf74ec7a Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 3 Apr 2024 17:31:24 +0200 Subject: [PATCH 235/599] Update publish.yml --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a7c4041b..34797a32 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -63,7 +63,7 @@ jobs: CIBW_TEST_SKIP: "*-macosx_arm64 *-macosx_universal2:arm64 *-manylinux_i686 *-win32" - name: Publish to PyPI - if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' && github.ref == 'refs/heads/master' + if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} From 02b7d179c0cd07008fe2c1c53a66ec2a9fc4becd Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 3 Apr 2024 17:43:49 +0200 Subject: [PATCH 236/599] Update publish.yml --- .github/workflows/publish.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 34797a32..20d382db 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -12,7 +12,7 @@ jobs: # the result of the previous workflow (see the documentation page) if: ${{ github.event.workflow_run.conclusion == 'success' }} strategy: - fail-fast: false + fail-fast: true matrix: os: ["ubuntu-20.04", "windows-2019", "macos-11"] cp: ["cp37", "cp38", "cp39", "cp310", "cp311", "cp312"] @@ -63,7 +63,6 @@ jobs: CIBW_TEST_SKIP: "*-macosx_arm64 *-macosx_universal2:arm64 *-manylinux_i686 *-win32" - name: Publish to PyPI - if: success() && github.event_name == 'push' && env.TWINE_PASSWORD != '' env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} From 3a97bf2626352fd310a0add13f5636ec8bbe9c51 Mon Sep 17 00:00:00 2001 From: VaDiM Date: Wed, 3 Apr 2024 18:37:10 +0300 Subject: [PATCH 237/599] Texture2D - 2022 bugfix --- UnityPy/classes/Texture2D.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/classes/Texture2D.py b/UnityPy/classes/Texture2D.py index cc53956d..dbcee08e 100644 --- a/UnityPy/classes/Texture2D.py +++ b/UnityPy/classes/Texture2D.py @@ -146,7 +146,7 @@ def __init__(self, reader): self.m_IgnoreMasterTextureLimit = reader.read_boolean() if version >= (2022, 2, 0): # 2022.2.0f1 and up self.m_IgnoreMipmapLimit = reader.read_boolean() - self.align_stream() + reader.align_stream() self.m_MipmapLimitGroupName = reader.read_aligned_string() if (3,) <= version[:2] <= (5, 4): # 3.0 - 5.4 self.m_ReadAllowed = reader.read_boolean() From 2dfd6b02f67341e7548616acc14cfaabd7e558e3 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 3 Apr 2024 21:24:40 +0200 Subject: [PATCH 238/599] bump to 1.10.13 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index bce3802c..9b632629 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.12" +__version__ = "1.10.13" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key From e7f948e6e793f82b6497b522920e3741b2685894 Mon Sep 17 00:00:00 2001 From: mos9527 Date: Wed, 5 Jun 2024 13:39:50 +0800 Subject: [PATCH 239/599] Mesh - Read m_CookingOptions when Unity version is 2022.1 or higher --- UnityPy/classes/Mesh.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/UnityPy/classes/Mesh.py b/UnityPy/classes/Mesh.py index 1985bdd6..6a500421 100644 --- a/UnityPy/classes/Mesh.py +++ b/UnityPy/classes/Mesh.py @@ -494,6 +494,10 @@ def __init__(self, reader): m_CollisionVertexCount = reader.read_int() self.m_MeshUsageFlags = reader.read_int() + + if version >= (2022, 1): # 2022.1 and up + self.m_CookingOptions = reader.read_int() + if version >= (5,): # 5.0 and up self.m_BakedConvexCollisionMesh = reader.read_bytes(reader.read_int()) reader.align_stream() From 5aba049193fca8eee644d5b51670049c9550b367 Mon Sep 17 00:00:00 2001 From: mos9527 Date: Wed, 5 Jun 2024 13:46:31 +0800 Subject: [PATCH 240/599] AnimationClip - Read isIntCurve when Unity version is 2022.1 or higher --- UnityPy/classes/AnimationClip.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/UnityPy/classes/AnimationClip.py b/UnityPy/classes/AnimationClip.py index 531f87f3..ba5e330e 100644 --- a/UnityPy/classes/AnimationClip.py +++ b/UnityPy/classes/AnimationClip.py @@ -519,6 +519,8 @@ def __init__(self, reader): self.typeID = ClassIDType(reader.read_u_short()) self.customType = reader.read_byte() self.isPPtrCurve = reader.read_byte() + if version >= (2022, 1): # 2022.1 and up + self.isIntCurve = reader.read_byte() reader.align_stream() From bb197d98ebe54b7e35113b3be6ea1eb391638242 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 6 Jun 2024 22:04:22 +0200 Subject: [PATCH 241/599] test.yml - upgrade python version to 3.10 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c56b5df2..76fe8eb5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,7 +25,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: "3.7" + python-version: "3.10" - name: Install Dependencies run: | From e4ae7b382c78c3be92bb69f730702b13a204076c Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 11 Jun 2024 17:24:24 +0200 Subject: [PATCH 242/599] Skip MacOS workflow tests (#242) --- .github/workflows/publish.yml | 2 +- .github/workflows/test.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 20d382db..83b0b723 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -60,7 +60,7 @@ jobs: CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'mv {wheel} {dest_dir}/"$(basename {wheel} | sed "s/-linux_/-manylinux_2_17_/")"' CIBW_TEST_REQUIRES: pytest CIBW_TEST_COMMAND: pytest -v -s {package}/tests - CIBW_TEST_SKIP: "*-macosx_arm64 *-macosx_universal2:arm64 *-manylinux_i686 *-win32" + CIBW_TEST_SKIP: "*-macosx* *-manylinux_i686 *-win32" - name: Publish to PyPI env: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 76fe8eb5..f72bb70e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - os: ["ubuntu-latest", "macOS-latest", "windows-latest"] + os: ["ubuntu-latest", "windows-latest"] runs-on: ${{ matrix.os }} name: ${{ matrix.os }} From aa83c2e2cc38ea5fb9eb2e23f8234f49c340254a Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 11 Jun 2024 17:24:52 +0200 Subject: [PATCH 243/599] 1.10.14 version bump --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 9b632629..7f446a28 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.13" +__version__ = "1.10.14" from .environment import Environment from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key From 549b404be57a1d8e4d95c5e146b6ed9b5714608a Mon Sep 17 00:00:00 2001 From: 0x07E5 <120720697+0x07E5@users.noreply.github.com> Date: Sat, 27 Jul 2024 07:41:36 +0800 Subject: [PATCH 244/599] Fix a bug when read UnityRaw (#248) --- UnityPy/files/BundleFile.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 4c2d8498..bb2060cc 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -37,7 +37,7 @@ def __init__( if signature == "UnityArchive": raise NotImplementedError("BundleFile - UnityArchive") elif signature in ["UnityWeb", "UnityRaw"]: - m_DirectoryInfo, blocksReader = self.read_web_raw(reader) + m_DirectoryInfo, blocksReader = self.read_web_raw(reader, signature == "UnityWeb") elif signature == "UnityFS": m_DirectoryInfo, blocksReader = self.read_fs(reader) else: @@ -45,7 +45,7 @@ def __init__( self.read_files(blocksReader, m_DirectoryInfo) - def read_web_raw(self, reader: EndianBinaryReader): + def read_web_raw(self, reader: EndianBinaryReader, is_compressed = True): # def read_header_and_blocks_info(self, reader:EndianBinaryReader): version = self.version if version >= 4: @@ -71,7 +71,7 @@ def read_web_raw(self, reader: EndianBinaryReader): uncompressedBytes = CompressionHelper.decompress_lzma( reader.read_bytes(compressedSize) - ) + ) if is_compressed else reader.read_bytes(uncompressedSize) blocksReader = EndianBinaryReader(uncompressedBytes, offset=headerSize) nodesCount = blocksReader.read_int() From f0a921258b58be0f5b371cd233bf6f142c625f10 Mon Sep 17 00:00:00 2001 From: EndOfFile <61620805+EoF-1141@users.noreply.github.com> Date: Sat, 27 Jul 2024 07:47:21 +0800 Subject: [PATCH 245/599] Add split file reading (#243) When loading split files it's possible the required dependency without containing info about being split. This will search for split files and load them accordingly --- UnityPy/environment.py | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/UnityPy/environment.py b/UnityPy/environment.py index ff790d33..6b210aca 100644 --- a/UnityPy/environment.py +++ b/UnityPy/environment.py @@ -81,6 +81,17 @@ def load(self, files: list): } ) + def _load_split_file(self, basename): + file = [] + for i in range(0, 999): + item = f"{basename}.split{i}" + if self.fs.exists(item): + with self.fs.open(item, "rb") as f: + file.append(f.read()) + elif i: + break + return b"".join(file) + def load_file( self, file: Union[io.IOBase, str], @@ -95,29 +106,25 @@ def load_file( split_match = reSplit.match(file) if split_match: basepath, basename = split_match.groups() - file = [] - for i in range(0, 999): - item = f"{basepath}.split{i}" - if self.fs.exists(item): - with self.fs.open(item, "rb") as f: - file.append(f.read()) - elif i: - break name = basepath - file = b"".join(file) + file = self._load_split_file(name) else: name = file if not os.path.exists(file): # relative paths are in the asset directory, not the cwd if not os.path.isabs(file): file = os.path.join(self.path, file) + # for dependency loading of split files + if os.path.exists(f"{file}.split0"): + file = self._load_split_file(file) # Unity paths are case insensitive, so we need to find "Resources/Foo.asset" when the record says "resources/foo.asset" - if not os.path.exists(file): + elif not os.path.exists(file): file = ImportHelper.find_sensitive_path(self.path, file) # nonexistent files might be packaging errors or references to Unity's global Library/ if file is None: return - file = self.fs.open(file, "rb") + if type(file) == str: + file = self.fs.open(file, "rb") typ, reader = ImportHelper.check_file_type(file) @@ -273,15 +280,7 @@ def load_assets(self, assets: List[str], open_f: Callable[[str], io.IOBase]): continue split_files.append(basepath) - data = [] - for i in range(0, 999): - item = f"{basepath}.split{i}" - if item in assets: - with open_f(item) as f: - data.append(f.read()) - elif i: - break - data = b"".join(data) + data = self._load_split_file(basepath) path = basepath else: data = open_f(path).read() From 7f4f29a0656a979cb160c5bca642df69db208ba5 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 28 Jul 2024 00:56:35 +0200 Subject: [PATCH 246/599] Texture, Texture2D, Sprite - 2023 (#249) * Sprite.py - 2023 * Texture-23 * Update Texture2D.py * Update Texture.py --- UnityPy/classes/Sprite.py | 8 ++++++++ UnityPy/classes/Texture.py | 16 ++++++++-------- UnityPy/classes/Texture2D.py | 30 ++++++++++++++++++++++++++---- 3 files changed, 42 insertions(+), 12 deletions(-) diff --git a/UnityPy/classes/Sprite.py b/UnityPy/classes/Sprite.py index a5a1761b..06bc8bb0 100644 --- a/UnityPy/classes/Sprite.py +++ b/UnityPy/classes/Sprite.py @@ -52,6 +52,9 @@ def __init__(self, reader): m_BonesSize = reader.read_int() self.m_Bones = [SpriteBone(self.reader) for _ in range(m_BonesSize)] + if version >= (2023, 1, 0, 14): + self.m_ScriptableObjects = [PPtr(reader) for _ in range(reader.read_int())] + def save(self, writer: EndianBinaryWriter = None): if writer is None: writer = EndianBinaryWriter(endian=self.reader.endian) @@ -92,6 +95,11 @@ def save(self, writer: EndianBinaryWriter = None): for bone in self.m_Bones: bone.save(writer, version) + if version >= (2023, 1, 0, 14): + writer.write_int(len(self.m_ScriptableObjects)) + for obj in self.m_ScriptableObjects: + obj.save(writer) + self.set_raw_data(writer.bytes) diff --git a/UnityPy/classes/Texture.py b/UnityPy/classes/Texture.py index 652ea1b6..2b6bfe03 100644 --- a/UnityPy/classes/Texture.py +++ b/UnityPy/classes/Texture.py @@ -5,18 +5,18 @@ class Texture(NamedObject): def __init__(self, reader): super().__init__(reader=reader) - if self.version >= (2017, 3): # 2017.3 and up + if (2017, 3) <= self.version < (2023, 2, 0, 18): # 2017.3 - 2023.2.0.18 self.m_ForcedFallbackFormat = reader.read_int() self.m_DownscaleFallback = reader.read_boolean() - if self.version >= (2020,2): # 2020.2 and up - self.m_IsAlphaChannelOptional = reader.read_boolean() - reader.align_stream() + if self.version >= (2020, 2): # 2020.2 and up + self.m_IsAlphaChannelOptional = reader.read_boolean() + reader.align_stream() def save(self, writer: EndianBinaryWriter): super().save(writer) - if self.version >= (2017, 3): # 2017.3 and up + if (2017, 3) <= self.version < (2023, 2, 0, 18): # 2017.3 - 2023.2.0.18 writer.write_int(self.m_ForcedFallbackFormat) writer.write_boolean(self.m_DownscaleFallback) - if self.version >= (2020,2): # 2020.2 and up - writer.write_boolean(self.m_IsAlphaChannelOptional) - writer.align_stream() + if self.version >= (2020, 2): # 2020.2 and up + writer.write_boolean(self.m_IsAlphaChannelOptional) + writer.align_stream() diff --git a/UnityPy/classes/Texture2D.py b/UnityPy/classes/Texture2D.py index dbcee08e..47a09c69 100644 --- a/UnityPy/classes/Texture2D.py +++ b/UnityPy/classes/Texture2D.py @@ -142,12 +142,23 @@ def __init__(self, reader): self.m_IsReadable = reader.read_boolean() # 2.6 and up if version >= (2020,): # 2020.1 and up self.m_IsPreProcessed = reader.read_boolean() - if (2019, 3) <= version < (2022, 2, 0): # 2019.3.0f6 - 2022.2.0a18 + if (2019, 3) <= version < (2022, 2, 0, 3) or (2023, 1, 0, 1) <= version < ( + 2023, + 1, + 0, + 8, + ): # 2019.3.0f6 - 2022.2.0a18 self.m_IgnoreMasterTextureLimit = reader.read_boolean() - if version >= (2022, 2, 0): # 2022.2.0f1 and up + if (2022, 2, 0, 3) <= version < (2023, 1, 0, 1) or version >= ( + 2023, + 1, + 0, + 8, + ): # 2022.2.0f1 and up self.m_IgnoreMipmapLimit = reader.read_boolean() reader.align_stream() self.m_MipmapLimitGroupName = reader.read_aligned_string() + if (3,) <= version[:2] <= (5, 4): # 3.0 - 5.4 self.m_ReadAllowed = reader.read_boolean() if version >= (2018, 2): # 2018.2 and up @@ -201,12 +212,23 @@ def save(self, writer: EndianBinaryWriter = None): writer.write_boolean(self.m_IsReadable) # 2.6 and up if version >= (2020,): # 2020.1 and up writer.write_boolean(self.m_IsPreProcessed) - if (2019, 3) <= version < (2022, 2, 0): # 2019.3.0f6 - 2022.2.0a18 + if (2019, 3) <= version < (2022, 2, 0, 3) or (2023, 1, 0, 1) <= version < ( + 2023, + 1, + 0, + 8, + ): # 2019.3.0f6 - 2022.2.0a18 writer.write_boolean(self.m_IgnoreMasterTextureLimit) - if version >= (2022, 2, 0): # 2022.2.0f1 and up + if (2022, 2, 0, 3) <= version < (2023, 1, 0, 1) or version >= ( + 2023, + 1, + 0, + 8, + ): # 2022.2.0f1 and up writer.write_boolean(self.m_IgnoreMipmapLimit) writer.align_stream() writer.write_aligned_string(self.m_MipmapLimitGroupName) + if (3,) <= version[:2] <= (5, 4): # 3.0 - 5.4 writer.write_boolean(self.m_ReadAllowed) # 3.0 - 5.4 if version >= (2018, 2): # 2018.2 and up From 1a6d5dcc536696ecfd5a141cccdb8686abc5ab0e Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 31 Jul 2024 00:48:11 +0200 Subject: [PATCH 247/599] Sprite - fix SecondarySpriteTexture - read_aligned_string instead of read_string_to_null --- UnityPy/classes/Sprite.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/classes/Sprite.py b/UnityPy/classes/Sprite.py index 06bc8bb0..4eb17a60 100644 --- a/UnityPy/classes/Sprite.py +++ b/UnityPy/classes/Sprite.py @@ -106,11 +106,11 @@ def save(self, writer: EndianBinaryWriter = None): class SecondarySpriteTexture: def __init__(self, reader): self.texture = PPtr(reader) # Texture2D - self.name = reader.read_string_to_null() + self.name = reader.read_aligned_string() def save(self, writer): self.texture.save(writer) - writer.write_string_to_null(self.name) + writer.write_aligned_string(self.name) class SpriteSettings: From df73acbd416bde000e3b30fa548349bcc38bce3b Mon Sep 17 00:00:00 2001 From: 0x07E5 <120720697+0x07E5@users.noreply.github.com> Date: Sat, 31 Aug 2024 06:38:02 +0800 Subject: [PATCH 248/599] Fix LZMA Compression (unity specific) (#246) --- UnityPy/helpers/CompressionHelper.py | 31 +++++++++++++++++++++------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/UnityPy/helpers/CompressionHelper.py b/UnityPy/helpers/CompressionHelper.py index f6233b5a..48b1a127 100644 --- a/UnityPy/helpers/CompressionHelper.py +++ b/UnityPy/helpers/CompressionHelper.py @@ -49,14 +49,29 @@ def compress_lzma(data: bytes) -> bytes: :return: compressed data :rtype: bytes """ - ec = lzma.LZMACompressor( - format=lzma.FORMAT_RAW, - filters=[ - {"id": lzma.FILTER_LZMA1, "dict_size": 524288, "lc": 3, "lp": 0, "pb": 2, } - ], - ) - ec.compress(data) - return b"]\x00\x00\x08\x00" + ec.flush() + compressor = lzma.LZMACompressor(format=lzma.FORMAT_ALONE, filters=[{ + "id": lzma.FILTER_LZMA1, + "dict_size": 524288, + "lc": 3, + "lp": 0, + "pb": 2, + }]) + compressed_data = compressor.compress(data) + compressor.flush() + + # Extract the header + header = bytearray(compressed_data[:13]) + compressed_body = compressed_data[13:] + + # Decompressed size (adjust this value according to your data) + decompressed_size = len(data) + + # Manually set the decompressed size in the header + header[5:13] = decompressed_size.to_bytes(8, 'little') + + # Combine the header and the compressed body + final_compressed_data = header + compressed_body + + return final_compressed_data # LZ4 From e6a775955b47a106437caceeaa7702aed173e181 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 4 Sep 2024 11:28:27 +0200 Subject: [PATCH 249/599] fix importlib.resource not finding UnityPy/resources/uncompressed.tpk --- UnityPy/resources/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 UnityPy/resources/__init__.py diff --git a/UnityPy/resources/__init__.py b/UnityPy/resources/__init__.py new file mode 100644 index 00000000..e69de29b From df701bf27db5d6691c7ecbc05a8ab3552fca5170 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 4 Sep 2024 13:05:07 +0200 Subject: [PATCH 250/599] Fix LZMA issues related to BundleFile-Web and compression (#257) * CompressionHelper - lzma - add option to read/save length and use better params for compression * BundleFile - web - decompress lzma with decompressed size * CompresseionHelper - lzma - use the size of the compressed_data for the struct string formating closes #250 closes #253 solves #237 --- UnityPy/files/BundleFile.py | 12 ++++-- UnityPy/helpers/CompressionHelper.py | 57 ++++++++++++++-------------- 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index bb2060cc..054c623c 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -37,7 +37,9 @@ def __init__( if signature == "UnityArchive": raise NotImplementedError("BundleFile - UnityArchive") elif signature in ["UnityWeb", "UnityRaw"]: - m_DirectoryInfo, blocksReader = self.read_web_raw(reader, signature == "UnityWeb") + m_DirectoryInfo, blocksReader = self.read_web_raw( + reader, signature == "UnityWeb" + ) elif signature == "UnityFS": m_DirectoryInfo, blocksReader = self.read_fs(reader) else: @@ -69,9 +71,11 @@ def read_web_raw(self, reader: EndianBinaryReader, is_compressed = True): reader.Position = headerSize - uncompressedBytes = CompressionHelper.decompress_lzma( - reader.read_bytes(compressedSize) - ) if is_compressed else reader.read_bytes(uncompressedSize) + uncompressedBytes = reader.read_bytes(compressedSize) + if is_compressed: + uncompressedBytes = CompressionHelper.decompress_lzma( + uncompressedBytes, True + ) blocksReader = EndianBinaryReader(uncompressedBytes, offset=headerSize) nodesCount = blocksReader.read_int() diff --git a/UnityPy/helpers/CompressionHelper.py b/UnityPy/helpers/CompressionHelper.py index 48b1a127..28d496ed 100644 --- a/UnityPy/helpers/CompressionHelper.py +++ b/UnityPy/helpers/CompressionHelper.py @@ -10,7 +10,7 @@ # LZMA -def decompress_lzma(data: bytes) -> bytes: +def decompress_lzma(data: bytes, read_decompressed_size: bool = False) -> bytes: """decompresses lzma-compressed data :param data: compressed data @@ -21,9 +21,9 @@ def decompress_lzma(data: bytes) -> bytes: """ props, dict_size = struct.unpack(" bytes: } ], ) - return dec.decompress(data[5:]) + data_offset = 13 if read_decompressed_size else 5 + return dec.decompress(data[data_offset:]) -def compress_lzma(data: bytes) -> bytes: +def compress_lzma(data: bytes, write_decompressed_size: bool = False) -> bytes: """compresses data via lzma (unity specific) The current static settings may not be the best solution, but they are the most commonly used values and should therefore be enough for the time being. @@ -49,29 +50,29 @@ def compress_lzma(data: bytes) -> bytes: :return: compressed data :rtype: bytes """ - compressor = lzma.LZMACompressor(format=lzma.FORMAT_ALONE, filters=[{ - "id": lzma.FILTER_LZMA1, - "dict_size": 524288, - "lc": 3, - "lp": 0, - "pb": 2, - }]) - compressed_data = compressor.compress(data) + compressor.flush() - - # Extract the header - header = bytearray(compressed_data[:13]) - compressed_body = compressed_data[13:] - - # Decompressed size (adjust this value according to your data) - decompressed_size = len(data) - - # Manually set the decompressed size in the header - header[5:13] = decompressed_size.to_bytes(8, 'little') - - # Combine the header and the compressed body - final_compressed_data = header + compressed_body + dict_size = 0x800000 # 1 << 23 + compressor = lzma.LZMACompressor( + format=lzma.FORMAT_RAW, + filters=[ + { + "id": lzma.FILTER_LZMA1, + "dict_size": dict_size, + "lc": 3, + "lp": 0, + "pb": 2, + "mode": lzma.MODE_NORMAL, + "mf": lzma.MF_BT4, + "nice_len": 123, + } + ], + ) - return final_compressed_data + compressed_data = compressor.compress(data) + compressor.flush() + cdl = len(compressed_data) + if write_decompressed_size: + return struct.pack(f" Date: Wed, 4 Sep 2024 19:40:58 +0800 Subject: [PATCH 251/599] Implement saving Unity Web and Raw bundles (#247) * Implement saving Unity Web and Raw bundles * Check signature before compression * BundleFile - save_web_raw - small cleanup, better header length, version>=4 support --------- Co-authored-by: Rudolf Kolbe --- UnityPy/files/BundleFile.py | 117 +++++++++++++++++++++++++++++++----- 1 file changed, 103 insertions(+), 14 deletions(-) diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 054c623c..6b88b2d2 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -37,9 +37,7 @@ def __init__( if signature == "UnityArchive": raise NotImplementedError("BundleFile - UnityArchive") elif signature in ["UnityWeb", "UnityRaw"]: - m_DirectoryInfo, blocksReader = self.read_web_raw( - reader, signature == "UnityWeb" - ) + m_DirectoryInfo, blocksReader = self.read_web_raw(reader) elif signature == "UnityFS": m_DirectoryInfo, blocksReader = self.read_fs(reader) else: @@ -47,12 +45,12 @@ def __init__( self.read_files(blocksReader, m_DirectoryInfo) - def read_web_raw(self, reader: EndianBinaryReader, is_compressed = True): + def read_web_raw(self, reader: EndianBinaryReader): # def read_header_and_blocks_info(self, reader:EndianBinaryReader): version = self.version if version >= 4: - _hash = reader.read_bytes(16) - crc = reader.read_u_int() + self._hash = reader.read_bytes(16) + self.crc = reader.read_u_int() minimumStreamedBytes = reader.read_u_int() headerSize = reader.read_u_int() @@ -72,10 +70,8 @@ def read_web_raw(self, reader: EndianBinaryReader, is_compressed = True): reader.Position = headerSize uncompressedBytes = reader.read_bytes(compressedSize) - if is_compressed: - uncompressedBytes = CompressionHelper.decompress_lzma( - uncompressedBytes, True - ) + if self.signature == "UnityWeb": + uncompressedBytes = CompressionHelper.decompress_lzma(uncompressedBytes, True) blocksReader = EndianBinaryReader(uncompressedBytes, offset=headerSize) nodesCount = blocksReader.read_int() @@ -219,10 +215,7 @@ def save(self, packer=None): if self.signature == "UnityArchive": raise NotImplementedError("BundleFile - UnityArchive") elif self.signature in ["UnityWeb", "UnityRaw"]: - raise NotImplementedError( - "Saving Unity Web and Raw bundles isn't supported yet" - ) - # self.save_web_raw(writer) + self.save_web_raw(writer) elif self.signature == "UnityFS": if not packer or packer == "none": self.save_fs(writer, 64, 64) @@ -403,6 +396,102 @@ def save_fs(self, writer: EndianBinaryWriter, data_flag: int, block_info_flag: i writer.write_long(writer_end_pos) writer.Position = writer_end_pos + + def save_web_raw(self, writer: EndianBinaryWriter): + # (version >= 4) hash + # (version >= 4) crc + # minimumStreamedBytes + # headerSize + # numberOfLevelsToDownloadBeforeStreaming + # levelCount + # compressedSize * levelCount + # uncompressedSize * levelCount + # (version >= 2) completeFileSize + # (version >= 3) file_info_header_size + # compressed assets + + if self.version > 3: + raise NotImplementedError("Saving Unity Web bundles with version > 3 is not supported") + + # Calculate fileInfoHeaderSize for set offsets + file_info_header_size = 4 # for nodesCount + + for file_name in self.files.keys(): + file_info_header_size += len(file_name.encode()) + 1 # +1 for null terminator + file_info_header_size += 4 * 2 # 4 bytes each for offset and size + + file_info_header_padding_size = 4 - (file_info_header_size % 4) if file_info_header_size % 4 != 0 else 0 + file_info_header_size += file_info_header_padding_size + + # Prepare directory info + directory_info_writer = EndianBinaryWriter() + directory_info_writer.write_int(len(self.files)) # nodesCount + + file_content_writer = EndianBinaryWriter() + current_offset = file_info_header_size + + for file_name, f in self.files.items(): + directory_info_writer.write_string_to_null(file_name) + directory_info_writer.write_u_int(current_offset) + + # Get file content + if isinstance(f, (EndianBinaryReader, EndianBinaryWriter)): + file_data = f.bytes + else: + file_data = f.save() + + file_size = len(file_data) + directory_info_writer.write_u_int(file_size) + + file_content_writer.write_bytes(file_data) + current_offset += file_size + + directory_info_writer.write(b'\x00' * file_info_header_padding_size) + uncompressed_directory_info = directory_info_writer.bytes + uncompressed_file_content = file_content_writer.bytes + + # Combine directory info and file content + uncompressed_content = uncompressed_directory_info + uncompressed_file_content + compressed_content = uncompressed_content + if self.signature == "UnityWeb": + compressed_content = CompressionHelper.compress_lzma(uncompressed_content, True) + + # Write header + header_size = writer.Position + 24 # assuming levelCount = 1 + if self.version >= 2: + header_size += 4 + if self.version >= 3: + header_size += 4 + if self.version >= 4: + header_size += 20 + # pad to multiple of 4 + header_size = (header_size + 3) & ~3 + + if self.version >= 4: + writer.write_bytes(self._hash) + writer.write_u_int(self.crc) + + writer.write_u_int(header_size + len(compressed_content)) # minimumStreamedBytes (same as completeFileSize) + writer.write_u_int(header_size) # headerSize + writer.write_u_int(1) # numberOfLevelsToDownloadBeforeStreaming (always 1) + writer.write_int(1) # levelCount (always 1) + + writer.write_u_int(len(compressed_content)) # compressedSize + writer.write_u_int(len(uncompressed_content)) # uncompressedSize + + if self.version >= 2: + writer.write_u_int(header_size + len(compressed_content)) # completeFileSize + + if self.version >= 3: + writer.write_u_int(file_info_header_size) # file_info_header_size + + # align header + writer.align_stream(4) + + # Write compressed content + writer.write(compressed_content) + + def decompress_data( self, compressed_data: bytes, From f16fca94dfe1a2de033e5cef566a1de427eeb741 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 4 Sep 2024 13:51:51 +0200 Subject: [PATCH 252/599] MeshRendererExporter - fix typo fixes #228 --- UnityPy/export/MeshRendererExporter.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/UnityPy/export/MeshRendererExporter.py b/UnityPy/export/MeshRendererExporter.py index 233b5878..604c30c5 100644 --- a/UnityPy/export/MeshRendererExporter.py +++ b/UnityPy/export/MeshRendererExporter.py @@ -1,4 +1,3 @@ -import os from ..classes import Renderer, SkinnedMeshRenderer, Material from .MeshExporter import export_mesh_obj @@ -17,7 +16,7 @@ def get_mesh(meshR: Renderer): def export_mesh_renderer(obj: Renderer, export_dir: str) -> None: - env = mesh.assets_file.enviroment + env = obj.assets_file.enviroment env.fs.makedirs(export_dir, exist_ok=True) meshR = obj.read() mesh = get_mesh(meshR) From 4d003ba78942bf89f1510791082cff57ae851e58 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 4 Sep 2024 14:01:35 +0200 Subject: [PATCH 253/599] publish.yml - add cp313 wheels --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 83b0b723..30413011 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -15,7 +15,7 @@ jobs: fail-fast: true matrix: os: ["ubuntu-20.04", "windows-2019", "macos-11"] - cp: ["cp37", "cp38", "cp39", "cp310", "cp311", "cp312"] + cp: ["cp37", "cp38", "cp39", "cp310", "cp311", "cp312", "cp313"] name: ${{ matrix.os }} - ${{ matrix.cp }} From 739615e717c2cca5a326ed129e617c184e6f49b2 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 4 Sep 2024 19:48:00 +0200 Subject: [PATCH 254/599] bump version to 1.10.15 --- UnityPy/__init__.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 7f446a28..b6107549 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,7 +1,9 @@ -__version__ = "1.10.14" +__version__ = "1.10.15" -from .environment import Environment -from .helpers.ArchiveStorageManager import set_assetbundle_decrypt_key +from .environment import Environment as Environment +from .helpers.ArchiveStorageManager import ( + set_assetbundle_decrypt_key as set_assetbundle_decrypt_key, +) def load(*args, fs=None, **kwargs): From 5f403517c3b1dd08b5f49662f938a529bdc33e21 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 4 Sep 2024 20:48:53 +0200 Subject: [PATCH 255/599] publish.yml - use cibuildwheel 2.20 --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 30413011..9ac69133 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -42,7 +42,7 @@ jobs: platforms: all - name: Build wheels - uses: pypa/cibuildwheel@v2.17.0 + uses: pypa/cibuildwheel@v2.20.0 env: CIBW_ARCHS_LINUX: auto aarch64 CIBW_ARCHS_MACOS: x86_64 arm64 universal2 From 9bd7266cd32cdb2e15115e40803228c5fff29a62 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 5 Sep 2024 10:45:06 +0200 Subject: [PATCH 256/599] Mesh export float accuracy fix (#258) * MeshExporter - use 9 significant float digits instead of 7 * Test: MeshExporter - obj precision fix --- UnityPy/export/MeshExporter.py | 6 +- tests/samples/xinzexi_2_n_tex_mesh | 1448 ++++++++++++++-------------- 2 files changed, 727 insertions(+), 727 deletions(-) diff --git a/UnityPy/export/MeshExporter.py b/UnityPy/export/MeshExporter.py index db68c8a9..d55814af 100644 --- a/UnityPy/export/MeshExporter.py +++ b/UnityPy/export/MeshExporter.py @@ -24,7 +24,7 @@ def export_mesh_obj(m_Mesh, material_names: list = None): for v in range(int(m_Mesh.m_VertexCount)): sb.append( - "v {0:.7G} {1:.7G} {2:.7G}\r\n".format( + "v {0:.9G} {1:.9G} {2:.9G}\r\n".format( -m_Mesh.m_Vertices[v * c], m_Mesh.m_Vertices[v * c + 1], m_Mesh.m_Vertices[v * c + 2], @@ -41,7 +41,7 @@ def export_mesh_obj(m_Mesh, material_names: list = None): for v in range(int(m_Mesh.m_VertexCount)): sb.append( - "vt {0:.7G} {1:.7G}\r\n".format( + "vt {0:.9G} {1:.9G}\r\n".format( m_Mesh.m_UV0[v * c], m_Mesh.m_UV0[v * c + 1] ).replace("nan", "0") ) @@ -56,7 +56,7 @@ def export_mesh_obj(m_Mesh, material_names: list = None): for v in range(int(m_Mesh.m_VertexCount)): sb.append( - "vn {0:.7G} {1:.7G} {2:.7G}\r\n".format( + "vn {0:.9G} {1:.9G} {2:.9G}\r\n".format( -m_Mesh.m_Normals[v * c], m_Mesh.m_Normals[v * c + 1], m_Mesh.m_Normals[v * c + 2], diff --git a/tests/samples/xinzexi_2_n_tex_mesh b/tests/samples/xinzexi_2_n_tex_mesh index 0a57a2ec..b0231623 100644 --- a/tests/samples/xinzexi_2_n_tex_mesh +++ b/tests/samples/xinzexi_2_n_tex_mesh @@ -723,730 +723,730 @@ v -896 1439 0 v -896 1471 0 v -928 1471 0 v -928 1439 0 -vt 0.0004882812 0.001024604 -vt 0.0004882812 0.6895492 -vt 0.1411133 0.6895492 -vt 0.1411133 0.001024604 -vt 0.1420898 0.001024604 -vt 0.1420898 0.6567623 -vt 0.2827148 0.6567623 -vt 0.2827148 0.001024604 -vt 0.2836914 0.001024604 -vt 0.2836914 0.3288934 -vt 0.4399414 0.3288934 -vt 0.4399414 0.001024604 -vt 0.440918 0.001024604 -vt 0.440918 0.3288934 -vt 0.597168 0.3288934 -vt 0.597168 0.001024604 -vt 0.5981445 0.001024604 -vt 0.5981445 0.2961066 -vt 0.7543945 0.2961066 -vt 0.7543945 0.001024604 -vt 0.7553711 0.001024604 -vt 0.7553711 0.2961066 -vt 0.8959961 0.2961066 -vt 0.8959961 0.001024604 -vt 0.8969727 0.001024604 -vt 0.8969727 0.2961066 -vt 0.9907227 0.2961066 -vt 0.9907227 0.001024604 -vt 0.5981445 0.2981557 -vt 0.5981445 0.5932377 -vt 0.6918945 0.5932377 -vt 0.6918945 0.2981557 -vt 0.6928711 0.2981557 -vt 0.6928711 0.5604508 -vt 0.7866211 0.5604508 -vt 0.7866211 0.2981557 -vt 0.7875977 0.2981557 -vt 0.7875977 0.5604508 -vt 0.8813477 0.5604508 -vt 0.8813477 0.2981557 -vt 0.8823242 0.2981557 -vt 0.8823242 0.5604508 -vt 0.9448242 0.5604508 -vt 0.9448242 0.2981557 -vt 0.2836914 0.3309426 -vt 0.2836914 0.494877 -vt 0.3774414 0.494877 -vt 0.3774414 0.3309426 -vt 0.378418 0.3309426 -vt 0.378418 0.494877 -vt 0.456543 0.494877 -vt 0.456543 0.3309426 -vt 0.9458008 0.2981557 -vt 0.9458008 0.6915984 -vt 0.9770508 0.6915984 -vt 0.9770508 0.2981557 -vt 0.4575195 0.3309426 -vt 0.4575195 0.6915984 -vt 0.4887695 0.6915984 -vt 0.4887695 0.3309426 -vt 0.2836914 0.4969262 -vt 0.2836914 0.5952868 -vt 0.3930664 0.5952868 -vt 0.3930664 0.4969262 -vt 0.4897461 0.3309426 -vt 0.4897461 0.5604508 -vt 0.5366211 0.5604508 -vt 0.5366211 0.3309426 -vt 0.4897461 0.5625 -vt 0.4897461 0.6936475 -vt 0.5678711 0.6936475 -vt 0.5678711 0.5625 -vt 0.6928711 0.5625 -vt 0.6928711 0.6936475 -vt 0.7709961 0.6936475 -vt 0.7709961 0.5625 -vt 0.394043 0.4969262 -vt 0.394043 0.6608607 -vt 0.456543 0.6608607 -vt 0.456543 0.4969262 -vt 0.7719727 0.5625 -vt 0.7719727 0.7592213 -vt 0.8188477 0.7592213 -vt 0.8188477 0.5625 -vt 0.8198242 0.5625 -vt 0.8198242 0.6280738 -vt 0.9448242 0.6280738 -vt 0.9448242 0.5625 -vt 0.8198242 0.630123 -vt 0.8198242 0.6956967 -vt 0.9448242 0.6956967 -vt 0.9448242 0.630123 -vt 0.5981445 0.5952868 -vt 0.5981445 0.7264345 -vt 0.6450195 0.7264345 -vt 0.6450195 0.5952868 -vt 0.2836914 0.5973361 -vt 0.2836914 0.7284836 -vt 0.3305664 0.7284836 -vt 0.3305664 0.5973361 -vt 0.331543 0.5973361 -vt 0.331543 0.7284836 -vt 0.378418 0.7284836 -vt 0.378418 0.5973361 -vt 0.1420898 0.6588115 -vt 0.1420898 0.7571721 -vt 0.2045898 0.7571721 -vt 0.2045898 0.6588115 -vt 0.2055664 0.6588115 -vt 0.2055664 0.789959 -vt 0.2524414 0.789959 -vt 0.2524414 0.6588115 -vt 0.394043 0.6629099 -vt 0.394043 0.7612705 -vt 0.456543 0.7612705 -vt 0.456543 0.6629099 -vt 0.0004882812 0.6915984 -vt 0.0004882812 0.8227459 -vt 0.04736328 0.8227459 -vt 0.04736328 0.6915984 -vt 0.04833984 0.6915984 -vt 0.04833984 0.8227459 -vt 0.09521484 0.8227459 -vt 0.09521484 0.6915984 -vt 0.5688477 0.3309426 -vt 0.5688477 0.494877 -vt 0.5932617 0.494877 -vt 0.5932617 0.3309426 -vt 0.9458008 0.6936475 -vt 0.9458008 0.7920082 -vt 0.9926758 0.7920082 -vt 0.9926758 0.6936475 -vt 0.4897461 0.6956967 -vt 0.4897461 0.7940574 -vt 0.5366211 0.7940574 -vt 0.5366211 0.6956967 -vt 0.5981445 0.7284836 -vt 0.5981445 0.7612705 -vt 0.7387695 0.7612705 -vt 0.7387695 0.7284836 -vt 0.7719727 0.7612705 -vt 0.7719727 0.7940574 -vt 0.9125977 0.7940574 -vt 0.9125977 0.7612705 -vt 0.5688477 0.4969262 -vt 0.5688477 0.6280738 -vt 0.5932617 0.6280738 -vt 0.5932617 0.4969262 -vt 0.2836914 0.7305328 -vt 0.2836914 0.7961066 -vt 0.3461914 0.7961066 -vt 0.3461914 0.7305328 -vt 0.09619141 0.6915984 -vt 0.09619141 0.8227459 -vt 0.1274414 0.8227459 -vt 0.1274414 0.6915984 -vt 0.4575195 0.6936475 -vt 0.4575195 0.8247951 -vt 0.4887695 0.8247951 -vt 0.4887695 0.6936475 -vt 0.5375977 0.6956967 -vt 0.5375977 0.8268443 -vt 0.5688477 0.8268443 -vt 0.5688477 0.6956967 -vt 0.5698242 0.630123 -vt 0.5698242 0.8268443 -vt 0.5854492 0.8268443 -vt 0.5854492 0.630123 -vt 0.1420898 0.7592213 -vt 0.1420898 0.8247951 -vt 0.1889648 0.8247951 -vt 0.1889648 0.7592213 -vt 0.253418 0.6588115 -vt 0.253418 0.8555328 -vt 0.269043 0.8555328 -vt 0.269043 0.6588115 -vt 0.7397461 0.6956967 -vt 0.7397461 0.7940574 -vt 0.7709961 0.7940574 -vt 0.7709961 0.6956967 -vt 0.9135742 0.6977459 -vt 0.9135742 0.7633197 -vt 0.9448242 0.7633197 -vt 0.9448242 0.6977459 -vt 0.347168 0.7305328 -vt 0.347168 0.7961066 -vt 0.378418 0.7961066 -vt 0.378418 0.7305328 -vt 0.394043 0.7633197 -vt 0.394043 0.7961066 -vt 0.456543 0.7961066 -vt 0.456543 0.7633197 -vt 0.5981445 0.7633197 -vt 0.5981445 0.8288934 -vt 0.6293945 0.8288934 -vt 0.6293945 0.7633197 -vt 0.6303711 0.7633197 -vt 0.6303711 0.8288934 -vt 0.6616211 0.8288934 -vt 0.6616211 0.7633197 -vt 0.6625977 0.7633197 -vt 0.6625977 0.8288934 -vt 0.6938477 0.8288934 -vt 0.6938477 0.7633197 -vt 0.6948242 0.7633197 -vt 0.6948242 0.8288934 -vt 0.7260742 0.8288934 -vt 0.7260742 0.7633197 -vt 0.9135742 0.7653688 -vt 0.9135742 0.8309426 -vt 0.9448242 0.8309426 -vt 0.9448242 0.7653688 -vt 0.2055664 0.7920082 -vt 0.2055664 0.9231557 -vt 0.2211914 0.9231557 -vt 0.2211914 0.7920082 -vt 0.222168 0.7920082 -vt 0.222168 0.9231557 -vt 0.237793 0.9231557 -vt 0.237793 0.7920082 -vt 0.9458008 0.7940574 -vt 0.9458008 0.8596312 -vt 0.9770508 0.8596312 -vt 0.9770508 0.7940574 -vt 0.9780273 0.7940574 -vt 0.9780273 0.9252049 -vt 0.9936523 0.9252049 -vt 0.9936523 0.7940574 -vt 0.7397461 0.7961066 -vt 0.7397461 0.8288934 -vt 0.8022461 0.8288934 -vt 0.8022461 0.7961066 -vt 0.4897461 0.7961066 -vt 0.4897461 0.9272541 -vt 0.5053711 0.9272541 -vt 0.5053711 0.7961066 -vt 0.8032227 0.7961066 -vt 0.8032227 0.8288934 -vt 0.8657227 0.8288934 -vt 0.8657227 0.7961066 -vt 0.5063477 0.7961066 -vt 0.5063477 0.8944672 -vt 0.5219727 0.8944672 -vt 0.5219727 0.7961066 -vt 0.8666992 0.7961066 -vt 0.8666992 0.8944672 -vt 0.8823242 0.8944672 -vt 0.8823242 0.7961066 -vt 0.8833008 0.7961066 -vt 0.8833008 0.8944672 -vt 0.8989258 0.8944672 -vt 0.8989258 0.7961066 -vt 0.2836914 0.7981557 -vt 0.2836914 0.8965164 -vt 0.2993164 0.8965164 -vt 0.2993164 0.7981557 -vt 0.300293 0.7981557 -vt 0.300293 0.8965164 -vt 0.315918 0.8965164 -vt 0.315918 0.7981557 -vt 0.3168945 0.7981557 -vt 0.3168945 0.8965164 -vt 0.3325195 0.8965164 -vt 0.3325195 0.7981557 -vt 0.3334961 0.7981557 -vt 0.3334961 0.8309426 -vt 0.3803711 0.8309426 -vt 0.3803711 0.7981557 -vt 0.394043 0.7981557 -vt 0.394043 0.8309426 -vt 0.440918 0.8309426 -vt 0.440918 0.7981557 -vt 0.0004882812 0.8247951 -vt 0.0004882812 0.857582 -vt 0.04736328 0.857582 -vt 0.04736328 0.8247951 -vt 0.04833984 0.8247951 -vt 0.04833984 0.857582 -vt 0.09521484 0.857582 -vt 0.09521484 0.8247951 -vt 0.1420898 0.8268443 -vt 0.1420898 0.8596312 -vt 0.1889648 0.8596312 -vt 0.1889648 0.8268443 -vt 0.5375977 0.8288934 -vt 0.5375977 0.8616803 -vt 0.5844727 0.8616803 -vt 0.5844727 0.8288934 -vt 0.09619141 0.8247951 -vt 0.09619141 0.9231557 -vt 0.1118164 0.9231557 -vt 0.1118164 0.8247951 -vt 0.112793 0.8247951 -vt 0.112793 0.9231557 -vt 0.128418 0.9231557 -vt 0.128418 0.8247951 -vt 0.5981445 0.8309426 -vt 0.5981445 0.8637295 -vt 0.6450195 0.8637295 -vt 0.6450195 0.8309426 -vt 0.4575195 0.8268443 -vt 0.4575195 0.9252049 -vt 0.4731445 0.9252049 -vt 0.4731445 0.8268443 -vt 0.6459961 0.8309426 -vt 0.6459961 0.8965164 -vt 0.6616211 0.8965164 -vt 0.6616211 0.8309426 -vt 0.6625977 0.8309426 -vt 0.6625977 0.8965164 -vt 0.6782227 0.8965164 -vt 0.6782227 0.8309426 -vt 0.6791992 0.8309426 -vt 0.6791992 0.8637295 -vt 0.7104492 0.8637295 -vt 0.7104492 0.8309426 -vt 0.7114258 0.8309426 -vt 0.7114258 0.8637295 -vt 0.7426758 0.8637295 -vt 0.7426758 0.8309426 -vt 0.7436523 0.8309426 -vt 0.7436523 0.8637295 -vt 0.7749023 0.8637295 -vt 0.7749023 0.8309426 -vt 0.7758789 0.8309426 -vt 0.7758789 0.8965164 -vt 0.7915039 0.8965164 -vt 0.7915039 0.8309426 -vt 0.7924805 0.8309426 -vt 0.7924805 0.8965164 -vt 0.8081055 0.8965164 -vt 0.8081055 0.8309426 -vt 0.809082 0.8309426 -vt 0.809082 0.8965164 -vt 0.824707 0.8965164 -vt 0.824707 0.8309426 -vt 0.8256836 0.8309426 -vt 0.8256836 0.8965164 -vt 0.8413086 0.8965164 -vt 0.8413086 0.8309426 -vt 0.3334961 0.8329918 -vt 0.3334961 0.8657787 -vt 0.3647461 0.8657787 -vt 0.3647461 0.8329918 -vt 0.8422852 0.8309426 -vt 0.8422852 0.8965164 -vt 0.8579102 0.8965164 -vt 0.8579102 0.8309426 -vt 0.3657227 0.8329918 -vt 0.3657227 0.8985656 -vt 0.3813477 0.8985656 -vt 0.3813477 0.8329918 -vt 0.394043 0.8329918 -vt 0.394043 0.8985656 -vt 0.409668 0.8985656 -vt 0.409668 0.8329918 -vt 0.4106445 0.8329918 -vt 0.4106445 0.8985656 -vt 0.4262695 0.8985656 -vt 0.4262695 0.8329918 -vt 0.4272461 0.8329918 -vt 0.4272461 0.8985656 -vt 0.4428711 0.8985656 -vt 0.4428711 0.8329918 -vt 0.9135742 0.8329918 -vt 0.9135742 0.8985656 -vt 0.9291992 0.8985656 -vt 0.9291992 0.8329918 -vt 0.253418 0.857582 -vt 0.253418 0.9231557 -vt 0.269043 0.9231557 -vt 0.269043 0.857582 -vt 0.0004882812 0.8596312 -vt 0.0004882812 0.9252049 -vt 0.01611328 0.9252049 -vt 0.01611328 0.8596312 -vt 0.01708984 0.8596312 -vt 0.01708984 0.892418 -vt 0.04833984 0.892418 -vt 0.04833984 0.8596312 -vt 0.04931641 0.8596312 -vt 0.04931641 0.892418 -vt 0.08056641 0.892418 -vt 0.08056641 0.8596312 -vt 0.1420898 0.8616803 -vt 0.1420898 0.9272541 -vt 0.1577148 0.9272541 -vt 0.1577148 0.8616803 -vt 0.1586914 0.8616803 -vt 0.1586914 0.8944672 -vt 0.1899414 0.8944672 -vt 0.1899414 0.8616803 -vt 0.9458008 0.8616803 -vt 0.9458008 0.9272541 -vt 0.9614258 0.9272541 -vt 0.9614258 0.8616803 -vt 0.5375977 0.8637295 -vt 0.5375977 0.9293033 -vt 0.5532227 0.9293033 -vt 0.5532227 0.8637295 -vt 0.5541992 0.8637295 -vt 0.5541992 0.9293033 -vt 0.5698242 0.9293033 -vt 0.5698242 0.8637295 -vt 0.5708008 0.8637295 -vt 0.5708008 0.9293033 -vt 0.5864258 0.9293033 -vt 0.5864258 0.8637295 -vt 0.5981445 0.8657787 -vt 0.5981445 0.9313524 -vt 0.6137695 0.9313524 -vt 0.6137695 0.8657787 -vt 0.6147461 0.8657787 -vt 0.6147461 0.9313524 -vt 0.6303711 0.9313524 -vt 0.6303711 0.8657787 -vt 0.6791992 0.8657787 -vt 0.6791992 0.9313524 -vt 0.6948242 0.9313524 -vt 0.6948242 0.8657787 -vt 0.6958008 0.8657787 -vt 0.6958008 0.9313524 -vt 0.7114258 0.9313524 -vt 0.7114258 0.8657787 -vt 0.7124023 0.8657787 -vt 0.7124023 0.9313524 -vt 0.7280273 0.9313524 -vt 0.7280273 0.8657787 -vt 0.7290039 0.8657787 -vt 0.7290039 0.9313524 -vt 0.7446289 0.9313524 -vt 0.7446289 0.8657787 -vt 0.7456055 0.8657787 -vt 0.7456055 0.9313524 -vt 0.7612305 0.9313524 -vt 0.7612305 0.8657787 -vt 0.3334961 0.8678279 -vt 0.3334961 0.9006147 -vt 0.3647461 0.9006147 -vt 0.3647461 0.8678279 -vt 0.01708984 0.8944672 -vt 0.01708984 0.960041 -vt 0.03271484 0.960041 -vt 0.03271484 0.8944672 -vt 0.03369141 0.8944672 -vt 0.03369141 0.960041 -vt 0.04931641 0.960041 -vt 0.04931641 0.8944672 -vt 0.05029297 0.8944672 -vt 0.05029297 0.960041 -vt 0.06591797 0.960041 -vt 0.06591797 0.8944672 -vt 0.1586914 0.8965164 -vt 0.1586914 0.9293033 -vt 0.1899414 0.9293033 -vt 0.1899414 0.8965164 -vt 0.06689453 0.8944672 -vt 0.06689453 0.960041 -vt 0.08251953 0.960041 -vt 0.08251953 0.8944672 -vt 0.5063477 0.8965164 -vt 0.5063477 0.9620901 -vt 0.5219727 0.9620901 -vt 0.5219727 0.8965164 -vt 0.8666992 0.8965164 -vt 0.8666992 0.9293033 -vt 0.8979492 0.9293033 -vt 0.8979492 0.8965164 -vt 0.2836914 0.8985656 -vt 0.2836914 0.9641393 -vt 0.2993164 0.9641393 -vt 0.2993164 0.8985656 -vt 0.300293 0.8985656 -vt 0.300293 0.9641393 -vt 0.315918 0.9641393 -vt 0.315918 0.8985656 -vt 0.3168945 0.8985656 -vt 0.3168945 0.9641393 -vt 0.3325195 0.9641393 -vt 0.3325195 0.8985656 -vt 0.6459961 0.8985656 -vt 0.6459961 0.9641393 -vt 0.6616211 0.9641393 -vt 0.6616211 0.8985656 -vt 0.6625977 0.8985656 -vt 0.6625977 0.9641393 -vt 0.6782227 0.9641393 -vt 0.6782227 0.8985656 -vt 0.7758789 0.8985656 -vt 0.7758789 0.9641393 -vt 0.7915039 0.9641393 -vt 0.7915039 0.8985656 -vt 0.7924805 0.8985656 -vt 0.7924805 0.9313524 -vt 0.8237305 0.9313524 -vt 0.8237305 0.8985656 -vt 0.824707 0.8985656 -vt 0.824707 0.9313524 -vt 0.855957 0.9313524 -vt 0.855957 0.8985656 -vt 0.3657227 0.9006147 -vt 0.3657227 0.9661885 -vt 0.3813477 0.9661885 -vt 0.3813477 0.9006147 -vt 0.394043 0.9006147 -vt 0.394043 0.9661885 -vt 0.409668 0.9661885 -vt 0.409668 0.9006147 -vt 0.4106445 0.9006147 -vt 0.4106445 0.9661885 -vt 0.4262695 0.9661885 -vt 0.4262695 0.9006147 -vt 0.4272461 0.9006147 -vt 0.4272461 0.9661885 -vt 0.4428711 0.9661885 -vt 0.4428711 0.9006147 -vt 0.9135742 0.9006147 -vt 0.9135742 0.9334016 -vt 0.9448242 0.9334016 -vt 0.9448242 0.9006147 -vt 0.3334961 0.9026639 -vt 0.3334961 0.9682377 -vt 0.3491211 0.9682377 -vt 0.3491211 0.9026639 -vt 0.09619141 0.9252049 -vt 0.09619141 0.9579918 -vt 0.1274414 0.9579918 -vt 0.1274414 0.9252049 -vt 0.2055664 0.9252049 -vt 0.2055664 0.9907787 -vt 0.2211914 0.9907787 -vt 0.2211914 0.9252049 -vt 0.222168 0.9252049 -vt 0.222168 0.9907787 -vt 0.237793 0.9907787 -vt 0.237793 0.9252049 -vt 0.4575195 0.9272541 -vt 0.4575195 0.960041 -vt 0.4887695 0.960041 -vt 0.4887695 0.9272541 -vt 0.253418 0.9252049 -vt 0.253418 0.9907787 -vt 0.269043 0.9907787 -vt 0.269043 0.9252049 -vt 0.0004882812 0.9272541 -vt 0.0004882812 0.9928279 -vt 0.01611328 0.9928279 -vt 0.01611328 0.9272541 -vt 0.9458008 0.9293033 -vt 0.9458008 0.9620901 -vt 0.9770508 0.9620901 -vt 0.9770508 0.9293033 -vt 0.9780273 0.9272541 -vt 0.9780273 0.960041 -vt 0.9936523 0.960041 -vt 0.9936523 0.9272541 -vt 0.1420898 0.9293033 -vt 0.1420898 0.9620901 -vt 0.1577148 0.9620901 -vt 0.1577148 0.9293033 -vt 0.4897461 0.9293033 -vt 0.4897461 0.9620901 -vt 0.5053711 0.9620901 -vt 0.5053711 0.9293033 -vt 0.1586914 0.9313524 -vt 0.1586914 0.9641393 -vt 0.1743164 0.9641393 -vt 0.1743164 0.9313524 -vt 0.175293 0.9313524 -vt 0.175293 0.9641393 -vt 0.190918 0.9641393 -vt 0.190918 0.9313524 -vt 0.5375977 0.9313524 -vt 0.5375977 0.9641393 -vt 0.5532227 0.9641393 -vt 0.5532227 0.9313524 -vt 0.5541992 0.9313524 -vt 0.5541992 0.9641393 -vt 0.5698242 0.9641393 -vt 0.5698242 0.9313524 -vt 0.5708008 0.9313524 -vt 0.5708008 0.9641393 -vt 0.5864258 0.9641393 -vt 0.5864258 0.9313524 -vt 0.8666992 0.9313524 -vt 0.8666992 0.9641393 -vt 0.8823242 0.9641393 -vt 0.8823242 0.9313524 -vt 0.8833008 0.9313524 -vt 0.8833008 0.9641393 -vt 0.8989258 0.9641393 -vt 0.8989258 0.9313524 -vt 0.5981445 0.9334016 -vt 0.5981445 0.9661885 -vt 0.6137695 0.9661885 -vt 0.6137695 0.9334016 -vt 0.6147461 0.9334016 -vt 0.6147461 0.9661885 -vt 0.6303711 0.9661885 -vt 0.6303711 0.9334016 -vt 0.6791992 0.9334016 -vt 0.6791992 0.9661885 -vt 0.6948242 0.9661885 -vt 0.6948242 0.9334016 -vt 0.6958008 0.9334016 -vt 0.6958008 0.9661885 -vt 0.7114258 0.9661885 -vt 0.7114258 0.9334016 -vt 0.7124023 0.9334016 -vt 0.7124023 0.9661885 -vt 0.7280273 0.9661885 -vt 0.7280273 0.9334016 -vt 0.7290039 0.9334016 -vt 0.7290039 0.9661885 -vt 0.7446289 0.9661885 -vt 0.7446289 0.9334016 -vt 0.7456055 0.9334016 -vt 0.7456055 0.9661885 -vt 0.7612305 0.9661885 -vt 0.7612305 0.9334016 -vt 0.7924805 0.9334016 -vt 0.7924805 0.9661885 -vt 0.8081055 0.9661885 -vt 0.8081055 0.9334016 -vt 0.809082 0.9334016 -vt 0.809082 0.9661885 -vt 0.824707 0.9661885 -vt 0.824707 0.9334016 -vt 0.8256836 0.9334016 -vt 0.8256836 0.9661885 -vt 0.8413086 0.9661885 -vt 0.8413086 0.9334016 -vt 0.8422852 0.9334016 -vt 0.8422852 0.9661885 -vt 0.8579102 0.9661885 -vt 0.8579102 0.9334016 -vt 0.9135742 0.9354508 -vt 0.9135742 0.9682377 -vt 0.9291992 0.9682377 -vt 0.9291992 0.9354508 -vt 0.09619141 0.960041 -vt 0.09619141 0.9928279 -vt 0.1118164 0.9928279 -vt 0.1118164 0.960041 -vt 0.112793 0.960041 -vt 0.112793 0.9928279 -vt 0.128418 0.9928279 -vt 0.128418 0.960041 -vt 0.01708984 0.9620901 -vt 0.01708984 0.994877 -vt 0.03271484 0.994877 -vt 0.03271484 0.9620901 -vt 0.03369141 0.9620901 -vt 0.03369141 0.994877 -vt 0.04931641 0.994877 -vt 0.04931641 0.9620901 -vt 0.05029297 0.9620901 -vt 0.05029297 0.994877 -vt 0.06591797 0.994877 -vt 0.06591797 0.9620901 -vt 0.06689453 0.9620901 -vt 0.06689453 0.994877 -vt 0.08251953 0.994877 -vt 0.08251953 0.9620901 -vt 0.4575195 0.9620901 -vt 0.4575195 0.994877 -vt 0.4731445 0.994877 -vt 0.4731445 0.9620901 -vt 0.9780273 0.9620901 -vt 0.9780273 0.994877 -vt 0.9936523 0.994877 -vt 0.9936523 0.9620901 -vt 0.1420898 0.9641393 -vt 0.1420898 0.9969262 -vt 0.1577148 0.9969262 -vt 0.1577148 0.9641393 -vt 0.4897461 0.9641393 -vt 0.4897461 0.9969262 -vt 0.5053711 0.9969262 -vt 0.5053711 0.9641393 -vt 0.5063477 0.9641393 -vt 0.5063477 0.9969262 -vt 0.5219727 0.9969262 -vt 0.5219727 0.9641393 -vt 0.9458008 0.9641393 -vt 0.9458008 0.9969262 -vt 0.9614258 0.9969262 -vt 0.9614258 0.9641393 -vt 0.1586914 0.9661885 -vt 0.1586914 0.9989754 -vt 0.1743164 0.9989754 -vt 0.1743164 0.9661885 -vt 0.175293 0.9661885 -vt 0.175293 0.9989754 -vt 0.190918 0.9989754 -vt 0.190918 0.9661885 -vt 0.2836914 0.9661885 -vt 0.2836914 0.9989754 -vt 0.2993164 0.9989754 -vt 0.2993164 0.9661885 -vt 0.300293 0.9661885 -vt 0.300293 0.9989754 -vt 0.315918 0.9989754 -vt 0.315918 0.9661885 -vt 0.3168945 0.9661885 -vt 0.3168945 0.9989754 -vt 0.3325195 0.9989754 -vt 0.3325195 0.9661885 -vt 0.5375977 0.9661885 -vt 0.5375977 0.9989754 -vt 0.5532227 0.9989754 -vt 0.5532227 0.9661885 -vt 0.5541992 0.9661885 -vt 0.5541992 0.9989754 -vt 0.5698242 0.9989754 -vt 0.5698242 0.9661885 -vt 0.5708008 0.9661885 -vt 0.5708008 0.9989754 -vt 0.5864258 0.9989754 -vt 0.5864258 0.9661885 -vt 0.6459961 0.9661885 -vt 0.6459961 0.9989754 -vt 0.6616211 0.9989754 -vt 0.6616211 0.9661885 +vt 0.00048828125 0.00102460384 +vt 0.00048828125 0.689549208 +vt 0.141113281 0.689549208 +vt 0.141113281 0.00102460384 +vt 0.142089844 0.00102460384 +vt 0.142089844 0.656762302 +vt 0.282714844 0.656762302 +vt 0.282714844 0.00102460384 +vt 0.283691406 0.00102460384 +vt 0.283691406 0.328893423 +vt 0.439941406 0.328893423 +vt 0.439941406 0.00102460384 +vt 0.440917969 0.00102460384 +vt 0.440917969 0.328893423 +vt 0.597167969 0.328893423 +vt 0.597167969 0.00102460384 +vt 0.598144531 0.00102460384 +vt 0.598144531 0.296106577 +vt 0.754394531 0.296106577 +vt 0.754394531 0.00102460384 +vt 0.755371094 0.00102460384 +vt 0.755371094 0.296106577 +vt 0.895996094 0.296106577 +vt 0.895996094 0.00102460384 +vt 0.896972656 0.00102460384 +vt 0.896972656 0.296106577 +vt 0.990722656 0.296106577 +vt 0.990722656 0.00102460384 +vt 0.598144531 0.298155725 +vt 0.598144531 0.593237698 +vt 0.691894531 0.593237698 +vt 0.691894531 0.298155725 +vt 0.692871094 0.298155725 +vt 0.692871094 0.560450792 +vt 0.786621094 0.560450792 +vt 0.786621094 0.298155725 +vt 0.787597656 0.298155725 +vt 0.787597656 0.560450792 +vt 0.881347656 0.560450792 +vt 0.881347656 0.298155725 +vt 0.882324219 0.298155725 +vt 0.882324219 0.560450792 +vt 0.944824219 0.560450792 +vt 0.944824219 0.298155725 +vt 0.283691406 0.330942631 +vt 0.283691406 0.49487704 +vt 0.377441406 0.49487704 +vt 0.377441406 0.330942631 +vt 0.378417969 0.330942631 +vt 0.378417969 0.49487704 +vt 0.456542969 0.49487704 +vt 0.456542969 0.330942631 +vt 0.945800781 0.298155725 +vt 0.945800781 0.691598356 +vt 0.977050781 0.691598356 +vt 0.977050781 0.298155725 +vt 0.457519531 0.330942631 +vt 0.457519531 0.691598356 +vt 0.488769531 0.691598356 +vt 0.488769531 0.330942631 +vt 0.283691406 0.496926248 +vt 0.283691406 0.595286846 +vt 0.393066406 0.595286846 +vt 0.393066406 0.496926248 +vt 0.489746094 0.330942631 +vt 0.489746094 0.560450792 +vt 0.536621094 0.560450792 +vt 0.536621094 0.330942631 +vt 0.489746094 0.5625 +vt 0.489746094 0.693647504 +vt 0.567871094 0.693647504 +vt 0.567871094 0.5625 +vt 0.692871094 0.5625 +vt 0.692871094 0.693647504 +vt 0.770996094 0.693647504 +vt 0.770996094 0.5625 +vt 0.394042969 0.496926248 +vt 0.394042969 0.660860658 +vt 0.456542969 0.660860658 +vt 0.456542969 0.496926248 +vt 0.771972656 0.5625 +vt 0.771972656 0.759221315 +vt 0.818847656 0.759221315 +vt 0.818847656 0.5625 +vt 0.819824219 0.5625 +vt 0.819824219 0.628073812 +vt 0.944824219 0.628073812 +vt 0.944824219 0.5625 +vt 0.819824219 0.63012296 +vt 0.819824219 0.695696712 +vt 0.944824219 0.695696712 +vt 0.944824219 0.63012296 +vt 0.598144531 0.595286846 +vt 0.598144531 0.726434469 +vt 0.645019531 0.726434469 +vt 0.645019531 0.595286846 +vt 0.283691406 0.597336054 +vt 0.283691406 0.728483617 +vt 0.330566406 0.728483617 +vt 0.330566406 0.597336054 +vt 0.331542969 0.597336054 +vt 0.331542969 0.728483617 +vt 0.378417969 0.728483617 +vt 0.378417969 0.597336054 +vt 0.142089844 0.65881145 +vt 0.142089844 0.757172108 +vt 0.204589844 0.757172108 +vt 0.204589844 0.65881145 +vt 0.205566406 0.65881145 +vt 0.205566406 0.789959013 +vt 0.252441406 0.789959013 +vt 0.252441406 0.65881145 +vt 0.394042969 0.662909865 +vt 0.394042969 0.761270523 +vt 0.456542969 0.761270523 +vt 0.456542969 0.662909865 +vt 0.00048828125 0.691598356 +vt 0.00048828125 0.822745919 +vt 0.0473632812 0.822745919 +vt 0.0473632812 0.691598356 +vt 0.0483398438 0.691598356 +vt 0.0483398438 0.822745919 +vt 0.0952148438 0.822745919 +vt 0.0952148438 0.691598356 +vt 0.568847656 0.330942631 +vt 0.568847656 0.49487704 +vt 0.593261719 0.49487704 +vt 0.593261719 0.330942631 +vt 0.945800781 0.693647504 +vt 0.945800781 0.792008162 +vt 0.992675781 0.792008162 +vt 0.992675781 0.693647504 +vt 0.489746094 0.695696712 +vt 0.489746094 0.794057369 +vt 0.536621094 0.794057369 +vt 0.536621094 0.695696712 +vt 0.598144531 0.728483617 +vt 0.598144531 0.761270523 +vt 0.738769531 0.761270523 +vt 0.738769531 0.728483617 +vt 0.771972656 0.761270523 +vt 0.771972656 0.794057369 +vt 0.912597656 0.794057369 +vt 0.912597656 0.761270523 +vt 0.568847656 0.496926248 +vt 0.568847656 0.628073812 +vt 0.593261719 0.628073812 +vt 0.593261719 0.496926248 +vt 0.283691406 0.730532765 +vt 0.283691406 0.796106577 +vt 0.346191406 0.796106577 +vt 0.346191406 0.730532765 +vt 0.0961914062 0.691598356 +vt 0.0961914062 0.822745919 +vt 0.127441406 0.822745919 +vt 0.127441406 0.691598356 +vt 0.457519531 0.693647504 +vt 0.457519531 0.824795067 +vt 0.488769531 0.824795067 +vt 0.488769531 0.693647504 +vt 0.537597656 0.695696712 +vt 0.537597656 0.826844275 +vt 0.568847656 0.826844275 +vt 0.568847656 0.695696712 +vt 0.569824219 0.63012296 +vt 0.569824219 0.826844275 +vt 0.585449219 0.826844275 +vt 0.585449219 0.63012296 +vt 0.142089844 0.759221315 +vt 0.142089844 0.824795067 +vt 0.188964844 0.824795067 +vt 0.188964844 0.759221315 +vt 0.253417969 0.65881145 +vt 0.253417969 0.855532765 +vt 0.269042969 0.855532765 +vt 0.269042969 0.65881145 +vt 0.739746094 0.695696712 +vt 0.739746094 0.794057369 +vt 0.770996094 0.794057369 +vt 0.770996094 0.695696712 +vt 0.913574219 0.697745919 +vt 0.913574219 0.763319671 +vt 0.944824219 0.763319671 +vt 0.944824219 0.697745919 +vt 0.347167969 0.730532765 +vt 0.347167969 0.796106577 +vt 0.378417969 0.796106577 +vt 0.378417969 0.730532765 +vt 0.394042969 0.763319671 +vt 0.394042969 0.796106577 +vt 0.456542969 0.796106577 +vt 0.456542969 0.763319671 +vt 0.598144531 0.763319671 +vt 0.598144531 0.828893423 +vt 0.629394531 0.828893423 +vt 0.629394531 0.763319671 +vt 0.630371094 0.763319671 +vt 0.630371094 0.828893423 +vt 0.661621094 0.828893423 +vt 0.661621094 0.763319671 +vt 0.662597656 0.763319671 +vt 0.662597656 0.828893423 +vt 0.693847656 0.828893423 +vt 0.693847656 0.763319671 +vt 0.694824219 0.763319671 +vt 0.694824219 0.828893423 +vt 0.726074219 0.828893423 +vt 0.726074219 0.763319671 +vt 0.913574219 0.765368819 +vt 0.913574219 0.830942631 +vt 0.944824219 0.830942631 +vt 0.944824219 0.765368819 +vt 0.205566406 0.792008162 +vt 0.205566406 0.923155725 +vt 0.221191406 0.923155725 +vt 0.221191406 0.792008162 +vt 0.222167969 0.792008162 +vt 0.222167969 0.923155725 +vt 0.237792969 0.923155725 +vt 0.237792969 0.792008162 +vt 0.945800781 0.794057369 +vt 0.945800781 0.859631181 +vt 0.977050781 0.859631181 +vt 0.977050781 0.794057369 +vt 0.978027344 0.794057369 +vt 0.978027344 0.925204933 +vt 0.993652344 0.925204933 +vt 0.993652344 0.794057369 +vt 0.739746094 0.796106577 +vt 0.739746094 0.828893423 +vt 0.802246094 0.828893423 +vt 0.802246094 0.796106577 +vt 0.489746094 0.796106577 +vt 0.489746094 0.927254081 +vt 0.505371094 0.927254081 +vt 0.505371094 0.796106577 +vt 0.803222656 0.796106577 +vt 0.803222656 0.828893423 +vt 0.865722656 0.828893423 +vt 0.865722656 0.796106577 +vt 0.506347656 0.796106577 +vt 0.506347656 0.894467235 +vt 0.521972656 0.894467235 +vt 0.521972656 0.796106577 +vt 0.866699219 0.796106577 +vt 0.866699219 0.894467235 +vt 0.882324219 0.894467235 +vt 0.882324219 0.796106577 +vt 0.883300781 0.796106577 +vt 0.883300781 0.894467235 +vt 0.898925781 0.894467235 +vt 0.898925781 0.796106577 +vt 0.283691406 0.798155725 +vt 0.283691406 0.896516383 +vt 0.299316406 0.896516383 +vt 0.299316406 0.798155725 +vt 0.300292969 0.798155725 +vt 0.300292969 0.896516383 +vt 0.315917969 0.896516383 +vt 0.315917969 0.798155725 +vt 0.316894531 0.798155725 +vt 0.316894531 0.896516383 +vt 0.332519531 0.896516383 +vt 0.332519531 0.798155725 +vt 0.333496094 0.798155725 +vt 0.333496094 0.830942631 +vt 0.380371094 0.830942631 +vt 0.380371094 0.798155725 +vt 0.394042969 0.798155725 +vt 0.394042969 0.830942631 +vt 0.440917969 0.830942631 +vt 0.440917969 0.798155725 +vt 0.00048828125 0.824795067 +vt 0.00048828125 0.857581973 +vt 0.0473632812 0.857581973 +vt 0.0473632812 0.824795067 +vt 0.0483398438 0.824795067 +vt 0.0483398438 0.857581973 +vt 0.0952148438 0.857581973 +vt 0.0952148438 0.824795067 +vt 0.142089844 0.826844275 +vt 0.142089844 0.859631181 +vt 0.188964844 0.859631181 +vt 0.188964844 0.826844275 +vt 0.537597656 0.828893423 +vt 0.537597656 0.861680329 +vt 0.584472656 0.861680329 +vt 0.584472656 0.828893423 +vt 0.0961914062 0.824795067 +vt 0.0961914062 0.923155725 +vt 0.111816406 0.923155725 +vt 0.111816406 0.824795067 +vt 0.112792969 0.824795067 +vt 0.112792969 0.923155725 +vt 0.128417969 0.923155725 +vt 0.128417969 0.824795067 +vt 0.598144531 0.830942631 +vt 0.598144531 0.863729477 +vt 0.645019531 0.863729477 +vt 0.645019531 0.830942631 +vt 0.457519531 0.826844275 +vt 0.457519531 0.925204933 +vt 0.473144531 0.925204933 +vt 0.473144531 0.826844275 +vt 0.645996094 0.830942631 +vt 0.645996094 0.896516383 +vt 0.661621094 0.896516383 +vt 0.661621094 0.830942631 +vt 0.662597656 0.830942631 +vt 0.662597656 0.896516383 +vt 0.678222656 0.896516383 +vt 0.678222656 0.830942631 +vt 0.679199219 0.830942631 +vt 0.679199219 0.863729477 +vt 0.710449219 0.863729477 +vt 0.710449219 0.830942631 +vt 0.711425781 0.830942631 +vt 0.711425781 0.863729477 +vt 0.742675781 0.863729477 +vt 0.742675781 0.830942631 +vt 0.743652344 0.830942631 +vt 0.743652344 0.863729477 +vt 0.774902344 0.863729477 +vt 0.774902344 0.830942631 +vt 0.775878906 0.830942631 +vt 0.775878906 0.896516383 +vt 0.791503906 0.896516383 +vt 0.791503906 0.830942631 +vt 0.792480469 0.830942631 +vt 0.792480469 0.896516383 +vt 0.808105469 0.896516383 +vt 0.808105469 0.830942631 +vt 0.809082031 0.830942631 +vt 0.809082031 0.896516383 +vt 0.824707031 0.896516383 +vt 0.824707031 0.830942631 +vt 0.825683594 0.830942631 +vt 0.825683594 0.896516383 +vt 0.841308594 0.896516383 +vt 0.841308594 0.830942631 +vt 0.333496094 0.832991838 +vt 0.333496094 0.865778685 +vt 0.364746094 0.865778685 +vt 0.364746094 0.832991838 +vt 0.842285156 0.830942631 +vt 0.842285156 0.896516383 +vt 0.857910156 0.896516383 +vt 0.857910156 0.830942631 +vt 0.365722656 0.832991838 +vt 0.365722656 0.89856559 +vt 0.381347656 0.89856559 +vt 0.381347656 0.832991838 +vt 0.394042969 0.832991838 +vt 0.394042969 0.89856559 +vt 0.409667969 0.89856559 +vt 0.409667969 0.832991838 +vt 0.410644531 0.832991838 +vt 0.410644531 0.89856559 +vt 0.426269531 0.89856559 +vt 0.426269531 0.832991838 +vt 0.427246094 0.832991838 +vt 0.427246094 0.89856559 +vt 0.442871094 0.89856559 +vt 0.442871094 0.832991838 +vt 0.913574219 0.832991838 +vt 0.913574219 0.89856559 +vt 0.929199219 0.89856559 +vt 0.929199219 0.832991838 +vt 0.253417969 0.857581973 +vt 0.253417969 0.923155725 +vt 0.269042969 0.923155725 +vt 0.269042969 0.857581973 +vt 0.00048828125 0.859631181 +vt 0.00048828125 0.925204933 +vt 0.0161132812 0.925204933 +vt 0.0161132812 0.859631181 +vt 0.0170898438 0.859631181 +vt 0.0170898438 0.892418027 +vt 0.0483398438 0.892418027 +vt 0.0483398438 0.859631181 +vt 0.0493164062 0.859631181 +vt 0.0493164062 0.892418027 +vt 0.0805664062 0.892418027 +vt 0.0805664062 0.859631181 +vt 0.142089844 0.861680329 +vt 0.142089844 0.927254081 +vt 0.157714844 0.927254081 +vt 0.157714844 0.861680329 +vt 0.158691406 0.861680329 +vt 0.158691406 0.894467235 +vt 0.189941406 0.894467235 +vt 0.189941406 0.861680329 +vt 0.945800781 0.861680329 +vt 0.945800781 0.927254081 +vt 0.961425781 0.927254081 +vt 0.961425781 0.861680329 +vt 0.537597656 0.863729477 +vt 0.537597656 0.929303288 +vt 0.553222656 0.929303288 +vt 0.553222656 0.863729477 +vt 0.554199219 0.863729477 +vt 0.554199219 0.929303288 +vt 0.569824219 0.929303288 +vt 0.569824219 0.863729477 +vt 0.570800781 0.863729477 +vt 0.570800781 0.929303288 +vt 0.586425781 0.929303288 +vt 0.586425781 0.863729477 +vt 0.598144531 0.865778685 +vt 0.598144531 0.931352437 +vt 0.613769531 0.931352437 +vt 0.613769531 0.865778685 +vt 0.614746094 0.865778685 +vt 0.614746094 0.931352437 +vt 0.630371094 0.931352437 +vt 0.630371094 0.865778685 +vt 0.679199219 0.865778685 +vt 0.679199219 0.931352437 +vt 0.694824219 0.931352437 +vt 0.694824219 0.865778685 +vt 0.695800781 0.865778685 +vt 0.695800781 0.931352437 +vt 0.711425781 0.931352437 +vt 0.711425781 0.865778685 +vt 0.712402344 0.865778685 +vt 0.712402344 0.931352437 +vt 0.728027344 0.931352437 +vt 0.728027344 0.865778685 +vt 0.729003906 0.865778685 +vt 0.729003906 0.931352437 +vt 0.744628906 0.931352437 +vt 0.744628906 0.865778685 +vt 0.745605469 0.865778685 +vt 0.745605469 0.931352437 +vt 0.761230469 0.931352437 +vt 0.761230469 0.865778685 +vt 0.333496094 0.867827892 +vt 0.333496094 0.900614738 +vt 0.364746094 0.900614738 +vt 0.364746094 0.867827892 +vt 0.0170898438 0.894467235 +vt 0.0170898438 0.960040987 +vt 0.0327148438 0.960040987 +vt 0.0327148438 0.894467235 +vt 0.0336914062 0.894467235 +vt 0.0336914062 0.960040987 +vt 0.0493164062 0.960040987 +vt 0.0493164062 0.894467235 +vt 0.0502929688 0.894467235 +vt 0.0502929688 0.960040987 +vt 0.0659179688 0.960040987 +vt 0.0659179688 0.894467235 +vt 0.158691406 0.896516383 +vt 0.158691406 0.929303288 +vt 0.189941406 0.929303288 +vt 0.189941406 0.896516383 +vt 0.0668945312 0.894467235 +vt 0.0668945312 0.960040987 +vt 0.0825195312 0.960040987 +vt 0.0825195312 0.894467235 +vt 0.506347656 0.896516383 +vt 0.506347656 0.962090135 +vt 0.521972656 0.962090135 +vt 0.521972656 0.896516383 +vt 0.866699219 0.896516383 +vt 0.866699219 0.929303288 +vt 0.897949219 0.929303288 +vt 0.897949219 0.896516383 +vt 0.283691406 0.89856559 +vt 0.283691406 0.964139342 +vt 0.299316406 0.964139342 +vt 0.299316406 0.89856559 +vt 0.300292969 0.89856559 +vt 0.300292969 0.964139342 +vt 0.315917969 0.964139342 +vt 0.315917969 0.89856559 +vt 0.316894531 0.89856559 +vt 0.316894531 0.964139342 +vt 0.332519531 0.964139342 +vt 0.332519531 0.89856559 +vt 0.645996094 0.89856559 +vt 0.645996094 0.964139342 +vt 0.661621094 0.964139342 +vt 0.661621094 0.89856559 +vt 0.662597656 0.89856559 +vt 0.662597656 0.964139342 +vt 0.678222656 0.964139342 +vt 0.678222656 0.89856559 +vt 0.775878906 0.89856559 +vt 0.775878906 0.964139342 +vt 0.791503906 0.964139342 +vt 0.791503906 0.89856559 +vt 0.792480469 0.89856559 +vt 0.792480469 0.931352437 +vt 0.823730469 0.931352437 +vt 0.823730469 0.89856559 +vt 0.824707031 0.89856559 +vt 0.824707031 0.931352437 +vt 0.855957031 0.931352437 +vt 0.855957031 0.89856559 +vt 0.365722656 0.900614738 +vt 0.365722656 0.96618855 +vt 0.381347656 0.96618855 +vt 0.381347656 0.900614738 +vt 0.394042969 0.900614738 +vt 0.394042969 0.96618855 +vt 0.409667969 0.96618855 +vt 0.409667969 0.900614738 +vt 0.410644531 0.900614738 +vt 0.410644531 0.96618855 +vt 0.426269531 0.96618855 +vt 0.426269531 0.900614738 +vt 0.427246094 0.900614738 +vt 0.427246094 0.96618855 +vt 0.442871094 0.96618855 +vt 0.442871094 0.900614738 +vt 0.913574219 0.900614738 +vt 0.913574219 0.933401644 +vt 0.944824219 0.933401644 +vt 0.944824219 0.900614738 +vt 0.333496094 0.902663946 +vt 0.333496094 0.968237698 +vt 0.349121094 0.968237698 +vt 0.349121094 0.902663946 +vt 0.0961914062 0.925204933 +vt 0.0961914062 0.957991779 +vt 0.127441406 0.957991779 +vt 0.127441406 0.925204933 +vt 0.205566406 0.925204933 +vt 0.205566406 0.990778685 +vt 0.221191406 0.990778685 +vt 0.221191406 0.925204933 +vt 0.222167969 0.925204933 +vt 0.222167969 0.990778685 +vt 0.237792969 0.990778685 +vt 0.237792969 0.925204933 +vt 0.457519531 0.927254081 +vt 0.457519531 0.960040987 +vt 0.488769531 0.960040987 +vt 0.488769531 0.927254081 +vt 0.253417969 0.925204933 +vt 0.253417969 0.990778685 +vt 0.269042969 0.990778685 +vt 0.269042969 0.925204933 +vt 0.00048828125 0.927254081 +vt 0.00048828125 0.992827892 +vt 0.0161132812 0.992827892 +vt 0.0161132812 0.927254081 +vt 0.945800781 0.929303288 +vt 0.945800781 0.962090135 +vt 0.977050781 0.962090135 +vt 0.977050781 0.929303288 +vt 0.978027344 0.927254081 +vt 0.978027344 0.960040987 +vt 0.993652344 0.960040987 +vt 0.993652344 0.927254081 +vt 0.142089844 0.929303288 +vt 0.142089844 0.962090135 +vt 0.157714844 0.962090135 +vt 0.157714844 0.929303288 +vt 0.489746094 0.929303288 +vt 0.489746094 0.962090135 +vt 0.505371094 0.962090135 +vt 0.505371094 0.929303288 +vt 0.158691406 0.931352437 +vt 0.158691406 0.964139342 +vt 0.174316406 0.964139342 +vt 0.174316406 0.931352437 +vt 0.175292969 0.931352437 +vt 0.175292969 0.964139342 +vt 0.190917969 0.964139342 +vt 0.190917969 0.931352437 +vt 0.537597656 0.931352437 +vt 0.537597656 0.964139342 +vt 0.553222656 0.964139342 +vt 0.553222656 0.931352437 +vt 0.554199219 0.931352437 +vt 0.554199219 0.964139342 +vt 0.569824219 0.964139342 +vt 0.569824219 0.931352437 +vt 0.570800781 0.931352437 +vt 0.570800781 0.964139342 +vt 0.586425781 0.964139342 +vt 0.586425781 0.931352437 +vt 0.866699219 0.931352437 +vt 0.866699219 0.964139342 +vt 0.882324219 0.964139342 +vt 0.882324219 0.931352437 +vt 0.883300781 0.931352437 +vt 0.883300781 0.964139342 +vt 0.898925781 0.964139342 +vt 0.898925781 0.931352437 +vt 0.598144531 0.933401644 +vt 0.598144531 0.96618855 +vt 0.613769531 0.96618855 +vt 0.613769531 0.933401644 +vt 0.614746094 0.933401644 +vt 0.614746094 0.96618855 +vt 0.630371094 0.96618855 +vt 0.630371094 0.933401644 +vt 0.679199219 0.933401644 +vt 0.679199219 0.96618855 +vt 0.694824219 0.96618855 +vt 0.694824219 0.933401644 +vt 0.695800781 0.933401644 +vt 0.695800781 0.96618855 +vt 0.711425781 0.96618855 +vt 0.711425781 0.933401644 +vt 0.712402344 0.933401644 +vt 0.712402344 0.96618855 +vt 0.728027344 0.96618855 +vt 0.728027344 0.933401644 +vt 0.729003906 0.933401644 +vt 0.729003906 0.96618855 +vt 0.744628906 0.96618855 +vt 0.744628906 0.933401644 +vt 0.745605469 0.933401644 +vt 0.745605469 0.96618855 +vt 0.761230469 0.96618855 +vt 0.761230469 0.933401644 +vt 0.792480469 0.933401644 +vt 0.792480469 0.96618855 +vt 0.808105469 0.96618855 +vt 0.808105469 0.933401644 +vt 0.809082031 0.933401644 +vt 0.809082031 0.96618855 +vt 0.824707031 0.96618855 +vt 0.824707031 0.933401644 +vt 0.825683594 0.933401644 +vt 0.825683594 0.96618855 +vt 0.841308594 0.96618855 +vt 0.841308594 0.933401644 +vt 0.842285156 0.933401644 +vt 0.842285156 0.96618855 +vt 0.857910156 0.96618855 +vt 0.857910156 0.933401644 +vt 0.913574219 0.935450792 +vt 0.913574219 0.968237698 +vt 0.929199219 0.968237698 +vt 0.929199219 0.935450792 +vt 0.0961914062 0.960040987 +vt 0.0961914062 0.992827892 +vt 0.111816406 0.992827892 +vt 0.111816406 0.960040987 +vt 0.112792969 0.960040987 +vt 0.112792969 0.992827892 +vt 0.128417969 0.992827892 +vt 0.128417969 0.960040987 +vt 0.0170898438 0.962090135 +vt 0.0170898438 0.99487704 +vt 0.0327148438 0.99487704 +vt 0.0327148438 0.962090135 +vt 0.0336914062 0.962090135 +vt 0.0336914062 0.99487704 +vt 0.0493164062 0.99487704 +vt 0.0493164062 0.962090135 +vt 0.0502929688 0.962090135 +vt 0.0502929688 0.99487704 +vt 0.0659179688 0.99487704 +vt 0.0659179688 0.962090135 +vt 0.0668945312 0.962090135 +vt 0.0668945312 0.99487704 +vt 0.0825195312 0.99487704 +vt 0.0825195312 0.962090135 +vt 0.457519531 0.962090135 +vt 0.457519531 0.99487704 +vt 0.473144531 0.99487704 +vt 0.473144531 0.962090135 +vt 0.978027344 0.962090135 +vt 0.978027344 0.99487704 +vt 0.993652344 0.99487704 +vt 0.993652344 0.962090135 +vt 0.142089844 0.964139342 +vt 0.142089844 0.996926248 +vt 0.157714844 0.996926248 +vt 0.157714844 0.964139342 +vt 0.489746094 0.964139342 +vt 0.489746094 0.996926248 +vt 0.505371094 0.996926248 +vt 0.505371094 0.964139342 +vt 0.506347656 0.964139342 +vt 0.506347656 0.996926248 +vt 0.521972656 0.996926248 +vt 0.521972656 0.964139342 +vt 0.945800781 0.964139342 +vt 0.945800781 0.996926248 +vt 0.961425781 0.996926248 +vt 0.961425781 0.964139342 +vt 0.158691406 0.96618855 +vt 0.158691406 0.998975396 +vt 0.174316406 0.998975396 +vt 0.174316406 0.96618855 +vt 0.175292969 0.96618855 +vt 0.175292969 0.998975396 +vt 0.190917969 0.998975396 +vt 0.190917969 0.96618855 +vt 0.283691406 0.96618855 +vt 0.283691406 0.998975396 +vt 0.299316406 0.998975396 +vt 0.299316406 0.96618855 +vt 0.300292969 0.96618855 +vt 0.300292969 0.998975396 +vt 0.315917969 0.998975396 +vt 0.315917969 0.96618855 +vt 0.316894531 0.96618855 +vt 0.316894531 0.998975396 +vt 0.332519531 0.998975396 +vt 0.332519531 0.96618855 +vt 0.537597656 0.96618855 +vt 0.537597656 0.998975396 +vt 0.553222656 0.998975396 +vt 0.553222656 0.96618855 +vt 0.554199219 0.96618855 +vt 0.554199219 0.998975396 +vt 0.569824219 0.998975396 +vt 0.569824219 0.96618855 +vt 0.570800781 0.96618855 +vt 0.570800781 0.998975396 +vt 0.586425781 0.998975396 +vt 0.586425781 0.96618855 +vt 0.645996094 0.96618855 +vt 0.645996094 0.998975396 +vt 0.661621094 0.998975396 +vt 0.661621094 0.96618855 g xinzexi_2_n-mesh_0 f 3/3/3 2/2/2 1/1/1 f 1/1/1 4/4/4 3/3/3 From 4b57580d5ef519a41e131fe738f049ed5e310b33 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 5 Sep 2024 10:45:47 +0200 Subject: [PATCH 257/599] 1.10.16 version bump --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index b6107549..14506fe9 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.15" +__version__ = "1.10.16" from .environment import Environment as Environment from .helpers.ArchiveStorageManager import ( From 06a8063359ff21788ba0b62c4ca826f339a58194 Mon Sep 17 00:00:00 2001 From: AXiX-official <2879710747@qq.com> Date: Tue, 10 Sep 2024 21:02:56 +0800 Subject: [PATCH 258/599] Implement saving BundleFile with lzma packer --- UnityPy/files/BundleFile.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index 6b88b2d2..c37f4d8d 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -227,6 +227,8 @@ def save(self, packer=None): ) elif packer == "lz4": self.save_fs(writer, data_flag=194, block_info_flag=2) + elif packer == "lzma": + self.save_fs(writer, data_flag=65, block_info_flag=1) elif isinstance(packer, tuple): self.save_fs(writer, *packer) else: From 1ed817c0a87c51f73a9aa25975a94c6bdc7751fb Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 10 Sep 2024 21:52:04 +0200 Subject: [PATCH 259/599] bump to 1.10.17 --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 14506fe9..34b07f4a 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.16" +__version__ = "1.10.17" from .environment import Environment as Environment from .helpers.ArchiveStorageManager import ( From 4ac84d641537e014ad69941a84281848378ddd18 Mon Sep 17 00:00:00 2001 From: AXiX <2879710747@qq.com> Date: Thu, 12 Sep 2024 18:24:04 +0800 Subject: [PATCH 260/599] Implement chunk-based lz4 compression (#263) Implement chunk-based lz4 compression --- UnityPy/files/BundleFile.py | 48 ++++++++----------- UnityPy/helpers/CompressionHelper.py | 71 ++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 28 deletions(-) diff --git a/UnityPy/files/BundleFile.py b/UnityPy/files/BundleFile.py index c37f4d8d..c35a0483 100644 --- a/UnityPy/files/BundleFile.py +++ b/UnityPy/files/BundleFile.py @@ -301,31 +301,23 @@ def save_fs(self, writer: EndianBinaryWriter, data_flag: int, block_info_flag: i file_data = data_writer.bytes data_writer.dispose() - uncompressed_data_size = len(file_data) - # compress the data - switch = block_info_flag & 0x3F - if switch == 1: # LZMA - file_data = CompressionHelper.compress_lzma(file_data) - elif switch in [2, 3]: # LZ4, LZ4HC - file_data = CompressionHelper.compress_lz4(file_data) - elif switch == 4: # LZHAM - raise NotImplementedError - # else no compression - data stays the same - compressed_data_size = len(file_data) + file_data, block_info = CompressionHelper.chunk_based_compress( + file_data, block_info_flag + ) # write the block_info # uncompressedDataHash block_writer = EndianBinaryWriter(b"\x00" * 0x10) # data block info - # block count - block_writer.write_int(1) - # uncompressed size - block_writer.write_u_int(uncompressed_data_size) - # compressed size - block_writer.write_u_int(compressed_data_size) - # flag - block_writer.write_u_short(block_info_flag) + block_writer.write_int(len(block_info)) + for block_uncompressed_size, block_compressed_size, block_flag in block_info: + # uncompressed size + block_writer.write_u_int(block_uncompressed_size) + # compressed size + block_writer.write_u_int(block_compressed_size) + # flag + block_writer.write_u_short(block_flag) # file block info if not data_flag & 0x40: @@ -411,17 +403,17 @@ def save_web_raw(self, writer: EndianBinaryWriter): # (version >= 2) completeFileSize # (version >= 3) file_info_header_size # compressed assets - + if self.version > 3: raise NotImplementedError("Saving Unity Web bundles with version > 3 is not supported") # Calculate fileInfoHeaderSize for set offsets file_info_header_size = 4 # for nodesCount - + for file_name in self.files.keys(): file_info_header_size += len(file_name.encode()) + 1 # +1 for null terminator file_info_header_size += 4 * 2 # 4 bytes each for offset and size - + file_info_header_padding_size = 4 - (file_info_header_size % 4) if file_info_header_size % 4 != 0 else 0 file_info_header_size += file_info_header_padding_size @@ -431,20 +423,20 @@ def save_web_raw(self, writer: EndianBinaryWriter): file_content_writer = EndianBinaryWriter() current_offset = file_info_header_size - + for file_name, f in self.files.items(): directory_info_writer.write_string_to_null(file_name) directory_info_writer.write_u_int(current_offset) - + # Get file content if isinstance(f, (EndianBinaryReader, EndianBinaryWriter)): file_data = f.bytes else: file_data = f.save() - + file_size = len(file_data) directory_info_writer.write_u_int(file_size) - + file_content_writer.write_bytes(file_data) current_offset += file_size @@ -457,7 +449,7 @@ def save_web_raw(self, writer: EndianBinaryWriter): compressed_content = uncompressed_content if self.signature == "UnityWeb": compressed_content = CompressionHelper.compress_lzma(uncompressed_content, True) - + # Write header header_size = writer.Position + 24 # assuming levelCount = 1 if self.version >= 2: @@ -493,7 +485,7 @@ def save_web_raw(self, writer: EndianBinaryWriter): # Write compressed content writer.write(compressed_content) - + def decompress_data( self, compressed_data: bytes, diff --git a/UnityPy/helpers/CompressionHelper.py b/UnityPy/helpers/CompressionHelper.py index 28d496ed..e3d51d64 100644 --- a/UnityPy/helpers/CompressionHelper.py +++ b/UnityPy/helpers/CompressionHelper.py @@ -151,3 +151,74 @@ def compress_gzip(data: bytes) -> bytes: :rtype: bytes """ return gzip.compress(data) + + +def chunk_based_compress(data: bytes, block_info_flag: int) -> (bytes, list): + """compresses AssetBundle data based on the block_info_flag + LZ4/LZ4HC will be chunk-based compression + + :param data: uncompressed data + :type data: bytes + :param block_info_flag: block info flag + :type block_info_flag: int + :return: compressed data and block info + :rtype: tuple + """ + switch = block_info_flag & 0x3F + if switch == 0: # NONE + return data, [(len(data), len(data), block_info_flag)] + elif switch == 1: # LZMA + chunk_size = 0xFFFFFFFF + compress_func = compress_lzma + elif switch in [2, 3]: # LZ4 + chunk_size = 0x00020000 + compress_func = compress_lz4 + elif switch == 4: # LZHAM + raise NotImplementedError + block_info = [] + uncompressed_data_size = len(data) + compressed_file_data = bytearray() + p = 0 + while uncompressed_data_size > chunk_size: + compressed_data = compress_func(data[p: p + chunk_size]) + if len(compressed_data) > chunk_size: + compressed_file_data.extend(data[p: p + chunk_size]) + block_info.append( + ( + chunk_size, + chunk_size, + block_info_flag ^ switch, + ) + ) + else: + compressed_file_data.extend(compressed_data) + block_info.append( + ( + chunk_size, + len(compressed_data), + block_info_flag, + ) + ) + p += chunk_size + uncompressed_data_size -= chunk_size + if uncompressed_data_size > 0: + compressed_data = compress_func(data[p:]) + if len(compressed_data) > uncompressed_data_size: + compressed_file_data.extend(data[p:]) + block_info.append( + ( + uncompressed_data_size, + uncompressed_data_size, + block_info_flag ^ switch, + ) + ) + else: + compressed_file_data.extend(compressed_data) + block_info.append( + ( + uncompressed_data_size, + len(compressed_data), + block_info_flag, + ) + ) + return bytes(compressed_file_data), block_info From 41d74a15c7090472546c5dc94769932392ec9abb Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 12 Sep 2024 12:24:29 +0200 Subject: [PATCH 261/599] 1.10.18 - version bump --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 34b07f4a..d54dac2c 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.17" +__version__ = "1.10.18" from .environment import Environment as Environment from .helpers.ArchiveStorageManager import ( From 47b1bde027fd79d78af3de4d5e3bebd05f8ceeb8 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 17 Sep 2024 15:38:03 +0200 Subject: [PATCH 262/599] ObjectReader - fix dump_typetree --- UnityPy/files/ObjectReader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index a0894340..565e6d05 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -190,7 +190,7 @@ def __repr__(self): def dump_typetree(self, nodes: list = None) -> str: self.reset() sb = [] - nodes = self.get_typetree(nodes) + nodes = self.get_typetree_nodes(nodes) TypeTreeHelper.read_typetree_str(sb, nodes, self) return "".join(sb) From 8393ec370c1374e0e1cbd7f8001b431ebc730649 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 12 Sep 2024 16:45:30 +0200 Subject: [PATCH 263/599] use generated classes and patch compatiblity --- UnityPy/classes/Animation.py | 10 - UnityPy/classes/AnimationClip.py | 637 - UnityPy/classes/Animator.py | 39 - UnityPy/classes/AnimatorController.py | 324 - UnityPy/classes/AnimatorOverrideController.py | 17 - UnityPy/classes/AssetBundle.py | 22 - UnityPy/classes/AudioClip.py | 60 - UnityPy/classes/Avatar.py | 156 - UnityPy/classes/Behaviour.py | 16 - UnityPy/classes/BuildSettings.py | 12 - UnityPy/classes/Component.py | 16 - UnityPy/classes/EditorExtension.py | 20 - UnityPy/classes/Font.py | 85 - UnityPy/classes/GameObject.py | 50 - UnityPy/classes/Material.py | 70 - UnityPy/classes/Mesh.py | 1061 -- UnityPy/classes/MeshFilter.py | 8 - UnityPy/classes/MeshRenderer.py | 6 - UnityPy/classes/MonoBehaviour.py | 42 - UnityPy/classes/MonoScript.py | 23 - UnityPy/classes/MovieTexture.py | 11 - UnityPy/classes/NamedObject.py | 28 - UnityPy/classes/Object.py | 194 +- UnityPy/classes/PPtr.py | 157 +- UnityPy/classes/PlayerSettings.py | 29 - UnityPy/classes/RectTransform.py | 6 - UnityPy/classes/Renderer.py | 93 - UnityPy/classes/ResourceManager.py | 23 - UnityPy/classes/RuntimeAnimatorController.py | 6 - UnityPy/classes/Shader.py | 464 - UnityPy/classes/SkinnedMeshRenderer.py | 23 - UnityPy/classes/Sprite.py | 265 - UnityPy/classes/SpriteAtlas.py | 40 - UnityPy/classes/TextAsset.py | 35 - UnityPy/classes/Texture.py | 22 - UnityPy/classes/Texture2D.py | 308 - UnityPy/classes/Texture2DArray.py | 84 - UnityPy/classes/Transform.py | 14 - UnityPy/classes/VideoClip.py | 44 - UnityPy/classes/__init__.py | 43 +- UnityPy/classes/generated.py | 10660 ++++++++++++++++ UnityPy/classes/legacy_patch/AudioClip.py | 18 + UnityPy/classes/legacy_patch/Mesh.py | 13 + UnityPy/classes/legacy_patch/Renderer.py | 12 + UnityPy/classes/legacy_patch/Shader.py | 12 + UnityPy/classes/legacy_patch/Sprite.py | 12 + UnityPy/classes/legacy_patch/Texture2D.py | 84 + UnityPy/classes/legacy_patch/__init__.py | 6 + UnityPy/classes/math.py | 117 + UnityPy/enums/MeshTopology.py | 10 + UnityPy/enums/VertexFormat.py | 80 + UnityPy/export/AudioClipConverter.py | 40 +- UnityPy/export/MeshExporter.py | 89 +- UnityPy/export/MeshRendererExporter.py | 8 +- UnityPy/export/Texture2DConverter.py | 21 +- UnityPy/files/ObjectReader.py | 53 +- UnityPy/files/SerializedFile.py | 86 +- UnityPy/helpers/MeshHelper.py | 719 ++ UnityPy/helpers/PackedBitVector.py | 145 + UnityPy/helpers/TypeTreeHelper.py | 819 +- UnityPy/helpers/TypeTreeNode.py | 227 + UnityPy/resources/uncompressed.tpk | Bin 1029887 -> 1293843 bytes UnityPy/streams/EndianBinaryReader.py | 12 + generators/ClassesGenerator.py | 346 + 64 files changed, 13024 insertions(+), 5128 deletions(-) delete mode 100644 UnityPy/classes/Animation.py delete mode 100644 UnityPy/classes/AnimationClip.py delete mode 100644 UnityPy/classes/Animator.py delete mode 100644 UnityPy/classes/AnimatorController.py delete mode 100644 UnityPy/classes/AnimatorOverrideController.py delete mode 100644 UnityPy/classes/AssetBundle.py delete mode 100644 UnityPy/classes/AudioClip.py delete mode 100644 UnityPy/classes/Avatar.py delete mode 100644 UnityPy/classes/Behaviour.py delete mode 100644 UnityPy/classes/BuildSettings.py delete mode 100644 UnityPy/classes/Component.py delete mode 100644 UnityPy/classes/EditorExtension.py delete mode 100644 UnityPy/classes/Font.py delete mode 100644 UnityPy/classes/GameObject.py delete mode 100644 UnityPy/classes/Material.py delete mode 100644 UnityPy/classes/Mesh.py delete mode 100644 UnityPy/classes/MeshFilter.py delete mode 100644 UnityPy/classes/MeshRenderer.py delete mode 100644 UnityPy/classes/MonoBehaviour.py delete mode 100644 UnityPy/classes/MonoScript.py delete mode 100644 UnityPy/classes/MovieTexture.py delete mode 100644 UnityPy/classes/NamedObject.py delete mode 100644 UnityPy/classes/PlayerSettings.py delete mode 100644 UnityPy/classes/RectTransform.py delete mode 100644 UnityPy/classes/Renderer.py delete mode 100644 UnityPy/classes/ResourceManager.py delete mode 100644 UnityPy/classes/RuntimeAnimatorController.py delete mode 100644 UnityPy/classes/Shader.py delete mode 100644 UnityPy/classes/SkinnedMeshRenderer.py delete mode 100644 UnityPy/classes/Sprite.py delete mode 100644 UnityPy/classes/SpriteAtlas.py delete mode 100644 UnityPy/classes/TextAsset.py delete mode 100644 UnityPy/classes/Texture.py delete mode 100644 UnityPy/classes/Texture2D.py delete mode 100644 UnityPy/classes/Texture2DArray.py delete mode 100644 UnityPy/classes/Transform.py delete mode 100644 UnityPy/classes/VideoClip.py create mode 100644 UnityPy/classes/generated.py create mode 100644 UnityPy/classes/legacy_patch/AudioClip.py create mode 100644 UnityPy/classes/legacy_patch/Mesh.py create mode 100644 UnityPy/classes/legacy_patch/Renderer.py create mode 100644 UnityPy/classes/legacy_patch/Shader.py create mode 100644 UnityPy/classes/legacy_patch/Sprite.py create mode 100644 UnityPy/classes/legacy_patch/Texture2D.py create mode 100644 UnityPy/classes/legacy_patch/__init__.py create mode 100644 UnityPy/classes/math.py create mode 100644 UnityPy/enums/MeshTopology.py create mode 100644 UnityPy/enums/VertexFormat.py create mode 100644 UnityPy/helpers/MeshHelper.py create mode 100644 UnityPy/helpers/PackedBitVector.py create mode 100644 UnityPy/helpers/TypeTreeNode.py create mode 100644 generators/ClassesGenerator.py diff --git a/UnityPy/classes/Animation.py b/UnityPy/classes/Animation.py deleted file mode 100644 index 3006fcee..00000000 --- a/UnityPy/classes/Animation.py +++ /dev/null @@ -1,10 +0,0 @@ -from .Behaviour import Behaviour -from .PPtr import PPtr - - -class Animation(Behaviour): - def __init__(self, reader): - super().__init__(reader=reader) - self.m_Animation = PPtr(reader) - num_animations = reader.read_int() - self.m_Animations = [PPtr(reader) for _ in range(num_animations)] diff --git a/UnityPy/classes/AnimationClip.py b/UnityPy/classes/AnimationClip.py deleted file mode 100644 index ba5e330e..00000000 --- a/UnityPy/classes/AnimationClip.py +++ /dev/null @@ -1,637 +0,0 @@ -import math -from enum import IntEnum - -from .NamedObject import NamedObject -from .PPtr import PPtr -from ..enums import ClassIDType -from ..math import Quaternion, Vector3 -from ..streams import EndianBinaryReader - -try: - from UnityPy import UnityPyBoost -except ImportError: - UnityPyBoost = None - - -def uint(num): - if num < 0 or num > 4294967295: - return num % 4294967296 - return num - - -class Keyframe: - def __init__(self, reader, readerFunc): - self.time = reader.read_float() - self.value = readerFunc() - self.inSlope = readerFunc() - self.outSlope = readerFunc() - if reader.version >= (2018,): # 2018 and up - self.weightedMode = reader.read_int() - self.inWeight = readerFunc() - self.outWeight = readerFunc() - - -class AnimationCurve: - def __init__(self, reader, readerFunc): - version = reader.version - numCurves = reader.read_int() - self.m_Curve = [Keyframe(reader, readerFunc) for _ in range(numCurves)] - - self.m_PreInfinity = reader.read_int() - self.m_PostInfinity = reader.read_int() - if version >= (5, 3): # 5.3 and up - self.m_RotationOrder = reader.read_int() - - -class QuaternionCurve: - def __init__(self, reader): - self.curve = AnimationCurve(reader, reader.read_quaternion) # - self.path = reader.read_aligned_string() - - -class PackedFloatVector: - def __init__(self, reader): - self.m_NumItems = reader.read_u_int() - self.m_Range = reader.read_float() - self.m_Start = reader.read_float() - - numData = reader.read_int() - self.m_Data = reader.read_bytes(numData) - reader.align_stream() - - self.m_BitSize = reader.read_byte() - reader.align_stream() - - def save(self, writer): - writer.write_u_int(self.m_NumItems) - writer.write_float(self.m_Range) - writer.write_float(self.m_Start) - - writer.write_int(len(self.m_Data)) - writer.write_bytes(self.m_Data) - writer.align_stream() - - writer.write_byte(self.m_BitSize) - writer.align_stream() - - def UnpackFloats( - self, - itemCountInChunk: int, - chunkStride: int, - start: int = 0, - numChunks: int = -1, - ): - if UnityPyBoost: - return UnityPyBoost.unpack_floats( - self.m_NumItems, - self.m_Range, - self.m_Start, - bytes(self.m_Data), - self.m_BitSize, - itemCountInChunk, - chunkStride, - start, - numChunks, - ) - - bitPos: int = self.m_BitSize * start - indexPos: int = bitPos // 8 - bitPos %= 8 - - scale: float = (1.0 / self.m_Range) if self.m_Range else float("inf") - if numChunks == -1: - numChunks = self.m_NumItems // itemCountInChunk - end = int(chunkStride * numChunks / 4) - data = [] - for index in range(0, end, chunkStride // 4): - for i in range(itemCountInChunk): - x = 0 # uint - bits = 0 - while bits < self.m_BitSize: - x |= uint( - (self.m_Data[indexPos] >> bitPos) << bits - ) # (uint)((m_Data[indexPos] >> bitPos) << bits) - num = min(self.m_BitSize - bits, 8 - bitPos) - bitPos += num - bits += num - if bitPos == 8: # - indexPos += 1 - bitPos = 0 - - x &= uint((1 << self.m_BitSize) - 1) # (uint)(1 << m_BitSize) - 1u - denomi = scale * ((1 << self.m_BitSize) - 1) - data.append((x / denomi if denomi else float("inf")) + self.m_Start) - return data - - -class PackedIntVector: - def __init__(self, reader): - self.m_NumItems = reader.read_u_int() - - numData = reader.read_int() - self.m_Data = reader.read_bytes(numData) - reader.align_stream() - - self.m_BitSize = reader.read_byte() - reader.align_stream() - - def save(self, writer): - writer.write_u_int(self.m_NumItems) - - writer.write_int(len(self.m_Data)) - writer.write_bytes(self.m_Data) - writer.align_stream() - - writer.write_byte(self.m_BitSize) - writer.align_stream() - - def UnpackInts(self): - if UnityPyBoost: - return UnityPyBoost.unpack_ints( - self.m_NumItems, bytes(self.m_Data), self.m_BitSize - ) - - data = [0] * self.m_NumItems - indexPos = 0 - bitPos = 0 - for i in range(self.m_NumItems): - bits = 0 - data[i] = 0 - while bits < self.m_BitSize: - data[i] |= (self.m_Data[indexPos] >> bitPos) << bits - num = min(self.m_BitSize - bits, 8 - bitPos) - bitPos += num - bits += num - if bitPos == 8: - indexPos += 1 - bitPos = 0 - data[i] &= (1 << self.m_BitSize) - 1 - return data - - -class PackedQuatVector: - def __init__(self, reader): - self.m_NumItems = reader.read_u_int() - numData = reader.read_int() - self.m_Data = reader.read_bytes(numData) - reader.align_stream() - - def UnpackQuats(self): - m_Data = self.m_Data - data = [None] * self.m_NumItems - indexPos = 0 - bitPos = 0 - - for i in range(self.m_NumItems): - flags = 0 - bits = 0 - while bits < 3: - flags |= (m_Data[indexPos] >> bitPos) << bits # unit - num = min(3 - bits, 8 - bitPos) - bitPos += num - bits += num - if bitPos == 8: # - indexPos += 1 - bitPos = 0 - flags &= 7 - - q = Quaternion() - sum = 0 - for j in range(4): - if (flags & 3) != j: # - bitSize = 9 if ((flags & 3) + 1) % 4 == j else 10 - x = 0 - - bits = 0 - while bits < bitSize: - x |= (m_Data[indexPos] >> bitPos) << bits # uint - num = min(bitSize - bits, 8 - bitPos) - bitPos += num - bits += num - if bitPos == 8: # - indexPos += 1 - bitPos = 0 - x &= (1 << bitSize) - 1 # unit - q[j] = x / (0.5 * ((1 << bitSize) - 1)) - 1 - sum += q[j] * q[j] - - lastComponent = flags & 3 # int - q[lastComponent] = math.sqrt(1 - sum) # float - if (flags & 4) != 0: # 0u - q[lastComponent] = -q[lastComponent] - data.append(q) - - return data - - -class CompressedAnimationCurve: - def __init__(self, reader): - self.m_Path = reader.read_aligned_string() - self.m_Times = PackedIntVector(reader) - self.m_Values = PackedQuatVector(reader) - self.m_Slopes = PackedFloatVector(reader) - self.m_PreInfinity = reader.read_int() - self.m_PostInfinity = reader.read_int() - - -class Vector3Curve: - def __init__(self, reader): - self.curve = AnimationCurve(reader, reader.read_vector3) # Vector3 - self.path = reader.read_aligned_string() - - -class FloatCurve: - def __init__(self, reader): - self.curve = AnimationCurve(reader, reader.read_float) # Float - self.attribute = reader.read_aligned_string() - self.path = reader.read_aligned_string() - self.classID = ClassIDType(reader.read_int()) - self.script = PPtr(reader) # MonoScript - - -class PPtrKeyframe: - def __init__(self, reader): - self.time = reader.read_float() - self.value = PPtr(reader) # Object - - -class PPtrCurve: - def __init__(self, reader): - numCurves = reader.read_int() - self.curve = [PPtrKeyframe(reader) for _ in range(numCurves)] - - self.attribute = reader.read_aligned_string() - self.path = reader.read_aligned_string() - self.classID = reader.read_int() - self.script = PPtr(reader) # MonoScript - - -class AABB: - def __init__(self, reader): - self.m_Center = reader.read_vector3() - self.m_Extent = reader.read_vector3() - - def save(self, writer): - writer.write_vector3(self.m_Center) - writer.write_vector3(self.m_Extent) - - -class xform: - def __init__(self, reader): - version = reader.version - self.t = ( - reader.read_vector3() - if version >= (5, 4) - else Vector3(reader.read_vector4()) - ) # 5.4 and up - self.q = reader.read_quaternion() - self.s = ( - reader.read_vector3() - if version >= (5, 4) - else Vector3(reader.read_vector4()) - ) # 5.4 and up - - -class HandPose: - def __init__(self, reader): - self.m_GrabX = xform(reader) - self.m_DoFArray = reader.read_float_array() - self.m_Override = reader.read_float() - self.m_CloseOpen = reader.read_float() - self.m_InOut = reader.read_float() - self.m_Grab = reader.read_float() - - -class HumanGoal: - def __init__(self, reader): - version = reader.version - self.m_X = xform(reader) - self.m_WeightT = reader.read_float() - self.m_WeightR = reader.read_float() - if version >= (5,): # 5.0 and up - self.m_HintT = ( - reader.read_vector3() - if version >= (5, 4) - else Vector3(reader.read_vector4()) - ) # 5.4 and up - self.m_HintWeightT = reader.read_float() - - -class HumanPose: - def __init__(self, reader): - version = reader.version - self.m_RootX = xform(reader) - self.m_LookAtPosition = ( - reader.read_vector3() - if version >= (5, 4) - else Vector3(reader.read_vector4()) - ) # 5.4 and up - self.m_LookAtWeight = reader.read_vector4() - - numGoals = reader.read_int() - self.m_GoalArray = [HumanGoal(reader) for _ in range(numGoals)] - - self.m_LeftHandPose = HandPose(reader) - self.m_RightHandPose = HandPose(reader) - - self.m_DoFArray = reader.read_float_array() - - if version >= (5, 2): # 5.2 and up - numTDof = reader.read_int() - self.m_TDoFArray = [ - reader.read_vector3() - if version >= (5, 4) - else Vector3(reader.read_vector4()) # 5.4 and up - for _ in range(numTDof) - ] - - -class StreamedCurveKey: - def __init__(self, reader): - self.index = reader.read_int() - self.coeff = reader.read_float_array(4) - - self.outSlope = self.coeff[2] - self.value = self.coeff[3] - - def CalculateNextInSlope(self, dx: float, rhs): - """ - :param dx: float - :param rhs: StreamedCurvedKey - :return: - """ - # Stepped - if self.coeff[0] == 0 and self.coeff[1] == 0 and self.coeff[2] == 0: - return float("inf") - - dx = max(dx, 0.0001) - dy = rhs.value - self.value - length = 1.0 / (dx * dx) - d1 = self.outSlope * dx - d2 = dy + dy + dy - d1 - d1 - self.coeff[1] / length - return d2 / dx - - -class StreamedFrame: - def __init__(self, reader): - self.time = reader.read_float() - numKeys = reader.read_int() - self.keyList = [StreamedCurveKey(reader) for _ in range(numKeys)] - - -class StreamedClip: - def __init__(self, reader): - self.data = reader.read_u_int_array() - self.curveCount = reader.read_u_int() - - def ReadData(self): - frameList = [] - buffer = b"".join(val.to_bytes(4, "big") for val in self.data) - reader = EndianBinaryReader(buffer) - while reader.Position < reader.Length: - frameList.append(StreamedFrame(reader)) - - for frameIndex in range(2, len(frameList) - 1): - frame = frameList[frameIndex] - for curveKey in frame.keyList: - i = frameIndex - 1 - while i >= 0: - preFrame = frameList[i] - try: - preCurveKey = [ - x for x in preFrame.keyList if x.index == curveKey.index - ][0] - curveKey.inSlope = preCurveKey.CalculateNextInSlope( - frame.time - preFrame.time, curveKey - ) - break - except IndexError: - pass - i -= 1 - return frameList - - -class DenseClip: - def __init__(self, reader): - self.m_FrameCount = reader.read_int() - self.m_CurveCount = reader.read_u_int() - self.m_SampleRate = reader.read_float() - self.m_BeginTime = reader.read_float() - self.m_SampleArray = reader.read_float_array() - - -class ConstantClip: - def __init__(self, reader): - self.data = reader.read_float_array() - - -class ValueConstant: - def __init__(self, reader): - version = reader.version - self.m_ID = reader.read_u_int() - if version < (5, 5): # 5.5 down - self.m_TypeID = reader.read_u_int() - self.m_Type = reader.read_u_int() - self.m_Index = reader.read_u_int() - - -class ValueArrayConstant: - def __init__(self, reader): - numVals = reader.read_int() - self.m_ValueArray = [ValueConstant(reader) for _ in range(numVals)] - - -class Clip: - def __init__(self, reader): - version = reader.version - self.m_StreamedClip = StreamedClip(reader) - self.m_DenseClip = DenseClip(reader) - if version >= (4, 3): # 4.3 and up - self.m_ConstantClip = ConstantClip(reader) - if version < (2018, 3): # 2018.3 down - self.m_Binding = ValueArrayConstant(reader) - - -class ValueDelta: - def __init__(self, reader): - self.m_Start = reader.read_float() - self.m_Stop = reader.read_float() - - -class ClipMuscleConstant: - def __init__(self, reader): - version = reader.version - self.m_DeltaPose = HumanPose(reader) - self.m_StartX = xform(reader) - if version >= (5, 5): # 5.5 and up - self.m_StopX = xform(reader) - self.m_LeftFootStartX = xform(reader) - self.m_RightFootStartX = xform(reader) - if version < (5,): # 5.0 down - self.m_MotionStartX = xform(reader) - self.m_MotionStopX = xform(reader) - self.m_AverageSpeed = ( - reader.read_vector3() - if version >= (5, 4) - else Vector3(reader.read_vector4()) - ) # 5.4 and up - self.m_Clip = Clip(reader) - self.m_StartTime = reader.read_float() - self.m_StopTime = reader.read_float() - self.m_OrientationOffsetY = reader.read_float() - self.m_Level = reader.read_float() - self.m_CycleOffset = reader.read_float() - self.m_AverageAngularSpeed = reader.read_float() - - self.m_IndexArray = reader.read_int_array() - if version < (4, 3): # 4.3 down - self.m_AdditionalCurveIndexArray = reader.read_int_array() - numDeltas = reader.read_int() - self.m_ValueArrayDelta = [ValueDelta(reader) for _ in range(numDeltas)] - if version >= (5, 3): # 5.3 and up - self.m_ValueArrayReferencePose = reader.read_float_array() - - self.m_Mirror = reader.read_boolean() - if version >= (4, 3): # 4.3 and up - self.m_LoopTime = reader.read_boolean() - self.m_LoopBlend = reader.read_boolean() - self.m_LoopBlendOrientation = reader.read_boolean() - self.m_LoopBlendPositionY = reader.read_boolean() - self.m_LoopBlendPositionXZ = reader.read_boolean() - if version >= (5, 5): # 5.5 and up - self.m_StartAtOrigin = reader.read_boolean() - self.m_KeepOriginalOrientation = reader.read_boolean() - self.m_KeepOriginalPositionY = reader.read_boolean() - self.m_KeepOriginalPositionXZ = reader.read_boolean() - self.m_HeightFromFeet = reader.read_boolean() - reader.align_stream() - - -class GenericBinding: - def __init__(self, reader): - version = reader.version - self.path = reader.read_u_int() - self.attribute = reader.read_u_int() - self.script = PPtr(reader) # Object - if version >= (5, 6): # 5.6 and up - self.typeID = ClassIDType(reader.read_int()) - else: - self.typeID = ClassIDType(reader.read_u_short()) - self.customType = reader.read_byte() - self.isPPtrCurve = reader.read_byte() - if version >= (2022, 1): # 2022.1 and up - self.isIntCurve = reader.read_byte() - reader.align_stream() - - -class AnimationClipBindingConstant: - def __init__(self, reader): - numBindings = reader.read_int() - self.genericBindings = [GenericBinding(reader) for _ in range(numBindings)] - - numMappings = reader.read_int() - self.pptrCurveMapping = [PPtr(reader) for _ in range(numMappings)] # Object - - def FindBinding(self, index): - curves = 0 - for b in self.genericBindings: - if b.typeID == ClassIDType.Transform: # - switch = b.attribute - - if switch in [1, 3, 4]: - # case 1: #kBindTransformPosition - # case 3: #kBindTransformScale - # case 4: #kBindTransformEuler - curves += 3 - elif switch == 2: # kBindTransformRotation - curves += 4 - else: - curves += 1 - else: - curves += 1 - if curves > index: - return b - return None - - -class AnimationEvent: - def __init__(self, reader): - version = reader.version - self.time = reader.read_float() - self.functionName = reader.read_aligned_string() - self.data = reader.read_aligned_string() - self.objectReferenceParameter = PPtr(reader) - self.floatParameter = reader.read_float() - - if version > (3, ): - self.intParameter = reader.read_int() - - self.messageOptions = reader.read_int() - - -class AnimationType(IntEnum): - kLegacy = (1,) - kGeneric = (2,) - kHumanoid = 3 - - -class AnimationClip(NamedObject): - def __init__(self, reader): - super().__init__(reader=reader) - version = reader.version - if version >= (5,): # 5.0 and up - self.m_Legacy = reader.read_boolean() - elif version >= (4,): # 4.0 and up - self.m_AnimationType = AnimationType(reader.read_int()) - if self.m_AnimationType == AnimationType.kLegacy: # - self.m_Legacy = True - else: - self.m_Legacy = True - - self.m_Compressed = reader.read_boolean() - if version >= (4, 3): # 4.3 and up - self.m_UseHighQualityCurve = reader.read_boolean() - reader.align_stream() - numRCurves = reader.read_int() - self.m_RotationCurves = [QuaternionCurve(reader) for _ in range(numRCurves)] - - numCRCurves = reader.read_int() - self.m_CompressedRotationCurves = [ - CompressedAnimationCurve(reader) for _ in range(numCRCurves) - ] - - if version >= (5, 3): # 5.3 and up - numEulerCurves = reader.read_int() - self.m_EulerCurves = [Vector3Curve(reader) for _ in range(numEulerCurves)] - - numPCurves = reader.read_int() - self.m_PositionCurves = [Vector3Curve(reader) for _ in range(numPCurves)] - - numSCurves = reader.read_int() - self.m_ScaleCurves = [Vector3Curve(reader) for _ in range(numSCurves)] - - numFCurves = reader.read_int() - self.m_FloatCurves = [FloatCurve(reader) for _ in range(numFCurves)] - if version >= (4, 3): # 4.3 and up - numPtrCurves = reader.read_int() - self.m_PPtrCurves = [PPtrCurve(reader) for _ in range(numPtrCurves)] - - self.m_SampleRate = reader.read_float() - self.m_WrapMode = reader.read_int() - if version >= (3, 4): # 3.4 and up - self.m_Bounds = AABB(reader) - if version >= (4,): # 4.0 and up - self.m_MuscleClipSize = reader.read_u_int() - self.m_MuscleClip = ClipMuscleConstant(reader) - if version >= (4, 3): # 4.3 and up - self.m_ClipBindingConstant = AnimationClipBindingConstant(reader) - - if version >= (2018, 3): - self.m_HasGenericRootTransform = reader.read_boolean() - self.m_HasMotionFloatCurves = reader.read_boolean() - reader.align_stream() - - numEvents = self.reader.read_int() - self.m_Events = [AnimationEvent(self.reader) for _ in range(numEvents)] - if version >= (2017, ): - reader.align_stream() diff --git a/UnityPy/classes/Animator.py b/UnityPy/classes/Animator.py deleted file mode 100644 index a134cb86..00000000 --- a/UnityPy/classes/Animator.py +++ /dev/null @@ -1,39 +0,0 @@ -from .Behaviour import Behaviour -from .PPtr import PPtr - - -class Animator(Behaviour): - def __init__(self, reader): - super().__init__(reader=reader) - - self.m_Avatar = PPtr(reader) # Avatar - self.m_Controller = PPtr(reader) # RuntimeAnimatorController - self.m_CullingMode = reader.read_int() - version = self.version - - if version >= (4, 5): # 4.5 and up - self.m_UpdateMode = reader.read_int() - - self.m_ApplyRootMotion = reader.read_boolean() - if (4, 5) < version[2:] <= (5, 0): # 4.5 and up - 5.0 down - reader.align_stream() - - if version >= (5,): # 5.0 and up - self.m_LinearVelocityBlending = reader.read_boolean() - reader.align_stream() - - if version[2:] < (4, 5): # 4.5 down - self.m_AnimatePhysics = reader.read_boolean() - - if version >= (4, 3): # 4.3 and up - self.m_HasTransformHierarchy = reader.read_boolean() - - if version >= (4, 5): # 4.5 and up - self.m_AllowConstantClipSamplingOptimization = reader.read_boolean() - - if (4,) < version[:1] < (2018,): # 5.0 and up - 2018 down - reader.align_stream() - - if version >= (2018,): # 2018 and up - self.m_KeepAnimatorControllerStateOnDisable = reader.read_boolean() - reader.align_stream() diff --git a/UnityPy/classes/AnimatorController.py b/UnityPy/classes/AnimatorController.py deleted file mode 100644 index 0b8999e3..00000000 --- a/UnityPy/classes/AnimatorController.py +++ /dev/null @@ -1,324 +0,0 @@ -from .AnimationClip import ValueArrayConstant -from .PPtr import PPtr -from .RuntimeAnimatorController import RuntimeAnimatorController -from ..math import Vector3 - - -class AnimatorController(RuntimeAnimatorController): - def __init__(self, reader): - super().__init__(reader=reader) - self.m_ControllerSize = reader.read_u_int() - self.m_Controller = ControllerConstant(reader) - tosSize = reader.read_int() - self.m_TOS = {} - for _ in range(tosSize): - key = reader.read_u_int() - self.m_TOS[key] = reader.read_aligned_string() - - numClips = reader.read_int() - self.m_AnimationClips = [PPtr(reader) for _ in range(numClips)] - - -class HumanPoseMask: - def __init__(self, reader): - version = reader.version - self.word0 = reader.read_u_int() - self.word1 = reader.read_u_int() - if version >= (5, 2): # 5.2 and up - self.word2 = reader.read_u_int() - - -class SkeletonMaskElement: - def __init__(self, reader): - self.m_PathHash = reader.read_u_int() - self.m_Weight = reader.read_float() - - -class SkeletonMask: - def __init__(self, reader): - numElements = reader.read_int() - self.m_Data = [SkeletonMaskElement(reader) for _ in range(numElements)] - - -class LayerConstant: - def __init__(self, reader): - version = reader.version - self.m_StateMachineIndex = reader.read_u_int() - self.m_StateMachineMotionSetIndex = reader.read_u_int() - self.m_BodyMask = HumanPoseMask(reader) - self.m_SkeletonMask = SkeletonMask(reader) - self.m_Binding = reader.read_u_int() - self.m_LayerBlendingMode = reader.read_int() - if version >= (4, 2): # 4.2 and up - self.m_DefaultWeight = reader.read_float() - self.m_IKPass = reader.read_boolean() - if version >= (4, 2): # 4.2 and up - self.m_SyncedLayerAffectsTiming = reader.read_boolean() - reader.align_stream() - - -class ConditionConstant: - def __init__(self, reader): - self.m_ConditionMode = reader.read_u_int() - self.m_EventID = reader.read_u_int() - self.m_EventThreshold = reader.read_float() - self.m_ExitTime = reader.read_float() - - -class TransitionConstant: - def __init__(self, reader): - version = reader.version - - numConditions = reader.read_int() - self.m_ConditionConstantArray = [ - ConditionConstant(reader) for _ in range(numConditions) - ] - - self.m_DestinationState = reader.read_u_int() - if version >= (5,): # 5.0 and up - self.m_FullPathID = reader.read_u_int() - - self.m_ID = reader.read_u_int() - self.m_UserID = reader.read_u_int() - self.m_TransitionDuration = reader.read_float() - self.m_TransitionOffset = reader.read_float() - if version >= (5,): # 5.0 and up - self.m_ExitTime = reader.read_float() - self.m_HasExitTime = reader.read_boolean() - self.m_HasFixedDuration = reader.read_boolean() - reader.align_stream() - self.m_InterruptionSource = reader.read_int() - self.m_OrderedInterruption = reader.read_boolean() - else: - self.m_Atomic = reader.read_boolean() - - if version >= (4, 5): # 4.5 and up - self.m_CanTransitionToSelf = reader.read_boolean() - - reader.align_stream() - - -class LeafInfoConstant: - def __init__(self, reader): - self.m_IDArray = reader.read_u_int_array() - self.m_IndexOffset = reader.read_u_int() - - -class MotionNeighborList: - def __init__(self, reader): - self.m_NeighborArray = reader.read_u_int_array() - - -class Blend2dDataConstant: - def __init__(self, reader): - self.m_ChildPositionArray = reader.read_vector2_array() - self.m_ChildMagnitudeArray = reader.read_float_array() - self.m_ChildPairVectorArray = reader.read_vector2_array() - self.m_ChildPairAvgMagInvArray = reader.read_float_array() - - numNeighbours = reader.read_int() - self.m_ChildNeighborListArray = [ - MotionNeighborList(reader) for _ in range(numNeighbours) - ] - - -class Blend1dDataConstant: # wrong labeled: - def __init__(self, reader): - self.m_ChildThresholdArray = reader.read_float_array() - - -class BlendDirectDataConstant: - def __init__(self, reader): - self.m_ChildBlendEventIDArray = reader.read_u_int_array() - self.m_NormalizedBlendValues = reader.read_boolean() - reader.align_stream() - - -class BlendTreeNodeConstant: - def __init__(self, reader): - version = reader.version - - if version >= (4, 1): # 4.1 and up - self.m_BlendType = reader.read_u_int() - self.m_BlendEventID = reader.read_u_int() - if version >= (4, 1): # 4.1 and up - self.m_BlendEventYID = reader.read_u_int() - self.m_ChildIndices = reader.read_u_int_array() - if version < (4, 1): # 4.1 down - self.m_ChildThresholdArray = reader.read_float_array() - - if version >= (4, 1): # 4.1 and up - self.m_Blend1dData = Blend1dDataConstant(reader) - self.m_Blend2dData = Blend2dDataConstant(reader) - - if version >= (5,): # 5.0 and up - self.m_BlendDirectData = BlendDirectDataConstant(reader) - - self.m_ClipID = reader.read_u_int() - if (4, 5) <= version[:2] < (5, 0): # 4.5 - 5.0 - self.m_ClipIndex = reader.read_u_int() - - self.m_Duration = reader.read_float() - - if version >= (4, 1, 3): # 4.1.3 and up - self.m_CycleOffset = reader.read_float() - self.m_Mirror = reader.read_boolean() - reader.align_stream() - - -class BlendTreeConstant: - def __init__(self, reader): - version = reader.version - - numNodes = reader.read_int() - self.m_NodeArray = [BlendTreeNodeConstant( - reader) for _ in range(numNodes)] - - if version < (4, 5): # 4.5 down - self.m_BlendEventArrayConstant = ValueArrayConstant(reader) - - -class StateConstant: - def __init__(self, reader): - version = reader.version - - numTransistions = reader.read_int() - self.m_TransitionConstantArray = [ - TransitionConstant(reader) for _ in range(numTransistions) - ] - - self.m_BlendTreeConstantIndexArray = reader.read_int_array() - - if version < (5, 2): # 5.2 down - numInfos = reader.read_int() - self.m_LeafInfoArray = [LeafInfoConstant( - reader) for _ in range(numInfos)] - - numBlends = reader.read_int() - self.m_BlendTreeConstantArray = [ - BlendTreeConstant(reader) for _ in range(numBlends) - ] - - self.m_NameID = reader.read_u_int() - if version >= (4, 3): # 4.3 and up - self.m_PathID = reader.read_u_int() - if version >= (5,): # 5.0 and up - self.m_FullPathID = reader.read_u_int() - - self.m_TagID = reader.read_u_int() - if version >= (5, 1): # 5.1 and up - self.m_SpeedParamID = reader.read_u_int() - self.m_MirrorParamID = reader.read_u_int() - self.m_CycleOffsetParamID = reader.read_u_int() - - if version >= (2017, 2): # 2017.2 and up - self.m_TimeParamID = reader.read_u_int() - - self.m_Speed = reader.read_float() - if version >= (4, 1): # 4.1 and up - self.m_CycleOffset = reader.read_float() - self.m_IKOnFeet = reader.read_boolean() - if version >= (5,): # 5.0 and up - self.m_WriteDefaultValues = reader.read_boolean() - - self.m_Loop = reader.read_boolean() - if version >= (4, 1): # 4.1 and up - self.m_Mirror = reader.read_boolean() - - reader.align_stream() - - -class SelectorTransitionConstant: - def __init__(self, reader): - self.m_Destination = reader.read_u_int() - - numConditions = reader.read_int() - self.m_ConditionConstantArray = [ - ConditionConstant(reader) for _ in range(numConditions) - ] - - -class SelectorStateConstant: - def __init__(self, reader): - numTransitions = reader.read_int() - self.m_TransitionConstantArray = [ - SelectorTransitionConstant(reader) for _ in range(numTransitions) - ] - self.m_FullPathID = reader.read_u_int() - self.m_isEntry = reader.read_boolean() - reader.align_stream() - - -class StateMachineConstant: - def __init__(self, reader): - version = reader.version - - numStates = reader.read_int() - self.m_StateConstantArray = [ - StateConstant(reader) for _ in range(numStates)] - - numAnyStates = reader.read_int() - self.m_AnyStateTransitionConstantArray = [ - TransitionConstant(reader) for _ in range(numAnyStates) - ] - - if version >= (5,): # 5.0 and up - numSelectors = reader.read_int() - self.m_SelectorStateConstantArray = [ - SelectorStateConstant(reader) for _ in range(numSelectors) - ] - - self.m_DefaultState = reader.read_u_int() - self.m_MotionSetCount = reader.read_u_int() - - -class ValueArray: - def __init__(self, reader): - version = reader.version - - if version < (5, 5): # 5.5 down - self.m_BoolValues = reader.read_boolean_array() - reader.align_stream() - self.m_IntValues = reader.read_int_array() - self.m_FloatValues = reader.read_float_array() - - if version < (4, 3): # 4.3 down - self.m_VectorValues = reader.read_vector4_array() - else: - numPosValues = reader.read_int() - self.m_PositionValues = [ - reader.read_vector3() - if version >= (5, 4) - else Vector3(reader.read_vector4()) # 5.4 and up - for _ in range(numPosValues) - ] - - self.m_QuaternionValues = reader.read_vector4_array() - - numScaleValues = reader.read_int() - self.m_ScaleValues = [ - reader.read_vector3() - if version >= (5, 4) - else Vector3(reader.read_vector4()) # 5.4 and up - for _ in range(numScaleValues) - ] - - if version >= (5, 5): # 5.5 and up - self.m_FloatValues = reader.read_float_array() - self.m_IntValues = reader.read_int_array() - self.m_BoolValues = reader.read_boolean_array() - reader.align_stream() - - -class ControllerConstant: - def __init__(self, reader): - numLayers = reader.read_int() - self.m_LayerArray = [LayerConstant(reader) for _ in range(numLayers)] - - numStates = reader.read_int() - self.m_StateMachineArray = [ - StateMachineConstant(reader) for _ in range(numStates) - ] - - self.m_Values = ValueArrayConstant(reader) - self.m_DefaultValues = ValueArray(reader) diff --git a/UnityPy/classes/AnimatorOverrideController.py b/UnityPy/classes/AnimatorOverrideController.py deleted file mode 100644 index 0544d314..00000000 --- a/UnityPy/classes/AnimatorOverrideController.py +++ /dev/null @@ -1,17 +0,0 @@ -from .PPtr import PPtr -from .RuntimeAnimatorController import RuntimeAnimatorController - - -class AnimationClipOverride: - def __init__(self, reader): - self.m_OriginalClip = PPtr(reader) - self.m_OverrideClip = PPtr(reader) - - -class AnimatorOverrideController(RuntimeAnimatorController): - def __init__(self, reader): - super().__init__(reader=reader) - self.m_Controller = PPtr(reader) - num_overrides = reader.read_int() - self.m_Clips = [AnimationClipOverride( - reader) for _ in range(num_overrides)] diff --git a/UnityPy/classes/AssetBundle.py b/UnityPy/classes/AssetBundle.py deleted file mode 100644 index d4fd87c8..00000000 --- a/UnityPy/classes/AssetBundle.py +++ /dev/null @@ -1,22 +0,0 @@ -from .NamedObject import NamedObject -from .PPtr import PPtr - - -class AssetInfo: - def __init__(self, reader): - self.preload_index = reader.read_int() - self.preload_size = reader.read_int() - self.asset = PPtr(reader) - - -class AssetBundle(NamedObject): - def __init__(self, reader): - super().__init__(reader=reader) - preload_table_size = reader.read_int() - self.m_PreloadTable = [PPtr(reader) for _ in range(preload_table_size)] - container_size = reader.read_int() - self.m_Container = {} - # TODO - m_Container is a multi-dict, multiple values can have the same key - for i in range(container_size): - key = reader.read_aligned_string() - self.m_Container[key] = AssetInfo(reader) diff --git a/UnityPy/classes/AudioClip.py b/UnityPy/classes/AudioClip.py deleted file mode 100644 index 3f8bb012..00000000 --- a/UnityPy/classes/AudioClip.py +++ /dev/null @@ -1,60 +0,0 @@ -from .NamedObject import NamedObject -from ..enums import AudioType, AudioCompressionFormat, AUDIO_TYPE_EXTEMSION -from ..export import AudioClipConverter -from ..helpers.ResourceReader import get_resource_data - - -class AudioClip(NamedObject): - def __init__(self, reader): - super().__init__(reader=reader) - self.m_Source = "" - version = self.version - if version < (5,): # 5.0 down - self.m_Format = reader.read_int() - self.m_Type = AudioType(reader.read_int()) - self.m_3D = reader.read_boolean() - self.m_UseHardware = reader.read_boolean() - reader.align_stream() - - if version >= (3, 2): # and version <= (5,): # 3.2.0 to 5 - self.m_Stream = reader.read_int() - self.m_Size = reader.read_int() - tsize = self.m_Size + 4 - self.m_Size % 4 if (self.m_Size % 4 != 0) else self.m_Size - if reader.byte_size + reader.byte_start - reader.Position != tsize: - self.m_Offset = reader.read_u_int() - self.m_Source = self.assets_file.full_name + ".resS" - else: - self.m_Size = reader.read_int() - - else: - self.m_LoadType = reader.read_int() - self.m_Channels = reader.read_int() - self.m_Frequency = reader.read_int() - self.m_BitsPerSample = reader.read_int() - self.m_Length = reader.read_float() - self.m_IsTrackerFormat = reader.read_boolean() - reader.align_stream() - self.m_SubsoundIndex = reader.read_int() - self.m_PreloadAudioData = reader.read_boolean() - self.m_LoadInBackground = reader.read_boolean() - self.m_Legacy3D = reader.read_boolean() - reader.align_stream() - self.m_Source = reader.read_aligned_string() - self.m_Offset = reader.read_u_long() - self.m_Size = reader.read_long() - self.m_CompressionFormat = AudioCompressionFormat(reader.read_int()) - - if self.m_Source: - self.m_AudioData = get_resource_data( - self.m_Source, self.assets_file, self.m_Offset, self.m_Size - ) - else: - self.m_AudioData = reader.read_bytes(self.m_Size) - - @property - def extension(self): - return AUDIO_TYPE_EXTEMSION.get(self.m_CompressionFormat, ".audioclip") - - @property - def samples(self) -> dict: - return AudioClipConverter.extract_audioclip_samples(self) diff --git a/UnityPy/classes/Avatar.py b/UnityPy/classes/Avatar.py deleted file mode 100644 index 973770b6..00000000 --- a/UnityPy/classes/Avatar.py +++ /dev/null @@ -1,156 +0,0 @@ -from .AnimationClip import xform -from .NamedObject import NamedObject - - -class Avatar(NamedObject): - def __init__(self, reader): - super().__init__(reader=reader) - self.m_AvatarSize = reader.read_u_int() - self.m_Avatar = AvatarConstant(reader) - - numTOS = reader.read_int() - self.m_TOS = {} - for _ in range(numTOS): - key = reader.read_u_int() - self.m_TOS[key] = reader.read_aligned_string() - - # HumanDescription m_HumanDescription 2019 and up - - def FindBonePath(self, hash): - return self.m_TOS[hash] - - -class Node: - def __init__(self, reader): - self.m_ParentId = reader.read_int() - self.m_AxesId = reader.read_int() - - -class Limit: - def __init__(self, reader): - version = reader.version - if version >= (5, 4): # 5.4 and up - self.m_Min = reader.read_vector3() - self.m_Max = reader.read_vector3() - else: - self.m_Min = reader.read_vector4() - self.m_Max = reader.read_vector4() - - -class Axes: - def __init__(self, reader): - version = reader.version - self.m_PreQ = reader.read_vector4() - self.m_PostQ = reader.read_vector4() - if version >= (5, 4): # 5.4 and up - self.m_Sgn = reader.read_vector3() - else: - self.m_Sgn = reader.read_vector4() - self.m_Limit = Limit(reader) - self.m_Length = reader.read_float() - self.m_Type = reader.read_u_int() - - -class Skeleton: - def __init__(self, reader): - numNodes = reader.read_int() - self.m_Node = [Node(reader) for _ in range(numNodes)] - - self.m_ID = reader.read_u_int_array() - - numAxes = reader.read_int() - self.m_AxesArray = [Axes(reader) for _ in range(numAxes)] - - -class SkeletonPose: - def __init__(self, reader): - numXforms = reader.read_int() - self.m_X = [xform(reader) for _ in range(numXforms)] - - -class Hand: - def __init__(self, reader): - self.m_HandBoneIndex = reader.read_int_array() - - -class Handle: - def __init__(self, reader): - self.m_X = xform(reader) - self.m_ParentHumanIndex = reader.read_u_int() - self.m_ID = reader.read_u_int() - - -class Collider: - def __init__(self, reader): - self.m_X = xform(reader) - self.m_Type = reader.read_u_int() - self.m_XMotionType = reader.read_u_int() - self.m_YMotionType = reader.read_u_int() - self.m_ZMotionType = reader.read_u_int() - self.m_MinLimitX = reader.read_float() - self.m_MaxLimitX = reader.read_float() - self.m_MaxLimitY = reader.read_float() - self.m_MaxLimitZ = reader.read_float() - - -class Human: - def __init__(self, reader): - version = reader.version - self.m_RootX = xform(reader) - self.m_Skeleton = Skeleton(reader) - self.m_SkeletonPose = SkeletonPose(reader) - self.m_LeftHand = Hand(reader) - self.m_RightHand = Hand(reader) - - if version < (2018, 2): # 2018.2 down - numHandles = reader.read_int() - self.m_Handles = [Handle(reader) for _ in range(numHandles)] - numColliders = reader.read_int() - self.m_ColliderArray = [Collider(reader) - for _ in range(numColliders)] - self.m_HumanBoneIndex = reader.read_int_array() - self.m_HumanBoneMass = reader.read_float_array() - - if version < (2018, 2): # 2018.2 down - self.m_ColliderIndex = reader.read_int_array() - - self.m_Scale = reader.read_float() - self.m_ArmTwist = reader.read_float() - self.m_ForeArmTwist = reader.read_float() - self.m_UpperLegTwist = reader.read_float() - self.m_LegTwist = reader.read_float() - self.m_ArmStretch = reader.read_float() - self.m_LegStretch = reader.read_float() - self.m_FeetSpacing = reader.read_float() - self.m_HasLeftHand = reader.read_boolean() - self.m_HasRightHand = reader.read_boolean() - if version >= (5, 2): # 5.2 and up - self.m_HasTDoF = reader.read_boolean() - reader.align_stream() - - -class AvatarConstant: - def __init__(self, reader): - version = reader.version - self.m_AvatarSkeleton = Skeleton(reader) - self.m_AvatarSkeletonPose = SkeletonPose(reader) - - if version >= (4, 3): # 4.3 and up - self.m_DefaultPose = SkeletonPose(reader) - self.m_SkeletonNameIDArray = reader.read_u_int_array() - - self.m_Human = Human(reader) - - self.m_HumanSkeletonIndexArray = reader.read_int_array() - - if version >= (4, 3): # 4.3 and up - self.m_HumanSkeletonReverseIndexArray = reader.read_int_array() - - self.m_RootMotionBoneIndex = reader.read_int() - self.m_RootMotionBoneX = xform(reader) - - if version >= (4, 3): # 4.3 and up - self.m_RootMotionSkeleton = Skeleton(reader) - self.m_RootMotionSkeletonPose = SkeletonPose(reader) - - self.m_RootMotionSkeletonIndexArray = reader.read_int_array() diff --git a/UnityPy/classes/Behaviour.py b/UnityPy/classes/Behaviour.py deleted file mode 100644 index 0e0bb4ba..00000000 --- a/UnityPy/classes/Behaviour.py +++ /dev/null @@ -1,16 +0,0 @@ -from .Component import Component -from ..streams import EndianBinaryReader, EndianBinaryWriter - -class Behaviour(Component): - def __init__(self, reader : EndianBinaryReader): - super().__init__(reader=reader) - self.m_Enabled = reader.read_byte() - reader.align_stream() - - def save(self, writer: EndianBinaryWriter = None): - if writer is None: - writer = EndianBinaryWriter(endian=self.reader.endian) - version = self.version - super().save(writer) - writer.write_byte(self.m_Enabled) - writer.align_stream() \ No newline at end of file diff --git a/UnityPy/classes/BuildSettings.py b/UnityPy/classes/BuildSettings.py deleted file mode 100644 index 41d7545b..00000000 --- a/UnityPy/classes/BuildSettings.py +++ /dev/null @@ -1,12 +0,0 @@ -from .Object import Object - - -class BuildSettings(Object): - def __init__(self, reader): - super().__init__(reader=reader) - self.levels = reader.read_string_array() - self.has_render_texture = reader.read_boolean() - self.has_pro_version = reader.read_boolean() - self.has_publishing_rights = reader.read_boolean() - self.has_shadows = reader.read_boolean() - self.version = reader.read_aligned_string() diff --git a/UnityPy/classes/Component.py b/UnityPy/classes/Component.py deleted file mode 100644 index f36abfe8..00000000 --- a/UnityPy/classes/Component.py +++ /dev/null @@ -1,16 +0,0 @@ -from .EditorExtension import EditorExtension -from .PPtr import PPtr, save_ptr -from ..streams import EndianBinaryReader, EndianBinaryWriter - - -class Component(EditorExtension): - def __init__(self, reader: EndianBinaryReader): - super().__init__(reader=reader) - self.m_GameObject = PPtr(reader) # GameObject - - def save(self, writer: EndianBinaryWriter = None): - if writer is None: - writer = EndianBinaryWriter(endian=self.reader.endian) - version = self.version - super().save(writer) - save_ptr(self.m_GameObject, writer) diff --git a/UnityPy/classes/EditorExtension.py b/UnityPy/classes/EditorExtension.py deleted file mode 100644 index 4d01b55b..00000000 --- a/UnityPy/classes/EditorExtension.py +++ /dev/null @@ -1,20 +0,0 @@ -from .Object import Object -from .PPtr import PPtr, save_ptr -from ..enums import BuildTarget -from ..streams import EndianBinaryWriter - - -class EditorExtension(Object): - def __init__(self, reader): - super().__init__(reader=reader) - if self.platform == BuildTarget.NoTarget: - self.m_PrefabParentObject = PPtr(reader) - self.m_PrefabInternal = PPtr(reader) - - def save(self, writer: EndianBinaryWriter = None): - if not writer: - writer = EndianBinaryWriter(endian = self.reader.endian) - super().save(writer, intern_call=True) - if self.platform == BuildTarget.NoTarget: - save_ptr(self.m_PrefabParentObject, writer) - save_ptr(self.m_PrefabInternal, writer) diff --git a/UnityPy/classes/Font.py b/UnityPy/classes/Font.py deleted file mode 100644 index 0241b478..00000000 --- a/UnityPy/classes/Font.py +++ /dev/null @@ -1,85 +0,0 @@ -from .NamedObject import NamedObject -from .PPtr import PPtr - - -class Font(NamedObject): - def __init__(self, reader): - super().__init__(reader=reader) - version = self.version - if version >= (5, 5): # 5.5 and up: - self.m_LineSpacing = reader.read_float() - self.m_DefaultMaterial = PPtr(reader) - self.m_FontSize = reader.read_float() - self.m_Texture = PPtr(reader) - self.m_AsciiStartOffset = reader.read_int() - self.m_Tracking = reader.read_float() - self.m_CharacterSpacing = reader.read_int() - self.m_CharacterPadding = reader.read_int() - self.m_ConvertCase = reader.read_int() - CharacterRects_size = reader.read_int() - for i in range(CharacterRects_size): - reader.Position += 44 # CharacterInfo data 41 - KerningValues_size = reader.read_int() - for i in range(KerningValues_size): - reader.Position += 8 - self.m_PixelScale = reader.read_float() - FontData_size = reader.read_int() - if FontData_size > 0: - self.m_FontData = reader.read_bytes(FontData_size) - else: - self.m_AsciiStartOffset = reader.read_int() - - if version[:1] <= (3,): - self.m_FontCountX = reader.read_int() - self.m_FontCountY = reader.read_int() - - self.m_Kerning = reader.read_float() - self.m_LineSpacing = reader.read_float() - - if version[:1] <= (3,): - PerCharacterKerning_size = reader.read_int() - for i in range(PerCharacterKerning_size): - first = reader.read_int() - second = reader.read_float() - else: - self.m_CharacterSpacing = reader.read_int() - self.m_CharacterPadding = reader.read_int() - - self.m_ConvertCase = reader.read_int() - self.m_DefaultMaterial = PPtr(reader) - - CharacterRects_size = reader.read_int() - for i in range(CharacterRects_size): - index = reader.read_int() - # Rectf uv - uvx = reader.read_float() - uvy = reader.read_float() - uvwidth = reader.read_float() - uvheight = reader.read_float() - # Rectf vert - vertx = reader.read_float() - verty = reader.read_float() - vertwidth = reader.read_float() - vertheight = reader.read_float() - width = reader.read_float() - - if version >= (4,): - flipped = reader.read_boolean() - reader.align_stream() - - self.m_Texture = PPtr(reader) - - KerningValues_size = reader.read_int() - for i in range(KerningValues_size): - pairfirst = reader.read_short() - pairsecond = reader.read_short() - second = reader.read_float() - - if version[:1] <= (3,): - self.m_GridFont = reader.read_boolean() - reader.align_stream() - else: - self.m_PixelScale = reader.read_float() - FontData_size = reader.read_int() - if FontData_size > 0: - self.m_FontData = reader.read_bytes(FontData_size) diff --git a/UnityPy/classes/GameObject.py b/UnityPy/classes/GameObject.py deleted file mode 100644 index 7517fc40..00000000 --- a/UnityPy/classes/GameObject.py +++ /dev/null @@ -1,50 +0,0 @@ -from .EditorExtension import EditorExtension -from .PPtr import PPtr -from ..enums import ClassIDType - - -class GameObject(EditorExtension): - m_Components: list - m_Layer: int - name: str - m_Animator: PPtr - m_Animation: PPtr - m_Transform: PPtr - m_MeshRenderer: PPtr - m_SkinnedMeshRender: PPtr - m_MeshFilter: PPtr - - def __init__(self, reader): - super().__init__(reader=reader) - - self.m_Animator = None - self.m_Animation = None - self.m_Transform = None - self.m_MeshRenderer = None - self.m_SkinnedMeshRenderer = None - self.m_MeshFilter = None - - component_size = reader.read_int() - - self.m_Components = [None] * component_size - for i in range(component_size): - if self.version < (5, 5): - first = reader.read_int() - component = PPtr(reader) - self.m_Components[i] = component - - if component.type == ClassIDType.Animator: - self.m_Animator = component - elif component.type == ClassIDType.Animation: - self.m_Animation = component - elif component.type in [ClassIDType.Transform, ClassIDType.RectTransform]: - self.m_Transform = component - elif component.type == ClassIDType.MeshRenderer: - self.m_MeshRenderer = component - elif component.type == ClassIDType.SkinnedMeshRenderer: - self.m_SkinnedMeshRenderer = component - elif component.type == ClassIDType.MeshFilter: - self.m_MeshFilter = component - - self.m_Layer = reader.read_int() - self.name = reader.read_aligned_string() diff --git a/UnityPy/classes/Material.py b/UnityPy/classes/Material.py deleted file mode 100644 index f8697512..00000000 --- a/UnityPy/classes/Material.py +++ /dev/null @@ -1,70 +0,0 @@ -from .NamedObject import NamedObject -from .PPtr import PPtr - - -class Material(NamedObject): - def __init__(self, reader): - super().__init__(reader=reader) - version = self.version - self.m_Shader = PPtr(reader) # Shader - - if version >= (2021, 3): # 2021.3 and up - self.m_ValidKeywords = reader.read_string_array() - self.m_InvalidKeywords = reader.read_string_array() - elif version >= (5,): # 5.0 and up - self.m_ShaderKeywords = reader.read_aligned_string() - elif version >= (4, 1): # 4.x - self.m_ShaderKeywords = reader.read_string_array() - - if version >= (5,): - self.m_LightmapFlags = reader.read_u_int() - - if version >= (5, 6): # 5.6 and up - self.m_EnableInstancingVariants = reader.read_boolean() - # var m_DoubleSidedGI = a_Stream.read_boolean() //2017 and up - reader.align_stream() - - if version >= (4, 3): # 4.3 and up - self.m_CustomRenderQueue = reader.read_int() - - if version >= (5, 1): # 5.1 and up - self.stringTagMap = { - reader.read_aligned_string(): reader.read_aligned_string() - for _ in range(reader.read_int()) - } - - if version >= (5, 6): # 5.6 and up - self.disabledShaderPasses = reader.read_string_array() - - self.m_SavedProperties = UnityPropertySheet(reader) - - -class UnityTexEnv: - def __init__(self, reader): - self.m_Texture = PPtr(reader) # Texture - self.m_Scale = reader.read_vector2() - self.m_Offset = reader.read_vector2() - - -class UnityPropertySheet: - def __init__(self, reader): - self.m_TexEnvs = { - reader.read_aligned_string(): UnityTexEnv(reader) - for _ in range(reader.read_int()) - } - - if reader.version >= (2021,): # 2021.1 and up - self.m_Ints = { - reader.read_aligned_string(): reader.read_int() - for _ in range(reader.read_int()) - } - - self.m_Floats = { - reader.read_aligned_string(): reader.read_float() - for _ in range(reader.read_int()) - } - - self.m_Colors = { - reader.read_aligned_string(): reader.read_color4() - for _ in range(reader.read_int()) - } diff --git a/UnityPy/classes/Mesh.py b/UnityPy/classes/Mesh.py deleted file mode 100644 index 6a500421..00000000 --- a/UnityPy/classes/Mesh.py +++ /dev/null @@ -1,1061 +0,0 @@ -import math -from typing import List - -from .AnimationClip import AABB, PackedFloatVector, PackedIntVector -from .NamedObject import NamedObject -from .Texture2D import StreamingInfo -from ..helpers.ResourceReader import get_resource_data -from ..math import Matrix4x4, Vector3 -from ..streams import EndianBinaryWriter -from ..enums import GfxPrimitiveType -import struct -from enum import IntEnum -from ..export import MeshExporter - -try: - from UnityPy import UnityPyBoost -except: - UnityPyBoost = None - - -class MinMaxAABB: - def __init__(self, reader): - self.m_Min = reader.read_vector3() - self.m_Max = reader.read_vector3() - - def save(self, writer): - writer.write_vector3(self.m_Min) - writer.write_vector3(self.m_Max) - - -class CompressedMesh: - def __init__(self, reader): - version = reader.version - self.m_Vertices = PackedFloatVector(reader) - self.m_UV = PackedFloatVector(reader) - if version[0] < 5: # 5 down - self.m_BindPoses = PackedFloatVector(reader) - self.m_Normals = PackedFloatVector(reader) - self.m_Tangents = PackedFloatVector(reader) - self.m_Weights = PackedIntVector(reader) - self.m_NormalSigns = PackedIntVector(reader) - self.m_TangentSigns = PackedIntVector(reader) - if version >= (5,): # 5 and up - self.m_FloatColors = PackedFloatVector(reader) - self.m_BoneIndices = PackedIntVector(reader) - self.m_Triangles = PackedIntVector(reader) - if version >= (3, 5): # 3.5 and up - if version[0] < 5: # 5 down - self.m_Colors = PackedIntVector(reader) - else: - self.m_UVInfo = reader.read_u_int() - - def save(self, writer, version): - self.m_Vertices.save(writer) - self.m_UV.save(writer) - if version < (5,): # 5 down - self.m_BindPoses.save(writer) - self.m_Normals.save(writer) - self.m_Tangents.save(writer) - self.m_Weights.save(writer) - self.m_NormalSigns.save(writer) - self.m_TangentSigns.save(writer) - if version >= (5,): # 5 and up - self.m_FloatColors.save(writer) - self.m_BoneIndices.save(writer) - self.m_Triangles.save(writer) - if version >= (3, 5): # 3.5 and up - if version < (5,): # 5 down - self.m_Colors.save(writer) - else: - writer.write_u_int(self.m_UVInfo) - - -class StreamInfo: - def __init__(self, **kwargs): - if "reader" in kwargs: - reader = kwargs["reader"] - version = reader.version - self.channelMask = reader.read_u_int() - self.offset = reader.read_u_int() - - if version < (4,): # 4.0 down - self.stride = reader.read_u_int() - self.align = reader.read_u_int() - else: - self.stride = reader.read_byte() - self.dividerOp = reader.read_byte() - self.frequency = reader.read_u_short() - else: - self.__dict__ = kwargs - - def save(self, writer: EndianBinaryWriter, version: tuple): - writer.write_u_int(self.channelMask) - writer.write_u_int(self.offset) - - if version < (4,): # 4.0 down - writer.write_u_int(self.stride) - writer.write_u_int(self.align) - else: - writer.write_byte(self.stride) - writer.write_byte(self.dividerOp) - writer.write_u_short(self.frequency) - - -class ChannelInfo: - def __init__(self, reader): - self.stream = reader.read_byte() - self.offset = reader.read_byte() - self.format = reader.read_byte() - self.dimension = reader.read_byte() & 0xF - - def save(self, writer): - writer.write_byte(self.stream) - writer.write_byte(self.offset) - writer.write_byte(self.format) - writer.write_byte(self.dimension) - - -class VertexData: - def __init__(self, reader): - self.reader = reader - version = reader.version - - if version < (2018,): # 2018 down - self.m_CurrentChannels = reader.read_u_int() - - self.m_VertexCount = reader.read_u_int() - - if version >= (4,): # 4.0 and up - m_ChannelsSize = reader.read_int() - self.m_Channels = [ChannelInfo(reader) for _ in range(m_ChannelsSize)] - - if version < (5,): # 5.0 down - if version < (4,): # 4.0 down - m_StreamsSize = 4 - else: - m_StreamsSize = reader.read_int() - - self.m_Streams = [StreamInfo(reader=reader) for _ in range(m_StreamsSize)] - - if version < (4,): # 4.0 down - self.GetChannels() - else: # 5.0 and up - self.GetStreams() - - self.m_DataSize = reader.read_bytes(reader.read_int()) - reader.align_stream() - - def save(self, writer: EndianBinaryWriter, version): - if version < (2018,): # 2018 down - writer.write_u_int(self.m_CurrentChannels) - - writer.write_u_int(self.m_VertexCount) - - if version >= (4,): # 4.0 and up - writer.write_int(len(self.m_Channels)) - for ch in self.m_Channels: - ch.save(writer) - - if (4,) <= version[:2] < (5,): # 4.0 and up to 5.0 - writer.write_int(len(self.m_Streams)) - - for stream in self.m_Streams: - stream.save(writer=writer, version=version) - - if version < (4,): # 4.0 down - raise Exception("Unsupported version") - else: # 5.0 and up - # for stream in self.m_Streams: - # stream.save(writer) - pass - - writer.write_int(len(self.m_DataSize)) - writer.write_bytes(self.m_DataSize) - writer.align_stream() - - def GetStreams(self): - streamCount = 1 - if self.m_Channels: - streamCount += max(x.stream for x in self.m_Channels) - - self.m_Streams = {} - offset = 0 - for s in range(streamCount): - chnMask = 0 - stride = 0 - for chn, m_Channel in enumerate(self.m_Channels): - if m_Channel.stream == s: - if m_Channel.dimension > 0: - chnMask |= 1 << chn # Shift 1UInt << chn - stride += m_Channel.dimension * MeshHelper.GetFormatSize( - MeshHelper.ToVertexFormat( - m_Channel.format, self.reader.version - ) - ) - self.m_Streams[s] = StreamInfo( - channelMask=chnMask, - offset=offset, - stride=stride, - dividerOp=0, - frequency=0, - ) - offset += self.m_VertexCount * stride - # static size_t align_streamSize (size_t size) { return (size + (kVertexStreamAlign-1)) & ~(kVertexStreamAlign-1) - offset = (offset + (16 - 1)) & ~( - 16 - 1 - ) # (offset + (16u - 1u)) & ~(16u - 1u); - - def GetChannels(self): - self.m_Channels = [] # ChannelInfo[6] - for i in range(6): - self.m_Channels.append(ChannelInfo(self.reader)) - for s, m_Stream in enumerate(self.m_Streams): - channelMask = bytearray(m_Stream.channelMask) # BitArray - offset = 0 - for i in range(6): - if channelMask[i]: - m_Channel = self.m_Channels[i] - m_Channel.stream = s - m_Channel.offset = offset - if i in [0, 1]: - # 0 - kShaderChannelVertex - # 1 - kShaderChannelNormal - m_Channel.format = 0 # kChannelFormatFloat - m_Channel.dimension = 3 - elif i == 2: # kShaderChannelColor - m_Channel.format = 2 # kChannelFormatColor - m_Channel.dimension = 4 - elif i in [3, 4]: - # 3 - kShaderChannelTexCoord0 - # 4 - kShaderChannelTexCoord1 - m_Channel.format = 0 # kChannelFormatFloat - m_Channel.dimension = 2 - elif i == 5: # kShaderChannelTangent - m_Channel.format = 0 # kChannelFormatFloat - m_Channel.dimension = 4 - offset += m_Channel.dimension * MeshHelper.GetFormatSize( - MeshHelper.ToVertexFormat(m_Channel.format, self.reader.version) - ) - - -class BoneWeights4: - def __init__(self, reader=None): - if reader: - self.weight = reader.read_float_array(4) - self.boneIndex = reader.read_int_array(4) - else: - self.weight = [0.0] * 4 - self.boneIndex = [0] * 4 - - def save(self, writer): - writer.write_float_array(self.weight) - writer.write_int_array(self.boneIndex) - - -class BlendShapeVertex: - def __init__(self, reader): - self.vertex = reader.read_vector3() - self.normal = reader.read_vector3() - self.tangent = reader.read_vector3() - self.index = reader.read_u_int() - - -class MeshBlendShape: - def __init__(self, reader): - version = reader.version - - if version < (4, 3): # 4.3 down - self.name = reader.read_aligned_string() - self.firstVertex = reader.read_u_int() - self.vertexCount = reader.read_u_int() - if version < (4, 3): # 4.3 down - self.aabbMinDelta = reader.read_vector3() - self.aabbMaxDelta = reader.read_vector3() - self.hasNormals = reader.read_boolean() - self.hasTangents = reader.read_boolean() - if version >= (4, 3): # 4.3 and up - reader.align_stream() - - -class MeshBlendShapeChannel: - def __init__(self, reader): - self.name = reader.read_aligned_string() - self.nameHash = reader.read_u_int() - self.frameIndex = reader.read_int() - self.frameCount = reader.read_int() - - -class BlendShapeData: - def __init__(self, reader): - version = reader.version - - if version >= (4, 3): # 4.3 and up - numVerts = reader.read_int() - self.vertices = [BlendShapeVertex(reader) for _ in range(numVerts)] - - numShapes = reader.read_int() - self.shapes = [MeshBlendShape(reader) for _ in range(numShapes)] - - numChannels = reader.read_int() - self.channels = [MeshBlendShapeChannel(reader) for _ in range(numChannels)] - self.fullWeights = reader.read_float_array() - else: - m_ShapesSize = reader.read_int() - self.m_Shapes = [MeshBlendShape(reader) for _ in range(m_ShapesSize)] - reader.align_stream() - m_ShapeVerticesSize = reader.read_int() - self.m_ShapeVertices = [ - BlendShapeVertex(reader) for _ in range(m_ShapeVerticesSize) - ] - - -class SubMesh: - def __init__(self, reader): - version = reader.version - self.firstByte = reader.read_u_int() - self.indexCount = reader.read_u_int() - self.topology = GfxPrimitiveType(reader.read_int()) - - if version < (4,): # 4.0 down - self.triangleCount = reader.read_u_int() - - if version >= (2017, 3): # 2017.3 and up - self.baseVertex = reader.read_u_int() - - if version >= (3,): # 3.0 and up - self.firstVertex = reader.read_u_int() - self.vertexCount = reader.read_u_int() - self.localAABB = AABB(reader) - - def save(self, writer, version): - writer.write_u_int(self.firstByte) - writer.write_u_int(self.indexCount) - writer.write_int(self.topology.value) - - if version < (4,): # 4.0 down - writer.write_u_int(self.triangleCount) - - if version >= (2017, 3): # 2017.3 and up - writer.write_u_int(self.baseVertex) - - if version >= (3,): # 3.0 and up - writer.write_u_int(self.firstVertex) - writer.write_u_int(self.vertexCount) - self.localAABB.save(writer) - - -class Mesh(NamedObject): - def export(self): - return MeshExporter.export_mesh(self) - - def __init__(self, reader): - super().__init__(reader=reader) - version = reader.version - - self.m_Use16BitIndices = True - self.m_Indices = [] - self.m_BindPose = [] - self.m_BoneNameHashes = [] - self.m_Vertices = [] - self.m_Skin = [] - self.m_Normals = [] - self.m_Colors = [] - self.m_UV0 = [] - self.m_UV1 = [] - self.m_UV2 = [] - self.m_UV3 = [] - self.m_UV4 = [] - self.m_UV5 = [] - self.m_UV6 = [] - self.m_UV7 = [] - self.m_Tangents = [] - - if version < (3, 5): # 3.5 down - self.m_Use16BitIndices = reader.read_int() > 0 - - if version[:2] <= (2, 5): # 2.5 and down - m_IndexBuffer_size = reader.read_int() - - if self.m_Use16BitIndices: - self.m_IndexBuffer = [ - reader.read_u_short() - for _ in range(math.ceil(m_IndexBuffer_size / 2)) - ] - reader.align_stream() - else: - self.m_IndexBuffer = reader.read_u_int_array( - math.ceil(m_IndexBuffer_size / 4) - ) - - m_SubMeshesSize = reader.read_int() - self.m_SubMeshes = [SubMesh(reader) for _ in range(m_SubMeshesSize)] - - if version >= (4, 1): # 4.1 and up - self.m_Shapes = BlendShapeData(reader) - - if version >= (4, 3): # 4.3 and up - self.m_BindPose = reader.read_matrix_array() - self.m_BoneNameHashes = reader.read_u_int_array() - self.m_RootBoneNameHash = reader.read_u_int() - - if version >= (2, 6): # 2.6.0 and up - if version >= (2019,): # 2019 and up - m_BonesAABBSize = reader.read_int() - self.m_BonesAABB = [MinMaxAABB(reader) for _ in range(m_BonesAABBSize)] - self.m_VariableBoneCountWeights = reader.read_u_int_array() - - self.m_MeshCompression = reader.read_byte() - if version >= (4,): # - if version < (5,): # - self.m_StreamCompression = reader.read_byte() - self.m_IsReadable = reader.read_boolean() - self.m_KeepVertices = reader.read_boolean() - self.m_KeepIndices = reader.read_boolean() - reader.align_stream() - - # Unity fixed it in 2017.3.1p1 and later versions - if ( - version >= (2017, 4) # 2017.4 - # fixed after 2017.3.1px - or version[:3] == (2017, 3, 1) - and self.build_type.IsPatch - # 2017.3.xfx with no compression - or version[:2] == (2017, 3) - and self.m_MeshCompression == 0 - ): - self.m_IndexFormat = reader.read_int() - self.m_Use16BitIndices = self.m_IndexFormat == 0 - - m_IndexBuffer_size = reader.read_int() - if self.m_Use16BitIndices: - self.m_IndexBuffer = [ - reader.read_u_short() - for _ in range(math.ceil(m_IndexBuffer_size / 2)) - ] - reader.align_stream() - else: - self.m_IndexBuffer = reader.read_u_int_array( - math.ceil(m_IndexBuffer_size / 4) - ) - - if version < (3, 5): # 3.4.2 and earlier - self.m_VertexCount = reader.read_int() - self.m_Vertices = reader.read_float_array(self.m_VertexCount * 3) # Vector3 - - self.m_SkinSize = reader.read_int() - self.m_Skin = [BoneWeights4(reader) for _ in range(self.m_SkinSize)] - - self.m_BindPose = reader.read_matrix_array() - self.m_UV0 = reader.read_float_array(reader.read_int() * 2) # Vector2 - self.m_UV1 = reader.read_float_array(reader.read_int() * 2) # Vector2 - - if version[:2] <= (2, 5): # 2.5 and down - m_TangentSpace_size = reader.read_int() - self.m_Normals = [0] * (m_TangentSpace_size * 3) - self.m_Tangets = [0] * (m_TangentSpace_size * 4) - for v in range(m_TangentSpace_size): - self.m_Normals[v * 3] = reader.read_float() - self.m_Normals[v * 3 + 1] = reader.read_float() - self.m_Normals[v * 3 + 2] = reader.read_float() - self.m_Tangents[v * 3] = reader.read_float() - self.m_Tangents[v * 3 + 1] = reader.read_float() - self.m_Tangents[v * 3 + 2] = reader.read_float() - # handedness - self.m_Tangents[v * 3 + 3] = reader.read_float() - else: # 2.6.0 and later - self.m_Tangents = reader.read_float_array( - reader.read_int() * 4 - ) # Vector4 - self.m_Normals = reader.read_float_array( - reader.read_int() * 3 - ) # Vector3 - else: - if version[:2] < (2018, 2): # 2018.2 down - m_SkinSize = reader.read_int() - self.m_Skin = [BoneWeights4(reader) for _ in range(m_SkinSize)] - - if version[:2] <= (4, 2): # 4.2 and down - self.m_BindPose = reader.read_matrix_array() - - self.m_VertexData = VertexData(reader) - - if version >= (2, 6): # 2.6.0 and later - self.m_CompressedMesh = CompressedMesh(reader) - - self.m_LocalAABB = AABB(reader) - - if version[:2] <= (3, 4): # 3.4.2 and earlier - m_Colors_size = reader.read_int() - self.mColors = [reader.read_byte() / 0xFF for _ in range(m_Colors_size * 4)] - - m_CollisionTriangles_size = reader.read_int() - reader.Position += m_CollisionTriangles_size * 4 # UInt32 indices - m_CollisionVertexCount = reader.read_int() - - self.m_MeshUsageFlags = reader.read_int() - - if version >= (2022, 1): # 2022.1 and up - self.m_CookingOptions = reader.read_int() - - if version >= (5,): # 5.0 and up - self.m_BakedConvexCollisionMesh = reader.read_bytes(reader.read_int()) - reader.align_stream() - self.m_BakedTriangleCollisionMesh = reader.read_bytes(reader.read_int()) - reader.align_stream() - - if version >= (2018, 2): # 2018.2 and up - self.m_MeshMetrics = [reader.read_float(), reader.read_float()] - - if version >= (2018, 3): # 2018.3 and up - reader.align_stream() - self.m_StreamData = StreamingInfo(reader, version) - - if self.m_StreamData.path and self.m_VertexData.m_VertexCount > 0: - self.m_VertexData.m_DataSize = get_resource_data( - self.m_StreamData.path, - self.assets_file, - self.m_StreamData.offset, - self.m_StreamData.size, - ) - - # Fix channel after 2018.3 - version = self.version - if version >= (3, 5): # 3.5 and up - self.ReadVertexData() - - if version >= (2, 6): # 2.6.0 and later - self.DecompressCompressedMesh() - - self.GetTriangles() - - def ReadVertexData(self): - version = self.version - m_VertexData = self.m_VertexData - m_VertexCount = self.m_VertexCount = m_VertexData.m_VertexCount - - for chn, m_Channel in enumerate(m_VertexData.m_Channels): - if m_Channel.dimension > 0: - m_Stream = m_VertexData.m_Streams[m_Channel.stream] - channelMask = bin(m_Stream.channelMask)[::-1] - if channelMask[chn] == "1": - if version[0] < 2018 and chn == 2 and m_Channel.format == 2: - m_Channel.dimension = 4 - - componentByteSize = MeshHelper.GetFormatSize( - MeshHelper.ToVertexFormat(m_Channel.format, self.reader.version) - ) - swap = self.reader.endian == "<" and componentByteSize > 1 - - if UnityPyBoost: - componentBytes = UnityPyBoost.unpack_vertexdata( - bytes(m_VertexData.m_DataSize), - componentByteSize, - m_VertexCount, - m_Stream.offset, - m_Stream.stride, - m_Channel.offset, - m_Channel.dimension, - swap, - ) - else: - componentBytes = bytearray( - m_VertexCount * m_Channel.dimension * componentByteSize - ) - - vertexBaseOffset = m_Stream.offset + m_Channel.offset - for v in range(m_VertexCount): - vertexOffset = vertexBaseOffset + m_Stream.stride * v - for d in range(m_Channel.dimension): - componentOffset = vertexOffset + componentByteSize * d - vertexDataSrc = componentOffset - componentDataSrc = componentByteSize * ( - v * m_Channel.dimension + d - ) - buff = m_VertexData.m_DataSize[ - vertexDataSrc : vertexDataSrc + componentByteSize - ] - if swap: # swap bytes - buff = buff[::-1] - componentBytes[ - componentDataSrc : componentDataSrc - + componentByteSize - ] = buff - - if MeshHelper.IsIntFormat(version, m_Channel.format): - componentsIntArray = MeshHelper.BytesToIntArray( - componentBytes, componentByteSize - ) - else: - componentsFloatArray = MeshHelper.BytesToFloatArray( - componentBytes, - componentByteSize, - MeshHelper.ToVertexFormat(m_Channel.format, version), - ) - - if version[0] >= 2018: - if chn == 0: # kShaderChannelVertex - self.m_Vertices = componentsFloatArray - elif chn == 1: # kShaderChannelNormal - self.m_Normals = componentsFloatArray - elif chn == 2: # kShaderChannelTangent - self.m_Tangents = componentsFloatArray - elif chn == 3: # kShaderChannelColor - self.m_Colors = componentsFloatArray - elif chn == 4: # kShaderChannelTexCoord0 - self.m_UV0 = componentsFloatArray - elif chn == 5: # kShaderChannelTexCoord1 - self.m_UV1 = componentsFloatArray - elif chn == 6: # kShaderChannelTexCoord2 - self.m_UV2 = componentsFloatArray - elif chn == 7: # kShaderChannelTexCoord3 - self.m_UV3 = componentsFloatArray - elif chn == 8: # kShaderChannelTexCoord4 - self.m_UV4 = componentsFloatArray - elif chn == 9: # kShaderChannelTexCoord5 - self.m_UV5 = componentsFloatArray - elif chn == 10: # kShaderChannelTexCoord6 - self.m_UV6 = componentsFloatArray - elif chn == 11: # kShaderChannelTexCoord7 - self.m_UV7 = componentsFloatArray - # 2018.2 and up - elif chn == 12: # kShaderChannelBlendWeight - if not self.m_Skin: - self.InitMSkin() - for i in range(m_VertexCount): - for j in range(m_Channel.dimension): - self.m_Skin[i].weight[j] = componentsFloatArray[ - i * m_Channel.dimension + j - ] - elif chn == 13: # kShaderChannelBlendIndices - if not self.m_Skin: - self.InitMSkin() - for i in range(m_VertexCount): - for j in range(m_Channel.dimension): - self.m_Skin[i].boneIndex[j] = componentsIntArray[ - i * m_Channel.dimension + j - ] - else: - if chn == 0: # kShaderChannelVertex - self.m_Vertices = componentsFloatArray - elif chn == 1: # kShaderChannelNormal - self.m_Normals = componentsFloatArray - elif chn == 2: # kShaderChannelColor - self.m_Colors = componentsFloatArray - elif chn == 3: # kShaderChannelTexCoord0 - self.m_UV0 = componentsFloatArray - elif chn == 4: # kShaderChannelTexCoord1 - self.m_UV1 = componentsFloatArray - elif chn == 5: - if version[0] >= 5: # kShaderChannelTexCoord2 - self.m_UV2 = componentsFloatArray - else: # kShaderChannelTangent - self.m_Tangents = componentsFloatArray - elif chn == 6: # kShaderChannelTexCoord3 - self.m_UV3 = componentsFloatArray - elif chn == 7: # kShaderChannelTangent - self.m_Tangents = componentsFloatArray - - def DecompressCompressedMesh(self): - # Vertex - version = self.version - m_CompressedMesh = self.m_CompressedMesh - if m_CompressedMesh.m_Vertices.m_NumItems > 0: - self.m_VertexCount = int(m_CompressedMesh.m_Vertices.m_NumItems / 3) - self.m_Vertices = m_CompressedMesh.m_Vertices.UnpackFloats(3, 3 * 4) - m_VertexCount = self.m_VertexCount - # UV - if m_CompressedMesh.m_UV.m_NumItems > 0: # - - m_UVInfo = m_CompressedMesh.m_UVInfo - if m_UVInfo != 0: - kInfoBitsPerUV = 4 - kUVDimensionMask = 3 - kUVChannelExists = 4 - kMaxTexCoordShaderChannels = 8 - - uvSrcOffset = 0 - - for uv in range(kMaxTexCoordShaderChannels): - texCoordBits = m_UVInfo >> (uv * kInfoBitsPerUV) - texCoordBits &= (1 << kInfoBitsPerUV) - 1 - if (texCoordBits & kUVChannelExists) != 0: - uvDim = 1 + int(texCoordBits & kUVDimensionMask) - m_UV = m_CompressedMesh.m_UV.UnpackFloats( - uvDim, uvDim * 4, uvSrcOffset, self.m_VertexCount - ) - self.SetUV(uv, m_UV) - else: - self.m_UV0 = m_CompressedMesh.m_UV.UnpackFloats( - 2, 2 * 4, 0, m_VertexCount - ) - if m_CompressedMesh.m_UV.m_NumItems >= m_VertexCount * 4: # - self.m_UV1 = m_CompressedMesh.m_UV.UnpackFloats( - 2, 2 * 4, m_VertexCount * 2, m_VertexCount - ) - - # BindPose - if version < (5,): # 5.0 down - if m_CompressedMesh.m_BindPoses.m_NumItems > 0: # - m_BindPoses_Unpacked = m_CompressedMesh.m_BindPoses.UnpackFloats( - 16, 4 * 16 - ) - self.m_BindPose = [ - Matrix4x4(m_BindPoses_Unpacked[i : i + 16]) - for i in range(0, m_CompressedMesh.m_BindPoses.m_NumItems, 16) - ] - # Normal - if m_CompressedMesh.m_Normals.m_NumItems > 0: - normalData = m_CompressedMesh.m_Normals.UnpackFloats(2, 4 * 2) - signs = m_CompressedMesh.m_NormalSigns.UnpackInts() - self.m_Normals = [] # float[m_CompressedMesh.m_Normals.m_NumItems / 2 * 3] - for i in range(0, math.ceil(m_CompressedMesh.m_Normals.m_NumItems / 2)): - x = normalData[i * 2 + 0] - y = normalData[i * 2 + 1] - zsqr = 1 - x * x - y * y - if zsqr >= 0: - z = math.sqrt(zsqr) - else: - z = 0 - normal = Vector3(x, y, z) - normal.normalize() - x = normal.X - y = normal.Y - z = normal.Z - if signs[i] == 0: - z = -z - self.m_Normals.extend([x, y, z]) - # Tangent - if m_CompressedMesh.m_Tangents.m_NumItems > 0: - tangentData = m_CompressedMesh.m_Tangents.UnpackFloats(2, 4 * 2) - signs = m_CompressedMesh.m_TangentSigns.UnpackInts() - self.m_Tangents = ( - [] - ) # float[m_CompressedMesh.m_Tangents.m_NumItems / 2 * 4] - for i in range(0, math.ceil(m_CompressedMesh.m_Tangents.m_NumItems / 2)): - x = tangentData[i * 2 + 0] - y = tangentData[i * 2 + 1] - zsqr = 1 - x * x - y * y - if zsqr >= 0: - z = math.sqrt(zsqr) - else: - z = 0 - vector3f = Vector3(x, y, z) - vector3f.normalize() - x = vector3f.X - y = vector3f.Y - z = vector3f.Z - if signs[i * 2 + 0] == 0: # - z = -z - w = 1.0 if signs[i * 2 + 1] > 0 else -1.0 - self.m_Tangents.extend([x, y, z, w]) - - # FloatColor - if version >= (5,): # 5.0 and up - if m_CompressedMesh.m_FloatColors.m_NumItems > 0: # - self.m_Colors = m_CompressedMesh.m_FloatColors.UnpackFloats(1, 4) - - # Skin - if m_CompressedMesh.m_Weights.m_NumItems > 0: - weights = m_CompressedMesh.m_Weights.UnpackInts() - boneIndices = m_CompressedMesh.m_BoneIndices.UnpackInts() - self.InitMSkin() - bonePos = 0 - boneIndexPos = 0 - j = 0 - sum = 0 - - for i in range(m_CompressedMesh.m_Weights.m_NumItems): - # read bone index and weight. - self.m_Skin[bonePos].weight[j] = weights[i] / 31.0 - self.m_Skin[bonePos].boneIndex[j] = boneIndices[boneIndexPos] - boneIndexPos += 1 - j += 1 - sum += weights[i] - - # the weights add up to one. fill the rest for this vertex with zero, and continue with next one. - if sum >= 31: # - while j < 4: - self.m_Skin[bonePos].weight[j] = 0 - self.m_Skin[bonePos].boneIndex[j] = 0 - j += 1 - - bonePos += 1 - j = 0 - sum = 0 - # we read three weights, but they don't add up to one. calculate the fourth one, and read - # missing bone index. continue with next vertex. - elif j == 3: # - self.m_Skin[bonePos].weight[j] = (31 - sum) / 31.0 - self.m_Skin[bonePos].boneIndex[j] = boneIndices[boneIndexPos] - boneIndexPos += 1 - bonePos += 1 - j = 0 - sum = 0 - # IndexBuffer - if m_CompressedMesh.m_Triangles.m_NumItems > 0: # - self.m_IndexBuffer = m_CompressedMesh.m_Triangles.UnpackInts() - # Color - if ( - hasattr(m_CompressedMesh, "m_Colors") - and m_CompressedMesh.m_Colors.m_NumItems > 0 - ): - m_CompressedMesh.m_Colors.m_NumItems *= 4 - m_CompressedMesh.m_Colors.m_BitSize /= 4 - tempColors = m_CompressedMesh.m_Colors.UnpackInts() - self.m_Colors = [color / 255 for color in tempColors] - - def GetTriangles(self): - m_IndexBuffer = self.m_IndexBuffer - m_Indices = self.m_Indices - - for m_SubMesh in self.m_SubMeshes: - firstIndex = m_SubMesh.firstByte // 2 - if not self.m_Use16BitIndices: - firstIndex //= 2 - - indexCount = m_SubMesh.indexCount - topology = m_SubMesh.topology - if topology == GfxPrimitiveType.kPrimitiveTriangles: - m_Indices.extend( - m_IndexBuffer[firstIndex : firstIndex + indexCount - indexCount % 3] - ) - - elif ( - self.version[0] < 4 - or topology == GfxPrimitiveType.kPrimitiveTriangleStrip - ): - # de-stripify : - triIndex = 0 - for i in range(indexCount - 2): - a, b, c = m_IndexBuffer[firstIndex + i : firstIndex + i + 3] - - # skip degenerates - if a == b or a == c or b == c: - continue - - # do the winding flip-flop of strips : - m_Indices.extend([b, a, c] if ((i & 1) == 1) else [a, b, c]) - triIndex += 3 - # fix indexCount - m_SubMesh.indexCount = triIndex - - elif topology == GfxPrimitiveType.kPrimitiveQuads: - for q in range(0, indexCount, 4): - m_Indices.extend( - [ - m_IndexBuffer[firstIndex + q], - m_IndexBuffer[firstIndex + q + 1], - m_IndexBuffer[firstIndex + q + 2], - m_IndexBuffer[firstIndex + q], - m_IndexBuffer[firstIndex + q + 2], - m_IndexBuffer[firstIndex + q + 3], - ] - ) - # fix indexCount - m_SubMesh.indexCount = indexCount // 2 * 3 - - else: - raise NotImplementedError( - "Failed getting triangles. Submesh topology is lines or points." - ) - - def InitMSkin(self): - self.m_Skin = [BoneWeights4() for _ in range(self.m_VertexCount)] - - def SetUV(self, uv: int, m_UV): - if uv == 0: - self.m_UV0 = m_UV - elif uv == 1: - self.m_UV1 = m_UV - elif uv == 2: - self.m_UV2 = m_UV - elif uv == 3: - self.m_UV3 == m_UV - elif uv == 4: - self.m_UV4 == m_UV - elif uv == 5: - self.m_UV5 == m_UV - elif uv == 6: - self.m_UV6 == m_UV - elif uv == 7: - self.m_UV7 == m_UV - else: - raise IndexError("Out of Range") - - def GetUV(self, uv: int): - if uv == 0: - return self.m_UV0 - elif uv == 1: - return self.m_UV1 - elif uv == 2: - return self.m_UV2 - elif uv == 3: - return self.m_UV3 - elif uv == 4: - return self.m_UV4 - elif uv == 5: - return self.m_UV5 - elif uv == 6: - return self.m_UV6 - elif uv == 7: - return self.m_UV7 - else: - raise IndexError("Out of Range") - - -class MeshHelper: - @staticmethod - def GetFormatSize(format: int) -> int: - if format in [ - VertexFormat.kVertexFormatFloat, - VertexFormat.kVertexFormatUInt32, - VertexFormat.kVertexFormatSInt32, - ]: - return 4 - elif format in [ - VertexFormat.kVertexFormatFloat16, - VertexFormat.kVertexFormatUNorm16, - VertexFormat.kVertexFormatSNorm16, - VertexFormat.kVertexFormatUInt16, - VertexFormat.kVertexFormatSInt16, - ]: - return 2 - elif format in [ - VertexFormat.kVertexFormatUNorm8, - VertexFormat.kVertexFormatSNorm8, - VertexFormat.kVertexFormatUInt8, - VertexFormat.kVertexFormatSInt8, - ]: - return 1 - raise ValueError(format) - - @staticmethod - def IsIntFormat(version, format: int) -> bool: - if version[0] < 2017: - return format == 4 - elif version[0] < 2019: - return format >= 7 - else: - return format >= 6 - - @staticmethod - def BytesToFloatArray(inputBytes, size, vformat: "VertexFormat") -> List[float]: - if vformat == VertexFormat.kVertexFormatFloat: - return struct.unpack(f">{'f'*(len(inputBytes)//4)}", inputBytes) - elif vformat == VertexFormat.kVertexFormatFloat16: - return struct.unpack(f">{'e'*(len(inputBytes)//2)}", inputBytes) - elif vformat == VertexFormat.kVertexFormatUNorm8: - return [byte / 255.0 for byte in inputBytes] - elif vformat == VertexFormat.kVertexFormatSNorm8: - return [max(((byte - 128) / 127.0), -1.0) for byte in inputBytes] - elif vformat == VertexFormat.kVertexFormatUNorm16: - return [ - x / 65535.0 - for x in struct.unpack(f">{'H'*(len(inputBytes)//2)}", inputBytes) - ] - elif vformat == VertexFormat.kVertexFormatSNorm16: - return [ - max(((x - 32768) / 32767.0), -1.0) - for x in struct.unpack(f">{'h'*(len(inputBytes)//2)}", inputBytes) - ] - - @staticmethod - def BytesToIntArray(inputBytes, size): - if size == 1: - return [x for x in inputBytes] - elif size == 2: - return [ - x for x in struct.unpack(f">{'h'*(len(inputBytes)//2)}", inputBytes) - ] - elif size == 4: - return [ - x for x in struct.unpack(f">{'i'*(len(inputBytes)//4)}", inputBytes) - ] - - @staticmethod - def ToVertexFormat(format: int, version: List[int]) -> "VertexFormat": - if version[0] < 2017: - if format == VertexChannelFormat.kChannelFormatFloat: - return VertexFormat.kVertexFormatFloat - elif format == VertexChannelFormat.kChannelFormatFloat16: - return VertexFormat.kVertexFormatFloat16 - elif format == VertexChannelFormat.kChannelFormatColor: # in 4.x is size 4 - return VertexFormat.kVertexFormatUNorm8 - elif format == VertexChannelFormat.kChannelFormatByte: - return VertexFormat.kVertexFormatUInt8 - elif format == VertexChannelFormat.kChannelFormatUInt32: # in 5.x - return VertexFormat.kVertexFormatUInt32 - else: - raise ValueError(f"Failed to convert {format.name} to VertexFormat") - elif version[0] < 2019: - if format == VertexFormat2017.kVertexFormatFloat: - return VertexFormat.kVertexFormatFloat - elif format == VertexFormat2017.kVertexFormatFloat16: - return VertexFormat.kVertexFormatFloat16 - elif ( - format == VertexFormat2017.kVertexFormatColor - or format == VertexFormat2017.kVertexFormatUNorm8 - ): - return VertexFormat.kVertexFormatUNorm8 - elif format == VertexFormat2017.kVertexFormatSNorm8: - return VertexFormat.kVertexFormatSNorm8 - elif format == VertexFormat2017.kVertexFormatUNorm16: - return VertexFormat.kVertexFormatUNorm16 - elif format == VertexFormat2017.kVertexFormatSNorm16: - return VertexFormat.kVertexFormatSNorm16 - elif format == VertexFormat2017.kVertexFormatUInt8: - return VertexFormat.kVertexFormatUInt8 - elif format == VertexFormat2017.kVertexFormatSInt8: - return VertexFormat.kVertexFormatSInt8 - elif format == VertexFormat2017.kVertexFormatUInt16: - return VertexFormat.kVertexFormatUInt16 - elif format == VertexFormat2017.kVertexFormatSInt16: - return VertexFormat.kVertexFormatSInt16 - elif format == VertexFormat2017.kVertexFormatUInt32: - return VertexFormat.kVertexFormatUInt32 - elif format == VertexFormat2017.kVertexFormatSInt32: - return VertexFormat.kVertexFormatSInt32 - else: - raise ValueError(f"Failed to convert {format.name} to VertexFormat") - else: - return VertexFormat(format) - - -class VertexChannelFormat(IntEnum): - kChannelFormatFloat = 0 - kChannelFormatFloat16 = 1 - kChannelFormatColor = 2 - kChannelFormatByte = 3 - kChannelFormatUInt32 = 4 - - -class VertexFormat2017(IntEnum): - kVertexFormatFloat = 0 - kVertexFormatFloat16 = 1 - kVertexFormatColor = 2 - kVertexFormatUNorm8 = 3 - kVertexFormatSNorm8 = 4 - kVertexFormatUNorm16 = 5 - kVertexFormatSNorm16 = 6 - kVertexFormatUInt8 = 7 - kVertexFormatSInt8 = 8 - kVertexFormatUInt16 = 9 - kVertexFormatSInt16 = 10 - kVertexFormatUInt32 = 11 - kVertexFormatSInt32 = 12 - - -class VertexFormat(IntEnum): - kVertexFormatFloat = 0 - kVertexFormatFloat16 = 1 - kVertexFormatUNorm8 = 2 - kVertexFormatSNorm8 = 3 - kVertexFormatUNorm16 = 4 - kVertexFormatSNorm16 = 5 - kVertexFormatUInt8 = 6 - kVertexFormatSInt8 = 7 - kVertexFormatUInt16 = 8 - kVertexFormatSInt16 = 9 - kVertexFormatUInt32 = 10 - kVertexFormatSInt32 = 11 diff --git a/UnityPy/classes/MeshFilter.py b/UnityPy/classes/MeshFilter.py deleted file mode 100644 index 0a2da5e1..00000000 --- a/UnityPy/classes/MeshFilter.py +++ /dev/null @@ -1,8 +0,0 @@ -from .Component import Component -from .PPtr import PPtr - - -class MeshFilter(Component): - def __init__(self, reader): - super().__init__(reader=reader) - self.m_Mesh = PPtr(reader) diff --git a/UnityPy/classes/MeshRenderer.py b/UnityPy/classes/MeshRenderer.py deleted file mode 100644 index ada714ac..00000000 --- a/UnityPy/classes/MeshRenderer.py +++ /dev/null @@ -1,6 +0,0 @@ -from .Renderer import Renderer - - -class MeshRenderer(Renderer): - def __init__(self, reader): - super().__init__(reader=reader) diff --git a/UnityPy/classes/MonoBehaviour.py b/UnityPy/classes/MonoBehaviour.py deleted file mode 100644 index 956cc8f2..00000000 --- a/UnityPy/classes/MonoBehaviour.py +++ /dev/null @@ -1,42 +0,0 @@ -from .Behaviour import Behaviour -from .PPtr import PPtr, save_ptr -from ..streams import EndianBinaryReader, EndianBinaryWriter -from ..exceptions import TypeTreeError as TypeTreeError - -class MonoBehaviour(Behaviour): - def __init__(self, reader: EndianBinaryReader): - super().__init__(reader=reader) - self.m_Script = PPtr(reader) - self.name = reader.read_aligned_string() - - self._raw_offset = reader.Position - if self.assets_file._enable_type_tree: - try: - self.read_typetree() - except TypeTreeError as e: - print("Failed to read TypeTree:\n", e) - self.assets_file._enable_type_tree = False - - def save(self, writer: EndianBinaryWriter = None, raw_data: bytes = None): - if writer is None: - writer = EndianBinaryWriter(endian=self.reader.endian) - if not raw_data: - ValueError("No raw data given") - - super().save(writer) - save_ptr(self.m_Script, writer) - writer.write_aligned_string(self.name) - writer.write(raw_data) - - self.set_raw_data(writer.bytes) - - @property - def raw_data(self) -> bytes: - """ - Reads the undocumentated data following the default init. - This is usefull for classes that are stored via MonoBehaviours. - """ - reader = self.reader - reader.Position = self._raw_offset - return reader.read_bytes(reader.byte_size - (self._raw_offset - reader.byte_start)) - diff --git a/UnityPy/classes/MonoScript.py b/UnityPy/classes/MonoScript.py deleted file mode 100644 index 6635100a..00000000 --- a/UnityPy/classes/MonoScript.py +++ /dev/null @@ -1,23 +0,0 @@ -from .NamedObject import NamedObject - - -class MonoScript(NamedObject): - def __init__(self, reader): - super().__init__(reader=reader) - version = self.version - if version >= (3, 4): # 3.4 and up - self.m_ExecutionOrder = reader.read_int() - if version < (5,): # 5.0 down - self.m_PropertiesHash = reader.read_u_int() - else: - self.m_PropertiesHash = reader.read_bytes(16) - if version < (3,): # 3.0 down - self.m_PathName = reader.read_aligned_string() - - self.m_ClassName = reader.read_aligned_string() - if version >= (3,): # 3.0 and up - self.m_Namespace = reader.read_aligned_string() - - self.m_AssemblyName = reader.read_aligned_string() - if version < (2018, 2): # 2018.2 down - self.m_IsEditorScript = reader.read_boolean() diff --git a/UnityPy/classes/MovieTexture.py b/UnityPy/classes/MovieTexture.py deleted file mode 100644 index e27af18d..00000000 --- a/UnityPy/classes/MovieTexture.py +++ /dev/null @@ -1,11 +0,0 @@ -from .PPtr import PPtr -from .Texture import Texture - - -class MovieTexture(Texture): - def __init__(self, reader): - super().__init__(reader=reader) - self.m_Loop = reader.read_boolean() - reader.align_stream() - self.m_AudioClip = PPtr(reader) # AudioClip - self.m_MovieData = reader.read_bytes(reader.read_int()) diff --git a/UnityPy/classes/NamedObject.py b/UnityPy/classes/NamedObject.py deleted file mode 100644 index 4275a115..00000000 --- a/UnityPy/classes/NamedObject.py +++ /dev/null @@ -1,28 +0,0 @@ -from .EditorExtension import EditorExtension -from ..streams import EndianBinaryWriter - - -class NamedObject(EditorExtension): - m_Name: str - - def __init__(self, reader): - super().__init__(reader=reader) - self.reader.reset() - self.m_Name = self.reader.read_aligned_string() - - def save(self, writer: EndianBinaryWriter = None): - if not writer: - writer = EndianBinaryWriter(endian=self.reader.endian) - super().save(writer) - writer.write_aligned_string(self.m_Name) - - @property - def name(self): - return self.m_Name - - @name.setter - def name(self, value): - self.m_Name = value - - def __repr__(self): - return f"<{self.__class__.__name__} path_id={self.path_id} name={self.m_Name}>" diff --git a/UnityPy/classes/Object.py b/UnityPy/classes/Object.py index 2c8381ee..c369594c 100644 --- a/UnityPy/classes/Object.py +++ b/UnityPy/classes/Object.py @@ -1,180 +1,32 @@ -from .PPtr import PPtr -from ..enums import BuildTarget -from ..helpers import TypeTreeHelper -from ..streams import EndianBinaryWriter -from ..files import ObjectReader -import types -from ..exceptions import TypeTreeError as TypeTreeError +from __future__ import annotations +from abc import ABC, ABCMeta +from typing import TYPE_CHECKING, Dict, Any, Optional, Self +if TYPE_CHECKING: + from ..files.ObjectReader import ObjectReader + from ..files.SerializedFile import SerializedFile -class Object(object): - type_tree: dict - def __init__(self, reader: ObjectReader): - self.reader = reader - self.assets_file = reader.assets_file - self.type = reader.type - self.path_id = reader.path_id - self.version = reader.version - self.build_type = reader.build_type - self.platform = reader.platform - self.serialized_type = reader.serialized_type - self.byte_size = reader.byte_size - self.assets_file = reader.assets_file +class Object(ABC, metaclass=ABCMeta): + object_reader: Optional[ObjectReader[Self]] = None - if self.platform == BuildTarget.NoTarget: - self._object_hide_flags = reader.read_u_int() + def __init__(self, **kwargs: Dict[str, Any]) -> None: + self.__dict__.update(**kwargs) - self.container = self.assets_file.container.path_dict.get(self.path_id) + def set_object_reader(self, object_info: ObjectReader[Any]): + self.object_reader = object_info - self.reader.reset() - if type(self) == Object: - self.read_typetree() + def __repr__(self) -> str: + return f"<{self.__class__.__name__}>" - def has_struct_member(self, name: str) -> bool: - nodes = self.reader.get_typetree_nodes() - return any(node.m_Name == name for node in nodes) + @property + def assets_file(self) -> Optional[SerializedFile]: + if self.object_reader: + return self.object_reader.assets_file + return None - def dump_typetree(self, nodes: list = None) -> str: - return self.reader.dump_typetree(nodes=nodes) + def save(self) -> None: + if self.object_reader is None: + raise ValueError("ObjectReader not set") - def dump_typetree_structure(self) -> str: - return self.reader.dump_typetree_structure() - - def read_typetree(self, nodes: list = None, wrap: bool = False) -> dict: - tree = self.reader.read_typetree(nodes) - self.type_tree = NodeHelper(tree, self.assets_file) - return self.type_tree if wrap else tree - - def save_typetree(self, nodes: list = None, writer: EndianBinaryWriter = None): - def class_to_dict(value): - if isinstance(value, list): - return [class_to_dict(val) for val in value] - elif isinstance(value, dict): - return {key: class_to_dict(val) for key, val in value.items()} - elif hasattr(value, "__dict__"): - if isinstance(value, PPtr): - return {"m_PathID": value.path_id, "m_FileID": value.file_id} - return { - key: class_to_dict(val) - for key, val in value.__dict__.items() - if not isinstance(value, (types.FunctionType, types.MethodType)) - and not key in ["type_tree", "assets_file"] - } - else: - return value - - obj = class_to_dict(self if not self.type_tree else self.type_tree) - return self.reader.save_typetree(obj, nodes, writer) - - def get_raw_data(self) -> bytes: - return self.reader.get_raw_data() - - def set_raw_data(self, data): - self.reader.set_raw_data(data) - - def save(self, writer: EndianBinaryWriter = None, intern_call=False): - if not writer: - writer = EndianBinaryWriter(endian=self.reader.endian) - if intern_call: - if self.platform == BuildTarget.NoTarget: - writer.write_u_int(self._object_hide_flags) - else: - # save for objects WITHOUT specific save function - # so we have to use the typetree if it exists - self.save_typetree() - - def _save(self, writer): - # the reader is actually an ObjectReader, - # the data value is written back into the asset - self.reader.data = writer.bytes - - def __getattr__(self, name): - """ - If item not found in __dict__, read type_tree and check if it is in there. - """ - if name == "type_tree" or self.type_tree == None: - old_pos = self.reader.Position - self.read_typetree() - self.reader.Position = old_pos - if name == "type_tree": - return self.type_tree - elif name == "read": - return lambda: self - return getattr(self.type_tree, name) - - def get(self, key, default=None): - return getattr(self, key, default) - - def __repr__(self): - return f"<{self.__class__.__name__} path_id={self.path_id}>" - - def __hash__(self): - return hash(self.path_id) - - def __eq__(self, other): - if isinstance(other, Object): - return self.path_id == other.path_id - elif isinstance(other, int): - return self.path_id == other - return False - - -class NodeHelper: - def __init__(self, data, assets_file): - if "m_PathID" in data and "m_FileID" in data: - # used to make pointers directly useable - self.path_id = data["m_PathID"] - self.file_id = data["m_FileID"] - self.index = data.get("m_Index", -2) - self.assets_file = assets_file - self._obj = None - self.__class__ = PPtr - else: - self.__dict__ = { - key: NodeHelper(val, assets_file) for key, val in data.items() - } - - def __new__(cls, data, assets_file): - if isinstance(data, dict): - return super(NodeHelper, cls).__new__(cls) - elif isinstance(data, list): - return [NodeHelper(x, assets_file) for x in data] - elif isinstance(data, tuple): - return tuple(NodeHelper(x, assets_file) for x in data) - return data - - def __getitem__(self, item): - return getattr(self, item) - - def to_dict(self): - def dump(val): - return ( - val.to_dict() - if isinstance(val, NodeHelper) - else [dump(item) for item in val] - if isinstance(val, list) - else {"m_PathID": val.path_id, "m_FileID": val.file_id} - if isinstance(val, PPtr) - else [x for x in val] - if isinstance(val, (bytearray, bytes)) - else val - ) - - return {key: dump(val) for key, val in self.__dict__.items()} - - def items(self): - return self.__dict__.items() - - def values(self): - return self.__dict__.values() - - def keys(self): - return self.__dict__.keys() - - def __repr__(self): - name = getattr(self, "m_Name", None) - if name: - return f"" - else: - return "" + self.object_reader.save_typetree(self) diff --git a/UnityPy/classes/PPtr.py b/UnityPy/classes/PPtr.py index 96ae6d64..2694f4f8 100644 --- a/UnityPy/classes/PPtr.py +++ b/UnityPy/classes/PPtr.py @@ -1,90 +1,81 @@ -from ..files import ObjectReader -from ..streams import EndianBinaryWriter -from ..enums import ClassIDType - - -def save_ptr(obj, writer: EndianBinaryWriter): - if isinstance(obj, PPtr): - writer.write_int(obj.file_id) - else: - writer.write_int(0) # it's usually 0...... - if obj._version < 14: - writer.write_int(obj.path_id) - else: - writer.write_long(obj.path_id) - - -class PPtr: - def __init__(self, reader: ObjectReader): - self._version = reader.version2 - self.index = -2 - self.file_id = reader.read_int() - self.path_id = reader.read_int() if self._version < 14 else reader.read_long() - self.assets_file = reader.assets_file - self._obj = None - - def save(self, writer: EndianBinaryWriter): - save_ptr(self, writer) - - def get_obj(self): - if self._obj != None: - return self._obj - - manager = None - - if self.file_id == 0: - manager = self.assets_file - - elif self.file_id > 0 and self.file_id - 1 < len(self.assets_file.externals): - if self.index == -2: - environment = self.assets_file.environment - external_name = self.external_name - # try to find it in the already registered cabs - manager = environment.get_cab(external_name) - # not found, load all dependencies and try again - if not manager: - self.assets_file.load_dependencies([external_name]) - manager = environment.get_cab(external_name) - - if manager is not None: - self._obj = manager.objects.get(self.path_id) - else: - self._obj = None - if self.external_name: - print(f"Couldn't find dependency {self.external_name}") - print("You can try to load it manually to the environment in advance") - print("for Web-&BundleFiles: env.load_file(dependency)") - print( - "for SerializedFiles: env.register_cab(depdency_basename, env.load_file(dependency)" - ) - elif self.path_id: - print(f"Couldn't find referenced object with path_id {self.path_id}") +from __future__ import annotations +from typing import TypeVar, Generic, TYPE_CHECKING, Optional, Any, cast + +from attr import define + +if TYPE_CHECKING: + from ..files.ObjectReader import ObjectReader + from ..files.SerializedFile import SerializedFile + +T = TypeVar("T") - return self._obj + +@define +class PPtr(Generic[T]): + m_FileID: int + m_PathID: int + assetsfile: Optional[SerializedFile] = None + type: Optional[str] = None @property - def type(self): - obj = self.get_obj() - if obj is None: - return ClassIDType.UnknownType - return obj.type + def file_id(self) -> int: + # backwards compatibility + return self.m_FileID @property - def external_name(self): - if self.file_id > 0 and self.file_id - 1 < len(self.assets_file.externals): - return self.assets_file.externals[self.file_id - 1].name - - def __getattr__(self, key): - obj = self.get_obj() - return getattr(obj, key) - - def __repr__(self): - return "<%s %s>" % ( - self.__class__.__name__, - self._obj.__class__.__repr__(self.get_obj()) - if self.get_obj() - else "Not Found", - ) + def path_id(self) -> int: + # backwards compatibility + return self.m_PathID + + def read(self): + # backwards compatibility + return self.deref_parse_as_object() + + def deref(self, assetsfile: Optional[SerializedFile] = None) -> ObjectReader[T]: + assetsfile = assetsfile or self.assetsfile + if assetsfile is None: + raise ValueError("PPtr can't deref without an assetsfile!") + + if self.m_PathID == 0: + raise ValueError("PPtr can't deref with m_PathID == 0!") + + if self.m_FileID == 0: + pass + else: + # resolve file id to external name + external_id = self.m_FileID - 1 + if external_id >= len(assetsfile.m_Externals): + raise FileNotFoundError("Failed to resolve pointer - invalid m_FileID!") + external = assetsfile.m_Externals[external_id] + + # resolve external name to assetsfile + container = assetsfile.parent + if container is None: + # TODO - use default fs + raise FileNotFoundError( + f"PPtr points to {external.path} but no container is set!" + ) + + for child in container.childs: + if isinstance(child, SerializedFile) and child.name == external.path: + assetsfile = child + break + else: + raise FileNotFoundError( + f"Failed to resolve pointer - {external.path} not found!" + ) + + return cast("ObjectReader[T]", assetsfile.objects[self.m_PathID]) + + def deref_parse_as_object(self, assetsfile: Optional[SerializedFile] = None) -> T: + return self.deref(assetsfile).read() + + def deref_parse_as_dict( + self, assetsfile: Optional[SerializedFile] = None + ) -> dict[str, Any]: + ret = self.deref(assetsfile).parse_as_dict() + assert isinstance(ret, dict) + return ret def __bool__(self): - return True if self.get_obj() else False + return self.m_PathID != 0 diff --git a/UnityPy/classes/PlayerSettings.py b/UnityPy/classes/PlayerSettings.py deleted file mode 100644 index e291d7ea..00000000 --- a/UnityPy/classes/PlayerSettings.py +++ /dev/null @@ -1,29 +0,0 @@ -from .Object import Object - - -class PlayerSettings(Object): - def __init__(self, reader): - super().__init__(reader=reader) - version = self.version - if version >= (5, 4): # 5.4.0 nad up - self.productGUID = reader.read_bytes(16) - - self.AndroidProfiler = reader.read_boolean() - # bool AndroidFilterTouchesWhenObscured 2017.2 and up - # bool AndroidEnableSustainedPerformanceMode 2018 and up - reader.align_stream() - self.defaultScreenOrientation = reader.read_int() - self.targetDevice = reader.read_int() - if version < (5, 3): # 5.3 down - if version < (5,): # 5.0 down - self.targetPlatform = reader.read_int() # 4.0 and up targetGlesGraphics - if version >= (4, 6): # 4.6 and up - self.targetIOSGraphics = reader.read_int() - self.targetResolution = reader.read_int() - else: - self.useOnDemandResources = reader.read_boolean() - reader.align_stream() - if version >= (3, 5): # 3.5 and up - self.accelerometerFrequency = reader.read_int() - self.companyName = reader.read_aligned_string() - self.productName = reader.read_aligned_string() diff --git a/UnityPy/classes/RectTransform.py b/UnityPy/classes/RectTransform.py deleted file mode 100644 index 73514920..00000000 --- a/UnityPy/classes/RectTransform.py +++ /dev/null @@ -1,6 +0,0 @@ -from .Transform import Transform - - -class RectTransform(Transform): - def __init__(self, reader): - super().__init__(reader=reader) diff --git a/UnityPy/classes/Renderer.py b/UnityPy/classes/Renderer.py deleted file mode 100644 index dc5334ba..00000000 --- a/UnityPy/classes/Renderer.py +++ /dev/null @@ -1,93 +0,0 @@ -from .Component import Component -from .PPtr import PPtr -from ..export import MeshRendererExporter - - -class StaticBatchInfo: - def __init__(self, reader): - self.firstSubMesh = reader.read_u_short() - self.subMeshCount = reader.read_u_short() - - -class Renderer(Component): - def __init__(self, reader): - super().__init__(reader=reader) - version = self.version - if version < (5,): # 5.0 down - self.m_Enabled = reader.read_boolean() - self.m_CastShadows = reader.read_boolean() - self.m_ReceiveShadows = reader.read_boolean() - self.m_LightmapIndex = reader.read_byte() - else: # 5.0 and up - if version >= (5, 4): # 5.4 and up - self.m_Enabled = reader.read_boolean() - self.m_CastShadows = reader.read_byte() - self.m_ReceiveShadows = reader.read_byte() - if version[:2] > (2017, 2): # 2017.2 and up - self.m_DynamicOccludee = reader.read_byte() - self.m_MotionVectors = reader.read_byte() - self.m_LightProbeUsage = reader.read_byte() - self.m_ReflectionProbeUsage = reader.read_byte() - if version >= (2019, 3): # 2019.3 and up - self.m_RayTracingMode = reader.read_byte() - if version >= (2020,): # 2020.1 and up - self.m_RayTraceProcedural = reader.read_byte() - reader.align_stream() - else: - self.m_Enabled = reader.read_boolean() - reader.align_stream() - self.m_CastShadows = reader.read_byte() - self.m_ReceiveShadows = reader.read_boolean() - reader.align_stream() - - if version >= (2018,): # 2018 and up - self.m_RenderingLayerMask = reader.read_u_int() - - if version >= (2018, 3): # 2018.3 and up - self.m_RendererPriority = reader.read_int() - - self.m_LightmapIndex = reader.read_u_short() - self.m_LightmapIndexDynamic = reader.read_u_short() - - if version >= (3,): # 3.0 and up - self.m_LightmapTilingOffset = reader.read_vector4() - - if version >= (5,): # 5.0 and up - self.m_LightmapTilingOffsetDynamic = reader.read_vector4() - - m_MaterialsSize = reader.read_int() - self.m_Materials = [PPtr(reader) for _ in range(m_MaterialsSize)] # Material - - if version < (3,): # 3.0 down - self.m_LightmapTilingOffset = reader.read_vector4() - else: # 3.0 and up - if version >= (5, 5): # 5.5 and up - self.m_StaticBatchInfo = StaticBatchInfo(reader) - else: - self.m_SubsetIndices = reader.read_u_int_array() - - self.m_StaticBatchRoot = PPtr(reader) # Transform - - if version >= (5, 4): # 5.4 and up - self.m_ProbeAnchor = PPtr(reader) # Transform - self.m_LightProbeVolumeOverride = PPtr(reader) # GameObject - elif version >= (3, 5): # 3.5 - 5.3 - self.m_UseLightProbes = reader.read_boolean() - reader.align_stream() - - if version >= (5,): # 5.0 and up - self.m_ReflectionProbeUsage = reader.read_int() - - # Transform #5.0 and up m_ProbeAnchor - self.m_LightProbeAnchor = PPtr(reader) - - if version >= (4, 3): # 4.3 and up - if version[:2] == (4, 3): # 4.3 - self.m_SortingLayer = reader.read_short() - else: - self.m_SortingLayerID = reader.read_u_int() - self.m_SortingOrder = reader.read_short() - reader.align_stream() - - def export(self, export_dir: str) -> None: - MeshRendererExporter.export_mesh_renderer(self, export_dir) diff --git a/UnityPy/classes/ResourceManager.py b/UnityPy/classes/ResourceManager.py deleted file mode 100644 index 2f490caf..00000000 --- a/UnityPy/classes/ResourceManager.py +++ /dev/null @@ -1,23 +0,0 @@ -from .Object import Object -from .PPtr import PPtr, save_ptr -from ..streams import EndianBinaryReader, EndianBinaryWriter - - -class ResourceManager(Object): - def __init__(self, reader): - super().__init__(reader) - m_ContainerSize = reader.read_int() - self.m_Container = { - reader.read_aligned_string(): PPtr(reader) - for _ in range(m_ContainerSize) - } - - def save(self, writer: EndianBinaryWriter = None): - if not writer: - writer = EndianBinaryWriter(endian=self.reader.endian) - super().save(writer, intern_call=True) - writer.write_int(len(self.m_Container)) - for key, val in self.m_Container.items(): - writer.write_aligned_string(key) - save_ptr(val, writer) - return writer diff --git a/UnityPy/classes/RuntimeAnimatorController.py b/UnityPy/classes/RuntimeAnimatorController.py deleted file mode 100644 index 8b44885c..00000000 --- a/UnityPy/classes/RuntimeAnimatorController.py +++ /dev/null @@ -1,6 +0,0 @@ -from .NamedObject import NamedObject - - -class RuntimeAnimatorController(NamedObject): - def __init__(self, reader): - super().__init__(reader=reader) diff --git a/UnityPy/classes/Shader.py b/UnityPy/classes/Shader.py deleted file mode 100644 index c2be9a08..00000000 --- a/UnityPy/classes/Shader.py +++ /dev/null @@ -1,464 +0,0 @@ -from enum import IntEnum - -from .NamedObject import NamedObject -from ..export.ShaderConverter import export_shader -from ..enums import ShaderCompilerPlatform, ShaderGpuProgramType, SerializedPropertyType -from ..enums import TextureDimension, PassType - - -class Shader(NamedObject): - def export(self): - return export_shader(self) - - def __init__(self, reader): - super().__init__(reader=reader) - version = reader.version - if version >= (5, 5): # 5.5 and up - self.m_ParsedForm = SerializedShader(reader) - self.platforms = [ - ShaderCompilerPlatform(x) for x in reader.read_u_int_array() - ] - - if version >= (2019, 3): # 2019.3 and up - self.offsets = reader.read_u_int_array_array()[0] - self.compressedLengths = reader.read_u_int_array_array()[0] - self.decompressedLengths = reader.read_u_int_array_array()[0] - else: - self.offsets = reader.read_u_int_array() - self.compressedLengths = reader.read_u_int_array() - self.decompressedLengths = reader.read_u_int_array() - self.compressedBlob = reader.read_bytes(reader.read_int()) - else: - self.m_Script = reader.read_bytes(reader.read_int()) - reader.align_stream() - self.m_PathName = reader.read_aligned_string() - if version >= (5, 3): # 5.3 - 5.4 - self.decompressedSize = reader.read_u_int() - self.m_SubProgramBlob = reader.read_bytes(reader.read_int()) - - -class StructParameter: - def __init__(self, reader): - self.m_NameIndex = reader.read_int() - self.m_Index = reader.read_int() - self.m_ArraySize = reader.read_int() - self.m_StructSize = reader.read_int() - - numVectorParams = reader.read_int() - self.m_VectorParams = [VectorParameter(reader) for _ in range(numVectorParams)] - - numMatrixParams = reader.read_int() - self.m_MatrixParams = [MatrixParameter(reader) for _ in range(numMatrixParams)] - - -class SamplerParameter: - def __init__(self, reader): - self.sampler = reader.read_u_int() - self.bindPoint = reader.read_int() - - -class SerializedTextureProperty: - def __init__(self, reader): - self.m_DefaultName = reader.read_aligned_string() - self.m_TexDim = TextureDimension(reader.read_int()) - - -class SerializedProperty: - def __init__(self, reader): - self.m_Name = reader.read_aligned_string() - self.m_Description = reader.read_aligned_string() - self.m_Attributes = reader.read_string_array() - self.m_Type = SerializedPropertyType(reader.read_int()) - self.m_Flags = reader.read_u_int() - self.m_DefValue = reader.read_float_array(4) - self.m_DefTexture = SerializedTextureProperty(reader) - - -class SerializedProperties: - def __init__(self, reader): - numProps = reader.read_int() - self.m_Props = [SerializedProperty(reader) for _ in range(numProps)] - - -class SerializedShaderFloatValue: - def __init__(self, reader): - self.val = reader.read_float() - self.name = reader.read_aligned_string() - - -class SerializedShaderRTBlendState: - def __init__(self, reader): - self.srcBlend = SerializedShaderFloatValue(reader) - self.destBlend = SerializedShaderFloatValue(reader) - self.srcBlendAlpha = SerializedShaderFloatValue(reader) - self.destBlendAlpha = SerializedShaderFloatValue(reader) - self.blendOp = SerializedShaderFloatValue(reader) - self.blendOpAlpha = SerializedShaderFloatValue(reader) - self.colMask = SerializedShaderFloatValue(reader) - - -class SerializedStencilOp: - def __init__(self, reader): - self.pass_ = SerializedShaderFloatValue(reader) - self.fail = SerializedShaderFloatValue(reader) - self.zFail = SerializedShaderFloatValue(reader) - self.comp = SerializedShaderFloatValue(reader) - - -class SerializedShaderVectorValue: - def __init__(self, reader): - self.x = SerializedShaderFloatValue(reader) - self.y = SerializedShaderFloatValue(reader) - self.z = SerializedShaderFloatValue(reader) - self.w = SerializedShaderFloatValue(reader) - self.name = reader.read_aligned_string() - - -class FogMode(IntEnum): - kFogUnknown = (-1,) - kFogDisabled = (0,) - kFogLinear = (1,) - kFogExp = (2,) - kFogExp2 = (3,) - - -class SerializedShaderState: - def __init__(self, reader): - version = reader.version - - self.m_Name = reader.read_aligned_string() - self.rtBlend = [SerializedShaderRTBlendState(reader) for _ in range(8)] - self.rtSeparateBlend = reader.read_boolean() - reader.align_stream() - if version >= (2017, 2): # 2017.2 and up - self.zClip = SerializedShaderFloatValue(reader) - self.zTest = SerializedShaderFloatValue(reader) - self.zWrite = SerializedShaderFloatValue(reader) - self.culling = SerializedShaderFloatValue(reader) - if version >= (2020,): # 2020.1 and up - self.conservative = SerializedShaderFloatValue(reader) - self.offsetFactor = SerializedShaderFloatValue(reader) - self.offsetUnits = SerializedShaderFloatValue(reader) - self.alphaToMask = SerializedShaderFloatValue(reader) - self.stencilOp = SerializedStencilOp(reader) - self.stencilOpFront = SerializedStencilOp(reader) - self.stencilOpBack = SerializedStencilOp(reader) - self.stencilReadMask = SerializedShaderFloatValue(reader) - self.stencilWriteMask = SerializedShaderFloatValue(reader) - self.stencilRef = SerializedShaderFloatValue(reader) - self.fogStart = SerializedShaderFloatValue(reader) - self.fogEnd = SerializedShaderFloatValue(reader) - self.fogDensity = SerializedShaderFloatValue(reader) - self.fogColor = SerializedShaderVectorValue(reader) - self.fogMode = FogMode(reader.read_int()) - self.gpuProgramID = reader.read_int() - self.m_Tags = SerializedTagMap(reader) - self.m_LOD = reader.read_int() - self.lighting = reader.read_boolean() - reader.align_stream() - - -class ShaderBindChannel: - def __init__(self, reader): - self.source = reader.read_byte() - self.target = reader.read_byte() - - -class ParserBindChannels: - def __init__(self, reader): - numChannels = reader.read_int() - self.m_Channels = [ShaderBindChannel(reader) for _ in range(numChannels)] - reader.align_stream() - self.m_SourceMap = reader.read_u_int() - - -class VectorParameter: - def __init__(self, reader): - self.m_NameIndex = reader.read_int() - self.m_Index = reader.read_int() - self.m_ArraySize = reader.read_int() - self.m_Type = reader.read_byte() - self.m_Dim = reader.read_byte() - reader.align_stream() - - -class MatrixParameter: - def __init__(self, reader): - self.m_NameIndex = reader.read_int() - self.m_Index = reader.read_int() - self.m_ArraySize = reader.read_int() - self.m_Type = reader.read_byte() - self.m_RowCount = reader.read_byte() - reader.align_stream() - - -class TextureParameter: - def __init__(self, reader): - version = reader.version - self.m_NameIndex = reader.read_int() - self.m_Index = reader.read_int() - self.m_SamplerIndex = reader.read_int() - if version >= (2017, 3): # 2017.3 and up - self.m_MultiSampled = reader.read_boolean() - self.m_Dim = reader.read_byte() - reader.align_stream() - - -class BufferBinding: - def __init__(self, reader): - self.m_NameIndex = reader.read_int() - self.m_Index = reader.read_int() - if reader.version >= (2020,): # 2020.1 and up - m_ArraySize = reader.read_int() - - -class ConstantBuffer: - def __init__(self, reader): - version = reader.version - - self.m_NameIndex = reader.read_int() - - numMatrixParams = reader.read_int() - self.m_MatrixParams = [MatrixParameter(reader) for _ in range(numMatrixParams)] - - numVectorParams = reader.read_int() - self.m_VectorParams = [VectorParameter(reader) for _ in range(numVectorParams)] - if version >= (2017, 3): # 2017.3 and up - numStructParams = reader.read_int() - self.m_StructParams = [ - StructParameter(reader) for _ in range(numStructParams) - ] - self.m_Size = reader.read_int() - - if version >= (2021, 1, 4) or (version[0] == 2020 and version >= (2020, 3, 2)): - self.m_IsPartialCB = reader.read_boolean() - reader.align_stream() - - -class UAVParameter: - def __init__(self, reader): - self.m_NameIndex = reader.read_int() - self.m_Index = reader.read_int() - self.m_OriginalIndex = reader.read_int() - - -class SerializedProgramParameters: - def __init__(self, reader): - numVectorParams = reader.read_int() - self.m_VectorParams = [VectorParameter(reader) for _ in range(numVectorParams)] - - numMatrixParams = reader.read_int() - self.m_MatrixParams = [MatrixParameter(reader) for _ in range(numMatrixParams)] - - numTextureParams = reader.read_int() - self.m_TextureParams = [ - TextureParameter(reader) for _ in range(numTextureParams) - ] - - numBufferParams = reader.read_int() - self.m_BufferParams = [BufferBinding(reader) for _ in range(numBufferParams)] - - numConstantBuffers = reader.read_int() - self.m_ConstantBuffers = [ - ConstantBuffer(reader) for _ in range(numConstantBuffers) - ] - - numConstantBufferBindings = reader.read_int() - self.m_ConstantBufferBindings = [ - BufferBinding(reader) for _ in range(numConstantBufferBindings) - ] - - numUAVParams = reader.read_int() - self.m_UAVParams = [UAVParameter(reader) for _ in range(numUAVParams)] - - numSamplers = reader.read_int() - self.m_Samplers = [SamplerParameter(reader) for _ in range(numSamplers)] - - -class SerializedSubProgram: - def __init__(self, reader): - version = reader.version - - self.m_BlobIndex = reader.read_u_int() - self.m_Channels = ParserBindChannels(reader) - - if (2019,) <= version < (2021, 2): # 2019 ~2021.1 - self.m_GlobalKeywordIndices = reader.read_u_short_array() - reader.align_stream() - self.m_LocalKeywordIndices = reader.read_u_short_array() - reader.align_stream() - else: - self.m_KeywordIndices = reader.read_u_short_array() - if version >= (2017,): # 2017 and up - reader.align_stream() - - self.m_ShaderHardwareTier = reader.read_byte() - self.m_GpuProgramType = ShaderGpuProgramType(reader.read_byte()) - reader.align_stream() - - if version >= (2021, 1, 4) or (version[0] == 2020 and version >= (2020, 3, 2)): - self.m_Parameters = SerializedProgramParameters(reader) - else: - numVectorParams = reader.read_int() - self.m_VectorParams = [ - VectorParameter(reader) for _ in range(numVectorParams) - ] - - numMatrixParams = reader.read_int() - self.m_MatrixParams = [ - MatrixParameter(reader) for _ in range(numMatrixParams) - ] - - numTextureParams = reader.read_int() - self.m_TextureParams = [ - TextureParameter(reader) for _ in range(numTextureParams) - ] - - numBufferParams = reader.read_int() - self.m_BufferParams = [ - BufferBinding(reader) for _ in range(numBufferParams) - ] - - numConstantBuffers = reader.read_int() - self.m_ConstantBuffers = [ - ConstantBuffer(reader) for _ in range(numConstantBuffers) - ] - - numConstantBufferBindings = reader.read_int() - self.m_ConstantBufferBindings = [ - BufferBinding(reader) for _ in range(numConstantBufferBindings) - ] - - numUAVParams = reader.read_int() - self.m_UAVParams = [UAVParameter(reader) for _ in range(numUAVParams)] - - if version >= (2017,): # 2017 and up - numSamplers = reader.read_int() - self.m_Samples = [SamplerParameter(reader) for _ in range(numSamplers)] - - if version >= (2017, 2): # 2017.2 and up - if version >= (2021,): - self.m_ShaderRequirements = reader.read_long() - else: - self.m_ShaderRequirements = reader.read_int() - - -class SerializedProgram: - def __init__(self, reader): - version = reader.version - - numSubPrograms = reader.read_int() - self.m_SubPrograms = [ - SerializedSubProgram(reader) for _ in range(numSubPrograms) - ] - - if version >= (2021, 1, 4) or (version[0] == 2020 and version >= (2020, 3, 2)): - self.m_CommonParameters = SerializedProgramParameters(reader) - - -class SerializedPass: - def __init__(self, reader): - version = reader.version - - if version >= (2020, 2): # 2020.2 and up - numEditorDataHash = reader.read_int() - m_EditorDataHash = [ - reader.read_bytes(16) # Hash128(reader) - for _ in range(numEditorDataHash) - ] - reader.align_stream() - m_Platforms = reader.read_byte_array() - reader.align_stream() - if version < (2021, 2): - m_LocalKeywordMask = reader.read_u_short_array() - reader.align_stream() - m_GlobalKeywordMask = reader.read_u_short_array() - reader.align_stream() - - numIndices = reader.read_int() - self.m_NameIndices = {} - for _ in range(numIndices): - key = reader.read_aligned_string() - self.m_NameIndices[key] = reader.read_int() - self.m_Type = PassType(reader.read_int()) - self.m_State = SerializedShaderState(reader) - self.m_ProgramMask = reader.read_u_int() - self.progVertex = SerializedProgram(reader) - self.progFragment = SerializedProgram(reader) - self.progGeometry = SerializedProgram(reader) - self.progHull = SerializedProgram(reader) - self.progDomain = SerializedProgram(reader) - if version >= (2019, 3): # 2019.3 and up - self.progRayTracing = SerializedProgram(reader) - self.m_HasInstancingVariant = reader.read_boolean() - if version >= (2018,): # 2018 and up - self.m_HasProceduralInstancingVariant = reader.read_boolean() - reader.align_stream() - self.m_UseName = reader.read_aligned_string() - self.m_Name = reader.read_aligned_string() - self.m_TextureName = reader.read_aligned_string() - self.m_Tags = SerializedTagMap(reader) - if version >= (2021, 2): - m_SerializedKeywordStateMask = reader.read_u_short_array() - reader.align_stream() - - -class SerializedTagMap: - def __init__(self, reader): - numTags = reader.read_int() - self.tags = {} - for _ in range(numTags): - key = reader.read_aligned_string() - self.tags[key] = reader.read_aligned_string() - - -class SerializedSubShader: - def __init__(self, reader): - numPasses = reader.read_int() - self.m_Passes = [SerializedPass(reader) for _ in range(numPasses)] - self.m_Tags = SerializedTagMap(reader) - self.m_LOD = reader.read_int() - - -class SerializedShaderDependency: - def __init__(self, reader): - self.from_ = reader.read_aligned_string() - self.to = reader.read_aligned_string() - - -class SerializedCustomEditorForRenderPipeline: - def __init__(self, reader): - self.customEditorName = reader.read_aligned_string() - self.renderPipelineType = reader.read_aligned_string() - - -class SerializedShader: - def __init__(self, reader): - version = reader.version - - self.m_PropInfo = SerializedProperties(reader) - numSubShaders = reader.read_int() - self.m_SubShaders = [SerializedSubShader(reader) for _ in range(numSubShaders)] - - if version >= (2021, 2): - self.m_KeywordNames = reader.read_string_array() - self.m_KeywordFlags = reader.read_bytes(reader.read_int()) - reader.align_stream() - - self.m_Name = reader.read_aligned_string() - self.m_CustomEditorName = reader.read_aligned_string() - self.m_FallbackName = reader.read_aligned_string() - numDependencies = reader.read_int() - self.m_Dependencies = [ - SerializedShaderDependency(reader) for _ in range(numDependencies) - ] - - if version >= (2021,): - m_CustomEditorForRenderPipelinesSize = reader.read_int() - self.m_CustomEditorForRenderPipelines = [ - SerializedCustomEditorForRenderPipeline(reader) - for _ in range(m_CustomEditorForRenderPipelinesSize) - ] - - self.m_DisableNoSubshadersMessage = reader.read_boolean() - reader.align_stream() diff --git a/UnityPy/classes/SkinnedMeshRenderer.py b/UnityPy/classes/SkinnedMeshRenderer.py deleted file mode 100644 index 0594213e..00000000 --- a/UnityPy/classes/SkinnedMeshRenderer.py +++ /dev/null @@ -1,23 +0,0 @@ -from .PPtr import PPtr -from .Renderer import Renderer - - -class SkinnedMeshRenderer(Renderer): - def __init__(self, reader): - super().__init__(reader=reader) - version = self.version - self.m_Quality = reader.read_int() - self.m_UpdateWhenOffscreen = reader.read_boolean() - self.m_SkinNormals = reader.read_boolean() # 3.1.0 and below - reader.align_stream() - - if version < (2, 6): # 2.6 down - self.m_DisableAnimationWhenOffscreen = PPtr(reader) # Animation - - self.m_Mesh = PPtr(reader) # Mesh - - m_BonesSize = reader.read_int() - self.m_Bones = [PPtr(reader) for _ in range(m_BonesSize)] - - if version >= (4, 3): # 4.3 and up - self.m_BlendShapeWeights = reader.read_float_array() diff --git a/UnityPy/classes/Sprite.py b/UnityPy/classes/Sprite.py deleted file mode 100644 index 4eb17a60..00000000 --- a/UnityPy/classes/Sprite.py +++ /dev/null @@ -1,265 +0,0 @@ -from enum import IntEnum - -from .Mesh import BoneWeights4, SubMesh, VertexData -from .NamedObject import NamedObject -from .PPtr import PPtr -from ..export import SpriteHelper -from ..enums import SpriteMeshType, SpritePackingMode, SpritePackingRotation -from ..streams import EndianBinaryWriter, EndianBinaryReader - - -class Sprite(NamedObject): - @property - def image(self): - return SpriteHelper.get_image_from_sprite(self) - - def __init__(self, reader): - super().__init__(reader=reader) - version = self.version - - self.m_Rect = reader.read_rectangle_f() - self.m_Offset = reader.read_vector2() - if version >= (4, 5): # 4.5 and up - self.m_Border = reader.read_vector4() - - self.m_PixelsToUnits = reader.read_float() - if version >= (5, 4, 2) or ( - version >= (5, 4, 1, 3) and self.build_type.IsPatch - ): # 5.4.1p3 and up - self.m_Pivot = reader.read_vector2() - - self.m_Extrude = reader.read_u_int() - if version >= (5, 3): # 5.3 and up - self.m_IsPolygon = reader.read_boolean() - reader.align_stream() - - if version >= (2017,): # 2017 and up - first = reader.read_bytes(16) # GUID - second = reader.read_long() - self.m_RenderDataKey = (first, second) - self.m_AtlasTags = reader.read_string_array() - self.m_SpriteAtlas = PPtr(reader) # SpriteAtlas - - self.m_RD = SpriteRenderData(reader) - - if version >= (2017,): # 2017 and up - m_PhysicsShapeSize = reader.read_int() - self.m_PhysicsShape = [ - reader.read_vector2_array() for _ in range(m_PhysicsShapeSize) - ] - - if version >= (2018,): # 2018 and up - m_BonesSize = reader.read_int() - self.m_Bones = [SpriteBone(self.reader) for _ in range(m_BonesSize)] - - if version >= (2023, 1, 0, 14): - self.m_ScriptableObjects = [PPtr(reader) for _ in range(reader.read_int())] - - def save(self, writer: EndianBinaryWriter = None): - if writer is None: - writer = EndianBinaryWriter(endian=self.reader.endian) - version = self.version - - super().save(writer) - writer.write_rectangle_f(self.m_Rect) - writer.write_vector2(self.m_Offset) - if version >= (4, 5): # 4.5 and up - writer.write_vector4(self.m_Border) - - writer.write_float(self.m_PixelsToUnits) - if version >= (5, 4, 2) or ( - version >= (5, 4, 1, 3) and self.build_type.IsPatch - ): # 5.4.1p3 and up - writer.write_vector2(self.m_Pivot) - - writer.write_u_int(self.m_Extrude) - if version >= (5, 3): # 5.3 and up - writer.write_boolean(self.m_IsPolygon) - writer.align_stream() - - if version >= (2017,): # 2017 and up - writer.write_bytes(self.m_RenderDataKey[0]) # GUID - writer.write_long(self.m_RenderDataKey[1]) - writer.write_string_array(self.m_AtlasTags) - self.m_SpriteAtlas.save(writer) # SpriteAtlas - - self.m_RD.save(writer, version) - - if version >= (2017,): # 2017 and up - writer.write_int(len(self.m_PhysicsShape)) - for phys in self.m_PhysicsShape: - writer.write_vector2_array(phys) - - if version >= (2018,): # 2018 and up - writer.write_int(len(self.m_Bones)) - for bone in self.m_Bones: - bone.save(writer, version) - - if version >= (2023, 1, 0, 14): - writer.write_int(len(self.m_ScriptableObjects)) - for obj in self.m_ScriptableObjects: - obj.save(writer) - - self.set_raw_data(writer.bytes) - - -class SecondarySpriteTexture: - def __init__(self, reader): - self.texture = PPtr(reader) # Texture2D - self.name = reader.read_aligned_string() - - def save(self, writer): - self.texture.save(writer) - writer.write_aligned_string(self.name) - - -class SpriteSettings: - def __init__(self, reader): - self.settingsRaw = reader.read_u_int() - self.packed = self.settingsRaw & 1 # 1 - self.packingMode = SpritePackingMode((self.settingsRaw >> 1) & 1) # 1 - self.packingRotation = SpritePackingRotation((self.settingsRaw >> 2) & 0xF) # 4 - self.meshType = SpriteMeshType((self.settingsRaw >> 6) & 1) # 1 - # rest of the bits are reserved - - def save(self, writer): - writer.write_u_int(self.settingsRaw) - - -class SpriteVertex: - def __init__(self, reader): - version = reader.version - - self.pos = reader.read_vector3() - if version[:2] <= (4, 3): # 4.3 and down - self.uv = reader.read_vector2() - - def save(self, writer, version): - writer.write_vector3(self.pos) - if version[:2] <= (4, 3): # 4.3 and down - writer.write__vector2(self.uv) - - -class SpriteRenderData: - def __init__(self, reader): - version = reader.version - - self.texture = PPtr(reader) # Texture2D - if version >= (5, 2): # 5.2 and up - self.alphaTexture = PPtr(reader) # Texture2D - - if version >= (2019,): # 2019 and up - secondaryTexturesSize = reader.read_int() - self.secondaryTextures = [ - SecondarySpriteTexture(reader) for _ in range(secondaryTexturesSize) - ] - - if version >= (5, 6): # 5.6 and up - SubMeshesSize = reader.read_int() - self.m_SubMeshes = [SubMesh(reader) for _ in range(SubMeshesSize)] - IndexBufferSize = reader.read_int() - self.m_IndexBuffer = reader.read_bytes(IndexBufferSize) - reader.align_stream() - self.m_VertexData = VertexData(reader) - else: - verticesSize = reader.read_int() - self.vertices = [SpriteVertex(reader) for _ in range(verticesSize)] - self.indices = reader.read_u_short_array() - reader.align_stream() - - if version >= (2018,): # 2018 and up - self.m_Bindpose = reader.read_matrix_array() - if version < (2018, 2): # 2018.2 down - self.m_SourceSkinSize = reader.read_int() - self.m_SourceSkin = [BoneWeights4(reader)] - - self.textureRect = reader.read_rectangle_f() - self.textureRectOffset = reader.read_vector2() - if version >= (5, 6): # 5.6 and up - self.atlasRectOffset = reader.read_vector2() - - self.settingsRaw = SpriteSettings(reader) - if version >= (4, 5): # 4.5 and up - self.uvTransform = reader.read_vector4() - - if version >= (2017,): # 2017 and up - self.downscaleMultiplier = reader.read_float() - - def save(self, writer, version): - self.texture.save(writer) # Texture2D - if version >= (5, 2): # 5.2 and up - self.alphaTexture.save(writer) # Texture2D - - if version >= (2019,): # 2019 and up - writer.write_int(len(self.secondaryTextures)) - for tex in self.secondaryTextures: - tex.save(writer) - - if version >= (5, 6): # 5.6 and up - writer.write_int(len(self.m_SubMeshes)) - for mesh in self.m_SubMeshes: - mesh.save(writer, version) - writer.write_int(len(self.m_IndexBuffer)) - writer.write_bytes(self.m_IndexBuffer) - writer.align_stream() - self.m_VertexData.save(writer, version) - else: - writer.write_int(len(self.vertices)) - for vertex in self.vertices: - vertex.save(writer, version) - writer.write_u_short_array(self.indices) - writer.align_stream() - - if version >= (2018,): # 2018 and up - writer.write_matrix_array(self.m_Bindpose) - if version < (2018, 2): # 2018.2 down - writer.write_int(self.m_SourceSkinSize) - self.m_SourceSkin[0].save(writer) - - writer.write_rectangle_f(self.textureRect) - writer.write_vector2(self.textureRectOffset) - if version >= (5, 6): # 5.6 and up - writer.write_vector2(self.atlasRectOffset) - - self.settingsRaw.save(writer) - if version >= (4, 5): # 4.5 and up - writer.write_vector4(self.uvTransform) - - if version >= (2017,): # 2017 and up - writer.write_float(self.downscaleMultiplier) - - -class SpriteBone: - name: str - position: tuple - rotation: tuple - length: float - parentId: int - - def __init__(self, reader: EndianBinaryReader) -> None: - self.name = reader.read_aligned_string() - - if reader.version >= (2021,): - self.guid = reader.read_aligned_string() - - self.position = reader.read_vector3() - self.rotation = reader.read_quaternion() - self.length = reader.read_float() - self.parentId = reader.read_int() - - if reader.version >= (2021,): - self.color = reader.read_color_uint() - - def save(self, writer: EndianBinaryWriter, version): - writer.write_aligned_string(self.name) - - if version >= (2021,): - writer.write_aligned_string(self.guid) - - writer.write_vector3(self.position) - writer.write_quaternion(self.rotation) - writer.write_float(self.length) - writer.write_int(self.parentId) - - if version >= (2021,): - writer.write_color_uint(self.color) diff --git a/UnityPy/classes/SpriteAtlas.py b/UnityPy/classes/SpriteAtlas.py deleted file mode 100644 index 8bf65c45..00000000 --- a/UnityPy/classes/SpriteAtlas.py +++ /dev/null @@ -1,40 +0,0 @@ -from .NamedObject import NamedObject -from .PPtr import PPtr -from .Sprite import SpriteSettings, SecondarySpriteTexture - - -class SpriteAtlas(NamedObject): - def __init__(self, reader): - super().__init__(reader=reader) - packed_sprites_size = reader.read_int() - self.m_PackedSprites = [PPtr(reader) for _ in range(packed_sprites_size)] - - self.m_PackedSpriteNamesToIndex = reader.read_string_array() - m_render_data_map_size = reader.read_int() - self.m_RenderDataMap = {} - for _ in range(m_render_data_map_size): - first = reader.read_bytes(16) # GUID - second = reader.read_long() - value = SpriteAtlasData(reader) - self.m_RenderDataMap[(first, second)] = value - - -class SpriteAtlasData: - def __init__(self, reader): - self.version = version = reader.version - self.texture = PPtr(reader) # Texture2D - self.alphaTexture = PPtr(reader) # Texture2D - self.textureRect = reader.read_rectangle_f() - self.textureRectOffset = reader.read_vector2() - if version >= (2017, 2): # 2017.2 and up - self.atlasRectOffset = reader.read_vector2() - self.uvTransform = reader.read_vector4() - self.downscaleMultiplier = reader.read_float() - self.settingsRaw = SpriteSettings(reader) - - if version >= (2020, 2): - secondaryTexturesSize = reader.read_int() - self.secondaryTextures = [ - SecondarySpriteTexture(reader) for _ in range(secondaryTexturesSize) - ] - reader.align_stream() diff --git a/UnityPy/classes/TextAsset.py b/UnityPy/classes/TextAsset.py deleted file mode 100644 index 8c1a0165..00000000 --- a/UnityPy/classes/TextAsset.py +++ /dev/null @@ -1,35 +0,0 @@ -from .NamedObject import NamedObject -from ..streams import EndianBinaryWriter - - -class TextAsset(NamedObject): - def __init__(self, reader): - super().__init__(reader=reader) - self.m_Script = reader.read_bytes(reader.read_int()) - - @property - def script(self): - # required for backward compatibility - return self.m_Script - - @script.setter - def script(self, value): - self.m_Script = value - - @property - def text(self): - return bytes(self.script).decode("utf8") - - @text.setter - def text(self, val): - self.script = val.encode("utf8") - - def save(self, writer: EndianBinaryWriter = None): - if writer is None: - writer = EndianBinaryWriter(endian=self.reader.endian) - super().save(writer) - writer.write_int(len(self.m_Script)) - writer.write_bytes(self.m_Script) - writer.align_stream() - - self.set_raw_data(writer.bytes) diff --git a/UnityPy/classes/Texture.py b/UnityPy/classes/Texture.py deleted file mode 100644 index 2b6bfe03..00000000 --- a/UnityPy/classes/Texture.py +++ /dev/null @@ -1,22 +0,0 @@ -from .NamedObject import NamedObject -from ..streams import EndianBinaryWriter - - -class Texture(NamedObject): - def __init__(self, reader): - super().__init__(reader=reader) - if (2017, 3) <= self.version < (2023, 2, 0, 18): # 2017.3 - 2023.2.0.18 - self.m_ForcedFallbackFormat = reader.read_int() - self.m_DownscaleFallback = reader.read_boolean() - if self.version >= (2020, 2): # 2020.2 and up - self.m_IsAlphaChannelOptional = reader.read_boolean() - reader.align_stream() - - def save(self, writer: EndianBinaryWriter): - super().save(writer) - if (2017, 3) <= self.version < (2023, 2, 0, 18): # 2017.3 - 2023.2.0.18 - writer.write_int(self.m_ForcedFallbackFormat) - writer.write_boolean(self.m_DownscaleFallback) - if self.version >= (2020, 2): # 2020.2 and up - writer.write_boolean(self.m_IsAlphaChannelOptional) - writer.align_stream() diff --git a/UnityPy/classes/Texture2D.py b/UnityPy/classes/Texture2D.py deleted file mode 100644 index 47a09c69..00000000 --- a/UnityPy/classes/Texture2D.py +++ /dev/null @@ -1,308 +0,0 @@ -from .Texture import Texture -from ..enums import TextureFormat -from ..export import Texture2DConverter -from ..helpers.ResourceReader import get_resource_data -from ..streams import EndianBinaryWriter -from PIL import Image -from io import BufferedIOBase, RawIOBase, IOBase - - -class Texture2D(Texture): - @property - def image(self): - return Texture2DConverter.get_image_from_texture2d(self) - - @image.setter - def image(self, img): - # img is PIL.Image / image path / opened file - # overwrite original image data with the RGB(A) image data and sets the correct new format - if img is None: - raise Exception("No image provided") - - if ( - isinstance(img, str) - or isinstance(img, BufferedIOBase) - or isinstance(img, RawIOBase) - or isinstance(img, IOBase) - ): - img = Image.open(img) - - img_data, tex_format = Texture2DConverter.image_to_texture2d( - img, self.m_TextureFormat - ) - - # disable mipmaps as we don't store them ourselves by default - if self.version[:2] < (5, 2): # 5.2 down - self.m_MipMap = False - else: - self.m_MipCount = 1 - - self.image_data = img_data - self.m_MipCount = 1 - # width * height * channel count - self.m_CompleteImageSize = len( - img_data - ) # img.width * img.height * len(img.getbands()) - self.m_TextureFormat = tex_format - - @property - def image_data(self): - if not self._image_data and self.m_StreamData is not None: - self._image_data = get_resource_data( - self.m_StreamData.path, - self.assets_file, - self.m_StreamData.offset, - self.m_StreamData.size, - ) - return self._image_data - - def reset_streamdata(self): - if not self.m_StreamData: - return - self.m_StreamData.offset = 0 - self.m_StreamData.size = 0 - self.m_StreamData.path = "" - - @image_data.setter - def image_data(self, data: bytes): - self._image_data = data - # ignore writing to cab for now until it's more stable - # if self.version >= (5, 3) and self.m_StreamData.path: - # cab = self.assets_file.get_writeable_cab() - # if cab: - # self.m_StreamData.offset = cab.Position - # cab.write(data) - # self.m_StreamData.size = len(data) - # self.m_StreamData.path = cab.path - # else: - # self.reset_streamdata() - self.reset_streamdata() - - def set_image( - self, - img, - target_format: TextureFormat = None, - in_cab: bool = False, - mipmap_count: int = 1, - ): - if img is None: - raise Exception("No image provided") - if not target_format: - target_format = self.m_TextureFormat - - img_data, tex_format = Texture2DConverter.image_to_texture2d(img, target_format) - if mipmap_count > 1: - width = self.m_Width - height = self.m_Height - re_img = img - for i in range(mipmap_count - 1): - width //= 2 - height //= 2 - if width < 4 or height < 4: - mipmap_count = i + 1 - break - re_img = re_img.resize((width, height), Image.BICUBIC) - img_data += Texture2DConverter.image_to_texture2d( - re_img, target_format - )[0] - - if self.version[:2] < (5, 2): # 5.2 down - self.m_MipMap = mipmap_count > 1 - else: - self.m_MipCount = mipmap_count - - if in_cab: - self.image_data = img_data - else: - self._image_data = img_data - self.reset_streamdata() - - # width * height * channel count - self.m_CompleteImageSize = len( - img_data - ) # img.width * img.height * len(img.getbands()) - self.m_TextureFormat = tex_format - - def __init__(self, reader): - super().__init__(reader=reader) - version = self.version - - self.m_Width = reader.read_int() - self.m_Height = reader.read_int() - self.m_CompleteImageSize = reader.read_int() - if version >= (2020, 1): # 2020.1 and up - self.m_MipsStripped = reader.read_int() - self.m_TextureFormat = TextureFormat(reader.read_int()) - if version < (5, 2): # 3.4.0 - 5.1.5f1 - self.m_MipMap = reader.read_boolean() - else: # 5.2.0f2 and up - self.m_MipCount = reader.read_int() - - if version >= (2, 6): # 2.6 and up - self.m_IsReadable = reader.read_boolean() # 2.6 and up - if version >= (2020,): # 2020.1 and up - self.m_IsPreProcessed = reader.read_boolean() - if (2019, 3) <= version < (2022, 2, 0, 3) or (2023, 1, 0, 1) <= version < ( - 2023, - 1, - 0, - 8, - ): # 2019.3.0f6 - 2022.2.0a18 - self.m_IgnoreMasterTextureLimit = reader.read_boolean() - if (2022, 2, 0, 3) <= version < (2023, 1, 0, 1) or version >= ( - 2023, - 1, - 0, - 8, - ): # 2022.2.0f1 and up - self.m_IgnoreMipmapLimit = reader.read_boolean() - reader.align_stream() - self.m_MipmapLimitGroupName = reader.read_aligned_string() - - if (3,) <= version[:2] <= (5, 4): # 3.0 - 5.4 - self.m_ReadAllowed = reader.read_boolean() - if version >= (2018, 2): # 2018.2 and up - self.m_StreamingMipmaps = reader.read_boolean() - - reader.align_stream() - if version >= (2018, 2): # 2018.2 and up - self.m_StreamingMipmapsPriority = reader.read_int() - self.m_ImageCount = reader.read_int() - self.m_TextureDimension = reader.read_int() - self.m_TextureSettings = GLTextureSettings(reader, version) - if version >= (3,): # 3.0 and up - self.m_LightmapFormat = reader.read_int() - if version >= (3, 5): # 3.5 and up - self.m_ColorSpace = reader.read_int() - if version >= (2020, 2): # 2020.2 and up - self.m_PlatformBlob = reader.read_byte_array() - reader.align_stream() - - image_data_size = reader.read_int() - self._image_data = b"" - - if image_data_size != 0: - self._image_data = reader.read_bytes(image_data_size) - - self.m_StreamData = None - if version >= (5, 3): # 5.3 and up - # always read the StreamingInfo for resaving - self.m_StreamData = StreamingInfo(reader, version) - # don't read the data directly, - # as we don't want the parser break if the file is missing - - def save(self, writer: EndianBinaryWriter = None): - if writer is None: - writer = EndianBinaryWriter(endian=self.reader.endian) - version = self.version - - super().save(writer) - writer.write_int(self.m_Width) - writer.write_int(self.m_Height) - writer.write_int(self.m_CompleteImageSize) - if version >= (2020,): # 2020.1 and up - writer.write_int(self.m_MipsStripped) - writer.write_int(self.m_TextureFormat.value) - if version < (5, 2): # 5.2 down - writer.write_boolean(self.m_MipMap) - else: - writer.write_int(self.m_MipCount) - - if version >= (2, 6): # 2.6 and up - writer.write_boolean(self.m_IsReadable) # 2.6 and up - if version >= (2020,): # 2020.1 and up - writer.write_boolean(self.m_IsPreProcessed) - if (2019, 3) <= version < (2022, 2, 0, 3) or (2023, 1, 0, 1) <= version < ( - 2023, - 1, - 0, - 8, - ): # 2019.3.0f6 - 2022.2.0a18 - writer.write_boolean(self.m_IgnoreMasterTextureLimit) - if (2022, 2, 0, 3) <= version < (2023, 1, 0, 1) or version >= ( - 2023, - 1, - 0, - 8, - ): # 2022.2.0f1 and up - writer.write_boolean(self.m_IgnoreMipmapLimit) - writer.align_stream() - writer.write_aligned_string(self.m_MipmapLimitGroupName) - - if (3,) <= version[:2] <= (5, 4): # 3.0 - 5.4 - writer.write_boolean(self.m_ReadAllowed) # 3.0 - 5.4 - if version >= (2018, 2): # 2018.2 and up - writer.write_boolean(self.m_StreamingMipmaps) - - writer.align_stream() - if version >= (2018, 2): # 2018.2 and up - writer.write_int(self.m_StreamingMipmapsPriority) - writer.write_int(self.m_ImageCount) - writer.write_int(self.m_TextureDimension) - self.m_TextureSettings.save(writer, version) - if version >= (3,): # 3.0 and up - writer.write_int(self.m_LightmapFormat) - if version >= (3, 5): # 3.5 and up - writer.write_int(self.m_ColorSpace) - if version >= (2020, 2): # 2020.2 and up - writer.write_byte_array(self.m_PlatformBlob) - writer.align_stream() - - if version[:2] < (5, 3): - # version without m_StreamData - writer.write_int(len(self.image_data)) - writer.write_bytes(self.image_data) - else: - # decide if m_StreamData is used - if self.m_StreamData.path: - # used -> don't save the image_data - writer.write_int(0) - else: - writer.write_int(len(self.image_data)) - writer.write_bytes(self.image_data) - - self.m_StreamData.save(writer, version) - - self.set_raw_data(writer.bytes) - - -class StreamingInfo: - offset: int - size: int - path: str - - def __init__(self, reader, version): - if version >= (2020,): # 2020.1 and up - self.offset = reader.read_u_long() - else: - self.offset = reader.read_u_int() - self.size = reader.read_u_int() - self.path = reader.read_aligned_string() - - def save(self, writer, version): - if version >= (2020,): # 2020.1 and up - writer.write_u_long(self.offset) - else: - writer.write_u_int(self.offset) - writer.write_int(self.size) - writer.write_aligned_string(self.path) - - -class GLTextureSettings: - def __init__(self, reader, version): - self.m_FilterMode = reader.read_int() - self.m_Aniso = reader.read_int() - self.m_MipBias = reader.read_float() - self.m_WrapMode = reader.read_int() # m_WrapU - if version >= (2017,): # 2017.x and up - self.m_WrapV = reader.read_int() - self.m_WrapW = reader.read_int() - - def save(self, writer, version): - writer.write_int(self.m_FilterMode) - writer.write_int(self.m_Aniso) - writer.write_float(self.m_MipBias) - writer.write_int(self.m_WrapMode) # m_WrapU - if version >= (2017,): # 2017.x and up - writer.write_int(self.m_WrapV) - writer.write_int(self.m_WrapW) diff --git a/UnityPy/classes/Texture2DArray.py b/UnityPy/classes/Texture2DArray.py deleted file mode 100644 index 5ba6f0b2..00000000 --- a/UnityPy/classes/Texture2DArray.py +++ /dev/null @@ -1,84 +0,0 @@ -from typing import Optional, List - -from .Texture import Texture -from .Texture2D import StreamingInfo -from ..enums.GraphicsFormat import GraphicsFormat, GRAPHICS_TO_TEXTURE_MAP -from ..export import Texture2DConverter -from ..helpers.ResourceReader import get_resource_data -from PIL import Image - - -class GLTextureSettings: - m_Aniso: int - m_FilterMode: int - m_MipBias: float - m_WrapMode: Optional[int] = None - m_WrapU: Optional[int] = None - m_WrapV: Optional[int] = None - m_WrapW: Optional[int] = None - - def __init__(self, reader): - self.__dict__.update(**self.read_typetree(wrap=True).__dict__) - - -class Texture2DArray(Texture): - image_data: bytes - m_ColorSpace: int - m_DataSize: int - m_Depth: int - m_Format: GraphicsFormat - m_Height: int - m_IsReadable: bool - m_MipCount: int - m_Name: str - m_TextureSettings: GLTextureSettings - m_Width: int - m_DownscaleFallback: Optional[bool] = None - m_ForcedFallbackFormat: Optional[int] = None - m_IgnoreMipmapLimit: Optional[bool] = None - m_IsAlphaChannelOptional: Optional[bool] = None - m_MipmapLimitGroupName: Optional[str] = None - m_MipsStripped: Optional[int] = None - m_StreamData: Optional[StreamingInfo] = None - m_UsageMode: Optional[int] = None - - def __init__(self, reader): - super().__init__(reader=reader) - self.__dict__.update(**reader.read_typetree(wrap=True).__dict__) - self.m_TextureSettings.__class__ = GLTextureSettings - self.m_Format = GraphicsFormat(self.m_Format) - - @property - def image_data(self): - data = getattr(self, "image data", None) - if data is None: - data = get_resource_data( - self.m_StreamData.path, - self.assets_file, - self.m_StreamData.offset, - self.m_StreamData.size, - ) - return data - - @property - def images(self) -> List[Image.Image]: - texture_format = GRAPHICS_TO_TEXTURE_MAP.get(self.m_Format) - if not texture_format: - raise NotImplementedError( - f"GraphicsFormat {self.m_Format} not supported yet" - ) - - # calculate the number of textures in the array - texture_size = self.m_DataSize // self.m_Depth - return [ - Texture2DConverter.parse_image_data( - self.image_data[offset : offset + texture_size], - self.m_Width, - self.m_Height, - texture_format, - self.version, - 0, - None, - ) - for offset in range(0, self.m_DataSize, texture_size) - ] diff --git a/UnityPy/classes/Transform.py b/UnityPy/classes/Transform.py deleted file mode 100644 index df8419d2..00000000 --- a/UnityPy/classes/Transform.py +++ /dev/null @@ -1,14 +0,0 @@ -from .Component import Component -from .PPtr import PPtr - - -class Transform(Component): - def __init__(self, reader): - super().__init__(reader=reader) - self.m_LocalRotation = reader.read_quaternion() - self.m_LocalPosition = reader.read_vector3() - self.m_LocalScale = reader.read_vector3() - - children_count = reader.read_int() - self.m_Children = [PPtr(reader) for _ in range(children_count)] - self.m_Father = PPtr(reader) diff --git a/UnityPy/classes/VideoClip.py b/UnityPy/classes/VideoClip.py deleted file mode 100644 index 66ceb03d..00000000 --- a/UnityPy/classes/VideoClip.py +++ /dev/null @@ -1,44 +0,0 @@ -from .NamedObject import NamedObject -from ..helpers.ResourceReader import get_resource_data -from .PPtr import PPtr - - -class VideoClip(NamedObject): - def __init__(self, reader): - super().__init__(reader=reader) - self.m_OriginalPath = reader.read_aligned_string() - self.m_ProxyWidth = reader.read_u_int() - self.m_ProxyHeight = reader.read_u_int() - self.Width = reader.read_u_int() - self.Height = reader.read_u_int() - if self.version >= (2017, 2): # 2017.2 and up - self.m_PixelAspecRatioNum = reader.read_u_int() - self.m_PixelAspecRatioDen = reader.read_u_int() - self.m_FrameRate = reader.read_double() - self.m_FrameCount = reader.read_u_long() - self.m_Format = reader.read_int() - self.m_AudioChannelCount = reader.read_u_short_array() - reader.align_stream() - self.m_AudioSampleRate = reader.read_u_int_array() - self.m_AudioLanguage = reader.read_string_array() - if self.version >= (2020,): # 2020.1 and up - m_VideoShadersSize = reader.read_int() - self.m_VideoShaders = [ - PPtr(reader) for _ in range(m_VideoShadersSize) - ] - - # m_ExternalResources = new StreamedResource(reader) - self.source = reader.read_aligned_string() - self.offset = reader.read_u_long() - self.size = reader.read_u_long() - - self.m_HasSplitAlpha = reader.read_boolean() - if self.version >= (2020,): # 2020.1 and up - self.m_sRGB = reader.read_boolean() - - if self.source: - self.m_VideoData = get_resource_data( - self.source, self.assets_file, self.offset, self.size) - else: - self.reader.Position = self.data_offset - self.m_VideoData = self.reader.read_bytes(self.size) diff --git a/UnityPy/classes/__init__.py b/UnityPy/classes/__init__.py index 5cae3aac..f1e0246c 100644 --- a/UnityPy/classes/__init__.py +++ b/UnityPy/classes/__init__.py @@ -1,39 +1,4 @@ -from .Animation import Animation -from .AnimationClip import AnimationClip -from .Animator import Animator -from .AnimatorController import AnimatorController -from .AnimatorOverrideController import AnimatorOverrideController -from .AssetBundle import AssetBundle -from .AudioClip import AudioClip -from .Avatar import Avatar -from .Behaviour import Behaviour -from .BuildSettings import BuildSettings -from .Component import Component -from .EditorExtension import EditorExtension -from .Font import Font -from .GameObject import GameObject -from .Material import Material -from .Mesh import Mesh -from .MeshFilter import MeshFilter -from .MeshRenderer import MeshRenderer -from .MonoBehaviour import MonoBehaviour -from .MonoScript import MonoScript -from .MovieTexture import MovieTexture -from .NamedObject import NamedObject -from .Object import Object -from .PPtr import PPtr -from .PlayerSettings import PlayerSettings -from .RectTransform import RectTransform -from .Renderer import Renderer -from .RuntimeAnimatorController import RuntimeAnimatorController -from .ResourceManager import ResourceManager -from .Shader import Shader -from .SkinnedMeshRenderer import SkinnedMeshRenderer -from .Sprite import Sprite -from .SpriteAtlas import SpriteAtlas -from .TextAsset import TextAsset -from .Texture import Texture -from .Texture2D import Texture2D -from .Texture2DArray import Texture2DArray -from .Transform import Transform -from .VideoClip import VideoClip +from .Object import Object as Object +from .PPtr import PPtr as PPtr +from .generated import * +from .legacy_patch import * diff --git a/UnityPy/classes/generated.py b/UnityPy/classes/generated.py new file mode 100644 index 00000000..a3fc3022 --- /dev/null +++ b/UnityPy/classes/generated.py @@ -0,0 +1,10660 @@ +#type: ignore +from __future__ import annotations +from abc import ABC +from attrs import define +from typing import List, Optional, Tuple, Union + +from .math import float3, Matrix3x4f, Vector3f, Vector4f, ColorRGBA, Vector2f, Quaternionf, Matrix4x4f, float4 +from .Object import Object +from .PPtr import PPtr + + +@define(kw_only=True, slots=False) +class AnnotationManager(Object): + m_CurrentPreset_m_AnnotationList: List[Annotation] + m_RecentlyChanged: List[Annotation] + m_FadeGizmoSize: Optional[float] = None + m_FadeGizmos: Optional[bool] = None + m_IconSize: Optional[float] = None + m_ShowGrid: Optional[bool] = None + m_ShowSelectionOutline: Optional[bool] = None + m_ShowSelectionWire: Optional[bool] = None + m_Use3dGizmos: Optional[bool] = None + m_WorldIconSize: Optional[float] = None + +@define(kw_only=True, slots=False) +class AssetDatabaseV1(Object): + m_AssetBundleNames: List[Tuple[int, AssetBundleFullName]] + m_AssetTimeStamps: List[Tuple[str, AssetTimeStamp]] + m_Assets: List[Tuple[GUID, Asset]] + m_Metrics: AssetDatabaseMetrics + m_UnityShadersVersion: int + m_lastValidVersionHashes: Optional[List[Tuple[int, int]]] = None + m_lastValidVersions: Optional[List[Tuple[AssetImporterHashKey, int]]] = None + +@define(kw_only=True, slots=False) +class AssetMetaData(Object): + assetStoreRef: int + guid: GUID + labels: List[str] + originalName: str + pathName: str + licenseType: Optional[int] = None + originalChangeset: Optional[int] = None + originalDigest: Optional[Union[Hash128, MdFour]] = None + originalParent: Optional[GUID] = None + timeCreated: Optional[int] = None + +@define(kw_only=True, slots=False) +class AssetServerCache(Object): + m_CachesInitialized: int + m_CommitItemSelection: List[GUID] + m_DeletedItems: List[Tuple[GUID, DeletedItem]] + m_Items: List[Tuple[GUID, Item]] + m_LastCommitMessage: str + m_LatestServerChangeset: int + m_ModifiedItems: List[Tuple[GUID, Item]] + m_WorkingItemMetaData: List[Tuple[GUID, CachedAssetMetaData]] + +@define(kw_only=True, slots=False) +class AudioBuildInfo(Object): + m_AudioClipCount: int + m_AudioMixerCount: int + m_IsAudioDisabled: bool + +@define(kw_only=True, slots=False) +class BuiltAssetBundleInfoSet(Object): + bundleInfos: List[BuiltAssetBundleInfo] + +@define(kw_only=True, slots=False) +class Derived(Object): + pass + +@define(kw_only=True, slots=False) +class SubDerived(Derived): + pass + +@define(kw_only=True, slots=False) +class DifferentMarshallingTestObject(Object): + pass + +@define(kw_only=True, slots=False) +class EditorBuildSettings(Object): + m_Scenes: List[Scene] + m_UseUCBPForAssetBundles: Optional[bool] = None + m_configObjects: Optional[List[Tuple[str, PPtr[Object]]]] = None + +@define(kw_only=True, slots=False) +class EditorExtension(Object, ABC): + pass + +@define(kw_only=True, slots=False) +class Component(EditorExtension): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class Behaviour(Component): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class Animation(Behaviour): + m_AnimatePhysics: bool + m_Animation: PPtr[AnimationClip] + m_Animations: List[PPtr[AnimationClip]] + m_CullingType: int + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_PlayAutomatically: bool + m_WrapMode: int + m_UpdateMode: Optional[int] = None + m_UserAABB: Optional[AABB] = None + +@define(kw_only=True, slots=False) +class Animator(Behaviour): + m_ApplyRootMotion: bool + m_Avatar: PPtr[Avatar] + m_Controller: Union[PPtr[AnimatorController], PPtr[RuntimeAnimatorController]] + m_CullingMode: int + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_AllowConstantClipSamplingOptimization: Optional[bool] = None + m_AnimatePhysics: Optional[bool] = None + m_HasTransformHierarchy: Optional[bool] = None + m_KeepAnimatorControllerStateOnDisable: Optional[bool] = None + m_KeepAnimatorStateOnDisable: Optional[bool] = None + m_LinearVelocityBlending: Optional[bool] = None + m_StabilizeFeet: Optional[bool] = None + m_UpdateMode: Optional[int] = None + m_WriteDefaultValuesOnDisable: Optional[bool] = None + +@define(kw_only=True, slots=False) +class ArticulationBody(Behaviour): + m_AnchorPosition: Vector3f + m_AnchorRotation: Quaternionf + m_AngularDamping: float + m_ArticulationJointType: int + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Immovable: bool + m_JointFriction: float + m_LinearDamping: float + m_LinearX: int + m_LinearY: int + m_LinearZ: int + m_Mass: float + m_ParentAnchorPosition: Vector3f + m_ParentAnchorRotation: Quaternionf + m_SwingY: int + m_SwingZ: int + m_Twist: int + m_XDrive: ArticulationDrive + m_YDrive: ArticulationDrive + m_ZDrive: ArticulationDrive + m_CenterOfMass: Optional[Vector3f] = None + m_CollisionDetectionMode: Optional[int] = None + m_ComputeParentAnchor: Optional[bool] = None + m_ExcludeLayers: Optional[BitField] = None + m_ImplicitCom: Optional[bool] = None + m_ImplicitTensor: Optional[bool] = None + m_IncludeLayers: Optional[BitField] = None + m_InertiaRotation: Optional[Quaternionf] = None + m_InertiaTensor: Optional[Vector3f] = None + m_MatchAnchors: Optional[bool] = None + m_UseGravity: Optional[bool] = None + +@define(kw_only=True, slots=False) +class AudioBehaviour(Behaviour): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class AudioListener(AudioBehaviour): + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_ExtensionPropertyValues: Optional[List[ExtensionPropertyValue]] = None + +@define(kw_only=True, slots=False) +class AudioSource(AudioBehaviour): + BypassEffects: bool + DopplerLevel: float + Loop: bool + MaxDistance: float + MinDistance: float + Mute: bool + Pan2D: float + Priority: int + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Pitch: float + m_PlayOnAwake: bool + m_Volume: float + m_audioClip: PPtr[AudioClip] + panLevelCustomCurve: AnimationCurve + rolloffCustomCurve: AnimationCurve + rolloffMode: int + spreadCustomCurve: AnimationCurve + BypassListenerEffects: Optional[bool] = None + BypassReverbZones: Optional[bool] = None + OutputAudioMixerGroup: Optional[PPtr[AudioMixerGroup]] = None + Spatialize: Optional[bool] = None + SpatializePostEffects: Optional[bool] = None + m_ExtensionPropertyValues: Optional[List[ExtensionPropertyValue]] = None + m_Resource: Optional[PPtr[AudioResource]] = None + reverbZoneMixCustomCurve: Optional[AnimationCurve] = None + +@define(kw_only=True, slots=False) +class AudioFilter(Behaviour): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class AudioChorusFilter(AudioFilter): + m_Delay: float + m_Depth: float + m_DryMix: float + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Rate: float + m_WetMix1: float + m_WetMix2: float + m_WetMix3: float + m_FeedBack: Optional[float] = None + +@define(kw_only=True, slots=False) +class AudioDistortionFilter(AudioFilter): + m_DistortionLevel: float + m_Enabled: int + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class AudioEchoFilter(AudioFilter): + m_DecayRatio: float + m_Delay: Union[int, float] + m_DryMix: float + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_WetMix: float + +@define(kw_only=True, slots=False) +class AudioHighPassFilter(AudioFilter): + m_CutoffFrequency: float + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_HighpassResonanceQ: float + +@define(kw_only=True, slots=False) +class AudioLowPassFilter(AudioFilter): + lowpassLevelCustomCurve: AnimationCurve + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_LowpassResonanceQ: float + m_CutoffFrequency: Optional[float] = None + +@define(kw_only=True, slots=False) +class AudioReverbFilter(AudioFilter): + m_DecayHFRatio: float + m_DecayTime: float + m_Density: float + m_Diffusion: float + m_DryLevel: float + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_HFReference: float + m_LFReference: float + m_ReflectionsDelay: float + m_ReflectionsLevel: float + m_ReverbDelay: float + m_ReverbLevel: float + m_ReverbPreset: int + m_Room: float + m_RoomHF: float + m_RoomLF: float + m_RoomRolloff: Optional[float] = None + +@define(kw_only=True, slots=False) +class AudioReverbZone(Behaviour): + m_DecayHFRatio: float + m_DecayTime: float + m_Density: float + m_Diffusion: float + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_HFReference: float + m_LFReference: float + m_MaxDistance: float + m_MinDistance: float + m_Reflections: int + m_ReflectionsDelay: float + m_Reverb: int + m_ReverbDelay: float + m_ReverbPreset: int + m_Room: int + m_RoomHF: int + m_RoomLF: int + m_RoomRolloffFactor: Optional[float] = None + +@define(kw_only=True, slots=False) +class Camera(Behaviour): + far_clip_plane: float + field_of_view: float + m_BackGroundColor: ColorRGBA + m_ClearFlags: int + m_CullingMask: BitField + m_Depth: float + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_NormalizedViewPortRect: Rectf + m_RenderingPath: int + m_TargetTexture: PPtr[RenderTexture] + near_clip_plane: float + orthographic: bool + orthographic_size: float + m_AllowDynamicResolution: Optional[bool] = None + m_AllowMSAA: Optional[bool] = None + m_Anamorphism: Optional[float] = None + m_Aperture: Optional[float] = None + m_BarrelClipping: Optional[float] = None + m_BladeCount: Optional[int] = None + m_Curvature: Optional[Vector2f] = None + m_FocalLength: Optional[float] = None + m_FocusDistance: Optional[float] = None + m_ForceIntoRT: Optional[bool] = None + m_GateFitMode: Optional[int] = None + m_HDR: Optional[bool] = None + m_Iso: Optional[int] = None + m_LensShift: Optional[Vector2f] = None + m_OcclusionCulling: Optional[bool] = None + m_SensorSize: Optional[Vector2f] = None + m_ShutterSpeed: Optional[float] = None + m_StereoConvergence: Optional[float] = None + m_StereoMirrorMode: Optional[bool] = None + m_StereoSeparation: Optional[float] = None + m_TargetDisplay: Optional[int] = None + m_TargetEye: Optional[int] = None + m_projectionMatrixMode: Optional[int] = None + +@define(kw_only=True, slots=False) +class ScriptableCamera(Camera): + far_clip_plane: float + field_of_view: float + m_AllowDynamicResolution: bool + m_AllowMSAA: bool + m_BackGroundColor: ColorRGBA + m_ClearFlags: int + m_CullingMask: BitField + m_Depth: float + m_Enabled: int + m_FocalLength: float + m_ForceIntoRT: bool + m_GameObject: PPtr[GameObject] + m_GateFitMode: int + m_HDR: bool + m_LensShift: Vector2f + m_NormalizedViewPortRect: Rectf + m_OcclusionCulling: bool + m_RenderingPath: int + m_Script: PPtr[MonoScript] + m_SensorSize: Vector2f + m_StereoConvergence: float + m_StereoSeparation: float + m_TargetDisplay: int + m_TargetEye: int + m_TargetTexture: PPtr[RenderTexture] + m_projectionMatrixMode: int + near_clip_plane: float + orthographic: bool + orthographic_size: float + +@define(kw_only=True, slots=False) +class Canvas(Behaviour): + m_Camera: PPtr[Camera] + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_PixelPerfect: bool + m_RenderMode: int + m_AdditionalShaderChannelsFlag: Optional[int] = None + m_Alpha: Optional[float] = None + m_Normals: Optional[bool] = None + m_OverridePixelPerfect: Optional[bool] = None + m_OverrideSorting: Optional[bool] = None + m_PlaneDistance: Optional[float] = None + m_PositionUVs: Optional[bool] = None + m_ReceivesEvents: Optional[bool] = None + m_SortingBucketNormalizedSize: Optional[float] = None + m_SortingLayerID: Optional[int] = None + m_SortingOrder: Optional[int] = None + m_TargetDisplay: Optional[int] = None + m_UpdateRectTransformForStandalone: Optional[int] = None + m_VertexColorAlwaysGammaSpace: Optional[bool] = None + +@define(kw_only=True, slots=False) +class CanvasGroup(Behaviour): + m_Alpha: float + m_BlocksRaycasts: bool + m_GameObject: PPtr[GameObject] + m_IgnoreParentGroups: bool + m_Interactable: bool + m_Enabled: Optional[int] = None + +@define(kw_only=True, slots=False) +class Cloth(Behaviour): + m_GameObject: PPtr[GameObject] + m_BendingStiffness: Optional[float] = None + m_CapsuleColliders: Optional[List[PPtr[CapsuleCollider]]] = None + m_Coefficients: Optional[List[ClothConstrainCoefficients]] = None + m_CollisionMassScale: Optional[float] = None + m_Damping: Optional[float] = None + m_Enabled: Optional[int] = None + m_ExternalAcceleration: Optional[Vector3f] = None + m_Friction: Optional[float] = None + m_RandomAcceleration: Optional[Vector3f] = None + m_SelfAndInterCollisionIndices: Optional[List[int]] = None + m_SelfCollisionDistance: Optional[float] = None + m_SelfCollisionStiffness: Optional[float] = None + m_SleepThreshold: Optional[float] = None + m_SolverFrequency: Optional[Union[int, float]] = None + m_SphereColliders: Optional[Union[List[ClothSphereColliderPair], List[Tuple[PPtr[SphereCollider], PPtr[SphereCollider]]]]] = None + m_StretchingStiffness: Optional[float] = None + m_UseContinuousCollision: Optional[bool] = None + m_UseGravity: Optional[bool] = None + m_UseTethers: Optional[bool] = None + m_UseVirtualParticles: Optional[bool] = None + m_VirtualParticleIndices: Optional[List[int]] = None + m_VirtualParticleWeights: Optional[List[Vector3f]] = None + m_WorldAccelerationScale: Optional[float] = None + m_WorldVelocityScale: Optional[float] = None + +@define(kw_only=True, slots=False) +class InteractiveCloth(Cloth): + m_AttachedColliders: List[ClothAttachment] + m_AttachmentResponse: float + m_AttachmentTearFactor: float + m_BendingStiffness: float + m_CollisionResponse: float + m_Damping: float + m_Density: float + m_Enabled: int + m_ExternalAcceleration: Vector3f + m_Friction: float + m_GameObject: PPtr[GameObject] + m_Mesh: PPtr[Mesh] + m_Pressure: float + m_RandomAcceleration: Vector3f + m_SelfCollision: bool + m_StretchingStiffness: float + m_TearFactor: float + m_Thickness: float + m_UseGravity: bool + +@define(kw_only=True, slots=False) +class SkinnedCloth(Cloth): + m_BendingStiffness: float + m_Coefficients: List[ClothConstrainCoefficients] + m_Damping: float + m_Enabled: int + m_ExternalAcceleration: Vector3f + m_GameObject: PPtr[GameObject] + m_RandomAcceleration: Vector3f + m_SelfCollision: bool + m_StretchingStiffness: float + m_Thickness: float + m_UseGravity: bool + m_WorldAccelerationScale: float + m_WorldVelocityScale: float + +@define(kw_only=True, slots=False) +class CloudServiceHandlerBehaviour(Behaviour): + m_Enabled: int + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class Collider2D(Behaviour): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class BoxCollider2D(Collider2D): + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_IsTrigger: bool + m_Material: PPtr[PhysicsMaterial2D] + m_Size: Vector2f + m_AutoTiling: Optional[bool] = None + m_CallbackLayers: Optional[BitField] = None + m_Center: Optional[Vector2f] = None + m_CompositeOperation: Optional[int] = None + m_CompositeOrder: Optional[int] = None + m_ContactCaptureLayers: Optional[BitField] = None + m_Density: Optional[float] = None + m_EdgeRadius: Optional[float] = None + m_ExcludeLayers: Optional[BitField] = None + m_ForceReceiveLayers: Optional[BitField] = None + m_ForceSendLayers: Optional[BitField] = None + m_IncludeLayers: Optional[BitField] = None + m_LayerOverridePriority: Optional[int] = None + m_Offset: Optional[Vector2f] = None + m_SpriteTilingProperty: Optional[SpriteTilingProperty] = None + m_UsedByComposite: Optional[bool] = None + m_UsedByEffector: Optional[bool] = None + +@define(kw_only=True, slots=False) +class CapsuleCollider2D(Collider2D): + m_Density: float + m_Direction: int + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_IsTrigger: bool + m_Material: PPtr[PhysicsMaterial2D] + m_Offset: Vector2f + m_Size: Vector2f + m_UsedByEffector: bool + m_CallbackLayers: Optional[BitField] = None + m_CompositeOperation: Optional[int] = None + m_CompositeOrder: Optional[int] = None + m_ContactCaptureLayers: Optional[BitField] = None + m_ExcludeLayers: Optional[BitField] = None + m_ForceReceiveLayers: Optional[BitField] = None + m_ForceSendLayers: Optional[BitField] = None + m_IncludeLayers: Optional[BitField] = None + m_LayerOverridePriority: Optional[int] = None + m_UsedByComposite: Optional[bool] = None + +@define(kw_only=True, slots=False) +class CircleCollider2D(Collider2D): + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_IsTrigger: bool + m_Material: PPtr[PhysicsMaterial2D] + m_Radius: float + m_CallbackLayers: Optional[BitField] = None + m_Center: Optional[Vector2f] = None + m_CompositeOperation: Optional[int] = None + m_CompositeOrder: Optional[int] = None + m_ContactCaptureLayers: Optional[BitField] = None + m_Density: Optional[float] = None + m_ExcludeLayers: Optional[BitField] = None + m_ForceReceiveLayers: Optional[BitField] = None + m_ForceSendLayers: Optional[BitField] = None + m_IncludeLayers: Optional[BitField] = None + m_LayerOverridePriority: Optional[int] = None + m_Offset: Optional[Vector2f] = None + m_UsedByComposite: Optional[bool] = None + m_UsedByEffector: Optional[bool] = None + +@define(kw_only=True, slots=False) +class CompositeCollider2D(Collider2D): + m_ColliderPaths: List[SubCollider] + m_CompositePaths: Polygon2D + m_Density: float + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_GenerationType: int + m_GeometryType: int + m_IsTrigger: bool + m_Material: PPtr[PhysicsMaterial2D] + m_Offset: Vector2f + m_UsedByEffector: bool + m_VertexDistance: float + m_CallbackLayers: Optional[BitField] = None + m_CompositeGameObject: Optional[PPtr[GameObject]] = None + m_CompositeOperation: Optional[int] = None + m_CompositeOrder: Optional[int] = None + m_ContactCaptureLayers: Optional[BitField] = None + m_EdgeRadius: Optional[float] = None + m_ExcludeLayers: Optional[BitField] = None + m_ForceReceiveLayers: Optional[BitField] = None + m_ForceSendLayers: Optional[BitField] = None + m_IncludeLayers: Optional[BitField] = None + m_LayerOverridePriority: Optional[int] = None + m_OffsetDistance: Optional[float] = None + m_UseDelaunayMesh: Optional[bool] = None + m_UsedByComposite: Optional[bool] = None + +@define(kw_only=True, slots=False) +class CustomCollider2D(Collider2D): + m_CustomShapes: PhysicsShapeGroup2D + m_Density: float + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_IsTrigger: bool + m_Material: PPtr[PhysicsMaterial2D] + m_Offset: Vector2f + m_UsedByEffector: bool + m_CallbackLayers: Optional[BitField] = None + m_CompositeOperation: Optional[int] = None + m_CompositeOrder: Optional[int] = None + m_ContactCaptureLayers: Optional[BitField] = None + m_ExcludeLayers: Optional[BitField] = None + m_ForceReceiveLayers: Optional[BitField] = None + m_ForceSendLayers: Optional[BitField] = None + m_IncludeLayers: Optional[BitField] = None + m_LayerOverridePriority: Optional[int] = None + m_UsedByComposite: Optional[bool] = None + +@define(kw_only=True, slots=False) +class EdgeCollider2D(Collider2D): + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_IsTrigger: bool + m_Material: PPtr[PhysicsMaterial2D] + m_Points: List[Vector2f] + m_AdjacentEndPoint: Optional[Vector2f] = None + m_AdjacentStartPoint: Optional[Vector2f] = None + m_CallbackLayers: Optional[BitField] = None + m_CompositeOperation: Optional[int] = None + m_CompositeOrder: Optional[int] = None + m_ContactCaptureLayers: Optional[BitField] = None + m_Density: Optional[float] = None + m_EdgeRadius: Optional[float] = None + m_ExcludeLayers: Optional[BitField] = None + m_ForceReceiveLayers: Optional[BitField] = None + m_ForceSendLayers: Optional[BitField] = None + m_IncludeLayers: Optional[BitField] = None + m_LayerOverridePriority: Optional[int] = None + m_Offset: Optional[Vector2f] = None + m_UseAdjacentEndPoint: Optional[bool] = None + m_UseAdjacentStartPoint: Optional[bool] = None + m_UsedByComposite: Optional[bool] = None + m_UsedByEffector: Optional[bool] = None + +@define(kw_only=True, slots=False) +class PolygonCollider2D(Collider2D): + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_IsTrigger: bool + m_Material: PPtr[PhysicsMaterial2D] + m_AutoTiling: Optional[bool] = None + m_CallbackLayers: Optional[BitField] = None + m_CompositeOperation: Optional[int] = None + m_CompositeOrder: Optional[int] = None + m_ContactCaptureLayers: Optional[BitField] = None + m_Density: Optional[float] = None + m_ExcludeLayers: Optional[BitField] = None + m_ForceReceiveLayers: Optional[BitField] = None + m_ForceSendLayers: Optional[BitField] = None + m_IncludeLayers: Optional[BitField] = None + m_LayerOverridePriority: Optional[int] = None + m_Offset: Optional[Vector2f] = None + m_Points: Optional[Polygon2D] = None + m_Poly: Optional[Polygon2D] = None + m_SpriteTilingProperty: Optional[SpriteTilingProperty] = None + m_UseDelaunayMesh: Optional[bool] = None + m_UsedByComposite: Optional[bool] = None + m_UsedByEffector: Optional[bool] = None + +@define(kw_only=True, slots=False) +class PolygonColliderBase2D(Collider2D): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class TilemapCollider2D(Collider2D): + m_Density: float + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_IsTrigger: bool + m_Material: PPtr[PhysicsMaterial2D] + m_Offset: Vector2f + m_UsedByEffector: bool + m_CallbackLayers: Optional[BitField] = None + m_CompositeOperation: Optional[int] = None + m_CompositeOrder: Optional[int] = None + m_ContactCaptureLayers: Optional[BitField] = None + m_ExcludeLayers: Optional[BitField] = None + m_ExtrusionFactor: Optional[float] = None + m_ForceReceiveLayers: Optional[BitField] = None + m_ForceSendLayers: Optional[BitField] = None + m_IncludeLayers: Optional[BitField] = None + m_LayerOverridePriority: Optional[int] = None + m_MaximumTileChangeCount: Optional[int] = None + m_UseDelaunayMesh: Optional[bool] = None + m_UsedByComposite: Optional[bool] = None + +@define(kw_only=True, slots=False) +class ConstantForce(Behaviour): + m_Enabled: int + m_Force: Vector3f + m_GameObject: PPtr[GameObject] + m_RelativeForce: Vector3f + m_RelativeTorque: Vector3f + m_Torque: Vector3f + +@define(kw_only=True, slots=False) +class Effector2D(Behaviour): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class AreaEffector2D(Effector2D): + m_AngularDrag: float + m_ColliderMask: BitField + m_Drag: float + m_Enabled: int + m_ForceMagnitude: float + m_ForceTarget: int + m_ForceVariation: float + m_GameObject: PPtr[GameObject] + m_ForceAngle: Optional[float] = None + m_ForceDirection: Optional[float] = None + m_UseColliderMask: Optional[bool] = None + m_UseGlobalAngle: Optional[bool] = None + +@define(kw_only=True, slots=False) +class BuoyancyEffector2D(Effector2D): + m_AngularDrag: float + m_ColliderMask: BitField + m_Density: float + m_Enabled: int + m_FlowAngle: float + m_FlowMagnitude: float + m_FlowVariation: float + m_GameObject: PPtr[GameObject] + m_LinearDrag: float + m_SurfaceLevel: float + m_UseColliderMask: bool + +@define(kw_only=True, slots=False) +class PlatformEffector2D(Effector2D): + m_ColliderMask: BitField + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_OneWay: Optional[bool] = None + m_RotationalOffset: Optional[float] = None + m_SideAngleVariance: Optional[float] = None + m_SideArc: Optional[float] = None + m_SideBounce: Optional[bool] = None + m_SideFriction: Optional[bool] = None + m_SurfaceArc: Optional[float] = None + m_UseColliderMask: Optional[bool] = None + m_UseOneWay: Optional[bool] = None + m_UseOneWayGrouping: Optional[bool] = None + m_UseSideBounce: Optional[bool] = None + m_UseSideFriction: Optional[bool] = None + +@define(kw_only=True, slots=False) +class PointEffector2D(Effector2D): + m_AngularDrag: float + m_ColliderMask: BitField + m_DistanceScale: float + m_Drag: float + m_Enabled: int + m_ForceMagnitude: float + m_ForceMode: int + m_ForceSource: int + m_ForceTarget: int + m_ForceVariation: float + m_GameObject: PPtr[GameObject] + m_UseColliderMask: Optional[bool] = None + +@define(kw_only=True, slots=False) +class SurfaceEffector2D(Effector2D): + m_ColliderMask: BitField + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Speed: float + m_SpeedVariation: float + m_ForceScale: Optional[float] = None + m_UseBounce: Optional[bool] = None + m_UseColliderMask: Optional[bool] = None + m_UseContactForce: Optional[bool] = None + m_UseFriction: Optional[bool] = None + +@define(kw_only=True, slots=False) +class FlareLayer(Behaviour): + m_Enabled: int + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class GUIElement(Behaviour): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class GUIText(GUIElement): + m_Alignment: int + m_Anchor: int + m_Enabled: int + m_Font: PPtr[Font] + m_FontSize: int + m_FontStyle: int + m_GameObject: PPtr[GameObject] + m_LineSpacing: float + m_Material: PPtr[Material] + m_PixelCorrect: bool + m_PixelOffset: Vector2f + m_TabSize: float + m_Text: str + m_Color: Optional[ColorRGBA] = None + m_RichText: Optional[bool] = None + +@define(kw_only=True, slots=False) +class GUITexture(GUIElement): + m_BottomBorder: int + m_Color: ColorRGBA + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_LeftBorder: int + m_PixelInset: Rectf + m_RightBorder: int + m_Texture: PPtr[Texture] + m_TopBorder: int + +@define(kw_only=True, slots=False) +class GUILayer(Behaviour): + m_Enabled: int + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class GridLayout(Behaviour): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class Grid(GridLayout): + m_CellGap: Vector3f + m_CellLayout: int + m_CellSize: Vector3f + m_CellSwizzle: int + m_Enabled: int + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class Tilemap(GridLayout): + m_AnimatedTiles: List[Tuple[int3_storage, TileAnimationData]] + m_AnimationFrameRate: float + m_Color: ColorRGBA + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Origin: int3_storage + m_Size: int3_storage + m_TileAnchor: Vector3f + m_TileAssetArray: List[TilemapRefCountedData] + m_TileColorArray: List[TilemapRefCountedData] + m_TileMatrixArray: List[TilemapRefCountedData] + m_TileOrientation: int + m_TileOrientationMatrix: Matrix4x4f + m_TileSpriteArray: List[TilemapRefCountedData] + m_Tiles: List[Tuple[int3_storage, Tile]] + m_TileObjectToInstantiateArray: Optional[List[TilemapRefCountedData]] = None + +@define(kw_only=True, slots=False) +class Halo(Behaviour): + m_Color: ColorRGBA + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Size: float + +@define(kw_only=True, slots=False) +class HaloLayer(Behaviour): + m_Enabled: int + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class IConstraint(Behaviour): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class AimConstraint(IConstraint): + m_AffectRotationX: bool + m_AffectRotationY: bool + m_AffectRotationZ: bool + m_AimVector: Vector3f + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_RotationAtRest: Vector3f + m_RotationOffset: Vector3f + m_Sources: List[ConstraintSource] + m_UpType: int + m_UpVector: Vector3f + m_Weight: float + m_WorldUpObject: PPtr[Transform] + m_WorldUpVector: Vector3f + m_Active: Optional[bool] = None + m_IsContraintActive: Optional[bool] = None + +@define(kw_only=True, slots=False) +class LookAtConstraint(IConstraint): + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Roll: float + m_RotationAtRest: Vector3f + m_RotationOffset: Vector3f + m_Sources: List[ConstraintSource] + m_UseUpObject: bool + m_Weight: float + m_WorldUpObject: PPtr[Transform] + m_Active: Optional[bool] = None + m_IsContraintActive: Optional[bool] = None + +@define(kw_only=True, slots=False) +class ParentConstraint(IConstraint): + m_AffectRotationX: bool + m_AffectRotationY: bool + m_AffectRotationZ: bool + m_AffectTranslationX: bool + m_AffectTranslationY: bool + m_AffectTranslationZ: bool + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_RotationAtRest: Vector3f + m_RotationOffsets: List[Vector3f] + m_Sources: List[ConstraintSource] + m_TranslationAtRest: Vector3f + m_TranslationOffsets: List[Vector3f] + m_Weight: float + m_Active: Optional[bool] = None + m_IsContraintActive: Optional[bool] = None + +@define(kw_only=True, slots=False) +class PositionConstraint(IConstraint): + m_AffectTranslationX: bool + m_AffectTranslationY: bool + m_AffectTranslationZ: bool + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Sources: List[ConstraintSource] + m_TranslationAtRest: Vector3f + m_TranslationOffset: Vector3f + m_Weight: float + m_Active: Optional[bool] = None + m_IsContraintActive: Optional[bool] = None + +@define(kw_only=True, slots=False) +class RotationConstraint(IConstraint): + m_AffectRotationX: bool + m_AffectRotationY: bool + m_AffectRotationZ: bool + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_RotationAtRest: Vector3f + m_RotationOffset: Vector3f + m_Sources: List[ConstraintSource] + m_Weight: float + m_Active: Optional[bool] = None + m_IsContraintActive: Optional[bool] = None + +@define(kw_only=True, slots=False) +class ScaleConstraint(IConstraint): + m_AffectScalingX: bool + m_AffectScalingY: bool + m_AffectScalingZ: bool + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_ScaleAtRest: Vector3f + m_ScaleOffset: Vector3f + m_Sources: List[ConstraintSource] + m_Weight: float + m_Active: Optional[bool] = None + m_IsContraintActive: Optional[bool] = None + +@define(kw_only=True, slots=False) +class Joint2D(Behaviour): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class AnchoredJoint2D(Joint2D): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class DistanceJoint2D(AnchoredJoint2D): + m_Anchor: Vector2f + m_ConnectedAnchor: Vector2f + m_ConnectedRigidBody: PPtr[Rigidbody2D] + m_Distance: float + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_AutoConfigureConnectedAnchor: Optional[bool] = None + m_AutoConfigureDistance: Optional[bool] = None + m_BreakAction: Optional[int] = None + m_BreakForce: Optional[float] = None + m_BreakTorque: Optional[float] = None + m_CollideConnected: Optional[bool] = None + m_EnableCollision: Optional[bool] = None + m_MaxDistanceOnly: Optional[bool] = None + +@define(kw_only=True, slots=False) +class FixedJoint2D(AnchoredJoint2D): + m_Anchor: Vector2f + m_AutoConfigureConnectedAnchor: bool + m_BreakForce: float + m_BreakTorque: float + m_ConnectedAnchor: Vector2f + m_ConnectedRigidBody: PPtr[Rigidbody2D] + m_DampingRatio: float + m_EnableCollision: bool + m_Enabled: int + m_Frequency: float + m_GameObject: PPtr[GameObject] + m_BreakAction: Optional[int] = None + +@define(kw_only=True, slots=False) +class FrictionJoint2D(AnchoredJoint2D): + m_Anchor: Vector2f + m_AutoConfigureConnectedAnchor: bool + m_BreakForce: float + m_BreakTorque: float + m_ConnectedAnchor: Vector2f + m_ConnectedRigidBody: PPtr[Rigidbody2D] + m_EnableCollision: bool + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_MaxForce: float + m_MaxTorque: float + m_BreakAction: Optional[int] = None + +@define(kw_only=True, slots=False) +class HingeJoint2D(AnchoredJoint2D): + m_Anchor: Vector2f + m_AngleLimits: Union[JointAngleLimit2D, JointAngleLimits2D] + m_ConnectedAnchor: Vector2f + m_ConnectedRigidBody: PPtr[Rigidbody2D] + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Motor: JointMotor2D + m_UseLimits: bool + m_UseMotor: bool + m_AutoConfigureConnectedAnchor: Optional[bool] = None + m_BreakAction: Optional[int] = None + m_BreakForce: Optional[float] = None + m_BreakTorque: Optional[float] = None + m_CollideConnected: Optional[bool] = None + m_EnableCollision: Optional[bool] = None + m_UseConnectedAnchor: Optional[bool] = None + +@define(kw_only=True, slots=False) +class SliderJoint2D(AnchoredJoint2D): + m_Anchor: Vector2f + m_Angle: float + m_ConnectedAnchor: Vector2f + m_ConnectedRigidBody: PPtr[Rigidbody2D] + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Motor: JointMotor2D + m_TranslationLimits: JointTranslationLimits2D + m_UseLimits: bool + m_UseMotor: bool + m_AutoConfigureAngle: Optional[bool] = None + m_AutoConfigureConnectedAnchor: Optional[bool] = None + m_BreakAction: Optional[int] = None + m_BreakForce: Optional[float] = None + m_BreakTorque: Optional[float] = None + m_CollideConnected: Optional[bool] = None + m_EnableCollision: Optional[bool] = None + +@define(kw_only=True, slots=False) +class SpringJoint2D(AnchoredJoint2D): + m_Anchor: Vector2f + m_ConnectedAnchor: Vector2f + m_ConnectedRigidBody: PPtr[Rigidbody2D] + m_DampingRatio: float + m_Distance: float + m_Enabled: int + m_Frequency: float + m_GameObject: PPtr[GameObject] + m_AutoConfigureConnectedAnchor: Optional[bool] = None + m_AutoConfigureDistance: Optional[bool] = None + m_BreakAction: Optional[int] = None + m_BreakForce: Optional[float] = None + m_BreakTorque: Optional[float] = None + m_CollideConnected: Optional[bool] = None + m_EnableCollision: Optional[bool] = None + +@define(kw_only=True, slots=False) +class WheelJoint2D(AnchoredJoint2D): + m_Anchor: Vector2f + m_ConnectedAnchor: Vector2f + m_ConnectedRigidBody: PPtr[Rigidbody2D] + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Motor: JointMotor2D + m_Suspension: JointSuspension2D + m_UseMotor: bool + m_AutoConfigureConnectedAnchor: Optional[bool] = None + m_BreakAction: Optional[int] = None + m_BreakForce: Optional[float] = None + m_BreakTorque: Optional[float] = None + m_CollideConnected: Optional[bool] = None + m_EnableCollision: Optional[bool] = None + +@define(kw_only=True, slots=False) +class RelativeJoint2D(Joint2D): + m_AngularOffset: float + m_AutoConfigureOffset: bool + m_BreakForce: float + m_BreakTorque: float + m_ConnectedRigidBody: PPtr[Rigidbody2D] + m_CorrectionScale: float + m_EnableCollision: bool + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_LinearOffset: Vector2f + m_MaxForce: float + m_MaxTorque: float + m_BreakAction: Optional[int] = None + +@define(kw_only=True, slots=False) +class TargetJoint2D(Joint2D): + m_Anchor: Vector2f + m_AutoConfigureTarget: bool + m_BreakForce: float + m_BreakTorque: float + m_ConnectedRigidBody: PPtr[Rigidbody2D] + m_DampingRatio: float + m_EnableCollision: bool + m_Enabled: int + m_Frequency: float + m_GameObject: PPtr[GameObject] + m_MaxForce: float + m_Target: Vector2f + m_BreakAction: Optional[int] = None + +@define(kw_only=True, slots=False) +class LensFlare(Behaviour): + m_Brightness: float + m_Color: ColorRGBA + m_Directional: bool + m_Enabled: int + m_Flare: PPtr[Flare] + m_GameObject: PPtr[GameObject] + m_IgnoreLayers: BitField + m_FadeSpeed: Optional[float] = None + +@define(kw_only=True, slots=False) +class Light(Behaviour): + m_Color: ColorRGBA + m_Cookie: PPtr[Texture] + m_CookieSize: float + m_CullingMask: BitField + m_DrawHalo: bool + m_Enabled: int + m_Flare: PPtr[Flare] + m_GameObject: PPtr[GameObject] + m_Intensity: float + m_Lightmapping: int + m_Range: float + m_RenderMode: int + m_Shadows: ShadowSettings + m_SpotAngle: float + m_Type: int + m_ActuallyLightmapped: Optional[bool] = None + m_AreaSize: Optional[Vector2f] = None + m_BakedIndex: Optional[int] = None + m_BakingOutput: Optional[LightBakingOutput] = None + m_BounceIntensity: Optional[float] = None + m_BoundingSphereOverride: Optional[Vector4f] = None + m_CCT: Optional[float] = None + m_ColorTemperature: Optional[float] = None + m_EnableSpotReflector: Optional[bool] = None + m_FalloffTable: Optional[FalloffTable] = None + m_ForceVisible: Optional[bool] = None + m_InnerSpotAngle: Optional[float] = None + m_LightShadowCasterMode: Optional[int] = None + m_LightUnit: Optional[int] = None + m_LuxAtDistance: Optional[float] = None + m_RenderingLayerMask: Optional[int] = None + m_Shape: Optional[int] = None + m_UseBoundingSphereOverride: Optional[bool] = None + m_UseColorTemperature: Optional[bool] = None + m_UseViewFrustumForShadowCasterCull: Optional[bool] = None + +@define(kw_only=True, slots=False) +class LightProbeGroup(Behaviour): + m_GameObject: PPtr[GameObject] + m_Enabled: Optional[int] = None + +@define(kw_only=True, slots=False) +class LightProbeProxyVolume(Behaviour): + m_BoundingBoxMode: int + m_BoundingBoxOrigin: Vector3f + m_BoundingBoxSize: Vector3f + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_ProbePositionMode: int + m_RefreshMode: int + m_ResolutionMode: int + m_ResolutionProbesPerUnit: float + m_ResolutionX: int + m_ResolutionY: int + m_ResolutionZ: int + m_DataFormat: Optional[int] = None + m_QualityMode: Optional[int] = None + +@define(kw_only=True, slots=False) +class MonoBehaviour(Behaviour): + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Name: str + m_Script: PPtr[MonoScript] + +@define(kw_only=True, slots=False) +class NavMeshAgent(Behaviour): + m_Acceleration: float + m_AngularSpeed: float + m_AutoRepath: bool + m_AutoTraverseOffMeshLink: bool + m_BaseOffset: float + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Height: float + m_ObstacleAvoidanceType: int + m_Radius: float + m_Speed: float + m_StoppingDistance: float + m_WalkableMask: int + avoidancePriority: Optional[int] = None + m_AgentTypeID: Optional[int] = None + m_AutoBraking: Optional[bool] = None + +@define(kw_only=True, slots=False) +class NavMeshObstacle(Behaviour): + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Carve: Optional[bool] = None + m_CarveOnlyStationary: Optional[bool] = None + m_Center: Optional[Vector3f] = None + m_Extents: Optional[Vector3f] = None + m_Height: Optional[float] = None + m_MoveThreshold: Optional[float] = None + m_Radius: Optional[float] = None + m_Shape: Optional[int] = None + m_TimeToStationary: Optional[float] = None + +@define(kw_only=True, slots=False) +class NetworkView(Behaviour): + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Observed: PPtr[Component] + m_StateSynchronization: int + m_ViewID: NetworkViewID + +@define(kw_only=True, slots=False) +class OffMeshLink(Behaviour): + m_Activated: bool + m_BiDirectional: bool + m_CostOverride: float + m_End: PPtr[Transform] + m_GameObject: PPtr[GameObject] + m_Start: PPtr[Transform] + m_AgentTypeID: Optional[int] = None + m_AreaIndex: Optional[int] = None + m_AutoUpdatePositions: Optional[bool] = None + m_DtPolyRef: Optional[int] = None + m_Enabled: Optional[int] = None + m_NavMeshLayer: Optional[int] = None + +@define(kw_only=True, slots=False) +class ParticleSystemForceField(Behaviour): + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Parameters: ParticleSystemForceFieldParameters + +@define(kw_only=True, slots=False) +class PhysicsUpdateBehaviour2D(Behaviour): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class ConstantForce2D(PhysicsUpdateBehaviour2D): + m_Enabled: int + m_Force: Vector2f + m_GameObject: PPtr[GameObject] + m_RelativeForce: Vector2f + m_Torque: float + +@define(kw_only=True, slots=False) +class PlayableDirector(Behaviour): + m_DirectorUpdateMode: int + m_Enabled: int + m_ExposedReferences: ExposedReferenceTable + m_GameObject: PPtr[GameObject] + m_InitialState: int + m_InitialTime: float + m_PlayableAsset: PPtr[Object] + m_SceneBindings: List[DirectorGenericBinding] + m_WrapMode: int + +@define(kw_only=True, slots=False) +class Projector(Behaviour): + m_AspectRatio: float + m_Enabled: int + m_FarClipPlane: float + m_FieldOfView: float + m_GameObject: PPtr[GameObject] + m_IgnoreLayers: BitField + m_Material: PPtr[Material] + m_NearClipPlane: float + m_Orthographic: bool + m_OrthographicSize: float + +@define(kw_only=True, slots=False) +class ReflectionProbe(Behaviour): + m_BackGroundColor: ColorRGBA + m_BakedTexture: PPtr[Texture] + m_BoxOffset: Vector3f + m_BoxProjection: bool + m_BoxSize: Vector3f + m_ClearFlags: int + m_CullingMask: BitField + m_CustomBakedTexture: PPtr[Texture] + m_Enabled: int + m_FarClip: float + m_GameObject: PPtr[GameObject] + m_HDR: bool + m_Importance: int + m_IntensityMultiplier: float + m_Mode: int + m_NearClip: float + m_RefreshMode: int + m_RenderDynamicObjects: bool + m_Resolution: int + m_ShadowDistance: float + m_TimeSlicingMode: int + m_Type: int + m_UpdateFrequency: int + m_UseOcclusionCulling: bool + m_BlendDistance: Optional[float] = None + +@define(kw_only=True, slots=False) +class Skybox(Behaviour): + m_CustomSkybox: PPtr[Material] + m_Enabled: int + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class SortingGroup(Behaviour): + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_SortingLayer: int + m_SortingOrder: int + m_SortAtRoot: Optional[bool] = None + m_SortingLayerID: Optional[int] = None + +@define(kw_only=True, slots=False) +class StreamingController(Behaviour): + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_StreamingMipmapBias: float + +@define(kw_only=True, slots=False) +class Terrain(Behaviour): + m_BakeLightProbesForTrees: bool + m_ChunkDynamicUVST: Vector4f + m_DetailObjectDensity: float + m_DetailObjectDistance: float + m_DrawHeightmap: bool + m_DrawTreesAndFoliage: bool + m_DynamicUVST: Vector4f + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_HeightmapMaximumLOD: int + m_HeightmapPixelError: float + m_LightmapIndex: int + m_LightmapIndexDynamic: int + m_LightmapTilingOffset: Vector4f + m_LightmapTilingOffsetDynamic: Vector4f + m_MaterialTemplate: PPtr[Material] + m_ReflectionProbeUsage: int + m_SplatMapDistance: float + m_TerrainData: PPtr[TerrainData] + m_TreeBillboardDistance: float + m_TreeCrossFadeLength: float + m_TreeDistance: float + m_TreeMaximumFullLODCount: int + m_AllowAutoConnect: Optional[bool] = None + m_CastShadows: Optional[bool] = None + m_DefaultSmoothness: Optional[float] = None + m_DrawInstanced: Optional[bool] = None + m_EnableHeightmapRayTracing: Optional[bool] = None + m_EnableTreesAndDetailsRayTracing: Optional[bool] = None + m_ExplicitProbeSetHash: Optional[Hash128] = None + m_GroupingID: Optional[int] = None + m_HeightmapMinimumLODSimplification: Optional[int] = None + m_IgnoreQualitySettings: Optional[bool] = None + m_LegacyShininess: Optional[float] = None + m_LegacySpecular: Optional[ColorRGBA] = None + m_MaterialType: Optional[int] = None + m_PreserveTreePrototypeLayers: Optional[bool] = None + m_RenderingLayerMask: Optional[int] = None + m_ShadowCastingMode: Optional[int] = None + m_StaticShadowCaster: Optional[bool] = None + m_TreeMotionVectorModeOverride: Optional[int] = None + m_UseDefaultSmoothness: Optional[bool] = None + +@define(kw_only=True, slots=False) +class VideoPlayer(Behaviour): + m_AspectRatio: int + m_AudioOutputMode: int + m_ControlledAudioTrackCount: int + m_DataSource: int + m_DirectAudioMutes: List[bool] + m_DirectAudioVolumes: List[float] + m_Enabled: int + m_EnabledAudioTracks: List[bool] + m_FrameReadyEventEnabled: bool + m_GameObject: PPtr[GameObject] + m_Looping: bool + m_PlayOnAwake: bool + m_PlaybackSpeed: float + m_RenderMode: int + m_SkipOnDrop: bool + m_TargetAudioSources: List[PPtr[AudioSource]] + m_TargetCamera: PPtr[Camera] + m_TargetCameraAlpha: float + m_TargetMaterialProperty: str + m_TargetMaterialRenderer: PPtr[Renderer] + m_TargetTexture: PPtr[RenderTexture] + m_Url: str + m_VideoClip: PPtr[VideoClip] + m_WaitForFirstFrame: bool + m_TargetCamera3DLayout: Optional[int] = None + m_TargetMaterialName: Optional[str] = None + m_TimeReference: Optional[int] = None + m_TimeUpdateMode: Optional[int] = None + m_VideoShaders: Optional[List[PPtr[Shader]]] = None + +@define(kw_only=True, slots=False) +class VisualEffect(Behaviour): + m_Asset: PPtr[VisualEffectAsset] + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_PropertySheet: VFXPropertySheetSerializedBase + m_ResetSeedOnPlay: Union[bool, int] + m_StartSeed: int + m_AllowInstancing: Optional[int] = None + m_InitialEventName: Optional[str] = None + m_InitialEventNameOverriden: Optional[int] = None + +@define(kw_only=True, slots=False) +class WindZone(Behaviour): + m_Enabled: int + m_GameObject: PPtr[GameObject] + m_Mode: int + m_Radius: float + m_WindMain: float + m_WindPulseFrequency: float + m_WindPulseMagnitude: float + m_WindTurbulence: float + +@define(kw_only=True, slots=False) +class CanvasRenderer(Component): + m_GameObject: PPtr[GameObject] + m_CullTransparentMesh: Optional[bool] = None + +@define(kw_only=True, slots=False) +class Collider(Component): + m_GameObject: Optional[PPtr[GameObject]] = None + m_MaxLimitX: Optional[float] = None + m_MaxLimitY: Optional[float] = None + m_MaxLimitZ: Optional[float] = None + m_MinLimitX: Optional[float] = None + m_Type: Optional[int] = None + m_X: Optional[xform] = None + m_XMotionType: Optional[int] = None + m_YMotionType: Optional[int] = None + m_ZMotionType: Optional[int] = None + +@define(kw_only=True, slots=False) +class BoxCollider(Collider): + m_Center: Vector3f + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_IsTrigger: bool + m_Material: Union[PPtr[PhysicMaterial], PPtr[PhysicsMaterial]] + m_Size: Vector3f + m_ExcludeLayers: Optional[BitField] = None + m_IncludeLayers: Optional[BitField] = None + m_LayerOverridePriority: Optional[int] = None + m_ProvidesContacts: Optional[bool] = None + +@define(kw_only=True, slots=False) +class CapsuleCollider(Collider): + m_Center: Vector3f + m_Direction: int + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_Height: float + m_IsTrigger: bool + m_Material: Union[PPtr[PhysicMaterial], PPtr[PhysicsMaterial]] + m_Radius: float + m_ExcludeLayers: Optional[BitField] = None + m_IncludeLayers: Optional[BitField] = None + m_LayerOverridePriority: Optional[int] = None + m_ProvidesContacts: Optional[bool] = None + +@define(kw_only=True, slots=False) +class CharacterController(Collider): + m_Center: Vector3f + m_GameObject: PPtr[GameObject] + m_Height: float + m_MinMoveDistance: float + m_Radius: float + m_SkinWidth: float + m_SlopeLimit: float + m_StepOffset: float + m_Enabled: Optional[bool] = None + m_ExcludeLayers: Optional[BitField] = None + m_IncludeLayers: Optional[BitField] = None + m_IsTrigger: Optional[bool] = None + m_LayerOverridePriority: Optional[int] = None + m_Material: Optional[Union[PPtr[PhysicMaterial], PPtr[PhysicsMaterial]]] = None + m_ProvidesContacts: Optional[bool] = None + +@define(kw_only=True, slots=False) +class MeshCollider(Collider): + m_Convex: bool + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_IsTrigger: bool + m_Material: Union[PPtr[PhysicMaterial], PPtr[PhysicsMaterial]] + m_Mesh: PPtr[Mesh] + m_CookingOptions: Optional[int] = None + m_ExcludeLayers: Optional[BitField] = None + m_IncludeLayers: Optional[BitField] = None + m_InflateMesh: Optional[bool] = None + m_LayerOverridePriority: Optional[int] = None + m_ProvidesContacts: Optional[bool] = None + m_SkinWidth: Optional[float] = None + m_SmoothSphereCollisions: Optional[bool] = None + +@define(kw_only=True, slots=False) +class RaycastCollider(Collider): + m_Center: Vector3f + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_IsTrigger: bool + m_Length: float + m_Material: PPtr[PhysicMaterial] + +@define(kw_only=True, slots=False) +class SphereCollider(Collider): + m_Center: Vector3f + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_IsTrigger: bool + m_Material: Union[PPtr[PhysicMaterial], PPtr[PhysicsMaterial]] + m_Radius: float + m_ExcludeLayers: Optional[BitField] = None + m_IncludeLayers: Optional[BitField] = None + m_LayerOverridePriority: Optional[int] = None + m_ProvidesContacts: Optional[bool] = None + +@define(kw_only=True, slots=False) +class TerrainCollider(Collider): + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_TerrainData: PPtr[TerrainData] + m_CreateTreeColliders: Optional[bool] = None + m_EnableTreeColliders: Optional[bool] = None + m_ExcludeLayers: Optional[BitField] = None + m_IncludeLayers: Optional[BitField] = None + m_IsTrigger: Optional[bool] = None + m_LayerOverridePriority: Optional[int] = None + m_Material: Optional[Union[PPtr[PhysicMaterial], PPtr[PhysicsMaterial]]] = None + m_ProvidesContacts: Optional[bool] = None + +@define(kw_only=True, slots=False) +class WheelCollider(Collider): + m_Center: Vector3f + m_ForwardFriction: WheelFrictionCurve + m_GameObject: PPtr[GameObject] + m_Mass: float + m_Radius: float + m_SidewaysFriction: WheelFrictionCurve + m_SuspensionDistance: float + m_SuspensionSpring: JointSpring + m_Enabled: Optional[bool] = None + m_ExcludeLayers: Optional[BitField] = None + m_ForceAppPointDistance: Optional[float] = None + m_IncludeLayers: Optional[BitField] = None + m_LayerOverridePriority: Optional[int] = None + m_ProvidesContacts: Optional[bool] = None + m_WheelDampingRate: Optional[float] = None + +@define(kw_only=True, slots=False) +class FakeComponent(Component): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class Joint(Component): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class CharacterJoint(Joint): + m_Anchor: Vector3f + m_Axis: Vector3f + m_BreakForce: float + m_BreakTorque: float + m_ConnectedBody: PPtr[Rigidbody] + m_GameObject: PPtr[GameObject] + m_HighTwistLimit: SoftJointLimit + m_LowTwistLimit: SoftJointLimit + m_Swing1Limit: SoftJointLimit + m_Swing2Limit: SoftJointLimit + m_SwingAxis: Vector3f + m_AutoConfigureConnectedAnchor: Optional[bool] = None + m_ConnectedAnchor: Optional[Vector3f] = None + m_ConnectedArticulationBody: Optional[PPtr[ArticulationBody]] = None + m_ConnectedMassScale: Optional[float] = None + m_EnableCollision: Optional[bool] = None + m_EnablePreprocessing: Optional[bool] = None + m_EnableProjection: Optional[bool] = None + m_Enabled: Optional[bool] = None + m_MassScale: Optional[float] = None + m_ProjectionAngle: Optional[float] = None + m_ProjectionDistance: Optional[float] = None + m_SwingLimitSpring: Optional[SoftJointLimitSpring] = None + m_TwistLimitSpring: Optional[SoftJointLimitSpring] = None + +@define(kw_only=True, slots=False) +class ConfigurableJoint(Joint): + m_Anchor: Vector3f + m_AngularXDrive: JointDrive + m_AngularXMotion: int + m_AngularYLimit: SoftJointLimit + m_AngularYMotion: int + m_AngularYZDrive: JointDrive + m_AngularZLimit: SoftJointLimit + m_AngularZMotion: int + m_Axis: Vector3f + m_BreakForce: float + m_BreakTorque: float + m_ConfiguredInWorldSpace: bool + m_ConnectedBody: PPtr[Rigidbody] + m_GameObject: PPtr[GameObject] + m_HighAngularXLimit: SoftJointLimit + m_LinearLimit: SoftJointLimit + m_LowAngularXLimit: SoftJointLimit + m_ProjectionAngle: float + m_ProjectionDistance: float + m_ProjectionMode: int + m_RotationDriveMode: int + m_SecondaryAxis: Vector3f + m_SlerpDrive: JointDrive + m_TargetAngularVelocity: Vector3f + m_TargetPosition: Vector3f + m_TargetRotation: Quaternionf + m_TargetVelocity: Vector3f + m_XDrive: JointDrive + m_XMotion: int + m_YDrive: JointDrive + m_YMotion: int + m_ZDrive: JointDrive + m_ZMotion: int + m_AngularXLimitSpring: Optional[SoftJointLimitSpring] = None + m_AngularYZLimitSpring: Optional[SoftJointLimitSpring] = None + m_AutoConfigureConnectedAnchor: Optional[bool] = None + m_ConnectedAnchor: Optional[Vector3f] = None + m_ConnectedArticulationBody: Optional[PPtr[ArticulationBody]] = None + m_ConnectedMassScale: Optional[float] = None + m_EnableCollision: Optional[bool] = None + m_EnablePreprocessing: Optional[bool] = None + m_Enabled: Optional[bool] = None + m_LinearLimitSpring: Optional[SoftJointLimitSpring] = None + m_MassScale: Optional[float] = None + m_SwapBodies: Optional[bool] = None + +@define(kw_only=True, slots=False) +class FixedJoint(Joint): + m_BreakForce: float + m_BreakTorque: float + m_ConnectedBody: PPtr[Rigidbody] + m_GameObject: PPtr[GameObject] + m_ConnectedArticulationBody: Optional[PPtr[ArticulationBody]] = None + m_ConnectedMassScale: Optional[float] = None + m_EnableCollision: Optional[bool] = None + m_EnablePreprocessing: Optional[bool] = None + m_Enabled: Optional[bool] = None + m_MassScale: Optional[float] = None + +@define(kw_only=True, slots=False) +class HingeJoint(Joint): + m_Anchor: Vector3f + m_Axis: Vector3f + m_BreakForce: float + m_BreakTorque: float + m_ConnectedBody: PPtr[Rigidbody] + m_GameObject: PPtr[GameObject] + m_Limits: JointLimits + m_Motor: JointMotor + m_Spring: JointSpring + m_UseLimits: bool + m_UseMotor: bool + m_UseSpring: bool + m_AutoConfigureConnectedAnchor: Optional[bool] = None + m_ConnectedAnchor: Optional[Vector3f] = None + m_ConnectedArticulationBody: Optional[PPtr[ArticulationBody]] = None + m_ConnectedMassScale: Optional[float] = None + m_EnableCollision: Optional[bool] = None + m_EnablePreprocessing: Optional[bool] = None + m_Enabled: Optional[bool] = None + m_ExtendedLimits: Optional[bool] = None + m_MassScale: Optional[float] = None + m_UseAcceleration: Optional[bool] = None + +@define(kw_only=True, slots=False) +class SpringJoint(Joint): + m_Anchor: Vector3f + m_BreakForce: float + m_BreakTorque: float + m_ConnectedBody: PPtr[Rigidbody] + m_Damper: float + m_GameObject: PPtr[GameObject] + m_MaxDistance: float + m_MinDistance: float + m_Spring: float + m_AutoConfigureConnectedAnchor: Optional[bool] = None + m_Axis: Optional[Vector3f] = None + m_ConnectedAnchor: Optional[Vector3f] = None + m_ConnectedArticulationBody: Optional[PPtr[ArticulationBody]] = None + m_ConnectedMassScale: Optional[float] = None + m_EnableCollision: Optional[bool] = None + m_EnablePreprocessing: Optional[bool] = None + m_Enabled: Optional[bool] = None + m_MassScale: Optional[float] = None + m_Tolerance: Optional[float] = None + +@define(kw_only=True, slots=False) +class LODGroup(Component): + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_LODs: List[LOD] + m_LocalReferencePoint: Vector3f + m_Size: float + m_AnimateCrossFading: Optional[bool] = None + m_FadeMode: Optional[int] = None + m_LastLODIsBillboard: Optional[bool] = None + m_ScreenRelativeTransitionHeight: Optional[float] = None + +@define(kw_only=True, slots=False) +class MeshFilter(Component): + m_GameObject: PPtr[GameObject] + m_Mesh: PPtr[Mesh] + +@define(kw_only=True, slots=False) +class MultiplayerRolesData(Component): + m_ComponentsRolesMasks: List[ObjectRolePair] + m_GameObject: PPtr[GameObject] + m_GameObjectRolesMask: int + +@define(kw_only=True, slots=False) +class OcclusionArea(Component): + m_Center: Vector3f + m_GameObject: PPtr[GameObject] + m_IsViewVolume: bool + m_Size: Vector3f + m_IsTargetVolume: Optional[bool] = None + m_TargetResolution: Optional[int] = None + +@define(kw_only=True, slots=False) +class OcclusionPortal(Component): + m_Center: Vector3f + m_GameObject: PPtr[GameObject] + m_Open: bool + m_Size: Vector3f + +@define(kw_only=True, slots=False) +class ParticleAnimator(Component): + Does_Animate_Color: bool + autodestruct: bool + colorAnimation_0_: ColorRGBA + colorAnimation_1_: ColorRGBA + colorAnimation_2_: ColorRGBA + colorAnimation_3_: ColorRGBA + colorAnimation_4_: ColorRGBA + damping: float + force: Vector3f + localRotationAxis: Vector3f + m_GameObject: PPtr[GameObject] + rndForce: Vector3f + sizeGrow: float + stopSimulation: bool + worldRotationAxis: Vector3f + +@define(kw_only=True, slots=False) +class ParticleEmitter(Component): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class EllipsoidParticleEmitter(ParticleEmitter): + Simulate_in_Worldspace: bool + angularVelocity: float + emitterVelocityScale: float + localVelocity: Vector3f + m_Ellipsoid: Vector3f + m_Emit: bool + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_MinEmitterRange: float + m_OneShot: bool + maxEmission: float + maxEnergy: float + maxSize: float + minEmission: float + minEnergy: float + minSize: float + rndAngularVelocity: float + rndRotation: bool + rndVelocity: Vector3f + tangentVelocity: Vector3f + worldVelocity: Vector3f + +@define(kw_only=True, slots=False) +class MeshParticleEmitter(ParticleEmitter): + Simulate_in_Worldspace: bool + angularVelocity: float + emitterVelocityScale: float + localVelocity: Vector3f + m_Emit: bool + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_InterpolateTriangles: bool + m_MaxNormalVelocity: float + m_Mesh: PPtr[Mesh] + m_MinNormalVelocity: float + m_OneShot: bool + m_Systematic: bool + maxEmission: float + maxEnergy: float + maxSize: float + minEmission: float + minEnergy: float + minSize: float + rndAngularVelocity: float + rndRotation: bool + rndVelocity: Vector3f + tangentVelocity: Vector3f + worldVelocity: Vector3f + +@define(kw_only=True, slots=False) +class ParticleSystem(Component): + ClampVelocityModule: ClampVelocityModule + CollisionModule: CollisionModule + ColorBySpeedModule: ColorBySpeedModule + ColorModule: ColorModule + EmissionModule: EmissionModule + ForceModule: ForceModule + InitialModule: InitialModule + RotationBySpeedModule: RotationBySpeedModule + RotationModule: RotationModule + ShapeModule: ShapeModule + SizeBySpeedModule: SizeBySpeedModule + SizeModule: SizeModule + SubModule: SubModule + UVModule: UVModule + VelocityModule: VelocityModule + lengthInSec: float + looping: bool + m_GameObject: PPtr[GameObject] + moveWithTransform: Union[bool, int] + playOnAwake: bool + prewarm: bool + randomSeed: int + startDelay: Union[MinMaxCurve, float] + CustomDataModule: Optional[CustomDataModule] = None + ExternalForcesModule: Optional[ExternalForcesModule] = None + InheritVelocityModule: Optional[InheritVelocityModule] = None + LifetimeByEmitterSpeedModule: Optional[LifetimeByEmitterSpeedModule] = None + LightsModule: Optional[LightsModule] = None + NoiseModule: Optional[NoiseModule] = None + TrailModule: Optional[TrailModule] = None + TriggerModule: Optional[TriggerModule] = None + autoRandomSeed: Optional[bool] = None + cullingMode: Optional[int] = None + emitterVelocityMode: Optional[int] = None + moveWithCustomTransform: Optional[PPtr[Transform]] = None + ringBufferLoopRange: Optional[Vector2f] = None + ringBufferMode: Optional[int] = None + scalingMode: Optional[int] = None + simulationSpeed: Optional[float] = None + speed: Optional[float] = None + stopAction: Optional[int] = None + useRigidbodyForVelocity: Optional[bool] = None + useUnscaledTime: Optional[bool] = None + +@define(kw_only=True, slots=False) +class Pipeline(Component): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class Renderer(Component): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class BillboardRenderer(Renderer): + m_Billboard: PPtr[BillboardAsset] + m_CastShadows: int + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_LightmapIndex: int + m_LightmapIndexDynamic: int + m_LightmapTilingOffset: Vector4f + m_LightmapTilingOffsetDynamic: Vector4f + m_Materials: List[PPtr[Material]] + m_ProbeAnchor: PPtr[Transform] + m_ReceiveShadows: Union[bool, int] + m_ReflectionProbeUsage: int + m_SortingOrder: int + m_StaticBatchRoot: PPtr[Transform] + m_DynamicOccludee: Optional[int] = None + m_LightProbeUsage: Optional[int] = None + m_LightProbeVolumeOverride: Optional[PPtr[GameObject]] = None + m_MotionVectors: Optional[int] = None + m_RayTraceProcedural: Optional[int] = None + m_RayTracingAccelStructBuildFlags: Optional[int] = None + m_RayTracingAccelStructBuildFlagsOverride: Optional[int] = None + m_RayTracingMode: Optional[int] = None + m_RendererPriority: Optional[int] = None + m_RenderingLayerMask: Optional[int] = None + m_SmallMeshCulling: Optional[int] = None + m_SortingLayer: Optional[int] = None + m_SortingLayerID: Optional[int] = None + m_StaticBatchInfo: Optional[StaticBatchInfo] = None + m_StaticShadowCaster: Optional[int] = None + m_SubsetIndices: Optional[List[int]] = None + m_UseLightProbes: Optional[bool] = None + +@define(kw_only=True, slots=False) +class ClothRenderer(Renderer): + m_CastShadows: bool + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_LightmapIndex: int + m_LightmapTilingOffset: Vector4f + m_Materials: List[PPtr[Material]] + m_PauseWhenNotVisible: bool + m_ReceiveShadows: bool + m_StaticBatchRoot: PPtr[Transform] + m_SubsetIndices: List[int] + m_LightProbeAnchor: Optional[PPtr[Transform]] = None + m_SortingLayer: Optional[int] = None + m_SortingLayerID: Optional[int] = None + m_SortingOrder: Optional[int] = None + m_UseLightProbes: Optional[bool] = None + +@define(kw_only=True, slots=False) +class LineRenderer(Renderer): + m_CastShadows: Union[bool, int] + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_LightmapIndex: int + m_LightmapTilingOffset: Vector4f + m_Materials: List[PPtr[Material]] + m_Parameters: LineParameters + m_Positions: List[Vector3f] + m_ReceiveShadows: Union[bool, int] + m_StaticBatchRoot: PPtr[Transform] + m_UseWorldSpace: bool + m_ApplyActiveColorSpace: Optional[bool] = None + m_DynamicOccludee: Optional[int] = None + m_LightProbeAnchor: Optional[PPtr[Transform]] = None + m_LightProbeUsage: Optional[int] = None + m_LightProbeVolumeOverride: Optional[PPtr[GameObject]] = None + m_LightmapIndexDynamic: Optional[int] = None + m_LightmapTilingOffsetDynamic: Optional[Vector4f] = None + m_Loop: Optional[bool] = None + m_MaskInteraction: Optional[int] = None + m_MotionVectors: Optional[int] = None + m_ProbeAnchor: Optional[PPtr[Transform]] = None + m_RayTraceProcedural: Optional[int] = None + m_RayTracingAccelStructBuildFlags: Optional[int] = None + m_RayTracingAccelStructBuildFlagsOverride: Optional[int] = None + m_RayTracingMode: Optional[int] = None + m_ReflectionProbeUsage: Optional[int] = None + m_RendererPriority: Optional[int] = None + m_RenderingLayerMask: Optional[int] = None + m_SmallMeshCulling: Optional[int] = None + m_SortingLayer: Optional[int] = None + m_SortingLayerID: Optional[int] = None + m_SortingOrder: Optional[int] = None + m_StaticBatchInfo: Optional[StaticBatchInfo] = None + m_StaticShadowCaster: Optional[int] = None + m_SubsetIndices: Optional[List[int]] = None + m_UseLightProbes: Optional[bool] = None + +@define(kw_only=True, slots=False) +class RendererFake(LineRenderer): + m_CastShadows: int + m_DynamicOccludee: int + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_LightProbeUsage: int + m_LightProbeVolumeOverride: PPtr[GameObject] + m_LightmapIndex: int + m_LightmapIndexDynamic: int + m_LightmapTilingOffset: Vector4f + m_LightmapTilingOffsetDynamic: Vector4f + m_Loop: bool + m_Materials: List[PPtr[Material]] + m_MotionVectors: int + m_Parameters: LineParameters + m_Positions: List[Vector3f] + m_ProbeAnchor: PPtr[Transform] + m_ReceiveShadows: int + m_ReflectionProbeUsage: int + m_RendererPriority: int + m_RenderingLayerMask: int + m_SortingLayer: int + m_SortingLayerID: int + m_SortingOrder: int + m_StaticBatchInfo: StaticBatchInfo + m_StaticBatchRoot: PPtr[Transform] + m_UseWorldSpace: bool + m_RayTraceProcedural: Optional[int] = None + m_RayTracingMode: Optional[int] = None + +@define(kw_only=True, slots=False) +class MeshRenderer(Renderer): + m_CastShadows: Union[bool, int] + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_LightmapIndex: int + m_LightmapTilingOffset: Vector4f + m_Materials: List[PPtr[Material]] + m_ReceiveShadows: Union[bool, int] + m_StaticBatchRoot: PPtr[Transform] + m_AdditionalVertexStreams: Optional[PPtr[Mesh]] = None + m_DynamicOccludee: Optional[int] = None + m_EnlightenVertexStream: Optional[PPtr[Mesh]] = None + m_LightProbeAnchor: Optional[PPtr[Transform]] = None + m_LightProbeUsage: Optional[int] = None + m_LightProbeVolumeOverride: Optional[PPtr[GameObject]] = None + m_LightmapIndexDynamic: Optional[int] = None + m_LightmapTilingOffsetDynamic: Optional[Vector4f] = None + m_MotionVectors: Optional[int] = None + m_ProbeAnchor: Optional[PPtr[Transform]] = None + m_RayTraceProcedural: Optional[int] = None + m_RayTracingAccelStructBuildFlags: Optional[int] = None + m_RayTracingAccelStructBuildFlagsOverride: Optional[int] = None + m_RayTracingMode: Optional[int] = None + m_ReflectionProbeUsage: Optional[int] = None + m_RendererPriority: Optional[int] = None + m_RenderingLayerMask: Optional[int] = None + m_SmallMeshCulling: Optional[int] = None + m_SortingLayer: Optional[int] = None + m_SortingLayerID: Optional[int] = None + m_SortingOrder: Optional[int] = None + m_StaticBatchInfo: Optional[StaticBatchInfo] = None + m_StaticShadowCaster: Optional[int] = None + m_SubsetIndices: Optional[List[int]] = None + m_UseLightProbes: Optional[bool] = None + +@define(kw_only=True, slots=False) +class ParticleRenderer(Renderer): + UV_Animation: UVAnimation + m_CameraVelocityScale: float + m_CastShadows: Union[bool, int] + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_LengthScale: float + m_LightmapIndex: int + m_LightmapTilingOffset: Vector4f + m_Materials: List[PPtr[Material]] + m_MaxParticleSize: float + m_ReceiveShadows: Union[bool, int] + m_StaticBatchRoot: PPtr[Transform] + m_StretchParticles: int + m_VelocityScale: float + m_DynamicOccludee: Optional[int] = None + m_LightProbeAnchor: Optional[PPtr[Transform]] = None + m_LightProbeUsage: Optional[int] = None + m_LightProbeVolumeOverride: Optional[PPtr[GameObject]] = None + m_LightmapIndexDynamic: Optional[int] = None + m_LightmapTilingOffsetDynamic: Optional[Vector4f] = None + m_MotionVectors: Optional[int] = None + m_ProbeAnchor: Optional[PPtr[Transform]] = None + m_ReflectionProbeUsage: Optional[int] = None + m_RenderingLayerMask: Optional[int] = None + m_SortingLayer: Optional[int] = None + m_SortingLayerID: Optional[int] = None + m_SortingOrder: Optional[int] = None + m_StaticBatchInfo: Optional[StaticBatchInfo] = None + m_SubsetIndices: Optional[List[int]] = None + m_UseLightProbes: Optional[bool] = None + +@define(kw_only=True, slots=False) +class ParticleSystemRenderer(Renderer): + m_CameraVelocityScale: float + m_CastShadows: Union[bool, int] + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_LengthScale: float + m_LightmapIndex: int + m_LightmapTilingOffset: Vector4f + m_Materials: List[PPtr[Material]] + m_MaxParticleSize: float + m_Mesh: PPtr[Mesh] + m_ReceiveShadows: Union[bool, int] + m_RenderMode: int + m_SortMode: int + m_SortingFudge: float + m_StaticBatchRoot: PPtr[Transform] + m_VelocityScale: float + m_AllowRoll: Optional[bool] = None + m_ApplyActiveColorSpace: Optional[bool] = None + m_DynamicOccludee: Optional[int] = None + m_EnableGPUInstancing: Optional[bool] = None + m_Flip: Optional[Vector3f] = None + m_FreeformStretching: Optional[bool] = None + m_LightProbeAnchor: Optional[PPtr[Transform]] = None + m_LightProbeUsage: Optional[int] = None + m_LightProbeVolumeOverride: Optional[PPtr[GameObject]] = None + m_LightmapIndexDynamic: Optional[int] = None + m_LightmapTilingOffsetDynamic: Optional[Vector4f] = None + m_MaskInteraction: Optional[int] = None + m_Mesh1: Optional[PPtr[Mesh]] = None + m_Mesh2: Optional[PPtr[Mesh]] = None + m_Mesh3: Optional[PPtr[Mesh]] = None + m_MeshDistribution: Optional[int] = None + m_MeshWeighting: Optional[float] = None + m_MeshWeighting1: Optional[float] = None + m_MeshWeighting2: Optional[float] = None + m_MeshWeighting3: Optional[float] = None + m_MinParticleSize: Optional[float] = None + m_MotionVectors: Optional[int] = None + m_NormalDirection: Optional[float] = None + m_Pivot: Optional[Vector3f] = None + m_ProbeAnchor: Optional[PPtr[Transform]] = None + m_RayTraceProcedural: Optional[int] = None + m_RayTracingAccelStructBuildFlags: Optional[int] = None + m_RayTracingAccelStructBuildFlagsOverride: Optional[int] = None + m_RayTracingMode: Optional[int] = None + m_ReflectionProbeUsage: Optional[int] = None + m_RenderAlignment: Optional[int] = None + m_RendererPriority: Optional[int] = None + m_RenderingLayerMask: Optional[int] = None + m_RotateWithStretchDirection: Optional[bool] = None + m_ShadowBias: Optional[float] = None + m_SmallMeshCulling: Optional[int] = None + m_SortingLayer: Optional[int] = None + m_SortingLayerID: Optional[int] = None + m_SortingOrder: Optional[int] = None + m_StaticBatchInfo: Optional[StaticBatchInfo] = None + m_StaticShadowCaster: Optional[int] = None + m_SubsetIndices: Optional[List[int]] = None + m_TrailVertexStreams: Optional[List[int]] = None + m_UseCustomTrailVertexStreams: Optional[bool] = None + m_UseCustomVertexStreams: Optional[bool] = None + m_UseLightProbes: Optional[bool] = None + m_VertexStreamMask: Optional[int] = None + m_VertexStreams: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class SkinnedMeshRenderer(Renderer): + m_AABB: AABB + m_Bones: List[PPtr[Transform]] + m_CastShadows: Union[bool, int] + m_DirtyAABB: bool + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_LightmapIndex: int + m_LightmapTilingOffset: Vector4f + m_Materials: List[PPtr[Material]] + m_Mesh: PPtr[Mesh] + m_Quality: int + m_ReceiveShadows: Union[bool, int] + m_StaticBatchRoot: PPtr[Transform] + m_UpdateWhenOffscreen: bool + m_BlendShapeWeights: Optional[List[float]] = None + m_DynamicOccludee: Optional[int] = None + m_LightProbeAnchor: Optional[PPtr[Transform]] = None + m_LightProbeUsage: Optional[int] = None + m_LightProbeVolumeOverride: Optional[PPtr[GameObject]] = None + m_LightmapIndexDynamic: Optional[int] = None + m_LightmapTilingOffsetDynamic: Optional[Vector4f] = None + m_MotionVectors: Optional[int] = None + m_ProbeAnchor: Optional[PPtr[Transform]] = None + m_RayTraceProcedural: Optional[int] = None + m_RayTracingAccelStructBuildFlags: Optional[int] = None + m_RayTracingAccelStructBuildFlagsOverride: Optional[int] = None + m_RayTracingMode: Optional[int] = None + m_ReflectionProbeUsage: Optional[int] = None + m_RendererPriority: Optional[int] = None + m_RenderingLayerMask: Optional[int] = None + m_RootBone: Optional[PPtr[Transform]] = None + m_SkinnedMotionVectors: Optional[bool] = None + m_SmallMeshCulling: Optional[int] = None + m_SortingLayer: Optional[int] = None + m_SortingLayerID: Optional[int] = None + m_SortingOrder: Optional[int] = None + m_StaticBatchInfo: Optional[StaticBatchInfo] = None + m_StaticShadowCaster: Optional[int] = None + m_SubsetIndices: Optional[List[int]] = None + m_UseLightProbes: Optional[bool] = None + +@define(kw_only=True, slots=False) +class SpriteMask(Renderer): + m_BackSortingLayer: int + m_BackSortingOrder: int + m_CastShadows: int + m_Enabled: bool + m_FrontSortingLayer: int + m_FrontSortingOrder: int + m_GameObject: PPtr[GameObject] + m_IsCustomRangeActive: bool + m_LightProbeUsage: int + m_LightProbeVolumeOverride: PPtr[GameObject] + m_LightmapIndex: int + m_LightmapIndexDynamic: int + m_LightmapTilingOffset: Vector4f + m_LightmapTilingOffsetDynamic: Vector4f + m_MaskAlphaCutoff: float + m_Materials: List[PPtr[Material]] + m_MotionVectors: int + m_ProbeAnchor: PPtr[Transform] + m_ReceiveShadows: int + m_ReflectionProbeUsage: int + m_SortingLayer: int + m_SortingLayerID: int + m_SortingOrder: int + m_Sprite: PPtr[Sprite] + m_StaticBatchInfo: StaticBatchInfo + m_StaticBatchRoot: PPtr[Transform] + m_BackSortingLayerID: Optional[int] = None + m_DynamicOccludee: Optional[int] = None + m_FrontSortingLayerID: Optional[int] = None + m_MaskSource: Optional[int] = None + m_RayTraceProcedural: Optional[int] = None + m_RayTracingAccelStructBuildFlags: Optional[int] = None + m_RayTracingAccelStructBuildFlagsOverride: Optional[int] = None + m_RayTracingMode: Optional[int] = None + m_RendererPriority: Optional[int] = None + m_RenderingLayerMask: Optional[int] = None + m_SmallMeshCulling: Optional[int] = None + m_SpriteSortPoint: Optional[int] = None + m_StaticShadowCaster: Optional[int] = None + +@define(kw_only=True, slots=False) +class SpriteRenderer(Renderer): + m_CastShadows: Union[bool, int] + m_Color: ColorRGBA + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_LightmapIndex: int + m_LightmapTilingOffset: Vector4f + m_Materials: List[PPtr[Material]] + m_ReceiveShadows: Union[bool, int] + m_SortingOrder: int + m_Sprite: PPtr[Sprite] + m_StaticBatchRoot: PPtr[Transform] + m_AdaptiveModeThreshold: Optional[float] = None + m_DrawMode: Optional[int] = None + m_DynamicOccludee: Optional[int] = None + m_FlipX: Optional[bool] = None + m_FlipY: Optional[bool] = None + m_LightProbeAnchor: Optional[PPtr[Transform]] = None + m_LightProbeUsage: Optional[int] = None + m_LightProbeVolumeOverride: Optional[PPtr[GameObject]] = None + m_LightmapIndexDynamic: Optional[int] = None + m_LightmapTilingOffsetDynamic: Optional[Vector4f] = None + m_MaskInteraction: Optional[int] = None + m_MotionVectors: Optional[int] = None + m_ProbeAnchor: Optional[PPtr[Transform]] = None + m_RayTraceProcedural: Optional[int] = None + m_RayTracingAccelStructBuildFlags: Optional[int] = None + m_RayTracingAccelStructBuildFlagsOverride: Optional[int] = None + m_RayTracingMode: Optional[int] = None + m_ReflectionProbeUsage: Optional[int] = None + m_RendererPriority: Optional[int] = None + m_RenderingLayerMask: Optional[int] = None + m_Size: Optional[Vector2f] = None + m_SmallMeshCulling: Optional[int] = None + m_SortingLayer: Optional[int] = None + m_SortingLayerID: Optional[int] = None + m_SpriteSortPoint: Optional[int] = None + m_SpriteTileMode: Optional[int] = None + m_StaticBatchInfo: Optional[StaticBatchInfo] = None + m_StaticShadowCaster: Optional[int] = None + m_SubsetIndices: Optional[List[int]] = None + m_UseLightProbes: Optional[bool] = None + m_WasSpriteAssigned: Optional[bool] = None + +@define(kw_only=True, slots=False) +class SpriteShapeRenderer(Renderer): + m_CastShadows: int + m_Color: ColorRGBA + m_DynamicOccludee: int + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_LightProbeUsage: int + m_LightProbeVolumeOverride: PPtr[GameObject] + m_LightmapIndex: int + m_LightmapIndexDynamic: int + m_LightmapTilingOffset: Vector4f + m_LightmapTilingOffsetDynamic: Vector4f + m_LocalAABB: AABB + m_MaskInteraction: int + m_Materials: List[PPtr[Material]] + m_MotionVectors: int + m_ProbeAnchor: PPtr[Transform] + m_ReceiveShadows: int + m_ReflectionProbeUsage: int + m_RenderingLayerMask: int + m_ShapeTexture: PPtr[Texture2D] + m_SortingLayer: int + m_SortingLayerID: int + m_SortingOrder: int + m_Sprites: List[PPtr[Sprite]] + m_StaticBatchInfo: StaticBatchInfo + m_StaticBatchRoot: PPtr[Transform] + m_RayTraceProcedural: Optional[int] = None + m_RayTracingAccelStructBuildFlags: Optional[int] = None + m_RayTracingAccelStructBuildFlagsOverride: Optional[int] = None + m_RayTracingMode: Optional[int] = None + m_RendererPriority: Optional[int] = None + m_SmallMeshCulling: Optional[int] = None + m_SpriteSortPoint: Optional[int] = None + m_StaticShadowCaster: Optional[int] = None + +@define(kw_only=True, slots=False) +class TilemapRenderer(Renderer): + m_CastShadows: int + m_ChunkSize: int3_storage + m_DynamicOccludee: int + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_LightProbeUsage: int + m_LightProbeVolumeOverride: PPtr[GameObject] + m_LightmapIndex: int + m_LightmapIndexDynamic: int + m_LightmapTilingOffset: Vector4f + m_LightmapTilingOffsetDynamic: Vector4f + m_MaskInteraction: int + m_Materials: List[PPtr[Material]] + m_MaxChunkCount: int + m_MaxFrameAge: int + m_MotionVectors: int + m_ProbeAnchor: PPtr[Transform] + m_ReceiveShadows: int + m_ReflectionProbeUsage: int + m_SortOrder: int + m_SortingLayer: int + m_SortingLayerID: int + m_SortingOrder: int + m_StaticBatchInfo: StaticBatchInfo + m_StaticBatchRoot: PPtr[Transform] + m_ChunkCullingBounds: Optional[Vector3f] = None + m_DetectChunkCullingBounds: Optional[int] = None + m_Mode: Optional[int] = None + m_RayTraceProcedural: Optional[int] = None + m_RayTracingAccelStructBuildFlags: Optional[int] = None + m_RayTracingAccelStructBuildFlagsOverride: Optional[int] = None + m_RayTracingMode: Optional[int] = None + m_RendererPriority: Optional[int] = None + m_RenderingLayerMask: Optional[int] = None + m_SmallMeshCulling: Optional[int] = None + m_StaticShadowCaster: Optional[int] = None + +@define(kw_only=True, slots=False) +class TrailRenderer(Renderer): + m_Autodestruct: bool + m_CastShadows: Union[bool, int] + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_LightmapIndex: int + m_LightmapTilingOffset: Vector4f + m_Materials: List[PPtr[Material]] + m_MinVertexDistance: float + m_ReceiveShadows: Union[bool, int] + m_StaticBatchRoot: PPtr[Transform] + m_Time: float + m_ApplyActiveColorSpace: Optional[bool] = None + m_Colors: Optional[Gradient] = None + m_DynamicOccludee: Optional[int] = None + m_Emitting: Optional[bool] = None + m_EndWidth: Optional[float] = None + m_LightProbeAnchor: Optional[PPtr[Transform]] = None + m_LightProbeUsage: Optional[int] = None + m_LightProbeVolumeOverride: Optional[PPtr[GameObject]] = None + m_LightmapIndexDynamic: Optional[int] = None + m_LightmapTilingOffsetDynamic: Optional[Vector4f] = None + m_MaskInteraction: Optional[int] = None + m_MotionVectors: Optional[int] = None + m_Parameters: Optional[LineParameters] = None + m_ProbeAnchor: Optional[PPtr[Transform]] = None + m_RayTraceProcedural: Optional[int] = None + m_RayTracingAccelStructBuildFlags: Optional[int] = None + m_RayTracingAccelStructBuildFlagsOverride: Optional[int] = None + m_RayTracingMode: Optional[int] = None + m_ReflectionProbeUsage: Optional[int] = None + m_RendererPriority: Optional[int] = None + m_RenderingLayerMask: Optional[int] = None + m_SmallMeshCulling: Optional[int] = None + m_SortingLayer: Optional[int] = None + m_SortingLayerID: Optional[int] = None + m_SortingOrder: Optional[int] = None + m_StartWidth: Optional[float] = None + m_StaticBatchInfo: Optional[StaticBatchInfo] = None + m_StaticShadowCaster: Optional[int] = None + m_SubsetIndices: Optional[List[int]] = None + m_UseLightProbes: Optional[bool] = None + +@define(kw_only=True, slots=False) +class UIRenderer(Renderer): + m_GameObject: PPtr[GameObject] + m_CastShadows: Optional[int] = None + m_DynamicOccludee: Optional[int] = None + m_Enabled: Optional[bool] = None + m_LightProbeUsage: Optional[int] = None + m_LightProbeVolumeOverride: Optional[PPtr[GameObject]] = None + m_LightmapIndex: Optional[int] = None + m_LightmapIndexDynamic: Optional[int] = None + m_LightmapTilingOffset: Optional[Vector4f] = None + m_LightmapTilingOffsetDynamic: Optional[Vector4f] = None + m_Materials: Optional[List[PPtr[Material]]] = None + m_MotionVectors: Optional[int] = None + m_ProbeAnchor: Optional[PPtr[Transform]] = None + m_RayTraceProcedural: Optional[int] = None + m_RayTracingAccelStructBuildFlags: Optional[int] = None + m_RayTracingAccelStructBuildFlagsOverride: Optional[int] = None + m_RayTracingMode: Optional[int] = None + m_ReceiveShadows: Optional[int] = None + m_ReflectionProbeUsage: Optional[int] = None + m_RendererPriority: Optional[int] = None + m_RenderingLayerMask: Optional[int] = None + m_SmallMeshCulling: Optional[int] = None + m_SortingLayer: Optional[int] = None + m_SortingLayerID: Optional[int] = None + m_SortingOrder: Optional[int] = None + m_StaticBatchInfo: Optional[StaticBatchInfo] = None + m_StaticBatchRoot: Optional[PPtr[Transform]] = None + m_StaticShadowCaster: Optional[int] = None + +@define(kw_only=True, slots=False) +class VFXRenderer(Renderer): + m_CastShadows: int + m_DynamicOccludee: int + m_Enabled: bool + m_GameObject: PPtr[GameObject] + m_LightProbeUsage: int + m_LightProbeVolumeOverride: PPtr[GameObject] + m_LightmapIndex: int + m_LightmapIndexDynamic: int + m_LightmapTilingOffset: Vector4f + m_LightmapTilingOffsetDynamic: Vector4f + m_MotionVectors: int + m_ProbeAnchor: PPtr[Transform] + m_ReceiveShadows: int + m_ReflectionProbeUsage: int + m_RendererPriority: int + m_RenderingLayerMask: int + m_SortingLayer: int + m_SortingLayerID: int + m_SortingOrder: int + m_StaticBatchInfo: StaticBatchInfo + m_StaticBatchRoot: PPtr[Transform] + m_Materials: Optional[List[PPtr[Material]]] = None + m_RayTraceProcedural: Optional[int] = None + m_RayTracingAccelStructBuildFlags: Optional[int] = None + m_RayTracingAccelStructBuildFlagsOverride: Optional[int] = None + m_RayTracingMode: Optional[int] = None + m_SmallMeshCulling: Optional[int] = None + m_StaticShadowCaster: Optional[int] = None + +@define(kw_only=True, slots=False) +class Rigidbody(Component): + m_AngularDrag: float + m_CollisionDetection: int + m_Constraints: int + m_Drag: float + m_GameObject: PPtr[GameObject] + m_Interpolate: int + m_IsKinematic: bool + m_Mass: float + m_UseGravity: bool + m_CenterOfMass: Optional[Vector3f] = None + m_ExcludeLayers: Optional[BitField] = None + m_ImplicitCom: Optional[bool] = None + m_ImplicitTensor: Optional[bool] = None + m_IncludeLayers: Optional[BitField] = None + m_InertiaRotation: Optional[Quaternionf] = None + m_InertiaTensor: Optional[Vector3f] = None + +@define(kw_only=True, slots=False) +class Rigidbody2D(Component): + m_CollisionDetection: int + m_GameObject: PPtr[GameObject] + m_GravityScale: float + m_Interpolate: int + m_Mass: float + m_SleepingMode: int + m_AngularDamping: Optional[float] = None + m_AngularDrag: Optional[float] = None + m_BodyType: Optional[int] = None + m_Constraints: Optional[int] = None + m_ExcludeLayers: Optional[BitField] = None + m_FixedAngle: Optional[bool] = None + m_IncludeLayers: Optional[BitField] = None + m_IsKinematic: Optional[bool] = None + m_LinearDamping: Optional[float] = None + m_LinearDrag: Optional[float] = None + m_Material: Optional[PPtr[PhysicsMaterial2D]] = None + m_Simulated: Optional[bool] = None + m_UseAutoMass: Optional[bool] = None + m_UseFullKinematicContacts: Optional[bool] = None + +@define(kw_only=True, slots=False) +class TextMesh(Component): + m_Alignment: int + m_Anchor: int + m_CharacterSize: float + m_Font: PPtr[Font] + m_FontSize: int + m_FontStyle: int + m_GameObject: PPtr[GameObject] + m_LineSpacing: float + m_OffsetZ: float + m_TabSize: float + m_Text: str + m_Color: Optional[ColorRGBA] = None + m_RichText: Optional[bool] = None + +@define(kw_only=True, slots=False) +class Transform(Component): + m_Children: List[PPtr[Transform]] + m_Father: PPtr[Transform] + m_GameObject: PPtr[GameObject] + m_LocalPosition: Vector3f + m_LocalRotation: Quaternionf + m_LocalScale: Vector3f + +@define(kw_only=True, slots=False) +class RectTransform(Transform): + m_AnchorMax: Vector2f + m_AnchorMin: Vector2f + m_GameObject: PPtr[GameObject] + m_Pivot: Vector2f + m_SizeDelta: Vector2f + m_AnchoredPosition: Optional[Vector2f] = None + m_Children: Optional[List[PPtr[Transform]]] = None + m_Father: Optional[PPtr[Transform]] = None + m_LocalPosition: Optional[Vector3f] = None + m_LocalRotation: Optional[Quaternionf] = None + m_LocalScale: Optional[Vector3f] = None + m_Position: Optional[Vector2f] = None + +@define(kw_only=True, slots=False) +class Tree(Component): + m_GameObject: PPtr[GameObject] + m_SpeedTreeWindAsset: Optional[PPtr[SpeedTreeWindAsset]] = None + +@define(kw_only=True, slots=False) +class WorldAnchor(Component): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class WorldParticleCollider(Component): + m_BounceFactor: float + m_CollidesWith: BitField + m_CollisionEnergyLoss: float + m_GameObject: PPtr[GameObject] + m_MinKillVelocity: float + m_SendCollisionMessage: bool + +@define(kw_only=True, slots=False) +class GameObject(EditorExtension): + m_Component: Union[List[ComponentPair], List[Tuple[int, PPtr[Component]]]] + m_IsActive: Union[bool, int] + m_Layer: int + m_Name: str + m_Tag: int + +@define(kw_only=True, slots=False) +class NamedObject(EditorExtension, ABC): + pass + +@define(kw_only=True, slots=False) +class AnimatorState(NamedObject): + m_CycleOffset: float + m_IKOnFeet: bool + m_Mirror: bool + m_Motion: PPtr[Motion] + m_Name: str + m_Position: Vector3f + m_Speed: float + m_StateMachineBehaviours: List[PPtr[MonoBehaviour]] + m_Tag: str + m_Transitions: List[PPtr[AnimatorStateTransition]] + m_WriteDefaultValues: bool + m_CycleOffsetParameter: Optional[str] = None + m_CycleOffsetParameterActive: Optional[bool] = None + m_MirrorParameter: Optional[str] = None + m_MirrorParameterActive: Optional[bool] = None + m_SpeedParameter: Optional[str] = None + m_SpeedParameterActive: Optional[bool] = None + m_TimeParameter: Optional[str] = None + m_TimeParameterActive: Optional[bool] = None + +@define(kw_only=True, slots=False) +class AnimatorStateMachine(NamedObject): + m_AnyStatePosition: Vector3f + m_AnyStateTransitions: List[PPtr[AnimatorStateTransition]] + m_ChildStateMachines: List[ChildAnimatorStateMachine] + m_ChildStates: List[ChildAnimatorState] + m_DefaultState: PPtr[AnimatorState] + m_EntryPosition: Vector3f + m_EntryTransitions: List[PPtr[AnimatorTransition]] + m_ExitPosition: Vector3f + m_Name: str + m_ParentStateMachinePosition: Vector3f + m_StateMachineBehaviours: List[PPtr[MonoBehaviour]] + m_StateMachineTransitions: List[Tuple[PPtr[AnimatorStateMachine], List[PPtr[AnimatorTransition]]]] + +@define(kw_only=True, slots=False) +class AnimatorTransitionBase(NamedObject): + m_Conditions: List[AnimatorCondition] + m_DstState: PPtr[AnimatorState] + m_DstStateMachine: PPtr[AnimatorStateMachine] + m_IsExit: bool + m_Mute: bool + m_Name: str + m_Solo: bool + +@define(kw_only=True, slots=False) +class AnimatorStateTransition(AnimatorTransitionBase): + m_CanTransitionToSelf: bool + m_Conditions: List[AnimatorCondition] + m_DstState: PPtr[AnimatorState] + m_DstStateMachine: PPtr[AnimatorStateMachine] + m_ExitTime: float + m_HasExitTime: bool + m_InterruptionSource: int + m_IsExit: bool + m_Mute: bool + m_Name: str + m_OrderedInterruption: bool + m_Solo: bool + m_TransitionDuration: float + m_TransitionOffset: float + m_HasFixedDuration: Optional[bool] = None + +@define(kw_only=True, slots=False) +class AnimatorTransition(AnimatorTransitionBase): + m_Conditions: List[AnimatorCondition] + m_DstState: PPtr[AnimatorState] + m_DstStateMachine: PPtr[AnimatorStateMachine] + m_IsExit: bool + m_Mute: bool + m_Name: str + m_Solo: bool + +@define(kw_only=True, slots=False) +class AssetBundle(NamedObject): + m_Container: List[Tuple[str, AssetInfo]] + m_MainAsset: AssetInfo + m_Name: str + m_PreloadTable: List[PPtr[Object]] + m_AssetBundleName: Optional[str] = None + m_ClassCompatibility: Optional[List[Tuple[int, int]]] = None + m_ClassVersionMap: Optional[List[Tuple[int, int]]] = None + m_Dependencies: Optional[List[str]] = None + m_ExplicitDataLayout: Optional[int] = None + m_IsStreamedSceneAssetBundle: Optional[bool] = None + m_PathFlags: Optional[int] = None + m_RuntimeCompatibility: Optional[int] = None + m_SceneHashes: Optional[List[Tuple[str, str]]] = None + m_ScriptCompatibility: Optional[List[AssetBundleScriptInfo]] = None + +@define(kw_only=True, slots=False) +class AssetBundleManifest(NamedObject): + AssetBundleInfos: List[Tuple[int, AssetBundleInfo]] + AssetBundleNames: List[Tuple[int, str]] + AssetBundlesWithVariant: List[int] + m_Name: str + +@define(kw_only=True, slots=False) +class AssetImportInProgressProxy(NamedObject): + m_Name: str + +@define(kw_only=True, slots=False) +class AssetImporter(NamedObject, ABC): + pass + +@define(kw_only=True, slots=False) +class ASTCImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_Name: str + m_UserData: str + +@define(kw_only=True, slots=False) +class AndroidAssetPackImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + +@define(kw_only=True, slots=False) +class AssemblyDefinitionImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UserData: str + m_UsedFileIDs: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class AssemblyDefinitionReferenceImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + +@define(kw_only=True, slots=False) +class AudioImporter(AssetImporter): + m_3D: bool + m_ForceToMono: bool + m_Name: str + audio_preview_data: Optional[bytes] = None + m_Ambisonic: Optional[bool] = None + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_DefaultSettings: Optional[SampleSettings] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_Format: Optional[int] = None + m_LoadInBackground: Optional[bool] = None + m_Loopable: Optional[bool] = None + m_NewHashIdentity: Optional[MdFour] = None + m_Normalize: Optional[bool] = None + m_OldHashIdentity: Optional[MdFour] = None + m_Output: Optional[Union[AudioImporterOutput, Output]] = None + m_PlatformSettingOverrides: Optional[Union[List[Tuple[str, SampleSettings]], List[Tuple[int, SampleSettings]]]] = None + m_PreloadAudioData: Optional[bool] = None + m_PreviewData: Optional[PreviewData] = None + m_PreviewDataLength: Optional[int] = None + m_Quality: Optional[float] = None + m_Stream: Optional[int] = None + m_UseHardware: Optional[bool] = None + m_UsedFileIDs: Optional[List[int]] = None + m_UserData: Optional[str] = None + +@define(kw_only=True, slots=False) +class BuildArchiveImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + +@define(kw_only=True, slots=False) +class BuildInstructionImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + +@define(kw_only=True, slots=False) +class BuildMetaDataImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + +@define(kw_only=True, slots=False) +class C4DImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + +@define(kw_only=True, slots=False) +class ComputeShaderImporter(AssetImporter): + m_Name: str + m_UserData: str + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_CurrentAPIMask: Optional[int] = None + m_CurrentBuildTarget: Optional[int] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_PreprocessorOverride: Optional[int] = None + m_UsedFileIDs: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class DDSImporter(AssetImporter): + m_Name: str + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_IsReadable: Optional[bool] = None + m_NewHashIdentity: Optional[MdFour] = None + m_OldHashIdentity: Optional[MdFour] = None + m_UserData: Optional[str] = None + +@define(kw_only=True, slots=False) +class DefaultImporter(AssetImporter): + m_Name: str + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_NewHashIdentity: Optional[MdFour] = None + m_OldHashIdentity: Optional[MdFour] = None + m_UsedFileIDs: Optional[List[int]] = None + m_UserData: Optional[str] = None + +@define(kw_only=True, slots=False) +class IHVImageFormatImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_IsReadable: bool + m_Name: str + m_TextureSettings: GLTextureSettings + m_UserData: str + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_IgnoreMipmapLimit: Optional[bool] = None + m_MipmapLimitGroupName: Optional[str] = None + m_StreamingMipmaps: Optional[bool] = None + m_StreamingMipmapsPriority: Optional[int] = None + m_UsedFileIDs: Optional[List[int]] = None + m_sRGBTexture: Optional[bool] = None + +@define(kw_only=True, slots=False) +class KTXImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_Name: str + m_UserData: str + +@define(kw_only=True, slots=False) +class LibraryAssetImporter(AssetImporter): + m_Name: str + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_NewHashIdentity: Optional[MdFour] = None + m_OldHashIdentity: Optional[MdFour] = None + m_UsedFileIDs: Optional[List[int]] = None + m_UserData: Optional[str] = None + +@define(kw_only=True, slots=False) +class LocalizationImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UserData: str + m_UsedFileIDs: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class ModelImporter(AssetImporter, ABC): + pass + +@define(kw_only=True, slots=False) +class FBXImporter(ModelImporter): + m_AddColliders: bool + m_AnimationCompression: int + m_AnimationPositionError: float + m_AnimationRotationError: float + m_AnimationScaleError: float + m_AnimationWrapMode: int + m_BakeSimulation: bool + m_ClipAnimations: List[ClipAnimationInfo] + m_GlobalScale: float + m_HasExtraRoot: bool + m_ImportedRoots: List[PPtr[GameObject]] + m_MeshCompression: int + m_Name: str + m_UseFileUnits: bool + normalSmoothAngle: float + bakeAxisConversion: Optional[bool] = None + blendShapeNormalImportMode: Optional[int] = None + generateSecondaryUV: Optional[bool] = None + indexFormat: Optional[int] = None + keepQuads: Optional[bool] = None + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: Optional[bool] = None + m_AddHumanoidExtraRootOnlyWhenUsingAvatar: Optional[bool] = None + m_AdditionalBone: Optional[bool] = None + m_AnimationDoRetargetingWarnings: Optional[bool] = None + m_AnimationImportErrors: Optional[str] = None + m_AnimationImportWarnings: Optional[str] = None + m_AnimationRetargetingWarnings: Optional[str] = None + m_AnimationType: Optional[int] = None + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_AutoGenerateAvatarMappingIfUnspecified: Optional[bool] = None + m_AutoMapExternalMaterials: Optional[bool] = None + m_AvatarSetup: Optional[int] = None + m_ContainsAnimation: Optional[bool] = None + m_CopyAvatar: Optional[bool] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_ExtraExposedTransformPaths: Optional[List[str]] = None + m_ExtraUserProperties: Optional[List[str]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_FileIdsGeneration: Optional[int] = None + m_FileScale: Optional[float] = None + m_FileScaleFactor: Optional[float] = None + m_FileScaleUnit: Optional[str] = None + m_FirstImportVersion: Optional[int] = None + m_GenerateAnimations: Optional[int] = None + m_GenerateMaterials: Optional[int] = None + m_HasEmbeddedTextures: Optional[bool] = None + m_HasPreviousCalculatedGlobalScale: Optional[bool] = None + m_HumanDescription: Optional[HumanDescription] = None + m_HumanoidOversampling: Optional[int] = None + m_ImportAnimatedCustomProperties: Optional[bool] = None + m_ImportAnimation: Optional[bool] = None + m_ImportBlendShapeDeformPercent: Optional[bool] = None + m_ImportBlendShapes: Optional[bool] = None + m_ImportCameras: Optional[bool] = None + m_ImportConstraints: Optional[bool] = None + m_ImportLights: Optional[bool] = None + m_ImportMaterials: Optional[bool] = None + m_ImportPhysicalCameras: Optional[bool] = None + m_ImportVisibility: Optional[bool] = None + m_ImportedTakeInfos: Optional[List[TakeInfo]] = None + m_InternalIDToNameTable: Optional[List[Tuple[Tuple[int, int], str]]] = None + m_IsReadable: Optional[bool] = None + m_LODScreenPercentages: Optional[List[float]] = None + m_LastHumanDescriptionAvatarSource: Optional[PPtr[Avatar]] = None + m_LegacyGenerateAnimations: Optional[int] = None + m_MaterialImportMode: Optional[int] = None + m_MaterialLocation: Optional[int] = None + m_MaterialName: Optional[int] = None + m_MaterialSearch: Optional[int] = None + m_Materials: Optional[List[SourceAssetIdentifier]] = None + m_MeshSettings_generateSecondaryUV: Optional[bool] = None + m_MeshSettings_normalImportMode: Optional[int] = None + m_MeshSettings_secondaryUVAngleDistortion: Optional[float] = None + m_MeshSettings_secondaryUVAreaDistortion: Optional[float] = None + m_MeshSettings_secondaryUVHardAngle: Optional[float] = None + m_MeshSettings_secondaryUVPackMargin: Optional[float] = None + m_MeshSettings_swapUVChannels: Optional[bool] = None + m_MeshSettings_tangentImportMode: Optional[int] = None + m_MotionNodeName: Optional[str] = None + m_NewHashIdentity: Optional[MdFour] = None + m_NodeNameCollisionStrategy: Optional[int] = None + m_OldHashIdentity: Optional[MdFour] = None + m_OptimizeGameObjects: Optional[bool] = None + m_PreserveHierarchy: Optional[bool] = None + m_PreviousCalculatedGlobalScale: Optional[float] = None + m_ReferencedClips: Optional[List[GUID]] = None + m_RemapMaterialsIfMaterialImportModeIsNone: Optional[bool] = None + m_RemoveConstantScaleCurves: Optional[bool] = None + m_ResampleCurves: Optional[bool] = None + m_ResampleRotations: Optional[bool] = None + m_RigImportErrors: Optional[str] = None + m_RigImportWarnings: Optional[str] = None + m_SortHierarchyByName: Optional[bool] = None + m_SplitAnimations: Optional[bool] = None + m_StrictVertexDataChecks: Optional[bool] = None + m_SupportsEmbeddedMaterials: Optional[bool] = None + m_UseFileScale: Optional[bool] = None + m_UseSRGBMaterialColor: Optional[bool] = None + m_UsedFileIDs: Optional[List[int]] = None + m_UserData: Optional[str] = None + maxBonesPerVertex: Optional[int] = None + meshOptimizationFlags: Optional[int] = None + minBoneWeight: Optional[float] = None + normalCalculationMode: Optional[int] = None + normalImportMode: Optional[int] = None + normalSmoothingSource: Optional[int] = None + optimizeBones: Optional[bool] = None + optimizeMesh: Optional[bool] = None + optimizeMeshForGPU: Optional[bool] = None + secondaryUVAngleDistortion: Optional[float] = None + secondaryUVAreaDistortion: Optional[float] = None + secondaryUVHardAngle: Optional[float] = None + secondaryUVMarginMethod: Optional[int] = None + secondaryUVMinLightmapResolution: Optional[float] = None + secondaryUVMinObjectScale: Optional[float] = None + secondaryUVPackMargin: Optional[float] = None + skinWeightsMode: Optional[int] = None + splitTangentsAcrossUV: Optional[bool] = None + swapUVChannels: Optional[bool] = None + tangentImportMode: Optional[int] = None + weldVertices: Optional[bool] = None + +@define(kw_only=True, slots=False) +class Mesh3DSImporter(ModelImporter): + m_AddColliders: bool + m_AnimationCompression: int + m_AnimationPositionError: float + m_AnimationRotationError: float + m_AnimationScaleError: float + m_AnimationWrapMode: int + m_BakeSimulation: bool + m_ClipAnimations: List[ClipAnimationInfo] + m_GlobalScale: float + m_HasExtraRoot: bool + m_ImportedRoots: List[PPtr[GameObject]] + m_MeshCompression: int + m_Name: str + m_UseFileUnits: bool + normalSmoothAngle: float + bakeAxisConversion: Optional[bool] = None + blendShapeNormalImportMode: Optional[int] = None + generateSecondaryUV: Optional[bool] = None + indexFormat: Optional[int] = None + keepQuads: Optional[bool] = None + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: Optional[bool] = None + m_AddHumanoidExtraRootOnlyWhenUsingAvatar: Optional[bool] = None + m_AdditionalBone: Optional[bool] = None + m_AnimationDoRetargetingWarnings: Optional[bool] = None + m_AnimationImportErrors: Optional[str] = None + m_AnimationImportWarnings: Optional[str] = None + m_AnimationRetargetingWarnings: Optional[str] = None + m_AnimationType: Optional[int] = None + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_AutoGenerateAvatarMappingIfUnspecified: Optional[bool] = None + m_AutoMapExternalMaterials: Optional[bool] = None + m_AvatarSetup: Optional[int] = None + m_ContainsAnimation: Optional[bool] = None + m_CopyAvatar: Optional[bool] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_ExtraExposedTransformPaths: Optional[List[str]] = None + m_ExtraUserProperties: Optional[List[str]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_FileIdsGeneration: Optional[int] = None + m_FileScale: Optional[float] = None + m_FileScaleFactor: Optional[float] = None + m_FileScaleUnit: Optional[str] = None + m_FirstImportVersion: Optional[int] = None + m_GenerateAnimations: Optional[int] = None + m_GenerateMaterials: Optional[int] = None + m_HasEmbeddedTextures: Optional[bool] = None + m_HasPreviousCalculatedGlobalScale: Optional[bool] = None + m_HumanDescription: Optional[HumanDescription] = None + m_HumanoidOversampling: Optional[int] = None + m_ImportAnimatedCustomProperties: Optional[bool] = None + m_ImportAnimation: Optional[bool] = None + m_ImportBlendShapeDeformPercent: Optional[bool] = None + m_ImportBlendShapes: Optional[bool] = None + m_ImportCameras: Optional[bool] = None + m_ImportConstraints: Optional[bool] = None + m_ImportLights: Optional[bool] = None + m_ImportMaterials: Optional[bool] = None + m_ImportPhysicalCameras: Optional[bool] = None + m_ImportVisibility: Optional[bool] = None + m_ImportedTakeInfos: Optional[List[TakeInfo]] = None + m_InternalIDToNameTable: Optional[List[Tuple[Tuple[int, int], str]]] = None + m_IsReadable: Optional[bool] = None + m_LODScreenPercentages: Optional[List[float]] = None + m_LastHumanDescriptionAvatarSource: Optional[PPtr[Avatar]] = None + m_LegacyGenerateAnimations: Optional[int] = None + m_MaterialImportMode: Optional[int] = None + m_MaterialLocation: Optional[int] = None + m_MaterialName: Optional[int] = None + m_MaterialSearch: Optional[int] = None + m_Materials: Optional[List[SourceAssetIdentifier]] = None + m_MeshSettings_generateSecondaryUV: Optional[bool] = None + m_MeshSettings_normalImportMode: Optional[int] = None + m_MeshSettings_secondaryUVAngleDistortion: Optional[float] = None + m_MeshSettings_secondaryUVAreaDistortion: Optional[float] = None + m_MeshSettings_secondaryUVHardAngle: Optional[float] = None + m_MeshSettings_secondaryUVPackMargin: Optional[float] = None + m_MeshSettings_swapUVChannels: Optional[bool] = None + m_MeshSettings_tangentImportMode: Optional[int] = None + m_MotionNodeName: Optional[str] = None + m_NewHashIdentity: Optional[MdFour] = None + m_NodeNameCollisionStrategy: Optional[int] = None + m_OldHashIdentity: Optional[MdFour] = None + m_OptimizeGameObjects: Optional[bool] = None + m_PreserveHierarchy: Optional[bool] = None + m_PreviousCalculatedGlobalScale: Optional[float] = None + m_ReferencedClips: Optional[List[GUID]] = None + m_RemapMaterialsIfMaterialImportModeIsNone: Optional[bool] = None + m_RemoveConstantScaleCurves: Optional[bool] = None + m_ResampleCurves: Optional[bool] = None + m_ResampleRotations: Optional[bool] = None + m_RigImportErrors: Optional[str] = None + m_RigImportWarnings: Optional[str] = None + m_SortHierarchyByName: Optional[bool] = None + m_SplitAnimations: Optional[bool] = None + m_StrictVertexDataChecks: Optional[bool] = None + m_SupportsEmbeddedMaterials: Optional[bool] = None + m_UseFileScale: Optional[bool] = None + m_UseSRGBMaterialColor: Optional[bool] = None + m_UsedFileIDs: Optional[List[int]] = None + m_UserData: Optional[str] = None + maxBonesPerVertex: Optional[int] = None + meshOptimizationFlags: Optional[int] = None + minBoneWeight: Optional[float] = None + normalCalculationMode: Optional[int] = None + normalImportMode: Optional[int] = None + normalSmoothingSource: Optional[int] = None + optimizeBones: Optional[bool] = None + optimizeMesh: Optional[bool] = None + optimizeMeshForGPU: Optional[bool] = None + secondaryUVAngleDistortion: Optional[float] = None + secondaryUVAreaDistortion: Optional[float] = None + secondaryUVHardAngle: Optional[float] = None + secondaryUVMarginMethod: Optional[int] = None + secondaryUVMinLightmapResolution: Optional[float] = None + secondaryUVMinObjectScale: Optional[float] = None + secondaryUVPackMargin: Optional[float] = None + skinWeightsMode: Optional[int] = None + splitTangentsAcrossUV: Optional[bool] = None + swapUVChannels: Optional[bool] = None + tangentImportMode: Optional[int] = None + weldVertices: Optional[bool] = None + +@define(kw_only=True, slots=False) +class SketchUpImporter(ModelImporter): + generateSecondaryUV: bool + keepQuads: bool + m_AddColliders: bool + m_AdditionalBone: bool + m_AnimationCompression: int + m_AnimationDoRetargetingWarnings: bool + m_AnimationImportErrors: str + m_AnimationImportWarnings: str + m_AnimationPositionError: float + m_AnimationRetargetingWarnings: str + m_AnimationRotationError: float + m_AnimationScaleError: float + m_AnimationType: int + m_AnimationWrapMode: int + m_AssetBundleName: str + m_AssetBundleVariant: str + m_AssetHash: Hash128 + m_BakeSimulation: bool + m_ClipAnimations: List[ClipAnimationInfo] + m_ExtraExposedTransformPaths: List[str] + m_FileScale: float + m_FileUnit: int + m_GenerateBackFace: bool + m_GlobalScale: float + m_HasExtraRoot: bool + m_HumanDescription: HumanDescription + m_ImportAnimation: bool + m_ImportBlendShapes: bool + m_ImportedRoots: List[PPtr[GameObject]] + m_ImportedTakeInfos: List[TakeInfo] + m_IsReadable: bool + m_LODScreenPercentages: List[float] + m_LastHumanDescriptionAvatarSource: PPtr[Avatar] + m_Latitude: float + m_LegacyGenerateAnimations: int + m_Longitude: float + m_MaterialName: int + m_MaterialSearch: int + m_MergeCoplanarFaces: bool + m_MeshCompression: int + m_MotionNodeName: str + m_Name: str + m_NorthCorrection: float + m_OptimizeGameObjects: bool + m_ReferencedClips: List[GUID] + m_SelectedNodes: List[int] + m_SketchUpImportData: SketchUpImportData + m_UseFileScale: bool + m_UseFileUnits: bool + m_UserData: str + normalImportMode: int + normalSmoothAngle: float + secondaryUVAngleDistortion: float + secondaryUVAreaDistortion: float + secondaryUVHardAngle: float + secondaryUVPackMargin: float + swapUVChannels: bool + tangentImportMode: int + weldVertices: bool + bakeAxisConversion: Optional[bool] = None + blendShapeNormalImportMode: Optional[int] = None + indexFormat: Optional[int] = None + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: Optional[bool] = None + m_AddHumanoidExtraRootOnlyWhenUsingAvatar: Optional[bool] = None + m_AutoGenerateAvatarMappingIfUnspecified: Optional[bool] = None + m_AutoMapExternalMaterials: Optional[bool] = None + m_AvatarSetup: Optional[int] = None + m_ContainsAnimation: Optional[bool] = None + m_CopyAvatar: Optional[bool] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_ExtraUserProperties: Optional[List[str]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_FileIdsGeneration: Optional[int] = None + m_FileScaleFactor: Optional[float] = None + m_FileScaleUnit: Optional[str] = None + m_HasEmbeddedTextures: Optional[bool] = None + m_HasPreviousCalculatedGlobalScale: Optional[bool] = None + m_HumanoidOversampling: Optional[int] = None + m_ImportAnimatedCustomProperties: Optional[bool] = None + m_ImportBlendShapeDeformPercent: Optional[bool] = None + m_ImportCameras: Optional[bool] = None + m_ImportConstraints: Optional[bool] = None + m_ImportLights: Optional[bool] = None + m_ImportMaterials: Optional[bool] = None + m_ImportPhysicalCameras: Optional[bool] = None + m_ImportVisibility: Optional[bool] = None + m_InternalIDToNameTable: Optional[List[Tuple[Tuple[int, int], str]]] = None + m_MaterialImportMode: Optional[int] = None + m_MaterialLocation: Optional[int] = None + m_Materials: Optional[List[SourceAssetIdentifier]] = None + m_NodeNameCollisionStrategy: Optional[int] = None + m_PreserveHierarchy: Optional[bool] = None + m_PreviousCalculatedGlobalScale: Optional[float] = None + m_RemapMaterialsIfMaterialImportModeIsNone: Optional[bool] = None + m_RemoveConstantScaleCurves: Optional[bool] = None + m_ResampleCurves: Optional[bool] = None + m_ResampleRotations: Optional[bool] = None + m_RigImportErrors: Optional[str] = None + m_RigImportWarnings: Optional[str] = None + m_SortHierarchyByName: Optional[bool] = None + m_StrictVertexDataChecks: Optional[bool] = None + m_SupportsEmbeddedMaterials: Optional[bool] = None + m_UseSRGBMaterialColor: Optional[bool] = None + m_UsedFileIDs: Optional[List[int]] = None + maxBonesPerVertex: Optional[int] = None + meshOptimizationFlags: Optional[int] = None + minBoneWeight: Optional[float] = None + normalCalculationMode: Optional[int] = None + normalSmoothingSource: Optional[int] = None + optimizeBones: Optional[bool] = None + optimizeMeshForGPU: Optional[bool] = None + secondaryUVMarginMethod: Optional[int] = None + secondaryUVMinLightmapResolution: Optional[float] = None + secondaryUVMinObjectScale: Optional[float] = None + skinWeightsMode: Optional[int] = None + splitTangentsAcrossUV: Optional[bool] = None + +@define(kw_only=True, slots=False) +class MonoImporter(AssetImporter): + executionOrder: int + icon: PPtr[Texture2D] + m_DefaultReferences: List[Tuple[str, PPtr[Object]]] + m_Name: str + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_NewHashIdentity: Optional[MdFour] = None + m_OldHashIdentity: Optional[MdFour] = None + m_UsedFileIDs: Optional[List[int]] = None + m_UserData: Optional[str] = None + +@define(kw_only=True, slots=False) +class MovieImporter(AssetImporter): + m_Name: str + m_Quality: float + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_LinearTexture: Optional[bool] = None + m_NewHashIdentity: Optional[MdFour] = None + m_OldHashIdentity: Optional[MdFour] = None + m_UsedFileIDs: Optional[List[int]] = None + m_UserData: Optional[str] = None + +@define(kw_only=True, slots=False) +class MultiArtifactTestImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + +@define(kw_only=True, slots=False) +class NativeFormatImporter(AssetImporter): + m_Name: str + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_MainObjectFileID: Optional[int] = None + m_NewHashIdentity: Optional[MdFour] = None + m_OldHashIdentity: Optional[MdFour] = None + m_UsedFileIDs: Optional[List[int]] = None + m_UserData: Optional[str] = None + +@define(kw_only=True, slots=False) +class PVRImporter(AssetImporter): + m_Name: str + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_NewHashIdentity: Optional[MdFour] = None + m_OldHashIdentity: Optional[MdFour] = None + m_UserData: Optional[str] = None + +@define(kw_only=True, slots=False) +class PackageManifestImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + +@define(kw_only=True, slots=False) +class PluginImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExecutionOrder: List[Tuple[str, int]] + m_IconMap: List[Tuple[str, PPtr[Texture2D]]] + m_IsPreloaded: bool + m_Name: str + m_Output: PluginImportOutput + m_PlatformData: Union[List[Tuple[str, PlatformSettingsData]], List[Tuple[Tuple[str, str], PlatformSettingsData]]] + m_UserData: str + m_DefineConstraints: Optional[List[str]] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_IsExplicitlyReferenced: Optional[bool] = None + m_IsOverridable: Optional[bool] = None + m_UsedFileIDs: Optional[List[int]] = None + m_ValidateReferences: Optional[bool] = None + +@define(kw_only=True, slots=False) +class PrefabImporter(AssetImporter): + m_AddedObjectFileIDs: List[int] + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_IsPrefabVariant: bool + m_Name: str + m_UserData: str + m_UnableToImportOnPreviousDomainReload: Optional[bool] = None + m_UsedFileIDs: Optional[List[int]] = None + m_VariantParentGUID: Optional[GUID] = None + +@define(kw_only=True, slots=False) +class PreviewImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + +@define(kw_only=True, slots=False) +class RayTracingShaderImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + m_CurrentAPIMask: Optional[int] = None + +@define(kw_only=True, slots=False) +class ReferencesArtifactGenerator(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + +@define(kw_only=True, slots=False) +class RoslynAdditionalFileImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + +@define(kw_only=True, slots=False) +class RoslynAnalyzerConfigImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + +@define(kw_only=True, slots=False) +class RuleSetFileImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + +@define(kw_only=True, slots=False) +class ScriptedImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_Name: str + m_Script: PPtr[MonoScript] + m_UserData: str + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_InternalIDToNameTable: Optional[List[Tuple[Tuple[int, int], str]]] = None + m_UsedFileIDs: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class ShaderImporter(AssetImporter): + m_Name: str + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_DefaultTextures: Optional[List[Tuple[str, PPtr[Texture]]]] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_NewHashIdentity: Optional[MdFour] = None + m_NonModifiableTextures: Optional[List[Tuple[str, PPtr[Texture]]]] = None + m_OldHashIdentity: Optional[MdFour] = None + m_PreprocessorOverride: Optional[int] = None + m_UsedFileIDs: Optional[List[int]] = None + m_UserData: Optional[str] = None + +@define(kw_only=True, slots=False) +class ShaderIncludeImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + +@define(kw_only=True, slots=False) +class SpeedTreeImporter(AssetImporter): + m_AlphaTestRef: float + m_AssetBundleName: str + m_AssetBundleVariant: str + m_BestWindQuality: int + m_BillboardTransitionCrossFadeWidth: float + m_EnableSmoothLODTransition: bool + m_FadeOutWidth: float + m_HasBillboard: bool + m_HueVariation: ColorRGBA + m_LODSettings: List[PerLODSettings] + m_MainColor: ColorRGBA + m_Name: str + m_ScaleFactor: float + m_UserData: str + m_AnimateCrossFading: Optional[bool] = None + m_EnableBumpMapping: Optional[bool] = None + m_EnableHueVariation: Optional[bool] = None + m_EnableLightProbes: Optional[bool] = None + m_EnableShadowCasting: Optional[bool] = None + m_EnableShadowReceiving: Optional[bool] = None + m_EnableSubsurfaceScattering: Optional[bool] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_FileIDType: Optional[int] = None + m_GenerateColliders: Optional[bool] = None + m_GenerateRigidbody: Optional[bool] = None + m_MaterialLocation: Optional[int] = None + m_MaterialVersion: Optional[int] = None + m_Materials: Optional[List[SourceAssetIdentifier]] = None + m_MotionVectorModeEnumValue: Optional[int] = None + m_ReflectionProbeEnumValue: Optional[int] = None + m_SelectedWindQuality: Optional[int] = None + m_Shininess: Optional[float] = None + m_SpecColor: Optional[ColorRGBA] = None + m_SupportsEmbeddedMaterials: Optional[bool] = None + m_UnitConversionEnumValue: Optional[int] = None + m_UsedFileIDs: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class SpriteAtlasImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UsedFileIDs: List[int] + m_UserData: str + m_BindAsDefault: Optional[bool] = None + m_PackingSettings: Optional[PackingSettings] = None + m_PlatformSettings: Optional[List[TextureImporterPlatformSettings]] = None + m_SecondaryTextureSettings: Optional[List[Tuple[str, SecondaryTextureSettings]]] = None + m_TextureSettings: Optional[TextureSettings] = None + m_VariantMultiplier: Optional[float] = None + +@define(kw_only=True, slots=False) +class StyleSheetImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_Name: str + m_UserData: str + +@define(kw_only=True, slots=False) +class SubstanceImporter(AssetImporter): + m_Name: str + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_DeletedPrototypes: Optional[List[str]] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_IsFirstImport: Optional[int] = None + m_MaterialImportOutputs: Optional[List[MaterialImportOutput]] = None + m_MaterialInstances: Optional[List[MaterialInstanceSettings]] = None + m_NewHashIdentity: Optional[MdFour] = None + m_OldHashIdentity: Optional[MdFour] = None + m_UsedFileIDs: Optional[List[int]] = None + m_UserData: Optional[str] = None + +@define(kw_only=True, slots=False) +class TextScriptImporter(AssetImporter): + m_Name: str + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_NewHashIdentity: Optional[MdFour] = None + m_OldHashIdentity: Optional[MdFour] = None + m_UsedFileIDs: Optional[List[int]] = None + m_UserData: Optional[str] = None + +@define(kw_only=True, slots=False) +class TextureImporter(AssetImporter): + m_BorderMipMap: int + m_ConvertToNormalMap: int + m_EnableMipMap: int + m_ExternalNormalMap: int + m_FadeOut: int + m_GenerateCubemap: int + m_GrayScaleToAlpha: int + m_HeightScale: float + m_IsReadable: int + m_Lightmap: int + m_MaxTextureSize: int + m_MipMapFadeDistanceEnd: int + m_MipMapFadeDistanceStart: int + m_MipMapMode: int + m_NPOTScale: int + m_Name: str + m_NormalMapFilter: int + m_TextureFormat: int + m_TextureSettings: GLTextureSettings + m_TextureType: int + correctGamma: Optional[int] = None + m_Alignment: Optional[int] = None + m_AllowsAlphaSplitting: Optional[int] = None + m_AlphaIsTransparency: Optional[int] = None + m_AlphaTestReferenceValue: Optional[float] = None + m_AlphaUsage: Optional[int] = None + m_ApplyGammaDecoding: Optional[int] = None + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_BuildTargetSettings: Optional[List[BuildTargetSettings]] = None + m_CompressionQuality: Optional[int] = None + m_CompressionQualitySet: Optional[int] = None + m_CookieLightType: Optional[int] = None + m_CorrectGamma: Optional[int] = None + m_CubemapConvolution: Optional[int] = None + m_CubemapConvolutionExponent: Optional[float] = None + m_CubemapConvolutionSteps: Optional[int] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_FlipGreenChannel: Optional[int] = None + m_FlipbookColumns: Optional[int] = None + m_FlipbookRows: Optional[int] = None + m_IgnoreMasterTextureLimit: Optional[int] = None + m_IgnoreMipmapLimit: Optional[int] = None + m_IgnorePngGamma: Optional[Union[bool, int]] = None + m_InternalIDToNameTable: Optional[List[Tuple[Tuple[int, int], str]]] = None + m_LinearTexture: Optional[int] = None + m_MaxTextureSizeSet: Optional[int] = None + m_MipMapsPreserveCoverage: Optional[int] = None + m_MipmapLimitGroupName: Optional[str] = None + m_NewHashIdentity: Optional[MdFour] = None + m_OldHashIdentity: Optional[MdFour] = None + m_Output: Optional[TextureImportOutput] = None + m_PSDRemoveMatte: Optional[bool] = None + m_PSDShowRemoveMatteOption: Optional[bool] = None + m_PlatformSettings: Optional[Union[List[TextureImporterPlatformSettings], List[PlatformSettings]]] = None + m_PushPullDilation: Optional[int] = None + m_RGBM: Optional[int] = None + m_RecommendedTextureFormat: Optional[int] = None + m_SeamlessCubemap: Optional[int] = None + m_SingleChannelComponent: Optional[int] = None + m_SourceTextureInformation: Optional[SourceTextureInformation] = None + m_SpriteBorder: Optional[Vector4f] = None + m_SpriteExtrude: Optional[int] = None + m_SpriteGenerateFallbackPhysicsShape: Optional[int] = None + m_SpriteMeshType: Optional[int] = None + m_SpriteMode: Optional[int] = None + m_SpritePackingTag: Optional[str] = None + m_SpritePivot: Optional[Vector2f] = None + m_SpritePixelsToUnits: Optional[float] = None + m_SpriteSheet: Optional[SpriteSheetMetaData] = None + m_SpriteTessellationDetail: Optional[float] = None + m_StreamingMipmaps: Optional[int] = None + m_StreamingMipmapsPriority: Optional[int] = None + m_Swizzle: Optional[int] = None + m_TextureFormatSet: Optional[int] = None + m_TextureShape: Optional[int] = None + m_UsedFileIDs: Optional[List[int]] = None + m_UserData: Optional[str] = None + m_VTOnly: Optional[int] = None + m_sRGBTexture: Optional[int] = None + +@define(kw_only=True, slots=False) +class TrueTypeFontImporter(AssetImporter): + m_FontNames: List[str] + m_FontSize: int + m_ForceTextureCase: int + m_IncludeFontData: bool + m_Name: str + m_AscentCalculationMode: Optional[int] = None + m_AssetBundleName: Optional[str] = None + m_AssetBundleVariant: Optional[str] = None + m_CharacterPadding: Optional[int] = None + m_CharacterSpacing: Optional[int] = None + m_CustomCharacters: Optional[str] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_FallbackFontReferences: Optional[List[PPtr[Font]]] = None + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_FontColor: Optional[ColorRGBA] = None + m_FontName: Optional[str] = None + m_FontRenderingMode: Optional[int] = None + m_NewHashIdentity: Optional[MdFour] = None + m_OldHashIdentity: Optional[MdFour] = None + m_Output: Optional[Output] = None + m_RenderMode: Optional[int] = None + m_ShouldRoundAdvanceValue: Optional[bool] = None + m_Style: Optional[int] = None + m_Use2xBehaviour: Optional[bool] = None + m_UseLegacyBoundsCalculation: Optional[bool] = None + m_UsedFileIDs: Optional[List[int]] = None + m_UserData: Optional[str] = None + +@define(kw_only=True, slots=False) +class VideoClipImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ColorSpace: int + m_Deinterlace: int + m_EncodeAlpha: bool + m_EndFrame: int + m_FlipHorizontal: bool + m_FlipVertical: bool + m_FrameRange: int + m_Name: str + m_Output: VideoClipImporterOutput + m_StartFrame: int + m_TargetSettings: Union[List[Tuple[int, VideoClipImporterTargetSettings]], List[Tuple[str, VideoClipImporterTargetSettings]]] + m_UserData: str + m_AudioImportMode: Optional[int] = None + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + m_FrameCount: Optional[int] = None + m_FrameRate: Optional[float] = None + m_ImportAudio: Optional[bool] = None + m_IsColorLinear: Optional[bool] = None + m_OriginalHeight: Optional[int] = None + m_OriginalWidth: Optional[int] = None + m_PixelAspectRatioDenominator: Optional[int] = None + m_PixelAspectRatioNumerator: Optional[int] = None + m_Quality: Optional[float] = None + m_SourceAudioChannelCount: Optional[List[int]] = None + m_SourceAudioSampleRate: Optional[List[int]] = None + m_SourceFileSize: Optional[int] = None + m_SourceHasAlpha: Optional[bool] = None + m_UseLegacyImporter: Optional[bool] = None + m_UsedFileIDs: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class VisualEffectImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_ExternalObjects: List[Tuple[SourceAssetIdentifier, PPtr[Object]]] + m_Name: str + m_UserData: str + m_Template: Optional[VFXTemplate] = None + m_UsedFileIDs: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class AudioContainerElement(NamedObject): + m_AudioClip: PPtr[AudioClip] + m_Enabled: bool + m_Name: str + m_Volume: float + +@define(kw_only=True, slots=False) +class AudioMixer(NamedObject): + m_EnableSuspend: bool + m_MasterGroup: PPtr[AudioMixerGroup] + m_MixerConstant: AudioMixerConstant + m_Name: str + m_OutputGroup: PPtr[AudioMixerGroup] + m_Snapshots: List[PPtr[AudioMixerSnapshot]] + m_StartSnapshot: PPtr[AudioMixerSnapshot] + m_SuspendThreshold: float + m_UpdateMode: Optional[int] = None + +@define(kw_only=True, slots=False) +class AudioMixerController(AudioMixer): + m_EnableSuspend: bool + m_MasterGroup: PPtr[AudioMixerGroup] + m_MixerConstant: AudioMixerConstant + m_Name: str + m_OutputGroup: PPtr[AudioMixerGroup] + m_Snapshots: List[PPtr[AudioMixerSnapshot]] + m_StartSnapshot: PPtr[AudioMixerSnapshot] + m_SuspendThreshold: float + m_UpdateMode: Optional[int] = None + +@define(kw_only=True, slots=False) +class AudioMixerEffectController(NamedObject): + m_Bypass: bool + m_EffectID: GUID + m_EffectName: str + m_EnableWetMix: bool + m_MixLevel: GUID + m_Name: str + m_Parameters: List[Parameter] + m_SendTarget: PPtr[AudioMixerEffectController] + +@define(kw_only=True, slots=False) +class AudioMixerGroup(NamedObject): + m_AudioMixer: PPtr[AudioMixer] + m_Children: List[PPtr[AudioMixerGroup]] + m_GroupID: GUID + m_Name: str + +@define(kw_only=True, slots=False) +class AudioMixerGroupController(AudioMixerGroup): + m_AudioMixer: PPtr[AudioMixer] + m_Children: List[PPtr[AudioMixerGroup]] + m_GroupID: GUID + m_Name: str + +@define(kw_only=True, slots=False) +class AudioMixerSnapshot(NamedObject): + m_AudioMixer: PPtr[AudioMixer] + m_Name: str + m_SnapshotID: GUID + +@define(kw_only=True, slots=False) +class AudioMixerSnapshotController(AudioMixerSnapshot): + m_AudioMixer: PPtr[AudioMixer] + m_Name: str + m_SnapshotID: GUID + +@define(kw_only=True, slots=False) +class AudioResource(NamedObject): + m_Name: str + +@define(kw_only=True, slots=False) +class AudioRandomContainer(AudioResource): + m_AutomaticTriggerMode: int + m_AutomaticTriggerTime: float + m_AutomaticTriggerTimeRandomizationEnabled: bool + m_AutomaticTriggerTimeRandomizationRange: Vector2f + m_AvoidRepeatingLast: int + m_Elements: List[PPtr[AudioContainerElement]] + m_LoopCount: int + m_LoopCountRandomizationEnabled: bool + m_LoopCountRandomizationRange: Vector2f + m_LoopMode: int + m_Name: str + m_Pitch: float + m_PitchRandomizationEnabled: bool + m_PitchRandomizationRange: Vector2f + m_PlaybackMode: int + m_TriggerMode: int + m_Volume: float + m_VolumeRandomizationEnabled: bool + m_VolumeRandomizationRange: Vector2f + +@define(kw_only=True, slots=False) +class SampleClip(AudioResource): + m_Name: str + +@define(kw_only=True, slots=False) +class AudioClip(SampleClip): + m_Name: str + m_3D: Optional[bool] = None + m_Ambisonic: Optional[bool] = None + m_AudioData: Optional[List[int]] = None + m_BitsPerSample: Optional[int] = None + m_Channels: Optional[int] = None + m_CompressionFormat: Optional[int] = None + m_Format: Optional[int] = None + m_Frequency: Optional[int] = None + m_IsTrackerFormat: Optional[bool] = None + m_Legacy3D: Optional[bool] = None + m_Length: Optional[float] = None + m_LoadInBackground: Optional[bool] = None + m_LoadType: Optional[int] = None + m_PreloadAudioData: Optional[bool] = None + m_Resource: Optional[StreamedResource] = None + m_Stream: Optional[int] = None + m_SubsoundIndex: Optional[int] = None + m_Type: Optional[int] = None + m_UseHardware: Optional[bool] = None + +@define(kw_only=True, slots=False) +class Avatar(NamedObject): + m_Avatar: AvatarConstant + m_AvatarSize: int + m_Name: str + m_TOS: List[Tuple[int, str]] + m_HumanDescription: Optional[HumanDescription] = None + +@define(kw_only=True, slots=False) +class AvatarMask(NamedObject): + m_Elements: List[TransformMaskElement] + m_Mask: List[int] + m_Name: str + +@define(kw_only=True, slots=False) +class AvatarSkeletonMask(NamedObject): + elements: List[AvatarSkeletonMaskElement] + m_Name: str + +@define(kw_only=True, slots=False) +class BaseAnimationTrack(NamedObject, ABC): + pass + +@define(kw_only=True, slots=False) +class NewAnimationTrack(BaseAnimationTrack): + m_ClassID: int + m_Curves: List[Channel] + m_Name: str + +@define(kw_only=True, slots=False) +class BillboardAsset(NamedObject): + bottom: float + height: float + imageTexCoords: List[Vector4f] + indices: List[int] + m_Name: str + material: PPtr[Material] + vertices: List[Vector2f] + width: float + rotated: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class BuildReport(NamedObject): + m_Appendices: List[PPtr[Object]] + m_BuildSteps: List[BuildStepInfo] + m_Files: List[BuildReportFile] + m_Name: str + m_Summary: BuildSummary + +@define(kw_only=True, slots=False) +class CachedSpriteAtlas(NamedObject): + frames: List[Tuple[Tuple[GUID, int], SpriteRenderData]] + textures: List[PPtr[Texture2D]] + alphaTextures: Optional[List[PPtr[Texture2D]]] = None + +@define(kw_only=True, slots=False) +class CachedSpriteAtlasRuntimeData(NamedObject): + alphaTextures: List[PPtr[Texture2D]] + frames: List[Tuple[Tuple[GUID, int], SpriteAtlasData]] + textures: List[PPtr[Texture2D]] + currentPackingHash: Optional[Hash128] = None + +@define(kw_only=True, slots=False) +class ComputeShader(NamedObject): + m_Name: str + constantBuffers: Optional[List[ComputeShaderCB]] = None + kernels: Optional[List[ComputeShaderKernel]] = None + variants: Optional[Union[List[ComputeShaderVariant], List[ComputeShaderPlatformVariant]]] = None + +@define(kw_only=True, slots=False) +class DefaultAsset(NamedObject): + m_Name: str + m_IsWarning: Optional[bool] = None + m_Message: Optional[str] = None + +@define(kw_only=True, slots=False) +class BrokenPrefabAsset(DefaultAsset): + m_BrokenParentPrefab: PPtr[BrokenPrefabAsset] + m_IsPrefabFileValid: bool + m_IsVariant: bool + m_IsWarning: bool + m_Message: str + m_Name: str + +@define(kw_only=True, slots=False) +class SceneAsset(DefaultAsset): + m_Name: str + m_IsWarning: Optional[bool] = None + m_Message: Optional[str] = None + +@define(kw_only=True, slots=False) +class EditorProjectAccess(NamedObject): + m_Name: str + +@define(kw_only=True, slots=False) +class Flare(NamedObject): + m_Elements: List[FlareElement] + m_FlareTexture: PPtr[Texture] + m_Name: str + m_TextureLayout: int + m_UseFog: bool + +@define(kw_only=True, slots=False) +class Font(NamedObject): + m_Ascent: float + m_AsciiStartOffset: int + m_CharacterRects: List[CharacterInfo] + m_ConvertCase: int + m_DefaultMaterial: PPtr[Material] + m_DefaultStyle: int + m_FontData: List[str] + m_FontNames: List[str] + m_FontSize: float + m_KerningValues: List[Tuple[Tuple[int, int], float]] + m_LineSpacing: float + m_Name: str + m_Texture: PPtr[Texture] + m_CharacterPadding: Optional[int] = None + m_CharacterSpacing: Optional[int] = None + m_Descent: Optional[float] = None + m_FallbackFonts: Optional[List[PPtr[Font]]] = None + m_FontCountX: Optional[int] = None + m_FontCountY: Optional[int] = None + m_FontRenderingMode: Optional[int] = None + m_GridFont: Optional[bool] = None + m_Kerning: Optional[float] = None + m_PerCharacterKerning: Optional[List[Tuple[int, float]]] = None + m_PixelScale: Optional[float] = None + m_ShouldRoundAdvanceValue: Optional[bool] = None + m_Tracking: Optional[float] = None + m_UseLegacyBoundsCalculation: Optional[bool] = None + +@define(kw_only=True, slots=False) +class GameObjectRecorder(NamedObject): + m_Name: str + +@define(kw_only=True, slots=False) +class GraphicsStateCollection(NamedObject): + m_DeviceRenderer: int + m_Name: str + m_QualityLevelName: str + m_RenderPassInfoMap: List[Tuple[int, RenderPassInfo]] + m_RenderStateMap: List[Tuple[int, RenderStateInfo]] + m_RuntimePlatform: int + m_VariantInfoMap: List[Tuple[Hash128, VariantInfo]] + m_Version: int + m_VertexLayoutInfoMap: List[Tuple[int, VertexLayoutInfo]] + +@define(kw_only=True, slots=False) +class HumanTemplate(NamedObject): + m_BoneTemplate: List[Tuple[str, str]] + m_Name: str + +@define(kw_only=True, slots=False) +class ImportLog(NamedObject): + m_Logs: List[ImportLog_ImportLogEntry] + m_Name: str + +@define(kw_only=True, slots=False) +class LightProbes(NamedObject): + m_Name: str + bakedCoefficients: Optional[List[LightmapData]] = None + bakedPositions: Optional[List[Vector3f]] = None + hullRays: Optional[List[Vector3f]] = None + m_BakedCoefficients: Optional[List[SphericalHarmonicsL2]] = None + m_BakedLightOcclusion: Optional[List[LightProbeOcclusion]] = None + m_Data: Optional[LightProbeData] = None + m_HasBeenEdited: Optional[bool] = None + tetrahedra: Optional[List[Tetrahedron]] = None + +@define(kw_only=True, slots=False) +class LightingDataAsset(NamedObject): + m_BakedAmbientProbeInLinear: SphericalHarmonicsL2 + m_BakedReflectionProbeCubemaps: List[PPtr[Texture]] + m_BakedReflectionProbes: List[SceneObjectIdentifier] + m_EnlightenData: List[int] + m_EnlightenSceneMapping: EnlightenSceneMapping + m_EnlightenSceneMappingRendererIDs: List[SceneObjectIdentifier] + m_LightProbes: PPtr[LightProbes] + m_LightmappedRendererData: List[RendererData] + m_LightmappedRendererDataIDs: List[SceneObjectIdentifier] + m_Lightmaps: List[LightmapData] + m_Lights: List[SceneObjectIdentifier] + m_Name: str + m_AOTextures: Optional[List[PPtr[Texture2D]]] = None + m_BakedLightIndices: Optional[List[int]] = None + m_BakedReflectionProbeCubemapCacheFiles: Optional[List[str]] = None + m_EnlightenDataVersion: Optional[int] = None + m_LightBakingOutputs: Optional[List[LightBakingOutput]] = None + m_LightmapsCacheFiles: Optional[List[str]] = None + m_LightmapsMode: Optional[int] = None + m_Scene: Optional[PPtr[SceneAsset]] = None + m_SceneGUID: Optional[GUID] = None + +@define(kw_only=True, slots=False) +class LightingDataAssetParent(NamedObject): + m_Name: str + +@define(kw_only=True, slots=False) +class LightingSettings(NamedObject): + m_AlbedoBoost: float + m_BounceScale: float + m_EnableBakedLightmaps: bool + m_EnableRealtimeLightmaps: bool + m_Name: str + m_RealtimeEnvironmentLighting: bool + m_UsingShadowmask: bool + m_AO: Optional[bool] = None + m_AOMaxDistance: Optional[float] = None + m_BakeBackend: Optional[int] = None + m_BakeResolution: Optional[float] = None + m_CompAOExponent: Optional[float] = None + m_CompAOExponentDirect: Optional[float] = None + m_ExportTrainingData: Optional[bool] = None + m_ExtractAO: Optional[bool] = None + m_FilterMode: Optional[int] = None + m_FinalGather: Optional[bool] = None + m_FinalGatherFiltering: Optional[bool] = None + m_FinalGatherRayCount: Optional[int] = None + m_ForceUpdates: Optional[bool] = None + m_ForceWhiteAlbedo: Optional[bool] = None + m_GIWorkflowMode: Optional[int] = None + m_IndirectOutputScale: Optional[float] = None + m_LightmapMaxSize: Optional[int] = None + m_LightmapParameters: Optional[PPtr[LightmapParameters]] = None + m_LightmapsBakeMode: Optional[int] = None + m_MixedBakeMode: Optional[int] = None + m_PVRBounces: Optional[int] = None + m_PVRCulling: Optional[bool] = None + m_PVRDenoiserTypeAO: Optional[int] = None + m_PVRDenoiserTypeDirect: Optional[int] = None + m_PVRDenoiserTypeIndirect: Optional[int] = None + m_PVRDirectSampleCount: Optional[int] = None + m_PVREnvironmentMIS: Optional[int] = None + m_PVREnvironmentReferencePointCount: Optional[int] = None + m_PVREnvironmentSampleCount: Optional[int] = None + m_PVRFilterTypeAO: Optional[int] = None + m_PVRFilterTypeDirect: Optional[int] = None + m_PVRFilterTypeIndirect: Optional[int] = None + m_PVRFilteringAtrousPositionSigmaAO: Optional[float] = None + m_PVRFilteringAtrousPositionSigmaDirect: Optional[float] = None + m_PVRFilteringAtrousPositionSigmaIndirect: Optional[float] = None + m_PVRFilteringGaussRadiusAO: Optional[int] = None + m_PVRFilteringGaussRadiusDirect: Optional[int] = None + m_PVRFilteringGaussRadiusIndirect: Optional[int] = None + m_PVRFilteringMode: Optional[int] = None + m_PVRSampleCount: Optional[int] = None + m_PVRSampling: Optional[int] = None + m_Padding: Optional[int] = None + m_RealtimeResolution: Optional[float] = None + m_TextureCompression: Optional[bool] = None + m_TrainingDataDestination: Optional[str] = None + +@define(kw_only=True, slots=False) +class LightmapParameters(NamedObject): + AOAntiAliasingSamples: int + AOQuality: int + antiAliasingSamples: int + backFaceTolerance: float + bakedLightmapTag: int + blurRadius: int + clusterResolution: float + directLightQuality: int + edgeStitching: int + irradianceBudget: int + irradianceQuality: int + isTransparent: int + m_Name: str + modellingTolerance: float + resolution: float + systemTag: int + limitLightmapCount: Optional[bool] = None + maxLightmapCount: Optional[int] = None + pushoff: Optional[float] = None + +@define(kw_only=True, slots=False) +class LocalizationAsset(NamedObject): + Editor_Asset: bool + Locale_ISO_Code: str + String_Table: List[Tuple[str, str]] + m_Name: str + +@define(kw_only=True, slots=False) +class Material(NamedObject): + m_Name: str + m_SavedProperties: UnityPropertySheet + m_Shader: PPtr[Shader] + disabledShaderPasses: Optional[List[str]] = None + m_BuildTextureStacks: Optional[List[BuildTextureStackReference]] = None + m_CustomRenderQueue: Optional[int] = None + m_DoubleSidedGI: Optional[bool] = None + m_EnableInstancingVariants: Optional[bool] = None + m_InvalidKeywords: Optional[List[str]] = None + m_LightmapFlags: Optional[int] = None + m_ShaderKeywords: Optional[Union[str, List[str]]] = None + m_ValidKeywords: Optional[List[str]] = None + stringTagMap: Optional[List[Tuple[str, str]]] = None + +@define(kw_only=True, slots=False) +class ProceduralMaterial(Material): + m_Name: str + m_SavedProperties: UnityPropertySheet + m_Shader: PPtr[Shader] + disabledShaderPasses: Optional[List[str]] = None + m_AnimationUpdateRate: Optional[int] = None + m_BuildTextureStacks: Optional[List[BuildTextureStackReference]] = None + m_CacheSize: Optional[int] = None + m_CustomRenderQueue: Optional[int] = None + m_DoubleSidedGI: Optional[bool] = None + m_EnableInstancingVariants: Optional[bool] = None + m_Flags: Optional[int] = None + m_GenerateMipmaps: Optional[bool] = None + m_Hash: Optional[Hash128] = None + m_Height: Optional[int] = None + m_Inputs: Optional[List[SubstanceInput]] = None + m_InvalidKeywords: Optional[List[str]] = None + m_LightmapFlags: Optional[int] = None + m_LoadingBehavior: Optional[int] = None + m_MaximumSize: Optional[int] = None + m_PrototypeName: Optional[str] = None + m_ShaderKeywords: Optional[Union[str, List[str]]] = None + m_SubstancePackage: Optional[PPtr[SubstanceArchive]] = None + m_Textures: Optional[List[PPtr[ProceduralTexture]]] = None + m_ValidKeywords: Optional[List[str]] = None + m_Width: Optional[int] = None + stringTagMap: Optional[List[Tuple[str, str]]] = None + +@define(kw_only=True, slots=False) +class Mesh(NamedObject): + m_BindPose: List[Matrix4x4f] + m_CompressedMesh: CompressedMesh + m_IndexBuffer: List[int] + m_LocalAABB: AABB + m_MeshCompression: int + m_MeshUsageFlags: int + m_Name: str + m_SubMeshes: List[SubMesh] + m_BakedConvexCollisionMesh: Optional[List[int]] = None + m_BakedTriangleCollisionMesh: Optional[List[int]] = None + m_BoneNameHashes: Optional[List[int]] = None + m_BonesAABB: Optional[List[MinMaxAABB]] = None + m_CollisionTriangles: Optional[List[int]] = None + m_CollisionVertexCount: Optional[int] = None + m_Colors: Optional[List[ColorRGBA]] = None + m_CookingOptions: Optional[int] = None + m_IndexFormat: Optional[int] = None + m_IsReadable: Optional[bool] = None + m_KeepIndices: Optional[bool] = None + m_KeepVertices: Optional[bool] = None + m_MeshMetrics_0_: Optional[float] = None + m_MeshMetrics_1_: Optional[float] = None + m_Normals: Optional[List[Vector3f]] = None + m_RootBoneNameHash: Optional[int] = None + m_ShapeVertices: Optional[List[MeshBlendShapeVertex]] = None + m_Shapes: Optional[Union[BlendShapeData, List[MeshBlendShape]]] = None + m_Skin: Optional[Union[List[BoneInfluence], List[BoneWeights4]]] = None + m_StreamCompression: Optional[int] = None + m_StreamData: Optional[StreamingInfo] = None + m_Tangents: Optional[List[Vector4f]] = None + m_UV: Optional[List[Vector2f]] = None + m_UV1: Optional[List[Vector2f]] = None + m_Use16BitIndices: Optional[int] = None + m_VariableBoneCountWeights: Optional[VariableBoneCountWeights] = None + m_VertexData: Optional[VertexData] = None + m_Vertices: Optional[List[Vector3f]] = None + +@define(kw_only=True, slots=False) +class Motion(NamedObject, ABC): + pass + +@define(kw_only=True, slots=False) +class AnimationClip(Motion): + m_Bounds: AABB + m_Compressed: bool + m_CompressedRotationCurves: List[CompressedAnimationCurve] + m_Events: List[AnimationEvent] + m_FloatCurves: List[FloatCurve] + m_Name: str + m_PositionCurves: List[Vector3Curve] + m_RotationCurves: List[QuaternionCurve] + m_SampleRate: float + m_ScaleCurves: List[Vector3Curve] + m_WrapMode: int + m_AnimationType: Optional[int] = None + m_ClipBindingConstant: Optional[AnimationClipBindingConstant] = None + m_EulerCurves: Optional[List[Vector3Curve]] = None + m_HasGenericRootTransform: Optional[bool] = None + m_HasMotionFloatCurves: Optional[bool] = None + m_Legacy: Optional[bool] = None + m_MuscleClip: Optional[ClipMuscleConstant] = None + m_MuscleClipSize: Optional[int] = None + m_PPtrCurves: Optional[List[PPtrCurve]] = None + m_UseHighQualityCurve: Optional[bool] = None + +@define(kw_only=True, slots=False) +class PreviewAnimationClip(AnimationClip): + m_Bounds: AABB + m_ClipBindingConstant: AnimationClipBindingConstant + m_Compressed: bool + m_CompressedRotationCurves: List[CompressedAnimationCurve] + m_EulerCurves: List[Vector3Curve] + m_Events: List[AnimationEvent] + m_FloatCurves: List[FloatCurve] + m_Legacy: bool + m_MuscleClip: ClipMuscleConstant + m_MuscleClipSize: int + m_Name: str + m_PPtrCurves: List[PPtrCurve] + m_PositionCurves: List[Vector3Curve] + m_RotationCurves: List[QuaternionCurve] + m_SampleRate: float + m_ScaleCurves: List[Vector3Curve] + m_UseHighQualityCurve: bool + m_WrapMode: int + m_HasGenericRootTransform: Optional[bool] = None + m_HasMotionFloatCurves: Optional[bool] = None + +@define(kw_only=True, slots=False) +class BlendTree(Motion): + m_Childs: Union[List[Child], List[ChildMotion]] + m_MaxThreshold: float + m_MinThreshold: float + m_Name: str + m_UseAutomaticThresholds: bool + m_BlendEvent: Optional[str] = None + m_BlendEventY: Optional[str] = None + m_BlendParameter: Optional[str] = None + m_BlendParameterY: Optional[str] = None + m_BlendType: Optional[int] = None + m_NormalizedBlendValues: Optional[bool] = None + +@define(kw_only=True, slots=False) +class NavMeshData(NamedObject): + m_HeightMeshes: List[HeightMeshData] + m_Heightmaps: List[HeightmapData] + m_Name: str + m_NavMeshTiles: List[NavMeshTileData] + m_OffMeshLinks: List[AutoOffMeshLinkData] + m_AgentTypeID: Optional[int] = None + m_NavMeshBuildSettings: Optional[NavMeshBuildSettings] = None + m_NavMeshParams: Optional[NavMeshParams] = None + m_Position: Optional[Vector3f] = None + m_Rotation: Optional[Quaternionf] = None + m_SourceBounds: Optional[AABB] = None + +@define(kw_only=True, slots=False) +class NavMeshObsolete(NamedObject): + m_Name: str + +@define(kw_only=True, slots=False) +class OcclusionCullingData(NamedObject): + m_Name: str + m_PVSData: List[int] + m_Scenes: List[OcclusionScene] + +@define(kw_only=True, slots=False) +class PhysicsMaterial(NamedObject): + m_Name: str + bounceCombine: Optional[int] = None + bounciness: Optional[float] = None + dynamicFriction: Optional[float] = None + frictionCombine: Optional[int] = None + m_BounceCombine: Optional[int] = None + m_Bounciness: Optional[float] = None + m_DynamicFriction: Optional[float] = None + m_FrictionCombine: Optional[int] = None + m_StaticFriction: Optional[float] = None + staticFriction: Optional[float] = None + +@define(kw_only=True, slots=False) +class PhysicsMaterial2D(NamedObject): + bounciness: float + friction: float + m_Name: str + m_BounceCombine: Optional[int] = None + m_FrictionCombine: Optional[int] = None + +@define(kw_only=True, slots=False) +class PreloadData(NamedObject): + m_Assets: List[PPtr[Object]] + m_Name: str + m_Dependencies: Optional[List[str]] = None + m_ExplicitDataLayout: Optional[bool] = None + +@define(kw_only=True, slots=False) +class Preset(NamedObject): + m_Name: str + m_Properties: List[PropertyModification] + m_TargetType: PresetType + m_CoupledProperties: Optional[List[PropertyModification]] = None + m_CoupledType: Optional[PresetType] = None + m_ExcludedProperties: Optional[List[str]] = None + +@define(kw_only=True, slots=False) +class RayTracingShader(NamedObject): + m_MaxRecursionDepth: int + m_Name: str + variants: List[RayTracingShaderVariant] + m_EnableRayPayloadSizeChecks: Optional[bool] = None + +@define(kw_only=True, slots=False) +class RoslynAdditionalFileAsset(NamedObject): + m_Name: str + +@define(kw_only=True, slots=False) +class RoslynAnalyzerConfigAsset(NamedObject): + m_Name: str + +@define(kw_only=True, slots=False) +class RuntimeAnimatorController(NamedObject): + m_AnimationClips: List[PPtr[AnimationClip]] + m_Controller: ControllerConstant + m_ControllerSize: int + m_Name: str + m_TOS: List[Tuple[int, str]] + +@define(kw_only=True, slots=False) +class AnimatorController(RuntimeAnimatorController): + m_AnimationClips: List[PPtr[AnimationClip]] + m_Controller: ControllerConstant + m_ControllerSize: int + m_Name: str + m_TOS: List[Tuple[int, str]] + m_MultiThreadedStateMachine: Optional[bool] = None + m_StateMachineBehaviourVectorDescription: Optional[StateMachineBehaviourVectorDescription] = None + m_StateMachineBehaviours: Optional[List[PPtr[MonoBehaviour]]] = None + +@define(kw_only=True, slots=False) +class AnimatorOverrideController(RuntimeAnimatorController): + m_Clips: List[AnimationClipOverride] + m_Controller: PPtr[RuntimeAnimatorController] + m_Name: str + +@define(kw_only=True, slots=False) +class Shader(NamedObject): + m_Name: str + compressedBlob: Optional[List[int]] = None + compressedLengths: Optional[Union[List[int], List[List[int]]]] = None + decompressedLengths: Optional[Union[List[int], List[List[int]]]] = None + decompressedSize: Optional[int] = None + m_AssetGUID: Optional[GUID] = None + m_Dependencies: Optional[List[PPtr[Shader]]] = None + m_NonModifiableTextures: Optional[List[Tuple[str, PPtr[Texture]]]] = None + m_ParsedForm: Optional[SerializedShader] = None + m_PathName: Optional[str] = None + m_Script: Optional[str] = None + m_ShaderIsBaked: Optional[bool] = None + m_SubProgramBlob: Optional[List[int]] = None + offsets: Optional[Union[List[int], List[List[int]]]] = None + platforms: Optional[List[int]] = None + stageCounts: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class ShaderVariantCollection(NamedObject): + m_Name: str + m_Shaders: List[Tuple[PPtr[Shader], ShaderInfo]] + +@define(kw_only=True, slots=False) +class SpeedTreeWindAsset(NamedObject): + m_Name: str + m_Config8: Optional[SpeedTreeWindConfig8] = None + m_Config9: Optional[SpeedTreeWindConfig9] = None + m_Wind: Optional[SpeedTreeWind] = None + m_eVersion: Optional[int] = None + +@define(kw_only=True, slots=False) +class Sprite(NamedObject): + m_Extrude: int + m_Name: str + m_Offset: Vector2f + m_PixelsToUnits: float + m_RD: SpriteRenderData + m_Rect: Rectf + m_AtlasTags: Optional[List[str]] = None + m_Bones: Optional[List[SpriteBone]] = None + m_Border: Optional[Vector4f] = None + m_IsPolygon: Optional[bool] = None + m_PhysicsShape: Optional[List[List[Vector2f]]] = None + m_Pivot: Optional[Vector2f] = None + m_RenderDataKey: Optional[Tuple[GUID, int]] = None + m_ScriptableObjects: Optional[List[PPtr[MonoBehaviour]]] = None + m_SpriteAtlas: Optional[PPtr[SpriteAtlas]] = None + +@define(kw_only=True, slots=False) +class SpriteAtlas(NamedObject): + m_IsVariant: bool + m_Name: str + m_PackedSpriteNamesToIndex: List[str] + m_PackedSprites: List[PPtr[Sprite]] + m_RenderDataMap: List[Tuple[Tuple[GUID, int], SpriteAtlasData]] + m_Tag: str + +@define(kw_only=True, slots=False) +class SpriteAtlasAsset(NamedObject): + m_ImporterData: Union[SpriteAtlasEditorData, SpriteAtlasAssetData] + m_IsVariant: bool + m_MasterAtlas: PPtr[SpriteAtlas] + m_Name: str + m_ScriptablePacker: Optional[PPtr[Object]] = None + +@define(kw_only=True, slots=False) +class SubstanceArchive(NamedObject): + m_Name: str + m_PackageData: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class TerrainData(NamedObject): + m_DetailDatabase: DetailDatabase + m_Heightmap: Heightmap + m_Name: str + m_SplatDatabase: SplatDatabase + m_PreloadShaders: Optional[List[PPtr[Shader]]] = None + +@define(kw_only=True, slots=False) +class TerrainLayer(NamedObject): + m_DiffuseRemapMax: Vector4f + m_DiffuseRemapMin: Vector4f + m_DiffuseTexture: PPtr[Texture2D] + m_MaskMapRemapMax: Vector4f + m_MaskMapRemapMin: Vector4f + m_MaskMapTexture: PPtr[Texture2D] + m_Metallic: float + m_Name: str + m_NormalMapTexture: PPtr[Texture2D] + m_NormalScale: float + m_Smoothness: float + m_Specular: ColorRGBA + m_TileOffset: Vector2f + m_TileSize: Vector2f + m_SmoothnessSource: Optional[int] = None + +@define(kw_only=True, slots=False) +class TextAsset(NamedObject): + m_Name: str + m_Script: str + m_PathName: Optional[str] = None + +@define(kw_only=True, slots=False) +class AssemblyDefinitionAsset(TextAsset): + m_Name: str + m_Script: str + +@define(kw_only=True, slots=False) +class AssemblyDefinitionReferenceAsset(TextAsset): + m_Name: str + m_Script: str + +@define(kw_only=True, slots=False) +class MonoScript(TextAsset): + m_AssemblyName: str + m_ClassName: str + m_ExecutionOrder: int + m_Name: str + m_Namespace: str + m_PropertiesHash: Union[Hash128, int] + m_IsEditorScript: Optional[bool] = None + +@define(kw_only=True, slots=False) +class PackageManifest(TextAsset): + m_Name: str + m_Script: str + +@define(kw_only=True, slots=False) +class RuleSetFileAsset(TextAsset): + m_Name: str + m_Script: str + +@define(kw_only=True, slots=False) +class ShaderInclude(TextAsset): + m_Name: str + m_Script: Optional[str] = None + +@define(kw_only=True, slots=False) +class Texture(NamedObject, ABC): + pass + +@define(kw_only=True, slots=False) +class BaseVideoTexture(Texture, ABC): + pass + +@define(kw_only=True, slots=False) +class WebCamTexture(BaseVideoTexture): + m_Name: str + m_DownscaleFallback: Optional[bool] = None + m_ForcedFallbackFormat: Optional[int] = None + m_IsAlphaChannelOptional: Optional[bool] = None + +@define(kw_only=True, slots=False) +class CubemapArray(Texture): + image_data: bytes + m_ColorSpace: int + m_CubemapCount: int + m_DataSize: int + m_Format: int + m_IsReadable: bool + m_MipCount: int + m_Name: str + m_TextureSettings: GLTextureSettings + m_Width: int + m_DownscaleFallback: Optional[bool] = None + m_ForcedFallbackFormat: Optional[int] = None + m_IsAlphaChannelOptional: Optional[bool] = None + m_StreamData: Optional[StreamingInfo] = None + m_UsageMode: Optional[int] = None + +@define(kw_only=True, slots=False) +class LowerResBlitTexture(Texture): + m_Name: str + m_DownscaleFallback: Optional[bool] = None + m_ForcedFallbackFormat: Optional[int] = None + m_IsAlphaChannelOptional: Optional[bool] = None + +@define(kw_only=True, slots=False) +class MovieTexture(Texture): + m_Name: str + m_AudioClip: Optional[PPtr[AudioClip]] = None + m_ColorSpace: Optional[int] = None + m_DownscaleFallback: Optional[bool] = None + m_ForcedFallbackFormat: Optional[int] = None + m_IsAlphaChannelOptional: Optional[bool] = None + m_Loop: Optional[bool] = None + m_MovieData: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class ProceduralTexture(Texture): + m_Name: str + AlphaSource: Optional[int] = None + AlphaSourceIsGrayscale: Optional[bool] = None + Format: Optional[int] = None + Type: Optional[int] = None + m_AlphaSourceIsInverted: Optional[bool] = None + m_AlphaSourceUID: Optional[int] = None + m_BakedData: Optional[List[int]] = None + m_BakedParameters: Optional[TextureParameters] = None + m_ColorSpace: Optional[int] = None + m_DownscaleFallback: Optional[bool] = None + m_ForcedFallbackFormat: Optional[int] = None + m_IsAlphaChannelOptional: Optional[bool] = None + m_LightmapFormat: Optional[int] = None + m_Mipmaps: Optional[int] = None + m_SubstanceMaterial: Optional[PPtr[ProceduralMaterial]] = None + m_SubstanceTextureUID: Optional[int] = None + m_TextureParameters: Optional[TextureParameters] = None + m_TextureSettings: Optional[GLTextureSettings] = None + +@define(kw_only=True, slots=False) +class RenderTexture(Texture): + m_ColorFormat: int + m_Height: int + m_MipMap: bool + m_Name: str + m_TextureSettings: GLTextureSettings + m_Width: int + m_AntiAliasing: Optional[int] = None + m_BindMS: Optional[bool] = None + m_DepthFormat: Optional[int] = None + m_DepthStencilFormat: Optional[int] = None + m_Dimension: Optional[int] = None + m_DownscaleFallback: Optional[bool] = None + m_EnableCompatibleFormat: Optional[bool] = None + m_EnableRandomWrite: Optional[bool] = None + m_ForcedFallbackFormat: Optional[int] = None + m_GenerateMips: Optional[bool] = None + m_IsAlphaChannelOptional: Optional[bool] = None + m_IsCubemap: Optional[bool] = None + m_IsPowerOfTwo: Optional[bool] = None + m_MipCount: Optional[int] = None + m_SRGB: Optional[bool] = None + m_ShadowSamplingMode: Optional[int] = None + m_UseDynamicScale: Optional[bool] = None + m_UseDynamicScaleExplicit: Optional[bool] = None + m_VolumeDepth: Optional[int] = None + +@define(kw_only=True, slots=False) +class CustomRenderTexture(RenderTexture): + m_AntiAliasing: int + m_ColorFormat: int + m_CubemapFaceMask: int + m_CurrentUpdateZoneSpace: int + m_Dimension: int + m_DoubleBuffered: bool + m_GenerateMips: bool + m_Height: int + m_InitColor: ColorRGBA + m_InitMaterial: PPtr[Material] + m_InitTexture: PPtr[Texture] + m_InitializationMode: int + m_Material: PPtr[Material] + m_MipMap: bool + m_Name: str + m_SRGB: bool + m_ShaderPass: int + m_TextureSettings: GLTextureSettings + m_UpdateMode: int + m_UpdatePeriod: float + m_UpdateZoneSpace: int + m_UpdateZones: List[UpdateZoneInfo] + m_VolumeDepth: int + m_Width: int + m_WrapUpdateZones: bool + m_BindMS: Optional[bool] = None + m_DepthFormat: Optional[int] = None + m_DepthStencilFormat: Optional[int] = None + m_DownscaleFallback: Optional[bool] = None + m_EnableCompatibleFormat: Optional[bool] = None + m_EnableRandomWrite: Optional[bool] = None + m_ForcedFallbackFormat: Optional[int] = None + m_InitSource: Optional[int] = None + m_IsAlphaChannelOptional: Optional[bool] = None + m_MipCount: Optional[int] = None + m_ShadowSamplingMode: Optional[int] = None + m_UseDynamicScale: Optional[bool] = None + m_UseDynamicScaleExplicit: Optional[bool] = None + +@define(kw_only=True, slots=False) +class SparseTexture(Texture): + m_ColorSpace: int + m_Format: int + m_Height: int + m_MipCount: int + m_Name: str + m_TextureSettings: GLTextureSettings + m_Width: int + m_DownscaleFallback: Optional[bool] = None + m_ForcedFallbackFormat: Optional[int] = None + m_IsAlphaChannelOptional: Optional[bool] = None + +@define(kw_only=True, slots=False) +class Texture2D(Texture): + image_data: bytes + m_CompleteImageSize: int + m_Height: int + m_ImageCount: int + m_IsReadable: bool + m_LightmapFormat: int + m_Name: str + m_TextureDimension: int + m_TextureFormat: int + m_TextureSettings: GLTextureSettings + m_Width: int + m_ColorSpace: Optional[int] = None + m_DownscaleFallback: Optional[bool] = None + m_ForcedFallbackFormat: Optional[int] = None + m_IgnoreMasterTextureLimit: Optional[bool] = None + m_IgnoreMipmapLimit: Optional[bool] = None + m_IsAlphaChannelOptional: Optional[bool] = None + m_IsPreProcessed: Optional[bool] = None + m_MipCount: Optional[int] = None + m_MipMap: Optional[bool] = None + m_MipmapLimitGroupName: Optional[str] = None + m_MipsStripped: Optional[int] = None + m_PlatformBlob: Optional[List[int]] = None + m_ReadAllowed: Optional[bool] = None + m_StreamData: Optional[StreamingInfo] = None + m_StreamingMipmaps: Optional[bool] = None + m_StreamingMipmapsPriority: Optional[int] = None + +@define(kw_only=True, slots=False) +class Cubemap(Texture2D): + image_data: bytes + m_CompleteImageSize: int + m_Height: int + m_ImageCount: int + m_IsReadable: bool + m_LightmapFormat: int + m_Name: str + m_TextureDimension: int + m_TextureFormat: int + m_TextureSettings: GLTextureSettings + m_Width: int + m_ColorSpace: Optional[int] = None + m_DownscaleFallback: Optional[bool] = None + m_ForcedFallbackFormat: Optional[int] = None + m_IgnoreMasterTextureLimit: Optional[bool] = None + m_IgnoreMipmapLimit: Optional[bool] = None + m_IsAlphaChannelOptional: Optional[bool] = None + m_IsPreProcessed: Optional[bool] = None + m_MipCount: Optional[int] = None + m_MipMap: Optional[bool] = None + m_MipmapLimitGroupName: Optional[str] = None + m_MipsStripped: Optional[int] = None + m_PlatformBlob: Optional[List[int]] = None + m_ReadAllowed: Optional[bool] = None + m_SourceTextures: Optional[List[PPtr[Texture2D]]] = None + m_StreamData: Optional[StreamingInfo] = None + m_StreamingMipmaps: Optional[bool] = None + m_StreamingMipmapsPriority: Optional[int] = None + +@define(kw_only=True, slots=False) +class Texture2DArray(Texture): + image_data: bytes + m_ColorSpace: int + m_DataSize: int + m_Depth: int + m_Format: int + m_Height: int + m_IsReadable: bool + m_MipCount: int + m_Name: str + m_TextureSettings: GLTextureSettings + m_Width: int + m_DownscaleFallback: Optional[bool] = None + m_ForcedFallbackFormat: Optional[int] = None + m_IgnoreMipmapLimit: Optional[bool] = None + m_IsAlphaChannelOptional: Optional[bool] = None + m_MipmapLimitGroupName: Optional[str] = None + m_MipsStripped: Optional[int] = None + m_StreamData: Optional[StreamingInfo] = None + m_UsageMode: Optional[int] = None + +@define(kw_only=True, slots=False) +class Texture3D(Texture): + image_data: bytes + m_Height: int + m_Name: str + m_TextureSettings: GLTextureSettings + m_Width: int + m_ColorSpace: Optional[int] = None + m_CompleteImageSize: Optional[int] = None + m_DataSize: Optional[int] = None + m_Depth: Optional[int] = None + m_DownscaleFallback: Optional[bool] = None + m_ForcedFallbackFormat: Optional[int] = None + m_Format: Optional[int] = None + m_ImageCount: Optional[int] = None + m_IsAlphaChannelOptional: Optional[bool] = None + m_IsReadable: Optional[bool] = None + m_LightmapFormat: Optional[int] = None + m_MipCount: Optional[int] = None + m_MipMap: Optional[bool] = None + m_ReadAllowed: Optional[bool] = None + m_StreamData: Optional[StreamingInfo] = None + m_TextureDimension: Optional[int] = None + m_TextureFormat: Optional[int] = None + m_UsageMode: Optional[int] = None + +@define(kw_only=True, slots=False) +class VideoClip(NamedObject): + Height: int + Width: int + m_AudioChannelCount: List[int] + m_AudioLanguage: List[str] + m_AudioSampleRate: List[int] + m_ExternalResources: StreamedResource + m_Format: int + m_FrameCount: int + m_FrameRate: float + m_HasSplitAlpha: bool + m_Name: str + m_OriginalPath: str + m_ProxyHeight: int + m_ProxyWidth: int + m_PixelAspecRatioDen: Optional[int] = None + m_PixelAspecRatioNum: Optional[int] = None + m_VideoShaders: Optional[List[PPtr[Shader]]] = None + m_sRGB: Optional[bool] = None + +@define(kw_only=True, slots=False) +class VisualEffectObject(NamedObject, ABC): + pass + +@define(kw_only=True, slots=False) +class VisualEffectAsset(VisualEffectObject): + m_Infos: VisualEffectInfo + m_Name: str + m_Systems: List[VFXSystemDesc] + +@define(kw_only=True, slots=False) +class VisualEffectSubgraph(VisualEffectObject, ABC): + pass + +@define(kw_only=True, slots=False) +class VisualEffectSubgraphBlock(VisualEffectSubgraph): + m_Name: str + +@define(kw_only=True, slots=False) +class VisualEffectSubgraphOperator(VisualEffectSubgraph): + m_Name: str + +@define(kw_only=True, slots=False) +class VisualEffectResource(NamedObject): + m_Graph: PPtr[MonoBehaviour] + m_Infos: Union[VisualEffectSettings, VisualEffectInfo] + m_Name: str + m_ShaderSources: Optional[List[VFXShaderSourceDesc]] = None + m_Systems: Optional[List[VFXEditorSystemDesc]] = None + +@define(kw_only=True, slots=False) +class EditorExtensionImpl(Object): + gFlattenedTypeTree: Optional[List[int]] = None + m_DataTemplate: Optional[PPtr[DataTemplate]] = None + m_Object: Optional[PPtr[EditorExtension]] = None + m_OverrideVariable: Optional[bitset] = None + m_TemplateFather: Optional[PPtr[EditorExtensionImpl]] = None + +@define(kw_only=True, slots=False) +class EditorSettings(Object): + m_AssetNamingUsesSpace: Optional[bool] = None + m_AssetPipelineMode: Optional[int] = None + m_AsyncShaderCompilation: Optional[bool] = None + m_Bc7TextureCompressor: Optional[int] = None + m_CacheServerDownloadBatchSize: Optional[int] = None + m_CacheServerEnableAuth: Optional[bool] = None + m_CacheServerEnableDownload: Optional[bool] = None + m_CacheServerEnableTls: Optional[bool] = None + m_CacheServerEnableUpload: Optional[bool] = None + m_CacheServerEndpoint: Optional[str] = None + m_CacheServerMode: Optional[int] = None + m_CacheServerNamespacePrefix: Optional[str] = None + m_CacheServerValidationMode: Optional[int] = None + m_CachingShaderPreprocessor: Optional[bool] = None + m_CollabEditorSettings: Optional[CollabEditorSettings] = None + m_DefaultBehaviorMode: Optional[int] = None + m_DisableCookiesInLightmapper: Optional[bool] = None + m_EnableEditorAsyncCPUTextureLoading: Optional[bool] = None + m_EnableEnlightenBakedGI: Optional[bool] = None + m_EnableRoslynAnalyzers: Optional[bool] = None + m_EnableTextureStreamingInEditMode: Optional[bool] = None + m_EnableTextureStreamingInPlayMode: Optional[bool] = None + m_EnterPlayModeOptions: Optional[int] = None + m_EnterPlayModeOptionsEnabled: Optional[bool] = None + m_EtcTextureBestCompressor: Optional[int] = None + m_EtcTextureCompressorBehavior: Optional[int] = None + m_EtcTextureFastCompressor: Optional[int] = None + m_EtcTextureNormalCompressor: Optional[int] = None + m_ExternalVersionControlSupport: Optional[Union[str, int]] = None + m_GameObjectNamingDigits: Optional[int] = None + m_GameObjectNamingScheme: Optional[int] = None + m_InspectorUseIMGUIDefaultInspector: Optional[bool] = None + m_LineEndingsForNewScripts: Optional[int] = None + m_PrefabModeAllowAutoSave: Optional[bool] = None + m_PrefabRegularEnvironment: Optional[PPtr[SceneAsset]] = None + m_PrefabUIEnvironment: Optional[PPtr[SceneAsset]] = None + m_ProjectGenerationIncludedExtensions: Optional[str] = None + m_ProjectGenerationRootNamespace: Optional[str] = None + m_RecalculateEnvironmentLighting: Optional[bool] = None + m_ReferencedClipsExactNaming: Optional[bool] = None + m_RefreshImportMode: Optional[int] = None + m_SerializationMode: Optional[int] = None + m_SerializeInlineMappingsOnOneLine: Optional[bool] = None + m_ShowLightmapResolutionOverlay: Optional[bool] = None + m_SpritePackerCacheSize: Optional[int] = None + m_SpritePackerMode: Optional[int] = None + m_SpritePackerPaddingPower: Optional[int] = None + m_UseLegacyProbeSampleCount: Optional[bool] = None + m_UserGeneratedProjectSuffix: Optional[str] = None + m_WebSecurityEmulationEnabled: Optional[int] = None + m_WebSecurityEmulationHostUrl: Optional[str] = None + +@define(kw_only=True, slots=False) +class EditorUserBuildSettings(Object): + m_ActiveBuildTarget: int + m_AllowDebugging: bool + m_ArchitectureFlags: int + m_BuildLocation: List[str] + m_ConnectProfiler: bool + m_Development: bool + m_InstallInBuildFolder: bool + m_SelectedAndroidSubtarget: int + m_SelectedBuildTargetGroup: int + m_SelectedStandaloneTarget: int + m_ActiveBuildPlatformGroupName: Optional[str] = None + m_ActiveBuildTargetGroup: Optional[int] = None + m_ActivePlatformGuid: Optional[GUID] = None + m_ActiveProfilePath: Optional[str] = None + m_ActiveStandaloneBuildSubtarget: Optional[int] = None + m_AndroidBuildSystem: Optional[int] = None + m_AndroidBuildType: Optional[int] = None + m_AndroidCreateSymbols: Optional[int] = None + m_AndroidCreateSymbolsZip: Optional[bool] = None + m_AndroidCurrentDeploymentTargetId: Optional[str] = None + m_AndroidDebugMinification: Optional[int] = None + m_AndroidDeviceSocketAddress: Optional[str] = None + m_AndroidReleaseMinification: Optional[int] = None + m_AndroidUseLegacySdkTools: Optional[bool] = None + m_BuildAppBundle: Optional[bool] = None + m_BuildScriptsOnly: Optional[bool] = None + m_BuildWithDeepProfilingSupport: Optional[bool] = None + m_CompressFilesInPackage: Optional[bool] = None + m_CompressWithPsArc: Optional[bool] = None + m_CreateRomFileForSwitch: Optional[bool] = None + m_CreateSolutionFileForSwitch: Optional[bool] = None + m_DatalessPlayer: Optional[bool] = None + m_EnableDebugPadForSwitch: Optional[bool] = None + m_EnableHeadlessMode: Optional[bool] = None + m_EnableHeapInspectorForSwitch: Optional[bool] = None + m_EnableHostIOForSwitch: Optional[bool] = None + m_EnableMemoryTrackerForSwitch: Optional[bool] = None + m_EnableRomCompressionForSwitch: Optional[bool] = None + m_ExplicitArrayBoundsChecks: Optional[bool] = None + m_ExplicitDivideByZeroChecks: Optional[bool] = None + m_ExplicitNullChecks: Optional[bool] = None + m_ExportAsGoogleAndroidProject: Optional[bool] = None + m_FacebookAccessToken: Optional[str] = None + m_FacebookCreatePackageForSubmission: Optional[bool] = None + m_ForceInstallation: Optional[bool] = None + m_ForceOptimizeScriptCompilation: Optional[bool] = None + m_GenerateMetroReferenceProjects: Optional[bool] = None + m_GenerateNintendoSwitchShaderInfo: Optional[bool] = None + m_GenerateWSAReferenceProjects: Optional[bool] = None + m_HTCSScriptDebuggingForSwitch: Optional[bool] = None + m_Il2CppCodeGeneration: Optional[int] = None + m_MovePackageToDiscOuterEdge: Optional[bool] = None + m_NVNAftermath: Optional[bool] = None + m_NVNDrawValidation: Optional[bool] = None + m_NVNDrawValidationHeavy: Optional[bool] = None + m_NVNDrawValidationLight: Optional[bool] = None + m_NVNGraphicsDebuggerForSwitch: Optional[bool] = None + m_NVNShaderDebugging: Optional[bool] = None + m_NeedSubmissionMaterials: Optional[bool] = None + m_OverrideMaxTextureSize: Optional[int] = None + m_OverrideTextureCompression: Optional[int] = None + m_PS4HardwareTarget: Optional[int] = None + m_PS5KeepPackageFiles: Optional[bool] = None + m_PS5WorkspaceName: Optional[str] = None + m_PathOnRemoteDevice: Optional[str] = None + m_PlatformSettings: Optional[List[Tuple[str, PlatformSettingsData]]] = None + m_RedirectWritesToHostMountForSwitch: Optional[bool] = None + m_RemoteDeviceAddress: Optional[str] = None + m_RemoteDeviceExports: Optional[str] = None + m_RemoteDeviceInfo: Optional[bool] = None + m_RemoteDeviceUsername: Optional[str] = None + m_RomCompressionConfigForSwitch: Optional[str] = None + m_RomCompressionLevelForSwitch: Optional[int] = None + m_RomCompressionTypeForSwitch: Optional[int] = None + m_SaveADFForSwitch: Optional[bool] = None + m_SelectedAndroidETC2Fallback: Optional[int] = None + m_SelectedBlackBerryBuildType: Optional[int] = None + m_SelectedBlackBerrySubtarget: Optional[int] = None + m_SelectedBuildPlatformGroupName: Optional[str] = None + m_SelectedBuildTarget: Optional[int] = None + m_SelectedCompressionType: Optional[List[Tuple[str, int]]] = None + m_SelectedEmbeddedLinuxArchitecture: Optional[int] = None + m_SelectedFacebookTarget: Optional[int] = None + m_SelectedIOSBuildType: Optional[int] = None + m_SelectedMetroBuildAndRunDeployTarget: Optional[int] = None + m_SelectedMetroBuildType: Optional[int] = None + m_SelectedMetroSDK: Optional[int] = None + m_SelectedMetroTarget: Optional[int] = None + m_SelectedPS3Subtarget: Optional[int] = None + m_SelectedPS4Subtarget: Optional[int] = None + m_SelectedPS5CompressionLevel: Optional[int] = None + m_SelectedPS5CompressionType: Optional[int] = None + m_SelectedPS5Subtarget: Optional[int] = None + m_SelectedPSMSubtarget: Optional[int] = None + m_SelectedPSP2Subtarget: Optional[int] = None + m_SelectedQNXArchitecture: Optional[int] = None + m_SelectedQNXOsVersion: Optional[int] = None + m_SelectedStandaloneBuildSubtarget: Optional[int] = None + m_SelectedTizenSubtarget: Optional[int] = None + m_SelectedWSAArchitecture: Optional[str] = None + m_SelectedWSABuildAndRunDeployTarget: Optional[int] = None + m_SelectedWSAMinUWPSDK: Optional[str] = None + m_SelectedWSASDK: Optional[int] = None + m_SelectedWSASubtarget: Optional[int] = None + m_SelectedWSAUWPBuildType: Optional[int] = None + m_SelectedWSAUWPSDK: Optional[str] = None + m_SelectedWSAUWPVSVersion: Optional[str] = None + m_SelectedWebGLSubtarget: Optional[int] = None + m_SelectedWiiDebugLevel: Optional[int] = None + m_SelectedWiiSubtarget: Optional[int] = None + m_SelectedWiiUBootMode: Optional[int] = None + m_SelectedWiiUBuildOutput: Optional[int] = None + m_SelectedWiiUDebugLevel: Optional[int] = None + m_SelectedWindowsBuildAndRunDeployTarget: Optional[int] = None + m_SelectedXboxOneDeployDrive: Optional[int] = None + m_SelectedXboxOneDeployMethod: Optional[int] = None + m_SelectedXboxRunMethod: Optional[int] = None + m_SelectedXboxSubtarget: Optional[int] = None + m_SymlinkLibraries: Optional[bool] = None + m_SymlinkSources: Optional[bool] = None + m_SymlinkTrampoline: Optional[bool] = None + m_UseLegacyNvnPoolAllocatorForSwitch: Optional[bool] = None + m_WSADotNetNativeEnabled: Optional[List[bool]] = None + m_WaitForPlayerConnection: Optional[bool] = None + m_WaitForSwitchMemoryTrackerOnStartup: Optional[bool] = None + m_WebGLClientBrowserPath: Optional[str] = None + m_WebGLClientBrowserType: Optional[int] = None + m_WebGLClientPlatform: Optional[int] = None + m_WebGLOptimizationLevel: Optional[int] = None + m_WebGLUsePreBuiltUnityEngine: Optional[bool] = None + m_WebPlayerDeployOnline: Optional[bool] = None + m_WebPlayerNaClSupport: Optional[bool] = None + m_WebPlayerOfflineDeployment: Optional[bool] = None + m_WebPlayerStreamed: Optional[bool] = None + m_WiiUEnableNetAPI: Optional[bool] = None + m_WindowsDevicePortalAddress: Optional[str] = None + m_WindowsDevicePortalUsername: Optional[str] = None + m_WsaHolographicRemoting: Optional[bool] = None + m_XboxCompressedXex: Optional[bool] = None + m_XboxOneNetworkSharePath: Optional[str] = None + m_XboxOneStreamingInstallLaunchChunkRange: Optional[int] = None + m_XboxOneUsername: Optional[str] = None + m_macosXcodeBuildConfig: Optional[int] = None + +@define(kw_only=True, slots=False) +class EditorUserSettings(Object): + m_VCAutomaticAdd: bool + m_VCDebugCmd: bool + m_VCDebugCom: bool + m_VCDebugOut: bool + m_ArtifactGarbageCollection: Optional[bool] = None + m_AssetPipelineMode: Optional[int] = None + m_AssetPipelineMode2: Optional[int] = None + m_CacheServerMode: Optional[int] = None + m_CacheServers: Optional[List[str]] = None + m_CompressAssetsOnImport: Optional[bool] = None + m_ConfigSettings: Optional[List[Tuple[str, ConfigSetting]]] = None + m_ConfigValues: Optional[List[Tuple[str, str]]] = None + m_DesiredImportWorkerCount: Optional[int] = None + m_IdleImportWorkerShutdownDelay: Optional[int] = None + m_SemanticMergeMode: Optional[int] = None + m_StandbyImportWorkerCount: Optional[int] = None + m_VCAllowAsyncUpdate: Optional[bool] = None + m_VCHierarchyOverlayIcons: Optional[bool] = None + m_VCOtherOverlayIcons: Optional[bool] = None + m_VCOverlayIcons: Optional[bool] = None + m_VCOverwriteFailedCheckoutAssets: Optional[bool] = None + m_VCPassword: Optional[str] = None + m_VCProjectOverlayIcons: Optional[bool] = None + m_VCScanLocalPackagesOnConnect: Optional[bool] = None + m_VCServer: Optional[str] = None + m_VCShowFailedCheckout: Optional[bool] = None + m_VCUserName: Optional[str] = None + m_VCWorkspace: Optional[str] = None + +@define(kw_only=True, slots=False) +class EmptyObject(Object): + pass + +@define(kw_only=True, slots=False) +class GUIDSerializer(Object): + guidToPath: List[Tuple[GUID, str]] + +@define(kw_only=True, slots=False) +class GameManager(Object, ABC): + pass + +@define(kw_only=True, slots=False) +class GlobalGameManager(GameManager, ABC): + pass + +@define(kw_only=True, slots=False) +class AnimationManager(GlobalGameManager): + pass + +@define(kw_only=True, slots=False) +class AudioManager(GlobalGameManager): + Default_Speaker_Mode: int + Doppler_Factor: float + Rolloff_Scale: float + m_DSPBufferSize: int + m_Volume: float + m_AmbisonicDecoderPlugin: Optional[str] = None + m_DisableAudio: Optional[bool] = None + m_RealVoiceCount: Optional[int] = None + m_RequestedDSPBufferSize: Optional[int] = None + m_SampleRate: Optional[int] = None + m_SpatializerPlugin: Optional[str] = None + m_SpeedOfSound: Optional[float] = None + m_VirtualVoiceCount: Optional[int] = None + m_VirtualizeEffects: Optional[bool] = None + +@define(kw_only=True, slots=False) +class BuildSettings(GlobalGameManager): + enableDynamicBatching: bool + hasAdvancedVersion: bool + hasPROVersion: bool + hasPublishingRights: bool + hasShadows: bool + isEducationalBuild: bool + m_Version: str + buildGUID: Optional[Union[str, GUID]] = None + buildTags: Optional[List[str]] = None + enableMultipleDisplays: Optional[bool] = None + enabledVRDevices: Optional[List[str]] = None + hasClusterRendering: Optional[bool] = None + hasLocalLightShadows: Optional[bool] = None + hasOculusPlugin: Optional[bool] = None + hasRenderTexture: Optional[bool] = None + hasSoftShadows: Optional[bool] = None + isDebugBuild: Optional[bool] = None + isEmbedded: Optional[bool] = None + isNoWatermarkBuild: Optional[bool] = None + isPrototypingBuild: Optional[bool] = None + isTrial: Optional[bool] = None + isWsaHolographicRemotingEnabled: Optional[bool] = None + levels: Optional[List[str]] = None + m_AuthToken: Optional[str] = None + m_GraphicsAPIs: Optional[List[int]] = None + preloadedPlugins: Optional[List[str]] = None + runtimeClassHashes: Optional[Union[List[Tuple[int, int]], List[Tuple[int, Hash128]]]] = None + scenes: Optional[List[str]] = None + scriptHashes: Optional[List[Tuple[Hash128, Hash128]]] = None + usesOnMouseEvents: Optional[bool] = None + +@define(kw_only=True, slots=False) +class CloudWebServicesManager(GlobalGameManager): + pass + +@define(kw_only=True, slots=False) +class ClusterInputManager(GlobalGameManager): + m_Inputs: List[ClusterInput] + +@define(kw_only=True, slots=False) +class CrashReportManager(GlobalGameManager): + pass + +@define(kw_only=True, slots=False) +class DelayedCallManager(GlobalGameManager): + pass + +@define(kw_only=True, slots=False) +class GraphicsSettings(GlobalGameManager): + m_AlwaysIncludedShaders: List[PPtr[Shader]] + m_AllowEnlightenSupportForUpgradedProject: Optional[bool] = None + m_CameraRelativeLightCulling: Optional[bool] = None + m_CameraRelativeShadowCulling: Optional[bool] = None + m_CurrentRenderPipelineGlobalSettings: Optional[PPtr[Object]] = None + m_CustomRenderPipeline: Optional[PPtr[MonoBehaviour]] = None + m_DefaultRenderingLayerMask: Optional[int] = None + m_Deferred: Optional[BuiltinShaderSettings] = None + m_DeferredReflections: Optional[BuiltinShaderSettings] = None + m_DepthNormals: Optional[BuiltinShaderSettings] = None + m_LegacyDeferred: Optional[BuiltinShaderSettings] = None + m_LensFlare: Optional[BuiltinShaderSettings] = None + m_LightHalo: Optional[BuiltinShaderSettings] = None + m_LightProbeOutsideHullStrategy: Optional[int] = None + m_LightsUseCCT: Optional[bool] = None + m_LightsUseColorTemperature: Optional[bool] = None + m_LightsUseLinearIntensity: Optional[bool] = None + m_LogWhenShaderIsCompiled: Optional[bool] = None + m_MotionVectors: Optional[BuiltinShaderSettings] = None + m_PreloadShadersBatchTimeLimit: Optional[int] = None + m_PreloadedShaders: Optional[List[PPtr[ShaderVariantCollection]]] = None + m_SRPDefaultSettings: Optional[List[Tuple[str, PPtr[Object]]]] = None + m_ScreenSpaceShadows: Optional[BuiltinShaderSettings] = None + m_ShaderDefinesPerShaderCompiler: Optional[List[PlatformShaderDefines]] = None + m_ShaderSettings: Optional[PlatformShaderSettings] = None + m_ShaderSettings_Tier1: Optional[PlatformShaderSettings] = None + m_ShaderSettings_Tier2: Optional[PlatformShaderSettings] = None + m_ShaderSettings_Tier3: Optional[PlatformShaderSettings] = None + m_SpritesDefaultMaterial: Optional[PPtr[Material]] = None + m_TierSettings_Tier1: Optional[TierGraphicsSettings] = None + m_TierSettings_Tier2: Optional[TierGraphicsSettings] = None + m_TierSettings_Tier3: Optional[TierGraphicsSettings] = None + m_TransparencySortAxis: Optional[Vector3f] = None + m_TransparencySortMode: Optional[int] = None + m_VideoShadersIncludeMode: Optional[int] = None + +@define(kw_only=True, slots=False) +class InputManager(GlobalGameManager): + m_Axes: List[InputAxis] + m_UsePhysicalKeys: Optional[bool] = None + +@define(kw_only=True, slots=False) +class MasterServerInterface(GlobalGameManager): + pass + +@define(kw_only=True, slots=False) +class MonoManager(GlobalGameManager): + m_Scripts: List[PPtr[MonoScript]] + m_AssemblyNames: Optional[List[str]] = None + m_AssemblyTypes: Optional[List[int]] = None + m_RuntimeClassHashes: Optional[List[Tuple[int, Hash128]]] = None + m_ScriptHashes: Optional[List[Tuple[Hash128, Hash128]]] = None + +@define(kw_only=True, slots=False) +class MultiplayerManager(GlobalGameManager): + m_ActiveMultiplayerRole: Optional[int] = None + m_ActiveMultiplayerRoles: Optional[int] = None + +@define(kw_only=True, slots=False) +class NavMeshProjectSettings(GlobalGameManager): + areas: List[NavMeshAreaData] + m_LastAgentTypeID: Optional[int] = None + m_SettingNames: Optional[List[str]] = None + m_Settings: Optional[List[NavMeshBuildSettings]] = None + +@define(kw_only=True, slots=False) +class NetworkManager(GlobalGameManager): + m_AssetToPrefab: List[Tuple[GUID, PPtr[GameObject]]] + m_DebugLevel: int + m_Sendrate: float + +@define(kw_only=True, slots=False) +class NotificationManager(GlobalGameManager): + pass + +@define(kw_only=True, slots=False) +class PerformanceReportingManager(GlobalGameManager): + pass + +@define(kw_only=True, slots=False) +class Physics2DSettings(GlobalGameManager): + m_DefaultMaterial: PPtr[PhysicsMaterial2D] + m_Gravity: Vector2f + m_LayerCollisionMatrix: List[int] + m_PositionIterations: int + m_VelocityIterations: int + m_AngularSleepTolerance: Optional[float] = None + m_AutoSimulation: Optional[bool] = None + m_AutoSyncTransforms: Optional[bool] = None + m_BaumgarteScale: Optional[float] = None + m_BaumgarteTimeOfImpactScale: Optional[float] = None + m_BounceThreshold: Optional[float] = None + m_CallbacksOnDisable: Optional[bool] = None + m_ChangeStopsCallbacks: Optional[bool] = None + m_ContactThreshold: Optional[float] = None + m_DefaultContactOffset: Optional[float] = None + m_DeleteStopsCallbacks: Optional[bool] = None + m_JobOptions: Optional[PhysicsJobOptions2D] = None + m_LinearSleepTolerance: Optional[float] = None + m_MaxAngularCorrection: Optional[float] = None + m_MaxLinearCorrection: Optional[float] = None + m_MaxRotationSpeed: Optional[float] = None + m_MaxSubStepCount: Optional[int] = None + m_MaxTranslationSpeed: Optional[float] = None + m_MinPenetrationForPenalty: Optional[float] = None + m_MinSubStepFPS: Optional[float] = None + m_QueriesHitTriggers: Optional[bool] = None + m_QueriesStartInColliders: Optional[bool] = None + m_RaycastsHitTriggers: Optional[bool] = None + m_RaycastsStartInColliders: Optional[bool] = None + m_ReuseCollisionCallbacks: Optional[bool] = None + m_SimulationLayers: Optional[BitField] = None + m_SimulationMode: Optional[int] = None + m_TimeToSleep: Optional[float] = None + m_UseSubStepContacts: Optional[bool] = None + m_UseSubStepping: Optional[bool] = None + m_VelocityThreshold: Optional[float] = None + +@define(kw_only=True, slots=False) +class PhysicsManager(GlobalGameManager): + m_BounceThreshold: float + m_DefaultMaterial: Union[PPtr[PhysicMaterial], PPtr[PhysicsMaterial]] + m_Gravity: Vector3f + m_LayerCollisionMatrix: List[int] + m_AutoSimulation: Optional[bool] = None + m_AutoSyncTransforms: Optional[bool] = None + m_BroadphaseType: Optional[int] = None + m_ClothGravity: Optional[Vector3f] = None + m_ClothInterCollisionDistance: Optional[float] = None + m_ClothInterCollisionSettingsToggle: Optional[bool] = None + m_ClothInterCollisionStiffness: Optional[float] = None + m_ContactPairsMode: Optional[int] = None + m_ContactsGeneration: Optional[int] = None + m_CurrentBackendId: Optional[int] = None + m_DefaultContactOffset: Optional[float] = None + m_DefaultMaxAngluarSpeed: Optional[float] = None + m_DefaultMaxAngularSpeed: Optional[float] = None + m_DefaultMaxDepenetrationVelocity: Optional[float] = None + m_DefaultSolverIterations: Optional[int] = None + m_DefaultSolverVelocityIterations: Optional[int] = None + m_EnableAdaptiveForce: Optional[bool] = None + m_EnableEnhancedDeterminism: Optional[bool] = None + m_EnablePCM: Optional[bool] = None + m_EnableUnifiedHeightmaps: Optional[bool] = None + m_FastMotionThreshold: Optional[float] = None + m_FrictionType: Optional[int] = None + m_ImprovedPatchFriction: Optional[bool] = None + m_InvokeCollisionCallbacks: Optional[bool] = None + m_MaxAngularVelocity: Optional[float] = None + m_MinPenetrationForPenalty: Optional[float] = None + m_QueriesHitBackfaces: Optional[bool] = None + m_QueriesHitTriggers: Optional[bool] = None + m_RaycastsHitTriggers: Optional[bool] = None + m_ReuseCollisionCallbacks: Optional[bool] = None + m_ScratchBufferChunkCount: Optional[int] = None + m_SimulationMode: Optional[int] = None + m_SleepAngularVelocity: Optional[float] = None + m_SleepThreshold: Optional[float] = None + m_SleepVelocity: Optional[float] = None + m_SolverIterationCount: Optional[int] = None + m_SolverType: Optional[int] = None + m_SolverVelocityIterations: Optional[int] = None + m_WorldBounds: Optional[AABB] = None + m_WorldSubdivisions: Optional[int] = None + +@define(kw_only=True, slots=False) +class PlayerSettings(GlobalGameManager): + AndroidProfiler: bool + allowedAutorotateToLandscapeLeft: bool + allowedAutorotateToLandscapeRight: bool + allowedAutorotateToPortrait: bool + allowedAutorotateToPortraitUpsideDown: bool + companyName: str + defaultScreenHeight: int + defaultScreenHeightWeb: int + defaultScreenOrientation: int + defaultScreenWidth: int + defaultScreenWidthWeb: int + productName: str + runInBackground: bool + targetDevice: int + use32BitDisplayBuffer: bool + useMacAppStoreValidation: bool + useOSAutorotation: bool + usePlayerLog: bool + AID: Optional[Hash128] = None + AndroidEnableSustainedPerformanceMode: Optional[bool] = None + AndroidFilterTouchesWhenObscured: Optional[bool] = None + AndroidLicensePublicKey: Optional[str] = None + D3DHDRBitDepth: Optional[int] = None + Force_IOS_Speakers_When_Recording: Optional[bool] = None + Override_IPod_Music: Optional[bool] = None + Prepare_IOS_For_Recording: Optional[bool] = None + accelerometerFrequency: Optional[int] = None + activeInputHandler: Optional[int] = None + allowFullscreenSwitch: Optional[bool] = None + allowHDRDisplaySupport: Optional[bool] = None + androidApplicationEntry: Optional[int] = None + androidAutoRotationBehavior: Optional[int] = None + androidBlitType: Optional[int] = None + androidDefaultWindowHeight: Optional[int] = None + androidDefaultWindowWidth: Optional[int] = None + androidFullscreenMode: Optional[int] = None + androidMaxAspectRatio: Optional[float] = None + androidMinAspectRatio: Optional[float] = None + androidMinimumWindowHeight: Optional[int] = None + androidMinimumWindowWidth: Optional[int] = None + androidPredictiveBackSupport: Optional[bool] = None + androidRenderOutsideSafeArea: Optional[bool] = None + androidResizableWindow: Optional[bool] = None + androidResizeableActivity: Optional[bool] = None + androidShowActivityIndicatorOnLoading: Optional[int] = None + androidStartInFullscreen: Optional[bool] = None + androidSupportedAspectRatio: Optional[int] = None + androidUseSwappy: Optional[bool] = None + androidVulkanAllowFilterList: Optional[List[AndroidDeviceFilterData]] = None + androidVulkanDenyFilterList: Optional[List[AndroidDeviceFilterData]] = None + bakeCollisionMeshes: Optional[bool] = None + bundleIdentifier: Optional[str] = None + bundleVersion: Optional[str] = None + captureSingleScreen: Optional[bool] = None + cloudEnabled: Optional[bool] = None + cloudProjectId: Optional[str] = None + cpuConfiguration: Optional[List[int]] = None + cursorHotspot: Optional[Vector2f] = None + d3d11ForceExclusiveMode: Optional[bool] = None + d3d11FullscreenMode: Optional[int] = None + d3d9FullscreenMode: Optional[int] = None + debugUnloadMode: Optional[int] = None + dedicatedServerOptimizations: Optional[bool] = None + defaultCursor: Optional[PPtr[Texture2D]] = None + defaultIsFullScreen: Optional[bool] = None + defaultIsNativeResolution: Optional[bool] = None + deferSystemGesturesMode: Optional[int] = None + disableDepthAndStencilBuffers: Optional[bool] = None + disableOldInputManagerSupport: Optional[bool] = None + displayResolutionDialog: Optional[int] = None + enableFrameTimingStats: Optional[bool] = None + enableGamepadInput: Optional[bool] = None + enableHWStatistics: Optional[bool] = None + enableNativePlatformBackendsForNewInputSystem: Optional[bool] = None + enableNewInputSystem: Optional[bool] = None + enableOpenGLProfilerGPURecorders: Optional[bool] = None + forceSRGBBlit: Optional[bool] = None + forceSingleInstance: Optional[bool] = None + framebufferDepthMemorylessMode: Optional[int] = None + fullscreenMode: Optional[int] = None + gpuSkinning: Optional[bool] = None + graphicsJobMode: Optional[int] = None + graphicsJobs: Optional[bool] = None + hdrBitDepth: Optional[int] = None + hideHomeButton: Optional[bool] = None + hmiLoadingImage: Optional[PPtr[Texture2D]] = None + iPhoneBundleIdentifier: Optional[str] = None + ignoreAlphaClear: Optional[bool] = None + insecureHttpOption: Optional[int] = None + invalidatedPatternTexture: Optional[PPtr[Texture2D]] = None + iosAllowHTTPDownload: Optional[bool] = None + iosAppInBackgroundBehavior: Optional[int] = None + iosShowActivityIndicatorOnLoading: Optional[int] = None + iosUseCustomAppBackgroundBehavior: Optional[bool] = None + isWsaHolographicRemotingEnabled: Optional[bool] = None + legacyClampBlendShapeWeights: Optional[bool] = None + loadStoreDebugModeEnabled: Optional[bool] = None + m_ActiveColorSpace: Optional[int] = None + m_ColorGamuts: Optional[List[int]] = None + m_HolographicPauseOnTrackingLoss: Optional[bool] = None + m_HolographicTrackingLossScreen: Optional[PPtr[Texture2D]] = None + m_MTRendering: Optional[bool] = None + m_MobileMTRendering: Optional[bool] = None + m_MobileRenderingPath: Optional[int] = None + m_RenderingPath: Optional[int] = None + m_ShowUnitySplashLogo: Optional[bool] = None + m_ShowUnitySplashScreen: Optional[bool] = None + m_SplashScreenAnimation: Optional[int] = None + m_SplashScreenBackgroundAnimationZoom: Optional[float] = None + m_SplashScreenBackgroundColor: Optional[ColorRGBA] = None + m_SplashScreenBackgroundLandscape: Optional[PPtr[Texture2D]] = None + m_SplashScreenBackgroundLandscapeAspect: Optional[float] = None + m_SplashScreenBackgroundLandscapeUvs: Optional[Rectf] = None + m_SplashScreenBackgroundPortrait: Optional[PPtr[Texture2D]] = None + m_SplashScreenBackgroundPortraitAspect: Optional[float] = None + m_SplashScreenBackgroundPortraitUvs: Optional[Rectf] = None + m_SplashScreenDrawMode: Optional[int] = None + m_SplashScreenLogoAnimationZoom: Optional[float] = None + m_SplashScreenLogoStyle: Optional[int] = None + m_SplashScreenLogos: Optional[List[SplashScreenLogo]] = None + m_SplashScreenOverlayOpacity: Optional[float] = None + m_SplashScreenStyle: Optional[int] = None + m_SpriteBatchVertexThreshold: Optional[int] = None + m_StackTraceTypes: Optional[List[int]] = None + m_StereoRenderingPath: Optional[int] = None + m_Stereoscopic3D: Optional[bool] = None + m_SupportedAspectRatios: Optional[AspectRatios] = None + m_UnitySplashLogo: Optional[PPtr[Sprite]] = None + m_UseDX11: Optional[bool] = None + m_VirtualRealitySplashScreen: Optional[PPtr[Texture2D]] = None + macAppStoreCategory: Optional[str] = None + macFullscreenMode: Optional[int] = None + macRetinaSupport: Optional[bool] = None + meshDeformation: Optional[int] = None + metalFramebufferOnly: Optional[bool] = None + metroEnableIndependentInputSource: Optional[bool] = None + metroEnableLowLatencyPresentationAPI: Optional[bool] = None + metroInputSource: Optional[int] = None + mipStripping: Optional[bool] = None + mobileMTRenderingBaked: Optional[bool] = None + muteOtherAudioSources: Optional[bool] = None + n3dsDisableStereoscopicView: Optional[bool] = None + n3dsEnableSharedListOpt: Optional[bool] = None + n3dsEnableVSync: Optional[bool] = None + numberOfMipsStripped: Optional[int] = None + numberOfMipsStrippedPerMipmapLimitGroup: Optional[List[Tuple[str, int]]] = None + organizationId: Optional[str] = None + platformRequiresReadableAssets: Optional[bool] = None + playerDataPath: Optional[str] = None + playerMinOpenGLESVersion: Optional[int] = None + preloadedAssets: Optional[List[PPtr[Object]]] = None + preserveFramebufferAlpha: Optional[bool] = None + productGUID: Optional[GUID] = None + projectId: Optional[str] = None + projectName: Optional[str] = None + protectGraphicsMemory: Optional[bool] = None + ps3SplashScreen: Optional[PPtr[Texture2D]] = None + psp2AcquireBGM: Optional[bool] = None + psp2PowerMode: Optional[int] = None + qualitySettingsNames: Optional[List[str]] = None + resetResolutionOnWindowResize: Optional[bool] = None + resizableWindow: Optional[bool] = None + resolutionScalingMode: Optional[int] = None + singlePassStereoRendering: Optional[bool] = None + stadiaPresentMode: Optional[int] = None + stadiaTargetFramerate: Optional[int] = None + stripPhysics: Optional[bool] = None + submitAnalytics: Optional[bool] = None + switchAllowGpuScratchShrinking: Optional[bool] = None + switchGpuScratchPoolGranularity: Optional[int] = None + switchMaxWorkerMultiple: Optional[int] = None + switchNVNDefaultPoolsGranularity: Optional[int] = None + switchNVNGraphicsFirmwareMemory: Optional[int] = None + switchNVNMaxPublicSamplerIDCount: Optional[int] = None + switchNVNMaxPublicTextureIDCount: Optional[int] = None + switchNVNOtherPoolsGranularity: Optional[int] = None + switchNVNShaderPoolsGranularity: Optional[int] = None + switchQueueCommandMemory: Optional[int] = None + switchQueueComputeMemory: Optional[int] = None + switchQueueControlMemory: Optional[int] = None + targetGlesGraphics: Optional[int] = None + targetIOSGraphics: Optional[int] = None + targetPixelDensity: Optional[int] = None + targetPlatform: Optional[int] = None + targetResolution: Optional[int] = None + tizenShowActivityIndicatorOnLoading: Optional[int] = None + tvOSBundleVersion: Optional[str] = None + uiUse16BitDepthBuffer: Optional[bool] = None + unsupportedMSAAFallback: Optional[int] = None + uploadClearedTextureDataAfterCreationFromScript: Optional[bool] = None + use24BitDepthBuffer: Optional[bool] = None + useAlphaInDashboard: Optional[bool] = None + useFlipModelSwapchain: Optional[bool] = None + useHDRDisplay: Optional[bool] = None + useOnDemandResources: Optional[bool] = None + videoMemoryForVertexBuffers: Optional[int] = None + virtualRealitySupported: Optional[bool] = None + virtualTexturingSupportEnabled: Optional[bool] = None + visibleInBackground: Optional[bool] = None + visionOSBundleVersion: Optional[str] = None + vrSettings: Optional[VRSettings] = None + vulkanEnableCommandBufferRecycling: Optional[bool] = None + vulkanEnableLateAcquireNextImage: Optional[bool] = None + vulkanEnablePreTransform: Optional[bool] = None + vulkanEnableSetSRGBWrite: Optional[bool] = None + vulkanNumSwapchainBuffers: Optional[int] = None + vulkanUseSWCommandBuffers: Optional[bool] = None + wiiHio2Usage: Optional[int] = None + wiiLoadingScreenBackground: Optional[ColorRGBA] = None + wiiLoadingScreenFileName: Optional[str] = None + wiiLoadingScreenPeriod: Optional[int] = None + wiiLoadingScreenRect: Optional[Rectf] = None + wiiLoadingScreenRectPlacement: Optional[int] = None + wiiUAllowScreenCapture: Optional[bool] = None + wiiUControllerCount: Optional[int] = None + wiiUGamePadMSAA: Optional[int] = None + wiiUSupportsBalanceBoard: Optional[bool] = None + wiiUSupportsClassicController: Optional[bool] = None + wiiUSupportsMotionPlus: Optional[bool] = None + wiiUSupportsNunchuk: Optional[bool] = None + wiiUSupportsProController: Optional[bool] = None + wiiUTVResolution: Optional[int] = None + windowsGamepadBackendHint: Optional[int] = None + wsaTransparentSwapchain: Optional[bool] = None + xboxEnableAvatar: Optional[bool] = None + xboxEnableEnableRenderThreadRunsJobs: Optional[bool] = None + xboxEnableFitness: Optional[bool] = None + xboxEnableGuest: Optional[bool] = None + xboxEnableHeadOrientation: Optional[bool] = None + xboxEnableKinect: Optional[bool] = None + xboxEnableKinectAutoTracking: Optional[bool] = None + xboxEnablePIXSampling: Optional[bool] = None + xboxEnableSpeech: Optional[bool] = None + xboxOneDisableEsram: Optional[bool] = None + xboxOneDisableKinectGpuReservation: Optional[bool] = None + xboxOneEnable7thCore: Optional[bool] = None + xboxOneEnableTypeOptimization: Optional[bool] = None + xboxOneLoggingLevel: Optional[int] = None + xboxOneMonoLoggingLevel: Optional[int] = None + xboxOnePresentImmediateThreshold: Optional[int] = None + xboxOneResolution: Optional[int] = None + xboxOneSResolution: Optional[int] = None + xboxOneXResolution: Optional[int] = None + xboxPIXTextureCapture: Optional[bool] = None + xboxSkinOnGPU: Optional[bool] = None + xboxSpeechDB: Optional[int] = None + +@define(kw_only=True, slots=False) +class QualitySettings(GlobalGameManager): + Beautiful: Optional[QualitySetting] = None + Fantastic: Optional[QualitySetting] = None + Fast: Optional[QualitySetting] = None + Fastest: Optional[QualitySetting] = None + Good: Optional[QualitySetting] = None + Simple: Optional[QualitySetting] = None + m_CurrentQuality: Optional[int] = None + m_DefaultMobileQuality: Optional[int] = None + m_DefaultStandaloneQuality: Optional[int] = None + m_DefaultWebPlayerQuality: Optional[int] = None + m_EditorQuality: Optional[int] = None + m_QualitySettings: Optional[List[QualitySetting]] = None + m_StrippedMaximumLODLevel: Optional[int] = None + m_TextureMipmapLimitGroupNames: Optional[List[str]] = None + +@define(kw_only=True, slots=False) +class ResourceManager(GlobalGameManager): + m_Container: List[Tuple[str, PPtr[Object]]] + m_DependentAssets: Optional[List[ResourceManager_Dependency]] = None + +@define(kw_only=True, slots=False) +class RuntimeInitializeOnLoadManager(GlobalGameManager): + m_AfterAssembliesLoadedMethodExecutionOrders: Optional[List[int]] = None + m_AfterAssembliesLoadedUnityMethodExecutionOrders: Optional[List[int]] = None + m_AfterMethodExecutionOrders: Optional[List[int]] = None + m_AfterUnityMethodExecutionOrders: Optional[List[int]] = None + m_AssemblyNames: Optional[List[str]] = None + m_BeforeMethodExecutionOrders: Optional[List[int]] = None + m_BeforeSplashScreenMethodExecutionOrders: Optional[List[int]] = None + m_BeforeSplashScreenUnityMethodExecutionOrders: Optional[List[int]] = None + m_BeforeUnityMethodExecutionOrders: Optional[List[int]] = None + m_ClassInfos: Optional[List[ClassInfo]] = None + m_ClassMethodInfos: Optional[List[ClassMethodInfo]] = None + m_MethodExecutionOrders: Optional[List[int]] = None + m_NamespaceNames: Optional[List[str]] = None + m_SubsystemRegistrationMethodExecutionOrders: Optional[List[int]] = None + m_SubsystemRegistrationUnityMethodExecutionOrders: Optional[List[int]] = None + m_UnityMethodExecutionOrders: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class ShaderNameRegistry(GlobalGameManager): + m_PreloadShaders: bool + m_Shaders: NameToObjectMap + +@define(kw_only=True, slots=False) +class StreamingManager(GlobalGameManager): + pass + +@define(kw_only=True, slots=False) +class TagManager(GlobalGameManager): + tags: List[str] + Builtin_Layer_0: Optional[str] = None + Builtin_Layer_1: Optional[str] = None + Builtin_Layer_2: Optional[str] = None + Builtin_Layer_3: Optional[str] = None + Builtin_Layer_4: Optional[str] = None + Builtin_Layer_5: Optional[str] = None + Builtin_Layer_6: Optional[str] = None + Builtin_Layer_7: Optional[str] = None + User_Layer_10: Optional[str] = None + User_Layer_11: Optional[str] = None + User_Layer_12: Optional[str] = None + User_Layer_13: Optional[str] = None + User_Layer_14: Optional[str] = None + User_Layer_15: Optional[str] = None + User_Layer_16: Optional[str] = None + User_Layer_17: Optional[str] = None + User_Layer_18: Optional[str] = None + User_Layer_19: Optional[str] = None + User_Layer_20: Optional[str] = None + User_Layer_21: Optional[str] = None + User_Layer_22: Optional[str] = None + User_Layer_23: Optional[str] = None + User_Layer_24: Optional[str] = None + User_Layer_25: Optional[str] = None + User_Layer_26: Optional[str] = None + User_Layer_27: Optional[str] = None + User_Layer_28: Optional[str] = None + User_Layer_29: Optional[str] = None + User_Layer_30: Optional[str] = None + User_Layer_31: Optional[str] = None + User_Layer_8: Optional[str] = None + User_Layer_9: Optional[str] = None + layers: Optional[List[str]] = None + m_RenderingLayers: Optional[List[str]] = None + m_SortingLayers: Optional[List[SortingLayerEntry]] = None + +@define(kw_only=True, slots=False) +class TimeManager(GlobalGameManager): + Fixed_Timestep: Union[RationalTime, float] + Maximum_Allowed_Timestep: float + m_TimeScale: float + Maximum_Particle_Timestep: Optional[float] = None + +@define(kw_only=True, slots=False) +class UnityAdsManager(GlobalGameManager): + pass + +@define(kw_only=True, slots=False) +class UnityAnalyticsManager(GlobalGameManager): + m_Enabled: Optional[bool] = None + m_InitializeOnStartup: Optional[bool] = None + m_TestConfigUrl: Optional[str] = None + m_TestEventUrl: Optional[str] = None + m_TestMode: Optional[bool] = None + +@define(kw_only=True, slots=False) +class UnityConnectSettings(GlobalGameManager): + UnityAnalyticsSettings: UnityAnalyticsSettings + UnityPurchasingSettings: UnityPurchasingSettings + CrashReportingSettings: Optional[CrashReportingSettings] = None + PerformanceReportingSettings: Optional[PerformanceReportingSettings] = None + UnityAdsSettings: Optional[UnityAdsSettings] = None + m_ConfigUrl: Optional[str] = None + m_DashboardUrl: Optional[str] = None + m_Enabled: Optional[bool] = None + m_EventOldUrl: Optional[str] = None + m_EventUrl: Optional[str] = None + m_TestConfigUrl: Optional[str] = None + m_TestEventUrl: Optional[str] = None + m_TestInitMode: Optional[int] = None + m_TestMode: Optional[bool] = None + +@define(kw_only=True, slots=False) +class VFXManager(GlobalGameManager): + m_CopyBufferShader: PPtr[ComputeShader] + m_FixedTimeStep: float + m_IndirectShader: PPtr[ComputeShader] + m_MaxDeltaTime: float + m_RenderPipeSettingsPath: str + m_SortShader: PPtr[ComputeShader] + m_BatchEmptyLifetime: Optional[int] = None + m_CompiledVersion: Optional[int] = None + m_EmptyShader: Optional[PPtr[Shader]] = None + m_MaxCapacity: Optional[int] = None + m_MaxScrubTime: Optional[float] = None + m_RuntimeResources: Optional[PPtr[MonoBehaviour]] = None + m_RuntimeVersion: Optional[int] = None + m_StripUpdateShader: Optional[PPtr[ComputeShader]] = None + +@define(kw_only=True, slots=False) +class LevelGameManager(GameManager, ABC): + pass + +@define(kw_only=True, slots=False) +class HaloManager(LevelGameManager): + pass + +@define(kw_only=True, slots=False) +class LightmapSettings(LevelGameManager): + m_Lightmaps: List[LightmapData] + m_LightmapsMode: int + m_BakedColorSpace: Optional[int] = None + m_EnlightenSceneMapping: Optional[EnlightenSceneMapping] = None + m_GISettings: Optional[GISettings] = None + m_LightProbes: Optional[PPtr[LightProbes]] = None + m_LightingSettings: Optional[PPtr[LightingSettings]] = None + m_RuntimeCPUUsage: Optional[int] = None + m_ShadowMaskMode: Optional[int] = None + m_UseDualLightmapsInForward: Optional[bool] = None + m_UseShadowmask: Optional[bool] = None + +@define(kw_only=True, slots=False) +class NavMeshSettings(LevelGameManager): + m_NavMesh: Optional[PPtr[NavMesh]] = None + m_NavMeshData: Optional[PPtr[NavMeshData]] = None + +@define(kw_only=True, slots=False) +class OcclusionCullingSettings(LevelGameManager): + m_OcclusionCullingData: PPtr[OcclusionCullingData] + m_Portals: List[PPtr[OcclusionPortal]] + m_SceneGUID: GUID + m_StaticRenderers: List[PPtr[Renderer]] + +@define(kw_only=True, slots=False) +class RenderSettings(LevelGameManager): + m_FlareStrength: float + m_Fog: bool + m_FogColor: ColorRGBA + m_FogDensity: float + m_FogMode: int + m_HaloStrength: float + m_HaloTexture: PPtr[Texture2D] + m_LinearFogEnd: float + m_LinearFogStart: float + m_SkyboxMaterial: PPtr[Material] + m_SpotCookie: PPtr[Texture2D] + m_AmbientEquatorColor: Optional[ColorRGBA] = None + m_AmbientGroundColor: Optional[ColorRGBA] = None + m_AmbientIntensity: Optional[float] = None + m_AmbientLight: Optional[ColorRGBA] = None + m_AmbientMode: Optional[int] = None + m_AmbientProbe: Optional[SphericalHarmonicsL2] = None + m_AmbientProbeInGamma: Optional[SphericalHarmonicsL2] = None + m_AmbientSkyColor: Optional[ColorRGBA] = None + m_CustomReflection: Optional[Union[PPtr[Cubemap], PPtr[Texture]]] = None + m_DefaultReflectionMode: Optional[int] = None + m_DefaultReflectionResolution: Optional[int] = None + m_FlareFadeSpeed: Optional[float] = None + m_GeneratedSkyboxReflection: Optional[PPtr[Cubemap]] = None + m_IndirectSpecularColor: Optional[ColorRGBA] = None + m_ReflectionBounces: Optional[int] = None + m_ReflectionIntensity: Optional[float] = None + m_SubtractiveShadowColor: Optional[ColorRGBA] = None + m_Sun: Optional[PPtr[Light]] = None + m_UseRadianceAmbientProbe: Optional[bool] = None + +@define(kw_only=True, slots=False) +class HierarchyState(Object): + expanded: List[PPtr[Object]] + selection: List[PPtr[Object]] + scrollposition_x: Optional[float] = None + scrollposition_x: Optional[float] = None + scrollposition_y: Optional[float] = None + scrollposition_y: Optional[float] = None + +@define(kw_only=True, slots=False) +class InspectorExpandedState(Object): + m_ExpandedData: List[ExpandedData] + +@define(kw_only=True, slots=False) +class MarshallingTestObject(Object): + m_Prop: int + +@define(kw_only=True, slots=False) +class MemorySettings(Object): + pass + +@define(kw_only=True, slots=False) +class NScreenBridge(Object): + pass + +@define(kw_only=True, slots=False) +class NativeObjectType(Object): + m_Inner: NativeType + +@define(kw_only=True, slots=False) +class PackedAssets(Object): + m_Contents: List[BuildReportPackedAssetInfo] + m_Overhead: int + m_ShortPath: str + m_File: Optional[int] = None + +@define(kw_only=True, slots=False) +class PlatformModuleSetup(Object): + modules: List[Module] + +@define(kw_only=True, slots=False) +class PluginBuildInfo(Object): + m_EditorPlugins: List[str] + m_RuntimePlugins: List[str] + +@define(kw_only=True, slots=False) +class Prefab(Object): + m_RootGameObject: PPtr[GameObject] + m_ContainsMissingSerializeReferenceTypes: Optional[bool] = None + m_HideFlagsBehaviour: Optional[int] = None + m_IsExploded: Optional[bool] = None + m_IsPrefabAsset: Optional[bool] = None + m_IsPrefabParent: Optional[bool] = None + m_Modification: Optional[PrefabModification] = None + m_ParentPrefab: Optional[PPtr[Prefab]] = None + m_SourcePrefab: Optional[PPtr[Prefab]] = None + +@define(kw_only=True, slots=False) +class PrefabInstance(Object): + m_Modification: PrefabModification + m_RootGameObject: PPtr[GameObject] + m_SourcePrefab: PPtr[Prefab] + +@define(kw_only=True, slots=False) +class PresetManager(Object): + m_DefaultList: Optional[List[DefaultPresetList]] = None + m_DefaultPresets: Optional[List[Tuple[PresetType, List[DefaultPreset]]]] = None + +@define(kw_only=True, slots=False) +class PropertyModificationsTargetTestObject(Object): + m_Array: List[PropertyModificationsTargetTestNativeObject] + m_Data: PropertyModificationsTargetTestNativeObject + m_FloatTestValue: float + byte_data: Optional[bytes] = None + m_Bytes: Optional[List[int]] = None + m_BytesSize: Optional[int] = None + m_Floats: Optional[List[float]] = None + +@define(kw_only=True, slots=False) +class RenderPassAttachment(Object): + pass + +@define(kw_only=True, slots=False) +class SceneRoots(Object): + m_Roots: List[PPtr[Object]] + +@define(kw_only=True, slots=False) +class SceneVisibilityState(Object): + m_IsolationMode: Optional[bool] = None + m_MainStageIsolated: Optional[bool] = None + m_PrefabStageIsolated: Optional[bool] = None + m_SceneData: Optional[List[Tuple[SceneIdentifier, SceneVisibilityData]]] = None + m_ScenePickingData: Optional[SceneDataContainer] = None + m_SceneVisibilityData: Optional[SceneDataContainer] = None + m_SceneVisibilityDataIsolated: Optional[SceneDataContainer] = None + +@define(kw_only=True, slots=False) +class ScenesUsingAssets(Object): + m_ListOfScenesUsingEachAsset: List[Tuple[str, List[str]]] + m_ScenesUsingAssets: List[BuildReportScenesUsingAsset] + +@define(kw_only=True, slots=False) +class SerializableManagedHost(Object): + m_Script: PPtr[MonoScript] + +@define(kw_only=True, slots=False) +class SerializableManagedRefTestClass(Object): + m_Script: PPtr[MonoScript] + +@define(kw_only=True, slots=False) +class ShaderContainer(Object): + pass + +@define(kw_only=True, slots=False) +class SiblingDerived(Object): + pass + +@define(kw_only=True, slots=False) +class SpriteAtlasDatabase(Object): + pass + +@define(kw_only=True, slots=False) +class TestObjectVectorPairStringBool(Object): + m_Map: List[Tuple[str, bool]] + m_String: str + +@define(kw_only=True, slots=False) +class TestObjectWithSerializedAnimationCurve(Object): + m_Curve: AnimationCurve + +@define(kw_only=True, slots=False) +class TestObjectWithSerializedArray(Object): + m_ClampTestValue: float + m_IntegerArray: List[int] + +@define(kw_only=True, slots=False) +class TestObjectWithSerializedMapStringBool(Object): + m_Map: List[Tuple[str, bool]] + m_String: str + +@define(kw_only=True, slots=False) +class TestObjectWithSerializedMapStringNonAlignedStruct(Object): + m_Map: List[Tuple[str, NonAlignedStruct]] + m_String: str + +@define(kw_only=True, slots=False) +class TestObjectWithSpecialLayoutOne(Object): + differentLayout: LayoutDataOne + sameLayout: LayoutDataOne + +@define(kw_only=True, slots=False) +class TestObjectWithSpecialLayoutTwo(Object): + differentLayout: LayoutDataTwo + sameLayout: LayoutDataThree + +@define(kw_only=True, slots=False) +class TilemapEditorUserSettings(Object): + m_FocusMode: int + m_LastUsedPalette: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class VersionControlSettings(Object): + m_Mode: str + m_CollabEditorSettings: Optional[CollabEditorSettings] = None + m_TrackPackagesOutsideProject: Optional[bool] = None + +@define(kw_only=True, slots=False) +class VideoBuildInfo(Object): + m_IsVideoModuleDisabled: bool + m_VideoClipCount: int + +@define(kw_only=True, slots=False) +class AABB: + m_Center: Vector3f + m_Extent: Vector3f + +@define(kw_only=True, slots=False) +class AddedComponent: + addedObject: PPtr[Component] + insertIndex: int + targetCorrespondingSourceObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class AddedGameObject: + addedObject: PPtr[Transform] + insertIndex: int + targetCorrespondingSourceObject: PPtr[Transform] + +@define(kw_only=True, slots=False) +class AndroidDeviceFilterData: + androidOsVersionString: str + brandName: str + deviceName: str + driverVersionString: str + productName: str + vendorName: str + vulkanApiVersionString: str + +@define(kw_only=True, slots=False) +class AnimationClipBindingConstant: + genericBindings: List[GenericBinding] + pptrCurveMapping: List[PPtr[Object]] + +@define(kw_only=True, slots=False) +class AnimationClipOverride: + m_OriginalClip: PPtr[AnimationClip] + m_OverrideClip: PPtr[AnimationClip] + +@define(kw_only=True, slots=False) +class AnimationCurve: + m_Curve: List[Keyframe] + m_PostInfinity: int + m_PreInfinity: int + m_RotationOrder: Optional[int] = None + +@define(kw_only=True, slots=False) +class AnimationEvent: + data: str + floatParameter: float + functionName: str + intParameter: int + messageOptions: int + objectReferenceParameter: PPtr[Object] + time: float + +@define(kw_only=True, slots=False) +class AnimatorCondition: + m_ConditionEvent: str + m_ConditionMode: int + m_EventTreshold: float + +@define(kw_only=True, slots=False) +class Annotation: + m_ClassID: int + m_Flags: int + m_GizmoEnabled: bool + m_IconEnabled: bool + m_ScriptClass: str + +@define(kw_only=True, slots=False) +class ArticulationDrive: + damping: float + forceLimit: float + lowerLimit: float + stiffness: float + target: float + targetVelocity: float + upperLimit: float + driveType: Optional[int] = None + +@define(kw_only=True, slots=False) +class AspectRatios: + Others: bool + x16_10: bool + x16_9: bool + x4_3: bool + x5_4: bool + +@define(kw_only=True, slots=False) +class AssemblyJsonAsset(TextAsset): + m_Name: str + m_Script: str + m_PathName: Optional[str] = None + +@define(kw_only=True, slots=False) +class AssemblyJsonImporter(AssetImporter): + m_AssetBundleName: str + m_AssetBundleVariant: str + m_Name: str + m_UserData: str + m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None + +@define(kw_only=True, slots=False) +class Asset: + children: List[GUID] + labels: AssetLabels + mainRepresentation: LibraryRepresentation + parent: GUID + representations: List[LibraryRepresentation] + type: int + assetBundleIndex: Optional[int] = None + digest: Optional[MdFour] = None + guidOfPathLocationDependencies: Optional[Union[List[Tuple[str, GUID]], List[Tuple[GUID, str]]]] = None + hash: Optional[Union[Hash128, MdFour]] = None + hashOfImportedAssetDependencies: Optional[List[GUID]] = None + hashOfSourceAssetDependencies: Optional[List[GUID]] = None + importerClassId: Optional[int] = None + importerVersionHash: Optional[int] = None + metaModificationDate_0_: Optional[int] = None + metaModificationDate_1_: Optional[int] = None + modificationDate_0_: Optional[int] = None + modificationDate_1_: Optional[int] = None + scriptedImporterClassID: Optional[str] = None + +@define(kw_only=True, slots=False) +class AssetBundleFullName: + m_AssetBundleName: str + m_AssetBundleVariant: str + +@define(kw_only=True, slots=False) +class AssetBundleInfo: + AssetBundleDependencies: List[int] + AssetBundleHash: Hash128 + +@define(kw_only=True, slots=False) +class AssetBundleScriptInfo: + assemblyName: str + className: str + hash: int + nameSpace: str + +@define(kw_only=True, slots=False) +class AssetDatabase(Object): + m_Assets: List[Tuple[GUID, Asset]] + m_AssetBundleNames: Optional[List[Tuple[int, AssetBundleFullName]]] = None + m_AssetTimeStamps: Optional[List[Tuple[str, AssetTimeStamp]]] = None + m_Metrics: Optional[AssetDatabaseMetrics] = None + m_UnityShadersVersion: Optional[int] = None + m_lastValidVersionHashes: Optional[List[Tuple[int, int]]] = None + +@define(kw_only=True, slots=False) +class AssetDatabaseMetrics: + totalAssetCount: int + nonProAssetCount: Optional[int] = None + nonProAssetsCreatedAfterProLicense: Optional[int] = None + +@define(kw_only=True, slots=False) +class AssetImporterHashKey: + ScriptClass: str + type: int + +@define(kw_only=True, slots=False) +class AssetImporterLog(NamedObject): + m_Logs: List[AssetImporter_ImportError] + m_Name: str + +@define(kw_only=True, slots=False) +class AssetImporter_ImportError: + error: str + file: str + line: int + mode: int + object: PPtr[Object] + +@define(kw_only=True, slots=False) +class AssetInfo: + asset: PPtr[Object] + preloadIndex: int + preloadSize: int + +@define(kw_only=True, slots=False) +class AssetLabels: + m_Labels: List[str] + +@define(kw_only=True, slots=False) +class AssetTimeStamp: + metaModificationDate_0_: int + metaModificationDate_1_: int + modificationDate_0_: int + modificationDate_1_: int + +@define(kw_only=True, slots=False) +class AttachmentIndexArray: + activeAttachments: int + attachments: List[int] + +@define(kw_only=True, slots=False) +class AttachmentInfo: + format: int + needsResolve: bool + +@define(kw_only=True, slots=False) +class AudioImporterOutput: + editorOutputContainerFormat: int + editorOutputSettings: SampleSettings + outputContainerFormat: int + outputSettings: SampleSettings + playerResource: Optional[StreamedResource] = None + +@define(kw_only=True, slots=False) +class AudioMixerConstant: + effectGUIDs: List[GUID] + effects: List[EffectConstant] + exposedParameterIndices: List[int] + exposedParameterNames: List[int] + groupGUIDs: List[GUID] + groupNameBuffer: List[str] + groups: List[GroupConstant] + numSideChainBuffers: int + pluginEffectNameBuffer: List[str] + snapshotGUIDs: List[GUID] + snapshotNameBuffer: List[str] + snapshots: List[SnapshotConstant] + groupConnections: Optional[List[GroupConnection]] = None + +@define(kw_only=True, slots=False) +class AudioMixerLiveUpdateBool(ABC): + pass + +@define(kw_only=True, slots=False) +class AudioMixerLiveUpdateFloat(ABC): + pass + +@define(kw_only=True, slots=False) +class AutoOffMeshLinkData: + m_Area: int + m_End: Vector3f + m_LinkDirection: int + m_LinkType: int + m_Radius: float + m_Start: Vector3f + +@define(kw_only=True, slots=False) +class AvatarBodyMask(NamedObject): + m_Mask: List[int] + m_Name: str + +@define(kw_only=True, slots=False) +class AvatarConstant: + m_Human: OffsetPtr + m_HumanSkeletonIndexArray: List[int] + m_RootMotionBoneIndex: int + m_RootMotionBoneX: xform + m_AvatarSkeleton: Optional[OffsetPtr] = None + m_AvatarSkeletonPose: Optional[OffsetPtr] = None + m_DefaultPose: Optional[OffsetPtr] = None + m_HumanSkeletonReverseIndexArray: Optional[List[int]] = None + m_RootMotionSkeleton: Optional[OffsetPtr] = None + m_RootMotionSkeletonIndexArray: Optional[List[int]] = None + m_RootMotionSkeletonPose: Optional[OffsetPtr] = None + m_Skeleton: Optional[OffsetPtr] = None + m_SkeletonNameIDArray: Optional[List[int]] = None + m_SkeletonPose: Optional[OffsetPtr] = None + +@define(kw_only=True, slots=False) +class AvatarSkeletonMaskElement: + path: str + weight: float + +@define(kw_only=True, slots=False) +class Axes: + m_Length: float + m_Limit: Limit + m_PostQ: float4 + m_PreQ: float4 + m_Sgn: Union[float3, float4] + m_Type: int + +@define(kw_only=True, slots=False) +class BitField: + m_Bits: int + +@define(kw_only=True, slots=False) +class Blend1dDataConstant: + m_ChildThresholdArray: List[float] + +@define(kw_only=True, slots=False) +class Blend2dDataConstant: + m_ChildMagnitudeArray: Optional[List[float]] = None + m_ChildNeighborListArray: Optional[List[MotionNeighborList]] = None + m_ChildPairAvgMagInvArray: Optional[List[float]] = None + m_ChildPairVectorArray: Optional[List[Vector2f]] = None + m_ChildPositionArray: Optional[List[Vector2f]] = None + m_ChildThresholdArray: Optional[List[float]] = None + +@define(kw_only=True, slots=False) +class BlendDirectDataConstant: + m_ChildBlendEventIDArray: List[int] + m_NormalizedBlendValues: bool + +@define(kw_only=True, slots=False) +class BlendShapeData: + channels: List[MeshBlendShapeChannel] + fullWeights: List[float] + shapes: List[MeshBlendShape] + vertices: List[BlendShapeVertex] + +@define(kw_only=True, slots=False) +class BlendShapeVertex: + index: int + normal: Vector3f + tangent: Vector3f + vertex: Vector3f + +@define(kw_only=True, slots=False) +class BlendTreeConstant: + m_NodeArray: List[OffsetPtr] + m_BlendEventArrayConstant: Optional[OffsetPtr] = None + +@define(kw_only=True, slots=False) +class BlendTreeNodeConstant: + m_BlendEventID: int + m_ChildIndices: List[int] + m_ClipID: int + m_Duration: float + m_Blend1dData: Optional[OffsetPtr] = None + m_Blend2dData: Optional[OffsetPtr] = None + m_BlendDirectData: Optional[OffsetPtr] = None + m_BlendEventYID: Optional[int] = None + m_BlendType: Optional[int] = None + m_ChildThresholdArray: Optional[List[float]] = None + m_ClipIndex: Optional[int] = None + m_CycleOffset: Optional[float] = None + m_Mirror: Optional[bool] = None + +@define(kw_only=True, slots=False) +class BoneInfluence: + boneIndex_0_: int + boneIndex_1_: int + boneIndex_2_: int + boneIndex_3_: int + weight_0_: float + weight_1_: float + weight_2_: float + weight_3_: float + +@define(kw_only=True, slots=False) +class BoneWeights4: + boneIndex_0_: int + boneIndex_1_: int + boneIndex_2_: int + boneIndex_3_: int + weight_0_: float + weight_1_: float + weight_2_: float + weight_3_: float + +@define(kw_only=True, slots=False) +class BranchWindLevel: + m_afBend_0: float + m_afBend_1: float + m_afBend_10: float + m_afBend_11: float + m_afBend_12: float + m_afBend_13: float + m_afBend_14: float + m_afBend_15: float + m_afBend_16: float + m_afBend_17: float + m_afBend_18: float + m_afBend_19: float + m_afBend_2: float + m_afBend_3: float + m_afBend_4: float + m_afBend_5: float + m_afBend_6: float + m_afBend_7: float + m_afBend_8: float + m_afBend_9: float + m_afFlexibility_0: float + m_afFlexibility_1: float + m_afFlexibility_10: float + m_afFlexibility_11: float + m_afFlexibility_12: float + m_afFlexibility_13: float + m_afFlexibility_14: float + m_afFlexibility_15: float + m_afFlexibility_16: float + m_afFlexibility_17: float + m_afFlexibility_18: float + m_afFlexibility_19: float + m_afFlexibility_2: float + m_afFlexibility_3: float + m_afFlexibility_4: float + m_afFlexibility_5: float + m_afFlexibility_6: float + m_afFlexibility_7: float + m_afFlexibility_8: float + m_afFlexibility_9: float + m_afOscillation_0: float + m_afOscillation_1: float + m_afOscillation_10: float + m_afOscillation_11: float + m_afOscillation_12: float + m_afOscillation_13: float + m_afOscillation_14: float + m_afOscillation_15: float + m_afOscillation_16: float + m_afOscillation_17: float + m_afOscillation_18: float + m_afOscillation_19: float + m_afOscillation_2: float + m_afOscillation_3: float + m_afOscillation_4: float + m_afOscillation_5: float + m_afOscillation_6: float + m_afOscillation_7: float + m_afOscillation_8: float + m_afOscillation_9: float + m_afSpeed_0: float + m_afSpeed_1: float + m_afSpeed_10: float + m_afSpeed_11: float + m_afSpeed_12: float + m_afSpeed_13: float + m_afSpeed_14: float + m_afSpeed_15: float + m_afSpeed_16: float + m_afSpeed_17: float + m_afSpeed_18: float + m_afSpeed_19: float + m_afSpeed_2: float + m_afSpeed_3: float + m_afSpeed_4: float + m_afSpeed_5: float + m_afSpeed_6: float + m_afSpeed_7: float + m_afSpeed_8: float + m_afSpeed_9: float + m_afTurbulence_0: float + m_afTurbulence_1: float + m_afTurbulence_10: float + m_afTurbulence_11: float + m_afTurbulence_12: float + m_afTurbulence_13: float + m_afTurbulence_14: float + m_afTurbulence_15: float + m_afTurbulence_16: float + m_afTurbulence_17: float + m_afTurbulence_18: float + m_afTurbulence_19: float + m_afTurbulence_2: float + m_afTurbulence_3: float + m_afTurbulence_4: float + m_afTurbulence_5: float + m_afTurbulence_6: float + m_afTurbulence_7: float + m_afTurbulence_8: float + m_afTurbulence_9: float + m_fIndependence: float + +@define(kw_only=True, slots=False) +class BufferBinding: + m_Index: int + m_NameIndex: int + m_ArraySize: Optional[int] = None + +@define(kw_only=True, slots=False) +class BuildReportFile: + id: int + path: str + role: str + totalSize: int + +@define(kw_only=True, slots=False) +class BuildReportPackedAssetInfo: + classID: int + fileID: int + packedSize: int + sourceAssetGUID: GUID + buildTimeAssetPath: Optional[str] = None + offset: Optional[int] = None + +@define(kw_only=True, slots=False) +class BuildReportScenesUsingAsset: + assetPath: str + scenePaths: List[str] + +@define(kw_only=True, slots=False) +class BuildStepInfo: + messages: List[BuildStepMessage] + stepName: str + depth: Optional[int] = None + duration: Optional[int] = None + durationTicks: Optional[int] = None + +@define(kw_only=True, slots=False) +class BuildStepMessage: + content: str + type: int + +@define(kw_only=True, slots=False) +class BuildSummary: + assetBundleOptions: int + crc: int + options: int + outputPath: str + platformName: str + totalErrors: int + totalSize: int + totalWarnings: int + buildGUID: Optional[GUID] = None + buildResult: Optional[int] = None + buildStartTime: Optional[DateTime] = None + buildType: Optional[int] = None + multiProcessEnabled: Optional[bool] = None + name: Optional[str] = None + platformGroupName: Optional[str] = None + subtarget: Optional[int] = None + success: Optional[bool] = None + totalTimeMS: Optional[int] = None + totalTimeTicks: Optional[int] = None + +@define(kw_only=True, slots=False) +class BuildTargetSettings: + m_BuildTarget: str + m_TextureFormat: int + m_AllowsAlphaSplitting: Optional[bool] = None + m_CompressionQuality: Optional[int] = None + m_LoadingBehavior: Optional[int] = None + m_MaxTextureSize: Optional[int] = None + m_TextureHeight: Optional[int] = None + m_TextureWidth: Optional[int] = None + +@define(kw_only=True, slots=False) +class BuildTextureStackReference: + groupName: str + itemName: str + +@define(kw_only=True, slots=False) +class BuiltAssetBundleInfo: + bundleArchiveFile: int + bundleName: str + packagedFileIndices: List[int] + +@define(kw_only=True, slots=False) +class BuiltinShaderSettings: + m_Mode: int + m_Shader: PPtr[Shader] + +@define(kw_only=True, slots=False) +class CGProgram(TextAsset): + m_Name: str + m_Script: str + m_PathName: Optional[str] = None + +@define(kw_only=True, slots=False) +class CachedAssetMetaData: + guid: GUID + originalChangeset: int + originalDigest: Union[Hash128, MdFour] + originalName: str + originalParent: GUID + pathName: str + +@define(kw_only=True, slots=False) +class Channel: + attributeName: str + byteOffset: int + curve: AnimationCurve + +@define(kw_only=True, slots=False) +class ChannelInfo: + dimension: int + format: int + offset: int + stream: int + +@define(kw_only=True, slots=False) +class CharacterInfo: + index: int + uv: Rectf + vert: Rectf + advance: Optional[float] = None + flipped: Optional[bool] = None + width: Optional[float] = None + +@define(kw_only=True, slots=False) +class Child: + m_IsAnim: bool + m_Motion: PPtr[Motion] + m_Threshold: float + m_TimeScale: float + m_CycleOffset: Optional[float] = None + m_Mirror: Optional[bool] = None + m_Position: Optional[Vector2f] = None + +@define(kw_only=True, slots=False) +class ChildAnimatorState: + m_Position: Vector3f + m_State: PPtr[AnimatorState] + +@define(kw_only=True, slots=False) +class ChildAnimatorStateMachine: + m_Position: Vector3f + m_StateMachine: PPtr[AnimatorStateMachine] + +@define(kw_only=True, slots=False) +class ChildMotion: + m_CycleOffset: float + m_DirectBlendParameter: str + m_Mirror: bool + m_Motion: PPtr[Motion] + m_Position: Vector2f + m_Threshold: float + m_TimeScale: float + +@define(kw_only=True, slots=False) +class ClampVelocityModule: + dampen: float + enabled: bool + magnitude: MinMaxCurve + separateAxis: bool + x: MinMaxCurve + y: MinMaxCurve + z: MinMaxCurve + drag: Optional[MinMaxCurve] = None + inWorldSpace: Optional[bool] = None + multiplyDragByParticleSize: Optional[bool] = None + multiplyDragByParticleVelocity: Optional[bool] = None + +@define(kw_only=True, slots=False) +class ClassInfo: + m_AssemblyNameIndex: int + m_ClassName: str + m_IsUnityClass: bool + m_MethodIndex: int + m_NamespaceIndex: int + m_NumOfMethods: int + m_NamespaceName: Optional[str] = None + +@define(kw_only=True, slots=False) +class ClassMethodInfo: + m_ClassIndex: int + m_MethodName: str + m_OrderNumber: int + +@define(kw_only=True, slots=False) +class Clip: + m_DenseClip: DenseClip + m_StreamedClip: StreamedClip + m_Binding: Optional[OffsetPtr] = None + m_ConstantClip: Optional[ConstantClip] = None + +@define(kw_only=True, slots=False) +class ClipAnimationInfo: + firstFrame: Union[int, float] + lastFrame: Union[int, float] + loop: bool + name: str + wrapMode: int + additiveReferencePoseFrame: Optional[float] = None + bodyMask: Optional[List[int]] = None + curves: Optional[List[ClipAnimationInfoCurve]] = None + cycleOffset: Optional[float] = None + events: Optional[List[AnimationEvent]] = None + hasAdditiveReferencePose: Optional[bool] = None + heightFromFeet: Optional[bool] = None + internalID: Optional[int] = None + keepAdditionalBonesAnimation: Optional[bool] = None + keepOriginalOrientation: Optional[bool] = None + keepOriginalPositionXZ: Optional[bool] = None + keepOriginalPositionY: Optional[bool] = None + level: Optional[float] = None + loopBlend: Optional[bool] = None + loopBlendOrientation: Optional[bool] = None + loopBlendPositionXZ: Optional[bool] = None + loopBlendPositionY: Optional[bool] = None + loopTime: Optional[bool] = None + maskSource: Optional[PPtr[AvatarMask]] = None + maskType: Optional[int] = None + mirror: Optional[bool] = None + orientationOffsetY: Optional[float] = None + skeletonMaskElements: Optional[List[AvatarSkeletonMaskElement]] = None + takeName: Optional[str] = None + transformMask: Optional[List[TransformMaskElement]] = None + +@define(kw_only=True, slots=False) +class ClipAnimationInfoCurve: + curve: AnimationCurve + name: str + +@define(kw_only=True, slots=False) +class ClipMuscleConstant: + m_AverageAngularSpeed: float + m_AverageSpeed: Union[float3, float4] + m_Clip: OffsetPtr + m_CycleOffset: float + m_DeltaPose: HumanPose + m_HeightFromFeet: bool + m_IndexArray: List[int] + m_KeepOriginalOrientation: bool + m_KeepOriginalPositionXZ: bool + m_KeepOriginalPositionY: bool + m_LeftFootStartX: xform + m_Level: float + m_LoopBlend: bool + m_LoopBlendOrientation: bool + m_LoopBlendPositionXZ: bool + m_LoopBlendPositionY: bool + m_Mirror: bool + m_OrientationOffsetY: float + m_RightFootStartX: xform + m_StartTime: float + m_StartX: xform + m_StopTime: float + m_ValueArrayDelta: List[ValueDelta] + m_AdditionalCurveIndexArray: Optional[List[int]] = None + m_LoopTime: Optional[bool] = None + m_MotionStartX: Optional[xform] = None + m_MotionStopX: Optional[xform] = None + m_StartAtOrigin: Optional[bool] = None + m_StopX: Optional[xform] = None + m_ValueArrayReferencePose: Optional[List[float]] = None + +@define(kw_only=True, slots=False) +class ClothAttachment: + m_Collider: PPtr[Collider] + m_Tearable: bool + m_TwoWayInteraction: bool + +@define(kw_only=True, slots=False) +class ClothConstrainCoefficients: + collisionSphereDistance: float + maxDistance: float + collisionSphereRadius: Optional[float] = None + maxDistanceBias: Optional[float] = None + +@define(kw_only=True, slots=False) +class ClothSphereColliderPair: + first: PPtr[SphereCollider] + second: PPtr[SphereCollider] + +@define(kw_only=True, slots=False) +class ClusterInput: + m_DeviceName: str + m_Index: int + m_Name: str + m_ServerUrl: str + m_Type: int + +@define(kw_only=True, slots=False) +class CollabEditorSettings: + inProgressEnabled: bool + +@define(kw_only=True, slots=False) +class Collision(ABC): + pass + +@define(kw_only=True, slots=False) +class Collision2D(ABC): + pass + +@define(kw_only=True, slots=False) +class CollisionModule: + enabled: bool + minKillSpeed: float + type: int + bounce: Optional[float] = None + colliderForce: Optional[float] = None + collidesWith: Optional[BitField] = None + collidesWithDynamic: Optional[bool] = None + collisionMessages: Optional[bool] = None + collisionMode: Optional[int] = None + dampen: Optional[float] = None + energyLossOnCollision: Optional[float] = None + interiorCollisions: Optional[bool] = None + m_Bounce: Optional[MinMaxCurve] = None + m_Dampen: Optional[MinMaxCurve] = None + m_EnergyLossOnCollision: Optional[MinMaxCurve] = None + m_Planes: Optional[List[PPtr[Transform]]] = None + maxCollisionShapes: Optional[int] = None + maxKillSpeed: Optional[float] = None + multiplyColliderForceByCollisionAngle: Optional[bool] = None + multiplyColliderForceByParticleSize: Optional[bool] = None + multiplyColliderForceByParticleSpeed: Optional[bool] = None + particleRadius: Optional[float] = None + plane0: Optional[PPtr[Transform]] = None + plane1: Optional[PPtr[Transform]] = None + plane2: Optional[PPtr[Transform]] = None + plane3: Optional[PPtr[Transform]] = None + plane4: Optional[PPtr[Transform]] = None + plane5: Optional[PPtr[Transform]] = None + quality: Optional[int] = None + radiusScale: Optional[float] = None + voxelSize: Optional[float] = None + +@define(kw_only=True, slots=False) +class ColorBySpeedModule: + enabled: bool + gradient: MinMaxGradient + range: Vector2f + +@define(kw_only=True, slots=False) +class ColorModule: + enabled: bool + gradient: MinMaxGradient + +@define(kw_only=True, slots=False) +class ComponentPair: + component: PPtr[Component] + +@define(kw_only=True, slots=False) +class CompressedAnimationCurve: + m_Path: str + m_PostInfinity: int + m_PreInfinity: int + m_Slopes: PackedBitVector + m_Times: PackedBitVector + m_Values: PackedBitVector + +@define(kw_only=True, slots=False) +class CompressedMesh: + m_BoneIndices: PackedBitVector + m_NormalSigns: PackedBitVector + m_Normals: PackedBitVector + m_TangentSigns: PackedBitVector + m_Tangents: PackedBitVector + m_Triangles: PackedBitVector + m_UV: PackedBitVector + m_Vertices: PackedBitVector + m_Weights: PackedBitVector + m_BindPoses: Optional[PackedBitVector] = None + m_Colors: Optional[PackedBitVector] = None + m_FloatColors: Optional[PackedBitVector] = None + m_UVInfo: Optional[int] = None + +@define(kw_only=True, slots=False) +class ComputeBufferCounter: + bindpoint: int + offset: int + +@define(kw_only=True, slots=False) +class ComputeShaderBuiltinSampler: + bindPoint: int + sampler: int + +@define(kw_only=True, slots=False) +class ComputeShaderCB: + byteSize: int + name: Union[FastPropertyName, str] + params: List[ComputeShaderParam] + +@define(kw_only=True, slots=False) +class ComputeShaderKernel: + builtinSamplers: List[ComputeShaderBuiltinSampler] + cbs: List[ComputeShaderResource] + code: List[int] + inBuffers: List[ComputeShaderResource] + outBuffers: List[ComputeShaderResource] + textures: List[ComputeShaderResource] + cbVariantIndices: Optional[List[int]] = None + name: Optional[Union[FastPropertyName, str]] = None + requirements: Optional[int] = None + threadGroupSize: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class ComputeShaderKernelParent: + name: str + dynamicKeywords: Optional[List[str]] = None + globalKeywords: Optional[List[str]] = None + localKeywords: Optional[List[str]] = None + uniqueVariants: Optional[List[ComputeShaderKernel]] = None + validKeywords: Optional[List[str]] = None + variantIndices: Optional[List[Tuple[str, int]]] = None + variantMap: Optional[List[Tuple[str, ComputeShaderKernel]]] = None + +@define(kw_only=True, slots=False) +class ComputeShaderParam: + arraySize: int + colCount: int + name: Union[FastPropertyName, str] + offset: int + rowCount: int + type: int + +@define(kw_only=True, slots=False) +class ComputeShaderPlatformVariant: + constantBuffers: List[ComputeShaderCB] + kernels: List[ComputeShaderKernelParent] + resourcesResolved: bool + targetLevel: int + targetRenderer: int + +@define(kw_only=True, slots=False) +class ComputeShaderResource: + bindPoint: int + name: Union[FastPropertyName, str] + counter: Optional[ComputeBufferCounter] = None + generatedName: Optional[Union[FastPropertyName, str]] = None + samplerBindPoint: Optional[int] = None + secondaryBindPoint: Optional[int] = None + texDimension: Optional[int] = None + +@define(kw_only=True, slots=False) +class ComputeShaderVariant: + constantBuffers: List[ComputeShaderCB] + kernels: List[ComputeShaderKernel] + targetLevel: int + targetRenderer: int + resourcesResolved: Optional[bool] = None + +@define(kw_only=True, slots=False) +class Condition: + m_ConditionEvent: str + m_ConditionMode: int + m_EventTreshold: float + m_ExitTime: float + +@define(kw_only=True, slots=False) +class ConditionConstant: + m_ConditionMode: int + m_EventID: int + m_EventThreshold: float + m_ExitTime: float + +@define(kw_only=True, slots=False) +class ConfigSetting: + flags: int + value: str + +@define(kw_only=True, slots=False) +class ConstantBuffer: + m_MatrixParams: List[MatrixParameter] + m_NameIndex: int + m_Size: int + m_VectorParams: List[VectorParameter] + m_IsPartialCB: Optional[bool] = None + m_StructParams: Optional[List[StructParameter]] = None + +@define(kw_only=True, slots=False) +class ConstantClip: + data: List[float] + +@define(kw_only=True, slots=False) +class ConstraintSource: + sourceTransform: PPtr[Transform] + weight: float + +@define(kw_only=True, slots=False) +class ControllerConstant: + m_DefaultValues: OffsetPtr + m_StateMachineArray: List[OffsetPtr] + m_Values: OffsetPtr + m_HumanLayerArray: Optional[List[OffsetPtr]] = None + m_LayerArray: Optional[List[OffsetPtr]] = None + +@define(kw_only=True, slots=False) +class CrashReportingSettings: + m_Enabled: bool + m_EventUrl: str + m_LogBufferSize: Optional[int] = None + m_NativeEventUrl: Optional[str] = None + +@define(kw_only=True, slots=False) +class CustomDataModule: + color0: MinMaxGradient + color1: MinMaxGradient + enabled: bool + mode0: int + mode1: int + vector0_0: MinMaxCurve + vector0_1: MinMaxCurve + vector0_2: MinMaxCurve + vector0_3: MinMaxCurve + vector1_0: MinMaxCurve + vector1_1: MinMaxCurve + vector1_2: MinMaxCurve + vector1_3: MinMaxCurve + vectorComponentCount0: int + vectorComponentCount1: int + +@define(kw_only=True, slots=False) +class DataTemplate(NamedObject): + m_Father: PPtr[DataTemplate] + m_IsDataTemplate: bool + m_LastMergeIdentifier: GUID + m_Name: str + m_Objects: List[PPtr[EditorExtension]] + +@define(kw_only=True, slots=False) +class DateTime: + ticks: int + +@define(kw_only=True, slots=False) +class DefaultPreset: + m_Preset: PPtr[Preset] + m_Disabled: Optional[bool] = None + m_Filter: Optional[str] = None + +@define(kw_only=True, slots=False) +class DefaultPresetList: + defaultPresets: List[DefaultPreset] + type: PresetType + +@define(kw_only=True, slots=False) +class DeletedItem: + changeset: int + digest: Union[Hash128, MdFour] + fullPath: str + guid: GUID + parent: GUID + type: int + +@define(kw_only=True, slots=False) +class DenseClip: + m_BeginTime: float + m_CurveCount: int + m_FrameCount: int + m_SampleArray: List[float] + m_SampleRate: float + +@define(kw_only=True, slots=False) +class DetailDatabase: + WavingGrassTint: ColorRGBA + m_DetailPrototypes: List[DetailPrototype] + m_PatchCount: int + m_PatchSamples: int + m_Patches: List[DetailPatch] + m_PreloadTextureAtlasData: List[PPtr[Texture2D]] + m_TreeInstances: List[TreeInstance] + m_TreePrototypes: List[TreePrototype] + m_WavingGrassAmount: float + m_WavingGrassSpeed: float + m_WavingGrassStrength: float + m_DefaultShaders_0_: Optional[PPtr[Shader]] = None + m_DefaultShaders_1_: Optional[PPtr[Shader]] = None + m_DefaultShaders_2_: Optional[PPtr[Shader]] = None + m_DetailBillboardShader: Optional[PPtr[Shader]] = None + m_DetailMeshGrassShader: Optional[PPtr[Shader]] = None + m_DetailMeshLitShader: Optional[PPtr[Shader]] = None + m_DetailScatterMode: Optional[int] = None + m_RandomRotations: Optional[List[Vector3f]] = None + +@define(kw_only=True, slots=False) +class DetailPatch: + layerIndices: List[int] + bounds: Optional[AABB] = None + coverage: Optional[List[int]] = None + numberOfObjects: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class DetailPrototype: + dryColor: ColorRGBA + healthyColor: ColorRGBA + maxHeight: float + maxWidth: float + minHeight: float + minWidth: float + noiseSpread: float + prototype: PPtr[GameObject] + prototypeTexture: PPtr[Texture2D] + renderMode: int + usePrototypeMesh: int + alignToGround: Optional[float] = None + bendFactor: Optional[float] = None + density: Optional[float] = None + holeTestRadius: Optional[float] = None + lightmapFactor: Optional[float] = None + noiseSeed: Optional[int] = None + positionJitter: Optional[float] = None + positionOrderliness: Optional[float] = None + targetCoverage: Optional[float] = None + useDensityScaling: Optional[int] = None + useInstancing: Optional[int] = None + +@define(kw_only=True, slots=False) +class DeviceNone: + pass + +@define(kw_only=True, slots=False) +class DirectorGenericBinding: + key: PPtr[Object] + value: PPtr[Object] + +@define(kw_only=True, slots=False) +class DirectorPlayer(Behaviour): + m_GameObject: PPtr[GameObject] + +@define(kw_only=True, slots=False) +class EffectConstant: + bypass: bool + groupConstantIndex: int + parameterIndices: List[int] + prevEffectIndex: int + sendTargetEffectIndex: int + type: int + wetMixLevelIndex: int + +@define(kw_only=True, slots=False) +class EmbeddedNativeType: + m_FloatArray: List[float] + m_String: str + +@define(kw_only=True, slots=False) +class EmissionModule: + enabled: bool + m_BurstCount: int + cnt0: Optional[int] = None + cnt1: Optional[int] = None + cnt2: Optional[int] = None + cnt3: Optional[int] = None + cntmax0: Optional[int] = None + cntmax1: Optional[int] = None + cntmax2: Optional[int] = None + cntmax3: Optional[int] = None + m_Bursts: Optional[List[ParticleSystemEmissionBurst]] = None + m_Type: Optional[int] = None + rate: Optional[MinMaxCurve] = None + rateOverDistance: Optional[MinMaxCurve] = None + rateOverTime: Optional[MinMaxCurve] = None + time0: Optional[float] = None + time1: Optional[float] = None + time2: Optional[float] = None + time3: Optional[float] = None + +@define(kw_only=True, slots=False) +class EnlightenRendererInformation: + dynamicLightmapSTInSystem: Vector4f + instanceHash: Hash128 + renderer: PPtr[Object] + systemId: int + +@define(kw_only=True, slots=False) +class EnlightenSceneMapping: + m_Renderers: List[EnlightenRendererInformation] + m_SystemAtlases: List[EnlightenSystemAtlasInformation] + m_Systems: List[EnlightenSystemInformation] + m_TerrainChunks: List[EnlightenTerrainChunksInformation] + m_Probesets: Optional[List[Hash128]] = None + +@define(kw_only=True, slots=False) +class EnlightenSystemAtlasInformation: + atlasHash: Hash128 + atlasSize: int + firstSystemId: int + +@define(kw_only=True, slots=False) +class EnlightenSystemInformation: + atlasIndex: int + atlasOffsetX: int + atlasOffsetY: int + inputSystemHash: Hash128 + radiositySystemHash: Hash128 + rendererIndex: int + rendererSize: int + +@define(kw_only=True, slots=False) +class EnlightenTerrainChunksInformation: + firstSystemId: int + numChunksInX: int + numChunksInY: int + +@define(kw_only=True, slots=False) +class ExpandedData: + m_ClassID: int + m_ExpandedProperties: List[str] + m_InspectorExpanded: bool + m_ScriptClass: str + +@define(kw_only=True, slots=False) +class ExposedReferenceTable: + m_References: List[Tuple[str, PPtr[Object]]] + +@define(kw_only=True, slots=False) +class Expression: + data_0_: int + data_1_: int + data_2_: int + data_3_: int + op: int + valueIndex: int + +@define(kw_only=True, slots=False) +class ExtensionPropertyValue: + extensionName: str + pluginName: str + propertyName: str + propertyValue: float + +@define(kw_only=True, slots=False) +class ExternalForcesModule: + enabled: bool + influenceFilter: Optional[int] = None + influenceList: Optional[List[PPtr[ParticleSystemForceField]]] = None + influenceMask: Optional[BitField] = None + multiplier: Optional[float] = None + multiplierCurve: Optional[MinMaxCurve] = None + +@define(kw_only=True, slots=False) +class FalloffTable: + m_Table_0_: float + m_Table_10_: float + m_Table_11_: float + m_Table_12_: float + m_Table_1_: float + m_Table_2_: float + m_Table_3_: float + m_Table_4_: float + m_Table_5_: float + m_Table_6_: float + m_Table_7_: float + m_Table_8_: float + m_Table_9_: float + +@define(kw_only=True, slots=False) +class FastPropertyName: + name: str + +@define(kw_only=True, slots=False) +class FlareElement: + m_Color: ColorRGBA + m_Fade: bool + m_ImageIndex: int + m_Position: float + m_Rotate: bool + m_Size: float + m_UseLightColor: bool + m_Zoom: bool + +@define(kw_only=True, slots=False) +class FloatCurve: + attribute: str + classID: int + curve: AnimationCurve + path: str + script: PPtr[MonoScript] + flags: Optional[int] = None + +@define(kw_only=True, slots=False) +class ForceModule: + enabled: bool + inWorldSpace: bool + randomizePerFrame: bool + x: MinMaxCurve + y: MinMaxCurve + z: MinMaxCurve + +@define(kw_only=True, slots=False) +class GISettings: + m_AlbedoBoost: float + m_BounceScale: float + m_EnableBakedLightmaps: bool + m_EnableRealtimeLightmaps: bool + m_EnvironmentLightingMode: int + m_IndirectOutputScale: float + m_TemporalCoherenceThreshold: Optional[float] = None + +@define(kw_only=True, slots=False) +class GLTextureSettings: + m_Aniso: int + m_FilterMode: int + m_MipBias: float + m_WrapMode: Optional[int] = None + m_WrapU: Optional[int] = None + m_WrapV: Optional[int] = None + m_WrapW: Optional[int] = None + +@define(kw_only=True, slots=False) +class GUID: + data_0_: int + data_1_: int + data_2_: int + data_3_: int + +@define(kw_only=True, slots=False) +class GenericBinding: + attribute: int + customType: int + isPPtrCurve: int + path: int + script: PPtr[Object] + classID: Optional[int] = None + isIntCurve: Optional[int] = None + isSerializeReferenceCurve: Optional[int] = None + typeID: Optional[int] = None + +@define(kw_only=True, slots=False) +class GfxBlendState: + alphaToMask: int + rt: List[GfxRenderTargetBlendState] + separateMRTBlend: int + +@define(kw_only=True, slots=False) +class GfxDepthState: + depthFunc: int + depthWrite: int + +@define(kw_only=True, slots=False) +class GfxRasterState: + conservative: int + cullMode: int + depthBias: int + depthClip: int + slopeScaledDepthBias: float + +@define(kw_only=True, slots=False) +class GfxRenderTargetBlendState: + blendOp: int + blendOpAlpha: int + dstBlend: int + dstBlendAlpha: int + srcBlend: int + srcBlendAlpha: int + writeMask: int + +@define(kw_only=True, slots=False) +class GfxStencilState: + padding: int + readMask: int + stencilEnable: int + stencilFailOpBack: int + stencilFailOpFront: int + stencilFuncBack: int + stencilFuncFront: int + stencilPassOpBack: int + stencilPassOpFront: int + stencilZFailOpBack: int + stencilZFailOpFront: int + writeMask: int + +@define(kw_only=True, slots=False) +class Google: + depthFormat: int + enableTransitionView: Optional[bool] = None + enableVideoLayer: Optional[bool] = None + maximumSupportedHeadTracking: Optional[int] = None + minimumSupportedHeadTracking: Optional[int] = None + useProtectedVideoMemory: Optional[bool] = None + useSustainedPerformanceMode: Optional[bool] = None + +@define(kw_only=True, slots=False) +class Gradient: + atime0: Optional[int] = None + atime1: Optional[int] = None + atime2: Optional[int] = None + atime3: Optional[int] = None + atime4: Optional[int] = None + atime5: Optional[int] = None + atime6: Optional[int] = None + atime7: Optional[int] = None + ctime0: Optional[int] = None + ctime1: Optional[int] = None + ctime2: Optional[int] = None + ctime3: Optional[int] = None + ctime4: Optional[int] = None + ctime5: Optional[int] = None + ctime6: Optional[int] = None + ctime7: Optional[int] = None + key0: Optional[ColorRGBA] = None + key1: Optional[ColorRGBA] = None + key2: Optional[ColorRGBA] = None + key3: Optional[ColorRGBA] = None + key4: Optional[ColorRGBA] = None + key5: Optional[ColorRGBA] = None + key6: Optional[ColorRGBA] = None + key7: Optional[ColorRGBA] = None + m_ColorSpace: Optional[int] = None + m_Color_0_: Optional[ColorRGBA] = None + m_Color_1_: Optional[ColorRGBA] = None + m_Color_2_: Optional[ColorRGBA] = None + m_Color_3_: Optional[ColorRGBA] = None + m_Color_4_: Optional[ColorRGBA] = None + m_Mode: Optional[int] = None + m_NumAlphaKeys: Optional[int] = None + m_NumColorKeys: Optional[int] = None + +@define(kw_only=True, slots=False) +class GradientNEW: + atime0: int + atime1: int + atime2: int + atime3: int + atime4: int + atime5: int + atime6: int + atime7: int + ctime0: int + ctime1: int + ctime2: int + ctime3: int + ctime4: int + ctime5: int + ctime6: int + ctime7: int + key0: ColorRGBA + key1: ColorRGBA + key2: ColorRGBA + key3: ColorRGBA + key4: ColorRGBA + key5: ColorRGBA + key6: ColorRGBA + key7: ColorRGBA + m_NumAlphaKeys: int + m_NumColorKeys: int + +@define(kw_only=True, slots=False) +class GraphicsStateInfo: + appBackface: bool + depthBias: float + forceCullMode: int + invertProjectionMatrix: bool + renderPass: int + renderState: int + slopeDepthBias: float + subPassIndex: int + topology: int + userBackface: bool + vertexLayout: int + wireframe: bool + +@define(kw_only=True, slots=False) +class GroupConnection: + sendEffectIndex: int + sourceGroupIndex: int + targetGroupIndex: int + +@define(kw_only=True, slots=False) +class GroupConstant: + bypassEffects: bool + mute: bool + parentConstantIndex: int + pitchIndex: int + solo: bool + volumeIndex: int + sendIndex: Optional[int] = None + +@define(kw_only=True, slots=False) +class Hand: + m_HandBoneIndex: List[int] + +@define(kw_only=True, slots=False) +class HandPose: + m_CloseOpen: float + m_DoFArray: List[float] + m_Grab: float + m_GrabX: xform + m_InOut: float + m_Override: float + +@define(kw_only=True, slots=False) +class Handle: + m_ID: int + m_ParentHumanIndex: int + m_X: xform + +@define(kw_only=True, slots=False) +class Hash128: + bytes_0_: int + bytes_10_: int + bytes_11_: int + bytes_12_: int + bytes_13_: int + bytes_14_: int + bytes_15_: int + bytes_1_: int + bytes_2_: int + bytes_3_: int + bytes_4_: int + bytes_5_: int + bytes_6_: int + bytes_7_: int + bytes_8_: int + bytes_9_: int + +@define(kw_only=True, slots=False) +class HeightMeshBVNode: + i: int + max: Vector3f + min: Vector3f + n: int + +@define(kw_only=True, slots=False) +class HeightMeshData: + m_Bounds: AABB + m_Indices: List[int] + m_Nodes: List[HeightMeshBVNode] + m_Vertices: List[Vector3f] + +@define(kw_only=True, slots=False) +class Heightmap: + m_Heights: List[int] + m_Levels: int + m_MinMaxPatchHeights: List[float] + m_PrecomputedError: List[float] + m_Scale: Vector3f + m_DefaultPhysicMaterial: Optional[PPtr[PhysicMaterial]] = None + m_EnableHolesTextureCompression: Optional[bool] = None + m_EnableSurfaceMaskTextureCompression: Optional[bool] = None + m_Height: Optional[int] = None + m_Holes: Optional[List[int]] = None + m_HolesLOD: Optional[List[int]] = None + m_Resolution: Optional[int] = None + m_SurfaceMask: Optional[List[int]] = None + m_SurfaceMaskLOD: Optional[List[int]] = None + m_Thickness: Optional[float] = None + m_Width: Optional[int] = None + +@define(kw_only=True, slots=False) +class HeightmapData: + terrainData: PPtr[Object] + isRotated: Optional[bool] = None + position: Optional[Vector3f] = None + surfaceToTerrain: Optional[Matrix4x4f] = None + +@define(kw_only=True, slots=False) +class HierarchicalSceneData: + m_SceneGUID: GUID + +@define(kw_only=True, slots=False) +class HoloLens: + depthFormat: int + depthBufferSharingEnabled: Optional[bool] = None + +@define(kw_only=True, slots=False) +class Human: + m_ArmStretch: float + m_ArmTwist: float + m_FeetSpacing: float + m_ForeArmTwist: float + m_HasLeftHand: bool + m_HasRightHand: bool + m_HumanBoneIndex: List[int] + m_HumanBoneMass: List[float] + m_LeftHand: OffsetPtr + m_LegStretch: float + m_LegTwist: float + m_RightHand: OffsetPtr + m_RootX: xform + m_Scale: float + m_Skeleton: OffsetPtr + m_SkeletonPose: OffsetPtr + m_UpperLegTwist: float + m_ColliderArray: Optional[List[Collider]] = None + m_ColliderIndex: Optional[List[int]] = None + m_Handles: Optional[List[Handle]] = None + m_HasTDoF: Optional[bool] = None + +@define(kw_only=True, slots=False) +class HumanBone: + m_BoneName: str + m_HumanName: str + m_Limit: SkeletonBoneLimit + +@define(kw_only=True, slots=False) +class HumanDescription: + m_ArmStretch: float + m_ArmTwist: float + m_FeetSpacing: float + m_ForeArmTwist: float + m_Human: List[HumanBone] + m_LegStretch: float + m_LegTwist: float + m_RootMotionBoneName: str + m_Skeleton: List[SkeletonBone] + m_UpperLegTwist: float + m_GlobalScale: Optional[float] = None + m_Handles: Optional[List[HumanHandle]] = None + m_HasExtraRoot: Optional[bool] = None + m_HasTranslationDoF: Optional[bool] = None + m_RootMotionBoneRotation: Optional[Quaternionf] = None + m_SkeletonHasParents: Optional[bool] = None + +@define(kw_only=True, slots=False) +class HumanGoal: + m_WeightR: float + m_WeightT: float + m_X: xform + m_HintT: Optional[Union[float3, float4]] = None + m_HintWeightT: Optional[float] = None + +@define(kw_only=True, slots=False) +class HumanHandle: + m_BoneName: str + m_LookAt: bool + m_Name: str + m_Position: Vector3f + m_Rotation: Quaternionf + m_Scale: Vector3f + +@define(kw_only=True, slots=False) +class HumanLayerConstant: + m_Binding: int + m_BodyMask: HumanPoseMask + m_IKPass: bool + m_LayerBlendingMode: int + m_SkeletonMask: OffsetPtr + m_StateMachineIndex: int + m_StateMachineMotionSetIndex: int + m_DefaultWeight: Optional[float] = None + m_SyncedLayerAffectsTiming: Optional[bool] = None + +@define(kw_only=True, slots=False) +class HumanPose: + m_DoFArray: List[float] + m_GoalArray: List[HumanGoal] + m_LeftHandPose: HandPose + m_LookAtPosition: Union[float3, float4] + m_LookAtWeight: float4 + m_RightHandPose: HandPose + m_RootX: xform + m_TDoFArray: Optional[Union[List[float4], List[float3]]] = None + +@define(kw_only=True, slots=False) +class HumanPoseMask: + word0: int + word1: int + word2: Optional[int] = None + +@define(kw_only=True, slots=False) +class Image: + image_data: bytes + m_Format: int + m_Height: int + m_RowBytes: int + m_Width: int + +@define(kw_only=True, slots=False) +class ImportLog_ImportLogEntry: + file: str + line: int + message: str + mode: int + object: PPtr[Object] + +@define(kw_only=True, slots=False) +class InheritVelocityModule: + enabled: bool + m_Curve: MinMaxCurve + m_Mode: int + +@define(kw_only=True, slots=False) +class InitialModule: + enabled: bool + gravityModifier: Union[MinMaxCurve, float] + maxNumParticles: int + startColor: MinMaxGradient + startLifetime: MinMaxCurve + startRotation: MinMaxCurve + startSize: MinMaxCurve + startSpeed: MinMaxCurve + customEmitterVelocity: Optional[Vector3f] = None + gravitySource: Optional[int] = None + inheritVelocity: Optional[float] = None + randomizeRotationDirection: Optional[float] = None + rotation3D: Optional[bool] = None + size3D: Optional[bool] = None + startRotationX: Optional[MinMaxCurve] = None + startRotationY: Optional[MinMaxCurve] = None + startSizeY: Optional[MinMaxCurve] = None + startSizeZ: Optional[MinMaxCurve] = None + +@define(kw_only=True, slots=False) +class InputAxis: + altNegativeButton: str + altPositiveButton: str + axis: int + dead: float + descriptiveName: str + descriptiveNegativeName: str + gravity: float + invert: bool + joyNum: int + m_Name: str + negativeButton: str + positiveButton: str + sensitivity: float + snap: bool + type: int + +@define(kw_only=True, slots=False) +class InputImportSettings: + name: str + alphaSource: Optional[int] = None + aniso: Optional[int] = None + filterMode: Optional[int] = None + value: Optional[SubstanceValue] = None + wrapMode: Optional[int] = None + +@define(kw_only=True, slots=False) +class IntPoint: + X: int + Y: int + +@define(kw_only=True, slots=False) +class Item: + changeFlags: Optional[int] = None + changeset: Optional[int] = None + digest: Optional[Union[Hash128, MdFour]] = None + downloadResolution: Optional[int] = None + guid: Optional[GUID] = None + markedForRemoval: Optional[bool] = None + name: Optional[str] = None + nameConflictResolution: Optional[int] = None + oldVersion: Optional[int] = None + origin: Optional[int] = None + parent: Optional[GUID] = None + parentFolderID: Optional[int] = None + type: Optional[int] = None + +@define(kw_only=True, slots=False) +class JointAngleLimit2D: + m_LowerAngle: float + m_UpperAngle: float + +@define(kw_only=True, slots=False) +class JointAngleLimits2D: + m_LowerAngle: float + m_UpperAngle: float + +@define(kw_only=True, slots=False) +class JointDrive: + maximumForce: float + positionDamper: float + positionSpring: float + mode: Optional[int] = None + useAcceleration: Optional[int] = None + +@define(kw_only=True, slots=False) +class JointLimits: + max: float + min: float + bounceMinVelocity: Optional[float] = None + bounciness: Optional[float] = None + contactDistance: Optional[float] = None + maxBounce: Optional[float] = None + minBounce: Optional[float] = None + +@define(kw_only=True, slots=False) +class JointMotor: + force: float + freeSpin: int + targetVelocity: float + +@define(kw_only=True, slots=False) +class JointMotor2D: + m_MaximumMotorForce: float + m_MotorSpeed: float + +@define(kw_only=True, slots=False) +class JointSpring: + damper: float + spring: float + targetPosition: float + +@define(kw_only=True, slots=False) +class JointSuspension2D: + m_Angle: float + m_DampingRatio: float + m_Frequency: float + +@define(kw_only=True, slots=False) +class JointTranslationLimits2D: + m_LowerTranslation: float + m_UpperTranslation: float + +@define(kw_only=True, slots=False) +class Keyframe: + inSlope: Union[Quaternionf, float, Vector3f] + outSlope: Union[Quaternionf, float, Vector3f] + time: float + value: Union[Quaternionf, float, Vector3f] + inWeight: Optional[Union[Quaternionf, float, Vector3f]] = None + outWeight: Optional[Union[Quaternionf, float, Vector3f]] = None + weightedMode: Optional[int] = None + +@define(kw_only=True, slots=False) +class LOD: + renderers: List[LODRenderer] + screenRelativeHeight: float + fadeMode: Optional[int] = None + fadeTransitionWidth: Optional[float] = None + +@define(kw_only=True, slots=False) +class LODRenderer: + renderer: PPtr[Renderer] + +@define(kw_only=True, slots=False) +class LayerConstant: + m_Binding: int + m_BodyMask: HumanPoseMask + m_DefaultWeight: float + m_IKPass: bool + m_LayerBlendingMode: int + m_SkeletonMask: OffsetPtr + m_StateMachineIndex: int + m_SyncedLayerAffectsTiming: bool + m_StateMachineMotionSetIndex: Optional[int] = None + m_StateMachineSynchronizedLayerIndex: Optional[int] = None + +@define(kw_only=True, slots=False) +class LayoutDataOne: + m_FloatArray: List[float] + +@define(kw_only=True, slots=False) +class LayoutDataThree: + m_AnotherFloatArray: List[float] + +@define(kw_only=True, slots=False) +class LayoutDataTwo: + m_FloatValue: float + m_IntegerValue: int + +@define(kw_only=True, slots=False) +class LeafInfoConstant: + m_IDArray: List[int] + m_IndexOffset: int + +@define(kw_only=True, slots=False) +class LibraryRepresentation: + name: str + scriptClassName: str + thumbnail: Image + thumbnailClassID: int + flags: Optional[int] = None + guid: Optional[GUID] = None + localIdentifier: Optional[int] = None + object: Optional[Union[PPtr[EditorExtension], PPtr[Object]]] = None + path: Optional[str] = None + +@define(kw_only=True, slots=False) +class LifetimeByEmitterSpeedModule: + enabled: bool + m_Curve: MinMaxCurve + m_Range: Vector2f + +@define(kw_only=True, slots=False) +class LightBakingOutput: + probeOcclusionLightIndex: int + isBaked: Optional[bool] = None + lightmapBakeMode: Optional[LightmapBakeMode] = None + lightmappingMask: Optional[int] = None + occlusionMaskChannel: Optional[int] = None + shadowMaskChannel: Optional[int] = None + +@define(kw_only=True, slots=False) +class LightProbeData: + m_NonTetrahedralizedProbeSetIndexMap: List[Tuple[Hash128, int]] + m_Positions: List[Vector3f] + m_ProbeSets: List[ProbeSetIndex] + m_Tetrahedralization: ProbeSetTetrahedralization + +@define(kw_only=True, slots=False) +class LightProbeOcclusion: + m_Occlusion: List[float] + m_BakedLightIndex: Optional[List[int]] = None + m_OcclusionMaskChannel: Optional[List[int]] = None + m_ProbeOcclusionLightIndex: Optional[List[int]] = None + m_ShadowMaskChannel: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class LightmapBakeMode: + lightmapBakeType: int + mixedLightingMode: int + +@define(kw_only=True, slots=False) +class LightmapData: + m_DirLightmap: Optional[PPtr[Texture2D]] = None + m_IndirectLightmap: Optional[PPtr[Texture2D]] = None + m_Lightmap: Optional[PPtr[Texture2D]] = None + m_ShadowMask: Optional[PPtr[Texture2D]] = None + sh_0_: Optional[float] = None + sh_10_: Optional[float] = None + sh_11_: Optional[float] = None + sh_12_: Optional[float] = None + sh_13_: Optional[float] = None + sh_14_: Optional[float] = None + sh_15_: Optional[float] = None + sh_16_: Optional[float] = None + sh_17_: Optional[float] = None + sh_18_: Optional[float] = None + sh_19_: Optional[float] = None + sh_1_: Optional[float] = None + sh_20_: Optional[float] = None + sh_21_: Optional[float] = None + sh_22_: Optional[float] = None + sh_23_: Optional[float] = None + sh_24_: Optional[float] = None + sh_25_: Optional[float] = None + sh_26_: Optional[float] = None + sh_2_: Optional[float] = None + sh_3_: Optional[float] = None + sh_4_: Optional[float] = None + sh_5_: Optional[float] = None + sh_6_: Optional[float] = None + sh_7_: Optional[float] = None + sh_8_: Optional[float] = None + sh_9_: Optional[float] = None + +@define(kw_only=True, slots=False) +class LightmapSnapshot(NamedObject): + m_BakedReflectionProbeCubemaps: List[PPtr[Texture]] + m_BakedReflectionProbes: List[SceneObjectIdentifier] + m_EnlightenData: List[int] + m_EnlightenSceneMapping: EnlightenSceneMapping + m_EnlightenSceneMappingRendererIDs: List[SceneObjectIdentifier] + m_LightProbes: PPtr[LightProbes] + m_LightmappedRendererData: List[RendererData] + m_LightmappedRendererDataIDs: List[SceneObjectIdentifier] + m_Lightmaps: List[LightmapData] + m_Lights: List[SceneObjectIdentifier] + m_Name: str + m_BakedAmbientProbeInGamma: Optional[SphericalHarmonicsL2] = None + m_BakedAmbientProbeInLinear: Optional[SphericalHarmonicsL2] = None + m_BakedAmbientProbesInGamma: Optional[List[SphericalHarmonicsL2]] = None + m_BakedAmbientProbesInLinear: Optional[List[SphericalHarmonicsL2]] = None + m_BakedSkyboxProbeCubemaps: Optional[List[PPtr[Texture]]] = None + m_SceneGUID: Optional[GUID] = None + +@define(kw_only=True, slots=False) +class LightsModule: + color: bool + enabled: bool + intensity: bool + intensityCurve: MinMaxCurve + light: PPtr[Light] + maxLights: int + randomDistribution: bool + range: bool + rangeCurve: MinMaxCurve + ratio: float + +@define(kw_only=True, slots=False) +class Limit: + m_Max: Union[float3, float4] + m_Min: Union[float3, float4] + +@define(kw_only=True, slots=False) +class LineParameters: + alignment: Optional[int] = None + colorGradient: Optional[Gradient] = None + endWidth: Optional[float] = None + generateLightingData: Optional[bool] = None + m_EndColor: Optional[ColorRGBA] = None + m_StartColor: Optional[ColorRGBA] = None + numCapVertices: Optional[int] = None + numCornerVertices: Optional[int] = None + shadowBias: Optional[float] = None + startWidth: Optional[float] = None + textureMode: Optional[int] = None + textureScale: Optional[Vector2f] = None + widthCurve: Optional[AnimationCurve] = None + widthMultiplier: Optional[float] = None + +@define(kw_only=True, slots=False) +class Lumin: + depthFormat: int + enableGLCache: bool + frameTiming: int + glCacheMaxBlobSize: int + glCacheMaxFileSize: int + +@define(kw_only=True, slots=False) +class MaterialImportOutput: + baked: int + currentSettings: BuildTargetSettings + +@define(kw_only=True, slots=False) +class MaterialInstanceSettings: + buildTargetSettings: List[BuildTargetSettings] + inputs: List[InputImportSettings] + materialInformation: ProceduralMaterialInformation + materialProperties: UnityPropertySheet + name: str + prototypeName: str + textureParameters: List[InputImportSettings] + lightmapFlags: Optional[int] = None + renderQueue: Optional[int] = None + shader: Optional[PPtr[Shader]] = None + shaderKeywords: Optional[str] = None + shaderName: Optional[str] = None + textureAssignments: Optional[List[ProceduralTextureAssignment]] = None + +@define(kw_only=True, slots=False) +class MatrixParameter: + m_ArraySize: int + m_Index: int + m_NameIndex: int + m_RowCount: int + m_Type: int + +@define(kw_only=True, slots=False) +class MdFour: + md4_hash: bytes + +@define(kw_only=True, slots=False) +class MeshBlendShape: + firstVertex: int + hasNormals: bool + hasTangents: bool + vertexCount: int + aabbMaxDelta: Optional[Vector3f] = None + aabbMinDelta: Optional[Vector3f] = None + name: Optional[str] = None + +@define(kw_only=True, slots=False) +class MeshBlendShapeChannel: + frameCount: int + frameIndex: int + name: str + nameHash: int + +@define(kw_only=True, slots=False) +class MeshBlendShapeVertex: + index: int + normal: Vector3f + tangent: Vector3f + vertex: Vector3f + +@define(kw_only=True, slots=False) +class MinMaxAABB: + m_Max: Vector3f + m_Min: Vector3f + +@define(kw_only=True, slots=False) +class MinMaxCurve: + maxCurve: AnimationCurve + minCurve: AnimationCurve + minMaxState: int + scalar: float + minScalar: Optional[float] = None + +@define(kw_only=True, slots=False) +class MinMaxGradient: + maxColor: ColorRGBA + maxGradient: Union[GradientNEW, Gradient] + minColor: ColorRGBA + minGradient: Union[GradientNEW, Gradient] + minMaxState: int + +@define(kw_only=True, slots=False) +class MipmapLimitSettings: + limitBias: int + limitBiasMode: int + +@define(kw_only=True, slots=False) +class Module: + dependencies: List[str] + name: str + strippable: bool + controlledByBuiltinPackage: Optional[bool] = None + +@define(kw_only=True, slots=False) +class MonoAssemblyImporter(AssetImporter): + m_ExecutionOrder: List[Tuple[str, int]] + m_IconMap: List[Tuple[str, PPtr[Texture2D]]] + m_Name: str + m_FileIDToRecycleName: Optional[List[Tuple[int, str]]] = None + m_NewHashIdentity: Optional[MdFour] = None + m_OldHashIdentity: Optional[MdFour] = None + m_UserData: Optional[str] = None + +@define(kw_only=True, slots=False) +class MonoObject(ABC): + pass + +@define(kw_only=True, slots=False) +class MotionNeighborList: + m_NeighborArray: List[int] + +@define(kw_only=True, slots=False) +class MultiModeParameter: + mode: int + speed: MinMaxCurve + spread: float + value: Optional[float] = None + +@define(kw_only=True, slots=False) +class NameToObjectMap: + m_ObjectToName: List[Tuple[PPtr[Shader], str]] + +@define(kw_only=True, slots=False) +class NativeType: + a: int + b: float + embedded: EmbeddedNativeType + +@define(kw_only=True, slots=False) +class NavMesh(NamedObject): + m_Heightmaps: List[HeightmapData] + m_MeshData: List[int] + m_Name: str + +@define(kw_only=True, slots=False) +class NavMeshAreaData: + cost: float + name: str + +@define(kw_only=True, slots=False) +class NavMeshAreas(GlobalGameManager): + areas: List[NavMeshAreaData] + +@define(kw_only=True, slots=False) +class NavMeshBuildDebugSettings: + m_Flags: int + +@define(kw_only=True, slots=False) +class NavMeshBuildSettings: + agentClimb: float + agentHeight: float + agentRadius: float + agentSlope: float + agentTypeID: int + cellSize: float + ledgeDropHeight: float + manualCellSize: Union[bool, int] + manualTileSize: Union[bool, int] + maxJumpAcrossDistance: float + minRegionArea: float + tileSize: int + accuratePlacement: Optional[Union[bool, int]] = None + buildHeightMesh: Optional[int] = None + debug: Optional[NavMeshBuildDebugSettings] = None + keepTiles: Optional[int] = None + maxJobWorkers: Optional[int] = None + preserveTilesOutsideBounds: Optional[int] = None + +@define(kw_only=True, slots=False) +class NavMeshLayerData: + cost: float + editType: int + name: str + +@define(kw_only=True, slots=False) +class NavMeshLayers(GlobalGameManager): + Built_in_Layer_0: NavMeshLayerData + Built_in_Layer_1: NavMeshLayerData + Built_in_Layer_2: NavMeshLayerData + User_Layer_0: NavMeshLayerData + User_Layer_1: NavMeshLayerData + User_Layer_10: NavMeshLayerData + User_Layer_11: NavMeshLayerData + User_Layer_12: NavMeshLayerData + User_Layer_13: NavMeshLayerData + User_Layer_14: NavMeshLayerData + User_Layer_15: NavMeshLayerData + User_Layer_16: NavMeshLayerData + User_Layer_17: NavMeshLayerData + User_Layer_18: NavMeshLayerData + User_Layer_19: NavMeshLayerData + User_Layer_2: NavMeshLayerData + User_Layer_20: NavMeshLayerData + User_Layer_21: NavMeshLayerData + User_Layer_22: NavMeshLayerData + User_Layer_23: NavMeshLayerData + User_Layer_24: NavMeshLayerData + User_Layer_25: NavMeshLayerData + User_Layer_26: NavMeshLayerData + User_Layer_27: NavMeshLayerData + User_Layer_28: NavMeshLayerData + User_Layer_3: NavMeshLayerData + User_Layer_4: NavMeshLayerData + User_Layer_5: NavMeshLayerData + User_Layer_6: NavMeshLayerData + User_Layer_7: NavMeshLayerData + User_Layer_8: NavMeshLayerData + User_Layer_9: NavMeshLayerData + +@define(kw_only=True, slots=False) +class NavMeshParams: + cellSize: float + tileSize: float + walkableClimb: float + walkableHeight: float + walkableRadius: float + +@define(kw_only=True, slots=False) +class NavMeshTileData: + m_MeshData: List[int] + m_Hash: Optional[Hash128] = None + +@define(kw_only=True, slots=False) +class NetworkViewID: + m_ID: int + m_Type: int + +@define(kw_only=True, slots=False) +class Node: + m_AxesId: int + m_ParentId: int + +@define(kw_only=True, slots=False) +class NoiseModule: + damping: bool + enabled: bool + frequency: float + octaveMultiplier: float + octaveScale: float + octaves: int + quality: int + remap: MinMaxCurve + remapEnabled: bool + remapY: MinMaxCurve + remapZ: MinMaxCurve + scrollSpeed: MinMaxCurve + separateAxes: bool + strength: MinMaxCurve + strengthY: MinMaxCurve + strengthZ: MinMaxCurve + positionAmount: Optional[MinMaxCurve] = None + rotationAmount: Optional[MinMaxCurve] = None + sizeAmount: Optional[MinMaxCurve] = None + +@define(kw_only=True, slots=False) +class NonAlignedStruct: + m_Bool: bool + +@define(kw_only=True, slots=False) +class ObjectRolePair: + m_Object: PPtr[Object] + m_RolesMask: int + +@define(kw_only=True, slots=False) +class OcclusionScene: + indexPortals: int + indexRenderers: int + scene: GUID + sizePortals: int + sizeRenderers: int + +@define(kw_only=True, slots=False) +class Oculus: + dashSupport: bool + sharedDepthBuffer: bool + lowOverheadMode: Optional[bool] = None + protectedContext: Optional[bool] = None + v2Signing: Optional[bool] = None + +@define(kw_only=True, slots=False) +class OffsetPtr: + data: Union[SkeletonMask, SkeletonPose, Blend2dDataConstant, Blend1dDataConstant, BlendTreeConstant, Skeleton, Clip, SelectorTransitionConstant, LayerConstant, ValueArray, SelectorStateConstant, ConditionConstant, Human, HumanLayerConstant, Hand, StateConstant, StateMachineConstant, BlendTreeNodeConstant, BlendDirectDataConstant, ValueArrayConstant, TransitionConstant] + +@define(kw_only=True, slots=False) +class Output: + hasEmptyFontData: Optional[bool] = None + importedType: Optional[int] = None + previewData: Optional[List[float]] = None + +@define(kw_only=True, slots=False) +class PPtrCurve: + attribute: str + classID: int + curve: List[PPtrKeyframe] + path: str + script: PPtr[MonoScript] + flags: Optional[int] = None + +@define(kw_only=True, slots=False) +class PPtrKeyframe: + time: float + value: PPtr[Object] + +@define(kw_only=True, slots=False) +class PackedBitVector: + m_Data: List[int] + m_NumItems: int + m_BitSize: Optional[int] = None + m_Range: Optional[float] = None + m_Start: Optional[float] = None + +@define(kw_only=True, slots=False) +class PackingSettings: + allowAlphaSplitting: bool + blockOffset: int + enableRotation: bool + enableTightPacking: bool + padding: int + enableAlphaDilation: Optional[bool] = None + +@define(kw_only=True, slots=False) +class Parameter: + m_GUID: GUID + m_ParameterName: str + +@define(kw_only=True, slots=False) +class ParserBindChannels: + m_Channels: List[ShaderBindChannel] + m_SourceMap: int + +@define(kw_only=True, slots=False) +class ParticleSystemEmissionBurst: + cycleCount: int + repeatInterval: float + time: float + countCurve: Optional[MinMaxCurve] = None + maxCount: Optional[int] = None + minCount: Optional[int] = None + probability: Optional[float] = None + +@define(kw_only=True, slots=False) +class ParticleSystemForceFieldParameters: + m_DirectionCurveX: MinMaxCurve + m_DirectionCurveY: MinMaxCurve + m_DirectionCurveZ: MinMaxCurve + m_DragCurve: MinMaxCurve + m_EndRange: float + m_GravityCurve: MinMaxCurve + m_GravityFocus: float + m_Length: float + m_MultiplyDragByParticleSize: bool + m_MultiplyDragByParticleVelocity: bool + m_RotationAttractionCurve: MinMaxCurve + m_RotationRandomness: Vector2f + m_RotationSpeedCurve: MinMaxCurve + m_Shape: int + m_StartRange: float + m_VectorField: PPtr[Texture3D] + m_VectorFieldAttractionCurve: MinMaxCurve + m_VectorFieldSpeedCurve: MinMaxCurve + +@define(kw_only=True, slots=False) +class PerLODSettings: + castShadows: bool + enableBump: bool + enableHue: bool + height: float + receiveShadows: bool + reflectionProbeUsage: int + useLightProbes: bool + windQuality: int + enableSettingOverride: Optional[bool] = None + enableSubsurface: Optional[bool] = None + +@define(kw_only=True, slots=False) +class PerformanceReportingSettings: + m_Enabled: bool + +@define(kw_only=True, slots=False) +class PhysicMaterial(NamedObject): + bounceCombine: int + bounciness: float + dynamicFriction: float + frictionCombine: int + m_Name: str + staticFriction: float + dynamicFriction2: Optional[float] = None + frictionDirection2: Optional[Vector3f] = None + staticFriction2: Optional[float] = None + +@define(kw_only=True, slots=False) +class PhysicsJobOptions2D: + m_ClearBodyForcesPerJob: int + m_ClearFlagsPerJob: int + m_CollideContactsPerJob: int + m_FindNearestContactsPerJob: int + m_InterpolationPosesPerJob: int + m_IslandSolverBodiesPerJob: int + m_IslandSolverBodyCostScale: int + m_IslandSolverContactCostScale: int + m_IslandSolverContactsPerJob: int + m_IslandSolverCostThreshold: int + m_IslandSolverJointCostScale: int + m_NewContactsPerJob: int + m_SyncContinuousFixturesPerJob: int + m_SyncDiscreteFixturesPerJob: int + m_UpdateTriggerContactsPerJob: int + m_UseConsistencySorting: Optional[bool] = None + m_UseMultithreading: Optional[bool] = None + useConsistencySorting: Optional[bool] = None + useMultithreading: Optional[bool] = None + +@define(kw_only=True, slots=False) +class PhysicsShape: + m_AdjacentEnd: Vector2f + m_AdjacentStart: Vector2f + m_Radius: float + m_ShapeType: int + m_UseAdjacentEnd: int + m_UseAdjacentStart: int + m_VertexCount: int + m_VertexStartIndex: int + +@define(kw_only=True, slots=False) +class PhysicsShapeGroup2D: + m_Shapes: List[PhysicsShape] + m_Vertices: List[Vector2f] + +@define(kw_only=True, slots=False) +class PlatformSettings: + m_AllowsAlphaSplitting: bool + m_BuildTarget: str + m_CompressionQuality: int + m_CrunchedCompression: bool + m_MaxTextureSize: int + m_Overridden: bool + m_TextureCompression: int + m_TextureFormat: int + m_ResizeAlgorithm: Optional[int] = None + +@define(kw_only=True, slots=False) +class PlatformSettingsData: + settings: List[Tuple[str, str]] + enabled: Optional[bool] = None + +@define(kw_only=True, slots=False) +class PlatformShaderDefines: + defines_Tier1: List[int] + defines_Tier2: List[int] + defines_Tier3: List[int] + shaderPlatform: int + +@define(kw_only=True, slots=False) +class PlatformShaderSettings: + useCascadedShadowMaps: Optional[bool] = None + useScreenSpaceShadows: Optional[bool] = None + +@define(kw_only=True, slots=False) +class PluginImportOutput: + dllType: Optional[int] = None + pluginType: Optional[int] = None + scriptingRuntimeVersion: Optional[int] = None + +@define(kw_only=True, slots=False) +class Polygon2D(ABC): + m_Paths: Optional[List[List[Vector2f]]] = None + +@define(kw_only=True, slots=False) +class PrefabModification: + m_Modifications: List[PropertyModification] + m_RemovedComponents: Union[List[PPtr[Object]], List[PPtr[Component]]] + m_TransformParent: PPtr[Transform] + m_AddedComponents: Optional[List[AddedComponent]] = None + m_AddedGameObjects: Optional[List[AddedGameObject]] = None + m_RemovedGameObjects: Optional[List[PPtr[GameObject]]] = None + +@define(kw_only=True, slots=False) +class PresetType: + m_ManagedTypeFallback: str + m_ManagedTypePPtr: PPtr[MonoScript] + m_NativeTypeID: int + +@define(kw_only=True, slots=False) +class PreviewData: + m_CompSize: int + m_OrigSize: int + m_PreviewData: List[float] + +@define(kw_only=True, slots=False) +class ProbeSetIndex: + m_Hash: Hash128 + m_Offset: int + m_Size: int + +@define(kw_only=True, slots=False) +class ProbeSetTetrahedralization: + m_HullRays: List[Vector3f] + m_Tetrahedra: List[Tetrahedron] + +@define(kw_only=True, slots=False) +class ProceduralMaterialInformation: + m_Offset: Vector2f + m_Scale: Vector2f + m_AnimationUpdateRate: Optional[int] = None + m_GenerateAllOutputs: Optional[int] = None + m_GenerateMipmaps: Optional[bool] = None + m_GeneratedAtLoading: Optional[int] = None + +@define(kw_only=True, slots=False) +class ProceduralTextureAssignment: + baseUID: int + material: PPtr[ProceduralMaterial] + shaderProp: Union[FastPropertyName, str] + +@define(kw_only=True, slots=False) +class PropertyModification: + objectReference: PPtr[Object] + propertyPath: str + target: PPtr[Object] + value: str + +@define(kw_only=True, slots=False) +class PropertyModificationsTargetTestNativeObject: + m_FloatValue: float + m_IntegerValue: int + +@define(kw_only=True, slots=False) +class QualitySetting: + anisotropicTextures: int + antiAliasing: int + pixelLightCount: int + shadowCascades: int + shadowDistance: float + shadowProjection: int + shadowResolution: int + shadows: int + softParticles: bool + softVegetation: bool + vSyncCount: int + adaptiveVsync: Optional[bool] = None + adaptiveVsyncExtraA: Optional[int] = None + adaptiveVsyncExtraB: Optional[int] = None + asyncUploadBufferSize: Optional[int] = None + asyncUploadPersistentBuffer: Optional[bool] = None + asyncUploadTimeSlice: Optional[int] = None + billboardsFaceCameraPosition: Optional[bool] = None + blendWeights: Optional[int] = None + customRenderPipeline: Optional[PPtr[MonoBehaviour]] = None + enableLODCrossFade: Optional[bool] = None + globalTextureMipmapLimit: Optional[int] = None + lodBias: Optional[float] = None + maximumLODLevel: Optional[int] = None + name: Optional[str] = None + particleRaycastBudget: Optional[int] = None + realtimeGICPUUsage: Optional[int] = None + realtimeReflectionProbes: Optional[bool] = None + resolutionScalingFixedDPIFactor: Optional[float] = None + shadowCascade2Split: Optional[float] = None + shadowCascade4Split: Optional[Vector3f] = None + shadowNearPlaneOffset: Optional[float] = None + shadowmaskMode: Optional[int] = None + skinWeights: Optional[int] = None + streamingMipmapsActive: Optional[bool] = None + streamingMipmapsAddAllCameras: Optional[bool] = None + streamingMipmapsMaxFileIORequests: Optional[int] = None + streamingMipmapsMaxLevelReduction: Optional[int] = None + streamingMipmapsMemoryBudget: Optional[float] = None + streamingMipmapsRenderersPerFrame: Optional[int] = None + terrainBasemapDistance: Optional[float] = None + terrainBillboardStart: Optional[float] = None + terrainDetailDensityScale: Optional[float] = None + terrainDetailDistance: Optional[float] = None + terrainFadeLength: Optional[float] = None + terrainMaxTrees: Optional[int] = None + terrainPixelError: Optional[float] = None + terrainQualityOverrides: Optional[int] = None + terrainTreeDistance: Optional[float] = None + textureMipmapLimitSettings: Optional[List[MipmapLimitSettings]] = None + textureQuality: Optional[int] = None + useLegacyDetailDistribution: Optional[bool] = None + +@define(kw_only=True, slots=False) +class QuaternionCurve: + curve: AnimationCurve + path: str + +@define(kw_only=True, slots=False) +class RationalTime: + m_Count: int + m_Rate: TicksPerSecond + +@define(kw_only=True, slots=False) +class RayTracingShaderBuiltinSampler: + bindPoint: int + sampler: int + +@define(kw_only=True, slots=False) +class RayTracingShaderConstantBuffer: + byteSize: int + name: str + params: List[RayTracingShaderParam] + hash: Optional[int] = None + +@define(kw_only=True, slots=False) +class RayTracingShaderFunctionDesc: + attributeSizeInBytes: int + identifier: RayTracingShaderID + payloadSizeInBytes: int + +@define(kw_only=True, slots=False) +class RayTracingShaderID: + name: str + type: int + +@define(kw_only=True, slots=False) +class RayTracingShaderParam: + arraySize: int + colCount: int + name: str + offset: int + rowCount: int + dataSize: Optional[int] = None + dataType: Optional[int] = None + propertySheetType: Optional[int] = None + type: Optional[int] = None + +@define(kw_only=True, slots=False) +class RayTracingShaderReflectionData: + code: List[int] + functions: List[RayTracingShaderFunctionDesc] + globalResources: RayTracingShaderResources + hasErrors: bool + localResources: RayTracingShaderResources + precompiled: Optional[List[int]] = None + requirements: Optional[int] = None + +@define(kw_only=True, slots=False) +class RayTracingShaderResource: + bindPoint: int + name: str + rayGenMask: int + samplerBindPoint: int + texDimension: int + arraySize: Optional[int] = None + multisampled: Optional[bool] = None + +@define(kw_only=True, slots=False) +class RayTracingShaderResources: + builtinSamplers: List[RayTracingShaderBuiltinSampler] + constantBuffers: List[RayTracingShaderResource] + constantBuffersDesc: List[RayTracingShaderConstantBuffer] + inputBuffers: List[RayTracingShaderResource] + outputBuffers: List[RayTracingShaderResource] + textures: List[RayTracingShaderResource] + +@define(kw_only=True, slots=False) +class RayTracingShaderVariant: + resourceReflectionData: RayTracingShaderReflectionData + targetRenderer: int + +@define(kw_only=True, slots=False) +class Rectf: + height: float + width: float + x: float + y: float + +@define(kw_only=True, slots=False) +class RenderManager(GlobalGameManager): + pass + +@define(kw_only=True, slots=False) +class RenderPassInfo: + attachmentCount: int + attachments: List[AttachmentInfo] + depthAttachmentIndex: int + multiviewCount: int + sampleCount: int + shadingRateIndex: int + subPassCount: int + subPasses: List[SubPassDescriptor] + +@define(kw_only=True, slots=False) +class RenderStateBlock: + blendState: GfxBlendState + depthState: GfxDepthState + mask: int + rasterState: GfxRasterState + stencilRef: int + stencilState: GfxStencilState + +@define(kw_only=True, slots=False) +class RenderStateInfo: + renderState: RenderStateBlock + +@define(kw_only=True, slots=False) +class RendererData: + lightmapIndex: int + lightmapIndexDynamic: int + lightmapST: Vector4f + lightmapSTDynamic: Vector4f + terrainChunkDynamicUVST: Vector4f + terrainDynamicUVST: Vector4f + uvMesh: PPtr[Mesh] + explicitProbeSetHash: Optional[Hash128] = None + +@define(kw_only=True, slots=False) +class ResourceManager_Dependency: + m_Dependencies: List[PPtr[Object]] + m_Object: PPtr[Object] + +@define(kw_only=True, slots=False) +class RippleGroup: + m_afDirectional_0: float + m_afDirectional_1: float + m_afDirectional_10: float + m_afDirectional_11: float + m_afDirectional_12: float + m_afDirectional_13: float + m_afDirectional_14: float + m_afDirectional_15: float + m_afDirectional_16: float + m_afDirectional_17: float + m_afDirectional_18: float + m_afDirectional_19: float + m_afDirectional_2: float + m_afDirectional_3: float + m_afDirectional_4: float + m_afDirectional_5: float + m_afDirectional_6: float + m_afDirectional_7: float + m_afDirectional_8: float + m_afDirectional_9: float + m_afFlexibility_0: float + m_afFlexibility_1: float + m_afFlexibility_10: float + m_afFlexibility_11: float + m_afFlexibility_12: float + m_afFlexibility_13: float + m_afFlexibility_14: float + m_afFlexibility_15: float + m_afFlexibility_16: float + m_afFlexibility_17: float + m_afFlexibility_18: float + m_afFlexibility_19: float + m_afFlexibility_2: float + m_afFlexibility_3: float + m_afFlexibility_4: float + m_afFlexibility_5: float + m_afFlexibility_6: float + m_afFlexibility_7: float + m_afFlexibility_8: float + m_afFlexibility_9: float + m_afPlanar_0: float + m_afPlanar_1: float + m_afPlanar_10: float + m_afPlanar_11: float + m_afPlanar_12: float + m_afPlanar_13: float + m_afPlanar_14: float + m_afPlanar_15: float + m_afPlanar_16: float + m_afPlanar_17: float + m_afPlanar_18: float + m_afPlanar_19: float + m_afPlanar_2: float + m_afPlanar_3: float + m_afPlanar_4: float + m_afPlanar_5: float + m_afPlanar_6: float + m_afPlanar_7: float + m_afPlanar_8: float + m_afPlanar_9: float + m_afSpeed_0: float + m_afSpeed_1: float + m_afSpeed_10: float + m_afSpeed_11: float + m_afSpeed_12: float + m_afSpeed_13: float + m_afSpeed_14: float + m_afSpeed_15: float + m_afSpeed_16: float + m_afSpeed_17: float + m_afSpeed_18: float + m_afSpeed_19: float + m_afSpeed_2: float + m_afSpeed_3: float + m_afSpeed_4: float + m_afSpeed_5: float + m_afSpeed_6: float + m_afSpeed_7: float + m_afSpeed_8: float + m_afSpeed_9: float + m_fIndependence: float + m_fShimmer: float + +@define(kw_only=True, slots=False) +class RootMotionData(ABC): + pass + +@define(kw_only=True, slots=False) +class RotationBySpeedModule: + curve: MinMaxCurve + enabled: bool + range: Vector2f + separateAxes: Optional[bool] = None + x: Optional[MinMaxCurve] = None + y: Optional[MinMaxCurve] = None + +@define(kw_only=True, slots=False) +class RotationModule: + curve: MinMaxCurve + enabled: bool + separateAxes: Optional[bool] = None + x: Optional[MinMaxCurve] = None + y: Optional[MinMaxCurve] = None + +@define(kw_only=True, slots=False) +class SBranchWindLevel: + m_afDirectionAdherence_0: float + m_afDirectionAdherence_1: float + m_afDirectionAdherence_2: float + m_afDirectionAdherence_3: float + m_afDirectionAdherence_4: float + m_afDirectionAdherence_5: float + m_afDirectionAdherence_6: float + m_afDirectionAdherence_7: float + m_afDirectionAdherence_8: float + m_afDirectionAdherence_9: float + m_afDistance_0: float + m_afDistance_1: float + m_afDistance_2: float + m_afDistance_3: float + m_afDistance_4: float + m_afDistance_5: float + m_afDistance_6: float + m_afDistance_7: float + m_afDistance_8: float + m_afDistance_9: float + m_afWhip_0: float + m_afWhip_1: float + m_afWhip_2: float + m_afWhip_3: float + m_afWhip_4: float + m_afWhip_5: float + m_afWhip_6: float + m_afWhip_7: float + m_afWhip_8: float + m_afWhip_9: float + m_fTurbulence: float + m_fTwitch: float + m_fTwitchFreqScale: float + +@define(kw_only=True, slots=False) +class SParams: + BranchLevel1: SBranchWindLevel + BranchLevel2: SBranchWindLevel + LeafGroup1: SWindGroup + LeafGroup2: SWindGroup + Oscillation0_0: float + Oscillation0_1: float + Oscillation0_2: float + Oscillation0_3: float + Oscillation0_4: float + Oscillation0_5: float + Oscillation0_6: float + Oscillation0_7: float + Oscillation0_8: float + Oscillation0_9: float + Oscillation1_0: float + Oscillation1_1: float + Oscillation1_2: float + Oscillation1_3: float + Oscillation1_4: float + Oscillation1_5: float + Oscillation1_6: float + Oscillation1_7: float + Oscillation1_8: float + Oscillation1_9: float + Oscillation2_0: float + Oscillation2_1: float + Oscillation2_2: float + Oscillation2_3: float + Oscillation2_4: float + Oscillation2_5: float + Oscillation2_6: float + Oscillation2_7: float + Oscillation2_8: float + Oscillation2_9: float + Oscillation3_0: float + Oscillation3_1: float + Oscillation3_2: float + Oscillation3_3: float + Oscillation3_4: float + Oscillation3_5: float + Oscillation3_6: float + Oscillation3_7: float + Oscillation3_8: float + Oscillation3_9: float + Oscillation4_0: float + Oscillation4_1: float + Oscillation4_2: float + Oscillation4_3: float + Oscillation4_4: float + Oscillation4_5: float + Oscillation4_6: float + Oscillation4_7: float + Oscillation4_8: float + Oscillation4_9: float + Oscillation5_0: float + Oscillation5_1: float + Oscillation5_2: float + Oscillation5_3: float + Oscillation5_4: float + Oscillation5_5: float + Oscillation5_6: float + Oscillation5_7: float + Oscillation5_8: float + Oscillation5_9: float + Oscillation6_0: float + Oscillation6_1: float + Oscillation6_2: float + Oscillation6_3: float + Oscillation6_4: float + Oscillation6_5: float + Oscillation6_6: float + Oscillation6_7: float + Oscillation6_8: float + Oscillation6_9: float + Oscillation7_0: float + Oscillation7_1: float + Oscillation7_2: float + Oscillation7_3: float + Oscillation7_4: float + Oscillation7_5: float + Oscillation7_6: float + Oscillation7_7: float + Oscillation7_8: float + Oscillation7_9: float + Oscillation8_0: float + Oscillation8_1: float + Oscillation8_2: float + Oscillation8_3: float + Oscillation8_4: float + Oscillation8_5: float + Oscillation8_6: float + Oscillation8_7: float + Oscillation8_8: float + Oscillation8_9: float + Oscillation9_0: float + Oscillation9_1: float + Oscillation9_2: float + Oscillation9_3: float + Oscillation9_4: float + Oscillation9_5: float + Oscillation9_6: float + Oscillation9_7: float + Oscillation9_8: float + Oscillation9_9: float + m_afFrondRippleDistance_0: float + m_afFrondRippleDistance_1: float + m_afFrondRippleDistance_2: float + m_afFrondRippleDistance_3: float + m_afFrondRippleDistance_4: float + m_afFrondRippleDistance_5: float + m_afFrondRippleDistance_6: float + m_afFrondRippleDistance_7: float + m_afFrondRippleDistance_8: float + m_afFrondRippleDistance_9: float + m_afGlobalDirectionAdherence_0: float + m_afGlobalDirectionAdherence_1: float + m_afGlobalDirectionAdherence_2: float + m_afGlobalDirectionAdherence_3: float + m_afGlobalDirectionAdherence_4: float + m_afGlobalDirectionAdherence_5: float + m_afGlobalDirectionAdherence_6: float + m_afGlobalDirectionAdherence_7: float + m_afGlobalDirectionAdherence_8: float + m_afGlobalDirectionAdherence_9: float + m_afGlobalDistance_0: float + m_afGlobalDistance_1: float + m_afGlobalDistance_2: float + m_afGlobalDistance_3: float + m_afGlobalDistance_4: float + m_afGlobalDistance_5: float + m_afGlobalDistance_6: float + m_afGlobalDistance_7: float + m_afGlobalDistance_8: float + m_afGlobalDistance_9: float + m_fAnchorDistanceScale: float + m_fAnchorOffset: float + m_fDirectionResponse: float + m_fFrondRippleLightingScalar: float + m_fFrondRippleTile: float + m_fGlobalHeight: float + m_fGlobalHeightExponent: float + m_fGustDurationMax: float + m_fGustDurationMin: float + m_fGustFallScalar: float + m_fGustFrequency: float + m_fGustRiseScalar: float + m_fGustStrengthMax: float + m_fGustStrengthMin: float + m_fRollingBranchFieldMin: float + m_fRollingBranchLightingAdjust: float + m_fRollingBranchVerticalOffset: float + m_fRollingLeafRippleMin: float + m_fRollingLeafTumbleMin: float + m_fRollingNoisePeriod: float + m_fRollingNoiseSize: float + m_fRollingNoiseSpeed: float + m_fRollingNoiseTurbulence: float + m_fRollingNoiseTwist: float + m_fStrengthResponse: float + +@define(kw_only=True, slots=False) +class SWindGroup: + m_afRippleDistance_0: float + m_afRippleDistance_1: float + m_afRippleDistance_2: float + m_afRippleDistance_3: float + m_afRippleDistance_4: float + m_afRippleDistance_5: float + m_afRippleDistance_6: float + m_afRippleDistance_7: float + m_afRippleDistance_8: float + m_afRippleDistance_9: float + m_afTumbleDirectionAdherence_0: float + m_afTumbleDirectionAdherence_1: float + m_afTumbleDirectionAdherence_2: float + m_afTumbleDirectionAdherence_3: float + m_afTumbleDirectionAdherence_4: float + m_afTumbleDirectionAdherence_5: float + m_afTumbleDirectionAdherence_6: float + m_afTumbleDirectionAdherence_7: float + m_afTumbleDirectionAdherence_8: float + m_afTumbleDirectionAdherence_9: float + m_afTumbleFlip_0: float + m_afTumbleFlip_1: float + m_afTumbleFlip_2: float + m_afTumbleFlip_3: float + m_afTumbleFlip_4: float + m_afTumbleFlip_5: float + m_afTumbleFlip_6: float + m_afTumbleFlip_7: float + m_afTumbleFlip_8: float + m_afTumbleFlip_9: float + m_afTumbleTwist_0: float + m_afTumbleTwist_1: float + m_afTumbleTwist_2: float + m_afTumbleTwist_3: float + m_afTumbleTwist_4: float + m_afTumbleTwist_5: float + m_afTumbleTwist_6: float + m_afTumbleTwist_7: float + m_afTumbleTwist_8: float + m_afTumbleTwist_9: float + m_afTwitchThrow_0: float + m_afTwitchThrow_1: float + m_afTwitchThrow_2: float + m_afTwitchThrow_3: float + m_afTwitchThrow_4: float + m_afTwitchThrow_5: float + m_afTwitchThrow_6: float + m_afTwitchThrow_7: float + m_afTwitchThrow_8: float + m_afTwitchThrow_9: float + m_fLeewardScalar: float + m_fRollMaxScale: float + m_fRollMinScale: float + m_fRollSeparation: float + m_fRollSpeed: float + m_fTwitchSharpness: float + +@define(kw_only=True, slots=False) +class SampleSettings: + compressionFormat: int + conversionMode: int + loadType: int + quality: float + sampleRateOverride: int + sampleRateSetting: int + preloadAudioData: Optional[bool] = None + +@define(kw_only=True, slots=False) +class SamplerParameter: + bindPoint: int + sampler: int + +@define(kw_only=True, slots=False) +class Scene(LevelGameManager): + enabled: Optional[bool] = None + guid: Optional[GUID] = None + m_PVSData: Optional[List[int]] = None + m_PVSObjectsArray: Optional[List[PPtr[Renderer]]] = None + m_PVSPortalsArray: Optional[List[PPtr[OcclusionPortal]]] = None + m_QueryMode: Optional[int] = None + path: Optional[str] = None + +@define(kw_only=True, slots=False) +class SceneDataContainer: + m_SceneData: List[Tuple[SceneIdentifier, HierarchicalSceneData]] + +@define(kw_only=True, slots=False) +class SceneIdentifier: + guid: GUID + handle: int + +@define(kw_only=True, slots=False) +class SceneObjectIdentifier: + targetObject: int + targetPrefab: int + +@define(kw_only=True, slots=False) +class SceneSettings(LevelGameManager): + m_PVSData: List[int] + m_PVSObjectsArray: List[PPtr[Renderer]] + m_PVSPortalsArray: List[PPtr[OcclusionPortal]] + m_QueryMode: Optional[int] = None + +@define(kw_only=True, slots=False) +class SceneVisibilityData: + m_SceneGUID: GUID + +@define(kw_only=True, slots=False) +class ScriptMapper(GlobalGameManager): + m_Shaders: NameToObjectMap + m_PreloadShaders: Optional[bool] = None + +@define(kw_only=True, slots=False) +class SecondarySpriteTexture: + name: str + texture: PPtr[Texture2D] + +@define(kw_only=True, slots=False) +class SecondaryTextureSettings: + platformSettings: List[TextureImporterPlatformSettings] + sRGB: Optional[bool] = None + +@define(kw_only=True, slots=False) +class SelectorStateConstant: + m_FullPathID: int + m_IsEntry: bool + m_TransitionConstantArray: List[OffsetPtr] + +@define(kw_only=True, slots=False) +class SelectorTransitionConstant: + m_ConditionConstantArray: List[OffsetPtr] + m_Destination: int + +@define(kw_only=True, slots=False) +class SerializedCustomEditorForRenderPipeline: + customEditorName: str + renderPipelineType: str + +@define(kw_only=True, slots=False) +class SerializedPass: + m_HasInstancingVariant: bool + m_Name: str + m_NameIndices: List[Tuple[str, int]] + m_ProgramMask: int + m_State: SerializedShaderState + m_Tags: SerializedTagMap + m_TextureName: str + m_Type: int + m_UseName: str + progDomain: SerializedProgram + progFragment: SerializedProgram + progGeometry: SerializedProgram + progHull: SerializedProgram + progVertex: SerializedProgram + m_EditorDataHash: Optional[List[Hash128]] = None + m_GlobalKeywordMask: Optional[List[int]] = None + m_HasProceduralInstancingVariant: Optional[bool] = None + m_LocalKeywordMask: Optional[List[int]] = None + m_Platforms: Optional[List[int]] = None + m_SerializedKeywordStateMask: Optional[List[int]] = None + progRayTracing: Optional[SerializedProgram] = None + +@define(kw_only=True, slots=False) +class SerializedPlayerSubProgram: + m_BlobIndex: int + m_GpuProgramType: int + m_KeywordIndices: List[int] + m_ShaderRequirements: int + +@define(kw_only=True, slots=False) +class SerializedProgram: + m_SubPrograms: List[SerializedSubProgram] + m_CommonParameters: Optional[SerializedProgramParameters] = None + m_ParameterBlobIndices: Optional[List[List[int]]] = None + m_PlayerSubPrograms: Optional[List[List[SerializedPlayerSubProgram]]] = None + m_SerializedKeywordStateMask: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class SerializedProgramParameters: + m_BufferParams: List[BufferBinding] + m_ConstantBufferBindings: List[BufferBinding] + m_ConstantBuffers: List[ConstantBuffer] + m_MatrixParams: List[MatrixParameter] + m_Samplers: List[SamplerParameter] + m_TextureParams: List[TextureParameter] + m_UAVParams: List[UAVParameter] + m_VectorParams: List[VectorParameter] + +@define(kw_only=True, slots=False) +class SerializedProperties: + m_Props: List[SerializedProperty] + +@define(kw_only=True, slots=False) +class SerializedProperty: + m_Attributes: List[str] + m_DefTexture: SerializedTextureProperty + m_DefValue_0_: float + m_DefValue_1_: float + m_DefValue_2_: float + m_DefValue_3_: float + m_Description: str + m_Flags: int + m_Name: str + m_Type: int + +@define(kw_only=True, slots=False) +class SerializedShader: + m_CustomEditorName: str + m_Dependencies: List[SerializedShaderDependency] + m_DisableNoSubshadersMessage: bool + m_FallbackName: str + m_Name: str + m_PropInfo: SerializedProperties + m_SubShaders: List[SerializedSubShader] + m_CustomEditorForRenderPipelines: Optional[List[SerializedCustomEditorForRenderPipeline]] = None + m_KeywordFlags: Optional[List[int]] = None + m_KeywordNames: Optional[List[str]] = None + +@define(kw_only=True, slots=False) +class SerializedShaderDependency: + from_: str + to: str + +@define(kw_only=True, slots=False) +class SerializedShaderFloatValue: + name: Union[FastPropertyName, str] + val: float + +@define(kw_only=True, slots=False) +class SerializedShaderRTBlendState: + blendOp: SerializedShaderFloatValue + blendOpAlpha: SerializedShaderFloatValue + colMask: SerializedShaderFloatValue + destBlend: SerializedShaderFloatValue + destBlendAlpha: SerializedShaderFloatValue + srcBlend: SerializedShaderFloatValue + srcBlendAlpha: SerializedShaderFloatValue + +@define(kw_only=True, slots=False) +class SerializedShaderState: + alphaToMask: SerializedShaderFloatValue + culling: SerializedShaderFloatValue + fogColor: SerializedShaderVectorValue + fogDensity: SerializedShaderFloatValue + fogEnd: SerializedShaderFloatValue + fogMode: int + fogStart: SerializedShaderFloatValue + gpuProgramID: int + lighting: bool + m_LOD: int + m_Name: str + m_Tags: SerializedTagMap + offsetFactor: SerializedShaderFloatValue + offsetUnits: SerializedShaderFloatValue + rtBlend0: SerializedShaderRTBlendState + rtBlend1: SerializedShaderRTBlendState + rtBlend2: SerializedShaderRTBlendState + rtBlend3: SerializedShaderRTBlendState + rtBlend4: SerializedShaderRTBlendState + rtBlend5: SerializedShaderRTBlendState + rtBlend6: SerializedShaderRTBlendState + rtBlend7: SerializedShaderRTBlendState + rtSeparateBlend: bool + stencilOp: SerializedStencilOp + stencilOpBack: SerializedStencilOp + stencilOpFront: SerializedStencilOp + stencilReadMask: SerializedShaderFloatValue + stencilRef: SerializedShaderFloatValue + stencilWriteMask: SerializedShaderFloatValue + zTest: SerializedShaderFloatValue + zWrite: SerializedShaderFloatValue + conservative: Optional[SerializedShaderFloatValue] = None + zClip: Optional[SerializedShaderFloatValue] = None + +@define(kw_only=True, slots=False) +class SerializedShaderVectorValue: + name: Union[FastPropertyName, str] + w: SerializedShaderFloatValue + x: SerializedShaderFloatValue + y: SerializedShaderFloatValue + z: SerializedShaderFloatValue + +@define(kw_only=True, slots=False) +class SerializedStencilOp: + comp: SerializedShaderFloatValue + fail: SerializedShaderFloatValue + pass_: SerializedShaderFloatValue + zFail: SerializedShaderFloatValue + +@define(kw_only=True, slots=False) +class SerializedSubProgram: + m_BlobIndex: int + m_Channels: ParserBindChannels + m_GpuProgramType: int + m_ShaderHardwareTier: int + m_BufferParams: Optional[List[BufferBinding]] = None + m_ConstantBufferBindings: Optional[List[BufferBinding]] = None + m_ConstantBuffers: Optional[List[ConstantBuffer]] = None + m_GlobalKeywordIndices: Optional[List[int]] = None + m_KeywordIndices: Optional[List[int]] = None + m_LocalKeywordIndices: Optional[List[int]] = None + m_MatrixParams: Optional[List[MatrixParameter]] = None + m_Parameters: Optional[SerializedProgramParameters] = None + m_Samplers: Optional[List[SamplerParameter]] = None + m_ShaderRequirements: Optional[int] = None + m_TextureParams: Optional[List[TextureParameter]] = None + m_UAVParams: Optional[List[UAVParameter]] = None + m_VectorParams: Optional[List[VectorParameter]] = None + +@define(kw_only=True, slots=False) +class SerializedSubShader: + m_LOD: int + m_Passes: List[SerializedPass] + m_Tags: SerializedTagMap + +@define(kw_only=True, slots=False) +class SerializedTagMap: + tags: List[Tuple[str, str]] + +@define(kw_only=True, slots=False) +class SerializedTextureProperty: + m_DefaultName: str + m_TexDim: int + +@define(kw_only=True, slots=False) +class ShaderBindChannel: + source: int + target: int + +@define(kw_only=True, slots=False) +class ShaderInfo: + variants: List[VariantInfo] + +@define(kw_only=True, slots=False) +class ShadowSettings: + m_Bias: float + m_Resolution: int + m_Strength: float + m_Type: int + m_CullingMatrixOverride: Optional[Matrix4x4f] = None + m_CustomResolution: Optional[int] = None + m_NearPlane: Optional[float] = None + m_NormalBias: Optional[float] = None + m_Softness: Optional[float] = None + m_SoftnessFade: Optional[float] = None + m_UseCullingMatrixOverride: Optional[bool] = None + +@define(kw_only=True, slots=False) +class ShapeModule: + angle: float + enabled: bool + m_Mesh: PPtr[Mesh] + placementMode: int + radius: Union[MultiModeParameter, float] + type: int + alignToDirection: Optional[bool] = None + arc: Optional[Union[MultiModeParameter, float]] = None + boxThickness: Optional[Vector3f] = None + boxX: Optional[float] = None + boxY: Optional[float] = None + boxZ: Optional[float] = None + donutRadius: Optional[float] = None + length: Optional[float] = None + m_MeshMaterialIndex: Optional[int] = None + m_MeshNormalOffset: Optional[float] = None + m_MeshRenderer: Optional[PPtr[MeshRenderer]] = None + m_MeshScale: Optional[float] = None + m_MeshSpawn: Optional[MultiModeParameter] = None + m_Position: Optional[Vector3f] = None + m_Rotation: Optional[Vector3f] = None + m_Scale: Optional[Vector3f] = None + m_SkinnedMeshRenderer: Optional[PPtr[SkinnedMeshRenderer]] = None + m_Sprite: Optional[PPtr[Sprite]] = None + m_SpriteRenderer: Optional[PPtr[SpriteRenderer]] = None + m_Texture: Optional[PPtr[Texture2D]] = None + m_TextureAlphaAffectsParticles: Optional[bool] = None + m_TextureBilinearFiltering: Optional[bool] = None + m_TextureClipChannel: Optional[int] = None + m_TextureClipThreshold: Optional[float] = None + m_TextureColorAffectsParticles: Optional[bool] = None + m_TextureUVChannel: Optional[int] = None + m_UseMeshColors: Optional[bool] = None + m_UseMeshMaterialIndex: Optional[bool] = None + radiusThickness: Optional[float] = None + randomDirection: Optional[bool] = None + randomDirectionAmount: Optional[float] = None + randomPositionAmount: Optional[float] = None + sphericalDirectionAmount: Optional[float] = None + +@define(kw_only=True, slots=False) +class SizeBySpeedModule: + curve: MinMaxCurve + enabled: bool + range: Vector2f + separateAxes: Optional[bool] = None + y: Optional[MinMaxCurve] = None + z: Optional[MinMaxCurve] = None + +@define(kw_only=True, slots=False) +class SizeModule: + curve: MinMaxCurve + enabled: bool + separateAxes: Optional[bool] = None + y: Optional[MinMaxCurve] = None + z: Optional[MinMaxCurve] = None + +@define(kw_only=True, slots=False) +class Skeleton: + m_AxesArray: List[Axes] + m_ID: List[int] + m_Node: List[Node] + +@define(kw_only=True, slots=False) +class SkeletonBone: + m_Name: str + m_Position: Vector3f + m_Rotation: Quaternionf + m_Scale: Vector3f + m_ParentName: Optional[str] = None + m_TransformModified: Optional[bool] = None + +@define(kw_only=True, slots=False) +class SkeletonBoneLimit: + m_Length: float + m_Max: Vector3f + m_Min: Vector3f + m_Modified: bool + m_Value: Vector3f + m_PostQ: Optional[Quaternionf] = None + m_PreQ: Optional[Quaternionf] = None + +@define(kw_only=True, slots=False) +class SkeletonMask: + m_Data: List[SkeletonMaskElement] + +@define(kw_only=True, slots=False) +class SkeletonMaskElement: + m_Weight: float + m_Index: Optional[int] = None + m_PathHash: Optional[int] = None + +@define(kw_only=True, slots=False) +class SkeletonPose: + m_X: List[xform] + +@define(kw_only=True, slots=False) +class SketchUpImportCamera: + aspectRatio: float + fov: float + isPerspective: int + lookAt: Vector3f + orthoSize: float + position: Vector3f + up: Vector3f + farPlane: Optional[float] = None + nearPlane: Optional[float] = None + +@define(kw_only=True, slots=False) +class SketchUpImportData: + defaultCamera: SketchUpImportCamera + scenes: List[SketchUpImportScene] + +@define(kw_only=True, slots=False) +class SketchUpImportScene: + camera: SketchUpImportCamera + name: str + +@define(kw_only=True, slots=False) +class SnapshotConstant: + nameHash: int + transitionIndices: List[int] + transitionTypes: List[int] + values: List[float] + +@define(kw_only=True, slots=False) +class SoftJointLimit: + bounciness: float + limit: float + contactDistance: Optional[float] = None + damper: Optional[float] = None + spring: Optional[float] = None + +@define(kw_only=True, slots=False) +class SoftJointLimitSpring: + damper: float + spring: float + +@define(kw_only=True, slots=False) +class SortingLayerEntry: + name: str + uniqueID: int + userID: Optional[int] = None + +@define(kw_only=True, slots=False) +class SourceAssetIdentifier: + assembly: str + name: str + type: str + +@define(kw_only=True, slots=False) +class SourceTextureInformation: + doesTextureContainAlpha: bool + height: int + width: int + doesTextureContainColor: Optional[bool] = None + sourceWasHDR: Optional[bool] = None + +@define(kw_only=True, slots=False) +class SpeedTreeWind: + BRANCH_DIRECTIONAL_1: bool + BRANCH_DIRECTIONAL_2: bool + BRANCH_DIRECTIONAL_FROND_1: bool + BRANCH_DIRECTIONAL_FROND_2: bool + BRANCH_OSC_COMPLEX_1: bool + BRANCH_OSC_COMPLEX_2: bool + BRANCH_SIMPLE_1: bool + BRANCH_SIMPLE_2: bool + BRANCH_TURBULENCE_1: bool + BRANCH_TURBULENCE_2: bool + BRANCH_WHIP_1: bool + BRANCH_WHIP_2: bool + BranchWindAnchor0: float + BranchWindAnchor1: float + BranchWindAnchor2: float + FROND_RIPPLE_ADJUST_LIGHTING: bool + FROND_RIPPLE_ONE_SIDED: bool + FROND_RIPPLE_TWO_SIDED: bool + GLOBAL_PRESERVE_SHAPE: bool + GLOBAL_WIND: bool + LEAF_OCCLUSION_1: bool + LEAF_OCCLUSION_2: bool + LEAF_RIPPLE_COMPUTED_1: bool + LEAF_RIPPLE_COMPUTED_2: bool + LEAF_RIPPLE_VERTEX_NORMAL_1: bool + LEAF_RIPPLE_VERTEX_NORMAL_2: bool + LEAF_TUMBLE_1: bool + LEAF_TUMBLE_2: bool + LEAF_TWITCH_1: bool + LEAF_TWITCH_2: bool + ROLLING: bool + m_fMaxBranchLevel1Length: float + m_sParams: SParams + +@define(kw_only=True, slots=False) +class SpeedTreeWindConfig8: + BRANCH_DIRECTIONAL_1: bool + BRANCH_DIRECTIONAL_2: bool + BRANCH_DIRECTIONAL_FROND_1: bool + BRANCH_DIRECTIONAL_FROND_2: bool + BRANCH_OSC_COMPLEX_1: bool + BRANCH_OSC_COMPLEX_2: bool + BRANCH_SIMPLE_1: bool + BRANCH_SIMPLE_2: bool + BRANCH_TURBULENCE_1: bool + BRANCH_TURBULENCE_2: bool + BRANCH_WHIP_1: bool + BRANCH_WHIP_2: bool + BranchLevel1: SBranchWindLevel + BranchLevel2: SBranchWindLevel + BranchWindAnchor0: float + BranchWindAnchor1: float + BranchWindAnchor2: float + FROND_RIPPLE_ADJUST_LIGHTING: bool + FROND_RIPPLE_ONE_SIDED: bool + FROND_RIPPLE_TWO_SIDED: bool + GLOBAL_PRESERVE_SHAPE: bool + GLOBAL_WIND: bool + LEAF_OCCLUSION_1: bool + LEAF_OCCLUSION_2: bool + LEAF_RIPPLE_COMPUTED_1: bool + LEAF_RIPPLE_COMPUTED_2: bool + LEAF_RIPPLE_VERTEX_NORMAL_1: bool + LEAF_RIPPLE_VERTEX_NORMAL_2: bool + LEAF_TUMBLE_1: bool + LEAF_TUMBLE_2: bool + LEAF_TWITCH_1: bool + LEAF_TWITCH_2: bool + LeafGroup1: SWindGroup + LeafGroup2: SWindGroup + Oscillation0_0: float + Oscillation0_1: float + Oscillation0_2: float + Oscillation0_3: float + Oscillation0_4: float + Oscillation0_5: float + Oscillation0_6: float + Oscillation0_7: float + Oscillation0_8: float + Oscillation0_9: float + Oscillation1_0: float + Oscillation1_1: float + Oscillation1_2: float + Oscillation1_3: float + Oscillation1_4: float + Oscillation1_5: float + Oscillation1_6: float + Oscillation1_7: float + Oscillation1_8: float + Oscillation1_9: float + Oscillation2_0: float + Oscillation2_1: float + Oscillation2_2: float + Oscillation2_3: float + Oscillation2_4: float + Oscillation2_5: float + Oscillation2_6: float + Oscillation2_7: float + Oscillation2_8: float + Oscillation2_9: float + Oscillation3_0: float + Oscillation3_1: float + Oscillation3_2: float + Oscillation3_3: float + Oscillation3_4: float + Oscillation3_5: float + Oscillation3_6: float + Oscillation3_7: float + Oscillation3_8: float + Oscillation3_9: float + Oscillation4_0: float + Oscillation4_1: float + Oscillation4_2: float + Oscillation4_3: float + Oscillation4_4: float + Oscillation4_5: float + Oscillation4_6: float + Oscillation4_7: float + Oscillation4_8: float + Oscillation4_9: float + Oscillation5_0: float + Oscillation5_1: float + Oscillation5_2: float + Oscillation5_3: float + Oscillation5_4: float + Oscillation5_5: float + Oscillation5_6: float + Oscillation5_7: float + Oscillation5_8: float + Oscillation5_9: float + Oscillation6_0: float + Oscillation6_1: float + Oscillation6_2: float + Oscillation6_3: float + Oscillation6_4: float + Oscillation6_5: float + Oscillation6_6: float + Oscillation6_7: float + Oscillation6_8: float + Oscillation6_9: float + Oscillation7_0: float + Oscillation7_1: float + Oscillation7_2: float + Oscillation7_3: float + Oscillation7_4: float + Oscillation7_5: float + Oscillation7_6: float + Oscillation7_7: float + Oscillation7_8: float + Oscillation7_9: float + Oscillation8_0: float + Oscillation8_1: float + Oscillation8_2: float + Oscillation8_3: float + Oscillation8_4: float + Oscillation8_5: float + Oscillation8_6: float + Oscillation8_7: float + Oscillation8_8: float + Oscillation8_9: float + Oscillation9_0: float + Oscillation9_1: float + Oscillation9_2: float + Oscillation9_3: float + Oscillation9_4: float + Oscillation9_5: float + Oscillation9_6: float + Oscillation9_7: float + Oscillation9_8: float + Oscillation9_9: float + ROLLING: bool + m_afFrondRippleDistance_0: float + m_afFrondRippleDistance_1: float + m_afFrondRippleDistance_2: float + m_afFrondRippleDistance_3: float + m_afFrondRippleDistance_4: float + m_afFrondRippleDistance_5: float + m_afFrondRippleDistance_6: float + m_afFrondRippleDistance_7: float + m_afFrondRippleDistance_8: float + m_afFrondRippleDistance_9: float + m_afGlobalDirectionAdherence_0: float + m_afGlobalDirectionAdherence_1: float + m_afGlobalDirectionAdherence_2: float + m_afGlobalDirectionAdherence_3: float + m_afGlobalDirectionAdherence_4: float + m_afGlobalDirectionAdherence_5: float + m_afGlobalDirectionAdherence_6: float + m_afGlobalDirectionAdherence_7: float + m_afGlobalDirectionAdherence_8: float + m_afGlobalDirectionAdherence_9: float + m_afGlobalDistance_0: float + m_afGlobalDistance_1: float + m_afGlobalDistance_2: float + m_afGlobalDistance_3: float + m_afGlobalDistance_4: float + m_afGlobalDistance_5: float + m_afGlobalDistance_6: float + m_afGlobalDistance_7: float + m_afGlobalDistance_8: float + m_afGlobalDistance_9: float + m_fAnchorDistanceScale: float + m_fAnchorOffset: float + m_fDirectionResponse: float + m_fFrondRippleLightingScalar: float + m_fFrondRippleTile: float + m_fGlobalHeight: float + m_fGlobalHeightExponent: float + m_fGustDurationMax: float + m_fGustDurationMin: float + m_fGustFallScalar: float + m_fGustFrequency: float + m_fGustRiseScalar: float + m_fGustStrengthMax: float + m_fGustStrengthMin: float + m_fMaxBranchLevel1Length: float + m_fRollingBranchFieldMin: float + m_fRollingBranchLightingAdjust: float + m_fRollingBranchVerticalOffset: float + m_fRollingLeafRippleMin: float + m_fRollingLeafTumbleMin: float + m_fRollingNoisePeriod: float + m_fRollingNoiseSize: float + m_fRollingNoiseSpeed: float + m_fRollingNoiseTurbulence: float + m_fRollingNoiseTwist: float + m_fStrengthResponse: float + +@define(kw_only=True, slots=False) +class SpeedTreeWindConfig9: + m_bDoBranch1: int + m_bDoBranch2: int + m_bDoRipple: int + m_bDoShared: int + m_bDoShimmer: int + m_bLodFade: int + m_fBranch1StretchLimit: float + m_fBranch2StretchLimit: float + m_fDirectionResponse: float + m_fGustDurationMax: float + m_fGustDurationMin: float + m_fGustFallScalar: float + m_fGustFrequency: float + m_fGustRiseScalar: float + m_fGustStrengthMax: float + m_fGustStrengthMin: float + m_fSharedHeightStart: float + m_fStrengthResponse: float + m_fWindIndependence: float + m_sBranch1: BranchWindLevel + m_sBranch2: BranchWindLevel + m_sRipple: RippleGroup + m_sShared: BranchWindLevel + m_vTreeExtents: Vector3f + m_fImportScaling: Optional[float] = None + pad: Optional[int] = None + +@define(kw_only=True, slots=False) +class SphericalHarmonicsL2: + sh_10_: float + sh_11_: float + sh_12_: float + sh_13_: float + sh_14_: float + sh_15_: float + sh_16_: float + sh_17_: float + sh_18_: float + sh_19_: float + sh_20_: float + sh_21_: float + sh_22_: float + sh_23_: float + sh_24_: float + sh_25_: float + sh_26_: float + sh__0_: float + sh__1_: float + sh__2_: float + sh__3_: float + sh__4_: float + sh__5_: float + sh__6_: float + sh__7_: float + sh__8_: float + sh__9_: float + +@define(kw_only=True, slots=False) +class SplashScreenLogo: + duration: float + logo: PPtr[Sprite] + +@define(kw_only=True, slots=False) +class SplatDatabase: + m_AlphaTextures: List[PPtr[Texture2D]] + m_AlphamapResolution: int + m_BaseMapResolution: int + m_ColorSpace: Optional[int] = None + m_MaterialRequiresMetallic: Optional[bool] = None + m_MaterialRequiresSmoothness: Optional[bool] = None + m_Splats: Optional[List[SplatPrototype]] = None + m_TerrainLayers: Optional[List[PPtr[TerrainLayer]]] = None + +@define(kw_only=True, slots=False) +class SplatPrototype: + texture: PPtr[Texture2D] + tileOffset: Vector2f + tileSize: Vector2f + normalMap: Optional[PPtr[Texture2D]] = None + smoothness: Optional[float] = None + specularMetallic: Optional[Vector4f] = None + +@define(kw_only=True, slots=False) +class SpriteAtlasAssetData: + packables: List[PPtr[Object]] + +@define(kw_only=True, slots=False) +class SpriteAtlasData: + alphaTexture: PPtr[Texture2D] + downscaleMultiplier: float + settingsRaw: int + texture: PPtr[Texture2D] + textureRect: Rectf + textureRectOffset: Vector2f + uvTransform: Vector4f + atlasRectOffset: Optional[Vector2f] = None + secondaryTextures: Optional[List[SecondarySpriteTexture]] = None + +@define(kw_only=True, slots=False) +class SpriteAtlasEditorData: + bindAsDefault: bool + cachedData: PPtr[CachedSpriteAtlasRuntimeData] + isAtlasV2: bool + packables: List[PPtr[Object]] + packingSettings: PackingSettings + platformSettings: List[TextureImporterPlatformSettings] + textureSettings: TextureSettings + variantMultiplier: float + secondaryTextureSettings: Optional[List[Tuple[str, SecondaryTextureSettings]]] = None + storedHash: Optional[Hash128] = None + totalSpriteSurfaceArea: Optional[int] = None + +@define(kw_only=True, slots=False) +class SpriteBone: + length: float + name: str + parentId: int + position: Vector3f + rotation: Quaternionf + color: Optional[ColorRGBA] = None + guid: Optional[str] = None + +@define(kw_only=True, slots=False) +class SpriteCustomDataEntry: + m_Key: str + m_Value: str + +@define(kw_only=True, slots=False) +class SpriteCustomMetadata: + m_Entries: List[SpriteCustomDataEntry] + +@define(kw_only=True, slots=False) +class SpriteData: + sprite: PPtr[Object] + +@define(kw_only=True, slots=False) +class SpriteMetaData: + m_Alignment: int + m_Name: str + m_Pivot: Vector2f + m_Rect: Rectf + m_Bones: Optional[List[SpriteBone]] = None + m_Border: Optional[Vector4f] = None + m_CustomData: Optional[str] = None + m_Edges: Optional[List[int2_storage]] = None + m_Indices: Optional[List[int]] = None + m_InternalID: Optional[int] = None + m_Outline: Optional[List[List[Vector2f]]] = None + m_PhysicsShape: Optional[List[List[Vector2f]]] = None + m_SpriteID: Optional[str] = None + m_TessellationDetail: Optional[float] = None + m_Vertices: Optional[List[Vector2f]] = None + m_Weights: Optional[List[BoneWeights4]] = None + +@define(kw_only=True, slots=False) +class SpriteRenderData: + settingsRaw: int + texture: PPtr[Texture2D] + textureRect: Rectf + textureRectOffset: Vector2f + alphaTexture: Optional[PPtr[Texture2D]] = None + atlasRectOffset: Optional[Vector2f] = None + downscaleMultiplier: Optional[float] = None + indices: Optional[List[int]] = None + m_Bindpose: Optional[List[Matrix4x4f]] = None + m_IndexBuffer: Optional[List[int]] = None + m_SourceSkin: Optional[List[BoneWeights4]] = None + m_SubMeshes: Optional[List[SubMesh]] = None + m_VertexData: Optional[VertexData] = None + secondaryTextures: Optional[List[SecondarySpriteTexture]] = None + uvTransform: Optional[Vector4f] = None + vertices: Optional[List[SpriteVertex]] = None + +@define(kw_only=True, slots=False) +class SpriteSheetMetaData: + m_Sprites: List[SpriteMetaData] + m_Bones: Optional[List[SpriteBone]] = None + m_CustomData: Optional[str] = None + m_Edges: Optional[List[int2_storage]] = None + m_Indices: Optional[List[int]] = None + m_InternalID: Optional[int] = None + m_NameFileIdTable: Optional[List[Tuple[str, int]]] = None + m_Outline: Optional[List[List[Vector2f]]] = None + m_PhysicsShape: Optional[List[List[Vector2f]]] = None + m_SecondaryTextures: Optional[List[SecondarySpriteTexture]] = None + m_SpriteCustomMetadata: Optional[SpriteCustomMetadata] = None + m_SpriteID: Optional[str] = None + m_Vertices: Optional[List[Vector2f]] = None + m_Weights: Optional[List[BoneWeights4]] = None + +@define(kw_only=True, slots=False) +class SpriteTilingProperty: + adaptiveTiling: bool + adaptiveTilingThreshold: float + border: Vector4f + drawMode: int + newSize: Vector2f + oldSize: Vector2f + pivot: Vector2f + +@define(kw_only=True, slots=False) +class SpriteVertex: + pos: Vector3f + uv: Optional[Vector2f] = None + +@define(kw_only=True, slots=False) +class State(NamedObject): + m_IKOnFeet: bool + m_Motions: List[PPtr[Motion]] + m_Name: str + m_ParentStateMachine: PPtr[StateMachine] + m_Position: Vector3f + m_Speed: float + m_Tag: str + m_CycleOffset: Optional[float] = None + m_Mirror: Optional[bool] = None + +@define(kw_only=True, slots=False) +class StateConstant: + m_BlendTreeConstantArray: List[OffsetPtr] + m_BlendTreeConstantIndexArray: List[int] + m_IKOnFeet: bool + m_Loop: bool + m_Speed: float + m_TagID: int + m_TransitionConstantArray: List[OffsetPtr] + m_CycleOffset: Optional[float] = None + m_CycleOffsetParamID: Optional[int] = None + m_FullPathID: Optional[int] = None + m_ID: Optional[int] = None + m_LeafInfoArray: Optional[List[LeafInfoConstant]] = None + m_Mirror: Optional[bool] = None + m_MirrorParamID: Optional[int] = None + m_NameID: Optional[int] = None + m_PathID: Optional[int] = None + m_SpeedParamID: Optional[int] = None + m_TimeParamID: Optional[int] = None + m_WriteDefaultValues: Optional[bool] = None + +@define(kw_only=True, slots=False) +class StateKey: + m_LayerIndex: int + m_StateID: int + +@define(kw_only=True, slots=False) +class StateMachine(NamedObject): + m_AnyStatePosition: Vector3f + m_ChildStateMachine: List[PPtr[StateMachine]] + m_ChildStateMachinePosition: List[Vector3f] + m_DefaultState: PPtr[State] + m_MotionSetCount: int + m_Name: str + m_OrderedTransitions: List[Tuple[PPtr[State], List[PPtr[Transition]]]] + m_ParentStateMachinePosition: Vector3f + m_States: List[PPtr[State]] + m_LocalTransitions: Optional[List[Tuple[PPtr[State], List[PPtr[Transition]]]]] = None + +@define(kw_only=True, slots=False) +class StateMachineBehaviourVectorDescription: + m_StateMachineBehaviourIndices: List[int] + m_StateMachineBehaviourRanges: List[Tuple[StateKey, StateRange]] + +@define(kw_only=True, slots=False) +class StateMachineConstant: + m_AnyStateTransitionConstantArray: List[OffsetPtr] + m_DefaultState: int + m_StateConstantArray: List[OffsetPtr] + m_MotionSetCount: Optional[int] = None + m_SelectorStateConstantArray: Optional[List[OffsetPtr]] = None + m_SynchronizedLayerCount: Optional[int] = None + +@define(kw_only=True, slots=False) +class StateRange: + m_Count: int + m_StartIndex: int + +@define(kw_only=True, slots=False) +class StaticBatchInfo: + firstSubMesh: int + subMeshCount: int + +@define(kw_only=True, slots=False) +class StreamInfo: + channelMask: int + offset: int + stride: int + align: Optional[int] = None + dividerOp: Optional[int] = None + frequency: Optional[int] = None + +@define(kw_only=True, slots=False) +class StreamedClip: + curveCount: int + data: List[int] + discreteCurveCount: Optional[int] = None + +@define(kw_only=True, slots=False) +class StreamedResource: + m_Offset: int + m_Size: int + m_Source: str + +@define(kw_only=True, slots=False) +class StreamingInfo: + offset: int + path: str + size: int + +@define(kw_only=True, slots=False) +class StructParameter: + m_ArraySize: int + m_Index: int + m_MatrixMembers: List[MatrixParameter] + m_NameIndex: int + m_StructSize: int + m_VectorMembers: List[VectorParameter] + +@define(kw_only=True, slots=False) +class SubCollider: + m_Collider: PPtr[Collider2D] + m_ColliderPaths: List[List[IntPoint]] + +@define(kw_only=True, slots=False) +class SubEmitterData: + emitter: PPtr[ParticleSystem] + properties: int + type: int + emitProbability: Optional[float] = None + +@define(kw_only=True, slots=False) +class SubMesh: + firstByte: int + firstVertex: int + indexCount: int + localAABB: AABB + vertexCount: int + baseVertex: Optional[int] = None + isTriStrip: Optional[int] = None + topology: Optional[int] = None + triangleCount: Optional[int] = None + +@define(kw_only=True, slots=False) +class SubModule: + enabled: bool + subEmitterBirth: Optional[PPtr[ParticleSystem]] = None + subEmitterBirth1: Optional[PPtr[ParticleSystem]] = None + subEmitterCollision: Optional[PPtr[ParticleSystem]] = None + subEmitterCollision1: Optional[PPtr[ParticleSystem]] = None + subEmitterDeath: Optional[PPtr[ParticleSystem]] = None + subEmitterDeath1: Optional[PPtr[ParticleSystem]] = None + subEmitters: Optional[List[SubEmitterData]] = None + +@define(kw_only=True, slots=False) +class SubPassDescriptor: + colorOutputs: AttachmentIndexArray + flags: int + inputs: AttachmentIndexArray + +@define(kw_only=True, slots=False) +class SubstanceEnumItem: + text: str + value: int + +@define(kw_only=True, slots=False) +class SubstanceInput: + alteredTexturesUID: List[int] + enumValues: List[SubstanceEnumItem] + flags: int + internalIndex: int + internalType: int + maximum: float + minimum: float + name: str + step: float + type: int + value: SubstanceValue + componentLabels: Optional[List[str]] = None + group: Optional[str] = None + internalIdentifier: Optional[int] = None + label: Optional[str] = None + visibleIf: Optional[str] = None + +@define(kw_only=True, slots=False) +class SubstanceValue: + scalar_0_: float + scalar_1_: float + scalar_2_: float + scalar_3_: float + texture: PPtr[Texture2D] + stringvalue: Optional[str] = None + +@define(kw_only=True, slots=False) +class TakeInfo: + bakeStartTime: float + bakeStopTime: float + clip: PPtr[AnimationClip] + defaultClipName: str + name: str + sampleRate: float + startTime: float + stopTime: float + internalID: Optional[int] = None + +@define(kw_only=True, slots=False) +class Tetrahedron: + indices_0_: int + indices_1_: int + indices_2_: int + indices_3_: int + matrix: Matrix3x4f + neighbors_0_: int + neighbors_1_: int + neighbors_2_: int + neighbors_3_: int + +@define(kw_only=True, slots=False) +class TextureImportInstructions: + colorSpace: int + compressedFormat: int + compressionQuality: int + height: int + uncompressedFormat: int + usageMode: int + width: int + androidETC2FallbackDownscale: Optional[bool] = None + androidETC2FallbackFormat: Optional[int] = None + cubeIntermediateSize: Optional[int] = None + cubeLayout: Optional[int] = None + cubeMode: Optional[int] = None + depth: Optional[int] = None + desiredFormat: Optional[int] = None + recommendedFormat: Optional[int] = None + vtOnly: Optional[bool] = None + +@define(kw_only=True, slots=False) +class TextureImportOutput: + sourceTextureInformation: SourceTextureInformation + textureImportInstructions: TextureImportInstructions + importInspectorWarnings: Optional[str] = None + +@define(kw_only=True, slots=False) +class TextureImporterPlatformSettings: + m_AllowsAlphaSplitting: bool + m_AndroidETC2FallbackOverride: int + m_BuildTarget: str + m_CompressionQuality: int + m_CrunchedCompression: bool + m_MaxTextureSize: int + m_Overridden: bool + m_ResizeAlgorithm: int + m_TextureCompression: int + m_TextureFormat: int + m_ForceMaximumCompressionQuality_BC6H_BC7: Optional[bool] = None + m_IgnorePlatformSupport: Optional[bool] = None + +@define(kw_only=True, slots=False) +class TextureParameter: + m_Dim: int + m_Index: int + m_NameIndex: int + m_SamplerIndex: int + m_MultiSampled: Optional[bool] = None + +@define(kw_only=True, slots=False) +class TextureParameters: + height: int + mipLevels: int + textureFormat: int + width: int + +@define(kw_only=True, slots=False) +class TextureSettings: + anisoLevel: int + compressionQuality: int + crunchedCompression: bool + filterMode: int + generateMipMaps: bool + maxTextureSize: int + readable: bool + sRGB: bool + textureCompression: int + +@define(kw_only=True, slots=False) +class TicksPerSecond: + m_Denominator: int + m_Numerator: int + +@define(kw_only=True, slots=False) +class TierGraphicsSettings: + renderingPath: int + useCascadedShadowMaps: bool + enableLPPV: Optional[bool] = None + hdrMode: Optional[int] = None + prefer32BitShadowMaps: Optional[bool] = None + realtimeGICPUUsage: Optional[int] = None + useHDR: Optional[bool] = None + +@define(kw_only=True, slots=False) +class Tile: + m_TileColorIndex: int + m_TileIndex: int + m_TileMatrixIndex: int + m_TileSpriteIndex: int + dummyAlignment: Optional[int] = None + m_AllTileFlags: Optional[int] = None + m_ColliderType: Optional[int] = None + m_ObjectToInstantiate: Optional[PPtr[GameObject]] = None + m_TileFlags: Optional[int] = None + m_TileObjectToInstantiateIndex: Optional[int] = None + +@define(kw_only=True, slots=False) +class TileAnimationData: + m_AnimatedSprites: List[PPtr[Sprite]] + m_AnimationSpeed: float + m_AnimationTimeOffset: float + m_Flags: Optional[int] = None + m_IsLooping: Optional[bool] = None + +@define(kw_only=True, slots=False) +class TilemapRefCountedData: + m_Data: Union[PPtr[GameObject], ColorRGBA, PPtr[Object], Matrix4x4f, PPtr[Sprite]] + m_RefCount: int + +@define(kw_only=True, slots=False) +class TrailModule: + colorOverLifetime: MinMaxGradient + colorOverTrail: MinMaxGradient + dieWithParticles: bool + enabled: bool + inheritParticleColor: bool + lifetime: MinMaxCurve + minVertexDistance: float + ratio: float + sizeAffectsLifetime: bool + sizeAffectsWidth: bool + textureMode: int + widthOverTrail: MinMaxCurve + worldSpace: bool + attachRibbonsToTransform: Optional[bool] = None + generateLightingData: Optional[bool] = None + mode: Optional[int] = None + ribbonCount: Optional[int] = None + shadowBias: Optional[float] = None + splitSubEmitterRibbons: Optional[bool] = None + textureScale: Optional[Vector2f] = None + +@define(kw_only=True, slots=False) +class TransformMaskElement: + m_Path: str + m_Weight: float + +@define(kw_only=True, slots=False) +class Transition(NamedObject): + m_Atomic: bool + m_Conditions: List[Condition] + m_DstState: PPtr[State] + m_Mute: bool + m_Name: str + m_Solo: bool + m_SrcState: PPtr[State] + m_TransitionDuration: float + m_TransitionOffset: float + m_CanTransitionToSelf: Optional[bool] = None + +@define(kw_only=True, slots=False) +class TransitionConstant: + m_ConditionConstantArray: List[OffsetPtr] + m_DestinationState: int + m_ID: int + m_TransitionDuration: float + m_TransitionOffset: float + m_UserID: int + m_Atomic: Optional[bool] = None + m_CanTransitionToSelf: Optional[bool] = None + m_ExitTime: Optional[float] = None + m_FullPathID: Optional[int] = None + m_HasExitTime: Optional[bool] = None + m_HasFixedDuration: Optional[bool] = None + m_InterruptionSource: Optional[int] = None + m_OrderedInterruption: Optional[bool] = None + +@define(kw_only=True, slots=False) +class TreeInstance: + color: ColorRGBA + heightScale: float + index: int + lightmapColor: ColorRGBA + position: Vector3f + widthScale: float + rotation: Optional[float] = None + +@define(kw_only=True, slots=False) +class TreePrototype: + bendFactor: float + prefab: PPtr[GameObject] + navMeshLod: Optional[int] = None + +@define(kw_only=True, slots=False) +class TriggerModule: + enabled: bool + enter: int + exit: int + inside: int + outside: int + radiusScale: float + colliderQueryMode: Optional[int] = None + collisionShape0: Optional[PPtr[Component]] = None + collisionShape1: Optional[PPtr[Component]] = None + collisionShape2: Optional[PPtr[Component]] = None + collisionShape3: Optional[PPtr[Component]] = None + collisionShape4: Optional[PPtr[Component]] = None + collisionShape5: Optional[PPtr[Component]] = None + primitives: Optional[List[PPtr[Component]]] = None + +@define(kw_only=True, slots=False) +class UAVParameter: + m_Index: int + m_NameIndex: int + m_OriginalIndex: int + +@define(kw_only=True, slots=False) +class UVAnimation: + cycles: float + x_Tile: int + y_Tile: int + +@define(kw_only=True, slots=False) +class UVModule: + animationType: int + cycles: float + enabled: bool + frameOverTime: MinMaxCurve + rowIndex: int + tilesX: int + tilesY: int + flipU: Optional[float] = None + flipV: Optional[float] = None + fps: Optional[float] = None + mode: Optional[int] = None + randomRow: Optional[bool] = None + rowMode: Optional[int] = None + speedRange: Optional[Vector2f] = None + sprites: Optional[List[SpriteData]] = None + startFrame: Optional[MinMaxCurve] = None + timeMode: Optional[int] = None + uvChannelMask: Optional[int] = None + +@define(kw_only=True, slots=False) +class UnityAdsSettings(GlobalGameManager): + m_Enabled: bool + m_InitializeOnStartup: bool + m_TestMode: bool + m_AndroidGameId: Optional[str] = None + m_EnabledPlatforms: Optional[int] = None + m_GameId: Optional[str] = None + m_IosGameId: Optional[str] = None + +@define(kw_only=True, slots=False) +class UnityAnalyticsSettings: + m_Enabled: bool + m_InitializeOnStartup: bool + m_TestMode: bool + m_PackageRequiringCoreStatsPresent: Optional[bool] = None + m_TestConfigUrl: Optional[str] = None + m_TestEventUrl: Optional[str] = None + +@define(kw_only=True, slots=False) +class UnityPropertySheet: + m_Colors: Union[List[Tuple[FastPropertyName, ColorRGBA]], List[Tuple[str, ColorRGBA]]] + m_Floats: Union[List[Tuple[FastPropertyName, float]], List[Tuple[str, float]]] + m_TexEnvs: Union[List[Tuple[FastPropertyName, UnityTexEnv]], List[Tuple[str, UnityTexEnv]]] + m_Ints: Optional[List[Tuple[str, int]]] = None + +@define(kw_only=True, slots=False) +class UnityPurchasingSettings: + m_Enabled: bool + m_TestMode: bool + +@define(kw_only=True, slots=False) +class UnityTexEnv: + m_Offset: Vector2f + m_Scale: Vector2f + m_Texture: PPtr[Texture] + +@define(kw_only=True, slots=False) +class UpdateZoneInfo: + needSwap: bool + passIndex: int + rotation: float + updateZoneCenter: Vector3f + updateZoneSize: Vector3f + +@define(kw_only=True, slots=False) +class VFXCPUBufferData: + data: List[int] + +@define(kw_only=True, slots=False) +class VFXCPUBufferDesc: + capacity: int + initialData: VFXCPUBufferData + layout: List[VFXLayoutElementDesc] + stride: int + +@define(kw_only=True, slots=False) +class VFXEditorSystemDesc: + buffers: List[VFXMapping] + capacity: int + flags: int + layer: int + tasks: List[VFXEditorTaskDesc] + type: int + values: List[VFXMapping] + name: Optional[str] = None + +@define(kw_only=True, slots=False) +class VFXEditorTaskDesc: + buffers: List[VFXMapping] + params: List[VFXMapping] + processor: PPtr[NamedObject] + shaderSourceIndex: int + type: int + values: List[VFXMapping] + temporaryBuffers: Optional[List[VFXMappingTemporary]] = None + +@define(kw_only=True, slots=False) +class VFXEntryExposed: + m_Name: str + m_Overridden: bool + m_Value: Union[Gradient, Vector3f, float, PPtr[NamedObject], Vector4f, AnimationCurve, PPtr[Object], int, Vector2f, bool, Matrix4x4f] + +@define(kw_only=True, slots=False) +class VFXEntryExpressionValue: + m_ExpressionIndex: int + m_Value: Union[Gradient, Vector3f, float, PPtr[NamedObject], Vector4f, AnimationCurve, PPtr[Object], int, Vector2f, bool, Matrix4x4f] + +@define(kw_only=True, slots=False) +class VFXEventDesc: + name: str + playSystems: List[int] + stopSystems: List[int] + initSystems: Optional[List[int]] = None + +@define(kw_only=True, slots=False) +class VFXExposedMapping: + mapping: VFXMapping + space: int + +@define(kw_only=True, slots=False) +class VFXExpressionContainer: + m_Expressions: List[Expression] + m_NeedsLocalToWorld: bool + m_NeedsWorldToLocal: bool + m_ConstantBakeCurveCount: Optional[int] = None + m_ConstantBakeGradientCount: Optional[int] = None + m_DynamicBakeCurveCount: Optional[int] = None + m_DynamicBakeGradientCount: Optional[int] = None + m_MaxCommonExpressionsIndex: Optional[int] = None + m_NeededMainCameraBuffers: Optional[int] = None + m_NeedsMainCamera: Optional[bool] = None + +@define(kw_only=True, slots=False) +class VFXField: + m_Array: Union[List[VFXEntryExpressionValue], List[VFXEntryExposed]] + +@define(kw_only=True, slots=False) +class VFXGPUBufferDesc: + capacity: int + layout: List[VFXLayoutElementDesc] + size: int + stride: int + mode: Optional[int] = None + target: Optional[int] = None + type: Optional[int] = None + +@define(kw_only=True, slots=False) +class VFXInstanceSplitDesc: + values: List[int] + +@define(kw_only=True, slots=False) +class VFXLayoutElementDesc: + name: str + offset: VFXLayoutOffset + type: int + +@define(kw_only=True, slots=False) +class VFXLayoutOffset: + bucket: int + element: int + structure: int + +@define(kw_only=True, slots=False) +class VFXMapping: + index: int + nameId: str + +@define(kw_only=True, slots=False) +class VFXMappingTemporary: + mapping: VFXMapping + pastFrameIndex: int + perCameraBuffer: bool + +@define(kw_only=True, slots=False) +class VFXPropertySheetSerializedBase: + m_AnimationCurve: VFXField + m_Bool: VFXField + m_Float: VFXField + m_Gradient: VFXField + m_Int: VFXField + m_Matrix4x4f: VFXField + m_NamedObject: VFXField + m_Uint: VFXField + m_Vector2f: VFXField + m_Vector3f: VFXField + m_Vector4f: VFXField + +@define(kw_only=True, slots=False) +class VFXRendererSettings: + lightProbeUsage: int + motionVectorGenerationMode: int + receiveShadows: bool + reflectionProbeUsage: int + shadowCastingMode: int + rayTracingMode: Optional[int] = None + +@define(kw_only=True, slots=False) +class VFXShaderSourceDesc: + compute: bool + name: str + source: str + +@define(kw_only=True, slots=False) +class VFXSystemDesc: + buffers: List[VFXMapping] + capacity: int + flags: int + layer: int + tasks: List[VFXTaskDesc] + type: int + values: List[VFXMapping] + instanceSplitDescs: Optional[List[VFXInstanceSplitDesc]] = None + name: Optional[str] = None + +@define(kw_only=True, slots=False) +class VFXTaskDesc: + buffers: List[VFXMapping] + params: List[VFXMapping] + processor: PPtr[NamedObject] + type: int + values: List[VFXMapping] + instanceSplitIndex: Optional[int] = None + temporaryBuffers: Optional[List[VFXMappingTemporary]] = None + +@define(kw_only=True, slots=False) +class VFXTemplate: + category: str + description: str + icon: PPtr[Texture2D] + name: str + thumbnail: PPtr[Texture2D] + +@define(kw_only=True, slots=False) +class VFXTemporaryGPUBufferDesc: + desc: VFXGPUBufferDesc + frameCount: int + +@define(kw_only=True, slots=False) +class VRSettings: + cardboard: Optional[Google] = None + daydream: Optional[Google] = None + enable360StereoCapture: Optional[bool] = None + hololens: Optional[HoloLens] = None + lumin: Optional[Lumin] = None + none: Optional[DeviceNone] = None + oculus: Optional[Oculus] = None + +@define(kw_only=True, slots=False) +class ValueArray: + m_BoolValues: List[bool] + m_FloatValues: List[float] + m_IntValues: List[int] + m_PositionValues: Optional[Union[List[float4], List[float3]]] = None + m_QuaternionValues: Optional[List[float4]] = None + m_ScaleValues: Optional[Union[List[float4], List[float3]]] = None + m_VectorValues: Optional[List[float4]] = None + +@define(kw_only=True, slots=False) +class ValueArrayConstant: + m_ValueArray: List[ValueConstant] + +@define(kw_only=True, slots=False) +class ValueConstant: + m_ID: int + m_Index: int + m_Type: int + m_TypeID: Optional[int] = None + +@define(kw_only=True, slots=False) +class ValueDelta: + m_Start: float + m_Stop: float + +@define(kw_only=True, slots=False) +class VariableBoneCountWeights: + m_Data: List[int] + +@define(kw_only=True, slots=False) +class VariantInfo: + graphicsStateInfoSet: Optional[List[GraphicsStateInfo]] = None + keywordNames: Optional[str] = None + keywords: Optional[str] = None + passIndex: Optional[int] = None + passType: Optional[int] = None + shader: Optional[PPtr[Shader]] = None + shaderAssetGUID: Optional[str] = None + shaderName: Optional[str] = None + subShaderIndex: Optional[int] = None + +@define(kw_only=True, slots=False) +class Vector3Curve: + curve: AnimationCurve + path: str + +@define(kw_only=True, slots=False) +class VectorParameter: + m_ArraySize: int + m_Dim: int + m_Index: int + m_NameIndex: int + m_Type: int + +@define(kw_only=True, slots=False) +class VelocityModule: + enabled: bool + inWorldSpace: bool + x: MinMaxCurve + y: MinMaxCurve + z: MinMaxCurve + orbitalOffsetX: Optional[MinMaxCurve] = None + orbitalOffsetY: Optional[MinMaxCurve] = None + orbitalOffsetZ: Optional[MinMaxCurve] = None + orbitalX: Optional[MinMaxCurve] = None + orbitalY: Optional[MinMaxCurve] = None + orbitalZ: Optional[MinMaxCurve] = None + radial: Optional[MinMaxCurve] = None + speedModifier: Optional[MinMaxCurve] = None + +@define(kw_only=True, slots=False) +class VertexData: + m_DataSize: bytes + m_VertexCount: int + m_Channels: Optional[List[ChannelInfo]] = None + m_CurrentChannels: Optional[int] = None + m_Streams: Optional[List[StreamInfo]] = None + m_Streams_0_: Optional[StreamInfo] = None + m_Streams_1_: Optional[StreamInfo] = None + m_Streams_2_: Optional[StreamInfo] = None + m_Streams_3_: Optional[StreamInfo] = None + +@define(kw_only=True, slots=False) +class VertexLayoutInfo: + vertexChannelsInfo: List[ChannelInfo] + vertexStreamCount: int + vertexStrides: List[int] + +@define(kw_only=True, slots=False) +class VideoClipImporterOutput: + encodedEndFrame: Optional[int] = None + encodedHeight: Optional[int] = None + encodedSettings: Optional[VideoClipImporterTargetSettings] = None + encodedStartFrame: Optional[int] = None + encodedWidth: Optional[int] = None + format: Optional[int] = None + originalFrameCount: Optional[int] = None + originalHeight: Optional[int] = None + originalWidth: Optional[int] = None + settings: Optional[VideoClipImporterTargetSettings] = None + sourceAudioChannelCount: Optional[List[int]] = None + sourceAudioSampleRate: Optional[List[int]] = None + sourceFileSize: Optional[int] = None + sourceFrameRate: Optional[float] = None + sourceHasAlpha: Optional[bool] = None + sourcePixelAspectRatioDenominator: Optional[int] = None + sourcePixelAspectRatioNumerator: Optional[int] = None + streamedResource: Optional[StreamedResource] = None + transcodeSkipped: Optional[bool] = None + +@define(kw_only=True, slots=False) +class VideoClipImporterTargetSettings: + aspectRatio: int + bitrateMode: int + codec: int + customHeight: int + customWidth: int + enableTranscoding: bool + resizeFormat: int + spatialQuality: int + +@define(kw_only=True, slots=False) +class VisualEffectInfo: + m_Buffers: List[VFXGPUBufferDesc] + m_CPUBuffers: List[VFXCPUBufferDesc] + m_CullingFlags: int + m_Events: List[VFXEventDesc] + m_ExposedExpressions: Union[List[VFXMapping], List[VFXExposedMapping]] + m_Expressions: VFXExpressionContainer + m_PropertySheet: VFXPropertySheetSerializedBase + m_RendererSettings: VFXRendererSettings + m_UpdateMode: int + m_CompilationVersion: Optional[int] = None + m_InitialEventName: Optional[str] = None + m_InstancingCapacity: Optional[int] = None + m_InstancingDisabledReason: Optional[int] = None + m_InstancingMode: Optional[int] = None + m_PreWarmDeltaTime: Optional[float] = None + m_PreWarmStepCount: Optional[int] = None + m_RuntimeVersion: Optional[int] = None + m_TemporaryBuffers: Optional[List[VFXTemporaryGPUBufferDesc]] = None + +@define(kw_only=True, slots=False) +class VisualEffectSettings: + m_CullingFlags: int + m_InitialEventName: str + m_PreWarmDeltaTime: float + m_PreWarmStepCount: int + m_RendererSettings: VFXRendererSettings + m_UpdateMode: int + m_InstancingCapacity: Optional[int] = None + m_InstancingDisabledReason: Optional[int] = None + m_InstancingMode: Optional[int] = None + +@define(kw_only=True, slots=False) +class WheelFrictionCurve: + asymptoteSlip: Optional[float] = None + asymptoteValue: Optional[float] = None + extremumSlip: Optional[float] = None + extremumValue: Optional[float] = None + m_AsymptoteSlip: Optional[float] = None + m_AsymptoteValue: Optional[float] = None + m_ExtremumSlip: Optional[float] = None + m_ExtremumValue: Optional[float] = None + m_Stiffness: Optional[float] = None + stiffnessFactor: Optional[float] = None + +@define(kw_only=True, slots=False) +class bitset: + bitCount: int + bitblocks: bytes + +@define(kw_only=True, slots=False) +class int2_storage: + x: int + y: int + +@define(kw_only=True, slots=False) +class int3_storage: + x: int + y: int + z: int + +@define(kw_only=True, slots=False) +class xform: + q: float4 + s: Union[float3, float4] + t: Union[float3, float4] diff --git a/UnityPy/classes/legacy_patch/AudioClip.py b/UnityPy/classes/legacy_patch/AudioClip.py new file mode 100644 index 00000000..37a0052f --- /dev/null +++ b/UnityPy/classes/legacy_patch/AudioClip.py @@ -0,0 +1,18 @@ +from ..generated import AudioClip +from ...enums import AUDIO_TYPE_EXTEMSION + + +def _AudioClip_extension(self: AudioClip) -> str: + return AUDIO_TYPE_EXTEMSION.get(self.m_CompressionFormat, ".audioclip") + + +def _AudioClip_samples(self: AudioClip) -> dict: + from ...export import AudioClipConverter + + return AudioClipConverter.extract_audioclip_samples(self) + + +AudioClip.extension = property(_AudioClip_extension) +AudioClip.samples = property(_AudioClip_samples) + +__all__ = ("AudioClip",) diff --git a/UnityPy/classes/legacy_patch/Mesh.py b/UnityPy/classes/legacy_patch/Mesh.py new file mode 100644 index 00000000..37512d37 --- /dev/null +++ b/UnityPy/classes/legacy_patch/Mesh.py @@ -0,0 +1,13 @@ +from ..generated import Mesh + + +def _Mesh_export(self: Mesh, format: str = "obj"): + from ...export.MeshExporter import export_mesh + + return export_mesh(self, format) + + +Mesh.export = _Mesh_export + + +__all__ = ("Mesh",) diff --git a/UnityPy/classes/legacy_patch/Renderer.py b/UnityPy/classes/legacy_patch/Renderer.py new file mode 100644 index 00000000..3f6e9320 --- /dev/null +++ b/UnityPy/classes/legacy_patch/Renderer.py @@ -0,0 +1,12 @@ +from ..generated import Renderer + + +def export(self, export_dir: str) -> None: + from ...export import MeshRendererExporter + + MeshRendererExporter.export_mesh_renderer(self, export_dir) + + +Renderer.export = export + +__all__ = ("Renderer",) diff --git a/UnityPy/classes/legacy_patch/Shader.py b/UnityPy/classes/legacy_patch/Shader.py new file mode 100644 index 00000000..23b051b7 --- /dev/null +++ b/UnityPy/classes/legacy_patch/Shader.py @@ -0,0 +1,12 @@ +from ..generated import Shader + + +def _Shader_export(self: Shader) -> str: + from ...export.ShaderConverter import export_shader + + return export_shader(self) + + +Shader.export = _Shader_export + +__all__ = ("Shader",) diff --git a/UnityPy/classes/legacy_patch/Sprite.py b/UnityPy/classes/legacy_patch/Sprite.py new file mode 100644 index 00000000..e12f8477 --- /dev/null +++ b/UnityPy/classes/legacy_patch/Sprite.py @@ -0,0 +1,12 @@ +from ..generated import Sprite + + +def _Sprite_image(self: Sprite): + from ...export import SpriteHelper + + return SpriteHelper.get_image_from_sprite(self) + + +Sprite.image = property(_Sprite_image) + +__all__ = ("Sprite",) diff --git a/UnityPy/classes/legacy_patch/Texture2D.py b/UnityPy/classes/legacy_patch/Texture2D.py new file mode 100644 index 00000000..66545416 --- /dev/null +++ b/UnityPy/classes/legacy_patch/Texture2D.py @@ -0,0 +1,84 @@ +from typing import Union, BinaryIO, Optional + +from PIL import Image + +from ..generated import Texture2D + + +def _Texture2d_get_image(self: Texture2D): + from ...export import Texture2DConverter + + return Texture2DConverter.get_image_from_texture2d(self) + + +def _Texture2d_set_image( + self: Texture2D, + img: Union["Image.Image", str, BinaryIO], + target_format: Optional[int] = None, + mipmap_count: int = 1, +): + from ...export import Texture2DConverter + + if not target_format: + target_format = self.m_TextureFormat + + if not isinstance(img, Image.Image): + img = Image.open(img) + + img_data, tex_format = Texture2DConverter.image_to_texture2d(img, target_format) + self.m_Width = img.width + self.m_Height = img.height + + if mipmap_count > 1: + width = self.m_Width + height = self.m_Height + re_img = img + for i in range(mipmap_count - 1): + width //= 2 + height //= 2 + if width < 4 or height < 4: + mipmap_count = i + 1 + break + re_img = re_img.resize((width, height), Image.BICUBIC) + img_data += Texture2DConverter.image_to_texture2d(re_img, target_format)[0] + + # disable mipmaps as we don't store them ourselves by default + if self.m_MipMap is not None: + self.m_MipMap = mipmap_count > 1 + if self.m_MipCount is not None: + self.m_MipCount = mipmap_count + + self.image_data = img_data + # width * height * channel count + self.m_CompleteImageSize = len( + img_data + ) # img.width * img.height * len(img.getbands()) + self.m_TextureFormat = tex_format + + if self.m_StreamData is not None: + self.m_StreamData.m_Path = "" + self.m_StreamData.offset = 0 + self.m_StreamData.size = 0 + + +def _Texture2D_get_image_data(self: Texture2D): + if self.image_data: + return self.image_data + if self.m_StreamData: + from ...helpers.ResourceReader import get_resource_data + + return get_resource_data( + self.m_StreamData.path, + self.object_reader.assets_file, + self.m_StreamData.offset, + self.m_StreamData.size, + ) + raise ValueError("No image data found") + + +Texture2D.image = property(_Texture2d_get_image, _Texture2d_set_image) +Texture2D.set_image = _Texture2d_set_image +Texture2D.get_image_data = _Texture2D_get_image_data + + +__all__ = ("Texture2D",) diff --git a/UnityPy/classes/legacy_patch/__init__.py b/UnityPy/classes/legacy_patch/__init__.py new file mode 100644 index 00000000..3c958cc5 --- /dev/null +++ b/UnityPy/classes/legacy_patch/__init__.py @@ -0,0 +1,6 @@ +from .AudioClip import AudioClip +from .Mesh import Mesh +from .Renderer import Renderer +from .Shader import Shader +from .Texture2D import Texture2D +from .Sprite import Sprite diff --git a/UnityPy/classes/math.py b/UnityPy/classes/math.py new file mode 100644 index 00000000..0db9f7be --- /dev/null +++ b/UnityPy/classes/math.py @@ -0,0 +1,117 @@ +""" +Definitions for math related classes. +As most calculations involving them are done in numpy, +we define them here as subtypes of np.ndarray, so that casting won't be necessary. +""" + +from attrs import define +from typing import Self, TypeAlias + + +@define(slots=True) +class Vector2f: + x: float = 0 + y: float = 0 + + def __repr__(self) -> str: + return f"Vector2f({self.x}, {self.y})" + + +@define(slots=True) +class Vector3f: + x: float = 0 + y: float = 0 + z: float = 0 + + def __repr__(self) -> str: + return f"Vector3f({self.x}, {self.y}, {self.z})" + + +@define(slots=True) +class Vector4f: + x: float = 0 + y: float = 0 + z: float = 0 + w: float = 0 + + def __repr__(self) -> str: + return f"Vector4f({self.x}, {self.y}, {self.z}, {self.w})" + + +float3: TypeAlias = Vector3f +float4: TypeAlias = Vector4f + + +class Quaternionf(Vector4f): + # TODO: Implement quaternion operations + def __repr__(self) -> str: + return f"Quaternion({self.x}, {self.y}, {self.z}, {self.w})" + + +@define(slots=True) +class Matrix3x4f: + e00: float + e01: float + e02: float + e03: float + e10: float + e11: float + e12: float + e13: float + e20: float + e21: float + e22: float + e23: float + + +@define(slots=True) +class Matrix4x4f: + e00: float + e01: float + e02: float + e03: float + e10: float + e11: float + e12: float + e13: float + e20: float + e21: float + e22: float + e23: float + e30: float + e31: float + e32: float + e33: float + + +@define(slots=True) +class ColorRGBA: + r: float = 0 + g: float = 0 + b: float = 0 + a: float = 1 + + def __new__( + cls, r: float = 0, g: float = 0, b: float = 0, a: float = 1, rgba: int = -1 + ) -> Self: + obj = super().__new__(cls) + if rgba != -1: + r = ((rgba >> 24) & 0xFF) / 255 + g = ((rgba >> 16) & 0xFF) / 255 + b = ((rgba >> 8) & 0xFF) / 255 + a = (rgba & 0xFF) / 255 + obj.__init__(r, g, b, a) + return obj + + @property + def rgba(self) -> int: + return ( + self.r * 255 << 24 | self.g * 255 << 16 | self.b * 255 << 8 | self.a * 255 + ) + + @rgba.setter + def rgba(self, value: int): + self.r = ((value >> 24) & 0xFF) / 255 + self.g = ((value >> 16) & 0xFF) / 255 + self.b = ((value >> 8) & 0xFF) / 255 + self.a = (value & 0xFF) / 255 diff --git a/UnityPy/enums/MeshTopology.py b/UnityPy/enums/MeshTopology.py new file mode 100644 index 00000000..0baaedd8 --- /dev/null +++ b/UnityPy/enums/MeshTopology.py @@ -0,0 +1,10 @@ +from enum import IntEnum + + +class MeshTopology(IntEnum): + Triangles = 0 + TriangleStrip = 1 # deprecated + Quads = 2 + Lines = 3 + LineStrip = 4 + Points = 5 diff --git a/UnityPy/enums/VertexFormat.py b/UnityPy/enums/VertexFormat.py new file mode 100644 index 00000000..88e1295c --- /dev/null +++ b/UnityPy/enums/VertexFormat.py @@ -0,0 +1,80 @@ +from enum import IntEnum + + +class VertexChannelFormat(IntEnum): + kChannelFormatFloat = 0 + kChannelFormatFloat16 = 1 + kChannelFormatColor = 2 + kChannelFormatByte = 3 + kChannelFormatUInt32 = 4 + + +class VertexFormat2017(IntEnum): + kVertexFormatFloat = 0 + kVertexFormatFloat16 = 1 + kVertexFormatColor = 2 + kVertexFormatUNorm8 = 3 + kVertexFormatSNorm8 = 4 + kVertexFormatUNorm16 = 5 + kVertexFormatSNorm16 = 6 + kVertexFormatUInt8 = 7 + kVertexFormatSInt8 = 8 + kVertexFormatUInt16 = 9 + kVertexFormatSInt16 = 10 + kVertexFormatUInt32 = 11 + kVertexFormatSInt32 = 12 + + +class VertexFormat(IntEnum): + kVertexFormatFloat = 0 + kVertexFormatFloat16 = 1 + kVertexFormatUNorm8 = 2 + kVertexFormatSNorm8 = 3 + kVertexFormatUNorm16 = 4 + kVertexFormatSNorm16 = 5 + kVertexFormatUInt8 = 6 + kVertexFormatSInt8 = 7 + kVertexFormatUInt16 = 8 + kVertexFormatSInt16 = 9 + kVertexFormatUInt32 = 10 + kVertexFormatSInt32 = 11 + + +VERTEX_CHANNEL_FORMAT_STRUCT_TYPE_MAP = { + VertexChannelFormat.kChannelFormatFloat: "f", + VertexChannelFormat.kChannelFormatFloat16: "e", + VertexChannelFormat.kChannelFormatColor: "B", + VertexChannelFormat.kChannelFormatByte: "B", + VertexChannelFormat.kChannelFormatUInt32: "I", +} + +VERTEX_FORMAT_2017_STRUCT_TYPE_MAP = { + VertexFormat2017.kVertexFormatFloat: "f", + VertexFormat2017.kVertexFormatFloat16: "h", + VertexFormat2017.kVertexFormatColor: "B", + VertexFormat2017.kVertexFormatUNorm8: "B", + VertexFormat2017.kVertexFormatSNorm8: "b", + VertexFormat2017.kVertexFormatUNorm16: "H", + VertexFormat2017.kVertexFormatSNorm16: "h", + VertexFormat2017.kVertexFormatUInt8: "B", + VertexFormat2017.kVertexFormatSInt8: "b", + VertexFormat2017.kVertexFormatUInt16: "H", + VertexFormat2017.kVertexFormatSInt16: "h", + VertexFormat2017.kVertexFormatUInt32: "I", + VertexFormat2017.kVertexFormatSInt32: "i", +} + +VERTEX_FORMAT_STRUCT_TYPE_MAP = { + VertexFormat.kVertexFormatFloat: "f", + VertexFormat.kVertexFormatFloat16: "h", + VertexFormat.kVertexFormatUNorm8: "B", + VertexFormat.kVertexFormatSNorm8: "b", + VertexFormat.kVertexFormatUNorm16: "H", + VertexFormat.kVertexFormatSNorm16: "h", + VertexFormat.kVertexFormatUInt8: "B", + VertexFormat.kVertexFormatSInt8: "b", + VertexFormat.kVertexFormatUInt16: "H", + VertexFormat.kVertexFormatSInt16: "h", + VertexFormat.kVertexFormatUInt32: "I", + VertexFormat.kVertexFormatSInt32: "i", +} diff --git a/UnityPy/export/AudioClipConverter.py b/UnityPy/export/AudioClipConverter.py index 56a50ca4..fddceeda 100644 --- a/UnityPy/export/AudioClipConverter.py +++ b/UnityPy/export/AudioClipConverter.py @@ -1,7 +1,12 @@ import ctypes import os import platform +from typing import TYPE_CHECKING from UnityPy.streams import EndianBinaryWriter +from ..helpers.ResourceReader import get_resource_data + +if TYPE_CHECKING: + from ..classes import AudioClip # pyfmodex loads the dll/so/dylib on import # so we have to adjust the environment vars @@ -68,28 +73,35 @@ def import_pyfmodex(): import pyfmodex -def extract_audioclip_samples(audio) -> dict: +def extract_audioclip_samples(audio: "AudioClip") -> dict: """extracts all the samples from an AudioClip :param audio: AudioClip :type audio: AudioClip :return: {filename : sample(bytes)} :rtype: dict """ - if not audio.m_AudioData: - # eg. StreamedResource not available - return {} + if audio.m_AudioData: + audio_data = audio.m_AudioData + else: + resource = audio.m_Resource + audio_data = get_resource_data( + resource.m_Source, + audio.object_reader.assets_file, + resource.m_Offset, + resource.m_Size, + ) - magic = memoryview(audio.m_AudioData)[:8] + magic = memoryview(audio_data)[:8] if magic[:4] == b"OggS": - return {f"{audio.m_Name}.ogg": audio.m_AudioData} + return {f"{audio.m_Name}.ogg": audio_data} elif magic[:4] == b"RIFF": - return {f"{audio.m_Name}.wav": audio.m_AudioData} + return {f"{audio.m_Name}.wav": audio_data} elif magic[4:8] == b"ftyp": - return {f"{audio.m_Name}.m4a": audio.m_AudioData} - return dump_samples(audio) + return {f"{audio.m_Name}.m4a": audio_data} + return dump_samples(audio, audio_data) -def dump_samples(clip): +def dump_samples(clip: "AudioClip", audio_data: bytes) -> dict: if pyfmodex is None: import_pyfmodex() if not pyfmodex: @@ -99,10 +111,10 @@ def dump_samples(clip): system.init(clip.m_Channels, pyfmodex.flags.INIT_FLAGS.NORMAL, None) sound = system.create_sound( - bytes(clip.m_AudioData), + bytes(audio_data), pyfmodex.flags.MODE.OPENMEMORY, exinfo=pyfmodex.structure_declarations.CREATESOUNDEXINFO( - length=clip.m_Size, + length=len(audio_data), numchannels=clip.m_Channels, defaultfrequency=clip.m_Frequency, ), @@ -112,9 +124,9 @@ def dump_samples(clip): samples = {} for i in range(sound.num_subsounds): if i > 0: - filename = "%s-%i.wav" % (clip.name, i) + filename = "%s-%i.wav" % (clip.m_Name, i) else: - filename = "%s.wav" % clip.name + filename = "%s.wav" % clip.m_Name subsound = sound.get_subsound(i) samples[filename] = subsound_to_wav(subsound) subsound.release() diff --git a/UnityPy/export/MeshExporter.py b/UnityPy/export/MeshExporter.py index d55814af..8c11e475 100644 --- a/UnityPy/export/MeshExporter.py +++ b/UnityPy/export/MeshExporter.py @@ -1,85 +1,64 @@ -from UnityPy.classes import Mesh +from typing import TYPE_CHECKING +from ..helpers.MeshHelper import MeshHandler -def export_mesh(m_Mesh: Mesh, format="obj") -> str: +if TYPE_CHECKING: + from ..classes.generated import Mesh + + +def export_mesh(m_Mesh: "Mesh", format="obj") -> str: if format == "obj": return export_mesh_obj(m_Mesh) raise NotImplementedError(f"Export format {format} not implemented") -def export_mesh_obj(m_Mesh, material_names: list = None): +def export_mesh_obj(mesh: "Mesh", material_names: list = None): + handler = MeshHandler(mesh) + handler.process() + + m_Mesh = handler if m_Mesh.m_VertexCount <= 0: return False - sb = [f"g {m_Mesh.name}\r\n"] + sb = [f"g {mesh.m_Name}\n"] if material_names: - sb.append(f"mtllib {m_Mesh.name}.mtl\r\n") + sb.append(f"mtllib {mesh.m_Name}.mtl\n") # region Vertices if not m_Mesh.m_Vertices: return False - c = 3 - if len(m_Mesh.m_Vertices) == m_Mesh.m_VertexCount * 4: - c = 4 - - for v in range(int(m_Mesh.m_VertexCount)): - sb.append( - "v {0:.9G} {1:.9G} {2:.9G}\r\n".format( - -m_Mesh.m_Vertices[v * c], - m_Mesh.m_Vertices[v * c + 1], - m_Mesh.m_Vertices[v * c + 2], - ).replace("nan", "0") + sb.extend( + "v {0:.9G} {1:.9G} {2:.9G}\n".format(-pos[0], pos[1], pos[2]).replace( + "nan", "0" ) + for pos in m_Mesh.m_Vertices + ) # endregion # region UV if m_Mesh.m_UV0: - if len(m_Mesh.m_UV0) == m_Mesh.m_VertexCount * 2: - c = 2 - elif len(m_Mesh.m_UV0) == m_Mesh.m_VertexCount * 3: - c = 3 - - for v in range(int(m_Mesh.m_VertexCount)): - sb.append( - "vt {0:.9G} {1:.9G}\r\n".format( - m_Mesh.m_UV0[v * c], m_Mesh.m_UV0[v * c + 1] - ).replace("nan", "0") - ) + sb.extend( + "vt {0:.9G} {1:.9G}\n".format(uv[0], uv[1]).replace("nan", "0") + for uv in m_Mesh.m_UV0 + ) # endregion # region Normals if m_Mesh.m_Normals: - if len(m_Mesh.m_Normals) == m_Mesh.m_VertexCount * 3: - c = 3 - elif len(m_Mesh.m_Normals) == m_Mesh.m_VertexCount * 4: - c = 4 - - for v in range(int(m_Mesh.m_VertexCount)): - sb.append( - "vn {0:.9G} {1:.9G} {2:.9G}\r\n".format( - -m_Mesh.m_Normals[v * c], - m_Mesh.m_Normals[v * c + 1], - m_Mesh.m_Normals[v * c + 2], - ).replace("nan", "0") - ) + sb.extend( + "vn {0:.9G} {1:.9G} {2:.9G}\n".format(-n[0], n[1], n[2]).replace("nan", "0") + for n in m_Mesh.m_Normals + ) # endregion # region Face - sum = 0 - for i in range(len(m_Mesh.m_SubMeshes)): - sb.append(f"g {m_Mesh.name}_{i}\r\n") + for i, triangles in enumerate(m_Mesh.get_triangles()): + sb.append(f"g {mesh.m_Name}_{i}\n") if material_names and i < len(material_names) and material_names[i]: - sb.append(f"usemtl {material_names[i]}\r\n") - indexCount = m_Mesh.m_SubMeshes[i].indexCount - end = sum + indexCount // 3 - for f in range(sum, end): - sb.append( - "f {0}/{0}/{0} {1}/{1}/{1} {2}/{2}/{2}\r\n".format( - m_Mesh.m_Indices[f * 3 + 2] + 1, - m_Mesh.m_Indices[f * 3 + 1] + 1, - m_Mesh.m_Indices[f * 3] + 1, - ) - ) - sum = end + sb.append(f"usemtl {material_names[i]}\n") + sb.extend( + "f {0}/{0}/{0} {1}/{1}/{1} {2}/{2}/{2}\n".format(c + 1, b + 1, a + 1) + for a, b, c in triangles + ) # endregion return "".join(sb) diff --git a/UnityPy/export/MeshRendererExporter.py b/UnityPy/export/MeshRendererExporter.py index 604c30c5..aff0875e 100644 --- a/UnityPy/export/MeshRendererExporter.py +++ b/UnityPy/export/MeshRendererExporter.py @@ -42,7 +42,7 @@ def export_mesh_renderer(obj: Renderer, export_dir: str) -> None: material_names.append(None) continue materials.append(export_material(mat)) - material_names.append(mat.name) + material_names.append(mat.m_Name) # save material textures for key, texEnv in mat.m_SavedProperties.m_TexEnvs.items(): if not texEnv.m_Texture: @@ -85,14 +85,14 @@ def clt(color): # color to tuple diffuse = clt(colors.get("_Color", (0.8, 0.8, 0.8, 1))) ambient = clt(colors.get("_SColor", (0.2, 0.2, 0.2, 1))) - emissive = clt(colors.get("_EmissionColor", (0, 0, 0, 1))) + # emissive = clt(colors.get("_EmissionColor", (0, 0, 0, 1))) specular = clt(colors.get("_SpecularColor", (0.2, 0.2, 0.2, 1))) - reflection = clt(colors.get("_ReflectColor", (0, 0, 0, 1))) + # reflection = clt(colors.get("_ReflectColor", (0, 0, 0, 1))) shininess = floats.get("_Shininess", 20.0) transparency = floats.get("_Transparency", 0.0) sb = [] - sb.append(f"newmtl {mat.name}") + sb.append(f"newmtl {mat.m_Name}") # Ka r g b # defines the ambient color of the material to be (r,g,b). The default is (0.2,0.2,0.2); sb.append(f"Ka {ambient[0]:.4f} {ambient[1]:.4f} {ambient[2]:.4f}") diff --git a/UnityPy/export/Texture2DConverter.py b/UnityPy/export/Texture2DConverter.py index fc54f3f2..06a25305 100644 --- a/UnityPy/export/Texture2DConverter.py +++ b/UnityPy/export/Texture2DConverter.py @@ -1,23 +1,30 @@ import texture2ddecoder -import etcpak from PIL import Image from copy import copy from io import BytesIO import struct from ..enums import TextureFormat, BuildTarget from ..helpers import TextureSwizzler +from typing import Union TF = TextureFormat -def image_to_texture2d(img: Image.Image, target_texture_format: TF, flip: bool = True): +def image_to_texture2d( + img: Image.Image, target_texture_format: Union[TF, int], flip: bool = True +): + if isinstance(target_texture_format, int): + target_texture_format = TextureFormat(target_texture_format) + + import etcpak + if flip: img = img.transpose(Image.FLIP_TOP_BOTTOM) # DXT if target_texture_format in [TF.DXT1, TF.DXT1Crunched]: raw_img = img.convert("RGBA").tobytes() - enc_img = etcpak.compress_to_dxt1(raw_img, img.width, img.height) + enc_img = etcpak.compress_bc1(raw_img, img.width, img.height) tex_format = TF.DXT1 elif target_texture_format in [TF.DXT5, TF.DXT5Crunched]: raw_img = img.convert("RGBA").tobytes() @@ -103,12 +110,12 @@ def get_image_from_texture2d( :rtype: Image """ return parse_image_data( - texture_2d.image_data, + texture_2d.get_image_data(), texture_2d.m_Width, texture_2d.m_Height, texture_2d.m_TextureFormat, - texture_2d.version, - texture_2d.platform, + texture_2d.object_reader.version, + texture_2d.object_reader.platform, getattr(texture_2d, "m_PlatformBlob", None), flip, ) @@ -138,6 +145,8 @@ def parse_image_data( if texture_format in XBOX_SWAP_FORMATS: image_data = swap_bytes_for_xbox(image_data, platform) + if not isinstance(texture_format, TextureFormat): + texture_format = TextureFormat(texture_format) if "Crunched" in texture_format.name: version = version if ( diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index 565e6d05..ed058f22 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -1,29 +1,32 @@ +from typing import TYPE_CHECKING, Generic, TypeVar, Union from ..enums import ClassIDType -from . import SerializedFile -from .. import classes -from ..classes.Object import NodeHelper from ..streams import EndianBinaryReader, EndianBinaryWriter from ..helpers import TypeTreeHelper from ..helpers.Tpk import get_typetree_nodes from ..exceptions import TypeTreeError +if TYPE_CHECKING: + from ..files import SerializedFile -class ObjectReader: +T = TypeVar("T") + + +class ObjectReader(Generic[T]): byte_start: int byte_size: int type_id: int class_id: int type: ClassIDType path_id: int - # serialized_type: SerializedType + assets_file: "SerializedFile" _read_until: int # saves where the parser stopped # in case that not all data is read # and the obj.data is changed, the unknown data can be added again - def __init__(self, assets_file, reader: EndianBinaryReader): + def __init__(self, assets_file: "SerializedFile", reader: EndianBinaryReader): self.assets_file = assets_file self.reader = reader self.data = b"" @@ -135,7 +138,8 @@ def write( def set_raw_data(self, data): self.data = data - self.assets_file.mark_changed() + if self.assets_file: + self.assets_file.mark_changed() @property def container(self): @@ -152,22 +156,8 @@ def Position(self, pos): def reset(self): self.reader.Position = self.byte_start - def read(self, return_typetree_on_error: bool = True): - cls = getattr(classes, self.type.name, None) - - obj = None - if cls: - try: - obj = cls(self) - except Exception as e: - if return_typetree_on_error: - print(f"Error during the parsing of object {self.path_id}") - print(e) - print("Returning the typetree") - else: - raise e - if not obj: - obj = self.read_typetree(wrap=True) + def read(self) -> T: + obj = self.read_typetree(wrap=True) self._read_until = self.reader.Position return obj @@ -209,11 +199,15 @@ def get_typetree_nodes(self, nodes: list = None) -> list: raise TypeTreeError("There are no TypeTree nodes for this object.") return nodes - def read_typetree(self, nodes: list = None, wrap: bool = False) -> dict: + def read_typetree(self, nodes: list = None, wrap: bool = False) -> Union[dict, T]: self.reset() nodes = self.get_typetree_nodes(nodes) - res = TypeTreeHelper.read_typetree(nodes, self) - return NodeHelper(res, self.assets_file) if wrap else res + ret = TypeTreeHelper.read_typetree( + nodes, self, as_dict=not wrap, assetsfile=self.assets_file + ) + if wrap: + ret.set_object_reader(self) + return ret def save_typetree( self, tree: dict, nodes: list = None, writer: EndianBinaryWriter = None @@ -221,7 +215,7 @@ def save_typetree( nodes = self.get_typetree_nodes(nodes) if not writer: writer = EndianBinaryWriter(endian=self.reader.endian) - writer = TypeTreeHelper.write_typetree(tree, nodes, writer) + TypeTreeHelper.write_typetree(tree, nodes, writer) data = writer.bytes self.set_raw_data(data) return data @@ -232,8 +226,3 @@ def get_raw_data(self) -> bytes: ret = self.reader.read_bytes(self.byte_size) self.Position = pos return ret - - def set_raw_data(self, data): - self.data = data - if self.assets_file: - self.assets_file.mark_changed() diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 050c22d3..87ee69d5 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -123,9 +123,9 @@ def __init__(self, reader, serialized_file, is_ref_type: bool): if serialized_file._enable_type_tree: if version >= 12 or version == 10: - self.nodes, self.string_data = serialized_file.read_type_tree_blob() + self.nodes = TypeTreeNode.parse_blob(reader, version) else: - self.nodes = serialized_file.read_type_tree() + self.nodes = TypeTreeNode.parse(reader, version) if version >= 21: if is_ref_type: @@ -156,9 +156,9 @@ def write(self, serialized_file, writer, is_ref_type): if serialized_file._enable_type_tree: if version >= 12 or version == 10: - serialized_file.save_type_tree5(self.nodes, writer, self.string_data) + self.nodes.dump_blob(writer, version) else: - serialized_file.save_type_tree(self.nodes, writer) + serialized_file.dump(writer, version) if version >= 21: if is_ref_type: @@ -166,7 +166,7 @@ def write(self, serialized_file, writer, is_ref_type): writer.write_string_to_null(self.m_NameSpace) writer.write_string_to_null(self.m_AssemblyName) else: - writer.write_int_array(self.type_dependencies) + writer.write_int_array(self.type_dependencies, True) class SerializedFile(File.File): @@ -330,80 +330,6 @@ def set_version(self, string_version): version_split = re.split(r"\D", string_version) self.version = tuple(int(x) for x in version_split[:4]) - def read_type_tree(self): - type_tree = [] - level_stack = [[0, 1]] - while level_stack: - level, count = level_stack[-1] - if count == 1: - level_stack.pop() - else: - level_stack[-1][1] -= 1 - - type_tree_node = TypeTreeNode( - m_Level=level, - m_Type=self.reader.read_string_to_null(), - m_Name=self.reader.read_string_to_null(), - m_ByteSize=self.reader.read_int(), - ) - - type_tree.append(type_tree_node) - if self.header.version == 2: - type_tree_node.m_VariableCount = self.reader.read_int() - - if self.header.version != 3: - type_tree_node.m_Index = self.reader.read_int() - - type_tree_node.m_TypeFlags = self.reader.read_int() - type_tree_node.m_Version = self.reader.read_int() - if self.header.version != 3: - type_tree_node.m_MetaFlag = self.reader.read_int() - - children_count = self.reader.read_int() - if children_count: - level_stack.append([level + 1, children_count]) - return type_tree - - def read_type_tree_blob(self): - reader = self.reader - number_of_nodes = self.reader.read_int() - string_buffer_size = self.reader.read_int() - - type = f"{reader.endian}hBBIIiii" - keys = [ - "m_Version", - "m_Level", - "m_TypeFlags", - "m_TypeStrOffset", - "m_NameStrOffset", - "m_ByteSize", - "m_Index", - "m_MetaFlag", - ] - if self.header.version >= 19: - type += "Q" - keys.append("m_RefTypeHash") - - node_struct = Struct(type) - struct_data = reader.read(node_struct.size * number_of_nodes) - string_buffer_reader = EndianBinaryReader( - reader.read(string_buffer_size), reader.endian - ) - - if not config.SERIALIZED_FILE_PARSE_TYPETREE: - return [], string_buffer_reader.bytes - - type_tree = [ - TypeTreeNode( - **dict(zip(keys, raw_node)), - m_Type=read_string(string_buffer_reader, raw_node[3]), - m_Name=read_string(string_buffer_reader, raw_node[4]), - ) - for i, raw_node in enumerate(node_struct.iter_unpack(struct_data)) - ] - - return type_tree, string_buffer_reader.bytes - def get_writeable_cab(self, name: str = "CAB-UnityPy_Mod.resS"): """ Creates a new cab file in the bundle that contains the given data. @@ -653,7 +579,7 @@ def __init__(self, container) -> None: self.container = container # support for getitem self.container_dict = {key: value.asset for key, value in container} - self.path_dict = {value.asset.path_id: key for key, value in container} + self.path_dict = {value.asset.m_PathID: key for key, value in container} def items(self): return ((key, value.asset) for key, value in self.container) diff --git a/UnityPy/helpers/MeshHelper.py b/UnityPy/helpers/MeshHelper.py new file mode 100644 index 00000000..d0edf788 --- /dev/null +++ b/UnityPy/helpers/MeshHelper.py @@ -0,0 +1,719 @@ +from __future__ import annotations +import math +import struct +from typing import Optional, List, Tuple, Union, TypeVar + +from ..enums.MeshTopology import MeshTopology +from ..classes.generated import ( + ChannelInfo, + StreamInfo, + Mesh, + SpriteRenderData, + Vector2f, + Vector3f, + Vector4f, +) +from .PackedBitVector import unpack_floats, unpack_ints + +from ..enums.VertexFormat import ( + VertexChannelFormat, + VertexFormat2017, + VertexFormat, + VERTEX_CHANNEL_FORMAT_STRUCT_TYPE_MAP, + VERTEX_FORMAT_2017_STRUCT_TYPE_MAP, + VERTEX_FORMAT_STRUCT_TYPE_MAP, +) + +try: + from UnityPy import UnityPyBoost +except ImportError: + UnityPyBoost = None + +Tuple2f = Tuple[float, float] +Tuple3f = Tuple[float, float, float] +Tuple4f = Tuple[float, float, float, float] + +T = TypeVar("T") + + +def flat_list_to_tuples(data: List[T], item_size: int) -> List[tuple[T]]: + return [tuple(data[i : i + item_size]) for i in range(0, len(data), item_size)] + + +def vector_list_to_tuples(data: List[Vector2f, Vector3f, Vector4f]) -> List[tuple]: + if isinstance(data[0], Vector2f): + return [(v.x, v.y) for v in data] + elif isinstance(data[0], Vector3f): + return [(v.x, v.y, v.z) for v in data] + elif isinstance(data[0], Vector4f): + return [(v.x, v.y, v.z, v.w) for v in data] + else: + raise ValueError("Unknown vector type") + + +def zeros(shape: Tuple[int, ...]) -> list: + if len(shape) == 1: + return [0] * shape[0] + elif len(shape) == 2: + m, n = shape + return [[0] * n for _ in range(m)] + else: + raise ValueError("Invalid shape") + + +def normalize(*vector: float) -> Tuple[float, ...]: + length = math.sqrt(sum(v**2 for v in vector)) + if length > 0.00001: + inv_norm = 1.0 / length + return tuple(v * inv_norm for v in vector) + return (0,) * len(vector) + + +class MeshHandler: + src: Union[Mesh, SpriteRenderData] + endianess: str = "<" + version: Tuple[int, int, int, int] + m_VertexCount: int = 0 + m_Vertices: Optional[List[Tuple3f]] = None + m_Normals: Optional[List[Tuple3f]] = None + m_Colors: Optional[List[Tuple4f]] = None + m_UV0: Optional[List[Tuple2f]] = None + m_UV1: Optional[List[Tuple2f]] = None + m_UV2: Optional[List[Tuple2f]] = None + m_UV3: Optional[List[Tuple2f]] = None + m_UV4: Optional[List[Tuple2f]] = None + m_UV5: Optional[List[Tuple2f]] = None + m_UV6: Optional[List[Tuple2f]] = None + m_UV7: Optional[List[Tuple2f]] = None + m_Tangents: Optional[List[float]] = None + m_BoneIndices: Optional[List[int]] = None + m_BoneWeights: Optional[List[float]] = None + m_IndexBuffer: Optional[List[int]] = None + m_Use16BitIndices: bool = True + + def __init__( + self, + src: Union[Mesh, SpriteRenderData], + version: Optional[Tuple[int, int, int, int]] = None, + endianess: str = "<", + ) -> None: + self.src = src + self.endianess = endianess + if version is not None: + self.version = version + elif getattr(src, "object_reader", None): + self.version = src.object_reader.version + else: + raise ValueError("No version provided and no object reader found") + + def process(self): + mesh = self.src + vertex_data = mesh.m_VertexData + assert vertex_data is not None + + m_Channels: list[ChannelInfo] + m_Streams: list[StreamInfo] + + if self.version[0] < 4: + assert ( + vertex_data.m_Streams_0_ is not None + and vertex_data.m_Streams_1_ is not None + and vertex_data.m_Streams_2_ is not None + and vertex_data.m_Streams_3_ is not None + ) + m_Streams = [ + vertex_data.m_Streams_0_, + vertex_data.m_Streams_1_, + vertex_data.m_Streams_2_, + vertex_data.m_Streams_3_, + ] + assert all(stream is not None for stream in m_Streams) + m_Channels = self.get_channels(m_Streams) + elif self.version[0] == 4: + assert ( + vertex_data.m_Streams is not None and vertex_data.m_Channels is not None + ) + m_Streams = vertex_data.m_Streams + m_Channels = vertex_data.m_Channels + else: + assert vertex_data.m_Channels is not None + m_Channels = vertex_data.m_Channels + m_Streams = self.get_streams(m_Channels, vertex_data.m_VertexCount) + + stream_data = getattr(mesh, "m_StreamData", None) + if stream_data and stream_data.path: + vertex_data = self.src.m_VertexData + if vertex_data and vertex_data.m_VertexCount > 0: + raise NotImplementedError("External data is not yet supported") + # resourceReader = new ResourceReader(m_StreamData.path, assetsFile, m_StreamData.offset, m_StreamData.size) + # m_VertexData.m_DataSize = resourceReader.GetData() + + # try to copy data directly from mesh + if isinstance(mesh, Mesh): + if self.src.m_Use16BitIndices is False: + self.m_Use16BitIndices = False + self.copy_from_mesh() + elif isinstance(mesh, SpriteRenderData): + self.copy_from_spriterenderdata() + else: + raise ValueError(f"Unknown mesh type {type(mesh)}") + + if self.m_IndexBuffer: + raw_indices = bytes(self.m_IndexBuffer) + if self.m_Use16BitIndices: + char = "H" + index_size = 2 + else: + char = "I" + index_size = 4 + + self.m_IndexBuffer = struct.unpack( + f"<{len(raw_indices) // index_size}{char}", raw_indices + ) + + if self.version >= (3, 5): + self.read_vertex_data(m_Channels, m_Streams) + + if isinstance(mesh, Mesh) and self.version >= (2, 6): + self.decompress_compressed_mesh() + + if self.m_VertexCount == 0 and self.m_Vertices: + self.m_VertexCount = len(self.m_Vertices) + + def copy_from_mesh(self): + """Copy data from mesh to handler if it's not already set.""" + mesh = self.src + + if self.m_IndexBuffer is None and mesh.m_IndexBuffer: + self.m_IndexBuffer = mesh.m_IndexBuffer + + if self.m_Vertices is None and mesh.m_Vertices: + self.m_Vertices = vector_list_to_tuples(mesh.m_Vertices) + + if self.m_Normals is None and mesh.m_Normals: + self.m_Normals = vector_list_to_tuples(mesh.m_Normals) + + if self.m_Tangents is None and mesh.m_Tangents: + self.m_Tangents = vector_list_to_tuples(mesh.m_Tangents) + + if self.m_UV0 is None and mesh.m_UV: + self.m_UV0 = vector_list_to_tuples(mesh.m_UV) + + if self.m_UV1 is None and mesh.m_UV1: + self.m_UV1 = vector_list_to_tuples(mesh.m_UV1) + + if self.m_Colors is None and mesh.m_Colors: + self.m_Colors = vector_list_to_tuples(mesh.m_Colors) + + if self.m_BoneWeights is None and mesh.m_Skin: + # BoneInfluence == BoneWeight in terms of usage in UnityPy due to int simplification + self.m_BoneWeights = zeros((len(mesh.m_Skin), 4)) + self.m_BoneIndices = zeros((len(mesh.m_Skin), 4)) + for skin, indices, weights in zip( + mesh.m_Skin, self.m_BoneIndices, self.m_BoneWeights + ): + indices[:] = [ + skin.boneIndex_0_, + skin.boneIndex_1_, + skin.boneIndex_2_, + skin.boneIndex_3_, + ] + weights[:] = [ + skin.weight_0_, + skin.weight_1_, + skin.weight_2_, + skin.weight_3_, + ] + + def copy_from_spriterenderdata(self): + rd = self.src + + if self.m_IndexBuffer is None: + if rd.m_IndexBuffer: + self.m_IndexBuffer = rd.m_IndexBuffer + elif rd.indices: + self.m_IndexBuffer = rd.indices + + if self.m_Vertices is None and rd.vertices: + vertices = [rd.vertices] + self.m_Vertices = [(v.pos.x, v.pos.y, v.pos.z) for v in vertices] + + if vertices[0].uv is not None: + self.m_UV0 = [(v.uv.x, v.uv.y) for v in vertices] + + # if self.m_BindPose is None and rd.m_BindPose: + # self.m_BindPose = rd.m_BindPose + + def get_streams( + self, m_Channels: list[ChannelInfo], m_VertexCount: int + ) -> list[StreamInfo]: + streamCount = 1 + if m_Channels: + streamCount += max(x.stream for x in m_Channels) + + m_Streams: list[StreamInfo] = [] + offset = 0 + for s in range(streamCount): + chnMask = 0 + stride = 0 + for chn, m_Channel in enumerate(m_Channels): + if m_Channel.stream == s: + if m_Channel.dimension > 0: + chnMask |= 1 << chn + component_size = self.get_channel_component_size(m_Channel) + stride += m_Channel.dimension * component_size + + m_Streams.append( + StreamInfo( + channelMask=chnMask, + offset=offset, + stride=stride, + dividerOp=0, + frequency=0, + ) + ) + offset += m_VertexCount * stride + offset = (offset + (16 - 1)) & ~(16 - 1) + return m_Streams + + def get_channels(self, m_Streams: list[StreamInfo]) -> list[ChannelInfo]: + m_Channels = [ + ChannelInfo( + dimension=0, + format=0, + offset=0, + stream=0, + ) + for _ in range(6) + ] + for s, m_Stream in enumerate(m_Streams): + channelMask = bytearray(m_Stream.channelMask) # BitArray + offset = 0 + for i in range(6): + if channelMask[i]: + m_Channel = m_Channels[i] + m_Channel.stream = s + m_Channel.offset = offset + if i in [0, 1]: + # 0 - kShaderChannelVertex + # 1 - kShaderChannelNormal + m_Channel.format = 0 # kChannelFormatFloat + m_Channel.dimension = 3 + elif i == 2: # kShaderChannelColor + m_Channel.format = 2 # kChannelFormatColor + m_Channel.dimension = 4 + elif i in [3, 4]: + # 3 - kShaderChannelTexCoord0 + # 4 - kShaderChannelTexCoord1 + m_Channel.format = 0 # kChannelFormatFloat + m_Channel.dimension = 2 + elif i == 5: # kShaderChannelTangent + m_Channel.format = 0 # kChannelFormatFloat + m_Channel.dimension = 4 + + component_size = self.get_channel_component_size(m_Channel) + offset += m_Channel.dimension * component_size + + return m_Channels + + def read_vertex_data( + self, m_Channels: list[ChannelInfo], m_Streams: list[StreamInfo] + ) -> None: + m_VertexData = self.src.m_VertexData + if m_VertexData is None: + return + + self.m_VertexCount = m_VertexCount = m_VertexData.m_VertexCount + # m_VertexDataRaw = m_VertexData.m_DataSize + + for chn, m_Channel in enumerate(m_Channels): + if m_Channel.dimension == 0: + continue + + m_Stream = m_Streams[m_Channel.stream] + # m_StreamData = m_VertexDataRaw[ + # m_Stream.offset : m_Stream.offset + m_VertexCount * m_Stream.stride + # ] + + channelMask = bin(m_Stream.channelMask)[::-1] + if channelMask[chn] == "1": + if ( + self.version[0] < 2018 and chn == 2 and m_Channel.format == 2 + ): # kShaderChannelColor && kChannelFormatColor + # new instance to not modify the original + m_Channel = ChannelInfo( + dimension=4, + format=2, + offset=m_Channel.offset, + stream=m_Channel.stream, + ) + + component_dtype = self.get_channel_dtype(m_Channel) + component_byte_size = self.get_channel_component_size(m_Channel) + # channel_byte_size = m_Channel.dimension * component_byte_size + + swap = self.endianess == "<" and component_byte_size > 1 + + if UnityPyBoost: + componentBytes = UnityPyBoost.unpack_vertexdata( + m_VertexData.m_DataSize, + component_byte_size, + m_VertexCount, + m_Stream.offset, + m_Stream.stride, + m_Channel.offset, + m_Channel.dimension, + swap, + ) + else: + componentBytes = bytearray( + m_VertexCount * m_Channel.dimension * component_byte_size + ) + + vertexBaseOffset = m_Stream.offset + m_Channel.offset + for v in range(m_VertexCount): + vertexOffset = vertexBaseOffset + m_Stream.stride * v + for d in range(m_Channel.dimension): + componentOffset = vertexOffset + component_byte_size * d + vertexDataSrc = componentOffset + componentDataSrc = component_byte_size * ( + v * m_Channel.dimension + d + ) + buff = m_VertexData.m_DataSize[ + vertexDataSrc : vertexDataSrc + component_byte_size + ] + if swap: # swap bytes + buff = buff[::-1] + componentBytes[ + componentDataSrc : componentDataSrc + + component_byte_size + ] = buff + + count = len(componentBytes) // component_byte_size + component_data = struct.unpack( + f">{count}{component_dtype}", componentBytes + ) + component_data = flat_list_to_tuples( + component_data, m_Channel.dimension + ) + + self.assign_channel_vertex_data(chn, component_data) + + def assign_channel_vertex_data(self, channel: int, component_data: list): + if self.version[0] >= 2018: + match channel: + case 0: # kShaderChannelVertex + self.m_Vertices = component_data + case 1: # kShaderChannelNormal + self.m_Normals = component_data + case 2: # kShaderChannelTangent + self.m_Tangents = component_data + case 3: # kShaderChannelColor + self.m_Colors = component_data + case 4: # kShaderChannelTexCoord0 + self.m_UV0 = component_data + case 5: # kShaderChannelTexCoord1 + self.m_UV1 = component_data + case 6: # kShaderChannelTexCoord2 + self.m_UV2 = component_data + case 7: # kShaderChannelTexCoord3 + self.m_UV3 = component_data + case 8: # kShaderChannelTexCoord4 + self.m_UV4 = component_data + case 9: # kShaderChannelTexCoord5 + self.m_UV5 = component_data + case 10: # kShaderChannelTexCoord6 + self.m_UV6 = component_data + case 11: # kShaderChannelTexCoord7 + self.m_UV7 = component_data + # 2018.2 and up + case 12: # kShaderChannelBlendWeight + self.m_BoneWeights = component_data + case 13: # kShaderChannelBlendIndices + self.m_BoneIndices = component_data + case _: + raise ValueError(f"Unknown channel {channel}") + else: + match channel: + case 0: # kShaderChannelVertex + self.m_Vertices = component_data + case 1: # kShaderChannelNormal + self.m_Normals = component_data + case 2: # kShaderChannelColor + self.m_Colors = component_data + case 3: # kShaderChannelTexCoord0 + self.m_UV0 = component_data + case 4: # kShaderChannelTexCoord1 + self.m_UV1 = component_data + case 5: + if self.version[0] >= 5: # kShaderChannelTexCoord2 + self.m_UV2 = component_data + else: # kShaderChannelTangent + self.m_Tangents = component_data + case 6: # kShaderChannelTexCoord3 + self.m_UV3 = component_data + case 7: # kShaderChannelTangent + self.m_Tangents = component_data + case _: + raise ValueError(f"Unknown channel {channel}") + + def get_channel_dtype(self, m_Channel: ChannelInfo): + if self.version[0] < 2017: + format = VertexChannelFormat(m_Channel.format) + component_dtype = VERTEX_CHANNEL_FORMAT_STRUCT_TYPE_MAP[format] + elif self.version[0] < 2019: + format = VertexFormat2017(m_Channel.format) + component_dtype = VERTEX_FORMAT_2017_STRUCT_TYPE_MAP[format] + else: + format = VertexFormat(m_Channel.format) + component_dtype = VERTEX_FORMAT_STRUCT_TYPE_MAP[format] + + return component_dtype + + def get_channel_component_size(self, m_Channel: ChannelInfo): + dtype = self.get_channel_dtype(m_Channel) + return struct.Struct(dtype).size + + def decompress_compressed_mesh(self): + # TODO: m_Triangles???? + + # Vertex + version = self.version + m_CompressedMesh = self.src.m_CompressedMesh + + self.m_VertexCount = m_VertexCount = int( + m_CompressedMesh.m_Vertices.m_NumItems / 3 + ) + + if m_CompressedMesh.m_Vertices.m_NumItems > 0: + self.m_Vertices = unpack_floats(m_CompressedMesh.m_Vertices, shape=(3,)) + + # UV + if m_CompressedMesh.m_UV.m_NumItems > 0: + m_UVInfo = m_CompressedMesh.m_UVInfo + if m_UVInfo is not None and m_UVInfo != 0: + kInfoBitsPerUV = 4 + kUVDimensionMask = 3 + kUVChannelExists = 4 + kMaxTexCoordShaderChannels = 8 + + uvSrcOffset = 0 + + for uv_channel in range(kMaxTexCoordShaderChannels): + texCoordBits = m_UVInfo >> (uv_channel * kInfoBitsPerUV) + texCoordBits &= (1 << kInfoBitsPerUV) - 1 + if (texCoordBits & kUVChannelExists) != 0: + uvDim = 1 + int(texCoordBits & kUVDimensionMask) + m_UV = unpack_floats( + m_CompressedMesh.m_UV, + uvSrcOffset, + m_VertexCount * uvDim, + shape=(uvDim,), + ) + setattr(self, f"m_UV{uv_channel}", m_UV) + uvSrcOffset = uvDim * m_VertexCount + else: + self.m_UV0 = unpack_floats( + m_CompressedMesh.m_UV, 0, m_VertexCount * 2, shape=(2,) + ) + if m_CompressedMesh.m_UV.m_NumItems >= m_VertexCount * 4: + self.m_UV1 = unpack_floats( + m_CompressedMesh.m_UV, + m_VertexCount * 2, + m_VertexCount * 2, + shape=(2,), + ) + + # BindPose + if version[0] < 5: # 5.0 down + m_BindPoses = m_CompressedMesh.m_BindPoses + if m_BindPoses and m_BindPoses.m_NumItems > 0: + self.m_BindPose = unpack_floats( + m_BindPoses, + shape=( + 4, + 4, + ), + ) + + # Normal + if m_CompressedMesh.m_Normals.m_NumItems > 0: + normalData = unpack_floats(m_CompressedMesh.m_Normals, shape=(2,)) + signs = unpack_ints(m_CompressedMesh.m_NormalSigns) + + self.m_Normals = zeros((m_CompressedMesh.m_Normals.m_NumItems // 2, 3)) + for srcNrm, sign, dstNrm in zip(normalData, signs, self.m_Normals): + x, y = srcNrm + zsqr = 1 - x * x - y * y + if zsqr >= 0: + z = math.sqrt(zsqr) + dstNrm[:] = x, y, z + else: + z = 0 + dstNrm[:] = normalize(x, y, z) + if sign == 0: + dstNrm[2] *= -1 + + # Tangent + if m_CompressedMesh.m_Tangents.m_NumItems > 0: + tangentData = unpack_floats(m_CompressedMesh.m_Tangents, shape=(2,)) + signs = unpack_ints(m_CompressedMesh.m_TangentSigns) + self.m_Tangents = zeros((m_CompressedMesh.m_Tangents.m_NumItems // 2, 4)) + for srcTan, (sign_z, sign_w), dstTan in zip( + tangentData, signs, self.m_Tangents + ): + x, y = srcTan + zsqr = 1 - x * x - y * y + z = 0 + w = 0 + if zsqr >= 0: + z = math.sqrt(zsqr) + else: + x, y, z = normalize(x, y, z) + if sign_z == 0: + z = -z + w = 1.0 if sign_w > 0 else -1.0 + dstTan[:] = x, y, z, w + + # FloatColor + if version[0] >= 5: # 5.0 and up + m_FloatColors = m_CompressedMesh.m_FloatColors + if m_FloatColors and m_FloatColors.m_NumItems > 0: + self.m_Colors = unpack_floats(m_FloatColors, shape=(4,)) + # Skin + if m_CompressedMesh.m_Weights.m_NumItems > 0: + weightsData = unpack_ints(m_CompressedMesh.m_Weights) + weightsData = [weight / 31 for weight in weightsData] + boneIndicesData = unpack_ints(m_CompressedMesh.m_BoneIndices) + + vertexIndex = 0 + boneIndecesIndex = 0 + j = 0 + sum = 0 + + self.m_BoneWeights = zeros((m_CompressedMesh.m_Weights.m_NumItems // 4, 4)) + self.m_BoneIndices = zeros((m_CompressedMesh.m_Weights.m_NumItems // 4, 4)) + + for weight in weightsData: + # read bone index and weight + self.m_BoneWeights[vertexIndex][j] = weight + self.m_BoneIndices[vertexIndex][j] = boneIndicesData[boneIndecesIndex] + + boneIndecesIndex += 1 + j += 1 + sum += weight + + # the weights add up to one, continue with the next vertex. + if sum >= 1.0: + j = 4 + + vertexIndex += 1 + j = 0 + sum = 0 + # we read three weights, but they don't add up to one. calculate the fourth one, and read + # missing bone index. continue with next vertex. + elif j == 3: # + self.m_BoneWeights[vertexIndex][j] = 1 - sum + self.m_BoneIndices[vertexIndex][j] = boneIndicesData[ + boneIndecesIndex + ] + + boneIndecesIndex += 1 + vertexIndex += 1 + j = 0 + sum = 0 + + # IndexBuffer + if m_CompressedMesh.m_Triangles.m_NumItems > 0: # + self.m_IndexBuffer = unpack_ints(m_CompressedMesh.m_Triangles) + # Color + if m_CompressedMesh.m_Colors and m_CompressedMesh.m_Colors.m_NumItems > 0: + rgba_colors = unpack_ints(m_CompressedMesh.m_Colors) + self.m_Colors = [ + ( + ((rgba >> 24) & 0xFF) / 255, + ((rgba >> 16) & 0xFF) / 255, + ((rgba >> 8) & 0xFF) / 255, + (rgba & 0xFF) / 255, + ) + for rgba in rgba_colors + ] + + def get_triangles(self) -> List[List[Tuple[int, ...]]]: + assert self.m_IndexBuffer is not None + + submeshes: List[List[Tuple[int, ...]]] = [] + + for m_SubMesh in self.src.m_SubMeshes: + firstIndex = m_SubMesh.firstByte // 2 + if not self.m_Use16BitIndices: + firstIndex //= 2 + + indexCount = m_SubMesh.indexCount + topology = m_SubMesh.topology + + triangles: List[int] + + if topology == MeshTopology.Triangles: + triangles = self.m_IndexBuffer[firstIndex : firstIndex + indexCount] + elif ( + self.version[0] < 4 or topology == MeshTopology.TriangleStrip + ): # TriangleStrip + # todo: use as_strided, then fix winding, finally remove degenerates + triIndex = 0 + triangles = list((indexCount - 2) * 3) + + for i in range(indexCount - 2): + a, b, c = self.m_IndexBuffer[firstIndex + i : firstIndex + i + 3] + # skip degenerates + if a == b or a == c or b == c: + continue + + # do the winding flip-flop of strips + if i & 1: + triangles[triIndex] = b, a, c + else: + triangles[triIndex] = a, b, c + triIndex += 1 + + triangles = triangles[:triIndex] + + elif topology == MeshTopology.Quads: + # one quad is two triangles, so // 4 * 2 = // 2 + # TODO: use as_strided + triangles = list(indexCount // 2, 3) + triIndex = 0 + for a, b, c, d in self.m_IndexBuffer[ + firstIndex : firstIndex + indexCount : 4 + ]: + triangles[triIndex] = a, b, c + triangles[triIndex + 1] = a, c, d + triIndex += 2 + else: + raise ValueError( + "Failed getting triangles. Submesh topology is lines or points." + ) + + triangles = [triangles[i : i + 3] for i in range(0, len(triangles), 3)] + submeshes.append(triangles) + + return submeshes + + +# COMPRESSION_BIT_SIZES = { +# "high": { +# "vertex": 10, +# "uv": 8, +# "normal": 6, +# }, +# "medium": { +# "vertex": 16, +# "uv": 10, +# "normal": 8 +# }, +# "low": { +# "vertex": 20, +# "uv": 16, +# "normal": 8 +# }, +# } diff --git a/UnityPy/helpers/PackedBitVector.py b/UnityPy/helpers/PackedBitVector.py new file mode 100644 index 00000000..8ad9ac16 --- /dev/null +++ b/UnityPy/helpers/PackedBitVector.py @@ -0,0 +1,145 @@ +from typing import Optional, List, TYPE_CHECKING, Tuple + +# from ..objects.math import Quaternionf +if TYPE_CHECKING: + from ..classes.generated import PackedBitVector + + +def reshape(data: list, shape: Optional[Tuple[int, ...]] = None) -> list: + if shape is None: + return data + if len(shape) == 1: + m = shape[0] + return [data[i : i + m] for i in range(0, len(data), m)] + elif len(shape) == 2: + m, n = shape + return [ + [[data[i + j : i + j + n] for j in range(0, m * n, n)]] + for i in range(0, len(data), m * n) + ] + else: + raise ValueError("Invalid shape") + + +def unpack_ints( + packed: "PackedBitVector", + start: int = 0, + count: Optional[int] = None, + shape: Optional[Tuple[int, ...]] = None, +) -> List[int]: + assert packed.m_BitSize is not None + + m_BitSize = packed.m_BitSize + m_Data = packed.m_Data + + bitPos = m_BitSize * start + indexPos = bitPos // 8 + bitPos %= 8 + + if count is None: + count = packed.m_NumItems + + # if m_BitSize <= 8: + # dtype = np.uint8 + # elif m_BitSize <= 16: + # dtype = np.uint16 + # elif m_BitSize <= 32: + # dtype = np.uint32 + # elif m_BitSize <= 64: + # dtype = np.uint64 + # else: + # raise ValueError("Invalid bit size") + + # data = np.zeros(packed.m_NumItems, dtype=dtype) + data = [0] * packed.m_NumItems + + for i in range(packed.m_NumItems): + bits = 0 + value = 0 + while bits < m_BitSize: + value |= (m_Data[indexPos] >> bitPos) << bits + num = min(m_BitSize - bits, 8 - bitPos) + bitPos += num + bits += num + if bitPos == 8: + indexPos += 1 + bitPos = 0 + data[i] = value & ((1 << m_BitSize) - 1) + + return reshape(data, shape) + + +def unpack_floats( + packed: "PackedBitVector", + start: int = 0, + count: Optional[int] = None, + shape: Optional[Tuple[int, ...]] = None, +) -> List[float]: + assert ( + packed.m_BitSize is not None + and packed.m_Range is not None + and packed.m_Start is not None + ) + + # read as int and cast up to double to prevent loss of precision + quantized_f64 = unpack_ints(packed, start, count) + quantized = [x * packed.m_Range + packed.m_Start for x in quantized_f64] + return reshape(quantized, shape) + + +# def pack_ints( +# data: npt.NDArray[np.uint], bitsize: Optional[int] = 0 +# ) -> PackedBitVector: +# # ensure that the data type is unsigned +# assert "uint" in data.dtype.name + +# m_NumItems = data.size + +# maxi = data.max() +# # Prevent overflow +# if bitsize: +# m_BitSize = bitsize +# else: +# m_BitSize = (32 if maxi == 0xFFFFFFFF else np.ceil(np.log2(maxi + 1))) % 256 +# m_Data = np.zeros((m_NumItems * m_BitSize + 7) // 8, dtype=np.uint8) + +# indexPos = 0 +# bitPos = 0 +# for x in data: +# bits = 0 +# while bits < m_BitSize: +# m_Data[indexPos] |= (x >> bits) << bitPos +# num = min(m_BitSize - bits, 8 - bitPos) +# bitPos += num +# bits += num +# if bitPos == 8: +# indexPos += 1 +# bitPos = 0 + +# return PackedBitVector(m_NumItems=m_NumItems, m_BitSize=m_BitSize, m_Data=m_Data) + + +# def pack_floats( +# data: npt.NDArray[np.floating[Any]], +# bitsize: Optional[int] = None, +# ) -> PackedBitVector: +# min = data.min() +# max = data.max() +# range = max - min +# data_f64 = data.astype(np.float64) +# # rebase to 0 +# data_f64 -= min +# # scale to [0, 1] +# data_f64 /= range +# # quantize to [0, 2^bit_size - 1] +# bitsize = bitsize or max(data.itemsize, 32) +# assert bitsize is not None + +# data_f64 *= (1 << bitsize) - 1 +# # pack the data +# packed = pack_ints(data_f64.astype(np.uint32), bitsize) +# packed.m_Start = min +# packed.m_Range = range +# return packed + +__all__ = ("unpack_ints", "unpack_floats") diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 9fa88e8d..5a092db6 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -1,139 +1,29 @@ -from typing import Any, Dict, List, Union, Iterable, Tuple -from ..streams import EndianBinaryReader, EndianBinaryWriter -from ctypes import c_uint32 -import tabulate -from ..exceptions import TypeTreeError as TypeTreeError +from __future__ import annotations +import re +from typing import Optional, Any, Union, TYPE_CHECKING -kAlignBytes = 0x4000 - - -class TypeTreeNode(object): - __slots__ = ( - "m_Version", - "m_Level", - "m_TypeFlags", - "m_ByteSize", - "m_Index", - "m_MetaFlag", - "m_Type", - "m_Name", - "m_TypeStrOffset", - "m_NameStrOffset", - "m_RefTypeHash", - "m_VariableCount", - ) - m_Type: str - m_Name: str - m_ByteSize: int - m_Index: int - m_Version: int - m_MetaFlag: int - m_Level: int - m_TypeStrOffset: int - m_NameStrOffset: int - m_RefTypeHash: str - m_TypeFlags: int - m_VariableCount: int - - def __init__(self, data: Union[dict, Iterable[Tuple]] = None, **kwargs): - if isinstance(data, dict): - items = data.items() - elif kwargs: - items = kwargs.items() - else: - items = data - - for key, val in items: - setattr(self, key, val) - - def __repr__(self): - return f"" - - -try: - from ..UnityPyBoost import TypeTreeNode, read_typetree as read_typetree_c -except: - read_typetree_c = None - - -def node_dict_to_node_cls(nodes: List[dict]) -> List[TypeTreeNode]: - """Converts all dict-type nodes into TypeTreeNodes - - Parameters - ---------- - nodes : List[dict] - nodes/nodes of the typetree as dict - - Returns - ------- - List[TypeTreeNode] - a list of TypeTreeNode-type nodes - """ - # legacy support - if not next(iter(nodes[0])).startswith("m_"): - return [ - TypeTreeNode( - m_Name=x["name"], - m_Type=x["type"], - m_Level=x["level"], - m_MetaFlag=x["meta_flag"], - ) - for x in nodes - ] +from .TypeTreeNode import TypeTreeNode +from ..streams.EndianBinaryReader import EndianBinaryReader +from ..streams.EndianBinaryWriter import EndianBinaryWriter - return [TypeTreeNode(**node) for node in nodes] +from .. import classes +Object = classes.Object +PPtr = classes.PPtr -def check_nodes(nodes: List[Union[dict, TypeTreeNode]]) -> List[TypeTreeNode]: - """Checks the type of the nodes and converts them if necessary. +if TYPE_CHECKING: + from ..files.SerializedFile import SerializedFile - Parameters - ---------- - nodes : List[Union[dict, TypeTreeNode]] - nodes/nodes of the typetree as dict or TypeTreeNode - - Returns - ------- - List[TypeTreeNode] - a list of TypeTreeNode-type nodes - """ - if isinstance(nodes, list): - if len(nodes) == 0: - raise ValueError("not enough nodes") - if isinstance(nodes[0], TypeTreeNode): - return nodes - elif isinstance(nodes[0], dict): - return node_dict_to_node_cls(nodes) - raise ValueError( - f"nodes must be a list of dict or TypeTreeNode elements, but received {type(nodes)} - {type(nodes[0]) if isinstance(nodes, list) else ''}" - ) - - -def get_nodes(nodes: List[TypeTreeNode], index: int) -> list: - """Copies all nodes above the level of the node at the set index. - - Parameters - ---------- - nodes : list - nodes/nodes of the typetree - index : int - index of the node - - Returns - ------- - list - A list of nodes - """ - level = nodes[index].m_Level - for i, node in enumerate(nodes[index + 1 :], index + 1): - if node.m_Level <= level: - return nodes[index:i] - return nodes[index:] +kAlignBytes = 0x4000 def read_typetree( - nodes: List[Union[dict, TypeTreeNode]], reader: EndianBinaryReader -) -> dict: + root_node: TypeTreeNode, + reader: EndianBinaryReader, + as_dict: bool = True, + expected_read: Optional[int] = None, + assetsfile: Optional[SerializedFile] = None, +) -> Union[dict[str, Any], Object]: """Reads the typetree of the object contained in the reader via the node list. Parameters @@ -145,380 +35,359 @@ def read_typetree( Returns ------- - dict + dict | objects.Object The parsed typtree """ - reader.reset() - - nodes = check_nodes(nodes) + pos = reader.Position + obj = read_value(root_node, reader, as_dict, assetsfile) - if read_typetree_c: - return read_typetree_c( - nodes, reader.read_bytes(reader.byte_size), reader.endian - ) - - obj = read_value(nodes, reader, c_uint32(0)) - - read = reader.Position - reader.byte_start - if read != reader.byte_size: - raise TypeTreeError( - f"Error while read type, read {read} bytes but expected {reader.byte_size} bytes", - nodes, + read = reader.Position - pos + if expected_read is not None and read != expected_read: + raise ValueError( + f"Expected to read {expected_read} bytes, but read {read} bytes" ) return obj -def read_value(nodes: List[TypeTreeNode], reader: EndianBinaryReader, i: c_uint32): - node = nodes[i.value] - typ = node.m_Type - align = (node.m_MetaFlag & kAlignBytes) != 0 - - if typ == "SInt8": - value = reader.read_byte() - elif typ in ["UInt8", "char"]: - value = reader.read_u_byte() - elif typ in ["short", "SInt16"]: - value = reader.read_short() - elif typ in ["UInt16", "unsigned short"]: - value = reader.read_u_short() - elif typ in ["int", "SInt32"]: - value = reader.read_int() - elif typ in ["UInt32", "unsigned int", "Type*"]: - value = reader.read_u_int() - elif typ in ["long long", "SInt64"]: - value = reader.read_long() - elif typ in ["UInt64", "unsigned long long", "FileSize"]: - value = reader.read_u_long() - elif typ == "float": - value = reader.read_float() - elif typ == "double": - value = reader.read_double() - elif typ == "bool": - value = reader.read_boolean() - elif typ == "string": - value = reader.read_aligned_string() - i.value += 3 # Array, Size, Data(typ) - elif typ == "map": # map == MultiDict - if (nodes[i.value + 1].m_MetaFlag & kAlignBytes) != 0: - align = True - map_ = get_nodes(nodes, i.value) - i.value += len(map_) - 1 - first = get_nodes(map_, 4) - second = get_nodes(map_, 4 + len(first)) - size = reader.read_int() - value = [None] * size - for j in range(size): - key = read_value(first, reader, c_uint32(0)) - value[j] = (key, read_value(second, reader, c_uint32(0))) - elif typ == "TypelessData": - size = reader.read_int() - value = reader.read_bytes(size) - i.value += 2 # Size == int, Data(typ) == char/uint8 - else: - # Vector - if i.value < len(nodes) - 1 and nodes[i.value + 1].m_Type == "Array": - if (nodes[i.value + 1].m_MetaFlag & kAlignBytes) != 0: - align = True - vector = get_nodes(nodes, i.value) - i.value += len(vector) - 1 - size = reader.read_int() - value = [read_value(vector, reader, c_uint32(3)) for _ in range(size)] - else: # Class - clz = get_nodes(nodes, i.value) - i.value += len(clz) - 1 - value = {} - j = c_uint32(1) - while j.value < len(clz): - clz_node = clz[j.value] - value[clz_node.m_Name] = read_value(clz, reader, j) - j.value += 1 - - if align: - reader.align_stream() - return value - - -def read_typetree_str( - sb: List[str], nodes: List[Union[dict, TypeTreeNode]], reader: EndianBinaryReader -) -> list: - """Reads the typetree of the object contained in the reader via the node list and dumps it as string. +def write_typetree( + value: Union[dict[str, Any], Object], + root_node: TypeTreeNode, + writer: EndianBinaryWriter, +) -> None: + """Writes the typetree of the object contained in the reader via the node list. Parameters ---------- - sb : list - StringBuilder - a list used to build the string dump, should be empty + value: dict | objects.Object + The object to be written nodes : list List of nodes/nodes - reader : EndianBinaryReader - Reader of the object to be parsed - - Returns - ------- - list - The sb given as input + writer : EndianBinaryWriter + Writer of the object to be parsed """ - # reader.reset() - nodes = check_nodes(nodes) - - i = c_uint32(0) - while i.value < len(nodes): - read_value_str(sb, nodes, reader, i) - i.value += 1 - - readed = reader.Position - reader.byte_start - if readed != reader.byte_size: - raise TypeTreeError( - f"Error while read type, read {readed} bytes but expected {reader.byte_size} bytes", - nodes, - ) - - return sb - - -def read_value_str( - sb: List[str], nodes: List[TypeTreeNode], reader: EndianBinaryReader, i: c_uint32 -) -> list: - node = nodes[i.value] - typ = node.m_Type - align = (node.m_MetaFlag & kAlignBytes) != 0 - append = True - - if typ == "SInt8": - value = reader.read_byte() - elif typ in ["UInt8", "char"]: - value = reader.read_u_byte() - elif typ in ["short", "SInt16"]: - value = reader.read_short() - elif typ in ["UInt16", "unsigned short"]: - value = reader.read_u_short() - elif typ in ["int", "SInt32"]: - value = reader.read_int() - elif typ in ["UInt32", "unsigned int", "Type*"]: - value = reader.read_u_int() - elif typ in ["long long", "SInt64"]: - value = reader.read_long() - elif typ in ["UInt64", "unsigned long long", "FileSize"]: - value = reader.read_u_long() - elif typ == "float": - value = reader.read_float() - elif typ == "double": - value = reader.read_double() - elif typ == "bool": - value = reader.read_boolean() - elif typ == "string": - value = reader.read_aligned_string() - i.value += 3 # Array, Size, Data(typ) - append = False - sb.append( - '{0}{1} {2} = "{3}"\r\n'.format( - "\t" * node.m_Level, node.m_Type, node.m_Name, value - ) - ) - elif typ == "map": - if (nodes[i.value + 1].m_MetaFlag & kAlignBytes) != 0: - align = True - map_ = get_nodes(nodes, i.value) - i.value += len(map_) - 1 - first = get_nodes(map_, 4) - second = get_nodes(map_, 4 + len(first)) - size = reader.read_int() - append = False - sb.append( - "{0}{1} {2}\r\n".format("\t" * node.m_Level, node.m_Type, node.m_Name) - ) - sb.append("{0}{1} {2}\r\n".format("\t" * (node.m_Level + 1), "Array", "Array")) - sb.append( - "{0}{1} {2} = {3}\r\n".format( - "\t" * (node.m_Level + 1), "int", "size", size - ) - ) - for j in range(size): - sb.append("{0}[{1}]\r\n".format("\t" * (node.m_Level + 2), j)) - sb.append( - "{0}{1} {2}\r\n".format("\t" * (node.m_Level + 2), "pair", "data") - ) - read_value_str(sb, first, reader, c_uint32(0)) - read_value_str(sb, second, reader, c_uint32(0)) - elif typ == "TypelessData": - size = reader.read_int() - value = reader.read_bytes(size) - i.value += 2 # Size == int, Data(typ) == char/uint8 - append = False - sb.append( - "{0}{1} {2}\r\n".format("\t" * node.m_Level, node.m_Type, node.m_Name) - ) - sb.append( - "{0}{1} {2} = {3}\r\n".format("\t" * node.m_Level, "int", "size", size) - ) - # sb.append("{0}{1} {2} = {3}\r\n".format( - # "\t" * node.level, "UInt8", "data", base64.b64encode(value))) - else: - # Vector - if i.value < len(nodes) - 1 and nodes[i.value + 1].m_Type == "Array": - if (nodes[i.value + 1].m_MetaFlag & kAlignBytes) != 0: - align = True - vector = get_nodes(nodes, i.value) - i.value += len(vector) - 1 - size = reader.read_int() - append = False - sb.append( - "{0}{1} {2}\r\n".format("\t" * node.m_Level, node.m_Type, node.m_Name) - ) - sb.append( - "{0}{1} {2}\r\n".format("\t" * (node.m_Level + 1), "Array", "Array") - ) - sb.append( - "{0}{1} {2} = {3}\r\n".format( - "\t" * (node.m_Level + 1), "int", "size", size - ) - ) - for j in range(size): - sb.append("{0}[{1}]\r\n".format("\t" * (node.m_Level + 2), j)) - read_value_str(sb, vector, reader, c_uint32(3)) - - else: # Class - clz = get_nodes(nodes, i.value) - i.value += len(clz) - 1 - j = c_uint32(1) - append = False - sb.append( - "{0}{1} {2}\r\n".format("\t" * node.m_Level, node.m_Type, node.m_Name) - ) - while j.value < len(clz): - read_value_str(sb, clz, reader, j) - j.value += 1 - - if append: - sb.append( - "{0}{1} {2} = {3}\r\n".format( - "\t" * node.m_Level, node.m_Type, node.m_Name, value - ) - ) + return write_value(value, root_node, writer) + + +def read_value( + node: TypeTreeNode, + reader: EndianBinaryReader, + as_dict: bool, + assetsfile: Optional[SerializedFile], +) -> Any: + # print(reader.Position, node.m_Name, node.m_Type, node.m_MetaFlag) + align = metaflag_is_aligned(node.m_MetaFlag) + + match node.m_Type: + case "SInt8": + value = reader.read_byte() + case "UInt8" | "char": + value = reader.read_u_byte() + case "short" | "SInt16": + value = reader.read_short() + case "UInt16" | "unsigned short": + value = reader.read_u_short() + case "int" | "SInt32": + value = reader.read_int() + case "UInt32" | "unsigned int" | "Type*": + value = reader.read_u_int() + case "long long" | "SInt64": + value = reader.read_long() + case "UInt64" | "unsigned long long" | "FileSize": + value = reader.read_u_long() + case "float": + value = reader.read_float() + case "double": + value = reader.read_double() + case "bool": + value = reader.read_boolean() + case "string": + value = reader.read_aligned_string() + case "TypelessData": + value = reader.read_byte_array() + case "pair": + first = read_value(node.m_Children[0], reader, as_dict, assetsfile) + second = read_value(node.m_Children[1], reader, as_dict, assetsfile) + value = (first, second) + case _: + if not node.m_Children: + value = None + # raise NotImplementedError(f"Reference type {node.m_Type} not implemented") + # Vector + elif node.m_Children and node.m_Children[0].m_Type == "Array": + if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): + align = True + + size = ( + reader.read_int() + ) # read_value(node.m_Children[0].m_Children[0], reader, as_dict) + subtype = node.m_Children[0].m_Children[1] + if metaflag_is_aligned(subtype.m_MetaFlag): + value = read_value_array(subtype, reader, as_dict, size, assetsfile) + else: + value = [ + read_value(subtype, reader, as_dict, assetsfile) + for _ in range(size) + ] + + else: # Class + value = { + child.m_Name: read_value(child, reader, as_dict, assetsfile) + for child in node.m_Children + } + + if not as_dict: + if node.m_Type.startswith("PPtr<"): + value = PPtr[Any]( + assetsfile=assetsfile, + m_FileID=value["m_FileID"], + m_PathID=value["m_PathID"], + type=node.m_Type[6:-1], + ) + else: + clz = getattr(classes, node.m_Type, Object) + clz_kwargs = { + clean_name(key): value for key, value in value.items() + } + try: + value = clz(**clz_kwargs) + except TypeError: + extra_keys = set(clz_kwargs.keys()) - set( + clz.__annotations__ + ) + value = clz( + **{ + key: value + for key, value in clz_kwargs.items() + if key in clz.__annotations__ + } + ) + for key in extra_keys: + setattr(value, key, clz_kwargs[key]) if align: reader.align_stream() - return sb - - -def dump_typetree(nodes: List[TypeTreeNode]) -> str: - """Dumps the structure of the given nodes. - - Parameters - ---------- - nodes : list - List of nodes/nodes - Returns - ------- - str - The dumped structure - """ - field_names = ["m_Level", "m_Type", "m_Name", "m_MetaFlag"] - rows = [[getattr(x, key) for key in field_names] for x in nodes] - return tabulate.tabulate(rows, headers=field_names) + return value -def write_typetree( - obj: dict, nodes: List[Union[dict, TypeTreeNode]], writer: EndianBinaryWriter = None -) -> EndianBinaryWriter: - """Writes the data of the object via the given typetree of the object into the writer. +def read_value_array( + node: TypeTreeNode, + reader: EndianBinaryReader, + as_dict: bool, + size: int, + assetsfile: Optional[SerializedFile], +) -> Any: + align = metaflag_is_aligned(node.m_MetaFlag) + + match node.m_Type: + case "SInt8": + value = reader.read_byte_array(size) + case "UInt8" | "char": + value = reader.read_u_byte_array(size) + case "short" | "SInt16": + value = reader.read_short_array(size) + case "UInt16" | "unsigned short": + value = reader.read_u_short_array(size) + case "int" | "SInt32": + value = reader.read_int_array(size) + case "UInt32" | "unsigned int" | "Type*": + value = reader.read_u_int_array(size) + case "long long" | "SInt64": + value = reader.read_long_array(size) + case "UInt64" | "unsigned long long" | "FileSize": + value = reader.read_u_long_array(size) + case "float": + value = reader.read_float_array(size) + case "double": + value = reader.read_double_array(size) + case "bool": + value = reader.read_boolean_array(size) + case "string": + value = [reader.read_aligned_string() for _ in range(size)] + case "TypelessData": + value = [reader.read_bytes() for _ in range(size)] + case "pair": + value = [ + ( + read_value(node.m_Children[0], reader, as_dict, assetsfile), + read_value(node.m_Children[1], reader, as_dict, assetsfile), + ) + for _ in range(size) + ] + case _: + if not node.m_Children: + value = None + # raise NotImplementedError(f"Reference type {node.m_Type} not implemented") + # Vector + elif node.m_Children[0].m_Type == "Array": + if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): + align = True + subtype = node.m_Children[0].m_Children[1] + if metaflag_is_aligned(subtype.m_MetaFlag): + value = [ + read_value_array( + subtype, reader, as_dict, reader.read_int(), assetsfile + ) + for _ in range(size) + ] + else: + value = [ + [ + read_value(subtype, reader, as_dict, assetsfile) + for _ in range(reader.read_int()) + ] + for _ in range(size) + ] + else: # Class + if as_dict: + value = [ + { + child.m_Name: read_value(child, reader, as_dict, assetsfile) + for child in node.m_Children + } + for _ in range(size) + ] + else: + if node.m_Type.startswith("PPtr<"): + value = [ + PPtr[Any]( + assetsfile=assetsfile, + type=node.m_Type[6:-1], + **{ + child.m_Name: read_value( + child, reader, as_dict, assetsfile + ) + for child in node.m_Children + }, + ) + for _ in range(size) + ] + else: + clz = getattr( + classes, + node.m_Type, + Object, + ) + clean_names = [ + clean_name(child.m_Name) for child in node.m_Children + ] + if all(name in clz.__annotations__ for name in clean_names): + value = [ + clz( + **{ + name: read_value( + child, reader, as_dict, assetsfile + ) + for name, child in zip( + clean_names, node.m_Children + ) + } + ) + for _ in range(size) + ] + else: + extra_keys = set(clean_names) - set(clz.__annotations__) + value = [None] * size + for i in range(size): + value_i_d = { + clean_name(child.m_Name): read_value( + child, reader, as_dict, assetsfile + ) + for child in node.m_Children + } + value_i = clz( + **{ + key: value + for key, value in value_i_d.items() + if key in clz.__annotations__ + } + ) + for key in extra_keys: + setattr(value_i, key, value_i_d[key]) + value[i] = value_i + if align: + reader.align_stream() + return value - Parameters - ---------- - obj : dict - Object to be saved - nodes : list - List of nodes/nodes - writer : EndianBinaryWriter - Writer of the object to be saved - Returns - ------- - EndianBinaryWriter - The writer that was used to save the data of the given object. - """ - if not writer: - writer = EndianBinaryWriter() +def metaflag_is_aligned(meta_flag: int | None) -> bool: + return ((meta_flag or 0) & kAlignBytes) != 0 - nodes = check_nodes(nodes) - i = c_uint32(1) - while i.value < len(nodes): - value = obj[nodes[i.value].m_Name] - write_value(value, nodes, writer, i) - i.value += 1 - return writer +def clean_name(name: str) -> str: + if name.startswith("(int&)"): + name = name[6:] + if name.endswith("?"): + name = name[:-1] + name = re.sub(r"[ \.:\-\[\]]", "_", name) + if name in ["pass", "from"]: + name += "_" + if name[0].isdigit(): + name = f"x{name}" + return name def write_value( - value: Any, nodes: List[TypeTreeNode], writer: EndianBinaryWriter, i: c_uint32 -): - node = nodes[i.value] - typ = node.m_Type - align = (node.m_MetaFlag & kAlignBytes) != 0 - - if typ == "SInt8": - writer.write_byte(value) - elif typ in ["UInt8", "char"]: - writer.write_u_byte(value) - elif typ in ["short", "SInt16"]: - writer.write_short(value) - elif typ in ["UInt16", "unsigned short"]: - writer.write_u_short(value) - elif typ in ["int", "SInt32"]: - writer.write_int(value) - elif typ in ["UInt32", "unsigned int", "Type*"]: - writer.write_u_int(value) - elif typ in ["long long", "SInt64"]: - writer.write_long(value) - elif typ in ["UInt64", "unsigned long long", "FileSize"]: - writer.write_u_long(value) - elif typ == "float": - writer.write_float(value) - elif typ == "double": - writer.write_double(value) - elif typ == "bool": - writer.write_boolean(value) - elif typ == "string": - writer.write_aligned_string(value) - i.value += 3 # Array, Size, Data(typ) - elif typ == "map": - if (nodes[i.value + 1].m_MetaFlag & kAlignBytes) != 0: - align = True - map_ = get_nodes(nodes, i.value) - i.value += len(map_) - 1 - first = get_nodes(map_, 4) - second = get_nodes(map_, 4 + len(first)) - # size - writer.write_int(len(value)) - # data - for key, val in value: - write_value(key, first, writer, c_uint32(0)) - write_value(val, second, writer, c_uint32(0)) - - elif typ == "TypelessData": - writer.write_int(len(value)) - writer.write_bytes(value) - i.value += 2 # Size == int, Data(typ) == char/uint8 - else: - # Vector - if i.value < len(nodes) - 1 and nodes[i.value + 1].m_Type == "Array": - if (nodes[i.value + 1].m_MetaFlag & kAlignBytes) != 0: - align = True - vector = get_nodes(nodes, i.value) - i.value += len(vector) - 1 - writer.write_int(len(value)) - for val in value: - write_value(val, vector, writer, c_uint32(3)) - else: # Class - clz = get_nodes(nodes, i.value) - i.value += len(clz) - 1 - j = c_uint32(1) - while j.value < len(clz): - val = value[clz[j.value].m_Name] - write_value(val, clz, writer, j) - j.value += 1 + value: Any, + node: TypeTreeNode, + writer: EndianBinaryWriter, +) -> None: + # print(reader.Position, node.m_Name, node.m_Type, node.m_MetaFlag) + align = metaflag_is_aligned(node.m_MetaFlag) + + match node.m_Type: + case "SInt8": + writer.write_byte(value) + case "UInt8" | "char": + writer.write_u_byte(value) + case "short" | "SInt16": + writer.write_short(value) + case "UInt16" | "unsigned short": + writer.write_u_short(value) + case "int" | "SInt32": + writer.write_int(value) + case "UInt32" | "unsigned int" | "Type*": + writer.write_u_int(value) + case "long long" | "SInt64": + writer.write_long(value) + case "UInt64" | "unsigned long long" | "FileSize": + writer.write_u_long(value) + case "float": + writer.write_float(value) + case "double": + writer.write_double(value) + case "bool": + writer.write_boolean(value) + case "string": + writer.write_aligned_string(value) + case "TypelessData": + writer.write_byte_array(value) + case "pair": + write_value(value[0], node.m_Children[0], writer) + write_value(value[1], node.m_Children[1], writer) + case _: + if not node.m_Children: + value = None + # raise NotImplementedError(f"Reference type {node.m_Type} not implemented") + # Vector + elif node.m_Children and node.m_Children[0].m_Type == "Array": + if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): + align = True + + writer.write_int(len(value)) + subtype = node.m_Children[0].m_Children[1] + [write_value(sub_value, subtype, writer) for sub_value in value] + + else: # Class + if isinstance(value, dict): + for child in node.m_Children: + write_value(value[child.m_Name], child, writer) + else: + for child in node.m_Children: + write_value( + getattr(value, clean_name(child.m_Name)), child, writer + ) if align: writer.align_stream() diff --git a/UnityPy/helpers/TypeTreeNode.py b/UnityPy/helpers/TypeTreeNode.py new file mode 100644 index 00000000..d76ee3d3 --- /dev/null +++ b/UnityPy/helpers/TypeTreeNode.py @@ -0,0 +1,227 @@ +from __future__ import annotations +from struct import Struct +from typing import Optional, List, Tuple, TYPE_CHECKING, Dict, Iterator + +from attrs import define, field + +from ..streams.EndianBinaryReader import EndianBinaryReader +from ..streams.EndianBinaryWriter import EndianBinaryWriter + +if TYPE_CHECKING: + from .Tpk import UnityVersion + + +@define +class TypeTreeNode: + m_Level: int + m_Type: str + m_Name: str + m_ByteSize: int + m_TypeFlags: int + m_Version: int + m_Children: List[TypeTreeNode] = field(factory=list) + m_VariableCount: Optional[int] = None + m_Index: Optional[int] = None + m_MetaFlag: Optional[int] = None + m_RefTypeHash: Optional[int] = None + + def traverse(self) -> Iterator[TypeTreeNode]: + stack: list[TypeTreeNode] = [self] + while stack: + node = stack.pop() + stack.extend(reversed(node.m_Children)) + yield node + + @classmethod + def parse(cls, reader: EndianBinaryReader, version: int) -> TypeTreeNode: + # stack approach is way faster than recursion + # using a fake root node to avoid special case for root node + dummy_node = TypeTreeNode(-1, "", "", 0, 0, 0, []) + dummy_root = TypeTreeNode(-1, "", "", 0, 0, 0, [dummy_node]) + + stack: List[Tuple[TypeTreeNode, int]] = [(dummy_root, 1)] + while stack: + parent, count = stack[-1] + if count == 1: + stack.pop() + else: + stack[-1] = (parent, count - 1) + + node = TypeTreeNode( + m_Level=parent.m_Level + 1, + m_Type=reader.read_string_to_null(), + m_Name=reader.read_string_to_null(), + m_ByteSize=reader.read_int(), + m_VariableCount=reader.read_int() if version == 2 else None, + m_Index=reader.read_int() if version != 3 else None, + m_TypeFlags=reader.read_int(), + m_Version=reader.read_int(), + m_MetaFlag=reader.read_int() if version != 3 else None, + ) + parent.m_Children[-count] = node + children_count = reader.read_int() + if children_count > 0: + node.m_Children = [dummy_node] * children_count + stack.append((node, children_count)) + return dummy_root.m_Children[0] + + @classmethod + def parse_blob(cls, reader: EndianBinaryReader, version: int) -> TypeTreeNode: + node_count = reader.read_int() + stringbuffer_size = reader.read_int() + + node_struct, keys = _get_blob_node_struct(reader.endian, version) + struct_data = reader.read(node_struct.size * node_count) + stringbuffer_reader = EndianBinaryReader( + reader.read(stringbuffer_size), reader.endian + ) + + CommonString = get_common_strings() + + def read_string(reader: EndianBinaryReader, value: int) -> str: + is_offset = (value & 0x80000000) == 0 + if is_offset: + reader.Position = value + return reader.read_string_to_null() + + offset = value & 0x7FFFFFFF + return CommonString.get(offset, str(offset)) + + fake_root: TypeTreeNode = TypeTreeNode(-1, "", "", 0, 0, 0, []) + stack: List[TypeTreeNode] = [fake_root] + parent = fake_root + prev = fake_root + + for raw_node in node_struct.iter_unpack(struct_data): + node = TypeTreeNode( + **dict(zip(keys[:3], raw_node[:3])), + **dict(zip(keys[5:], raw_node[5:])), + m_Type=read_string(stringbuffer_reader, raw_node[3]), + m_Name=read_string(stringbuffer_reader, raw_node[4]), + ) + + if node.m_Level > prev.m_Level: + stack.append(parent) + parent = prev + elif node.m_Level < prev.m_Level: + while node.m_Level <= parent.m_Level: + parent = stack.pop() + + parent.m_Children.append(node) + prev = node + + return fake_root.m_Children[0] + + def dump(self, writer: EndianBinaryWriter, version: int): + stack: list[TypeTreeNode] = [self] + while stack: + node = stack.pop() + + writer.write_string_to_null(self.m_Type) + writer.write_string_to_null(self.m_Name) + writer.write_int(self.m_ByteSize) + if version == 2: + assert self.m_VariableCount is not None + writer.write_int(self.m_VariableCount) + if version != 3: + assert self.m_Index is not None + writer.write_int(self.m_Index) + writer.write_int(self.m_TypeFlags) + writer.write_int(self.m_Version) + if version != 3: + assert self.m_MetaFlag is not None + writer.write_int(self.m_MetaFlag) + + writer.write_int(len(self.m_Children)) + + stack.extend(reversed(node.m_Children)) + + def dump_blob(self, writer: EndianBinaryWriter, version: int): + node_writer = EndianBinaryWriter(endian=writer.endian) + string_writer = EndianBinaryWriter() + + # string buffer setup + CommonStringOffsetMap = { + string: offset for offset, string in get_common_strings().items() + } + + string_offsets: dict[str, int] = {} + + def write_string(string: str) -> int: + offset = string_offsets.get(string) + if offset is None: + common_offset = CommonStringOffsetMap.get(string) + if common_offset: + offset = common_offset | 0x80000000 + else: + offset = string_writer.Position + string_writer.write_string_to_null(string) + string_offsets[string] = offset + return offset + + # node buffer setup + node_struct, keys = _get_blob_node_struct(writer.endian, version) + + def write_node(node: TypeTreeNode): + node_writer.write( + node_struct.pack( + *[getattr(node, key) for key in keys[:3]], + write_string(node.m_Type), + write_string(node.m_Name), + *[getattr(node, key) for key in keys[5:]], + ) + ) + + # write nodes + node_count = len([write_node(node) for node in self.traverse()]) + + # write blob + writer.write_int(node_count) + writer.write_int(string_writer.Position) + writer.write(node_writer.bytes) + writer.write(string_writer.bytes) + + +COMMONSTRING_CACHE: Dict[Optional[UnityVersion], Dict[int, str]] = {} + + +def get_common_strings(version: Optional[UnityVersion] = None) -> Dict[int, str]: + if version in COMMONSTRING_CACHE: + return COMMONSTRING_CACHE[version] + + from .Tpk import TPKTYPETREE + + tree = TPKTYPETREE + common_string = tree.CommonString + strings = common_string.GetStrings(tree.StringBuffer) + if version: + count = common_string.GetCount(version) + strings = strings[:count] + + ret: Dict[int, str] = {} + offset = 0 + for string in strings: + ret[offset] = string + offset += len(string) + 1 + + COMMONSTRING_CACHE[version] = ret + return ret + + +def _get_blob_node_struct(endian: str, version: int) -> tuple[Struct, list[str]]: + struct_type = f"{endian}hBBIIiii" + keys = [ + "m_Version", + "m_Level", + "m_TypeFlags", + "m_TypeStrOffset", + "m_NameStrOffset", + "m_ByteSize", + "m_Index", + "m_MetaFlag", + ] + if version >= 19: + struct_type += "Q" + keys.append("m_RefTypeHash") + + return Struct(struct_type), keys diff --git a/UnityPy/resources/uncompressed.tpk b/UnityPy/resources/uncompressed.tpk index 5128be38c63ae9f67cdcf2d2e55e5fb69babd169..e939fa13c923616b7378aa132b908921a3752f2b 100644 GIT binary patch literal 1293843 zcmZUc1$Y)$_Qt<2PDlbIL`Y~zh!O|^;)Hw h7w>ZL|)x3-n7ZC$o5K%Kg7-DTUR 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 z

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


og?q1tPbr*7Rd?C}Q zkR#zjE;0WiTL$XE{(hl(X%rg->9E)IgCm=R!lxMpRu~kidH~$o-8roC8v*s>QGZz;DtIcc78Rkq>P8hInSJLE-)9Gi_GiI8_XMNRvQv+@-Jcq zs=YS*P|A+lKgsmBNy#PT0x_LsY7JR2vQ%;ubclkKFep-~b!YyR>Zof=nftr?opf?8 zkV;GogJjiNC!^aJc)bq^~ZxB}oNjj5QH@T}WI15!pQNA(JWn97KP-cfLT z6!ZxLp3McW`qo$Xm=Bl_nybx+%!keURA#&(3lx6w0EUF31q#0m0N}8qJR9UEUUzUC z#Zd#oB|GYbD98?j7)^8hc*gls^AC)I6T_e@{mG-3*FX5<67D4Q9`j!FKJ$KarMb#{ z#C+6z%zWH@!hF(PqMkCJHlHz{HP_G_*L~T?OWcBb%uKS!zbABP=H*wE{@Zn0$J94c zxMf`!9Ap4Ts26FuI9LZCf`T-1`hq8WymOd)eyf0+2HPtu{@Fq z#0htj!PR-ee97Fd{%gK$zGA*glgE%4pTb2&>ZzfAd2V|K?i8f4LNpvVp(ugocENJG zfx*g?d?)%ZlRn}0Ce2ITqBxT(_p=9X%e-OMn9Ee;u?7vsh>?4-jbP zmJa9hf%zdV+{^s(T2!%BJ|Z+S9+gK?fg0tvy=(ds&xUMm%89pX+~ePODaZHB_sx&Z zPs~rv&&+zNBCL8OB~OLlH#cbcN|NSGDfsa}E^RsO5XPA#P(POABkxV-iNg!m8iyr z^J}h7q3-DU59ep89p+ARSI{%uVwS7jq|V9VFxjQQoA^hLrY}o7HIq0*8IBXL2z4-u%J*(cEwTWF9aNnm^OhCUof682vmd z6u587vr_+{G3Y{6W!`i9jVyMqZZm?0`khQOMc2YJ&3R!^L{og5>dQ5t0^Diu)F_%{ zPS&G2kl;pty1Vc3SL$ojALc*iVKXAmC&ba)_pac5 z>LMMNNCR(xQ5T16GgDm}2J|Xk6kM%Wd9X-rs#JAMpe%(y&((2wY}!uivn1HYa8IVc2|*@KU}ke_i4yfXN|81X+3De9}U z!+JQh0th5xiMe4w2Z&)1*qC-V>l_+rbsqdbLT_v_;31Zs1$x-zjUB9%P$N@%Qzcue z)X4L7BNH@KN6S$Q!U{a4W;ZH)%CuVTU$Ek^tJMVekaidbJY##rPP-h*th}Q z)#_%=RX5iCU=cZPcNFQR=wfxZVpi8+T{tT~{OUnnK@ZF3M-p zJcu1@wYQS2Qrl-HQqYSI-NfE_hPga6KQ1@m_u^&JL;uy zqd2sv;vnhv9{L}N>gD)EuY_eB^=cHn76t|Cb*(vN%FXgd6jVpSn;JNr#8EZjOda)B z7|^SDItizsQr1Sn+flGC3>@`NIMZbHuAaP5mj2$%dv(G0>w+J|Lwb2HTnN3R7X=@O zL8AI3+75~8(6%5yGO z_$ms%4g*Jh6V5b|R#cJxov6NxN8d*g9aM#La@3Dukf`=Y6D6vj;?aS4bTA(M97T@$ zC0w4Pe)WMHi5yxZc^34+?@{na7~D#KvN=pLZYQk)-~1)Yp%7(y573My3tx} z-DKTtEwOH~mRh%3w^_@q+pRmSJFVr`3hOTGZtEWFUh6*Veru(*%6hsf1!^&Cz17SYkf^A;abykJGd6R;Gj zTQsI!!q@f^lN!&>ox0j>kTU+#%H)uk(g?#vqrs|(4YQ`LXs7e1J0l7BK4`YENY-H!CW;%aLKyMz=pMe#s`{8lPf35X4Wy3;&HEP3v z0u`q+vjs_TF-DBhOJ=d!=Cm@Z@51Z0*$TJ+L zHfZ>#(>&isl#2cpsH7-3E((&PphFa-L_um4bkxA%Vvixc15LwTw%OWZZMC*p+pRCG z9o9~37tJp^h4trIL0S|=vT9OCMqgTctX2Qxe)T>wTNhmh=|!K2Cr$JrgKJ5i;CI(; z#Wf-j3xicgk8qsiU4U-%acTebloDC$TkAXPd-|$)XcyX4-&jA?H4pod7WG}Vc2%t1 ze%i|DNg23K5Xdu8WrQW!e7)n*@ljMy^$FLc7k&Rf;7GPQX#H&cV*Of|hQE>h(!)9a zPOJA&bMt2ld5QnE^^)ti#q3igPTKEfUqUiyG_>t{c72;) zL1NJvBFbm~b&18)nR+qf+1Ux#E2i?JU~m}Z(VtGRD7KPYTqC=&-NbGRjabaPa8AOs zF&ZxtQ-$HICmKcC_@tiy-dRiy4a>z;NfeYu!LTS89tJ$6<((;aWT6d#mUb(qU5#uZ#Gb6uUBSmqf1g@wA^E zh^)sFrs`y;*&``Y%!RD18x(l6JJs%JcgEwuzI;70i~opTyz~pC^z<*LP6`9wu(9a@ z73j8DJvA;0#z(1n^=iWp+^Gw)LoyMS~*UyF12RWUDT!4wg2{@s_qAl zx-Oh|OwEphIbl$s=7#&l+4Ou2byM!CRf;AfGJM@&`Y=`VsNin&-(JD&Lb7~3!=7lfK#~Z^ih>^|tDF5YI0HBGtyD|GkiTWI zQr!{{Z=!i*AVym1Z2KJh+`6LVB#JDHb!34$lc{ulz9^*!hCCN0(C-D%DN{J{`81T> zN;N~pSx%8--WCSDljO%TdTy&J_Eh@<`$BuKS{}dJY^qjh=_=0FptG&JqUcVUIdgop z)W!BR`;t(N3G+eXrKI#7;pCUmNON!4ioAqKR`#$p0i}k$Sl92Ql?XI15KT8U>Gq!98R%o)6Kigj*^>U13kRue7hSuePtT zXV^3CS@yMdm3^H(J7hhyFt zag6q_LcT@smxV!wdftzIMk@P(`#N$=y%3g*sTaebNc{(ZjX??d`$I*vNyMcE5WN@f zZxOoA{T$hl#Myuh>Z`@}P4><968jc=XQC)Kk>U z-t}wAh&Pws)1!~WfTjz+pYop!J`5+J^SUVbI1FOylPLH!42slee#cd*!6+3|>%)@4 zZA$3ls0~qxjbRW|pGU!_FmPxG%JVnmNtN6Z1zV$FTNo6m?b>q4q(FTU2Jc%RSQYfh z^*CCXt+Ai8pSNGIU$p;YzhwW{e%XG-e${@>e%*e+uEKtAes&GxHZhwTqFVu5+f5GzyOKrEmuy@qecXv|X{aH5{lI*g-BqaiV!S7b_ zyl|%a(EiB&*#5-+)c(v~Z*Q-87oO2F{5fh3LQB0^9F=O_tnwjqD?wJEz z@B4nw_x%5RA1?Ci>gww1>Nwq1@0OO7K2ozbTf=Ns_)V_CuYw3zJUhQqZ$8e4WhI4_ zZi%X7%W&NPL)L6P{HX%}Fd$YN9!HdN&i{;tMqs2pAzVlaR^dV3)Sdh8TEtJWx@+`a`E+0Cj-s#pTdEb!R0CHC7lv8 z7fmUl9$Lw4>Y=p?v{8Y!DzKIcv{Qk#WuPVgvv;Zk8Z~3(nYyLhx}&?gr(XzVod|_f zy!gVlN+cc=BPX)Nty#~D{*6l}#We9_tSnK8=YrC-8bU`IsK;YPg+j5S_LxrB6_S=s zN4bjL1Y_4V)tl*L6wUR2N-gx?(Io10GL64WEp^H&d~}aTxz%TDfQ;%p$wJmcXBk)* z|JgYel5No&ppD*EUrRT2B2au$q>1%-L?|htrfpE7k)77g_+w8Y)K#M*ZZRoq0FEG2FL&o z1}achfq^p60E1M3Z}LbgX?IBfq)#CO_5Rv6vW^C!c-(Uq(b2ukA)Ka0dJJGNHUd*E zLIv1XAFPXw5P{QS2sXmDa^~&y&E(831_kM(Z=r9gZ>5L&0DWt{s&AujpT}+oWY>OE6L&rSGBdiAozOD{UDJ z$K%&r+8vOm(6aHGb1Lkr57&3och^VgqxJV;FMV%)DIStbq~tm&k4$ue*ntLs_yD{L zdzNUZpg+;C3Zpp?5)#5*as~ImfA+wH0{*F`mp}H?Z_@VH575WxM6g~;Ku5J{;`W7o z#Ab@S>E4(_2p<@aP#AYgrv#xwt7fqJ)^U&>Lc~42NTP+n==r zff^j4k16rsj%ns99LRK`g-8hdqBugcm~fbWq<)lsG|nM3qAJNcPo4?~ln%~T+k`{1 z;F!{(ScA%s6kl}9JJLfh&vQ9n~ZOFvsbM?U}$cm*qr zEh~i6WUh74ATpo#w?>9fd&Ccb4z>wQ`n?91={D>y zs~R6r@j`0U1WO8M;<>4y0}U?Mk1a_qPFy%$ujv!?GxYQIi}XwMOZBPxH2n%abCqDc zK0R+fnxW4SzB@<7&eV^=#u20?p|4ay4Iw*y+=L|f%anSJp6hI77M6OhT(jBw1UwoR zN+lglz_Vfn3gLX&bV57_mrS-EE|h^PT*QW=Sj;M1tO8S1;1UjmlnFmI$xQ3vG8LGr z0@Gvw@1V;qUWLnfDUoDVxPk*wvGp)r=1~tbRA8nGT*-lm2R=XIKvYVIN6?bSLbyf+ z=BU726}VOgs&Jhw`s{2ceOP})e^h@g&ki5QJ~m6Xh$nCzcfDLlJ=`Dz7%)vPb)EEk zBGolBk;UM2cpA&QiI<0{2G8hKxS4Y!LYRc5k^PzY-!+If4>VWJ(dX*d>euPl>o@2( z>Nn{(>$m8)>bL2)>v!mP>UZgP>-XsQ>i6mQ>ksG;>JRDj^e6TC`cwL|`g6L%vi*O_ z4nKOy8VT_nUuoRiRp1U4xKjo0Qh~cw;2ssYR|THt#vY>jaG!FYN^!pmJivh{3qH8w z0I|ScIA3OpFR)aKhgIM?^;F^!mEutuz~@%78PI{djm6XICZy#GElZc8d8X1}3c!=H z$*h`iuHY`pfz&`a=Cx{WX1&{<{8# z{-*wx{hu9RtTX ze#HsDmpu5kPUab))QjX=)xqm3&8XrV`TQo7-i&BTl1RqOu)8QLp(TZ3c#0>i zEYW6?dL-GX$NsJVql2Lt1*2$`4Bb#jtPH_a9ABspCKgZoZR&#xtRdi~E@fgN*TT=) z@0F3*4-pQD%cQ)2D z);BhYnpGg8X06Yw*oIiKZ{><@WGux3h0J6%EsVCtT1Gpgqp^;$uCcL7Vr2+ISSgDg z!ml!bp9;ARV+r*2^LGw}1PE>g;tsZ?@Jk|E(!<%&PTV)nD|9t(D|9ou8$FDkhC)h5 zJ9%V($d#pqUfLPIz%K=oF6b3Q%;gJQEdDLaD+FkWzp`c5$m0&AlSs^qAoUBLRGM3`KsW^K&YO7TC!{y!Oa*PNjD@jV0 z<8FBzcSnxCT)`1WS*{OFj;S#ZH%6)i1~+F)^q?X$Tv7<3iL5bn7^4EsRG_&Ew2*-+ z)bZx0iet}jsRFH3ptTCLQGvE9u$Bt6<3LEohOo9QSb+Z&`VB2a_cTTudl`Eh`xyHg z`x*Ni2N+|F1C4`>gN;LsLk%TEuo`lF=q4+e9&dG0q4i|jFW}+U7I|BUqp-m`%bAZh zLa3MPMBl%Jhb%=5>3$U)Yg_>vMp=`AltnDZk9Bf(^gpQrU1UHJm(JqG8YdXzj7Rf? zJ`si9NEZ4egu2Sm$N1?{8k{WTdW3PLag1@CalCP|aY|m7I29Rn(oL4P z1O8KJWVw$t7~>6vAnhZRs5o+tzcZ#@nsePaTiDB(8|Rn+m!xbQp+TD-W;iK8klNU|g+c?L#2n(pd#mIAtafv}!IocvaVO&@8=@92=1(zAZ+rwC1s#!-YNBV>kmoqI& zNED3xv5;v7eiCO*1y%?CaWW>%)LJGcbjN!wBt|cM=1$4N18oBZP7}pgu+*^V`FI~cOuW=um#?X9t7>6Z`*(nd+8s$42Ypda(8r_0o ztUD^uIyOP>;qNHYc4N~RxK_Nbs#p5QjK_^9jALM)aU43Z9}6eI zIC#=H32z^k;MkNw3#|8=W<3?N<_;*7kQq>F2*zC!#is#ff(o3W0uyCm5IR6+eFb@x z;9282<9TC&p~JF16m6<6x2X^@9G&~I zr3(EsZtokC3TTMb=q#2EN9^M7C&p*SJa`g5H;(Ym_y=d8&-g3>wDMuoY8u~EfU8(# z;i@dHF=*vE&G_5+2fbBLaz|uJ+-rd4vjm|OaeXBOEEM5os0QKfWC4n1$$TICUALGw zu{Yr-_!)kImGCS42D&LUEG5(R0>kv+J=OyW)W9@xrNf$yAo`9lSOvCMfgMy}s0!>T z14H!f@Dw*v1eH<(*YwP?>6=6FK3XFQJ2jTDbAG}?*d?)A;Zx8cykM8CGPHT5CEIk& zz^s@}%%)~Dv#jw!RI8DVcG0?PJv3MISf~|(UFfOx(t2x~YJD&$cRzGtzc~i;ZecEi z*6ikEtYd1IDqanXm5UXn-@8~{5`n&o)#!3!Y$H>_GBGHNR?*hgnwxcIOLLIc%2bFQ z?BZFncKF$>GjgM1kRuz=X(ruHqeS60c@b@n;1GthCW(3t9w}VKYyl<_ubr?1q><@q zq`)P{?sBFOMsQ#-QQ(C;rr(%L(?TcownO!$aTOUifwj%X0@}AXJD45Kbwp#OEabg= zT{PC+WY(R`88C`NHIjK(gJQx{X*!mM5H0`PnVrq`Oht^!YQ+$G3=?95tPu4kI-KV^ zz(UcPuPg$3bTT(IH!{)Tyew>>#*5c6Ui>CzqY>k~nElm=@m)OeF$5 zGmSV|iqIaS0-Pcu{!F(kXNyjFslyI91g=J?geJkKK% z!L2>L1YShy=BVU=Is&Z-OBvO$VA3wj43e_8GE83hPeiD-6n>)Rua-M*HS`GRO_la z&>UpuMz!7s`;HP4d0VrVhC!faDZ*frVpeBD!wxZX15|H^JjaV8vj*FnVz_6Nmz`B~ z!6?W%M;Kio4fiZi=Y)G6YVK$b%dgu`*}CnVt=le9-7?{xcg?TcaO9~(nB5H_CBp1( zSlu+Jaa4hLfszSo{EsoxR6@R15__W9zdM-EXuF#u%sBS%DDxw&k=Va+6AObQH5@G` z_RK0_bXEy_j29%{w`c1M|VfL);h#Q?h!oCesH;55Ll0N;QE$k13- zG#jP^NCO;h9$_A79%T|qzm$Xy)6&FD0Noc2ihe6RnMqkv4BTVQ+yJ@Lj5JXUSBoOW zA#T!ewH!*r)p95eSIeO^TrG#vaJ3vt!_{&q4Oh#dG+b>2(N~rVbG&)FSu-b?XP6VsGtINiv(0nNN#?ocdFEvEeDebHLh~Z?VsnaliFv6> zQE7$On&~F80Wtw=srOK*dJE#w3IB=@Em(xqxoZs~ikz)fJD<4x2^_^RPmUZ6WWi;rUWG@ zT{3*+J$O}vKI}CJSObBSZO58S5lC&r%WQ< z5R2ivzdRx_NSUy`6V|KLf$5mzSzJgeLCT&p#Smn?qo*Or66oN(5M&F?7fdmPSWWzT zmw#OTy!oOj#~s5=J~nY4c}(0$c(40Sz47o~uV77;@Lmf|C0rLXkg3=;wBoB~qw%~b zNsQ-}sDwgx2?t~BaD9ga;M4lFow;o zbf5_k!hsB+^Ed!{xhagbMZB!?j=9*}Uq2`xJ~$sfBp*IBA3iJ}K0F^jA|F07A3iD{ zJ~|(kmfLCNr6qR?OUv#QmX_WrEG@rNSXzRou(S+MVQDFz!qRd)g{38V3QNoK6qc6e zDJ(6|Q&?J}r?9k4Phn}Pp2E^{J%yzudkRa-_7s+u?kOxS-x<6gn!8}%9dRIj*IZ)0 zXTEPPH9s&vG(R#wHa{_!nV*`UnV*}>%`eO^&9BU_&2P+a%@yW%=J)0g=8xu2=FjFY z=1TKd^EXpr*#Z7rh7>Q4CJXB6(O(md3E25bY-ORoCIQ7lNP~ez{6aW}^?B_7_zU4! z4n!1Hdx;L8ipON8+GB+vqd#MJf%H1uBb9b#qD`$CFhMS+nN@`|c(tN}s`%)b=_({7gfr#x@HVSxBf0)0T3PtggqMX}G-z$L zgR|4M9@UK2KsuZwv#-NP$U--Xj}*>TA$02~XA5Dn3@CAIj=}D>RT7HlZ}T5>pc0G+ zEX^udMN16IQ?hhx7a=H*VVRa?*_LCumS>eM-wLdXl?Li*VvYHip?aEIEKpAxrl*Bf zXSKB2SZTPPw$@r!8nUOIwYJsX>R`=ILiZ>Y-k1mO`Jb*XMb8m72;#c?izifWS=Q0kwVA_%PsmQ6n`~m`Jcf^ zGcg%0wW+rv4@=+?6ZC-dv;9qo4}UfEHYux$h%Q6lM)79!`Wx~SH zaZFw|Ia3QPabql>gvVdH6m29t41H~)@C?Gu0P$*P9kLTb^QbECZRNy+VJfG@D!Mly zQ4(=zhPY4$TFELR1Bt`3^tJj~VrUk;+b<7~I*xO~oEksx=QdAGu({RW5;s362;DT< z0tf7i_`nxQx22`X;U_U&R4G2jxGr1aAbhc!zmr@Krl~Zn$N)i+K;n;$+gQcYDq?l8Z;~<@ z1<)9r@??EGCSGNvjVwtOc^#VYs?qm-R{ehrF>u8kjR=K7lFkHFk{yvmnCa+>XS>oI zEyqiXhY!;jWmNcQ#Y=>%{RkCcM{8J~5$%LVFh$P1vy~~iU1=9<7>d(9ts2{G(ootV zKkP)Bw3|>BWI@*q){mkzC?OWuSusUl5Uza1t*t~rU;?l>2qP_pfS!@XAreMfVvq#E zoWuwM5}Za55Mbd}A0RBd>_?!K+;-XlxvhmnwgF{r4$H9lx} z=JpfY_ny{Pr7*{B{%C72D|VZ|kF~EQyUpLv+TWs~kyvk+vR(%*?!RYBKJUAt+{l+E z88%$7u`|~#zL+R^!0&)&N;l;t5BLns@qmA@b%f)rj-?qp&c=`TWt=Ai>!?h%0;1*}IgmTF>prTE|(n#yqzlk3uM(+sC2} z3hu^f1SQqZ5pTmXg^k1PiVyb_u@0#ZcS%&yAv-28zT%yKYzVsZpZZ_Ne`;_l@_Z2O zg<2^x7=kkH)=#m>-TG-(gO%%UeLTvlxLZHn%6LLQ#yY_|8$F?)WSwlqp3rL+c|sSR zhYPZ=#(DS|mf}2|Ek~xp5!M82qMA%T8sY@<5+qIKw518rzmPQHi(a=SRoBB6GGz$U zWq^EH?-6Mi|BpUEh`y{RS$V#!&$Z68a{O6Gb+X8#^*PpErODRQ*ivjxsnNa0vw5QO zOrJ(`T7XW)n$48OQ+!s_@cw-1B5Og`oplM_S;q;YtLdnX*cH;$)wBRB-j~y*sq6*# z66;cH4g4?Dj3s&m&d(BVoL`y(SCI%0jbM z2t$|ixdrG~g}EwltqNSnfsnFXh0Q4#0S)h0SktW;)=cY4>niJN>l#ZTu|OqIyfmlU z%Bs2%Kh1fq5|iR;5B5SiHT+W(zrU^C>o8>Oq%C z1V0z?l;1b=Iq4R0Jku?i8Ec0zLf#drV)pz+xP$!QQ*<64BUhngq?i)t?6;=32UD9q&44q z$|9n5Fn=PyiESz-llRZfFu8z#YT}|5@DgYv4nn8ldjyt9E{tan*|gU`3|G%V;Tg@q!}hUa{^# zMF`_J>o-&31#6+2NN<-2Mh{}VQHVLV()}v%fC@Y)166oPZni2s%z-dwIuG|taTC$M zv6M$-9y&ZK10g&n1NY)Ts|k;qI1e|#2KplFb?Xi5P3tY|ZR;ItvGuOC#G(wsZlxUc z^?cHLcv3E`9_FjSQ!4PZ3Ou6%&&og*o>SHGyi8FK3sm3*8F&I6-wAV)152$BtPib^ ztdFfvtYy}x)@Rn|7I`(xEJPniM#7H1h_m~0>kErufmVYr(6nA*rbT^9gA>tAUX|sj zhu2hKkqW%70&l3mn=0^@3cRfX@2J3H6?j(#mZ-pcD)7DvELDLIRNzAu_(%mlR)J4c zV3`Vhssf*>z~?HkTm`;RfiGo%LKhv8^dtPMEqr5rYpt-pv%a@}uzs|DvVOLHu~u5Y zTEAJpTYp%8T7Ox8TmM*KYj(jd+9g}J4coMHjwmhLgN4j;kTqJ4ZKDS#R(?DUgz&8j ztWbgPRN#9R_(27JRDqvlfLy)NO9T{xLbzHP>2bby`cUmDXBoqqWu6(!Rza zc&C&Qy++ucUABEYuq$>GyQ$qwtUK|dV~FNh_peyp3DlqkLMvtHMC)agN*JTrx@anV zZ8>(G-O^SF=va#-)x&SBPFMi`>e11hGOYd~13LUE16BBok3kU+bh)Gg|EK_ZdqZ0K z6aDG|!z1H=aiFH@233ltSp2cj2{p~ggPRsigD5F`h<|__$q72a+1y^&?qqki3x<`S zFbK+#1WAGMX@j4If-F?YLQS$z(=6013pH1v_UN>WRgG!}?a`H(0<=_tRw~e11=^@U zTNPMK1=^{=+A7dq1v;oeM-^B{1=dx8PBPF2I?JZh2G-+1ND3m)d|Tt+WDGSxw<8S5!EKkrC*<}3ptbddoK z9WM%f#fHAddiMJEHukpmV0(zYoxQzX58dQE_0U}fdZ<8873d`cA@r7kDr_pZWLKjr zIv?RJ>7ZnN^r7~S_Aq-VduMwW`#Nn`oDF!yYb3>A!RRa2C++*~p`UC^?O`(&*jxqr z%K%30kcF;?EmdGE6$oXZ4GfU$*~jQ3O6*}hce8i5N7y6nQT878p7v;aFMDr$9~`|V zh|eL?s%>p-EpjLzhyCoTQO$z3F{m+X8)ytP=vr*jafrznEOJ|sNm^tGgXL<4Fhm8m zQ-SSepdKET7x7he;YP*NpAi4RHpVt$@fON-kbSUyh<&Jin0>f?1j@IeIQymYVHasE zVdMOSD(om1J`}yo2|WWts~AVwN888P$J!z-$%*@jo#f2JjA3GCgJ(Y89*a`%A||F% z{IL!#)v$4 zBzl><9IKSr0a1@Z>K?F1%9)lZbQawMovHESQgC!0xK|#ycOJM;7OaPTWj)lxek!oP z42&{H8H3V#P`B!%kGD^^YxV^D40|GK>rDGB`)r$>#bqin2K~q7fCp#61B?R<;nb>x zGE#f6ff_Vk%V8@sK&mfg-?+iq`nushm2*u(98?fvZo>;vs1?c?kd?33+N z?bGZA`y6|+ommUT0iiN$p%~6t`dnaNn7{O437J`jC1hrqI3Z`sxX8X3r;I7~CCQYL zGYZFfa|gT2)@-ngIphp>)A9zpX?cTJ%pzx4nZCMVCC-^MtgwX4uo5Taj3P7bEA6Xr z6v-JQ;-p5#h?rr{2oUF*6^#Hnoqbwfsc8%@mJz_!n(~j+Di%hht>m4LCkK3LIxh{#`ICuehlr z#&pVd2kzjG<%2GQ8r*3gjaivKBD&k`yYe#MjhT;+Fl?C0$T_6zolwvwnrnsgAJJJXL`p+vv448ac;X^KUu$+`2p zP*fikOXmElJp)}_GTTK^gV#`fIkALt;{?5KHyS4>P7;*PihL85uEYs?%eLWcxr^ep zUl~vW@>uYO{kDAx`Z%XBJnz_x?M#)&>+j}Oc?ni|9~McLgwo(W+=NV$i(|2Ql8;sN ziF=X#zP;2|5{eMRRXCTmalG)w3&=7@ynrkNVtAYo@F%zw)go6*t?&j1nGpVo0YRNw zSiu(j)c(vCJ<-%ENcp*)2@12^UPVxtFR(?FpfF$JmT~pBxWC4X=X2|c1pNkA))#P1 zP_5AXFI0gv>Q6#(5vK?VsYkb?Wa@GMiGV38aES_BDgz<9A(eQ9FqH!#@)Y$Q$B2{s z!_ojE`G+MyihE;W1N?6PAsHEtI|ca7{u4DL#J#bwCV!!3gt#}vjRmP8|F$)Nb(49N zoS%PWe{6qZUypHbmf0-k%|rTE_P6#882jdCeTDs<{k{Ez{iFSp{j>dxO>u8l+P~U= z+yB@K+YWeM_}?)MapYH2dASOtVQ8>2fPLT!l|l&rLX{8UY#gwXHjV)ykRbt5fS4GV z&g~=`;3;AZDUa+Vw2+IXdT6H3&W5_k?pjnN&UQ&B6>uvm67abtWZ z6E}w4dZA!11*hnUQDZ1(Ov#a>#^}y_y5YD^pt5R1U*7&>CP&L3Y13OcN&-dEcq*YK zg<~Dl55(E{DhermAkGqDd@Q+n>tUu0C^1xMT|wbh>YSF2k`#wmp#&BoC7BoL!fP5K zB>^cy%EF{J2}Db#zm*6iEVM^Ll3v)7BYz~xbYUw_$V6qBXsA&c2Emo+XEHHd@p2yy z#C$MBCDW2e36GHK{k%d4M~tJ;(NRcA?^&WM_QYgHKnd`tL{3OQ@P46pa+E~+z)Nr@ z;=x3tzZy}1bUzT?7G5p4Y89^G<%d+h;=-SrnSA@#I~zJmQYrH8PYGptTb;^0(ipD# z&L^1(4)OLP884p^LYS=rb7Y_jsV9086~~jgT=)dIRt2u(Ku9Et>v_6oBl@cE>U49u zJF>_69!^iEm($zH_^odt`K@1dRt(7|SB4zS3$AW4?vL@BajenTdDzN0nUCF;vhj|a zcti2t(tV}eI9Z$Hc&9jr@9#9~9KN5knRBwSMc%-7EddlSvyeL;rRa#Yhj3!K9TFM-7JsbOA5>! zlZ}9AtJ`y1O%h{U-QH0guBTi2)a`l|Zjnct{|7Wa%sHZXWbvrt(Zyqm#}&jts(ZLE|-Zg1ypE z5>x-!A>7MGlvpxy4^8h+afw2J5xIxn-)Yo2^Z~f=QJh1MaoS)cV#rDXMV4O7Q>(Lga<_As*%c{TqQD*zFuv$|EYpqcZRip0FmXY084pDx4#nBb}qf zB^@Qu3G2~Vvj>?m6R5#4ShJyOnUBjww1+3ym-kqzA$W-@Ild=Ak9=4k=N#{h%`5c; zEcG$D)NzjDjarYqQ6KA^=rrSwpJ{nnOP%&ig#(>~oP(W1oI{<%oY-6RNlxr7dZ5FW zkVz(T2;Vrl=)0LR;4Czc*-Z3&6cm@qO;_VG`BdjLC)am#1J+&f-8|k=yd=|Zznyuy zlX29%I)Bkrs(9itiCTFmOvsjbhFT_hW}fJ5WKP4rK^lnL6|>WaWRWMP(J9JV$WwWj zdN%guCz+w32JxqOWM+${*yZv$&LpRs>a>|Iz#XI=tWn~Xf*bA{i8KSbKF8aI3cx5G z>E{`wDZpgsd`Slph!N~j-e;K2kriP?C4`<=p%9~aB)tc@|Ewdb*4F&=T-0uEbJ-9Ca&Og zC&Z8*Qf)#UPZZz{mEuhmcuNLemt`|hwm$lm&Q;FU&NX?G%|gi*$&$@>UX_^?k;zPF zPG0u8n0=v~{aR-}iX_Yg=@HNj=Q=bhC7IUlln}x@a#iYKi3+@@0`IH9QWf|>2CDEO z?*(WFbT;vk3Vf^rpQykx75G#IK2w3uRbaUae8GW`1Y3+zRo2G8sk7H8c*sr8&CV^( ztcO~CiY59uKs&0ysI<`L&n=X>MF#u9$YPgr4mXC&8viE|Mia~^k|Kt@03(|?aq zIQaRWSo8|x_dG`R@P}HvKV{%IH1xh$bTXh8;VI{7=NZY+F_lJ;XPuSCuiVh1EYCSB z&~rde1y<6F75pV!HTVWU>S(6awdQumMJHGV|**-G-00eq%+@n-dX6piab^rhM7~16^5A)Tluh^4?B7A_l9fcHl@A> zU%%eLK_{J9BAqREFr%z43YHr2yLI&!gP6j+^De|G#qzD`WYaQNq zmO4wd51bECjN#Ek>!j^zxwV$ePgk#9>NvYgE#KB`5`BeCc$DB{=M!g{^J$)4eulbe zBMO6GA)VI9K#)&^<&I~zlBvFMe3_~U?>QeiUm|5$ru@pO#|4!np}hvJ^ey(7_A;jx zC~OB6s>fGs67zbDp&)tm-uVVdq!pD^2kW%r;x8 z1L0iv!D3j=n4sMnF8}^SJ#^xFz)IscQ0G@vGP4P+b~-;a9*OC1HB*4qTot(v>&Y!= z!zL=wMFuuj+qU2q-JB(D$;H5`yiVAR8t4cO=l2OBXfaM6-SY>Q?~NXfCG>18VbjJE z`s63{GJBgHB0=!~Xx?yL&#i}+@`%t4t2{ELGQe_e*Ky0P?=H(T>j3N7Rjzu)-B9hk zIH0;sT+ghRDVw@0aE{9v-E(x@91HrL_l-!x7H&VeAPwrUkiK#uE!~yImNK-$*+R|O z8Z-8nsoEff@jvj#=gKxN-s6{TWB_tfX6bhB$9bw+8*32C{MsYGfigcG2C2X{GEfiO zs=#0s7@`8($-pSQ3$;_)%r>qqmN^~Wb=-B`PHty+J$L;)JKq3nP?c*?kJ{Z{hF0L% zx`PaTW3M!Z%FqfNxaX+LxgBLG>tUD*?4$xatH3TQu&W9Tmw_tmW>O3DS+NScb0EY7 z*j%ud8sNrup3}^2<+gR#ayz&ix*NG0yPLRO+^%jnx4YZJ?dkS%d%K&ueb9h5XfGojAuw83&mMXF&==lA*+#v9hEg#tBIl4Y8yl93cZ$I8v_50ZCoxq!H^v z?)nG1JG#T%o!p(>UEE#W;d!;$4QsPMuMOtYV0U*FO1e zH8?~P86gt+P!#!CE=)vs7z%TyT(%Bp$v{1vtpexBz(g!w+L|2U9_b$C9v#UgB;aYR zBp1YT9gA|E!R10wgX2)HNpc}NoGSzMaGnZGmVqjq&+Io=;{;hxCLHgM#cA;bcbt2o zds0@7CrjccYCHwSt#NT9HJ*yl1ssZMKnwSaWr%iMQ)CG*5(L6*1sLz1E|nR9)1ih1 zTqtv!fGV0Mb3^Z5GR5Fc|}}^MO-5Dy9hOMrCgILT*WN_#RWKBD6vK( z*lBKqdxm>4TEP@|k#&jNr!$jKF0K4FM)zmuf|*#OPg%h?G<3hiw!uk0Lc#%Wa?zw1uWmtgR?q&u}Sv7dU4dEWfjd%et|Myh$ z8sH-rb}hJdajoLng(uv3?z+WJ#pm2jioJ@@yM2m%i~Wk575f)obYF6n%*{~mYmyB= zSIa`QgZr{QWH#KNf*nwW^psR|pikoCmxl*rl~>_G4kQ#0sldY=2#F+wM`U@b@F=H< zc%bhdnIf}k+1$$Aw7iR(md9Bmkb*T>;$jRr8KTEU^Rm#BS!jM1dMXP&orRuJp=ZtK zQuR_L>)?5nrVbWlp%=2yi&^L;6$;^HS%o3IA_Ie9VR|Ce0s9*ZC{PEls@w*_Yx%TQ zSj3wyq-rS_SEitW$2TGux_>8*@?UjdbGI!HE)FSfSDb?Tu|@9d?y8;Tzu~^=jw~99 z!~D10x81eY&}sfVZr;5r@nX-vyC3OTi(T1yetNCvJ@C5; z%>CS5?tbBZ>3-#Y?SA8a>#lGcakbwgxqtP)t1xk9qILttO@5PPWTN@(&f;CgyNjxu z{2yE;3xzRioVbcnfoQCxKhduW9g7O^2B!##B;%c2_LBay`(E+=;?m*=#b4Z&u0mXq zT$#(HA4l%Y+rgWxN5*3~Egr~ka0e_J5dupvru4hpi09xxaKu+U2mk42JO}^f#-4*4 zbqf2p+lW)xIH3+c;OE6Pk}3e^CzVfg6AjIi{iG&IC143N;4QgRH{-rI6Iwa|D0!-* zPF_Zu6vEr`NTPTNOfOfzioOD4cY?!o)9Zmw1v4%MDR65Z*%~+%d>kf8_a3aP7xFa-bJJPxJstWaOD7(FHkulnL+}fUFU6 z9k(s!ARDStxIXsgnfaOvygYAn!g4e2OtH7QEV1Cfh>B4B7o`yQUz9@Je^Cl?|3xXp z{THQBv*

L7)htB~Noh^RpHU&H|JzlZ_ce-Q(?{~`u(|3wVo{)-sE{TDHS`!8Yu z_g};S?!Slu+GY$?NQ`=dJH;;MIE@dK-Be|3&|XNyanL#@;4g z?3pOX1H^jhG^mRwIt^MZcL8$eLjgsSPUA-YILMt(H&1lvlkrfKmYUVoe3SI^HuE<3`g>!H582#A4C0gKF~&!E z;Kx~ze3S^T8p&(SBzsHmJbNqeTs!m>FA!_-(Mk0M(benj#hyxfda}2^T5xtpyF~O_2iQ0cw#>HOphrSa#uk@qoyR zg!jcUKmpy7la4U5k{!IE*g?LQl~Ir1AxoGX4?y@IRrp3;XMKSOKTQ&f8ZCNu^oDsm zc{_W;HaG5D(_t6SgXQu{Vpp#YzLlW>x8W;PF}{<5Dts@C@j0doA0*Pdox{D|yxqMK z-bha&pmN4&sCmeo`C#q7rG1{)G4k zx4}R2f@*}5>CC|=yMlJ>VXg}NBD1ZBl`8P73{>GdUNDu5z2G-)ehKiq3jCo0f2zP= zD)6@o{G$RG8xG6krc(t?1qvJpNiq+Enlbx~a^hzUOR}H>n%4(~9LuSp<&=2l8WlSM zM+nQ3^lPfz`WX}REagn(X2{&m@)Yk8b+Ft%$~)RS#(Pvh);rES-W%(k;EnT6^iJ|l z_D=Cm^-l8|yz$=Y-WlH6d4-&Vg(&_dCgFU}Up~ZUQw3XAlH?A921Uso1_6S4w2&Mx zobO$LBiB`F-zUcl7b4`Pb&R2UD5n}DUiILsK%fE@6=)&@VWFv&jNbH7I`$6XicMi5 ze35stH^sZeyVSePo9a!IH5R*%xEwX+$Rc0i>99w7gNKUIVNVqptpa<=z$n}d(}`?k ztK=|YhBwo@(z{9$A`<;K`)U-T85aUU4X(jvYtCB<`B0~8!GVx~I*jC)*fxF7jvfEB zQK2q)TOj8yKo{tf53hwTs3Wn(n*-|uzhy;mDT#3Nv9UhzTUK&{a0@E#uJ}lti65`t z+giQNAxTjvz6sZP*Lyd3H+naDH+#2ut15;nCpW$1o109v1WxUJq+MidKkd3^e}*5>0toB(!&6Lr6&gJU|rR; zC@Q94fG*tO-RC{zJ?uT=J?cH?J?=f>&GVl0ZZbQios})ftI(P0CLWc<=Kvw#uMXB@ z+-U(t=FR-A1elD_#>wJ4^}2F|cchm(aXHsJ&y(G_O!ibaF4MhP9=URv?alG#drx^! zd(U{!dO35%XL)nP^VmSj9I@cvkLoYvkLoXCA2oK0h zhY;3Jhhc02Y`8}_MHmAcs}!54Ko=G0ssi0qpt}rgXl-P5z~W-V#PM>G_qz9n_onxj zH&P#^zl|MFa9=}mJyz;rG50n2&k_*bQhl+vfmLtOPMcVTWSj4J?|O>=nYFo@HSRiQ zq4&1_s`sJ37>~@})t8{No7cR+S%RjdFl&nq^>5hJK}$B-##gEWn2)+=YnvKPQt?6A zQY=(SDgc2!QHzbxD@ifE2fcX*j8wGP>6Oo7DtzK8Nd>IuCuq2RI13a}gR{I%8)NaA znnWxZ%8#f{S|NiqGqjngYhF?~CDzr@x+QKjh&Uh&40y0|B&J3nDn6#|;p zSkh083!o&$0#uRLMmVJ!oxPPAWhJxh7-!X4+v71j z>r*v(bWxIGrG(Z1Hp_?D76qUKmC)Kc2UIWZ)xjX%eX*!`AG?jLhJoqQiKhM%l*@iO zC?B17IiXU20~SCct1B*a}4uRFGckaLZnqF5NXPH!C+UwYsjRc?)y*^X6)Kn>cI$C%qQy&{5{sqYI*UVzj; zsd$Tw^5ep)gIFz6_Yk?J?7q%aSY)*=uT^eWUc21BtPq)4OEDRH1rsw~uQjuFklC^s zYAUQ#R+4C}U#A>e*RVsm0a3Nch6K$K28lR#VoDsW7{)p@dzLV{_IPv4q{q!hMaHW0!LGa!&PnlxM&$ zOq@7#PlSf6P?%oX(@1@2C%fhC@w&k7dGL-&8x}BUO>}72xm;h~xV%ZZSGjk2({i73 z-?BnV(`c56{A;yBUON84AD(xie=YK^rMS`3fw|E##jO#^KsOlsqv{k#T3eKvBQ0{< zigXqp?HpkoX&hs0UM5FcTZ(FAjJ85XiX*MC{A6iVq{gJuqAVfoff^xWN`51gktr#( z09%)l7|S zebR_kjM=5r(5uFf@&|^JOw&-DAROhy+spv1WbZt4=mPuX!ByCojh(S#@Fjr^?3E7S zRD=mTl*z}((DIJuVdb4fg;6r?>vu+ljb=5B7rncbyTF*d@-gakK73Ffd;rR_0jdZ^ zC231Ayu4d^_i}C++z}|n{#=SE)5x;o&!RbRwga7A%cIH%t*Il73bw$ivs58{Hy&c? z(KGROkr=I+d^z{-``A25PC!YN zyYJ)5nTzfxmUAw;pOnY%WaOt@bUy``V*AOrmy~<$ZgQ{v)N*{U{Wj+k_q6h8thRJ= zuR()UWG!yf@mQpCxBc{T=9+q~+{iWc33)uvK%UAq^@-)2d)#N1=^nRY;_+4Nv&wW8 z``~0YrH+O2rmkeg8{L?u!7VCn%4Sk|j<$Ac->i$y(RL_sqi5id zD4bWGTz;{zu<&Z(wZfu8Clp8Md>RgF1ksPgjeb=)feq^n7{`H-pejZzByu6kNgRkM z>fmHFd3zKwXO`=7c?d3o`Q;`HK-;>==Oi|$cQDPL0lH+Ly7EsM7) zFE2N8pR(6~eV=ko6^9nU#)SCuK!D#F&3Hc(UNIn}s za`6$rL$b^fuc#m^0J@?gI2JOaD=H6_ck*s?9>!T!To%=6sGSavp!q2mRUR$Z!9}W> zD_2U`9nh)pSa~<^@p63cWK3BhqqU<f*C-BU@}!Gnpd ziXyGi!NXgqLgnD$?J_$|NEkJGn6MZ#D~Ad1Hh!4!4jv{f$v;eBNy?h3_y4ttf8V0G zbwTAhnXSuhPR`o@gS?*kA*v{h@I#phSnxk2Ffkyyn2cX@7{ho0_&Czj0#KPi zr^3(W#(fegnSA{4**GyiFXs~lN~FQr&gH^Df)G8G{k5!s8vI(m1~)9p%uDjcXC%U= zB|gJ?rtpW@KI~xYPu#RjXC=qyB7cZWM0pHtiUg%%gqOfIQt3p^9P}sUqEetFSDuA!~1%KPZ;KGoClD&Df zB3X6D?F%~;h89A&Qa-s+yke!}Ev>tBe^g~~)vrz$Ce)VnS!7`19>wupUsztT_V;`buHx-KkD9aW*TXEPuef!q zFq^ex+#!@BI67WW58wiSxLe6Dt_c=*4KEHw)S#))&M1V<4n-E63clY=lm()n=+Ywr zxNr~>qWJi*B_AIx{5rp-pEqm7?AYH91sgI7|Gc!XNZ&pB#I zlO~l1!TQnrY08B^dIF@p7H4~d#@>v#_mvD~>=^ma%iH^PFh^E@0Ncv%#o2vr+8sPm zc+A9)VLk>?VeKD_S%qs=;5rq!UIs=LZxFXgB{)StRXc~7WT9KL&}~`h_AGQq7P>PF-IayzR-r1~BUii%_o~2sDsaCFJfH#(av-E8 z2;m{FA^JDYcMr3Za{6aH3$%kr^1w&4pt9z=9Y?W$e@@lOA70$8xO=g)A0N4_=hM62 z^?lQ_EZd6T{boDm#qa8O^Sk>!{GNU< zzqh}s-^cIk_wzUNH~0JdTlkHfZ1w#w7P$XT)yj)s=8%!PeBLAB_Wpgv%roKmK%jB* zDm=zbmMjwYoR7;u=BaPqyWp+;s^7@l;HEimgGKWAeXtHs$UUV~a+;T{LekaE=fxGp z?}{sn1FUU)g@|TSF}WpP)9HtGqUo_lSNqe4p{8!>w(jVz?&%i-5q3@q?P$#+lb{m= zbqrBXhuFK*{3D<3{hae5@(P-FJ`@w9KX$n(=w;jPshH^Vu#u?S>}A`IzVhJf-@QH? z<_}PxvHhnn$B0E8%vV)d2T!R`sD9B?4uixqqh0)6{rJpixUZ1KXGS6chDwx8Ou1;; zp05f2lk1iv{6_9=u7z#;?-&VN1#Il>Rv}*aEHCbnw;I|LS3`WO5MLS??JKuC)6xmU-W=g{rCu15B5okH#*mwZBeT_Rg`2+zpv62h}8@Eiw1Qi*a)tqr!E z82hcUdusdpbjj@i-zbmq5A+o#t)&=nYsNykzrqHX^cG7a7hPzF!Y;Zn5_Td)@84=` zcp`KdHnwsibhyt>gc3%Lo(LU@nUxcvqkQG|NP4~G2!DI$Xfz9jfELLtsR6xVmQZ>e zZsQF}h(|LVASeV^1`a57*ZHnkLsLKAAM5wfduG897n}*N0TKH!^|i?WUK#^=JiB>z;gW5wW!{%NSLGCN-&5Wgn-4S0(#kqWC9)sTxB>po%1YGjBX3QBRsV`>ED-<(thsX5%IG>oG>7Ru%amNcWRRi?KPYX$- zpbSVCACwSS18kGy{1g0f{&@d%{|tYkf3|;)Kgl2MC}cXs1g&6iXB~`)n-m=Dhcwv{ z*$ROWO9|V_QGy_*29y0B>3xfofuO4xJkh@pwced6hCmH2!puEc=>)`9lZosWS8B2! zM|Qi|pW-Vd82Um;?1j?v_gD0x{WyPP*aUAi;RRd#7qe;nkIccKbY>% z@Mrp0`d9h)8xI(RFq+Uq#$Xr%+W}=7k!A`|SF0iyx@XihsI{~sM3od8R~t+fo9z#i zI>IE9a1M5a5v;v|LnE`$s4TQc7TPlljaH%E(H804kd~TQVgPgfYyIo|>-`)28~vO7 zkuVDOfIVR}>;-$nKH}3xA}_!!|7Nt(-DI}6_`^|y!f|8))qblAYH+K6Akv+MMN?DP z=qV*@o&(_^I2aCrL*X!Nzauc{(&NSx#xWS%=r}kY#=;3O4kPxQ1jOLjltBw@sx{4e zDrU{?vXo#U&v*pEzb5;$VaLc^Bd7z4OIM^8SUaU4)qzH!5MJQ(HSz#7h8Ja^0aebr zKtv&02Ld!qK7dLc$v)~)p&C5sKaYF_rJAU$d;EL-`~3U;v$TiQWCO&+2DmsaG(?6M z!bK54n#Z38kNTIurDDC~`c&a1dC77bW;+CPBu&^sUnyrFLU3CUwo}i;ZnkS~g%3uVqq8Dl zBNgBQc+g#GM6roXaSPnaW-_8E!Mpwv|2_YG|Mqm!#e8T2)LBKlh`^`)56~`djC}P>J703L`RQY#;}HP)50qj=`pG}{*Ayw8EAl4nH>^y zfE$p5(D3Or7GKm^>@W2{@;~-J@jo|~`Jeiq`JemCajB3>6EbNOPUUF8yc_NTk;j)2 zhr5$PlQtIzXEj4w=riyvJO|Ii0(cn|2F+GcmY8iJI{Az%tI=6LjfWqA@~w(#V7}k@ zM~rWAK2_cUPVf~zK78jl_RZ^C$vz@Up7uY%1@j`YEj0MSe`5`e>nF6N*Lh}aR}Fsl zx4;O5!gSN9Wv;}`{dHyqQRZLqi&Wrs8Q43L3l%)v2`+xX<`brQ= z9lP?6{xAM-{$FZR5#oeQz`aJg6a<-XhgzU~CZrWYK?QMn8;BbL(h`XKs0erm7IXa} zPyjtJg16CjJ4HI8JotWsEiB9^Nm%TnCu-jes<=z&ozU0lyA-3xs8SfPijq5~$tBDa zCp5rPEJ^6g4e)^qe5?YW$Ur8jrx%oi{T)9D0^JmbsCb;I`4!Zs64bLv@D_ep+aMK$ z-O}$|%wf(fbLWmg98-(N;FipTEAc2OJ>jIG@CQ$!ui5%bN91+x@ zRUk~B#DFHx26&elV?3~hutWvklYzzZ7sC>?3EBp01?}?0SR2K7M;4>KLg*L!o84ydvOw?LAu~WMsr|sp84Qar|m~|#p zYPXB$5ygl_Xps-s<-;xW;a2%D zU#F2WSdp&giPSFi3pNWj5BdjN1X~7M1z|8C*gB{N%Cnpn$&feSZyKx{bPm=F)(_IB zIrYIt!KT5$prtuT%S5Pcf~&gKWx5^K=9?uxO1Hzt?TkiAZHpB!_^69!9Z;g+MhoL? zVt3kB997sJS=<6x$Oq>LVFONp=%Xj15PQYo8up4Ef}zMdeKIkrhEnY)_Cr9Z0NV${ z(6C4Hc{rlmDaZub-7eT!+eO<|8?No9?XHc`Mrxz9J+wWw(OP@6gGu3Tcb1t`*PP|= zg3Og5ySw5X$g30SNvau^QQDtS#!bALq9-hX;G9>S+S2SC3EwcGR#>Ryq5sWl}WY{eq3m zI@nC?1T^{7!R9KIi3F^nlD1-0q>wn{o@q^EXiJP=#g<}7rNcqN!NH;0VcOxEC^#n3 zX7iAszqWRvQ9fs|c3o>9^mEvQW z0`G3g#|~{^JNYtK8(5}N?7%5PD(6FF*&Y8*Mwc=lUB(6{1ml7egOh?2wUdKWf>Q$` zW%u!FbgOc*pCuZIGLz%nWIu$j(4wQ`$^P-$SnULDoOYsilGf8aMI%Cr)sPU{$W0{~ zrln^`d^jA6`2=Ot+4QDnEjV4PX%n1)zQFif~FCZCMSTc*irm180di)avu;P;oRoF;nkgWN0^1mDY*R-0v( zN{}|otRNH5eSx0|-#$0U3E%#-e=S;#62AR9gp}~@*X0>pPGI&MF{=`oowzB1*$Gkt zvu_Y&0<+Hzt`BYqZVGM=ZV7Ic%CE%+e;cw<0<+&9WMZh#4OS6D{b~PBWTM1SzbkkZ zLkJ071pUjD>2mX4U{11Y_~q&zazLWI803@3#NoBG_cW+_WyL>=SMas z#gS@+!GX-2_Db8JoU4+k_JllW-71Qp?t-~sJHtqvx0${Hn2@J~fABJfBbS%i2XE6)bHJQLMSR1DUP6!R=fe7?v`gXg50p<;+`r>p`OWEJ>ARLrHa3G zUt2F>*_X&=zl_jjDkO@Xi1P;SqLuc1H7m|*Nqb%{bDZE$*JiL$Ft!kyR;S5g>#!(z z9R**ky&)+iQQVs-=~S8TTfrQh*^|*V<@*aBeRwE0A~AS}_Kw6csncTQ7#n0lslmI! z&+@s64og-g)O*O{CpKcn#`ZpTm|t1{z>@H{*jQ=Nw4V&xf#6QzgWz`O4(CqiF6VCN z9_L=?K6-`%SE=>HuxTn(2eV~}R_c6sV1`fgMn*xiWW}3shxSRZEci6|O#570F0RDm zE>QD7!+KsL7x#I<96!(;S)=f(Y>|AU^I-5$FfVvMcqLdEyd5kJmTK?8DD%VMqu}FU zd0t!WnKkz>v-b5>WM7%V;p=>J{|1Ft28VC+%HBU)_IKH`zt8V#KjfGFBbKdnwVx1D zy4p{9;{2KIYAdti{2Gaq=|aD)%36O%36w7M2c8vu8AXYpt`hx(-cSFgrQWj`8u(W^ zi1Xi~=#1`bj28^d83%#LwDOmMXTJDL3NT=Sqg7sXUUFV`UUB|1bdg?8{KoiJ%xPl$ z-Y1>;&Obq+Qmkl|96<--5k2n%u>g7nzZ}cHrUSDg7FqzKVj@)wnaYEfA{AAoso6|~ zba>yfD@(Nx9H){g7b?G5zq6qs7RAFthNmuk32cD1Uh&LUGF6L;FH_;S{fb*DSL%?qEYr5k zE4h`m(r7Q!wa%ma2}31zlF=A^R{X*ynpw}&e%;oVUTKn3T#X z{>C|@c?uY?cBOr#L#1P7oyxj-b?$_%@|SEHohx&2P-YtiE=-PzuaB8ETj)@@YN`BT z{VDP*z=|og=G2SGkjJ+x^7wX_%ma$SJnR{32 z;Jz$$e-?Tm3q6>H9?C)wXQ4;3(4!2Z=`}u4dn^k*o`s&sLi4iFlUZnf7J4cRJ)MP~ z$wJR&q35#D^I2#?7J4BIy_khw%0e$^p;xld!YuS^7J4lUEy_Z#t55@!Y-JqMWuOWM zA5cPUYAD+2B!>Sk;bocKDbmS5oG0fHLrQMns?6dNKCS_gVoHm&rj z^sV%(Y*yL4(!a7rWy{J|m9R3PvUR0e8CV%q*`~5>WpHIkWxLAul^rTWD?3((Rd%ZE zT-l|vYh`$4x5}P4d8KlPfImgdVkG8Xc|z`;6>^{d4I%ffyn!_rjwI7B*bP8QbiL3v0CzuN8v$6d$4CJa}US>6LECZ)Eh}_sg&e-}4C81owm1{ExHM6}8wMJ+M83Kfc%24ad=7RoebYe2kxvVm^az$l& z<*Lfu%C(j2D%V%KxLw_DZg;nb+tcmk_I5XQ`=I+t9(;s`5RCASa*a^gd*I1U-5Lkd zk+K?a_a@U&+xs$vb_4;3LMpFyWqoslsJ!HLC5Be5OsQN_xwLX)<)+Hbm0K$P-CHZS zRc^<&X$mwd^X*X`R+QO8B>aTzrP@0ycS((pbfo^fD>GmZUd<@;J(bQ_BY|IfjD1Gs zj{n2ndw@w%bo;~A(>=2@v$H+Z-P7IEqeu>m5lnz6BP(XbEGVE71O-u15!BTI1yM18 zB0-U0CaI_>h>9y9n8g5?bHIQ(hwq%}uI{SpUgUj!@4essKX;!8*ZtM0Q>RXyI#pfa zRPF&WSplEyCWIm@;7~6_R!9K#e$@w7A5@)IA7UkAb^tGWg%rTKFP0O3@4ZWPl;D$vtl zpr`pZP=TI-G7G$98b4)Dk%rupxz)L6bI;{Yt!^YX#Pe(eW4}U^djW*X`Nj{RL|%mA zF5`=G zSs-c^S)bbgZggV~Bgc=bl+E-MSl{N#_GU+TL8lKzx!0j}D!xiXo?dwLKeZ3f}Hv<7?XbmBQL|}9y z(|CyFgfO=f`4ntQ2|uq!PmPB9#!PH=YZH>D?Tqn6DwL z5T^GVQT{mjJoiQJ%iLGFZ=oJSnBMO|jnjFpg@RvwnENRAaqg4crrh_rA99yhM+U$8 zkrS`%+UZXqo)G-%XOQ70UgKtt4d+|Q`b+LtpyNJkCGuNT5x+wbLOiTLpiTzwW9ox@ zq0sK|Q%`Q@Yb}J(f}^Xsw{sul{>=RaM}s5{!>ctC@;9cj-zjCc=CT$FqNM{Vba45c_;^S1kD{?nre}=oMze#@`pbTR;t`w`%U_thgxXA zdf&X*oOHm2Vg|g^)EMa^(%cscwCP?JsU;5YlbeuMJ{8F5ir$2@4ucLf zL2n>IRg`gA=-Sxgs!6fQvFl?u#O|-^s!feei|wuLqjl3ps7TDb&Rw$w;#s6)xUf31 zn{U%4D2?nM+apX>BAqKXfoa=n_}x;jQXR%=j?(*zQ{ zj#N)DX|5zhS`@su`|&q4+nXJa=@;P%;Jpu~>OfE;Cu*VK`N%O8JRiXlJoM#x1$Q0Q zB8O9M!G2WFFm!|ng~IUD&%puNK3ZR`pLUXVvUZBrUt1TeCr9yx3VCsj^dxPdPk%H} zqmbyV;RjvU^sU^l9ISPfj-jHunTLP@9qU77t^%^n|1Y}x!x!M;1=3psZ6UPqpdF+eWm$9#6n`2+cF4Qj4kd!%Kiig6(L=kRf zH5|h^)z?(Ttz4q@AVYmoDiFrG7$!o4V?$!};~S_H@^kE$*cffBHV7!us66YSmvwOE zyz!yFtX-=85fieaPYq{sZ~VF$W|1?)J~g7A&qF!U9Ju11*NBK8`SZdBu~&X zvOs`yRhq=k1w0*H0PI>r3wrgYOJvv*S80lj$;=%g*AZd@J2C<*I?fmQasEQc-aX*X z`uc0MB~^xeEto-GMzWm(GS}C$1hr%!?aV+1KmFqaf}J4jfNRys+QzE>@l!>3Llwe< zqhRL#B=w*D<3o7L8#R}~X(H?vce)6>)I+1;VbSmzBJA=WF2XMFGoxYd2!Kqe+}tsM z0OpPY1Tc3TAW$lIBp{&Xjs*nN+|hu5nmZm4P;*BF0&4D5S5Ww6~f&k`@69fWsM+zwQDbNEL57it-*6Xz!v?jZqa6Gv$Z+eTRNYWHc2 zwfi-JWi#?m8R82)-V_CUDUSY&NN^DcAa|StPAtA$g3jVda!NpBs|I;BjeSJ*~kVi2+=vfwqNrz11gaZwO9B#E<9)0kx#UZd}bLkkCVr9Wqa8_gX|ml?3bDG`r23Ug*Jva$<1*7?;Ys8UXy|>V7BiDWtO29z2GLvdtvB(5vn5}`s)j*6zD`B ziNMDq@CgsV@fu#5Ix;ryx;$X$GQHFXN(flwvp^D8Ar{#bhCUaeCS-iD20_ifL>>*6 zt=;mNH`ZK$d1K8L;H!W&RoLb*^mQ2eCJcQWh9(4UM%gnF#VK@!NL3;WgA?tppo{$D z6lFJCiQL1})RB7=RNtO@oBFHPekNvT+hxq`Y`cs(n=C^I$?2NT4U7mLo7MFhi8-|_^L(hbvXTuQl zR3B}f=Xhf*k>`1!mY};Q=#Xhht1%)lRs=5Pfga?AD*Dw(WhZwJlrq9|k! z@=`Qy9a-nEpqEfv+%tm+ge;1-*a<9xd1eqbv9rzv%tvlqzHFzijQs#)V(e4UBF#ltVUZSLsAU*x z6^2@ikPyOuDNHii5dN#Rr?fTNOVtO+2g(P@2g{SlTG$g?SN*j1a&;^zCl8Sil@F5- zmwU=b$VxJvJW6gXw)`_%5Xk>o?K$mvjXpg2f`$)IzNo#by{7e-2gq7-y*5ZbRURx4 zkx!FPm&2j_H)tER*R?maH?_C4x3%--(egXmyV`r&r`qS*7uwg_H`=$_ciQ*b5898~ zPukDgFWRr#Z`$wLAKIT9K0W!DmQE5~(qp=;D|%c{=v8`BPw8pBTF>Y;x~exzX7#*o z>XvTn1>Mn$`ZoHudJ}y+y{XQB=GFbO(vhoo8+@~Zd!t}eW{J$1TMP* zp92E7@e2Y_BIoLDVylmE>DZ>#8aZ~b`C?kh)_N00PX6wD*Pg3N15ATQONoF zD1EekL6n3Sf+}|4IbH=7Or`URd~Pav2H1fE?7yZ1p%mi?2mq9}1C zpTQ1}mZ75ejA1E;kt>i_**$ajw;`<4Uf8E7eJ0WRrL!n;b6rYW;fMAV-G#C36=T zyAm#d`B#5k;3)ZMnhk*%xly00_k^l3;hE@85sswIlqveO3ITU?DM(`0+|bUrH8%?Q zYi<bK}Ez$JR>#e|?0Jy-97v-H`lE?uy!&Vg3!Mf)&< zF!9ijWm>UP)Cje$(oVTmOpu8SXUIvE1&{-acDa5Gi*gXqv_ZW?7n0zyUjUi7sqU3g z=3Bu9)=T~QM!8#`2Zk_!mh7GYXqP>iFPXMegSw|OUtgg2N(uzHqeqhlLf)aE1ylq` z-InXHZZxM8liie(vaixzsZ;h-dMNuV2Pg+B2Pu7$eUnEhM=D1tCnZl#9;Y0y^ip~& zCnzT>eUwv@{gdcAkp1xi`&OLm_$Q3V%a>E#faIPDjDynJ!e3rxs3IUbyfjz3Pd`OL z0wW;6075jW3AvUs#O$t3H6gFk1&RQ?1_q2~E)xV5@__!JJ~%lf$*jG&)Ma%EwAa;s zdsQ+$1fP5UNy30@MCPTCc`~1QnSPZ#k%biUu>OdChB6!irq1va$`zA@JqY-^fgdP^ z+RC(Gv_nWHXCxohALIH7z%kgucpOTf%4c5zJ@1w%EzJspGohekpu#W=VI^xwgZ`vG zN*S$Opj@b2q|_^CCr2d9${1y=5>fS)Q25P$;gDYw=8Jk3^zlfz>dSz$w-)ZU@AGp=J6M`9>cq<4a*r=&SYd%H_%$eRT3l)UkzW$8CC^pNrNXTYRIn;20x$4DEqPG{UgCisWL+?mWfuW! z$;&)tiR47!6%lxq2WrV{BCwtZO7PU3Kk>yn)sl@O@VW@RAp+BaEjm{((|MqdyeXsB ze9hI7w|L+g`C0jdfWjp2>mTSJ>L2MJ>!0YK>YwSG^w0G#^e^?V^v(L$`ZxNw`gi*G z`Vab#`bv;Su&p=s_w;*}%aivhKZ(h45+qImH_havum3ctLV^VLXpwh(1A#ian~LxG z&XNk1qfww(ry>p7#6MomPO|Dh`(Err`(uL#%VH3ZXe+b+7cVOdQyl>DS z`0kkTmhv|1SrEogKiPordcMQ}N<=Z<=e0+7ka5oTobtT#g7TvBlCn;joV-4HQ}$Km zHD$fBLD{IhuDqed#msmRd26!$%$FIwMG`*X6f6&Xs0i6GU}QLhyCCqPGK0Jptf6C7 zH)}V0M;-7RsO*L-E7L6xG=@zKs#e=N`Hg^0~1sF-H@l7Fae9v_sEu zq8eMpF|j5{bc1lWif<3_?g1Pu7Sxlr@pkdrc>DPF@f|8;3~Tq`97~WP9V@j&Yg~aw z`K{W)t06*V_Cu$oAtd34PD`Vc;!k%Whc}2bJjOHOBp9I3xaXdDc(8WCB9dD2cxUBKVNzrqVpW& zLmt-yp*Bp}F$nL!v%%H|=+Fi40<}4S&)mW2!e>_D)M0yLdt=Y|js`yZu_RfF?;GzP zuZ!XmDjkhK8 z!<56rEdwWzdGWqg59Q5;E(tZLosDDS$HtF~A0K~kh5z%$3iiD5-o`#gH)BQeiDX0a$z;hu(slu< zd)`VXqfn~1pmkhURU%A2plZLuS?V!nA{x5ykuOWb`uVXofIgz4C%O4*bk^% z0X1@mpCIVW{sty7i%$3|T87-q_lj@fX2AVnr7VVZs64RqxI$RZ7jegLQ&(oH~mV@B1QQu3+6h!x>bU+4l{aMSvthic`2fEKG zoy%_^6!8-eJ*7Vff-vrr4v!7$DaHU}ka4OZ5a3!BO{yoq2WmoD%2M19-UoluA-F6h zqTpCU4$kJ_x=oAJ>Bdl_bt;xfMkn+jHI<_~&^6sE;X;BMhO%KO7lyPjq=z9R4CO_r zI+00qhYF)mWkQN%xN)X&mT|T*!Z^n`*Er88X12*}n`x5SF4HvAEYm#GBGWR{D$_dC zCet?4E>oLnpV>ZBooM^dne-s-sBj<)2!tA{6`@ojow%lwT#+|UMjGcEqm0oN-M5d{ zeJrtkbb^$S*n||kGd|2X!??h>(74DrD0Oh^kkrnJofFKxkm|})))hE?A)h~4taPXu0VnYNR zx+l7`9Ady>j8T`U3xladkH&PfUt+%mUe@!P8JS#W#1aRvOoAf!PwdYoB!POoF*r3O zbz185)X>y05Vk$r^@5zB>c$dwh)y^xaTr?`%%Tz#j4O;Qjk8ld6Fu3agr9Uy>Rb@v zC^j(=;mE|1Yyt}JGQ8T@BXf3YRO;Bou`GcM1Y?W~QpYEbkAiz8dL^a?nnUW#fVv|& zA$$(DBRs9mxJGy3w!#&>x~w$@P={hyCcIz-OF*u6y zy(r34qbT1GQw~TBNHD`o6$m`TxXHNLm}%T%%rbuFz5BNQZbC7&O={cJX~uS`rm1GB z=Baw)Vxw$~H7+&A8J8PZ8551&GuIf`8rK<ALUQxNBIYrMTCD? z^mqQj%^BezXhO(8xCs&d;a=lDV{x>9aFZJG4=%$9|KR3&uyOw|KiWSaEZC_76GzcP z?*a>*XDl!lf`#5=+;2Pp7P`cE$avVZ&<*6naQE0iK8gZA4ueBrjAZ6P+xa~uyv`LY zj4h0&IuBkt<`-|O2TZdy1=HY&uN>KAU#Ib7;BBsAXEqj&-cdLD)O|^Gqbejh|I$D zvYI|M5g+-_fb^g8i;vI3_jp5ib>c}8`UJ)T#sKI7O@sQJ@x1YZaa`v3Os~u_sz8>6 z=`c?KZ}RfX&UIva{sZ@0D2X{J7HAW{l{O^T87~`1Vg)rvZ3c-urglm(R^SdUcoWp$ zZ)pZIpY@3iiH(WZ6FY!3OucBR{wRwK4Er@>y&+`8kGaN-7|AaqyQJKs3LrO5y)J`y z%Ev?W%UaTbS4chS$O9JHm7Z;Lw?*;n&~75M6X^usG_Ey}X7F)=FE2fqm_x1#F2png z%RzWg2noi0KfhzV8)fb9fxY#H~?K(nj-u!aTzet3Tf89P%6!JL8k zBTzw?Xcf#Mdj%~9gLFg`FoHa;;vH9j+T=9@7v&)1E0i8qWl zjkk=qjZGpM#1@{@-KtrBaBbVLtIS1_E0By_BY>+uRRs4L2awa zVj`~kAY4cG_gzy7_>coq2ZqI(L;3}4dCfp9>|t}@F*4r?QLvUA#G7<2IamY^;ej6T zXZK1K2!62zhso+mB43qH=2Q7}zB-@DBO!C8+&#d|lN<^pT>@V8P#^lvfDnn=1Vs3Z z7Mom4dIABe)cdI=NASSmsUd+nu$8pDp06cG^HjCu7#_fnTwh_BEuS~@hXKujfiUb^ zCzW`TWaMv@tO_Z!w&t#NibS>KIKI?c(pv;h-~s%I=Hx2ox5*z1G=~Oq(KTXLRZiZO zY}*Pk4d`0NbCA(w9m!}qqe11m{a~(iQ5dvHJ?(bEcrcEJ#G=q#>EdwK3xjD6(m^1q zeDi#Zd`q?)VFE6ZwSsPR0bfw-Jo6SqASKfWU9haSh0K@unV~*#O8cU{_zVD)NOxdRRv3pL zFvyVcK5ZFkSF4vP<9Mh?zC^}@y>P95IS;%*F7+}ouSbtjI#l-0JtLFILHV;4Zct8< zz4N7fU4Fm(p7H(j2jmaT9~`!VZ;eButl&_vg5WG>Mfk%2`p%z~R|GyoKMSk?TiDx| z#f_6a@`vZ&PW8+SNpLa1O9)xwUdhO)dPhNlSMb_88V0))`N0l?&-;U@r)1{Y5UDa0 zGc75Va?p~;=RZy{VMa(f2d&d9Z;>DT3RZZHfu}?J`sG2LacqqaQ309eXWj)vZrBN!N5Fs*qBtH{auQ}V0S{`mph7qU{I6)J|C5ElBj~y@_fW#C=NT&>A>$g zUIjy;2b{!@W$kUukXR%Utp?97PFIhk`aC+5$~jLe*$ z8I>8Gxgc|4=Az6KHGT3Y<%i^l<73i zBlG9yCuJsQuFu?%nUcAHuP^30Cx0PSF3p#J5x93Ilmkv9xbFuSV7?z*fcbtvfODfs z7_%?VUy?89$8bV`j3~rd5W?_<08k>A=34~kcTvM`6&adZnZJsy4V{5Z z1cChM?rvdM=eOgt3Chf6+<58|$nv9NG4 zCw~{)Z7A2ff$I={XqlHkH8q%r=0i6a%0pw+5*fx3r&b*RY zlz%nzTBcXLcYJ-OU9vVwzdTD=uY2;ZXXbldz?($1^}E2+@n_<(w48n}{(Ss}_>1wE z;_KqC#9xgo=@&BV<1c33jcg1-j#n@nx2~ZS`8(|;MtfdQ0(r0u~3W~>ph612gOQcX#NJCYp?|JNPfAPh>{=- z%XmCzlIsNRO}{-#sG`U7n=(&&wN#*ZD2{%qH>jV+KZ|dQe;NNOzB&GNd<9faAjOw~ z!bDxAwSK<A)D`E~htLLf;JkzfO(YtRO3lR}bflN%eS7m{51 z*Bhr7lBmu5p=HtH;He(CsPvZq>06?m_YJ=8!3mx>^3{nq!5#$yoKVmtv=!z+ZH#Ju%MYSHDnE>JJRd>% zAM%BL4CQ~yLu1sg(q}#d#)jY6pNr+Q?HtyTBS zw@Q4FZ=GlZ=Xu&CB1-rws)Wr@!dH9=U+3TEO$N>Sz5FNnPxGJUzs$Etv`l;>k|c>p z@IB9iHESV>nw=jf&o#T%uo*Mc|EQ_deT@1eZ**CZ>^ya(+Mr$;+c|-;?>ZzpCVtHS zlz+DRSD3*GxX{uFA*k%o1jleifvtUli3(07lZUVe2#LKZ7=Apy+d1#jBjV}dmWA;h(P4r8g zlsGvNuh}`hOS(h)lth0x@q=fM1}8eEcTM+KcTb;|7@#I&HH9ZVq!?}v0SOUYUEEXKYSvGFVhqZtH29nfx` zW&$ckGcLHhxd&*bClv`niR=lQ*}BY~A@dP@<}LsoNg=7i?*cv6uh|pr==}t0*cyh~Ol=+{EC)da9 zYyNMJDR;8@AB-xu&;M9dIcx^HZt3lh>;hKdPUah5z5I8VbMH#8glW7`;ErhijjkO3 zy9=dmQ6(~hPP8QKJaG0SI1dMZ28TpuCT>a0N?fN-QU{r}9H4*SRORIRD$2+PNwb41ilaH z73uK7Mm!7osXE#evfxGWF!81e>0*z&SH<9w_izTveHB?vo+4|=TJjvcO5z%(m%Xv4 z#ZV|Vn?=fjm&dx|BKH_x`TM|wJe?pQ4~WZmzm?t@#f{`G;_K+!@SA7 z#hhi%Hs_dg&0E=dx-0Xg=56ehkXGb&n5SRHmvo0&Pi_#^HpSNxDv69uUCL&X$(`n1 z=G|r|I32-ssNgj2fb78RpzMV7So6&6JhP76NZD1mkrN?bJ^U}WNtwM>8^rIMC|xH_ zlBP&EN;gRuv1@^enV5Kcco2I_b&zde~ z+Xlx}!Rw!;G648!=brG}JB~#y8jo_iPj{{|SDWtJo-G41H$DYRAUu${HG?4g zP^OT5OM@VrjeB0N3`T`l^M!})f-O7uQM_l&;88r`#jn4+B!Oe_zw}gCkRjrotH=kf z=yOk@XR2Ik;f1NSstXG*Oi@^P1&Zl9PeT1(myOT*BzF!V?m zS{{ZT6`?xvm~X(OT(RiKMPP*wl#rrCo(N1F0l1$hvbD&QB2-6K`h2{SR{21Mu|-yk zndo|#H>zy_r?7SFUGJLjng8?!h4)Q-H{n0K&h@XnlJJ4~q4|;dvH6Mlsri|?$^6{> z!u- zBUtbVJ|Ote;%=5JgDe>8uW@3G7|z5?pvM5*EMna71tyYr4|r!h-eE!vQ#{Q3`YjWP z@kAGD0#W`+u;K+K7SJmwpfy*^f5uvfl^8@$YJ3@Js{<^eeSE0UfQeqG!0q%PWTKGB zMpG=2HG$`aW*|?&pUh`0T?=hc@vco%YtQ_biMK=|jDpW5*O9e>8%CxX@^s*a(ezfU zLYTEI?BVcX)>>MB6KJiK6$-T0+7hCw(O{N*n6wrajjPtiij1q4g9@>6)xsHiD$fKn zE36`{fAV!Mk>_~LLNF&@38A=a)GmU6YPD8-YkSL$zP5uE8GlU$S!w(=mfR&4!VWa? zdrjk(*I4)gfmLG>4A34MW5M1?FExXO!$xkT(`JiWSf%TvuNfVzt-OzpA|d&F@&a8$ zBLs_guZ#Cf;@$8JG$O9E!jDAW;WkPE!ZnHA!Qh0O;d=nj7o&L!SGTL+>h_-2$KKWL zPL^)u_A6yce7ps ztKPPvBvchBk@{gw@OJ+(0b|=i)MUO7ypnp=?>0c|K3G&o(h~Sx$l?9ek=OjbRDtTq zdLCE@YdapN~ z?`a_!7et@EUW)|uvaYvruyvPpJ>teL>%NnEw-Ri@>m)M4E7%U)&Qr)CfymU5S&5FZ z@Ln(y;&PH#H~zM^O9C%!@-A|WD(nk(@LF2j9X#IpPuwht+=|=@dK|wM$rtv|HY4Yg z_oMxXaQh+d-+tIFs{ft{zDcfgOeaDqi|DfF`Up=vTpUxKpfn&EK7<>u(KI2Ur6w zfzdY1sk(oK4ZD7h@)3F>&FhT83Z-~1ZLlSf;-!Kx(T(Kez;B_)#RF#;Js3X^;_$DG zzt$yQO0=*#rI#gdCZF+LaIJcnvMJ1>o_y|W7Pt`dDSul>Cc~^Vtl?3%dM4QFCww7i zS@cW~4#Q=1rFf?2bn9SqsD)>G&bA^?^^5>k!l|BfEa4;#{W@w;&$SvoYD1Ii$rpUJ zrogc@oDciX@x$ClxsP+7xYYwUVOQf~tC3xeORT@$)hI`mF$T&Ib~VOYp)HI{twy#mE{ozh4tNS%7~`#o zEsV>pMz=5~Sh$5DII~)2Z1_+49HEFdm9gMI#k>yQ-NDfi|5bkK$d|lB6V7Ge2f~(4 zW=yoMwnB$Fv@IUyaI@5rul#~5lHlGC2JrB{C)rV*-P*a%Lc&%7p*yPcBqg$$?^71} zI_Umos6MVhe-nnj4MX3Bq3^@c4`JxXF!WOx`Z)~!5{7;aL%)Tg-^0)!Vd&2=^j8=n zY5$v?>Preku`ncuAtemO!%!j&RfVBs7)phqbQr1*LzysC6Nc0{0W_pRRlT`SEuSo~V^6zfK7sx{4;Zq2Z6vTn9!TDMrU ztl8EaYp!*xb(?j&b%%AQb(eLwHP4!FEwC0^i>!OBd#(Gd#n%1S1J;Aq66+!BVQZ{A>)?9DC<$Wb4$P-ph(=^zVLi)fwoXvq}`+8zVKqLk$vHR!my4k6ZeG+X*yW|1rj1S zm`(o;4rYzD)>>a3w!r_~q3!>=&8+_?T+G%!HU95!b~V<-p+hS4_=a%oq|uWX&ssNV zY=?Nx`iDL2pE9f?4&R}gkRrS?k8Y*%<9;ePA=^ZO+lE1*KYsP!*dJf~$AkV$);jBD z>kaKq?JezX?RF%fKTE$1whC_#TUFzp}>PAP7pRHf4U#+RyG;O-} zn{|_Rvo=%v-I}HSVa?I#=hhwCo!Xz)-P$~DqxqNRer^%Fkz=_3lwpRn=R565aNB8n zA6kJewOSRXc;EbAKi1o3{@{0H!z5_qL6yV$#GylQ^b%XVd^6PS^ zWas1?@(V#co3t0^EcNtF8PuGX*C9)$wWwFRkzKMcIa4-7p z%+oX>y9DzIoT}gkU=z|I4E7)$D_L=@g&%w#CpD{`q%ncz%qF6V-Nqd4Q}X*K331Q{}<( z5cxFuba_K{&-5_)40*VGrhJxswmd@Kpl#G%*Z7a2j9p`^cGk|>nyuU6Pow`E{|?dJ z@sI5{f)NC_+5aa@pqA_rSZx_>8y|1qIzH1m{vhG{S3eP!Ij-EkQ1Y%^gx{Zyew!GPa3yxB^ zwV4%E7d&5WVrL-ipf}S;P$JveOc6M{AfySrnBz%@f1(FyX2-m*MqD^9yC;ntyJ$DH zFHy&;m#WR}%hd^LpR_<0CoVyO^h>vZdB4Zjl?Nqn4s6>2OSk087Z|c_RY_okkVq@L zBh)g)AflFSp_U!^TDF7CyVA^9ZCB+H7x~@N-LIcoyS+Wg6o?WaNswG3H^F5{Uw%SL zWY55KAOV0*JWxlb(5t$T2tQq*+O6R?>Y(g~6X*bDv@4mS?r85pcCvT2cd?PEc|eqc z8j2*{f#m#v1UG-(+H@w<)fwtd>dop*bxGo(L=W29qIh%k*?Ilnf(}CLT*Xo;ZuFNQ@xoz_tDJ$Vl=;ViZ9J z=LHN*C~s@Cu1y{xF(%>KW#re|o;Dx6AnLPA$cSHSTa#@vxt`h))B^N?odbglTozOc zBNMoquP4zV2D;dMWP%|`HQ8cbY!xhjWL040A-;I@(vT> z*A6PHLEYQl$L?mYQG3_|2|hs-B-VkQVON2FQVD*;Td8+Z0RO~K`n!FggutS}bKswD zqcNVt1>r4Z@Ei;MY5*#cL&0<0OZA1tx|vI)3$N9VWUq9{IBUs$P+3=0)Cx$}l}-jF z57^rWN=Q*l_Mwbjidxc*2RMI?SxV`B{i1;f-dsJ-E|C}M(KeKtkUKoJ<6mX>(za`( z2igbO2iu3)@2iK~pCo$PN7zT&N7+Z)$Joc($J@Q^(PmRJ54bYbXiB<+r)Plqq%Q3Z zKoXdjLS9$jP~TMFQdzZ>sPZxP63Hw&0>Sqh#E->KT z)>erPe<84e&{%&{GMkx+J5kXqSfd|zf&zZr2@3deCn(^@ouGgpcY*?b+zAT!aVIF? z$DN>nA9sQRe%uKP_;DvF;K!YyfFE~)0)E^H3ixp+T;QT)4{8Yr?P2yA_Hg@5`z-rxyAGZ|L@R)QXhDQLMuN4=G9h@j-}Mh8>=(&PWF2{# zyh2_j=h#2gtS1}DTLd4O|4J3I;WY=A{58T7zp|AMVI(+&mwAV9zP&eu6AN|q2yZeP zGI#YCPoQQJxxl`k53PWa^uAL^*%#V>s6vuV+=Ttp2Lu|$F4Q)@x4nP*z%Y2@R@SNv zf=%MBs1{=;;F`%v2&r zh)j?4DJop+$WbD2v=3Bx(ESSUTpF&pUu<7ukG03yd@bw? ze<4`L2T>^fpNYQ`qzaRnX(22T+HOLR`2N(Yq!lRU4%r>EJ7;&#)=0EJ|?&46xtVn*VoL>=is&t6uZZUYNH!8f&vO~B(oK5!r?g0%8NCgDgq0kv{)_DJa{ z>1gQ~=~(GFX|8>%eZ165>MflhohaRA-)`SwH?3+`bz%CV^pRXRKFAy+v(-DHHIAh% zj~pd(m)#Vq#muH~3#&=h-FDxsP`ddql+OAxuk88ZvKNSD%cM!wLVNovCeA0=nu1>m zTE)oWFBf16fGL~;&mq|N+7{`;SR_2Cavzj=yc_JgvJ~r zL$eRC(^MBMs}I67)qi{dL5VDZa@hz}Ub%gE6UTr>eZx?{FmzHFIynrT5{CMRp#foN zU>F({hE5GbgTv4e9(r8Mkki7@>0xMS7#bFa&JZDs4Cf&X^>wBQ389;|B@f#)bQ1<{ zT52z|AF-F)kJ^vfkJ~HkC+r6MNqeO|-CSj_wx6=s*lX>l?Pu&~D~lr7GtlZPMscb6 zT$E8f4@Mz`b$Y=L1#NoKZX{@vJ2zQu56s?gW6-9D?3ZjIwiCwYqy(M4{))y6Qc)k} z5(tU-zy#)d7iRK%1HG3A?|8U=?cD5n*^$}vv!k--OQW+FWG}3cHV;VC;N`+Z`+*GI zfCwE^8E@NCe&j8_z1EZ(E)b^8tbP5UkTGHIgqw!Ksph*Bg>vNn01 zKT-f&*J0F=k<^=GSvX%ghcEtP(0LsscvZ*Z=~(if{l5Kyy)Mx%jzoB`&LgU-j445K zAE~cjG^3ky{hC*FGfX-|VxG8-lc~})X}UB+`UK|2=lN2hl$GFLli{~#33P7U%Kq5y zT-ButZ@~w_zdp6y;9sBF82)QykSzytZaD+v!re(ZJV}k791G5oX7E3?WP2W%15O_6 z<59rVx%O9VcSAlg@`b$_yt*GY&i!WmI*RTap!*ObNxxM{7^}kt$slnwaPTnbPPy>{Fs;_ zf`-4gzu{{Zr5#cbhtsaUdq(nyZK!&{F$5vi}X7oVzeE1|`npPolK`Gpm zjTe~t1GYJ?KqU$pGLnuZ2uh@?(7=Ce1#OZnj5UQs3|yWp)R7DL9)}$<5&U9ssKXBV31 zTI5>h*p{f|Sg96(^Boa?1$M_g^#6Aq)*xKr?k~u zgE+HzaoQAUd4pPAU?V4H3s%96oVZ=#-E7lBvqJMii$cpn+d|0le%X@c z)q)Iy<+U$-lem~&I>43dapaNo@-zh8<-6oB@DlQ&ASv1+{KUzV>6PhK=^Y9?vPOwX z*aLSe{FM0F@4^5|Wak2`%&<@uS&@Ds-H_g;5X;FqDffBei%POLfEGxH!n*X!=~vS0 z(}mpK>3Qk-=>_S9=`Yj8+_t$T>36b=()XnAP2ZPZoW4K(K>DY&pim7uv8&3>5QOrF z?2p;)eO3OE?O50jRCp)2zupz`Ds2#W$a*rgYFO17Rl}>0gqd)mhYS)IKw{^p{OMSA zY^PjJOpPH)lYj*C2Z<1<()UvnP)i+ivUnGEt$KW}7uUJUu97=Li^lx^0iZ;>6c$5q z=qEib%4FAEr@~$Zfhz{|?;FK)?=a7OqIq^JyaGk}8=>qPM?Jx$nxN9S#!*kkq{sSS z(~#zRl=adE+QR_zz_N5{MJ-qf_>sv=*@vWurPsW=DS(yn;niRsR#(`suve^WZ131U zv2L+aY~NV-SY2$t*q|IyB{im=nj4%OlIu|jasD}qGcNl=G>E_9d3tVWZdmRB7|+J> zeWe6@YAB=ER|pJn!ZY>o)H0u?j$BSX4^YETiA)eFuJ9?40KC_gB5;)tl#l|R$EDWg zdi61CPvurRGjpZusa!yxpLc8oibRI*HtDjZ!n1}b?iFAvAO40Y|5<(NZW!ZAl+ zV*0v(c^Q}=U+7in4a_I`%u7i3iPzF768ufKFB{Z@3I`VsDI8i*s}Cz2Ug%jkqHtv4 z*ursz6ACACB9XeZbfUQ0J9a{BR@JE7?5elOcR)N9 z_@jB22?_QZ{(krJhEfwA9gWOHG_rT|9wuQ6z{m215Hp;Nc=FF%#gFb5QV z=4*^cTWO8iwQ_N3eV~{z3tD9}@QdpM3$5XjFEeqYE1M1K*xWt22XgbO&Z-KHu($Bj z7u@sPulm61gR0Z&5O%nsbG?gL54d zv(CFOfcSRL=ae4;_;$~kh3jEj>P?8;tiuauaS~Q2%j(%6q5q%{Qc7e*;gFa=5ppx* z6pNWfxnNm67cx(y{l?9FUSX;?AqFFK>4q0ZMwNU%WWJHlJgP9jyD1lk%w=5hZBU05 z&M2Hy7+pBB`l#xxdQ5dLTGbZ-yIH=fA+JO(gqiYm>UmHW_%`(#9r$Ap2^xK9;i5u) zp`Og}`#X|@FT05{pziNxkz%G#QOP0%i_TPnMPE`-a~pH`O4FIu<-(Z4*g{0m=u25O zp?ElBxeV$h1dSe7xP|%XfI=nmDFlrkN^6f|NaS+JIEU)jh2pt7GS`>3gy3w3QyELV zqHtv)Q#H%a2q4@nC^Q-}VnX5j+{D5Uxkf@pTpd-XYd|z1WW=?FP{@euKo0KPN+Oe@ zxJ?FbLdb~gq2+J&D~k0bG=_xd8&xvCfRV9pC}0eUOA3;PFHB9Yo>I7|CL;31jZp

~wQ(-+9^&3Em+{~3(pdOpSjx!_859&o+WA3*?>$b8WELSEk`vWN#3r2Tia zTuuuMiy+&*JXJlpj|c8a=jkNH&313$z5;Wu%?0l%EansdD5~}T!VEIsS1W+9dH~Wd z=An4yi-L|zm8=gImarb#Eky9hF1S*C7&!VK89kOnmKFr3mjtK!MDFgw1Gxo-hYHKU z?R6%NPM9$%G-19GCO+O^6-dMEZ@9keu|ni~ypMw({-EESNC`Kj3%^Of^UxDu)c5;F zjir!Z`H2A@Tx=*jSrA}YA_4I3s&;ft#H_CU*eQQV55PL|fL~0h47f!e^qZty2I+di zg8)G!krHOb03p~$GW>rTpKb^y{HqI374EBEWwz7S6xJ5nYfl%DxC0P+#JJpDPgpV} z5(2^pQ@6iA`N9T>7ufv$F%dSi9V^5_%~}J`sWVm0`BmLRyDT;?Ha>QFY(ngc*p;!X zVoR!DD0J3@3^h>Q#z=dRCBavIGq5xoI8iP)i=;fydJ;=zI?Sh`SGgOAR5d zJD~Lkp%7*b=Gxfes!6fQvFl?u#MTvFF1%8BweVVDePL>BT5NA^Lt$g#^}-v4Hw$kS z-Y&dTs3oiTvTMm|5qL@j)`-Ab5qMezo)Lj(Mc_FRc%BDvy=GXT*loyrh4%{|6h16` zRQR~?N#WDNXN66LpOQZ(e@XtD#8tLGl7A*)7e6JXVktSLq~fVWsw(wl`i1`lo5#~H z`mNzN5w^w@Xn3zRisWBui_Z&R6uzvq$V+_1w~y@*7P~#RxiE`#3|n9w z*)@jNhyM?j4i2}6`LKK6Pp|Ry6{cm+roE+g|SD~ zMX`sJ{j~$ML$o@w8!bYrI78%iX21;(yoLG9i~YcGD#02DwP#<0?0D{j?08-QXRANM z_|@Hij}}0952erzgkW3{2F9e@Tt5|lExbvV#+Jn%f#nsBELoA2C73RC2`}j!;N?QC zmfdidl=(5*AB6_>I87kILoW3Mljg#nm{(QI?s^Yq9CSYehh~YxRMiE`s^rWd{>$eG z!hvsRt`u>sU3lPwZiP0e1G2KCIKlHC%sD@IA(=VnM*;tw9|in#eiZP}`BA_>=SKnm zoF4`JbAA-?&-qcnKj%jQ|C}EM{BwR3@Xz^Cz(40l0sovI1^jbQ{$*k*2y`VqdSI^cT7jnG{&VpNwb`jwNteI+Pc{Et=u3eI9;V< zd@HU9;5bKnhUR^Mzy^VHx^^6IeRS8nL3Pg&F0KAF{z&y1+FRr+RUpMTRB?HOB{`nw z7HlP*t9=+-L?X8L`a%w7Cythn2L5^Mi`bX3uVR~HU&op{7imb!?8v#(7?DVLV217; z(8H=*I=~zG&fJY!`(glzgCvBcv zpbG`4n5#5J#$+={c3lD{us+#$bQc2kQ2{mUz-pZ(Rfc@6c9E8sk!+8E%ynQaK`j{w z=j~jffH@(rFyDC-&;cEs-GTKrcmNAeW$oy|5mA3u3!p@Ha@N6cgl^S0$Pwz!A_&_f z&LR?=o`5o4FUK6v4_u!ee6-s9$%j#|*&SLu2CY4Z}-JLN|dlUyNSZ2@XIr6sh z_}JssE2>+{9i64xuFi68P4#11C%LoSMP8xp;XGR{WHz8Bw#{XWmSw|r;PbD)^6kgtr*#@EI- zMjiRUr^FQ4Nm}c7K=_kRq@Rug?}H6|l%VoMDU0E%W0;x<%59^-XQB$aGpe9xqbTo+ zqTD5_pblZMBwi@3BOmhGsUshWz{fsNLOnDgpM@EJ3f-HTAY z<}mbi82Tm*eJesG@)chdi%jqjftFplEOM8>AnQX{gsB$!d(R#fgcjwQ*O9M%EkF%X zPv3~Zw<7SJ50o%ViG0s9wa5>?y_BiMKZ;O^{3K@kIZX45Nb{>mW0BuPs6>7jv;7gK z`IDz9k-vDrf=vR(BGH3eL<&Q(FeHZ|B@D&GP$CRfiBO3otLadU`iBNci9lKeszo3p z0yR8f5mhX>j%2H`dwT8_jU^`nnh5A3VE8}@g||rFFJ}eqb~jZb=W}kHdxp)Wt0N}Q zt3)iZ63jzw)DmsKyfTHDx7#Shyxm42=Iu5L6~ernFjNdf+k~NQ!%&kjv|Sit9+0DQ zH5I8!q#3W85@{|1EqK5p%rkV9G4l)^g_vjPD8xKNMJf(a4?_op zp#w#zL=F;VKUk!xBZu&#I$Rs(0gLn$Gr_fBo^gg8>C-?X!Ey7PMUL{JvfC~ta{N_!4V|MpX%}z}hxxo$An(13O~|p~2@71W z_30{du7-FW$MbS_m3oOZb)+}1rmoTnK24>(AoiTMS#^pOyeANZRO;+>akdm!YcJ;z z`B3>V`Ea?Xe1xndyE;e7t<+=WW98%I*6QBQ@$x=S8}-%dUUFOY8LcXrOs0}F@@zN9 zeOaL7?CZR5c6aKWljQxJ9?t$wAM*g`K<6MQI>y$)ju>U@5a&?mFz0Zmr*njJq;r&W zv~!G;v5$3*bF%jFP7q_Om($xh!RhCmVir zW|(t^Gu%1TImKOeQbK9bG|dm8SPx)T(Km9yG;%30&Ab@KYt&NI%l&U4Q5&I`_q&P&cZ z=Vj*==T+x5XT7t*+339Pyy3j*yyd*@yyLvj_}|8)LxNKq<&Uj0S&SJj)V zK^KzYA4k!TE#A^T`UxxVzIbQaob{(;&#QR z#b(9k#TLbu#a6}E#WuyZ#dgKoV*BFu#T|+}7I!M{T->GDq1dt5wYYb2pJKP7VwZ~h z7P}Yc$TUWnXVM4wL6rahVbILFeQ*TfXIOe4M9>9PmfqSXk50Z4&9+bbW z7BXSfr!A4kypV-LB^uO+<)!j6`4M@!+%EZ;{J2~Vg!@-S6Lx&v3u+DWUkM~>ACLsM z&oHqD5^>MWD=65_q4`(It35K@FZ0N7H-{%+LWLoXt0`s@=YnPR2$)XkvNr>CcT0{e zb|e$StDeH^%lJlyyO;gcg+# z2Fu6(jZY+L5s;vkgTxFu(H||!sKwQ49qHqbD3A@OI(>bhgg__;C5El+RoqhG%HG8j ziWepG?3#Fv+*)&6&FwXJ)ZAHfSIylu^J?bTET~ynv#92tntN;Rt65xwgDkT!A0vAu z`*4FS$byULePNKj)?e}kP$K=HH2q&Mtyv{A{0AAIT#PL36ez8que3^r{zXA07KG*e zdxcO&@<$(!U;qvj%mIW?7CH4Op5 z+xP_mD3Q~OZRPEOEB=4whw`+@Nq!Y8lw(vj0z(BtQ#qNpj8I zy8xc-lD!-yCGmS9&+S0KTP+_?PcTdbc?K(t^}5Bd{j?(KwuQ+M zrix~+h;vQxTCU^@xKh0iT+t-nkxmMiJh3>rXpkdW>vl`-2{P_mDYDXQ=}8crP&89+ zC{ELnpmjhH2kp_M7U0>us-Q&%8uLOCy5KB*Dl4}OmepyXv0l`(At;gQ#bX(b0fgaj z+A8go8DfG=TsT8cqAY+MSZrJ9$FL}~5jtjq8xs;SLI=Xk#UTy(ko8i3sw&(Oj*+|d z*~OE2&UDxF1@sslX;9sg=- z{YVedkYJf&>+YvL44EhMnU@x?k|(l|LLMqEE1sbYS6Yx;qUts)49Hl`+a#C1O7R7)W(9D}qEGFV>O~bjZM35^_J3(F%Th zYN{d^B(G7fRh}rW)t}ZUNAYa{zKeOjPZnE{N5b+i1KxhyU@NXF)<^3mY;xa`IRE%QTeg|kG=1J zbE0VfpVUioxm-!z>~1#M&;keu(oq*8pwgum!GcOh0RfSdfQ=$3RYXuhK>@KhtcZx9 zAc)eds5Co@9sNI(tuxs>z(4x>zCZ6H!hPp?o_VG{GdnZSGe%Aq+FG)$WP8aY_Qm%1 zqD$-(T$6!boghH8dJk{4@0IAg(G5{5*$$>iPLR-WwLT#~_>s_hHEZ}c{G`xGk|Kph z(ZFaLxQPTx(HIhdP!8l^gHR3{kj-{P{*C!?X+gC&dFX@amgtAkkD^B63UQl@7XrkYCuAE0h|HP%7Z04qo0<1R`PAh_a(cc zyQ3#c_C)ta$LCMbb^tZ$61r6v1~SkZsLCtgZwLIz$gQ#|x;eTdx-YsvdH`ns;koyz zmZOQPK|lx_glC=4IiGj-c1dUwDSfPKvQCMw?Vjp$>`pkCs0FIXBL_qujD8aRH2Rs* zpg=Oz)f(R+=)iYqUl3WQ!_iVSl~kb=O(OwtGpB)jXka=CjCIX8vto>O%{()PyP(|X z>E+HtN2AB0pGUulei{8L`n6f;;Z%;qPeKSzHt%iveY;65^g-=eqW-)@BL=t%T< z^rz^_=xoQF+1=oUQHI&;5PWTqqFbBx&YkXGLi{4f(9|kSR z#^O0JCQNbX17BOby<4G7^b-t9k+jH|K5JW{)7ET z`%m_t?Z4Q6wQsZkWn;&*5^o9Ue!%!|RxaFrgu0h`g^!k_bRDSeIq=t0{66JCLKq;dkIt2ONLcgN|RI z%pnIZ`|tL!12cEfndR{5r)En6n`so6QWSNt4$hJ1z$8=@7d^2OBpTXSU+I-1n?rE0 zeu_Z;?7>OAKLxz!=qjte1o*qCf&(YwZwTDIGI&mr;dcx#x&f?jvdF6<&6Ys^nf-ef;hZgc(E2x zPr^V7J*W)|{5w!QM6)c^00~o+qD3Uj?=a$(%^O@BR&><WH_1EDNg0 zK0;bCc{y!jE-C}_!$yMzF>cu<`6gbtOW<_SU>EhTRl+J&WviK4rRtE)Vlta^*iXn6 zn7$2Eir%+xw8vP1-DIEPn&~=hKVsi%kFyC@WRvWka3way)}Yz(HqhxYo(t`3YVeZ& z26n>umsxGKp*;2Nst{-$3#!B7%?@l~71L-%PZiB7Fsbvp>^$_SRvFm_tH+*aubaEC zVfZKlxzGjh^w8LTyT$NWfde&gG;}m_GH!7M5qmA3^22&iE_=9%f?bJhndD z&XMPBz@E?6^S|tRwt!;A5vugJ3{)nPrH#F9ZcRWS0&=*tCL7Th%tc~5IXXMKI8vdi zp{8uLP*=xZ)W}~w)Z2k$rBjSJn2R}sOkRqXlEbn#D$4cstBscBPVP%#B5V!Krc8v! zN#Y{5IopDL)3w_5mP_(uLcGdU2<1tFBfFL@2#iH_NTq)+|mW#(9NsEB0}y7(;KvyG^ne z6qSIN4bMRlJ1NpLdUzu|WUDx~xIT0hdOvb)b!~IKP_W&#!?n}Z-oM+0nHuO!@;P1E zcYaS7rGW0tm&-jG_ZP61803l8+TiGEpIz_dv^zS zclI*(ui=jF+NekF$4zb2(+uoo23~Fk_BI3ipYZ7R#)5is5-p%=&z@Ej~g3{7E0*RwYes{~-glg}`=iG_+{I-Gr$ zyp?1@BeD}MA@B9bjb`#j!bD3&{}{zSLs~8Ub7wT2gkz$PW+n6@S(+4ji3C1ECYut& zAbO->xnx15gofFXvBq}`Ot&{^ZaM&3&^UG|u&Tua$c|RHZ)V4`88ZRnLBJ4Fzyx+6 z*yekXZdslew zWP1_Io{ZeO6G7D@{*e;038?-X`&q?3;##9qrZ z2}IT)TdD?nRX6Q%m~Z8sqBMFxT~c z5Brb!kNO*gYLY7HEwRhL#d%(6w||d+uYaHaUX~)nUtK!Mz0m6G$PRjSWNjW1?g;P1 zm5}R;@U&2ifzyr>mxInk=CiQ++Dw)? zg+8ExEhHeJ4@n?}KB9rGG_Z{Zwv&K_c8~ygZEH1)D;Da0mj*}}0IzM5r8(M@1+>K_ zeqnYmNdrFHq?8oePf|RA4&>Hz8huQ%Z33ogpoC)J^wm-+dLsHf`vUtS`x3j7eVKiQ zeU*KUeFnYGzQMK&uVUY1SF>-iYuLBhwQL7?F>N_IsP6Du&_mE0)wj@=qfg8eaMnxo ztRZj`wE5{~sy>glmR-lLXGf3|pZ*O~ihlFs#GHU*lC@c`F_x_9T(BubDJDLFHnQ&% z<_3y@7crZ_;7OXf0nmarvlo))MpbOJ@14j8bRs@g$1o56s8zE3@ISl^P)}2F0$G~lFxJQ{G(fSU$9G>}gNUK%K%0Ur$%(m)Xn z6w^Qn4ftswKm$P<2+=^81|l@T&_I+1SQ_AHfTw{N4G1(4r-1|wh%}I-feJKGkp?Q! zKxG=JLIWups7eFXXrMX`oI?XOXrLwy)S`iNX`nU@)S-d%XrL|))T4p=G|+$s8qz=` z8fZ)dO=#eJ8n}Q4E~Ej82Aa}9Ga5+Kz(q9BoCaFZKua39mpr(Xka`IOrU{VY2Y>*xSa;>pn*GSU?L4nqJhaY zFog#0qJgP2FpUQ8rh$7%V2F39_cmB(33~26BVA!Q2pTD0e+~12>Et z&W+%1I-NKFIGTeA>0(UES8+SW*2X`ko#5?_Li%g+eq}nMo zn+E34z`Zmumj>>mfq67=KMl;Mfdw@101Z4y0}s)_LK;{^0}s={BQ&s>2A0skqcrds z4J@UBWi+sy1|Fw@6*TY!4LnH$Ptm~BH1G@!JWB)5(ZKUG@B$6INCPj?z)Bi;nFd~= zfmdnZH5z!G2Hv27RW$G>4Xmbtw`gDu4ZKYQYiZye8dygI>uKO!8hDQcW_V|M59rpV z0h-KB;qKz5a?`lGxqG5T0q#NWA#NeJhul;U484cxZqJgb6u#E<`)4&cI*hvGs zXka%D?4g0ZG_a2b_S3)t8u*w74${CUH1H`6d`1I@Xy7mn9HD`uB!FGn&x3nC%4GT= zI?5hnKWD#Szhu8+zh=K-zh#fJ-?87bC)gj@AK9PSpV?p7U)kT-lkD&8A1vZ5oRzb2 zcFw^$xjfFrxj7G)&w055&c_vUMO-mg!uh!X7vw@*n2T@>7v)%v<9IH{30#~@a3YuF zDsUCKN?c{G3YX%la@Dx%+&Nqgt|nKDJD01?)#1+L>T>nC`dkC9A=ij&%r)W8=Puwb zs*NjVZ7jezG7F|Qmz%(nrp+g<=S!WxenZATt}`G*O}|Wb>+Ho-MJoI zPp%htIoF%(!(G8$$z8==&GqH3;jZN-a+A2#+*{ll?rm-@_YSv?ThG1Ay~l0fHgfNC zo4C!~2iz9!L+&GPE4Pi?&h6lKa=W$G~lFxJQ{G(fSUxq$p13`3VpaG(8t_C?i21)?lbNXcbGfE z9p#R3pL1VuUvgh@UvuAZ-*U&f@3`-|6WkBnkK9k(&)hHEuiS6kN$z*<4-WAb{&U!z zG;BBP_Zh5o628x1K%_Wa;d^z)GZK}Q3CI$;04A0|qH^vjpONH}?E|u&dd6mz z*(ro&VnX~9Iqtg|eC%PY0-23h+Tb#E1C^zsT}z?j6Wyzzvr;HG9t$0&e9yQQVGgv|qvfL74NFWUD z5YNhn|KY>91TXSQzJi&K6+xj8sZb?8U}(s!0D+J5-SaA&38(@B{G@;sU&DCs)L0_J z%~Kr~5LbY^sWyp35l@<;D2kB)OBT_Is`1tNDvopb8hlMNEo*_6QBuou`FyB0LqF7= zeEmGb^L$mlHcf(`I@A-#d*TI#vrYN-;CN3W7fgb>Ig}^KlLZxWC8khC zveDD1l2%0$R3;M0(y4EOulCjD>+ucwMtozw2@f$sNin6UIt`pd0%=r3%LwNKQ+`bv zsHFiCrl<rJngevM24!V63zVYs zNZm?NT^guI1NBKDjT(^3!kuz5A4gFg!*~E~@=$%p#r!4wrF<*CHQ&ap1Z_dx+M1Yb z3EBbFNQ1NzG$z$4MZ4e)cf(llq622fKHY8HsVQ8jKvZKRs?;hwf`%#= zRMDVS_{_Qm-;!_7ci=DMyYoHx%lY1XAN~sdN}d`4IE;z0?_b4tw{5m7C-1mKc65Kq z{E`JF50qS@*PSJUtEev@Ei{x>1~a~EpkNoP%3#oft_7*uc|IxCC;+mvqKvN}2xzSd z01#rn@U7_F2bkwR5STC3n6tSLf)U+D?NM?oB@5cB=EEZ4T=BVoOQ12BK6NQUR?v0) zV15Wcl&6Su>#;+@Woi~s1SN~^wvG@XNb4*5s|n*Fp8x3>!x2!tb2Tlql5T{`ZLD9G z$Uu{QP`su1!{U#MyW4hIwCs!touM|h>@uJnb|5e`1%l;_6?HDW39{>?)+PomXbjY5 z7qvDqgpJ+BdQ?mqXh{QIb%TN_+Lcw;!}#I+NPZMQn!lMJ%a`)E@Z*RgOStlG;$7iRGo7D76dx)D_oSKpJhWK5JPe=(&Eid% zdl*fM+70Ib^EFzFWSQ^fuOcf!y(Eo0!ae+KelAUbuVvw+h3GN$`EZ2dpd7whv=A-L z1yg7lJS?dc7XC)pL6+w$K*ks!qZHlG&*vBLm>{7O$X=6j(lj&x5^)E~{#ekfz7!gm zg=Cuqa0(5gfx$G;f>bGrhLC-uKQJ@{Sy*UBzrBRNOdjGF@{9O~`A7JXg^PJiXo%$@ zf4q<+DRe!VeH7iG_7`dx|p zzkYxyPtiwBPNADfp`+o~x{#YvShY{erP$(nj>iOyP9S%Xhj^SMp)bMX#n9W}DG?g@ zng+h1fp2NxI1PM91K*QC3jL@LanJ{*7U(dhGe*vGl?R7#odXayLU&+7B zzrw%DzsA4LzegH1JdW4+Hh@hp)$I~)yNv+dLP9bA=7O-_$DWawFI2L+IvL5|3Ven!ZULi% zA^f9F0`t)AS`}n4-Z9X`a)$C4R}@R#v?n=8y1S(aE@87RE5M&`k_iNCq3_yK?Q$P*1g){OhWBU#j%nYm1IY10*(h}XaEN~;=rEt4FU}Vi!3+mp51EgjWeZ4wwsh72GR4fTSx!*f;y>g5)rIOrv@v95D%+K1xl#8rZ*J6dOkk|T73UAHBW zlLv)k(O5cgQJ}t~MWAKi;s6`tVmTgP$Njvq;Z+@Dv3Z8Th9J&@gjfhYsP*J5G~V}s z!GHl|MT4S=+)Ns~M6*nikjVm4VuhH57LnzGS(*kOA%TYq78<|dY^YMKa;!@1dhoc% zjciBRj)A9$dVzRspSxY4Vk|``JCQMQZC;5QIRv=jC#T}7$DS@SY20(5Oq0mQtpOwE zVSUeB?NblIFf#PPJak3i%D~&cTCuAGeFN77Ok|%69jCYE7n8w_Qajeqbw%!B)Iz08 z;vNNb4C)@}5g6*d-utTK2JbNMaPJ6j&%lk|k={|>(cYW9W4t$e$9mr^=oRP_s1q9$ z7#ujyti9?&{tuC5s~3Z4Mw&T?+^~ILq5%>HQs_~&y^17!9AyZ0Y01{IWG&Gj;&4GP z8XagH%Xb;-#|3mF1ET`dz4&&?EbnY@6H-IWH9T-WXz0;gOfoL0p$lRnY!7-NTWmEz zj4a()y;*R0Kmz8aTJZq1pr)~c=K~hXo#WJmpyCSYPn9`y2PS?sp3s#NI3T&i%dng!>0~ z!&sx(YR6lSAKgE>FO1z5Xcn6oSm<5kof$~S9`mg6&JN(w^{3nRzVh0(d2ZXbh*9ON z1FMDdO4#x&l~6*DsT~G48G<#$QWAiD0TPhVauP_R$H`v!n!UEm1F~>0$lz%Yzt_3X z(FUyA3epCR_f>JFv`(}NPf||?+Q!<&mMhJ!%rrF(&Hk?AJ%`m}^K5jy@7Uzn?D)X3 z#qp72tHbWul)A9)iZF@*3saM3k-Yk+#VdhV z0}^^#%L!)${p=YMD1|RTJbh$MhfMJt38c_I@K+}&o+l}ATzbPtr4wBq>mBP8yCQaF z?5fz4Fn^Yrh?~F=rU*x}?@KfR5dC^NG4Jwk*N>Wz| zy-Wfx77$D})IT;LHW1W)wd^uU=rvNvlLfDrNBss#eV1pIre_8ZzRMyVBb_3z6cA(5 zfdPMkKGV^OX+P+C^~Sc9+mK68M`j_m7`sxeWYJ(P;8jeT_|!dbQg2NCYJU3 zbby(3iwBV!>?*h3}Rk($uX{$_#UVg^EEU0c;NACLj7jZ=ly zl+bFj+BT8K3GYa62y6`86nj6gDX=*(CblKuaNZoF$UMl5D1_cJHUZwLho`JGdx|wg z+YQCe7^7U@5*rtz67fenhIf!W>PP!GKH1<=$#$eB>@1&;O4j*ymCr{d>wIv4rG3{z z*(_)Zgf-r)eHKWnjohusS0)5?2XnP=Vl3Y|N$GAB5svL(Ob(<91N#ehYd!Jk~Yg z%sRto= z4!%h7abSAvNZ@E-c1(08o%hisE<_W2Uw#jwlJy?+1DSWRwp5sGt?7Ite^vgu&f3l& z0zU>enIi<^pmoQe0kup7;mJPme?@SuYoVnoEU8%vxzN zw31J|p_Cn1OJJT_s~Hv;SolfB^`!Cnx_BM^mD#|#G`C-WS-i|F*X5AwJEX+N;Vbh! z(tN%P(~CNfgBlj}MC@&#FswV&OK7WokH#Xw$6_mDPbwpvBE(+kG>L>ZkoieyBMGF@ z`&vEVYJl&kO*F8X1SIqUDMLbAXy8KIhwLQT;+QqR@d`ltiSW6*vi<; zvA({mLw!T9#9ob2VnuW|gbJjtbhoCG^=`c#ifm|VnvY7>`F51gM2l?wM<2Gdz2Y8y@n4eU_(L?w4vB?IqiLr=qbEr9?MO@5I){*2e+` z!Gd>VBlAb)56#a+#z!VZt_x8t*f5n%d;m(Od~D>*3SNpcOR(LkWHplpa8Tqp#y$U{v)d*6= z`JlcTS!?o3LB9liZg7@ownr&b)2t4-OeuJTOfeWuQ5@hD1plCb>LgGDjj(ER;;^#a z7TX@%5&HzHO!)?o#cz%6G#WA)tQ*_~^>a|IG7MVKZs-cvsL}3ZI;`7gw8XvU68C|` zPf3aUV}=&gB^p{#Rp(=1K14Dfj2+RNzg*@|f%!1W{27!*3!1Aldtt^=h9(9r=rg0` zm+212j+j;0QLy|+$xM#LYM^84*s&no2=dz(HPGi~@GQ@Rxz+nI+5PnIjXkjgu}@-$ zVxL17tY7d&?8{h#g0Er}IsV=-C;Wo6Ci-&HINT^Ayqq*9H%DLTr&4j~e`+YJ=IHCP z6237{fEXp95Uz6NCxwoafP}syfi(J_G&gDVqXuN9q|r|_@UsR;m_$Oq&_aLJC=?mL zX@J6Vl4SV-x}hNkwhP^feu@1W`z>}d_IvD)7!nNq8Cwv%{2P-DmudM~Yi+vwE5&I$bW9+Bc&oP@|7aW39$P?tR zA&RXC8oGRjT}nQM$*MLRBTvRm+Dc?~xbWwPVZ>z73-6S^95eOn>P{xJ^h5W*hkV%6E zAgjaVc6m?`6+Q9AUr;F@^lTCI3I&2sC>92WN`$t-kkBD$A}$Q#5}M|#aQ}!1ab>}w z%tU&fGeYNJ_n_R86cMg-V{!^P$hu4+CkaR>j|N;MkV0+}kdQ|MvI97U@-+a;j>nmo z1`0GF%OWA41}H3rG*CnX#WYYt1AY>)!>^{pgA;fmCI~`YNC={k6e5%=l_TkI){9z@P=y5)6-2=n_-t zZMYASHKiEDi-ol`@D2^Eqk;7_@GcF!M*|yZU?UB@PXoK4OB0&zrhz>)u$Kn*(ZGHh zI6wm*)4)L*_=E;NrGd|A;1CTQrhy|gaFhm)k$~au4Q@&n)e+7U>I(IQ`a%Ptq0mTZ zEHn|$7cLMk6eOXk&`d}R7YWUU7D7wmV&M|uQlXX5T4-a|o!UZo3aW-y?oRCh3enIG z#6To9t%>B0yc|V+%K0%~*62@qEk~?*0{FN1u)&3#aAx3|fp`*Fj$-Dl%V7dF%`D>6 zE^%R*dFV2sqtHp{EOZgN3f;^K-5p98CQH~uSeqyMlHEFp&l( z(ZFOHm_h@0(ZEy^80)H_cb^PY;5EXv!gWGFp}#Od7$^)91`9)kp~CgT4Z<*CxG+M% zZ%9c{Z&2O1#vSNN;VR*3p|5bGS(}f9HrHN}!t@q2N-(@4g(3V{i1vz<3>aRKQUUE1 zDHYIOk&*$!D^eIZbx$z7B6WHUhF7F8Lms+G7$e*)j1@|STZD0DrO!a=wO6Dt4=mRN z!z)r4!siXzD^jPYh~X6}S%TpeDGb=qt-@`>?PeO?0UBwqNMTwFx)U_IUkwQ;%QL(p zB?E?6q~r{47bXdl%`%t*8ECIa$r;=w7+#UWkR6Q{CI}OSsX$wiHV9r+iH083FAZRJ z*+v*vg)*4&O$T|EN#+>VZ>I9jymCs{*D}m^p-r+iwQb7xgn!TbBX4c-JH-u|M$8BK3xt-o zi*1+KF11ZZ>){EXE&1;j9|(RNw7P7r#!M?)Yj~Hpt*xD{z0K}w!dzyn;Ok`TZ0lmH z=sTb3YP*1`UU8nw<#M~$h1Q3*=g$mX$ZROySp0sm#583N2AeTyrjP9+ zra9As=@o3rT+Cd;TxGl3R_xkde2wi|+jX{nw*IyOwjKGGGVMHrY=hyQ)1mNC=?%7F zwpL7QrVZ1UX~(o@Ixv?p9hpvyH{6-&!W4#!!o}f|@F?3&w*AEiin}r0nI24U<^iD( za}D!(@fXG46kp3+$Mj?RGXt34icc2*UOdlszilAnaqY~XUNECz5Hpw=!VG1uXKrAI zF~gY=%w?V%nNFV0o{`KbW;AmXGlsdD8OxM1w=mWEL?GGmkKf znI+7l%wx<_W*M`bd7N3nJi$E4JjFcCJi|Q8JjXoGyuiH3yu_?zUS?ilUS(cmUT5B5 zRxxiftC_c$HO$-0TIL;Q9kZSZl)THl$82CWGVe2+n9a-w%ogTD<|Ae+vyIu#>|k~> zyO`a~9%e7IkJ-;0U_NFJGM_M?GM_Prn8VBw<|uQF`JDNJ`I7mH`I`BL`Ib4(e8+sx zoM3)neq?@PerA4Qer0}RPBO>xe`o$+P}CCrJpYS)9E!scbw=}}-e^@{LDUy5j21QmFbK0qVSTiQYh0GNli|nI_faP zB5}6oX}KssT^gvT0TL#`-bu>H#9s>PnWOH$^s4Zh@VfAZfC=NkfIA)#s=i~`jY%a* zq57mg)Ru|<;8$52Csl>j+1(b35kEn8DwbAO?Hs5nsF-sOB!hK>Z-Z&k4t+2P=Uc+P z;NOC`gkTvY(`}8tW3)>u^EzOjqn;Sa%%(p@7Cr(hP42h z>d758ub9}(8P@RhtT($zFeAj%hr#Pqbq81Fsxt&8Gx(m$0h_Qql>l3HgL|_vHWMZ@ zT6avE(2F9+W}=A?i9T2F4bF~4~i4*$*8kXwE>JL zq8|&Vd30(dEJYWPy+=Lg!JC8`Jdx_>Jcmwo(sLMUgF5LsQuayD(eh7vjLFl`g;_0e zFNGgG4ydW1-+$Ru@P+Wd`d$3*WN;?m#^p^0l4j_$y?!jRqub$MimBG$X~WNQz3ZF^ z-*%JH6m%Dw3ePFM=9`Whg@*?>I!6R=42}$bC1CdcI=lR4@#!$mLruw*+SkRiKo(wS zDqB+e>8<*}?zckoFhzt!X|O5rsDvjw~EiILdNU;h4gk3+v=z(h52$ zHrcsEDb!4}WcUmO4YCZj5b@&fwam4=Z2Lht9PSCe_A`J)naIRBI3pxpq{>YsMZOEnCNJDGLobw>(--SPfrG+SN zi9b$6Gg0!l#=Yn*Qj9I0M$NU3Dk1n8rF?}bwd+8(h&^JDKVRsG8}?S!GC4se_3~z3 ze6{&&TC07o_=F&ph+|8-;?(Dc?y!PCH`3^S57q|%$^N8K3sUFt%EynQa{=03w4-QT z#8qjgg|Gq zxDFJFGx0|vdBv{coQ$Go8L=RBEGdai|vTlvJni`r--4?yfso9F-L8Bo$E zdNr_1sJmu@Kox}cDT*lP0@zRVx01VE>+L5?elPi>q;8xd$U|hZgchhr(ph=1f7?Sd zO%jIY!&M+$R6`CP|9sa1*8?sW+aTUBP7&lGGP#c8b)&2|)n^CE1tktdA%@Ol>$B|~ zdEN%>`D{J^%dTe&DCQDs9jdaCOcLrzR#F=EBFjWQm2HEkvdefVTY}kxdMLYTTzv;y zX?=AGEx(3+LHxpav$+0PwnBu1c;Uyg)#S@TMLSflvaG=|c`$^3w3SY801R6(>h*lQ z!-A7?UL{?d*GIiElof=i5FV~<2#*bc-vXD!O~ZKP5|}LdT0xaip*&j0a{_T(8gCOn zjX)f2&8F;j@ti;$?c=7AEjq-@iEN=KhR_w-2+rUN9`6gGD|4Z%Xef=YCVLJQ9iWkR zubGY!&?(+I-X-2O{#Qgppp>W&qvCY3KU<*+(x|UiDcOD|p=+{TSL?WxpHoGsrPJ|r z>Jjf5KSLL)3a8~lbvlA6kDn5)WsRN&=V8^wR(dS8fRP zr#oc`4akKC(h#+isULjFjzH=bk9A$IUdO`}r}jO+ z!8eSwtvC3F)4&K4kkF0Vu#j*rHP9ISYX`gG$j=McKsTGgDKu7N$J{U#l+wU0Bp{)2 z8X#eo(Y~8}h9llQ^qy;Yd_?@l_{jLE_~`g(-}v&9Lui5ak+n)Tn;G)E%ZkRtZ#FaG zV_}k@7E-10k-kw{J7nlO}`1SD{;=|(O;$=me z`73QKrIuu(*57M&skQSz=@YR^{A^z$`@jB?`0pp8vJ-OYKjss$is3spXJ6|ZYG12~ zrJ8z01Mla^ktHXPwwW5xgZ@E#KK~BrvTld|U%3$R=k|PVkKYlOZ-^RqebnoL$_|3@ zewTWOjeI3aA(ZcTktFK%K!wD3=|CscuLmk*@}&bKfqFeqA<$2-N|8!NUk_ABlSz!%10@7MDRir5j_~i< z+koX<=a>B^5~Lwo0sauwJ_f1KQ$^Z`l^lR-PW%+HstVv6pe#}e-A9K~;9meIYyvuMW4N+!)=zopb|8v(K z{s}9&`SAsD(kj zyGS5}rk-MO-S|H|xE_o@6kix$6n{AWNF4j!{5#P8`@C?@<|-?MrqQFJ5ln`7YXwim z8GI`oPO0F^W*s!!cTTt-su8XkUJ|brrpP?-)Ke}|8r@A!>uGck39M6s2`N)A-t&9b zS3mr`?*-p=!G6L1!2!X6!CNhZf`fxYf}Ma9f<2gz-~nk`Cfz#z0O)B z5CARcrMLihv2X`d`~>iW7ku8z_~nIE{-HC<-+1PvqF6Hcme%I*W5K1tH{uNx^$p{L2}i@Leb0pZ7CsxE=$R0FF}y0?Mj=!B z6+Z5(m$xgtJG>{nH+-9AX?$OJrH>+Vqg;|7o%d=Z6xszITP=qEr(MYc$c0vU-t?^Y z)QVV(Y(CIWNm6~ zW=&f!vR+e!d={V8cWu#iMg5AJM<^lT>`MF8>;sAh77Z$D8TpB975#{z{L$W*X2fSU zWsmp1P#azHsM@%Xtc}LxEvq0j;;f?CMRSYpD_T(WaM2@0i;I>N)yS`zUn~FI{Mz|- z^3Th!n_n;g{rIN17j7&XEVKn}j#tjBl7+OdzNtmii)IwfEczh6v}jq;@}egBj~A^d zdZMVJ;-sVWUfoG&LeUnuVnrq6S5M@GnQ+AqhhBp&g;}j=NaT9LGbjsYd|P46U8;Eo z0cb(n;;NSta5l}-mEond1DGi=W%DXnW7q08g(@Y{L ziqMF>8`Y?0_*WZRQ}lMx{&+DNS_$G<7QIz;Aikk!W6`zwL0`xh_T^la``GNn;~=P5 zq}my5(=F(eICTRMuKmFcz%#o4_nBEx;%YH}7zU+6@OzJU^N?rE*JomES zr|~bcm;IY{ktE5=gY)KM1zEAx*yj>iWV??qqvC{i50 z6dM5}NgB=9#yOS_W^e%wJfHy*rjXEsWT%s0=2RzUOaL+#YAgz{hz1^}fk$XyF%2xy z00~Q#(4%y=kC7B1v{ajmGPtke8xhNNC<9Qp!Vp?cLlSyi7Y&?{*9sB{p(kjj5PC8f zdMX!snuZ`aJtbO4Un*qGTWK8#e=t;*F`Y{)V=8i0CDO=W5Z^}3MK{kz39!7Rna@_ciPvL+~k^UpJKnuz9zaZx;|P?%#L#s8|Y-b(0)|F z2@-l=x1x{(de64ORvZ4#E`c(Tzd!l=zwGwNfXnlcD z`L4!G`%Tf!(H+rq6Z@kFq9L@2wvi#UnTDvFzxcD2y!%@xabAKVa#PoXF-axm0_OuMbx-*8E*UpT{E17(DpMM5(AKxmQV6vsUl%Zb zk4kJOM`uSDM=Eq-qA6P~)D<2?YUHmT>g~WgP!uEn9yMo>$$7LzUzOl0!NI}ny6b75 z9;@&^LPNG$qJHR*|FHjv|ERw~s3vTcsdH!scXoBK?DB7Mo)_Bf-{arw-{(&!C_?P{ zr<0_i?myHT6$))ZS4Zl)wP4kF9OmYo^Pt6iwq?SkWiL+5LlNTHAPu?32tH{crkeegGoW~>FP6cBgD&hE;NMeM`u!`4UG#q1LHQT8!*DZ7ka z&OXk*=3BwGPHc2O!9K}8#XikqF^2O)Cfl3OM8LCb6n68J1r`p+jJ^1MO5IzEC9L6j zMeU#>pHg?ziZi&V?GptMz*%V{8R}rHB@AKK%YfCZhHRGUIzn~a111BDfvb%8Cxwc@ zSDpZhX`qA#R;aE3vJ78AA-qAM$#9^~i7tt*iEfGRke?Rjy$HpDrUrV>ro`vOfDL^a z{wmxvvB>hQLxZvYOG_S#J_F&1mDuk%BZy;}xZGG$8T=yL8%p}LT1gm$XG9Y<^cZ!< zj0|B|PsKn^RO=fD30kxx~+BYZip&kv!P+vK8O7uuvkrY&NoJ(p=EZ9X^>yAm6B84Y5|a}-5BR#Y z2YgkM5IUd<*2?@b4eck(jJ<*7Vogm94~3H;*a%!K;pC8b6K z=z@Q(mj|tYgg(_OCR?Ft0Mve;1>Pjra}M-KV5j4N!{NEtI2Q4Ij8|@RVJxm9S8n$u zs0SZw87lkFJo`8&k^92ryhJ%KOrDdi*1smJupSQ#n=^U#GnsG}K*fBf4g-0@c_2YO zjivjekPl=%m?-BxExeX2k6c2Bv=#;h5o`z@rhy|QkVZ$zJ|LlEBn9RClY$n_b^ckD zcsTJ$BKHL)(o<(~LViVQNuu0$l&Y9G0sa4FkV5)<7D~l@u9Z^4i0a{j7ZVwTf?B^V z%Uxw@Vp)QGTdf&J$S}L(2njenP0M?SWF`O?B=1Z~Q^LLV14Z4eoDYuM^Ox!ZmFPqabmS@je zQ;Ib;QS9%w-)ZzUIaJedMx)wq=qh+i_B++=;7*JeA@g8?Y*=wv(AUKVi-oDMDSr_x z*7qdqONryOZ_o>gm1gt6%fS3C$@~gHCp2gkRwZYX_c6mJ?{f(`bn>agB0Qh?{|%gc z<~vkIZQ(QCZy^=jf&*S-Ep+rH}E%hTKXeeK`PUn)?ud`0YU+5GLQZT|kVhnKnm ztRAi_bIqSPTwi5op56poL>;cLPUJ+=c`H$7B%L*8Qr`xt)ZzNtL{21~Pvh?-a3mem z!}WCuIdIO)k?pXs#5*(i;~9QzC=te?5R8TzU~H)0g>1KJ@A?90LGL9#0(OIqw?goo z4Q4uT1m+Jl<_uab%@Ll}K{ftS&D`0)n#hY&_pbaJTSH!Dke9Y?(nmuY49( z2%jGN+h{F%2dzWv(MC}1cU3hI20y>~P8tIYSkd0Zd`}r62=|%U^Zj7YsStz*0HQ(= zVu%Vsh#@Kj;emun2*QsO2NO#RKS_L=FbzTY8Hk}m5FSdHMjSkxC?n$F5fDK|96Xv> zT~@@wV+qrUgU1p`xhbaf=QC}lk=9Yx(bn3<haOTxNpGc_jZ81wboy7+S*EqhdIdMPIVB+WPvE#$(&QdF^ z>(SdVOD%RUakub3>i#u6kR8MhW~-BD^~@QHoyDFTIs!+~hUr)L-#tBRdWcOUn`Raz zsE@2)b0hd$G4<-DV0B&eqVQ`%_H33{MlqdK4=-;dl2EDYc7(;lvvM%y8?FrKDwpkY z{Cnb0yBw3OrKq*~Qm3p;Da7|DrU`qYqtH;HHe?a4;%@=U>B)Fo#pnz{`%2kFim`m} z37eQkF0whCg?So~!L8yHJ%z;QD30ZtCz{4`b%|c&HWtT%+>nLtTa~Q@)lo{hJ%#XXId}sX!q6-l%E|i!CGR<8-VRh({IKw~ z!krc`;ewSdY{pj)WX~pL*B2#gNuhF$2r3II1z!M6A-`Iu7{vGf1L|0ift}7DU54f@ zK@G)5qV7T1SfqUipZ7pGaR>%5ana2&iksTVGVIzVQsOFc%IlmRDBI&ktX8# z;ss(NB1V$nbC^?MpO@7IB=g2<3ROjQfo8c~;M=mgz(wX#n}bxU3$y@;>H-*|xkOprG0>apOX#FQObpnQ|RP+lr^*DvHmgWmnNOG+;~dV(}8O zjn;rC3)_j zi5obcYJ21;swYs2>IsyhY67L`>AJLb5xa`r#O@;H(yHGnDBq>kCgwP`7D3w? z*Kwp1J7!>D+ad)WNAU}0(B0N&@}^s7SZ7*iS+_(!jC>T?8rc@v9=X>#*Lr^Oj>yi) zuE_4lp2*(FzR2g1FC+USDHI}YPBm+Ft8(iR_XQ_fV1+xk*2UJZBfZ5+kl_Pa6rl`0 zde&#f1=bhx9<)AWU1(io?IV60IUe~gvcmeB?+NRR_7=r0i(3_A=HWVXarRm+&9=;X z!oX;-D8OjwnBB?K4;$KNy-K{n?3DXz7--$d^N+q_S8~5cf2`sf@l$I~rfSbH$@Dt& zO#9_#+MmwU2F*JFvP+>b*#apPA%RIySR6uHS@1Z}oB6Br-^w2>uE{qp?J}5Rjc*9# zJ&`Q%P;tCcV7!n5IBv*p;bQK4(E4i+f96`l2=PYI z_#!mE*f3HYCH^%&Y~}6MjTXswqyN`;>uwUqh#w@rP24Pw6-!0c&+YFzFe6{1zC}D+ zZ%Cj09X9o3pBf_Fm5T}g4Fg0i0`<@XzP^c{dMNvS2$R<#g4x$0%45-Ah8S)ek#)ep zmm%QChT7QM+S}QOLu4rYv5*6gF^6w4hsT-288f&qd=2-9m4!0pRM#eY{k^T8t_$sw zy{WyKJ#D|p{z!CjbV>Bl=ws2P(Ph!)(O$00UAKz2iMNY=Tvxcd*zXYU6eo&3>^<$h z>{q(3a;aOMIHNXtMk!^>Q+@;N>|~KB6!qyM14T-gbP228dCJns=$$u3JP;l0D$Y9L zfM)pT)S<CQ{$>G(LyJ}e8X7+aoaPBu z=P#;<51tI|NOaE;?-eV$B~*c2$yl8>EmRIcX?42FN~l^^LPf1^DN&WmN~mToDupVO zYNk;YZN(uW_^~)GSyp8@cu@oAJn?>UjDNnkKzu-aP<%+d#NEohP)rq8)%zOm2Kc+a zT4D8EP(tUBnWj(;5`bsvH7&3bun?+60yUjAot+>-QL6;hs_$syZtJe)ZRc+9?%?ju zUIrWc4~vh8i^V14qvB&?N4M44z`Pm+bZ#M*r1W`&1XP;_>d?S>Bv9X3-&j#apiyV{ zGO??>o4dQahkLpBxVS=mLhR}8<-XkA+uaAWk++R-rWs@3Y36KZRMQHQo)WFjs>YKA zy{B27)yxypsIFFL66Ar>&a_dk1LQsxoZD047TFn6LL>8p6lzS$mQWKK*awki4E;2X&ez%)H!%#93p7B&KzC>NY-yB% z5`;q5cf2X~WP7ofv%T3q>=o>4@hx$Uc!&FKajt)@_>S1b+t#;ETrd8l+?r8XW7wR5(LtG_J_rELlV{>e) zYK=1%%C@QrCbo5hxDjlti78bRa!je3kYh^Kgd9_H6h28$_XZha+A0j4CM#n z7V$&zBh65nSRq-0sRh|~W)?)2WMV;fm{}05Nc0ev6HE-oE^)WG!`xuVJSGNX@2L!i z%-JT_VBp;Ln;Q(7$JAhaY-TWIQDqnmS(u5zkhwlB+hFW4HyCO)je*XZV;|()OzeZ2 zkYgX@gwq(xN5rGzu~QFa7S@_k_xsc!-U@?wySP)_1A};Ari_HOqv9dxr;~bAgr7vy&iLSxU_nz0 zKUFSPC|Rk8fUA9XpuOy!=m7h>c*y?=OOfF+kOUB2Q!PVQb=1;*vDO`7OUsHJh120U zY8ZL&nnJ@#AdL>Ya3$bB68wQ~(44G!{A@rkNWk-T27gEC8^)HTHEB!Qla8b-;0`#G z`tt#j&QOr89&=Lsj6i3d)L8Mk4DxdV_-?JDid^w#g!oy3D|N!Mbv8aO&|GIQ(^(~j zcaO;m!fy^-tMjTJqPSC#x)mhJw+AlOnF>uR$w1@5m zp|0@El0scbw)XIASD;cF(`@V{l43HMtdOjjtdzv$jdgNz>=+5Vl5&l;LUw1|1u?Nf zs$46%WZh0zCRPL!pF$=kGgv_RmWjav;+m5`+!vxL?wq=W$5qK1?+#h^)GNnWm**sF zWNn-)P%~L8nMmSNWAY1ia=9+e2yvJM!wA8zi(&}>XoIF#VK40iJcHF92XQ4rNRP*` z3KNg_U0!&(aRBNe7wRQ@f%;~H1_#cIU6?e*~;K7Ib%Ee=6Q-73{)K_Z0_TNVn{|#h zP_TYv5UaMyYu(owAuDQ^Y@PgDB44ymt_ZY`$#Dm$49|At3u9JZbd^?-60S&JaR^x|MbyfI$oDo-`Z? zV90?+3loGM$%(>L;Tpv<<8z;kzIfI{E8r*$J(G6}_Xslu99SVo*1WQ0;rE!-01a5m zZSoo;xBvPbsWGJ}+2rw-3hwn}Hq*uZ1J+WaR$GiiRac-fFaX!3vLV!%BG z?-yU0{P$|W4a_iRI5UE|%yT2t$f^o?hgGf3F5qiKe1eqt&9-qvu3xL~BOPL)NP2>eSVM9{+)> z0e^mosD+@m)G8@!Lv@qtR8FSlZ?I8&UwR}=^Nm2-gH_!Lqh=8G(`2qKZ^5^QT$F8e;|8yB z$9`CHcv9c9ucb4{8@%SE5Ou*WFYS@MB`%@CWbSHAKxI|0?)d6K{zfK$2&fSOM=9l{ zn2a$2&B#TF&Wm?plzo!|*oA2kY#H|1*3-|^-!s6IDy&v`Z+KofoY&lP ze|UcQw&ZEM0MKgmjfCKtH)Z?GlF2}IbSsq5QT@~fmokO=s5|GfvJ$$21k&hA^|>p# zVwUAyufCgvS>!8l59nKUI4>uW5jd~Z_H-D~AM4Vvj$w1P|bin=;z_^6k``;zxV7IW2i z;xTAJ^OM92TUft&$puFJROSbO+3>;^W_}R#8$dRvga(p83Oxh{GFxjF$PsVD4%Ql6 z0Tz-&gLt+p14HW0>-+=gd!m@pF>F?jjq>Mof)7=qZ>2; za{y4AevW6DMj>GeYQ~)TKf1hpJh>t{#5UCSpI%}q&KZNS2o8RiZ6hi0G&}rSXcsBW5GM(4~GroFG1jABagOOAG zrJ+`#&qA$3j|ECm54ay~uz97ZCk^zXfy+styKS>w4$TZkDFYMFi^-RgE0ZsS#af_h zqZaQHJ+8hy0lt!a)o8-iS@AV6j~A=K>1F2Elih9F^>H#I!vum8@U*%L1hm!!0BAvP zCR@?DuQt#9EnvP>W6ogaHDF2GsE-WD(?hbLEqDRTbtmCm@eTNvWB`5jsCKolE?|A(J68l}llfYBNtVT7{&bN_?Ze}lF^i@%vRp7jle|LZfr`$_tl zvQy6io06N8A0+?U?S}vEd4L)~m;c8$9RB?9Q8yhVG*|uVl)uyk(jcl|ouonhC`pmw zS4WK&^P}WdJY`z-ZC8>|HLeu7nMCyjTiLQW|NRkwj#uecK=-`*n9rI z6KrEvA@r6$H{$7Uyf2N`sE^U$xdWl?#ek1v&3D>Afy~CJnPn9QKjxdYP4kRgst_8R3zgE4gl-`vNoX7iq)|qj zFteGZ(RdP&&;*+0R+54;5exr8bL^pi>@0gYX&w*$^urq(zqF1d2QWvIzZIV>{=Imf z?S9)p#^c(VKfPc^!60TZGlUt+T+f{8+32z4=gG29N6VjWzes+Wl)t*ZO6o4uUngZJ z>VIe5GdwTt{g0V-&tyR9^X_e=1);7B)qqb4^19IRq@&>3*rGr2+Dz^}9xAhQs0%}9 zGpjVZowST0bO&vcL+DN#lF&r5ekg;w_$(XL6UmCc^O>%;3z$m2t@+(-m3{9O=eb-i zw`*O<7;Qp6F{jsEXVL>s?@5ib_2F_j`9t!@O4mOEs<3 z<=icS@|w!7IxJ%Unv70y9w?s%j)OgW7(QIPOSQf-OLOqM()J7=f<42EC6!7lmsBZfj;58BaJPBFI^|Sb`ToL}dY<*w z4?pjF!FOG-U$B30KyYC2R?DE^;NXzp(BSpKrSWC)-;;kNQ3Xo{YXw^cdj&^@mA-Of z)#BH1Cqf|G$!H3?3r$7S&}+Wws8N^c z=Tx!%KdGDSX0yq*BpY^AIA5fl_`$cnvpL_|ff00MR?iWC9C zhN4ul_ovvqqW^Pp>rC!0i_iD_`F?-*efHsg&zUo4+L^gi&e292op@&oS%U>I0;8?c z!z!R(=`DKC!-{qi(X&^iU+JxO;0<=*WIOP-VlYo`*BggGH4^y0srs=E0QBHDk zO_sABZ4|(!;BMSha*26Jge7guP4ZuCg}`4eH>+lL&C;aq7+5n)<||#Rd*Dem3nJ|~ zhL!apoFn(>Wru>p&p{6Lv`G_T`Zxx~?lo1J_svM9)~l@dFq7CZxQ zbnnD7u$AF6-#7XxIjZOYL&|so)^{NBl-x|&jbqqU=e$;i7Mul}Y|S_ewlXkYfbI2} z&iWK)^_gDrqj!e!l~X9HC&UCE@sXJo*1#h@t=$O+8s1CF!GL5!kM!bfLyz?4nh8CU z2N6u@kv`lC+LOMy1=yFf4L#DAn_2OVS36L{wsVn7$fe||(wPocklHOrs9;erKL$2dG6Igndfx~lXbZa1qhVoZTGcrf>) z_b0=z3xE#NpZn7Lhh2s{yuVvHz2s2N5qhEY#nP8bUoPF@^^{nSZ)xI8c*$#1I~D_> z>vII?bDI$|vY^iZZoBsjYsNmZKX(APqVy2%Fz#?rVIU~%EwQQ3FTEx9u+I*jSy86n zD?)AbCM1la;XdlZK*cxP60vQuYfMHhRxs~x<1 zN#_!a?^Y){mOGAXUlK0dcGP-^m-x#3Wyf&CxL{c*WYZ?YVTiP|HZI)V<}x6}(%vp| zdFYDJ30$DWr`vL@LR z31uSXkrg;`)QtgAd0Nz1Zcj@=n=tn9{@m%@C~ivV_RyK!S=_y$`$G4J+LpB|YhTu( ztYcZHvfax%mvt$7Ik_$wDA~i121y;{Y^e1icAY#>Qcl+sR!WeDPUXZBsUT0gks2T; zai?)3xtl}dxY?mOp$9|bxpTO4x%nX;uA%9@05aBn&8-Md3Z2J2&XV2mJ*W}_q?*oi z0Mtk=3(cTw#7mafhQi_S1g<)KA*g*1UFL~gGl3VIIOcMi4r^7emi<8 zha$Q|hc}k2yCOjK5`8JBdw$l0=oeyfX~Md2ws?LnQGGw>$bI^HO#PNaX&0KMsw{kg z7R$MkGki#cq=DKULTwReURY5*YcDGM#Pdz^^zfVHs=yaPhPf2_BKp#%nV7I&W&|j41r3whFQThE$Wv+uk>EcP5IREZ@xC!a02|-=47pT&;Jqd@I+|#<%{Ovh}xh_Ki*E zZsY!EH@&BD|L!^B|IU5Qmd_9EZ)~pnTi?~GtBcqD_0E-V=k&c^W_Z}03I6>DhhCUG z3A=DfhQB`e1tT)wuo<}EB22V4GuoNe%I?fmuXRo1?&Pdd+ZeIv63!~n-fS0(36O^j z^VOu9FUEH?2Czck(bKt>TtRnCGRbNS-lJPiWcrWBeHpAiZFTD;d-@Lb+N`{1!oJMI zhQfse_i`NEmBq!Ku?o~@ofGR$tvjvmK5k;=$hy<(M%6KlcwLEQ$&s<(s!UZR2meBQ zK4P?It_c8{JZjE02;|6PG>|8c8%b~)1Q`>}%l#_wguzh|`hx34*IvMhSvNI7WxQ9p zrS5~u4=ZPLUsrCeo5Ouq`9|G?-1n7pxp~}t?#;UPsg+Rb(|}!D*WkDREN*k%LmYa6 zMj}>;L9}{gmdOmGj39uJ_cd;;{U&qT#wF6r?w8yR@kD%``zGJbzK`9XxHq_y@l?Dq z{wTLCBE;o*+c=XP-QBe=;ge8rsHK*#dE3lf7tJfIi?(}lWyG+TSyo0?w!TF2YUdt= zSXZQdiEK~sdrQ6dL)o?UnTL$48eg@5Tgaia(gj9$gQ~Imhh1n-$dg4z+k#B!O0)~+ z3UJ|yE|?c_(;63ZPjOZ^%ujRoH0DTmBi0)xhyJw(3+%}PJy@WF*(FsO9a*3g3+&DU zy$qo_lws@NbWY(l=hjCz93dx^re1S849>2(qWL*cNk6=}^^ZbuD z4)zZAJ_NEf1<79A0<_hrFP&lJ8-!j zxWW#6wiwKjm2_EhWEBgnW`XBuU+-5}Tj#rCDq)M9jp*hOI zFIftc_iga6Hd~nbP_jY$Lw z?jW(ykKPw(h=kT!ym=O?=R59u>P)8qt_=PFJArHH#6NN`d8ieQxzD(zep~%dEE)G1 zRYH!uL|a!_K(W9&7I=jQWC(soO@(dAdeihL;h;cu)!df6W(ViU>vZxQ*+2s?!k@zm z6<1g$>dQ4;?fuIA#_iyK=l&>Mqibv6gHy>ahvi1uwgwT?fE&%t`tQqY!v5fyu zdrf52U_B8wufSjB984x#=%$y+RvKWQb(Bz!2`hN(ryDdWo+X6%qK6$}UUyBX*)k`o zR_O}vBD z@~h}4J@`sdbz1R2L$qdA!@PzFuR5+^81b8yWyzCmbT`kFH(B6k<3S=QK**Z%YU`Jo zgUoKQT%Ev=L?_uEuD5IF27W4e%Q{vaB*7P5US@Af)Ayu@CWm?J_~G8;y(f52^q%bP zSbAjg@rEZFI+e!x;lU>x?n{mEE^N3zwWwin1KgB0+$y%=lWbNkJ68O6GRl#)@ZDUP zn9)q(>>P#ZCzsmg8lK1r{!mf@JQjUB;kJ%jgkOpeWM{J@A zF@rO26E(IbdntTj0WDVc+Z+oDR{_H_$Hhc7<;HIW4gpWbzFST@>u^{+2FJ zE%|}v`JT?#NxFJ^*yXtwG$M4S{z#m9e2+(l?J_t(xo1tAH z(ZT#rbm`rsAHNU3FW;Y^PaGl3RT%ZYDRYYt*Y9?B2oL33zD3B03EEx;Jd{_j12V@2 zc$&6ftfwpI>gBRVWc>Rd84PzF?+W`ig->)jQYX1ib~#h0xJI~6b!{%&Ki0qW^TbHk z>8`)(3CTaFX)|IoWB11Hi`^f4AT}#DJ2ofwU~Fz|UhI{`{MbXWhhvY#9*sQ~dp!0; z?8(@I*uvPN*y7kzv8Q88V$Z~u#+JpF$5zCijjfEWimi_QJ5NRahfmXvCI6j+LqAW` z-Nm6jY=X@XW8Hg|vz-@%J=-~rV-oGm$6Ss$LzKP6$l+}Y1`+-bPgDl@XF3P-*4W`Q z3V1=M=5CM-;i=f++6@xCFfz$ZTzp|fO-5fBVQk(N|Jc07ojVo%|I6n6z5RXsr>)+0 z?ekbO6L?0gejb0@@O{IN4L>#f+~7)_lI)rEB)o~)sW~b2W0^@7f~8!`339|`n2H>X zV%87O)qk^**}6xq>iwR7)+0OjoxW?gd;VMe0+^%oSiU~hkV>SIsZ^>ll}>RfJ|(2Y zRI)Br*I1XX@*C{+TRz(K zBQ?z=nOAewV@^HT>Tv${#^d?c9CR`Q>y0xyT2yOJ>GH&5YTpD}GYgDc{y#8dC-HxU zTgfTh|80jS+tZ)_7dt%p&l|Q{a;Y`;HE!^fgs8o8Cpm@Bdu(>gM^KwGFbZ)~=2X}% z_l7L{PY!Y#KTSJD)JzF(NsZ*E`R?@H<@3e6CA%jXh7v-P8E=;6eRDk^=&b5(RX;VV z{wx`0JV2n?@~NHf-hY#}dO7)bHr1J|*xmcTE~8rFqpSU*Aa15vTEb&&rj500xwEM4 zG-ytE&C=X<+BiN({Ki5O>@Qv=FE#RqKQYV%W0Y_EQ%3n5zU8~)#l9VO<@WflOr5P= zU$)*bpUbxtRN^1g{CD;M`JXq<%t^KI#Q>7vR$E%xUdA)b#Vgy(_|B$l5z=IzWzkB0TKr18_25;olHc3VAA~u`)%;!-XYl~J z$kceh)HVF^?hYR9a1}Qd)Wg+|o=(MJ6&(C(oV^O1YpO;^D?)~w0tCSUhgBh!uXD|f zus|)>7qlwhO}rBhk8zEwJ+VZ`7}xRF^EdMogOh?62UC&DgI5HPDrML_L}iGQV@exI zTKAD)YLo)8Qb85?KRlpT#ZKmtU^zy1kjcCVoW@~x66or+#AAGINjsC*dS9`<9o!La z+Z5G|AAqOJJ74mBp#@{8T?HCkifk>l8matYSjshZ+g5Q*28J% zot|MVBlc{4Nxy=YPE~6M=@#w_{sOQh6trJ4w0|*l01L_F-~wdSN?X!juYW?UO?`+R z4AJH3|D<<;cRv3R|1kduzaK=r$3z(I9F>4X z70_-ivDZSFdCS)ze(Bee!Nt&!V(7?XXlOBX6bs4ZXu6m(Ifey}rGY#-u23GMVj+N% z0py^duo^s`PLd-h(7-?#NLWzq9ZLmV<$Roff`5`uS41Z?25@Z|$q920RItJXxZ{l^=fSdV6K^c7ixgjs3E8BPr zR0sJ4V!Hg>%I|`=z{z}TlimWVVCVIMLQnx1GY<1!5!@@Xccf=zP4MeP--y+NAn*~A zAhjWEKq!J*iUf(!Ky|1_H~z@sByaQYz}`^Q1e*Y6-1?!bHnrsHGl{o&)nVYf{J{~^ zVc_AB_js$rKt@Pap+lg*K{dJgKv)%{`v%OB$LVIsk;N?V6b&pSi_9*Ki=2=6kNMO5 zj8i~75ZU!otRf%s_xab5wd50?5g2V%iL3&cD0_HnthTE9-gG^Ajm%4KAZ&0uCRq?x z?&y(2Wxpyw2jm;#`aDQY+4@zzx=>tS$w3oC(_a!yMq<$L*}`9lLA8zv?g(z@zW{^U zhTa|=9|@3p8al6#T(_}>~&3;`?q`@*APnCfsMsr zj-+XMIl{5P2Ds^>cYOE{tEWZylMpc^h05SxO$85$bKmm6@aQ;EfCVisfi&yqCO`8j z?pNN{x#4e6H@s01O(<^%uiq&2gAjnw4%uH!{Eq*g|AGIJ|B3&dw|8;Kh-&U~qAF+; zG}-Qur#jrhiJ9KVe~loCa%nZ0|22|_o&8=KKj?|?gVZqr9?QI>1j)Qfc0&(W30pxJ zHZ*=SK{~vGr1sp_M0K1`8XT52xZ3mT;mT=eGb?;Pu4*!Ycm*WJOri_)KsZN^pwB#W zL||{OiYy?pfXo6J8jy*?0=EXKt|gPfbj;?qWQgfv&RkCBNS2nABfGIcTNY?X19{Tk zfvu~xF!t*XI-p{Ca-{A67Wm*NPlg&m4uKr$NDGz8K(-M1-gi z6Y7Mx&_<{i8ia(96jFlaiwb)lF83M*SniowVcn#K1e6f7(mpKFlKBNrIJ$z-A-c;t z*k~XWYap^3xQJhn1f`^ww4<%XMZo}RPeZF=_0fU0XEN!?0-ac3cN(ZAU1_oSY@i#> z(>c_|%Ht&Mg$_bnFn?Hg*q@+|OJN0`5fov7zrQCd>?X7o+6f))8ln?a!){h_4zjzT zgt9c$S(r-pqM=BQO!Bm1y+XaMJn-yZm|4*))W;6&YX|nT1NX55_q7A}D+YUpa#pZ} zbQksz_7r*udkK3BJ%yg3{aYp<&@%bJmdOXTOg^|}a{rdehqOe_lSB38Hw=6D=@mN6 z%CEQ0;dbB=cHjUzaG)JH$PPTx4jgI+9%Tm}T?`Hm4Y7i5(qA}4I8-=H7#upLIl{5_ zgkGWJtOUJshS`C`?ZD&hz!U7i6Yao^b?EB3D|TSk4&1F6JSlXtH6sr>N;q0LMmQD* zWR9Fd58E6WK?76CWAp`uFT5p!r{UZ!T@2QFi03I3=xhLh6=|C!-V0&3BrlO zNx}p&iq3EX8A}6wD#jTaV5cX2DlYI+Gw<18CQ%)2Dt3}nh0`dr2sE6ZMuJ&fXt?Lh zVS>{^f$?;HXN63jCQLX=7!3)}F{-MN(}z`kD$Zr~I?n(=IDs)bfffzns%W53#i#n3 z0TW=^Ceku4fU*UFpiKcDa+Xk&K3fX0mjZhmIe!Io#H__HsZyQ z_%b7LA;(LED!tn_6-+&4U}Cx3EwTx+#LBE38*e z7ETdv6mAl37H$!46($R}36p|TzyjDb&+SmuJ!zp+g*|AYE^BaE9LY_>e>r@V9tQnM$F2Y?4?{}G|c$^N4P?POoGka+Z`egZ!r%o1h` zbA$(lxx!p%n3se}7>T}4EBm2`|eej0Zc;=4`z;S@dkptizpyLsR8-AMz?91yPB}g$dd=y>KtQyL}Lo5 z@L2{&4go#pfp%_zQ5RMS&k7SA7#d-vuu51h%uYThtP#xc2pVgEG{c-i)*1RImQId8f#0AwTD0P8Pkx-EtBKTK7-XDlM`6rL>d_8 z7;a`jV1M>iVZHF00Ou?;-^q?sXub`?&5m0fG8skl$z(JOcyvz)s1fSao87TFi{7yr z={Vg%9eQpOHVa#Xt->3^P!N6-2+;*SSNVWuL##TUKeh3Y!oItwh7Z5 zcRJ?Qd>X-Ir^INREW>hQ~xbLizKxIU)Gl1w_&EqE5x=DtvyS`RlX=Of|0 z$PCBF!Y9I~!mklz%bILB5NL*Tf#G12!EabJm5r4A;YF5?CJUaYn?##H9>tYw6Uc+E z-02l_z})nQOtemg2j<0cZmC%9LdH%eBU(Ode?XQzd62HXy|ryNO?U}8sp8~{3u`9U zjBuRl_{KW*p;gC~ zhh=$$B%E4*geAo!T|R;i@{`cyxTpX@n<50e?7{-aLPw@?qN%?+H~%6msjy0IQl50_Y&W6%^CDfUejPLzzf@RT#6^kl% z2x}_bqDS^dSI=6Lq|X=(*vU-s)d)2ENZDe&_=DgVzuJMYPD&u|JB>8)c{hN{+9rV z>3;|@{V!2a9^1^KyxRY4lus8c&lM}rH`n`wmU^EEvYFl|iBz;8a}Dyf_gmVLu6~1y z3L|9l7ljeZh>Dm6>6S1;CimCgAMB-n>1E;z>0&JLg-kI;@rBxp7+4E36E51AUnILfyrp_(HphZN+xt?qV0Q zE2yvsD9pqcQWgHvJ1>L-1PvVgxQGrjVTW{>2|J|1RM;U?_c+8pF_x()I~WRu!gg_K zdO;7XGeV(&9uCr5j9Egb6rj8qD2dWseZ(Nm<%YLAWufv=U*IjLdHadrfL%9zSXe@s zz({ejr`SW>OWa%RDdxm|#Fj%N?JGW7`dI1Xr9YN37PJx;T&nGiiEAp7VoGcjWy5yv zsMt@$;7AXE*&PBpV9ht-{Zez;aazg9lG95@l^_ec{?=G<`7?p&#JNE1ZW7J(rOq;E z+fcbP=tP!!lLgb8!~nY+yc!O_nhG1cT7DSA;!zNRlLOcw)Y3)zi-(ANMs4Aq(bs`n zHZwHOyeAMOS#}4Vg|g(y7Gw39gLE)CO)V z5a*H3yGzaqO)q(qd<)EsQ(Cn)cYX=&IOj0uaOd&P6P&+BP|W$zAX-mUulVfj0-ROA zPny!2fNG;wYNiwam^sC6bznp*2cani6-m^f+U z#G*K9W5n^|IpWQsNunAj?PBo~@lw$?PMT^cCWS5&n~9T#1SW8qxm9s}dR976a)bWC z0z(@nx;{`{OkB0@;@8lvY)6z$$GQdt)EI9q3No(+hzZQrT`UUBcC~n&c)b`7hr-Ki zivqLVAle3IyGp!KWXh)oX1fUrt_No84knVwYVE7#Cr>wmP4yy z0ky^r871fvzQlQ{^D^h<&MTZ(IIqU9@|cNl*^CHOHDKbxv$i{LR5HT;z^B zsX?Yk>&uZgZ11UOfd&>x(7=3>a#}tG)V;^0rOV8#c{s5buDwFSRiI7@{5IjeG>Baz z&KBp04~lcedE)x$Yth%E8=@Pd^TpeoQ=EH+H%GTbw?^NHZi~JdeMrREfJ;kXv6o8) z4BQo|pG6-jNR~+jEF#oOgMV;0Tc!(|C!OeOMJI1FfKw}vemxUM^8o**s=J+!iI0mj zoapN93DFuEuwQteaFK^N`((6-xEw4y6>IsLHVINHn=G8=h*&Gqx5nU0SlV(`(HtPg}r2VwCSj&)B z-;7-mJifvebH|Pi9~T}L9v)urWMU!eR&qtq3=m`nPPA;pfm|@U`bWbMCv|JUMc#5Q z7tah^=M~Tbzq(hzBr@2jLIB}`ia3ZasX4c;6h8oyVeF}@nd&CPCezjSnLbyX=^8du z+}>Xc*};n-(1z-p$Fjh2G;lQhY1x6tV=~o3P9QIcFN!aTUpT*Xe&yV^?t(C~T6W^q zd4^?T;zis`0F8|v>7cQ_eQ>YJ6F+0700_d?RU$>`$#pCf0`Wrs^fGyo5FXdq9{ zrpE_7*kOV3EN~7DjDh}@G#kZ7UKclr55l>!kA_Ev^x?wC2t738Z`YK|hjfOtLx_k#If` z4l@Z>d+=>^Q&pAg`tSweY8SF~G1*jmU}bo{lp17CxaND4-4J^p3jP|s0r7#j0Oouw zxHgMBq2M2~po4rU-c6?Kn@x_KKAG4A9aU@XGH1tFH`ga3#t=o#NXVZyR2iMcrh+O2oa0y=`SuH}7Y7u-=fV@g4_e**5x{(Fu z09$1n3?PTVZvKtMb+DU%Q!$t$n`!-XWD5=C$yP%+%7)zDFn}BawPYKuBG%NK#n4+U zlqYW+l28zceuo9#HGmv)(# z>m_jFZ$M25Vfj90p&a>y)+|6irFn3h^BS>?rIsE1l}cq&K>9rVRoIns zr#vZdswCx0`BSB-vQ!{do(iTaQlV5hRhgQfHX{;$l0G%|Y5KSDj_~i{sjfR*r^QNr zTgq-Mzp4EE*afi(u?u4pV@dHDPE;UFA=|-|P z{CsR(?3LK7vGuXnVz0+G#4c?7Ew&@}ud?4`f5b?gqwce^&&$3j`?Aba=dCNN3)E$T zrl*&rl#>1(FQ$!BTH>S*bsg(^)a_NbcU{jqK@uh1{Sq_KM%nt5`fnd*dSQQpHQtF} zQM4tb{#k}!ZMn#%s@bkNt_NLnUGrSXxSz?W-jShM{s0zS(P_IH`iTR|>Jr8s4c>Pd z>}srw?pudD8{NZCxV|Z45}}8Nme^(DqAxAU#7zTE_!G6zN~9m3tq8W2+DTi4r(93F z7#1%qsZC-Tq{n?QZC$FT*DokZo{Wjcod6Al`qOz-+v*CfqK{*w8R3! zk6Di|8Q1rar4eWv3)Z7a{5n(#i&KM0U~#G5+R?b3q=$4=opq82X8g?B3ue#jjoaA; z342R_GE#L<>G-;iNhXH0-lTdYX+6}mOgceyXcN*vje;!#-voMG2dmDP++U%1& zy`{YLsqj1W5M;&*)H-4r)Q;MPXtrTx!^^106?oHACVSF3cX#dKvg{qX$UZO@-VnOG zdf36k%8oCV+1<659dCEn-ga!9XHdC+|V)PQEc%&z>0SMnSo4Uh&(XH^W6j+Ty*W;l>} zn8}P?*^aG0u=O(8^t}+A5t8m(>ZVj818*{TK#op221pjOZ|>OL31Q%mqlvmL!ac>V z?tALyRu1+JD?8n;%a5d6P8~JF%0}7oo^Hq6-8IS%9#%HmPQ++C-tMk5>|mLUgJMzU zW;_d=Ljz-7XB8yj3=Kana=J818ZC`=oof%DXAfU!4^Om*o9y5dK(P_fceDYNwJ{Gv zeLdYdcQ1Euci!E{eWG-dbh31cG(tL6I!ziW9pyXPcZPJPG)6kscbspad#rSpbhdP) z8;!^?-*BHkQZb{0%#38pko+}STnbtAhU$b|@XO5XwjT*I9P{fQszV0BWWa8#la{!i zabdTGdTh5<>@?8aKE&W>GtjU{8o9P^n2wWm7SBFQoE-nN(_sS zunaCZU>pJBwR%CviR$`f0{O=Mt@}Io_wFCuKe~T%|Lp$7{i}PU`#1Lv_wVjM+ytH$ zK&zQaD+>dCXNjsIQ8U}2E|1%TvM?9MOk$Hma%+7MGKYSnAEF453JF>#(EA>0mGE366{XY9L6~&v z#&g1Rog{<6-OK{&Mj8cj9wdfMqUwNz^E^kpQ#2P}>XoEK?I)h?-ZzN?se75Jbv6_& zdL)nR$#@h`)`M)88ARRFwlc_MhB-Ypfx!3a0cb8{AY8NiC3izS5nt!N$#=8wWA`WS z4en$-6>p5+Ds77haXH>L&Lqc$OzRSM08MQNaJs6KM$#^J>z$1DRE77o8f$ltca8V= zlmxoPd!)KlE%rTD&iEv?-j=fWO^WVJ(V6L!uxhd>grT6-J$Lh9ZeH^A@SDJTRp5(Y zj(n$Ym=$)n$hYvPCB434P!IN|NuPMEsTt-{uxqanmT5Mau>+xrwEk%wxP9V%E&;jwsL75|fRWpm$&t%E7-uIfXBJjFzgKwkn$?{FU&Au(ZL#p2JVIq7Aq9sy4 zlbdJHk?-}&FU(0~sb`r7r=WuVO{9!GARS(HMAd+*fmMU523H+fbwvE|_>ih+AR9dL z(TeGUHl8I7j5j$vg}3zx!;fhpnjBtxg46qp@d>sJQ#AVLNDoT9KL>TBuUg>02^>ED zP`q#L^tz14{7u&6POs0N;C2SQ_}Q*iP@Md^>nm=j_*aPWdrQ6ZK^v_eJ>(JTQE36U zkmLPMZ^pg^PVWN!ISVc$%qnww7dA)Wn~A0F??1$UsDDWOF#oTSnT_{0-q(14q^F2 zhrihqx_Y}>%NK&omP;$7XSk)@GHyAyf_s)*$*tms`j7G-?LWr9nsa*9(|@g_S+k%# zfLIBX7Z8)s+uPe(=^n^?rL;;~Ej``{y~JuP%`|y$o=vj`(yW9uesACAI$a-cAMZm@ zrJB;=?!U{^rrNd^jzcH(mT?-(tFbT(g5!OYc*rzsD1oA|Kp8=yn|Sx-kHzy5B3iB zE`Ut6tgyA8m(GJ`>1OQ&)@JG69AOW8!VvF}LiU=Wsf8T6dX_g1jUN?1I(|(2*!Xer zPoz(!e@U15U*T3YPN`bm_*`R;z`?;ajcXfE@Ro-yJ8J4Bw;T!5jT8t|o0cx}xzyFO zojMDKBI35?7jPC_X0$?~++Rw^dyg+@sLdldZodK>8=^B=UK%b|1suB4O_wJNTvS`; z$w1oKPM%cJNu1tlL!%~oN~*CZ8TSd6S%2^5}_(u9x`cC>@`a$|p`bqj(`UNae z)XHSGsZ3(DIJn(NtC%No7HGo)^(@d}06C~=;`b)P&Cb?Id(HgbRC8$};fOU&d7;R^ zNjs$J;_uQQ5|JIUQ+CO2*(2-m-aMd16Cs@OiCpJz<5y$84d>@d^Q8F_hLC$oS|&X! zJtwV|UXWgqUX@;xUY9xtHcB5zA4(rdA4{J}+qkc#UnQ?xv|`i0&5BlRI>Bbe=9B$0 zE?A1zVmhH{Ev6HSmN+`0Xo;f}ik3J!p=gPt6N;8NI-zKZqZ5jjI4Z$riBl#AJ=ou8PF;s%h8ly(8m3L{4p=VLF#?T2xYYdfOv&M+ZF}Y5* zU1O+eY}OcUAWgK8rfAKeD^Rp%Pzg3Gf(AJuw`xUzxz@?HD*{!x?TVmLwpkIVqMBI| zsKRVk1ZpZ?ZgxeW7rtmkpc9H#1UjK;^41AOlebPNn!I&F(d4ZXZ02fFmSh>4(K=UW zWJS)(yUDh5wc1yjnXC0qVLK`7$`wt@I-zJ%Rtc?`lsm{BDd)cSSn#B z^HXQJi)=eT>0*nf2bEwu2XvF!IiP#-9FT&o1*`Qhm38Z1EiaQIa$K&LUyzb=N>0n1 z+&Lh~ZRK`yd--E&cNwjJS9uRPPa5eN4tzP&^XMs>-wADDp%@d7^%29)-cW3B{G##8 z#38+*um$-hQUi;s+-9%r&iL)oku*uRq4x!6Zxi_WqNH8;1< ziJwLnO!wkGnV;i-(7!iChwh!+H^MNLfLd1a$J#?3ZRM%&E3F7#6@R&EUDd$ApupAf ztD;8)zX3)(2DI6Lx-Ncwe0|kxRX4={@ZK0lM)WYEF{&F-G)tD==lpZ8T5gGVsQs?- zUmPQ>b+1$O#7qnwbEA%q5vhifTnbHL`v?@DL5Q9i@tN_N&U@qc#~+B#iqDSEiK8F? zCBb>|15+<~=f@w4Z|A%P-{wR4SzBJxHvMjzlz9POVzB+zrWKaZ!++zxf7xZXNa=k0Bj<1QY zji06ULahgxyMhzQZ&gSvdK}i1Zhk$*ir{n6SL5~INXhb;-wd^b1j|PVhT3`Ezrk;T z)bEn@ARTu~wdyq=98DneoQKJ8*X~pMPVKw3W71>OgCidYe{IABxMQj%zz0Xov2M0# z4k=98W`rCJp|gMO0kt329#}i8nn{4C!6vK8mM5I<-~`0NPoD5BAQ(UnInq!asI^w@ z`Z+J^p06Dw50;0>$fBQiH{pJ*mG}X)KH3$n)cPU9ir{7B&G_Zyo%rvKA62~{|3qWc zvN4~LTW#CUjORzJnASyW_$dAvox5rLob`R7DUO2j<4yt;&TNVaWNyM!?@GJVp0uyp zU+qnoR+m)=sxd*%OrSQiJ?nwMI>2PrxBs#FiWBs&MRq)t(o_i)>e-I*AYdG3GB&UC zjgG47$&S)`OwiX%V5hUrIsjNtGFh!#?X)W8=~%Uzs7*B{+TTp1ZnZbh{uZ#GU}ZN? zIq5{9H0FTp`hyEz{xrL3{>RjhtshrEzW$v0^Xo6DpHP2c{lxmgG_$F~ z#r2oeUs``v{nho?)L&aaoMzLH$l>g#{)YNn>!;M83=9^J7&-&?t~=_d)!$iQNI|`6 zV@|#Lp_1}sPvh-H4p^W^j{v<618gN*^Onuiuc^n3z#Nvwp0M9ubk* z;^+^}lO0=*oJnVrBV%Y_H2i6~38>e*E)H{?RX|_9XhMtv_S~s0t#LG`i-6C%YZU|CEnV4!yU6h)Xx;S-7YADo{g@`79A`q`lbxGeUcTRUr zPnH=LAJG|nyviVfX1G*DQwKkKB~Ip%fa^kyfJ?<3Q3~ZSN&!v*SYS66XiEb_T>za>(FKJJz+EeA!oX)tz{@BbLEHRe087duAY9?56k;j#~a!- z6up@Grs@%@;9k6#zQBt5J^_iprG0fhDW3s% zBCv{4XOM^EwM+Hm@>~7|GT$IKFk~;W51igNob4e20H$@geAj=dE! zj*}tPM^=vxoDq21b7o*nU~J&5z@F)$)n^CB1;z)?37i`^FK~X~g23|fqpF{lJ2i}~ zKD~PPhMtt)dJu!Lme2`pM{j9t=@KoUGz>>f-fu(_Eft#vV%B$qn@^kVPTC-I_LSWugTVt#U zwrhCT|DOMS|H!~BPZ>X;dQj~V$pOiM$wA4vo_U`6o`*b(JOitj%2x%(R6pQ(*fYno zw){)~SN^a4&zE;=c%l4T|9AfH{Xh7-H|)`nPyguu$=|c#lIq?KS5)5aF{9`G_-W!<2;TUS}@{-VmtkxsO+ z&XL_&pfd|}VS%nJ(9HmH&>6tqZG$UvdM|_j$df(vj)rsuKG6H74(w@gfI5H6I>$Q5HaX){d`S?fc6qQ;>jSR^=2veBYzz$c z4DoCVNIuyx49jps?k)M?hW-tD;B72O6JAQvFSn_Iw_lZ=r7wA2_N?=~;(67x-t)R= zgU4OEF0je7U&AYbcRX7l@b^~F8y-(79S3{8JSZ6Cw|QQZUzaz?8|63UDt=z|+p^l3 znM~UiI>_^$7d-!&>{e()80!YgXijbe8&rKd(axt$hS6!2;TD>~T!=kY{dD!Snt1J2 zqW&Qd%eRJ;8@}*NPNJ*1QyNA#jM1{&MC)TpdprG3dNWPbmvvtSRZX_EOy1fu`3;SX zQ#RCuzDc|yctt~*_exE@?^>2oOM2+`9c7?>|3ORPR>kUG%wgZy+0KjJ2*#y9mw%|f zJN0Ari)FtA#%s08B*Q52EhqSu*38@*_|&sQvy*?&EM`+)WzT?fkxt5!yV-jIr~9$f zXoCs|^j^mJ1ss9B4Iqbrm;Qvn{L5>CHFD`U^0)GL^7k^sP(o;Oo~$lsvg}Fcu!>&T z>mR6a|Ggnv^OO9uJg*_btDS{m#ml6{OgWM>>>8E;%JeB~wR+JiGgJ4b+LsPZ{w5Fe*73vPj>ie!6TK&UJC+`qe7xa_ zhEAn%et7W7h8^8G#?}jxEYa6P|Ys#N*7*{qPUd;rO<;jbplcFcrzNIDd zKw~u#*wxi-_IlsE(sd2*ChE&?D!VoMWa)9qVaegiR~y>a9G^TPd1CTF+Kibys2ytF zrDf{hwkv|$8s2Gmzu}{X&p>Y1^3NN#H*_oiqTzG8Sf(Md>b+fKDl!Y-HhkakW5Z7k zKR37%r@+yaC*e)ZPR&WFy>@GBWGA&&(dxid;DYpknjtl+BsT(VH6GB2vWD+Y9QbJCgsC|$YHA{y?$3&W+pBkDtE-^HHed30Mz~7v> zH8DByetM*qo3>KyLrzPMOrD+`l^mTsBY9?WOmbpUZ>ZKShyJRyBcoU^8^!+TS7>?K zg5*gb+Qz(F@t$>!6Mzp%h0pT4@oo8be0#nF-;wXchclI#cj(On)8bcUy7RsHJkKzo z#n(w+ho;bvCU;a&>oE`6kFU)fz#qtuwTlHG$ppx6RxKSQn)!*=2Od@P`|$hnu}qE} zNS8TB4x$0(1^(mzxVmtSc72&T!}V2ajO&2dfw6;P2gmxy4v8HaJ1lm1?1a=^xWSrN_ggzf|(=@H^qbu_3V|W5>kqN*o(om-;L$B>$%zUc@uI;_{+R z=GNFl>B+I%VpC$b$0DhnJH5DopTJ+pPvn=R?ubo`-5I+pc6V%DVtVYJ*o@fB*uAm) zV)w@$h|P-4j?IZZ7@HfL7kec!KlV`U;n*XwM`Mr09*;c{dos2lwlKCRwm9}w?CIE& z*fX)Ev1PI4u@$jrV=H5;Vyj~hryohLiTz)2eZjm9(qHTq9u3Bi@C@(_^vJb6Q@!F! z?I8H#*`o^I1|3y+9VC;3=|SAW)y72T-?`ez2v+aQm?Hn&eVP7-)y1VBVOCb{|Kvih zG4m&va_#=qQm*yc<;Wp)YcVGGiNBr6F<+2B*!(5Z#*SE zBK=bOqx9e1ztBHM_aCF%Dt|+x|7QM%{;GkedmO4IhqC)7jJ56Xms(pX(~3{$_J5(h zwa;)DF4bMe=gDEle3Zlah%wJk{+~6^+06fz1Gs+-^gjl=RR;Qu|Dy&vn=wuFK-NT0 zAcN=yBRI`Ac)&n8h$l3FKE!d6cA55>4jIeQCT`Q=foVtBFgU_U4xoc{${Y?ESk8bP zWOvvq7((ZoBS+EzV;C3yR~g1GnXZ{#S-bvY9RHR6XUpJk?JaZ6f01$A_2H)*$UGTp ztk1ys;aSm9G;jfNldFNCoiJJ-Bj5vwE8wNVRb(rF4Y`(FN0tO{Bzr`DPu-q;$-75p z&&*jhXV;9Y`67WrMw>z+g`23YPhND#XM4C;#Ks!$otaARpiOVjj7{R1a784j@i}x; z-U|}nODFDam-r2@P2xU~_&z#u-^>(pdjZl89b6=r$!GdyZh^|c=|MYQHcvYCitHWf z8CetjIBO^^HK2J8b-{{Z}MZJ zVq#8`ErSJ-dJxw-yqjSC{=y%hX$Ym7BQ)9*7*#7t z^NOC3IWcomL7^Pk2Tm;25s3PbzMg)%qaepJysvsnX19uV6`d=#YJ&qW8aAPiI{nbF zvLao%{t+$;7OsAtr>a9b(!lkH)L+itPSoRy48r~3T7ZdCI!c4&dQvf8J8KKIVW>& z=Df_l!ugpCG7~ZvW+rBuGM8p9%UqthB6DTts?61yYckhnZpsW3h6^VMCkiJCIWnGh zSaeosq16SAlZ+B>$&Aq=cxV%IfQ%4s&73KW5ylGV2^R{JgiD1hge!$>1)E7{G8q0d zt)+30+cKj=XVB0TfUYZst}ljeD28rip&oR^ks#?R4DjEaIYqcVGc|KZW?JUX%w*v< zVN!4kRD+GqcY)4((n9af>_H24k?9$%L!0FHK=ST%@);R9l(9l3q>C^!GbwntFkQG$ zxE~tg7I+C~nFuENFV>?w;%#I%c~rPBGrMMKvKw4Yu4IWm$4Mu)#Ic;NIOU?}AjI4q9Bx4K>oB@j@V||6m z9?v{MEszSb22?x=oyNRm0-%E|u;W_@e5V@=sRG}k%qYuBtRU~P%woI5PZcMAI&+Wp z`NDM2aKG^WRM;v_!)J;$TxyreGT_^8Tq-VTxIFWjZ!E3!iVOrIqigt7_|wv}^&7Kn z-*_bRXl6;~+04oelR$m?YVB_(>({O8chf5v#^Sy*yRUjohR9S)^43RCcy)F)M1r+c1um^$$XrwUR?5cQya@HZ%4)P7iZZdd2rMA7$QhY$HQTKF{=M+@AR&lZrM*Ltz_GuDK_H?S}zo`;znYr%{AhKkV-&=NEJ5$OW{vIWmC- zE~J6B{7fL1836tbz~wZMCs)vFQcWrAsuMBPGN!&o6i7DU*~2JVpk)>UIu;o74j-s zRQ8F-%Jy~WC@77^B(xA_IH52^H5_n4VFKvtgK<|kjW^WSDt{sxFSgZ&`Y0sLk*kfC zf-<3fv-liG00LH(p((@P9Q*=s4Q*I*U*P{@XA}hw|(#U-u1obd*An= zPf()uq9Q3DSYOQQ7EuO^C|N%`9V7$LwX~639b`h!;`@&eMNUzatiq7o5P()C!24SE ztMNLzFgJ#oxQ_6NYt)cd{#%VCSRdr3@XZhtLam`?XazbdofK;_WP)nD%}AC*;HL0o zI$39>i*kMVhOoY~yA1coJ1Dy=U6nkUVkE}2AnkSo$f>|o8mJ|Am^Ib}%{Lgn7N;3S z!PkEW>a(^+1b*a1P&mreN%DxIlhR zl4JGGq6@^_Pu>8B-TlgynrCDeuVx;MAx^<50^o3w?ut!EPx=pl-)SV;hXW3y6 z*Ac~H0%SIAU{?p3z>WBJu|slj-E{6SWvi>3ueTTB#W!}h< z5VVm=7$L1mHlp&>N;T$VD`M>Ilfkc3yBIr6V*H@CUPI86(SdoG_&V0lWqmPejgaGN zWD?-#vOOacOov|0vO#rRjSRcGnk{C_kva6Vj8S%Qn@~HNw{8>mi4RrSfIPTOsIjWs zge()rycrBk+UKzToF2DFhbmHwp>led$wGx&Gc6^cmZeRQl3JD`fYEadmvBw60csaL z=Qw4UqDIg`*IiEdg`^lkXSgyjUgTY!_p1?cioC0v1jf6%PQXYvf5A5+M!NY6#9*YG zQP4tKc|C;ppRAmsV62;>NH=;3iXz>Z1jY@#NnqT-n*_!Uyh&i(z?%fd4ZKdUaRYy% za*{GaIaN7L8L6DEj8aA`x*Pa2lp;6qx*VsMaRaXtY}~+)QN}8};09ioo}7t)*!X)x4GGp&xHW=2DY&_*pB@OsaO%3|Ec z>vlC8;@F!S8UwI>%wi_#$Tk^xQ$mu*}9F_h1s}`S5sZ0G~+g2 zPgxX5#w0Lq<4pqNHr^yKZsSb?<2K$TFmB^@f{okw%aqHNE1=n}ZsV_1u2Qa6u2F2= z#;bj+8MpCzCsISaj5qrVhIlz&vGFFatLF4F-sDXJ<4s;Cw8ESGjmk~R%}T4h$?H;` zUdEfePS}Yz`CFCAij6mUJvGK5X=YS8y^N!IGfk?wG`2qIrzo@!`rDPM${n!hFqfXo zb7US3_`UO+%g5<`$hvAXjgHg%aC3x5nj<`FPsowSXnk_zaT@S@pJ-meC+(%eMARH% zVRM8<_Jjw+4_XNrC+$w|1*_k(pkzm%6ZBK%0#6}nWS8-bPimqT&rBCT(8`q+@hfC|J#&l%7b8Qnb3RK zRWK@n?NUP}*eo?v0u#u^6vYH`F$p#^xGKtK23H9-Gq_5ynZZ?p%?yqNn;Cq*@(|46 z4=ax-k1CHTk1J0YGx(GCGq{?8%?yqNn;CqevS?Rla5W2?8C)gU%-~3{nZch@o>rDL zH-lpun;Cp5qQ}1SF zOLJ4ND%NIxMS|@l`bN`An1LZ?@DrWMr1yXf~e3AB`-bdUE=RaVGwBmd*7 zPpUqx>Q=i8Z{NRC7-qb|NynY}O6lyUJRI9)S@e8qTKrqPOBCNJQ_0?j{;*-=Am1x{ z!Oc|5eFqnr8t<3-L1DsvwE2@A@J|H(z&8IVUPmtU;a4^M7EZh1?$SgSXkvkjSYQ$h zT+9NOu)w7(a2X3+&H`7kz?Cd;6$@O=0@tv>wKQ;nZ-P&|1cLPuBEKlVD!(Z^l;4#< z6q0phomp4bo%LkB*^;a;>(7>#8~4(}(9}+HXsR@8xmlxvyNAlM0TL+JdH{kB63AMP zw=q+U(7IfI%Ax}+Sm0R}SjhsbSYR~^tf2wRsd^}fdRVqERlu@+sVbHy&v~?tqjD_u zJRR2dGeb>yp);7R$cD1vY-P48Tb-@R)@FyKBH3s*mes?MX#0DnuhH^sT~-Z4!mxN@ z#G1q#pzttmym?OiC^WK8?IkJkDC6m=OkR#90z*@NGg`W7e z?A62>Wdq7#!XOlQ z9SbGMD`9MXqqg#7iv$0#0IwSD2RL@g^(^oj3%pJPOQDV|HrF(+6G&q=o#nE7MELAH zr;ru1QdZ7pv%6*6X4_@kXFFs&W;sCW`Qj%u$2bR48EaXl~-l-cUPBam+4g?M?TU0FseWTEWK9uDq!g*2sq*X zY##c=HbdVW>e~mPH)&{L5WHm@P@z;y!`GC)twZWz#bMFIqen#Zp zz7@eevpuqVW%thZ%;vJavc0o?v;DIBWcSVPmt~R!!6-D(Tua`y>Y?`F_gIK=LBE%w zMX?*v1G5KZ|C4U$8CCXx(zRZRzskM46D~_xS_Oi;coT}d##3YIB-pHIOAdh^;m{vi zBIqE8W(mwJ76DGE(8E~JK@Q9M=!`sMAMd_}toE~e)I9*QDxtF)2v8XdF&?0C`8y~( zINO4YXqp@%m9+NT!;gfD)_p^>a~f>wqcF?}bWj!si0|i{o9nj?V~b-Cg=ABvTk2+83wp@}QP{N`IPM6#T?bjd>Rt zovliYs@InWK0n*6w`iS|C);U*lP6!$K#qJ#+qoS1iUq!Afp1vgTNh(w7_)Y=94;1cvw(*Neh*iZdQE5(UZcN0 zdqeid>`mF5v$te#%}&nZjF~bSoMcbmZPt%sv=g|3m;y8A4x^L+I>_ztQT!AgeCqe` z+HyU+Wp>%+NC~ZAj`&!>&jO`1a7}4hrDfgXBI>f$TSDIs@cr)BTV-j%&OJ3V_( z_H$@POr=fP^@e%BF#D-zVzw!JQFc=H;_M~aH%l+gZuef6y*ztG_R8#4*{ieHWUtL$ zmz|oOkyRb)GotVf%dQK_lRzbQ2BSmdNjVKL9yWHx83?)pxi5Qv*6Iu-M}m4is(IFu zuwIYqqdC0KTuJkUDvb#Td7NZ+c8;}ss9;m@L6{pVXlZk^mueezQ02%MBMT#!)?8Mj zaPx%AYo^rPQ8Qmy6j>a3D)Mw>N#vQx(#W#N^2mzFvyqjNS=o8n7a}i4EDJg{tBY&q z+vWcdbk9rl=?*y^(LF-jnT)m^TpeoQ=EH+H%GTbw?^NHZi~JdeMo#edMSrO_5;zH zkT}^j5uZgLDTv9DTD{>wBlyXY2n$4Mpt`cA(y|ZXA`7w$vx~C$;^sOKpefYclbOZY zZ=>^^OM>&A3rZHa>(~pmEC0FY&by^if1%_4|2y~G|63gS|KGUjo+B}H+&96%e!=yk zD+m7;zH^#j`hTx-OWg;RA6CxhzOLL_H|PJc_Z)yx6;1E8)Z@}~c^66Ua>?B#x!11H zk;9;LMI{um0!k4J*ib=ER7Ay&h>B7aMG*^NZxKc% zeg5S8FfcPaJ6qn)?C$JL{r9DBdREqNDP2{6Oa0p(#rFW{c~6E16h-Ud-PSbtoezJK zB#YyU`qw-UhR>_}kLRIqXH;!mTF4P+XSACc_?WE()dLf(mEi|=K-CY2*BMuM48{h? zBcNd(O{by+parcDV>z%=Ps?#p-8Rpo;paWCd9WNm=5*F|5@usTLUBJxZGuC5S0IdZ*9d0+N?lUaf4kiW8 zw)>2+E3wF?uFL=pU5SAMT(+j;3*3%0yg^Hk~ zjN}KUvJqv-TaY(xR3)Gi#Kc+A4|&+28*hhAAz949EHDv{wK5d=;t34=v-2ZiS@4Cg zM#|$izsOfwm;TfexS!&wr+qFchx@G!hsGgK``!z;AV1x>N>s0RG8Tp$q&ApA0W&CQ z28GO^Ml-0%3~Dxm!e)?Y21#a+Yz8T2kZJ}+%%G?l6f=Y3W>6P1sH+*&%?#>p2K6w5 zdYVDK%%I+8(C%hXA2TRn2K8k@ozWiV#kn)Y{4rRF`r6Zv2i%hf+=~b7&jSwN0SEGc zgLuHfJm3%>a3~MBHxIZE4>*hm+?NO3j|beJ2OQ1=w(@`@c)*c7;3yt&G!J+H4>*Pg zJdg)GhzC5F2Ry_KtVD-qCSnrSt5HRj=rA*AEDK7Yap_eOuXGR}a=e-5aGEB8j-UaR zXo9)WM4BdnCb59YEZ|5QP>H6P*&apHB+$_;;20KgEDM;*0;aKm<1zr~6j0&Evw#y= zz=hE?6l5J%{+*o!UE1o0}^;{GH*?rtkYZrg+8`~t*>pZZ(HtTC6AZ%5MC(!Jh(ad zMexhuSHZ7?-vqx6ei!^cxFz^Q@WhgU8iv3--4Sunn{gvY`;l+gNyM{rq}s zo-J>BLr-C_?GE1%+fduywtZ~FZ1%if!hW`T*Kk{_ZHvFb)ms>8+g%8_UM?JE3%V|= zf2t%mFE1}YZ$strbtlyEUYqVnVkP_l{QdC%hX>#vgz*#b55pgYKMsEq{xtkq`1A1Q z@E74P!(WBJ4u2E=HvC=q`|y_V58)rfKZSn|{}TQ+{9E|<@Ye9QFcK}IRkVqA(IMuD zxniD}FBXV}qEqZ7y2K)}SS%4s#WJy6tPm?jw^$_#qDQP2cN05{HDayk6@6lz=ojn7 z1~DK8#gN!2Hi^w*SQJG`lto2U#fTUcV`5zFB6bzKiQUB>Vo$M`*jwCP>?0<`zTzHY zi`Y-xQ`}4JFAfj~ii5EW&*!W2`F-`i24BDz z^m#o#Po2l_srNK^0-m5J_@Q-jBbrA866pLiAOS5#j4QEU+tSnF0JiU>tveU*FU~I-F1CscTTh4L3$RQQ z=z_GcSXQtZFJ$Kr<2%s}|bRD~X2jqM#hWJT9%I%ow` zyv)?CdO^C_W4V`>YMzgS$vv?;4R|ZSqFO3kYjRAyNfJg&YqJ{b=fO*)_3F3+3N#b;I zDY`ClD80NCAI9S5B$Fr? zoh+Uro+{1|XNsqZvqa{YSdTi+9up@;&OvcuD&&YU>M;%$F7GL8_19GGg*QE4>~Mh7Y7hi3f)3Yc>jBoqxzmf6*zHRVmzhYos-yN$Ke2O3at!XTdEjC@7vMk z;zIEX@k;U9(%TEMKZ2%cGYC0HPL;4j#lWfp;)8T`?47ST_sJiYzi<9k;v#Xs{9oPI z)?HV(yzctC`$IR>t*Cn-^kC?r&`fj#E!Ir5f(6`20~*myG~jx;sV|4Bv0U)uK!=uJ zBQ6$~h)YF||HCrTiI%5LU7)w1YehZyh1LQGv;c>%daV9BafhRsTrDmaI~vV|GX(gR zdX^!$A=?n#AZ}*}R){xd9Rg0%!c&@HY4`>1q zXd}E)9tOX)Cj+{Lge|&N*8LjasqA0*pUQVDr}kcq$#YeQAU&>txA>Bw`=NeZtq2^1+0`ERm z6Kkf_OsgRqMTQ*PfqX)PfknERe~VeU zr?8h`30Xs#o3Dq(bt2APZ!|3bZQ+l1nU%ZD%6~rnbbGg7+A?$OzvA}GyvStkz7puR zv_XIkO0W=aX925Oz#0~?mId5F16t6X`l%U8kXr7dDH7;z7H|&@Xhiq2fcsd${WJi3 zC{Kkp<-(t264i9TL-|qhG4XM6gZPB_r1+HhwD^qptoWSxy!e8MU4*X%Mrjvec%=cZ z${R)Es+>R%q$^JV8DgSJ;0py3dg21#OJdgG69roE2~3pN5chZWFKDa{Z_u)^X;vD( zJz3-G>b}Eur)xsR#EMB3lPiv_m{M_6#nBbVR2*CJw);l!P2R2kZGKe$O2exS)_PmL zz1~s(TEjgqhE*BbKBI3c?|}zB52l-kTbIhQTnWFm9ZG?gWBGNF&9YnzMA!yR;$Jw+ z@*5&I%krCG3^7@j-xBpRX6!u(3_5ab{kDiR8D~GX#;J>SFIZsdNTn`*UDT5oXGPUz zE5*pz{yF$N;(x?<#X}*dGM-P1p;_8|%7HP}=hH*1KY9+z_@h4*W^AGGf87yVL(?C- zrZ+ECyR4yIzCgPU*>XIE9;c_t=XH|j>W zzszeSn*c4SEo~@5rz6BD*FSFnY-VkWj_K>oB9q-xfZ@T}@AMp(+sm@)uL@Q{sJG1I z!mVpT>(b3lU;utJdjtH|9?j~<+W0umoNdl{6Zf_Fji@K8yD-C`Jaye_E=phH;lc^@ zNJh3KaKOg%2|A}FWK7@Q^FA{1zwem&teZPqQd8dsXLE-`U79h8v$K%Qf-}*#_V4W9 z+kdeCX#dInv;7zQul85$zuAAcZ?$i;BL^-xFjKH3)!g=r)IyO-nIhP=Pp_-k0r}7z zrH(QOuCLs&4Wc0Z0=3~fx7ytfTok|2(!?xH)waDtOkm3bCa~pM4Lcax@>g-Yp)G$E znb4N}N)2z~v2krhi>kL$$FM2jde=756x>2KFq|ynQ2f7@KV5FT9MHJh zB*=nmH_$@fQRz46VGPnd8E_~m2Me?yhs1=(`6C}AqulCtS<(I@{)eBM|NG7qPZeee zGlkQHSwd1cU6?JLA)G0kC4A=Jv1D+&uBHD@i z_&jHG>Y7+PFsep9gS~>igS!X&1QWsj!5a&1Dp*-?bHS>DFA6-xyA|(UcW1#nMYj~( zT5wyz?F9pZs|(f?tS$JlfU$YD7lq6zk&NEAuoADs8nJyuXbtI!`J2nHZ zhm$^oV$Xa99SgBO(*1ce4pq&t!M3cCfjJu>DR!`XwN^hKlq5Md+>u1pdi{^04;z-} zZ$M9=PZ}7OI2>$8WHGWp+NG-|)s9}e>Qd?Hvl({o4oakF$Y$9do$rCWjjlVZcPywHe zw!Lvc%`*`}F%M^U^gWK=diE&|!*=`mKFJr(viXw{^>yh?5%oK|;(S!yg4U-u^3a0_ zG1n|Oz54bqTDJOQ67SB&$UVW~UfzLAoUQ&Y(mk%8xnz5$tw9w?44xc3CAhHoisG5U zWbnG;<;B+*ONDZwQm7V23ZsRw!gyhq!e_nDd7ZgEat({R1$C2xxuFzDvohe-Lhz*E z^x&n%-K86gZz^6{d`9rh;90?2iW_n%g^;V6MeAI%i+f0GSv2<9A&3@mLc+5V|4B8x z58=)($vX~Y_)z7s^jIVa;PDI~2@q!M*YJ;S{d!BgOXjE4JMV1spSwco zBPFDrpHaK7bc8TLm?%sVKJiZ$KK1K4wRdd*cljlMUbwmN%fhb;9iIP^E0cdRANXIr zuw*VxYEfSWhO1soL4kTARK{`=7Nop^zF^8|7 z*_eacPJ+dgrBkF#Zevb)Q+DIbcc*7J=9co&X?-)LxTzUuNOXSVnbK*}EXkC;IKxHH z+Q_L}&tJ?%k<5);6v^GlL78$C8^s`r9XX}+EX7!DI#=q@>z=)&RiRr#SJaJb*jH+mMo9-s2TO-a&kIx>TAkU6!^X7G$#_FsCdw#KLSg z#KP^_5LZZ7?x+nx8cQ-MbNZZPLoAZ6ZqJ4w47oN0L2+#ejN;f3i=`#f((E<_F2%7S zu7y&IQ>C~z0TF}bPv$h4V-qZwuJ4#lfNNfw-6p^_b8Uhfc{TxI){aep*>P+FQtsyV zZ35B>B#$zu6ZA~VTol(PAPl)S0YPzX0)pb&1Q^A!32u>Ym2P8fg4?Cl(i&+k-zFe) zD2q*?PnE37p9n~@Dswx7tNd}P4k-V-rF*1%cSQLUX-IBmjx^g*{`X4{WLN%#HOa5c zVa-+J51G_>8>sOtx|&o#ax8Nyu;y@eH7Ui_)da;=$OJ`lEpzMQDr8cMtB^4&t3qBU zJtD1_9@P}`W76Z&2I&b_A+t|T&rhr3%cZNNYouk;b)brGkXA@HNh?7WuafSN?v(BV zReWDc6+b9FEIlcGfSxF=0yT`!0^rArw&je<4We2-#VSHxxSd;*vo`0BoP+b2>q$M} z2hRMd-#|VsJtKAQG^Uv$#i`QFM8>dAsrp;clbN$$3}GVeWNIW~be@-9kZ`0YPOKeV zqnRjyp2{3`B%y)?dYT11LjzjSvl*F4k>_X%$nneqUSI(mS-^`d;3XFDG7Vsk!Tr0A z!9zFy1wK%J?=kpGQu_zt*`kVOizk{bl4$!eL|>NvNDR?eq*tZaq}Qc4q&KCvq_?F_ z(k>sU@={NzI#d&?4Yf31jGicYQg}{yUU)&+D7+~AcfO%yLUUw%GtG;q9${lU!8t0p zE3aOd4$ol>B?+rBz7BjvUu`W3yxKCC&VSU`fWCx&PkLWs7;Fh%h;i7sH_A5V#46t`TT%X2*-v#JNxI9hW{vPG<+u!gO1We~ z2VPbI#TzLLI{ z^c1DpUMnzS^w`PIB|0Vqq|r`yPO7_t#i3$1{0&=RNrVbHFEhWBTAKpJC18p%Z!^D_ zxNkGJfQKFPHuDGR4?NBIQEKmP=4KJU%`5_$G|_X?Z!^D>#x>Ox``Sa+Wk)iSw*TVe zXXzK|SLx8E&0-6BBh$0clQ0k8WC3rb0jafxF{uK(OsZWbl_^B~KWkF`E^U>z?J}%F z|9gg23wk@f+Q4dLQiHwzv>LR?(SquRv93F7es3gsx;v(W7)99gPb$JcDnU8tpR2i`*eQ(JNNn!wsk{C`Wz?80erR=JQ@jE>$=MT<^+* z!Y`%^1JHu<G_F7^0=6wn_*G{q7{vl;hAb(yG@D_v$L(b6VlCMi_KD*E1 z%kky<@_hNe0$-ue>FeZk`HFnSz7k)l?-qZVFPod$ziWTJOBuLBRUzSjQW?CXD+6pT zBXqj+-M^_)h}Tjuf#3rU0qy^N03bXJ#&=u&ggv}@B=f@i9Sp_ z0s}V-8dv2+ADKZPn?awjpceFLMz$nyV;1h+|8^_BNG_I3=q9d+gF($ux-8UIKA z_bT=fT7;jxKYM@i{_6eB`@46mcbgaa4zc|;p;k)eGI?KNKVg4ixG=r0T%PQ&kdO3N z%2WJq`Q(Nw+39W-MhHdjVz{g+buacV@h|02V^l#NB$^LWcP;e)s|!7|7@hbxhot)_mZFSjaRPmo(Ia?iPN2_Oz-AiIh`wL} zU$TI&XaEj%F%y_;Fj}?UtnrQ z@rsKZobZfZJL&10#2X4xw!(oC25CDgJtdeV&vMOno#FDi&vwmq9azASIS?VJLI)Rc zYFY#}sdP=M9MEdQZHLPBnie!%(QswMRSgk&aYNES%g>PIzysY3K_&Voy|GC(;B;3H znl1Kq>1Bh3aohTcjp-K2|5?}T`3{7g)n}p?ux1sWI zt!^tyH3>)Z>COTzsJrnn&62?UlCHa4PBbd@`UCpIlH%7(W**f3@eruJSymkjf!f3 z`!bsCe-*ukhRU1J7dcWUwMBXgCsCmm`7FA%A-32=mr*0bR*>!v?aY%tNOG&U2dRzm8Ls_M^^)MuhDc9DY^t%lNZ~a=xv&AviwrsfkqI-@RKLVljI|L415+R z+Cn$*DA|cN85vkmFZl<^Fylp7hv5IimMq7TYss_ZTM8_N7N@0?#qfdXopLNN`kdxH zl_$e71x|Fgo^XeB-f{Atj=l8cJeD?mM>MfXEIM9}7rmi&AMeZ~GOko^1XZytx=tp`rN+2h_QEWs%r7057 zJ;=}-s4WTVv$g2p3Q(VVlTb1V{dlTeZ=nJ|R6}yhfP`9pG0jV3F@>1HWrvr^ble&7tbIoF94dX-Gb5;(&cmWu*3+tm~}OK#2I z#}N*Q0VyB{A^}ddbD&z0W_GsRTpXrBbE$rVal=;Alz?F};?A_7bLHcU)AJKA^j379 zJfCL-d{E{@)9Fgirz!z{xRU8m$*DBmg*>_$K$oQHF6PlCf$j{N?ox_QYup(?H;1OX zOg@M1WIH-OaEW}8e435Zv6n-~&ZQYF1kkxO=rUg2=Rw`)(R5eIGtpByc0|?`_=V6f zu+HEw8!s~OV?|fX^NjX7K8L|Qcn#G0Gi_KemZxbg(UfW@G$}AozCfN9I4*FJe2F|? zULao~Unwt=mrw$>5td7VGbfFn^kr{L`3+hGpy$f{>wB}#h zG%;|Uyj;FszCm6gF9=*7nC)5^7|)yNH-gMPX{I;HJ!qyjv{D`)IGk7fW+>jBF20J_ zHP^z}T}m$|x5|yhO~#_R=p6YLdA4hDU`gOM`Fg54ZP5BToaicJ84Fqs5-c)*Yt~$K(~^4f0d&r`-mhRLsJP&Zu~T z>i85e>3UMW5}lc^t@5P)r{vlBXBa_t^t8OZ>BfqOyxr*3u^IQ;+vPR#TKNw7PWk4* zUGm(5yWG#n3^8`EWyywW{A?(-AI5v}b%93$vn+49-*&GLJQ{c`aHIF}z=l9?nIVPL zV_66dovbfc6FV7ZAyy$4w9(iZy4HRXrra00?M3Kbl0VP;mIl2n??C?IS6E_x{^D0C zaS}-wu-2kG!C*IN;3SCsIz`t;=-vRakIESKnC?ya=n|@^6|HG{i&ywAC!-CdB6$a}q z4~)vs<<0U}^4Ib=^36qk>Wv>t8xj9oVDt#h=sR9BUxsFGr0KTE&(js!pu(#Pe&7}V z5vqBPF8-5zQUN8e1KFzVRo}}$%MLF`(qDkZiTe6VI{H_69auAlCgX7GIK<^T*KhKc z0E4u`a`c-~IDOyrBWT;%^g-J;IcZ5pUcrl`9U?#50`JTKVMP|@fg*#v z`Z{k_oai)~t4-n1JyzsI^JqE;MVG*pBwbt0QsycqDf2WbFJ-07=Sx`tQkE1^+Mp0X zm(T)X(0mqTY>OsiZqU?|MP?a`H5nJsGCEL+@?y~gMgM7XRvCG>k@lB@442U|l=1qh z1Uz8K&}k!NK^4lDy!2GVgXTb$?N#N5s=n7%08x=u#;SDf@hN;1zw2~lN_r@|RJW{m zRf9+tUB42#-IQPRelr%eqH3ix)O$7CL?^n21#x<(0jgL`)A#|o3nieVSeo*)Xsbc5`dV`0E3v%K;p^hH_I3?%NWh}8N}L~n{kkV z`3$haamn`l|7Ue zrJq?;eSA%#W)O_183ZG$j$lM30ns}mkJX+dWf;H|#4-N!eJzow6?VYNc& zW7^=)9PSUS8dNp7YDkra8T8kbRETM ztvxN}m+o+lwjN+zoIAaEN$ybj`=%{TOaYvQ7(1|=2@NZwKHY51PBbfHi{iHLt4xO& zzXrQO5Bt2%l}&;Hp7X_@ntpEjrRmX%Uz>hw`n_pCC8s&JIj=dtxuBV0SDjV9_SqPv zhrz(+eB&d+pzSl%1`vSmT`+|{{m(NTd)Y^%zgzk!uau8+L9p8h@$iTprUlW zg@G0{nxab(x&=TtC{35dbYqNkeN%K-_^$%Gh5DM)H$``la(Tuu#2_oW(tj{jxD5lZ z@E-ze*aEunp~^Tdwyy*F3JMpZv;7zOFZLg(9HuPwFY{mPzs|qhKhJOIYrSn_f!$(S z=5fjxEoLvULrH`(7UluUc%w}E&hsW1up80?1|=-$2;jR~7ZWqV$1phefMEt&(H&J2 zdHn7Me(4S(g(tH@<)N=#4;Nn&Tw6RrnWP-4)OwSa+f&Ckrp0c8bzW)~w{7B`BBv5KOt;%zv!ZO2mXF+on%*`N`4S9sKm2;F48d&>O ziVRu`FPirhe&YDndsN9#`CKQy-e$-PwY8NcGwj&#*PO9vM$>PsY-p49d}V5hVV%-7 z+6AzljG`NRp)yjF7EcS{n^~tWQfiw`mFnLir_xLKm0oJDbUs_D4cdGeRA-b~>-f9! zo#+T!=F621C121#@^)4mx@neyAH1!%G6YGj?`~}AwQLt`YPpUx~KEf^I~K0 z#o!{vX=4Z+&?`F1SVtR~lJ7$uFB(;W1uf<&0y@1546y|*g)upwHf<6zC*#W!rM`KY za;?Ik>_|s%eTZl36-Uk}w?sDtn^2aY=ro1`=-B@}(ypTLbwx?%#TKwT@6qBkkb zOB;8(BhBw^Zcy-3ofQgss&k{VQhB<%8o3 z7q!UUqkQX1pMc=TSkaxndwGTL15v)A3*Qf*n`u$Fi|c_f$RE?a@eox-g2?wI$d`Fy z3c^^>!wTn#={l;g*0@JN80LxTdLG@UCE(Ga&rC9Wk3rF)bkpW4L+F07!PC|a3fJrA z2`E08F8(AIh8~fGypg>QgvYWCPxEAa28zEx7k?H&YcrK3p>IxwZTXfo2)e<765wVu zt%#b42~?DxWYEtD?9t*h0RNlzksu?H?{T6oh15)W83g#0mIZl}<^DX5{G?eE3HdHqv z4FWpcD~u0+Xor3HZ&iK|ZVet+w=LM;Ho!K}HpqrTC~srorS-Qd);wF@^oE|oVA~zO zA-18my>0v0hS}_Sy@dU2^{(NzR@)YTgX?xB^ImO~ZD(e*Sglw>){xw+G`}CdyguBt zMp>)u+^iOND0eD%DR(Q`-={sGJgAWOX+4{><+Ny1uBkmlcvN{@c}jUsY45S|^Ge4a z8@C_I>z{p_rigze#MeI^(CY=|Dq)duwQ!BFSa_~>iLg{yCR{6ACoC7P7j6(%2sa8h z2`h!0g;m1ywYLbj3bzS6=9Rxuc~R-OU;azVjtBL6McKKjz+Y8fQ|d#iC*s+p^!B`? z^zrm-9@HER4Q?LNYR^VKAcfi-BRFO-gN=HX%md z`_yU4F-wb$1gt4lRG>3RrW{a-2bu0q6>xa?|p<^tl6V%a`1_470nhbX8 z!z}0l+k?hx^N>p|Qj68=?91&>d9Jt5&O4W$6`7=LNOh_uDuc#J*$6^U44-=1`sWkF zx1bVwXNjNAEBSMvwzlsUCGVwMO;wSUdu*bC2o+Octs- z755WfI@0~*Q@45i>hqr0JQZrv5=!M(*A~^xXmXYJ3}YpQFjpR-?*cWK_o_D}3D+r8Dk>bmO7 zLT|als-!Axar|JaV+9TE)#q^pDleED=A3(H`Pe1{8@cwksE@}@u zrCN%?NvWx;)1n5pP?yfQcUNezq zNPyQvL>xdHzh2WKw5ob|*B)w@vU~H^bYd9b1FURCNpM%a;1F%{Y8`}41>*HI&7G(o z?r3$4a5Pr-@%624t{mwYD)%T0S03y*(19OfF-41^PJR)+z@6~&!l0RrceVN{_^Q+? z_!l|k9GoeD?`rvk-)T>>v{umP>x)94IB32MIXPc9lO-*Vl%JXDi%(i|_y|2~3YG)L z+m0IY>+)OFeyX05O%u?FAQ@9Q2$C;_gCN;bI0%v}g@YiOQaA{bCxwF`SyDI%k|V{0 z;ABYIOYN^tY962tR0pYp)gkIoRnM}vH}uD^M$;?PA6fFF3{$h@SR1BpC&${p>VE3> za;%wJqi0w%AvlZ7G7%O*-3gm$k`XE=hstoZReh{}Bs4wkQiiEBO}FNd3@WBd^&D&_ z1SfmSX!QVfjGD>7W-7zUopKPA8J#Laa;KQe=-Jdvh-H>?SSPW;l=`uvGhJSHSy>5~ zWNDxU9Y(E#39`VBg>|r$zCIhLGI>~Bs9VlL@euV;)tsGeygD>zsL>770mQf^W7JH3 zHj}{IOe_;rUUs$=D`O@W6EjX879zl8mCns(Dye5?;~+?0HV%ShVBsK0{uK^_WMAPR zNbVIAf|Ge=ih7iKG)xU+HnwBbW7VnZG?kx?E!AyVGOy?p?UejRR6(C8x1dVeW^F-k z7EqN2z#M{El+(>+J)N@swb?y4*^VE6j`RWB~hqA8isp?tR_EGm& zN2v#@2dguh4_A*+C#sXwxbsN$IQ4k-1ofiknd)2hN%ahMj(Q>N6&Q;{-z%6b4jsX@ zI4)K%;aeO8!Lc|9f@5(I1jpha2#&=;5FCqxAUGBWL2xV%g5X#j7{ReP=Bt;1#j!xW zTwSPMpJ8Z}3CxURN!$o!mS?jhhyWx9n@Iq!=3lAa+)>SsYrY|y z=EpU2HUF(V%}-cm)%=(lNAr_XtJ~B3qytF)HB$%Z+1EG-j^-z%h#k<{52_ETZCtI* zRlKBHj^f3L?I_-L>Lb|{FJVjat(n@-RlJXy6z^l%6fa@UQM?2}GOd|vwdQaXFDb!M zyad5fyad5fyad5fycm&H@orF`P@hzv(iHF0>ND!I>T|5(WwWbYnpU}2t4r1E)D`MY zpmJBKx2U(Nw}Z-Equ!_9uRZ`O_u-VvU9Uc_KCdQ_KwF{{wRd3Jah|B1i0r7}>KAoi z)_qm?1bP&0K+E&5&)>`Wb=^00!^BUTe{~;OJ*E1n>WwN>RRf%L9gYUN^XoS?6xKWI z4{(ohZ*m>zX77_a!kS}@o(893Q;j<&3wl{ShJAOpDt|`xE7XRqjcnLng$>)$bn(~J zBel-bjz|j9opn?G%KY8EeY~%$1KbQzE;Q4KHj1j%H5WwvMECI`d+N8;k2UvcZ4PIm zK)tO#TlQSp21v z>sI-p+8JGF)3)vw=yoe=DIMYNj5dO6UTQy|0nS95;OHU^L}(^@hXy3jT0K4lE`}-I zqbX*h_i2EHKGIJPEO23ALvOg=biL)0(8oOR2k668U@2%5k?TwKEA?%7^c;rDU_xSG z4*FF6O#NKltbU<>ZJgDX1a97lqHkbU8=?dyq13mk2bkcV(l}H8PI|%bq2Q z)`%@)k2oSrQO|rWXb2v1Yih`sB3H2qI1}}PdlAE+tVGYJc&0{a3Dies%iAu)>?boX zo?okfHu!-?A^KSTMEy?vLA6A3BDs;gNPeUsQW$X}uTF-NxT2S2Cd*gm2@{>`3#SBo zPkmqgK>bK{Mmj}|pIaNgcjJF<4EIj3P|OVAfK)sa5544Lcq$E$W@k@)%@gI}Y|=(i8XfR8vL z{mnsdSD%gQBK}By53D$-p%fV z!Atmd{l1|%MJMy<4gps9M- zySjFEqB^}^GOKrw)OMn-`7%>D-nmQXK9L@sdv@;C`6WL?hOIQ3U~FeYjrzm72Ve>f z&}$_6Y!73P==!V;=!VdA{UU=iU5|@e(Vmg}d9U~Of^Hu~7w#YFPd6)b$4E=v5*ZMA z%>THbA>U5(^c(Brp+i-D29gdPY-}D%V6j_^P6oQ+x`ZSm-O$KBw1k-eJJUKJ*Lg_f zq|Vbj?;V-Zd1mL+I?tl&f!St3gW2-fKLwW@MhTFbnd@D1fdP5`r>!s+v|nTtEkI`E z&**$+=d(KRA33k{yw2x$X2|g3MH3jtUGJEup}v`!24jIoz$l$YgDzK2?KHy(vZ9fZ zQI!1J%-sn5W*I3h=zz#6ol1<)*zIU^WK3kC@|tlX>H@t13}({|4&qg`8mnx`|N5o3u58o%r7}gWfiSHl;x+*>J(DGVGHu)Thel(JjXt&9jxm zBNHN%B9kLWMy5oLiX0tbi1H9iQi)zq*98lJ1&u1I1hX+c6a++>NBDaiT~tzPoRg`w zqqXQbFpqp0ixC$-K2nM5G9Uz?(_Jsa|I$_9CzP{%N#E(d*}kcfX^|5mCq~B5DiD7+ zvw+}y-vz#x#LF7v{;vL$BDGfMz??iF^NitblR`WtKOfEM) zRGSf*pGQsDjKOtkWG0Km1{Ve|v(%?|rU>gZyfaOp26|_jKmi&s)fFr=gb_q&nWf3h zXPMik+;z7$QhBjk#i#n^c9RME`;!sflwtX)%QfC_vc0MM8mrx zZ3(ra^CRbYsEJ18y}&Hog%Oi*7qP<9xxH(C<78n%0jYy`yf&@}@0NKMPkV*qe zt&uV-nLK#@AXI9NvVfQlND%-Z&HKjES%8qn|K{Wl@_bTX()97Bi+bEjeyL~|y z%%bV;gbYJ4y1DV5$bFH1QL~d&wP+ncLTMeaYac_KE z_8=t(^cr5UAA$vt@xgD4bk*i6US)v}8$(^nAC7FwzpJsKrm==W=O7~z0*0n{-cS}l z_;Vr~s~sJgP+zzPEBJe!Z*HT&Xb(eohLg_ah~d&;e5E$qmd1f zCnHZqjw+AU^fB&ibV;9v>Xy($^$dXK>2nQNXF(sr^;CExD zeVE_tMmqi5oCo}R=obv++kBHp_b_}YjWpfck;*)GN)#*fRT4Mrt;nXxz0Uib_d6eO zKInYN+2*{Ye0}4ijgK`x-Z)otuq}rU0OG!B%^}ykoBv+^`}tFxD;$Llt>q&thlGcQ zhkIMSBfKNMH#=52ZgJe|xW}=W~%89Je`cay%b-qSFhJjghbNzs~ zYM$!!UH^9BCkYVi@Xt;TfWq}%=u2FrDjFJrM~q}lF^DY ztuNtC>vzr5`n^9hH{Wl6Zhl~%n;%A)?%N%f+m3hKM?1OW5~x>tM#FI8lkna&fV0-V z2~%hjy#f3TT6!1_dP$y?PtJv4R^f?~2k)ETC|g>-qC8f)84iGp8aTYa07et(1?9`g z5&08RAdQg?eHFnBR%#Q`PWZ)-+YhT~0#qu`qI#pO%NmzFOpKcMp3@{NrnU9N_=94|J$)cA7a zD~+E=zK*Oaf2Wa5H>P4WHH3d{m7J~`4lBbI=@q06FLU2T*3sVY8EyZ4gvibi;P@Ll z${6kpx)eV{x;wpVO_F8wu1*xlhJK1nt~s*i5v|%BC)Cm|^Xa=q*q7RvH-9;?Wf{G}9ZG>Md?38k8 zex*=FAq&c(tH9q+S+qRbSnzG*ca7gSZfRr)auJPoqGFn5LQbIF=_NIR`p^I;8k=4_ zL0-HMEu!V<0dlyb2j(0WJ}BqloU!3Uat^CpUGuGfP0cdjwZ7|oO2HWKZ;hkGs;Ceh zEgqKRX&4JWx#M#V&zX=DDLBBpw&sqSx~6DBb;DTKoi)EVjth?uA09p;JSk^e?tgs``P5u!W#`$hPa-o4;lZe*K^BTJE~&XDB5RL>xd zQ%jo)kHWgyl3q7qzFAOh^mXktPCErDP1oa%Zm4;pro2-{rzdMpEIg_3m_nzwllSzh z*;NxNnL;>XV0+{SSrQ36EgLJI0a@PB*Vsf#7Qb=&>U8hGv)Xi^J3`kG-K5FvK&eHy zJT3Fayj2DD(Ll6wr%MVitGct`Q14;hvECPIq>6Fg@!rF|OhKFgbbCb%viD8N9CkPMx*RH-6o*>fTnBa(Y*_FAJKFokM0AY`-)UXx9AS?Q~ zMy2?rfboh*^h)$8%`X~#m+srl-AGe39F?L?b)Zc}(541@ z5$|i9H+tKLKn|s5ny!UMcPyx$k7<*3PafSqz)z<6^^ewRI#b&?cY+Q3UKRZ-oVA^5 zU9}(8?h!q*^5}5C=w8tQJeC9DyYQu1w&A625RYyoR6R1iB&O(wM7^2{(w3Ku;WIee zS}`+lzrmzyBXmdlow6l~Wg2FbNv9hP!{FAfAwstwkM3Zg^U`#~ zd2}ZNUHS<);WvUumjt@>6L3N|ibppJ?qkzWzzN*}Ji0l+FZ~3Z&>hI5I}hm6PrwP? z!BN8#a13&wk|+#IMmum zgN8>B*Y0|>&po3$_l-ts{SCMH_K&tk4~-rc9UC1VJt8_Gx}f%b<4KM_;0vKXW`HJ{ zJ799U1DJZT_BGacBvYdk9ivN57OJ_t6M`9DQzVn4qbIsfG8VO>lfB18r?|+yiFOP! z2p#F2;yo&QwD%bAvEHfPY2IU_x~)`C z@^GAScItG!f$n>n?u6(!MQKkIJjOQEqoHTRiM-+`!A$;|Eg8dnVJ3c z6!G}z$nKj^+>jLEH@c3Q(Vyr#>}aos{tW{fP6K&<)vs-Ev#~c76sJL} z<;|K&p>2e5)?1?5PYZwQm=#WjPY=%ypAkMY{C2@v;V*LLgwGDo4WAP}H+)|BKrtCT zJ$hw$S(vQm3@Z;bX2+Q%U~^-*9M-S&zjl#27_=S2GZVyanOC;N`xU$D8v0OogqZ{V zvWI?)X-OubU(Sx=yGX540vc6hEDEy$`^L_R_OhhyL|h5v(=*zMxTqDK6Ftv3We9LY z(LAsdTj+YvkB+vL>KC4vpB>%hzuSM0|6c!Nx#e);g$E7(4|5TyO7*K;(!2|!7lGL6 z3Cj~ZCC-SVODM4c2=|$0u`iC!=ZSq8h~1ACdqK1>Jw|qzGjpRCL@!SvKv*m``Pr+i z91X|-a#N0<*uxroSASZDjqF1+Xe(M&eWg(f%mnY}uL3D{Pa8q00*j)1(ozt|%d4X^ z(U8pkI0>{fkqWo{|}GtqDwkU*_0U<3;oNdxvR+Yh=t-B<@&5xp^b zQ*>qY=ID&PQPAOOR52Rs9_JqKKHPnTdxCqSdy;#y`$+c`_fhVn-N(3(bx#Ga`O!3U zNS>a#PEqA~j1K*=ODbyU$zbRb=58Kj~~dnVuyg!wRa7p^t%VID+tTN^ce2dUiv zdCT;Vh`d1oWZLrqc>h1N8`qvsv$=54T z$C!1Idc$GcWM~xbTkYq_vMK34Ph$9L`N*=P%%G#wpf*A^3Dl8cMD6IA=(Ex1qR&%v z6=?Cac>(6g#599cH5;Q$;^%U7n)^0yMg1&yWxcz;s$Qr!Cw_i0iZe!cw@`BlUx||; zT(kQxuK|vu0Zd@f#(y{zac^mN>E9cS zxQ~>Oc7-FBL|Oc&!x1kKE*BOGR|sz3X8#xdD&NUS@6@^(bu;U}@(VtX zuiE#V|9St6hM5hgHOy-GYl9I#E_@XI_k|+*Mh0Tuo z!_up1-HcD~GmM7Cgv}X3>|e{0B+&609gmlDCWNidoDF3AMU)}L4@T%%w_ilNLj4Z| zPwni&!!Zx`%G)b6AT%&EC^R@UBy_T8jQv16Z6;tQ%QH-{HqDp`+b`Y+iXWdTu3w`O zCfGpPCp0Wn>?m>U8=~vQ1xIBHmT2|1S7baCnFgbxwO8h}cT8R%d&1t=zK6ZV-p_t` z=!npS(8SQB(B#mOp(&vQ^A5^8HZ(OfEp$lUp?M?h$Ayj$oe(;}j(g>>ys>$-gt)p9 znd-t+&+N>Kz*M9)yo657?83Zo61OI2ZO$Dzjp!tLGBu*3jG$v zk@Z?oK?(F&>eETUZwShDiqWz+#<4mz8)60@!2~5K1L4{WN47P(EsA26SPQC2i-aXY zOkfQhRPNgl9ns1bdnZa_S~0<$0_iE|$**my$*;}#=Kl~K+h7du^m~*S-pLxH!#mky z7p4OT{h{v0VTHK8OG0dLdY2$Ly^9f?-fb`B%hqUaEH9QH<8~$;rG#`Qj#I*PrXM~i zx*LrlJ91*YkR1gvI%G#-?D=%q47_tqBJ_7e=+LU#nGre?XeRwJGEW{dPj+V_{ozAV z><_%15TM(4l*Kp2W8rjGTUX#WY(mnC`NzeIFT*Zg7VsoHF+of zbuLmJbdc)ympMpf6F|S;)8@#3_a&qzVW_aTu#YfI z*jLz3*k2efOt0IKEKGmz!N*I|zb_NhE7H!(#kA}2qt@dM`9g;@boSNwYJFax&sXR3 z`|5oSzJM?2^Ll)qI*;E|?`iM^JV8&$)97jPG<(7x(Ia_e&kMDRrz3fo@czFAotfT_ zCBS?@v&+s%1HhKBpoZ8c*c;+y3>!rN!Z%jGm7W&bTDq+??v46lzFDCFOO%hyBznA7 zyrpf!E=v8Ry8JyQV~luhw@af)%vLUnL~Z4wNZeK~ibQVZqDbskE{a5N<)TRZRxXM} zaOI#lFg4LYD|wBABpKv<2jtNL~)J9vc!###s1XZHy-PPrAcKn z;W?%B*zjBwiRsEgaiY5RjP;83j%DJ*b4qdIy7qxmJyWGf zgm_LVJw`kS#f|OSH?~KtgHhda?Y(1}sP3F9xY1qrjB(<+6K2Nft{irp_^zbffEXRw zol{ni?aoD!=1$6 zi;azqi;a)r=mQ3d z2gZiST4N(($4dvqaD4ZJVu!{ify($Lq}cRq+MhI;#B%2hB}e<85<9g$?N1nzc{bc7z^or~gXf5MQf{RxVz{RxVz{RxVz{RxVz{RxVz{V|H8{pZEbk6plM z{|jRm#V(Fr0^0x5*!Q*4JPw^;6Wiz(8Ur`KRH6 zJo5wyfEM&jj2nCXSs1}l>1S>!%GGkKaVp@qeR7l1^gLA&G&|*u55~D zE_zy~Xes6Xm8}qV3EV4FNDq0;ItF60rVLqLinr1G4149Z0f9Dq^hgIrxwq$=hgn>g zVNprRzrDiPJMXwmVf{1Oo?9O-HZoJJSgSL;Qy=!Rn+mI#)=nusi!wflJI~V&SJs-T zteNVOomWi)y?FFxQn5@d7c0a{(JfYqg6I*e#offtqED<7{bIe? zAO^&s7!n)BCb3xzi=v2K^Iw)!F(O9Am>3tkh+V~QVt28J*i-B!_7-;+`-lm#uegWU zBK8ya6!#MQivz@g;vn%A=~d}9>2>K1=}qY^>22xV*sl9(PpCRn6RHipq_i|&jGicY zQg}{yUU)&+D7+}VB)lw~R`;9myYN}zR$-ffJQmOAg_{e%Ec~j_;mPs5qBuQGE{~_$ z)99`7{C)S;%m$<$WwVKN`K1=z132SiUIlu6Rj+r7KHkNbJ)1!;rpo7%o||0agC05<1l zq84;c+I1lTJXu{7`XAIqpU2*-*h6R$e)9h8{l)vM_c!nF-mTtkUgSH(wx_UKv4pH4 zxmjs`KYV$8xM_{DR(V)lCyup^vt25dDW&4o??vMlm6$Pj_v63LO&jhY7suQ1zg{_@z&;%)=}2F%9z@N~+6?=8*kZAa z|JafFd1do5PonUC5yzllf>`OhR0zr&GX}F_!)GzYaI8GK02}@4GEFPvZcXAGUHWNi zusBq#XBYtl%QH)+Pge_ zeR!VxeD?+JLu4E&fnnKxh=re}U!-3p5@JFB#PLfrX!R}|VwVlEYe&25`T5TCz-AVh z|8F)#O>u3p9;ph}*IYz&3ehFwnre!D?W613L+{Y4kK&fNHO^i2{}*51?5JtCYv=ey z_{;ED;jhF0OXrxIq~E2j(zac%Z%Y3Kr#tlM( zY!Dm}$n=$rj{)B9<;GvK8ZP@W-Fqc@abw{&QaC>jiNfi^1#w26@OF^;=3;)!$P8wny=OEIukeCVnqIE^ZKalRL{b@{{6I;?v?Y z;SUl()7NgUS>_+C}TGrm`*n5rdl#%D{9sp^U27_6sT z$@Nq^VvT+fHpdzfy4gMn3brYA4;8i*`fWET_m^xaT%mNgU0C14cB8UVdAiUkGYs(A zW=D&*ASZp43HhG%K>WDRET|Q7(tczHeQXAO!h#qD*zylti`B%7hJ5Q^Nz;D%o6 zUhG}sUFu!tz1Dl3_W|WW#SzL0^=RIH$br98Eq)XJHvC=IjSmtnqE*c1#!(~|izQi| zIcmgO(fb#;bO^H9sbkk>$Q`N*38C`;$;}Y6ES>tdU#9(2ixPdQ#^mGEgA8WN%2zKp z$RsNQQxNCs;wSRU6k*hB4kGIHRtS%N8yj#u4Kw+gojw+pL;O+AGw8u1I$Uh;7Q+;DwE6#}X~Xq%Lt@-Uee02~G`_9Zcj9le)!w z%N}%PTHe(5w*_6L11za+>Gg<;#HMFH(%)M2h;M2rtasM$DZksWw|khoQ~kc~{oJqn zT=hNU?=`&P8}4p(k92?D{E_SA3Wik$czuuu8#BOd!nx;3M+;mFQfIuRCYSWCSnN6oP&1yFlPtP3JV7+jL&jyr%P;E@?U} zFg7qgaCqQ|KmuJ&e;(7oSHw_*3rz~llP{2`1&#|`Bwr%Wmlw!a$XCjXA@g#PnzkFcn_MX4GoRsF5?v68;W>yp@3^`=*&YDW3OS}bLqkp`xzQWHscpPXDUQa%=&h?wTB`_jhiIy5?E)LIH ziI$l`*Rr5SbR9hzm#~RkM#V?R4~UQ9O}qnP6c*DQ4~oA;cQZbqBOmxobZ|;eJ2Xcd z0}GlL!E%~F*Rmiimf?!rjt-3<79YzOYn)lE@vK-jSRiJi!{e`L(qajc2pNO!wp8`2 zY7O?X_O|YB-QXP&92rbl`&##~wpjaF4=+Y8i_7ZjtL&k)DE*X!Sw%v=LEEc}DzNg+bYoj%Y#it-7!v4|Z5xkrp;V0I#O=DB*uYn{G^h76}Y!K{us~ z;C};PB@LK~ZcZ1`C@xPwmDT{O=prrXmNX!NNiHc_P?8J3v9xX22Q=P1Cw_K(Zv4WM zi%RsRD1}g)W6kHp--ArOx6+H@TqS{SqXlV1x6^T1yLXFZK!Q;+dj5oHhbRb@!9eHZ1t`);=^sNwk`e!*Z;Bi9Dq$#UEj<$ZJIXSX=sx) zO_R1s)22<{d&vWW1w^)kof*bb&5eJBiAt;Cl0x|>y7kfEzF_ftcH~+bL z@8!)vLH!+H`+W#K_uO;Oz4zR6&pY?tbLP~XuG{FE5B?M1hCC2_FnFP5SLEIB5;7uuD zkr==QR%TC_aXLmmYVxGulfkEgPY0y|mRaNsL4ai`s>mvefzXMpq8RLiQ@|=(rb}2w zF=Rq7dCt$dAg5bS_naO%J##M1$*(@&T2S4ms<8Um;9HOow++x?Cq)B{P7QXqM$uw% zht&Ed@f|l|74Z?CU(6PL=)*@$?hC;wzGr<3yZMW-o4+7FwSFn65I&Fz9y|@c7~e`P zGT;*15la(*C|6h8uwVV0VE_8L zK_(>VYrz5a^MaSxzaAV|KR-CA{*9pIwUZ~YF!7tG=Yw2+Ao+8u=|O3L&{;uwfY1fO zB*KFunJEa*o5_S{kz9BdD+v!1dvXaht0)?{Sq0JHgCTOFu~a%TI8ly#OvEq2-U>>C zr!5OA1y38qx<1%XbUq81*yY$5kKz8(1EmK`*P>Nu4SK=wqM@zvQ0d{)uD(50zZ49$ z4zpfi-6+j2RNm-s#KsVp1kvGN!(zR#~C>qvX(F|H2jb<0UZk=y^!@9t_ z(E6rzk#(_kiFGb|%evIsrC^zLxpjqgm6h`ruMV!ZuCcDQ?g2sq=R`?jnVtS9?UE8} zysvtfRj`L-#Z{!o4_Rzx_Ye#MP43O~W_iutY;TS?*PG|HR`+r=t1k2w zSHBlb&k$|w{A>T}!27|P02PP?-mm_kx;W#aDhVon?Jq~lNAL4m4)ZhCv^8^UreN%} zNbgz~9OHPbVvA{uNl=i2#yDb*v5sp3!vog^t`A(4DH?Me$Y=}{-|u+9vDvpi7<3ZO z4MCe%LS7RmpW>1bheX72;xe*nP{0x06eqeFh>k`daC<2J+QymTKNJJDh~rW54?iPb z+S}aQ!rRijHMlJp^|tb!<$W^nRN(1AJMTGONj3cN^W+sI!6N>M<@K0#O5oYR)WCCr z=L3oXBdn*fI;RN8UMT zbFfZKb0^psDj|3Iv}=3IOIfpb-3;EKvp^;Km$H z1#Wf)cZ2DX=yX;r6)NljP@>a3=xJ_fIM90DdxAk4v^V%|@H?T83xn0@o8Z16t(qmS zz8|{Wj}N+syVQU-i@V%_w(tPlLrD-6C8T=~vrQs{X*TDn9Va92?bXT|B z9{C-;oxB&=yV<+j4+akfU)Igi&DOo5Tc}$Z_#-hsPZ$mdpEXW3ejaEjnU?mbW2KQf z50x<3237?`i97?=&OF{{GS;GKt5|+SAr0|G;xElRbVq_ab=xX*Y1=DyRD4t+kQeNz z!_s>c?4QqsYEXra1!uA^^;tV2D4Lgdb?@mmRH)NF(0!=e6WAMAr(3Vvpxdb1tlOf~ zrmZt>)16bY-ndh@L)Xdwk?v!iF727z$+=TrzEKg0TKo zPNu#Dg{jXKzAcW7kS%DxU&+9d1G)+JE`?nSj|T>o{1g~o!cde{%8YZA99^iSVD43D zXK=f?+g!r26($s7nvfvqpb4&M$EoT{5QKF<64wGek7iRv8K=1>1W+R`HAVrC!%F_ z<&eM_pNq~u2w8A7HnHB$abO92!$?Kiej|iwKv<4<$!Sj+gvc z@>2<2H^|=7uCwWF(;YJ$jQB|^GE3y-RqWt$!X`W0KcPzKP}eQ5QyoKDg2t!>A%Y|h z^SKIfn7M^>W`@9-2aZl=2uN7&tibX=$!hsHVYNiDtbURCrO^5?p|z&|zAD#EUa!mN zs&@HZHLhA$z*XlmSC)o$iod*gh3yQDsJpT5raB1%R@huo1NupPt~nZgl3)dM0-sW! zCIC?kkX)q0_t-d{$=r&IdB=L0n{l6}-QmSo>h6L|b>rY#U3thI@`Nt-#p=e^P4Z6l zGU6v8SRB`@XGZEXV6`>y$eJviz+*qcR_zxBUlvTSoKd+^kI_6l8jhwbMyN(#@WF$o zfYE=BxxM+PoNDx?5;%&!;)V!2I`B8j*Bl^jI-$?u*K_y=xxF1X>kCzf{Gpl{-yD&N4b0#86GD*vg+mge`2LI7Tf;edI6s}ajJZq5lMosIF_qMo5%p$kJ7#d{$rz`eLw z)C<7Ij9db}I3{M~Qkb0IxpvJ6PtH`8S(TVXu3NwH7vGpMxh&L2)I^kNqA&FIS8)^l z@IW<+;s7OzmjlHUVu}M{^p10~kJ-Uzxj#w)KS=>UO98(~0l!KCzexeVO93aO0Ho3a zKM7Hh$B;fZ%1ko`WTA1PdqVey?hD-? zdLZ;*=%LWVp+`cGh8_!z4^0R?9-0U`#=woJDn7NTxn`tgC}4mJO;Qq*CqYb7#A5PP zXdh@Rf!VIKQt&bDijNi4Q25(GYp{FG2BO6O&bBN#px~A6&WV0$o$U|Nrh=K8eElU%wv5onPfM`nO%egYi#s zUP%~i10InxW9`pBVB`F1?AZOAT!Adh|7=&FWU1CQU9SJz6E8H`292=|n&QU%o3GgC zqYUnI4S$m0J3$fc9V)@+njVolN*C5ebd+^=D6AC)kIaGtiprd-9LhoHUJ13(wbac| z4c10=t#oJU8g$h;M6JNP#$B>_6+RLvt)K}NniG=bGB}-d2y;VcoDPAjDmj%somisD z4@A!-h^K^+NTYKj{kd$E!?QoZ1gT+~UlD%qb5r>SOr=XFz*M0Hp;ERo{{97-%7Dsk z^UlsQ+A?e=+b-L}(9rxVy{+ro*0rlskd8Njq$5Fc8J5XKA<0Q4cfNzq>lcSkaiA$g zXh5c1>>a?)z9{g9BmoH;AKPGQNE+Kf5=o%(0Se@#gs}xAPfr{Fa#T*1d(Aq44bF#0 z0tVp^kz^mEN*;$a{{Ew!OZjsVBjhB-J{C3nfgcUp=OJ|aJwoA$;?k9-RUka+;+&+b zL;c{k1Qt_+~Y&?WVk)i3xfF1D`;O^#;;KjVw-^1=Q~@1Dz>Q@SpG z#+SC`9YLS z-7RUv2j%H9`{$3ZdT7 z++fG)o*N{u(13P{!v-{*{FBh9p{AGbC(qQ|^l|=g{y3K? zo+h8*KjFNPS36vc>85}i(gfj6YUkgqc4Su`^McXPY2*#qDY)`D3Te?j@TJ6ldvk6* zeD`Cf^=0ebXdD!Otj~+lvOb?@Q!S9YI>>udEm66I3dDrD#pNC0Y$&<*B-veoE zM-3=Dq0pmPq2p9Rx4_?Q zs-V(8Ayv@s5Ka~}9f(Sj1?>spWI>WQi+n`sWG@%_oB@)mIHL5aD@pcaoM-^=$EQd% zuurfHOJu1-)25fY&8%`%|LN#p=uqgCG5`7Zyu7lrWI6d=lQz&Q8Vz;hN-n(iQMecEy}yoM!>rNT|r7;iwe2nF%fmO?S<3&2+u&n&q0W ze?vdp^@{6N*BsY5s6840l^%|Bitz9iCMpd;t6lH7*0|QX-gUj_df)Yd>qFN%*VSm5 ze!XjhYoqHrbUoVSx&f_C?aIAs05WWk*RTOL*mzk?Mu}A7b<=#)z`Q|ugY$;u4b2;t zcSYWnc~|9Ko%d28b=N%kcdJLwZI!57~Dzp2zpdLOHnl1 zAi`=u`3XZVUJZZe-wV}QS3yx?tdv~^>4cHUAQ)GHi4ZyquHuOlBy|=jSD%0$m$N<@ z-X$fTC~QdAQw?ixCw>(LT5S@t56xiBsB3z$tF)|BJHe@NE8)_H{J$R zm{_ea*a*D^eZ)e^u2%dJ#0cf^f-1sGtVbKrMzjgdvTs4RI=7+isFVLQv|oR~q$!nD z#lh9YRqip0D->l}vt*KFfgti;U<5M&KUkmtX4>!a6Pp_;-nAg!&BUSU14MJUyC!Q& zVQthyaXD~8BZn>uy`Pv!ycENIXhpP7YuwN^K;?7dnQ`z6jaP0>%tk8t6n9XM z&z4Qb!5&tAEnNUFmZKzOJ&}>Cwx*q{^SbFirCcr6R z`GEX2#4!Jr{;T}%%*)dTr43FSl6D?ZkvZIdoqtk6K}s9dlLb!|-0qZA$7XY5D$YhF zas#Ir-b&-xn7Dty3O0V3A%Pd81TM7jg-k-0ZbSpJCNvb3B6K?>1v2q?Iy9m@&pD>N zCoxhfF;FiUquay_`a&3^5^jv*Bw?~`V(a=rzY*ERpojg%@KzR&WP*L%@^$4G6PFN| zij09}cz#xzdPCdI#6&J5#))$pVfG*KKjiO2+@cXoF?SKSFOaxf%zi)O6#1bpA}09z z6DP?JH2{c8@@6b4E1Lt&64KNJQ@@(5x@&lW3kv~b zB?)Xpya?53Xy$c7abSQk)Ae8*KEY{MX1R_eBzdK9#4={Ty_VpUP>mq&PP>6nOhP3^ zqhJ*YWR%lVD@=0>)}~%3Uy@PO0ctQy5(^#L33~V<_!|RbIL8pTM&Br3P`IgYQj{(#h3~8iuE(Uy!+_|Dn;e@_tN)&m-SX>q`oLMG@gPP%_VYd@wRG$=lTClQwRr%`j z>GsbG?jY_Y?joA|->nM;?OhwSzWggNy?wjUu?nN**0X z^zw*!kfkUWt1giXRyEp_n%Ly0fOX7;bQqGDZM+81K-C~&WewU={;29v;v&GB1jVeb z@em-BYieN^{x9j=N`4%n*M!11Xo z?S*a%)(y7~rJarWKJ{+(OOVrLW5S>v0GhV~BkUOCgmBz;Cmdsp{8;8~K8$`jk8V_? ziV+WrdF8gz6{fGsca(QgDX#L0gxJN!cLa=42WX4^B;}nWPr=krRXwkIn%G<3p1^2+ z9t{W95+mFQ2%UMJaUd+Fiwqh{IibfW0UiYh!r}{uh(iVP+D0s6b1LUn-s$_?|FwT* zrKAehHp!6>i-(H)#+FvO&9~bxK~0m<#Yi*YQ=lt!hLx>k^d8Gxt-+|Ay%>Xl5;A%i zX@xwEAEW-6G=5L0CUJ{{-)|0V0GS;XnG#@B8?h|GKR8|=T zYCwe+62GMWDx{}IZxC-1QFXT539>_fJQc4NcD-k##YDJtdfJS%nQ1Sl%}R@uex5ly z?Ul4w)8?ejO?xeEUfSzvkf0AeEgs96z{E3B&{WlP@(G(F7K9Y^it4M(uQQhsyHvYX zdsKqaQ7vPpZaL7NET+AJ7zGOy_gN3D!+_ztJd6yc7cR(Ln5nJN*BEOuYD_gR6R#1U zsXjryQWgX+>GhvO1T}PvghCotqi)<7txK z;-gxopB2zge@#tIZOuE0e*TuZmRLl*O}qp{)C;&`mp!lMMx&uA!&0tDxiaNtK%taS z($wkd>Z}a4NsTjMR`4jCZHAT6*tA_mzYS|S_b;YEcF zsJ9MR!GGdE4X83j7zGAx~E!a>ZQI=JvrrutWCsbVhhp9 zf28tgrKBR~kV;-*Hd5F-XQLa<2}6dPn#t&9Iq(MYW`W%8|zm~-i?!!`vHdYaTr!sOYs79>a&Z>)P2-_)&11{ z)$IvP=4PG@lcw@ihaW-$#f@}IeGb~9ERiyF85W(L#E+~@u${nWvv8x* z_d?}~V(;6xgoG_VrRpAHaLspw%}$}D8fgMbM3978W;K%FQx|U)YIJ~@lO@<^7~o3N zLHN}DjoW9KUHB03i|SV~=rHlKcxmG(Ti+9J7fQftgn`pjJSnnuSYWtX4xGkL7Q0gj zZTX|bF=9^osyvT*P2t+YO7lTGMy`bpvdD~?CPc$X3XgTMxJg5ra<2E29dB@tbtNQ| zr+MXwa)%dO>e(pDhxfj$CWXmB1?obzY=AP@H^FT8ve<<(!4)#!uD(Nkr}{4S-Rg1b zd(^)W^V5GND6^zO25bz;P-i2Dyuo5rrUZ1!flJet$@jeFX)EMF3v^-&^pJI7;v>Xq z?&q3pW*RF5FVMwQ!#I1o60fqPn>mkt*_|!jB6-Dg3lhO=`$H%9f_B zSEhUpENYgr6`da4?+SHs+LKX0-oKzaBnOs5S6KhW8<#k<1`5hmS!4J0!Vr%RtVXiIj2|g>2X|`7@%k)FOj=H_=io zlKi*lXp}{o$xqOm?l;wo)Dko%sIw435E&5IWi`~(W(+sBsMH}xR zE}E)poOiE)6sSD>wWEgbtU_`UYR`3*`OdPCQ&kEV8_r=_#ETaybN;Orrhb`4q?PP# zzRcXm+}FHO{luw0TjIT5X(}dZ)dgJB0E3w?AstfuQ2iF zdkfR|=)SjKVaCDu@wuL)N`_#&l%n=vsk5Wc?}HE3*s3mpLV>S9`0f0j`+fHZ?gQ$B z>O<=7#3(aH75EGor7T5K2zPMCO8IniZ_AW2n|pgQx=OwVt`v_7j#kMSD;{!_`>7hE zMuLE2KXXMlL0!B(u_MYE9@tu^%rgx)L-Bchv2ZP=lG}1}G!L3bnR7K5EySZSYe|SO z8!7ln1s5b#QEq`1@CFIyiTO$wu7@~g%v3`f(Ok}&!QY=MR7;L!M?wcRW5TnjJJr=B zsqvE*&9Ks?>C4icnwM%8o7bdItD!UxmW4IbYXao^>5}TXFiwrDSd3nmn+ZO{YWdmZ zDmb3u4r+lzH42eGxdq+BE^BKlp1Z$9c>nYrr7H_Y3&ZA~k_O zJhgt|nusz~F9E7s6Z=pMGjb`p83+gr0GzG9w}_=>Oy$d<@+NWRK4cV8Vu>fkN3fV$ zKP77Yff^wm;sMaXv*h;89hHEc zlz`_d0nbwcp05PFKnd7Q3D{i;*h2}}Qwi8h33#Cr@FFGP#Y(^@4GL3Sm(Bs>@{6yT z`3zg-y4q*hCI=RyZu08I=moh~s2IH{2V%|5Dd%|Wx082}`?B_DaX?r-8q}t$ZPlG5 z_sRobdH`^(;wz6Jxgq^K_dfT2_W}1o_aXOT_xJ7}+(+C;-N)R=-4q!nBjnkdcA9fE z?KN;;HdU4S=O;pMX?frLP{xPmK2GjY<6!3p&Rx#$>QDZhktS81=A_!=ud1nPMLu5U zt-Lq*TFtzg`-1lem-|-u`fB=V9`%_|>utwbWCPinY(uss&nDZE=aB8m4rE8N6WN*U zLUtvM1?Q6Ik(mWq1?Gb6g30#t$!G0T?a$etw_iYZBbU^?RipFhJ>jaB)zRwR&STEw z&L5rK$&s2HH9g4B%{$FKExjx_j3j=_coF%G?P9Vo`A*GyHS22lN8^{18i&@QbLbr@ zj#P)ik>*Hu7#-_tOpZ)Pmc#7GcFcC>I9gR-ZW(A9WEpJP;~Zky>!hoiSGA~WS+%+P zYj3owRn<4%UEbZ^J>I?EZ@u4n_j&hw4|orH4|$Jxk9v=Jk9&Xg{^b4H`-}Hi?{D7U zy(hc_$wA~`atJw;97bM2UP)d>UQJ#@4kxcAN08T%*OMd38^{~Uo5-8VQRHay7SiD> z^*McIK9{fD=k|Gg6~0PemCx(*`Ko<>-q(%X-^v%PW>wEpse$Ew5STSzfoyx4dCl zU|DE+)3V62*s{d(mSw4BnPs_Uh2?F_O3NzCY6}iF9V5q*x03&a*Bj+U?jlc7MNwr@ zRgt&IS5#f(FWO+MDcV-Ey{61lTNEhztmZcI^O}}Lt*h=L-JT9r9jhpd*Y2}d+jrOP zsVheBD5<j59C?pSJ#9=MAN)5cDDfl4AK~+60BC9UV~zW=#~*9i z#I~I2ni-mznwK@RG#F8oKT3{rg8fut9e4b@gwZHu#!fp|>Yd=Y`<2*EVCNlWeqHl@ zx}*}5TOm2R8lFQ6Y%|VT0-2>fe$S5bMViH$bU&!9OzKSL_8~$B6%8WiADHblX!OB~R!v8ukFNX#C9s4k5rFA7GrM-=P!0 z63phFwJ_hIkCOp(ANL9c>avv;VjZ5TKjGW#kcaTJCnl1+YMvl#QYU3dh!=y?NqjY) zONS-(EXYaa!O-9-k&WQPgzy>+M#Ix07(p=tg!tsf1=|()tb3}eQo|WViE(jja>bt& zdo|x`CX=$Wfc@qvB2ye_;xFZA!7)}YZfGj$)>HvihB^2PvM|SKMp0O7?@vMzu@!&N zTn7EZLdz};&bzFUYSnRVxSgl*z#J@{%_ zY@5j|G(d&XP=S>*e(X-@J-Q1#-8|hrBQkq6)IhNh$Tu3}3jfeX>IbYQBGDe2q044IU_%i4MdCRYn3*n2k zD=@?gb`1WJgU*#NsV;!iip2sX&LfC-fkotEa$+_{aPbH_m<6t=G}#?g_Sq7i2Q`|U zy;Rr{1{gCfgCXq6Ek+Dfq2**Z!4LunKe=#gJ=zu00u5roM(I1jg~X)-5;6W}_X^W0 z@^Fo$Py>q)gQIXKiXAE@-`VPv^!TX*@WlYOsrqtbhg~CTw1!+uUM6me+dw!EHlcl& zd^x*ksss(^m&J#?TyYd#4s-W)JsyY_FUr`?&+O+S?VV8 zTF(g2b)L;6)+K#X`=$!lHg2pN-&mDMpZs~v+^M;Xn>H9>c9Gu!ZJ)&scuXkrPrhRQ5OR-(8UC@vIJ{1!lq#h{(!c+G@32qYRGgBg*! zb~kya_Aafy_QuqEwD)T7)27ybNA4ruN`3t$eXnRp!?Gos|pm+ShGG}~}Vyup_W{e_QY|oq+=k^X#-Gn(R#J4SI)g4vm##DF9)Jnb1FE1CQIsMER3L*CkR}F1kzEX^K-pqI z6gk9z3X~xQWJ&=hDPSK=rhwB5WENvYQI;5BgI@>pqrhLlhf{hm8r4(^l}Z_?G%B4k zQW=zq%A~R=GnGx{P`GL*zACNcIL zwgQTMe6!r)GcGREy#ue*1#5ykeCDhMe5PT`-=o{F@8p-D8rbzAM5%(NTJcSBHVAIY zt@G$Abd|a)omba@rleyD$A6;m2R#p3N@kZTXsBY!h@KOwBRJ8gUQAcGk@aGF;?4qY zfKfx(pynLOaiE=YPzueILNhOjn{iSVs5!3(Vo<#TwGac0sHOO$Y%aW(i;6*y*BDVN zF=(#;E3wAsuO7nHQ|$-Z606O+PWwpeqp7>Kd$e1$c55?gyyuewZ>^0gqg+%u<)%DT z1tlTF-d#Nn0=29l;dy}`au;zSjd~6ViBK9dLp~TfLY(ZRnyS|Z<)0k_;{}>yXDDeh zmRjnh$yfqZBa^Yz0e_NYEcKK^G8X0{f;^Z2miE$oKSfx(=u(U|RFF!Vj3s$xan(-R z&hpXeD4q)bbt?sQr*Qm{O(**9pC20dzo@I zuG0KWkuKm|Yn(2?mq+o%mRa#TF#Gk)Ef`596Wfw9@(=8baaO?Ow``vBNa;(e@V9K_ zs8KWnZW;@;c>ra}FNz1y47t@Z9Udijg{rIy<*uf7m8HZ z1Xmks9wc;$&iJ|Rm%8%|FO9*3n=j9aB1M7ke%8bNINaio+{K`Y1`=mO=WY5#4%kJ>PfZL zw~aT&&anxan&@j)e^&iK!yv<8!w|zz!~10)de(V{8G2D_{aNw7h3%LQwXQBTw5e{W zZC%?*-$_UZ(p>3V*3o20NF$Bz}|9TFMY2#YwU_D zicj$J((7wS*4|KiW9=o>rBrX~GO7>Nm+Dd9v%XjTord*gt4b&4tS)`0ls0xYttnkw znuFewi%t$&ssvo71YE8JT%iPfTMk?T56v!t>1Joi2wmt;4WKTk22z8l!PNG$9c3St zeGE+Z*JsF2y=4i1hEhoq{tN>VktF=Nf>KEMb0xJr%`9&y)0`>H7L*2Te($-OI^sF% zIp#U;xv2i)`ky^f)WF*{ScV(WH95Fr_)q+&0ksz2+kxX^Azip-3_|+7=hFJ$JX74m zsoy;(Jg7odp{c)?8bOV&?p;5oS|K43bE;5euvI=EEHT&&cEho{L-mL2E9z%?I#ExQ z_H)(Mccr>fE$XB7msMX#T}-vDKf69?oE5yFzFU3w`VrOrs3Fu<)HT#~)Pmq2QX3=d zZ>U$$5^pBc5;w@T#EnW?;->nWK}+1EysB@jzx{Mp^~1G~D6Q(T^|#cIsUHoi`ZU(n z6ZMnopHy5|rx2N^>z@IUNizRalFa|J^7(hcCM2Kvp^2Hlu6`tSGZm}96=r@EbqjTO z{WzHUWx)yckJnFxnI99M`4}~pnhE+o3YH8juQB+?cJwvp62tP#Y`5FdH%h==a-c%~ zsWUwQljonhjXGS~)widrJ#jmA2X!a4u~yPtIgCu>j>H;6Ty~~#fVj>o-1cC+@U}OO znuH|JQtqMVri%fVWy#ly`}vzs$GEuDFsGfSp03u zcbtGkVJw}-n0%xv{fP`kyC zskmeE6{bnlhdJwVx*K~K@3r1jc!5cRh`+?8DBlCEF2EqWr*gEgrT2jKLF>kxO*s!) zPv{@EE&`KT;Peq5xiCS&FhU+sVz)Nt$b~8L8LH(M$h=~Yf;%zFVjvihs)jkOZ;C5>JkO2nGw6eo)_zy}BDJq}f9)Y*x=>X# z1}m?7=1U+Ng6Kst82D*a&|r%jhS0ofSqx%Y?ylWaJDoaKs|x4?DS_00A&?eG5BSAn z&wUWAFnyG>QD2|`an7{dPjY@Nea$(~`DN`_wa-y6P&25EfUtARaKudI&Pk}_PcboF zhUUva(TLWFS0BD)yvZb3y!hU6(7;6MJjI~ObkhTnbnr224gD$iI`80*>Ol($VO3YCiP_ zwSam~y^wm*`jT~;b-Hzi73X?bVwz>`==eZC+xm)if7yYuH>t_!LuJ}`0gvneT3|7p z9@WLvY_wBOcOCFN4(KKh*VZ;Qkz%81cQSb$Nn7_FjOip7ZIVTI`!v07S)PYy7+I4wyC*3E`3a`rYt z3j!Ae=NrLeK1=;B^?Cl;`8)H!$RF;U<(uvMu4=dGmr`6s;EG^Eek4QQF75&U;!zy; zwS9hv{BQC*=1=uZhEdU7gvb# z74Rd}(MTD!BcOKUQH4Qvj@luGF5d#N6!@b1p>x4AA=v(UXmNmJ_#t(cAIp zO5?&HPF20exfSuLF>@zlF5IJGy><-nV#k+4m6H|4nEML80+lm|yGN51!)xwqDjni$ z3)T_mlZ0D{f%k*oP*flic)$9C>f(%xswAj54z3(&Y?>XSs<0axZWrI|ADiZo1DzQn z6P>{nTCs7qSDL;Bwo5ZaoBDT@GowsS(Z=?LT`s&%*hB55_EGz(NHJZ!*(pK8hOHQ( zZ}Hh;N}OCv5gP*S0;`?xI3?&x6wl2#PtNezMn?Di0fwM9K22=bROkrRMa(02^=pOc zd+OTaqtwXa8;UyzMiq}PzNL6fv9SI!JUg=b_=q3ZJWh4X=q+cpr?@qKY;P;Rz4(se z^8-Io_Z8n?EJ4HiR*cYBOo#gtz->QNJid5hu>=8cbGT?A)N9VlRZMt;Wi)!S_^INj ziw6V3*?_=WDco@2Wj(xNO7RxkR@>C#=Zdebz+vpJ0%XBGSZ;nfWQ;hi`1*=#D@MlA zuLX2`>5v_LDeapo-mv}Rc+|eYw$Qf8af6ssZbfmlH>S=jUTj-pd&{=e)&V>SSgRzV zYjtkb;&6Y>oW;%(XIDVRcLP}!C*+w^L=I=E)9Ea8x}4>4^azhG)+s{79%8z}&T({^ z{Q>U{7+FA-3BD#r>)BYEm=TP83Yr*Au;bzJV)R8XsCyCLOW~mSoM~aaxuxd%oi$E} z6SI%e1;G-TK~X~d01g-gDu+AmUSYa8aB1MOKoordlvphngMUQPW+`Bc81O#)+J~(I zHH4g+!oQaNR`z?@i8AC;xiZ69;WsFZF1iPSoN^)f;Xymdp`d^_Ch>BT z6mqMqtGEu|ZAPa^iaC{Wl)61xz1_uoiVqY&CJqG0vvPA_bYQBgEb(~^vaqaSm$YFf{G+hR^6)bAa=8aS zirR>s>zfU4%ds}2m2%)(bK`bpFAV1zp*voMeBq_w#Sw^HvB1>ygq_}saAnv?WY$-O zYrM16++CA_3pLJCJ*AB|3z$QCg_yr&}KrM=C) zExawgTZ7wzQEw~nS>7iDPX(S1wDX?hRmgXLrsn??YD(bQz|_EVf#(C?)bFZ)DIg(k zg^r1RR@{dv=ey!U&tOtK84q;L6JG@IAG|4W7G{OG&-@1agK1`9R$z7@fNtbY$9O$D zRW(Wpc#9l(Gw&W%#c;z!*pXYBOA6Ni)RXDpuQUp5%Td+DM zo4Xo~ImUrv6UkqgUX6vI^9ipp2B}f&a2wH(#DOtWTUh$zxT`Bn<+I~@L$Get=(C`r z-Z%#;uM=yh_As7_=!BRzMt=&T6C!9i1rDG4c=1omrng5kbY z?2zaj9+Y~S!dE8T(!tzfO$W5Cs8{ZVxmOvlHZIm(V;pY0);Pi#abA>ro$-3(NaGF0 z8;v&^Z#IrHF3(sMSQF?HelKuEZr5;2rveY>0uNKT!NIgu=)7XzFhzoWO4_X2x2 zdw2W6;Gy8lx>>r}x>s}ybt?n2>dz0~V_X+_N%yL5hHiaeZN`Sc#=t?tA;V$AyBTE3 z1>tVt?%^K{M+`>|#|%_SxTL{(+^{LIIdE}!d!TptgyC@TS>sgW=Yh+@)6yPwtTc|# z9aiKhdG^c&J6xacvV!UR;9W?T=2R9kx4@vjhl?K zbGI0`8i#~&aEfilpI#r?J;T7x%vZK%WHCLEAgs)|LDnZdhPx-<+vB@l~f0dINDG3Tw zpDTQuZC?-F0p>X`7jB|o$-t5Wx(Rk18}xW!P{~h$;Ux@3Nu|sTx8a+^qr&-V1!sb}>G03B}k6kRag5Ph8QCQ`MCq2IO_)C{WKlIcZbvUDG8VM#Vu?kxi5?;f>ZkKVPT4^Ev?x zIuqxTW#;wq@GACWTH?vV%}xv#=KWalQ^lp;0v97m5@h_wRtXLAJczf8eAG#NL42$! zQ|$9-4r{WY?qYo(?Imh#knzW1TzgG1071mkmo(!8q z*`Z#(KKde8UwuFQKz$(XLi@au*Goz(RsOm(tE;bRe#vhY{k;9X1H1>S4^|(l9;`o6 z@uI_1`BZpe$(tobb^Y@fl`Jl~z}d}dcS%^G(ci^L1FAD~#wV;Xg!YO*uY~KXlYa}E z%&sp98neEH2#=(FB6qSrmUfoh^xMIT1M7X@HMzZRYWTTuZbn|lyCv7Bk4(QR-DuCS zk1f2laA3Zq64vA=L*L2!;&Ct42wyl6tk@_()uh91y^05VRrd^#&%f;kQkGf1Al<8Fl|hol{PIrGhCeUNc#A~`DvHg``8OY zg`tKY;H%*s zC4wPq6~(;?=FNd#f5{D5E9eb4nZl2x4d5>L@D#t1Qk1&9ifv9Dx*37PSBSb}Z@!B9s0mR;kl z?ZgES;9}J`CMLgxMB@V8?_>L;0wIGD;pQWK?Xb88@A4-mv954B? z5dr=W+RbQWVX+fSNW(h{7R6d{7yi-Ohe&igQ&VKdow**1iS=5GwQuG<=JSEoR78<2D)xL<}f!}hS9-Gp__ z{0aA$9pP?yo$8p`lAtmBix5F;VjKqSDDZO7%vNkGvDs{Po5NOWbK1&mE?c?HZL74c zuz741wtI8#lY8C;?``o=F-8uAo#dX@3W16DwmeYq-WCHj=(F(W;hn<8uZm)-G1C_? zCW-g9su&)VFT;W-z&y?E$iiKqB*k2L@ zD`5%ep%63ktAv?h?8;$XZRew*_F?ub>aMh3Wxv{fjeWTN>bifT^G(8bR|U5JS^hC2 zIxcoGw2|td zKUfp24F-aeWc7T0iw@!BneKHFMl(w)WAn2y)joqW#@5hnw(FeU$ERMxbY&O~ANwRm zNQ&?|AP8RMbIu2h<_lGa{GpoAuAJSxhMxl3_}0*Eq1!{>u&10X=~C9`Cq16xj-^g^ zr8+%AgvbyT3QLLNyQ7Ue?czza&B^6-I&>U_0^b{Eu0!L?(0g;RpKcI4Ch(UUJ!LgT z1eyca!XMk25#i0bKeCCz%;iPe<(wk~rK7xHexx8cyY7{`SL@!cpHnxt?)AEb zbw038WOu2A9g8v@D}**K;|XHvutd%lcZ@eC3nGi^iXuzvs`HlBO+x(=_1FQC)WfbR zjNL4P@w9zU+Lm)i=+4kxp}Rv*gq{xNqrMz3%qBS2l#e!WSdo)Z=%#)O2^5ycDz9uU67(H%Y?RiTQAAc+EAb&OdxR@@7I;@X8P zSshaqksx8KT3B3);I>PALg7Cg;WQZ9ToxF^R@iV;b>#UF28%8&U|<6}H=#T+1tbYI z8TiZN;MPWH%dNrlG-amSf){AIX^uKwra3juEj=_XEaj#x>CLNKRJ%>%%ic4mq^71C zQrF~fphwWz{gQe-Q#dmNtLu3|@t!{)F%9F9_l(^2MdIm#Vw#~+P^D^WUQ z{$JwT{*x4sIKpi{I#24e&qwD=L6SkMYtq!3L7KsuA)4*!R8^O>eYRm5jpt?Ot@U`}}@wN4x?Q7@zqk6hN5{%qy$#vXkx!>}X z{b~CHmIp0)jt`v=Ssu1LVtLf^m?hugwl}LBZ<%0u+%nPfgr&f-&$-`O=(w@;rqTn> z4UWT(n@dNPjxIguv^a_!R>wN$dgmzDXxA;SF|G|YPgk;tEum7z()HEFp2 zZeE7Yat&9Ex+np=DgiH10$!>F>@5dM)L+{s_1C2S1Sx3_d%ySokTfw3@~M1kU$XQx z%_A)$EhEX2)I=k#B4{oDMGf2X1n`yM5FyW_u5Z-*+0%6~#e z#3tR{WQsQVA^)GwjBfjv>h3?Tti<}e0bL+I(062)X6wLFi!UBTvA;H0)jopLmRnfh zGJFw_Nn73_@;|EnJ4XKegt$%Wze)W!ssASRf71I(XQKYa%1W&M$Fd1+vBr<#^ak7& z<~!BZB&qR}7R|6y{I=4md8uZxc}@DX8cOqESy(f@CP2QQZuCnCaV@gs#aCscz1bsd-r(vdcXC4*K~2E>DKc9^9z&Sk=9jr zk#0|is*Y8Z#cTK3tL?k%_Q1pY3&omC5`Zq0aFyWTf`23o-E$EAu21B&qTkiU-}U|V z%{HKM+1UAl|6uVM) zr`4ZT|5p8b^@-}6Eu$=>Ew@<4SYnp3mRl{iS#G!7Vfof+t^Ce;m*sBDILkejrmKkm z|5p){YxIl78lBT!nV`o&mo@3Gf7XZhz{ri79^~ido#vjFUX}-ff8QIDf9HpHlkOTz z-b${u{F~l8C(~ULRn_D$W{mU(w4Jw4L5qWZdI@izVt^!KXbZ5~|GJo=Ln1>XrxCui z`Ck~m^i-@!T;C}I*Z16$Ilr$IIKPGGwRo&y^e^Q{KL!ANfQuu|u?M&sIKaI+a!vdQ zw;2!Sk8p=4j&T3S_T+2--;Qwqm@~X-Pxkq$eSY7T>RMmGSLdtu1$`kO;Uj&NFYJr> zXkT+*3tvlL)F*%Mi61sK?aBYyJ^9c6eCVKwSYCH@)O6Bx)^yQy)o4?dB9Q#CmjGvS zov2Aw{cpIkn^e_*R#p8KpAY|3btOJ|6W=$fM!orPcsSxE&Wrq0&S#gYKr{w*B~de->}i2C%w^-EW{!;95Vf*Vwq3Jdr45{Yvx? zcuhF*S);r2pX|i{r;0|?PWIp0$!>`>ncZ($mRgosmRtV)!B&#F!WvMYgp&a)uY~r> zhJVKp`t!9{EYf6$pLr;#CYM3uTn0_rYl-E*ue~@&KC7($8cY12sjyCFi8rAByix}x z4zA<@2|(PSj-tzXqZMOB(LgC+kQ6Xj3K${<43z?gNdZ?#0ar=^S4ja^O99tN0mG$$ zYo&k@VnE;Aez`56*KtpJ41$Z_7P&ogN94}PU6H#Z<0AJ&?v30Rxj*ti`T-VKY}@2Rsaz9X>%`Go=!*o93Ga<_*dloHrzIXx^~AEAp<)yDIPMyiW@ri@aMm z-9E!!UmXgbaH6uUu5B)LnWjuzrYqa-YVMa1%twtSM+TewN2BZb9sx(_MI;LKUXtVs z>G4QozL6xv@@3yek4KW_&n_kAvYgcn$Jpj_?OFKVsQVW!NrY*1(tnlToq2iMptQkhL(C`f6eda~fDg4>;v>Np`qV=6YFN3yUG;y>}921tj@0iqZ}XC*@4ocT;4r-_vYP~cYodkc@O42l=pDnBYBVJJ(f21$tG}H-b`Uu2?iK5y$sm|Zs)R5VW0}liri|rO$gGW*^w72r{^uTlPb{) z+A|776FOt(?pWGIMRS_6t9RCY;t)lG0@SJ#7bQfIa>Z!L{f}X zWGsP9BR6sSl38kQbTcn`c3AsU^v~+2>c7;x(J1AD+f-(BF*FGq049-&UQsoqv`%T0 z@|tRSWJTm{kpxAt(8o+Gp+mQ-*bXrgv?>x)jg5m?8P=lJkvCKeRF$P;palW08od)) zk|`J_tgbNCH9++iG1aw^YUmJ~j6#L%z$Me6YUqvv7_Y#Am8cP_L9l#1i83$j*qPu(Z%w_%?w@ zqbENaDG3QqD!*UK$KosbSbUvKe!o$k@?AhxBEP#Mn7P(s<`{`w9!VmPd*#f1D`)Pz zWb(LAnYsNyRU(fE03?w|43fy>fp{12MGRI$;PGXoEvc-1FYm$+@-7@nCTmAeCTqul zwnWyBM!`dM5|~u-GB}lu)>NfE$A$K zo{i?WI1HGU!q^h*#|CFh;D(M8$A~%UtMWYNHHB*nE6rM3M`QE=RAbT8;~WVQ8MK&c zPTXjd4gNs&AT{22*n(8_ggceat9sh~jC-~I6Dz)t$f*pcTuOa3J=(QS-3-hggN3^|M(LKf)aR`}Zhe`1UPPIFIp&v4IlzwDmn z-dMP)aC707!mWk#yeEjq)f3gt&4^Ty9~FLF_(|cXg=$hm-ce?vF`4!-u`HQp==6wu zSEyqN39JOn55MSosS{QLE`T(jYBPO}S+Lu1*;KP>BkCESSS)FPt3o++4|Xb9kUn8O z<QNaIqNgPsHO4rJ1~i5f zj`$iylDI5N=XDny>Fn|Vhs~7`E9V-G% z+@obUEh-mv%t=R4OGwAbDkS(DDBKN6A{jsw0~*k632OLv0NkDcL@^*A-68(E!};Cr zl!A-W+MV(tTp+bS0GYWi+52{roC>{qH> z1C{R*w_ghi`W^lvYz#WrfbQjc%K+|60H7RW>`Z*fM=>CZzRVI0VHDk;m?4aSCZPw! z4Hx8b{!I4hm|%~N?X-iAYFcULIZmXkHos#Ik{i;$bMJHScOP&cbRTjbc7N~w!F|Mi z)P2l-+)a^TGD4oMX{R|y(_RCKEK^mfuhytjHK{kaB9;ysrQ;W2{|#@hCTNmo z^1xB_zbO+OtA1{bNA)~iuvzvAorwpkoNR6W<}?i$RUE zbid6Gc?eH?Vj{V#<_WSUby9|ee938e*5$;a=s|u*0cO#An)fv~!QW}{Cl*5v$QQ7q zs0BT}>~Qu+MKj8dWPe;Vv+QX0tg_i+l`tMJ0J(Hb5+Q6ZPAl79)RMlpG_N+M^2B#@cCdIGwOlLue&Jkn z`1{4CYemcIab~8Zo;Lm=W79RzwJbr_YUMN8N(xk9R@Je%tfwR+Vd0vI76mN})>m(+ zUSm3JYvnH>B&gU4D@W=mZky}O3e)g{D#A-him`2r!7-IC?hKWUO-!X%E>P=#<_;zp z1Fdy+si94E2f8Dz)@y`ybVyi~n!KnodC?njpBu}anBaosMXuyU<;jbxlC$AWR;1Fa z;zfy1U{c?i?n0ka-IYFpPc8iYvP?qi0$LPiM}U%z3Jz&=cEhl zU@hVb{Ca=9h7Je=F&iTFgs!up#(2E$$GV^DiZgz$`=#zY!waP^mbNE4Q(dT+N~e`B z@${s7(HGJe(HGN~(3jG0d6s&9t-Flw1A_C5@RMK2n_B;C@}ed2#LNoP@nSY(nkU5i zvfKgmxzw{h1;hMuu&rMZCzu;Z6M7=vK`qlk9dxiC-Jf1vHVBwaIL2|`#mrX4UE>NI zsrBAuMQ7>H5)MCZYY07*9!AeARqHF0)oRc;NNZgQwT8rNogFVyWaG_b3!tsOt&pGz z*qG?Mn!bh}Xc%M|Y#3q~YIwiwL(e+TFheg&t)CG8Do||V@#IAllNUXayl7JLq9>CV zJ(axZtYk%<^qqu*kO6~$M|Bu|Ej@z1j=r8AN#8)*&womx*NFA66s>ZR`$Z;jn{ihvbDx4iWF+L5(4)ZSQo33Vyeo4SnZL-nN|q#vRm zrtdVYFI!bQF=ut@JEgR-vuRD~T2L;z$%i~ISy84rGhW0FUK%w0z2|D`i07#1nCH0X zQTj3ZXOCK6n5@29Z%zmklaTK{VDqB+Tn<|Z$ipSF1%~43s%NUkR?iMT zLBA55M86t*lAaTMik=&MzUqalJF8y{K26UHK107AoJ`LTPNClj{-|TDTXv83B)$=f z47SSWgCz!=!EQKKcc}hweJ6UBrxW!=X+KvFx-UJLzJk7rzN~sUeKS3pzJ(4N$I|!F z_tOv1BdQ;vhfr5h17+GDV8EBU7YkJ2FLzwj(Z5upM8dUjo~48aULre`H=$Jy9OQZnE$ zr6dO2tH}(wSLr{|fSW_l#k?t5Y0Lm98gNXJq5+4C6b!ie$qcwRZon~YC>n6MNYQ{>POmr} z1CD7z(ST!$6b(40NYQ{}iWChvrby9%V~P|FIHpL^fWt)!1{@yMCG<*q6}_5%hh9Uk zrQfCBOK!knDvAc&2TBGUL;Tw01{}k$q5+4C6bv|q| z6e${TOp&4i#}p|Va7>Y+0ml?68gNXJq5;PgDH?FNNWp;HL~o|INDR2G^fr1sy#oxm zkLZu-Pm~NeW}PN6;JD?O)PQ5yR5ak2B1HoZ7oCOyx0C*Y{_=DTIHqYu0}dCR!hrjl z{wBEr$BXRzpZ z^!xOO^g1xpHqxKcpV6O#nf6uOOxs28rN4(`!csFfBk>>Xuz*9rr+L>91`J}aDzcVh zZNgGK6L0eV(gURjOV^@RXbpP7@S>ru@iyvk=@I%Uy{D=@aXWPfb?5)FcOCFeRp0+6 zZPKPm)0NS*v`L#LP1>Ys(~;4<t|=;bO?%Q=t&Rf#4o!5tZRUhWc|W4n)L- zqKGn7+&^%zl;HsR-<$Vd-n%zRDY*T&pAVnX^Ugi@+;#4`>wA2g>WD0DC$PiZz6=}+ z*8AlgXu#O{1DdH;ri;+cd6eeA9%c ziA|H5CO1uK5^bbO=qSAK*(>K5^ut8jMp2KW>|i%Y7X+it%{?SxFG<*k6KJrXBz#X2 zejo`4aKa(DBWM!z$OKXq(E5|R@bONN~%#|i)X|NdI&s~Jy1CW8K zrZ+RyRIMsUtQUV{CKu|JpC;PDkbpc&2bRRUMHH!eevS(t143wp?FF0U4Z05tmT5jJ z__6#k^W)~v>%OR4>N^_9rn24nQ~@ld(4*D>SjyBripWI`PZn_btZZ#ea-(oF9z@%g zn+v<7sEksuuvm}P2278x>=#lCK#;%ej)Y2pfuiuDr-6rj5BrL!T}sR<7=M$c+vFp} zoyZH6O}-ik9v~{;Z#%|Wwt>b}?gRm1-p9&i)lJDreyS|k#r0!#Uh#n$e# zZWXwfBrO2<;iT6zW7FAJ5YP;;ZN1X|jC-}av&JKP-u;OEbWL$-r&1GDMwL?uZT)?L zIaym*z_z{!@A($W!&M|VeW8=DCXJQaq0l#2N)I#>1fQ_o{|kYOZRd`vKV_vgNXO+^=W9>)zzvtJtU5uXrQdTiV0l)8EVggW`bVpyH6i zSL!ci%!d{4xi`D}`M0_+@*h*|Z(OWeqWZ*rv42_CEoJLeY}}S4RjNx?rS8Nkt^X}m z+R%2DHYQeS6IrFFL+f_3mFf9IDw75e;B(38++4yr16lA+**4jM#!qEi?6Rz__HFj< z_DlUqdXyg)e~0+kLIRq_vkE)-XR1};8?oJzfKAXP(Pm>ke@^X#Pz&@(4Gn%c_env0 zQ-j!PK;8zj-Zad0S=@50K?%ZQrvW9$oCcl{cN%y?+-YD5BBy~T#GMA75O*4QLfmO! z2_mNf5i$Wob*4_CPNhzxPN&YG&csX<%@*h^SRf7mECP*I3Ftx%Rbc0lYA_4Vk&89U zG!44%+}Z9NOFl(WK`KN=sIHh$m>$*A*-+>Ze2(izU8)!?_WBf{JB5UaMe+FcoN4_1 z@ay~NmTCm_dLOmf{=WSKdw@EJTBRB3XNNhF`R{>W-=1t$pcOa6 zuS*C)oX+z1pn6hl2?!<>#7X>lb+$dz3)ntRqsz}DOGlNCE*(?)GJdy%51WEg4=5d6 zx<@wO)UB|4;bHfX(x2StbD0r|a$=dKW@o@B!tGC}1YFj|uLH+ic|e56(#2h{WinXnT?^0L$ZpIf`oLQSTA1GB|sb2Gvm1UqlgPDL_OWSb-;>sb;{+_=Jp# z3Cp<(C-88uTn5cBgJf{8wOM^lN9^Z23+oN_clz_1`cwH$y`7iHi!A-+1LT9{?yNqh z$4j3m9YB>=NnG_=#g>6ofAy240~`Y#gB*Km_SWpHX%EmVr-nZ%(CZ(q#5Z}YQz?fP z6@||Q;%%-hd^+cuoc6rGB1E+B@r{W)Y~p;q%y_<0&KM93GT5K^Pb1*1ZZvyvUP})! z+%&>8vVN3lv}ufKtZAHSOg$f=^kk>rKgN$C6h9}4;(s@9VSUCUn)tMgM$W9OoZ15V`e<&tpFO(@ST^4paW5U^5qjPkxWgGzgR_+G?U*;|D>>t zM|?6cg}RKooSI5a6Hn^=1KAc>wkL39rc;l@x)PO579U76$WQ3W@C=FutMS@xl|08k zrG-V{6w`s{`HXls?itOqVp1BIMa`zJpq5Cc$+>cgledU3H%P!t^%BYSM82u`gY0y0 z6?HW=#4<-*dVT?O4J`c&Vhtoh(giDvi2XyI@fYM8a z(AU0uv&v>qlefv&=!!r$3)3Xh$8=h-;zTt(27aI!1 zFM+|DC~V!HIXAca-*}uTm$y-?>x-IStgq3osfQ2s z@z$YT3|NoPyz7Mij=B|k_FE(Yoh51PHabo#Cgyj>N z9q2b=y@)H_W3Y7F@zOm`ZNodE6#SQZ0!zGxt(qrc;;ne%r>HG>)u1l;G)a_zr(qZT zL{M7jf-3MSF7ftS75I!KG2ruf6Qg>BF6VB};%>s0REmS*gClGgo8%Wi|COmoeK*2<9xVQwVG*qn&L@L_JX4?+9jIqQJ(g z{&h0dYrr?j$PD-vuU`gyM-q19gk5c^{2KK-^#=7OwSgNd1T(L)z=l*V0egAf&>0Ks zGKkjok|?s>=QVu^43a|FOQ1Pt`S#T9t=ogE^V?>wEd`tEHd60U?^1-=6PdXLA?VGf zD71rI^k(y1GPuLP@v-1$s^hU>M@Y}#767i}v0zDAX_>LiR9042US=+tjLO z1mTYbX|NAY9Xo>?dy1le#CLq@vGyQ12`p4sdKP* zhYe6o@lN;B z&Ee)qbD6W;X?9jPEl#Vm(rI(romI|ir^DGkXx~(@p-f^ju zXG~10z7E5i)nRx$3~!~WQ`K#T`G(sKcNkg?`mzqgdy(b0diALyLeSuQ!KqE+4Eq1k zHtAF9b8W=H7)V&64tFqI-Lcc~|8J+^@8%AsvPy(wbooCXny7t-2;XmDzz^|tI^5?* z#~laa1R4?ezy|2j!5S3U;0x+Y>UR!o@D=sD1~w4Hp}+>j)n+xouQvbGbezl0yRZW) zSS9G}?(4+M&EF)y-281@mz#x;G&qRQku*4j6NvsA=$JICyZuG3{2ppA)q&^N{;0|w z`zW)#uN!h~xwc4ko-N;2VAI&NHk}Q}^ZTbvoHRHrSSB<@5SEGRuuL76$?=opXU8v& zf5Jw?erik2)|zcK+iO0o`KadOnjJMqYksXcRx`B&Yc!5E`cJV<1JZvK?rk7f4PEt= z!t4I%o+fwES_!v)f1o6u8rKZe`vKVu-s{JyY8_>%`?mq$Tpcv4=pBoWPmi7Z}EW#Ez2z{EGsRm zEKkaxl0Rg5*z$jFEN z3)K-FOiqJ;E`<;nK6 zn%}o+63dD6XVs3?EL=BB_I+0GvAUKJDWP!Bty=~! z?Pgh(R+Tl|sbFF#SeCrfffmLJGT6I>vwa{v?7Fmm}ovbC+++bcXKUfgd1hv6Z ztI>Ly>vGpLm-r&;8Z>;@sdYgW=o!PSLZykKLg|A>Sb8*;xaVld zSPOaa27k)>wDlS5v(^bY6LTizOwO6+S#5pJdby;<(-}$&L3XZzRPiJea_%jel=E)- zWXTjs)HBobKPVf8$4X#q0UxAK^L(y=47fM_J89DtB5CGfjZt}cs-Ds7W zZ}wa(*=)T@a;s;)p!gjnhPk&B}I2Z`3@`2BkKIv@qud(WS%7` z#8(?Kyd?9jIkTO6aoPM}SgZcRy3INP>UDJv$z7hWt!H{JgKTFD zSt{cCv1}mYn0y%bCWMG|at}k8ds`lfW@kXC4$ZY3M*K!y?p}SDG zsaS8#S)WFO416dOf%DQ~w?~2V9Kj^r*9p5X5jw91l8DfGh(v_WLnI<}UQIAb=sZ`j zHn`VS7jy?xgwCsnf{4(04Z)5k%-bPjGEwq&#-8d4nk;<#~fdgedgR zjZM@3cWw{Bp3_@sIHBjXfZ-VM%2)|me92g{q)KT`Znjh{-3(da{K5|{e(1+~ z3jBnu9XIq*uqb}$oJg>!otzl1`=YDhY*EiBJhSku!Y+ks{-~W zuuoy%!aaC0O*|PpiK9p*GIeihAL%_AQ*z()Z1%kG>FPRAb+Bp*K3vdEV>Z9zCEV({ z&biI=Q`L6QE81VGj#M43`cJLAI-@$XT2Y-<{R7nJc34rIu@Y+I_@3v*(o3ZMr30h` zrDuA66u71e_YI%&^5soLPg$y>fEpl*(IjPYXVnyF7PA z?(E7dDzB`3DA&RT*W%J5R13BlX62q9e4PB84vWEl=*y+!=2*d~_Ng6M+X6Ci3zWw_ zOy_b@fVH_@f}ff;X&kR z!P?v98Cv_T$7u4wc{#=CO%mLUAHCw3Wqfcm24uxuHQ3AH4;M9x>!|!Nnr}H7|D6v; z)+b1aJ&_Chd{D7I!E8=9t`p{ReQUm@DensDmC~!ES4-zeuaVA`{^EI3dBo$(qk$4{ zNGp`E0u~azC5^K0jQQH>sn}9*kMyz1$19geds{NRPgG`lS4p2&KP0^{_*BMI>HD1f zou}rVmWM>#A&Ah%)@O-{)!xM9AzXi9h1>#iy?Ne`z_XRlN>@uygDD$I2LZSAQ%94lnux!@)mn9%DXu4l01S*4#(O>c{&67)IYBmCxL5c-n-!AE}%uu zGs<1E?@c4~y1M47&;lt*a5FYj6x{3rC{N_ji2aE-D>qcWRk=sHSGrHS)iW(`5MI9W zcr%_<7vlnxjlzYZ$F;0-Ht&0t3u{$rmqUg+*lvVjLNlH(Z-rti{QMu`v$$|M{RsEh{Ecd7}NocKteS-Q%&r9 z|K4|+|IEl*{Mqry;HV&Zk!5u7pYUWxIFlO_B%^GN4W4i4ZMeSiqo$9W`g-p+_Vf1l zCX2H*DcBKdt7G^3WKQP3QT}Q;W&lN!qHmSoDfcM%DrH6Tq7Q0SMOEtdUaOlNO!Zu* zomW_<{sC85{+>n%zr^w*oW=%03(w7R!X``$$oFh1cra~w+KRN5X{*wXaq}hTO9|WX zEubk6`B9e4tDrA+#Ix0d{3&1F6KUTorCj_j!ZTT`uCcjn+pMe8o=a0gmQ$euoL?a< zPuYzPo9vi88?qo*fs-OkwLHt#%v-$2C5~u?V$3bw2#wf1|w=ly(8_Dv_nd{ zzE9EaS|YIlv^VL{{9*Ya+W;t{g3F(4IDThqt@>{7Qt!Rq8TliM_ScRoy3f12{(i3; zGWUT>bIS6}^DS&uZ_TvHA~weMwe{DuV{#8KywY~5|SvOL*2HgPfrCToGoxV8|~JO+0Gd)Ru~ zdf6uAoM*ehcA;&FgaQ8eK>$nxz=be%+(Qxe)z_+D@$Rp^CP;inOHTH~#dtctAM!4+ zC;biY%KY;)2ST>7P&2L$YvTP-sFuE&Z+YMLZuGw6eb>9mJIHpaZLn>KZK!RSZMbcO ztzYH^nPY5YZR2bgWnP^5o_D-$f^DL0vlms~C7Jy*#Wisy%q$|*1nCY*?cl^^!2d@9#A+C)K9WD(cFg;0{;~W< z(}Ko38y7a-)mUHFP&UJ6ZMZ2&B*+16v!_86Es;Iqw{wu!{eAim=?Bser5{fJG5x3X zpVNOy{~-NH`qA`X(~qS~eHxfBg}a_6OPA^4=To50T#pgkxeQsROd-pXDP=0z^}q-j zhYF0s9x_~W!G0+9W%x3E3SX8_=~MZ#eQIBhFV~mn%l8%d%rI%vZL}6pBrBG6l4Zz< zka~P;pyHuWe0C_oDP+!XYM{>*vR84eSANCBcR#e#Wz_AG?Ur|SRYN&pK@Q(jk(^4I zO=g!>$*N@z*%x@<5caBI1oiZ{(o2ht#T(Oa&b%daXZo)6_tQq6Tu8J^@pc;tq5xjAFW*D z3*l#)YXbO7Xv$N3U5X!v*__XPi~=B-y%rGi*<_nC-^L zT(LqCG=)sJ`cBvH#5Z?&tGiac!1s2+#)4j|^HlSS=N9%*e-9bE!HVR@9nXly-Sx#c z6mKecui(bwWAdAdSHoR%FLxj-?% z{2DZAjf`X8$7@JHDt|gCM!v_=M$v>9$8v{hC2*fcCBkxlHYi4NCosk%HwOF;jvK3(^(x5{4g;WC{Ggt1 zc`b-OWkVYBlHiXNcI4NBo1k>joXAh3Xl$;MzTx{scbe`~-DkRS=2gyzoZnXORR2=G z6<0{uc*n1HovAxZ_m!@TZkfgmGp>a>a_*V13Ty$4?mYYX_TKg{Ia|aT9Nwo{tG)_+ zTzoYscbnZ6?u{f?J%YYJ`BmU1-?ynOptR%^Sjc`*=XCfl%DTdAPAy=i@dIC)Io&KX zXKJ?i7lJako6lms4vPycw1eXd4cqa)p z6fQs8Y|yZYI%#&mL<5CHsg=q#qa?~~)~DiHfp?JLir&4U@hhLt-R#~_^HxnscHe3v z$I7*-&|tfKU;DoE?e;a71WGoWPs7=G1=gx@HpYFrd%gKpb2prwU;3?8fA1S#a?m%q zWJ<}|?r9}0CDTi0l$?(<3o6VmxuWFCl5^cZ`K~RwuB1QC#!o6p=8Yw{mE2J>7&1_> zlDMMq45()BELm7`SIJPwa2jObs)g4IF^sb>DtX`dfpJO6(vtCZbhBkNWESmb@FnJ% z5#zFwN%ryf$uaivkUc15PRhRA{*>{TvRh0~8=o=0S2hLLly4ti_NL6oOP(`6Z+yY{ zqVX)~Q=geyZn61;baZ8>lexrPYVHo1&x6cdXBX?t_pLH>x!G*4Fk8%4^LaSCSZAJ{ z9UEv|oZnt%ltXXGEV^hUR>Wz}@}p6gsd1TW&1GgJ`z`2ci`D?Vm%dir&wZi$V)q6p z4UI9bVa3wa{v#DfD}JpwRsk#$OO8L+|CH|vXr@Hcgq6+!SnZ+@f(1rBs5|~q(1Go; zSETy9vt(Dvo|0SfJ34~ssqPlHnTrV#pC5T^2bY}wneLCkEca};(O>3&5x?zF5;u!2 zz~(nQ?EWgh%9GPj?XPvLl3E>=4x7X7sPW(Cu5rwF-|nt=G&mX^O%9L4>v$g*#V=mg zs+%1F2jvJlLXHm_w=~j@up{EQ)4kArm-}?b84j^yMn_?t6OlWFRR-zB^4_b_bB_K$ z`fX+EiWi$cw`?!#q3;Q2M%L|13=Fa_NMulQLT;HjG|0Z74VD>QVn*W|{_qVy-(trr zgSQN8)jz0LxL3I!a=T@n_%$2qWbB%a0VVvLETNIWNw_zS=H!t7U@+`I6eK>uJ9FFz zJ17-AT_l77MqVnQ5rL1Bp@;vE0??If^pgi`K2dz>pMpOJ+ZQW?Q1wi>>2|Up*e4o) zqWwzJ@JcZQH72Gy3%29Zuc%y2I?2OWPRG-SW$-26>%RZFJvhLR0 zqgkX`tXZO2s_CPJ>f#A*+9vTA?Gv2e4#;9i{NpW|1`ui-G^ z58#p#bs>Tfpd$iy^Q%3f2!6q(i`(F9*-F!c* z_RD@E`T~D;v{v2zi>=>rIdZ<6(DB8^-_0>`ek*^TfU5I{(u1XkOMfi=sWebO1a4T# zjB?|HWy{Oh7TDe%=|r@L#F3rO#eCqJNXWjEvBX$vG#X9DGGn>XY^*R^j8pKI)4>}l*}JkNN((HIh4zn0L*H;JlEAr;W8IkU>< zTn0%NQkg-}aYkHRy$U-;AN#-XmxjLdn=KEOm4|xP@Ah9(-@pEV-yAyZA6!4*_=TBB zik``kiH;;B;$u*7u1v2aF(`PWd9r@PALrZ<%AcD=`M;yPLxh(QdN&_r;yccuakGkG zOV097cYH0I;h5!^?YP3RTYi;ej$^K4o}-_0fkW2J4zL|?>C&0)oggZH{)azTND?T5 zof}b1h%cZF&K-jyz$fs}GdKeLo1e1L;@8 z+zoySuvSgPUl2YJ;Swy|w4S(4-<|~y4jW2?E_l&tPzPbUbo!#V(V zJY(_R3ajsFp{3O6Ar`itVCE6q5y(8th7j8a!3GkkBlKVg%qrfiQ0E$_MkMqTUjx}e z4X&^g{)r7SVNc@h5c-(MC6A&#aa7G`hq~hxl31Ap;y>O<$#DOZqW0r;C1Cfn%mg4m z&Md(4v&;k(KF%xv;-XC9&9Upe|WS8}qg!+e)hZW=&_MSg zd?*OcAh8z-)}Xmzo%&MfG7@2M28WV_!5KmlC16O10iP+6b%|RT1~kQ0q2ULBPSobY z-<(%1zPHkz6Sd)?5g~M@hQvH7h(Y^+ESz1o1k%C6w}Y_ViGS*V)rUwoJP?1aBG`;Xk{yTPeJ7 z9G?tO6~hHibDTgU0`FjOw`iOH1P6nUT0Ao}D>OUAF2M;kynm>RkxT*cW%*de5YNJX zZ=lA%%Pe_SsN-Q+usT$|x#mj;UHxywI_{V!XL^4h;KsjZo+J#>w14sQFwz*|55$Oy z_`LxtJ1p{lygB+@eV#sFe~;;0?_$#u(^AvDrXJp&-sfvysFm5|Hh*=fhOXIZK4d;@ z?pV2;%*th8^PuJrYC3H4KiekjGW9Wc8*cTZlgVuGk$Z>xS=DOQbE@Z6FQ{Hrtx?^q zdBwio{;Hk0PV{%W`7}3lv42_CEoJMts~Lo{u5=HL7H^*GA^U5{T$wF6oz z@#dgg7EB}(=&S7OnHxekhDexJgvFWwHi;M$&{zc-^DX$L{nxlVAZQC6jzSY$yFRAQ z^gN+{QaxBZL_1VFOgmgVLOW7BN;_IRM*Fc|2r1Cic+3ncKCo=DNGsAR(ko;YTP>7} z5U2y~6^9}e&>)2GXCOG#$DnGl^FUU;A1JnnVp!Dqp%cMZohJxHp&n08kPhhi6BJ1_ z6K-!$)DWPn>>(0Twl$RaM3P|60?C+YK;!j6fVHCL;_HLFXS*=eo`YyYpdQvoq9A^U zoEOMHJS+DQpsOsf8C&G`L7Nc*@?kX`AJ`0`tkSR%xiba!5;fZ^Se(_a+{Y-wdJ?LL zMOtORxiaoVLPA3h5?Gae(!&;_efX$LLuuu95nL+`g_2UWuw?C#b{~|5@K(c61ky6f zKWS&n$0DwV@eL>fh_w7S0+B8YrGQ6$5N@>*@Tki}N#Rjfgc9IUe=B4w(n@s2i9eiL zm8jE0q)rGR_2EzgKq`9<$u@Lyh*Sbm6%EovMgm7w=#8zRNA<)3%Nbqv z0GVyywgFZVv?yl^+53iUA`)Vi1`*tBFo22o7$^emVRps|T{(opEch|XLZhvw4>hrXBh#Jy&_I_E4@j>YEzpc&_ox_002J>v<~lbm*B7A)*kRr~rfv z+XLpGq=fh_A{HC=e#pv=5caMTTNwf_Lp#x7*~^V=Vmu!KANG1dEuq(-siPeTvFzbG zlHVFa7_kI^Y#QtmJap{2FdOa|l)Zk;YQ@5JAn@2TJqTg8T42k723!0YA8$#d8zmua26!Amr*F1qr zsxnv^s-!F53O$&$JZnYP%B)pcyR(XNJLR5T{$$oCIS*w$ob^c7f3r@nd^GE^tjDts zXAwGUU|(Q$-PJ6w-P^pcd4Kbd&5wC@NIn9+GmhrG9a`-vD@2+i99Yqn3UNCNNU#Xz zH37Gq?F_J;;YU;g&Iol9&65x?!n4uSvoav1q(SLxre2ljRnpS1G$LiBouz|vfm))L zs()_&rTIwn(PjebmAw_q)_dDvuS7yMEPSd27m&!X>=jiu7uM5AjSWkH%I3m+kdKi% z0Rbjk5wDuo(DCwW8%~xGY&@>JvfllK{)M$N&1wL*TrMhinR@ z*Va%{q*t+VL|Ct4w|WihRwv-0?g%B~p{DHS1R^SKy^~?0+QBLKxt_&X}U;&LMJRoR!}Y#~x1tRghjr=UgT096Ig8O;fasHlmUs0dP(z(p0WRog^H z#cdwKMr{o(Hxuxw>9GYK`b6NN3iE4gs7=_^)=)~=RAJ)e4FeBdBL+?-uvW9VL7$A3 zz*rRz4urBwd`6ywfdgL^&H4CbdmQ*x!L}vqH0|oDwO@peN~dKLxUR`Ceiw#P_QKk) zVnPTUSN6^~YteWlSAs3Bdo~bd?xfAahy&HJtI!w zIL?d{Xhc~6&cbh#>a`45qaeg~!4tvz>$p)}0M5px?9J1GZa8VCS_l4OG zn=bE9xUx92@t4q%(5%J^_3XwTX+6^pnl0+m##~pPi!z*-7BpDZ?<=XAU`?g^wu(3N zGBPtW6`8N;CX`Psw^Wq}Hssxy{dV3Z=A)sZ=B6r7)m!HOnZIqgvhml@u@H&Oi%vZO zEukG%^BNzkeZ2PC#=rk%#SUy&#KnYT3Scz=|b8-cd7OnifD()X{s^ptlw2%OcS>S z{)oWP$!-k%m1YB7m%u9lVd{>B_7hETQFKlz>?a=wRhNC%!uucX#?=-4+SZVOtV@9J z%AqqMd_=Ij2)>@%ITIxCn?pSCE^-sOf{2};HlcUzq7o;rE862CCc^I$=)T4iTCyaH zLukGt_AC>p+5*x`Tmdy{kuV67rfmQ1^=BP2obh{+5`WK5Y@PTDONTa05AdQE8coYf%w}R zN{aX^^b&sc#$)~x(7+k6meGb0{~197w?J*V(dH734`K89_XPzO0Za*NA^{e7FpTKH zL5ZSTWMOGUhb8=b@FrRXF6I4E_C2_Vo|krQ8rt80#X+QW;H5wFj!Ykw{(RaCu@7*M z6Me`8>bjh|+`4GIsnFJcKxG8+}Zm*vv7}8-yvL7ZWCo1z}n#PQ(9K2h! zsp!3;_lrI#+ETO**6(8Y5xo(G`Jw}rWfkxhXkcEswhnzn+QvT~@E-L3;(e!xqO~Oc zu~;E??lu!_%E+J~NeijY`5Bc;So7Mcqc zlt)k&VK58(A&4OXLs{7P;0LrAMVSCxhTC}YU0^ZLvgqhoFc2s^G1M{x7RMj8(NS1T z0(+SS=<#6%Df&g_F^b{B>CB!RV1&q2<}VL4z~#I=}s zZGm7;er=%(4q_v;E8i{z13wH2Txh|6;?wbaW;o0D*`* z&$(@5Pt#x+zFk0r;W%M27@FEoFmhG(CnMPusyHJa1KA9^f$`U`FX+xX&Zo zZJUTyDVNzKn3*yUtJ2Bz0QrDe1#n$h3M*g=+&}A#2WeoyCR zRG1Wp>i0G5ZxCae52A}gi5+`pvX1?D;0f5VXVEEp=u3gMDSBv%#@X3M zqbfmODyzSi;qmWKl~=-KoOfiU?Ju809|)`rUPI5N+W>oap3w65#Ihnl-^I6+=J|+^=yuXP2r=DHjm%lh^26V- z_NEH8hX@2(yx31-@#1fwZ=?}oJi(X=%ZW1(kn(~%+8QE3N0Ot%6WNrVP+v$ck^p5FJonbn_JU3F2Hl4R%QPPq z{8*k0`khFOyeT}<=XGDyE%mX8?g&(UDXekM`s0^KP6SpR-sXw-G1SH21lNL(bp}kw zIS}B(LdeOrHj53;``oFJBNozPGl+V*b zJ}4eQYG4UmK7ZWFLrW~8QBDk)A(SKvB@=M)VmA;0!Y`o-NO-{wYz-k$c;Yj1rx6+9 zzw`GZU@pSY=W*ageyZRHqtdk#30{0f0KZm_W5EYt?wo^!F9cJd!3zcjo|s~I@C0mp zCM+q=unRVp$U`an&4YFmi9vs2SELg#=Y>{i4M|G~Kzd|=St$A;u*x_uRb0y?_PZF2 z{t_Vxe#-^N=tfCcIQo%7g0}Jy1JaKZk_f9a)MM~GNJ#oILbA40OA1Oatf1hIcLFRu zfnbl;qlruecD=ZJ;jr`sBbsAyhW;f4z`al$l9h+JClVx+Nub~hJD{zhWH|T)JK9x4 zY=?aWK)$$~I7B|dh=vi)Kw#(#(<91?MbRf%kkLV(5V*bwx=BchdWit9k8ZkhlZH@S z#F89fUvzFE)Hu(c3}Rmdg`X%t5oBMavC!Xm`6SGKFQ_|b&JtxO0__htUgsyF_C*PB z`S>8?!S>t9&cp4CE}r96*$%*cVP&OMlkS$>!6PS_7|sQq5TO4l#>0R15td5jxM6iBuOn` z7VhwTkn=%~Xevtwa!ZC~D}Ae-0b581{ew7xhP@43kaIx}a*McLng(W+ZKpq^`*JX^ z92wb%8D%reKA`26E%avRHoDRL5&dqX(IM6)CXmo2EvCy3QlJv%BZ&JXCT=qnM+7|( zHx&wdKzv3`l_VMh?#;Iu51~{v>;LA62*RdXYpCs*2t+6abkDf$1a@#G-sE<06-l@n zCoG0I!3o=PQu#Hp-ozPH8R%S7t~jOUtU#B5R6aNLr+KMAU7PyTb*VpHpZe1csXif` z`EXUZlio$Em0#1}(BIPE z(YxtA^j>-&y`TP`{((L~AEXb_vtbj62BOe?(FAdrPEq?y1NWw?efCq*+Gjr{t$p@W z(%NS~C9Qq-Q_|XJKP9bb_EXY|MxWZO#-He)>0jt0^ild(`WUQ65SE0KR3i%(Dh(5H zJ*q@w_vE%>+7UdY^aK~#iQz-gyIVBe;Eym*B?J%=yr0$(A3}tPF@mfe`cwdcRNHfe zs|c&W41UWQ9m`5UR(P^}ikOrJn*7avWq3Zcxza_=+^1R`gr z4frb^>?zn=u&-c$K|(yX-FZ1-@uoY}18utJh8KYQG@`L00eRuE>6+N^;j~bLmG)=c ztKFS79@+EmN9;c}ovtY^?Nn-_%BcKsLQdZo6eP<@19Q444a-Rz_HgK=GN?S%2o2OG zjV`=Hp>MF19%v#y%YpbK18$F-3YZ)M^MVJUD;ukf+}H(o9k?TAc%bdbjiRRsyBh7F zl{e41G&0LHXofn(YYWwtbPiaFLQLt3bLZ zn;;R`13ls+sWtR_pr{+d@3>#je%HOpy;reMv0w2a%2)bMHHy*0y{PY(}o9x6X(zrV~@bw>Ei z@IwDHrO%cY)wdCWC_+Ra`fHRTA_@t6R;VF`@I!2C6U=CjG?9r2KO{Dw;s`us03sq8 zGN5g-6Y+|~gSb5ri-_cC5Vt285$H&~1z)EnKB6u7g!o6oMp5SKhFv^d09Q5#d7l>f?-Fofm zk1s}?5eI>~C@chlx;Xr0-_;|7MhAW3W`{`tkpuMxzdq5ilv z0s*qtJ4sPaz6gKLGKUBmCGM+y&?tfh^;P~85l>2N>)Vbf#g0=VIqR^s6^M#Wh5}J_ z7i^EP~1^3dO$aDHK%j>`_7a z09ix~Eb)Q`MZqFIqXkQn;8?;2S8Irfn}rTyh=^HYZsHT-UJoHwco!CGkM0|*x!qOh z1G6(h3!Dj-;qKw|FasWp&oZ%u3|Jl~z=QxifLEu`^vJ@`2uH&+Iro=fWLGL;1|rs% zExy(`*+=q1yssyHTd1kcLA}Rbe4;7Qu!V zfkn+P)^}>I(XOc{qG}0eBB-;q6<2Gec2(l;{z~mb$%qdp5_RAaydTU|+rfY1`(?3y zU2*gU7>9gr5vQ6@EJW40f_Yvy<<$aPoZxH@d6g2Q%R>o}+B|*@MgG&1BhZ zNX+Ifn9X~5HgAVlz-)MVFdK-48@u0rVJ6B*1K398GI}RjM(-wOv-ghmusvA@A0}q-5zOENJcEzJc8~@E?c&`Wo!_OC1Q|(? z2 zw(owCtPo!&7UC;dh%I;_{uho)I`Nq3Xj2&8L2iCZ^0cI?9AzXjmuQgeN|w>ri5YzZ zGun!0^ldm@+9~sXsJImVgBcZr>}qv&PIYc|UUhzTLA9p3NL8%rq$*LBs*Ea=s!Ua` zGOH?77L`?1sj{i;syi#IRMje^)^aEU*_J3<{@uyc+LNf(UZ~bKT&;cK54ECUh2$~$ zz4Ry(eh_e(e4i|n9}+V;05jQ+XL1nQvQC*uVf2rN{{YGWZ6}FJaX489KPG1I6U^Wv zJcFOZZ)!J)NlNfa_>J(!@aFKg@Q(1#@OR<;;X~nH!aDGYm<{cU(_k({n-F#49b~&7 z4gZ=X8Pdk+ev9~chG!rH9+|W}GopxOCCfw!Gx-$HLpXl9Mc(TqyHvTtFTq?ZHWpx>R5HYrltD#k;u-7$QZH z;>gj`P7xX$!g<$fUltcB3%nRU5|%`=Bl!`1q%cwvDUH0MrNJrip|7YFTfmRF7!~+Q zECvoRSlS@I$BRgt_}eSUiXg5JwMP=Y;a~7dMV+KPVvbZqEXgX?3g!Nc=Uy2(jEl&C zB22KCl|_&sTQV_rC}tji`GQri3f7mXIiSjTb07lN94yDr{B@F;t%ONL?SnY5_K8A^ zO`{yJ59F$1zuhTWC?W~ zg>|gNbx#8?g=eX^+mp;9-4nasIk4*yzW#qA2@=<*lGr0rVoxZMaO`^}N_;bw#Pbs+ z_J$G(AHGkb#CK9j?3XC<0w|Gi)-Ozy_R z#0iNKCqjvYvpOkJ;^9;hrzA?e3`!)t)5{ah^|_JrB7GwlMFvC$M}|j6N5)4cN2W&P za4?H38h*UcHF9>OTVz_Ib`6mfBYJwGb~6&&BzipUW+vB89($9?YBeiDM6VaW)JPHD zzBQCIyuEm<90j;%Pna~`nfQ)6I^q?7<}nq}3k>+vCZ@t1ST6*o!Znd3mn8P zya)?@KxFj$J>#DjVW06sSlal+5UU{~W)OO`+1{u@*GJkFhDhJ;Fhti!P#_{AmIXpY zJ6<%4>m$brh+#NxK#W8Y{QXV^tfwddfBi*MPLV(VqA3lsarc4-YLbvc5^_mGUYtOq zo=1cHI04l!36iV-$AaX3O5GNjAGtkpN2E2<0hiklxYRJ%FvKv_u**Em@U=NmO;!JU zBNijL+y#-pDne!lVD7PFInb0qb28&kiZlGj0Op>k2}y*`Wx(t>3=|Ek1n!Cy#Ap5( zfj}58?69|K!_u}YebwEvEP)YeX||Q-OD*ZPQE8*o_LhxF+gCO&E#hUooxP`cPxYSW z?c97y^Xc9*yk~mP@^JP@{M0?>9BNzR!N$d~bwc&IYMj8K8@o4dnwC!c!EKQ9As8 z6achHA7NRTc~|D$nVH32lil?|q{>AwDL^6%@dg(`93{TJ<-v@2#BV+dXtMXV4AA46 z-p<9DMcal@({iY(*W>f}JtnKu80sqwV*ALpi$B&ZG5kuP0D~mTtSE#M-nc? zC$FBGUK;+Ga1DC)drtG1=7%B=M;?jXkauIA5ta;XC&N#2P*>ehO?%I3{%^z__}*&crTEKM{E{LfnNG?*l&-5w1-0mL0uyf{Og!tCzFVqRmf~bxG@* zc6M5~wC-u?nRU&7%~FqSl)rayr4Gy9VcGv#0hTxe@<&+qzpoKVX4#wKmx`fDMT@!O zxKj=-I{*la^)C1u9j(E?#ZR!>i^)1Xv^w%!C~zwe;x zn3@0Q*y-5i_}cM}<6Fmfj@^zuj=he3j{T1B9X~h@I1V}vISxC1bo}J_+3}0xh~uc^ zSI032a7vs~=V0#;?@;eB?{M!3??~?`?`ZEB?^y3RFV!4u4mFSWPVi3jPV!FnPVrvm zz1%z1JI&kTo$jTZ!_ATAGH1Ed?5uEFoK|P0)8@20tDMzNhtuh-ak`xE*VH-P&U$Bq zGx^Lsy}7N>haEeMf5pz?{B{Dey#a4$gRgNa8PnSP|%nf#?dNghrY5%J~pB z>jeezW<_#8iVzD&;ic`zk>k9y-62{wGQfgQbHr>_^beh_K8;-2c)UZyj+NxU;pRcd zeD(L;CFItU(Ldns!Jp;!o{S+$Tuti0-Z*~t8ni+{sAKu!Rfhz85lH|X{W9{1S2Q2M z83oP<>(pPtdB(}l2k4MT0{$1NE^x$2kWT`3M$FvQ!>v#iv74!4wCY_E8sva-(kkJD`cbN`Ft~cCZ(3ZVzzR_@#;by}vhFcA~vPx5@s@n|n4YwQaFti%M%5 zMs}JHnGc)yPAX&tSn3uy!0rP^mGq8%ousm8Rk zeph`ltpg6yIn)6sNh$#~iEmF!fGd$mxQP`V2CBnAiOvF!McO_M08HEG0TQO|69Fmn zPdgLnFjVa`R1Bz%yF#%QDse=7${%(_oX&``%iD7rOQ_cQ4>}}1am5%=hgTwDt}Pwr zy2D&|nCm}zeV@Vn8&~)=_({WUxW?=?+^KX684rqojfte2NK$~)nroRH;IZ~pgd2xgEsT|^WNeI`xuN~6htx2@5f?7A@VyhWHE;bD~n1R+o$&x!^avz?&hOy^XiAfpY8kdWirM}0y$oh!u zek;t7uYGoWJ_{QpkVv8uNx?)?D3L@blER6kNFs?zBy~jJxz z2|TU8QhSxQx?+{}YV94`<;{0$AF|dlZl<1TU>cbw#>03SALD15nE>;WYpv^L*E-iL zuJx{Ej@Mjo>Nn^`hj>V!6wKCAjHo?XVpJVu7Jw@hs3*fd!B%gGnWdO5CZz+Kxv%O$ z?TaQaH;lRdBMt&n%RJ_K-1UU(N!Lp21kZ!bbF!v*!VHlB1=>kuWI*TmC0822A3Hb= zw_QB=h!TE`B5=+V2OsIooWc-dicT1Q1PR&0)d6Qm#Q{gg>8m{s&w0}Gr80GIX&>o5 z8B=oK^KACK@9F9~P<611NQ%PYww+)~9&0wayeeS1f1udVILFIttLHlBHqTF0+dZ#n zf2lfBb+qa~wesqW>db0IbyhVY*mzt`+7_n+20lO|YctWoauG?Y0Zq`lq6q>12oS+F zz>}OTAfJl38Bl^_l@@0sdilI`B18vtQZD-9*IRf9Wgn(5^Qx>LW68ko5sNRq z&B{GJ_;~IGBn!G|$A7Ye)A6Bah48DZp#~hx4H|lE7ep}cJr!FD?vXxL`FQ2U%o1sD zONRG}%1rMn>GSG`q!$LC%6KY$pL4(S)V$O3keG#n7!=qed2+QkQNR+(8T@7@>N_mD z-f2*xsC9%FNl0>!ya9~H+ZtMKrh%UaRz)wO0O-Y~gQgZWw18XR8e+%PAZAqVJK$aL zjPiTa$h@wuxvD+tv~nUDdjE{ZZgOTZG!G5)0W|1>S1SX$#uxiBjuvn>&d~z8#R)Nv zGj(S{H&$81&lKDSXO^zqTF8oZD;;lz{Gh{Xr(K{z||($%y|+ zMm#r>$bek(nLrP`L=1SJyvNWJ=b%BacoC6eu-~5 z9|tF0gKBH0x{vN0G3;p?9JN`rl2(Df{5*_CEDAWtZ@F-AC7pifEth7)S!sXP`?VoV zBFfPy=Bm&i{UUiZGlm(0J-u_;9;MLkUYd6;3+^Doo zWF|5D@@{Fo)H^9yANc==c=YGt9ZhCV?gGVhOM5O)Okpl#H2FogVw?C4+vUtu=44+e zPh+e_l|{B9dr?(Ub&;dUSyWRrIp`{S*H~M$rFLs=g{`j0U9_Wiw)d0TP|-!rovRh} z)!s^53&ZY*PiKyIbVnGHseix~ioc&RNp@+XpJ1J%&^o`FwjpgQ{2kjKi9*zi&-1qx z1p^OO?9bm`w7lX#{)a^?Dh}qas(7g4zxOjuR33Ic5;=tN?mU_-*j$p zzU6$|X>^%fWv-n~GnsWTzQ+PJJYQy6u?v*Zc_0(8ux{O$!?DY+TrQS7UuyLz%VV3g)IDkth!wKgp{K%y}0_ zBo!PDv{*3ey1EEvg~+|&S)R2~5sp*J!c0&fR4LY+1R zJ`U^%d;)d)BBm3I6nZg^7%c^LzNw}pOOKo3(&M7IcLTe*1l)q{VL}qWhuNrTiY@m! zk2o93yw`Uta}L~?yp4G}xU*na!IhS;3%t6o>U8j}Dd%)c)gJIXG590>J~5$`VQ6I$vhjB zyEELGZiPF`t#rG%QHB-bHfj*76f7)WB(6S|xK6zoZqx+% zT^U4_fF%rt7d{O<yc?^e<3AFp0AQF#k@zu41+=Jai-NW3& z-6Pz~m@WwfuO}HHnL_oW44>O_`W_R5lVNUUj zhAcWxkix@>|H1)sDX%!Y756BE1&2gIoJ0u$%v=h_YaV9;lEHjJKxe`dKLHaC(eXi_ zU@`y}r?Z}%e zO;f#;{fgU3b@RXJ9;xZ>51GXptU;=;Q$Gz=Uz9GYU9RSVXzHM9ommnH1Fpc;CKnFB+0 zAeGU<5v-8&mj;@X#rkChG&_%s*UakWRJ*}%g9K&-qIfap8nO$bIkM13rsKn4~hed zgNj26UujXeINT}xQ}E{?V?L~S&s`EO4I9Iz@LFc8`y&4_#s0>{swJwqp^N>?vTi9` zr($8Ze^ZM#wB4fX5?k~Yvc`Hq8+h_Hwf;}6sr4Bn@xd@ufgOhBz#W0@1&cMyG!44% z+}Z9NOFl(WuQ5R?L`A5sRFW?LI;@}}xIKOYl19bHA?#9U&b?GIIL5^}I7;v)gL1&- zZ(w*>Yt+YKN-CiatmTF#GNQ0HgvU6oAv7?1P(3MDSAr46t;HGYIg~w4 zlCVq2GLAO0atJnrUytPQpI_$mk+b>;5j$D70i}aW_sHg(x)pXWJnSA)`jh*7PCp_c z+VMwnQzzJpms|)kz$Rq1C74iPS|pYIxUD@B2qs*@c3c8kXG5KAMg$vQXZ+_6IVoJn z&ldG)r0g8OQhtq}l|-0Qm>c_PuAwa`vdHjUG;JTB&`D@ux&Y%;Fd~X&Q+Cc6^6?TU|7!HMh zwA0~mxJ~5F)XWSRjjxtz@LoJh6Ai15M1P@SJ)Q{6N`LtP`Tv;g&|tYctB>jN(kDs> zP~}w;SAABoWgyjG{bcC?$3Vv*$DSJDV&Cv)9QkD@v%2)TQgx_@xu@A=AujZVPUu44 z@2}3++?gF`afC3sY^Uz(dLQJ4(t{a6w(k?{O0HLtY&00ddq$F2GwkL(TFxY)cnti} zAZpzoN)MJEF8#6er_zhULrfu)%qTZLSaxw3`7#@uzT<2KAwnxei;9e}^NOcmhG%<-lPrirFWrpc!L%=gR> z%oO#^|ou?QC3#6gH2pbCl%f;}a6x5>VLLhL=0J@g>^5juA>M6vTTr*D5J*yB>}at z@r_fPNumUpJJaA=Tsu3s4kyfm<4Uv%A_dmYm7P`KhIo!qr1e*|*OP@zncmv;z=Y~#2 zcn{%GJ@HWrXZ}a^|Hs~Sz&BNO@tdS6=}LFg6uR4xrWxHyo3we&OY)K^;s9~uLJ_wj zf>H<|LqOaNMZp0MaG|)6p@QOM$X-r{B1>_7f_(Qj?&ICLZAUSAs8wf*Bz zZ*N|wRYq=K>MIh*HbmPSynz-x;Y&2}C5Ulpd*~g(pCU@B4yE*1KkL2vsrqU9>H4?K zZ=3n~e=MWkA?5%1v*FHmxkzdxNhIvjERiIU&ID6z2}&`NBqFAwsa}*npkn7GiLi>~ zzndiTq&Mb7K?M&eFwbXfJ%srr;VGPe@=B(_uFWYRZlECYO3t;mlv(nr<~-{F>p-g~ z!z6Hi$txUlRLsPaUvj<`<(E9|yL$wiK$keLHound5mFwH@B-*~F7Re1x{+^jq4j$< z7X`V_kdzHM`?71ljQS!fr+04ebx{vV9+vEnIuNxvDzA5b@3W~#mAho>^4!{sti`p8 z+P<~Q+LBs=mApB_Har$wB#li3=sKZ2R-k`7v`2$yd><-&WAH^V37#xR6U7D7&}8vwo_yX(HMyULnl{-Lh0_~rZp^T5hObyrkgS$Vv!(ELZ;wUsk- zzb_=ZBSHMTo$%{MgN5D&LdyXYdY{7y#NG~F1S_;&W4)H#--+P<4v{JFJifxK)7S8G zd85F4jmsNXG!C;8PINrD-g=@@U`eo~SY(z=77;dp8_iFUzaf}Ie!bO)3Y%@ov8+iC zzzI3zH$e`qxYIWTcc*WHj|lHFzZ-j(j|MHb+FcWoTf-2Fq$1NAtH!3WYZ#3~~^yO=z05*_}bWU-;y@gSAUX!02SQC2RaNe&sg zyJ|+0C!gsqYoLrKVgg+&!Kfv{xwA5M<-5!AUl>#B>c@XAP36M$i@ZMLD)jqFrcx+E zDYiFSV`tvZ2uC5de>s$nh~-86tl*_lT8id%W?_{7mY+4&+S-+`Ca~D&Hb4suR0+xO zda>sa$qhg+(2#A;rn1Lb8?!ChbT-ebBWsQFsK>(?QAq;t*iQf^SoN4+B>sHW>2x6RWUldDSJ%z*lZ%4WQKeF z@H55QKTnK}%`~(jPptifX#y|%J{I`)!5)Z`KLGyAMgo0_4CrRXmZ;JC?_@8iUQ}(2 zo^C}=)xM@4Kz+Q)s~O1xzk_c`EY;D7SIR20d%-};dCVJq=K1UzIKl#&<5mw01CaAW{DcntOh@vrg(L%W!1on^(b zHQ3I{@Z%4Rt>Np!fncy*ih04h*2ilZ5QAWy7lJe`GvojuSXre303eiTAqBfC_EfwZzbyW}_~r2{;#bD6il1kFC~Zy2Ma}Kbk@AF>eGwXHlaQ(vJzXX?j6FO83|%X@H8SpZ23=d|Hx0tJ0@A8_01Kb zQaYk8bmvBF!ci;!L2T}h9*fG=6|M`iqWl}z1rfN|N@!785qy}d!9d155M#59fl$ik z`xwbuMJdBs{0`p8pkQ~8!G}4~E3;Q+zn}d<_J`T4v)5#Ql>Kq`+U!rVKh6HS@tekP z8^3F$!BWmAfX5K zqu+>L8hx3B25;fa(6S&HId)lcyso(avMjawpxf{{y=i^R$^p3j0wrUadD2U8{5KC1 z4#3TyO$m4#-$HVUoe7XHoNZeZJKwbujM|pi`L2})@8ByqAblWzA1nk3)bfaTbCu{} zO|oQbvLOGO(*$IXgpND6s&*uF{2=%w`BQngwMyHb3cA9YM78eS%mnXpiSNjEcmOVE zf@Oh-@A(rS70nc(P#g>np&ec#5SH&ZOp2Nu6u7xlZUYQet4$7R1=JXPC}3?dY|m8QsUOH#L8`v61_r4LBHlBmX9J11F0goQ$EjLx4UAL8IjAfQephf%SyBEC2ekyO z^m#t;7Yc^qm&ARaE*b5AO|?WdN%OVt2i3o$NkqBxpWd;GHKRf)ET(+hOJ56A37UzO$3eRUzZV zyR4m!z7tN2GDw`bZ9;ceM6#8il0x`pHKw!t< za4Ea29EJ?h%mbI=drTn3;1Dyrticguh>jkJnU*>b=rQWjjCg$Ju9R)16fs3n|pib!s$ zxpb5E2Q^jNSh`oePrYA#K>efoC-p(~&+0?!!@Sy!Ef?Btxy)|MMRrfG#BL-&*fj%$ zgi>*LnHxNvqgeb8Kq>G67upb@PzG2CPr`WVi2Qn$Lx58jQ&d;Ir#P-CzG#+luDOr? z+v03}jy_j^jx5P`u55e0v}k3`cf~vM2gnA>2FVVV?vsv62k`t1v1G%03U8crW^r3t z&hGoYd92Vayr^La%bX3x_>vD#gL&Ea=99wF2{d5HDD8({8%4pjg4c3a;{*z<;g%CU z_p@T{T`E4R0kj^3C!w1t&TzktejHu7A;zbp_?(Z^;r_2oToFsM^8G{FG9o z)GJ;3*@k^(a|~sY#}YEYM;t-~SmlNR_zM!zrB-C!I_OgCIJ&nD)#X7$5SLo}*gSQ4 zKE`bjaRwO5(cyy)IX0qO>qm#E69v}d_KpId;DmVasdvTP=){E5&1C^^qo93+Bot)3 zp?I$33CWWZNpC}5iB6@sV=b*UD554*1BlnSsHInrR^}M`L**ao~n4d;+cwPEB03H zt9q{DXafyC=VsYFNx+>wWx@Y+12D)tt|u$LZE-X_9H_CaulOWkL&e65BQZx~j>WWA zxS}mbXRP?=!Ief=EZQbE9{%e{v1#xH{u&%<9tdgnLQWj`E_u87c=b2pttH~vZ6(`F zc9dLGS7zfKhk{j}>s948SnMW|_vr{gg^fEAW7F%%^YV^68LPAftN*}?((#9L{vr^E z5d1P^=u`0>LbQr=AFOc(_!3v|sABOtlGFumFdA&NHV@jp59yx$<~sidBVU+XrMF4h zD~3tUC;zufZzl=EaY6}D!CiWD`au#F&B%Qab-l?judADj=)q7RTt5#I4tV%Ur#Q))-t&k85OuQKWa3(hw9Bg(_(f;TX zn@Zp)I&S1TEOP52oMm)Vw8W*JvjYSUL$Zo=m!_AcEV zGw}$PLo{y=-kNxXT5rKy2Y#_cBmBi~4TS^I2N$MFks#zy(RHF>qHS@trTx1EhkS+1$jM4(!_PJQn1f{?6Y>CEG_t{H^nf@sK( zg_;&+ABK{)?~A^%9aBR}+|RLno4$j;*AfH0SXdyj#8_f2O<)(S+1Kpx!~cbUwv#1~ zZ?xTnTXE06`etawxAD0Oz%4cc6*j?(3VW-K#D(3HzMJ1$2u?Qs)7S*|KpV-Eh6Z1I z0|68gZx=3}2;6QPZo4CpfFq!QJNZKhz@4_g)3H)i(QqXSEF*1&mLf~BB|!9G6lC&0 z{-rblxXbnj&ZHM)k_Q(v-%?;HwA>v?meG*SG#rh($<{)tirZ{sY~_{;3$dOEW!Hm@ z>sikhv2opyM-;wVNK)T)t$`*y-haXqY$AU)z6swGXu=cyCp^j43R3TFw#j4@1eDTX zp)GFsh`_7iV=VLWV{$Vt6ka5p*K1_bSNctQAN&l_Jq2?1A=U)zL;%b9{H;0WP{wQ- zWQJg#ACg2Zv!uZ{_|Jv#>54lkJ*q3H-JX>m6**Y${xHWgY@f&zl}SoVX|gg!nW{`v zrYkd)H732uU>ZqxH?IyArAIKmV))lh7E@@sIDMe{_Nd~6mle7o)f$VymF>T6_8%}0 zA`@4M1Jlk=Lm^!hd{~7_jh$n>#rUx8{^SRewLWq$P+nS9N*T^D-bg=UD>VIQ6zQY3 zNoGI^D79)@_3LGClufUWDAM}UhSEr`=@|J~xm!L?K3+aSevf>j{HMa+s)L1-&}+b;eM0G^-+2iXA`l-?&vo+sKc1d# zo8pvr(2v<3w;fG>xcVByh=xj2mFXJ!weq3z>*NOthsl2|G?hkd(`b2&^yU)`r}&tgU6+%8HcbSru7($|e}TE;DBhHd;$#sL6)D$|kx^p<6{4i63;t zJ&1^Mi71yH+MU{6+TGec+LPLUw5POp%OlD~nN^b2DavJBCtkB^EkM~h3dY~{jR!;U zBa10z@!)%Z(hpwJDiq0>QZ~)MT)^bAAr;qFTvsuy;`)jkDxRlbpkJgH(erHcZBN;5 zsvtT@K}*ev6l-)X8c(u*&JrXWJD$kK_BG_Z))eT$x&df!({hH$ZCsjvrl_CjEKz^a z*`g>(xp7?e-{!9I<|BS<#BYt5mX0?qta9lH)6%sSjK66?0d5Xp3>po7fcrIzFTnjD zP{+^z$3onZFv1XHcPrJ^Geg|}5q0dZVEolFk?<_R5}ub@-n6uk^1O(b@=RQsXkUiwWW%Ddx}GBGy1l31gk4~0sfy|WSh|w zwi#oLJqakNXIVA^ygP<>G}5;Vh;KhToE*`kOWKU=f~ zZXzht8<0yY8JbIiXK20wA91R-$6p}%uN@UURE@R}Bk0IElufYcdE?xw+BJX3-K`|$e(#7zuT z1T~bK7|U$$+5B!}q=$4H!_$=l`*A^t2zwy3la-;Nop_oNUU&nXSm@P&uZ+GbdLJE* z7k<4lj4eTZ7`1@gTNDBrmXBJ3unxwnC#dgHABvu&o}!+ro~FJ;^O#y}^ni2|T@h+Y zYh4J7*i|xfI_GpNviax?5>^#DkS07MVi; ze-8qXP#zC{^e1z4bBiA;_9g( zxjmKFiUgiJxkA{+4L~9IL>jAzQ^YG06jDW^B1w^~NKuT`$>=mix*|g%Q)DXSiY!HM zMIS}BBB>#{A*CU;A*~_3AxDv`7^QpOyxq3LHd+_pHt$Y&D|Milht47ZyKK1v4`7Sf zGkg^Elw%aTZI>nzauu|TTmhu|+Fz<~NU201M)9q!v=;%A+}9g!3jAugSJE=_vJWPi zVBaUqH$J=X-oSXvzKgS`B`1rxOn^D}4p+*uz0JVQ1Qcj6NI~v14{a^|!9a;&^1_tX zpCPeT44jM=aI+XF8Ozg<0LQFtm+vY(cuYbBZJ6s6-e3e4r>0%z8yJm~7^)!5c?D)l zKztUqi~JjF3AW*C{Ef8)OlL5R)9`*%fq*)Rf%3y%Re$VH0t~F3Y$%Q}hH6}gV?zln zuwZb-;jJf$21X2$8>WmTI|8JteQcBurix%6u8s0B$^eHsPY?MW0x(WWoX1F8z%Ti$ zCH#*6g?1w2JKgc)hC-MpT0fEbU+@!|6YxE`i-^@$ND9 zk|Y(M)C=6Ji?xrJ&Qr`+ysBHMhzG~GnRs>u@9N^gFaD%oNz%lawC2Tx*UM4IBJj3s zV)~@?(xR6XlhbFXzi3=wU1)t-QBGITm2?$dP1n%zc0FyNYw0@LNSo*c`}?{NbRX(g z>(=N#(n;;ltJms2lYK5r0^Ws0jD=uAdZL}TSRSHVnq+?r+!KRsa+2-iV zK=nfU$~*(>`J$}_H zjzjeE4C4=>ysjq0{$0%XF+WrvuD&7ud2w9vz_dXbXR7Ad&gKM@-I=GDRQCjr1Lh`@z@vk9Ib2y*5O`dWRR-l#X}>-7zKv)-b&>Fs(( z-(PjM>W|_-i~p{gB%3C?QZrdLMfO_WlDq}#h3e_D`(!g@gLRjye%36q^tKahGeApB zLA9V-Sp8Kc*O>ypmeYgg$42BZ@FZU_3Bj*J==g{&eQ78Zj8;z7a- zgod=*v=LEvHa|izPHvPB@`+Ss|2*wPnlo>zcu|Q7Ht_h%K^yRVXRc6$8txRvG_z&> zVFA$CZ;kSJ^sEq4P-@rOmsMEP^y1|eua^8(<4EhB({l&v4r54R2|<- z_YhZ0%b=G&m^+Fsf?rv1d-b;4;>vRoM5$$f}BSj@J;6qXGY6|EN=m2oe+t z-u$P3)R|(8a5B-mfj|RB17~rDs@h&-KePDu;sA@Ghl_CnubN@7|CxyG6{CQ?m??G? z*V-xYx7S&qkO2MIodxUBWW&jPptwgrRj^TRz?bVWP=Lzu~06#P$u6_cVNtn-dj`W z319E~M&HZnr-e(cy$nnHN(?UvmrG|EUlv~0@K&$4qK;~gY2LKHWwj?W$%x(WaH=f3 ztmgf2U^Y@iFh-o->!3?l5vS@bL#?sDq0V@=!Dx(^ontuHkSI%%CCgG|^YYF!JeBu! z-ZOd6<_$0mG%PP$Q6^SKE9*+lT1vaW@b|*gt^F5qsv=HRS8%FWhg5?I#l(~W)D*L&u;hB{X6M(*C;3v;4)s>dQ%8SIrNNIhn?u25k}6d!;T8&S(k9SL76s+>I%iElf)k=-m~$oq{q1Ml&%r#$ zRUXjwbD>)%;twGJ=h^#5#mg{fFAnD?hVJq7Sari~=7E8Do)3Ahjpm6h0E6rakOhyY z5Imuq9?SO=DUU!G!p@)IoiBnUDK6t6NJ=D0DY%r;P)facZtN4WPsYx}hGOS_8Dz2% zA8N2Y8D}DbOdgNDJkT_+fZdaD8Lot+bvVaC_83_#zg0B2z<#m)68ok0tL#_9hpE9I z!i+o_ddcW7Tpsv;WI}K2RS4a7fPIMl8vC{O#fboyTL?s%Ljy^D9TagyEcSAS*_%K* z{sEZ;^#ZO997q6;D^B4bG(XwsdixFb8|_2`bl!v>WXjUuL4fyb6@Wv2g6YB4&&j8up;oL~hanhY^fk9RQ2*Hy2yRk{G z@=S6xd?B7KA=^>_n(TfXzq{;Xu+DH0v_fOy3iZK9cH6hIHGSAErV!3+97%){+KIhF zb~|5WHOjjlT8=L|((`i3uQXJcJ}&#LY+YGopAgw6bmTta%+gwU7NyS9WgT_g&?KY64Z^Ih`2nBiOHF?>^@)y%~W-!!j5ONETw zuz)~28?@7ffBP)Cmqa3ok*v)aUT{Z2v8urIdGZ4ZUnXBsc+z}bVU0?!`l4`O;lZkj z)!)=VYME)7WtnZ6V>x9WEV9W>27$8PAXMr~%SwHhg?qj^n{JO7v>$4&HbxBEzhlr? zRnid<`dwL__?t80_>PYjf$o}E>_K5E(4)oa1v0kYGt|v+>q4iTFI$9XvZ5X3)W&Iz z(;FYO-`6;!@%~1lK`($m&IQL((H;lxn*`0lv0QjQMi2^R9D#xs0W^UkZlmkzayT^& zpl~K^C2+f89O;ajGix5PKWd+8pVhnz%V7tA4~4*0Gn;RWP!AzEKXDG+g&pGR&my7# zJZ3Kd$pUuDXeiH=Po^ewn_&;}@|w9AN6N$T325GmIrHY>_@w=3ykspZ^5;8mdfYy^ z=IWZEHKS|XHS_G_YPP0MteI3Zxn@euoEoBIQuE1DOC9)enNQ@0=M*Q@Cq-&>h{2_+;4rz`mpsy`y%^d`%8ABK`($mra&n-3K|0d zmH+neRlfb?Qg2>^rl|y<#uD%LFby(t1JJcCMq4+B{;#;FMmne4Uyp1Kb&<{Cn1U1X ze`j;ZDv~i>-eR<$GV!+;O+bz7XwETbSEp-7;X+%PH|_pWxQL>S6c3Al_O)kDe{k2F zRV7{DHE&OK;;(9HputZ|2vwWYrDGuNxi%4>Hd3dt>y%P^$Nso{oMF77YXec^XmI|@ zHUnt!9rHM82GEft8kBi;5ZaN$;<4pk0)+@fLMOVa5l%j6J_IFQW`EDV+`fX$4eb+F zZYZA-ais`lV+OiXL^O*Hc$tU>75IcXTsih0@de(v{2cS^G|J{|%YEXGycqqV{rT93 z^Vj+T?geC z-%8&`pJ~t=`xy+z&c21@$t~nZ+#=ZR$LhNSc6-n8O^Dn%9DKaJQ`W+)N5lso?`%;x z*W>ClnvXQPuj|21p!>NVtl&M#^jp{#kuUeOP@&eN=r+{fqin z^>OuY>fhCWsQ*;|rT(A#Z}kcFN%cSKQ)-|QXoQ+;4MPpr8HO3IH{4*j(QuRDX2UIp zTMf4v>WvLXv+;JraKjyj5r#VrBMqYrcNy+Bj5ahG#uzALqtRl_*A!?9HAR|YjY88` zqtujWRGLzaTBFfuH9E~^ZMmjGQ>m%aRBLK9dW}I-tEtl%H6~5Hra@!Y^pyHsJ;V8E z1;deF1TrQr>2;#U9llZWv#<6>J0jbbG*|=)+P` z0l^{_4u>k{kR5w9;NAWdU?XR>VdQW11e3H7$NpANY*BN&WdQvf3w~oDa$3pV8R+?& z)QF|Hi@uxwcM7WbhtLUi()Di*1Ur*!n@aINv7|tiH#vkthGtQeN8QK4|L+C>ZR9;U z>|DtCQ}Jiw4JE?ZFT`Jp4^;eEu}-{Ryg|HCyh*%S92I*K8lH9WTgA?t_3__`w~PDf zc8GV1#j#JO%}bk~_Eg%_Y0soxlyQY|W62t;fZ^9rVzuS0Xz?`MwDkod_WO1i|6XUlRYhXR`7)0rAN(5ea(8o z9De>|8dT#Jo%j^-)hkvBtr zzdSwv%fbib56T~sKP-Plo{`@-uaD|Z`ce5z`7HTt`5d_{zuF|Eel9#zn3+GS;5++W z1&0eakCI0Hx-X59$UPjtY_?kGC&P^7EI`v{D_W; z=oocG$3%3@hTO8Ot!3NFij?J96p}aGn4>Yr zVhlM0>IT*=qu-;K(<|un>wb+n9`jqw?=iJGS&h9L`!v#pf5d!Mk=>ZnnA@1w_yIk* z?o`aN>btC-x<+IgDKUkC-Z)@eL=Tq#+A*SY>7wlFU)c>;-#>AbnABz6=zaK4h5~)z zEqHX1p8Z3EI&Y|!LNr3pWb_F4i= zi;f>T{%Q$Vf%v;BgkF_L^r~cQvLOE&(Y2zXk*LytJmK$mOZy*p{bBjj@|UGM9eK4D zTcUxH^VK~58 zwG(yf3Cl@KTkA;u7jJNNesWwytA=vO*8~e*uv=n;f{GwPlOd^jkBkUHaDV0Bd{{RR z@%+RS5NOrJWg#G<0GzZp;;^XEP$^ESoKZQea=YapyCc=v49wb`*o^R9>&%zhDDx|o zyDhI)GI&p4>eU=GV3t*88COanMlP3l z6RZB4T2aV|nDCMxXwcx*D@d)7dZl|JR-W$0zU^2)rxzKFcw1fl(puNmD`KW2FD0}^ zvzUFF#SJyf&*Efo4*Zw(X=1@!*>7jRll^Y?vh4S=muIiY{w%u}!-s*VJTUMQCLS~; zaHZiOCjp3I?oJrZCka6;b3w&j3CZ3Pa3IG}!KHwLUi)SvY zxV$0*P@Ip48lYlo6lmm59bqr{hXNLoK;wiAU?sU^0GmI_?oVR;Ne+LK)1Tz>C!OI> zI@6!j&!2P_Nuoi2-#bKWK!dZr1PT!-a1Oo(6gU?rWPtPh*$(h>K};aqfnEZI2=U;2 zZ>Lr0eNZ~W;jN4~yb*^t;_!Bw!z*PHnItBeNnui%G$x(NU}Q`tBWJRh-b^1Ro5^8v znLH++DPRhjBBt%&bY0Jk_3_poMw$ugszJD}qQC{X#-qT6B;g{QkO40CsyDaC+z@ax zGz=+pT&cDd76sFnQ8FcriYaBTi#}DdFkh*1Ho6+;*6pVawp!b=ocD61=DcD;EK3KL zZ3|r}8eHOg1#ta99klhxL1+%S0FVe5&m^n{mEcjSMpgqs26ZwmvoNn(_e;Vjh0j`G zwq|S;?1tO{3jQVgCjh*68LuzjGPymLDIQ#kzfDRP4=(ePRt2P}8Y6$t z%bhxy7=C#-$VdR{8KR~dUW~1Q39}emOC4yiD+L)x^tX9hG`Pb1#LPX?5{;r+uAYb6L*YO)!a3}~Igo31 zoyIc|(TrO&?(t5R3mYp=AZ9Y9E-w1sIu9qJX$(6bev{+4Oo7*hXoSz|ca}qx=N)De z@=O)#qF2VPiW^b*bBU<(fx17^K9Bofe39O^2Q&k4_B|N`I+{NMKH-= z#|o`;9-dPW_{|fI@HbD~ImIv1qFJ=%E^x3SJ{@D-{O_I;lk!}oZR=z@*WUS0=4bZX zWpzb5@$HURPf*{ZJ`_DkJw-iLJxzUy<}tO{==rvYuF34T)l!%Bc@|Dv8t z$9`+1ZX4U^ZXCz{iixJ2ZsRxk2bYJ`x113onsNG;d#uD|3Op;K5k9LexEz5w5RGsS zTSMVMG{QNYorbM!U>S%;IERNrk%4H0b2u5wN)nB54n&Z)KC-coZ0sW&`%c~1_oBJ$ zik)#1*>$(}8Q?4-meYw!KVFR|O^lPyNJwr@>|i%sy}&Qozh;kN#xlQU|DOFvHa}Z* zl_y)&4YNh>^QMMEBFyDvrs1A$613x!%Z5~pXRfOlR&jmB4HeJRFVHX2i|Bc_`L?HQ zH&qZFq@bndL*PjmZz_Rp1JMZA%QUzKkHAvkTHo;++!(;~wxJ~9I+8GqBwSAtZommN zxY0W-8iWk|+B(rbOlGDq_cBwNY0Pw{NIIc}{eDmx`&$UKIO2Df+>81lK{ zg@RkX1PT!-aGOt~c?h@TgbXm;yHj#EZ*inVc8LqB;P$;gFo$`Jd7PQcJi#2+wl&j) z5YpMsDKPCJA_Yd^YfXbYy{`wo3~&d0E{6X$Cr6@9=X~ZVh5{q;ZiK($h*+VB74js5fR8-Sz0C|qOh5qZK`F;KU;0my+CvYpwl1^1XUnlU?D@6=+cNum_T}~!_5}>VEE}|)6$S3X z1zpSLP9P-=1DQ;CRg=r^%c~W)KyeYOm0kG%1|#mpGf7uIp6>8ATkGfcy^51EG5PP05} z8cjWA3LwE3{t}eHx^BTnUf>=171LO10=2@l3Xc2${kiE&)62{{(|YSh({9rq)7Nn1 z@0&;7XPQX;Vxqxa>1Z*U7X-c|=;Vy{Sy2z6$xCS7#|@44e17b@7TsPsbx zhYOArd;->hwO~Qa!Wet}WNJd~v4Sboans_4d#P8M*O(>Dfl`Qzaipt!CbjTEl$Ae9Ww6K4G?lPnpk{&zUcnFPU}BdS(N&k@}K{bUo+n@-!k7Z-!nfjdzpRAeufyn5-Nkv81^YJRp#ezJ_V-v6KOD= z{E+YS5}LotV|XHRigyKP7B_({QKMl!;1^Ucsy0SX(CpX!#2jRPW)3k#Cng)7Iy-8oMZ_u0dzcLoRO>fsT`u?i3Reu!!S^Rg^B-u3Cm72-2DYDn{mgFr^ zFH}#L-6xwN8?3ur^|NM?rMI16ECVgG1=WITVf9y)Tz48gfWJy2=uah4r947y<&{SGq+E8jP-K70NO_es5?p5zo z?^hpC|Jbc+qf(kijYUIitQwofu34 zXm@INX?JV)XisYY(Vo(_^`S!;@-cGPp%uR0RIkF1K? za!phkY)ZyFxOng&KbRo^jrx^%Vt+1AuQvf@U7@<9PE{ALPpm4fD^tHDRH*x^mFg0; zw(ijit$Jp~tcpr?mAYD8qt>hcWd33ZcDm zH>l0(E!A7ADRraTqJF$$Zp9N7Cm4s?sV=b*ol~HRZ@p6ncobi)ang7&6DLu+M`T!X zn-H90fFnRko4^qd9>zNh9VS5<-}4cGkE96Fn&%7&!J*_Rj32aKLaGps_ z(TAm?0)hcr&QiTvzaDG=zHVd<0>V%t529sL8JYzq*k*)ffBzJCyc+gufSmVHg|-rY zH4#vxuC(fr#)5i|ck z_223f>XYh!)Th)yBhUynEdxun3@dedpi(`<%)evr35Gr%JdRs}CA!to9?QaNHVH^} z++iMJKBBwRJkq>4(OeY3&ZGpgGpW$dJce^mgQjdQPNH;ka62dhpGeak85qY^9?K5LI=p+nV>UZ$cA3RMlo^#NcN93pc>#QYLdar7EH?8Z#|P|@3G&q3 zIIMB8<2S_$Bhf$zEljb42)tj+vs`Ttzz4f_*nR={U=>u^`0^k)x3-Jl@#hDm_(UA} z>TdcL{3FW5#4hh<@5O&Yk+4eGd86IO-x@(jf-2o1sM0gMEeakRbFK;njrPBHY^-r~ zfn(!9LSz6_GVA6fxg{`ubD)|4xZnpJ(8;~?~0Wd=|-o9zKhqboGN=KE$gEzOrveFU?TsJFDLpvwfh9^u0cnWv*(G}09Nz#1W z`xgSe!w|@cu7w`(JiK$A;}IC1LSGA;G{grNN!B;W%(C^`4cfKRW4Vnwnche?N8loX zn$h4H{4EnMKqTaHT@MPmL|lOGajw!cT!01#p-kMJe3S9tJ*xG;vDo0KWD&4JRN_SQ zU`qUtbS%ar0eW$sCB~9(`9xY^DYV>e3lL?Yp^cdqhecVej`wlcl^EVm{eL!_quf$q zA)1JwT{!_Ci85Lg;hsPuIQ&I$I{pbRLW702{Lkhhn~0$Z=+O!IXmV0AgsSrf$V6bc zBE9eq1%LjOC%)DX4n8RfoBvsmG?gUX205ZuB9GUT2(D91*X7aq^lggU6%Xhh(p{|Y z@3>ljwqvetzRpt3A8D0mq;nwKTXDAMI&Mz71t*;cNi+OO_xqC`@FzX!PdbXHf}Q6u zu@hktaV8 z&R7I4aa^q!5~%y7uzM}u{W3>Ml8R621@6@ic8r(KQ_NSqs#~Zq;D=BA`?i-mUe`Ti zf7ZUhzF09_|AKK!>_~m8o#+q?zYhO~`H2OI+;>8`*^HWJWed188~CzW;%fG)0BY?9 zu*B_c(&vlnDZBkD$JLJEad*U}G&coc6?(WKYa`6T+T5Iv<=6AL;WxwIhV@z3z@9W% z==HlO$N_M-2-rl{aIYi`b?`4G5X{26l7O?~La6tg)ja?19ztcO(cMC*G<{XD_iqQep^jLMnZRUaY zCt?Gb)7zjCS&N@A-401oe7}rHiT)(wXzF%Hj4YPlDjE!TTx`F?F~V_`{Z9BWHTXk; zOz3^M3czc!1MDLmqa4@T7bgOIN-)7B^R7Vq{JWu$#7Wm^$0?YP%yUcl1w5M^H`s5q z6Ah3Dh91CcN8Y^cW))EaPT;A{L<+Bg=iQ-HUbo})GKhCD;~Xf9IOH5+1Qm=AOr*@T zoN4l#J%p^AK$#|}Bbj&8nDo5&ZMu=|Hz+=lHY7dTd=AN;TjqoD(%V(TRd=XHsP0sa zRE<*IrE(~!>bq5=RZXf%jxnmSDz|E)YLaTQYKrP!)l}6q)pXT;s)tlpD6WJK)eyxs zihy3&WJg$D*cABL5MJ25{$AMBU|!fX*q!jgrU&xE?hDNen-QuP=HHM=EaD^E`X?3z ze%*elMFi&uKC|HvXx4xhyy)BF<^fUj?d_$}eZe9b%6dhy0gwj|8qlTg zrO}s3v|w@I_Ado)PlK1e`xLmZ27m&uc#i=Qb4YlVB)movmXL(kNx~Z>VJS{10dJ9n zw@Jb~B;j3>Fd9##dQ&!B)CW$Xd6fVxc=wFsS;qp$YsCv4&p9?L-jt1M`SD#XJuU&u z$l>233CnQ;4OVy;8^tET3-I|7RzUdQK6{GpEX{Pxa?EzjaXjXD+%ebjgyTuaJjZ;; zQ;w${&pTdlyy#fuSnPPo@v;Lk`Pj!Kqd7S})Xwo>CEtxg#mwKv;iUQg?8N$M^{+XI z22s#}dmi*j9h}MqX`n!!Yflt7Gu8V^Ln{2B`jLdQZ~`pto{HWX``*ye=Gi1+l9xas zrZkv=6I`ihq-MegtScA;mO8e^zv+0(aYyvqj&~gII+j7NYH}*iaTkCJ8@ynJi$Z|` zI02S}_YQ;xh9jR(5(aq*6l$SJ@0%V6|7ArHgB6aIj#ZBL9UnMKz=b$_Sg)6pN#I5+ zP+!*sF2UQ-;3Dq;h(8!D$;$9*0|1i1GYQWoEJ#?G@La<42`?nPn6M~eal%UpFDJZ` z@M^+q2}=@a@PYS3q!5P>Wve;0ffn8K<{YW-H-8(f+_B(2$8yJqj@6Dej*lE4JJvcr zaeV4n1;0MtBJ#hMHyociR#g%W(AVO5Fj}(4r;|dF+6I?_H&hgOx%QRXWaF0(Z2oRI z|0`uz$*z_SkzFIZRyI_2ootxwdf5%K8)Y}iZkF95yA|HV<;~ws&fo2wzq9#WG|%4+ zVnLnxQX6G{rE<4rN##<@ddCLGMhAln#RsDQ%CW36%eb;qo4%^D34Da>f<<`P90BuA zZJgFPz41Z&eT_33?{D1fSZ5&`#Q^^%6!@59?D@HjfI1LW`DA}QBFMP0Zkq#|H%=l%yE9H%s)8xI`%mNBsA~GLKE=wMHgod_$M^~=m?O# z{8QlU<%4jNME3H}j_XrD$Bn}h9Sy#~r$M9&OPW)K4>hL>k4-=9ID*N#$|LJhI2aK| zIp(0iM(#s~UoZSafv-ryCY-Qdwt>@HsDlXn>NxKB&5;2%<6@)Sjx8j~Z@!c+K=A5t zay))>NdW#AXi9&>DQ(4vI02`$4HvixY$pjjNWxB%u!|(@CJB3RLOl2ymxR)NDO<-U zNx|=qKOB_hPsd-5la7BJryRg3a0;CwXOvUyBr>!4Khs|v(az@N?a+Vr>stEROPm3J z_M{r&|Lpzvp$}r{86SWM_ciZi+MD&4W~@-?yCR4EVcDccK*jpufuu$cXq| z%3AswGM%2Ufd~ur=4sW?7y4U04GO)e6wNP?2H$z#CM1cNt5uo1AKF;oY zi#!qox{K~gF(4Y0do>KyFK9RSJxTb%OQ28-BG!`)m0fTkLLUqv9_h((<~sA71gk!v zt&AvW`mjAVSCNuUPC%)@UeNPqAhXsXzY3k};-{Wu{D-q%ArDfE|ue_@Pf3r6>l73yomq|&rwTLpt2_q36dGFM z&Ys$tj5G4w+0z8-u7%x`IIjd*N&(P0gC2~QIa@dwMGpfUjFvkqoIwsoD+5VXL}hu z7-4z+2xq|~p`EzNsi-2zLV$=F;3wY;b;B2WK_ZchnICa>{v*zg+3ADKiMTss`F3VW*#7EYE=30NAfV_-5|q{0 zvQyINv^WvWatQuSb}Rl(ORTcM&$#4};FY`)iB7<)At*GD%R_?X+MIT0=qSAfdV+D5 zA8s4RFc|JGLT-yn6el8Ez}gQHsIdzRPNWebiq>|{TbeUy$RLH&Nw5i=Qh_?-Su{@P z4)%@`>nHZ{F4`RPIr}{g_PF%O-eSHdhwc z5Z{nS`!SM14=+>(3(QXEA=xv4MGf@Ct*6J{$43+pfpas@at_GE+PUFdpC0>wubmr) z00(8B?YuB^KbwS%n89ZJ;^WRtSLPX+XJ$&{&L}&x?5s>wfc%`y{?79=&v9N%c9g<- z1nY2VCK31GuU??IN3gf&mlBf>NA*vM3H1KH)dQi&$zVS$rS}b<-e*6%@Au}hLbvdu z24aBhus{FVefP4g&Szz1Q}g*ny*=wSguW>W!7aTL_eM`-Hz5WqX?$C9-Mi?0ZwUlbk=L)F|~zmwvWkU)dZ( zndGqqVxau6CH80eCIq|XDYKT|<4e5vNObdmkNn2JCShavus^xrt>^X6RkqM60sB($ zrUaI{sh!sUv_aj=!+t;E52=p9HYVD3n*03P@{HpJKNX#)c_eXw<~!~8+KuH)8;HRQ z!=7JYwg(`@F>iC#UgmydEy36yrnNP5zp-|D?AP2qab$fs<3+&rg^Kkz)Y%5CKTjtu zemKpq=YYf8a&rm|;C6oP{EDY4p00SN;@OJ5Rr{)*t2o*~3{}vE*X+-f28X>)9<<~D z5SLpn@qW2nK&fM@3*6`&ShtLRk6uo%pwF-SHRgECZ!zK37a$>ah>2VPHC0C<1hxMJ zi2E8ty6v0r2h|~_c15>)H~v#vh-aGw$GHwq5fE%M!~W6l#T8Vk_bWO*?={YNr*Wil zl<_X(o3&f(?=}*{?T1|`^;S7=(g&sIkvAm-gBJZe`tfNs*U)IrK zJe9A#HV0c%HFf zbZcfBGGb z7qwHgcw^jn=LF}gWkQKa;x;bLKU36Cbe5>U=xkAxq}({J`fqcZE!{T0y8UkMe`ATj ztcPDFJrXnSYEbJvCuaN>o^4E=OHF7;jF5@W?xAf0A%&EHUvQ1wkBvdHwK-5I{R724 z`mut^&Rw$Ivek+;ijNd8h$3l;8_hUyPPnh{{GB56vJ$Y8V3z) z{gyf*PJ3dQg)a-8{1rBs0|0>G0?3c2X6w$@n6R3^fmmXaWQzW@j>VE z#ubgjtVI4do(TGolb=uSmk7#FRDC#<#L|bHttOT}3i&jF-*EXU@HDy zV)%;Zmlc&h?tG?VVXNspqE-O1&WU zqSOrSdA()YD@rr9Pdev0pQ>H~>w@-!9ohMzOosVRS1oTOkIT**$wOEvelM9FDG838 z1f=Rjb&@(+ouW=vr>WD`y|owS_t9pmv$an^D}43uoM2!1IOWs0x!c{<37Gr z6SOX`IJdIbaRcm-Qby;AW`X02Y zJjQJ>p(|Q5p({f%p=2W(oRQ`=p-8dP;D5OBQb|fB3iyCMb&mrZ)dVkfO7LCA1A+z=9AV2}Q)vM+|+ptTNdh z?gxEm52ey%YvIrCW9n(}x7XM;>tO?qaGK21!~T$22;uZ|C!wJFMif*;K}8f)2W9m4 zGzIm8z2$y)#+AURjhy*e^Gm!D$Qy*M1;zSQ*_@z9DrtL|I!KyAE zwEOBVwtre8F_jCwThg{9h6by=*s)XK(hu3UaZNXV8~%xi#N@8*hVRFJQiOLe?;+;* zSId6;0sEWwQ|7@Uo7`j&DC-SErLMHB^m*GPvw%{oa_rNpUoU&3Ye)hFc7`8g4Vx8yk#fV@FoFj)WL;m7B^s7ltHk4}M|~N~#J+jRZ=p zqQML4-01^_0x-|v$?Wkw1BrkM$2M+pdII@GLj>A@H=w}@JhVg9Ht2=bHrS4xr?2vy zr|*EL*F<%LosdLSH$Wt!y1`Bo@FS|ZNcUYS0Urw_@DE8i zg%b!n+$Um(lLh(Lbm6V=LFdoTL(WLHvqeK|tQwofu3`D7U$n`=T2BoTJ{(IUie4h;rb)>3eyvoCoM|T`Gyjc%5<%9 zlxUFQ>*Q~eZ*90hexZCu^{$%R>EZOnh9`3)nm3|(yOHMYDR-bFisj+zYYZbADos_U zYvk9;hsv*$A1E9q|FJNVEZp{F;jXw-WSFk%)Da+v5*`TR$F0|fJsAuF5j`Lv5G6ba z#HE&201$!82Y^U{DE!=(sBOrvcea(m?DzBSojb@V;|2N$721g>(LHC0a*18hE|rdG8V`asj0bn7@oq~Cz-@K>`A~2u z@Ie#?gN(-I?gXP$rvddbu2`2R8;WR(kb1}_P2hS6?ae#)u9RTx$yBQZFLRUs>s zWO8q66ng>yy85J)^C7Fv{s3SZy|2CKnlup1bI)o3$13{Hc~aE9S#`WE_D`ZhX} z<{e4%o+Fp#SDS>?&xMByGxJ9kbZm}9H^`80LojO(w)BSwwV2#SH)-(wkFNM3X45Qd$n9fxIwQpuR*CU*C_}l6Y)*GBJR_= zI-)s3p7tnYexoz-*lZwqh$cRHh+2s)t89J=M51FLmCbKXlvyN8IU+OV(e-%sM53Fg zlw+{Q6p;FY@bIOA&tZ`H4)`zol6|!uQTSF`ccSQI(LY6}ia@cTII%9N?ycI(%!~_l zLKx(1Cuy^{6|6A@5`9C$PJpmv=|SEvzxb%j6|nqh685eGbs)@O?;f(3jzdz`MIv24O4@=DYevjE{pwh3(-Uj%?9^~2FczHK9m&z;+`)GO|*P@_!c+5;h^7EKiGA->k3y8JoGDFd^~g(SKGpKRyq#o z`%>3su1zJIORg~cFt)F9`J*bDRfzIo%;VS^Np+F^2uEo!x z(c2mt?7aTE(9i3K1v{@t4={nzarmXST62Jd^BZx2QOkjeH{k-ip};o>J2<~3)PwU| zc?ah*_!aYZPSLy%Zi$R|D1XNhO|)6QU71eD^(sE;`(=HUCud;6DKV z{$e>oK6+K)qh4`90{?|SCJ*6dkPPBIggp3<5R7z<;;&a8g@|{$?t&WrC2m4_Zp7hk z*Ft=E*m}Y6(XMZcv-LUpT>Uw+B-^>N?fKH8l{McL@5mn@8z>tjJ6O6;Ix4+DPcY7c z8Ko5u>>!iyS+0a~xr z$_>CtIlJ#(mK7xo?KO;pufZZ@zbnsc81FK(6J=w$zKkNY_e(NNaP0!`_I+2lOh`18 zH1GHL4Ti9sSY7Lj3I|(%Zbq#vS=smIlfuyn1p7W=zt-7hdz%^2K#p5`8f1}#-Xx(9 zNysJ%IV2(1OMpKEl(UwH69|8@=Unab+|2K;+tMkndtFmq(_GVC_qk@cTDocwiP!$O zx{wbwKsaLx6vkm*o<`~K(k0lTT<%g}1{aFr;_E_C$ zs4v|BnA%D9Lj{KmjudQ`=5+pI=*^alGKCqVqJ5Bo5Ggr~O{Lv3zL*F<4>P z^9#)OKpf_`wwF)0v6f&g4_n@iwc1onHch*&@BE6VDxR)*rsCO(y;b|Fo~t<8Knzt7 zwzTtW{h2PrQ8o+PNq&NDX4tas#n-j8o#cu$-f0|Z9A&)A_-5_a`n!$9FnM9iNisal z*4Si!Z|&vbZ%y4;zOH_K{f2sCfbczhAFFtf@6Bh2dJ!g4m&bzwob-z{9u(rF`*iW3 zh$NYku)3yc;3?PBu4i1&y7Y>HF_Rrb6$2at9p^g+IWBNq=$L1mZ=9tVFP*KpTEWk> zUxhYytECIzj>3r7$X)2F!v_$7=Ui7Sh6L*VJnUYJcYncElBD93dVza&FS^D{=PBkZ zUezsBv{3A4k?VEcGxlfg3+#&(!}Tv1r^I@S{SaNy;h=xh;!H&*yO)K=2hNU8IbU`$ zOt4u3|BL-bWV~Ip4+C&z29CHxIISmk+7ufv7@Fq#)p5P&ya zvvCFz2t*i_xzttQ5a*3eKkPW-2=Kz+gp3G8*|%IR+~IlK747^@f$s1G5H~%TxbOOl zyNnc9+$`>U&Ef_Sbh*EvD@Z|6I)*eAwiYN`^C87r}1{x2ly%@ z;=sfY;g}`9*W`wu&1x67%S(rhAhVuwg~4}X@V={i!gqwe&kOBJ`5IT`?&mG$t=etc z?b;pMo!VX6-P%3cw%`41e~h3p#ixf4)HU~eqb2H0RGAjpDEKD{Jd^Nj!h(c_3C|@w zpYTG$iwTPo7AL%v@N&W{39lx+mars&&`9lz{qeDDymNx{)iR+(Byk&;=AS9*Cpt^i zUv#!8N>XkdSN*p+&6aK(UtJ`fP(462Q1n}2u{5VTNtdjvmk$y($Q9BA+vd1>ZG*P2 z^t0q%5{V>6vNmIQ!5sw!rq7cfNcb}Oio%oT>k4aBdes+&`w9rUYxRA1I6dZ@Z{bl>-uY4tYvK7#^svb`$c?qr{POmEXTUD8 zD;-Lw(xp5@d8Tqy*2PhmM3HP>^|3+a?ZfGAhEh!Pb@!bZa%_+v(_eYEGD(~)K1azP z8FjtN*EQKYa_}x!!!Gy2D)_j-6n~as5;_^h^NsI&vvaM))(T<{>MO$5K3U;{uWUqSnf+M*B z;BV}+Vscf_R$oC~NnJ(d#N@{0#r$4*wCY$@KhsOfezkK7t|}g68bS@DZZzF&x?DSh zzT4DfTFi_wePJDEnr^z!G{ZDpyT!HBHO=y-1MdCWoDgey>+8$w`q^*Ybf3BX6g2sCQ`qcnn0Ov-Qh}r z=nO36!B=EWpr7S08?c{c5!k zW6;!U>NG};NmH+B(3mxy4=EM#{s$Xls2}VKWnX0zy~3JAjkTUxS}V_@)OngbZQlOM z1C_lgU!_?#yzpOg=Ka-7AZMNimEL1_sI2{R`_LIhC?4ETE|lHZlDkFtaD^fHaILeY zK$Xv`qX~?cd8|5{u~Emfh3m4mWVszHnGIQAWo^t_#k|jaza7?$+7Jp4eRF#oT#vo57YjNu5w zoraNyQHHw=cN<08nv{N;DB;n5axrT1u0ZDaur3 znlfFPp{y~hRgBtNuf4*hg+Yswv^ZMUw23AU|m z&qHHM>>&i8&_rm+(jKEBeI*2LYzU+!k4Lr)5wOS}cwo>qwIrctrnc)%rhoqgAbe#L zXyZ@=y>8x#dEktCq7j}^PXoQr0e1U4!0L#4@9_HM5hu9oIl+z0U#`35qvcKVG4io; zw|ty@ynKTE9{EK1Pldfz2MZ_5r^xS>PnB00tBup-Y585Z=wDZLg9(&P-=&T@X6~91 zhq$>ag^OcTP(y(xV8EjdvslF01o+Sm01B5F^tJjry-{z{*XtYfX8o^>MQ_vF^^Cs1 z>TJ~?#eWw6T{THIO?IVbvTTa%wY(*H3)BnM(`EO`X2=HXE?1p!opdd-5R7G@WwxMN zP%W(fs*>ye82CSX&jH_5@&Bb6G;Qf_)3i`JXqvW3TU*+sP13yNwS7sGmjq;}s0fHm zMFEwm1qU1Tr?O;ffn#5YEgk%#$5 z_~*k#lG~C8#tw=-Sva+=03HV}7ZvCEF)R{+&_Cq0;`~Pft@i?tAlO-O(+z(XgjxCo zPlMoT(BLb4@H9AF_?Y@gp*}f~c^7AM1kiCW{8z;$i#w7%-qf#yx2F!KG<@U3lfXhUCvc6v}LH9eXmpPfx(^j zfCue+t{5>aRVv%{L27X)O`Q!ByfQ2hWoU&dA7eMhviKcu69U#ordT4tEIz9x545x7 z0HgaBhs=)v%!k-+hrglj6#?3U@6|u3M+!y>MhnIW#tKp`4}=a2trd(HOc1cgAY5Z~ zfMd+#j*(`;QpiSv_Lg)DN+H{T1hV*)Gb{m9$hsc68F(Tjz7~KW1HTqpncyw7Wq3Ka z{#$74Vc;0!391dImH5-okbvZx@+L9GKz^|~8TOs5C>mE9zO^db@=1g% zu`f26+h8)^QC9Gsf0`Q0F zoas-K((;vLyTqfg10WLQTP~Og<6ow~O&3l7nJ$@tnP(0$^UVUY&|GIiy8??Vp&iEf z%7ctA$oLw>_%0dGDgIQPS6op1rTAO%e~Nz;|0*sj{!?6103}Zuq6B1r^#Jui^&s_N z^$@jh?I|8PTs=blpgNFae+YT);#;q8$*<)xKoV4Q#hS@X@>M4DmI#cH{jcEZg5Ih} z_(dFR#3rOU`y{d$YR)FH^R4ngCree*0C$-Pq|6EhPZ#{Jpr^`iDzP|B^9mLf3}Z$S zK$h!lFiK=tOz)mXF^ou$H}w-APZvC_AE{pzrSJHI z=_h~He`+{85N;f_11-=VHkW-i^MKXjCtECS36R{@23H14Zfm#rO>XP3)S2A2Gem?X zx9wu7<1TQs#eEmR_U_IT=<1>XHH1im%^`v zzZCsiv|YGExKp@GxJUT4P!M*pLRgV$-X5_}XinV`aa6cpNEaLsek&A)Er?$jzbJlj z{EP8R;%`grt=W~+BQi4Upm29inXXACyRH>6A91VUdXvM=(Ib+&>cll+H7@lM))Xas z!J8B_VPeR513zqb#2ISZ)`JUc7|P)CHaO4F#hfkdqV@>Wl#l|^2jQE-AIdB=@r$1> zzYxDI{Qn|47WCBJu5(d~A&6&2sJ~+rlSq&mnScr?N%8HX-ikX!cZzz6-c0>HvoNe@ z+P^usD3gk%#V?e{l=jiZmi89)5j|PmSM(FvUsM!!TiV*xw^IA+GIDtZ#bGH~ckB8@ zzMa}v(NA$IzsgW->SUq}r}GDC?lqNC8;u_r2Z}D`yqqr2H5+OS^U8lF)m3Fx>r&UJ zM(WeDFoN{p+LD85u(%33^ln-cm-E$RVbgOd=$bmMYsL3`r}YZAZUp{iK5E!&c6~Qk zL-&{IZGZ*4vu&hknOs<~MkpfQ`*16hx{Bcv{xM*UxEQb!cK$J7jkp*Rfr)+P{l`Yd6}0oqM0vcjVB0GMC*dgI>@Yp%(?|K>o(-y#>Q44 zsml?m<*B0+fepV~S4P=A8ftj61b}8&Qv!ew>sCE%8OhNMZgOb`M?rm@m5Xn*B@sBd zpz)EFQJuL%)FfHhZTMh}WvpeK1=Hpx_*6a%q|JTAA9asH>M(t7Ew0ZMfbmX!u3rQb zAOcLI`o2O}AX!FtmM)5oTPHJ_L^n?5ytX8PQ;iEH@@ z^%y(m=+~N_wrncK8VI1>$o0S!XO2V087J~uAO_|7JE{o%{WY%@A2PmW+-cfnsw3U$ zvzB$m$(j#}UFlBUvJg``}A22tZ>AyjsKK0FQ?<4=ZXJ!WS017?Z1V|mHptniLs zS5=v-&9gM~^xtK*SEZ^ts5(octGY<`r$=`Dp!8VQf%LADZjv67<9R77E{#K7rG1pRG2EC@Jk}x}V zbu-(s=TLL07pQsEeCkww;|<6daaGM~(Y`#=NYJfL^^qmW?Va3yfhBlL4f6XSzuzw1 zA>Aq6CEYFEBmG)>?f5+=NU()Z*$F<1>7YLZ=gQ|A{)fF2&VdICY*kzWz;?^^Ul z4vYLl_muu=y?d)(>Bz6;mKB!bsxQga@qKG1=pWO&;vz7z^qx0zZOCySP!iWF1@F<` zgDI%(4QhLX+TNCRk7n3Z@E-kSgYMBJxP^NSy(8)l7~|$KHws|b+5w_A{WS{~&*ne$ z?R857L*HJvxI*7<^^EQeCnLaZo--N};dKIHUMn5c;&{ZO;OP@Qeely~P0-qSmGt&& z16IFbSk-euO^)9a$ampLur|!&3R(-9J_&kyjs?O6xSb1F*2WcwErhLMgBXwKh60-Z zRGnA75xzM=9`lanUCU=lxiJFmdluBC7&d3RL^xxgxlLUSv2u}#jVKp+vXBIKcqoN~ zp}E}21z^>TWsvl`>lrt+O!5ZHMhk{q+Q?GL2nCkLM(kPIIeJ$bo3I)ZcwdL}*d{?Q z&m^5M40}JZ9wdR@&qtPzoo}d<_YJiT@P<&+x!^93b-xx}RwN0t!5n93KI3R50EwzC z7BaUw_c`F&DkK|;d*L~t!ap_R)z{gox<|g!cn^YwcM!P9$Oizv(%P0^W#Dx zrHDf3KX-C2X33%eJ2{s-lh@rUS0=A7{e?Dt1tXKNR9)L)(k)IVE*{u{=izdJI9a${ zAWjZ07l@OA%LU@(-$EcPUMt=wUTddimu0tQkL7F2-ukj{?emS+`Ua2I;)DHxvTq&m zjn(?rU#!+aR;<>RHj%N+i*dc1Ep1}CfaqAPgu-&g5%&9VmrytgM~{kSGE|^#$phb6 zo)Ei|aKYD%Kpnxmk|z?LOvvlFS~f9ZcESqH(#n@BUzOcN7LmndC$fYrB_pa;q?#-v z%SjEXCEHeiSnyH7#|57hY%bVR5LtcLa?J9DWE;$%iBa`f!uK4i;Ap6@!w>L#eO%0; z>PO22@ndX|0Q_WGn!7yVgETeI^}RAaqF&xUM}Npq|HD^U2>3~Yq)W~f_LH6vSbf%(XT?s<5V!+FtaroJ zWp+K96(1f6zpFk@!oVQ_0YM07*XK0b@i9C5d;Oy!wIR1vU_+!f;TV~n{Ud{{A44y5 z+{v4d-oo$o7emIj#Rh2K6lx29bfO|aKkq(=FTxXAlmP#R{~t_6-tvQq0*8+_J$Mw? zAB0(hWwfrpGFn$Q`9b5W%ob$KXQn^ZAqnfS$sc??EFm!HPY^aPT@K9f* z$?(>PxIX;h!HmBsMS3K2%<*_cD7*=ch>wJ4}RZd}Qu*(k_Q5a)LF{DuI~Zf-i+N zr5x}!4j2~BX)z8^Uest6s=zzWF7VolmIc->vsQt3aS#Efz=M-D(i&LKtfLpu1|(Uf z)?{mnwY@df+JUnc%-W{GwRn@ekm**R5@zvMe_}gs;wxhk!7HID3Nw=hhn@UjjG610v7G z8MQ054uxGkAas{rEgqYq;&k8SlET!m`+eT-XtXlxVCHo&LZvsi<;<)V;+5ixw5N!t ziE^t+f;9|`N%`3-RSW8I%Is6}Xu z)&lOLC3+TZj{ZR0E>Wk%Z{wE5AB_7eV@>AT%wsowf76n(ndCgOZ4qgW(_x(>;kV1} zgN3y^1=b76P_IMm`7rX1>f09$JuYa-aIGl($pfNqINry_EM; z)}^dZ*^si7+?Xmut8NnKR7sAzG~ zi$zO{UMl*r(@&jVDLPYu4VKviiv6J-D0XdXh8aYG36Tfl7RN7(@056=sBKYH7HQS# zwvrV(z0Rnkb*$qHY;y4!8{Fgr-0CaWCbwJf5%+h37_{NQVMXY;$hMJg|1Q4?$7{>4 zPQvldR{u_C3{e&E8*|l#yV6c)hpLOKaAL5`-{GD;Hb;-v$DM2(Yt{zR%zm5$?(s_f z@B@XMpub0DkNzKsm^9vqU(^DCQUu2p#~0^>b+`7g{+{zk&bgdFbFfBY;M)X6Q?tHV zVA!EBs zb|l0Acd074O+&yYLmz)9Z(qoiwkNPQA`jec{W9SI7u3)CMZz{VC>(4yd~Voo*kjml zIBfXYaKdobaF6vL!$%1pvzx)H$i`IT<^)5fvGVV#|C#$+dB(QJ2dZL?661E`hulwq zZ8aQVtuozYEHc(JtlHS1VF%SUEFZr7!Em_nM9!^+5BgXki_h`H$nW)Cv-^D4Y^d*= z-E8b(>}l*}>}%|A9BdqF9B#bdI>spC?pSZB1av8&jel2xYMYT)eWd1r`Y?|7j}hHR z*_eh~V5ybQTH*_30>HT#+MgK*ZnxL4$dtT7BCh8qeXq8GwO$3Ef)Xk6cN6{mYBFy6PsPz)}b+B`Z)LMsB-&>6}K>G(haQi$nSB1LKmCXR5}HlOzW;T&AbtA zF`L%*MttL>+yP+B^sbj`(JjaimE*P3 zw9~aSv?KEO)_hwt)%d)2EU{SYhqjlsuRz+CX_sqPXjf`iX;-sodljcG2j0{J(X`Y< z(;Vxg#AC!p?IuXm)8sboSK3#p?b;ocyR?V2hqXr_O^2K`{iJ<@_+3kY!Q6FqC**+U z5wsq9DBWMl%3p&uFIXE=hKwPnqFM8U;8oG;BPJ2t$Mq2%ADIY-;-GuEN#;Yq0_#G5 z^2H)3Uku@PUTnpxYKDTz1zx|t7p*VLFvm2uFWVBUZ(Yp*zHGitF##p$z!G#|LAlR^ z0!mOoITe07T$mh6h?4gfjwP=|imLWN8s$FB3Ad86nK;rbR*jnCoA_pa4Ijus=&tYy z=Euyh7lwrLLu)l}rCa$l-^RD|9ehFPO`7o~|LEhZ5~?PY1XU(MmB}deX!RKNSoJvd zBWglp&=@tr^7do1#${bF{$*^AdO}x6Wzv+Sc^LDV+T_qXU-t8ax#9H}S`riTmoy1; z#1Hr5h##OH`wGsL7)lx_++n5Frylz%tDk!8tE~a*vA+uM)L6K~YgWJY*k8BSS&#h< zU*-RsxJy3Udbq~wmQ=BwQ{F^Pzwf>Y9$OKT&gw4eC`q&=MiMJon0B*zaoUS%OVVCS z>!$v>W<%k|LZMtFZ@tIXCF428pNjK}3yQxKe=Gh^@sHwP#YM$`ic1QhY{>Ic;isUKF4RQn!YA!P9Qx-pI~ zOp9~n%gNWLI>89K(&gmqBgY-5DsXAJLOF4&r53-Dsqexg0gFt1&x%E+hJg32<#=qW z8_0=Hbptu^scs-ALe&lA#HhM}^+u_#v#z&pux_+|VBKV0s9B_$C7TdATXwh1j|Klj zI6bVU;78W-Xw2>5W9!|re*U_D0=r`s1vmTCW^I9f6ANXFWUm+0qs{uX;o2$mJ^t1)y`T&Jw4VFgB8O9IrElDZ^#bDSidES)0lq$$x%mByz}lTMe;OPil|-Z(@0 zlr$mztIVgR&q)6#eOCIMG%-CptzGWJm4l_3IbGAz$V1VSmcsBMnvl9u1)U#V*c7@U&94 zd_TqMRN(V!26c6lZ3R!P;E9!+oR_RfRwm~sKU`6eyt6}L^1i}v3OmZ1!B2>~$_!~D zHHn%`O`)bz)2OTEE7Y)4tF>IEuM~6gtq9o=SLz^p3bLmw$e#XpjV{zJmreP*TrUKh z!rb2I&_BeLGD8ZJ?CpjBCw6&^q(HUyvh3yAE3#K+ugYGXy(?*V(w?NRllCU9Ra{cd z3Yi_Eiven$`asgRNe7b-CH-jStDoo?sYPgNU=$&PrX6S;lH*B2wF?me?so@np`b(n z2=D+GFdyatybC^n(TJ!;B=}zagLhd|Cv-*l~t`vU7s4MPs_rH(KXse)_kP6 zU09gydo3!YHs^cy_4dFfcr`1eUfGGE>|zVx-bU=a7Jy8+qw7ms){uH72<X_q-b@g_sJ;{+lyWizAjuLlp2&(JBmJQyR&Fl(edij z;xpp2Vs&cQ@_WtQ%GZ(W$qi(4-d?Z?-3}A=ts(t;5;tTbjq@dL&WZS`bo4?BJHVqB z-55TJjHc&;vD{lv42@+NjtG!pIF`m-<&8e?|7!T}$I%VQF^t~fwIIfQt7pEDfj%qL z+P;v$f(tXney#SK@txW@r~_gpx@BvuyiWF5Ba|7~`;Y*SaP>$8c+>-M@=#31Zc0>M zKfv%?`$G} zMR5)nKA^HpS!JH2(2R!UdiA|MTiuIaCDp2Va-BLvUXWLqcdq71P9^VYC9TC>Ah3p{ z;hs!E9@P*nNic3pNQj6w#MRQ2i~|!qw^exc0syPl5LIWjhAg^{dJQt#Rj;8QjNC#D zJ{VCdeL2KLfXBFmV%KUUnl?6NX4-7(~!AgL)P?`(YRG>(yEJdOF^k z#~aSy0T=X#^ECtnkGQLQ#F5}kET-jt!pjlSnKzHg29C54wa8~`Smcnbd7<+|7lekU zsMB%^UNH)4gf*g?BD$Ey8n*?3nkEmIbRb1Wo4>OcY>g-o-G@dl&jLTeoU`698>Nb$hD4qkZT0 zUE1H;{DJRgf|3Cn^!>c^s#4R3xLP5CailJUp14pQ!6AC4qs*T!`F&mCtbm61LNG_~Z-YEU zqY@fe3gI@eW}qO+okIAuiDQy-al(;s|65zg3PpKs@wY9L*h$4OL}5mDzSX%gI>z-(OC0Eu9xw+*6dd?X2GapeI_S7N>a;s{%& z-ef%8v>ehw%}I_jSDB|&D3!{5Wr6bR{F{_T%3@_FWr?y>sZy$yWy>xlL_== zbeue1o*++@mujW*_snYTNb)@OI6aY0mZ!+ev;yLQj-tNRoin%0#2l08$@CPu!i2G? zXK$cb!iKOa+^y2RYy_CiJuI`9RaqoQRfabvz+CQNZdc7+F5lDMtgFc7 zxNHXUJ$;tGdfunZlI z;;KB7)wL(h?PkjCoI%&Y$KdOYiB0mJR{VMRPL2c%xR?Kjpjemy#XFba3yreFA`Ru= znC8>yL5%kSAGp8~U?KPOdb8kUf=4(;QlbES78z%ZH!fm}#bA?5G+hiu(}ixa7`5hs z7wLLz^Zl(nV_V|`Rk6k;^me0vIs|x;3vhqvA{REwhYPKwSJ6%7MD9pj|K|F}@F9l0 zYK#wETjB`tigz*Ls{lD5f-iu-o%^8^L#4HA@e1R`RHMQK`vKEAb*XY;jH|RI%HS}8gE&6TFw?Mcg_;=v9aC<06{C^jM ze)IZ**TRvH7QB?S)ceVyuJ6(B(@P+wo~}r-?G1Mw2lfias*XvP=dQ@zC0d6!6+?>> z-XsF7_6~vO`+Fp&?+k-x0;KQUSeK!It$Fe+s1L6egz{jF1C2qjtPRJe<1HSK5dEn-uX-bVbAmkP9m~6x&ysRu1X`gMbt#5p zqFY-nfNlW3OdbPcZ7J8A!sZ^(G+74kiIf3E)F%3rSQCT~ld zx4d^;xb$F4o40YmJ2>E79Pl0vcpnF>!vX7Yzy=(!5eIyL12*A+4{^XpIN)O(@Cgps zj03jdfKPG2Rvhpd4)`1ge1QYD;eao3z*jh6I}X^v1*}P0n{*VuQbtm02lmik(|hTC z^f&Z=`T+eceULsxAEuAcN9phAWAyj*5A=`pPxR09FZ8eUZ}f5c1bvb|MW3eEB*lYf zL4-`6KX@q$0nxE%IRX>>`jN@=cWCn5>5)?)kO%&t-((3w5C@XU&(P^@n=p3W)@W>i%m!0dH(E?& zp@Skz$(q8oh1Vj6EGV+H4w2<~Y9_1!Hmg-s0lR(-##^BNbvKvaPk=XAq%jk~!=M&` zau(0sp1e1?*7O0jGkJINuH;SBhtx;Z$JCV2i}WYdhl0)27V1-KEA<(*AAC-IL2aYH zq`soIQ#+`g)Glf_wTJqe+Dq-D4p8Gw-%uxO_EXbMl zMEy)*L?9F&pR(@7NR$J&i!Gf!$mbb8zrYeSXQI@-K~5j!^evXt&kSlf zF;0)zRv=!F#ipX%Sj`okx|G6@XEj^k>r(1FXl!IzeuXRv3wy+avedD_t+7X__4nM? z{)-M^jkrYzerN~=tPvLjb_P3wXK?Tg=A_RLp24l<3~oaPN~3@Eor%|d*-%PW zzX;3_0hW}t#^xsg+G49G0Gb_IZMFI4V0DF7V{_*wqYXTFKYPIDJ99feb3Sl5XYQwa zXWw~u@i*_A>zg+U{O;;AUs$aR3LmWK4onC`83UV7!s~9s(94=p#_JAO>R0ZU^=5%P zQ6%HJ8OP#(?3aJ5ZG>vMW>VNlmFx9m-NLc8b2lFce&ep*IB=W`Ai)W)RV*xu!#D)s zSj_FVJ8XCQV;{ZXjKpk@WgfW8HV&NR4lxd#;sP*X@aCW}cmoK7y=~K~*HnK|xV^BC zt*`4FjwXfF7?R9;27DItxpceq+E|^|TFRu!gutRm zQ>Nvoxn1rs<~1v5cM4#4YS8la2=e|Q?+^0+(uNh`T+<>Qts8%>ZN1zdD=LNZR5V{v zsSTEm7Hoi&CKQ%JXh?9@qpv^;V^40qB=|S{{~+IWd+}b+-d)$TGNJja8w|1S%l{_d z-<>V3KGv$>~r@0I_VC?T#pn zvdm_p%nw~7eCc`+r;887vWIMWZAkEDBFbgx%x4IH!;rq;J;DHi09cy7WR^9x?o59p zZKG_iLUum6{t}>VwXR%$?51AHpssGjB>2O#m}o8G>Yn2Q-0`h# z;KNz~ZicgK?wkz%B3vJ_J!(6hKS*=0sgxS5Nv7Q;4H_Gk%aGmWs)XfUF3|+|(_>pg zFXP6Mb0^q-uKuO^?dp3gKCB6pmYEy+6_j-QOIu^yYVfXe zSDsF^wKIoVi9AEzkBXlZKP!Gw{Hpj(aa?giaZ+(gaawUkaaQrW;t$0o<2l8jit~yK zioXZWJ> z4IU~t&Y?npzqprVHj5+tu(;;34o$Z03ZGzp%=~&`NGLzFR`XW6l~40+d^_L47lhuV z8DH{`KE5iUYC_3GY7#Y>nnF#brcoUuA1mp~@5cW#Gb=K+B)TA`Kqu|NuaL?j+g5!Y zuFJ2;&yM^ercG#Qs5o?M;)sj~GcvT>VxDgMRZQ>9i~50?rMaryFEfA2Jl^T3@rjb7 zy625EjkAoijei)=8P8M)ncPWpVwI$-kGe?vY2oEFxhb|Aoy85aT<`XwmaZYhZq0L= z?beJK*c0X`OSI+sU}J&r%`?H@NhpSkQ5uE-GPb*9Wdi3i9RW32Qw&oL(+tm4Pq$4s z%rHD<_}aAHD5SB5;lO`068xX%YE8hwz%H=>+yQ_4gms|8Myo?UFFTS*B_2)uE^%1q zYUR_mSCz-}evbSn19dC$c8hY>K?>Y_9Qen5{<)?%4*bgnJRy#EN)3<>UM&DJ@UG;E zgeMd7I8^*isN#eb{o$@`YrZ1XXikL=uEN1U#1TJUdLp1+0ynX`2fk7qeROz%1JY z@ndX|0L->6&0U`GK^hj?(vXOlIks(P0$g-Y9WEgJhkZNECEYab=zqZ$Jp5aegcCgc zgNJ_$a}Al>A`btS$;bj9|0MX2dop7=5c;xAbeEG0;eB#S#P*_Bgs%%%2&D#P)sCXi z+U_jcRrD-w<-19`!^k?danhxnZMPw`vS+tfSMd2v~4 zvLVIL&al8nW?m5QE^2Q`HFPkf89pL=m0uE{Eg4<;Y1N|2yUIVVUKaLj`qnCTHUw;1 zy`Wj}a;DRqsU4a!9W3j?kn7|v`Q|^sCOV*%zc=3rl3-UG%xHg!`$b|GwOgA>4IR9w z-3Y4a;6*KXQ44fYTVi|3CQJ?`M9F&#$CAyHE6TrdP8uQrTcFG-hCj6cAitw!*~_z6 zWUtI#mAyK9SJLjJJxO0D?M+&%xTKmDGCM>U1JpeAfuwJf4kjH+`q9c)M`}p`q#RC( z)j30nLF%q^_KK~T#yZ8+Q|SzK!5DB*QoerOOHP=BN^-TbOj)kfD78wRvO=j>KB6I% z2BlF+Dl3&$%4#L0G%3wWX#t**!G9PC zIz%{)N&XrRis4|6_b6L%%x~nrnfs*jNWl*UpXBbTTy4WTM*EC_cUTPgQdC69X{}0w z7Na$ywW9tZ1458-h_RKyJaE~e+JwCM*$c84W-rQq({@aMq?iEGIDxw-ykbLhlZ$Ak zS00P#e!wgdcPuaY+;TW8yyMqZRpx5*EX_Rq*qZOM+N)Ak9aNnq(N$d}`_m&keo%TW z>p*%}NjFIk$??3OB1a|6&R%1CG-R!5)4o#uD@NEw|0tlp@H-ugg308_Y z@(c-t-YxBFu|(o-K_CDDL|h#1gIoe1)&g*4@`hh~-<|gx;PcKS8dsrdoo&6XHM%Fd z)5HZ+#MLK|1d8fziA4(=@0932k5W?)?$hC3P0*DoTDZZs(YD2-OJNw+m95^<8X1@W z${nu7BS0H2`}fJl%1!qAp{*qCoON!=3nlYP=9d(wcS?Vp+)`;U8_mDftgBjIb=rK! zeAaBL9$=bcPOq9yXH>1LUSGYTI@R34oMy(5bIW;L9%=%FawozQ@kFdU4%GgMY+Ae4 zobS+f)^^d}tnI4prd^criOnLOXlfc?<-qGopy@32 zOlPa@QQ|RTqjnRV&eP;J?N{1YsqNYwmAkZuw1>4v;B*c-r}LBcGu!Xl0V3DRiCni0 zBWvXX-RIo*xVrC@Co@WE6@5D6Gq4$K1xv**i>o6h5|5Rg&6q@-)2@Q|%-5+ms5hx! z@@iC%mpxJTWSN>SqswUxz1D^irE0=8?Q(`Ez{*(8wT=K{&)z2BLOFfi?t;IWo4D6u z%b%~?m$t8LUSBu0x0`=oH*a&dfxBCG=S{G;=iOYMp}RTl_6@VzXZw_6V5W3O3$pz- zb}DW&HZzq$*TLKIHDzOyyr&hvFW<=>hT`?D@N-1+SS%gQ7obev`L( zIOIxPErhEX0m3}Y0=D*gWit1p&dp@(--iWcw8ooJ{qbf&k*+00n&m2+Kh`WL(lsqH z?o|}&nlD8cVp_gI7_E_Y)g{z@#9XSGgC*2+u*}hqro(ObR{O|d4HNR3AmVl8RPzWV z;xz;@b{lPp<-r>2b{X(K+LFqHHGVS1Tyu&4czLW5H(nmQ?zO}MV~t-H--{nM&6ZSP ztU0Dff^d(~!FdDyG~OlTGqx43wX0Y70^LI0BHd!$i@GJcmvl>YFY8{>eQ#T?TdiYb zA`mJJlS_j2kKsq#YF!Q!bjA$Ky?sMH2x^2uW#hSZudYd7fi6BDCQpEAV_(;qw)g>s!Fv;E=Tg~ossc#bg#QX7yO-649d z>gU{y=*;Lp*pa+o6KeHI80l};px;?5l7-(9au{{4Tpe{3i*NYJ^!n--*T&ILgp?k{P4 z(7oV4=_RR<5D{$%Uh?tq6XB=AuaSE}^CbjniMpt!GqAe!QNJHsy~^bK{g2H3x)4pN7x!_*P# zDD@q6jQXDXf%=j9iTarm*f280@TkRyKgCE^j2f@`ToU)i?Ye2ZZijBC?yU-JkfyjK zveDhnyMxE%enDira=&CH$=nHHyuhCDy7DG$!pu(Mc@HzQgm#hrE7^9LF!O(^X}mqM zXL!%4X7Uco=JDq9Rwe8&K2ZE^G3q|W+dU4->J90Zz!!i!z1`Ykqq0XpO-sE^#moro zCMwwE8`y-o&ZS`3+;gZ7t(KeQW_gX=BDcy%CHEBEF2K>e?nNWP=2BmGJ)~l)w|jyQ z6=)spa)&%x7$fW~XOE1!_Vsp+@r)d}%iXZcWcbpUIT!kj=6Y{EL%&pirQWXIq28(9 zrS2!cN8VpPKt51DNIqCTM1Fhd9ijKjACM1|_X@o$bhmoAe1!Z#`5rY|ncks&LfJH; z0egD~RCs7??tusp!@b0g1F;?e0apq7*On)s{fd4F_ybl7T+AdK{#^?|rDrkRE)sQ> zu8*+`!Y)<_D>BV@(c2^T3C*cHB90383+aLb!f%Dbum$l8;}^v*j(;(JN&Ibzy*0aX zdPGKM9Te`)Dbw9ib7#$-oUe0w>$jShTVn0SRdMv{_`Wr9_H;vrA=7{nMtBV8*NPw# zeC}B~v~qAQRuei#MX8&i#&6AYEc%D=0U z?ES4gV_V|`Rk6k;^mbzw{UJBol$iBir1mP)O~xW)Js1bojgb!*GzDTJK)h#*IH!db z-9p9E8&lP*y?vr&lH`rFH`A6XURF$#Oqa}%^eVV3_ura}H9R_mCO{566np{i-N^$KNbJn0_*`h;xhgIra#U=w39$LUt!8#Qm%6tGv!O;jO7^0Cu-5-~a_Q8(FV zGf0>@wgLPkK~j-D!z4_5G~u+rxfMe+4~4NlX&&fgufsN3Vn?<~Y%Rrp*3!>XsNh)G zI;!n{=3Q3Tyvu#(t-wSKP)}mlv3_{k|ba{l5RmANiYCI z+ev$mlv`{ds3W-%bR-75fHQ1U@ZXX9`uO( zlKQ_`BS8|EV*Pu9kak0Z;s};f7675P;uSBX#2yWku4_bK-foL|~63W}>Y#Cth6> z%#eO4;YcEzO`8}+FeA{gy(HI~ZnbYJ#u^CVwcYiA0GV#Sjrbq{m@-$(5*l%(?v>Oj z-)^so`wXCZKg^uO;4Ra>h__Aem>v|pYkJT0zGBTN>9+|sIfjr_t^W}2iOPN2iXVPy`k}~NiM_KSo4*DyHRY{uYv-vKvoNnRaDAi z94Pdh7U-0OQr}JZG4&jymS;@fY&CL>>OT8WdxbDgx$R*n5uxc2T!&e_+)#~{!qo{ z8vo_n18Et9XWLAQq-IfLq+_Myq>o4+mDWnfOD9MllRhqeLi$@~O78K@iPA~Z$opCC2XZqRnF&Ses#$}w&l%^-Ar=)Ms+>tppYh2a^ z<6p+cr+T@5&NhaT1<$sEyu!S5HBaifS*rs3Wfe2N3ynIWuug%Fs2tGAdqg6E3ajeG zDgWdw{xsTNU->6av!T)VN3+gAKB%J0EmnGH^bG&tr~HGT_78r>Kln_dpCPr;9NTXk zSX}dBjY`%{Jkc~jHqQQt{ZV_ZeY|~weW7NNW|nM19#d(i0*V$`;99FL=@Vvdmop zict!%uPc-7fvn!x%wrogb3gN*>O1dg_`LaGx^v!sy3g>P^;7<4{d9e^hG`J>&-l!? zPJ?v}G+1Ldsyl)=s^E=^E)Hr7e6o38-)Ek)}+`Pn$$frl-&- z9~@?kv0edN(Hv?n^#V1InonJhVFn}A((G2F<{{H9&@*}Aym`8iV2`u_?QN+xUp;{P zlGVs=*g@E~FxL<=l8TA*xDxDQ-dB6t)vheOeoJc=-877V-cC*C8b7FfV%JM17C z+~cs*!{xAZH_J?YIh6~WGofQc^N%dCykLLHC#@qhvAdukcR3TfHl-NZ6LLGAFcZ4> zx_MK9T~C;)4s7-B&UcEKvPuY*RTVb9&5y#0`-r2o;y&UiuDFjl$}8?8jslDQ2vg;7 zl~{}Hi|sGkm)KvjFRfpR^|G%r=M`L;BLK?+E3uaQs&iKOQ|GL#Po2Y7Vy*H~>x@)A zM5E9RZ01}gR-l>t(L%lIJMY)Rfs|Np_|E!Gf3sdw->i`mYpu_0*^z9{qre>> z#<=HJ`7oHP6DRhzeT5}Z=o&+s!NU-)9ZA?_q*qX~3QAT%v#H;beL>0U9$QP7t+3z; zIb{CL8Jp4Fh7FM2tkD_WZ5g1%*DD9BjKz+E=cdWVD`c&=V_i`ce0^Q86XCAli4Z&y zf+xZaej>0-A9CG9TmG5g_5fgF#M!0_w(xYTjT`xnbwmCjZ0W<@9AlSv2ifHf!!CQ< z+!^5d*!tSoCFX(#ipCo#)>y8OTySh_d242y1Ss`7y46C}%2p-`IumY*vT&}63{|}q z`F3RggaHWy69y#=P8gDKZ^C^ELlf>#I3)Q|w~Shzwj!-l{tTnKoc$05uLM!vW=700A^yz+#~FEhC!)blg@spn?k+3*F$qg(NV3WjP)-6S`rq zOj(s8CTHry$Sw9y?OW}i*)Qrow|`;ZX8+RukM3XHBrqAK`1(&b4NM0!z=p_hRfMXo zYEIghqVn8Gl_qyY!h;D9C7>Z*^A6F`d3krCj<_tu1kiIQ<4)}p1xKrOg|xd;`)E}< zRfS5g`hzm6s#FABt)f)+Tu1JOtiQ7U>GY&zs-%yyzQjH|>==3}s2e#b;gy7x>@N1^ z2HIgK0pSVFgG2(*k;idP>;ADrIe#Rp>90efDXao}l4qchN-hqB?o zeP?iP0M%&d20@5cq?7f=ab+=K7|b0737(`ROlhozEkip zZzQi)HC}}}(cVsxa5{k-6JRt99CZ;#z~6vo_DUrDyB2^Ba1}q2J+69`H_?1ha!B%t zY_n{OYVB{PhZRCMKJ)fClK)il*R`gis3=|845)$dng=u*Mu zAR~au%M2iKaATP9T`&XG_<}6HAS({~3GRaXAx?%%vbT>*4}rGKar+7TN&6}LX}i1X zxLk-jn!Fvo)xZOFAi-cB+6>MO0e{2yPJ7-vQ40Ymui_f`o1rC%wUzzlSNz@nhut?Z zBP$zWJlq2f>xdOkXD5WLYZU_2UPlQb8`A9*T*4LJ`8HV|2Y z*ohNs_RI!R$D66&FV-E~E@0E~o7 zhxTGE0KN)4|C{)^s4aZd)#2^xRoDgYLVzk5@8BHGwfSdyk4BUiMFhUp?2g(Hbu@Rm z3OHED2yYYm7-}PVjtKBPk6A8Pa+MIrpD>?00>Q7vh2(Wrok#=_$vJoGb{7(%gPkQF zQV2jYuz5d91VCxyQ3@F5qYUMwjc?-!Wz*|U;wFYeVTt3z96pKT!yWIdBEWonUJ+mc z4r)YtdA>vBaHW@zaBNVubwoN`S>k<`{Li|VJlc23V;mSA{xSi_dd5dN>LZxZbAa8+ zc%84m7OrM8Pzccfz#rF^sEjHXasYymH=|$ju6sMsHZL+SDla-OCNDNGE-yYWIU*&Z zT}1nc)QAodX%XoW84;Ng9V41V^GHHzF^hf5?Ckv`?7R6dGx>L$wme z{OkqU3$sye;bZzE#URA>IWmnDEY^E@wQy%=$2*c7kA|$Z)rQ;#E8qH|CcHjs(%_dJ zh>F`JJtc=DZ zdw3wj@eX8+3_n6VRS4I3QDMitOvjQ!?2!PtACRCkm)nq_s|SFng_neG9sq#=H*+J9 z`7i=G+adSIg>oR3UAQsGxeiPlcw?EU%2f2ZF6LUQ68LrEeq9`^zi7auK2)23?)zJb3s z{ZgAPF`veisCR}R&pwfTGW%5a>FhJvXS09L{v-Qb_Mh43voBMhnIWezA@fq*{s{4}=a29WR(5_|@9UQQ|0ds5mqeE+In=X`bh$8R08)5a15( zc+c}^I@>^b2FVaG%ZH=f@uXm)U{vT7!BoLCfyR+x?NW0>Jq4!DXBGfm2fTSJ=jf%D zGD7Q6TDKW7Y*7KRowlB_p0#2)h46M(MpQU4k>F15JpuCrX_})6;V@MXFikP1S52og zs@7Gnuij9dYVKf8Gy9|gZHl8wUFb8R$XEs6D0A8Lt{)PR!-XlrcEUD7)Tq6;kt^?~ z`yuD*2VVia`fU<=u70&38oVOEIj(D5x47qVOyDcs;|K=1)e($_0#{%;@^Wu_? zLYGdBp@9#tbk&ZUGC@d$s98i4K}dGHm{ol7k#x4!_gzveCpC!tR)*bvVSLR|DY`i{1+KXl2Yw_Ha=1FPfjXAg_z#)si{d z*GlGUUoUw<`$ow;?VBYpi=!Vgh`3ifR7*Q%kYlvt zw5zB`v|m<^*G|(;*Ur$|9D8fNt(j_kUfbEx)!)l}S^Elnnai}xwJWqMwX3wNIWO~7 zZGiRsxz6?c1+FKyGEttD`AvIVdqR6s>spUf+SA%I+Ot}06>^}=8ff-QJ+trbc$9dI z*r?qEXa6+0P5YJhRcgC-N98WN z*%MJ0#AO(w+6KgLPo!bf2fR(|rvDjUT>MO4SbNmT?Cs>Aes|+;u<=9Q#$5F_zCvv? zrSYzg?cz~Ko42D&y|K7h?!~Ey;9McXdKkV>h0oxrCd!}yc`)-5HDXJ!|?Lx zS^#-@q#{ZYt%y;?D&iFJiUdVU{;lcl@{<((950$Tn!hN?0T-OKK|bZekOTh00e|Cw z|HA?Q;DCQ|z(pMJ9}c*L0|36z(BCn@ zG0-u{G1xK0aj)Y($56-pjt3mW9K#(W91l7ka*&|6`-b77^G&EpK^7-?=pX_n3#qLeD>W_aQMuR%A za7XxM1gPOHjlqmaLLKVGj2hkw8xHnPkNZ(7GsDVV3^FvnAhR$tJrfawx{%&3t`+g$ zGy}xI3$SzNqWgeL_+qKccmx90Mm`B&e;=DVfA@L~<76h* z`olQgQC3WOFp|YyT=A(_C#1<$9xPySFg;{s*ODA8nMY^1O3j_2zIoDl#M$C)3ARL= z1W%OWXrcK>yafN&@DiMXtaliSh8y18!OYBOeIo=jGgG}DgP9M}Z11F_X{c`H_w)Ez z!Mlb4oQgXgcP8#^+$-D~gx*r4u59;@8upqOI$R}3u%@UOEJ}#aZV~~$a#v(S9tk`k zkBR{IaPJxND4rz5Q|17+5`nJOW2|GX{i|PeEP+hQr8s34KLl1Xdx?F6aa$Ib!W#@$ zx9w%er9_S@kzFm}6~~b3d#kYqs6Zlmuq27ok1PBIe)H>StYdw?P3!3XP%dX=82D!4 z3Jr@yAlKi{U&xZ#Ck{;?{-9q7FwiYfpbH!TgQSDq%6!zqb)Osn@v!tkUOnI({gKS0 znXfutbG+`r8X>c__u)8D<8ePBY9Znaaq(_TEw8o~5`IhRt);h>u5qx6|DgvVpr&*! z`z^VE-J{-e%mwG;7^)DE2i|s^fZrF3Q0{71Q13YIE*(%hwzRf%VfFaZeQ{5eK3O`k zbW-V@QmmtEwd?922x%Akl5>Fo+BZ#ijo6V81C~KVXtit6f^Ras&z`S)SFVG*ayz>Q zC=aZ6e3`JH3)@n;&95(!HIAPf6xX1dBp`P-eA2=FZP;`^S zRZz5^fz`$a4g68v1EbICV>n=VBIjG?gZCX1A`j%S1RwXhZT4NaExzmasqeboZ0up| zY3ya}YwT|vY#eIb>bT!J#wg$03KWpX@X*3gkK2(5@sH>LsTZ;urznQ&wYPaV9NJ&AQLq_OWidO~s~p3dgEp5$s4-FpF^$7~aH2*exZguK zY>O850WJVDoA*_f&4-IZ^Fy+ z*4ftEvb00^eEF)(d$I)b`}jlor_=A}pGhCax2jbdTCLXD)MXmGx?JN>Ycvs(&gw4e zC`mN5)5J;^rroSwoc3bclC+o7x~YGz*-*H#a6B!Pi{#~b`uu;57mYt>p3l6Hc}jO$ zC)3V1E-=cqv6k-Y9Br<4QqAO=DK%4TrqxWZnNibUGo2d6@1Z^tb2R2h#{(6&NN<(S zC^=X_EZR=^hjgoiKWNIb&cpDi>Z7p~fn2V_!Ck8nuOu5MyRe zAGQ^M%g5!yZ$h6{yE-7|%yd9j0RIh(Am-uT;k{Adc!zI7aLGkAF#ox>>y4 zqI~dko0E`w=0fL;Mgb)3KhsMed)P}Nxv;Ceo4mVxL{ty?9r8QnE+79>j-w9L?LKce zG;CeX2{6oUx^-&d!EpWvKC&92E0FWoz4H6yL*-{3!}+5EJs2J6!6ShlJR0aht^Wsi z!&xnc%fp+0R^-lFJbwBw%^8WGx@`3U}^1<>U^4ml22>sph zhvS^1SLj`#yVZX>&O0tR_NaRbZWr_p?GrkWH=nmEVSn*~;%|%5fTO$vD&R6+nSq{w z1NDRp&1^%q?BL#x=#sKe{aP|=TI_8qX6-0PI{W@KeK@;4t{`K#MbrIg9F*mIL z9GIUJ^18az6t64LIe^!de{6MlU4=L?kzfS(4uyGLAs6|^r}wGLEvmas&>0&frwJ*3 z>KlRt4|*q73pWD^9^wMFhYP?9@PP>azy@5+;6C+RDQ~B|lk#rLdnxaytV>y+vLR(D zxiMuPQEjEHcFD%F!TNQ^^~TPU9+LUQEX@L^6GZ&ZjF{`-JY#-nXp3jmUTT#*oHEO~jRBBwmJJVF)KDX+Xxu{uPi$X0}R zmMd};`Q^_S@$EY&cHA*3or~gGrXC3+ODXm7>j?zQqx4O+^xR)G|S4gMN8XU z%Cs`Ivdw+THM1|xT~o7C^M5b%W_g!IPz=!L?^nQi_nv$1z3-jvo_h{hDr2ej%ya^)R+ru^kWob6^|*#DV&Ud+5c6iyTSdEK z`Q$48m>V@1+j0Zsj!%PM18u)X+o?qFar18ZP*Ok&NoNng&0FE{@*~d?jTT+wxfOKC zGmENCL5v*u-MWCM)1OIq-UuZE_Vw=pH{v0tXEvNH>aJ@5HORht7>b*n_h7*@eMS_& zmwr&aQoXHcdr<_bWx8*juSki=HR(e6=jlC*lY`f#+X@cTjIZMg4r7F%lMB4!u@a1D zzEI=A<4k}OOke^q=WI97LmjUEGFX+b&i|{RCmBP=lA*>nxM<@@tBbZ(cw6CtO@R2m z;csyEGkY~b<3G$3AP@U%Jufd;okU`fk!u%$g}^%mzGCP#Yxob|Q>?d(Jykt~Vm?@B zi^Ac9O(s)F)p;l88OzUG=M!6fF_kpL#+fG2RklQ`fh954k3 zOvM4ym;fc1ZU-pgjB&4fa=UrmbICkXNvcRSsUh>p0$FeUqm+Phu4vf z{P2?7NUig0xemRn8+j#-Y3+m4iahgrGRXt;f!`pah{64yL}}vcgeH zIxKfw1i z$-HQnWlFQMwIBHa=}0uznp5sp>H-fomah*%&~r>ml_{8dfD$Bl#r7u$G*%FrS7+K| z5>2QG0~=3a5UwJ)K^0*zq&CUpPk7$y^vXGWNb~Y;=9T+diXjxV`K9|=ssYb4KNXlU zhq(b$Q(>r`Exro9YE5329>kvd-XRGgnm+YqH6B*uQ77H08qYAYf*ekwa;lgi_X?W> zqJ@k%P3M4cET$6bVQx@jAO}#xKkRZ%zLV0`mfI{<3eE zjS@=IjwQ%hV_j#}SdTN0pd6R-tiC9H$}SL?hxAi3If8auVO{)aw^dV3$Ah`pUNJqP z=;U|0YKCg2>e<3ss@bZiRb!32inge^`jO;2%%;AexrXDx3(P^rgLydMMI7)F6R3XG4hSW^Ka-i9!om=qGQP|>KOeO%xQQzy`7J>)*C&R zboNCzi5EGI$2ayydp7b$W6ox#FM2}LzUT>L0{EyKOd=L zTFbd?gftr={jjmQ24oGLmW1+FIrJR;~7?NYa4$cK3CIhXFHX6i&;B2RVJAU9a7s zo$h%}zft>z+n3s}v|npCX}{6#1>b7F(|)i0LAzPIMY~nIO}kyYL%UPEOS@aUN4rlu zvFJzb>0)5quRWkWs6C|pNqboPvlcgHW{_B>f5J`*3ejo)8Z}-ppi!;M(1tUzwjc-r zFEf4m6L}i&3UlE!;8i<7iI&nAEMRt;nrhQxP|Qy~0IU{srzC-9eg27(B#Brekt9n} zB)gJ(Nzx?gk_-v!^S@P}f9KF*o+h6mpC$i8_DS+B!No7r?@zNfHurN&neLI_zg5dP zjJ0#`B0IO`vZ1WC%UZjg-P&!loEXY7IF`X>4w0d{$Si|n8C-J=u8XR{tp0X4S@^8} z#@=SQQ9hUE3cq(z23NuAZ>;{t>TfrBU2A#Cop@oZtFySdbctwx>nTkFJa>{wv!vP5 z9H~N@E6tN$(5j^cQl-97s+AfOOA{~0{26m4<0<|O{y<3&;}rf>{s*EDMQ@1T6wl<( z;?L&yPZ^MSwfI^wNAIHFYW%e1vl48GFwpV%X7c$C7(Fu0oQ}BYMzF7$n_^zcm93C)2WR*wx(M}x6`RFg4dXbTKr(_ zP-}QQON5un_fuUwT|MjNeO&df23MnNsjHi3FZsmGD|tZ$!3C2tr)Z~Yr)j5aXJ}_? zd-5h{T3jjDOVKgB@XUaez!Zg`pKGolmgiTn%SVx%n;ggcF3`i%)6>gyQ%GIZsHmu% z?*pIl+Z9@rUT6(I+zwtDnp~toW~bj(V>81@#5>--auOi|TWQpBRo6 z{#LlEuqyY9;+ZA0O78ZkLssc+U!|9o30no*1lt8W1Um)01dm5u6`b(-M{r%hRk|xZ zlpNtnpHn_(e9roCg`P@x;qKINnp>}PdSka`53taFg-?lJ;iJ#IUcPOSJDr~gzDl;H z!gKTIUe3`IQ0$_-XN#EO6quNKm=!a5tZ(Hx*7RUa593hdFk^*rxbb0Q=QllGBNw(R zjzS1|U_AgVn|q37bAfjjn`{3-u}Z_9- z+H@P)9IHBW;uW%63mKy&MkT8lcVUU~j-fRrB$&xW?gkGGD>FPaf2k+LY)f5T_>y3v zY?5qt!8Zc`_<;D<1{imJ)mRB$XJ#_6xdd3whuxTZi=2_UJat9tDN{@Vd_jC&eNlW#{D=6m z_)qa);=jdL#8<`F#Q%t|i-CkAaghMcP}wk9g>1O&VOgcDN>(kak&Tf3pR87=D_cveB|JvazzqWaDJxWsl30a+RDFSL373MhhZ^kztWrqPIqmiy0qt zS^cN_?pD;7GO_^Dn)&U^0@#&LMxEJS(*n!7m>TdVQ;vhiSyq7H8l3k^vve#(VYChFm z?(>-}TG-h>t8N^(ecYC#h@u~)&I*oXX4SRY;Yg#$h!J5g4XkIC-( zPL|aKCyB8^^>9BJ8-xIi4XTH^IzG-=ouTOcNyeItwHcpge3r3>TuXMB-^bjbdYHSL z^8XZW&=gy(D^On#)3bg?dWQxzgkm=A8EW@AnU#kM_}DiR0q^x+$4D>_J0px=zydyA zp|+Om5XSXQRnPjIe5TI^vX#}dHZrPbF-S)FP(Nal3?Lz2k!y+=BqQMIz^|DkBj85f zCP;D&GZge2aucj+W}5|EWk-=#YlhW_j31Nzjo*@G#(_pFyT>~C()m>zH&lYfcHf^8 z?jHyNOPHfikSYmH81iDKlf0S@^E;?78n{K^3Lw0&P%_7sdkE|+;1=a>MK1ZRl4r5kXvBd&9drsQ!Fg{8iyG_cKNc=+MY9QAY~LMxBY?7I{AMv8ZuTtg^yPh&!CLDl0$2Gd3rY z>8Q|wi@4&Dl8|3R`h+YF!n*h{gq@?Atrj|6w$=ir>%URL{c*zt!`bBF@~WcV+K1&r zeVG2GJ{9iU^lwJSC+bwis`=T+G_r!Mf;Hi5!+Cj$dQr>^dS*RzjBxY6QpEk%$@T@y znc{7=^g}4zoSXwLa0||o7?1%X0goN&NJ2+C#FNd7Qom7~}^s7I>XA5CGq47;vm&gM_@GLtATNR&wJrH)j8 z!;4Z!t1pp%HHGSLh-!w9(<*Sl6|%*$DObr}>NGXh#99I6Dyab<+5L`9X$-ZU(7kb; zY~S0slUjWrm(>~`(VS!N65Qaz6dN67jgIO%E)L90TF|Ml;og4scPkN6O`hJ5WTi;b z#bVa>9B3G1xcS;rQw(g_(%pC`t?S4U4fxouO)HT)jR_W(52o7rpsPuo$m-KKr%$t- z5Z%tb+wSIe9X^P$z1LWMT96}ad_Nawfh~n_`hrga8D5{?VF97l4rx;lr44LjcQUO* z&Zysc!{{?X`ef5l?s-m3IneRFdS+*STXHDIr{}JM0$rhQu6%ypxZxz`}v1> z5Abb-MM~R;1ne!XYbPURnqiM&yU!%uWLFDDE{&lqMiIknalof`fD*M( zg3p-eR2uNPy#;Cjaje4uU)TXk)Itf?<2W`jTm0b{2)e_TbS$_x2sTXte}`WQzZ!lm z{GagqRS&2@L=zD!AtqmNiFw||Hz~nJ=5V%{C;C{_5&PvFI^}2Lnfy(Eh6k7eP2Ei0 zO+lu=!b44tP%43``Cuv?KXs#_u9ZL`PdsFBzIn+|Alg z+<5o+?4-QptLkg&W6^&^UyknVL53{jW1X8_#(G-RX{@J?V}b2qKZSrV?as@3WUZj< zcwgZlOxb>8oVx8DUG_ zy9f~Ifv&~b@7_g#uLTT%zej+F?PdXN=nC8eVob3no`)l}ya60%@(J(@@b&O(Xieke zfOykM_fzf&0iDqy3~Z9-#3|x(6#2prlz;Xw@|8)X|gog8o4G%<5&1a%KDTIDH~J1O!+E>R~ThH zRC1)`JO1~4r+fhjy$hHeEHOFxBdx%CUb5*$@PrqA28w_jkYbwTHQ5>D22xFLBrXa5 zTqL8HiC*pQPM0B<8keUmDtx{0jl!j|_ZsS?OXO3%M@t{k_cDF2O8}dg{!KlNhX*$o zju{E@tdD&{I)O7qcYuG8zcKd9*so%jhz{|els+Y$B2}dPX6&6gTfMh*s#KppO*&mV zLpoFXQQpUStMfMK<%OT*r<*X8B5;O z@VcSBt7_diL4hr^k)M@C7dWx{<(fqKf&6c|-*LAkxOo4--OT+h?ReT2?pE$L?so1@ z?k;Yi(arl>E;lz?S4D2|-NV&|Z}mOQ-OJUd?Bnj|a=l*(dNpW4&}%^pgBAtd7g8qQ zp3slSi#fpEk&vZ$u=t_koe8@V%JMepmXxeAzFmT+5yD7QL1Ep|Bx%4m_VYowV2xr_ zN3+tS3rLSF6YI|HO36mqbF9{!V|9%D2m#;P+>BPUVj>SSdEy&P9=YkZ8a+8p89j=| zMo(^IqbKj?jUFX5dVIll+r4V*0>t|#(8eMiG~(qXQ`M$-(w3#Yn}#((H;U0CCHRhM zL80tGi=mvMLr`PvsG80WRABlv>nQjSn+Xa<`UJyS1ho&Pg4! z9?s0d<%Qp+Zb`lQyK0^Jrdr}{s0h(q^|U*&I{g#+DSBaiSbSEF%IK!tr?B33K3Cis z?q~E#@-1OzMwzCct{+BLki#3&YL5rsGr6zjgnX&hFo$QQoS5OJ~x6UEPr& zYH+5a3~3thgUyBsP$B@9^ts$FV{G=;%_V=v^I5llHtRkny{SX+Oi~H9Fxkpx_@`4YLzJq=WI{kU+jopUXA}Ii?+>+q+Vu^ecD{=Z zphSSh9@b+EF8m$--Oc`KBlYo;^bhF=K3@jM2YysSnfjW(2~7-i%i-prP8qNR-N~;( zF~l2No94M#@gu?@em@5O0NLc?1K^XmPh7qXUgLr_^=iP%Y@!5P?F-RBesXs!dNe19 zKE(-rbN8KW_ncb3fVCiNLE39+3)2>*y`J`K#?g$o(pKi)Z^DK{8gX;O*fe0vV5)ca9kv_aoE;5*#_uu-N}|-&|N>MxI3Ky8Y4{EMi*QA6Lb?V?CO$Mzp$%I zassR;j_7m}zEOcd8cTUiDH;~L!1$VRp>dJ%b>kbxSLF-jb7Lp*UWgqW`*?}dX&P8( zO>i|3M)%7D=+iWWhXV$gvT4-x%jyOOn+C_0H;teiBFJJQ7-C8YNOT5ygJ~&4O=kUP z`boT3V;97}pR%yeo3XZ|IeG$)FM3|yFq7kG&T%joXZ&7=%{t(Qvu`ho>EHw4-w4w#y1GeZTSVXMnoGt|)2AWjS~ z?0UrsTVsZ@Mrfv_w?rzDNwOr_61gNtqLAcD@+6PTl@gUiEz#T{@fK@@o-6J=B?+G; zYfZ=;U4a>-RznnHZ9`br#;_ zXj%K5M3)((gQyjDuiU)6EyCTx`l8RZ+k`uW+lA}2Uuf5BH)yAOUej;Xe&P0|_ABkz z+D+PTw0ps~+V8aAYk$yg)^5>m)o#;n*Y42n)b7&m*6z{n(@rew`BqCob;>#+$;`Uk0o4)%kxF^dw`*vE=8a9JQbN{|dUP7wKck zE$SFOV~Bcuh7 z+VuUgyT!l4N;=ld(mg&XJ~%!kzITowezi`PGg|Y9c8GDPahS2fINbQKvFn>67?Ydd zj(5gTG*kO#dg^#~*Yq8+PYs_LV33^MJr4yW2b_?m(8XqGG0b-oJNvqCch3mf-+gh= zf$o1sEstIieWcefy%uH7(ahKQrD^(1Gj&&B-Tk3hVs^83d4=wPWm<}M8Vv=xTdU07 zI5ARlMeAr)C<0P(E9l099ZX#X%cR6eyF@2lnr*sq+NDNKzw-FN+v$WEfbn2AbL8=0 z4->FU(8JBCiwpRV={eI*L2p=Q)~ZXvA1>fo)AObb;08nvASxyIU(=$PQs38O&?Ca} z$PL&YU@<6zoc6~W^WR(yO6%*Xcf?^oHm&~f{kYlb;I-5{Vmcb|qb+m@ZX*15)y;Z9 zPoGA*!EN(O@2_~#ggtNtRxlRNQF(`K^9=)6hIR3cZ#==hkUKaXfO|XbB;tV9nx0rA zcbYv~AMR@n2CNYi!$Qt}0Sc)=B1DO}kEUB+{yN$^rC&*B^J+!Wy~cIvi%eJ(E+otL z=s;_T!WuD&Qi6jH##s+3O8|$M01f!b@fD#K8gQ5i*yL$lT-x8*11|1zo~LvrZxwH7 z@UY;D;Nig!2UiAH1y={x1dj+l$p2NbSi9J?#Pqi59n%ug+oFu**=kwl2BRVcLlp*Y z29YAgrU?llxsYVm+_TjqxjT;2S#z&_&AsI%chlKZS36dxnH+2GDP%73DM^m9BTVmB z^XA^_pr4)1Jy$SEFfWr@JoYu zMe-hsCJs1Y#AIH$llYv#X-<5uFttj65_SRFHdKlf4fvm3$}17EO7N>gF+c!J$X2mF z)x7At;`Hz%Q~PG(V$Ton#!_F-V)kRxv!EkS5K-cZmLk|R;HaG$B7*|xp*ye^{&a)? z!M`0ThfrL`(umzzuF-DM_my&^J%jdSePVi+(>-Vo$GZpWR_y5J-*Bs-`Q}P+jLCAB zGY`KU!_LcFqzr>eqZnovu#xu#jG8{^d?3jI>rJgXqugL(o>5|_gU)90#|7secS)emKiE$xX^pO?LnZ1aQ`1?NJKk~M_JmH=t~IV_BS*NNi>!71_pT$qV`xhx zcb1jM$QnyP{A-kh2Xd7;ezAQ(@M@8@^m>#ilp46yriAUVLDc-vQo8kOI6H( zc%_q^S9T2JYc8*HYmHbX*blEC(h>_vEe$wj*IASZ@U#CBf4jf|@F1*OF<6omGgb@? z;uuLxa!g80YD|qHEharCFman{yXmk$!`gKg!aGcL>7x`tjx|BPY1^X&5CyGeD?tt8 zD?uz1V7rfwj^yeAK!$H~=@ECE@NA2FOwO4W9XHWwWIdYAw0L7wN^sht4M4)6>3fC= zI0`-9kHQCZ&~LE)I031DyWPe~4;l{{Pa01dPaDq|&l->Lf8p;l?Kf?AkLRMUMn~7c z1{JX7F2`yAIz3uwt4FJs92Dtq34Xw6fP*9&U+^BMl1Y5;)jV(Nq$QCU&_YBo%zcQYmFEx!3}5M7{z(!4hUOK z&1A{3loQ&M+Ed!oS`10Z4e4<1{C0pFnBZ8*kXBRhy#H6OsB=F@=WaI~8Fj+AGpmfY zS571uR-4S3U& zu?9+T)}ctFMZvzh5uM)Sb-{Ge^j)Bbr>Ccv=cbUls8LZ-Io}6999BP>d06pZ^&ItF^$Y3?>c0(F3>Ves3O_NlHa7n)vg_qOV0~UHxmxa` ziIhZ1q9r{gF_KtGoFrb7AYs)E56xfd2{GGJR~Nn{m?)bhn_cjYz&}19UY&Hbbdr9u z{$?ZeyV6M##_(S4LO!qC!TOr_dO0({mK2S1b|)8-C#*ne>9Uvenznq1a@mxXw8pU3 z5R+5s>KbpY&db`Ztlc_S`V6xx|!IOd$(P4=vqo)X_3Z@CB z3o_)H@)?4l$eDs!g88DCMSrMg3!WAPM{bUOM)0iQKZ553&kI5#<3vQ_qniH;<_P8r zUJ%R^@FO#GT$HDxPe+GFj)^)_I5z4`^tQqHL`FnKL`U?Dh>3`eh>KVskr>fG ze?WeGL_!4Cy*qT^x279r%w+xR#>@=zMR4AJ_`VLAn*3l)xc(n&O(fln(~@QW>_G zq*)&8*l8}~j5GUd-m#+uZuXM`C6pp|#}2)|oj)Am*4sngXXV_9+1 zzD}JxM4Y^QSDh0u8Q-m+5nQmFNJx@^<8;mibTnO$?(o#|a&)m7Tr>8-6AW z9LKF26hMGi8nKooSzofDq0U1l9D?q~YX}^`o1?-cs4=RX_d0A$=TPWrcc`H;_Q+O- ztqS`n?BlT2VV{Jp30oW1RGGVn^VX=>ssjp0em}mgz?~&-h9d!yaLmEWJe^8!6r5UIz-zm2TsRK2uos9b;s;f<18=OR4cmt-Zh@$ zMW_|K!Ot1-u7)4AJOr}--teQ5s$6{+xWSncqcx@nt17dq^8b1dmY2(4RPRncuc*lz zk;i&oY!xmY^)0(f+-|4#3tT6iZ_TovftS^$_F?p#+zhhm`(YYcMA5@};1!ji3I2dztt__c{8x`iI=#(J$5a zcmFW__vlpb`$bn1?vaG13({Z84(vTp(XDrx`#|@n3J19#)eLq2yU%^172$&vQHh+C zbnmd3!HQMkgT&?HdD<7XFKOp%U)G*UcGDE7(u*>R9yd%doJ}4suPW-TeONBkhv{GH zQ{lc%|7K)-qE1z;nxDNooNtyDWEHFlUmMQLOVo>EUeNPMf3mwF$PjD@G4Kr-=@!sc z2*=*(&Ur9=yWeEi<8|Ylzih0LAfR6#o5aEZnhw7N3p+KSDmo}r~c5tKV3CL zHBtp zljLq+x!v)>U9sjbB;4O{)pOEWQs2Kc`@^) z%=wuwXQoGHL_VSUDqmw%=}r`{DOg)@R(DQ!UZ*TADjZfcT_-U|7R=H|6|5;-Tli^V zxGq8`(!HVWYj7j6VG_aZ7=*)j;oHhQtV6fYEQOEt8P{iM;lk2Ir6)=N-&&xEzWn9_ zTtidM&ee@zA5_b!m)RFQ;%!4zk8Yf#nXiXf;~VJCo_0-RUS7JnvaqTUYk)Kq^gsiy zFc%!lA0>A}v_-gESYPzHcAIdAaJz7w7A3>|$JE>WFXSm1)hV@$_VxO!YEe1=-9GLH_|VbHfR`_LUFept1+42t*I2&1-&Ym<&E;s(>F6+fTmkt{%#H< zJ0r7<&1UHqX||b)%W+Y-=M4Zmy!LN*pHOHQ*xjw5^~BY9Y(rSGd0hT$=*AH3j502D%FaL8D1Ht2;`ox>E$z zo&R%jS{x40nU%nUNud&W;s7rk;Ee-(m;ep%6{2^9eos)LEI4Au? zFO%A=G3T2L%!OvHx!7D{?qk-Q4Q8Xc)J&R9X0sXVj*@=1rW?%O56cHIC=X!Lr2&C< z09@EcX3L|jf>rz!T_u{Cw}(}*SOu$fu}XKcg4NgD&wP*h34PNsOI^u{W7P>((G?V3 zASio zyq|T<0w*DFO=R*d_dD*k1Q+igxSP4Zr5#V(!rjW<#@)`{$=$^bG`e|T%jM=q>#E2t zzI(X3@U6awxqG?#lzrU&T(0*kL9Yfa2zo7OVbG$W`$Ed(+Y|cncrgdKI})-K4;DXE zyfa}}LRsD>-I9`3#{Wjn1iTP*x8vv3L;OMzWCth_;7yp%!%6Rm zv+viOm~x=wd-crD{I=v!j8D&91qHe?^FZ?;^IZA-ym7@p$MlefOCzKtKcK+G-y6y6 z`FZanG5aDddj#Lmw%%Av&)G@L&j0N*51GZdXcQ zhzlwWEuG-9!cgyWU+y#|Hdxe6()~i5&ruhHEb4{H7_ffg*2~ z`c$DEr9bVXq-jrSSK3c>>m4tRFP6R_JDNIAmg@PUA2wXio18&o#KYXJZxNm8D!*Ol zaXPBEUaCJE^$qwEYyxk1z3ElxJ4HD;>wMHy<;9$(@V$Cp`+@dD?QcoN(kHT>%z7$I zrq9x6>*e|t28^(*o1F2jkRbMA@Pc0Lx;6{4dWBq!I?>ZCdEVb5Ig~ zZ*ta6BmWI1AG>Y5ZF?4mp14Wcw`V288gEW?w)eU(NP8`9VcMd!*VBH@IGXWR+REJf zP1uk(zwS*Te>2z(EP%2FiJ*D_Vp{ngwML>K)O8NjC_11u^2CbTCQW{2u6O%N5+C`a z^3n1!^0D$&S$hxs&`gmBp|NJ#xLXL|3+XjO$`A)k1C%vFmOADk*eW6q{2Ba#k{-q>{Hgp8L?4RY5Wgv&$)Cla&F`Nw**qZeYVoyVj()50(~{3h7IK8b zMouei+%VAcs34P*>5{o4-G=!|vlTby_Z`c6WZKOm^8>k=ygfy-wvZ?ob}QL=!(rK@ zuRHtbt7Xqj=ebSRy2Gz+Og%f+E*x4`4Qwhw%QiQLJnSa*4GpNY$4o#eh|USZ9G(LN zPy&K^w4ek%n1G%fYp{nKY+VmPI{1d?9qSY88|xR#i}jBUhz*SG7CSnHujxlVKnBN# z#PVZ9V+FB4lukF#Fo(tNmCQ8HG83^qVs{t=aszX_<#x{v$_>s9kBx{Old?E(Z^6ET zTr!VTk}6V7YRG)DfGi}(r8u9jth1i4%!cPH6xT^0bHLN)2>Nu4Yb6hzM|s6QV;(?0 z=#NpJ_ODRh1l|8>O!sp*-EP1u_IXHklE)c(LbPoww7*vly{ezfJuX~cM94V(eJ-zh zj1Jf#-6@@uKiV+HpijA&cq#F+9zzmr*R5{cb#$Or>7mC*y2%B_(|OP2wPpMtrL!b^ zrGF*vlYSX|CGl$FwM0{@dy+?zXOdTvcM>*4&o)rkGGYw~x4+)-eQ0!c^cbtD+_9R< zi{}5!y+?4bV0Pw#-Xk@2n)_w1M9kKn(y@8EZeKZ}J2y<{&eByh;K@*A1~(ihAik&p z5q3tYM1cA9kp(T~yFspB88hGWWzSbUJ;P+8XY}p{4?{xATWYsrZn1lDnts0dWi!?( z5Zt(n5{Q`UMF@zrTgU6H<~){0sxPFaBNIt2Fu!JYWWhS7X;Tg?szY;NwT*P=$P4sN zz_%od`IcaY|2S5hvf{LGdEs}dTT%xa1{r+fM`<3>oC|y|ldaBIASsk+B}EdQq_r8d z?)0FH*UfJ<846#|W+<`8(~;+-)&kLiR@DZa6_hao^t_||m8EI3ENfpz{j z9=ByX4nrT+N~&5$`X_Bz(|Z=qFl?J!@}~FfXDNn^-=Wrk%q%2QeQ(-C0wI~`y&-50&PST|n7Dm2#^Qy#{% z$^)%DG|m{*_DIgoc5c90vynA^C#eq@D{RlS8YnA4XHTlp zx{EW7*<#bTajjvp1L)8;lKO+>yb`ACo9pdA+$41uNquVa~PIrkB4x$>rPT zpTbCQU3&S>K)41(+x%!8C1g(Ed7AN{n`-dyAg7NiP+D!QG4?Qo8}j&DleZ;r;+>CB zrHn9sT_P{~8XhFR>U=Su1G0-ST)yyI3zXvhzb^U4Y%?_J(ChZFS!q;lvsrDX6WzIe z>@XTxTkSBL0pn)fh_>22bhno69wkV|(-`%%y$(PL2gVa~JkDB1tYu`F$vRdgITD2= zSCS`rT&|R;Bx;F9k}qK$t3!-Kjl+x;#^J_o=I!P?%{JP|%%g(>dKAi&rWsL#i?B!T z;G*o3?27DtH-&O=kxkpCB|&QxbGm6`#XOx>%-bxVv5w6PW1A*UlW=otJl(l1YCPSg zZE8H-sUNj9A`yWbe*A34(gN`=9!r0-$cFf(}6`agCV{9%zQ)AZHlABoywbLIR z;t3txTHT>cF;(bU7+(~xi!Y8ZiSH9XMtHy518&Yz4xxG9frgJsxf^xQgWcykx;wN- zCKbl`()a*wAeW4H9vgM8adhs6jooyo!LZY7P|nl(U1~G)zTfi)*=E@m*;d&$*>+iZ z{E+ye@x$UP;)lmS9A6p#faimrzn5Mpy;$1cbAaa#*`?AyN-vl0l%drr^Bm~uOeGp{ zjAKACMrHdAgsEOx_L<=-*zHOpIfJy3K${z#fP}^hs0K*vDmQ$20Kg(g9J*ffAs|=G zE#6WHYB(lnDs}|#h{cD*JM9??ziADMmSaV*0is(?S<7fK4|Z!KTmKCocAKlawl1=@ zbC8aS!n?!4iVMKjmaAed1J*KVYwYTsdJ*INlVpVS!UQaX2_PbLM5$OcKDb^ zlk~BvD)5ikmubSv8Q1uw(L-X~;_vQj zLemZ2eUwS6q;li0;-lhY;@`x_#V5ok#izul#b?B4#plH5#lMR$h_9d}5}+9>8z!re4VOJEtCUsAs%15@5wic2)yfp|TzQ_H zqZuiylZ}!+B70OeS~f;DR`!@|oNT=8ahX!ClB?w|nn+2MBwEr_5+nJyuL-eIrprp1 zj#j&0GIUhcUDkDdd$Jg@43YKKjMa2mhWL7?QM)^iHMUP!i=NJnKqn+d<-ga*J|UgJ znW8(uKgi!0`(^A`u}egU_)kiAn-nR(8GC2WR_`sHD%IytlkPEnl=pGo>bwnldEqDd zI#ap{Ll+Ki1sP@(OzdFiQ^##JD+O68c)N1>v1UQrrQjmN>jqdZQ0Xq*ojOkQVo9tp zP8cst5GD$fgkqsYm@IrWH$}KDB2~C2^~cnn@h)0dZJO{<>SWnZsd>Wwaxdlo3S;Br z;>T+~%MVaa$bXuAhHPE#VGT%T24jVQc!4c`e_cHc$iK%QW1HPNm~Cz{@hm-glQS)@ zl_q9$)dUZr7A@{h@TllLX> zPd<=*F!@k2dlztRR#ZuH<=4kE%d4E&Q#=vGnokfJ> zCKR(d@VM@d8s|A0dpE*~8u@}Wrl3=%dJLm#Lx_jfQjo*e_uJmb07-BDwyqj6(yh#L99Mu@-CtS_Jij6ZrlC$n}yJeKa@ z+la@;bFB?qun26NyHyrJ^NpW`wBPR_#gU7}u^MQEJ+k+NsA;;Rsh1PgwkAy|3z=jS z%0h3bEUfZlC<{`{24*T3=L}y+@@J4T%Ngz*QEBMqv|-_YrO8RFqJVYtrxk_fnrnbB zUSK1`?x9n{>48|7VYxdr%Y5MP^#F*RwsSn7y!Lc|)n$3yinsxqg)S@eJ!C86JY~yV zKIP4ozw7c)?nfRUxt)`om#oT9ES6hxEQNvEK!orjL`EY-CBm9U#FMpzN)}|bL+Q81 z1sn++By(Qeb=I^Yc@|$F4Pq>=(lRmB+POg!tA}si#~I(57@ZN2@>j#o^`Z98$U&*W zB{gd{vXc5E(?D5TPVifHY82)>7s`ve(s|oi=LemB5o#R?KMtAa(sLYl;{oBjD-4dzd66;6~oPkmMNqsVQV9 z9B`jy6QAK(cWB*KN6|yZB1?bc{gyK0K%-Sr#5$mie@L%v+z@k2u(y{8+9gnTjcr3$D+nXjgLATEr=9GhDC0P z-WokFW_-+L^{rNwxsy|S&BQLLlA0yuiNX#3pL!M0DCg;`9a&H23gb*S~z zcJgKP(I9;a?CjVbW?G)IsPOf|Hwu@=-fO6nE|E|59xZ)D-^=v9E&)iH`M+3AI)%pCO+%m*6)H2LcVZj=q^8?4jFa4}`M-#I_=EMuxxvD(Xp9xCU z0`+U^W#MX-)%w7?+1%94H5Y;)yH^@HP=FBR*a0f|H+T~U6WQ%T0OPhCr@Boio~X9e zSmw&-=Z!1=Ii`m+TpA%I`2htc{@zGl&(C`wiP;xv;Zyv6{F6yXd1Hd3q}TxA&~4o^ z;`{jb^AGVJ;M)d>l-f|8*8=DRN7T}*meS7Dz7Q8w8d^HRWrd;M<-Xi$N^H33o2LDR zIH42Ta(Wi@+aqc3S)_)Rt}tA48Rs`mi47HX^D{^l+L1b!iAL`btQ)Pczg0>Ez!cez zwtZPeHh>?7GY1Y^nHI`yZ+s+LBR>Zj z$i=7=J79k(yK#pQC zT4qi*W!8$^rpo@xT=(`?V}0b0%16t`$j8c8W$jTsCdY>B*=nk7tkp(0j(8jM`*l=> zztOVT5Vy>;G4#Yu(|sn0@lCe3!o8>a_Fh{QTNT?BD|4}-ZeHPbMydq4O#3rWs1y!> z;l1c3hyOkY$HPv9?IZRR2Z)2jA>t?EFmW>MRM_dTGht`L&V`*1`#tPJ*u}6*VSj{O z4*N6gudu(vu7q6;yB79O*!3_#a0nN|m2e}tggfCucoJTOH{nD05`F}a@FxO@K%yJb zod_a=i4cNMgc1TmNQ4mt(SrylA_x%?NkkFRL{B1yh$Z5Pcp`yFB$5a*At9296e5-A zMWhkwLCTB(y{kp(Bck5~2^GCk%v< zC?!b3M3@N+K@ok4e#AY*y~KUQ{lo*rgTzBbe_{YpMhqkd5rc_xVhAynm`1E8HV_+$ zFNv>+uZc~>H^jHZcf|L^55#6-3$c~hMr98iPWai;eZMpFdPRw zi~}lhKot(C#sM`rU<3~MKO9ht14iP2Ivg+x2RwoU9>oEpaljZHFct?qh6Bdofblrs zaU3uK2h`($i8x>q4w#Gsp1=W5;((`cz!V%X6$ebi0n>573>+{M2h73&vvI)FIN%u^ z@GK7a4-R+^2Rx4h{)+?V;DEU}-~}8o4+p%6175-b^Krn-IN%i=@G1^ifCFB`0Sj@! zA{_8K4tN6xyom$e!U2nMz!DtrHV$|P2P|a*3WZwX^HArY)sAxTjOAI&e=N^gp11th zGRHF4@`7ca1>?^u>vmRa7l zyk~je@`2?;%W}&K%Sy{C%SV=vEvqe`Sk_q9T0XUWX8GK*&hmw2y=8-CqvcD>SC+3W zn=Id0zO{U3`QGw_WwT|AWvgYIWxHjEWv6AAWw&LIWxqJGFQ3)Tt$a z514Og0{9RIEXM&WaKK6&unGr!gabat0jqJqCpcgY4p@r=KE(l_;egL^z&af81rAt` z12*7*jX2;-9Pkwm_!gqDjste!fSovC z7Y^8s1NPv6A9285Cg45c`@$jzCpCdTEq_`5wp_7XwOq6OW4Uet6o+!5Tq!q-OSw}X zlqcmyc~d@=FXcz^D1Rz|3Z%MG-Kiidm}O6+2@c?ZgE-(24)_TN9L51ZBzX^vDO&6Va!FKE@$0;y78DAh`hiKU5`WB!b}lJOLO27jQW zhj9vjD*pq~hoU#cZ;EH~XYptA`=?Ac4@kUP%+YT(ep>Qb2{wQbw2U5Paxz^qccfcU zJZZKf2?4(_Z`@AgRd_M(0|kIdynWqY3tAkM5t2%sO7lzekJ0o|C^l(w6?qD^La%TR z23}{4tnEelf?;0Bdyh1Odb9;;)DW+s4ItW~?+4N$x>U+9jfw7iO*eg~iptNREaZA~ zcRJh`BTWT2e7Odl(0|MQj=L?v#rp^DX6|ok$J4fOw{o{}w{v%LcX0!aZr;~&xw+B0 zDsqeO9-|d5t3eBbUJF_nv?%DlkTUu9gnm3;%mMC>ge=8_ z#SazlOxTrBmbXc_q-2%x?UEu3lOzrJpZ&BIE;j&JSo^*3-MigU`BEyqD5L0c!vw?G z9-N}2I&>U-@E z+RfUtrXAXy+Fjb++CAER+KEL!YEKsf<9_V{?LqA!?N8dn+Ml(P$jRgr?WSMVZ*h?2rO}!AGVdioLtq{;}D2Qb-HNINoBTvrA%2 zUnSeZL|Q5y69d__lg;4@B|J)rHy)f~@^4$Zr9dcP>jALly1v}Q$<>{I zpRl6a@NTD5HQ+Q;xzT_#c7PJ@1vpK|KzqR7>tV(WyNYJLQh6c#QuyU?KNHX7Z~8Ml zz!YfeX6kMVGW``EY8ocW6LBNlBbG!8OuI=FWu^wG{+D?sb4%}28f&C9hCGVCr+I5g zHQ=m$3TOu45WPOgEm99a5}d;0@z-VlbW}Fl34@_IWY$rOf%6FK4DlW<)-r z`6^#yROwC>uPInta8`FtcV4F~Eh-#VG+h^2FiRg*u%>Wr;irY+x(J;}_lCBw!Hw)o zVZ$VX+c8KEr@JTpJs~rm11fqlZJy_LaVixjr$z zdOv-?5Q~Ts^%b4XOi&~$mU5SI-{ro?UCrH?wk+cl&2--_X>W1g=f2Gqs3ZmNkz3Qg z@!OWRJ?%OD$-=W<=e*8)$-*t!RXQqrjb^RpQ_bZ*pK1DLU+}u$;uW%vPnFQImqps&wr0x!)|MJ(t)w0kj1#ceVYUgj3w8*03U&z|kGd*2;q#B+x`3;6S9&Np!jnFye9ris z_35aJA6NKREgS$PWR&1u*YiSjxQKx8pBp&S{cQJh-OqQ&?!^WpEmwPrZW#=jM85o{IQn2mQ_ z>822H5f8b*Z1wvf$No3Z>)YdyY!rn};@*Gt#J+u|pafCSePu?qN1X11T2pGQS57@WcULc7PIf`9~NCQsGa8ryiy0oIur66RAnmWa~7r|dl+|N)(w{C#3&a2%6p*m&X2{-VtccpigceS@OweUHj_BraZyKk7yVpgI~ z&of4*+x-GAyZbTQ&4GFpkGb|fVT@_Ig8x!;sTUeg??2Q$#vt`pVqS#P^R^EHfgJD> zr2*ZUo6{{Uu%QwJy*V!6CGpEmVS5EmEs%-rRY-CWlVs;M4bv9{C_yN*4L>Y~Yg?iQ zQWsK-D1Mm08MzBUzz|5AQ%hIyI`sx6Qadj^J=ZrOb-~UEIN&Wvosc=Q5`^IZ0tfWK z0pUzQ0CQ73!2;?vYB9BhdYgKOT1qWzYJ1*oYC+$F+vCq9`F%C>t)sr6)>9iGp}m-$^ZnE8043_25|$c0=` zr#B9G8fA62jfq-F@fI>1kc9)Xaey2L@~v?KC{4%-kN}j-&EG@^GQ&V> zv?}Pdd^yikx{|kwH-R%OxFUFX@Wa8C!BxT4!8O4nf)DbKP`@e`Ygd>So0gc~Hoaq7 zB6?etkvv;1%iLg8q+sZJfSX08ND;u$yRRTs-d4(lkg~;bOXA*+dnayb+_Jdsp*uo% zhVBa89lAn%T{_q01s6pika1-DLidLr2t643Yadq`FGmAZ_U}ds5#b)_j&NNZrKW19 zX{T#vXlH6WGF4Gq0yARGUr5$Vyh{eU4sv}?66m=nkP|t?b*Sqw*9zC+u9r<&Nox#i z4KX>DuB_|ATA6_LK(ij`n<)+3ajpx@tJ|^hYn_EjwqN|(y{_u8CO!I?Yvq30KXjbB zouvw#FGRGDdj*@ueGML>t~Lqh%IgjKLI@~es<0DzA)v4^NZS}x)EJ~|3@WyR)*&-v zA}^n5Bzu6<)EVk5^>yGm>OA#3L(zskknMH>#s_HZXzCG~ix5LN(UU4 z)FxBM6pd$fANJTLO_DCjkYq}FOW0$ZwwGbJ9g+JTr~6!@{-7}SxTHhl_d5%tY(M=6 zE%AJ=)%$}SQczBzq~4V=^F3eoe8tl>@O$Z>PHm%_J!SkWAmzEoT65>wAL?09?F*Edv0z?_uaTs{!_^+YT4p zoS2VdKaO1;`$=q_|2suXiyrkKCq-4b*Tk-k9m^RnMIE({jsfsWY0DkX(k?pWzJ_m^ zbI|55v3p}t?s=>U7rIJqk1($GR3}pUE=9-i!ZQO>0#g)%ey-QaTtO_)uV9ytA~`qt zg6X2^yFd?5Pfst;O(AtrqoSg6z7KrHZ*yQ-^tHT-=-!Fa#2=!MMxV?$tbQ`{u;Rb! zIqJFU7t|Nje;ckCE~?KJPBOTdR~1&}eo;KLWEQ-M#HxI(%EzjF6J?WRvkSfv+)U-I zJ6`2m+$mMQf0s?RufnGRCj0pd6kh;b4`H1DISaFNb7f&wA+Imi1c_Yqh}X9~3;=iI zz~SYC>VUVltg77lyMMvpin^NGg3)#5)gvovs@>FOBg@?>U3Fc0T3}UwYonry!R3XO zWkW{_N=xf%bFePDsu7jBysG|o9I%bMxdDS`RsX_@%5q&k{H3(4ZkR6L{Sin&O|4H= ze@#u*h??s1>N>8fwzh1H+sKNsv95 z8N(UNdDOFS!y={Io0Zm#tU%4+unpbJuq&F4W>`h#;M($PdN#I^a?!fO<%X14D(qAR zYAb67mO0bOE36n@K3Ig>jI1jk5vng6T~RfvN~Ef+ta;Sw0a{epreRbsb@{NeM=EMY z)%vPN4X&u6rwm8zTT?lzsvN!u<`L!PgN;MXHKVEr^YUv(jHoQH6&04DeGkenA5u1| zvQ7lslsyc=`kKMzex@2Y;E*Arh5=kFs_WqLBA~Ra7H(Q)xvILN zstn?B8(33Q**(9ee5A+*LDr;)<;GV%BCaqc(I0*e_eF~TE{?rHEYKIOi!@<2C z#35;oAnA=D84m_NT2os&*tUPF(G?>DE1h=~K|Ikrt*xzj)U&pFaA8gDpmHvJ5eAie z3@)o00bg9+$hw*lX1L^)4KIOj*{C|W9Pp(cHK@*4S3P1>9lg5n?Np5}AL-QqLzw+x zvq7~LBhXuo-hICF-{nIgIxC!4P5+@DRaaM2%^T71B0W-W{WGwvvd+M0fFRbF&DO?a zXf53Cx-o8p%gYA)j6_@lB1eFc)ny~xE2d8#AKZ4Zb}i-G|qVF^sATEvT%l z7%{S@Vz6!J3aTpV;M?zy{p|($Ms?Z1%JRW*j;M`CRYf)0a*wLA(defa{JWsKymsgq zF9@;z=7V5W6(bSD@01sr0ut!guphR+eBc(?eh(_Q5@Y+j;l1;(E2|y~ z*^v$C5C4Q4Q)~OX8$_UDf)GyI8^EXcv0PM9E$WBfjgceD29@W*2^y=*&BJQy;8$c{ z706ok4Rb(iVnPFZmR5`?udJvpch|uEtS$2$1y_1#HT(+U_W-|pO=WpmZ37dAebr@y z9)|A~{Jt7qcTO#5C}$w2jBA2?V@N1uhmhTrRl?O9+_$3q(bAgQI`oA5XvN^VVeZ4q zD~1lM^RI^ZM1$ZiiAGeGRhRRIF#hx#Qc+$xSX47a^a#Y@3o#6HI1-fx`KHfEmj)ZM$i&#<3!Ufd^)z|(%=2te4@ zZZI5#hwg|DhmaPaYawZCN!XlEe}DhXsx=7c`vSBot5&TVva)ijtU1~{0t32d`;GJ~ zGfPIwqCQHxtwbbSo56|^RR;w^{F*Yyjlo$m41mdfk<50ZGb1c-`F1pGFV@c+)Fo2q zPs<;=O#0!V*9Rf5>gP!^WTfhi%cK>6?Iiu-qS0qYsC~D4nJ&I*q{H}zZ6RI0GGi5a zkvaQRY@NTU9V1Za$|+qp?4cP4r>AK$6zLT$PkFG(NoV(y^xV6d3?}1)hKR4L?Y(d5 zqQ<6~uxbN98-%8b_SP7)@8N@+r}y)W`YfzkdIV(?38LwG47;DQ^!^UZY)D5# z1ywdel%A$Nu!xUuw;L%t_$StsGC_bi_TI$V zV@N7JPOET3(`~ini7`g?X3~W!emVSDR~8@T$rnayoRm+0oH%i2A_6-}r=y{m^Ng^u zOba)?iPMfXq{R#genVB_zRzg?2rt~(+S=ZpGP12Ftsn?8izYCaLR5WM^E+T@z!K)n z)`#;745(@qmeYs&*LHVq8y>UPJ?)H=ZZnzsW+(zL5TDkwr%Lv;@yG0my+ubTT1c!H z6P03O;}5>QP2br)lWEr8p#6RG`{wBn$g<^Spc^EP1L_$o%Fu*;hhou(}gD&V6HpR z|F{+(YfCa#lfHFZjSdqUiag4)J|!oI9SIU4hbDxV_IoGLo&bh=xX2UI^Wisq>z;NI zxVD8p+;qoQv9ds-Tj)pknLo5?JssoM&p zKhIjx1{9jG(hx-%vgx&(f%c@cjqb3$)q%c1l;+aj=`hk;Y9{qDVShD-bNaG=)oog1 z@2C?K@Gub0J8yfv7JNSJX!~^3nR-Ko`_C@jpnv7w-qwsh^GKLDRd z27}%po$>O!O5D3(!7_(;#N*ui)<6#Gp3U|L;wmnz#LD{~-)lFmX@NdX9ktKet&?8s zN;IjFYFSqYjWh5p@M20qW}#7UolzA+Lij~gLa zX6ev@2&Oe`jblL27(Ve3icgz`Dr^p<;L@*DO|Jv>WHEc5O(YxjQRAw~e5LQ&Lsr)r z0%=NNlbEv=<`inu(y&o?|IuSarr$9qi9NbRnT@`f2u7~U7(q;!4rYF<+dS_Lm=Fmh zEN`Zu-WPK>V>S4*FvNfpssBjyNe1%}9I!CTwV)4g@Ar`GrtM{WgfQ7}C>#fB@^p~! zr8ca;-r8%!%%}cMf99M1@B?xJ9N%}z5I!kWr2Gk-*&ZN+GN4W2g(Z%AgMW?^W7y)z z(6l()e6OY*O(P1EUB7^JI5xeTxa zBTkcY;w_FaCZ% z&3>=jbMl1Z$jB5UTnGO;$q_?IBZLYq?O{&ey=EB5-4QB_B8;-Tm)d#rQMdH$DN9}J zQk2i-5@*F;KkS*V?I=NoA=U#LOc5q<-c&tVa+YJV3CAPR$vyg8CYgGK%)g zQanneF}O@DP1_uAg)$+-0c$3QM(Q7tk?#5uaFvWW`-r_RUhnl%jY%kE~nV7qd`^LHPK~V&c_YA!q$*DYafoRZ6LiQfjl5dR9t3FQs0TQZGxXQd=sewp2=O zsg&AMDYd0iYD=ZmmP)BDl~P+OrM6T`ZP_TbWn+ELRDOFfChSOqc}r#bz!^)T^@E`L z_F(`~w%3r(hO~uBu#Uxb9dx(8p#lV}58DWkclLU{{+)dm@#Nv4-5WrKW`pj~)T=Wf zTI7gk*eK)k-NQz=Qk@xq!l)39lx<)2p#r-o51YeuIpjFAXe)fB-{@MM1=teX6S7|c zGL^NS1;#>yoq(K4DuXBAsL~4%=v`ybf|n63ks#c-priJlIO!m21-^_IOiAKZkzz6R z2A*QI)zU+Bu7iWq<8M9NXm&;?urU1|XfJpAq`?M{?RHIi&hYOzEQli=BDcj0qQn1|>Y)U`=YKG~8+(k95|RE5D2T!MK15J28DU zv$qF_Sx3VMzhlOZ_2-)U4l)t?0lj+MIMJR@v)}Z(QJ%8L;T6hz<0h4qw5{KHADbXl zq{w`4dS~|bnRSaQ0SLhvHJ+-bioIgs)f9AtJ3*jHkMNaiXy_$wc#H@>67L z$bW})BA7%XiGhO#j}dR%XZXQ zFRsCu7moD4#XbgXLjOgnTt1@H@$-yLP?Xe>T)ON!v^PG!L0DqpdG)-6DDX{>M`blfXM_iqIt*ulK_F1VUHLNypu5y!do{B&xs?-=rxSX4+d?56xaIF-JQ)K=ODA7C}xJ&GO_ROqM^i%DA=V9;5&H%N>K zr?XnakyBFk8}pKFa}X%EV*k7 zLS53r2}gRUCz4YyBg(2<@Yczex@W>-zUz??R-{ z7cp&tfZfsZokD+{#^t$7f0)sPdbYTB!rj6BF$;zLLiQky=UnO64&mbU&$snWn0jg!yGjkV;8f|!40U1|d*5eL=*wnj= zDlqx}ucOO5Na(U>hDu!iVTj%i+L#1whtrQ%4x>YB8C+%|Q(m!GF#RfG3uj)-pG_#J zoENsbt%0m;gWf3$tHHxoPU)!UOZkim9PCD%-lIC*htA=(fC6H_8*Ge!eh6e6_3F;*Q zKWMenK7GwwRmBX{JNprmC*!n8;6MU0?1>Cqa2Lb>{FA&7{S-;O+WXf1>kXy$&=I11 z>nCVD&WBI_ti)b&I$Rp1$w5790vNdlWTS%O6m~<+c71dlgT-nG z>zzF$vEOKJ_4{>(CIQphEt~tf@90aV3_s|;J^V0RAWP{3sKcn=XZ#q^oLr?pZ2o=Y zhi8A^yu1GV@9R(R@c-4sfgB3b`|ZPXbgA12&KQhZ;1@c(WUx{M!+1%x`!Jx3mkq!j zcG}gD0fSm^eGM7YjovWGy=#qrTPg)wj~W(+!npNS{{*Z-yRQw}fIkJGiTC2=RK-R6 zf34#W;I5k}HKaB{*^~@|op{aQ_392opFK3>wTV?gAkfnf%uk^J13eqY6WnJ!f@a*8 z__ns@0km7XgO;~IQC#o#zWjRdx!wT+K1JF2(HXJw#M{i$#5_EB=i%9!CvK0;ay^Wiz5jgp4@ z-7DoTlcY+c62VbIps;Au_o$!FM_+#`fQ)Tvqt)+X7U-}iJSb#tH(*?v$+n2jS^u;xINT*U(~bh^`8^$xWjYHgoDuYf->JqHNeOKd!#f%Z>M)9 zg*?0vGcEN%y4+7UtVTX{+BSE9ML^ZPoigC~d~|WrMQ~L0OO(iIq#(0E%*{xNU(Bi~ z$$^n=8Fdg6WZ!%|l4|oPIT2RvwND0(!BrUapDhcjfGiJte$1CG6bmiK;5UPIFf|#9$K>>hY!%E+nl7A%BJ}?R$ed+? zqLx~Yxfu^uSsbgnvXGYQuFMy7D6kab9!z23( zV;0O^Eane=Hnrr_Iou8Y7Do73_cA)lHY6#>s~cYFdD=YO+@cZ8BJry<#~l^sj21+W zYN8`&zI5@tfnR`VcbLjK0Eb5hVcwV9h$opS;ftQFYNt%y zZsHPT($pcztZIxh-5ol8zLGJt>I7S= zX1StBK@+J|u8W)lEt5_}Ft!HYy~PW~4zR1`K(Bw<-ij;IwGGtY+EMw+QY76t7T zOqHP*jQjxc<>U@@u8NQ3uz}jof7iorCH!vuF%z&p6P!eqXTg0= zt`d4_$#>DFbzhzIq`xB@XjJ2Uq4hUs)KzIdgan+om z7gGU-#ySjy)gAgX=cq*@(dFanJ~+rym;u^#>4 zSL}$GB^}dev6adl*qCKr{4Lh-yFFx|iMBvw32#VfZu~r*ibd>2>Duy6cysch`ps)M z0)g2+ekv$oSV?-FrIiEX(qhr%K-$nrFw(|Jh6C^B%8rF&L@6ju#1YTzV1hFwWM4398MVx^ki$`5Az)f@r;NU znsymXc(W*ZIW|Qs254seG(J~bsfNH!#B%4uKdRNcI0|<7bm0@O(A_g6pENygcZZ-w z0TOlAjD7*Sb-@Tq5mkWIY3Y*{u&C4g9Ev6>p%AEctC7#JsGw0@jWzTn;>hWCc zsP$h9k_xl_rI=g_$qBZ7h%4StfpUfk*cu{23N5C5s2MlNWcCbR__OAjH=A(B80lK( zvIF+98L|V~xP@}ifvRhv%B(2pZj?V=j9U4~bMd_hlH$`RPfcQzh)KRK{1b~CL5yI0 zOf|bdno6^Z;y(k|RKX z4eQ%IoF_mZPh|!H%42)6@7aWbC^4OtVYvM*q2HS}n$EX~Hu4d_O8-)V7&Ao^Ge4tp zHb`m~v@H8c>1`ud<`gBlPtHH`M%_Aabfu+R2TW@utt^wRgZM#)CUjdY;sDlyDl~QlD-69)@tf?f)M+&TnkUwc}Ft(?#9y)LE60~_Z=hrVbEE$eqfhl zZ`;Tb$W1QQ+nkYosq;tw7xsM`TQ0&20 zvzZ`Mn|g_XZ~{>TGK!J0Qsr(C1IW@zQ;0f~p4AIxaRe$&sDEoXY&6fMSwEI7&kxHK z!Lck;k(Zz{e-S%o5T?=v8-ct&cL$EyuW3qr=5374pBh)$AojXst9o;Xwu+(<#`qmJ zAfJ-FaMb&V^Co=LY!KJ1DC1#UY~1*bQnA7eSR5nEfZFc#l2aW1q@+$CTNPkNDpf8! zbDpIm9uX543eU0(t~KK%xv=RH=7TY4e0#|_!6PKR!HIi4yVFAOfM&i1u4{yM#4-K? zlBJ(_Z&=!T2nUtGm1@##T*-t@H|+V{8#DBPc^J$(P$?EgYV=O;+84_yvp=gQ_;Yl* z=E_VZ(O)QhdQYF;%faRPtqxk?^$W$4;fnQ9Y~&%^l=lo;vV*?-^z_XD1tjiBSIm`) z$Wa2!!lHs)`aeEAJ9zbt!i%(mA=z)^LdPN<^01ygRkEiIByekrh7E>ZYk(b2x|)T; zi2sg|ZiA7Hk2+~X11c8A*U{f!-Nnh!I|1g~NZUB`rnhI=J^&+~_m;{?m%H|$;}DyJ zf|tjdy)OJfJ<23x$YeOHgiqrnME4aQOH0Knm>BOdGw ztrHFrMPN1yi#nKL+yB;}c@7O@c;v8+Yn8UYW%hE^1&AoPC_q6mfZR7ub^Nv0phX4? z6;KrvTnxOikXqNab)^riioEIo*GU>XUj{oGTV?4yX%gjBiWhfdARqehgb#gq!iPRQ z;X}`!Vnkm?=((7v$tO^kob!&!_P@y9vh1!IGw<7x(0PAYuPR^ zd9mLa(knOTpUDYz2P$ej^U}2rJ{;?J9Mad|OIB|L+Ck9go7y$vV1y>oqC4u+jPc#> z?lb|HanTqqg(A5{RwUMkJ%_>H_6?`fIW?X=!QZC!+c-qEH1lE}^qjvnchJPKMs#8e z1t)91mP*q0Lzkc+o~dSkZ~*w=NiA*{3hsy-6nW=IpP1FZsHUc$Vt4jAXIC)lu)qV4 zzh-0S`}%G?EBt!dpv8J#TT6X;~s_fQ1hdH&Y50;Ps+eG@RaJ81a#N(RxWz2%;}u0 z1iZcuTmRz$zMBme{&?A&;p=~_1qJg_A`U59VV5tU7iG|0Q>IT1qoSJ`I_iDXNt$$` zXD+0RSzho+SU~M51ziW?E#=$7p!AV+5>jHvf+zae$h*UdeJstR!9=Tl#xaG-i`M27 z>E&FDxYsyA-8s>*A121r3lfets`YH>MDsc^1-3vZIo5sLJ4)A<^4Oo7_$NwHH;^*AaL+NxJnv8rm`maAJ31P?!{`>6(<+W(l{>SZQ zw2SORQQBSj_fqF@QsHo^yLp8?(ZBH~G^X1b zHa!KZ5AA94TR1Rxr-N<})On*g0sgHZT`YM6-96vBxt0o7j=f#P0vO=n{NW=)PC#f5 z@%C`-h9zpGP`5!tX>>$JoI{xb?1!HjRG%s9@`-~;2J;J6y$cU-ENB>!V|-<4)L?Jfk&&ufQkr9qRL<_7?(l~E4A`sX=iDm zp@@W6mV4Z@y^BI|;RPp9))_oQ=(yMh_N4cR2gmjnUkEuOuN((p?e{JaSz6h4?Hk!c z-xTBcF_qdJS){ykTh@aXXZgb$5)Yx1)<)Kw8A5zFiwmr1zKt;REkqBO5qtR?#}p$5 zcZ}xuo5;W0eU=+4@dWxTxE-#fi*$jrJ3YCYL5ih7)^;=h4j+dGJlYkrg^P0X9sd~m zJ(VI28n3?yQAQMrdYk|IeH?H#FSRzxLby0ab})T5YPV2%Bi{SQw9gKs*4Ofr^ndZ9F@UdOl#h~& z-esfn@V{UU|MuT_g?44c%K4R_Jflk|L5Nd4jm&)P%na)afrH}|Evp)pWtNy~#(|pT z@R}Kpnf*No2!tOK5VT517eFjes{*8bpGBZZtJt5;1dcPZV*PN-Z-lX6_rQd77Vd|o{sj1sL>`Hn>(RKOA3X`39`m>%;eff@wg?dXpNHDC{|e9t^a@gHTW z#JU1!SF)bMK-6_UIlbq$&DKmcXCm&S>y$^N!p->dvBe}>8qz}l*ViW|TU&vxW!(mq^n5s#Vr4Bbr&=BUxrWb1ZBu|nP_8(jW={0UX zScd!3LeWiDoqRSJ)l=B00obr5*E=)eL6Od=8@=73`y--SW1+TwD!?#UbTC7^|A*@2 z!`Tb(8#__|2iTP0oenN=>Y5`xs9L|epoXuG=}c>(qg(Fxn6-Z9@Z(V&@LWoa5Skj< z%}n1;v>UciR%nF8jbyGLEd(O4)2W?#)g!@9P<^K>CKY?t@tvP@X)~`j+xJ$WpW#y( ztibiQwuXCYJ{e-~a^ql%n5KTXvEZ1`Ew(Z(#1oFdqLiN>Dw)Y=Mh}IFSEZqvIhC zTpZ0LV$XWLmH|vy2r7OE^^NdZ?fNk)!sH3!g}ya&!L|h3tu109d(S_B>gNDwylF@@ zlVY^W;|+L1OU6lz2m{XL5@NipNvhNCnq>YM8b7U=6mfG#RGs2j6TeQNqhrUmz*a51 zGdi3nVO(Ni;t%8r;t%8rJN}|3i41AKVXA^FWYS{vL(7664NVPC5l8NIdISk*;7#u; znZ1Lm=_no~-|ajP-X(Tm7YSP^oMLOihmpl^$-qm5I^l9@Fix7d@sw+e=NsKTC=-Vx zkSpP6{p0_tgK`^{zabEL7I=;(0Og;(o&|4m}hQ z$sp4lvVMGv$d?S*wtwvEdPvD%+dW*5@GsCtf?Wm0n~v7^1_#|hZ2pt2LcZgFUTS3o z3$Q82W<~gMx8}v~`1SdIxOK^34hjHw^!q6<;Q;wc+Yt6OU zKnmIE#H|_Hc^ouWu0`g&YpO=sab!AYwzS>vO-4&b=!{tL8i?&fetzdhjsj{vAH!;JDZb8jbkaA zgzOR=w^`xfjYP!m&^Xofu{eDBfCk1a%Wvw`c`S@gNJm@h=uwC^Adb#djro?5%0r`& z|X5hnYiQ^tG; z!WY%6;zZk-GbUlT0-2$n*1bSO>5%FR`=2Wva2iPGvPWgj&^j6NtXOz+OL`&68}fhP z%SD@@lJ4eYx#Io^j#r#Cwv|9d7)s7x&7qZht`WO89zeac3P)EXP@KcEJ#jf#l51hvQ9Gt{XLCwOz%O5AB&JKKV}gVefSta-I~ZayJ7 zzyp?r=D!Bd!{bb0t;~zr;XHuHluVZ_Sv0ubP0!&=^ncy{SM2|W{ol0z&+Pwm`~SlJ zzqJ3a{+Q5PPyJ`ze=7d7;Xj-H^UQyq`_BvidFel1OT}xccr6vLrQ)?zyq1dBQhENz z^iUB}&J!F8ali_Xn6t6N$!Ce~WRIL5j!@1I$43lSU5(`lacd}DNWgUEIWS#$0;X%< zB0X&o>1l#xOwgyvbCeG9)|iL8W?kdKWoNQyFb#6Pw${bb!O!WL#q@5fwJ<$kFD8@` zk1%2c^XZ=5>kshKBx)#|Ks+nIgvKP1PdhuQ#}u6lS_TLewnv?jhvS0R!;%P^4{((^ zO+=@Oe<7ote5@>2URU;@P>Q@FZXQubulVBhnxYel=NN6BiLm#(pJbSi$va<@tEc+6 zu74H%+t9yF{d=Z=&-L%c1pLTF^3;FU{iotT8~(HDKhONlIni!fsKhdl4+FmFy#XxZqlBjiD2Q(Ljp1C zcKB(b-Ni*mA+|6?!E1?$=A#h-EDlm%;stXwA-|kainNAWpD?E1KkMIb`uF=BbM32M z8_$9xMMjP1IsI?GHeS&kk%>Fa?(nJpt?OS!|2FR0K-vFw`(LsD8zPJ&guoz-h#9aJ z&Btzea>lyu&y#f2yoe@0e00d1MU~NZaV)fwV`BQ*e}0=o0@YqdP%mieBymq+I+O2H z-Vdx=^KpQ@E-b|68sY*Uj6D0awP?xTpoOq-ruJWfwYbP4D0wNo1A}dSHihzQIJWTG zov;W)-6aVD+gFCoUj8n%qW6ovE#)m+r%Rv(K<@tIuTL;JT@cWI*8QjAKO6qD=|9iR zX|kE%-mkEwil%blo~E+i&Vq3Ym|_i^LVw}4hv-rzlJR;W9i4=b58G{y4;Ru^j;fun zAmhdoyAmVh>l6Zzq#*Nv1}EeJ}wYt^f->JEO6(D9$1q zj8s^u6~b1Fl=xS?VX$*D8|heAX51#Ihc(*Eu>fn>mpBfE<$%T-L#$;4^+hb0 zFQ*sUK@D$Qb*;4$)2I}LNHVK3WioFP?G$^`APqTG?b<0eC*x+-)c7p^l%~dH9cQnm z!uv2cKF=&UsW)L_2p3nfW3IsOj2kXzdw$+B5li^^cC+Q9Vit@{Zl_!=SBpF z@5w+Yl){T{_#Vz<=RCm`0(8~Ov9n2w!+KPZXagIk6uwqjJhR*Bgl-nQ zr{jsc)vaS#1ZfLI5$4RU5qbYfWD_`qvnxrArpb$A&B|o8{c7?4#Q!DI0xHQ~s1%ep zst0GngEWHD_@NJ+kaDdtoN7T8EXph#yw{%syX54~;GjQ606h2NTkD4nBb;s97Ht>R zbAnLgKrx&?VZ_X5+ky88yDsJAN(rj)1WD(I=1IC%f=6i`Hygz^Md+Li3h8t~s%CZ+ zcb6ZeKbBsU=#*#POQCQW5vB;lXHnhLX~Ic_M^tZcJD5mdvbqt-_FHK5&i14tb!e*P z)Pmxa9lMYZfo)t&HFS}H%82(cHfOTg<2)9+iU~io!_Z_d2Vzp@_eUu#x_l2b3nGjq z081R=jPafM(4NV(>yb5ckjGYVQS&zhTT_`b-#ZFc>|kn;5qTT-za=sop9}9(TLzB1 z-fy-Whxa1z^Y6&O!X;idn{c5LmUl5HzVaKMEH}YF|4v_hgMKsUUEr?iL6H@z6Gw8r zf=0r&dCoVY7fQ2nD-DuHds)L5#w|=DTU|boQ}0F>4V=tVxf4JDh7CR6{VrT*(6noQ zp0KERoBuNWmw*0?q5?7?IFrX-u%aB`QBY?=6qZ(YmBiZ~ab-34{v{=UfC931y!>(Y zbTs)6NlTwsl^ns1N!o!NaPpZ+uJ+zoWjsc;2<^r_8KnZMEK1h8kV*I+y#YqqSY`Zw#u z0k(t$ZxoZ$XcF*>7xqud58bfbW*|H>Nyc1T5fUa4T7pvB98~WL*J+ina35hQh|IHo z*<3OWh^3Gju`u;HaLyiM7Q>?T#<@NXA5wvoRo=a#+D9ysa;;i4csUMQ7TQPu!fDl_1$WZ(tT3D;Kh5q}W!&iiAboet1y|H=l}^QJm|& z0ZLHbmeF1N&(|aN5;LbO4+H&#*vkYTEnp?cuRH{`3IByx@upiEyI0wAvi-cqId>$6GezGrd<^ERiIG6 zQk*J)qm6|U?noV$P(V>Dq>2h@lD6$J&SJTw(&ZR2p&4XCw!y?*p!nrL{p_X!t~`Ji z{3hP z`8phSfFi!Jm&)ombQx?5F~Br`&=JE`!s~{o>}(k$rEoRcE|}#iUQu|gNfBfXWjtgV zsa5Gr-lD4X+!W!39O#=IFKl5JX*cn!wNX394j5aTuRiXVws9>#{`j@++lrr3Qbg(b70vYP0iHf+u| zFj`?8m`1DL>akMs3y^-Sj8?ez>p@rK>#w38?u(cYUMz1f(~dwRYz~;RY<1ZdUm!6S zlG(RUdzG~$Qeyk5&QxHL_h->gob*D9FF1Ab%#5Tlr|Mif87YvvmN>n59f-#@;v{=s zyfcQ;WeF3=3KLaEP#LPDcJo|&IVgkZ6vA;jAuoc0Y40BHNAf|SI~E|toLK4h8_c;U zcsEOSm!zy;S4%}gr{FthaJ5 z$YSQ?*4+ENs!O1-Y$k;2#?)|e(j#~Yz5)Y0OYI<$D|`w7LWT8KiY0>DXw_gl@}RRQ z{3iB3ybg4;rVc&~dWF(xDs-K}{c(7WV~<2YmtV*8&1=sZ$(8x&F*Ef?-#*i@BRC=0wBy-87@oN%vs+pVy0q=_}>M7YdG^D5J(MQcbpIYbR3j9czq z(;D3EBsg8p*eM#{owxue$o;F?Q$f&Q&VcYKCZPYeat-wP_Xl5Z))TB1;aLs$Z-RdQ zecsK>QA03s(UyMTCl$_VQdv7Nc@kL035X=u7Tnif;5z{rp}pE9xz+SK-;_SO&Qk`K zYT}#OxtELDX7HGBh7fSq2XhF4QPv02$@sJo$u@1!_`5+*Y|3OBR5^39ezQfoj%U_W zuH~6_rPUEk;+-ZnfV`POzyxkNu=&Tc4jLcYzw(YO8ar8_Wb9JoAXiyv42|9F8lFUM zTWwy79Hz=d(a}~vFR+Sbfox?wX{aa~xfmVe4^CNhvFwaB!9_uq%ARRjV9oNaR+Z?} z99-H1*T?le>`c$_ZB_xNHk z4Lo#DrPwY|OP?UWtRoHhM?8FUhKn)-!oP%qA1n+CxG#3^L>eD%+=%KKUFH}5$`k-mg zJXSf+Akom!IPm`I6g!TK2F!N$Y(y1y%6?(cQ{8nV%?l%{t`j8WuGIy94ZM%EMI&yXJ?(5WAip+k=Eo zyDR0Kc%l&G?k^#)}%cu_78cB#a`2vr$)>yn#E&T8FD z%VC{Z&iml>qcb3uvFylNgwv0h^df$^<=rPCAnzd{Jj%KIcf=?v?AO02#|>`o3Okl> zuCn9#vB!a5#>*28o(!8?gENI@Kt3||yTR!+1?a;=@~$1>y(ea5z4DS3s3)_U$e$@Z ztjC8+eAtK&oAKdUe0UxoUc`r&@!{1UQ?kdTa`lQ&gaHUJ!T^M)jqGVNdwTWW!VhL@9YuUi;xR#(MY_$-L^v4LwmsggVN!PuB>-WIP&=l7->1<4{UEA`@PvCSI zV0z;|tih82Vj!kr@F;LcHBOPsvqQE%KVJ6;t+mGHN$sHiggx^KuF=pU>RMqB#XBXSW(~ivC~};CDl(hNuAd}#}hhv4OuzpuQ4eY;fgqhhZ?Z#XlT}M-SVTJj23c%3QlP217kX9pg~25b?0^L3`h!wbpW8 zM+6lr*h#;}1{9#OI3s|n36HM7u0A5P{+Q>0SU8#Ea}j*I(n6kJxLU|7jKJH&dLiTI zyh0zcTD6e-OP;&m=9Fq*0lW+OOL@L=3$<3^jT^1|f63pt$vfbuJiCtMNE~yVrlKeN zJX?}Nb!tg*^T#Sl+nmi0C;*}6VaEY``k;r00SD(Z#{pxFO-7ZZ$yO$oPO4%f3fa10 z#g+lTvGn}tg6Ob#Q}Kb&g%a0vY%W2lA0u>IIJqsH%s8zZb2D~pDX4)e9QpO@VME-N zc)g&r30yr-gQ8y?hfZB7YOGQa?{XmQNOmMC=*q+jjgVz7T!Y1#sgX>Z!Pm=3MV>SU zM+}C0g1H{Px|m99g3i|J#sV}O0q=TjG*Xqxg+3FB=X0_vE`L%SgH)Z1Ib4JoULrNV zg>V#p9BQr1a0Ks%$u8tid)2hL7Mgn3AKetGL%dGnY<7caq8IEGnWUB|uLwAU`NnUI ztW@D*-5H3RVa^x^$h?lim?Droiw%tRk>lNriLPjbfSFWa8Vp9FQeE6>59A==$`Ak; z$F+AsqKRA0kxCwPN|NyTc8Cpp8;8i#{tTUHR>j&FMDFSp?iulNl`4C;p3#JejHFy) zn_VPWsYbkt9A%}-eTX5p^Df>W`Db94J+K?djYuXpmmt@e1kM2HOoctCQ`w`bSKvKu zGPDmyEr#Uyh{{L`h>hk7F-v!ibyGg$SWNy@dO6sQV*&ATyfOw|Fds7_uA?($Hqv?1 zretYs+Cp|SJaQ@}wtunT4?PJ7J)jgtBu|%$sa=@YtBH}BBqrIK@TI9$Cve@xS4LP8 zyrGE4AdD-EZ`!y`%8ODtoSN*TVJ}unv?M4uM5KZR0zXQVqhprw1}S@Jw02W-E`i5V zaH-dU`Uq%vJtMD7m@g}vv8!|T7{{Ht6IyAlfFa&Ox*0i6*DFG4z!j*GuA6iaowSAH zsbB0o&aGm>YcPi|WZYX8K7lWBT9lK>I4qi91M))l%*gr0yO}y(ErrB6v~ap@O-%J+ z?Q>wm2q>=O%?mjb{+3%Nhs!Bp<6%FIq-{DWEesnG9r&ZU^* zd*XyiuH#&OPM@J0Tx@a4Wn1>Tk0n&yX3SyIoBGp4_yL`uV%lI8q&_|FS=bzz{D_A_ z_%f!+Vmk_7L^&8zmM3PZ#o|}A9}xNZs5&ukJL3$myx`r1>d-<~j>!P*>(G>RtweZYIo39EnK@1cVij|gyk{|> zD^+6l4(M7)F$;mB@)alaeiW^+&1eVDat$sOkhCdC1!9o-aELOAF0rla{jzhM3$aZ2 z-YjRP!xg;jUj{@T?XmGN>h@%-Mr*>4)*1{Jy_qaoY1_|CO-NTnzS-U^sq=J%#e*gY zM8bS0EHOvmaCW=U1P0Nd4=rs=*g15src&kO*Px7(RbI#dWS=O2!1Q=1Iro!JQK<;a z8d$!dY_5Nis?B!4N$Iwwv7JcFQGz2Z=~vTd>B0Sb=!~O@7Kuo|A%4JI@jI3l_n{X> z$P94UzU(Q6Z%h>sf5l;S;<*zr#N)DL?-`V(;bqdW&SEib+p4&k z>q8gkc2*yw%N-xA0GV~Qe;7x|d`1Q|WAa3b<;o*h>JZw9odCWZDA+NAhUZ`}T$pFW zQ94E8sEIZZbFtkRU7Vq9=T;*EdolGHK$CoMiZYepr>1 zi4jlOs`ixOpn)^-EHI=Gchuz=f;cxgR@jWDky!S)q*wRzBlPgjDasYoD)T!y1o4H5 zYm!U25iFNhWoMv$4q+E3TorTJmBE>-z`S@!!p`X?7g10qfXjY|=MaQgwX_^$2{BVW zlNGPf3|q8!1BzWs-|p4-jC%Ag>^3IYgP1?0N7O+MrtL`fl)h+u3?m!xWEAd@*2@R5 zYF*pprA-dZH8-k1%00U0#&HOu?>)iAm=n|eic6t*MV%!$hxfVU;SzmX(jdZevQ`Ah zG;7viyx9Ad_lL)lnK>8IMB>L2+<|oOf~%(O#rKDn%C#Hwg);7o-mjQUT0ga0b5@kE z3TaE!B5=J;zf!sZ#~`IEaBxiTS8~g7)*L7TZml%VI_B+FlWHw%U)}-x9=eIb_gm8Y z*sVOOpyU}KQ~LVm)9bL8PZx~(M5Fx6r|xqQ)4VhWco}L@iDXl$UB)AwFJB^ZTBt%P3zT%(#Lsb?G#>)4ZWpjbx+@Het#R!0tb z`P3=$K9MFy7pf$BBe-)xRx*OUGa9jCVIQKvHChJTtE<$Cx)yU!pcS{}Fe%2MmbFQb z4R)idXfYjLmXvaEOAQWV2REsuqQ^Ij{`VYvv&JS%(mb9C}p=788oghPcmY`I05|=C(dT! zOo(@!y)d#7s0S;VrV80Jn+xH5X2nL_k#?*foeWhi>jE<|>oS=!n}kQI##7Q9}1EZ|!s^_+_R4M>9mEDR$~i zvtTaha8ZGMG>!3cYoqn5>_BymQdJ^3;S*eI%6bz`d->EIgi1hPX(dobOv=!gPu(t) zL34r@T!iAsVn$eitVD>b?x_m_MGZlZ&Kn*A~me7oNg zPc)s|b2?ju(5~x1uq!1?aryTurgI&OqhiQ~1Ek9&sW zbqPcTH$Zva$JWYT8$TbsoAapf&$6lcZ#jwC7Y#B+`Bt}u3dxP1&gQOM`o#jp+fW~{ z&ezu=_|1gCItqe)X&hjsI!_M)c5^;S$%%rL@3Z*YGs8(VqjusIz6v^MCU#)`Tf<#U^` zctnvIiZ!E@V%SMQ=KMWAkRN*}v5dblJSYM{6fctOdX0KE_sq0Xaq5XOt+knH>gYZ?c zEIXujSqq*Ma`BRW2RxO|wU2s3i z2w+{Hw7{<%*ViBr{_MI+tHL6_+bQcXmWtOOn@dCdGT;L2R}4AE8q)AsPB2_f5s8qJ zlh*Z|paGEbzVwdYp2^zecJl0FOf^Z>=^6>-(vU`l#U$p5ic)f!H{=wH`r)IL1*}`+ zWK9|2)}3I+JU5jHOsRX0w%%494w9WD~xt3A3kKfQhI$XT^UPnjHNfn($ARbSbxA0_N#Hw`gKs{ zI%wlMX!APg8N}K5mH1uu_%VollFMZ(*B~3$Ae+}9&p@j8I`QI>4>f?%g^RMGzY)SB zaCKGmKQ>m_PH|~5u?P4P1RX=1y%r`8HXYjqd7J86+gI*x(i`aTv|fsvRQ8(uI9&6` zs-C>mBJG< zy?+amhn;kFb0adC=;|@6L%(hZIi5gGhZ~Fs_cV7M?wd&lw$l;Z(;^d$fx&Z>c_(tQ zp{!GI`^2=LS(T`PP%0mJ?KU7JkqmYFwr4Xj+?&Cci+zZZMOL8%!Vmh8u1@eI-@&Os zoU#~|fK*?RL(wP9_j{wd=(N$V4U<-dyr^Jd99`IjT4@SU)oRuImzh-e(ut)R?BKRD zUi7h%$7lv&$jiq*_ZB0G^ukXnFNmWd=Go|1I{&KTQ+-PuY6=iRJ!3YiZ`wp_wa&P@0o z87&Mp=nx~&{Zj+;G9DMK0@RYs?iRZ(wL1jsI4L`by;WvT*HgrQ479@swC zWB>|@nymr>pCW`!sThH@5a*kn-l#?GQYY0~kK4Ue5_C7`&I6_ler~xtCPLqki*8%!@VS7TE41-g z9HfeH#o_oZLQY@Ft#(B|(IpNjNmpDPEFYYc<^P~taA8!8)S^^qTKhxUKQ-;9pWkZ! zbA&l=`|bYX35cZY?ZG~Cjhu4;+^z`p0+ibMQ?uZt{}#T+b}LcM-Fn~lM<5PyK25rs z53ht}aG#zk*6#5~(S1s|L)%;cqwPeSx6<%JzTw5vsULn|)BA97 zGH57Jke8MdLv+Rf7zVf6>zrKea;QV@Kr~>p&;X1bB<)OOJt6ei5VMK^C3B4mxya1D zpl}Nv;s9+zlqIpCj#L7QcSg`}mBa+cCKTo!oY@48Lu%Sn#z*jIvQ{wXFcOAak3+K+7O;%*ml2SKoBJ_i z_%jl+-{_(h(74fwvPDrqGqXiAqvp_dEafm0d2s=(EwQL%KdTj-ke!eq7Ou;Y?5NUA zMSw?-mS9Y@dYQG939?yc9I+}M?FY2Q3d%;xcB{167o}@#;6Oz@3~uaF>4-u9GvW>n zgOt{fbsY1QPRxNfMp(1;#B}s4aY1?g#T8}m=1aqZQ-ZXJING=V!} zZBooiKtbLSDzBnl^J9*zE?v z(ZiCm4+fxd7}R{>`$<~{}hl~R2{2+j8X=ra)D?bLfZ$F$RHA&ca z=GdXSyh4X*tiqFUj9g$T+%Z?(!4MfQPMB0Y=86s{7f-Qi5)t_V0XrgiTYI4Me-v?J zs=u)k+EZj(9tN19I^H{u2DMiD*N}lMo7&+M?ht{M469q3%cT>7IPgNQyPXT~{Qd7- zshO^%s456pUo64(?19q>enNq9FlmnfZY)5N({u$b@D4g)7M?2%sA$#?>?7~tnJsQ! z-Y%{H)&L+))zT;&=jR%|z^YCJnDNt`%w*K;avKWw6VtacsQ!(tGRP;8j)?nYR$%to zfSU=pV;<17+WhdS(5$VwGoCD{@)JvRO)9zq#Q&Hy8Ibf=dd0Cz_Cw_(wPa~4AY*U5 zVtP@I+{Ok3i>N6jnY|_QPk5%CYI*QG+Iur^F{vuLmu;9Dp|uG)Op+Qv$Giuo?u@F{)LsyUJ_>ru zEQc9fEhikjU#e^Bg46duJa4pce0C4I?I0)b?fQk7jD-l83LBg5gM=jSSXAL;6bv;J! zWNHz@Ypq!v^9)h7h9saHJbj#1>wrR~bIgM|H<*w<8&g{T(~Tj3YjC=xe>& z*Lumyd3>!hP%*eNhZisoY%4j#aB5XYYAnJWBDc+|N76CBN|6UenK6+u@Ze$NO-SzD93+16&kD>_Nd7>);0G?%2F0;D=5%-3;hMLZkg4a% zukk2zpYeBQ2d$xIYUPxNTvvw4dU#G)RHA*jDp_iAqf4eXGQmPeC8fdC*&@~mTnsXD2# zXVGLJ;DTbB)CJyB_!2@qkAjU@HZG_%%EQK4fHi2wm7C(HfAM>iwv;t^88-82LM3P6+ zzL+`ncNzMqPFQz#)eXSU*0VQ^1B_#xkViTp9(QKS)vgG0D98^vlz7 za=o0al#?6fUp_U&&#cPUT)R%a;u(~TlKu$s^{fay(qWpMY&Zk%B^})Zq>Q%W_uga}@Rc_U*a;si_d8IAjZKrpFWy`{L!CI8kQIcc-XoQToH+;dn@;Y$+ zCSc_z;KohB&6|MFZUR2P3HahB;LDqUuP~41J(4`l?zYtm;_?@KB>yaX{m-*2f1bVZ z=h>Top8f34v!DNY_KQEye);FwuNLcsg263NoQIoeJZ;bGux}0643~_-@ltXuSN79F z;f-=~vz&ZZPChRub#qjqs+Z;DD zwv3mzWxPVTX`FsKZ}-1E%^%nE$4dUVkw0$ckI(YQ=lSD{{PAV}_zIT!^msHlLDEL! z1V4Hzg@5xL<~ck`Ff*2NwtzL2>AJAVe21nL7ucShjvV1KXsS%pwFHVY2E4JPQ=GAq zPI1P7PI1P7PI1P7PI1P7PI1P7PI1P7uaIUM3=kKNbGx_ZWE`+Q4ycR+HpT&)tGs+Aj>xa8r<O| zTXSx&ZR6H=HgC<5AM4F+dwy%qi(7ME-kM`0UKj$M&BDk~92L``pojC}lLkW50pNYF zjS~qc6T{x?{jx?Hvq7kAP=>d|nX0FwFx-<@1zXlOYbIP(QY{=`bH=KF9cd)&+_vKUV zeRVB7A0F-2caJ{qeyP9PI^12@KH7S}^X^N%wtu*{`(=GKq^q@~-JRpw!F%3be|!V* z&C$X8>X-GEkahgwX#2z7?)x3;mx-6mu(PxGq0Uf!S^tyzD>v6)Db*iSUVml0{>ptH_0WNX_e^4~x?3%Sk3Sta z_@`3ot?EBM)Q`XH)!x24uDySI@91D}kKbjp17i-2flDgYnSucVK0KsEF)~j?C1kFc z3z@F9gk+b}^WVa4&@Px}NsoCx7jseEU!3qEFQtPQL~zU#`VO3E&3#@mM(93>bTKcm z{ZWvAY5$Avf@9&U26}VX0H`LIUFAtNjrLU@m9$!rjN_Qjz20Gm-9-BqS0bG? zafdZa$rc?fooTpcVT3i$oakf5YwE^6!Zp94B$UDr7`HNOE=AmC8#0#j&tox@940q; zt2U-5&eWWA&e{=yD}6l8baKbvVYs-M=n~gjf@0};x-UlF9`9Um9N`X@sovblm8?V| zkmj`2t6-Apy~JZ$&U;p@b=gY9lvTEdV;I4}bu7)x8g%g+pVvY<2jkH2)z#9(awt;~ zec5KEpHZloI1uStfLQqqjAlQtz-InqJNYIYk64!h@1Bj?trT42aE5R~1#J@8-+ZRx z&^;P^o1qL1TNuj;p@*}Ny@nsli?BZJ>$NIRK1}HoKMaw*;o$rWuW1c-ANMo2=7HxP z$~DyRIRC)-%PeCDnMb`pYV?6ew42I?j(W3a6=LCQ=IKE_!(B*+FT+oUxHuMhQ+~?Z z5C<*qLSe1OOjQ~%lyD`o+eKuI{#H;6k4ov5&djO5QeB9cZ2mNr>a_Pu@u=oSsR~KC zY1oYs1BJ0+B<+=qhDAUYwmAaKP^_f^F|$`39~R7WC$FCoi#i}NCbHXFX+J~)>9dq9 zw#$dXH7|devBSabQ{##;)$+w%)KqgC8j|h`1L7-T8;@JBiK!I=)#O#tY~v5JX3yt# zK2h_>X7R)6CcA~6n^$|!Dav-?!4pS;#EDF#RYf9(hli}olXus*^ zFHw^@hMgpQ)kg z1QN{p#ey>NrwfIG0u0g5LO}NLNt{ilAx{4NIxt067wFB=| z3wWU*W*)^@ADzk`>8?J27Q{{|N79nLYXBynTiFlTjdgLZPTTrZ%&et$nX*+XQic0W z8cV2)V}QIV>}4dps6I)}cBF}~5ylvy#_IL_-R~Hkh3-~D*8txL*XjTh?331uMH&;` z>8!!DurQ`prZ}Z~TR?=HLa{J?s|FIfDk=vJU_Hpz8=e+$cjHD)ebCQ3cY9q>FbDiw z0g&!M2NeHQ*Z5Fsk3AFH@RTkIA%G10##$`$L~2f0h>>dZ$vtm8F+?d|-&6C!kWZS?cw<$H+wc&c7`*MQf}Vjnx@Vb!Y(&!Bh2D}d=Y59v6LAnb7s|Pogu@D$&5aPKk-oiP_oh?~f7OUsK{cdmeGk2y1S1k}b9yk_T z!CXp?8XWf1Nx<;=;P~s2Hk{zhZq<)>;#AE1di*&)XE#U6kE-CD#Th32P{5X)fsn)N zQUrr3eoKf}juaHU9gYdI|JLjjD5saa4$B1r^14z#^j|8F=e}MoWyHHfm>@ZeS#4Yi zt>;oX5tyt%cqx5!yWWfbTjN z8ypuo!HWOOkWCv5|bkxs=#g5c$IW@P!2p` zp0(47okH6lUG%5?kyg)q%iF?{#2|TIa3tiMFXyB2@3cI+G3C&m=$2-#gY-o%Y7hiV z(ihuuh;#tj&Zibng7XY^ugVN^2yUAeF@4!uE+4c^plkuA%*+Z*rRHW!P~EwNO7Sa4JZ5=M zpL9k8*HA3C%;IRx4IkpvV1BQJZ(-@w)WisBoeqolxAYy4yJ zFe=W(s3q`gWSVZuv{R)lfLIrIFCN(#`*l#W#l*zuQc4j5i&Y>ndiShkoJFSbOcrBaPqL%wogr`w%la%paF6F^K&XhB@L$x7{KwY z+%*!C1C!@M7Bq(EqMQZo3lJBz;Feu@lO*TGjn8OuT{_Gg>z3kCNb{=w#e4k`j{K*m zc8n_={iM@65oAZ@{HQ4`p+sD+gg*~i9YS3d6!EG7-c z=2{}dLyPkBlhpe-X8IKekz3HG5rWw`;9H3=yKndAsWo;*s0GeONaKVKhd_y3(T%6$ z=gva#`IdP1<&38AR1SWYD$_qh>XE$$A4q zTASh(ZtZT72*7ywxQH^WIDK#nTnbFGnKCIl;TGCW&fsmnZ46)zIf!T6 z>H|)SD45a_XFqh(zz=06Ef2v?xKu?20QYqwPQ&nvA0EK@lmxakhDhv~2Ef9WPW9ut zbKO28CP{D2_XcN;ZeYhaTVW^EeRpY1q^d-cNwHJlzDHBk`7mUe1{d4W5S&NAKxcGx|odH2DNj>W?q);Sk0U1AVxe=>LgzGGpc zcgwUc3yRRy$*B+v+G_@@oDnc5X`P`NgGccOB9rADv3fsV%YQiAIJZ!&Tq@i`0p+BKbhsqAG1SX5qiQ9qi={bM z3-fT(`-|L{z+U-*lh8WfOTfyUht{!M?ZZrv9T3^+K@>S0Aee|}WRXpWFT|DDE3!V( z>W%QK0JPWZp0$TW!Dqhrz-c|wHX zR=8^zBpx&-h=2ZdYxu9D{tu_U%bA8rvKB^uN}umZ{DZU5F+j<WTFARpQmx-oT z_9Li>T!jGl_rJRU16pW+*rp+JLD_|rL#MMiDLlJMZuctD5pdbZ6N#!+RMT15a3GmO z?d?n5f69$Ntt?|az+0PTB^hlzz?;{rf6XTZfh7Cqa6>;e_UUOOP zy|D;3(|Lap*LguXcEx>V-qp4iVi#ojvAfYq(Z1@yo^NOz%O~cxwD=E{7npV-23#d4 zb^F7G9R5)klP!L0w?7Y#H87=8?C zCDe!1N8A#r#dl4qH8^WG(a}C+#=ut*=oT zb}b+UjFS#zf}#rdQ0;x|N`WMDs^}?XXZtyR5USiap`* zLiiE5%K+S{hW8225I{!$0(4nOPK6voi$N3C1d4nheT4&pDK%)Jlw-=A%4VZ%l{uwl zEn9GbX%#q1&RD=!)?ziNmzGi_n;!%pRJ3>xl>mcT!>*qL+U z6x&J8f115P%u`T4sdN{~m#B<(#!mcn3PGawaw)}u6T_8CNk0|ix1P>66lFUcL7OWk zwCmb=zG%={G+||nu?XrtC~46k5Kx8%+9ptOdYEy;46ks;H1+_)tvBk>^Al z5LA^f074JJ{TJ(~Z+-Z5 zm@$ju=THhNxCvsD5Q<4N{zS&lo3sj1;}GTIqBmCAtR z)LRmq)5x9v$P{@ZvV_859=${mtHfQzds)C=zRPW<) zq4UDG<>^>5s{o2{i$`IcU8zzgC1VdoK^5(ixwzM8U5a6XZUt zNL_#mn+z%~%30FJv`g}Q>RakTtWv)@(^zF%E_5*=Eeix(1kzn*<%Hl+!*nJ^kS0@v zYCaXW9w+5?O{1~98cr6N@{)uvW2FkjrRqk;G`;@3)oWdUqrQF^c0MM3)gY4}|azm@R2F`K$` zanQT61cYpy9Lj;K3BZK+r(NtXv#z`;K3Vm&;&+Jm(`kR`%P&qyCW z^56=~v?0r2G2-#GV%6d#C&f)r$Sy-~NMYk6n;{iV5pL?dl@P|pF4hVg^K20Ynet6T zWS@^oYXh4w=qzuKdRHu=EDA3^F`^2CQwWporj#ZY?l=1mbEW6Z{UxL`n+@0^8dbcU1r3}o&KYDl0Hx&_=0_6@FBqbQrt63V3Kz#HX4T6X`# z$0MntTJdW4VecKTTfX%`EHiVA_KG+T;k(6euG*f(@+RmNVX}@&lGLDMS%_ ze39LqJ)R}uGKPN)a*Np?iG-QKi!!MkM;;H@0Of{;=ZqW@txhhFJm)qZUSq(;fV#Oc zGVvNBm>;;oYpw|yYx1$RYvb&LbyuGMC+sg|4|RO5 zc$W-EJlaeNU#tF2IQ9Qu>_;0v_2#(Bo>#+9g5 zVtR>5lML3y`i8*&E#+%7;i^;k8kvX;By%<#&+zIO%0eiMCdN`wna4NebHGyej+?(; zxf#5H!AFfV&NLt!$sjXf?nu9qRkzqlkFyMOD=bCgEu$|VKRjTQsvX?S3(xm%)yO^bO3Wblj2f{9kwMcx@t&$Ju~$eGgxwG?8Zp%E8< zMbzA&gsD_r?`xc}#{0MF?D6-B6u?H+A-1i~jV{HIcM}f4rC(=Z>V8GX&Wt3jxu6Vp zo^hcW88~D1o{pv0$I_Lt^u}0vb1eOAg0N^TwtE=d^m~^%PX>1qoM%|+h7mRfSuCWL zd`L1FfGK20I3Ci)8rcE1pwnMOvw3f3{|l)M^avHa!*twy{27FAP< z|A{M>FafqZkgV&#do6B9#9RX_Vm@x{OL#y?q$bKVgvJ%&2$9&_Q8FSCwlA5Z?W^At z6znpS%6*Ex-1M2Th3awUfugmJs(Z%dbdNPXYtQx3#Rax+X-52MmSt}Bh!wxrvv{BB zGK)Am#%fzcBQp)ApzM$k`9pKioHBP-jr5E?NtE8N`?H%;=L{b0qmnEzNMICTz)hN3vMOl^$%Sc-qO z)X$fQ%QY2eM25Lia{0s*IZTl?P;>b2_EE6}W<&<-3}xhs=+5Hc{*TvqYB;dKS4;6G zq=d>hiJwL3H+U=~7)o{D`ib18k7FGszIk5E{5LXP^@Z{CxW~UJOorBfJX)}Dhg2P| zY@s_Cq2-aRD>SC0HnP+sWH_nho<#BXiSSVP!Z;WCovp3yZ5BvmR+My3g&hsKcw71u z%`Aju3^MDE5~C9^?0h!$U(@xWRf^i%UGw<$4NvbU4>K~jgQBNENBo+R@m#Ugui0sC zf@e+g>f!HLyoaD}qm!-hSyl-8$Y|DL2_s-1j zilijlzxXXh>fj7zYDr2y-s|TF0w9GI2yjuLB>J!4&o?5nDhmMB{R@eT%&N-DjEp-X zUC@c5mW)KJKdFlfF^t`}$)Ey*OLndYK%5d{_m9~OwMIm;{6Ta1#pk*h9kEXzdoPW7 z34?%pjY9-uKeNPO7RvkCTGblz0^Vfq)`b=kTBD!E%2+=gV3DaGq7vr6LWo!D0-t0C zKMs4&uhwf<8?~#=zu&Fi5;8#y>XOIv#N@3hXUs^M_yT8^p3w)Jr;DbX7gK$90%9eS zNJU^x)hGZ1)PsW1b8=btJLqsrqUSNL`)Uvv+DE* zlJ2H4HTf;`32b`$LJ7Ca8+ed$7ua__Grj__f~^o%ER~4(82hR)+m>zPwZ<1ukrB#NbPw4Y^uzZ6gx^Auu|e zOr7Z5GYoRq`SG;Zn&ID$*KYh`bS+$i^2MN=5v?2ikf<_udVT?}A%vr0XIln$3No;? zh{kEbxhRDEPIV>GGC814+@e7(SFa1`%sCH4kRG-_(iPMUc#&72BW# zMb(9fTP!%bP|n_4O=VewwzbnFPUBVmBt|9VtJ&@ zF$Yx-z(52V6R25~-Qp=_(=Xv~I)C(M*51ByYv?F&vkE>!qlrB2f|wu*09UneXYATE z7da+4o@wizb{DE znA|Bni$2J>c^{3tSQ>?V)&&gy=I{w$fJ=OGkMuq!=>-S`|B(?WIYH&bax!;LFuBV>iH|)93%|3Q&(G~P_|(*J7M1LJ>N@;+2Q8;+8AW(>8rmK z6Ia&1yhNRvZLlrdbge1mAQFhCF@`#tHWs|7F|XdxA{?Q z&DPw5MPYJ5x6jY*OH8-*ygac%U&6Z+q2dLL;j~I@VmYoMeSQqhWr9fSR-7=7sy7GD z1QWI_y&u#8pOH}B{*0vF_L_ysBWhW=x>NtwHNE-Ypm@yNAmt{e)7}n|8af~6B2C4F z7Z`1srwdn@g`M$bJY#p~_F4bEMen<1fvwXkPMBL*jrfWg^_PrxAN74PCPo5`Z8!E@Y+XV3)|8prE6UkMGbTh-72T zuca>lO0gWN_|~HFaN-QZ&%ct{PXmMy#a7a`_8n3ZtYVgPRg_)Y#1ywS$@sBQ0xhJC z8Arx;V*_hEuQ@5N=B!b)63fV}n&S60xinN+j(K9!NKWOW6=Larg(vLM^jT6q-jU$T zQC~>LeuH%Ff;{+;gk?35B595+wq=0fCg-v!E3Ck!qeF%Od4RuUL@%64z?sbG=!6i^ z(yO3_iK@Utw-EyIk+iaBFaoV6-ZH#m2(=1C)K^L5L8@}A6ni{8_!0_o@K3mbkR5l^ z!BL9&#y3^>YhaZ#kqDlaqQ&>Fj_i^q-7t}C?tLk-GD)zOveP+Ca)^yo_8gt~R zYHV$*GCMP#mM&2GB&n~2BOWtxa&RZm&lL!UU;&&;4FIQ25F)sze{jT78rwM64ryL0 zLPDQ70lf9GQ`~sl8mRfYf9(qY{2U5*!lKmwNg%?K6c%0(C_AtnV>TNM<}PsGd=@kDGTUhA`;iLn6Q1&F^kS7l6pH$^{q6Miu+>5+oyK+ zXAN9weJirJa9-a#5?|PE+ElSVKdMk#c}7?8D{Q48dWJnqzURc8SRu)XXDrl%n;xlP z6hs~=GZQ|z-qgN(Fzt;TzEb{LFMn;6zc%er>k}Wf?vF~habil`#$hStuk21fbJmb!6eiH!@ZCF6<9H^T=Cy&7L z6Sp#m4)Ai7#(+**MK}mLEuWA^BFr5d9)iO;;`=4NL*1|^vDe)npFRDh{7JY6Wkoax zt%svoS3?((ymy^*QY?5V7KOb&seipwX6+|zLSXi@&Or5PeH`{*j)hALL5R0cmy^xJ zCL6HW3lC?kA1_Vh0j2H2>u6px*mb{Pz5K~A0r6r*%!TFN2AQVX&D#g`Vlk{&Qk1z% z{%B%9$vZDR_KiO5_Cux1*sAjsBJlDYYwju`DLjDL_GD&5Q(sR*U>cH;C5E8w?5)@r zy+#s-SyRzOYM8l0BZb`Ntq1+HS_2~Ok8gg&zgRf z*JIOFZ(q(>E<WG}whgoTW zi=F1oAt2Mc<=ZPR{ArBEnyR^93`kl4+=7w>DiaxqYN9Fvk20BEG?v)I)YTf$uAnpu z)<$oXa+Bv@11-m(pWup*|_zaCnX zU*0)aUP!5=TXz%omJ1W|^(8@5mb$4@jPaV{9fXvLlKi4#91)2pq$}^#st9E}Yyz)S zBg8J7(Ey-r6JO7SRQ+NAyl?DtRQpgtwTOs}YD#u!JW9pXTYhx;vF7p(+jINXYhHH3 zP8qB?(2_$nm&I=n#zE`jpp9|R<~Zo#IOx$h=QG8T{R3@b|YTe&zau zE8y!_z&EadZ(ad^IPdS35De8W&J_@ za=m`JQNP@*UnaaSlRc_!m4VW>%0OvbWuUaJGSGy_r)`z>O4}*}rEQgg(zeP#X>1xF#^db5ZSxw z=CM))p~NA+P~^MWHc4f-6{JHhM60F)eT>(URn>+8C7sHj8z!#+-f^HY!i#grC$(yt zaxlc;j`|l(923faG&5>aJX6`CBw=DzF5U&6Xe6@C{L!DC>7nKy--cOi!^%(bT7{OI zy*HH-keKslf53#+|3oA~m{q6Hsmu7Vm=5WpC?ZXD3Cfp1)E{cTTlQxoEi+#>`nWM5 z*o8`Nk%1CgXP|`E87QH321;n1ff8D0poG>LD4}%*N@$&d5?W`V60LLCdd&Eq$}FK8 zpI!9I>Im%PPqu#g-i=S*yZOo1ho5YH^vTx8pKSd$?HThZ=#x#;3+y%{YdFCR&PWe? zjI>&L$LUN^sqacRJ}6`uF+Ig7ARKSC@R%U%Nd!`^7mw+-Bpi95Ibw)f5CwCqy>+-KU=WXPw_F6e=o`n=;dNh3}fjORcfQ|FodFOq9c!Q7DPP@@-f6)Ki zjhGgf*UE{RYDIL%LcIgh-BYSQ9#|eN7czso+OgJessbf+F%wa#(%Mpii_kDiv(bwA zCN<$Wgb?`9pRN~pu^TPr@Lr&*7hlj~o;&xP;Dt07w>3^-zBY||3j4MFm}#nDm;GEA zP`Mi=Qc4*?mMSx5NttqKON1p|&l5(J$D~A}QrON0zPhJ^Y6tD&32Jv(eQzpntlWec zsyZjc(cyZao@A0f3|EAinz3D*j)m{aqx*aprNG!1+PQpERHg8IB8F?KhJxWukx~GK zd$9uy98%;yEJQ`JBa5KCrYP6p3eia@DeKy=|7zp-j2bwG7=s~*(@r0&)4#$#JOK+R)!(<6lO*RAvV&GDhY$L>l(4Pt>D zfC>a9sn-q;XkMbB5)|VU5Dy`Nb?p{9zkjdUrKsU0vy)8;cBzB5Zv~4eE{^&y2=RL< zk*e$zrGWQdy?PVO%V)B5{IxVQ%$hS(Kg*;f#mzA&j7j zC$hi>gtdz%Vvh->YHd|if1?Q8@%O@`rITc$IWOiEgYlCcY+O9FqSE~jXNdknh_6A6pe~|Je6Sa0eYK0A1HnUZ za`HGJ)X~!N1|^%u#$66?PJzlq6(5PBK-2R}o?&1zKgyr$)z6LU=VtZuVfFJ-_49G{ z^V{m@ch%4D|IVoVZR-!R-|N}$jlV;0Aq#f;hESyV#x~jg-TlM+=pXQzL2>`5x9#42 z$c`sqtqd*v;uVaj8|ef$$EHpbN(%k?hWpsYa^7zj=6hq3VGCk%q0liLSd=fA7Ul-> z503PLf`|Gq(N-c6KfT%scwhtm6EW7q&UqK#J8>Tg`sA_{m!RH%{zrY39{ZOoI@xn2 z$5}-X_KL(JBWbdh;u{s^l-FEC#3U+=7(zdk8{uA}puqzEfDn{jt`Z*FE5Nz734jPj zcq8Nf0~IETBYv0`JD$M{2&yo(|57;5rLfJnV_(tw38cjx@`%LGlr_ciKx=< zYKDX9<3Iz$Tf>_I@jS8*3~1g)zo~}oM}49BJ;ebNS76)I`p4eZvllb4u4l7r5(>1V z?G}$gP!F)Bx>yWtBe`o9hY|Z0p5~cG59VNwexfn*$hej0DMvbFN?Ul5&<#n+RPVOQ zpOT8D{j)4L9H>>&^=^%NVn7iD0WD`yXu8%q=M#U1*zJnWFwy z{PM`s{{6v`+^fiiWvffq8&*VM{+MmHm2!J$-bx&?i1b^Y7H!iORg1Rx2!db;+2TWr z&-E*Z6R1kPMF_Hg-MH}v{ zh&H(<@2sOeSj#&lBm~7wR4$|Aln-DEDVT>+uiSgT)(XlmaueF-Dd~B)I3gmokxz@F z^c#LR=-)gtpdJ-Ds`=GMt!DXK0Bk&ryEoh#ZJ_D)+yre42}*yq<0K zdly63ch@|$IH{K&biH6fX<}g(gS{|_!cBfTQ@|qqCyT4Mm2?N%3DZ)lW~UW=y0En@ zDT&ZmOfMp8=#7lzLH|^Sc4|WzL&Wyu2r`O&D@)D<@G?@kG7kC75dR^}rd}c)48pWS z1kh@8JZg36JfTOtW0tkIbPP;ks}YP9`s~vJJIifmnMi>SaaOHMRx71gd9jk#Z#RfIPA%IZ|5AQI9uiQBL^!(@ #-6%43Bf5M0Dn%?|!GQlwoMr zJZnl9_ACY|WHpk#yK^@WLoyzizWG{9i7EGkJ-SWF+yfN0L%!WVE{H;Fw-y@_o-7L& z0`U?S56bK_*|9&@EL6_s_Skf7eenH2D`Vq5wgs;D4hvOU4x^Zi>1QUm27)@!!@H{S=#QQg+4WmH@uSMQlbaG1_zaux z>1@+NWE#iq?t=x7z1y>k-$pLi>#ZC0%gyXLwVp)Ze#=p#rBK~l;{zVGM4Exw?-{(dHIy9s&KIQ2u0R;kqyvku z+3MnNBhdS-5`R5b)=f{?vc)SPI4O!NAq4LZcST7hWLFQlKBFCiy49LDqD;yZEEPA~ zTg;ur#{Phyu+cWAkQ$^twJs|Vm_Qp-8PNzgc0PMf4#kZAu=o3R_Q*B`d}LBY&(qK6 zjdSE({qi1AHS6)A^ZW1J_F_EIcUyZf*Xa#6e*@8_Dj+b}c}sd4oEvgrmqz$a*86D0 ziilHsN_R3vXU(4_e+m{;1b0Q~+=%zU==7`jOnbXhrG+I~;w_bX42Ju(1#dI431MlDZdt&tZhqgYv3?<5b+sfRH z9?qyGNhLzhi}#?ufH)0?tR!2WXMIB0q^8aiO$Ld7uLH4}R+kA(24b>IHej;^iz>Hp zq5#F0!KZjQ?jxLqR97O@I|#$Sx{cWEeMRVt>}Hjx#Z?6>b#t%c_{c3{YlewViAmkY z<<~ABjqb*Br+zcJJ=?8eiE5W}s?~V2(n>a{kcp}{Lwn8S)Jg>jxH?0!l;a}IIH_gE z%mtQ=$4<00@XjE-X?ZTvwYWsDqwc>+F~wqbA+iLHI3%{X*PuXN;DlN^OdKWRS^=wF z4&XD}lzwVhJo!Q=ZUH zk5fm=WABnPtPK2{2oPN%H4>dL3Gc$}8y&07*Sbx;YLkS|O^{diNK?ne--D#1n4XpL z7w2HL=x8>9dl(w7Zp14ljJI<=QH4~28+v_dxg39@F>i5ZShY(5TxfQ&RTEF!Ka<-Y z8+#^0kfJe$4I2oveP6DnvU{iZWKc8N<6dBjRbjEqS&*)+n$B$XuR}aZ znr+hf6E$TECMo=Adm|BpNTqDw4SM)AYxC#co6u6y6dsynn+XrkBp<3MlO*^i6)IR7 zO2d=KM5zEApJ>N<>$GjNubBJUSm5XSTZg9)B>a|`EzFad+GB<;J4^t7!0>|OyO2e| zh%OS34tG)5U=F)$`Agv`rCu}m6RQ37eSCEn#dX*X{}j=S9%kui-g~wsyO)P-t^Vv4 zh<~=YQdgO*s)Y=QL9*Iu#&ffII7!)(DMSno^e#s5dCaIILtY?2B+2#@9%espefs?d z-ufQH7qNVM(R&xs2SL`HpGnqcgMiq-t#5q8i59%rcex$}{W!IhqU6S2jiFNDG$RfbAvzusmiD*W|^0;2ihdt3AVS0&=S|eI)=4M2DuXD zr4l&!^_%Dkrl+3L#-h$cVy8OLHkyr?k2W)5(ahn^Fnvftio}}g53sB^x<98MzoZ|( zVvV#W*SCJIU;a|R{PntQ*o`hqg|F%JSFfv00G3PClXFoLuvsHis5yMWa^+9Cytb=? zs-cwbeEpVfu}^V+Gdp`Z);w$UOK;Dt8+q$jrx%>hbRr2XsVI3f1k@kQlA#qLB2x36 zcSCkjc|C$otIF6=r}-?x0t>0@8%bS9UT@lRhnWR4Tx=K&RRiwgb>04@)N#j^UB$QP zgtI_z6;~;mq{$HG!_%R3NoX@QFalt#eD4%uTwBWT!m%uU?Crr&m)8)d-W3aFMcpG^ z&Zn}sc7?f=bmJwH43Zc?WHb>s{4MU*;4vi@9(|2^5&gk+lb?n&{!g;E^jtGE>H>Yo z?Nqwh-9Zxdm>@e{Qt6%`LZ^TSJ=SO*JQORmINd)vjU^|`Ao98Gq@J?T9^Gg)=WFJq8jg{2Drbp&-= z7jKv4Lta5qGuutYQuQqk39khzj(Y{>eFYK-D;a{Tr#f-JP0-a4e1uXUKS zJYH}5fe-XwOHdq>H$ zT{Reg%}QE|s@tN;71cHKWDp;Hy7JpW5g(*_KsJ6J1*ncgt;et7r^oMdj>QM89C$rQ zT?d7RR{IfR;}Yqj`K56qHck*0TkXi1pl09&*Oci-n{J<>nl4|AN|<(R!I*scSC}#g z@yTN+gu8!J+}c0WF=8H_Bs{}CK^TF!AEb?135bP|Q|X(IqP|05g6F=cVVPk7;p4<8 za2qKmmy+QSD=rS-c20&Y0`{y%7r^Q8ExZzo3SKRqN)P~MENQl*pjSHKi24C6hzeX$ z)s2!>1+iNrfc3xMftGeQ7J-1?v1wkGCa9}st>;zZA=Rd!gRU6f zXoDF{p)salGpmTMW}lF=kQ%2L7m;~|eeW;2?-~)*3FSS+Won_OcfA2|^YEuYOIQCm zv%zn%;@6=EeiJ-1bhCF%3J2Wfnp@qyRWq0*J^g+r_D$@7kQ@8!Fs-l4DXQf;+LEwk zAym}xlz-hRekvMS<-r3so0P+N665q=qtAnpg`Bx&l+)##ga$u=gLMcqF1hp4Q4f`l zO>j=QE$qQN%Jy%I40n~zYE;q%D51BEkj51t%qNXwSQKY-*-vBkif>oqxq{v!x|aBC zilCA|z`knp9VjB7?81;`SHhxS=+oK*5NYzJC`=eN7n!*HdQGw*r%RiFp2VRg{0JQH zU6Fl+qXVp8kQ%V~^|=$Or4n_5iLRCa?u^3vd{PN@di12zD3~_?hbv>fErfX2IL(z@HMcR z0Jwd>1iBr>QQy%pG=sKKzYgJJ9bogo)pJPLGinz3r>8xWcIX$`IgtDn~Yr#*yw^mK9Afvm#C8PvhsC{0JsOUuJA#7kzdVL|n@hIe4E%JnhXd$(7e z$C!+LJ~+gAosV(|kKTflggR_=9)Vq$2~{TKhgBi*=IlJ|Y+g0fPU0zoGTwxtV~OL1 zkyK?o;T};71L`23ODQT*Eu1U2tWgf22F(j- zrJ^&gzuc1wJ=1V#4qih>dL}Ol$)T!A3TL)h|`rhBsfqc zU8DZ!+_Qyrt%bQL=F{cRC&y>qd+92nl1N_SxnG?qx65NkplUkLeWC~^gZdPTjro2w5g1Ga|X2z4}98t-+_}$uY}ro z)9c*~O7RM-Yp+2ph>$q@)#Yk+Dc|XVB4ZJ*#5G_sA9}NhV#iU#bZUr#shj?AqKzPn zy!Bt~P=fjbg-R5cJv3il6I=JLx{@C8m8%M2_V?Tkvo}8Lw7abz7FA?ZWIkSb2Ovs!m99?tHFt-GWP`RlvkD2O*nQ*|2 z?CyZNcDF(wAm2(+L6zCD^fb`P3g_&1TZCTl9y<7O&^!{f@%fZsdMBA+MnCP3S2X|! zX_z(zQ5!9>NtM9W^ZA8vQEuiv;;Q*=`Lv{`(32Bh+26W4*kTQwTbnI|_q$ec09&0Vcbuo{cb&!ABl1 z+en1|>oxVz9t^CL8&h!4LYe}8ONG35hi6m(eGB#&7Fn>FHV(p4wY`hau`R?__gh`a&_0UL@$xY)q@gCG zU1OC4$qFVs3{jMB4>72FiO_?lD5k}dQH@Ajf&2u8!HI(L1b{+y%(hYC4U3?&H2j>T zz_EMvb!g@G&0z+Y(77dE_P8j2Yk9i*z?={b7UlC);UO

g1CPpx0Ts!XxR$|KFfQU6R%+$N(#|hIagjH#Ecd8qI~|4M!V4a&tTPyr&~fo3 z>|h@b_K)l>z7TRmj5)i&+V7ns54AF0z_-1JzJBg+F!j9d{l2J(VJAnjoPzeH?H#F9kZ9 zNLWNhb})T9YPV3XqdV}8={-A)T6aeolYQVuRq@+q5jHxaCeUw;mJy=t`IvyOV9{mC zs?mCk5WHaCDM&4|LFZ!|ANoH#_7_KJS%V*pNMQ(9KQL={B7*6Q4?Kn9zZ??b0=hdUZDA7ulD_aCY1suVh zw#l!K=`jZvs6lWvkM40$1NP9$_sn$_M^=_ftSj(=B|9w)L|x~u(|c}3RoAV6&a{dI zFg!RCgH?r9&8oxS1?y*D%9WXF&UV~K^(vQ6#oqA+XUk92H>9;-W{U|vaP1{N;FxVJ z6C^dhfJA}c(U5=#OIzJ;&>;uA7~2|FKP@U3+P`WSi)D0PV>(ar0lB~geHhJq+y3A4 zUPv;qP)h3QT=^PqL0D8=1a?)+NpmRUY#dqk59LGYA2_egGz?1PEJ|uPiwK|l>?qVl zzmUaXg(JOAJ~j9fVs%hcLW=N6w!~1=XSul?vm4>JNTXSGav@=iPGF-3V8fO?0nJzl zMLMN6l!6ED9*N$Lh1&Y50K*#6!Qk!gD4JP5mA&wxu@jYxfK9{R>EMy4&N$M8s`aaL zYWU`u&LkDOw&iY^S$k&=J{`v4%SF%#p{bGG%#`^A@?i^Qg+@r+Nap&{{2&55o!SXr zJrcJCy?VN0BDYr^-}yP0P4jBAeQyQ&89tT43S4h%Yq$sLV@Qz?ykG$_hrU#ExpAf; z>ymGz@JKOi!rg|BIIkS%=nxwxMh9h4#wY#2p1^G8-w=mRd%$z755AGOH0Q_f94O zfsqJx!s60O97gdSD%TcIV!Gi`#uG;rSMNc`AOBY!)Y_>04Qa@;KytKp>|sCMoW)+o zieWzL1h0asN|7R}I#%=!v%mlrGxk`Xy?~mLN03G>jyN8Dp zo(tM)vDl!}Q&fQ7V80tE&402p$dCQcORbF9|2O4it*}MzV!iksA4A{Twk{aVK>_e9 z^u9U#DKFsw`EA>A5SmsfEgNg|Y!?5=ckN!qmfFuGLJQfk@v&v+9D-;~I|K1}JU4ev zyg!}=g0_3DhvQ&`A@hq}9na8*ehIsZ$XvqKk3&KVt?5MO1sZu26i=?7=45WFM%lq> zI%ih8-S16COFD@avb-BR*rU&?qw~JO-WzQ(O^aK#Dd#X&fYZP#>-8 z_JTY);ag-UvRASQxH3~f7vb_+^Mt;EIS<%{}qX41W`7EXzZsQl@XU<30XQW@hW9( zKkZNw0bZNHj)aS}Pn)31pLVn^pkM7Knk#$Fcq_)RkT@^opir2BtFj#zzKC5E4FNl3 zm8cIL9Boe+#2qMERIQ5nZf7o?1P2Rrg9&ck3q+9?s=ly`xe5XQf^;r>RMreAA)B8S z3vX^o%OmMQt`dB?Xg*ZZJ)$gEyc|*cinG8z5y%2#!{Ls+TXbGIs7XO&67rKFJ58ib z;jq9r3FO)&wWG^6qY#G|&@w4gM87#FYNzI`~T{X3BC2yf7bn{;y)Yyv*|z2{O7s+#J#J1JdSRNBshth=v ztW%x?>y#%r?)={3QEd>9YJzo1XsXFGR0wkHn1?N9q2lai$H8Z?B6761*2O2n4*{BS z^=_)QFg;*%CEyZ|a8`sI>Ym=~5Ag0JyeU*Y9@Ae!|B=XHo~_Y?pUwrH0h9+brH<#r zLczRYbOg-@c-5RFBD{p&kbO_?Se7dXEqhRmM_v&dj^LtKd~teB(ci>#j9AV@*oWQE zvf;<%oo~t2Q~g`lzl#2C=-;OPJ=4GE`uAc22ID+=>ObrLQ}Le-|Jn4PXa4ite_l*L z_4JVJQ(|?}%&vXBI0R{LlI=80(%DE3unxaribwBpN#>9NiG)j7y@&OTh zXirh$zi{f&h!}M{S+&sa;?1K#U>Kobp2QXN(TD&Rr>QR?fjOFx3(qJ;_CiTdeAVw? z^zS$Q`+bhN_EoQ)WWkXlqsH?D9x%5Yujr1*#GPh$_*DPa^{=9T8+UD>?Ekv`uh{<$ z5ylZBT@Wd>yIYIqW4AmxV_o;>Njho{N0T2vIb_ZP+Gx8t5?aZJG5z8{zs(^}YI7p= z7&LW~fUIzl$@eMm2R5qtI6z((#$@v%F?MtY&YX?cTD0VE&_Z}JQ{u0{E1YM+o4gc` zgux6yn?m_D99uZ}PFQfG?vl9r?JL7(FMpR>(c;D4mhzUZ(;6;mpAG-n^q*(uU)fAJ7NB^l3goiyPN}lo&Vq4@)nW~sLL1?=hrm`PlJR;W9UX^g z6WeXhCKu9G&cU6nl6Zzq$mJ*EailWCGS zTmi;Kk#og4IH?a^!zF6LL!fa;;Y zQmizo_O8SYFSsE!8wxl*(>}{3E5z3pDeIXwE{4=D=v1;LKQm4C@x*I95Um3h?I>%V9{rrez?l4Y?3*0@5Z2hxWSHO z#9+)C^L5-j^HmWxr1-Yd@T}9568dJGEJ`?>&>;O`FRRh)Tmw6 z(Y#DuIR-x*b+Id)^&s2#M?$Ej@o`nF!T5YQP*KM6m%!OP+W(trM!HYE2NyH_R;Ah^>B-7I!bXCHT~TSu@668}XJ=FCbFdH+dd6F7v^D~W)nkBei?%4D_uYM}xT^^oQc~OZ5P#Zf>7hMGMqjU%*?&pf%k|HFBRiT398r!N#}>=ak^H5NAVjM8%1D6 z6FV8y%jtp?$LuKXSwBdBEWIevDbKu@Lg6q8Oc4XnLeQtv#Ht97=+fYJFkirAbt91N zx6tUF?Ma0J(NxPt1@$L8b|D`E+c=+U=*9z;5$|Da&SbO4IWCkB6Mnvjp~)Nw#H7r> zAEmJ9@+8nKh%lA_EOCf4rgY{*dnVJaN7l@K9=O3p&EF7gO$W++?;F1$}|8945Gzu9ga-iyF5zas++mw4GMyoE|w-o>2w%5V6k+ywvfJAL&H`puws zj%TNbZdNE!e9rX>DhAu;ITwkdC(XvKG)NllWer~#w=jupb@@O}y&Ii3@JCPO8~_0r zHuQY=yKtRB)2{ht!UFPb{>$)R{`oHoNXUTTcOHAeigJL*YMlj9SX$Yg7jJt+zt!CP zmz4Yg3dq{=@<-Xz;p96cEqz{9a*#JBX$Nw^@fRk!+IwS_@fg)2v>Q)mlnUskC|T=5 zCgFSZ1{h^$L}Nv=X9{D!s1tnP4ZU*!+p?9+A=;MhRJRuZabmL9|3c;#Y&QF_vx<&R zx&%axY4`8w->ee{*b)-FQA|#wNx*?#*gqwgb;EL-f$+>E8FOt#NSHuq2}*5q3cf2` zr&YefeT1bTGAI0H^WHQdc0XpMtHaSbaLyiM7Q>?T#(6*uA5sDM9lBRk`%r`BTD7R; zavZeA<#`Nd{wc$$X-nIq)cdSdX24m=zzd`ku72ht{vhO?_s2pz9iY|zjSZUX946xf z^?ra<-O)etovW+0=$o#Ms7bM=2W$KtJ@Enz;Q!EPP;U4?sNd?RT|#!@Q~=C=fgx+_ ze?yU%uSe`9AWv6DbNz$}(ZoG1U?s?}JOs4~|Aklardw4u zro3+w1pAA%o=Fb}AT?{G!s*A53P&H6;!CvOy7EQOjqlfO;yt)03Ds! zrq~o~8eQEQoZCrX#s?`eiAhR+RD8U>aUOVBS&>(PFF*-2+_0Fs4(51?iQ?pjFG zxl)pz1sj=1Vx?grZFU1X6n$~JL%I+WFh_E$HPdQJARr0j#gAHs`|Cn*hG;~w>~|Bz zu`i}w6!lf0D8o{mDt4reg%a*W9hOi)Q7fd13TcwI?J>?`xunwN_%U%GWc#(j#Q0zQ za-e>8p8^*%Kns4ATAabkN6t5#Y#`&hWk~WeOoTPoK4kd3oTuX(#<}IAVC|W+Vp?wM z5BL=Oe^;vcr}lq6Tb3$A)B|6mO6+>zEgJ6o&Lj812~$!Wi?NSe8&``%5nBmwVBnbc z)mZ|8rnyXBDz|(c4m&^*-`GoKb#l54wuKmAnm_1>;VO}R!&7z)jge9;9BmiOaupvZ z{LiEavW7AqGIi9dbS7_6ReElU@InssO^z3~uyeGVc*)wR9bwput<6^<4cto_Ct}=e zShz6CQ?V#5u2p@+!oK45GYHqJwPH)xz~H^8z2&ZDxdO$HL@WK3Fb+(k)o=A!srUs*KW0NKT>EvuEAsVM(GT}5%m*))x0h*0APY7J zOj)+NY>O|D7>fq&+o!$CS`sO-{Zz*2)nU7Nro9}LL39d{K%I~mLBUpc4`(7d70?|E zvtll(bo&kV*<*Z_CA&*f)~~CjBB64H&|7v)I6PgwG@1%sx^RCSUgLx$!Pn)e@qF`Ib(}ifIzdbI zqrIjn50?=@M7(c0L#I#a${IC&DNAu)*C5Loq>h_8w)fLs0mQ*Ki;S1QCl3aVig!Wv zimTAkB3ws6FK?vaxwn8RdAx5$MM2GOkFoC;!DH|J`?Uff%vc$&blK$uK9R**3SEcF z_;& z*6XzQgX!=xs|LhPs>Aj0TM54#QyH-pu@ps3@7j-36DMXm-sVq`sf@$|8E8p35Znpc@NEm}j; z$suYOVcc@>n%3ZMC&7_*#?Hj}?!+}cLGEA8o(h8gat4G?F#-Lzm203czd!hPvz}nB z2+wM`e-re}@AGb6jv9iA^S1N@KdEp|lgiqG$>YE>PCz8NG2y=U0^bS12<_D-$*rc> z`KI*Ib)GV?R1=qG=Uy&qo55pZB|^YmAIy;gMp++7C*#vXB-^w>jQ02_Y z`pp*UI-Xfixt3?zl~#u^iFcaR0P(%II%s@o|H?bEXzXNxlCevTgIr~y zF*J6wYj_g5ZMAtRa+oR;MMqoxyud1!1+ta#q@ki{j1K07b9S*b#!(NFxDT4^nrVVR zJSt_%kxCadf;8!)p?kFYYsH+!CR#u?S|U1t4#+#p1VtMIEe-NhCthf3BqvR6xYJO% z;19PP-{XtHH1N<}k7Bz(Eq#LgvW_(1AEEfoyDiEL2>%iamailABqD>{o6`yJxgvSR zlP0rmH~W|qn;q*yWWC;pn28ehJ?%9gahpb;-*ojR=mG>%M#^YYxNCkm z46*C!u{}uWv};<<2zHvzYoE0Ji~^hkX*7GIeCHxz`*DWjUa+q{!rU~3YDSJ8BmlJ(xzfkcQC!$AMS<_!pd4S! z_ut=Yx~{>}>vq0*#hxqnOogd5h_Qr2nG>7SIJ_pEM2RXpgl|w*gBRtdW0y({j8K(< zw=TF8<+RqlupHKj<$MTEKRTab8Ox5WML7M4NiX6@Ro;CT0`eXL!lRtKe@8f@!hZdW za@^qNzO7^V=KDIHAA215W!yH=;K{JLH8@oi2jnATzZ;x2Q(!+_9`D+L+otBL%X!ozxesKkej_^=rtp2dgf@!>^$co`pF{V^qbOe$Be_(a5j03%{Rc-qLG zHnXQ^e=y79w6+HgotuhtZiM7F?lTO&O+qJ*Bo$JD8OXMLLmB?e{^b4tqkn=J%Wkdt^in z_nj;`)WcvXz=SODTP&fiaCsb<9oG`ngsm2$k^UG#`SQv#GwHfFaQz-Q8Jgm{CY^N2 zwQE~`?+Tm_159t+DK&T!Kn%n*3?2pUsK%Lad3MOw=ZEDUp|#f7JgIR>G<)U~e4U|1 z)V0DM$N^NIbg8M3$Pt*m zx-D;!UN_oW(g(+QL46|_+2G298pB{{i+?x{k1n$-d4`46l(}|o42F7&I>w=3A>v`- zgZ92dYpvzHjtDALu#vmpu14P2~V;r2%90!awHW^itCR>?U zI;o0{C}it~6SUM+}C0g1H{Px|m99g3i|J#sV}O0q=TjG*XqxCq5I2=X0_vE`L%SgH)Z1 zIb4JoULrNVh2Ro?sA;Xta0Ks%$u8tid)2hL7Mgn3AKetGBe_oEY<7caq8IG=m!y^` zuLwAU`NnUrtW@D*-5H2WX-*ji$h^+Bm?Droiz$rtk;B@IiEf94fSFWa8Vp9FQeE6> z59A==$`Ak;$F+Asq6v!4kw_kNf`!=pcKQr_8;8i#{uG^PR>j&FMDFSpE-~?Pl`4C; zp3#JejHFz&o84hpsYbkt9A%}-Rg57*^e)~X`Db94Jq8@ejYuXpmmt@e1kM2Hkc2&_ zQ`w`bSKvKuGPDmyEr#Uyh{{L`h>hk7F-v!ibyGg$SWNy@dO6sQV*&ATyfOw|Fds9* zxuY{>Hqv?1retYs+Cp|SJaWt=wtunT4?PJdH=qYr>bN zR-M3g7hf4+N$`dux`HsSEWT;uHYqPk<#1}UkA}TiDbbRk+z^op76|+(O^%LP#v7#U zq1eKWsifvy0*|HOQm+H`5zz2@MqZgPUsg7&dCnf=xHES`E3FkU#9K%=Bgg4_MJNrp z0yWZ2mky$nws1W4iyg4JRV;W7=J17#d&`0$@Fk9Ua*`N_Me}PwUdWyqIlmq_Q^%{N zkT{1Hj;pPSsXnNE32Yc)$#pz=A!owha>34M%{O?-GA=vwkc%P24fbS5X0fvnN(fId-)D~Xz zr$;>tf+Le3(M^bS#xz+NNa2ep2Sdv8#4NQ~{EGGiB1RupXC3PMzz_XidQa<_O@d=V z79&MpTPi%e>T@Oyd*xx{a>+v|ct!T@38P8r%PlK;+RL8xNyyPqu2bCj6|d!C=vw$&!_}{mj&abVcNw z?ah)pAV&l}Xo5f_%y+^Pa|9e`w+l^R5Dog!(zb-1L-%SbRX%eim7Spz^ic9O) z*9um|6fq>IDnSrgqIAoY%Ayk#8$mULUcLJ3Urj!8PE~Y0oQkwa0^aNYD3oCA_aN8E zvPf=O@UX3en%lTOc5!ZJ^)b3!Ai@feSy%gqafHlgWI!_}Po!9`JaVNDfr{7(;LCx6 z9V2LX4)(%@c{UuSQxuMxXag}9+l|rrDcW|fOd?DdQ=b7e$@?cLQ;CymnGCpKM?K@s z__jC4Qb(|+s0NxC@r12vPZU5+7$bAw}r&1f2lWsggGbw58s5AU3y zTrsUOzk>r1UzoTixrFP+a%oj|2HNKkc5#AFF^63loVjPri-#oaoUVxx1!V%bXLxu9 zL5NjL%R!b9Gu1O$@%GNJMSC}(*tPWSUVYD~NAKLOdV)O&YC;-v9DFXM?ztsn{kDwC zZ5bQ4Wo+J-@$3&KRclRS1GkRmQTC%aHXs}Q3g>Knoa|t~U7=y5R`MJewbSStMwy8V z93XbD5v`UK!i=ZZwM|~y(=M&==k>B%yWqbEn!PWIt;6RfF8Ybf7_OCMz5g+9qr@HaQ}o;BQ1ON=oiA9bFjZ z5api!$c1ix{%it@a?wb|-be-P{IKiT#1H!uG(9rbA3xak^0xZh-Q-kFAxxHhw;MH|J5|pJh|?-*OW3UNp!Qiu4p3}`2oIxuf!e9Jo-?L|J&KwPf<3|@c+NeoV z_KmiUdEX}Dt|663hlAgdW1hmw(TK`brnU;? zcv-qvcBQ>v-)rbPOh0KXndiY6EY8@&F?cpre;LcjnPG&7-r)XNHn#H4L323%X>HIy zjTLn}%9l3r?1&;W6l+E)1)r0E%=vqKAV2j`Vi|v9cu)j@C}zTfQHg=<*k?nOP=@e0 zu@M)8p@gG?r9A2q>;@_KCBhTpZH=#*w(nDcW8kY9%#}2z)r%j_%wDN{sKU_3NO@bRXus3ixXIav_vNcC49&a~^0@EKc+yTZgSNh8=_1M-lO@_s=?^nu zi1w4?(upIyd;bN(bXeXhko4-ax{UO4mTJN(P{2FTuqYyKkgdg-F zU7g@bzJpVNIAuX60ja(shoVoI@ApP^(P^XKFea@Ec~QZ_IJ&S4wbB%zs@1CZFEgp` zr4vgt*uiaQyy#;ikI@Xm#-E?%Tkw>P^#Q(cE7yy@X7sHTWGf5QoURxsPwQogg@wxV zOq?y>>)?RY#YVOZr9=!d*=rLuk3Y~No(&TVqe!rW5xC4!F|8B0YFcQ;PR#S%InW&i zSrMt61GS9g&hKXjqy%^{mX0N9xHh;Tq`KI zl)`jmlXfUxFrBnK$dK$8DpoTuiR?rsp=JSEStgQ%cuLj*IAd%Nc4sRQoOiR@DP%q% z*>VXxIWysVWVA5YphJv6_sca7ODITnjL}b2BdaN=5W;n)m2zztRoxII-uL7qLT5VjSqUk;HICxJy4&D=w zgZISa;63p;cuzbI-V=|e_r#;=J@IIIPhS0z52RIE>smA%7ID-HwHR^?>UnFKdtWCC z@;e)12ufE@;4=M>r(y)sLY!}QdZQM#OPy3}J#P0>NzmP#I}eyL__^iomI&? z5Qo5>CSA>kSHd#5Pfry*_vn-8J|*0tZ7zV(cB0K&X?P*u@weqPWiiwp>ghDT;>n3) zEA@oEpLXtdtGyw2HGk|P_|czM7FhOvV)hlIu#7DeB|F#PQKxrGu&SMp-DYEiT#%Jd zSN#QxLQ7mtL^+I!jM~PBgRN8OgU%e@C;6#lbFn@0N5I|%hVK}QZaA+9VM(!QY{0tI z4?eQ#eLO!NG!!VvOUsENI%5C~gIn!&j<0q()FF2u8n9Vt0LBiIb|$i(5PEEgSw(=7 zxkiOtWabJ{xP=aJfHon@l2}kjDgnhiC3Lq+VuE863iA%mY=XuiHSHjN;t^1HH zwk%yNFeEHSo}tecj&9n>tltEz+yvaX3Am|=k!4J=fiw^OZr!=1)KhR}*twgDX0zYr zc1{?BRAbT?bxWN5Y8;kP4Z&7Y{sgmQU#NT!YRg><7r}NHpl`R|bE51Y2WBfQU>V~t zBOnVm_hZKJXC&l(ql;ER<3=aS7DWNg%ofdznnT;Ml*3Hq#Rago#G;b@tX6PBc0z(! zxGqPsqe?Rs0UkYCf-%wRW!6$A$Yz;w#Hx7sKA*!OU30x;@lVVl^LVs}K+n~yb^+X{0m5=>X!d8khTLbX(rr?%ho3Z4 zjDo~Jg&ap+$a^vKFCi0TVUZEWHV;y53!wCF!Ui$8GNEEQWE5EE2LV(|Lwmzo`7ywK z`{699Ny5G}#}3uy6*^2~6`q7+P0zn8ygTTqNbFT2UVfD;>F!x=}Q5M`XoSq`@I0Bu=kDgmCgoZj7=9Y z52Jx^44^02OxsPu-N9VZahmtGM$pM`Czww~QK#S5q6!w4K2IPVxj18vR(wYC+knw? zEsH@VKy`>n(1SduL#9vY%-%sjJ)#|J@6Ei$q^js%v|(z5)+XdINooKc^B$PGGpbfo zdqEWXFz6|>9J-*QIlBZvJoDDR+ymuKM7!SL>J;u!r|pFl#t;)z{YKqbX}ybkz*%o7 zxojK;qQ;{p2On)6uI&;R6J{7QxGtu`wLs?rz^NPIAb_s`Cg!KCLTL0Zfd^0R zq6r}%*~mmp(20y-?Sbu~T8_qmBphqLC|{_;&Yu!O!(P?0 zbiL&m^tE2?YrSOUJib;Ls2E(C!wVP(ww0V=IJK%HH5OqGk=tg~Bk7o5rO1P#%oxd) z>E}8$O6gW^~nbGke2 zaLwCH$kg-Xw|JDf&-gpDgVs@kSjUZFplL73N}%d^2MRoSFo4oClXyhe6cw<6um^OFl+!!!`tN6_fYEA_FYEiLC+Ul-!Q?p$O+g zw)^M`RGrk=vuH99a6vIm>aK4odTS zCLUdt+Z08JaPz?IDumVGCuEA()R(ZJThq2Lk8=*HGOW{VWO(0vC#gCurN4#n@tpJ+O zhToPlk>ruI&*x3#U^aJpIJl+vY`Z5;P*yl@H%?kIu#*EJW}MXJ>x2OhKCYcm^F%>l zX!UciZfh+CdsBa+?W>=xmiv=D<_|qlP}82m*wQEVsgFQs`am>R;_<6wQBuqsa5M= zORZY}T58q$*HWw2zm{6H{M!8iRUp_UFUqZYQEt_Xa;sjHTlJ#csu$%} zy(qWpMY&Zk%B^})Zq>_jt6r8{^|IWmm*rNyEVt@qxm7RAt$JB*)ys0LUY1++s@$qq zEFU;cUatHnB@U~mf*=iw$APuuf4>{|mi!zE*I zyp$ZvmHo6(c%z)$EGM6plh4aZ-5gb@>Sa0k3JFrV*XQ`QjP=_xDz{~9+?GKY&6_{| z?6!>Ow`IJzE#u{F8Ltp-8YiF6+WoIj^T+l4v64S-*QIN%jxR&1%Mb-&6NuMCkdUKt`^yfS3t8brQ$E>G`eMPS0=6c6xqmw$t-lvz?ybn(g%b z*6c9TwoFkG_b%g17a(D#3y?6=1xT3b0wm0I0TO1q00}c)fP|SYK*CHHAg^+If|6#? zm$)xB<`Cr;`UayfSsL$V9ZW+JWcemQgFBwcjuNu~PWBRA;@DF0#vrFd6;uR`6OP4l z{$Y$5-I}w0YtHSpZQT0K=B+vMW4*a;&u`6nacj=YTXSs03qzo@Sr{3LqhcBq^l(0W z(m-fB0DS1RaUwzK1`}3-8DZg*Wni{_pdTvbU_9f>=kZExKH2_aQQubHw23gsQ9ssv zIU}}mtM&h45WAL*_XtYlM#r@wVueE|v@7}SQ|lPq*A{Rg(Oas`w2#750irI3GS@&2 zxvg5M7+k(kDg!mX3ujf=p+?hCG(r?3JwS5S%(XgCm&PIM*C1kPPFOaD4SC)5hBI&X z_P4k8zJ9KKsIG1yq8cju_K z|ADvHAKw6cbGZMZ`gMIJWF37x-2S+?`(cMV<^t^VyV^ls<9>bT>(0Ku^5yIL*k>y@ zeYSG@XDc^+wo>|RR%7wAl^^$Zx88g`tR1MYpLP$AXv>HF!}sds{bHUP`tfL&4$c|) z=;Qls4NpjYt{pLE>x-7Rzq7OVvCdF^UH_B%D>v6)Db*iSUVml0{>ptH_0WO+4@_dM zx?3%Sk3R1^_@`3ot?EBM){nmK)!x24s(pBS?{I%_kKbjp17i-2flDgYnSucVK0KsE zF)~j?C1kFc3z@F9gk+b}^OxZ^XctVgq{lp;i@7N7&yV?#m(sxtA~@y=eFsjo=02|& zBXl1`x|kQ({v^o1wEsnS!LjgFgS;=&6`kHG08|squJWXsM*Av{N?I*Q#&JyNUhlBO zZlZmQE0NBcxWk&IWQz`#&NN)JFv6N=PV_P3HFaYj;hNu25=!9*j9ZyCmm+Sn4H?V% z=dqYc4wIX_RU6Y2r)o|*XYGiFj&KLd zRB!J1N>-u}NORiiRWQl)Ug9w==RGUdx@;w4$|_sKF^pi~I+o^T4Z3(qD3|tklPL`# zug;4?feHWeBCW<<0V@-wEM$>?*c!2d9kPzgBi>lqO?Fdh9Q4IFsIfT{7k0PC!VvKm zD-X&5&2qYwr^7eqVjcDs?iXe>ZAXYvDquI|Zu$lkVPA-Mx5$iJG-P2LKm4a&=&Ja$h zpiKh%o6l4nx<_MgGnAoW3u8GU^l9vF!|idzRzx~i*t3_)}LZ# zEw#&(tx}OH+-K5QLR}mK;h3Q*0kkD08IcNauLAKuTw1B%CH)`sG ze%86$>w>bO$=1_@}zYhf;g&nb?M>bV&#?BwGri0#TJ0tSwwE)%Z-~!jT#1 zj5q@g4C32$Ajd@d3KVxeM_ZHJ!XTlCxNy&Mb`RIT&yDn5_3%O4qVN-_8dE=h&%p`U ze1d!<(z(pQE6n?uKo*e>H^}EF8v6r;P;`Eba4EIhY;`e6D7~CRB2isx;`r!$W%x{A>{FG4ql7~pU|Ukx$c$14Z(I&a=vFj zu{&#?)J_5G5|2Bs;{46H_#3h4k450v3-faSl+&jV^Nh|I2LzbGX+|?I7RPYOj&(8J zwKRRci0a~Oa%}#-GddcgsTo53yEA>PFr2={G>(x?5 zygP&mlCzlA#+A@|E|n93$qIy*(nr_Jg)F$Ec;835Q zxXl``lCBQQfd|a9b~>?BXxpRn{**t`>Y2;DEgVS4J4>84CORmuX0b#eFNp^dR$2Q^zvOpGq16d|yf`2iPP z;2s3fxNF>8N7%(28TYeVN`=>_Bd~t7ls|?{dbAg67;6~Hg*9{ac8|qcb_#SBMG2GZ z;E-T1K4~1!o+iC>*rqG-wp^2yIWQMp#$$h}9|C9}Pa*C$bS%YUXqdp(D4vgH`*~bj zN-+yg@uoMOu2^rAuJ%aEaX9PJSWbCS#`su|IlQAIs5*y}hrPCaYC5&$CYuKhh})l^ zQz0s8IAy>9j%Verk&qmiJQuQ{F+3OLENEYVxTpoU?82KQIWKN}Mw9E(VcuA`6puoh zSM4v}>yL2cKRK~uT;b>^oz{sUJ1XZ#O<@To;&LqnYwVYJP{yNex`>Ofbyp`SbmYxG zHYU6Bd3RtjX)rd|5*Z#^l%JoZ-p4W1uQ-U@fkHz1_7DPG~$?iPsvjE9elD8pJV@W(N}69<9Q2e-hbz$BX~lcE!Dq21&R z-saoJ0OpW`c*dUhPdi#xZ*Xi*T03V+^BW8`+_?4|O|0ZB<85Gv-BX%(AMEH@Jj`L8bK%k@ z2C?=hg9qR{7AAVPOzX0s2wk0=3bCNQX0XZ`0dtbp8JaP86mK9hS!HP$bAXyl^;0?t@FJEtju|69lO;&%mmp1k)0kyk;4IkiFig9 z*>w0qT#3CR>l3Zs2(Jo2d%f;ydq@;~=6esE)+22rLc)+J$0#&SnIvQYIYfAu%k43F zhA)*GX}~flgdlB&yM{sHL1TjW=ij!5|2pdbaMHV&X_zEyVdSUu`JTi-I13#El#I*R z>q_#%VAy(@Xj)}If{Msh2ylP@y9+R&g$9Ui8X^~zT}U}}I*XISv#aEGuM!;rmwh~u zs7ggOorMhtk~!4gzR>-r-1yVVGR6bEwOLk@(Z&P332ra_+gMmOW#q@-jop2GLlK5v zf!=QVoQCMh4X^k~i4gEjINxV(rLAM_n|KMzz#ek6JblOI=7`;Bq_pe;5JtZgaZjfY zLXfk3d)JN{`3{Rh=BL1zg?5*PctaK{Q}z*yQ+8{CEL@p*T5dCjDWk@2An7zQZV7ML zV5C$Lmrmm~m(|`Ii(oUI_ZM-U7nEaH+*jsZZEGQRL6#r88?6-Ws}Ah>hQ_gcVs1-| z|3GuyO41m`FFP2iN?PZVb&Z1`|Wq3SpOW+ z*z|$klz{1RoxtzrH@$8HC#`HU7|XFr!coDnyW5~0eX_+d>ic-wOoh2FWmw^`)pJVL zLN9XCezV^C7L{Sw0#d*@=|CnZs&Eh0-ep$`B#~3KRnamCSdyIu4j8528jT@ScMNNX zg+kh8omExr35OTLkHB39;6^pPPk4p^GV&Lo%R+K0YEUmNrAWs0;S~|GRm?EXRvqK1SOJEe%HbF^ z+!rl@e`v8Y=fo+tlbruFdxMy#pnOv4E|M=%8SRXn_~{gaMD68LiUTKxE0vOdD#mX; znQbV_b~u7IS4?Qvwex(@ptESg$`)f0)O%3UqCp^_3>&Pp7{YT?$%q_rpM?*VNL#IE zadc`rV2WNXN;|a{654ixNys+mE7yOGDdPXiE7D+FQ*JDQI?XG&F&ECp-oG((%{v&Q z8U-#8_EY___+%dk9U849^oEn2*sosey+p?1T#7Z|Lc0R~7oUyP839){f>^3N7**2h7UHD*$9P$y$Gk)~No zHQba*0gnXiESgRiB7Y8soUe3Fl+}Suse_pY7r|K7`}kP6LxFvfW3;yMB!elKjaHvs zWw<&bT)sucN@YND>MaS*Y2;3SWQsfySwdkjk6t2(RpKt$L;~YnB4CZ#_HV+ya1p7oKdDeBH{_Jxcyw#dY9oa)`PetJ zPB`_OtQCMhSQ@^?7LvGI0+2ujpkbq9XyGXm5`mhJU1uSwmpxb%E?#_Nc0O`=@+Q23ZI?LOm-W5wIi^7XfjHtrk1j1yyDW!>pduiWcuJoL_ zzl3yVvmq{lcKM6MydUwjVJI5kZ6lx>9*=qhxOB!N*EpDQLpG~ouN-4&iRhV+~>p&>P1zh|x*N5c^7PP|B*9~kferQBH~W!**i{WAL#!5}}I zteet90Gsq7Z{A4Y9yid&X?#k=?TuXZ*gD}+q@`Bd% z8f;G*xE%IC<&JuN?vd+o-x-pKmt{{0?s0HYlH_E-Majdrwnqv>m8oQG3lf@3k2&0F zbQH%x%!pAsYewr^V6m(PK56^)09%uwR~bKdsWkh9H$P4-(%N+} zlNa_4h^D(orT_7rC}2KL{@<6b%ZymL(|`1i(+4U9U+|t7d`K|J(aw5G&VvcKI_jaV zgfi(l@J6|imfipG=}@YuR=nDM*n5ZTmTx@}%gh|3y&{f7_-^r=tF~vcya{?mn5-id z%v?j{x-w&Q3Q@!!pJ#Vxk7r4^jNu=H++y}eB4K9mqD(5sk;elzK)IpeIU|QetCPzk z&$x|;*BEdypl)uAOuU8&<_B)@nyZ0?X4^xnjVlJ1*}?PS9lDT9u-a#TO+L1EZJd3u z?#lE3g#Cr=p^ncL?~>t&N1G|(Yt_FAr~dzo{b=Lqb1$M~27pkn=t$=h&o-&ijpR!q zMMI0}c++1I29Z&0bN9xuN0^-6r4c_!daP>e5?-1Ff$$2zRM$Ei6tsv%LyZQ8GP;Jy z11W0@vh{CFgiT6R;2Go-Q^GZc>;SsRy(sEnn6>*!K|~CQH0(N?3Q;zODe&#kb^Fvi zA{Xiz=NY>jSE5#l=_MvjGFTVu8v_5gl&{T%t4`r-WFj(<%-L`}!>eB?3!yBU7)wEA z9^a790ZZ9CZvJ}ZX7C0EA2rT6(|~LwgUp1vBmG8J-C`$2MkBw^d|_zu!%aL8Q$2A4 zD?Z$Su)zqKp&JRwLbTXau@jpG)VL&wz7{9sPbgI2SxqCtESg?L+^z>-oP|;EpW)^v z8uUoJlOmv^9)kx-FoMVz0N`35c27!>P}&WOb1V|>{;fC9P#UEx7ZgA@S`3`0;eoB@ zZix~$Ehgsi(E4=fJcQ88^q7GtF@xNfyS2~j643G>XU=}oHN%i|CR$w=d1pL5({dyr zXHFN?Qiz3yMqKBB#)W2N;EdUOI+k7^OIOCy8)NCsvGlVE!lJR*?qP7#?_K6R8Qe*5 zo?)dMM%Wl+v5;2sA<1BjdtTBIh!vORuH|nqtKYADmFpcub1e!MkH#J`E~m<0N~zyU zso$Xtc}b%jGSP?+D%YxMV3rHt@qn)I0{Q#;G=;31=r1JL{X%$V8X5U2SjVVS@@kC5 z@|zd58tw91R81-VC$3n+1laCCvaSQ~wYVJ-a}BJB`M9w!;Q=9$nkdr{8droPL}GJC z$%sVQzF>~FuYONZu**y;_bK*r(`UvOs>hiJiq<-+?irKQJ=XNBJ=aI)=h(ib8S$rC zmbujLT&+I-Hqc7aE2WUPktaiOJ!3e=*B6Kbec zr_q++@}ogmaI?9I(9*lXG&@S9!QVAXqfDHe$Z||v3RgpRGgflG!9I_>A<}al%J5e) z3PFWrYGc&LQv9o>e!fIpuBkX9GR&2d%g3h3VT!DQn!|s$kBTKQBQjWLC?i)ycNPct zf4s(1!+{09T8cLzB~-pi{47ep!DAW0P^$aZPvkaz9P2Rg&9h?Wzme&xFN~i@J^n>u zGPM5F;ev%br0Q^G3*Es8Estbfp)n=3k)<9X!$~FgB#O6BgonZx#<|GvY;A3Cvp^!V zqNH;w>}bfv+tR0KW+5bFkXd(>7#)LQXS1pQnywG6Qqqx z;@6Cf=Zd9%%}#R@JZq9y4}ZtvJpgqZope=vLfls4+>7P_j!9>9LQqRuqS?QxhypQO zdvAkA1q{x%b5#Iwiiq7iW-*j9VabXW%@z}nl^Aca4ZvhWYqAkDQl@=@J4??ggU-`gQ|^n&yB&dOiNsRjSd(W8Km%1#AoSdv zQXVkF!k@;Wheu{3vdl?tk`sISl>1f6@1j#_3~eALQ{-6{`hi1tQ>dE!mH)4?Gkko1HUr9jR7ZZJ}!?tr3d?F`M@b@zr9!X5KRy zli%l44Y{Xm-a&5`!r{NJ^qAo*r!erVzbQKDiYN}|&1hDJ{a~@YR3rs1Y-_~eOP&q6 zT5)Y7696GFI-Jg&>fAF7a@Y9rw9}a5->%ngygR-Yu0i=?(9MX}b$&=xSvczr!8L?% zH0*54;7&mXmKISvD>xU0kl&fMBw8j1w250ZsMYFq0iEmdKm_SQ^AlY`&43r#rmLWE zQQ7HD_FJ!-aTrJpM#2+B z#^;9Da%|pmcA@Ae-Vob^{8+X*5wRCy)JzAvj++8+ORr~q>9hiS|AN*JRpU&4IJW^G=$J4V zxVYvI9EcCrRVlnU!4`<`O_mg0PSBDvFYV&WDJRzd>!2&v;U=aZyI@jbS~&r+Ccn)l zX|%ZR8@DJ^eu#pxLYbUZllhGTMjBA^BncsfU)o?Y*Rq)VxIl(Thx~lfZCnU_)C0)@ z*|*t1e&=)Lk{D_sfnXVRgq4j5wc-xCEb?uYUd@h z3%}ABBwVbHl{x01>OL5VKw|>cBg5x>lW&m4OJNP!ceLNA`{}P;+1gYt)7Q39q4C4NRdB}r=JyV!c zF#wNYNGx1-*35!17H!7dNIWxj$Ga);0@TRwkx-7o@&GX#`4kIA-dILkj={?S4sbi~ zuNt-*E-@K7xEfdaz+bxE^ZTQ{^w5#^KaaLoPXW~$c*uH4+6o=~x6ArTfYT|u-c317 zQzxr@-0Keo$r{r;rDxFx88`2vaThD&kSlG#;BO9}@&&lWr}s$jW0GEgK=2BYAli3OLcIWwiQp}DX zZEj3Jwx7QGQ!#aA{oBj+{p06)r3qjDsFb)k`Uz%s!>-E%rXqlfq73wsO0iS3T$fb` zC?JIpeK zp-)N8#ZX&?j4Y%UQb*5k+J!VZv_u)hCCk@{77GIeA+ql{F0d}bvf?9SjkSu%lQ&zO zMq<%rgmIf6#nx=YJy;Yb7j&oBvoA5-*7Nej27L+dOofUUEQix7v5D2VhV=O{G#3dX zty^)zII7+pIulITvhtxn3b;Z-dGiWMz0C~^lSkCDaCN8tjjMX|e?ak=w|>e^OsBma zAvLrm+M_l<>tum75`sxsCft2xCu9qiNh?US3v;eTKoI6|NDjG8Gyx{&KJXz zryO+$(Lr4*e`_mTZ#rDU4_>JO8smZ)C^=tM7=P6)OIJ-yUQ1KMpj#)FKRqkIy2_1Q z%+YwpQCK*vmr9^r&SK5=N6xbZt#(X7n{#%=#8=Oik|M!6&DtC;Qt~WeZ^Xj1Yz2|< z%uUaEB<$~Pug+qAuk{SDACKHki zj*suiB8X&T%&(;{07|hOsrc5i@o?e{!_U8#*-rz65XDx~w)P!T60BmLb5)dGTE`T( zG0pg~R01uejTuMAc4Gr;yr?-TuNJIPv=Yn6yqeIo@*q{YRf;_x9()M} zIrt~sK*)}J>EI~EeDdAf9^Gkl)x(d;c~K<*&M7ROce^-uq6=!6!d3OUEERirGB8#= z>()j{)AeF#0oT7{qs+-S?OA`b;HgKrELDr3O*&sTZ0%+>YjlEJoEIU>#BFo6TB)R} zh4XaUS3VHJc^~Uy@*69anq7#IgeZqv+xC(C-i&`Vduq9GU4S_=N@IGM^C`1h?-4&! ze-Fu}icsnC(vvl{)f5nyNkaM}0?douLv}fw?ZUFUn7|_0(`BJzdFN03cucN}4bAy@ zpE>WKbzSwJ#vnPa8hhKiOwWv`p$im0N$YFjjK@@*oZJcYwgSNvEQnL-0pPU>Lj?GA z506<+V;w#1lKO?BB=m_>z}uf%#r1cMzM8N3*RJu;&!TWgEQOF#@(cgv?Z5nN7W#Oz-3q{|YvKmi2FA=;9}E=w2CLrVUNiG>uP4WW+^Ru2_(~x+ z_6xJ&akDNNM7M9sB`G#ei`d_>3nF_@Yo|%+HMm!2eH$MV;(HN~u?C)2L5ij7x6pZI zSUzP30*g_k0*DCC%A98AiJ6Y7LVT?C7`Q(J4<6+rWd=1vfJ~b*lMGM9*OgBux`XP4MTP=U*>(%>9;H4D30P$DLV~?_Xcg%#ws>q&$s~b-9V{l&ACbk znETLAq11E_NJ6X(AoX_II4nW5&LYrvnoix=q z(@ZM%iy3d8+4-L%;7apblg))Q``(lM!gkZ9iuL(X#nQ@ix`Jn6F9p#v>{;Fvz@G#LhYma=8yBYSmhZwacB({6g+R{dtH}=YU5lXgf zvAG6Np!E+Bpz;FR?wXgUU>fyj`{gjmjbA1LmV`Ozf#%$mWWG*sJAvgHcV_dO2!MFQ z0&3?#-TXOu6qcX5l|gifm#Z}fbkZuqLEvfmgftRi?!@pA9D0cG7xWI5!=A)mcb|Or z^q2A};UbhJ(VVm%l4e~ET}1NUw|b;m@KCG@`(4uiI%mw}RdMYSj8T?7y4~ z7Z!#PZ=WqEn~6>%9#!O|_f2 z59!5XSg)ikbC-P5#D9`|UU>W)ec0_sN|~`$=P5+t<$2cJRYFpT0JH50&4#AFo`%3Q zBq2)-LEG6|u`zm`B#g7Bris)rb4NxBxy@S-yXPYfh_yey`4O|H#V%QBCP}E}eHi1? zYyAF@{nVkXXLNJ##TyGV1&R?Pa8@vJ%j)%NN~#>o=Lq+X-R(8?-kS&u4F#KrUHs ztCkAIc&M*$qB!>_rfal)HDkF9on3TQUr@(5Q1D5X{(tw5qrBT2(x}%hvJm(4w3O|}pjs&yS3CR3=FV!O~WO^(u$x^no$*Sl37!3DT zZ3u)GF|Gdf(3<@6c2Bt>rJ`=#P1sv4Ovu-l1Wj3Kr)n|AYl`;}QYK3Biwbf?G@g*I zyi=olr0^hs@zI6%w(IxP27X7^vfW(^AIs*$(aX)z%dOGNN28Ys@5_XbYFlNXw5>8w+Ey7TZL174&UEX!hn)a<zCdD(AE=m$6mgVAo;E6^e%gpcn*_j?{ zKJp!y#SX0e49`_)x!HSDIRS||fAj}TY5gBW5`+mIXq|x)T4$hy))^?Fbp}dkoq-ZsXP|`E87QH3 z1}f1yhi%4;@2k`js`2@-Q&vb|AAh#>^Y?Cj_TERIZT;r6t&cz3`t4_1ze{_@ybAhc z)ARzn&Bz*#@Pc#F!yY58RvvOX6IklI(v1%a8%9h|aS8~>+YP)X2zwHNl<&o3+6@Uu z9&C;nq83EK+;Xqof!82uFisYZyZBI%qFgFBK^(!!mB@+cA02~S0dWR#nhuD}dsN26 zP59Cl_I5WK9>^2sD%tKZ{GfK3r0u%=t5&axT-DqtN6oX4qD+sb?=&z+^!BlFUhTC$ zbO+b@XzjG?o#sdVzg3HAae1wrn3+aIcr1-}K)QQM<;O$IrR73qP**!Px^-2dgf3@TVCDgdng6QzR=F)lcF+( z=M*tqQ#BM2Z;F(HDCA4P56WH|2eIjG2k*rGKs+{jN3vM(G-EwJE zfx*r2s;bd=zV}sdc;n$RvxcUdE(LP8xzpM65I$KlW-3OEM#k%#1f~w>BzC zh^$qmiMJis3Gz07o{n{Jhk)q9*M4KwO!|Oo=~g|e2T0u;y&JD>^#C;JfMDohDu*e65IYVUmI^}rr~PaT7Zo5Q$RR$;wgHJ9;JdAm`;u__u{pKd64tQ4*H zEwenJW4Yy9pFGfPGP`{1)0dygk=go`c7Q5=6mCnhKnUn1`@N)C;@Q5(;rb)cMEfwS zjlj1Lh(IhMJZ=if@+bcLKkS#@L44sqc;fZ}gy+qUi8k9_=LP4J%;c&eRFK|W-z7E| ze&x0P2vjvMUHpF&|9>JORO|j|i)tsyMAIu46o>JX9d2BFV}+%=AI}l}g%I~ajG!)} zOnk5xXMMGYpaa1}aB}k4C*09e^ZF&5#>QO^Z$ZJzL>3>5qCnI0OP*n1vOmh7o7K;) z>gS{C=Qq{Q$JNhotDoOhKfkYj{`K#S%HOv6F#Elk{oeXJ^cJ#UCvXTwimz>xJ=i-q zdVu}`pXnD5etOsJJb>(Y64u(lLNH#zh}w}-aARWXG@+!?_qN=}Hj(#!t1#ailMGuB zlM988;lQGN!L%^fk$-Tc7Zg3ze~GpdiTLRiPrw5k@E?e?9<+LGeDB14B?e>GcfcbO zKU3xyJ1q5d@3vM;qPz1vh2QZ6i-tP4SN7@-* z(wxJHU$%P0u@q($A>MDN`vLjwOf5DY5(vvVvlJbeU8oOXA9>m8AaZ-1Ks2ssG}fLs zt(ojY?Gg?fB1lBlcGoi;Odkgt7~UG*6o}`MfnY%MHu_B?$bQ@vn%`3_FmVO8J*|K2 zZ9RKA1M7M|yC$hXJKApX7zFhITdIrY&^D60W_b|tZ{ca4t94)w=IAFHBae<-i=J|% zL#DKamkHgFluQM0oBSE6SlU0Ua>IdIC0#F86$CW`SwM^w>RWy3`4bsq4lEgLU1a~G zt(v(dg`-PNlPgo?-aCX}9-NJ!dV5$QYJ zRy`F2UQJBoe_+vuJ8Pm%uE{&=X!bYqP6-J?F%y-`=s4vBm_iEXq0}q?-mkTS@{8Pn zws~55-Yt%aNNwcQqA2}}-wpb=hzzJlMV@MYwKdZAh;L+aydIV`AeTa^4p9OV?%2L& ziG`~F%h%OQ7o`z|zN<2Sqk$k_hDqa~-N>s~g`&a;`yf5LI5F1kW*f z5bss;e_1&-!=k*NZ*)7uf$O^)9$uW(OAowWvY<4vFpI-p>PPV=znm*zk^Ym#)!RzC z1MP%qDP6PG2tHldT9%YV=qsid5jFHiM)JUaszW=qp_CzF`$+^D#lDp#X9{=~DO_2H zd}fIM5N1;^kq-J{+93jHy*?Say3$MN5$~91?JXq(Q`mY0V}(BZw7|}Ci&-X8phcWj zXKYZ2JNNbo)b3$u#QCSO^dtQ15-dM0rj7H62uamK@no73TO z7LB64HAcd?(viElHOzcMhws8l1aRKBib+;WKhl{GTWkWn`2~{ zE(bt`xseO@PvIhpitAd<1{3GK|C`|{*i%b$cKfmptLK)I|MJ+G0A%py1Vl!vhQhlC z^0qR)i6rQ5PhuM-AnUSQSmMMNNvy~A zeKx8Vd^No(QGqMie9z|V79vwSX|^9OdF4g zoDu2UBMHC_yEBk>(-tLaBCEsu(|s>NcxCx3t0VoEqee@i+PB6BJZgzl1GC>Vcx`Ja zIrN<`NZDP1FrrC^7GJa7#@|Mu_jx7$daSIQp0H($S3q!56jwqB-W~3Wl1j*~9&&v~ zI|OyBHE%?jlqpy$Znn3WJBf|mK0#sQZA>9`NIPm>RUj~dHl{M75pL~Xc}^b1oc^%) zyLSG_4n=%qQbfBU#FE5oVm!GH2!jOUPp<+8TIg5Z<&r7wH;YqSsOT-=vsgIlB;90!JJYTiokV zATMxAtsEwf5^=47)i#IlnQh8;l~i8jT{d352|u3F%8H(zN~ZuXQ((DxZlY(t?23rM2DQgDNNwUBB5%R9 zs0apLf;O=PmaHjHXsg4?BjwR|$r)A#{!Imlu8rToQNSPeRwP2e7ehRYlAiV5TGY)@1nRpEwSUsx{3A85>5oEcW_ zQUI6gZEV%V({|70w#UYv31b#JlXl=!MT0VD5m5T)f3hEQJ9a0lpQH-Wj*=6Z(j)l- zyMjE9ohEUnyf9Q-SM-$Q4)cX_M&eyUIYoWu@Dka;MKvIuj^Zl&M7d_%7nN$+73T8} z!~JAK+_6~5g3G$P3!22*ldgNjZx$F;2cTM{?jBl`;t1Ra?-KE&UH@cIGuh)_V2V|7 zv5R?-uBp1tZ1wvgo+QmSY5a+rvIUbAe!R1lh(V-NHtz&Ie44fSbMH-QDQOB1O|s3D zhi8%xm6S;me3Ob5tPG^#$z!5a0FF?!BfWLvw%J$A{cJ4o3;i91rw=6jmY6NflbPCM zhAul$0Dr(>$Pr%1B49)tiAM*#C~Po?-Ld?o@RU-s8T<*={@MY)x?yn*cEdkK^rDAZ zI-2*MZ^-WDAzSNjy$bPLiz{`N$tqjOfEXmJnPxmUn}?H>Etx{Z;6U$V1Yg9AIx^%% z0z{H*KjC5aGuLN7Y~ii%Fnkfqcf-#6h&~9i=KM^uHX8)Q{&jQfYfiP`#lFk+An3=L zr4%JM_IeDJBBw$5sLXQyYjp`q@&w}2c0|{JG$~J1CBkmB^nM9Uyn^al}feL23rlzz&Y; zQr{kH(}2}(EQA4#-e<2YoB5c$*~+Pxjhfr+oje!arJRJkX>_dMN~tPCWISJ0RY^zy z?|17>m7Q!?5m8}4VQHxF-~>%(-J}*Fk}3>QBpDLMzX{U|RWW2_Hfq?MX?2`*&Z2wx zFN($}55NUemGVzz9towS2!rGWy%4ejipi!Z;UPc8MFi(vci3(mqGLC<{ZI-s$owgh zCo_FtmWa4?N-ZRzOH<$1yxFwgkG_5AA=kR>d0zE*-j;%ew}#=uy*j58*hZPCr^S%U%CBnx>Dv^1E<-@wx^F*wpvMzw6) z-0KtMs=48xk%gn^tY|Ne0^h`&>LliF%j%0rNkv-M^mBF)C?HiC6~!#`681owWIMt3 z77<$FT3E-hR>>e&qP$cB2fuz3J;C(UQ`%V6dPwY4huTK75%ck8CM=pcz!|0wDM*o6 zGu=Lx^;-LF`tfu6@e9^SYjS<-?davtqnE#2lMTDpMyc>Meg5iowF$s-iF$G_N&+@( zgo-tXFIcYp8JE}gR8%#T(%t*-*cJyA=r^;omt@VeM!)p-%({`ceswnFjHXjbU`a*E zn<1e7V3rK62oaIG@4Oqbi^}T}bXrx$hC0n>5f)fTUEfOTI`VqmmOIQWnBii>V5sVI z7q4q~FQkq;uIwqkMW>tvdaJ-nQ727?Fdv={rAtDaseusyV0@vA z2fDn9IQ70*Dy!-q>vA!bzO^gNrKB6Lm}HQ|03xG_xZ!VcX9ONoV&TzOsTtAjUo-h> zFz5dydrQwXL!&Oxcic{;i@jYWQI83-6DF1J2|{F$#Lsy~WiXoGtCqk-mvBZZ?xd05DktHgs_SWMvu(+@MQj`PuAh5VqH7LY;Pd6qr(_+$2dp%rlL+GCc8daL zY3UITl51~!fQC580HwWwJ6vG{M_-fGrdSe?z?7fKYsU(-oYy^9Sva2TlzY;9-ZELE zke??YzX(ee{_6m&R2=sTEcyyY$QBx0P}F@yj@9_> zT?AQbIK6d9u{hFU!SZ;$=?6a0f2}}`K=o=IjNRVuvWriv$e>2#FrQho4Tc9RAawJo z$vVHC2K;#%@RzmZF1u_n{+hM46jirnlPjug=E)#F`gG;DgCagi^?+==9S5k6!$^-` z!cULirH91_tn7PDNL>eohF1GAVv`c-viYTPBi2q478}jTnV@dqkZVeHqfIx@QB7Be z;}WJFT`(bE{u!nWLVWh<3E}Qv6u0)zbc~osCkfARPY^~R?gwe3Rsv!nqV#USLyVmJ|MZlg_YXdkNyn|O_QNgRlQwajVj3v!> z9P~=398o`j1yPYJD!Wm(svvf246yn4n^1_6r}>`yasu3FU{s0_k$dBQ1!vr zhslhEJ? zaBvjDj7#pkaMVMkV-xfUw}m};N7?>uk>Re=S&d4%044O65z@E`GYl3w>I%42&apUW}IXIt1lg5e@29q8xlKtex^#QawkG#H!n-J5`_t)<}wqPUvEej z!5e9hQ+&Atom-8M)^fOy`73h z+6dreNSLVItfLuxj#1E0~40*?0zaM}d6Dlrke|p+8X@}m; z&WeO^xcMX^=h+46ST*r5N!O;CKJ6gfqo<3@_GJ|=&Y=$8MtM4NUK$>LAzm_v4GXHL zHM|XbRj!Z8-g}+uOvYsF^T8p`>x`5mc=R@$B-CM}^9bz1OsFy;KdcIgH|M>uvw7uA zJB_CZ%6J2YjwOy4MpBjWgnL9S^r?m1lTuWoS~yp3TB9655!BHzh53$wU21n{>oXW8 z!KuaF*p$hn>F(jdg`zXAz1)`yJ=1V#4qih>dL}Ol$)T! zA3TMlh|`rhBsf$gU8DZ!?6akGt%VsDi|O+1>B)KfUb;%CB$AhS?pLSE?ef?WsM-Lz zLeiJIXrAu1tw0A}sPoJ%N+EBHkDCt&Y{); zf=@diT5xjdl~5aRdcBuHDPCc?G=# z&J0j6b<^)owGm{IxBkm5%1{qcs6=tuLyP4#v32jOE9ntmxvCImf6v`8d*icKv)%Y% zS%o%5=Hr#OAtI3SFzOSGnzR>5gXK3$x+BJ)syX>?8)Y6Hz2eyy-o>OI1tk-m^qZ*O60{ICFgA)bg2>^xa zm~ErN8x}!lY4|xwfn)dT>)3jp9tKSbxtnS7d@G8c9aGg!uCyev;edMC>Ug0_nTf07 zmAQN#5pkGR3qN{w{>?LLNQQPB>yko8d9R8-yF{hA-`f>3Cjm9gw zF+^5Bi-3rE9MW^VD9K_*Xk@Ts*?fK^UF@N5_W5*&u;+KWJ!B+h);UO

j@O6e-rn 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 list: def read_boolean_array(self, length: int = None) -> List[bool]: return self.read_array_struct("?", length) + def read_u_byte_array(self, length: int = None) -> List[int]: + return self.read_array_struct("B", length) + def read_u_short_array(self, length: int = None) -> List[int]: return self.read_array_struct("h", length) @@ -221,6 +224,12 @@ def read_int_array(self, length: int = None) -> List[int]: def read_u_int_array(self, length: int = None) -> List[int]: return self.read_array_struct("I", length) + def read_long_array(self, length: int = None) -> List[int]: + return self.read_array_struct("q", length) + + def read_u_long_array(self, length: int = None) -> List[int]: + return self.read_array_struct("Q", length) + def read_u_int_array_array(self, length: int = None) -> List[List[int]]: return self.read_array( self.read_u_int_array, length if length is not None else self.read_int() @@ -229,6 +238,9 @@ def read_u_int_array_array(self, length: int = None) -> List[List[int]]: def read_float_array(self, length: int = None) -> List[float]: return self.read_array_struct("f", length) + def read_double_array(self, length: int = None) -> List[float]: + return self.read_array_struct("d", length) + def read_string_array(self) -> List[str]: return self.read_array(self.read_aligned_string, self.read_int()) diff --git a/generators/ClassesGenerator.py b/generators/ClassesGenerator.py new file mode 100644 index 00000000..a58578a8 --- /dev/null +++ b/generators/ClassesGenerator.py @@ -0,0 +1,346 @@ +"""Generates the classes for the UnityPy objects from the TypeTree of the TPK files.""" + +from __future__ import annotations +from dataclasses import dataclass, field +import os +import sys +from typing import Dict, Set, Optional, Tuple, List + +# small hack to import UnityPy from the parent directory instead of the installed package +ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +sys.path.append(ROOT) +from UnityPy.helpers.Tpk import TPKTYPETREE, TpkUnityNode # noqa: E402 +from UnityPy.helpers.TypeTreeHelper import clean_name # noqa: E402 + +NODES = TPKTYPETREE.NodeBuffer.Nodes +STRINGS = TPKTYPETREE.StringBuffer.Strings + +BASE_TYPE_MAP = { + "char": "str", + "short": "int", + "int": "int", + "long long": "int", + "unsigned short": "int", + "unsigned int": "int", + "unsigned long long": "int", + "UInt8": "int", + "UInt16": "int", + "UInt32": "int", + "UInt64": "int", + "SInt8": "int", + "SInt16": "int", + "SInt32": "int", + "SInt64": "int", + "Type*": "int", + "FileSize": "int", + "float": "float", + "double": "float", + "bool": "bool", + "string": "str", + "TypelessData": "bytes", +} + +# LIST_BASE_TYPE_MAP = { +# "short": "np.int16", +# "int": "np.int32", +# "long long": "np.int64", +# "unsigned short": "np.uint16", +# "unsigned int": "np.uint32", +# "unsigned long long": "np.int64", +# "UInt8": "np.uint8", +# "UInt16": "np.uint16", +# "UInt32": "np.uint32", +# "UInt64": "np.uint64", +# "SInt8": "np.int8", +# "SInt16": "npt.int16", +# "SInt32": "np.int32", +# "SInt64": "np.int64", +# "Type*": "np.uint32", +# "FileSize": "np.uint64", +# "float": "np.float32", +# "double": "np.float64", +# "bool": "np.bool", +# } + +MATH_CLASSES = { + "ColorRGBA", + "Matrix3x4f", + "Matrix4x4f", + "Quaternionf", + "Vector2f", + "Vector3f", + "Vector4f", + "float3", + "float4", +} + +FORBIDDEN_CLASSES = {"bool", "float", "int", "void"} | MATH_CLASSES + +CLASS_CACHE_ID: Dict[Tuple[int, str], NodeClass] = {} +CLASS_CACHE_NAME: Dict[str, NodeClass] = {} +TYPE_CACHE: Dict[int, str] = {} + + +@dataclass +class NodeClassField: + ids: Set[int] + name: str + types: Set[str] = field(default_factory=set) + optional: bool = True + + def generate_str(self) -> str: + if len(self.types) == 1: + typ = next(iter(self.types)) + else: + typ = f"Union[{', '.join(self.types)}]" + + if self.optional: + return f" {self.clean_name}: Optional[{typ}] = None" + else: + return f" {self.clean_name}: {typ}" + + @property + def clean_name(self) -> str: + return clean_name(self.name) + + +@dataclass +class NodeClass: + ids: Set[int] + name: str + aliases: Set[str] = field(default_factory=set) + fields: Dict[str, NodeClassField] = field(default_factory=dict) + field_ids: Set[int] = field(default_factory=set) + key_fields: Set[str] = field(default_factory=set) + abstract: bool = False + base: Optional[str] = None + + @staticmethod + def sort_fields(field: NodeClassField) -> Tuple[bool, str]: + return (field.optional, field.clean_name) + + def generate_str(self) -> str: + # order fields by 1. non-optional>optional, 2. name + parents: List[str] = [] + + if self.base: + parents.append(self.base) + + if self.abstract: + parents.append("ABC") + + parentsString = f"({', '.join(parents)})" if parents else "" + + if len(self.fields) == 0: + field_strings = [" pass"] + else: + field_strings = map( + NodeClassField.generate_str, + sorted(self.fields.values(), key=NodeClass.sort_fields), + ) + return "\n".join( + [ + "@define(kw_only=True, slots=False)", + f"class {self.name}{parentsString}:", + *field_strings, + ] + ) + + +def implement_node_class( + node_id: int, + node: Optional[TpkUnityNode] = None, + override_name: Optional[str] = None, +) -> NodeClass: + if node is None: + node = NODES[node_id] + cls_name = override_name or STRINGS[node.TypeName] + + cls = CLASS_CACHE_ID.get((node_id, cls_name)) + if cls is not None: + return cls + + cls = CLASS_CACHE_NAME.get(cls_name) + first_impl = False + if cls is None: + first_impl = True + cls = NodeClass(ids={node_id}, name=cls_name) + CLASS_CACHE_NAME[cls_name] = cls + else: + cls.ids.add(node_id) + + CLASS_CACHE_ID[(node_id, cls_name)] = cls + if override_name and override_name != STRINGS[node.TypeName]: + cls.aliases.add(STRINGS[node.TypeName]) + + field_names: Set[str] = set() + for subnode_id in node.SubNodes: + subnode = NODES[subnode_id] + # TEST1 + # subname = clean_name(STRINGS[subnode.Name]) + subname = STRINGS[subnode.Name] + + field_names.add(subname) + + if subnode_id in cls.field_ids: + continue + + field = cls.fields.get(subname) + if field is None: + field = NodeClassField({subnode_id}, subname) + cls.fields[subname] = field + else: + field.ids.add(subnode_id) + + field_type = generate_field_type(subnode_id, subnode) + field.types.add(field_type) + + cls.field_ids |= set(node.SubNodes) + + if first_impl: + cls.key_fields = set(cls.fields.keys()) + for field in cls.fields.values(): + field.optional = False + else: + deprecated_field_names = cls.key_fields - field_names + cls.key_fields -= deprecated_field_names + for deprecated_name in deprecated_field_names: + cls.fields[deprecated_name].optional = True + + return cls + + +def generate_field_type(node_id: int, node: Optional[TpkUnityNode] = None) -> str: + res = TYPE_CACHE.get(node_id) + if res is not None: + return res + + if node is None: + node = NODES[node_id] + + typename = STRINGS[node.TypeName] + + py_typ = BASE_TYPE_MAP.get(typename) + if py_typ: + res = py_typ + + elif typename == "pair": + # Children: + # Typ1 first + # Typ2 second + typ1 = generate_field_type(node.SubNodes[0]) + typ2 = generate_field_type(node.SubNodes[1]) + res = f"Tuple[{typ1}, {typ2}]" + + elif typename.startswith("PPtr<"): + res = typename.replace("<", "[").replace(">", "]") + + else: + # map & vector + subnode0 = NODES[node.SubNodes[0]] if len(node.SubNodes) > 0 else None + if subnode0 and STRINGS[subnode0.TypeName] == "Array": + # Children: + # Array Array + # SInt32 size + # Typ data + subtype_node = NODES[subnode0.SubNodes[1]] + subtype_name = STRINGS[subtype_node.TypeName] + if subtype_name in BASE_TYPE_MAP: + res = f"List[{BASE_TYPE_MAP[subtype_name]}]" + else: + res = f"List[{generate_field_type(subnode0.SubNodes[1], subtype_node)}]" + else: + # custom class + implement_node_class(node_id, node) + res = typename + + TYPE_CACHE[node_id] = res + return res + + +def main(): + main_classes: Set[str] = set() + deps: Dict[str, List[str]] = {} + + for _class_id, class_info in TPKTYPETREE.ClassInformation.items(): + abstract = True + base = None + cls_name: Optional[str] = None + + for _version, unity_class in class_info.Classes: + if unity_class is None: + continue + cls_name = STRINGS[unity_class.Name] + base = STRINGS[unity_class.Base] + + if unity_class.ReleaseRootNode is not None: + abstract = False + cls = implement_node_class( + unity_class.ReleaseRootNode, override_name=cls_name + ) + cls.base = base + + if isinstance(cls_name, str): + if abstract: + CLASS_CACHE_NAME[cls_name] = NodeClass( + {0}, name=cls_name, base=base, abstract=True + ) + + main_classes.add(cls_name) + if base: + if base in deps: + deps[base].append(cls_name) + else: + deps[base] = [cls_name] + + CLASS_CACHE_NAME.pop("Object") + sorted_classes: List[str] = [] + + stack = [*sorted(deps.pop("Object"))] + while stack: + cls_name = stack.pop(0) + sorted_classes.append(cls_name) + if cls_name in deps: + stack = sorted(deps.pop(cls_name)) + stack + + sorted_classes += sorted( + set(CLASS_CACHE_NAME.keys()) - set(sorted_classes) - FORBIDDEN_CLASSES + ) + i = 0 + names = set() + while i < len(sorted_classes): + name = sorted_classes[i] + if name in names: + sorted_classes.pop(i) + else: + names.add(name) + i += 1 + + fp = os.path.join(ROOT, "UnityPy", "classes", "generated.py") + with open(fp, "wt", encoding="utf8") as f: + f.write("#type: ignore\n") + f.write("from __future__ import annotations\n") + f.write("from abc import ABC\n") + f.write("from attrs import define\n") + f.write("from typing import List, Optional, Tuple, Union\n\n") + f.write(f"from .math import {', '.join(MATH_CLASSES)}\n") + f.write("from .Object import Object\n") + f.write("from .PPtr import PPtr\n") + f.write("\n\n") + + f.write( + "\n\n".join( + cls.generate_str() + for cls in map(CLASS_CACHE_NAME.__getitem__, sorted_classes) + ) + ) + f.write("\n") + + +if __name__ == "__main__": + import time + + t1 = time.time_ns() + main() + t2 = time.time_ns() + print(t2 - t1 / 10**9) From f51a7f2acc465facb7ac2b04cbd32b172bef1602 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 12 Sep 2024 16:45:43 +0200 Subject: [PATCH 264/599] Mesh.c - use buffer interface --- UnityPyBoost/Mesh.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/UnityPyBoost/Mesh.c b/UnityPyBoost/Mesh.c index 0eb618fe..d2bd08dd 100644 --- a/UnityPyBoost/Mesh.c +++ b/UnityPyBoost/Mesh.c @@ -27,6 +27,8 @@ PyObject *unpack_vertexdata(PyObject *self, PyObject *args) uint32_t m_VertexCount; uint8_t swap; // char format; + PyObject *vertexDataPy; + Py_buffer vertexDataView; uint8_t *vertexData; // m_VertexData.m_DataSize uint32_t m_StreamOffset; uint32_t m_StreamStride; @@ -34,9 +36,24 @@ PyObject *unpack_vertexdata(PyObject *self, PyObject *args) uint32_t m_ChannelDimension; Py_ssize_t vertexDataSize; - if (!PyArg_ParseTuple(args, "y#iIIIIIb", &vertexData, &vertexDataSize, &componentByteSize, &m_VertexCount, &m_StreamOffset, &m_StreamStride, &m_ChannelOffset, &m_ChannelDimension, &swap)) + if (!PyArg_ParseTuple(args, "OiIIIIIb", &vertexDataPy, &componentByteSize, &m_VertexCount, &m_StreamOffset, &m_StreamStride, &m_ChannelOffset, &m_ChannelDimension, &swap)) return NULL; + // check type of src + if (!PyObject_CheckBuffer(vertexDataPy)) + { + PyErr_SetString(PyExc_TypeError, "src must be of a type that supports the buffer protocol"); + return NULL; + } + // get buffer from src + if (PyObject_GetBuffer(vertexDataPy, &vertexDataView, PyBUF_SIMPLE) == -1) + { + PyErr_SetString(PyExc_ValueError, "Failed to get buffer from src"); + return NULL; + } + vertexData = (uint8_t *)vertexDataView.buf; + vertexDataSize = vertexDataView.len; + Py_ssize_t componentBytesLength = m_VertexCount * m_ChannelDimension * componentByteSize; uint8_t *componentBytes = (uint8_t *)PyMem_Malloc(componentBytesLength + 1); componentBytes[componentBytesLength] = 0; @@ -45,6 +62,7 @@ PyObject *unpack_vertexdata(PyObject *self, PyObject *args) uint32_t maxVertexDataAccess = (m_VertexCount - 1) * m_StreamStride + m_ChannelOffset + m_StreamOffset + componentByteSize * (m_ChannelDimension - 1) + componentByteSize; if (maxVertexDataAccess > vertexDataSize) { + PyBuffer_Release(&vertexDataView); PyErr_SetString(PyExc_ValueError, "Vertex data access out of bounds"); return NULL; } @@ -83,6 +101,7 @@ PyObject *unpack_vertexdata(PyObject *self, PyObject *args) PyObject *res = PyByteArray_FromStringAndSize(componentBytes, componentBytesLength); PyMem_Free(componentBytes); + PyBuffer_Release(&vertexDataView); return res; // fast enough in Python From e54332311b58e55c0318e9e3f320a304678a7b62 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 12 Sep 2024 16:46:25 +0200 Subject: [PATCH 265/599] SpriterHelper - update and add support for tight with uv usage --- UnityPy/export/SpriteHelper.py | 308 ++++++++++++++++++++++++++------- 1 file changed, 244 insertions(+), 64 deletions(-) diff --git a/UnityPy/export/SpriteHelper.py b/UnityPy/export/SpriteHelper.py index 9602e9a3..a5f32709 100644 --- a/UnityPy/export/SpriteHelper.py +++ b/UnityPy/export/SpriteHelper.py @@ -1,10 +1,33 @@ -from enum import IntEnum, IntFlag - from PIL import Image, ImageDraw from .Texture2DConverter import get_image_from_texture2d -from ..enums import ClassIDType, SpritePackingMode, SpritePackingRotation -from ..streams import EndianBinaryReader +from ..enums import ( + ClassIDType, + SpritePackingMode, + SpritePackingRotation, + SpriteMeshType, +) + +from ..helpers.MeshHelper import MeshHandler +from typing import Tuple, TYPE_CHECKING + +if TYPE_CHECKING: + from ..classes.generated import Sprite + + +class SpriteSettings: + packed: bool + packingMode: SpritePackingMode + packingRotation: SpritePackingRotation + meshType: SpriteMeshType + + def __init__(self, settings_raw): + self.settingsRaw = settings_raw + self.packed = bool(self.settingsRaw & 1) # 1 + self.packingMode = SpritePackingMode((self.settingsRaw >> 1) & 1) # 1 + self.packingRotation = SpritePackingRotation((self.settingsRaw >> 2) & 0xF) # 4 + self.meshType = SpriteMeshType((self.settingsRaw >> 6) & 1) # 1 + # rest of the bits are reserved def get_image(sprite, texture, alpha_texture) -> Image.Image: @@ -29,7 +52,7 @@ def get_image(sprite, texture, alpha_texture) -> Image.Image: return sprite.assets_file._cache[cache_id] -def get_image_from_sprite(m_Sprite) -> Image.Image: +def get_image_from_sprite(m_Sprite: "Sprite") -> Image.Image: atlas = None if getattr(m_Sprite, "m_SpriteAtlas", None): atlas = m_Sprite.m_SpriteAtlas.read() @@ -38,12 +61,16 @@ def get_image_from_sprite(m_Sprite) -> Image.Image: for obj in m_Sprite.assets_file.objects.values(): if obj.type == ClassIDType.SpriteAtlas: atlas = obj.read() - if atlas.name == m_Sprite.m_AtlasTags[0]: + if atlas.m_Name == m_Sprite.m_AtlasTags[0]: break atlas = None if atlas: - sprite_atlas_data = atlas.m_RenderDataMap[m_Sprite.m_RenderDataKey] + sprite_atlas_data = next( + value + for key, value in atlas.m_RenderDataMap + if key == m_Sprite.m_RenderDataKey + ) else: sprite_atlas_data = m_Sprite.m_RD @@ -63,6 +90,7 @@ def get_image_from_sprite(m_Sprite) -> Image.Image: ) ) + settings_raw = SpriteSettings(settings_raw) if settings_raw.packed == 1: rotation = settings_raw.packingRotation if rotation == SpritePackingRotation.kSPRFlipHorizontal: @@ -76,74 +104,226 @@ def get_image_from_sprite(m_Sprite) -> Image.Image: # spriteImage.RotateFlip(RotateFlipType.Rotate180FlipNone) elif rotation == SpritePackingRotation.kSPRRotate90: sprite_image = sprite_image.transpose(Image.ROTATE_270) - # spriteImage.RotateFlip(RotateFlipType.Rotate270FlipNone) + # spriteImage.RotateFlip(RotateFlipType.Rotate270FlipNone) if settings_raw.packingMode == SpritePackingMode.kSPMTight: - # Tight - - # create mask to keep only the polygon - mask = Image.new("1", sprite_image.size, color=0) - draw = ImageDraw.ImageDraw(mask) - for triangle in get_triangles(m_Sprite): - draw.polygon(triangle, fill=1) - - # apply the mask - if sprite_image.mode == "RGBA": - # the image already has an alpha channel, - # so we have to use composite to keep it - empty_img = Image.new(sprite_image.mode, sprite_image.size, color=0) - sprite_image = Image.composite(sprite_image, empty_img, mask) + mesh = MeshHandler(m_Sprite.m_RD, m_Sprite.object_reader.version) + mesh.process() + + if any(u or v for u, v in mesh.m_UV0): + # copy triangles from mesh + sprite_image = render_sprite_mesh(m_Sprite, mesh, original_image) else: - # add mask as alpha-channel to keep the polygon clean - sprite_image.putalpha(mask) + # create mask to keep only the polygon + sprite_image = mask_sprite(m_Sprite, mesh, sprite_image) return sprite_image.transpose(Image.FLIP_TOP_BOTTOM) -def get_triangles(m_Sprite): - """ - returns the triangles of the sprite polygon - """ - m_RD = m_Sprite.m_RD - - # read the raw points - points = [] - if hasattr(m_RD, "vertices"): # 5.6 down - vertices = [v.pos for v in m_RD.vertices] - points = [vertices[index] for index in m_RD.indices] - else: # 5.6 and up - m_Channel = m_RD.m_VertexData.m_Channels[0] # kShaderChannelVertex - m_Stream = m_RD.m_VertexData.m_Streams[m_Channel.stream] - - vertexReader = EndianBinaryReader(m_RD.m_VertexData.m_DataSize, endian="<") - indexReader = EndianBinaryReader(m_RD.m_IndexBuffer, endian="<") - - for subMesh in m_RD.m_SubMeshes: - vertexReader.Position = ( - m_Stream.offset - + subMesh.firstVertex * m_Stream.stride - + m_Channel.offset - ) - - vertices = [] - for _ in range(subMesh.vertexCount): - vertices.append(vertexReader.read_vector3()) - vertexReader.Position = vertexReader.Position + m_Stream.stride - 12 - - indexReader.Position = subMesh.firstByte - - for _ in range(subMesh.indexCount): - points.append( - vertices[indexReader.read_u_short() - subMesh.firstVertex] - ) +def mask_sprite( + m_Sprite: "Sprite", mesh: MeshHandler, sprite_image: Image.Image +) -> Image.Image: + mask_img = Image.new("1", sprite_image.size, color=0) + draw = ImageDraw.ImageDraw(mask_img) # normalize the points # shift the whole point matrix into the positive space # multiply them with a factor to scale them to the image - min_x = min(p.X for p in points) - min_y = min(p.Y for p in points) + positions = mesh.m_Vertices + min_x = min(x for x, _y, _z in positions) + min_y = min(y for _x, y, _z in positions) factor = m_Sprite.m_PixelsToUnits - points = [((p.X - min_x) * factor, (p.Y - min_y) * factor) for p in points] + positions_2d = [ + ((x - min_x) * factor, (y - min_y) * factor) for x, y, _z in positions + ] # generate triangles from the given points - return [points[i : i + 3] for i in range(0, len(points), 3)] + triangles = [ + ( + positions_2d[a], + positions_2d[b], + positions_2d[c], + ) + for submesh in mesh.get_triangles() + for a, b, c in submesh + ] + + for triangle in triangles: + draw.polygon(triangle, fill=1) + + # apply the mask + if sprite_image.mode == "RGBA": + # the image already has an alpha channel, + # so we have to use composite to keep it + empty_img = Image.new(sprite_image.mode, sprite_image.size, color=0) + sprite_image = Image.composite(sprite_image, empty_img, mask_img) + else: + # add mask as alpha-channel to keep the polygon clean + sprite_image.putalpha(mask_img) + + return sprite_image + + +def render_sprite_mesh(m_Sprite: "Sprite", mesh: MeshHandler, texture: Image.Image): + for triangles in mesh.get_triangles(): + positions = mesh.m_Vertices + uv = mesh.m_UV0 + + # 2. patch position data + # 2.1 make positions 2d + # find the axis that has only one value - can be removed + # usually the z axis + axis_values = [[pos[i] for pos in positions] for i in range(3)] + for i in range(2, -1, -1): + if len(set(axis_values[i])) == 1: + break + else: + raise ValueError("Can't process 3d sprites!") + axis_values = axis_values[:i] + axis_values[i + 1 :] + x_min = min(axis_values[0]) + y_min = min(axis_values[1]) + x_max = max(axis_values[0]) + y_max = max(axis_values[1]) + + # 2.2 map positions from middle to top left + # 2.3 convert relative positions to absolute + pixels_to_units = m_Sprite.m_PixelsToUnits + positions_abs = [ + (round((x - x_min) * pixels_to_units), round((y - y_min) * pixels_to_units)) + for x, y in zip(*axis_values) + ] + width, height = texture.size + uv_abs = [(round(u * width), round(v * height)) for u, v in uv] + + # 2.4 generate final image size + size = ( + round((x_max - x_min) * pixels_to_units), + round((y_max - y_min) * pixels_to_units), + ) + sprite = Image.new(texture.mode, size) + + for tri in triangles: + copy_triangle( + texture, + [uv_abs[i] for i in tri], + sprite, + [positions_abs[i] for i in tri], + ) + + return sprite + + +def copy_triangle( + src_img: Image.Image, + src_tri: Tuple[float, float], + dst_img: Image.Image, + dst_tri: Tuple[float, float], +): + src_off = ( + (src_tri[1][0] - src_tri[0][0], src_tri[1][1] - src_tri[0][1]), + (src_tri[2][0] - src_tri[0][0], src_tri[2][1] - src_tri[0][1]), + ) + dst_off = ( + (dst_tri[1][0] - dst_tri[0][0], dst_tri[1][1] - dst_tri[0][1]), + (dst_tri[2][0] - dst_tri[0][0], dst_tri[2][1] - dst_tri[0][1]), + ) + + # check if transform is necessary by comparing the triangle sizes + if src_off[0] == dst_off[0] and src_off[1] == dst_off[1]: + # no transform necessary, just copy the triangle + + # make rectangle that contains the triangle + upper_left, _, lower_right = sorted(src_tri) + src_part = src_img.crop((*upper_left, *lower_right)) + + # create mask for triangle + mask_box = [(x - upper_left[0], y - upper_left[1]) for x, y in src_tri] + mask = Image.new("1", src_part.size) + maskdraw = ImageDraw.Draw(mask) + maskdraw.polygon(mask_box, fill=255) + + # paste triangle into destination image + dst_img.paste(src_part, min(dst_tri)) + else: + # transform is necessary, use affine transformation + # https://stackoverflow.com/a/6959111 + ((x11, x12), (x21, x22), (x31, x32)) = src_tri + ((y11, y12), (y21, y22), (y31, y32)) = dst_tri + + # Construct matrix M manually + M = [ + [y11, y12, 1, 0, 0, 0], + [y21, y22, 1, 0, 0, 0], + [y31, y32, 1, 0, 0, 0], + [0, 0, 0, y11, y12, 1], + [0, 0, 0, y21, y22, 1], + [0, 0, 0, y31, y32, 1], + ] + + # Vector y corresponds to the x coordinates in the source triangle + y = [x11, x21, x31, x12, x22, x32] + + # np.lingal.solve - obviously way faster, but numpy will only come with 2.0 + A = linalg_solve(M, y) + + transformed = src_img.transform(dst_img.size, Image.AFFINE, A) + + mask = Image.new("1", dst_img.size) + maskdraw = ImageDraw.Draw(mask) + maskdraw.polygon(dst_tri, fill=255) + + dst_img.paste(transformed, mask=mask) + + +def linalg_solve(M, y): + # M^-1 * y + M_i = get_matrix_inverse(M) + return [sum(M_i[i][j] * y[j] for j in range(len(y))) for i in range(len(M_i))] + + +def transpose_matrix(m): + # https://stackoverflow.com/a/39881366 + return map(list, zip(*m)) + + +def get_matrix_minor(m, i, j): + # https://stackoverflow.com/a/39881366 + return [row[:j] + row[j + 1 :] for row in (m[:i] + m[i + 1 :])] + + +def get_matrix_determinant(m): + # https://stackoverflow.com/a/39881366 + # base case for 2x2 matrix + if len(m) == 2: + return m[0][0] * m[1][1] - m[0][1] * m[1][0] + + return sum( + ((-1) ** c) * m[0][c] * get_matrix_determinant(get_matrix_minor(m, 0, c)) + for c in range(len(m)) + ) + + +def get_matrix_inverse(m): + # https://stackoverflow.com/a/39881366 + determinant = get_matrix_determinant(m) + # special case for 2x2 matrix: + if len(m) == 2: + return [ + [m[1][1] / determinant, -1 * m[0][1] / determinant], + [-1 * m[1][0] / determinant, m[0][0] / determinant], + ] + + # find matrix of cofactors + cofactors = [ + [ + ((-1) ** (r + c)) * get_matrix_determinant(get_matrix_minor(m, r, c)) + for c in range(len(m)) + ] + for r in range(len(m)) + ] + cofactors = list(transpose_matrix(cofactors)) + + return [[c / determinant for c in range(row)] for row in cofactors] + + +__all__ = ["get_image_from_sprite"] From 70ff68720df57c8f9632d04ec11769c259c3a288 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 12 Sep 2024 16:49:39 +0200 Subject: [PATCH 266/599] add attrs as dependency --- pyproject.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 19b9a6a6..22bb1298 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,6 +50,8 @@ dependencies = [ "pyfmodex >= 0.7.1", # filesystem handling "fsspec", + # better classes + "attrs", ] dynamic = ["version"] From b46cdf59b44a020740931dacddfa05a5f7d70353 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 12 Sep 2024 16:52:30 +0200 Subject: [PATCH 267/599] remove typing.Self - compatiblity problem with <3.12 --- UnityPy/classes/Object.py | 4 ++-- UnityPy/classes/math.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/UnityPy/classes/Object.py b/UnityPy/classes/Object.py index c369594c..f00de2d0 100644 --- a/UnityPy/classes/Object.py +++ b/UnityPy/classes/Object.py @@ -1,6 +1,6 @@ from __future__ import annotations from abc import ABC, ABCMeta -from typing import TYPE_CHECKING, Dict, Any, Optional, Self +from typing import TYPE_CHECKING, Dict, Any, Optional if TYPE_CHECKING: from ..files.ObjectReader import ObjectReader @@ -8,7 +8,7 @@ class Object(ABC, metaclass=ABCMeta): - object_reader: Optional[ObjectReader[Self]] = None + object_reader: Optional[ObjectReader] = None def __init__(self, **kwargs: Dict[str, Any]) -> None: self.__dict__.update(**kwargs) diff --git a/UnityPy/classes/math.py b/UnityPy/classes/math.py index 0db9f7be..fe3b47e5 100644 --- a/UnityPy/classes/math.py +++ b/UnityPy/classes/math.py @@ -5,7 +5,7 @@ """ from attrs import define -from typing import Self, TypeAlias +from typing import TypeAlias @define(slots=True) @@ -93,7 +93,7 @@ class ColorRGBA: def __new__( cls, r: float = 0, g: float = 0, b: float = 0, a: float = 1, rgba: int = -1 - ) -> Self: + ) -> "ColorRGBA": obj = super().__new__(cls) if rgba != -1: r = ((rgba >> 24) & 0xFF) / 255 From dc5a2c9bf1d79a680f510c425e806d3f8aec6b3a Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 17 Sep 2024 22:12:15 +0200 Subject: [PATCH 268/599] vastly speedup typetree parsing --- UnityPy/files/ObjectReader.py | 2 +- UnityPy/helpers/TypeTreeHelper.py | 388 +++++++++++++++--------------- 2 files changed, 191 insertions(+), 199 deletions(-) diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index ed058f22..644ab82a 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -203,7 +203,7 @@ def read_typetree(self, nodes: list = None, wrap: bool = False) -> Union[dict, T self.reset() nodes = self.get_typetree_nodes(nodes) ret = TypeTreeHelper.read_typetree( - nodes, self, as_dict=not wrap, assetsfile=self.assets_file + nodes, self.reader, as_dict=not wrap, assetsfile=self.assets_file ) if wrap: ret.set_object_reader(self) diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 5a092db6..3e00eb9b 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -16,6 +16,53 @@ kAlignBytes = 0x4000 +FUNCTION_MAP = { + "SInt8": EndianBinaryReader.read_byte, + "UInt8": EndianBinaryReader.read_u_byte, + "char": EndianBinaryReader.read_u_byte, + "short": EndianBinaryReader.read_short, + "SInt16": EndianBinaryReader.read_short, + "unsigned short": EndianBinaryReader.read_u_short, + "UInt16": EndianBinaryReader.read_u_short, + "int": EndianBinaryReader.read_int, + "SInt32": EndianBinaryReader.read_int, + "unsigned int": EndianBinaryReader.read_u_int, + "UInt32": EndianBinaryReader.read_u_int, + "Type*": EndianBinaryReader.read_u_int, + "long long": EndianBinaryReader.read_long, + "SInt64": EndianBinaryReader.read_long, + "unsigned long long": EndianBinaryReader.read_u_long, + "UInt64": EndianBinaryReader.read_u_long, + "FileSize": EndianBinaryReader.read_u_long, + "float": EndianBinaryReader.read_float, + "double": EndianBinaryReader.read_double, + "bool": EndianBinaryReader.read_boolean, + "string": EndianBinaryReader.read_aligned_string, + "TypelessData": EndianBinaryReader.read_byte_array, +} +FUNCTION_MAP_ARRAY = { + "SInt8": EndianBinaryReader.read_byte_array, + "UInt8": EndianBinaryReader.read_u_byte_array, + "char": EndianBinaryReader.read_u_byte_array, + "short": EndianBinaryReader.read_short_array, + "SInt16": EndianBinaryReader.read_short_array, + "unsigned short": EndianBinaryReader.read_u_short_array, + "UInt16": EndianBinaryReader.read_u_short_array, + "int": EndianBinaryReader.read_int_array, + "SInt32": EndianBinaryReader.read_int_array, + "unsigned int": EndianBinaryReader.read_u_int_array, + "UInt32": EndianBinaryReader.read_u_int_array, + "Type*": EndianBinaryReader.read_u_int_array, + "long long": EndianBinaryReader.read_long_array, + "SInt64": EndianBinaryReader.read_long_array, + "unsigned long long": EndianBinaryReader.read_u_long_array, + "UInt64": EndianBinaryReader.read_u_long_array, + "FileSize": EndianBinaryReader.read_u_long_array, + "float": EndianBinaryReader.read_float_array, + "double": EndianBinaryReader.read_double_array, + "bool": EndianBinaryReader.read_boolean_array, +} + def read_typetree( root_node: TypeTreeNode, @@ -78,92 +125,61 @@ def read_value( # print(reader.Position, node.m_Name, node.m_Type, node.m_MetaFlag) align = metaflag_is_aligned(node.m_MetaFlag) - match node.m_Type: - case "SInt8": - value = reader.read_byte() - case "UInt8" | "char": - value = reader.read_u_byte() - case "short" | "SInt16": - value = reader.read_short() - case "UInt16" | "unsigned short": - value = reader.read_u_short() - case "int" | "SInt32": - value = reader.read_int() - case "UInt32" | "unsigned int" | "Type*": - value = reader.read_u_int() - case "long long" | "SInt64": - value = reader.read_long() - case "UInt64" | "unsigned long long" | "FileSize": - value = reader.read_u_long() - case "float": - value = reader.read_float() - case "double": - value = reader.read_double() - case "bool": - value = reader.read_boolean() - case "string": - value = reader.read_aligned_string() - case "TypelessData": - value = reader.read_byte_array() - case "pair": - first = read_value(node.m_Children[0], reader, as_dict, assetsfile) - second = read_value(node.m_Children[1], reader, as_dict, assetsfile) - value = (first, second) - case _: - if not node.m_Children: - value = None - # raise NotImplementedError(f"Reference type {node.m_Type} not implemented") - # Vector - elif node.m_Children and node.m_Children[0].m_Type == "Array": - if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): - align = True - - size = ( - reader.read_int() - ) # read_value(node.m_Children[0].m_Children[0], reader, as_dict) - subtype = node.m_Children[0].m_Children[1] - if metaflag_is_aligned(subtype.m_MetaFlag): - value = read_value_array(subtype, reader, as_dict, size, assetsfile) - else: - value = [ - read_value(subtype, reader, as_dict, assetsfile) - for _ in range(size) - ] - - else: # Class - value = { - child.m_Name: read_value(child, reader, as_dict, assetsfile) - for child in node.m_Children - } + func = FUNCTION_MAP.get(node.m_Type) + if func: + value = func(reader) + elif node.m_Type == "pair": + first = read_value(node.m_Children[0], reader, as_dict, assetsfile) + second = read_value(node.m_Children[1], reader, as_dict, assetsfile) + value = (first, second) + elif not node.m_Children: + value = None + # raise NotImplementedError(f"Reference type {node.m_Type} not implemented") + # Vector + elif node.m_Children[0].m_Type == "Array": + if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): + align = True + + # size = read_value(node.m_Children[0].m_Children[0], reader, as_dict) + size = reader.read_int() + subtype = node.m_Children[0].m_Children[1] + if metaflag_is_aligned(subtype.m_MetaFlag): + value = read_value_array(subtype, reader, as_dict, size, assetsfile) + else: + value = [ + read_value(subtype, reader, as_dict, assetsfile) for _ in range(size) + ] - if not as_dict: - if node.m_Type.startswith("PPtr<"): - value = PPtr[Any]( - assetsfile=assetsfile, - m_FileID=value["m_FileID"], - m_PathID=value["m_PathID"], - type=node.m_Type[6:-1], - ) - else: - clz = getattr(classes, node.m_Type, Object) - clz_kwargs = { - clean_name(key): value for key, value in value.items() + else: # Class + value = { + child.m_Name: read_value(child, reader, as_dict, assetsfile) + for child in node.m_Children + } + + if not as_dict: + if node.m_Type.startswith("PPtr<"): + value = PPtr[Any]( + assetsfile=assetsfile, + m_FileID=value["m_FileID"], + m_PathID=value["m_PathID"], + type=node.m_Type[6:-1], + ) + else: + clz = getattr(classes, node.m_Type, Object) + clz_kwargs = {clean_name(key): value for key, value in value.items()} + try: + value = clz(**clz_kwargs) + except TypeError: + extra_keys = set(clz_kwargs.keys()) - set(clz.__annotations__) + value = clz( + **{ + key: value + for key, value in clz_kwargs.items() + if key in clz.__annotations__ } - try: - value = clz(**clz_kwargs) - except TypeError: - extra_keys = set(clz_kwargs.keys()) - set( - clz.__annotations__ - ) - value = clz( - **{ - key: value - for key, value in clz_kwargs.items() - if key in clz.__annotations__ - } - ) - for key in extra_keys: - setattr(value, key, clz_kwargs[key]) + ) + for key in extra_keys: + setattr(value, key, clz_kwargs[key]) if align: reader.align_stream() @@ -180,132 +196,108 @@ def read_value_array( ) -> Any: align = metaflag_is_aligned(node.m_MetaFlag) - match node.m_Type: - case "SInt8": - value = reader.read_byte_array(size) - case "UInt8" | "char": - value = reader.read_u_byte_array(size) - case "short" | "SInt16": - value = reader.read_short_array(size) - case "UInt16" | "unsigned short": - value = reader.read_u_short_array(size) - case "int" | "SInt32": - value = reader.read_int_array(size) - case "UInt32" | "unsigned int" | "Type*": - value = reader.read_u_int_array(size) - case "long long" | "SInt64": - value = reader.read_long_array(size) - case "UInt64" | "unsigned long long" | "FileSize": - value = reader.read_u_long_array(size) - case "float": - value = reader.read_float_array(size) - case "double": - value = reader.read_double_array(size) - case "bool": - value = reader.read_boolean_array(size) - case "string": - value = [reader.read_aligned_string() for _ in range(size)] - case "TypelessData": - value = [reader.read_bytes() for _ in range(size)] - case "pair": + func = FUNCTION_MAP_ARRAY.get(node.m_Type) + if func: + value = func(reader, size) + elif node.m_Type == "string": + value = [reader.read_aligned_string() for _ in range(size)] + elif node.m_Type == "TypelessData": + value = [reader.read_bytes() for _ in range(size)] + elif node.m_Type == "pair": + key_node = node.m_Children[0] + value_node = node.m_Children[1] + + key_func = FUNCTION_MAP.get( + key_node.m_Type, + lambda reader: read_value(key_node, reader, as_dict, assetsfile), + ) + value_func = FUNCTION_MAP.get( + value_node.m_Type, + lambda reader: read_value(value_node, reader, as_dict, assetsfile), + ) + value = [(key_func(reader), value_func(reader)) for _ in range(size)] + elif not node.m_Children: + value = None + # raise NotImplementedError(f"Reference type {node.m_Type} not implemented") + # Vector + elif node.m_Children[0].m_Type == "Array": + if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): + align = True + subtype = node.m_Children[0].m_Children[1] + if metaflag_is_aligned(subtype.m_MetaFlag): value = [ - ( - read_value(node.m_Children[0], reader, as_dict, assetsfile), - read_value(node.m_Children[1], reader, as_dict, assetsfile), + read_value_array( + subtype, reader, as_dict, reader.read_int(), assetsfile ) for _ in range(size) ] - case _: - if not node.m_Children: - value = None - # raise NotImplementedError(f"Reference type {node.m_Type} not implemented") - # Vector - elif node.m_Children[0].m_Type == "Array": - if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): - align = True - subtype = node.m_Children[0].m_Children[1] - if metaflag_is_aligned(subtype.m_MetaFlag): + else: + value = [ + [ + read_value(subtype, reader, as_dict, assetsfile) + for _ in range(reader.read_int()) + ] + for _ in range(size) + ] + else: # Class + if as_dict: + value = [ + { + child.m_Name: read_value(child, reader, as_dict, assetsfile) + for child in node.m_Children + } + for _ in range(size) + ] + else: + if node.m_Type.startswith("PPtr<"): + value = [ + PPtr[Any]( + assetsfile=assetsfile, + type=node.m_Type[6:-1], + **{ + child.m_Name: read_value(child, reader, as_dict, assetsfile) + for child in node.m_Children + }, + ) + for _ in range(size) + ] + else: + clz = getattr( + classes, + node.m_Type, + Object, + ) + clean_names = [clean_name(child.m_Name) for child in node.m_Children] + if all(name in clz.__annotations__ for name in clean_names): value = [ - read_value_array( - subtype, reader, as_dict, reader.read_int(), assetsfile + clz( + **{ + name: read_value(child, reader, as_dict, assetsfile) + for name, child in zip(clean_names, node.m_Children) + } ) for _ in range(size) ] else: - value = [ - [ - read_value(subtype, reader, as_dict, assetsfile) - for _ in range(reader.read_int()) - ] - for _ in range(size) - ] - else: # Class - if as_dict: - value = [ - { - child.m_Name: read_value(child, reader, as_dict, assetsfile) + extra_keys = set(clean_names) - set(clz.__annotations__) + value = [None] * size + for i in range(size): + value_i_d = { + clean_name(child.m_Name): read_value( + child, reader, as_dict, assetsfile + ) for child in node.m_Children } - for _ in range(size) - ] - else: - if node.m_Type.startswith("PPtr<"): - value = [ - PPtr[Any]( - assetsfile=assetsfile, - type=node.m_Type[6:-1], - **{ - child.m_Name: read_value( - child, reader, as_dict, assetsfile - ) - for child in node.m_Children - }, - ) - for _ in range(size) - ] - else: - clz = getattr( - classes, - node.m_Type, - Object, + value_i = clz( + **{ + key: value + for key, value in value_i_d.items() + if key in clz.__annotations__ + } ) - clean_names = [ - clean_name(child.m_Name) for child in node.m_Children - ] - if all(name in clz.__annotations__ for name in clean_names): - value = [ - clz( - **{ - name: read_value( - child, reader, as_dict, assetsfile - ) - for name, child in zip( - clean_names, node.m_Children - ) - } - ) - for _ in range(size) - ] - else: - extra_keys = set(clean_names) - set(clz.__annotations__) - value = [None] * size - for i in range(size): - value_i_d = { - clean_name(child.m_Name): read_value( - child, reader, as_dict, assetsfile - ) - for child in node.m_Children - } - value_i = clz( - **{ - key: value - for key, value in value_i_d.items() - if key in clz.__annotations__ - } - ) - for key in extra_keys: - setattr(value_i, key, value_i_d[key]) - value[i] = value_i + for key in extra_keys: + setattr(value_i, key, value_i_d[key]) + value[i] = value_i if align: reader.align_stream() return value From ff2d036b15b7989202caa42f036e7887a23bb788 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 18 Sep 2024 21:33:37 +0200 Subject: [PATCH 269/599] ObjectReader - cleanup & dump_structure reimplementation --- UnityPy/files/ObjectReader.py | 70 +++++++++++++++++++-------------- UnityPy/helpers/TypeTreeNode.py | 41 ++++++++++++++++--- 2 files changed, 77 insertions(+), 34 deletions(-) diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index 644ab82a..bbafd058 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -1,9 +1,10 @@ -from typing import TYPE_CHECKING, Generic, TypeVar, Union +from typing import TYPE_CHECKING, Generic, TypeVar, Union, List, Optional from ..enums import ClassIDType from ..streams import EndianBinaryReader, EndianBinaryWriter from ..helpers import TypeTreeHelper from ..helpers.Tpk import get_typetree_nodes +from ..helpers.TypeTreeNode import TypeTreeNode from ..exceptions import TypeTreeError if TYPE_CHECKING: @@ -177,45 +178,38 @@ def __repr__(self): # ################################################### - def dump_typetree(self, nodes: list = None) -> str: + def dump_typetree_structure( + self, + nodes: Optional[Union[TypeTreeNode, List[dict]]] = None, + indent: str = " ", + ) -> str: + node = self._get_typetree_node(nodes) + return node.dump_structure(indent=indent) + + def read_typetree( + self, + nodes: Optional[Union[TypeTreeNode, List[dict]]] = None, + wrap: bool = False, + ) -> Union[dict, T]: self.reset() - sb = [] - nodes = self.get_typetree_nodes(nodes) - TypeTreeHelper.read_typetree_str(sb, nodes, self) - return "".join(sb) - - def dump_typetree_structure(self) -> str: - return TypeTreeHelper.dump_typetree(self.get_typetree_nodes()) - - def get_typetree_nodes(self, nodes: list = None) -> list: - if nodes: - return nodes - - if self.serialized_type: - nodes = self.serialized_type.nodes - if not nodes: - nodes = get_typetree_nodes(self.class_id, self.version) - if not nodes: - raise TypeTreeError("There are no TypeTree nodes for this object.") - return nodes - - def read_typetree(self, nodes: list = None, wrap: bool = False) -> Union[dict, T]: - self.reset() - nodes = self.get_typetree_nodes(nodes) + node = self._get_typetree_node(nodes) ret = TypeTreeHelper.read_typetree( - nodes, self.reader, as_dict=not wrap, assetsfile=self.assets_file + node, self.reader, as_dict=not wrap, assetsfile=self.assets_file ) if wrap: ret.set_object_reader(self) return ret def save_typetree( - self, tree: dict, nodes: list = None, writer: EndianBinaryWriter = None + self, + tree: dict, + nodes: Optional[Union[TypeTreeNode, List[dict]]] = None, + writer: EndianBinaryWriter = None, ): - nodes = self.get_typetree_nodes(nodes) + node = self._get_typetree_node(nodes) if not writer: writer = EndianBinaryWriter(endian=self.reader.endian) - TypeTreeHelper.write_typetree(tree, nodes, writer) + TypeTreeHelper.write_typetree(tree, node, writer) data = writer.bytes self.set_raw_data(data) return data @@ -226,3 +220,21 @@ def get_raw_data(self) -> bytes: ret = self.reader.read_bytes(self.byte_size) self.Position = pos return ret + + def _get_typetree_node( + self, nodes: Optional[Union[TypeTreeNode, List[dict]]] = None + ) -> TypeTreeNode: + if isinstance(nodes, TypeTreeNode): + return nodes + elif isinstance(nodes, list): + return TypeTreeNode.from_list(nodes) + elif nodes is not None: + raise ValueError("nodes must be a list[dict] or TypeTreeNode") + + if self.serialized_type: + nodes = self.serialized_type.nodes + if not nodes: + nodes = get_typetree_nodes(self.class_id, self.version) + if not nodes: + raise TypeTreeError("There are no TypeTree nodes for this object.") + return nodes diff --git a/UnityPy/helpers/TypeTreeNode.py b/UnityPy/helpers/TypeTreeNode.py index d76ee3d3..c61f344d 100644 --- a/UnityPy/helpers/TypeTreeNode.py +++ b/UnityPy/helpers/TypeTreeNode.py @@ -36,8 +36,8 @@ def traverse(self) -> Iterator[TypeTreeNode]: def parse(cls, reader: EndianBinaryReader, version: int) -> TypeTreeNode: # stack approach is way faster than recursion # using a fake root node to avoid special case for root node - dummy_node = TypeTreeNode(-1, "", "", 0, 0, 0, []) - dummy_root = TypeTreeNode(-1, "", "", 0, 0, 0, [dummy_node]) + dummy_node = cls(-1, "", "", 0, 0, 0, []) + dummy_root = cls(-1, "", "", 0, 0, 0, [dummy_node]) stack: List[Tuple[TypeTreeNode, int]] = [(dummy_root, 1)] while stack: @@ -47,7 +47,7 @@ def parse(cls, reader: EndianBinaryReader, version: int) -> TypeTreeNode: else: stack[-1] = (parent, count - 1) - node = TypeTreeNode( + node = cls( m_Level=parent.m_Level + 1, m_Type=reader.read_string_to_null(), m_Name=reader.read_string_to_null(), @@ -87,13 +87,13 @@ def read_string(reader: EndianBinaryReader, value: int) -> str: offset = value & 0x7FFFFFFF return CommonString.get(offset, str(offset)) - fake_root: TypeTreeNode = TypeTreeNode(-1, "", "", 0, 0, 0, []) + fake_root: TypeTreeNode = cls(-1, "", "", 0, 0, 0, []) stack: List[TypeTreeNode] = [fake_root] parent = fake_root prev = fake_root for raw_node in node_struct.iter_unpack(struct_data): - node = TypeTreeNode( + node = cls( **dict(zip(keys[:3], raw_node[:3])), **dict(zip(keys[5:], raw_node[5:])), m_Type=read_string(stringbuffer_reader, raw_node[3]), @@ -112,6 +112,28 @@ def read_string(reader: EndianBinaryReader, value: int) -> str: return fake_root.m_Children[0] + @classmethod + def from_list(cls, nodes: List[dict]) -> TypeTreeNode: + fake_root: TypeTreeNode = cls(-1, "", "", 0, 0, 0, []) + stack: List[TypeTreeNode] = [fake_root] + parent = fake_root + prev = fake_root + + for dict_node in nodes: + node = cls(**dict_node) + + if node.m_Level > prev.m_Level: + stack.append(parent) + parent = prev + elif node.m_Level < prev.m_Level: + while node.m_Level <= parent.m_Level: + parent = stack.pop() + + parent.m_Children.append(node) + prev = node + + return fake_root.m_Children[0] + def dump(self, writer: EndianBinaryWriter, version: int): stack: list[TypeTreeNode] = [self] while stack: @@ -181,6 +203,15 @@ def write_node(node: TypeTreeNode): writer.write(node_writer.bytes) writer.write(string_writer.bytes) + def dump_structure(self, indent: str = " ") -> str: + # dump structure similar to https://github.com/AssetRipper/TypeTreeDumps/blob/main/StructsDump + sb = [ + f"{indent}{self.m_Type} {self.m_Name} // ByteSize{{{self.m_ByteSize:X}}}, Index{{{self.m_Index}}}, Version{{{self.m_Version}}}, TypeFlags{{{self.m_TypeFlags}}}, MetaFlag{{{self.m_MetaFlag}}}" + ] + for child in self.m_Children: + sb.append(child.dump_structure(indent + " ")) + return "\n".join(sb) + COMMONSTRING_CACHE: Dict[Optional[UnityVersion], Dict[int, str]] = {} From 229f23e67cbe9b339b2aec755727ea3735245244 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Thu, 19 Sep 2024 22:04:52 +0200 Subject: [PATCH 270/599] rewrite C TypeTreeHelper to match new version --- .gitignore | 1 + UnityPy/classes/PPtr.py | 2 +- UnityPy/files/ObjectReader.py | 6 +- UnityPy/helpers/TypeTreeHelper.py | 21 +- UnityPy/helpers/TypeTreeNode.py | 35 +- .../{AnimationClip.c => AnimationClip.cpp} | 2 +- .../{AnimationClip.h => AnimationClip.hpp} | 0 UnityPyBoost/{Mesh.c => Mesh.cpp} | 6 +- UnityPyBoost/{Mesh.h => Mesh.hpp} | 2 +- ...{TextureSwizzler.c => TextureSwizzler.cpp} | 2 +- ...{TextureSwizzler.h => TextureSwizzler.hpp} | 0 UnityPyBoost/TypeTreeHelper.c | 836 ------------------ UnityPyBoost/TypeTreeHelper.cpp | 746 ++++++++++++++++ UnityPyBoost/TypeTreeHelper.h | 31 - UnityPyBoost/TypeTreeHelper.hpp | 51 ++ .../{UnityPyBoost.c => UnityPyBoost.cpp} | 10 +- UnityPyBoost/swap.h | 35 - UnityPyBoost/swap.hpp | 77 ++ setup.py | 5 +- 19 files changed, 930 insertions(+), 938 deletions(-) rename UnityPyBoost/{AnimationClip.c => AnimationClip.cpp} (99%) rename UnityPyBoost/{AnimationClip.h => AnimationClip.hpp} (100%) rename UnityPyBoost/{Mesh.c => Mesh.cpp} (98%) rename UnityPyBoost/{Mesh.h => Mesh.hpp} (80%) rename UnityPyBoost/{TextureSwizzler.c => TextureSwizzler.cpp} (99%) rename UnityPyBoost/{TextureSwizzler.h => TextureSwizzler.hpp} (100%) delete mode 100644 UnityPyBoost/TypeTreeHelper.c create mode 100644 UnityPyBoost/TypeTreeHelper.cpp delete mode 100644 UnityPyBoost/TypeTreeHelper.h create mode 100644 UnityPyBoost/TypeTreeHelper.hpp rename UnityPyBoost/{UnityPyBoost.c => UnityPyBoost.cpp} (90%) delete mode 100644 UnityPyBoost/swap.h create mode 100644 UnityPyBoost/swap.hpp diff --git a/.gitignore b/.gitignore index 6fb3e554..2d53a172 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ __pycache__/ *$py.class test.py AssetStudio/ +.vscode/ # Distribution / packaging .Python diff --git a/UnityPy/classes/PPtr.py b/UnityPy/classes/PPtr.py index 2694f4f8..e5a2573f 100644 --- a/UnityPy/classes/PPtr.py +++ b/UnityPy/classes/PPtr.py @@ -10,7 +10,7 @@ T = TypeVar("T") -@define +@define(slots=True, kw_only=True) class PPtr(Generic[T]): m_FileID: int m_PathID: int diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index bbafd058..fde1d202 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -194,7 +194,11 @@ def read_typetree( self.reset() node = self._get_typetree_node(nodes) ret = TypeTreeHelper.read_typetree( - node, self.reader, as_dict=not wrap, assetsfile=self.assets_file + node, + self.reader, + as_dict=not wrap, + assetsfile=self.assets_file, + expected_read=self.byte_size, ) if wrap: ret.set_object_reader(self) diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 3e00eb9b..0e8879e0 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -14,6 +14,12 @@ if TYPE_CHECKING: from ..files.SerializedFile import SerializedFile + +try: + from ..UnityPyBoost import read_typetree as read_typetree_boost +except ImportError: + read_typetree_boost = None + kAlignBytes = 0x4000 FUNCTION_MAP = { @@ -85,6 +91,12 @@ def read_typetree( dict | objects.Object The parsed typtree """ + if expected_read and read_typetree_boost: + data = reader.read_bytes(expected_read) + return read_typetree_boost( + data, root_node, reader.endian, as_dict, assetsfile, classes, clean_name + ) + pos = reader.Position obj = read_value(root_node, reader, as_dict, assetsfile) @@ -136,7 +148,7 @@ def read_value( value = None # raise NotImplementedError(f"Reference type {node.m_Type} not implemented") # Vector - elif node.m_Children[0].m_Type == "Array": + elif node.m_Children and node.m_Children[0].m_Type == "Array": if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): align = True @@ -220,7 +232,7 @@ def read_value_array( value = None # raise NotImplementedError(f"Reference type {node.m_Type} not implemented") # Vector - elif node.m_Children[0].m_Type == "Array": + elif node.m_Children and node.m_Children[0].m_Type == "Array": if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): align = True subtype = node.m_Children[0].m_Children[1] @@ -359,11 +371,8 @@ def write_value( write_value(value[0], node.m_Children[0], writer) write_value(value[1], node.m_Children[1], writer) case _: - if not node.m_Children: - value = None - # raise NotImplementedError(f"Reference type {node.m_Type} not implemented") # Vector - elif node.m_Children and node.m_Children[0].m_Type == "Array": + if node.m_Children and node.m_Children[0].m_Type == "Array": if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): align = True diff --git a/UnityPy/helpers/TypeTreeNode.py b/UnityPy/helpers/TypeTreeNode.py index c61f344d..4d6256b5 100644 --- a/UnityPy/helpers/TypeTreeNode.py +++ b/UnityPy/helpers/TypeTreeNode.py @@ -10,21 +10,26 @@ if TYPE_CHECKING: from .Tpk import UnityVersion - -@define -class TypeTreeNode: - m_Level: int - m_Type: str - m_Name: str - m_ByteSize: int - m_TypeFlags: int - m_Version: int - m_Children: List[TypeTreeNode] = field(factory=list) - m_VariableCount: Optional[int] = None - m_Index: Optional[int] = None - m_MetaFlag: Optional[int] = None - m_RefTypeHash: Optional[int] = None - +try: + from ..UnityPyBoost import TypeTreeNode as TypeTreeNodeC +except ImportError: + + @define(slots=True) + class TypeTreeNodeC: + m_Level: int + m_Type: str + m_Name: str + m_ByteSize: int + m_TypeFlags: int + m_Version: int + m_Children: List[TypeTreeNode] = field(factory=list) + m_VariableCount: Optional[int] = None + m_Index: Optional[int] = None + m_MetaFlag: Optional[int] = None + m_RefTypeHash: Optional[int] = None + + +class TypeTreeNode(TypeTreeNodeC): def traverse(self) -> Iterator[TypeTreeNode]: stack: list[TypeTreeNode] = [self] while stack: diff --git a/UnityPyBoost/AnimationClip.c b/UnityPyBoost/AnimationClip.cpp similarity index 99% rename from UnityPyBoost/AnimationClip.c rename to UnityPyBoost/AnimationClip.cpp index 59ef7c98..0a447f4d 100644 --- a/UnityPyBoost/AnimationClip.c +++ b/UnityPyBoost/AnimationClip.cpp @@ -1,4 +1,4 @@ -#include "AnimationClip.h" +#include "AnimationClip.hpp" #include #define MIN(x, y) (((x) < (y)) ? (x) : (y)) diff --git a/UnityPyBoost/AnimationClip.h b/UnityPyBoost/AnimationClip.hpp similarity index 100% rename from UnityPyBoost/AnimationClip.h rename to UnityPyBoost/AnimationClip.hpp diff --git a/UnityPyBoost/Mesh.c b/UnityPyBoost/Mesh.cpp similarity index 98% rename from UnityPyBoost/Mesh.c rename to UnityPyBoost/Mesh.cpp index d2bd08dd..97220a3d 100644 --- a/UnityPyBoost/Mesh.c +++ b/UnityPyBoost/Mesh.cpp @@ -1,6 +1,6 @@ -#include "Mesh.h" +#include "Mesh.hpp" #include -#include +#include #define MAX(x, y) (((x) > (y)) ? (x) : (y)) @@ -99,7 +99,7 @@ PyObject *unpack_vertexdata(PyObject *self, PyObject *args) } } - PyObject *res = PyByteArray_FromStringAndSize(componentBytes, componentBytesLength); + PyObject *res = PyByteArray_FromStringAndSize((const char*)componentBytes, componentBytesLength); PyMem_Free(componentBytes); PyBuffer_Release(&vertexDataView); return res; diff --git a/UnityPyBoost/Mesh.h b/UnityPyBoost/Mesh.hpp similarity index 80% rename from UnityPyBoost/Mesh.h rename to UnityPyBoost/Mesh.hpp index e74f9ba1..6f0d87ca 100644 --- a/UnityPyBoost/Mesh.h +++ b/UnityPyBoost/Mesh.hpp @@ -1,6 +1,6 @@ #define PY_SSIZE_T_CLEAN #pragma once -#include "AnimationClip.h" +#include "AnimationClip.hpp" #include PyObject *unpack_vertexdata(PyObject *self, PyObject *args); \ No newline at end of file diff --git a/UnityPyBoost/TextureSwizzler.c b/UnityPyBoost/TextureSwizzler.cpp similarity index 99% rename from UnityPyBoost/TextureSwizzler.c rename to UnityPyBoost/TextureSwizzler.cpp index c75656fc..35dff5a9 100644 --- a/UnityPyBoost/TextureSwizzler.c +++ b/UnityPyBoost/TextureSwizzler.cpp @@ -1,4 +1,4 @@ -#include +#include const uint32_t GOB_X_BLOCK_COUNT = 4; const uint32_t GOB_Y_BLOCK_COUNT = 8; diff --git a/UnityPyBoost/TextureSwizzler.h b/UnityPyBoost/TextureSwizzler.hpp similarity index 100% rename from UnityPyBoost/TextureSwizzler.h rename to UnityPyBoost/TextureSwizzler.hpp diff --git a/UnityPyBoost/TypeTreeHelper.c b/UnityPyBoost/TypeTreeHelper.c deleted file mode 100644 index 4b017926..00000000 --- a/UnityPyBoost/TypeTreeHelper.c +++ /dev/null @@ -1,836 +0,0 @@ -#define PY_SSIZE_T_CLEAN -#pragma once -#include -#include "structmember.h" -#include "TypeTreeHelper.h" -#include -#include -#include "swap.h" - -typedef struct -{ - char *data; - char *dataStart; - char *dataEnd; - char swap; - PyObject *obj; -} Reader; -typedef PyObject *(*read_type)(Reader *); - -#define kAlignBytesFlag 1 << 14 -#define kAnyChildUsesAlignBytesFlag 1 << 15 - -#define HASH_SInt8 235330747 -#define HASH_UInt8 237702589 -#define HASH_char 2090147939 -#define HASH_SInt16 3470947178 -#define HASH_short 274395349 -#define HASH_UInt16 3549217964 -#define HASH_unsigned_short 878862258 -#define HASH_SInt32 3470947240 -#define HASH_int 193495088 -#define HASH_UInt32 3549218026 -#define HASH_unsigned_int 2990314445 -#define HASH_TypePtr 238243313 -#define HASH_SInt64 3470947341 -#define HASH_long_long 2373003301 -#define HASH_UInt64 3549218127 -#define HASH_unsigned_long_long 857652610 -#define HASH_FileSize 2878770112 -#define HASH_float 259121563 -#define HASH_double 4181547808 -#define HASH_bool 2090120081 -#define HASH_string 479440892 -#define HASH_TypelessData 1242572536 -#define HASH_map 193499011 - -#define CHECK_LENGTH(reader, length) \ - if (reader->data + length > reader->dataEnd) \ - { \ - PyErr_Format(PyExc_ValueError, "Can't read %d bytes at position %d of %d\nError occured at %s:%d:%s", length, (int)(reader->data - reader->dataStart), (int)(reader->dataEnd - reader->dataStart), __FILE__, __LINE__, __func__); \ - return NULL; \ - } - -static char SURROGATEESCAPE[] = "surrogateescape"; - -/* function signatures */ -static int read_length(Reader *reader); -static PyObject *read_SInt8(Reader *reader); -static PyObject *read_UInt8(Reader *reader); -static PyObject *read_SInt16(Reader *reader); -static PyObject *read_UInt16(Reader *reader); -static PyObject *read_SInt32(Reader *reader); -static PyObject *read_UInt32(Reader *reader); -static PyObject *read_SInt64(Reader *reader); -static PyObject *read_UInt64(Reader *reader); -static PyObject *read_float(Reader *reader); -static PyObject *read_double(Reader *reader); -static PyObject *read_bool(Reader *reader); -static PyObject *read_string(Reader *reader); -static PyObject *read_TypelessData(Reader *reader); - -static read_type getReadFunction(int hash_value, int *index); -static PyObject *getSubNodes(PyObject *nodes, int *index); - -static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int *index); -static PyObject *TypeTreeHelper_ReadValueVector(PyObject *nodes, Reader *reader, int *index); - -PyObject *read_typetree(PyObject *self, PyObject *args); - -/* implementation */ -static inline uint32_t hash_str(const char *str) -{ - unsigned int hash = 5381; - int c; - while ((c = *str++)) - hash = ((hash << 5) + hash) + c; - return hash; -} - -static inline void initReadFuncOrNodes(PyObject *nodes, int *index, PyObject **subnodes, read_type *func, char *subalign) -{ - TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index); - *func = getReadFunction(node->typehash, index); - if (*func == NULL) - { - *subnodes = getSubNodes(nodes, index); - } - else - { - *subalign = (node->m_MetaFlag & kAlignBytesFlag) ? 1 : 0; - } -} - -static inline void align4(Reader *reader) -{ - char mod = (reader->data - reader->dataStart) % 4; - if (mod != 0) - { - reader->data += 4 - mod; - } -} - -static inline PyObject *read_bool(Reader *reader) -{ - CHECK_LENGTH(reader, 1); - return PyBool_FromLong(*(char *)reader->data++); -} - -static inline PyObject *read_SInt8(Reader *reader) -{ - CHECK_LENGTH(reader, 1); - return PyLong_FromLong(*(signed char *)reader->data++); -} - -static inline PyObject *read_UInt8(Reader *reader) -{ - CHECK_LENGTH(reader, 1); - return PyLong_FromUnsignedLong(*(unsigned char *)reader->data++); -} - -static inline PyObject *read_SInt16(Reader *reader) -{ - CHECK_LENGTH(reader, 2); - PyObject *ret = NULL; - if (reader->swap) - { - ret = PyLong_FromLong((signed short)bswap16(*(unsigned short *)reader->data)); - } - else - { - ret = PyLong_FromLong(*(signed short *)(reader->data)); - } - reader->data += 2; - return ret; -} - -static inline PyObject *read_UInt16(Reader *reader) -{ - CHECK_LENGTH(reader, 2); - PyObject *ret = NULL; - if (reader->swap) - { - ret = PyLong_FromUnsignedLong((unsigned short)bswap16(*(unsigned short *)reader->data)); - } - else - { - ret = PyLong_FromUnsignedLong(*(unsigned short *)(reader->data)); - } - reader->data += 2; - return ret; -} - -static inline PyObject *read_SInt32(Reader *reader) -{ - CHECK_LENGTH(reader, 4); - PyObject *ret = NULL; - if (reader->swap) - { - ret = PyLong_FromLong((signed int)bswap32(*(unsigned int *)reader->data)); - } - else - { - ret = PyLong_FromLong(*(signed int *)(reader->data)); - } - reader->data += 4; - return ret; -} - -static inline PyObject *read_UInt32(Reader *reader) -{ - CHECK_LENGTH(reader, 4); - PyObject *ret = NULL; - if (reader->swap) - { - ret = PyLong_FromUnsignedLong((unsigned int)bswap32(*(unsigned int *)reader->data)); - } - else - { - ret = PyLong_FromUnsignedLong(*(unsigned int *)(reader->data)); - } - reader->data += 4; - return ret; -} - -static inline PyObject *read_SInt64(Reader *reader) -{ - CHECK_LENGTH(reader, 8); - PyObject *ret = NULL; - if (reader->swap) - { - ret = PyLong_FromLongLong((signed long long)bswap64(*(unsigned long long *)reader->data)); - } - else - { - ret = PyLong_FromLongLong(*(signed long long *)(reader->data)); - } - reader->data += 8; - return ret; -} - -static inline PyObject *read_UInt64(Reader *reader) -{ - CHECK_LENGTH(reader, 8); - PyObject *ret = NULL; - if (reader->swap) - { - ret = PyLong_FromUnsignedLongLong((unsigned long long)bswap64(*(unsigned long long *)reader->data)); - } - else - { - ret = PyLong_FromUnsignedLongLong(*(unsigned long long *)(reader->data)); - } - reader->data += 8; - return ret; -} - -static inline PyObject *read_float(Reader *reader) -{ - CHECK_LENGTH(reader, 4); - PyObject *ret = NULL; - if (reader->swap) - { - ret = PyFloat_FromDouble((float)bswap32(*(unsigned int *)reader->data)); - } - else - { - ret = PyFloat_FromDouble(*(float *)(reader->data)); - } - reader->data += 4; - return ret; -} - -static inline PyObject *read_double(Reader *reader) -{ - CHECK_LENGTH(reader, 8); - PyObject *ret = NULL; - if (reader->swap) - { - ret = PyFloat_FromDouble((double)bswap64(*(unsigned long long *)reader->data)); - } - else - { - ret = PyFloat_FromDouble(*(double *)(reader->data)); - } - reader->data += 8; - return ret; -} - -static inline int read_length(Reader *reader) -{ - int length = *(int *)reader->data; - reader->data += 4; - if (reader->swap) - { - length = bswap32(length); - } - return length; -} - -static inline PyObject *read_string(Reader *reader) -{ - CHECK_LENGTH(reader, 4); - int length = read_length(reader); - CHECK_LENGTH(reader, length); - PyObject *str = PyUnicode_DecodeUTF8(reader->data, length, SURROGATEESCAPE); - reader->data += length; - // align - align4(reader); - return str; -} - -static inline PyObject *read_TypelessData(Reader *reader) -{ - CHECK_LENGTH(reader, 4); - int length = read_length(reader); - CHECK_LENGTH(reader, length); - PyObject *value = PyMemoryView_FromMemory(reader->data, length, PyBUF_READ); - reader->data += length; - return value; -} - -static inline read_type getReadFunction(int hash_value, int *index) -{ - switch (hash_value) - { - case HASH_SInt8: - return read_SInt8; - case HASH_UInt8: - case HASH_char: - return read_UInt8; - case HASH_SInt16: - case HASH_short: - return read_SInt16; - case HASH_UInt16: - case HASH_unsigned_short: - return read_UInt16; - case HASH_SInt32: - case HASH_int: - return read_SInt32; - case HASH_UInt32: - case HASH_unsigned_int: - case HASH_TypePtr: // Type* - return read_UInt32; - case HASH_SInt64: - case HASH_long_long: - return read_SInt64; - case HASH_UInt64: - case HASH_unsigned_long_long: - case HASH_FileSize: - return read_UInt64; - case HASH_float: - return read_float; - case HASH_double: - return read_double; - case HASH_bool: - return read_bool; - case HASH_string: - *index += 3; - return read_string; - case HASH_TypelessData: - *index += 2; - return read_TypelessData; - default: - return NULL; - } -} - -static PyObject *getSubNodes(PyObject *nodes, int *index) -{ - PyObject *result = NULL; - TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index); - unsigned short level = node->m_Level; - for (int i = *index + 1; i < PyList_Size(nodes); i++) - { - if (((TypeTreeNodeObject *)PyList_GetItem(nodes, i))->m_Level <= level) - { - result = PyList_GetSlice(nodes, *index, i); - *index = i - 1; - return result; - } - } - result = PyList_GetSlice(nodes, *index, PyList_Size(nodes)); - *index = PyList_Size(nodes) - 1; - return result; -} - -static inline int PyDict_SetItemString_Safe(PyObject *dict, const char *key, PyObject *value) -{ - int ret = PyDict_SetItemString(dict, key, value); - // SetItemString increases the ref count - // so we have to decrease it here again - // so that the value will be destroyed with the dict - Py_XDECREF(value); - return ret; -} - -static inline int PyList_SetItem_Safe(PyObject *list, int i, PyObject *value) -{ - int ret = PyList_SetItem(list, i, value); - // SetItem increases the ref count - // so we have to decrease it here again - // so that the value will be destroyed with the list - // Py_XDECREF(value); - return ret; -} - -static PyObject *TypeTreeHelper_ReadValue(PyObject *nodes, Reader *reader, int *index) -{ - if (*index >= PyList_Size(nodes)) - { - PyErr_SetString(PyExc_RuntimeError, "index out of range"); - return NULL; - } - TypeTreeNodeObject *node = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index); - PyObject *value = NULL; - int sub_index = 0; - - char align = (node->m_MetaFlag & kAlignBytesFlag) ? 1 : 0; - // printf("RVa: %d\t%lld\t%s\t%s\t%d\t%d\n", *index, (reader->data - reader->dataStart), node->m_Name, node->m_Type, align, node->m_MetaFlag); - - int hash_value = node->typehash; - read_type func = getReadFunction(hash_value, index); - if (func) - { - value = func(reader); - } - else - { - if (hash_value == HASH_map) - { - TypeTreeNodeObject *node2 = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index + 1); - if (node2->m_MetaFlag & kAlignBytesFlag) - align = 1; - - CHECK_LENGTH(reader, 4); - int size = read_length(reader); - - *index += 4; // skip self, Array, size, pair - PyObject *first_nodes = NULL; - read_type first_func = NULL; - char firstalign = 0; - initReadFuncOrNodes(nodes, index, &first_nodes, &first_func, &firstalign); - *index += 1; // move to start of second - PyObject *second_nodes = NULL; - read_type second_func = NULL; - char secondalign = 0; - initReadFuncOrNodes(nodes, index, &second_nodes, &second_func, &secondalign); - - value = PyList_New(size); - PyObject *first; - PyObject *second; - for (int i = 0; i < size; i++) - { - sub_index = 0; - first = (first_func) ? first_func(reader) : TypeTreeHelper_ReadValue(first_nodes, reader, &sub_index); - if (first == NULL) - { - Py_XDECREF(value); - return NULL; - } - if (firstalign) - align4(reader); - sub_index = 0; - second = (second_func) ? second_func(reader) : TypeTreeHelper_ReadValue(second_nodes, reader, &sub_index); - if (second == NULL) - { - Py_XDECREF(first); - Py_XDECREF(second); - return NULL; - } - if (secondalign) - align4(reader); - PyList_SetItem(value, i, PyTuple_Pack(2, first, second)); - Py_XDECREF(first); - Py_XDECREF(second); - } - Py_XDECREF(first_nodes); - Py_XDECREF(second_nodes); - } - else - { - if (*index+1 >= PyList_Size(nodes)) - { - // end of nodes reached, - // so an empty class is returned - return PyDict_New(); - } - TypeTreeNodeObject *node2 = (TypeTreeNodeObject *)PyList_GetItem(nodes, *index + 1); - if (strcmp(node2->m_Type, "Array") == 0) - { - if (node2->m_MetaFlag & kAlignBytesFlag) - align = 1; - *index += 3; // skip self, Array, size - PyObject *vector_nodes = NULL; - read_type vector_func = NULL; - char subalign = 0; - initReadFuncOrNodes(nodes, index, &vector_nodes, &vector_func, &subalign); - - int size = read_length(reader); - value = PyList_New(size); - for (int i = 0; i < size; i++) - { - int sub_index = 0; - PyObject *vector_value = (vector_func) ? vector_func(reader) : TypeTreeHelper_ReadValue(vector_nodes, reader, &sub_index); - if (vector_value == NULL) - { - Py_XDECREF(value); - return NULL; - } - if (subalign) - align4(reader); - PyList_SetItem_Safe(value, i, vector_value); - } - Py_XDECREF(vector_nodes); - } - else // Class - { - PyObject *cls_nodes = getSubNodes(nodes, index); - int j = 1; - value = PyDict_New(); - char *j_name = NULL; - while (j < PyList_Size(cls_nodes)) - { - j_name = ((TypeTreeNodeObject *)PyList_GetItem(cls_nodes, j))->m_Name; - PyObject *j_value = TypeTreeHelper_ReadValue(cls_nodes, reader, &j); - if (j_value == NULL) - { - Py_XDECREF(value); - return NULL; - } - PyDict_SetItemString_Safe(value, j_name, j_value); - j++; - } - Py_XDECREF(cls_nodes); - } - } - } - - if (align) - align4(reader); - return value; -} - -static PyObject *TypeTreeHelper_ReadTypeTree(PyObject *nodes, PyObject *buf, char swap) -{ - Py_buffer view; - if (Py_TYPE(buf)->tp_as_buffer && Py_TYPE(buf)->tp_as_buffer->bf_releasebuffer) - { - buf = PyMemoryView_FromObject(buf); - if (buf == NULL) - { - return NULL; - } - } - else - { - Py_INCREF(buf); - } - - if (PyObject_GetBuffer(buf, &view, PyBUF_WRITABLE | PyBUF_SIMPLE) < 0) - { - PyErr_Clear(); - if (PyObject_GetBuffer(buf, &view, PyBUF_SIMPLE) < 0) - { - Py_DECREF(buf); - return NULL; - } - } - - Reader reader = { - .data = (char *)view.buf, - .dataStart = (char *)view.buf, - .dataEnd = (char *)view.buf + view.len, - .swap = swap, - .obj = buf}; - - PyBuffer_Release(&view); - - int index = 0; - PyObject *result = TypeTreeHelper_ReadValue(nodes, &reader, &index); - - Py_DECREF(buf); - - return result; -} - -PyObject *read_typetree(PyObject *self, PyObject *args) -{ - PyObject *nodes = PyTuple_GetItem(args, 0); - PyObject *buf = PyTuple_GetItem(args, 1); - PyObject *swap_obj = PyTuple_GetItem(args, 2); - char swap = 0; - - if (!PyUnicode_Check(swap_obj)) - { - PyErr_SetString(PyExc_TypeError, - "The endian attribute value must be a string"); - return NULL; - } - if (PyUnicode_GET_LENGTH(swap_obj) != 1) - { - PyErr_SetString(PyExc_TypeError, - "The endian attribute value must be a string of size 1"); - return NULL; - } - char endian = *(char *)PyUnicode_DATA(swap_obj); - switch (endian) - { - case '<': - if (IS_LITTLE_ENDIAN == 0) - swap = 1; - break; - case '>': - if (IS_LITTLE_ENDIAN == 1) - swap = 1; - break; - case '=': - case '|': - break; - default: - { - PyErr_SetString(PyExc_TypeError, - "The endian attribute value must be one of '>', '<', '=', '|'"); - return NULL; - } - } - return TypeTreeHelper_ReadTypeTree(nodes, buf, swap); -} - -static void -TypeTreeNode_dealloc(TypeTreeNodeObject *self) -{ - PyMem_Free(self->m_Name); - PyMem_Free(self->m_Type); - // for (unsigned short i = 0; i < self->children_count; i++) - // { - // Py_DECREF((PyObject*)self->children[i]); - // } - // PyMem_Free(self->children); - Py_TYPE(self)->tp_free((PyObject *)self); -} - -PyObject * -TypeTreeNode_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - TypeTreeNodeObject *self; - self = (TypeTreeNodeObject *)type->tp_alloc(type, 0); - if (self != NULL) - { - self->m_Version = 0; - self->m_Level = 0; - self->m_TypeFlags = 0; - self->m_ByteSize = 0; - self->m_Index = 0; - self->m_MetaFlag = 0; - self->m_Type = PyMem_Malloc(sizeof(char)); - self->m_Name = PyMem_Malloc(sizeof(char)); - self->m_Type[0] = '\0'; - self->m_Name[0] = '\0'; - // self->children_count = 0; - // self->children = NULL; - self->m_TypeStrOffset = 0; - self->m_NameStrOffset = 0; - self->m_RefTypeHash = 0; - self->m_VariableCount = 0; - } - return (PyObject *)self; -} - -static int -TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject *kwds) -{ - static char *kwlist[] = { - "m_Name", // char* - "m_Type", // char* - "m_Level", // uint8 - "m_MetaFlag", // int32 - "m_Version", // int16 - "m_TypeFlags", // int32 - "m_ByteSize", // int - "m_Index", // int - "m_TypeStrOffset", // unsigned int - "m_NameStrOffset", // unsigned int - "m_RefTypeHash", // unsigned long long - "m_VariableCount", // int - NULL}; - const char *type = NULL; - const char *name = NULL; - if (!PyArg_ParseTupleAndKeywords( - args, - kwds, - "|zzbihiiiIIKi", - kwlist, - &name, - &type, - &self->m_Level, - &self->m_MetaFlag, - &self->m_Version, - &self->m_TypeFlags, - &self->m_ByteSize, - &self->m_Index, - &self->m_TypeStrOffset, - &self->m_NameStrOffset, - &self->m_RefTypeHash, - &self->m_VariableCount)) - return -1; - if (type != NULL) - { - PyMem_Free(self->m_Type); - self->m_Type = PyMem_Malloc(strlen(type) + 1); - strcpy(self->m_Type, type); - self->typehash = hash_str(type); - } - if (name != NULL) - { - PyMem_Free(self->m_Name); - self->m_Name = PyMem_Malloc(strlen(name) + 1); - strcpy(self->m_Name, name); - } - return 0; -}; - -static PyObject * -TypeTreeNode_getType(TypeTreeNodeObject *self, void *closure) -{ - return PyUnicode_DecodeUTF8(self->m_Type, strlen(self->m_Type), SURROGATEESCAPE); -} - -static int -TypeTreeNode_setType(TypeTreeNodeObject *self, PyObject *value, void *closure) -{ - if (!PyUnicode_Check(value)) - { - PyErr_SetString(PyExc_TypeError, "The type attribute value must be a string"); - return -1; - } - PyMem_Free(self->m_Type); - char *type = PyUnicode_AsUTF8(value); - self->m_Type = PyMem_Malloc(strlen(type) + 1); - strcpy(self->m_Type, type); - self->typehash = hash_str(type); - return 0; -} - -static PyObject * -TypeTreeNode_getName(TypeTreeNodeObject *self, void *closure) -{ - return PyUnicode_DecodeUTF8(self->m_Name, strlen(self->m_Name), SURROGATEESCAPE); -} - -static int -TypeTreeNode_setName(TypeTreeNodeObject *self, PyObject *value, void *closure) -{ - if (!PyUnicode_Check(value)) - { - PyErr_SetString(PyExc_TypeError, "The name attribute value must be a string"); - return -1; - } - PyMem_Free(self->m_Name); - char *name = PyUnicode_AsUTF8(value); - self->m_Name = PyMem_Malloc(strlen(name) + 1); - strcpy(self->m_Name, name); - return 0; -} - -static PyMemberDef TypeTreeNode_members[] = { - //{"m_Type", T_STRING, offsetof(TypeTreeNodeObject, m_Type), 0, ""}, - //{"m_Name", T_STRING, offsetof(TypeTreeNodeObject, m_Name), 0, ""}, - {"m_ByteSize", T_INT, offsetof(TypeTreeNodeObject, m_ByteSize), 0, ""}, - {"m_Index", T_INT, offsetof(TypeTreeNodeObject, m_Index), 0, ""}, - {"m_TypeFlags", T_INT, offsetof(TypeTreeNodeObject, m_TypeFlags), 0, ""}, - {"m_Version", T_SHORT, offsetof(TypeTreeNodeObject, m_Version), 0, ""}, - {"m_MetaFlag", T_INT, offsetof(TypeTreeNodeObject, m_MetaFlag), 0, ""}, - {"m_Level", T_UBYTE, offsetof(TypeTreeNodeObject, m_Level), 0, ""}, - {"m_TypeStrOffset", T_UINT, offsetof(TypeTreeNodeObject, m_TypeStrOffset), 0, ""}, - {"m_NameStrOffset", T_UINT, offsetof(TypeTreeNodeObject, m_NameStrOffset), 0, ""}, - {"m_RefTypeHash", T_ULONGLONG, offsetof(TypeTreeNodeObject, m_RefTypeHash), 0, ""}, - {"m_VariableCount", T_INT, offsetof(TypeTreeNodeObject, m_VariableCount), 0, ""}, - {NULL} /* Sentinel */ -}; - -static PyGetSetDef TypeTreeNode_getsetters[] = { - {"m_Type", (getter)TypeTreeNode_getType, (setter)TypeTreeNode_setType, - "", NULL}, - {"m_Name", (getter)TypeTreeNode_getName, (setter)TypeTreeNode_setName, - "", NULL}, - {NULL} /* Sentinel */ -}; - -static PyObject * -TypeTreeNode_repr(PyObject *self) -{ - TypeTreeNodeObject *node = (TypeTreeNodeObject *)self; - return PyUnicode_FromFormat( - "", - node->m_Level, - node->m_Type, - node->m_Name); -} - -// PyTypeObject TypeTreeNodeType; - -// static int -// TypeTreeNode_set_children(TypeTreeNodeObject *self, PyObject *value, void *closure) -// { -// PyObject *tmp; -// if (value == NULL) -// { -// PyErr_SetString(PyExc_TypeError, "Cannot delete the children attribute"); -// return -1; -// } -// if (!PyList_Check(value)) -// { -// PyErr_SetString(PyExc_TypeError, "The children attribute value must be a list"); -// return -1; -// } -// for (unsigned short i = 0; i < self->children_count; i++) -// { -// Py_DECREF((PyObject*)self->children[i]); -// } -// PyMem_Free(self->children); -// self->children_count = PyList_Size(value); -// self->children = PyMem_Malloc(sizeof(TypeTreeNodeObject *) * self->children_count); -// for (unsigned short i = 0; i < self->children_count; i++) -// { -// tmp = PyList_GetItem(value, i); -// if (!PyObject_TypeCheck(tmp, &TypeTreeNodeType)) -// { -// PyErr_SetString(PyExc_TypeError, "The children attribute value must be a list of TypeTreeNode objects"); -// return -1; -// } -// self->children[i] = (TypeTreeNodeObject *)tmp; -// Py_INCREF(tmp); -// } -// return 0; -// } - -// static PyGetSetDef TypeTreeNode_getsetters[] = { -// {"children", (getter) TypeTreeNode_get_children, (setter) TypeTreeNode_set_children, -// "", NULL}, -// {NULL} /* Sentinel */ -// }; - -PyTypeObject TypeTreeNodeType = { - PyVarObject_HEAD_INIT(NULL, 0) - .tp_name = "UnityPyBoost.TypeTreeNode", - .tp_doc = PyDoc_STR("TypeTreeNode objects"), - .tp_basicsize = sizeof(TypeTreeNodeObject), - .tp_itemsize = 0, - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, - .tp_new = TypeTreeNode_new, - .tp_init = (initproc)TypeTreeNode_init, - .tp_dealloc = (destructor)TypeTreeNode_dealloc, - .tp_members = TypeTreeNode_members, - .tp_getset = TypeTreeNode_getsetters, - .tp_repr = (reprfunc)TypeTreeNode_repr, -}; - -int add_typetreenode_to_module(PyObject *m) -{ - if (PyType_Ready(&TypeTreeNodeType) < 0) - return -1; - Py_INCREF(&TypeTreeNodeType); - PyModule_AddObject(m, "TypeTreeNode", (PyObject *)&TypeTreeNodeType); - return 0; -} diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp new file mode 100644 index 00000000..1b49208f --- /dev/null +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -0,0 +1,746 @@ +#include +#include +#include +#include +#include + +// TypeTreeReader - impl + +typedef struct Reader +{ + uint8_t *ptr; + uint8_t *end; + uint8_t *start; +} ReaderT; + +typedef struct TypeTreeReaderConfig +{ + bool as_dict; + PyObject *classes; + PyObject *assetfile; + PyObject *clean_name; +} TypeTreeReaderConfigT; + +inline void align4(ReaderT *reader) +{ + size_t offset = (size_t)reader->ptr - (size_t)reader->start; + size_t aligned_offset = (offset + 4 - 1) & ~(4 - 1); + reader->ptr = reader->start + aligned_offset; +} + +inline PyObject *read_bool(ReaderT *reader) +{ + if (reader->ptr + 1 > reader->end) + { + PyErr_SetString(PyExc_ValueError, "read_bool out of bounds"); + return NULL; + } + return *reader->ptr++ ? Py_True : Py_False; +} + +inline PyObject *read_u8(ReaderT *reader) +{ + if (reader->ptr + 1 > reader->end) + { + PyErr_SetString(PyExc_ValueError, "read_u8 out of bounds"); + return NULL; + } + return PyLong_FromUnsignedLong(*reader->ptr++); +} + +inline PyObject *read_s8(ReaderT *reader) +{ + if (reader->ptr + 1 > reader->end) + { + PyErr_SetString(PyExc_ValueError, "read_s8 out of bounds"); + return NULL; + } + return PyLong_FromLong((int8_t)*reader->ptr++); +} + +template +inline PyObject *read_int(ReaderT *reader) +{ + static_assert(std::is_integral::value, "Unsupported type for read_int"); + + if (reader->ptr + sizeof(T) > reader->end) + { + PyErr_SetString(PyExc_ValueError, "read_int out of bounds"); + return NULL; + } + T value = *(T *)reader->ptr; + if constexpr (swap) + { + swap_any_inplace(&value); + } + reader->ptr += sizeof(T); + if constexpr (std::is_signed::value) + { + if constexpr (std::is_same::value) + { + return PyLong_FromLongLong(value); + } + else + { + return PyLong_FromLong((int32_t)value); + } + } + else + { + if constexpr (std::is_same::value) + { + return PyLong_FromUnsignedLongLong(value); + } + else + { + return PyLong_FromUnsignedLong((uint32_t)value); + } + } +} + +template +inline PyObject *read_float(ReaderT *reader) +{ + static_assert(std::is_floating_point::value, "Unsupported type for read_float"); + + if (reader->ptr + sizeof(T) > reader->end) + { + PyErr_SetString(PyExc_ValueError, "read_float out of bounds"); + return NULL; + } + T value = *(T *)reader->ptr; + if constexpr (swap) + { + swap_any_inplace(&value); + } + reader->ptr += sizeof(T); + return PyFloat_FromDouble(value); +} + +template +inline bool _read_length(ReaderT *reader, int32_t *length) +{ + if (reader->ptr + sizeof(int32_t) > reader->end) + { + PyErr_SetString(PyExc_ValueError, "read_length out of bounds"); + return false; + } + *length = *(int32_t *)reader->ptr; + if constexpr (swap) + { + swap_any_inplace(length); + } + reader->ptr += sizeof(int32_t); + return true; +} + +template +inline PyObject *read_str(ReaderT *reader) +{ + int32_t length; + if (!_read_length(reader, &length)) + { + return NULL; + } + if (reader->ptr + length > reader->end) + { + PyErr_SetString(PyExc_ValueError, "read_str out of bounds"); + return NULL; + } + PyObject *str = PyUnicode_DecodeUTF8((char *)reader->ptr, length, "surrogateescape"); + reader->ptr += length; + align4(reader); + return str; +} + +template +inline PyObject *read_bytes(ReaderT *reader) +{ + int32_t length; + if (!_read_length(reader, &length)) + { + return NULL; + } + if (reader->ptr + length > reader->end) + { + PyErr_SetString(PyExc_ValueError, "read_bytes out of bounds"); + return NULL; + } + PyObject *bytes = PyBytes_FromStringAndSize((char *)reader->ptr, length); + reader->ptr += length; + return bytes; +} + +template +inline PyObject *read_pair(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config) +{ + if (PyList_GET_SIZE(node->m_Children) != 2) + { + PyErr_SetString(PyExc_ValueError, "Pair node must have 2 children"); + return NULL; + } + + PyObject *first = read_typetree_value(reader, (TypeTreeNodeObject *)PyList_GetItem(node->m_Children, 0), config); + if (!first) + { + return NULL; + } + PyObject *second = read_typetree_value(reader, (TypeTreeNodeObject *)PyList_GetItem(node->m_Children, 1), config); + if (!second) + { + Py_DECREF(first); + return NULL; + } + PyObject *pair = PyTuple_Pack(2, first, second); + Py_DECREF(first); + Py_DECREF(second); + return pair; +} + +inline PyObject *class_from_dict(PyObject *dict, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config) +{ + PyObject *clz = NULL; + PyObject *args = NULL; + PyObject *instance = NULL; + PyObject *keys = NULL; + PyObject *clean_args = NULL; + PyObject *annotations = NULL; + PyObject *extra = NULL; + + // Determine the class based on node's _data_type + if (node->_data_type == NodeDataType::pptr) + { + // Add 'assetsfile' key for PPtr objects + if (PyDict_SetItemString(dict, "assetsfile", config->assetfile) != 0) + { + PyErr_SetString(PyExc_RuntimeError, "Failed to set 'assetsfile'"); + goto error_cleanup; + } + clz = PyObject_GetAttrString(config->classes, "PPtr"); + } + else + { + clz = PyObject_GetAttr(config->classes, node->m_Type); + if (clz == NULL) + { + clz = PyObject_GetAttrString(config->classes, "Object"); + } + } + + // If class lookup fails, raise an error + if (clz == NULL) + { + PyErr_SetString(PyExc_ValueError, "Failed to get class"); + goto error_cleanup; + } + + // Prepare arguments (empty tuple) + args = PyTuple_New(0); + if (args == NULL) + { + goto error_cleanup; + } + + // Attempt to create the instance from the class and dict + instance = PyObject_Call(clz, args, dict); + if (instance != NULL) + { + goto success; + } + PyErr_Clear(); + + // If calling the class failed, check for callable clean_name function + if (!PyCallable_Check(config->clean_name)) + { + PyErr_SetString(PyExc_ValueError, "clean_name is not callable"); + goto error_cleanup; + } + + // Clean the dictionary keys + keys = PyDict_Keys(dict); + clean_args = PyTuple_New(1); // For passing to the clean_name function + if (keys == NULL || clean_args == NULL) + { + goto error_cleanup; + } + + // Iterate through dict keys, clean them, and update if necessary + for (Py_ssize_t i = 0; i < PyList_Size(keys); i++) + { + PyObject *key = PyList_GetItem(keys, i); + Py_INCREF(key); // Protect reference count + + PyTuple_SetItem(clean_args, 0, key); + PyObject *clean_key = PyObject_CallFunctionObjArgs(config->clean_name, clean_args, NULL); + if (clean_key == NULL) + { + Py_DECREF(key); + goto error_cleanup; + } + + if (PyUnicode_Compare(key, clean_key) != 0) + { + // Replace the key in the dict with the cleaned key + PyObject *value = PyDict_GetItem(dict, key); + if (value != NULL) + { + PyDict_DelItem(dict, key); + PyDict_SetItem(dict, clean_key, value); + } + } + Py_DECREF(clean_key); + Py_DECREF(key); + } + + // Retry creating the class instance with cleaned dictionary + instance = PyObject_Call(clz, args, dict); + if (instance != NULL) + { + goto success; + } + + // Handle extra attributes not present in class annotations + annotations = PyObject_GetAttrString(clz, "__annotations__"); + if (annotations == NULL) + { + PyErr_SetString(PyExc_ValueError, "Failed to get annotations"); + goto error_cleanup; + } + + extra = PyDict_New(); + for (Py_ssize_t i = 0; i < PyList_Size(keys); i++) + { + PyObject *key = PyList_GetItem(keys, i); + if (PyDict_Contains(annotations, key) == 0) + { + PyObject *value = PyDict_GetItem(dict, key); + PyDict_SetItem(extra, key, value); + PyDict_DelItem(dict, key); + } + } + + instance = PyObject_Call(clz, args, dict); + if (instance != NULL) + { + // Set extra attributes on the instance + keys = PyDict_Keys(extra); + for (Py_ssize_t i = 0; i < PyList_Size(keys); i++) + { + PyObject *key = PyList_GetItem(keys, i); + PyObject *value = PyDict_GetItem(extra, key); + PyObject_SetAttr(instance, key, value); + } + goto success; + } + + PyErr_SetString(PyExc_ValueError, "Failed to create instance"); + goto error_cleanup; + +success: + // Cleanup and return the instance + Py_DECREF(args); + Py_DECREF(clz); + Py_DECREF(dict); + Py_XDECREF(keys); + Py_XDECREF(clean_args); + Py_XDECREF(annotations); + Py_XDECREF(extra); + return instance; + +error_cleanup: + // Cleanup in case of an error + Py_XDECREF(args); + Py_XDECREF(clz); + Py_XDECREF(dict); + Py_XDECREF(keys); + Py_XDECREF(clean_args); + Py_XDECREF(annotations); + Py_XDECREF(extra); + return NULL; +} + +template +PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config) +{ + bool align = node->_align; + PyObject *value = nullptr; + + switch (node->_data_type) + { + case NodeDataType::u8: + value = read_u8(reader); + break; + case NodeDataType::u16: + value = read_int(reader); + break; + case NodeDataType::u32: + value = read_int(reader); + break; + case NodeDataType::u64: + value = read_int(reader); + break; + case NodeDataType::s8: + value = read_s8(reader); + break; + case NodeDataType::s16: + value = read_int(reader); + break; + case NodeDataType::s32: + value = read_int(reader); + break; + case NodeDataType::s64: + value = read_int(reader); + break; + case NodeDataType::f32: + value = read_float(reader); + break; + case NodeDataType::f64: + value = read_float(reader); + break; + case NodeDataType::boolean: + value = read_bool(reader); + break; + case NodeDataType::str: + value = read_str(reader); + break; + case NodeDataType::bytes: + value = read_bytes(reader); + break; + case NodeDataType::pair: + value = read_pair(reader, node, config); + break; + default: + TypeTreeNodeObject *child = nullptr; + if (PyList_GET_SIZE(node->m_Children) > 0) + { + child = (TypeTreeNodeObject *)PyList_GetItem(node->m_Children, 0); + } + + if (child && child->_data_type == NodeDataType::array) + { + // array + if (child->_align) + { + align = true; + } + int32_t length; + if (!_read_length(reader, &length)) + { + return NULL; + } + value = PyList_New(length); + child = (TypeTreeNodeObject *)PyList_GetItem(child->m_Children, 1); + for (int i = 0; i < length; i++) + { + PyObject *item = read_typetree_value(reader, child, config); + if (!item) + { + Py_DECREF(value); + return NULL; + } + PyList_SET_ITEM(value, i, item); + } + } + else + { + // class + value = PyDict_New(); + for (int i = 0; i < PyList_GET_SIZE(node->m_Children); i++) + { + child = (TypeTreeNodeObject *)PyList_GetItem(node->m_Children, i); + PyObject *child_value = read_typetree_value(reader, child, config); + if (!child_value) + { + Py_DECREF(value); + return NULL; + } + if (PyDict_SetItem(value, child->m_Name, child_value)) + { + Py_DECREF(value); + Py_DECREF(child_value); + return NULL; + } + // dict increases ref count, so we need to decref here + Py_DECREF(child_value); + } + if (!config->as_dict) + { + value = class_from_dict(value, node, config); + } + } + } + + if (align) + { + align4(reader); + } + + return value; +} + +PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) +{ + const char *kwlist[] = {"data", "node", "endian", "as_dict", "assetsfile", "classes", "clean_name", NULL}; + PyObject *data; + PyObject *node; + PyObject *as_dict = Py_True; + + TypeTreeReaderConfigT config = { + false, + Py_None, + Py_None, + Py_None}; + + char endian; + bool swap; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOC|OOOO", (char **)kwlist, &data, &node, &endian, &as_dict, &config.assetfile, &config.classes, &config.clean_name)) + { + return NULL; + } + + volatile uint16_t bint = 0x0100; + volatile bool is_big_endian = ((uint8_t *)&bint)[0] == 1; + + switch (endian) + { + case '<': + if (is_big_endian) + { + swap = true; + } + else + { + swap = false; + } + break; + case '>': + if (is_big_endian) + { + swap = false; + } + else + { + swap = true; + } + break; + default: + PyErr_SetString(PyExc_ValueError, "Invalid endian"); + break; + } + Py_buffer view; + + if (PyObject_GetBuffer(data, &view, PyBUF_SIMPLE) == -1) + { + PyErr_SetString(PyExc_ValueError, "Failed to get buffer"); + return NULL; + } + ReaderT reader = {static_cast(view.buf), static_cast(view.buf) + view.len, static_cast(view.buf)}; + config.as_dict = Py_IsTrue(as_dict) == 1; + + PyObject *value; + if (swap) + { + value = read_typetree_value(&reader, (TypeTreeNodeObject *)node, &config); + } + else + { + value = read_typetree_value(&reader, (TypeTreeNodeObject *)node, &config); + } + + PyBuffer_Release(&view); + + return value; +} + +// TypeTreeNode impl +static void TypeTreeNode_dealloc(TypeTreeNodeObject *self) +{ + Py_XDECREF(self->m_Level); + Py_XDECREF(self->m_Type); + Py_XDECREF(self->m_Name); + Py_XDECREF(self->m_ByteSize); + Py_XDECREF(self->m_TypeFlags); + Py_XDECREF(self->m_Version); + Py_XDECREF(self->m_VariableCount); + Py_XDECREF(self->m_Index); + Py_XDECREF(self->m_MetaFlag); + Py_XDECREF(self->m_RefTypeHash); + Py_XDECREF(self->m_Children); + Py_TYPE(self)->tp_free((PyObject *)self); +} + +static const std::map typeToNodeDataType = { + {"SInt8", NodeDataType::s8}, + {"UInt8", NodeDataType::u8}, + {"char", NodeDataType::u8}, + {"short", NodeDataType::s16}, + {"SInt16", NodeDataType::s16}, + {"unsigned short", NodeDataType::u16}, + {"UInt16", NodeDataType::u16}, + {"int", NodeDataType::s32}, + {"SInt32", NodeDataType::s32}, + {"unsigned int", NodeDataType::u32}, + {"UInt32", NodeDataType::u32}, + {"Type*", NodeDataType::u32}, + {"long long", NodeDataType::s64}, + {"SInt64", NodeDataType::s64}, + {"unsigned long long", NodeDataType::u64}, + {"UInt64", NodeDataType::u64}, + {"FileSignature", NodeDataType::u64}, + {"float", NodeDataType::f32}, + {"double", NodeDataType::f64}, + {"bool", NodeDataType::boolean}, + {"string", NodeDataType::str}, + {"TypelessData", NodeDataType::bytes}, + {"pair", NodeDataType::pair}, + {"Array", NodeDataType::array}, +}; + +static int TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject *kwargs) +{ + const char *kwlist[] = { + "m_Level", + "m_Type", + "m_Name", + "m_ByteSize", + "m_TypeFlags", + "m_Version", + "m_Children", + "m_VariableCount", + "m_Index", + "m_MetaFlag", + "m_RefTypeHash", + NULL}; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOOO|OOOOO", (char **)kwlist, + &self->m_Level, + &self->m_Type, + &self->m_Name, + &self->m_ByteSize, + &self->m_TypeFlags, + &self->m_Version, + &self->m_Children, + &self->m_VariableCount, + &self->m_Index, + &self->m_MetaFlag, + &self->m_RefTypeHash)) + { + return -1; + } + + Py_INCREF(self->m_Level); + Py_INCREF(self->m_Type); + Py_INCREF(self->m_Name); + Py_INCREF(self->m_ByteSize); + Py_INCREF(self->m_TypeFlags); + Py_INCREF(self->m_Version); + // optional fields + if (self->m_Children == nullptr) + { + self->m_Children = PyList_New(0); + } + else + { + Py_XINCREF(self->m_Children); + } + if (self->m_VariableCount == nullptr) + { + self->m_VariableCount = Py_None; + } + else + { + Py_INCREF(self->m_VariableCount); + } + if (self->m_Index == nullptr) + { + self->m_Index = Py_None; + } + else + { + Py_INCREF(self->m_Index); + } + if (self->m_MetaFlag == nullptr) + { + self->m_MetaFlag = Py_None; + } + else + { + Py_INCREF(self->m_MetaFlag); + } + if (self->m_RefTypeHash == nullptr) + { + self->m_RefTypeHash = Py_None; + } + else + { + Py_INCREF(self->m_RefTypeHash); + } + + if (self->m_MetaFlag != Py_None && PyLong_AsLong(self->m_MetaFlag) & 0x4000) + { + self->_align = true; + } + + if (self->m_Type != Py_None) + { + const char *type = PyUnicode_AsUTF8(self->m_Type); + self->_data_type = NodeDataType::unk; + if (type[0] == 'P' && type[1] == 'P' && type[2] == 't' && type[3] == 'r' && type[4] == '<') + { + self->_data_type = NodeDataType::pptr; + } + else + { + for (auto it = typeToNodeDataType.begin(); it != typeToNodeDataType.end(); ++it) + { + if (strcmp(it->first, type) == 0) + { + self->_data_type = it->second; + break; + } + } + } + } + + return 0; +} + +static PyMemberDef TypeTreeNode_members[] = { + {"m_Level", T_OBJECT_EX, offsetof(TypeTreeNodeObject, m_Level), 0, ""}, + {"m_Type", T_OBJECT_EX, offsetof(TypeTreeNodeObject, m_Type), 0, ""}, + {"m_Name", T_OBJECT_EX, offsetof(TypeTreeNodeObject, m_Name), 0, ""}, + {"m_ByteSize", T_OBJECT_EX, offsetof(TypeTreeNodeObject, m_ByteSize), 0, ""}, + {"m_TypeFlags", T_OBJECT_EX, offsetof(TypeTreeNodeObject, m_TypeFlags), 0, ""}, + {"m_Version", T_OBJECT_EX, offsetof(TypeTreeNodeObject, m_Version), 0, ""}, + {"m_Children", T_OBJECT_EX, offsetof(TypeTreeNodeObject, m_Children), 0, ""}, + {"m_VariableCount", T_OBJECT_EX, offsetof(TypeTreeNodeObject, m_VariableCount), 0, ""}, + {"m_Index", T_OBJECT_EX, offsetof(TypeTreeNodeObject, m_Index), 0, ""}, + {"m_MetaFlag", T_OBJECT_EX, offsetof(TypeTreeNodeObject, m_MetaFlag), 0, ""}, + {"m_RefTypeHash", T_OBJECT_EX, offsetof(TypeTreeNodeObject, m_RefTypeHash), 0, ""}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject TypeTreeNodeType = []() -> PyTypeObject +{ + PyTypeObject type = {PyObject_HEAD_INIT(NULL) 0}; + type.tp_name = "TypeTreeHelper.TypeTreeNode"; + type.tp_doc = "TypeTreeNode objects"; + type.tp_basicsize = sizeof(TypeTreeNodeObject); + type.tp_itemsize = 0; + type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE; + type.tp_new = PyType_GenericNew; + type.tp_init = (initproc)TypeTreeNode_init; + type.tp_dealloc = (destructor)TypeTreeNode_dealloc; + type.tp_members = TypeTreeNode_members; + return type; +}(); + +int add_typetreenode_to_module(PyObject *m) +{ + if (PyType_Ready(&TypeTreeNodeType) < 0) + return -1; + Py_INCREF(&TypeTreeNodeType); + PyModule_AddObject(m, "TypeTreeNode", (PyObject *)&TypeTreeNodeType); + return 0; +} diff --git a/UnityPyBoost/TypeTreeHelper.h b/UnityPyBoost/TypeTreeHelper.h deleted file mode 100644 index 8de8fea6..00000000 --- a/UnityPyBoost/TypeTreeHelper.h +++ /dev/null @@ -1,31 +0,0 @@ -#define PY_SSIZE_T_CLEAN -#pragma once -#include -#include "structmember.h" - -typedef struct TypeTreeNodeObject{ - PyObject_HEAD - short m_Version; - unsigned char m_Level; - int m_TypeFlags; - int m_ByteSize; - int m_Index; - int m_MetaFlag; - char *m_Type; - char *m_Name; - //unsigned short children_count; - //struct TypeTreeNodeObject **children; - // UnityFS - unsigned int m_TypeStrOffset; - unsigned int m_NameStrOffset; - // UnityFS - version >= 19 - unsigned long long m_RefTypeHash; - // UnityRaw - versin = 2 - int m_VariableCount; - // helper fields - unsigned int typehash; -} TypeTreeNodeObject; - -int add_typetreenode_to_module(PyObject *m); - -PyObject* read_typetree(PyObject *self, PyObject *args); \ No newline at end of file diff --git a/UnityPyBoost/TypeTreeHelper.hpp b/UnityPyBoost/TypeTreeHelper.hpp new file mode 100644 index 00000000..eb226d8c --- /dev/null +++ b/UnityPyBoost/TypeTreeHelper.hpp @@ -0,0 +1,51 @@ +#define PY_SSIZE_T_CLEAN +#pragma once +#include +#include "structmember.h" +#include + +enum NodeDataType +{ + u8 = 0, + u16 = 1, + u32 = 2, + u64 = 3, + s8 = 4, + s16 = 5, + s32 = 6, + s64 = 7, + f32 = 8, + f64 = 9, + boolean = 10, + str = 11, + bytes = 12, + pair = 13, + array = 14, + pptr = 15, + unk = 255 +}; + +typedef struct TypeTreeNodeObject +{ + PyObject_HEAD + // helper field - simple hash of type for faster comparison + unsigned int _data_type; + bool _align; + // used filds for fast access + PyObject* m_Children; + PyObject *m_Name; + // fields not used in C + PyObject *m_Level; + PyObject *m_Type; + PyObject *m_ByteSize; + PyObject *m_TypeFlags; + PyObject *m_Version; + PyObject *m_VariableCount; + PyObject *m_Index; + PyObject *m_MetaFlag; + PyObject *m_RefTypeHash; +} TypeTreeNodeObject; + +int add_typetreenode_to_module(PyObject *m); + +PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs); diff --git a/UnityPyBoost/UnityPyBoost.c b/UnityPyBoost/UnityPyBoost.cpp similarity index 90% rename from UnityPyBoost/UnityPyBoost.c rename to UnityPyBoost/UnityPyBoost.cpp index 84ced41f..fab8de5f 100644 --- a/UnityPyBoost/UnityPyBoost.c +++ b/UnityPyBoost/UnityPyBoost.cpp @@ -1,10 +1,10 @@ #define PY_SSIZE_T_CLEAN #pragma once #include -#include "AnimationClip.h" -#include "Mesh.h" -#include "TextureSwizzler.h" -#include "TypeTreeHelper.h" +#include "AnimationClip.hpp" +#include "Mesh.hpp" +#include "TextureSwizzler.hpp" +#include "TypeTreeHelper.hpp" /* Mesh.py */ @@ -23,7 +23,7 @@ static struct PyMethodDef method_table[] = { "replacement for VertexData to ComponentData in Mesh.ReadVertexData"}, {"read_typetree", (PyCFunction)read_typetree, - METH_VARARGS, + METH_VARARGS | METH_KEYWORDS, "replacement for TypeTreeHelper.read_typetree"}, {"switch_deswizzle", (PyCFunction)switch_deswizzle, diff --git a/UnityPyBoost/swap.h b/UnityPyBoost/swap.h deleted file mode 100644 index 5597a232..00000000 --- a/UnityPyBoost/swap.h +++ /dev/null @@ -1,35 +0,0 @@ -// check if the system is little endian -#define IS_LITTLE_ENDIAN (*(unsigned char *)&(unsigned short){1}) - -// set swap funcions (source: old version of nodejs/src/node_buffer.cc) -#if defined(__GNUC__) || defined(__clang__) -#define bswap16(x) __builtin_bswap16(x) -#define bswap32(x) __builtin_bswap32(x) -#define bswap64(x) __builtin_bswap64(x) -#elif defined(__linux__) -#include -#define bswap16(x) bswap_16(x) -#define bswap32(x) bswap_32(x) -#define bswap64(x) bswap_64(x) -#elif defined(_MSC_VER) -#include -#define bswap16(x) _byteswap_ushort(x) -#define bswap32(x) _byteswap_ulong(x) -#define bswap64(x) _byteswap_uint64(x) -#else -#define bswap16 ((x) << 8) | ((x) >> 8) -#define bswap32 \ - (((x)&0xFF) << 24) | \ - (((x)&0xFF00) << 8) | \ - (((x) >> 8) & 0xFF00) | \ - (((x) >> 24) & 0xFF) -#define bswap64 \ - (((x)&0xFF00000000000000ull) >> 56) | \ - (((x)&0x00FF000000000000ull) >> 40) | \ - (((x)&0x0000FF0000000000ull) >> 24) | \ - (((x)&0x000000FF00000000ull) >> 8) | \ - (((x)&0x00000000FF000000ull) << 8) | \ - (((x)&0x0000000000FF0000ull) << 24) | \ - (((x)&0x000000000000FF00ull) << 40) | \ - (((x)&0x00000000000000FFull) << 56) -#endif \ No newline at end of file diff --git a/UnityPyBoost/swap.hpp b/UnityPyBoost/swap.hpp new file mode 100644 index 00000000..904d467d --- /dev/null +++ b/UnityPyBoost/swap.hpp @@ -0,0 +1,77 @@ +#if __cplusplus >= 202101L // "C++23"; +#include +#define bswap16(x) std::byteswap(x) +#define bswap32(x) std::byteswap(x) +#define bswap64(x) std::byteswap(x) +#else +// set swap funcions (source: old version of nodejs/src/node_buffer.cc) +#if defined(__GNUC__) || defined(__clang__) +#define bswap16(x) __builtin_bswap16(x) +#define bswap32(x) __builtin_bswap32(x) +#define bswap64(x) __builtin_bswap64(x) +#elif defined(__linux__) +#include +#define bswap16(x) bswap_16(x) +#define bswap32(x) bswap_32(x) +#define bswap64(x) bswap_64(x) +#elif defined(_MSC_VER) +#include +#define bswap16(x) _byteswap_ushort(x) +#define bswap32(x) _byteswap_ulong(x) +#define bswap64(x) _byteswap_uint64(x) +#else +#ifdef __builtin_bswap16 +#define bswap16(x) __builtin_bswap16(x) +#else +#define bswap16 ((x) << 8) | ((x) >> 8) +#endif +#ifdef __builtin_bswap32 +#define bswap32(x) __builtin_bswap32(x) +#else +#define bswap32 \ + (((x) & 0xFF) << 24) | \ + (((x) & 0xFF00) << 8) | \ + (((x) >> 8) & 0xFF00) | \ + (((x) >> 24) & 0xFF) +#endif +#ifdef __builtin_bswap64 +#define bswap64 __builtin_bswap64(x) +#else +#define bswap64 \ + (((x) & 0xFF00000000000000ull) >> 56) | \ + (((x) & 0x00FF000000000000ull) >> 40) | \ + (((x) & 0x0000FF0000000000ull) >> 24) | \ + (((x) & 0x000000FF00000000ull) >> 8) | \ + (((x) & 0x00000000FF000000ull) << 8) | \ + (((x) & 0x0000000000FF0000ull) << 24) | \ + (((x) & 0x000000000000FF00ull) << 40) | \ + (((x) & 0x00000000000000FFull) << 56) +#endif +#endif +#endif + +template +inline void swap_any_inplace(T *x) +{ + if constexpr (sizeof(T) == 1) + { + // do nothing + } + else if constexpr (sizeof(T) == 2) + { + + *(uint16_t *)x = bswap16(*(uint16_t *)x); + } + else if constexpr (sizeof(T) == 4) + { + *(uint32_t *)x = bswap32(*(uint32_t *)x); + } + else if constexpr (sizeof(T) == 8) + { + *(uint64_t *)x = bswap64(*(uint64_t *)x); + } + else + { + static_assert(false, "Swap not implemented for this size"); + } +} diff --git a/setup.py b/setup.py index 23d54c66..c8c682d9 100644 --- a/setup.py +++ b/setup.py @@ -65,9 +65,10 @@ def get_fmod_library(): [ f"UnityPyBoost/{f}" for f in os.listdir(UNITYPYBOOST_DIR) - if f.endswith(".c") + if f.endswith(".cpp") ], - language="c", + language="c++", + extra_compile_args=["/std:c++20"], include_dirs=[UNITYPYBOOST_DIR], ) ], From 59c0abf5e89060eae7d40b290858a42fd067c764 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 20 Sep 2024 00:28:34 +0200 Subject: [PATCH 271/599] TypeTreeHelper.cpp - fix class reading --- UnityPyBoost/TypeTreeHelper.cpp | 202 +++++++++++++++----------------- 1 file changed, 92 insertions(+), 110 deletions(-) diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index 1b49208f..73511b1d 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -197,24 +197,20 @@ inline PyObject *read_pair(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeRe return pair; } -inline PyObject *class_from_dict(PyObject *dict, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config) +template +inline PyObject *read_class(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config) { PyObject *clz = NULL; - PyObject *args = NULL; - PyObject *instance = NULL; - PyObject *keys = NULL; - PyObject *clean_args = NULL; - PyObject *annotations = NULL; - PyObject *extra = NULL; + PyObject *dict = PyDict_New(); // Determine the class based on node's _data_type if (node->_data_type == NodeDataType::pptr) { - // Add 'assetsfile' key for PPtr objects if (PyDict_SetItemString(dict, "assetsfile", config->assetfile) != 0) { PyErr_SetString(PyExc_RuntimeError, "Failed to set 'assetsfile'"); - goto error_cleanup; + Py_DECREF(dict); + return NULL; } clz = PyObject_GetAttrString(config->classes, "PPtr"); } @@ -227,136 +223,100 @@ inline PyObject *class_from_dict(PyObject *dict, TypeTreeNodeObject *node, TypeT } } - // If class lookup fails, raise an error if (clz == NULL) { PyErr_SetString(PyExc_ValueError, "Failed to get class"); - goto error_cleanup; + Py_DECREF(dict); + return NULL; } - // Prepare arguments (empty tuple) - args = PyTuple_New(0); - if (args == NULL) + for (int i = 0; i < PyList_GET_SIZE(node->m_Children); i++) { - goto error_cleanup; + TypeTreeNodeObject *child = (TypeTreeNodeObject *)PyList_GetItem(node->m_Children, i); + PyObject *child_value = read_typetree_value(reader, child, config); + if (!child_value) + { + Py_DECREF(dict); + return NULL; + } + if (PyDict_SetItem(dict, child->m_Name, child_value)) + { + Py_DECREF(dict); + Py_DECREF(child_value); + return NULL; + } + // dict increases ref count, so we need to decref here + Py_DECREF(child_value); } - // Attempt to create the instance from the class and dict - instance = PyObject_Call(clz, args, dict); + PyObject *args = PyTuple_New(0); + PyObject *instance = PyObject_Call(clz, args, dict); if (instance != NULL) { - goto success; + Py_DECREF(args); + Py_DECREF(dict); + return instance; } PyErr_Clear(); - // If calling the class failed, check for callable clean_name function - if (!PyCallable_Check(config->clean_name)) - { - PyErr_SetString(PyExc_ValueError, "clean_name is not callable"); - goto error_cleanup; - } - - // Clean the dictionary keys - keys = PyDict_Keys(dict); - clean_args = PyTuple_New(1); // For passing to the clean_name function - if (keys == NULL || clean_args == NULL) - { - goto error_cleanup; - } - - // Iterate through dict keys, clean them, and update if necessary + PyObject *keys = PyDict_Keys(dict); + PyObject *clean_args = PyTuple_New(1); for (Py_ssize_t i = 0; i < PyList_Size(keys); i++) { PyObject *key = PyList_GetItem(keys, i); - Py_INCREF(key); // Protect reference count - - PyTuple_SetItem(clean_args, 0, key); - PyObject *clean_key = PyObject_CallFunctionObjArgs(config->clean_name, clean_args, NULL); - if (clean_key == NULL) - { - Py_DECREF(key); - goto error_cleanup; - } - - if (PyUnicode_Compare(key, clean_key) != 0) + PyTuple_SET_ITEM(clean_args, 0, key); + PyObject *clean_key = PyObject_Call(config->clean_name, clean_args, NULL); + if (PyUnicode_Compare(key, clean_key)) { - // Replace the key in the dict with the cleaned key PyObject *value = PyDict_GetItem(dict, key); - if (value != NULL) - { - PyDict_DelItem(dict, key); - PyDict_SetItem(dict, clean_key, value); - } + PyDict_SetItem(dict, clean_key, value); + PyDict_DelItem(dict, key); } Py_DECREF(clean_key); - Py_DECREF(key); } + PyTuple_SET_ITEM(clean_args, 0, Py_None); + Py_DECREF(clean_args); + Py_DECREF(keys); - // Retry creating the class instance with cleaned dictionary instance = PyObject_Call(clz, args, dict); if (instance != NULL) { - goto success; - } - - // Handle extra attributes not present in class annotations - annotations = PyObject_GetAttrString(clz, "__annotations__"); - if (annotations == NULL) - { - PyErr_SetString(PyExc_ValueError, "Failed to get annotations"); - goto error_cleanup; + Py_DECREF(args); + Py_DECREF(dict); + return instance; } + PyErr_Clear(); - extra = PyDict_New(); + PyObject *annonations = PyObject_GetAttrString(clz, "__annotations__"); + PyObject *extras = PyDict_New(); + keys = PyDict_Keys(dict); for (Py_ssize_t i = 0; i < PyList_Size(keys); i++) { PyObject *key = PyList_GetItem(keys, i); - if (PyDict_Contains(annotations, key) == 0) + if (PyDict_Contains(annonations, key) == 0) { PyObject *value = PyDict_GetItem(dict, key); - PyDict_SetItem(extra, key, value); + PyDict_SetItem(extras, key, value); PyDict_DelItem(dict, key); } } + Py_DECREF(keys); instance = PyObject_Call(clz, args, dict); if (instance != NULL) { - // Set extra attributes on the instance - keys = PyDict_Keys(extra); - for (Py_ssize_t i = 0; i < PyList_Size(keys); i++) + PyObject *items = PyDict_Items(extras); + for (Py_ssize_t i = 0; i < PyList_Size(items); i++) { - PyObject *key = PyList_GetItem(keys, i); - PyObject *value = PyDict_GetItem(extra, key); + PyObject *item = PyList_GetItem(items, i); + PyObject *key = PyTuple_GetItem(item, 0); + PyObject *value = PyTuple_GetItem(item, 1); PyObject_SetAttr(instance, key, value); } - goto success; + Py_DECREF(items); } - PyErr_SetString(PyExc_ValueError, "Failed to create instance"); - goto error_cleanup; - -success: - // Cleanup and return the instance - Py_DECREF(args); - Py_DECREF(clz); - Py_DECREF(dict); - Py_XDECREF(keys); - Py_XDECREF(clean_args); - Py_XDECREF(annotations); - Py_XDECREF(extra); return instance; - -error_cleanup: - // Cleanup in case of an error - Py_XDECREF(args); - Py_XDECREF(clz); - Py_XDECREF(dict); - Py_XDECREF(keys); - Py_XDECREF(clean_args); - Py_XDECREF(annotations); - Py_XDECREF(extra); - return NULL; } template @@ -445,27 +405,30 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre { // class value = PyDict_New(); - for (int i = 0; i < PyList_GET_SIZE(node->m_Children); i++) + if (config->as_dict) { - child = (TypeTreeNodeObject *)PyList_GetItem(node->m_Children, i); - PyObject *child_value = read_typetree_value(reader, child, config); - if (!child_value) + for (int i = 0; i < PyList_GET_SIZE(node->m_Children); i++) { - Py_DECREF(value); - return NULL; - } - if (PyDict_SetItem(value, child->m_Name, child_value)) - { - Py_DECREF(value); + child = (TypeTreeNodeObject *)PyList_GetItem(node->m_Children, i); + PyObject *child_value = read_typetree_value(reader, child, config); + if (!child_value) + { + Py_DECREF(value); + return NULL; + } + if (PyDict_SetItem(value, child->m_Name, child_value)) + { + Py_DECREF(value); + Py_DECREF(child_value); + return NULL; + } + // dict increases ref count, so we need to decref here Py_DECREF(child_value); - return NULL; } - // dict increases ref count, so we need to decref here - Py_DECREF(child_value); } - if (!config->as_dict) + else { - value = class_from_dict(value, node, config); + value = read_class(reader, node, config); } } } @@ -499,6 +462,26 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) return NULL; } + config.as_dict = Py_IsTrue(as_dict) == 1; + if (!config.as_dict) + { + if (PyCallable_Check(config.clean_name) == 0) + { + PyErr_SetString(PyExc_ValueError, "clean_name must be callable if not as dict"); + return NULL; + } + if (Py_IsNone(config.assetfile) == 1) + { + PyErr_SetString(PyExc_ValueError, "assetsfile must be set if not as dict"); + return NULL; + } + if (Py_IsNone(config.classes) == 1) + { + PyErr_SetString(PyExc_ValueError, "classes must be set if not as dict"); + return NULL; + } + } + volatile uint16_t bint = 0x0100; volatile bool is_big_endian = ((uint8_t *)&bint)[0] == 1; @@ -536,7 +519,6 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) return NULL; } ReaderT reader = {static_cast(view.buf), static_cast(view.buf) + view.len, static_cast(view.buf)}; - config.as_dict = Py_IsTrue(as_dict) == 1; PyObject *value; if (swap) From 3f7a8fe634f99f2986d910a702198cd5150b0730 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 20 Sep 2024 00:28:51 +0200 Subject: [PATCH 272/599] test_main.py - don't save images to disk --- tests/test_main.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tests/test_main.py b/tests/test_main.py index ec8cbea9..8a531c8f 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,3 +1,4 @@ +import io import os import UnityPy @@ -25,7 +26,7 @@ def test_texture2d(): for obj in env.objects: if obj.type.name == "Texture2D": data = obj.read() - data.image.save("test.png") + data.image.save(io.BytesIO(), format="PNG") data.image = data.image.transpose(Image.ROTATE_90) data.save() @@ -35,14 +36,16 @@ def test_sprite(): env = UnityPy.load(os.path.join(SAMPLES, f)) for obj in env.objects: if obj.type.name == "Sprite": - obj.read().image.save("test.png") + obj.read().image.save(io.BytesIO(), format="PNG") def test_audioclip(): # as not platforms are supported by FMOD # we have to check if the platform is supported first try: - UnityPy.export.AudioClipConverter.import_pyfmodex() + from UnityPy.export import AudioClipConverter + + AudioClipConverter.import_pyfmodex() except NotImplementedError: return except OSError: @@ -51,7 +54,7 @@ def test_audioclip(): print("Failed to load the fmod lib for your system.") print("Skipping the audioclip test.") return - if UnityPy.export.AudioClipConverter.pyfmodex is False: + if AudioClipConverter.pyfmodex is False: return env = UnityPy.load(os.path.join(SAMPLES, "char_118_yuki.ab")) for obj in env.objects: From 6d19d9cd5344620c428fe53543f60b96021ed5f4 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 20 Sep 2024 00:29:54 +0200 Subject: [PATCH 273/599] setup.py - fix extra_compile_args for non-windows --- setup.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c8c682d9..247ecef9 100644 --- a/setup.py +++ b/setup.py @@ -68,7 +68,9 @@ def get_fmod_library(): if f.endswith(".cpp") ], language="c++", - extra_compile_args=["/std:c++20"], + extra_compile_args=[ + "/std:c++20" if platform.system() == "Windows" else "-std=c++20" + ], include_dirs=[UNITYPYBOOST_DIR], ) ], From 85f79e13e494f9ff86fa595792b31541c56ee497 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 20 Sep 2024 00:35:10 +0200 Subject: [PATCH 274/599] Mesh.cpp - swap inplace --- UnityPyBoost/Mesh.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/UnityPyBoost/Mesh.cpp b/UnityPyBoost/Mesh.cpp index 97220a3d..65d77877 100644 --- a/UnityPyBoost/Mesh.cpp +++ b/UnityPyBoost/Mesh.cpp @@ -85,7 +85,7 @@ PyObject *unpack_vertexdata(PyObject *self, PyObject *args) uint16_t *componentUints = (uint16_t *)componentBytes; for (uint32_t i = 0; i < componentBytesLength; i += 2) { - *componentUints++ = bswap16(*componentUints); + swap_any_inplace(componentUints++); } } else if (componentByteSize == 4) @@ -94,12 +94,12 @@ PyObject *unpack_vertexdata(PyObject *self, PyObject *args) uint32_t *componentUints = (uint32_t *)componentBytes; for (uint32_t i = 0; i < componentBytesLength; i += 4) { - *componentUints++ = bswap32(*componentUints); + swap_any_inplace(componentUints++); } } } - PyObject *res = PyByteArray_FromStringAndSize((const char*)componentBytes, componentBytesLength); + PyObject *res = PyByteArray_FromStringAndSize((const char *)componentBytes, componentBytesLength); PyMem_Free(componentBytes); PyBuffer_Release(&vertexDataView); return res; From 5e455b0f7a35006c0516983351e6c67563c2c3fe Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 20 Sep 2024 00:36:28 +0200 Subject: [PATCH 275/599] swap.hpp - gcc fix --- UnityPyBoost/swap.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/UnityPyBoost/swap.hpp b/UnityPyBoost/swap.hpp index 904d467d..5e2cbc46 100644 --- a/UnityPyBoost/swap.hpp +++ b/UnityPyBoost/swap.hpp @@ -72,6 +72,7 @@ inline void swap_any_inplace(T *x) } else { - static_assert(false, "Swap not implemented for this size"); + // gcc is tripping and somehow reaching this at compile time + // static_assert(false, "Swap not implemented for this size"); } } From c694e6036ad5520194afdac28d047af077c4daa5 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 20 Sep 2024 12:39:27 +0200 Subject: [PATCH 276/599] TypeTreeNode fix - m_Typeflags optional and TPK flat to hierachy --- UnityPy/files/ObjectReader.py | 4 +-- UnityPy/helpers/Tpk.py | 21 ++++++++----- UnityPy/helpers/TypeTreeNode.py | 11 +++---- UnityPyBoost/TypeTreeHelper.cpp | 53 +++++++++++---------------------- UnityPyBoost/TypeTreeHelper.hpp | 2 +- 5 files changed, 40 insertions(+), 51 deletions(-) diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index fde1d202..6f3f1f71 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -3,7 +3,7 @@ from ..streams import EndianBinaryReader, EndianBinaryWriter from ..helpers import TypeTreeHelper -from ..helpers.Tpk import get_typetree_nodes +from ..helpers.Tpk import get_typetree_node from ..helpers.TypeTreeNode import TypeTreeNode from ..exceptions import TypeTreeError @@ -238,7 +238,7 @@ def _get_typetree_node( if self.serialized_type: nodes = self.serialized_type.nodes if not nodes: - nodes = get_typetree_nodes(self.class_id, self.version) + nodes = get_typetree_node(self.class_id, self.version) if not nodes: raise TypeTreeError("There are no TypeTree nodes for this object.") return nodes diff --git a/UnityPy/helpers/Tpk.py b/UnityPy/helpers/Tpk.py index f523a794..87611d1b 100644 --- a/UnityPy/helpers/Tpk.py +++ b/UnityPy/helpers/Tpk.py @@ -13,13 +13,16 @@ def init(): import os with open( - os.path.join(os.path.dirname(os.path.dirname(__file__)), "resources", "uncompressed.tpk"), "rb" + os.path.join( + os.path.dirname(os.path.dirname(__file__)), "resources", "uncompressed.tpk" + ), + "rb", ) as f: global TPKTYPETREE TPKTYPETREE = TpkFile(f).GetDataBlob() -def get_typetree_nodes(class_id: int, version: tuple): +def get_typetree_node(class_id: int, version: tuple): global NODES_CACHE key = (class_id, version) if key in NODES_CACHE: @@ -31,12 +34,12 @@ def get_typetree_nodes(class_id: int, version: tuple): if class_info is None: raise ValueError("Could not find class info for class id {}".format(class_id)) - nodes = generate_flat_nodes(class_info) - NODES_CACHE[key] = nodes - return nodes + node = generate_node(class_info) + NODES_CACHE[key] = node + return node -def generate_flat_nodes(class_info: TpkUnityClass) -> List[TypeTreeNode]: +def generate_node(class_info: TpkUnityClass) -> TypeTreeNode: nodes = [] NODES = TPKTYPETREE.NodeBuffer.Nodes stack = [(class_info.ReleaseRootNode, 0)] @@ -57,7 +60,7 @@ def generate_flat_nodes(class_info: TpkUnityClass) -> List[TypeTreeNode]: ) stack = [(node_id, level + 1) for node_id in node.SubNodes] + stack index += 1 - return nodes + return TypeTreeNode.from_list(nodes) ###################################################################################### @@ -292,7 +295,9 @@ def fromString(version: str) -> UnityVersion: return UnityVersion(version.split(".")) @staticmethod - def fromList(major: int = 0, minor: int = 0, patch: int = 0, build: int = 0) -> UnityVersion: + def fromList( + major: int = 0, minor: int = 0, patch: int = 0, build: int = 0 + ) -> UnityVersion: return UnityVersion(major << 48 | minor << 32 | patch << 16 | build) @property diff --git a/UnityPy/helpers/TypeTreeNode.py b/UnityPy/helpers/TypeTreeNode.py index 4d6256b5..aa02ef4f 100644 --- a/UnityPy/helpers/TypeTreeNode.py +++ b/UnityPy/helpers/TypeTreeNode.py @@ -20,9 +20,9 @@ class TypeTreeNodeC: m_Type: str m_Name: str m_ByteSize: int - m_TypeFlags: int m_Version: int m_Children: List[TypeTreeNode] = field(factory=list) + m_TypeFlags: Optional[int] = None m_VariableCount: Optional[int] = None m_Index: Optional[int] = None m_MetaFlag: Optional[int] = None @@ -92,7 +92,7 @@ def read_string(reader: EndianBinaryReader, value: int) -> str: offset = value & 0x7FFFFFFF return CommonString.get(offset, str(offset)) - fake_root: TypeTreeNode = cls(-1, "", "", 0, 0, 0, []) + fake_root: TypeTreeNode = cls(-1, "", "", 0, 0, []) stack: List[TypeTreeNode] = [fake_root] parent = fake_root prev = fake_root @@ -119,13 +119,14 @@ def read_string(reader: EndianBinaryReader, value: int) -> str: @classmethod def from_list(cls, nodes: List[dict]) -> TypeTreeNode: - fake_root: TypeTreeNode = cls(-1, "", "", 0, 0, 0, []) + fake_root: TypeTreeNode = cls(-1, "", "", 0, 0, []) stack: List[TypeTreeNode] = [fake_root] parent = fake_root prev = fake_root - for dict_node in nodes: - node = cls(**dict_node) + for node in nodes: + if isinstance(node, dict): + node = cls(node) if node.m_Level > prev.m_Level: stack.append(parent) diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index 73511b1d..ce497402 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -586,23 +586,23 @@ static int TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject "m_Type", "m_Name", "m_ByteSize", - "m_TypeFlags", "m_Version", "m_Children", + "m_TypeFlags", "m_VariableCount", "m_Index", "m_MetaFlag", "m_RefTypeHash", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOOO|OOOOO", (char **)kwlist, + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOO|OOOOOO", (char **)kwlist, &self->m_Level, &self->m_Type, &self->m_Name, &self->m_ByteSize, - &self->m_TypeFlags, &self->m_Version, &self->m_Children, + &self->m_TypeFlags, &self->m_VariableCount, &self->m_Index, &self->m_MetaFlag, @@ -615,7 +615,6 @@ static int TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject Py_INCREF(self->m_Type); Py_INCREF(self->m_Name); Py_INCREF(self->m_ByteSize); - Py_INCREF(self->m_TypeFlags); Py_INCREF(self->m_Version); // optional fields if (self->m_Children == nullptr) @@ -626,39 +625,23 @@ static int TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject { Py_XINCREF(self->m_Children); } - if (self->m_VariableCount == nullptr) - { - self->m_VariableCount = Py_None; - } - else - { - Py_INCREF(self->m_VariableCount); - } - if (self->m_Index == nullptr) - { - self->m_Index = Py_None; - } - else - { - Py_INCREF(self->m_Index); - } - if (self->m_MetaFlag == nullptr) - { - self->m_MetaFlag = Py_None; - } - else - { - Py_INCREF(self->m_MetaFlag); - } - if (self->m_RefTypeHash == nullptr) - { - self->m_RefTypeHash = Py_None; - } - else - { - Py_INCREF(self->m_RefTypeHash); + +#define SET_NONE_IF_NULL(field) \ + if (self->field == nullptr) \ + { \ + self->field = Py_None; \ + } \ + else \ + { \ + Py_INCREF(self->field); \ } + SET_NONE_IF_NULL(m_TypeFlags); + SET_NONE_IF_NULL(m_VariableCount); + SET_NONE_IF_NULL(m_Index); + SET_NONE_IF_NULL(m_MetaFlag); + SET_NONE_IF_NULL(m_RefTypeHash); + if (self->m_MetaFlag != Py_None && PyLong_AsLong(self->m_MetaFlag) & 0x4000) { self->_align = true; diff --git a/UnityPyBoost/TypeTreeHelper.hpp b/UnityPyBoost/TypeTreeHelper.hpp index eb226d8c..5140910c 100644 --- a/UnityPyBoost/TypeTreeHelper.hpp +++ b/UnityPyBoost/TypeTreeHelper.hpp @@ -38,8 +38,8 @@ typedef struct TypeTreeNodeObject PyObject *m_Level; PyObject *m_Type; PyObject *m_ByteSize; - PyObject *m_TypeFlags; PyObject *m_Version; + PyObject *m_TypeFlags; PyObject *m_VariableCount; PyObject *m_Index; PyObject *m_MetaFlag; From 3022db136edf3e37c385c92c4afbefc405c40744 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Fri, 20 Sep 2024 23:51:53 +0200 Subject: [PATCH 277/599] ShaderConverter - fixes, format, add type hints --- UnityPy/export/ShaderConverter.py | 488 +++++++++++++++++++----------- 1 file changed, 313 insertions(+), 175 deletions(-) diff --git a/UnityPy/export/ShaderConverter.py b/UnityPy/export/ShaderConverter.py index 5ac6b4b9..66f27983 100644 --- a/UnityPy/export/ShaderConverter.py +++ b/UnityPy/export/ShaderConverter.py @@ -1,88 +1,139 @@ -import traceback -from ..streams import EndianBinaryReader -from ..helpers import CompressionHelper +from __future__ import annotations + import re from itertools import groupby -from ..enums import ShaderCompilerPlatform, ShaderGpuProgramType, SerializedPropertyType -from ..enums import TextureDimension, PassType +from typing import TYPE_CHECKING, List, Optional, Tuple + +from ..enums import ( + PassType, + SerializedPropertyType, + ShaderCompilerPlatform, + ShaderGpuProgramType, + TextureDimension, +) +from ..helpers import CompressionHelper +from ..streams import EndianBinaryReader -HEADER = ''' +if TYPE_CHECKING: + from ..classes import ( + SerializedPass, + SerializedProperties, + SerializedProperty, + SerializedShader, + SerializedShaderState, + SerializedSubProgram, + SerializedSubShader, + SerializedTagMap, + Shader, + ) + +HEADER = """ ////////////////////////////////////////// // // NOTE: This is *not* a valid shader file // /////////////////////////////////////////// -'''[1:] +"""[1:] -def export_shader(m_Shader): - if hasattr(m_Shader, "m_SubProgramBlob"): # 5.3 - 5.4 +def export_shader(m_Shader: Shader) -> str: + if m_Shader.m_SubProgramBlob: # 5.3 - 5.4 decompressedBytes = CompressionHelper.decompress_lz4( - m_Shader.m_SubProgramBlob, m_Shader.decompressedSize) + bytes(m_Shader.m_SubProgramBlob), m_Shader.decompressedSize + ) blobReader = EndianBinaryReader(decompressedBytes) - program = ShaderProgram(blobReader, m_Shader.version) + program = ShaderProgram(blobReader, m_Shader.object_reader.version) return HEADER + program.Export(bytes(m_Shader.m_Script).decode("utf8")) - if hasattr(m_Shader, "compressedBlob"): # 5.5 and up + if m_Shader.compressedBlob: # 5.5 and up return HEADER + ConvertSerializedShader(m_Shader) return HEADER + bytes(m_Shader.m_Script).decode("utf8") -def ConvertSerializedShader(m_Shader): + +def ConvertSerializedShader(m_Shader: Shader) -> str: shaderPrograms = [] platformNumber = len(m_Shader.platforms) + compressed_blob = bytes(m_Shader.compressedBlob) for i in range(platformNumber): - if i >= len(m_Shader.compressedLengths) or i >= len(m_Shader.decompressedLengths): + if i >= len(m_Shader.compressedLengths) or i >= len( + m_Shader.decompressedLengths + ): # m_Shader.platforms shouldn't be longer than m_shader.[de]compressedLengths, but it is break compressedSize = m_Shader.compressedLengths[i] decompressedSize = m_Shader.decompressedLengths[i] - compressedBytes = m_Shader.compressedBlob[int(m_Shader.offsets[i]):int(m_Shader.offsets[i]) + compressedSize] - decompressedBytes = CompressionHelper.decompress_lz4(compressedBytes, decompressedSize) - - shaderPrograms.append(ShaderProgram(EndianBinaryReader(decompressedBytes, endian="<"), m_Shader.version)) - - return ConvertSerializedShaderParsedForm(m_Shader.m_ParsedForm, m_Shader.platforms, shaderPrograms) - -def ConvertSerializedShaderParsedForm(m_ParsedForm, platforms, shaderPrograms): - sb = [] - - sb.append("Shader \"{0}\" {{\n".format(m_ParsedForm.m_Name)) - - sb.append(ConvertSerializedProperties(m_ParsedForm.m_PropInfo)) - - for m_SubShader in m_ParsedForm.m_SubShaders: - sb.append(ConvertSerializedSubShader(m_SubShader, platforms, shaderPrograms)) + compressedBytes = compressed_blob[ + int(m_Shader.offsets[i][0]) : int(m_Shader.offsets[i][0]) + + compressedSize[0] + ] + decompressedBytes = CompressionHelper.decompress_lz4( + compressedBytes, decompressedSize[0] + ) + + shaderPrograms.append( + ShaderProgram( + EndianBinaryReader(decompressedBytes, endian="<"), + m_Shader.object_reader.version, + ) + ) + + return ConvertSerializedShaderParsedForm( + m_Shader.m_ParsedForm, m_Shader.platforms, shaderPrograms + ) + + +def ConvertSerializedShaderParsedForm( + m_ParsedForm: SerializedShader, + platforms: List[int], + shaderPrograms: List[ShaderProgram], +) -> str: + sb: List[str] = [ + 'Shader "{0}" {{\n'.format(m_ParsedForm.m_Name), + ConvertSerializedProperties(m_ParsedForm.m_PropInfo), + *[ + ConvertSerializedSubShader(m_SubShader, platforms, shaderPrograms) + for m_SubShader in m_ParsedForm.m_SubShaders + ], + ] if m_ParsedForm.m_FallbackName: - sb.append("Fall back \"{0}\"\n".format(m_ParsedForm.m_FallbackName)) + sb.append('Fall back "{0}"\n'.format(m_ParsedForm.m_FallbackName)) if m_ParsedForm.m_CustomEditorName: - sb.append("CustomEditor \"{0}\"\n".format(m_ParsedForm.m_CustomEditorName)) + sb.append('CustomEditor "{0}"\n'.format(m_ParsedForm.m_CustomEditorName)) sb.append("}") return "".join(sb) -def ConvertSerializedSubShader(m_SubShader, platforms, shaderPrograms): - sb = [] - sb.append("SubShader {\n") +def ConvertSerializedSubShader( + m_SubShader: SerializedSubShader, + platforms: List[int], + shaderPrograms: List[ShaderProgram], +) -> str: + sb = ["SubShader {\n"] + if m_SubShader.m_LOD != 0: sb.append(" LOD {0}\n".format(m_SubShader.m_LOD)) sb.append(ConvertSerializedTagMap(m_SubShader.m_Tags, 1)) - for m_Passe in m_SubShader.m_Passes: - sb.append(ConvertSerializedPass(m_Passe, platforms, shaderPrograms)) - + sb.extend( + ConvertSerializedPass(m_Passe, platforms, shaderPrograms) + for m_Passe in m_SubShader.m_Passes + ) sb.append("}\n") return "".join(sb) -def ConvertSerializedPass(m_Passe, platforms, shaderPrograms): + +def ConvertSerializedPass( + m_Passe: SerializedPass, platforms: List[int], shaderPrograms: List[ShaderProgram] +) -> str: sb = [] if m_Passe.m_Type == PassType.kPassTypeNormal: sb.append(" Pass ") @@ -92,51 +143,79 @@ def ConvertSerializedPass(m_Passe, platforms, shaderPrograms): sb.append(" GrabPass ") if m_Passe.m_Type == PassType.kPassTypeUse: - sb.append("\"{0}\"\n".format(m_Passe.m_UseName)) + sb.append('"{0}"\n'.format(m_Passe.m_UseName)) else: sb.append("{\n") if m_Passe.m_Type == PassType.kPassTypeGrab: if m_Passe.m_TextureName: - sb.append(" \"{0}\"\n".format(m_Passe.m_TextureName)) + sb.append(' "{0}"\n'.format(m_Passe.m_TextureName)) else: sb.append(ConvertSerializedShaderState(m_Passe.m_State)) if len(m_Passe.progVertex.m_SubPrograms) > 0: - sb.append("Program \"vp\" {\n") - sb.append(ConvertSerializedSubPrograms(m_Passe.progVertex.m_SubPrograms, platforms, shaderPrograms)) + sb.append('Program "vp" {\n') + sb.append( + ConvertSerializedSubPrograms( + m_Passe.progVertex.m_SubPrograms, platforms, shaderPrograms + ) + ) sb.append("}\n") if len(m_Passe.progFragment.m_SubPrograms) > 0: - sb.append("Program \"fp\" {\n") - sb.append(ConvertSerializedSubPrograms(m_Passe.progFragment.m_SubPrograms, platforms, shaderPrograms)) + sb.append('Program "fp" {\n') + sb.append( + ConvertSerializedSubPrograms( + m_Passe.progFragment.m_SubPrograms, platforms, shaderPrograms + ) + ) sb.append("}\n") if len(m_Passe.progGeometry.m_SubPrograms) > 0: - sb.append("Program \"gp\" {\n") - sb.append(ConvertSerializedSubPrograms(m_Passe.progGeometry.m_SubPrograms, platforms, shaderPrograms)) + sb.append('Program "gp" {\n') + sb.append( + ConvertSerializedSubPrograms( + m_Passe.progGeometry.m_SubPrograms, platforms, shaderPrograms + ) + ) sb.append("}\n") if len(m_Passe.progHull.m_SubPrograms) > 0: - sb.append("Program \"hp\" {\n") - sb.append(ConvertSerializedSubPrograms(m_Passe.progHull.m_SubPrograms, platforms, shaderPrograms)) + sb.append('Program "hp" {\n') + sb.append( + ConvertSerializedSubPrograms( + m_Passe.progHull.m_SubPrograms, platforms, shaderPrograms + ) + ) sb.append("}\n") if len(m_Passe.progDomain.m_SubPrograms) > 0: - sb.append("Program \"dp\" {\n") - sb.append(ConvertSerializedSubPrograms(m_Passe.progDomain.m_SubPrograms, platforms, shaderPrograms)) + sb.append('Program "dp" {\n') + sb.append( + ConvertSerializedSubPrograms( + m_Passe.progDomain.m_SubPrograms, platforms, shaderPrograms + ) + ) sb.append("}\n") sb.append("}\n") return "".join(sb) -def ConvertSerializedSubPrograms(m_SubPrograms, platforms, shaderPrograms): + +def ConvertSerializedSubPrograms( + m_SubPrograms: List[SerializedSubProgram], + platforms: List[int], + shaderPrograms: List[ShaderProgram], +) -> str: sb = [] - indexFunc = lambda x: x.m_BlobIndex - typeFunc = lambda x: x.m_GpuProgramType + def indexFunc(x: SerializedSubProgram): + return x.m_BlobIndex + + def typeFunc(x: SerializedSubProgram): + return x.m_GpuProgramType groups = groupby(sorted(m_SubPrograms, key=indexFunc), indexFunc) @@ -156,13 +235,21 @@ def ConvertSerializedSubPrograms(m_SubPrograms, platforms, shaderPrograms): if CheckGpuProgramUsable(platform, programKey): for subProgram in subPrograms: - sb.append("SubProgram \"{0} ".format(GetPlatformString(platform))) + sb.append( + 'SubProgram "{0} '.format(GetPlatformString(platform)) + ) if isTier: - sb.append("hw_tier{0:02} ".format(subProgram.m_ShaderHardwareTier)) + sb.append( + "hw_tier{0:02} ".format(subProgram.m_ShaderHardwareTier) + ) - sb.append("\" {\n") - sb.append(shaderPrograms[i].m_SubPrograms[subProgram.m_BlobIndex].Export()) + sb.append('" {\n') + sb.append( + shaderPrograms[i] + .m_SubPrograms[subProgram.m_BlobIndex] + .Export() + ) sb.append("\n}\n") @@ -171,17 +258,17 @@ def ConvertSerializedSubPrograms(m_SubPrograms, platforms, shaderPrograms): return "".join(sb) -def ConvertSerializedShaderState(m_State): +def ConvertSerializedShaderState(m_State: SerializedShaderState) -> str: sb = [] if m_State.m_Name: - sb.append(" Name \"{0}\"\n".format(m_State.m_Name)) + sb.append(' Name "{0}"\n'.format(m_State.m_Name)) if m_State.m_LOD != 0: sb.append(" LOD {0}\n".format(m_State.m_LOD)) sb.append(ConvertSerializedTagMap(m_State.m_Tags, 2)) - sb.append(ConvertSerializedShaderRTBlendState(m_State.rtBlend)) + # sb.append(ConvertSerializedShaderRTBlendState(m_State.rtBlend)) if m_State.alphaToMask.val > 0: sb.append(" AlphaToMask On\n") @@ -191,39 +278,43 @@ def ConvertSerializedShaderState(m_State): if m_State.zTest.val != 4: sb.append(" ZTest ") - if m_State.zTest.val == 0: # kFuncDisabled + if m_State.zTest.val == 0: # kFuncDisabled sb.append("Off") - elif m_State.zTest.val == 1: # kFuncNever + elif m_State.zTest.val == 1: # kFuncNever sb.append("Never") - elif m_State.zTest.val == 2: # kFuncLess + elif m_State.zTest.val == 2: # kFuncLess sb.append("Less") - elif m_State.zTest.val == 3: # kFuncEqual + elif m_State.zTest.val == 3: # kFuncEqual sb.append("Equal") - elif m_State.zTest.val == 5: # kFuncGreater + elif m_State.zTest.val == 5: # kFuncGreater sb.append("Greater") - elif m_State.zTest.val == 6: # kFuncNotEqual + elif m_State.zTest.val == 6: # kFuncNotEqual sb.append("NotEqual") - elif m_State.zTest.val == 7: # kFuncGEqual + elif m_State.zTest.val == 7: # kFuncGEqual sb.append("GEqual") - elif m_State.zTest.val == 8: # kFuncAlways + elif m_State.zTest.val == 8: # kFuncAlways sb.append("Always") sb.append("\n") - if m_State.zWrite.val != 1: # ZWrite On + if m_State.zWrite.val != 1: # ZWrite On sb.append(" ZWrite Off\n") - if m_State.culling.val != 2: # Cull Back + if m_State.culling.val != 2: # Cull Back sb.append(" Cull ") - if m_State.culling.val == 0: # kCullOff + if m_State.culling.val == 0: # kCullOff sb.append("Off") - elif m_State.culling.val == 1: # kCullFront + elif m_State.culling.val == 1: # kCullFront sb.append("Front") sb.append("\n") if m_State.offsetFactor.val != 0 or m_State.offsetUnits.val != 0: - sb.append(" Offset {0}, {1}\n".format(m_State.offsetFactor.val, m_State.offsetUnits.val)) + sb.append( + " Offset {0}, {1}\n".format( + m_State.offsetFactor.val, m_State.offsetUnits.val + ) + ) # TODO Stencil @@ -241,33 +332,33 @@ def ConvertSerializedShaderRTBlendState(rbBlend): sb = [] return "".join(sb) -def ConvertSerializedTagMap(m_Tags, intent: int): - sb = [] - if len(m_Tags.tags) > 0: - sb.append(" "*intent) - sb.append("Tags { ") - for key, value in m_Tags.tags.items(): - sb.append("\"{0}\" = \"{1}\" ".format(key, value)) - sb.append("}\n") - return "".join(sb) +def ConvertSerializedTagMap(m_Tags: SerializedTagMap, intent: int) -> str: + if m_Tags.tags: + return "".join( + [ + " " * intent, + "Tags { ", + *[f'"{key}" = "{value}" ' for key, value in m_Tags.tags], + "}\n", + ] + ) + return "" -def ConvertSerializedProperties(m_PropInfo): - sb = [] - - sb.append("Properties {\n") - for m_Prop in m_PropInfo.m_Props: - sb.append(ConvertSerializedProperty(m_Prop)) - sb.append("}\n") - return "".join(sb) +def ConvertSerializedProperties(m_PropInfo: SerializedProperties) -> str: + return "\n".join( + [ + "Properties {\n", + *[ConvertSerializedProperty(m_Prop) for m_Prop in m_PropInfo.m_Props], + "}\n", + ] + ) -def ConvertSerializedProperty(m_Prop): - sb = [] - for m_Attribute in m_Prop.m_Attributes: - sb.append("[{0}] ".format(m_Attribute)) - sb.append("{0} (\"{1}\", ".format(m_Prop.m_Name, m_Prop.m_Description)) +def ConvertSerializedProperty(m_Prop: SerializedProperty) -> str: + sb = ["[{0}] ".format(m_Attribute) for m_Attribute in m_Prop.m_Attributes] + sb.append('{0} ("{1}", '.format(m_Prop.m_Name, m_Prop.m_Description)) if m_Prop.m_Type == SerializedPropertyType.kColor: sb.append("Color") @@ -276,7 +367,9 @@ def ConvertSerializedProperty(m_Prop): elif m_Prop.m_Type == SerializedPropertyType.kFloat: sb.append("Float") elif m_Prop.m_Type == SerializedPropertyType.kRange: - sb.append("Range({0:g}, {1:g})".format(m_Prop.m_DefValue[1], m_Prop.m_DefValue[2])) + sb.append( + "Range({0:g}, {1:g})".format(m_Prop.m_DefValue_1_, m_Prop.m_DefValue_2_) + ) elif m_Prop.m_Type == SerializedPropertyType.kTexture: if m_Prop.m_DefTexture.m_TexDim == TextureDimension.kTexDimAny: sb.append("any") @@ -293,47 +386,58 @@ def ConvertSerializedProperty(m_Prop): sb.append(") = ") - if m_Prop.m_Type in [ - SerializedPropertyType.kColor, - SerializedPropertyType.kVector - ]: - sb.append("({0:g},{1:g},{2:g},{3:g})".format(m_Prop.m_DefValue[0], m_Prop.m_DefValue[1], m_Prop.m_DefValue[2],m_Prop.m_DefValue[3])) + if m_Prop.m_Type in [SerializedPropertyType.kColor, SerializedPropertyType.kVector]: + sb.append( + "({0:g},{1:g},{2:g},{3:g})".format( + m_Prop.m_DefValue_0_, + m_Prop.m_DefValue_1_, + m_Prop.m_DefValue_2_, + m_Prop.m_DefValue_3_, + ) + ) elif m_Prop.m_Type in [ SerializedPropertyType.kFloat, - SerializedPropertyType.kRange + SerializedPropertyType.kRange, ]: - sb.append(m_Prop.m_DefValue[0]) + sb.append(m_Prop.m_DefValue_0_) elif m_Prop.m_Type == SerializedPropertyType.kTexture: - sb.append("\"{0}\" {{ }}".format(m_Prop.m_DefTexture.m_DefaultName)) + sb.append('"{0}" {{ }}'.format(m_Prop.m_DefTexture.m_DefaultName)) else: raise ValueError(m_Prop.m_Type) sb.append("\n") - return "".join(map(str,sb)) + return "".join(map(str, sb)) + -def CheckGpuProgramUsable(platform, programType): +def CheckGpuProgramUsable(platform: int, programType: int) -> bool: if platform == ShaderCompilerPlatform.kShaderCompPlatformGL: return programType == ShaderGpuProgramType.kShaderGpuProgramGLLegacy elif platform == ShaderCompilerPlatform.kShaderCompPlatformD3D9: - return ( programType == ShaderGpuProgramType.kShaderGpuProgramDX9VertexSM20 + return ( + programType == ShaderGpuProgramType.kShaderGpuProgramDX9VertexSM20 or programType == ShaderGpuProgramType.kShaderGpuProgramDX9VertexSM30 or programType == ShaderGpuProgramType.kShaderGpuProgramDX9PixelSM20 - or programType == ShaderGpuProgramType.kShaderGpuProgramDX9PixelSM30 ) + or programType == ShaderGpuProgramType.kShaderGpuProgramDX9PixelSM30 + ) elif platform == ShaderCompilerPlatform.kShaderCompPlatformXbox360: - return ( programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS + return ( + programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleFS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleHS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleDS - or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS ) + or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS + ) elif platform == ShaderCompilerPlatform.kShaderCompPlatformD3D11: - return ( programType == ShaderGpuProgramType.kShaderGpuProgramDX11VertexSM40 + return ( + programType == ShaderGpuProgramType.kShaderGpuProgramDX11VertexSM40 or programType == ShaderGpuProgramType.kShaderGpuProgramDX11VertexSM50 or programType == ShaderGpuProgramType.kShaderGpuProgramDX11PixelSM40 or programType == ShaderGpuProgramType.kShaderGpuProgramDX11PixelSM50 or programType == ShaderGpuProgramType.kShaderGpuProgramDX11GeometrySM40 or programType == ShaderGpuProgramType.kShaderGpuProgramDX11GeometrySM50 or programType == ShaderGpuProgramType.kShaderGpuProgramDX11HullSM50 - or programType == ShaderGpuProgramType.kShaderGpuProgramDX11DomainSM50 ) + or programType == ShaderGpuProgramType.kShaderGpuProgramDX11DomainSM50 + ) elif platform == ShaderCompilerPlatform.kShaderCompPlatformGLES20: return programType == ShaderGpuProgramType.kShaderGpuProgramGLES elif platform == ShaderCompilerPlatform.kShaderCompPlatformNaCl: @@ -341,70 +445,92 @@ def CheckGpuProgramUsable(platform, programType): elif platform == ShaderCompilerPlatform.kShaderCompPlatformFlash: raise NotImplementedError elif platform == ShaderCompilerPlatform.kShaderCompPlatformD3D11_9x: - return ( programType == ShaderGpuProgramType.kShaderGpuProgramDX10Level9Vertex - or programType == ShaderGpuProgramType.kShaderGpuProgramDX10Level9Pixel ) + return ( + programType == ShaderGpuProgramType.kShaderGpuProgramDX10Level9Vertex + or programType == ShaderGpuProgramType.kShaderGpuProgramDX10Level9Pixel + ) elif platform == ShaderCompilerPlatform.kShaderCompPlatformGLES3Plus: - return ( programType == ShaderGpuProgramType.kShaderGpuProgramGLES31AEP + return ( + programType == ShaderGpuProgramType.kShaderGpuProgramGLES31AEP or programType == ShaderGpuProgramType.kShaderGpuProgramGLES31 - or programType == ShaderGpuProgramType.kShaderGpuProgramGLES3 ) + or programType == ShaderGpuProgramType.kShaderGpuProgramGLES3 + ) elif platform == ShaderCompilerPlatform.kShaderCompPlatformPSP2: - return ( programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS + return ( + programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleFS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleHS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleDS - or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS ) + or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS + ) elif platform == ShaderCompilerPlatform.kShaderCompPlatformPS4: - return ( programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS + return ( + programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleFS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleHS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleDS - or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS ) + or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS + ) elif platform == ShaderCompilerPlatform.kShaderCompPlatformXboxOne: - return ( programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS + return ( + programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleFS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleHS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleDS - or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS ) + or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS + ) elif platform == ShaderCompilerPlatform.kShaderCompPlatformPSM: raise NotImplementedError elif platform == ShaderCompilerPlatform.kShaderCompPlatformMetal: - return ( programType == ShaderGpuProgramType.kShaderGpuProgramMetalVS - or programType == ShaderGpuProgramType.kShaderGpuProgramMetalVS ) + return ( + programType == ShaderGpuProgramType.kShaderGpuProgramMetalVS + or programType == ShaderGpuProgramType.kShaderGpuProgramMetalVS + ) elif platform == ShaderCompilerPlatform.kShaderCompPlatformOpenGLCore: - return ( programType == ShaderGpuProgramType.kShaderGpuProgramGLCore32 + return ( + programType == ShaderGpuProgramType.kShaderGpuProgramGLCore32 or programType == ShaderGpuProgramType.kShaderGpuProgramGLCore41 - or programType == ShaderGpuProgramType.kShaderGpuProgramGLCore43 ) + or programType == ShaderGpuProgramType.kShaderGpuProgramGLCore43 + ) elif platform == ShaderCompilerPlatform.kShaderCompPlatformN3DS: - return ( programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS + return ( + programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleFS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleHS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleDS - or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS ) + or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS + ) elif platform == ShaderCompilerPlatform.kShaderCompPlatformWiiU: - return ( programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS + return ( + programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleFS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleHS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleDS - or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS ) + or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS + ) elif platform == ShaderCompilerPlatform.kShaderCompPlatformVulkan: return programType == ShaderGpuProgramType.kShaderGpuProgramSPIRV elif platform == ShaderCompilerPlatform.kShaderCompPlatformSwitch: - return ( programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS + return ( + programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleFS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleHS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleDS - or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS ) + or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS + ) elif platform == ShaderCompilerPlatform.kShaderCompPlatformXboxOneD3D12: - return ( programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS + return ( + programType == ShaderGpuProgramType.kShaderGpuProgramConsoleVS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleFS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleHS or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleDS - or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS ) + or programType == ShaderGpuProgramType.kShaderGpuProgramConsoleGS + ) else: raise NotImplementedError -def GetPlatformString(platform): +def GetPlatformString(platform: int): if platform == ShaderCompilerPlatform.kShaderCompPlatformGL: return "openGL" elif platform == ShaderCompilerPlatform.kShaderCompPlatformD3D9: @@ -452,11 +578,13 @@ def GetPlatformString(platform): class ShaderProgram: - def __init__(self, reader: EndianBinaryReader, version): + m_SubPrograms: List[ShaderSubProgram] + + def __init__(self, reader: EndianBinaryReader, version: Tuple[int, int, int, int]): subProgramCapacity = reader.read_int() - self.m_SubPrograms = [] + self.m_SubPrograms = [None] * subProgramCapacity - if version >=(2019, 3): # 2019.3 and up + if version >= (2019, 3): # 2019.3 and up entrySize = 12 else: entrySize = 8 @@ -465,27 +593,35 @@ def __init__(self, reader: EndianBinaryReader, version): reader.Position = 4 + i * entrySize offset = reader.read_int() reader.Position = offset - self.m_SubPrograms.append(ShaderSubProgram(reader)) + self.m_SubPrograms[i] = ShaderSubProgram(reader) - def Export(self, shader): - shader = re.sub(r"GpuProgramIndex (.+)", - lambda math: self.m_SubPrograms[int(math.group(1))].Export(), - shader) + def Export(self, shader: str) -> str: + shader = re.sub( + r"GpuProgramIndex (.+)", + lambda math: self.m_SubPrograms[int(math.group(1))].Export(), + shader, + ) return shader class ShaderSubProgram: + m_Version: int + m_ProgramCode: ShaderGpuProgramType + m_Keywords: List[str] + m_ProgramCode: List[bytes] + m_LocalKeywords: Optional[List[str]] + def __init__(self, reader: EndianBinaryReader): - #LoadGpuProgramFromData - #201509030 - Unity 5.3 - #201510240 - Unity 5.4 - #201608170 - Unity 5.5 - #201609010 - Unity 5.6, 2017.1 & 2017.2 - #201708220 - Unity 2017.3, Unity 2017.4 & Unity 2018.1 - #201802150 - Unity 2018.2 & Unity 2018.3 - #201806140 - Unity 2019.1~2020.1 - #202012090 - Unity 2021.2 + # LoadGpuProgramFromData + # 201509030 - Unity 5.3 + # 201510240 - Unity 5.4 + # 201608170 - Unity 5.5 + # 201609010 - Unity 5.6, 2017.1 & 2017.2 + # 201708220 - Unity 2017.3, Unity 2017.4 & Unity 2018.1 + # 201802150 - Unity 2018.2 & Unity 2018.3 + # 201806140 - Unity 2019.1~2020.1 + # 202012090 - Unity 2021.2 self.m_Version = reader.read_int() self.m_ProgramType = ShaderGpuProgramType(reader.read_int()) @@ -495,39 +631,37 @@ def __init__(self, reader: EndianBinaryReader): reader.Position += 4 m_KeywordSize = reader.read_int() - self.m_Keywords = [] - - for i in range(m_KeywordSize): - self.m_Keywords.append(reader.read_aligned_string()) + self.m_Keywords = [reader.read_aligned_string() for _ in range(m_KeywordSize)] if 201806140 <= self.m_Version < 202012090: m_LocalKeywordsSize = reader.read_int() - self.m_LocalKeywords = [] - - for i in range(m_LocalKeywordsSize): - self.m_LocalKeywords.append(reader.read_aligned_string()) + self.m_LocalKeywords = [ + reader.read_aligned_string() for _ in range(m_LocalKeywordsSize) + ] + else: + self.m_LocalKeywords = None self.m_ProgramCode = reader.read_byte_array() reader.align_stream() - def Export(self): + def Export(self) -> str: sb = [] if len(self.m_Keywords) > 0: sb.append("Keywords { ") for keyword in self.m_Keywords: - sb.append("\"{0}\" ".format(keyword)) + sb.append('"{0}" '.format(keyword)) sb.append("}\n") - if hasattr(self, 'm_LocalKeywords') and len(self.m_LocalKeywords) > 0: + if hasattr(self, "m_LocalKeywords") and len(self.m_LocalKeywords) > 0: sb.append("Local Keywords { ") for keyword in self.m_LocalKeywords: - sb.append("\"{0}\" ".format(keyword)) + sb.append('"{0}" '.format(keyword)) sb.append("}\n") - sb.append("\"") + sb.append('"') if len(self.m_ProgramCode) > 0: if self.m_ProgramType in [ @@ -538,14 +672,14 @@ def Export(self): ShaderGpuProgramType.kShaderGpuProgramGLES, ShaderGpuProgramType.kShaderGpuProgramGLCore32, ShaderGpuProgramType.kShaderGpuProgramGLCore41, - ShaderGpuProgramType.kShaderGpuProgramGLCore43 + ShaderGpuProgramType.kShaderGpuProgramGLCore43, ]: sb.append(bytes(self.m_ProgramCode).decode("utf8")) elif self.m_ProgramType in [ ShaderGpuProgramType.kShaderGpuProgramDX9VertexSM20, ShaderGpuProgramType.kShaderGpuProgramDX9VertexSM30, ShaderGpuProgramType.kShaderGpuProgramDX9PixelSM20, - ShaderGpuProgramType.kShaderGpuProgramDX9PixelSM30 + ShaderGpuProgramType.kShaderGpuProgramDX9PixelSM30, ]: sb.append("// shader disassembly not supported on DXBC") elif self.m_ProgramType in [ @@ -558,20 +692,20 @@ def Export(self): ShaderGpuProgramType.kShaderGpuProgramDX11GeometrySM40, ShaderGpuProgramType.kShaderGpuProgramDX11GeometrySM50, ShaderGpuProgramType.kShaderGpuProgramDX11HullSM50, - ShaderGpuProgramType.kShaderGpuProgramDX11DomainSM50 + ShaderGpuProgramType.kShaderGpuProgramDX11DomainSM50, ]: sb.append("// shader disassembly not supported on DXBC") elif self.m_ProgramType in [ ShaderGpuProgramType.kShaderGpuProgramMetalVS, - ShaderGpuProgramType.kShaderGpuProgramMetalFS + ShaderGpuProgramType.kShaderGpuProgramMetalFS, ]: - reader = EndianBinaryReader(self.m_ProgramCode, endian = "<") + reader = EndianBinaryReader(self.m_ProgramCode, endian="<") fourCC = reader.read_u_int() - if fourCC == 0xf00dcafe: + if fourCC == 0xF00DCAFE: offset = reader.read_int() reader.Position = offset - entryName = reader.read_string_to_null() + _entryName = reader.read_string_to_null() buff = reader.read_bytes(int(reader.Length - reader.Position)) sb.append(bytes(buff).decode("utf8")) elif self.m_ProgramType == ShaderGpuProgramType.kShaderGpuProgramSPIRV: @@ -582,11 +716,15 @@ def Export(self): ShaderGpuProgramType.kShaderGpuProgramConsoleFS, ShaderGpuProgramType.kShaderGpuProgramConsoleHS, ShaderGpuProgramType.kShaderGpuProgramConsoleDS, - ShaderGpuProgramType.kShaderGpuProgramConsoleGS + ShaderGpuProgramType.kShaderGpuProgramConsoleGS, ]: sb.append(bytes(self.m_ProgramCode).decode("utf8")) else: - sb.append("//shader disassembly not supported on {0}".format(self.m_ProgramType)) + sb.append( + "//shader disassembly not supported on {0}".format( + self.m_ProgramType + ) + ) sb.append('"') return "".join(sb) From 3845d624e9f4ec9c1a8e295d3a2306b96618de69 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 00:01:27 +0200 Subject: [PATCH 278/599] SpriteHelper - breaking typo fix, format, type completition --- UnityPy/export/SpriteHelper.py | 50 ++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/UnityPy/export/SpriteHelper.py b/UnityPy/export/SpriteHelper.py index a5f32709..3a4bee35 100644 --- a/UnityPy/export/SpriteHelper.py +++ b/UnityPy/export/SpriteHelper.py @@ -1,18 +1,22 @@ +from __future__ import annotations + +from typing import TYPE_CHECKING + from PIL import Image, ImageDraw -from .Texture2DConverter import get_image_from_texture2d from ..enums import ( ClassIDType, + SpriteMeshType, SpritePackingMode, SpritePackingRotation, - SpriteMeshType, ) - from ..helpers.MeshHelper import MeshHandler -from typing import Tuple, TYPE_CHECKING +from .Texture2DConverter import get_image_from_texture2d if TYPE_CHECKING: - from ..classes.generated import Sprite + from typing import List, Optional, Tuple + + from ..classes import PPtr, Sprite, Texture2D class SpriteSettings: @@ -30,12 +34,10 @@ def __init__(self, settings_raw): # rest of the bits are reserved -def get_image(sprite, texture, alpha_texture) -> Image.Image: - if ( - alpha_texture - and getattr(alpha_texture, "type", ClassIDType.UnknownType) - == ClassIDType.Texture2D - ): +def get_image( + sprite: Sprite, texture: PPtr[Texture2D], alpha_texture: Optional[PPtr[Texture2D]] +) -> Image.Image: + if alpha_texture: cache_id = (texture.path_id, alpha_texture.path_id) if cache_id not in sprite.assets_file._cache: original_image = get_image_from_texture2d(texture.read(), False) @@ -52,11 +54,11 @@ def get_image(sprite, texture, alpha_texture) -> Image.Image: return sprite.assets_file._cache[cache_id] -def get_image_from_sprite(m_Sprite: "Sprite") -> Image.Image: +def get_image_from_sprite(m_Sprite: Sprite) -> Image.Image: atlas = None - if getattr(m_Sprite, "m_SpriteAtlas", None): + if m_Sprite.m_SpriteAtlas: atlas = m_Sprite.m_SpriteAtlas.read() - elif getattr(m_Sprite, "m_AtlasTags", None): + elif m_Sprite.m_AtlasTags: # looks like the direct pointer is empty, let's try to find the Atlas via its name for obj in m_Sprite.assets_file.objects.values(): if obj.type == ClassIDType.SpriteAtlas: @@ -121,7 +123,7 @@ def get_image_from_sprite(m_Sprite: "Sprite") -> Image.Image: def mask_sprite( - m_Sprite: "Sprite", mesh: MeshHandler, sprite_image: Image.Image + m_Sprite: Sprite, mesh: MeshHandler, sprite_image: Image.Image ) -> Image.Image: mask_img = Image.new("1", sprite_image.size, color=0) draw = ImageDraw.ImageDraw(mask_img) @@ -164,7 +166,9 @@ def mask_sprite( return sprite_image -def render_sprite_mesh(m_Sprite: "Sprite", mesh: MeshHandler, texture: Image.Image): +def render_sprite_mesh( + m_Sprite: Sprite, mesh: MeshHandler, texture: Image.Image +) -> Image.Image: for triangles in mesh.get_triangles(): positions = mesh.m_Vertices uv = mesh.m_UV0 @@ -218,7 +222,7 @@ def copy_triangle( src_tri: Tuple[float, float], dst_img: Image.Image, dst_tri: Tuple[float, float], -): +) -> None: src_off = ( (src_tri[1][0] - src_tri[0][0], src_tri[1][1] - src_tri[0][1]), (src_tri[2][0] - src_tri[0][0], src_tri[2][1] - src_tri[0][1]), @@ -275,23 +279,23 @@ def copy_triangle( dst_img.paste(transformed, mask=mask) -def linalg_solve(M, y): +def linalg_solve(M: List[List[float]], y: List[float]) -> List[float]: # M^-1 * y M_i = get_matrix_inverse(M) return [sum(M_i[i][j] * y[j] for j in range(len(y))) for i in range(len(M_i))] -def transpose_matrix(m): +def transpose_matrix(m: List[List[float]]) -> List[List[float]]: # https://stackoverflow.com/a/39881366 return map(list, zip(*m)) -def get_matrix_minor(m, i, j): +def get_matrix_minor(m: List[List[float]], i: int, j: int) -> List[float]: # https://stackoverflow.com/a/39881366 return [row[:j] + row[j + 1 :] for row in (m[:i] + m[i + 1 :])] -def get_matrix_determinant(m): +def get_matrix_determinant(m: List[List[float]]) -> float: # https://stackoverflow.com/a/39881366 # base case for 2x2 matrix if len(m) == 2: @@ -303,7 +307,7 @@ def get_matrix_determinant(m): ) -def get_matrix_inverse(m): +def get_matrix_inverse(m: List[List[float]]) -> List[List[float]]: # https://stackoverflow.com/a/39881366 determinant = get_matrix_determinant(m) # special case for 2x2 matrix: @@ -323,7 +327,7 @@ def get_matrix_inverse(m): ] cofactors = list(transpose_matrix(cofactors)) - return [[c / determinant for c in range(row)] for row in cofactors] + return [[c / determinant for c in row] for row in cofactors] __all__ = ["get_image_from_sprite"] From 5da7d0b617afde3516d9458a45df62349557f5d1 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 00:06:53 +0200 Subject: [PATCH 279/599] Texture2DConverter - format import, add missing type hints --- UnityPy/export/Texture2DConverter.py | 38 +++++++++++++++++----------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/UnityPy/export/Texture2DConverter.py b/UnityPy/export/Texture2DConverter.py index 06a25305..3e731c4e 100644 --- a/UnityPy/export/Texture2DConverter.py +++ b/UnityPy/export/Texture2DConverter.py @@ -1,18 +1,26 @@ -import texture2ddecoder -from PIL import Image +from __future__ import annotations + +import struct from copy import copy from io import BytesIO -import struct -from ..enums import TextureFormat, BuildTarget +from typing import TYPE_CHECKING, Tuple, Union + +import texture2ddecoder +from PIL import Image + +from ..enums import BuildTarget, TextureFormat from ..helpers import TextureSwizzler -from typing import Union + +if TYPE_CHECKING: + from ..classes import Texture2D + TF = TextureFormat def image_to_texture2d( img: Image.Image, target_texture_format: Union[TF, int], flip: bool = True -): +) -> Tuple[bytes, TextureFormat]: if isinstance(target_texture_format, int): target_texture_format = TextureFormat(target_texture_format) @@ -87,7 +95,7 @@ def image_to_texture2d( return enc_img, tex_format -def assert_rgba(img: Image.Image, target_texture_format: TextureFormat): +def assert_rgba(img: Image.Image, target_texture_format: TextureFormat) -> Image.Image: if img.mode == "RGB": img = img.convert("RGBA") assert ( @@ -97,8 +105,8 @@ def assert_rgba(img: Image.Image, target_texture_format: TextureFormat): def get_image_from_texture2d( - texture_2d: "Texture2D", - flip=True, + texture_2d: Texture2D, + flip: bool = True, ) -> Image.Image: """converts the given texture into PIL.Image @@ -125,11 +133,11 @@ def parse_image_data( image_data: bytes, width: int, height: int, - texture_format: TextureFormat, + texture_format: Union[int, TextureFormat], version: tuple, platform: int, platform_blob: bytes = None, - flip=True, + flip: bool = True, ) -> Image.Image: image_data = copy(bytes(image_data)) if not image_data: @@ -225,12 +233,12 @@ def astc(image_data: bytes, width: int, height: int, block_size: tuple) -> Image return Image.frombytes("RGBA", (width, height), image_data, "raw", "BGRA") -def pvrtc(image_data: bytes, width: int, height: int, fmt: bool): +def pvrtc(image_data: bytes, width: int, height: int, fmt: bool) -> Image.Image: image_data = texture2ddecoder.decode_pvrtc(image_data, width, height, fmt) return Image.frombytes("RGBA", (width, height), image_data, "raw", "BGRA") -def etc(image_data: bytes, width: int, height: int, fmt: list): +def etc(image_data: bytes, width: int, height: int, fmt: list) -> Image.Image: if fmt[0] == 1: image_data = texture2ddecoder.decode_etc1(image_data, width, height) elif fmt[0] == 2: @@ -245,7 +253,7 @@ def etc(image_data: bytes, width: int, height: int, fmt: list): return Image.frombytes("RGBA", (width, height), image_data, "raw", "BGRA") -def eac(image_data: bytes, width: int, height: int, fmt: list): +def eac(image_data: bytes, width: int, height: int, fmt: list) -> Image.Image: if fmt == "EAC_R": image_data = texture2ddecoder.decode_eacr(image_data, width, height) elif fmt == "EAC_R_SIGNED": @@ -301,7 +309,7 @@ def rg( return pillow(rgb_data, width, height, mode, codec.replace("RG", "RGB"), args) -def rgb9e5float(image_data: bytes, width: int, height: int): +def rgb9e5float(image_data: bytes, width: int, height: int) -> Image.Image: rgb = bytearray(width * height * 3) for i, (n,) in enumerate(struct.iter_unpack("> 27 & 0x1F From 8ade10ee2a9cc7737a0e7168d7e79eaa4eb6ae51 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 00:10:23 +0200 Subject: [PATCH 280/599] AudioClipConverter - format --- UnityPy/export/AudioClipConverter.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/UnityPy/export/AudioClipConverter.py b/UnityPy/export/AudioClipConverter.py index fddceeda..e8a1662b 100644 --- a/UnityPy/export/AudioClipConverter.py +++ b/UnityPy/export/AudioClipConverter.py @@ -1,8 +1,12 @@ +from __future__ import annotations + import ctypes import os import platform -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Dict + from UnityPy.streams import EndianBinaryWriter + from ..helpers.ResourceReader import get_resource_data if TYPE_CHECKING: @@ -73,7 +77,7 @@ def import_pyfmodex(): import pyfmodex -def extract_audioclip_samples(audio: "AudioClip") -> dict: +def extract_audioclip_samples(audio: AudioClip) -> Dict[str, bytes]: """extracts all the samples from an AudioClip :param audio: AudioClip :type audio: AudioClip @@ -101,7 +105,7 @@ def extract_audioclip_samples(audio: "AudioClip") -> dict: return dump_samples(audio, audio_data) -def dump_samples(clip: "AudioClip", audio_data: bytes) -> dict: +def dump_samples(clip: AudioClip, audio_data: bytes) -> Dict[str, bytes]: if pyfmodex is None: import_pyfmodex() if not pyfmodex: @@ -136,7 +140,7 @@ def dump_samples(clip: "AudioClip", audio_data: bytes) -> dict: return samples -def subsound_to_wav(subsound): +def subsound_to_wav(subsound) -> bytes: # get sound settings length = subsound.get_length(pyfmodex.enums.TIMEUNIT.PCMBYTES) channels = subsound.format.channels From 301b32524b995f342c0ef3f7eef0bbd616551762 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 00:12:09 +0200 Subject: [PATCH 281/599] MeshExporter - improve type hints --- UnityPy/export/MeshExporter.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/UnityPy/export/MeshExporter.py b/UnityPy/export/MeshExporter.py index 8c11e475..33503c5a 100644 --- a/UnityPy/export/MeshExporter.py +++ b/UnityPy/export/MeshExporter.py @@ -1,18 +1,22 @@ -from typing import TYPE_CHECKING +from __future__ import annotations + +from typing import TYPE_CHECKING, List, Literal, Optional from ..helpers.MeshHelper import MeshHandler if TYPE_CHECKING: from ..classes.generated import Mesh +MESH_EXPORT_FORMATS = Literal["obj"] + -def export_mesh(m_Mesh: "Mesh", format="obj") -> str: +def export_mesh(m_Mesh: Mesh, format: MESH_EXPORT_FORMATS = "obj") -> str: if format == "obj": return export_mesh_obj(m_Mesh) raise NotImplementedError(f"Export format {format} not implemented") -def export_mesh_obj(mesh: "Mesh", material_names: list = None): +def export_mesh_obj(mesh: Mesh, material_names: Optional[List[str]] = None) -> str: handler = MeshHandler(mesh) handler.process() From cbd067121931352e02b5bbde8e3ee7b8ce1f0b32 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 00:31:38 +0200 Subject: [PATCH 282/599] MeshRendererExporter - fixes, improved type hints --- UnityPy/export/MeshRendererExporter.py | 98 +++++++++++++++++++------- 1 file changed, 72 insertions(+), 26 deletions(-) diff --git a/UnityPy/export/MeshRendererExporter.py b/UnityPy/export/MeshRendererExporter.py index aff0875e..55a52dc7 100644 --- a/UnityPy/export/MeshRendererExporter.py +++ b/UnityPy/export/MeshRendererExporter.py @@ -1,53 +1,88 @@ -from ..classes import Renderer, SkinnedMeshRenderer, Material +from __future__ import annotations + +from typing import TYPE_CHECKING, List, Optional + from .MeshExporter import export_mesh_obj +if TYPE_CHECKING: + from ..classes import ( + Material, + Mesh, + MeshFilter, + PPtr, + Renderer, + SkinnedMeshRenderer, + StaticBatchInfo, + Texture2D, + ) + + class Renderer(Renderer): + m_Materials: Optional[list[PPtr[Material]]] = None + m_StaticBatchInfo: Optional[StaticBatchInfo] = None + m_SubsetIndices: Optional[List[int]] = None + -def get_mesh(meshR: Renderer): - if isinstance(meshR, SkinnedMeshRenderer.SkinnedMeshRenderer): +def get_mesh(meshR: Renderer) -> Optional[Mesh]: + if isinstance(meshR, SkinnedMeshRenderer): if meshR.m_Mesh: return meshR.m_Mesh.read() else: m_GameObject = meshR.m_GameObject.read() - if m_GameObject.m_MeshFilter: - filter = m_GameObject.m_MeshFilter.read() - if filter.m_Mesh: - return filter.m_Mesh.read() + for comp in m_GameObject.m_Component: + if isinstance(comp, tuple): + pptr = comp[1] + else: + pptr = comp.component + if not pptr: + continue + obj = pptr.deref() + if not obj: + continue + if obj.type.name == "MeshFilter": + filter: MeshFilter = pptr.read() + if filter.m_Mesh: + return filter.m_Mesh.read() return None -def export_mesh_renderer(obj: Renderer, export_dir: str) -> None: - env = obj.assets_file.enviroment +def export_mesh_renderer(renderer: Renderer, export_dir: str) -> None: + env = renderer.object_reader.assets_file.enviroment env.fs.makedirs(export_dir, exist_ok=True) - meshR = obj.read() - mesh = get_mesh(meshR) + mesh = get_mesh(renderer) if not mesh: return firstSubMesh = 0 - if hasattr(meshR, "m_StaticBatchInfo") and meshR.m_StaticBatchInfo.subMeshCount > 0: - firstSubMesh = meshR.m_StaticBatchInfo.firstSubMesh - elif hasattr(meshR, "m_SubsetIndices"): - firstSubMesh = min(meshR.m_SubsetIndices) + if ( + hasattr(renderer, "m_StaticBatchInfo") + and renderer.m_StaticBatchInfo.subMeshCount > 0 + ): + firstSubMesh = renderer.m_StaticBatchInfo.firstSubMesh + elif hasattr(renderer, "m_SubsetIndices"): + firstSubMesh = min(renderer.m_SubsetIndices) materials = [] material_names = [] for i, submesh in enumerate(mesh.m_SubMeshes): mat_index = i - firstSubMesh - if mat_index < 0 or mat_index >= len(meshR.m_Materials): + if mat_index < 0 or mat_index >= len(renderer.m_Materials): continue - matPtr = meshR.m_Materials[i - firstSubMesh] + matPtr: Optional[PPtr[Material]] = renderer.m_Materials[i - firstSubMesh] if matPtr: - mat = matPtr.read() + mat: Material = matPtr.read() else: material_names.append(None) continue materials.append(export_material(mat)) material_names.append(mat.m_Name) # save material textures - for key, texEnv in mat.m_SavedProperties.m_TexEnvs.items(): + for key, texEnv in mat.m_SavedProperties.m_TexEnvs: if not texEnv.m_Texture: continue - tex = texEnv.m_Texture.read() + if not isinstance(key, str): + # FastPropertyName + key = key.name + tex: Texture2D = texEnv.m_Texture.read() texName = f"{tex.m_Name if tex.m_Name else key}.png" with env.fs.open(env.fs.sep.join([export_dir, texName]), "wb") as f: tex.read().image.save(f) @@ -79,9 +114,16 @@ def clt(color): # color to tuple color if isinstance(color, tuple) else (color.R, color.G, color.B, color.A) ) - colors = mat.m_SavedProperties.m_Colors - floats = mat.m_SavedProperties.m_Floats - texEnvs = mat.m_SavedProperties.m_TexEnvs + def properties_to_dict(properties): + return { + k if isinstance(k, str) else k.name: v + for k, v in properties + if v is not None + } + + colors = properties_to_dict(mat.m_SavedProperties.m_Colors) + floats = properties_to_dict(mat.m_SavedProperties.m_Floats) + texEnvs = properties_to_dict(mat.m_SavedProperties.m_TexEnvs) diffuse = clt(colors.get("_Color", (0.8, 0.8, 0.8, 1))) ambient = clt(colors.get("_SColor", (0.2, 0.2, 0.2, 1))) @@ -91,7 +133,7 @@ def clt(color): # color to tuple shininess = floats.get("_Shininess", 20.0) transparency = floats.get("_Transparency", 0.0) - sb = [] + sb: List[str] = [] sb.append(f"newmtl {mat.m_Name}") # Ka r g b # defines the ambient color of the material to be (r,g,b). The default is (0.2,0.2,0.2); @@ -116,10 +158,14 @@ def clt(color): # color to tuple # names a file containing a texture map, which should just be an ASCII dump of RGB values; texName = None tex = None - for key, texEnv in texEnvs.items(): + for key, texEnv in texEnvs: if not texEnv.m_Texture: continue - tex = texEnv.m_Texture.read() + if not isinstance(key, str): + # FastPropertyName + key = key.name + + tex: Texture2D = texEnv.m_Texture.read() texName = f"{tex.m_Name if tex.m_Name else key}.png" if key == "_MainTex": sb.append(f"map_Kd {texName}") From 1155a1ef4cfbc8e6a888d7d7e56c063af0eb7406 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 20:53:22 +0200 Subject: [PATCH 283/599] CompressionHelper - type hint compatiblity fix --- UnityPy/helpers/CompressionHelper.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/UnityPy/helpers/CompressionHelper.py b/UnityPy/helpers/CompressionHelper.py index e3d51d64..9572d40a 100644 --- a/UnityPy/helpers/CompressionHelper.py +++ b/UnityPy/helpers/CompressionHelper.py @@ -1,6 +1,7 @@ import gzip import lzma import struct +from typing import Tuple import brotli import lz4.block @@ -153,7 +154,7 @@ def compress_gzip(data: bytes) -> bytes: return gzip.compress(data) -def chunk_based_compress(data: bytes, block_info_flag: int) -> (bytes, list): +def chunk_based_compress(data: bytes, block_info_flag: int) -> Tuple[bytes, list]: """compresses AssetBundle data based on the block_info_flag LZ4/LZ4HC will be chunk-based compression @@ -180,9 +181,9 @@ def chunk_based_compress(data: bytes, block_info_flag: int) -> (bytes, list): compressed_file_data = bytearray() p = 0 while uncompressed_data_size > chunk_size: - compressed_data = compress_func(data[p: p + chunk_size]) + compressed_data = compress_func(data[p : p + chunk_size]) if len(compressed_data) > chunk_size: - compressed_file_data.extend(data[p: p + chunk_size]) + compressed_file_data.extend(data[p : p + chunk_size]) block_info.append( ( chunk_size, From 41d044a82a5892644877b62d7786cdf073983c5b Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 20:53:39 +0200 Subject: [PATCH 284/599] tests - test saving --- tests/test_main.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/tests/test_main.py b/tests/test_main.py index 8a531c8f..5407f03b 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,9 +1,10 @@ import io import os -import UnityPy from PIL import Image +import UnityPy + SAMPLES = os.path.join(os.path.dirname(os.path.abspath(__file__)), "samples") @@ -20,6 +21,24 @@ def test_read_batch(): obj.read() +def test_save_dict(): + env = UnityPy.load(SAMPLES) + for obj in env.objects: + data = obj.get_raw_data() + item = obj.read_typetree(wrap=False) + re_data = obj.save_typetree(item) + assert data == re_data + + +def test_save_wrap(): + env = UnityPy.load(SAMPLES) + for obj in env.objects: + data = obj.get_raw_data() + item = obj.read_typetree(wrap=True) + re_data = obj.save_typetree(item) + assert data == re_data + + def test_texture2d(): for f in os.listdir(SAMPLES): env = UnityPy.load(os.path.join(SAMPLES, f)) From ecb9d5eead6fe5e3696f2d84c15cec91664a1214 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 20:55:03 +0200 Subject: [PATCH 285/599] use importlib instead of manual os.path --- UnityPy/export/AudioClipConverter.py | 19 ++++++++------- UnityPy/helpers/Tpk.py | 29 +++++++++++------------ UnityPy/lib/FMOD/Darwin/x64/__init__.py | 0 UnityPy/lib/FMOD/Linux/arm/__init__.py | 0 UnityPy/lib/FMOD/Linux/armhf/__init__.py | 0 UnityPy/lib/FMOD/Linux/x86/__init__.py | 0 UnityPy/lib/FMOD/Linux/x86_64/__init__.py | 0 UnityPy/lib/FMOD/Windows/x64/__init__.py | 0 UnityPy/lib/FMOD/Windows/x86/__init__.py | 0 UnityPy/lib/FMOD/__init__.py | 0 UnityPy/lib/__init__.py | 0 pyproject.toml | 2 +- 12 files changed, 26 insertions(+), 24 deletions(-) create mode 100644 UnityPy/lib/FMOD/Darwin/x64/__init__.py create mode 100644 UnityPy/lib/FMOD/Linux/arm/__init__.py create mode 100644 UnityPy/lib/FMOD/Linux/armhf/__init__.py create mode 100644 UnityPy/lib/FMOD/Linux/x86/__init__.py create mode 100644 UnityPy/lib/FMOD/Linux/x86_64/__init__.py create mode 100644 UnityPy/lib/FMOD/Windows/x64/__init__.py create mode 100644 UnityPy/lib/FMOD/Windows/x86/__init__.py create mode 100644 UnityPy/lib/FMOD/__init__.py create mode 100644 UnityPy/lib/__init__.py diff --git a/UnityPy/export/AudioClipConverter.py b/UnityPy/export/AudioClipConverter.py index e8a1662b..0c5fc447 100644 --- a/UnityPy/export/AudioClipConverter.py +++ b/UnityPy/export/AudioClipConverter.py @@ -3,6 +3,7 @@ import ctypes import os import platform +from importlib.resources import path from typing import TYPE_CHECKING, Dict from UnityPy.streams import EndianBinaryWriter @@ -25,8 +26,6 @@ def import_pyfmodex(): if pyfmodex is not None: return - ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) - # determine system - Windows, Darwin, Linux, Android system = platform.system() if system == "Linux" and "ANDROID_BOOTLOGO" in os.environ: @@ -62,17 +61,21 @@ def import_pyfmodex(): ) # build path and load library - LIB_PATH = os.path.join(ROOT, "lib", "FMOD", system, arch) - # prepare the environment for pyfmodex if system == "Windows": - os.environ["PYFMODEX_DLL_PATH"] = os.path.join(LIB_PATH, "fmod.dll") + libname = "fmod.dll" else: ext = "dylib" if system == "Darwin" else "so" - os.environ["PYFMODEX_DLL_PATH"] = os.path.join(LIB_PATH, f"libfmod.{ext}") + libname = f"libfmod.{ext}" + # hotfix ctypes for pyfmodex for non windows systems + ctypes.windll = None + + fp = path(f"UnityPy.lib.FMOD.{system}.{arch}", libname) + if hasattr(fp, "args"): + # some newer version doesn't directly return a path, but instead a generator + fp = fp.args[0] - # hotfix ctypes for pyfmodex for non windows - ctypes.windll = getattr(ctypes, "windll", None) + os.environ["PYFMODEX_DLL_PATH"] = str(fp.absolute()) import pyfmodex diff --git a/UnityPy/helpers/Tpk.py b/UnityPy/helpers/Tpk.py index 87611d1b..121a9444 100644 --- a/UnityPy/helpers/Tpk.py +++ b/UnityPy/helpers/Tpk.py @@ -1,8 +1,11 @@ from __future__ import annotations + from enum import IntEnum, IntFlag -from struct import Struct +from importlib.resources import open_binary from io import BytesIO -from typing import List, Tuple, Any, Dict +from struct import Struct +from typing import Any, Dict, List, Tuple + from .TypeTreeHelper import TypeTreeNode TPKTYPETREE: TpkTypeTreeBlob = None @@ -10,16 +13,12 @@ def init(): - import os + with open_binary("UnityPy.resources", "uncompressed.tpk") as f: + data = f.read() - with open( - os.path.join( - os.path.dirname(os.path.dirname(__file__)), "resources", "uncompressed.tpk" - ), - "rb", - ) as f: - global TPKTYPETREE - TPKTYPETREE = TpkFile(f).GetDataBlob() + global TPKTYPETREE + with BytesIO(data) as stream: + TPKTYPETREE = TpkFile(stream).GetDataBlob() def get_typetree_node(class_id: int, version: tuple): @@ -172,12 +171,12 @@ def GetDataBlob(self) -> TpkDataBlob: elif self.CompressionType == TpkCompressionType.Lzma: import lzma - raise Exception("LZMA compression not implemented") + decompressed = lzma.decompress(self.CompressedBytes) elif self.CompressionType == TpkCompressionType.Brotli: import brotli - decompressed = brotli.decompress(self.CompressedBytes) + decompressed: bytes = brotli.decompress(self.CompressedBytes) else: raise Exception("Invalid compression type") @@ -193,7 +192,7 @@ def GetDataBlob(self) -> TpkDataBlob: class TpkDataBlob: - __slots__ = "DataType" + __slots__ = ("DataType",) DataType: TpkDataType def __init__(self, stream: BytesIO) -> None: @@ -247,7 +246,7 @@ def __init__(self, stream: BytesIO) -> None: class TpkFileSystemBlob(TpkDataBlob): - __slots__ = "Files" + __slots__ = ("Files",) # TODO: check if dict might be better Files: List[Tuple[str, bytes]] diff --git a/UnityPy/lib/FMOD/Darwin/x64/__init__.py b/UnityPy/lib/FMOD/Darwin/x64/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/UnityPy/lib/FMOD/Linux/arm/__init__.py b/UnityPy/lib/FMOD/Linux/arm/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/UnityPy/lib/FMOD/Linux/armhf/__init__.py b/UnityPy/lib/FMOD/Linux/armhf/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/UnityPy/lib/FMOD/Linux/x86/__init__.py b/UnityPy/lib/FMOD/Linux/x86/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/UnityPy/lib/FMOD/Linux/x86_64/__init__.py b/UnityPy/lib/FMOD/Linux/x86_64/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/UnityPy/lib/FMOD/Windows/x64/__init__.py b/UnityPy/lib/FMOD/Windows/x64/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/UnityPy/lib/FMOD/Windows/x86/__init__.py b/UnityPy/lib/FMOD/Windows/x86/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/UnityPy/lib/FMOD/__init__.py b/UnityPy/lib/FMOD/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/UnityPy/lib/__init__.py b/UnityPy/lib/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/pyproject.toml b/pyproject.toml index 22bb1298..96bc4f86 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ authors = [{ name = "Rudolf Kolbe", email = "rkolbe96@gmail.com" }] description = "A Unity extraction and patching package" readme = "README.md" license = { file = "LICENSE" } -requires-python = ">=3.6" +requires-python = ">=3.7" keywords = [ "python", "unity", From 5ac0a62c59102ee0c53ad265d7d589d6ad6e7ccd Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 20:56:52 +0200 Subject: [PATCH 286/599] SerializedFile - cleanup and ContainerHelper improvement --- UnityPy/files/SerializedFile.py | 214 ++++++++++++-------------------- 1 file changed, 76 insertions(+), 138 deletions(-) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 87ee69d5..7b3594ed 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -1,16 +1,24 @@ -from ntpath import basename +from __future__ import annotations + import re +from ntpath import basename +from typing import TYPE_CHECKING, Dict, Generator, List, Optional, Tuple + +from attrs import define -from . import File, ObjectReader, BundleFile +from .. import config from ..enums import BuildTarget, ClassIDType, CommonString -from ..streams import EndianBinaryReader, EndianBinaryWriter from ..helpers.TypeTreeHelper import TypeTreeNode +from ..streams import EndianBinaryWriter +from . import BundleFile, File, ObjectReader -from struct import Struct - -from .. import config +if TYPE_CHECKING: + from ..classes import AssetBundle, AssetInfo + from ..files import ObjectReader + from ..streams.EndianBinaryReader import EndianBinaryReader +@define(slots=True) class SerializedFileHeader: metadata_size: int file_size: int @@ -28,6 +36,7 @@ def __init__(self, reader: EndianBinaryReader): ) = reader.read_u_int_array(4) +@define(slots=True) class LocalSerializedObjectIdentifier: # script type local_serialized_file_index: int local_identifier_in_file: int @@ -49,11 +58,13 @@ def write(self, header: SerializedFileHeader, writer: EndianBinaryWriter): writer.write_long(self.local_identifier_in_file) +@define(slots=True) class FileIdentifier: # external - guid: bytes - type: int - # enum { kNonAssetType = 0, kDeprecatedCachedAssetType = 1, kSerializedAssetType = 2, kMetaAssetType = 3 }; path: str + temp_empty: Optional[str] = None + guid: Optional[bytes] = None + type: Optional[int] = None + # enum { kNonAssetType = 0, kDeprecatedCachedAssetType = 1, kSerializedAssetType = 2, kMetaAssetType = 3 }; @property def name(self): @@ -79,6 +90,7 @@ def write(self, header: SerializedFileHeader, writer: EndianBinaryWriter): writer.write_string_to_null(self.path) +@define(slots=True) class BuildType: build_type: str @@ -94,15 +106,27 @@ def IsPatch(self): return self.build_type == "p" +@define(slots=True) class SerializedType: class_id: int - is_stripped_type: bool - script_type_index = -1 - nodes: list = [] # TypeTreeNode - script_id: bytes # Hash128 - old_type_hash: bytes # Hash128} - - def __init__(self, reader, serialized_file, is_ref_type: bool): + is_stripped_type: Optional[bool] = None + script_type_index: Optional[int] = -1 + script_id: Optional[bytes] = None # Hash128 + old_type_hash: Optional[bytes] = None # Hash128 + node: Optional[TypeTreeNode] = None + # ref type + m_ClassName: Optional[str] = None + m_NameSpace: Optional[str] = None + m_AssemblyName: Optional[str] = None + # 21+ + type_dependencies: Optional[List[int]] = None + + def __init__( + self, + reader: EndianBinaryReader, + serialized_file: SerializedFile, + is_ref_type: bool, + ): version = serialized_file.header.version self.class_id = reader.read_int() @@ -123,9 +147,9 @@ def __init__(self, reader, serialized_file, is_ref_type: bool): if serialized_file._enable_type_tree: if version >= 12 or version == 10: - self.nodes = TypeTreeNode.parse_blob(reader, version) + self.node = TypeTreeNode.parse_blob(reader, version) else: - self.nodes = TypeTreeNode.parse(reader, version) + self.node = TypeTreeNode.parse(reader, version) if version >= 21: if is_ref_type: @@ -135,7 +159,12 @@ def __init__(self, reader, serialized_file, is_ref_type: bool): else: self.type_dependencies = reader.read_int_array() - def write(self, serialized_file, writer, is_ref_type): + def write( + self, + serialized_file: SerializedFile, + writer: EndianBinaryWriter, + is_ref_type: bool, + ): version = serialized_file.header.version writer.write_int(self.class_id) @@ -155,8 +184,9 @@ def write(self, serialized_file, writer, is_ref_type): writer.write_bytes(self.old_type_hash) # Hash128 if serialized_file._enable_type_tree: + assert self.node is not None if version >= 12 or version == 10: - self.nodes.dump_blob(writer, version) + self.node.dump_blob(writer, version) else: serialized_file.dump(writer, version) @@ -181,8 +211,8 @@ class SerializedFile(File.File): externals: list objects: dict _cache: dict - assetbundle: "AssetBundle" - container: "ContainerHelper" + assetbundle: AssetBundle + container: ContainerHelper header: SerializedFileHeader @property @@ -288,8 +318,8 @@ def __init__(self, reader: EndianBinaryReader, parent=None, name=None, **kwargs) # read the asset_bundles to get the containers for obj in self.objects.values(): if obj.type == ClassIDType.AssetBundle: - self.assetbundle = obj.read_typetree(wrap=True) - self._container = ContainerHelper(self.assetbundle.m_Container) + self.assetbundle = obj.read() + self._container = ContainerHelper(self.assetbundle) break else: self.assetbundle = None @@ -316,7 +346,7 @@ def load_dependencies(self, possible_dependencies: list = []): except FileNotFoundError: pass - def set_version(self, string_version): + def set_version(self, string_version: str): self.unity_version = string_version if not string_version or string_version == "0.0.0": # weird case, but apparently can happen? @@ -463,103 +493,6 @@ def save(self, packer: str = None) -> bytes: return writer.bytes - def save_serialized_type( - self, - typ: SerializedType, - header: SerializedFileHeader, - writer: EndianBinaryWriter, - ): - writer.write_int(typ.class_id) - - if header.version >= 16: - writer.write_boolean(typ.is_stripped_type) - - if header.version >= 17: - writer.write_short(typ.script_type_index) - - if header.version >= 13: - if (header.version < 16 and typ.class_id < 0) or ( - header.version >= 16 and typ.class_id == 114 - ): - writer.write_bytes(typ.script_id) # Hash128 - writer.write_bytes(typ.old_type_hash) # Hash128 - - if self._enable_type_tree: - if header.version >= 12 or header.version == 10: - self.save_type_tree5(typ.nodes, writer, typ.string_data) - else: - self.save_type_tree(typ.nodes, writer) - - def save_type_tree(self, nodes: list, writer: EndianBinaryWriter): - for i, node in nodes: - writer.write_string_to_null(node.m_Type) - writer.write_string_to_null(node.m_Name) - writer.write_int(node.byte_size) - if self.header.version == 2: - writer.write_int(node.m_VariableCount) - - if self.header.version != 3: - writer.write_int(node.m_Index) - - writer.write_int(node.m_TypeFlags) - writer.write_int(node.m_Version) - if self.header.version != 3: - writer.write_int(node.m_MetaFlag) - - # calc children count - children_count = 0 - for node2 in nodes[i + 1 :]: - if node2.m_Level == node.m_Level: - break - if node2.m_Level == node.m_Level - 1: - children_count += 1 - writer.write_int(children_count) - - def save_type_tree5(self, nodes: list, writer: EndianBinaryWriter, str_data=b""): - # node count - # stream buffer size - # node data - # string buffer - - string_buffer = EndianBinaryWriter() - string_buffer.write(str_data) - strings_values = [ - (node.m_TypeStrOffset, node.m_NameStrOffset) for node in nodes - ] - - # number of nodes - writer.write_int(len(nodes)) - # string buffer size - writer.write_int(string_buffer.Length) - - # nodes - for i, node in enumerate(nodes): - # version - writer.write_u_short(node.m_Version) - # level - writer.write_byte(node.m_Level) - # is array - writer.write_u_byte(node.m_TypeFlags) - # type str offfset - writer.write_u_int(strings_values[i][0]) - # name str offset - writer.write_u_int(strings_values[i][1]) - # byte size - writer.write_int(node.m_ByteSize) - # index - writer.write_int(node.m_Index) - # meta flag - writer.write_int(node.m_MetaFlag) - # ref hash - if self.header.version > 19: - writer.write_u_long(node.m_RefTypeHash) - - # string buffer - writer.write(string_buffer.bytes) - - if self.header.version >= 21: - writer.write_bytes(b"\x00" * 4) - def read_string(string_buffer_reader: EndianBinaryReader, value: int) -> str: is_offset = (value & 0x80000000) == 0 @@ -571,48 +504,53 @@ def read_string(string_buffer_reader: EndianBinaryReader, value: int) -> str: return CommonString.get(offset, str(offset)) +@define(slots=True) class ContainerHelper: """Helper class to allow multidict containers without breaking compatibility with old versions""" - def __init__(self, container) -> None: - self.container = container + container: Tuple[str, AssetInfo] + container_dict: Dict[str, ObjectReader] + path_dict: Dict[int, str] + + def __init__(self, assetbundle: AssetBundle) -> None: + self.container = assetbundle.m_Container # support for getitem - self.container_dict = {key: value.asset for key, value in container} - self.path_dict = {value.asset.m_PathID: key for key, value in container} + self.container_dict = {key: value.asset for key, value in self.container} + self.path_dict = {value.asset.m_PathID: key for key, value in self.container} - def items(self): + def items(self) -> Generator[Tuple[str, ObjectReader], None, None]: return ((key, value.asset) for key, value in self.container) - def keys(self): + def keys(self) -> list[str]: return list({key for key, value in self.container}) - def values(self): + def values(self) -> list[ObjectReader]: return list({value.asset for key, value in self.container}) - def __getitem__(self, key): + def __getitem__(self, key) -> ObjectReader: return self.container_dict[key] - def __setitem__(self, key, value): + def __setitem__(self, key, value) -> None: raise NotImplementedError("Assigning to container is not allowed!") - def __delitem__(self, key): + def __delitem__(self, key) -> None: raise NotImplementedError("Deleting from the container is not allowed!") - def __iter__(self): + def __iter__(self) -> Generator[str, None, None]: return iter(self.keys()) - def __len__(self): + def __len__(self) -> int: return len(self.container) - def __getattr__(self, name: str): + def __getattr__(self, name: str) -> ObjectReader: return self.container_dict[name] - def __or__(self, other: "ContainerHelper"): + def __or__(self, other: ContainerHelper): return ContainerHelper(list(set(self.container + other.container))) - def __str__(self): + def __str__(self) -> str: return f'{{{", ".join(f"{key}: {value}" for key, value in self.items())}}}' - def __dict__(self): + def __dict__(self) -> Dict[str, ObjectReader]: return self.container_dict From 1ed0defa0441d94aa3c6ffd9efcac6d8447482a1 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 20:57:36 +0200 Subject: [PATCH 287/599] nodes -> node --- README.md | 4 +-- UnityPy/files/ObjectReader.py | 36 ++++++++++--------- UnityPy/tools/extractor.py | 2 +- .../monobehaviour_from_assembly.py | 2 +- 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 854177ce..6be45037 100644 --- a/README.md +++ b/README.md @@ -284,7 +284,7 @@ import json for obj in env.objects: if obj.type.name == "MonoBehaviour": # export - if obj.serialized_type.nodes: + if obj.serialized_type.node: # save decoded data tree = obj.read_typetree() fp = os.path.join(extract_dir, f"{tree['m_Name']}.json") @@ -298,7 +298,7 @@ for obj in env.objects: f.write(data.raw_data) # edit - if obj.serialized_type.nodes: + if obj.serialized_type.node: tree = obj.read_typetree() # apply modifications to the data within the tree obj.save_typetree(tree) diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index 6f3f1f71..aae32b35 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -1,11 +1,13 @@ -from typing import TYPE_CHECKING, Generic, TypeVar, Union, List, Optional -from ..enums import ClassIDType +from __future__ import annotations -from ..streams import EndianBinaryReader, EndianBinaryWriter +from typing import TYPE_CHECKING, Generic, List, Optional, TypeVar, Union + +from ..enums import ClassIDType +from ..exceptions import TypeTreeError from ..helpers import TypeTreeHelper from ..helpers.Tpk import get_typetree_node from ..helpers.TypeTreeNode import TypeTreeNode -from ..exceptions import TypeTreeError +from ..streams import EndianBinaryReader, EndianBinaryWriter if TYPE_CHECKING: from ..files import SerializedFile @@ -20,14 +22,14 @@ class ObjectReader(Generic[T]): class_id: int type: ClassIDType path_id: int - assets_file: "SerializedFile" + assets_file: SerializedFile _read_until: int # saves where the parser stopped # in case that not all data is read # and the obj.data is changed, the unknown data can be added again - def __init__(self, assets_file: "SerializedFile", reader: EndianBinaryReader): + def __init__(self, assets_file: SerializedFile, reader: EndianBinaryReader): self.assets_file = assets_file self.reader = reader self.data = b"" @@ -226,19 +228,19 @@ def get_raw_data(self) -> bytes: return ret def _get_typetree_node( - self, nodes: Optional[Union[TypeTreeNode, List[dict]]] = None + self, node: Optional[Union[TypeTreeNode, List[dict]]] = None ) -> TypeTreeNode: - if isinstance(nodes, TypeTreeNode): - return nodes - elif isinstance(nodes, list): - return TypeTreeNode.from_list(nodes) - elif nodes is not None: + if isinstance(node, TypeTreeNode): + return node + elif isinstance(node, list): + return TypeTreeNode.from_list(node) + elif node is not None: raise ValueError("nodes must be a list[dict] or TypeTreeNode") if self.serialized_type: - nodes = self.serialized_type.nodes - if not nodes: - nodes = get_typetree_node(self.class_id, self.version) - if not nodes: + node = self.serialized_type.node + if not node: + node = get_typetree_node(self.class_id, self.version) + if not node: raise TypeTreeError("There are no TypeTree nodes for this object.") - return nodes + return node diff --git a/UnityPy/tools/extractor.py b/UnityPy/tools/extractor.py index 4d9ecb6b..762e6bac 100644 --- a/UnityPy/tools/extractor.py +++ b/UnityPy/tools/extractor.py @@ -192,7 +192,7 @@ def exportMonoBehaviour( ) -> List[int]: export = None # TODO - add generic way to add external typetrees - if obj.serialized_type and obj.serialized_type.nodes: + if obj.serialized_type and obj.serialized_type.node: extension = ".json" export = json.dumps(obj.read_typetree(), indent=4, ensure_ascii=False).encode( "utf8", errors="surrogateescape" diff --git a/examples/MonoBehaviourFromAssembly/monobehaviour_from_assembly.py b/examples/MonoBehaviourFromAssembly/monobehaviour_from_assembly.py index 93c98753..17411b87 100644 --- a/examples/MonoBehaviourFromAssembly/monobehaviour_from_assembly.py +++ b/examples/MonoBehaviourFromAssembly/monobehaviour_from_assembly.py @@ -47,7 +47,7 @@ def export_monobehaviours(asset_path: str, trees: dict): for obj in env.objects: if obj.type == "MonoBehaviour": d = obj.read() - if obj.serialized_type and obj.serialized_type.nodes: + if obj.serialized_type and obj.serialized_type.node: tree = obj.read_typetree() else: if not d.m_Script: From 00e9768185ec30b96863d3768dd3512ea1967e0c Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 20:57:47 +0200 Subject: [PATCH 288/599] File - typeint improvement --- UnityPy/files/File.py | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/UnityPy/files/File.py b/UnityPy/files/File.py index 9c2c2f8a..34cd3f0d 100644 --- a/UnityPy/files/File.py +++ b/UnityPy/files/File.py @@ -1,27 +1,35 @@ -from ..enums import FileType -from ..helpers import ImportHelper -from ..streams import EndianBinaryReader, EndianBinaryWriter +from __future__ import annotations from collections import namedtuple from os.path import basename +from typing import TYPE_CHECKING, Dict, Optional + +from ..helpers import ImportHelper +from ..streams import EndianBinaryReader, EndianBinaryWriter + +if TYPE_CHECKING: + from ..environment import Environment DirectoryInfo = namedtuple("DirectoryInfo", "path offset size") class File(object): name: str - files: dict - environment: "Environment" + files: Dict[str, File] + environment: Environment cab_file: str is_changed: bool signature: str packer: str is_dependency: bool - - # parent: File - # environment: Environment - - def __init__(self, parent=None, name: str = None, is_dependency: bool = False): + parent: Optional[File] + + def __init__( + self, + parent: Optional[File] = None, + name: Optional[str] = None, + is_dependency: bool = False, + ): self.files = {} self.is_changed = False self.cab_file = "CAB-UnityPy_Mod.resS" @@ -154,4 +162,4 @@ def mark_changed(self): # recursive import requires the import down here -from . import BundleFile, SerializedFile, WebFile, ObjectReader +from . import BundleFile, ObjectReader, SerializedFile, WebFile From b30da31177c24b9c807d04802b20878ecbc55bdc Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 21:28:04 +0200 Subject: [PATCH 289/599] add legacy_patch/Texture2DArray --- .../classes/legacy_patch/Texture2DArray.py | 46 +++++++++++++++++++ UnityPy/classes/legacy_patch/__init__.py | 3 +- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 UnityPy/classes/legacy_patch/Texture2DArray.py diff --git a/UnityPy/classes/legacy_patch/Texture2DArray.py b/UnityPy/classes/legacy_patch/Texture2DArray.py new file mode 100644 index 00000000..95e5c2fe --- /dev/null +++ b/UnityPy/classes/legacy_patch/Texture2DArray.py @@ -0,0 +1,46 @@ +from typing import TYPE_CHECKING, List + +from ...enums.GraphicsFormat import GRAPHICS_TO_TEXTURE_MAP, GraphicsFormat +from ..generated import Texture2DArray + +if TYPE_CHECKING: + from PIL import Image + + +def _Texture2DArray_get_images(self: Texture2DArray) -> List[Image.Image]: + from ...export import Texture2DConverter + from ...helpers.ResourceReader import get_resource_data + + texture_format = GRAPHICS_TO_TEXTURE_MAP.get(GraphicsFormat(self.m_Format)) + if not texture_format: + raise NotImplementedError(f"GraphicsFormat {self.m_Format} not supported yet") + + image_data = self.image_data + if image_data is None: + image_data = get_resource_data( + self.m_StreamData.path, + self.object_reader.assets_file, + self.m_StreamData.offset, + self.m_StreamData.size, + ) + + # calculate the number of textures in the array + texture_size = self.m_DataSize // self.m_Depth + + return [ + Texture2DConverter.parse_image_data( + image_data[offset : offset + texture_size], + self.m_Width, + self.m_Height, + texture_format, + self.object_reader.version, + 0, + None, + ) + for offset in range(0, self.m_DataSize, texture_size) + ] + + +Texture2DArray.images = property(_Texture2DArray_get_images) + +__all__ = ("Texture2DArray",) diff --git a/UnityPy/classes/legacy_patch/__init__.py b/UnityPy/classes/legacy_patch/__init__.py index 3c958cc5..489eb28b 100644 --- a/UnityPy/classes/legacy_patch/__init__.py +++ b/UnityPy/classes/legacy_patch/__init__.py @@ -2,5 +2,6 @@ from .Mesh import Mesh from .Renderer import Renderer from .Shader import Shader -from .Texture2D import Texture2D from .Sprite import Sprite +from .Texture2D import Texture2D +from .Texture2DArray import Texture2DArray From f5c99349d37e6ca4eff4f09ec0b7c4819d7b62b6 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 21:28:33 +0200 Subject: [PATCH 290/599] update readme --- README.md | 41 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 6be45037..b3e5fdf5 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,7 @@ All object types can be found in [UnityPy/classes](UnityPy/classes/). ### [Texture2D](UnityPy/classes/Texture2D.py) -- `.name` +- `.m_Name` - `.image` converts the texture into a `PIL.Image` - `.m_Width` - texture width (int) - `.m_Height` - texture height (int) @@ -212,9 +212,10 @@ for obj in env.objects: if obj.type.name == "Texture2D": # export texture data = obj.read() + path = os.path.join(export_dir, f"{data.m_Name}.png") data.image.save(path) # edit texture - fp = os.path.join(replace_dir, data.name) + fp = os.path.join(replace_dir, f"{data.m_Name}.png") pil_img = Image.open(fp) data.image = pil_img data.save() @@ -225,7 +226,7 @@ for obj in env.objects: Sprites are part of a texture and can have a separate alpha-image as well. Unlike most other extractors (including AssetStudio), UnityPy merges those two images by itself. -- `.name` +- `.m_Name` - `.image` - converts the merged texture part into a `PIL.Image` - `.m_Width` - sprite width (int) - `.m_Height` - sprite height (int) @@ -236,6 +237,7 @@ Unlike most other extractors (including AssetStudio), UnityPy merges those two i for obj in env.objects: if obj.type.name == "Sprite": data = obj.read() + path = os.path.join(export_dir, f"{data.m_Name}.png") data.image.save(path) ``` @@ -243,9 +245,8 @@ for obj in env.objects: TextAssets are usually normal text files. -- `.name` -- `.script` - binary data (bytes) -- `.text` - script decoded via UTF8 (str) +- `.m_Name` +- `.m_Script` - str Some games save binary data as TextFile, so it's usually better to use `.script`. @@ -256,12 +257,13 @@ for obj in env.objects: if obj.type.name == "TextAsset": # export asset data = obj.read() + path = os.path.join(export_dir, f"{data.m_Name}.txt") with open(path, "wb") as f: - f.write(bytes(data.script)) + f.write(data.m_Script.encode("utf-8", "surrogateescape")) # edit asset - fp = os.path.join(replace_dir, data.name) + fp = os.path.join(replace_dir, f"{data.m_Name}.txt") with open(fp, "rb") as f: - data.script = f.read() + data.m_Script = f.read().decode("utf-8", "surrogateescape")) data.save() ``` @@ -272,9 +274,8 @@ If a type tree exists, it can be used to read the whole data, but if it doesn't exist, then it is usually necessary to investigate the class that loads the specific MonoBehaviour to extract the data. ([example](examples/CustomMonoBehaviour/get_scriptable_texture.py)) -- `.name` -- `.script` -- `.raw_data` - data after the basic initialisation +- `.m_Name` +- `.m_Script` **Export** @@ -290,12 +291,6 @@ for obj in env.objects: fp = os.path.join(extract_dir, f"{tree['m_Name']}.json") with open(fp, "wt", encoding = "utf8") as f: json.dump(tree, f, ensure_ascii = False, indent = 4) - else: - # save raw relevant data (without Unity MonoBehaviour header) - data = obj.read() - fp = os.path.join(extract_dir, f"{data.name}.bin") - with open(fp, "wb") as f: - f.write(data.raw_data) # edit if obj.serialized_type.node: @@ -304,7 +299,7 @@ for obj in env.objects: obj.save_typetree(tree) else: data = obj.read() - with open(os.path.join(replace_dir, data.name)) as f: + with open(os.path.join(replace_dir, data.m_Name)) as f: data.save(raw_data = f.read()) ``` @@ -332,7 +327,7 @@ if obj.type.name == "Font": if font.m_FontData[0:4] == b"OTTO": extension = ".otf" - with open(os.path.join(path, font.name+extension), "wb") as f: + with open(os.path.join(path, font.m_Name+extension), "wb") as f: f.write(font.m_FontData) ``` @@ -344,7 +339,7 @@ The mesh will be converted to the Wavefront .obj file format. ```python mesh : Mesh -with open(f"{mesh.name}.obj", "wt", newline = "") as f: +with open(f"{mesh.m_Name}.obj", "wt", newline = "") as f: # newline = "" is important f.write(mesh.export()) ``` @@ -364,7 +359,7 @@ export_dir: str if mesh_renderer.m_GameObject: # get the name of the model game_object = mesh_renderer.m_GameObject.read() - export_dir = os.path.join(export_dir, game_object.name) + export_dir = os.path.join(export_dir, game_object.m_Name) mesh_renderer.export(export_dir) ``` @@ -372,7 +367,7 @@ mesh_renderer.export(export_dir) WARNING - not well tested -- `.name` +- `.m_Name` - `.image` converts the texture2darray into a `PIL.Image` - `.m_Width` - texture width (int) - `.m_Height` - texture height (int) From 1ed225310e9392989687eb749f955af60e2cc683 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 21:29:09 +0200 Subject: [PATCH 291/599] Texture2DArray - fix import --- UnityPy/classes/legacy_patch/Texture2DArray.py | 1 + 1 file changed, 1 insertion(+) diff --git a/UnityPy/classes/legacy_patch/Texture2DArray.py b/UnityPy/classes/legacy_patch/Texture2DArray.py index 95e5c2fe..e5591bca 100644 --- a/UnityPy/classes/legacy_patch/Texture2DArray.py +++ b/UnityPy/classes/legacy_patch/Texture2DArray.py @@ -1,3 +1,4 @@ +from __future__ import annotations from typing import TYPE_CHECKING, List from ...enums.GraphicsFormat import GRAPHICS_TO_TEXTURE_MAP, GraphicsFormat From f00076acdf6cdfbb4d5670ac00b6497a865db171 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 21:29:47 +0200 Subject: [PATCH 292/599] test.yml - run tests on lowest supported python version - 3.7 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f72bb70e..da20ef0d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,7 +25,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: "3.10" + python-version: "3.7" - name: Install Dependencies run: | From acfba600a5853f1dc103b0696522055760a927ae Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 21:34:45 +0200 Subject: [PATCH 293/599] 3.7 api fixes --- UnityPyBoost/TypeTreeHelper.cpp | 6 +++--- tests/test_main.py | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index ce497402..e0e43f92 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -462,7 +462,7 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) return NULL; } - config.as_dict = Py_IsTrue(as_dict) == 1; + config.as_dict = as_dict == Py_True; if (!config.as_dict) { if (PyCallable_Check(config.clean_name) == 0) @@ -470,12 +470,12 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) PyErr_SetString(PyExc_ValueError, "clean_name must be callable if not as dict"); return NULL; } - if (Py_IsNone(config.assetfile) == 1) + if (config.assetfile == Py_None) { PyErr_SetString(PyExc_ValueError, "assetsfile must be set if not as dict"); return NULL; } - if (Py_IsNone(config.classes) == 1) + if (config.classes == Py_None) { PyErr_SetString(PyExc_ValueError, "classes must be set if not as dict"); return NULL; diff --git a/tests/test_main.py b/tests/test_main.py index 5407f03b..acd41bbd 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -26,6 +26,7 @@ def test_save_dict(): for obj in env.objects: data = obj.get_raw_data() item = obj.read_typetree(wrap=False) + assert isinstance(item, dict) re_data = obj.save_typetree(item) assert data == re_data @@ -35,6 +36,7 @@ def test_save_wrap(): for obj in env.objects: data = obj.get_raw_data() item = obj.read_typetree(wrap=True) + assert not isinstance(item, dict) re_data = obj.save_typetree(item) assert data == re_data From fd1bd66c8408244494a61794a02ec21b29c8b93f Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 21:40:56 +0200 Subject: [PATCH 294/599] convert match/case to if/elif-chan for old versions --- UnityPy/helpers/MeshHelper.py | 104 +++++++++++++-------------- UnityPy/helpers/TypeTreeHelper.py | 114 ++++++++++++++---------------- 2 files changed, 104 insertions(+), 114 deletions(-) diff --git a/UnityPy/helpers/MeshHelper.py b/UnityPy/helpers/MeshHelper.py index d0edf788..ab5bd70a 100644 --- a/UnityPy/helpers/MeshHelper.py +++ b/UnityPy/helpers/MeshHelper.py @@ -401,61 +401,59 @@ def read_vertex_data( def assign_channel_vertex_data(self, channel: int, component_data: list): if self.version[0] >= 2018: - match channel: - case 0: # kShaderChannelVertex - self.m_Vertices = component_data - case 1: # kShaderChannelNormal - self.m_Normals = component_data - case 2: # kShaderChannelTangent - self.m_Tangents = component_data - case 3: # kShaderChannelColor - self.m_Colors = component_data - case 4: # kShaderChannelTexCoord0 - self.m_UV0 = component_data - case 5: # kShaderChannelTexCoord1 - self.m_UV1 = component_data - case 6: # kShaderChannelTexCoord2 - self.m_UV2 = component_data - case 7: # kShaderChannelTexCoord3 - self.m_UV3 = component_data - case 8: # kShaderChannelTexCoord4 - self.m_UV4 = component_data - case 9: # kShaderChannelTexCoord5 - self.m_UV5 = component_data - case 10: # kShaderChannelTexCoord6 - self.m_UV6 = component_data - case 11: # kShaderChannelTexCoord7 - self.m_UV7 = component_data - # 2018.2 and up - case 12: # kShaderChannelBlendWeight - self.m_BoneWeights = component_data - case 13: # kShaderChannelBlendIndices - self.m_BoneIndices = component_data - case _: - raise ValueError(f"Unknown channel {channel}") + if channel == 0: # kShaderChannelVertex + self.m_Vertices = component_data + elif channel == 1: # kShaderChannelNormal + self.m_Normals = component_data + elif channel == 2: # kShaderChannelTangent + self.m_Tangents = component_data + elif channel == 3: # kShaderChannelColor + self.m_Colors = component_data + elif channel == 4: # kShaderChannelTexCoord0 + self.m_UV0 = component_data + elif channel == 5: # kShaderChannelTexCoord1 + self.m_UV1 = component_data + elif channel == 6: # kShaderChannelTexCoord2 + self.m_UV2 = component_data + elif channel == 7: # kShaderChannelTexCoord3 + self.m_UV3 = component_data + elif channel == 8: # kShaderChannelTexCoord4 + self.m_UV4 = component_data + elif channel == 9: # kShaderChannelTexCoord5 + self.m_UV5 = component_data + elif channel == 10: # kShaderChannelTexCoord6 + self.m_UV6 = component_data + elif channel == 11: # kShaderChannelTexCoord7 + self.m_UV7 = component_data + # 2018.2 and up + elif channel == 12: # kShaderChannelBlendWeight + self.m_BoneWeights = component_data + elif channel == 13: # kShaderChannelBlendIndices + self.m_BoneIndices = component_data + else: + raise ValueError(f"Unknown channel {channel}") else: - match channel: - case 0: # kShaderChannelVertex - self.m_Vertices = component_data - case 1: # kShaderChannelNormal - self.m_Normals = component_data - case 2: # kShaderChannelColor - self.m_Colors = component_data - case 3: # kShaderChannelTexCoord0 - self.m_UV0 = component_data - case 4: # kShaderChannelTexCoord1 - self.m_UV1 = component_data - case 5: - if self.version[0] >= 5: # kShaderChannelTexCoord2 - self.m_UV2 = component_data - else: # kShaderChannelTangent - self.m_Tangents = component_data - case 6: # kShaderChannelTexCoord3 - self.m_UV3 = component_data - case 7: # kShaderChannelTangent + if channel == 0: # kShaderChannelVertex + self.m_Vertices = component_data + elif channel == 1: # kShaderChannelNormal + self.m_Normals = component_data + elif channel == 2: # kShaderChannelColor + self.m_Colors = component_data + elif channel == 3: # kShaderChannelTexCoord0 + self.m_UV0 = component_data + elif channel == 4: # kShaderChannelTexCoord1 + self.m_UV1 = component_data + elif channel == 5: + if self.version[0] >= 5: # kShaderChannelTexCoord2 + self.m_UV2 = component_data + else: # kShaderChannelTangent self.m_Tangents = component_data - case _: - raise ValueError(f"Unknown channel {channel}") + elif channel == 6: # kShaderChannelTexCoord3 + self.m_UV3 = component_data + elif channel == 7: # kShaderChannelTangent + self.m_Tangents = component_data + else: + raise ValueError(f"Unknown channel {channel}") def get_channel_dtype(self, m_Channel: ChannelInfo): if self.version[0] < 2017: diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 0e8879e0..be03a8ee 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -22,7 +22,7 @@ kAlignBytes = 0x4000 -FUNCTION_MAP = { +FUNCTION_READ_MAP = { "SInt8": EndianBinaryReader.read_byte, "UInt8": EndianBinaryReader.read_u_byte, "char": EndianBinaryReader.read_u_byte, @@ -46,7 +46,7 @@ "string": EndianBinaryReader.read_aligned_string, "TypelessData": EndianBinaryReader.read_byte_array, } -FUNCTION_MAP_ARRAY = { +FUNCTION_READ_MAP_ARRAY = { "SInt8": EndianBinaryReader.read_byte_array, "UInt8": EndianBinaryReader.read_u_byte_array, "char": EndianBinaryReader.read_u_byte_array, @@ -137,16 +137,13 @@ def read_value( # print(reader.Position, node.m_Name, node.m_Type, node.m_MetaFlag) align = metaflag_is_aligned(node.m_MetaFlag) - func = FUNCTION_MAP.get(node.m_Type) + func = FUNCTION_READ_MAP.get(node.m_Type) if func: value = func(reader) elif node.m_Type == "pair": first = read_value(node.m_Children[0], reader, as_dict, assetsfile) second = read_value(node.m_Children[1], reader, as_dict, assetsfile) value = (first, second) - elif not node.m_Children: - value = None - # raise NotImplementedError(f"Reference type {node.m_Type} not implemented") # Vector elif node.m_Children and node.m_Children[0].m_Type == "Array": if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): @@ -208,7 +205,7 @@ def read_value_array( ) -> Any: align = metaflag_is_aligned(node.m_MetaFlag) - func = FUNCTION_MAP_ARRAY.get(node.m_Type) + func = FUNCTION_READ_MAP_ARRAY.get(node.m_Type) if func: value = func(reader, size) elif node.m_Type == "string": @@ -219,18 +216,15 @@ def read_value_array( key_node = node.m_Children[0] value_node = node.m_Children[1] - key_func = FUNCTION_MAP.get( + key_func = FUNCTION_READ_MAP.get( key_node.m_Type, lambda reader: read_value(key_node, reader, as_dict, assetsfile), ) - value_func = FUNCTION_MAP.get( + value_func = FUNCTION_READ_MAP.get( value_node.m_Type, lambda reader: read_value(value_node, reader, as_dict, assetsfile), ) value = [(key_func(reader), value_func(reader)) for _ in range(size)] - elif not node.m_Children: - value = None - # raise NotImplementedError(f"Reference type {node.m_Type} not implemented") # Vector elif node.m_Children and node.m_Children[0].m_Type == "Array": if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): @@ -332,6 +326,32 @@ def clean_name(name: str) -> str: return name +FUNCTION_WRITE_MAP = { + "SInt8": EndianBinaryWriter.write_byte, + "UInt8": EndianBinaryWriter.write_u_byte, + "char": EndianBinaryWriter.write_u_byte, + "short": EndianBinaryWriter.write_short, + "SInt16": EndianBinaryWriter.write_short, + "unsigned short": EndianBinaryWriter.write_u_short, + "UInt16": EndianBinaryWriter.write_u_short, + "int": EndianBinaryWriter.write_int, + "SInt32": EndianBinaryWriter.write_int, + "unsigned int": EndianBinaryWriter.write_u_int, + "UInt32": EndianBinaryWriter.write_u_int, + "Type*": EndianBinaryWriter.write_u_int, + "long long": EndianBinaryWriter.write_long, + "SInt64": EndianBinaryWriter.write_long, + "unsigned long long": EndianBinaryWriter.write_u_long, + "UInt64": EndianBinaryWriter.write_u_long, + "FileSize": EndianBinaryWriter.write_u_long, + "float": EndianBinaryWriter.write_float, + "double": EndianBinaryWriter.write_double, + "bool": EndianBinaryWriter.write_boolean, + "string": EndianBinaryWriter.write_aligned_string, + "TypelessData": EndianBinaryWriter.write_byte_array, +} + + def write_value( value: Any, node: TypeTreeNode, @@ -340,55 +360,27 @@ def write_value( # print(reader.Position, node.m_Name, node.m_Type, node.m_MetaFlag) align = metaflag_is_aligned(node.m_MetaFlag) - match node.m_Type: - case "SInt8": - writer.write_byte(value) - case "UInt8" | "char": - writer.write_u_byte(value) - case "short" | "SInt16": - writer.write_short(value) - case "UInt16" | "unsigned short": - writer.write_u_short(value) - case "int" | "SInt32": - writer.write_int(value) - case "UInt32" | "unsigned int" | "Type*": - writer.write_u_int(value) - case "long long" | "SInt64": - writer.write_long(value) - case "UInt64" | "unsigned long long" | "FileSize": - writer.write_u_long(value) - case "float": - writer.write_float(value) - case "double": - writer.write_double(value) - case "bool": - writer.write_boolean(value) - case "string": - writer.write_aligned_string(value) - case "TypelessData": - writer.write_byte_array(value) - case "pair": - write_value(value[0], node.m_Children[0], writer) - write_value(value[1], node.m_Children[1], writer) - case _: - # Vector - if node.m_Children and node.m_Children[0].m_Type == "Array": - if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): - align = True - - writer.write_int(len(value)) - subtype = node.m_Children[0].m_Children[1] - [write_value(sub_value, subtype, writer) for sub_value in value] - - else: # Class - if isinstance(value, dict): - for child in node.m_Children: - write_value(value[child.m_Name], child, writer) - else: - for child in node.m_Children: - write_value( - getattr(value, clean_name(child.m_Name)), child, writer - ) + func = FUNCTION_WRITE_MAP.get(node.m_Type) + if func: + value = func(writer, value) + elif node.m_Type == "pair": + write_value(value[0], node.m_Children[0], writer) + write_value(value[1], node.m_Children[1], writer) + elif node.m_Children and node.m_Children[0].m_Type == "Array": + if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): + align = True + + writer.write_int(len(value)) + subtype = node.m_Children[0].m_Children[1] + [write_value(sub_value, subtype, writer) for sub_value in value] + + else: # Class + if isinstance(value, dict): + for child in node.m_Children: + write_value(value[child.m_Name], child, writer) + else: + for child in node.m_Children: + write_value(getattr(value, clean_name(child.m_Name)), child, writer) if align: writer.align_stream() From ef3c4244f157ae2f8ce8cbefe8d2c9b264c95517 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 21:44:15 +0200 Subject: [PATCH 295/599] math.py - remove TypeAlias for old python versions --- UnityPy/classes/math.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/UnityPy/classes/math.py b/UnityPy/classes/math.py index fe3b47e5..8ba1d71a 100644 --- a/UnityPy/classes/math.py +++ b/UnityPy/classes/math.py @@ -5,7 +5,6 @@ """ from attrs import define -from typing import TypeAlias @define(slots=True) @@ -38,8 +37,8 @@ def __repr__(self) -> str: return f"Vector4f({self.x}, {self.y}, {self.z}, {self.w})" -float3: TypeAlias = Vector3f -float4: TypeAlias = Vector4f +float3 = Vector3f +float4 = Vector4f class Quaternionf(Vector4f): @@ -115,3 +114,16 @@ def rgba(self, value: int): self.g = ((value >> 16) & 0xFF) / 255 self.b = ((value >> 8) & 0xFF) / 255 self.a = (value & 0xFF) / 255 + + +__all__ = ( + "Vector2f", + "Vector3f", + "Vector4f", + "Quaternionf", + "Matrix3x4f", + "Matrix4x4f", + "ColorRGBA", + "float3", + "float4", +) From cfc2f6a0ba3ad8c90798bb4d419f1584435c4398 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 21:45:59 +0200 Subject: [PATCH 296/599] MeshExporter - remove Literal - old python patch --- UnityPy/export/MeshExporter.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/UnityPy/export/MeshExporter.py b/UnityPy/export/MeshExporter.py index 33503c5a..2aba0f7d 100644 --- a/UnityPy/export/MeshExporter.py +++ b/UnityPy/export/MeshExporter.py @@ -1,16 +1,14 @@ from __future__ import annotations -from typing import TYPE_CHECKING, List, Literal, Optional +from typing import TYPE_CHECKING, List, Optional from ..helpers.MeshHelper import MeshHandler if TYPE_CHECKING: from ..classes.generated import Mesh -MESH_EXPORT_FORMATS = Literal["obj"] - -def export_mesh(m_Mesh: Mesh, format: MESH_EXPORT_FORMATS = "obj") -> str: +def export_mesh(m_Mesh: Mesh, format: str = "obj") -> str: if format == "obj": return export_mesh_obj(m_Mesh) raise NotImplementedError(f"Export format {format} not implemented") From d160f38199708d54698673e890f15ffa0ae891eb Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sat, 21 Sep 2024 22:02:36 +0200 Subject: [PATCH 297/599] AudioClipConverter - pre 3.12 patch --- UnityPy/export/AudioClipConverter.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/UnityPy/export/AudioClipConverter.py b/UnityPy/export/AudioClipConverter.py index 0c5fc447..e7a16ad5 100644 --- a/UnityPy/export/AudioClipConverter.py +++ b/UnityPy/export/AudioClipConverter.py @@ -70,12 +70,15 @@ def import_pyfmodex(): # hotfix ctypes for pyfmodex for non windows systems ctypes.windll = None + # behavior changed in python 3.12 fp = path(f"UnityPy.lib.FMOD.{system}.{arch}", libname) if hasattr(fp, "args"): # some newer version doesn't directly return a path, but instead a generator fp = fp.args[0] + if not isinstance(fp, str): + fp = fp.absolute() - os.environ["PYFMODEX_DLL_PATH"] = str(fp.absolute()) + os.environ["PYFMODEX_DLL_PATH"] = str(fp) import pyfmodex From d5f36eb11b2545bf21821d4e20da59c085f7a841 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 22 Sep 2024 20:32:00 +0200 Subject: [PATCH 298/599] ObjectReader - type hint improvement --- UnityPy/files/ObjectReader.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index aae32b35..b909a5fa 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Generic, List, Optional, TypeVar, Union +from typing import TYPE_CHECKING, Generic, List, Optional, Tuple, TypeVar, Union from ..enums import ClassIDType from ..exceptions import TypeTreeError @@ -10,20 +10,31 @@ from ..streams import EndianBinaryReader, EndianBinaryWriter if TYPE_CHECKING: - from ..files import SerializedFile + from ..enums import BuildTarget + from ..files.SerializedFile import BuildType, SerializedFile, SerializedType T = TypeVar("T") class ObjectReader(Generic[T]): + assets_file: SerializedFile + reader: EndianBinaryReader + data: bytes + version: Tuple[int, int, int, int] + version2: int + platform: BuildTarget + build_type: BuildType + path_id: int + byte_start_offset: Tuple[int, int] byte_start: int + byte_size_offset: Tuple[int, int] byte_size: int type_id: int + serialized_type: Optional[SerializedType] class_id: int type: ClassIDType - path_id: int - assets_file: SerializedFile - _read_until: int + is_destroyed: Optional[int] + is_stripped: Optional[int] # saves where the parser stopped # in case that not all data is read From d5120ae8444636adcc082a9c7f10b7f638ef451f Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 22 Sep 2024 20:32:24 +0200 Subject: [PATCH 299/599] SerializedFile - typehint improvement, backwards compatiblity SerializedType.nodes --- UnityPy/files/SerializedFile.py | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 7b3594ed..3d88e35c 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -2,7 +2,7 @@ import re from ntpath import basename -from typing import TYPE_CHECKING, Dict, Generator, List, Optional, Tuple +from typing import TYPE_CHECKING, Dict, Generator, List, Optional, Tuple, Union from attrs import define @@ -13,7 +13,7 @@ from . import BundleFile, File, ObjectReader if TYPE_CHECKING: - from ..classes import AssetBundle, AssetInfo + from ..classes import AssetBundle, AssetInfo, Object from ..files import ObjectReader from ..streams.EndianBinaryReader import EndianBinaryReader @@ -198,22 +198,30 @@ def write( else: writer.write_int_array(self.type_dependencies, True) + @property + def nodes(self) -> Union[TypeTreeNode, None]: + # for compatibility with old versions + return self.node + class SerializedFile(File.File): reader: EndianBinaryReader - is_changed: bool unity_version: str - version: tuple build_type: BuildType target_platform: BuildTarget - types: list - script_types: list - externals: list - objects: dict - _cache: dict + _enable_type_tree: bool + types: List[SerializedType] + script_types: List[LocalSerializedObjectIdentifier] + externals: List[FileIdentifier] + objects: Dict[int, ObjectReader] + unknown: int + header: SerializedFileHeader + _m_target_platform: int + big_id_enabled: int + userInformation: Optional[str] assetbundle: AssetBundle container: ContainerHelper - header: SerializedFileHeader + _cache: Dict[str, Object] @property def files(self): From ab6b7d518c92bba38e38a2b8f021e4dcca4ae594 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 22 Sep 2024 20:40:19 +0200 Subject: [PATCH 300/599] add changelog --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..e55066ae --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,16 @@ +# Change Log + +## 1.20 + +- overall type-hint improvements +- **UnityPy.classes** +  - replace hard-coded UnityPy.classes with generated class stubs +    - UnityPy.classes.legacy_patch to provide backward compatibility +    - classes are all parsed and dumped/stored using typetrees now +- **TypeTree** +  - use a hierarchical instead of a flat structure +    - list to Node.m_Children +  - rewrite the typetree read and write functions to reflect this +  - **remove map typetree type type due to its multi-dict nature** +- **Exporter** +  - extended Sprite-mesh support (solves some dicings automatically) From b9b36c0cbb413a912effe51fbfb09a509e166d65 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 22 Sep 2024 20:40:44 +0200 Subject: [PATCH 301/599] 1.20 version bump --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index d54dac2c..ad6f0455 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.10.18" +__version__ = "1.20.0" from .environment import Environment as Environment from .helpers.ArchiveStorageManager import ( From 8ac495f5d7251ffd1650d4473f897f0b8337ad6e Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 22 Sep 2024 21:00:23 +0200 Subject: [PATCH 302/599] AudioClipConverter.py - importlib path fix --- UnityPy/export/AudioClipConverter.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/UnityPy/export/AudioClipConverter.py b/UnityPy/export/AudioClipConverter.py index e7a16ad5..12fc3a7b 100644 --- a/UnityPy/export/AudioClipConverter.py +++ b/UnityPy/export/AudioClipConverter.py @@ -3,6 +3,7 @@ import ctypes import os import platform +import sys from importlib.resources import path from typing import TYPE_CHECKING, Dict @@ -70,15 +71,15 @@ def import_pyfmodex(): # hotfix ctypes for pyfmodex for non windows systems ctypes.windll = None - # behavior changed in python 3.12 - fp = path(f"UnityPy.lib.FMOD.{system}.{arch}", libname) - if hasattr(fp, "args"): - # some newer version doesn't directly return a path, but instead a generator - fp = fp.args[0] - if not isinstance(fp, str): - fp = fp.absolute() - - os.environ["PYFMODEX_DLL_PATH"] = str(fp) + lib_path = os.path.join( + os.path.dirname(os.path.dirname(os.path.realpath(__file__))), + "lib", + "FMOD", + system, + arch, + libname + ) + os.environ["PYFMODEX_DLL_PATH"] = lib_path import pyfmodex From 916fea207ab39c1960231917869592af2aeef686 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 23 Sep 2024 11:11:32 +0200 Subject: [PATCH 303/599] PPtr - re-add .type property --- UnityPy/classes/PPtr.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/UnityPy/classes/PPtr.py b/UnityPy/classes/PPtr.py index e5a2573f..c07baac2 100644 --- a/UnityPy/classes/PPtr.py +++ b/UnityPy/classes/PPtr.py @@ -6,6 +6,7 @@ if TYPE_CHECKING: from ..files.ObjectReader import ObjectReader from ..files.SerializedFile import SerializedFile + from ..enums.ClassIDType import ClassIDType T = TypeVar("T") @@ -15,7 +16,6 @@ class PPtr(Generic[T]): m_FileID: int m_PathID: int assetsfile: Optional[SerializedFile] = None - type: Optional[str] = None @property def file_id(self) -> int: @@ -27,6 +27,10 @@ def path_id(self) -> int: # backwards compatibility return self.m_PathID + @property + def type(self) -> ClassIDType: + return self.deref().type + def read(self): # backwards compatibility return self.deref_parse_as_object() From b4bc2ce500d702db16fd5c34309adde0fa651762 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 23 Sep 2024 11:11:59 +0200 Subject: [PATCH 304/599] 1.20.1 version bump --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index ad6f0455..e63e3745 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.20.0" +__version__ = "1.20.1" from .environment import Environment as Environment from .helpers.ArchiveStorageManager import ( From f448fde420e3a206d4061a5aeff3648c411984a1 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 25 Sep 2024 15:08:01 +0200 Subject: [PATCH 305/599] TypeTreeHelper.py - PPtr fix - remove type kwarg (#270) * Update TypeTreeHelper.py --- UnityPy/__init__.py | 2 +- UnityPy/helpers/TypeTreeHelper.py | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index e63e3745..bd88b8a9 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.20.1" +__version__ = "1.20.2" from .environment import Environment as Environment from .helpers.ArchiveStorageManager import ( diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index be03a8ee..07a63321 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -171,7 +171,6 @@ def read_value( assetsfile=assetsfile, m_FileID=value["m_FileID"], m_PathID=value["m_PathID"], - type=node.m_Type[6:-1], ) else: clz = getattr(classes, node.m_Type, Object) @@ -259,7 +258,6 @@ def read_value_array( value = [ PPtr[Any]( assetsfile=assetsfile, - type=node.m_Type[6:-1], **{ child.m_Name: read_value(child, reader, as_dict, assetsfile) for child in node.m_Children From 4859a477b523b4fa21bca92401e16b57db164d0d Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Wed, 25 Sep 2024 15:10:41 +0200 Subject: [PATCH 306/599] README - update TextAsset description --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b3e5fdf5..a2c358cd 100644 --- a/README.md +++ b/README.md @@ -248,7 +248,7 @@ TextAssets are usually normal text files. - `.m_Name` - `.m_Script` - str -Some games save binary data as TextFile, so it's usually better to use `.script`. +Some games save binary data as TextFile, so to convert the ``str`` back to bytes correctly ``m_Script.encode("utf-8", "surrogateescape")`` has to be used. **Export** From 5b7e94bc4fe3df3fe6f8456807b46ce0620eb27b Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 Sep 2024 15:47:15 +0200 Subject: [PATCH 307/599] PPtr - eq, hash, fix external resolving --- UnityPy/classes/PPtr.py | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/UnityPy/classes/PPtr.py b/UnityPy/classes/PPtr.py index c07baac2..8b1294be 100644 --- a/UnityPy/classes/PPtr.py +++ b/UnityPy/classes/PPtr.py @@ -1,12 +1,13 @@ from __future__ import annotations -from typing import TypeVar, Generic, TYPE_CHECKING, Optional, Any, cast + +from typing import TYPE_CHECKING, Any, Generic, Optional, TypeVar, cast from attr import define if TYPE_CHECKING: + from ..enums.ClassIDType import ClassIDType from ..files.ObjectReader import ObjectReader from ..files.SerializedFile import SerializedFile - from ..enums.ClassIDType import ClassIDType T = TypeVar("T") @@ -48,9 +49,9 @@ def deref(self, assetsfile: Optional[SerializedFile] = None) -> ObjectReader[T]: else: # resolve file id to external name external_id = self.m_FileID - 1 - if external_id >= len(assetsfile.m_Externals): + if external_id >= len(assetsfile.externals): raise FileNotFoundError("Failed to resolve pointer - invalid m_FileID!") - external = assetsfile.m_Externals[external_id] + external = assetsfile.externals[external_id] # resolve external name to assetsfile container = assetsfile.parent @@ -60,14 +61,26 @@ def deref(self, assetsfile: Optional[SerializedFile] = None) -> ObjectReader[T]: f"PPtr points to {external.path} but no container is set!" ) - for child in container.childs: - if isinstance(child, SerializedFile) and child.name == external.path: - assetsfile = child + external_clean_path = external.path + if external_clean_path.startswith("archive:/"): + external_clean_path = external_clean_path[9:] + if external_clean_path.startswith("assets/"): + external_clean_path = external_clean_path[7:] + external_clean_path = external_clean_path.rsplit("/")[-1].lower() + + for key, file in container.files.items(): + if key.lower() == external_clean_path: + assetsfile = file break else: - raise FileNotFoundError( - f"Failed to resolve pointer - {external.path} not found!" - ) + env = assetsfile.environment + cab = env.find_file(external_clean_path) + if cab: + assetsfile = cab + else: + raise FileNotFoundError( + f"Failed to resolve pointer - {external.path} not found!" + ) return cast("ObjectReader[T]", assetsfile.objects[self.m_PathID]) @@ -83,3 +96,11 @@ def deref_parse_as_dict( def __bool__(self): return self.m_PathID != 0 + + def __hash__(self) -> int: + return hash((self.m_FileID, self.m_PathID)) + + def __eq__(self, other: object) -> bool: + if not isinstance(other, PPtr): + return False + return self.m_FileID == other.m_FileID and self.m_PathID == other.m_PathID From e544bf3f67a1c6e72e0c12eb64b1eed4d3a52d21 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 Sep 2024 15:47:42 +0200 Subject: [PATCH 308/599] GameObject - legacy patch for m_Components, and property fields --- UnityPy/classes/legacy_patch/GameObject.py | 43 ++++++++++++++++++++++ UnityPy/classes/legacy_patch/__init__.py | 15 ++++---- 2 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 UnityPy/classes/legacy_patch/GameObject.py diff --git a/UnityPy/classes/legacy_patch/GameObject.py b/UnityPy/classes/legacy_patch/GameObject.py new file mode 100644 index 00000000..5392b1d2 --- /dev/null +++ b/UnityPy/classes/legacy_patch/GameObject.py @@ -0,0 +1,43 @@ +from __future__ import annotations + +from typing import List, Union + +from ...enums import ClassIDType +from ..generated import Component, GameObject, PPtr + + +def _GameObject_Components(self) -> List[PPtr[Component]]: + if self.m_Component is None: + return [] + if isinstance(self.m_Component[0], tuple): + return [c.m_GameObject for i, c in self.m_Component] + else: + return [c.component for c in self.m_Component] + + +def _GameObject_GetComponent(self, type: ClassIDType) -> Union[PPtr[Component], None]: + for component in self.m_Components: + if component.type == type: + return component + return None + + +GameObject.m_Components = property(_GameObject_Components) +GameObject.m_Animator = property( + lambda self: _GameObject_GetComponent(self, ClassIDType.Animator) +) +GameObject.m_Animation = property( + lambda self: _GameObject_GetComponent(self, ClassIDType.Animation) +) +GameObject.m_Transform = property( + lambda self: _GameObject_GetComponent(self, ClassIDType.Transform) +) +GameObject.m_MeshRenderer = property( + lambda self: _GameObject_GetComponent(self, ClassIDType.MeshRenderer) +) +GameObject.m_SkinnedMeshRenderer = property( + lambda self: _GameObject_GetComponent(self, ClassIDType.SkinnedMeshRenderer) +) +GameObject.m_MeshFilter = property( + lambda self: _GameObject_GetComponent(self, ClassIDType.MeshFilter) +) diff --git a/UnityPy/classes/legacy_patch/__init__.py b/UnityPy/classes/legacy_patch/__init__.py index 489eb28b..e761a061 100644 --- a/UnityPy/classes/legacy_patch/__init__.py +++ b/UnityPy/classes/legacy_patch/__init__.py @@ -1,7 +1,8 @@ -from .AudioClip import AudioClip -from .Mesh import Mesh -from .Renderer import Renderer -from .Shader import Shader -from .Sprite import Sprite -from .Texture2D import Texture2D -from .Texture2DArray import Texture2DArray +from .AudioClip import AudioClip as AudioClip +from .GameObject import GameObject as GameObject +from .Mesh import Mesh as Mesh +from .Renderer import Renderer as Renderer +from .Shader import Shader as Shader +from .Sprite import Sprite as Sprite +from .Texture2D import Texture2D as Texture2D +from .Texture2DArray import Texture2DArray as Texture2DArray From ee8643e5bac90306a5ab933b899f2d371dddf507 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 Sep 2024 15:48:14 +0200 Subject: [PATCH 309/599] SerializedFile - ContainerHelper typing fix and if no assetbundle --- UnityPy/files/SerializedFile.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index 3d88e35c..f22e5124 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -13,7 +13,7 @@ from . import BundleFile, File, ObjectReader if TYPE_CHECKING: - from ..classes import AssetBundle, AssetInfo, Object + from ..classes import AssetBundle, AssetInfo, Object, PPtr from ..files import ObjectReader from ..streams.EndianBinaryReader import EndianBinaryReader @@ -331,7 +331,7 @@ def __init__(self, reader: EndianBinaryReader, parent=None, name=None, **kwargs) break else: self.assetbundle = None - self._container = ContainerHelper({}) + self._container = ContainerHelper() @property def container(self): @@ -517,26 +517,29 @@ class ContainerHelper: """Helper class to allow multidict containers without breaking compatibility with old versions""" - container: Tuple[str, AssetInfo] - container_dict: Dict[str, ObjectReader] + container: List[Tuple[str, AssetInfo]] + container_dict: Dict[str, PPtr[Object]] path_dict: Dict[int, str] - def __init__(self, assetbundle: AssetBundle) -> None: - self.container = assetbundle.m_Container + def __init__(self, assetbundle: Optional[AssetBundle] = None) -> None: + if assetbundle is None: + self.container = [] + else: + self.container = assetbundle.m_Container # support for getitem self.container_dict = {key: value.asset for key, value in self.container} self.path_dict = {value.asset.m_PathID: key for key, value in self.container} - def items(self) -> Generator[Tuple[str, ObjectReader], None, None]: + def items(self) -> Generator[Tuple[str, PPtr[Object]], None, None]: return ((key, value.asset) for key, value in self.container) def keys(self) -> list[str]: return list({key for key, value in self.container}) - def values(self) -> list[ObjectReader]: + def values(self) -> list[PPtr[Object]]: return list({value.asset for key, value in self.container}) - def __getitem__(self, key) -> ObjectReader: + def __getitem__(self, key) -> PPtr[Object]: return self.container_dict[key] def __setitem__(self, key, value) -> None: @@ -551,7 +554,7 @@ def __iter__(self) -> Generator[str, None, None]: def __len__(self) -> int: return len(self.container) - def __getattr__(self, name: str) -> ObjectReader: + def __getattr__(self, name: str) -> PPtr[Object]: return self.container_dict[name] def __or__(self, other: ContainerHelper): @@ -560,5 +563,5 @@ def __or__(self, other: ContainerHelper): def __str__(self) -> str: return f'{{{", ".join(f"{key}: {value}" for key, value in self.items())}}}' - def __dict__(self) -> Dict[str, ObjectReader]: + def __dict__(self) -> Dict[str, PPtr[Object]]: return self.container_dict From 0690aab0604db62fde257f8091e3ce96c406c325 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 Sep 2024 15:49:06 +0200 Subject: [PATCH 310/599] setup.py - configure c++ version dynamically based on compiler version --- setup.py | 41 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index 247ecef9..fa37320d 100644 --- a/setup.py +++ b/setup.py @@ -1,12 +1,47 @@ import os import platform -from setuptools import setup, Extension, find_packages +import re +import subprocess +from setuptools import Extension, find_packages, setup +from setuptools.command.build_ext import build_ext INSTALL_DIR = os.path.dirname(os.path.realpath(__file__)) UNITYPYBOOST_DIR = os.path.join(INSTALL_DIR, "UnityPyBoost") +class BuildExt(build_ext): + def build_extensions(self): + cpp_version_flag: str + compiler = self.compiler + # msvc - only ever used c++20, never c++2a + if compiler.compiler_type == "msvc": + cpp_version_flag = "/std:c++20" + # gnu & clang + elif compiler.compiler_type == "unix": + res = subprocess.run( + [compiler.compiler[0], "-v"], + capture_output=True, + ) + # for some reason g++ and clang++ return this as error + text = (res.stdout or res.stderr).decode("utf-8") + version = re.search(r"version\s+(\d+)\.", text) + if version is None: + raise Exception("Failed to determine compiler version") + version = int(version.group(1)) + if version < 10: + cpp_version_flag = "-std=c++2a" + else: + cpp_version_flag = "-std=c++20" + else: + cpp_version_flag = "-std=c++20" + + for ext in self.extensions: + ext.extra_compile_args = [cpp_version_flag] + + build_ext.build_extensions(self) + + def get_fmod_library(): # determine system - Windows, Darwin, Linux, Android system = platform.system() @@ -68,10 +103,8 @@ def get_fmod_library(): if f.endswith(".cpp") ], language="c++", - extra_compile_args=[ - "/std:c++20" if platform.system() == "Windows" else "-std=c++20" - ], include_dirs=[UNITYPYBOOST_DIR], ) ], + cmdclass={"build_ext": BuildExt}, ) From e3a5934f15a1726f1fb8ad5267fb7bf903b8100b Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 Sep 2024 16:13:53 +0200 Subject: [PATCH 311/599] README - update Crash without warning/error --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a2c358cd..74c13144 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ In case this happens, the usage of the C-typetree reader can be disabled by addi ```python from UnityPy.helpers import TypeTreeHelper -TypeTreeHelper.read_typetree_c = False +TypeTreeHelper.read_typetree_boost = False ``` ## Example From e4e1229cd845fabae4a2feeb9b0502a5bfedb004 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 Sep 2024 16:15:00 +0200 Subject: [PATCH 312/599] TypeTreeHelper.cpp - use macro functions for better speed, add missing incref and decref --- UnityPyBoost/TypeTreeHelper.cpp | 119 +++++++++++++++++--------------- 1 file changed, 62 insertions(+), 57 deletions(-) diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index e0e43f92..4d420a65 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -180,12 +180,12 @@ inline PyObject *read_pair(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeRe return NULL; } - PyObject *first = read_typetree_value(reader, (TypeTreeNodeObject *)PyList_GetItem(node->m_Children, 0), config); + PyObject *first = read_typetree_value(reader, (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, 0), config); if (!first) { return NULL; } - PyObject *second = read_typetree_value(reader, (TypeTreeNodeObject *)PyList_GetItem(node->m_Children, 1), config); + PyObject *second = read_typetree_value(reader, (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, 1), config); if (!second) { Py_DECREF(first); @@ -198,10 +198,9 @@ inline PyObject *read_pair(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeRe } template -inline PyObject *read_class(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config) +inline PyObject *parse_class(ReaderT *reader, PyObject *dict, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config) { PyObject *clz = NULL; - PyObject *dict = PyDict_New(); // Determine the class based on node's _data_type if (node->_data_type == NodeDataType::pptr) @@ -223,47 +222,38 @@ inline PyObject *read_class(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeR } } + // check if class is found if (clz == NULL) { PyErr_SetString(PyExc_ValueError, "Failed to get class"); + Py_DECREF(clz); Py_DECREF(dict); return NULL; } - for (int i = 0; i < PyList_GET_SIZE(node->m_Children); i++) - { - TypeTreeNodeObject *child = (TypeTreeNodeObject *)PyList_GetItem(node->m_Children, i); - PyObject *child_value = read_typetree_value(reader, child, config); - if (!child_value) - { - Py_DECREF(dict); - return NULL; - } - if (PyDict_SetItem(dict, child->m_Name, child_value)) - { - Py_DECREF(dict); - Py_DECREF(child_value); - return NULL; - } - // dict increases ref count, so we need to decref here - Py_DECREF(child_value); - } - + // try to create class instance PyObject *args = PyTuple_New(0); PyObject *instance = PyObject_Call(clz, args, dict); if (instance != NULL) { + // success + // cleanup + Py_DECREF(clz); Py_DECREF(args); Py_DECREF(dict); + // return instance return instance; } + // failed, clear error PyErr_Clear(); + // clean key names + PyObject *key = NULL; PyObject *keys = PyDict_Keys(dict); PyObject *clean_args = PyTuple_New(1); - for (Py_ssize_t i = 0; i < PyList_Size(keys); i++) + for (Py_ssize_t i = 0; i < PyList_GET_SIZE(keys); i++) { - PyObject *key = PyList_GetItem(keys, i); + key = PyList_GET_ITEM(keys, i); PyTuple_SET_ITEM(clean_args, 0, key); PyObject *clean_key = PyObject_Call(config->clean_name, clean_args, NULL); if (PyUnicode_Compare(key, clean_key)) @@ -274,25 +264,33 @@ inline PyObject *read_class(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeR } Py_DECREF(clean_key); } - PyTuple_SET_ITEM(clean_args, 0, Py_None); + // increase ref count for key, as PyTuple_SET_ITEM steals reference, so decref there will decref key + Py_INCREF(key); Py_DECREF(clean_args); Py_DECREF(keys); + // try to create class instance again with cleaned keys instance = PyObject_Call(clz, args, dict); if (instance != NULL) { + // success + // cleanup + Py_DECREF(clz); Py_DECREF(args); Py_DECREF(dict); + // return instance return instance; } + // failed, clear error PyErr_Clear(); + // some keys might be extra, check against __annotations__ PyObject *annonations = PyObject_GetAttrString(clz, "__annotations__"); PyObject *extras = PyDict_New(); keys = PyDict_Keys(dict); for (Py_ssize_t i = 0; i < PyList_Size(keys); i++) { - PyObject *key = PyList_GetItem(keys, i); + PyObject *key = PyList_GET_ITEM(keys, i); if (PyDict_Contains(annonations, key) == 0) { PyObject *value = PyDict_GetItem(dict, key); @@ -301,21 +299,29 @@ inline PyObject *read_class(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeR } } Py_DECREF(keys); + Py_DECREF(annonations); + // try to create class instance again with cleaned keys instance = PyObject_Call(clz, args, dict); if (instance != NULL) { + // success, manually set extra keys PyObject *items = PyDict_Items(extras); for (Py_ssize_t i = 0; i < PyList_Size(items); i++) { - PyObject *item = PyList_GetItem(items, i); + PyObject *item = PyList_GET_ITEM(items, i); PyObject *key = PyTuple_GetItem(item, 0); PyObject *value = PyTuple_GetItem(item, 1); PyObject_SetAttr(instance, key, value); } Py_DECREF(items); } - + // cleanup + Py_DECREF(clz); + Py_DECREF(args); + Py_DECREF(dict); + Py_DECREF(extras); + // return instance or NULL if failed return instance; } @@ -373,7 +379,7 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre TypeTreeNodeObject *child = nullptr; if (PyList_GET_SIZE(node->m_Children) > 0) { - child = (TypeTreeNodeObject *)PyList_GetItem(node->m_Children, 0); + child = (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, 0); } if (child && child->_data_type == NodeDataType::array) @@ -389,7 +395,7 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre return NULL; } value = PyList_New(length); - child = (TypeTreeNodeObject *)PyList_GetItem(child->m_Children, 1); + child = (TypeTreeNodeObject *)PyList_GET_ITEM(child->m_Children, 1); for (int i = 0; i < length; i++) { PyObject *item = read_typetree_value(reader, child, config); @@ -405,30 +411,27 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre { // class value = PyDict_New(); - if (config->as_dict) + for (int i = 0; i < PyList_GET_SIZE(node->m_Children); i++) { - for (int i = 0; i < PyList_GET_SIZE(node->m_Children); i++) + child = (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, i); + PyObject *child_value = read_typetree_value(reader, child, config); + if (!child_value) { - child = (TypeTreeNodeObject *)PyList_GetItem(node->m_Children, i); - PyObject *child_value = read_typetree_value(reader, child, config); - if (!child_value) - { - Py_DECREF(value); - return NULL; - } - if (PyDict_SetItem(value, child->m_Name, child_value)) - { - Py_DECREF(value); - Py_DECREF(child_value); - return NULL; - } - // dict increases ref count, so we need to decref here + Py_DECREF(value); + return NULL; + } + if (PyDict_SetItem(value, child->m_Name, child_value)) + { + Py_DECREF(value); Py_DECREF(child_value); + return NULL; } + // dict increases ref count, so we need to decref here + Py_DECREF(child_value); } - else + if (!config->as_dict) { - value = read_class(reader, node, config); + value = parse_class(reader, value, node, config); } } } @@ -481,6 +484,9 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) return NULL; } } + Py_INCREF(config.assetfile); + Py_INCREF(config.classes); + Py_INCREF(config.clean_name); volatile uint16_t bint = 0x0100; volatile bool is_big_endian = ((uint8_t *)&bint)[0] == 1; @@ -626,14 +632,13 @@ static int TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject Py_XINCREF(self->m_Children); } -#define SET_NONE_IF_NULL(field) \ - if (self->field == nullptr) \ - { \ - self->field = Py_None; \ - } \ - else \ - { \ - Py_INCREF(self->field); \ +#define SET_NONE_IF_NULL(field) \ + { \ + if (self->field == nullptr) \ + { \ + self->field = Py_None; \ + } \ + Py_INCREF(self->field); \ } SET_NONE_IF_NULL(m_TypeFlags); From 9849b864b9ae367c47245a1d708f3ccdd9a0d9eb Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 Sep 2024 16:16:48 +0200 Subject: [PATCH 313/599] gitignore - restructure, ignore .so in UnityPy top level (c-extension) --- .gitignore | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 2d53a172..b1405525 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,19 @@ +# test files and others +test.py +AssetStudio/ +.vscode/ + + # Byte-compiled / optimized / DLL files __pycache__/ .dump .idea/ *.py[cod] *$py.class -test.py -AssetStudio/ -.vscode/ + +# precompiled C extensions +UnityPy/*.so +UnityPy/*.pyd # Distribution / packaging .Python From b8e8d049dca4b538ca8cb0e434f8a4fa5eccc136 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 Sep 2024 17:05:11 +0200 Subject: [PATCH 314/599] Texture2D - legacy - fix image setter - .m_Path -> .path --- UnityPy/classes/legacy_patch/Texture2D.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/classes/legacy_patch/Texture2D.py b/UnityPy/classes/legacy_patch/Texture2D.py index 66545416..93ae68de 100644 --- a/UnityPy/classes/legacy_patch/Texture2D.py +++ b/UnityPy/classes/legacy_patch/Texture2D.py @@ -56,7 +56,7 @@ def _Texture2d_set_image( self.m_TextureFormat = tex_format if self.m_StreamData is not None: - self.m_StreamData.m_Path = "" + self.m_StreamData.path = "" self.m_StreamData.offset = 0 self.m_StreamData.size = 0 From dde90590db21f6c86b4223dabbf694ae74b04602 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 Sep 2024 17:05:45 +0200 Subject: [PATCH 315/599] classes.generated - use custom define function --- UnityPy/classes/generated.py | 2715 ++++++++++++++++++++++---------- generators/ClassesGenerator.py | 58 +- 2 files changed, 1890 insertions(+), 883 deletions(-) diff --git a/UnityPy/classes/generated.py b/UnityPy/classes/generated.py index a3fc3022..5a8d209b 100644 --- a/UnityPy/classes/generated.py +++ b/UnityPy/classes/generated.py @@ -1,15 +1,50 @@ -#type: ignore +# type: ignore from __future__ import annotations -from abc import ABC -from attrs import define -from typing import List, Optional, Tuple, Union -from .math import float3, Matrix3x4f, Vector3f, Vector4f, ColorRGBA, Vector2f, Quaternionf, Matrix4x4f, float4 +from abc import ABC +from typing import List, Optional, Tuple, TypeVar, Union + +from attrs import define as attrs_define + +from .math import ( + ColorRGBA, + Matrix3x4f, + Matrix4x4f, + Quaternionf, + Vector2f, + Vector3f, + Vector4f, + float3, + float4, +) from .Object import Object from .PPtr import PPtr +T = TypeVar("T") + + +def unitypy_define(cls: T) -> T: + """ + A hacky solution to bypass multiple problems related to attrs and inheritance. -@define(kw_only=True, slots=False) + The class inheritance is very lax and based on the typetrees. + Some of the child classes might not have the same attributes as the parent class, + which would make type-hinting more tricky, and breaks attrs.define. + + Therefore this function bypasses the issue + by redifining the bases for problematic classes for the attrs.define call. + """ + bases = cls.__bases__ + if bases[0] in (object, Object, ABC): + cls = attrs_define(cls, slots=True, unsafe_hash=True) + else: + cls.__bases__ = (Object,) + cls = attrs_define(cls, slots=False, unsafe_hash=True) + cls.__bases__ = bases + return cls + + +@unitypy_define class AnnotationManager(Object): m_CurrentPreset_m_AnnotationList: List[Annotation] m_RecentlyChanged: List[Annotation] @@ -22,7 +57,8 @@ class AnnotationManager(Object): m_Use3dGizmos: Optional[bool] = None m_WorldIconSize: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AssetDatabaseV1(Object): m_AssetBundleNames: List[Tuple[int, AssetBundleFullName]] m_AssetTimeStamps: List[Tuple[str, AssetTimeStamp]] @@ -32,7 +68,8 @@ class AssetDatabaseV1(Object): m_lastValidVersionHashes: Optional[List[Tuple[int, int]]] = None m_lastValidVersions: Optional[List[Tuple[AssetImporterHashKey, int]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AssetMetaData(Object): assetStoreRef: int guid: GUID @@ -45,7 +82,8 @@ class AssetMetaData(Object): originalParent: Optional[GUID] = None timeCreated: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AssetServerCache(Object): m_CachesInitialized: int m_CommitItemSelection: List[GUID] @@ -56,47 +94,57 @@ class AssetServerCache(Object): m_ModifiedItems: List[Tuple[GUID, Item]] m_WorkingItemMetaData: List[Tuple[GUID, CachedAssetMetaData]] -@define(kw_only=True, slots=False) + +@unitypy_define class AudioBuildInfo(Object): m_AudioClipCount: int m_AudioMixerCount: int m_IsAudioDisabled: bool -@define(kw_only=True, slots=False) + +@unitypy_define class BuiltAssetBundleInfoSet(Object): bundleInfos: List[BuiltAssetBundleInfo] -@define(kw_only=True, slots=False) + +@unitypy_define class Derived(Object): pass -@define(kw_only=True, slots=False) + +@unitypy_define class SubDerived(Derived): pass -@define(kw_only=True, slots=False) + +@unitypy_define class DifferentMarshallingTestObject(Object): pass -@define(kw_only=True, slots=False) + +@unitypy_define class EditorBuildSettings(Object): m_Scenes: List[Scene] m_UseUCBPForAssetBundles: Optional[bool] = None m_configObjects: Optional[List[Tuple[str, PPtr[Object]]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class EditorExtension(Object, ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class Component(EditorExtension): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class Behaviour(Component): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class Animation(Behaviour): m_AnimatePhysics: bool m_Animation: PPtr[AnimationClip] @@ -109,7 +157,8 @@ class Animation(Behaviour): m_UpdateMode: Optional[int] = None m_UserAABB: Optional[AABB] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Animator(Behaviour): m_ApplyRootMotion: bool m_Avatar: PPtr[Avatar] @@ -127,7 +176,8 @@ class Animator(Behaviour): m_UpdateMode: Optional[int] = None m_WriteDefaultValuesOnDisable: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ArticulationBody(Behaviour): m_AnchorPosition: Vector3f m_AnchorRotation: Quaternionf @@ -162,17 +212,20 @@ class ArticulationBody(Behaviour): m_MatchAnchors: Optional[bool] = None m_UseGravity: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AudioBehaviour(Behaviour): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class AudioListener(AudioBehaviour): m_Enabled: int m_GameObject: PPtr[GameObject] m_ExtensionPropertyValues: Optional[List[ExtensionPropertyValue]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AudioSource(AudioBehaviour): BypassEffects: bool DopplerLevel: float @@ -201,11 +254,13 @@ class AudioSource(AudioBehaviour): m_Resource: Optional[PPtr[AudioResource]] = None reverbZoneMixCustomCurve: Optional[AnimationCurve] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AudioFilter(Behaviour): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class AudioChorusFilter(AudioFilter): m_Delay: float m_Depth: float @@ -218,13 +273,15 @@ class AudioChorusFilter(AudioFilter): m_WetMix3: float m_FeedBack: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AudioDistortionFilter(AudioFilter): m_DistortionLevel: float m_Enabled: int m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class AudioEchoFilter(AudioFilter): m_DecayRatio: float m_Delay: Union[int, float] @@ -233,14 +290,16 @@ class AudioEchoFilter(AudioFilter): m_GameObject: PPtr[GameObject] m_WetMix: float -@define(kw_only=True, slots=False) + +@unitypy_define class AudioHighPassFilter(AudioFilter): m_CutoffFrequency: float m_Enabled: int m_GameObject: PPtr[GameObject] m_HighpassResonanceQ: float -@define(kw_only=True, slots=False) + +@unitypy_define class AudioLowPassFilter(AudioFilter): lowpassLevelCustomCurve: AnimationCurve m_Enabled: int @@ -248,7 +307,8 @@ class AudioLowPassFilter(AudioFilter): m_LowpassResonanceQ: float m_CutoffFrequency: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AudioReverbFilter(AudioFilter): m_DecayHFRatio: float m_DecayTime: float @@ -269,7 +329,8 @@ class AudioReverbFilter(AudioFilter): m_RoomLF: float m_RoomRolloff: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AudioReverbZone(Behaviour): m_DecayHFRatio: float m_DecayTime: float @@ -291,7 +352,8 @@ class AudioReverbZone(Behaviour): m_RoomLF: int m_RoomRolloffFactor: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Camera(Behaviour): far_clip_plane: float field_of_view: float @@ -331,7 +393,8 @@ class Camera(Behaviour): m_TargetEye: Optional[int] = None m_projectionMatrixMode: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ScriptableCamera(Camera): far_clip_plane: float field_of_view: float @@ -363,7 +426,8 @@ class ScriptableCamera(Camera): orthographic: bool orthographic_size: float -@define(kw_only=True, slots=False) + +@unitypy_define class Canvas(Behaviour): m_Camera: PPtr[Camera] m_Enabled: int @@ -385,7 +449,8 @@ class Canvas(Behaviour): m_UpdateRectTransformForStandalone: Optional[int] = None m_VertexColorAlwaysGammaSpace: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class CanvasGroup(Behaviour): m_Alpha: float m_BlocksRaycasts: bool @@ -394,7 +459,8 @@ class CanvasGroup(Behaviour): m_Interactable: bool m_Enabled: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Cloth(Behaviour): m_GameObject: PPtr[GameObject] m_BendingStiffness: Optional[float] = None @@ -411,7 +477,12 @@ class Cloth(Behaviour): m_SelfCollisionStiffness: Optional[float] = None m_SleepThreshold: Optional[float] = None m_SolverFrequency: Optional[Union[int, float]] = None - m_SphereColliders: Optional[Union[List[ClothSphereColliderPair], List[Tuple[PPtr[SphereCollider], PPtr[SphereCollider]]]]] = None + m_SphereColliders: Optional[ + Union[ + List[ClothSphereColliderPair], + List[Tuple[PPtr[SphereCollider], PPtr[SphereCollider]]], + ] + ] = None m_StretchingStiffness: Optional[float] = None m_UseContinuousCollision: Optional[bool] = None m_UseGravity: Optional[bool] = None @@ -422,7 +493,8 @@ class Cloth(Behaviour): m_WorldAccelerationScale: Optional[float] = None m_WorldVelocityScale: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class InteractiveCloth(Cloth): m_AttachedColliders: List[ClothAttachment] m_AttachmentResponse: float @@ -444,7 +516,8 @@ class InteractiveCloth(Cloth): m_Thickness: float m_UseGravity: bool -@define(kw_only=True, slots=False) + +@unitypy_define class SkinnedCloth(Cloth): m_BendingStiffness: float m_Coefficients: List[ClothConstrainCoefficients] @@ -460,16 +533,19 @@ class SkinnedCloth(Cloth): m_WorldAccelerationScale: float m_WorldVelocityScale: float -@define(kw_only=True, slots=False) + +@unitypy_define class CloudServiceHandlerBehaviour(Behaviour): m_Enabled: int m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class Collider2D(Behaviour): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class BoxCollider2D(Collider2D): m_Enabled: int m_GameObject: PPtr[GameObject] @@ -494,7 +570,8 @@ class BoxCollider2D(Collider2D): m_UsedByComposite: Optional[bool] = None m_UsedByEffector: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class CapsuleCollider2D(Collider2D): m_Density: float m_Direction: int @@ -516,7 +593,8 @@ class CapsuleCollider2D(Collider2D): m_LayerOverridePriority: Optional[int] = None m_UsedByComposite: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class CircleCollider2D(Collider2D): m_Enabled: int m_GameObject: PPtr[GameObject] @@ -538,7 +616,8 @@ class CircleCollider2D(Collider2D): m_UsedByComposite: Optional[bool] = None m_UsedByEffector: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class CompositeCollider2D(Collider2D): m_ColliderPaths: List[SubCollider] m_CompositePaths: Polygon2D @@ -567,7 +646,8 @@ class CompositeCollider2D(Collider2D): m_UseDelaunayMesh: Optional[bool] = None m_UsedByComposite: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class CustomCollider2D(Collider2D): m_CustomShapes: PhysicsShapeGroup2D m_Density: float @@ -588,7 +668,8 @@ class CustomCollider2D(Collider2D): m_LayerOverridePriority: Optional[int] = None m_UsedByComposite: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class EdgeCollider2D(Collider2D): m_Enabled: int m_GameObject: PPtr[GameObject] @@ -614,7 +695,8 @@ class EdgeCollider2D(Collider2D): m_UsedByComposite: Optional[bool] = None m_UsedByEffector: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PolygonCollider2D(Collider2D): m_Enabled: int m_GameObject: PPtr[GameObject] @@ -639,11 +721,13 @@ class PolygonCollider2D(Collider2D): m_UsedByComposite: Optional[bool] = None m_UsedByEffector: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PolygonColliderBase2D(Collider2D): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class TilemapCollider2D(Collider2D): m_Density: float m_Enabled: int @@ -666,7 +750,8 @@ class TilemapCollider2D(Collider2D): m_UseDelaunayMesh: Optional[bool] = None m_UsedByComposite: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ConstantForce(Behaviour): m_Enabled: int m_Force: Vector3f @@ -675,11 +760,13 @@ class ConstantForce(Behaviour): m_RelativeTorque: Vector3f m_Torque: Vector3f -@define(kw_only=True, slots=False) + +@unitypy_define class Effector2D(Behaviour): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class AreaEffector2D(Effector2D): m_AngularDrag: float m_ColliderMask: BitField @@ -694,7 +781,8 @@ class AreaEffector2D(Effector2D): m_UseColliderMask: Optional[bool] = None m_UseGlobalAngle: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BuoyancyEffector2D(Effector2D): m_AngularDrag: float m_ColliderMask: BitField @@ -708,7 +796,8 @@ class BuoyancyEffector2D(Effector2D): m_SurfaceLevel: float m_UseColliderMask: bool -@define(kw_only=True, slots=False) + +@unitypy_define class PlatformEffector2D(Effector2D): m_ColliderMask: BitField m_Enabled: int @@ -726,7 +815,8 @@ class PlatformEffector2D(Effector2D): m_UseSideBounce: Optional[bool] = None m_UseSideFriction: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PointEffector2D(Effector2D): m_AngularDrag: float m_ColliderMask: BitField @@ -741,7 +831,8 @@ class PointEffector2D(Effector2D): m_GameObject: PPtr[GameObject] m_UseColliderMask: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SurfaceEffector2D(Effector2D): m_ColliderMask: BitField m_Enabled: int @@ -754,16 +845,19 @@ class SurfaceEffector2D(Effector2D): m_UseContactForce: Optional[bool] = None m_UseFriction: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class FlareLayer(Behaviour): m_Enabled: int m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class GUIElement(Behaviour): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class GUIText(GUIElement): m_Alignment: int m_Anchor: int @@ -781,7 +875,8 @@ class GUIText(GUIElement): m_Color: Optional[ColorRGBA] = None m_RichText: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class GUITexture(GUIElement): m_BottomBorder: int m_Color: ColorRGBA @@ -793,16 +888,19 @@ class GUITexture(GUIElement): m_Texture: PPtr[Texture] m_TopBorder: int -@define(kw_only=True, slots=False) + +@unitypy_define class GUILayer(Behaviour): m_Enabled: int m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class GridLayout(Behaviour): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class Grid(GridLayout): m_CellGap: Vector3f m_CellLayout: int @@ -811,7 +909,8 @@ class Grid(GridLayout): m_Enabled: int m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class Tilemap(GridLayout): m_AnimatedTiles: List[Tuple[int3_storage, TileAnimationData]] m_AnimationFrameRate: float @@ -830,23 +929,27 @@ class Tilemap(GridLayout): m_Tiles: List[Tuple[int3_storage, Tile]] m_TileObjectToInstantiateArray: Optional[List[TilemapRefCountedData]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Halo(Behaviour): m_Color: ColorRGBA m_Enabled: int m_GameObject: PPtr[GameObject] m_Size: float -@define(kw_only=True, slots=False) + +@unitypy_define class HaloLayer(Behaviour): m_Enabled: int m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class IConstraint(Behaviour): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class AimConstraint(IConstraint): m_AffectRotationX: bool m_AffectRotationY: bool @@ -865,7 +968,8 @@ class AimConstraint(IConstraint): m_Active: Optional[bool] = None m_IsContraintActive: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LookAtConstraint(IConstraint): m_Enabled: int m_GameObject: PPtr[GameObject] @@ -879,7 +983,8 @@ class LookAtConstraint(IConstraint): m_Active: Optional[bool] = None m_IsContraintActive: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ParentConstraint(IConstraint): m_AffectRotationX: bool m_AffectRotationY: bool @@ -898,7 +1003,8 @@ class ParentConstraint(IConstraint): m_Active: Optional[bool] = None m_IsContraintActive: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PositionConstraint(IConstraint): m_AffectTranslationX: bool m_AffectTranslationY: bool @@ -912,7 +1018,8 @@ class PositionConstraint(IConstraint): m_Active: Optional[bool] = None m_IsContraintActive: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class RotationConstraint(IConstraint): m_AffectRotationX: bool m_AffectRotationY: bool @@ -926,7 +1033,8 @@ class RotationConstraint(IConstraint): m_Active: Optional[bool] = None m_IsContraintActive: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ScaleConstraint(IConstraint): m_AffectScalingX: bool m_AffectScalingY: bool @@ -940,15 +1048,18 @@ class ScaleConstraint(IConstraint): m_Active: Optional[bool] = None m_IsContraintActive: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Joint2D(Behaviour): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class AnchoredJoint2D(Joint2D): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class DistanceJoint2D(AnchoredJoint2D): m_Anchor: Vector2f m_ConnectedAnchor: Vector2f @@ -965,7 +1076,8 @@ class DistanceJoint2D(AnchoredJoint2D): m_EnableCollision: Optional[bool] = None m_MaxDistanceOnly: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class FixedJoint2D(AnchoredJoint2D): m_Anchor: Vector2f m_AutoConfigureConnectedAnchor: bool @@ -980,7 +1092,8 @@ class FixedJoint2D(AnchoredJoint2D): m_GameObject: PPtr[GameObject] m_BreakAction: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class FrictionJoint2D(AnchoredJoint2D): m_Anchor: Vector2f m_AutoConfigureConnectedAnchor: bool @@ -995,7 +1108,8 @@ class FrictionJoint2D(AnchoredJoint2D): m_MaxTorque: float m_BreakAction: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class HingeJoint2D(AnchoredJoint2D): m_Anchor: Vector2f m_AngleLimits: Union[JointAngleLimit2D, JointAngleLimits2D] @@ -1014,7 +1128,8 @@ class HingeJoint2D(AnchoredJoint2D): m_EnableCollision: Optional[bool] = None m_UseConnectedAnchor: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SliderJoint2D(AnchoredJoint2D): m_Anchor: Vector2f m_Angle: float @@ -1034,7 +1149,8 @@ class SliderJoint2D(AnchoredJoint2D): m_CollideConnected: Optional[bool] = None m_EnableCollision: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpringJoint2D(AnchoredJoint2D): m_Anchor: Vector2f m_ConnectedAnchor: Vector2f @@ -1052,7 +1168,8 @@ class SpringJoint2D(AnchoredJoint2D): m_CollideConnected: Optional[bool] = None m_EnableCollision: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class WheelJoint2D(AnchoredJoint2D): m_Anchor: Vector2f m_ConnectedAnchor: Vector2f @@ -1069,7 +1186,8 @@ class WheelJoint2D(AnchoredJoint2D): m_CollideConnected: Optional[bool] = None m_EnableCollision: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class RelativeJoint2D(Joint2D): m_AngularOffset: float m_AutoConfigureOffset: bool @@ -1085,7 +1203,8 @@ class RelativeJoint2D(Joint2D): m_MaxTorque: float m_BreakAction: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TargetJoint2D(Joint2D): m_Anchor: Vector2f m_AutoConfigureTarget: bool @@ -1101,7 +1220,8 @@ class TargetJoint2D(Joint2D): m_Target: Vector2f m_BreakAction: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LensFlare(Behaviour): m_Brightness: float m_Color: ColorRGBA @@ -1112,7 +1232,8 @@ class LensFlare(Behaviour): m_IgnoreLayers: BitField m_FadeSpeed: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Light(Behaviour): m_Color: ColorRGBA m_Cookie: PPtr[Texture] @@ -1150,12 +1271,14 @@ class Light(Behaviour): m_UseColorTemperature: Optional[bool] = None m_UseViewFrustumForShadowCasterCull: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LightProbeGroup(Behaviour): m_GameObject: PPtr[GameObject] m_Enabled: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LightProbeProxyVolume(Behaviour): m_BoundingBoxMode: int m_BoundingBoxOrigin: Vector3f @@ -1172,14 +1295,16 @@ class LightProbeProxyVolume(Behaviour): m_DataFormat: Optional[int] = None m_QualityMode: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MonoBehaviour(Behaviour): m_Enabled: int m_GameObject: PPtr[GameObject] m_Name: str m_Script: PPtr[MonoScript] -@define(kw_only=True, slots=False) + +@unitypy_define class NavMeshAgent(Behaviour): m_Acceleration: float m_AngularSpeed: float @@ -1198,7 +1323,8 @@ class NavMeshAgent(Behaviour): m_AgentTypeID: Optional[int] = None m_AutoBraking: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class NavMeshObstacle(Behaviour): m_Enabled: int m_GameObject: PPtr[GameObject] @@ -1212,7 +1338,8 @@ class NavMeshObstacle(Behaviour): m_Shape: Optional[int] = None m_TimeToStationary: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class NetworkView(Behaviour): m_Enabled: int m_GameObject: PPtr[GameObject] @@ -1220,7 +1347,8 @@ class NetworkView(Behaviour): m_StateSynchronization: int m_ViewID: NetworkViewID -@define(kw_only=True, slots=False) + +@unitypy_define class OffMeshLink(Behaviour): m_Activated: bool m_BiDirectional: bool @@ -1235,17 +1363,20 @@ class OffMeshLink(Behaviour): m_Enabled: Optional[int] = None m_NavMeshLayer: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ParticleSystemForceField(Behaviour): m_Enabled: int m_GameObject: PPtr[GameObject] m_Parameters: ParticleSystemForceFieldParameters -@define(kw_only=True, slots=False) + +@unitypy_define class PhysicsUpdateBehaviour2D(Behaviour): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class ConstantForce2D(PhysicsUpdateBehaviour2D): m_Enabled: int m_Force: Vector2f @@ -1253,7 +1384,8 @@ class ConstantForce2D(PhysicsUpdateBehaviour2D): m_RelativeForce: Vector2f m_Torque: float -@define(kw_only=True, slots=False) + +@unitypy_define class PlayableDirector(Behaviour): m_DirectorUpdateMode: int m_Enabled: int @@ -1265,7 +1397,8 @@ class PlayableDirector(Behaviour): m_SceneBindings: List[DirectorGenericBinding] m_WrapMode: int -@define(kw_only=True, slots=False) + +@unitypy_define class Projector(Behaviour): m_AspectRatio: float m_Enabled: int @@ -1278,7 +1411,8 @@ class Projector(Behaviour): m_Orthographic: bool m_OrthographicSize: float -@define(kw_only=True, slots=False) + +@unitypy_define class ReflectionProbe(Behaviour): m_BackGroundColor: ColorRGBA m_BakedTexture: PPtr[Texture] @@ -1306,13 +1440,15 @@ class ReflectionProbe(Behaviour): m_UseOcclusionCulling: bool m_BlendDistance: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Skybox(Behaviour): m_CustomSkybox: PPtr[Material] m_Enabled: int m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class SortingGroup(Behaviour): m_Enabled: int m_GameObject: PPtr[GameObject] @@ -1321,13 +1457,15 @@ class SortingGroup(Behaviour): m_SortAtRoot: Optional[bool] = None m_SortingLayerID: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class StreamingController(Behaviour): m_Enabled: int m_GameObject: PPtr[GameObject] m_StreamingMipmapBias: float -@define(kw_only=True, slots=False) + +@unitypy_define class Terrain(Behaviour): m_BakeLightProbesForTrees: bool m_ChunkDynamicUVST: Vector4f @@ -1372,7 +1510,8 @@ class Terrain(Behaviour): m_TreeMotionVectorModeOverride: Optional[int] = None m_UseDefaultSmoothness: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VideoPlayer(Behaviour): m_AspectRatio: int m_AudioOutputMode: int @@ -1404,7 +1543,8 @@ class VideoPlayer(Behaviour): m_TimeUpdateMode: Optional[int] = None m_VideoShaders: Optional[List[PPtr[Shader]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VisualEffect(Behaviour): m_Asset: PPtr[VisualEffectAsset] m_Enabled: int @@ -1416,7 +1556,8 @@ class VisualEffect(Behaviour): m_InitialEventName: Optional[str] = None m_InitialEventNameOverriden: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class WindZone(Behaviour): m_Enabled: int m_GameObject: PPtr[GameObject] @@ -1427,12 +1568,14 @@ class WindZone(Behaviour): m_WindPulseMagnitude: float m_WindTurbulence: float -@define(kw_only=True, slots=False) + +@unitypy_define class CanvasRenderer(Component): m_GameObject: PPtr[GameObject] m_CullTransparentMesh: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Collider(Component): m_GameObject: Optional[PPtr[GameObject]] = None m_MaxLimitX: Optional[float] = None @@ -1445,7 +1588,8 @@ class Collider(Component): m_YMotionType: Optional[int] = None m_ZMotionType: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BoxCollider(Collider): m_Center: Vector3f m_Enabled: bool @@ -1458,7 +1602,8 @@ class BoxCollider(Collider): m_LayerOverridePriority: Optional[int] = None m_ProvidesContacts: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class CapsuleCollider(Collider): m_Center: Vector3f m_Direction: int @@ -1473,7 +1618,8 @@ class CapsuleCollider(Collider): m_LayerOverridePriority: Optional[int] = None m_ProvidesContacts: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class CharacterController(Collider): m_Center: Vector3f m_GameObject: PPtr[GameObject] @@ -1491,7 +1637,8 @@ class CharacterController(Collider): m_Material: Optional[Union[PPtr[PhysicMaterial], PPtr[PhysicsMaterial]]] = None m_ProvidesContacts: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MeshCollider(Collider): m_Convex: bool m_Enabled: bool @@ -1508,7 +1655,8 @@ class MeshCollider(Collider): m_SkinWidth: Optional[float] = None m_SmoothSphereCollisions: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class RaycastCollider(Collider): m_Center: Vector3f m_Enabled: bool @@ -1517,7 +1665,8 @@ class RaycastCollider(Collider): m_Length: float m_Material: PPtr[PhysicMaterial] -@define(kw_only=True, slots=False) + +@unitypy_define class SphereCollider(Collider): m_Center: Vector3f m_Enabled: bool @@ -1530,7 +1679,8 @@ class SphereCollider(Collider): m_LayerOverridePriority: Optional[int] = None m_ProvidesContacts: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TerrainCollider(Collider): m_Enabled: bool m_GameObject: PPtr[GameObject] @@ -1544,7 +1694,8 @@ class TerrainCollider(Collider): m_Material: Optional[Union[PPtr[PhysicMaterial], PPtr[PhysicsMaterial]]] = None m_ProvidesContacts: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class WheelCollider(Collider): m_Center: Vector3f m_ForwardFriction: WheelFrictionCurve @@ -1562,15 +1713,18 @@ class WheelCollider(Collider): m_ProvidesContacts: Optional[bool] = None m_WheelDampingRate: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class FakeComponent(Component): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class Joint(Component): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class CharacterJoint(Joint): m_Anchor: Vector3f m_Axis: Vector3f @@ -1597,7 +1751,8 @@ class CharacterJoint(Joint): m_SwingLimitSpring: Optional[SoftJointLimitSpring] = None m_TwistLimitSpring: Optional[SoftJointLimitSpring] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ConfigurableJoint(Joint): m_Anchor: Vector3f m_AngularXDrive: JointDrive @@ -1645,7 +1800,8 @@ class ConfigurableJoint(Joint): m_MassScale: Optional[float] = None m_SwapBodies: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class FixedJoint(Joint): m_BreakForce: float m_BreakTorque: float @@ -1658,7 +1814,8 @@ class FixedJoint(Joint): m_Enabled: Optional[bool] = None m_MassScale: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class HingeJoint(Joint): m_Anchor: Vector3f m_Axis: Vector3f @@ -1683,7 +1840,8 @@ class HingeJoint(Joint): m_MassScale: Optional[float] = None m_UseAcceleration: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpringJoint(Joint): m_Anchor: Vector3f m_BreakForce: float @@ -1705,7 +1863,8 @@ class SpringJoint(Joint): m_MassScale: Optional[float] = None m_Tolerance: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LODGroup(Component): m_Enabled: bool m_GameObject: PPtr[GameObject] @@ -1717,18 +1876,21 @@ class LODGroup(Component): m_LastLODIsBillboard: Optional[bool] = None m_ScreenRelativeTransitionHeight: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MeshFilter(Component): m_GameObject: PPtr[GameObject] m_Mesh: PPtr[Mesh] -@define(kw_only=True, slots=False) + +@unitypy_define class MultiplayerRolesData(Component): m_ComponentsRolesMasks: List[ObjectRolePair] m_GameObject: PPtr[GameObject] m_GameObjectRolesMask: int -@define(kw_only=True, slots=False) + +@unitypy_define class OcclusionArea(Component): m_Center: Vector3f m_GameObject: PPtr[GameObject] @@ -1737,14 +1899,16 @@ class OcclusionArea(Component): m_IsTargetVolume: Optional[bool] = None m_TargetResolution: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class OcclusionPortal(Component): m_Center: Vector3f m_GameObject: PPtr[GameObject] m_Open: bool m_Size: Vector3f -@define(kw_only=True, slots=False) + +@unitypy_define class ParticleAnimator(Component): Does_Animate_Color: bool autodestruct: bool @@ -1762,11 +1926,13 @@ class ParticleAnimator(Component): stopSimulation: bool worldRotationAxis: Vector3f -@define(kw_only=True, slots=False) + +@unitypy_define class ParticleEmitter(Component): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class EllipsoidParticleEmitter(ParticleEmitter): Simulate_in_Worldspace: bool angularVelocity: float @@ -1790,7 +1956,8 @@ class EllipsoidParticleEmitter(ParticleEmitter): tangentVelocity: Vector3f worldVelocity: Vector3f -@define(kw_only=True, slots=False) + +@unitypy_define class MeshParticleEmitter(ParticleEmitter): Simulate_in_Worldspace: bool angularVelocity: float @@ -1817,7 +1984,8 @@ class MeshParticleEmitter(ParticleEmitter): tangentVelocity: Vector3f worldVelocity: Vector3f -@define(kw_only=True, slots=False) + +@unitypy_define class ParticleSystem(Component): ClampVelocityModule: ClampVelocityModule CollisionModule: CollisionModule @@ -1863,15 +2031,18 @@ class ParticleSystem(Component): useRigidbodyForVelocity: Optional[bool] = None useUnscaledTime: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Pipeline(Component): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class Renderer(Component): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class BillboardRenderer(Renderer): m_Billboard: PPtr[BillboardAsset] m_CastShadows: int @@ -1905,7 +2076,8 @@ class BillboardRenderer(Renderer): m_SubsetIndices: Optional[List[int]] = None m_UseLightProbes: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ClothRenderer(Renderer): m_CastShadows: bool m_Enabled: bool @@ -1923,7 +2095,8 @@ class ClothRenderer(Renderer): m_SortingOrder: Optional[int] = None m_UseLightProbes: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LineRenderer(Renderer): m_CastShadows: Union[bool, int] m_Enabled: bool @@ -1963,7 +2136,8 @@ class LineRenderer(Renderer): m_SubsetIndices: Optional[List[int]] = None m_UseLightProbes: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class RendererFake(LineRenderer): m_CastShadows: int m_DynamicOccludee: int @@ -1994,7 +2168,8 @@ class RendererFake(LineRenderer): m_RayTraceProcedural: Optional[int] = None m_RayTracingMode: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MeshRenderer(Renderer): m_CastShadows: Union[bool, int] m_Enabled: bool @@ -2030,7 +2205,8 @@ class MeshRenderer(Renderer): m_SubsetIndices: Optional[List[int]] = None m_UseLightProbes: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ParticleRenderer(Renderer): UV_Animation: UVAnimation m_CameraVelocityScale: float @@ -2063,7 +2239,8 @@ class ParticleRenderer(Renderer): m_SubsetIndices: Optional[List[int]] = None m_UseLightProbes: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ParticleSystemRenderer(Renderer): m_CameraVelocityScale: float m_CastShadows: Union[bool, int] @@ -2130,7 +2307,8 @@ class ParticleSystemRenderer(Renderer): m_VertexStreamMask: Optional[int] = None m_VertexStreams: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SkinnedMeshRenderer(Renderer): m_AABB: AABB m_Bones: List[PPtr[Transform]] @@ -2173,7 +2351,8 @@ class SkinnedMeshRenderer(Renderer): m_SubsetIndices: Optional[List[int]] = None m_UseLightProbes: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteMask(Renderer): m_BackSortingLayer: int m_BackSortingOrder: int @@ -2215,7 +2394,8 @@ class SpriteMask(Renderer): m_SpriteSortPoint: Optional[int] = None m_StaticShadowCaster: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteRenderer(Renderer): m_CastShadows: Union[bool, int] m_Color: ColorRGBA @@ -2260,7 +2440,8 @@ class SpriteRenderer(Renderer): m_UseLightProbes: Optional[bool] = None m_WasSpriteAssigned: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteShapeRenderer(Renderer): m_CastShadows: int m_Color: ColorRGBA @@ -2297,7 +2478,8 @@ class SpriteShapeRenderer(Renderer): m_SpriteSortPoint: Optional[int] = None m_StaticShadowCaster: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TilemapRenderer(Renderer): m_CastShadows: int m_ChunkSize: int3_storage @@ -2336,7 +2518,8 @@ class TilemapRenderer(Renderer): m_SmallMeshCulling: Optional[int] = None m_StaticShadowCaster: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TrailRenderer(Renderer): m_Autodestruct: bool m_CastShadows: Union[bool, int] @@ -2380,7 +2563,8 @@ class TrailRenderer(Renderer): m_SubsetIndices: Optional[List[int]] = None m_UseLightProbes: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class UIRenderer(Renderer): m_GameObject: PPtr[GameObject] m_CastShadows: Optional[int] = None @@ -2411,7 +2595,8 @@ class UIRenderer(Renderer): m_StaticBatchRoot: Optional[PPtr[Transform]] = None m_StaticShadowCaster: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VFXRenderer(Renderer): m_CastShadows: int m_DynamicOccludee: int @@ -2442,7 +2627,8 @@ class VFXRenderer(Renderer): m_SmallMeshCulling: Optional[int] = None m_StaticShadowCaster: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Rigidbody(Component): m_AngularDrag: float m_CollisionDetection: int @@ -2461,7 +2647,8 @@ class Rigidbody(Component): m_InertiaRotation: Optional[Quaternionf] = None m_InertiaTensor: Optional[Vector3f] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Rigidbody2D(Component): m_CollisionDetection: int m_GameObject: PPtr[GameObject] @@ -2484,7 +2671,8 @@ class Rigidbody2D(Component): m_UseAutoMass: Optional[bool] = None m_UseFullKinematicContacts: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TextMesh(Component): m_Alignment: int m_Anchor: int @@ -2500,7 +2688,8 @@ class TextMesh(Component): m_Color: Optional[ColorRGBA] = None m_RichText: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Transform(Component): m_Children: List[PPtr[Transform]] m_Father: PPtr[Transform] @@ -2509,7 +2698,8 @@ class Transform(Component): m_LocalRotation: Quaternionf m_LocalScale: Vector3f -@define(kw_only=True, slots=False) + +@unitypy_define class RectTransform(Transform): m_AnchorMax: Vector2f m_AnchorMin: Vector2f @@ -2524,16 +2714,19 @@ class RectTransform(Transform): m_LocalScale: Optional[Vector3f] = None m_Position: Optional[Vector2f] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Tree(Component): m_GameObject: PPtr[GameObject] m_SpeedTreeWindAsset: Optional[PPtr[SpeedTreeWindAsset]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class WorldAnchor(Component): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class WorldParticleCollider(Component): m_BounceFactor: float m_CollidesWith: BitField @@ -2542,7 +2735,8 @@ class WorldParticleCollider(Component): m_MinKillVelocity: float m_SendCollisionMessage: bool -@define(kw_only=True, slots=False) + +@unitypy_define class GameObject(EditorExtension): m_Component: Union[List[ComponentPair], List[Tuple[int, PPtr[Component]]]] m_IsActive: Union[bool, int] @@ -2550,11 +2744,13 @@ class GameObject(EditorExtension): m_Name: str m_Tag: int -@define(kw_only=True, slots=False) + +@unitypy_define class NamedObject(EditorExtension, ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class AnimatorState(NamedObject): m_CycleOffset: float m_IKOnFeet: bool @@ -2576,7 +2772,8 @@ class AnimatorState(NamedObject): m_TimeParameter: Optional[str] = None m_TimeParameterActive: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AnimatorStateMachine(NamedObject): m_AnyStatePosition: Vector3f m_AnyStateTransitions: List[PPtr[AnimatorStateTransition]] @@ -2589,9 +2786,12 @@ class AnimatorStateMachine(NamedObject): m_Name: str m_ParentStateMachinePosition: Vector3f m_StateMachineBehaviours: List[PPtr[MonoBehaviour]] - m_StateMachineTransitions: List[Tuple[PPtr[AnimatorStateMachine], List[PPtr[AnimatorTransition]]]] + m_StateMachineTransitions: List[ + Tuple[PPtr[AnimatorStateMachine], List[PPtr[AnimatorTransition]]] + ] -@define(kw_only=True, slots=False) + +@unitypy_define class AnimatorTransitionBase(NamedObject): m_Conditions: List[AnimatorCondition] m_DstState: PPtr[AnimatorState] @@ -2601,7 +2801,8 @@ class AnimatorTransitionBase(NamedObject): m_Name: str m_Solo: bool -@define(kw_only=True, slots=False) + +@unitypy_define class AnimatorStateTransition(AnimatorTransitionBase): m_CanTransitionToSelf: bool m_Conditions: List[AnimatorCondition] @@ -2619,7 +2820,8 @@ class AnimatorStateTransition(AnimatorTransitionBase): m_TransitionOffset: float m_HasFixedDuration: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AnimatorTransition(AnimatorTransitionBase): m_Conditions: List[AnimatorCondition] m_DstState: PPtr[AnimatorState] @@ -2629,7 +2831,8 @@ class AnimatorTransition(AnimatorTransitionBase): m_Name: str m_Solo: bool -@define(kw_only=True, slots=False) + +@unitypy_define class AssetBundle(NamedObject): m_Container: List[Tuple[str, AssetInfo]] m_MainAsset: AssetInfo @@ -2646,29 +2849,34 @@ class AssetBundle(NamedObject): m_SceneHashes: Optional[List[Tuple[str, str]]] = None m_ScriptCompatibility: Optional[List[AssetBundleScriptInfo]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AssetBundleManifest(NamedObject): AssetBundleInfos: List[Tuple[int, AssetBundleInfo]] AssetBundleNames: List[Tuple[int, str]] AssetBundlesWithVariant: List[int] m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class AssetImportInProgressProxy(NamedObject): m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class AssetImporter(NamedObject, ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class ASTCImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str m_Name: str m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class AndroidAssetPackImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -2677,7 +2885,8 @@ class AndroidAssetPackImporter(AssetImporter): m_UsedFileIDs: List[int] m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class AssemblyDefinitionImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -2686,7 +2895,8 @@ class AssemblyDefinitionImporter(AssetImporter): m_UserData: str m_UsedFileIDs: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AssemblyDefinitionReferenceImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -2695,7 +2905,8 @@ class AssemblyDefinitionReferenceImporter(AssetImporter): m_UsedFileIDs: List[int] m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class AudioImporter(AssetImporter): m_3D: bool m_ForceToMono: bool @@ -2714,7 +2925,9 @@ class AudioImporter(AssetImporter): m_Normalize: Optional[bool] = None m_OldHashIdentity: Optional[MdFour] = None m_Output: Optional[Union[AudioImporterOutput, Output]] = None - m_PlatformSettingOverrides: Optional[Union[List[Tuple[str, SampleSettings]], List[Tuple[int, SampleSettings]]]] = None + m_PlatformSettingOverrides: Optional[ + Union[List[Tuple[str, SampleSettings]], List[Tuple[int, SampleSettings]]] + ] = None m_PreloadAudioData: Optional[bool] = None m_PreviewData: Optional[PreviewData] = None m_PreviewDataLength: Optional[int] = None @@ -2724,7 +2937,8 @@ class AudioImporter(AssetImporter): m_UsedFileIDs: Optional[List[int]] = None m_UserData: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BuildArchiveImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -2733,7 +2947,8 @@ class BuildArchiveImporter(AssetImporter): m_UsedFileIDs: List[int] m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class BuildInstructionImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -2742,7 +2957,8 @@ class BuildInstructionImporter(AssetImporter): m_UsedFileIDs: List[int] m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class BuildMetaDataImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -2751,7 +2967,8 @@ class BuildMetaDataImporter(AssetImporter): m_UsedFileIDs: List[int] m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class C4DImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -2760,7 +2977,8 @@ class C4DImporter(AssetImporter): m_UsedFileIDs: List[int] m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class ComputeShaderImporter(AssetImporter): m_Name: str m_UserData: str @@ -2772,7 +2990,8 @@ class ComputeShaderImporter(AssetImporter): m_PreprocessorOverride: Optional[int] = None m_UsedFileIDs: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class DDSImporter(AssetImporter): m_Name: str m_AssetBundleName: Optional[str] = None @@ -2783,7 +3002,8 @@ class DDSImporter(AssetImporter): m_OldHashIdentity: Optional[MdFour] = None m_UserData: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class DefaultImporter(AssetImporter): m_Name: str m_AssetBundleName: Optional[str] = None @@ -2795,7 +3015,8 @@ class DefaultImporter(AssetImporter): m_UsedFileIDs: Optional[List[int]] = None m_UserData: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class IHVImageFormatImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -2811,14 +3032,16 @@ class IHVImageFormatImporter(AssetImporter): m_UsedFileIDs: Optional[List[int]] = None m_sRGBTexture: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class KTXImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str m_Name: str m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class LibraryAssetImporter(AssetImporter): m_Name: str m_AssetBundleName: Optional[str] = None @@ -2830,7 +3053,8 @@ class LibraryAssetImporter(AssetImporter): m_UsedFileIDs: Optional[List[int]] = None m_UserData: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LocalizationImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -2839,11 +3063,13 @@ class LocalizationImporter(AssetImporter): m_UserData: str m_UsedFileIDs: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ModelImporter(AssetImporter, ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class FBXImporter(ModelImporter): m_AddColliders: bool m_AnimationCompression: int @@ -2865,7 +3091,9 @@ class FBXImporter(ModelImporter): generateSecondaryUV: Optional[bool] = None indexFormat: Optional[int] = None keepQuads: Optional[bool] = None - legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: Optional[bool] = None + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: Optional[bool] = ( + None + ) m_AddHumanoidExtraRootOnlyWhenUsingAvatar: Optional[bool] = None m_AdditionalBone: Optional[bool] = None m_AnimationDoRetargetingWarnings: Optional[bool] = None @@ -2968,7 +3196,8 @@ class FBXImporter(ModelImporter): tangentImportMode: Optional[int] = None weldVertices: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Mesh3DSImporter(ModelImporter): m_AddColliders: bool m_AnimationCompression: int @@ -2990,7 +3219,9 @@ class Mesh3DSImporter(ModelImporter): generateSecondaryUV: Optional[bool] = None indexFormat: Optional[int] = None keepQuads: Optional[bool] = None - legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: Optional[bool] = None + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: Optional[bool] = ( + None + ) m_AddHumanoidExtraRootOnlyWhenUsingAvatar: Optional[bool] = None m_AdditionalBone: Optional[bool] = None m_AnimationDoRetargetingWarnings: Optional[bool] = None @@ -3093,7 +3324,8 @@ class Mesh3DSImporter(ModelImporter): tangentImportMode: Optional[int] = None weldVertices: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SketchUpImporter(ModelImporter): generateSecondaryUV: bool keepQuads: bool @@ -3157,7 +3389,9 @@ class SketchUpImporter(ModelImporter): bakeAxisConversion: Optional[bool] = None blendShapeNormalImportMode: Optional[int] = None indexFormat: Optional[int] = None - legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: Optional[bool] = None + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: Optional[bool] = ( + None + ) m_AddHumanoidExtraRootOnlyWhenUsingAvatar: Optional[bool] = None m_AutoGenerateAvatarMappingIfUnspecified: Optional[bool] = None m_AutoMapExternalMaterials: Optional[bool] = None @@ -3212,7 +3446,8 @@ class SketchUpImporter(ModelImporter): skinWeightsMode: Optional[int] = None splitTangentsAcrossUV: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MonoImporter(AssetImporter): executionOrder: int icon: PPtr[Texture2D] @@ -3227,7 +3462,8 @@ class MonoImporter(AssetImporter): m_UsedFileIDs: Optional[List[int]] = None m_UserData: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MovieImporter(AssetImporter): m_Name: str m_Quality: float @@ -3241,7 +3477,8 @@ class MovieImporter(AssetImporter): m_UsedFileIDs: Optional[List[int]] = None m_UserData: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MultiArtifactTestImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -3250,7 +3487,8 @@ class MultiArtifactTestImporter(AssetImporter): m_UsedFileIDs: List[int] m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class NativeFormatImporter(AssetImporter): m_Name: str m_AssetBundleName: Optional[str] = None @@ -3263,7 +3501,8 @@ class NativeFormatImporter(AssetImporter): m_UsedFileIDs: Optional[List[int]] = None m_UserData: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PVRImporter(AssetImporter): m_Name: str m_AssetBundleName: Optional[str] = None @@ -3273,7 +3512,8 @@ class PVRImporter(AssetImporter): m_OldHashIdentity: Optional[MdFour] = None m_UserData: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PackageManifestImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -3282,7 +3522,8 @@ class PackageManifestImporter(AssetImporter): m_UsedFileIDs: List[int] m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class PluginImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -3291,7 +3532,10 @@ class PluginImporter(AssetImporter): m_IsPreloaded: bool m_Name: str m_Output: PluginImportOutput - m_PlatformData: Union[List[Tuple[str, PlatformSettingsData]], List[Tuple[Tuple[str, str], PlatformSettingsData]]] + m_PlatformData: Union[ + List[Tuple[str, PlatformSettingsData]], + List[Tuple[Tuple[str, str], PlatformSettingsData]], + ] m_UserData: str m_DefineConstraints: Optional[List[str]] = None m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None @@ -3300,7 +3544,8 @@ class PluginImporter(AssetImporter): m_UsedFileIDs: Optional[List[int]] = None m_ValidateReferences: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PrefabImporter(AssetImporter): m_AddedObjectFileIDs: List[int] m_AssetBundleName: str @@ -3313,7 +3558,8 @@ class PrefabImporter(AssetImporter): m_UsedFileIDs: Optional[List[int]] = None m_VariantParentGUID: Optional[GUID] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PreviewImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -3322,7 +3568,8 @@ class PreviewImporter(AssetImporter): m_UsedFileIDs: List[int] m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class RayTracingShaderImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -3332,7 +3579,8 @@ class RayTracingShaderImporter(AssetImporter): m_UserData: str m_CurrentAPIMask: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ReferencesArtifactGenerator(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -3341,7 +3589,8 @@ class ReferencesArtifactGenerator(AssetImporter): m_UsedFileIDs: List[int] m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class RoslynAdditionalFileImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -3350,7 +3599,8 @@ class RoslynAdditionalFileImporter(AssetImporter): m_UsedFileIDs: List[int] m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class RoslynAnalyzerConfigImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -3359,7 +3609,8 @@ class RoslynAnalyzerConfigImporter(AssetImporter): m_UsedFileIDs: List[int] m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class RuleSetFileImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -3368,7 +3619,8 @@ class RuleSetFileImporter(AssetImporter): m_UsedFileIDs: List[int] m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class ScriptedImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -3380,7 +3632,8 @@ class ScriptedImporter(AssetImporter): m_InternalIDToNameTable: Optional[List[Tuple[Tuple[int, int], str]]] = None m_UsedFileIDs: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ShaderImporter(AssetImporter): m_Name: str m_AssetBundleName: Optional[str] = None @@ -3395,7 +3648,8 @@ class ShaderImporter(AssetImporter): m_UsedFileIDs: Optional[List[int]] = None m_UserData: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ShaderIncludeImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -3404,7 +3658,8 @@ class ShaderIncludeImporter(AssetImporter): m_UsedFileIDs: List[int] m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class SpeedTreeImporter(AssetImporter): m_AlphaTestRef: float m_AssetBundleName: str @@ -3443,7 +3698,8 @@ class SpeedTreeImporter(AssetImporter): m_UnitConversionEnumValue: Optional[int] = None m_UsedFileIDs: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteAtlasImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -3454,18 +3710,22 @@ class SpriteAtlasImporter(AssetImporter): m_BindAsDefault: Optional[bool] = None m_PackingSettings: Optional[PackingSettings] = None m_PlatformSettings: Optional[List[TextureImporterPlatformSettings]] = None - m_SecondaryTextureSettings: Optional[List[Tuple[str, SecondaryTextureSettings]]] = None + m_SecondaryTextureSettings: Optional[List[Tuple[str, SecondaryTextureSettings]]] = ( + None + ) m_TextureSettings: Optional[TextureSettings] = None m_VariantMultiplier: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class StyleSheetImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str m_Name: str m_UserData: str -@define(kw_only=True, slots=False) + +@unitypy_define class SubstanceImporter(AssetImporter): m_Name: str m_AssetBundleName: Optional[str] = None @@ -3481,7 +3741,8 @@ class SubstanceImporter(AssetImporter): m_UsedFileIDs: Optional[List[int]] = None m_UserData: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TextScriptImporter(AssetImporter): m_Name: str m_AssetBundleName: Optional[str] = None @@ -3493,7 +3754,8 @@ class TextScriptImporter(AssetImporter): m_UsedFileIDs: Optional[List[int]] = None m_UserData: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TextureImporter(AssetImporter): m_BorderMipMap: int m_ConvertToNormalMap: int @@ -3550,7 +3812,9 @@ class TextureImporter(AssetImporter): m_Output: Optional[TextureImportOutput] = None m_PSDRemoveMatte: Optional[bool] = None m_PSDShowRemoveMatteOption: Optional[bool] = None - m_PlatformSettings: Optional[Union[List[TextureImporterPlatformSettings], List[PlatformSettings]]] = None + m_PlatformSettings: Optional[ + Union[List[TextureImporterPlatformSettings], List[PlatformSettings]] + ] = None m_PushPullDilation: Optional[int] = None m_RGBM: Optional[int] = None m_RecommendedTextureFormat: Optional[int] = None @@ -3577,7 +3841,8 @@ class TextureImporter(AssetImporter): m_VTOnly: Optional[int] = None m_sRGBTexture: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TrueTypeFontImporter(AssetImporter): m_FontNames: List[str] m_FontSize: int @@ -3607,7 +3872,8 @@ class TrueTypeFontImporter(AssetImporter): m_UsedFileIDs: Optional[List[int]] = None m_UserData: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VideoClipImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -3621,7 +3887,10 @@ class VideoClipImporter(AssetImporter): m_Name: str m_Output: VideoClipImporterOutput m_StartFrame: int - m_TargetSettings: Union[List[Tuple[int, VideoClipImporterTargetSettings]], List[Tuple[str, VideoClipImporterTargetSettings]]] + m_TargetSettings: Union[ + List[Tuple[int, VideoClipImporterTargetSettings]], + List[Tuple[str, VideoClipImporterTargetSettings]], + ] m_UserData: str m_AudioImportMode: Optional[int] = None m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None @@ -3641,7 +3910,8 @@ class VideoClipImporter(AssetImporter): m_UseLegacyImporter: Optional[bool] = None m_UsedFileIDs: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VisualEffectImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -3651,14 +3921,16 @@ class VisualEffectImporter(AssetImporter): m_Template: Optional[VFXTemplate] = None m_UsedFileIDs: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AudioContainerElement(NamedObject): m_AudioClip: PPtr[AudioClip] m_Enabled: bool m_Name: str m_Volume: float -@define(kw_only=True, slots=False) + +@unitypy_define class AudioMixer(NamedObject): m_EnableSuspend: bool m_MasterGroup: PPtr[AudioMixerGroup] @@ -3670,7 +3942,8 @@ class AudioMixer(NamedObject): m_SuspendThreshold: float m_UpdateMode: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AudioMixerController(AudioMixer): m_EnableSuspend: bool m_MasterGroup: PPtr[AudioMixerGroup] @@ -3682,7 +3955,8 @@ class AudioMixerController(AudioMixer): m_SuspendThreshold: float m_UpdateMode: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AudioMixerEffectController(NamedObject): m_Bypass: bool m_EffectID: GUID @@ -3693,37 +3967,43 @@ class AudioMixerEffectController(NamedObject): m_Parameters: List[Parameter] m_SendTarget: PPtr[AudioMixerEffectController] -@define(kw_only=True, slots=False) + +@unitypy_define class AudioMixerGroup(NamedObject): m_AudioMixer: PPtr[AudioMixer] m_Children: List[PPtr[AudioMixerGroup]] m_GroupID: GUID m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class AudioMixerGroupController(AudioMixerGroup): m_AudioMixer: PPtr[AudioMixer] m_Children: List[PPtr[AudioMixerGroup]] m_GroupID: GUID m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class AudioMixerSnapshot(NamedObject): m_AudioMixer: PPtr[AudioMixer] m_Name: str m_SnapshotID: GUID -@define(kw_only=True, slots=False) + +@unitypy_define class AudioMixerSnapshotController(AudioMixerSnapshot): m_AudioMixer: PPtr[AudioMixer] m_Name: str m_SnapshotID: GUID -@define(kw_only=True, slots=False) + +@unitypy_define class AudioResource(NamedObject): m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class AudioRandomContainer(AudioResource): m_AutomaticTriggerMode: int m_AutomaticTriggerTime: float @@ -3745,11 +4025,13 @@ class AudioRandomContainer(AudioResource): m_VolumeRandomizationEnabled: bool m_VolumeRandomizationRange: Vector2f -@define(kw_only=True, slots=False) + +@unitypy_define class SampleClip(AudioResource): m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class AudioClip(SampleClip): m_Name: str m_3D: Optional[bool] = None @@ -3772,7 +4054,8 @@ class AudioClip(SampleClip): m_Type: Optional[int] = None m_UseHardware: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Avatar(NamedObject): m_Avatar: AvatarConstant m_AvatarSize: int @@ -3780,28 +4063,33 @@ class Avatar(NamedObject): m_TOS: List[Tuple[int, str]] m_HumanDescription: Optional[HumanDescription] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AvatarMask(NamedObject): m_Elements: List[TransformMaskElement] m_Mask: List[int] m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class AvatarSkeletonMask(NamedObject): elements: List[AvatarSkeletonMaskElement] m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class BaseAnimationTrack(NamedObject, ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class NewAnimationTrack(BaseAnimationTrack): m_ClassID: int m_Curves: List[Channel] m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class BillboardAsset(NamedObject): bottom: float height: float @@ -3813,7 +4101,8 @@ class BillboardAsset(NamedObject): width: float rotated: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BuildReport(NamedObject): m_Appendices: List[PPtr[Object]] m_BuildSteps: List[BuildStepInfo] @@ -3821,33 +4110,40 @@ class BuildReport(NamedObject): m_Name: str m_Summary: BuildSummary -@define(kw_only=True, slots=False) + +@unitypy_define class CachedSpriteAtlas(NamedObject): frames: List[Tuple[Tuple[GUID, int], SpriteRenderData]] textures: List[PPtr[Texture2D]] alphaTextures: Optional[List[PPtr[Texture2D]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class CachedSpriteAtlasRuntimeData(NamedObject): alphaTextures: List[PPtr[Texture2D]] frames: List[Tuple[Tuple[GUID, int], SpriteAtlasData]] textures: List[PPtr[Texture2D]] currentPackingHash: Optional[Hash128] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ComputeShader(NamedObject): m_Name: str constantBuffers: Optional[List[ComputeShaderCB]] = None kernels: Optional[List[ComputeShaderKernel]] = None - variants: Optional[Union[List[ComputeShaderVariant], List[ComputeShaderPlatformVariant]]] = None + variants: Optional[ + Union[List[ComputeShaderVariant], List[ComputeShaderPlatformVariant]] + ] = None + -@define(kw_only=True, slots=False) +@unitypy_define class DefaultAsset(NamedObject): m_Name: str m_IsWarning: Optional[bool] = None m_Message: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BrokenPrefabAsset(DefaultAsset): m_BrokenParentPrefab: PPtr[BrokenPrefabAsset] m_IsPrefabFileValid: bool @@ -3856,17 +4152,20 @@ class BrokenPrefabAsset(DefaultAsset): m_Message: str m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class SceneAsset(DefaultAsset): m_Name: str m_IsWarning: Optional[bool] = None m_Message: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class EditorProjectAccess(NamedObject): m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class Flare(NamedObject): m_Elements: List[FlareElement] m_FlareTexture: PPtr[Texture] @@ -3874,7 +4173,8 @@ class Flare(NamedObject): m_TextureLayout: int m_UseFog: bool -@define(kw_only=True, slots=False) + +@unitypy_define class Font(NamedObject): m_Ascent: float m_AsciiStartOffset: int @@ -3904,11 +4204,13 @@ class Font(NamedObject): m_Tracking: Optional[float] = None m_UseLegacyBoundsCalculation: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class GameObjectRecorder(NamedObject): m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class GraphicsStateCollection(NamedObject): m_DeviceRenderer: int m_Name: str @@ -3920,17 +4222,20 @@ class GraphicsStateCollection(NamedObject): m_Version: int m_VertexLayoutInfoMap: List[Tuple[int, VertexLayoutInfo]] -@define(kw_only=True, slots=False) + +@unitypy_define class HumanTemplate(NamedObject): m_BoneTemplate: List[Tuple[str, str]] m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class ImportLog(NamedObject): m_Logs: List[ImportLog_ImportLogEntry] m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class LightProbes(NamedObject): m_Name: str bakedCoefficients: Optional[List[LightmapData]] = None @@ -3942,7 +4247,8 @@ class LightProbes(NamedObject): m_HasBeenEdited: Optional[bool] = None tetrahedra: Optional[List[Tetrahedron]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LightingDataAsset(NamedObject): m_BakedAmbientProbeInLinear: SphericalHarmonicsL2 m_BakedReflectionProbeCubemaps: List[PPtr[Texture]] @@ -3966,11 +4272,13 @@ class LightingDataAsset(NamedObject): m_Scene: Optional[PPtr[SceneAsset]] = None m_SceneGUID: Optional[GUID] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LightingDataAssetParent(NamedObject): m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class LightingSettings(NamedObject): m_AlbedoBoost: float m_BounceScale: float @@ -4025,7 +4333,8 @@ class LightingSettings(NamedObject): m_TextureCompression: Optional[bool] = None m_TrainingDataDestination: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LightmapParameters(NamedObject): AOAntiAliasingSamples: int AOQuality: int @@ -4047,14 +4356,16 @@ class LightmapParameters(NamedObject): maxLightmapCount: Optional[int] = None pushoff: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LocalizationAsset(NamedObject): Editor_Asset: bool Locale_ISO_Code: str String_Table: List[Tuple[str, str]] m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class Material(NamedObject): m_Name: str m_SavedProperties: UnityPropertySheet @@ -4070,7 +4381,8 @@ class Material(NamedObject): m_ValidKeywords: Optional[List[str]] = None stringTagMap: Optional[List[Tuple[str, str]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ProceduralMaterial(Material): m_Name: str m_SavedProperties: UnityPropertySheet @@ -4099,7 +4411,8 @@ class ProceduralMaterial(Material): m_Width: Optional[int] = None stringTagMap: Optional[List[Tuple[str, str]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Mesh(NamedObject): m_BindPose: List[Matrix4x4f] m_CompressedMesh: CompressedMesh @@ -4138,11 +4451,13 @@ class Mesh(NamedObject): m_VertexData: Optional[VertexData] = None m_Vertices: Optional[List[Vector3f]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Motion(NamedObject, ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class AnimationClip(Motion): m_Bounds: AABB m_Compressed: bool @@ -4166,7 +4481,8 @@ class AnimationClip(Motion): m_PPtrCurves: Optional[List[PPtrCurve]] = None m_UseHighQualityCurve: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PreviewAnimationClip(AnimationClip): m_Bounds: AABB m_ClipBindingConstant: AnimationClipBindingConstant @@ -4189,7 +4505,8 @@ class PreviewAnimationClip(AnimationClip): m_HasGenericRootTransform: Optional[bool] = None m_HasMotionFloatCurves: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BlendTree(Motion): m_Childs: Union[List[Child], List[ChildMotion]] m_MaxThreshold: float @@ -4203,7 +4520,8 @@ class BlendTree(Motion): m_BlendType: Optional[int] = None m_NormalizedBlendValues: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class NavMeshData(NamedObject): m_HeightMeshes: List[HeightMeshData] m_Heightmaps: List[HeightmapData] @@ -4217,17 +4535,20 @@ class NavMeshData(NamedObject): m_Rotation: Optional[Quaternionf] = None m_SourceBounds: Optional[AABB] = None -@define(kw_only=True, slots=False) + +@unitypy_define class NavMeshObsolete(NamedObject): m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class OcclusionCullingData(NamedObject): m_Name: str m_PVSData: List[int] m_Scenes: List[OcclusionScene] -@define(kw_only=True, slots=False) + +@unitypy_define class PhysicsMaterial(NamedObject): m_Name: str bounceCombine: Optional[int] = None @@ -4241,7 +4562,8 @@ class PhysicsMaterial(NamedObject): m_StaticFriction: Optional[float] = None staticFriction: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PhysicsMaterial2D(NamedObject): bounciness: float friction: float @@ -4249,14 +4571,16 @@ class PhysicsMaterial2D(NamedObject): m_BounceCombine: Optional[int] = None m_FrictionCombine: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PreloadData(NamedObject): m_Assets: List[PPtr[Object]] m_Name: str m_Dependencies: Optional[List[str]] = None m_ExplicitDataLayout: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Preset(NamedObject): m_Name: str m_Properties: List[PropertyModification] @@ -4265,22 +4589,26 @@ class Preset(NamedObject): m_CoupledType: Optional[PresetType] = None m_ExcludedProperties: Optional[List[str]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class RayTracingShader(NamedObject): m_MaxRecursionDepth: int m_Name: str variants: List[RayTracingShaderVariant] m_EnableRayPayloadSizeChecks: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class RoslynAdditionalFileAsset(NamedObject): m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class RoslynAnalyzerConfigAsset(NamedObject): m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class RuntimeAnimatorController(NamedObject): m_AnimationClips: List[PPtr[AnimationClip]] m_Controller: ControllerConstant @@ -4288,7 +4616,8 @@ class RuntimeAnimatorController(NamedObject): m_Name: str m_TOS: List[Tuple[int, str]] -@define(kw_only=True, slots=False) + +@unitypy_define class AnimatorController(RuntimeAnimatorController): m_AnimationClips: List[PPtr[AnimationClip]] m_Controller: ControllerConstant @@ -4296,16 +4625,20 @@ class AnimatorController(RuntimeAnimatorController): m_Name: str m_TOS: List[Tuple[int, str]] m_MultiThreadedStateMachine: Optional[bool] = None - m_StateMachineBehaviourVectorDescription: Optional[StateMachineBehaviourVectorDescription] = None + m_StateMachineBehaviourVectorDescription: Optional[ + StateMachineBehaviourVectorDescription + ] = None m_StateMachineBehaviours: Optional[List[PPtr[MonoBehaviour]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AnimatorOverrideController(RuntimeAnimatorController): m_Clips: List[AnimationClipOverride] m_Controller: PPtr[RuntimeAnimatorController] m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class Shader(NamedObject): m_Name: str compressedBlob: Optional[List[int]] = None @@ -4324,12 +4657,14 @@ class Shader(NamedObject): platforms: Optional[List[int]] = None stageCounts: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ShaderVariantCollection(NamedObject): m_Name: str m_Shaders: List[Tuple[PPtr[Shader], ShaderInfo]] -@define(kw_only=True, slots=False) + +@unitypy_define class SpeedTreeWindAsset(NamedObject): m_Name: str m_Config8: Optional[SpeedTreeWindConfig8] = None @@ -4337,7 +4672,8 @@ class SpeedTreeWindAsset(NamedObject): m_Wind: Optional[SpeedTreeWind] = None m_eVersion: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Sprite(NamedObject): m_Extrude: int m_Name: str @@ -4355,7 +4691,8 @@ class Sprite(NamedObject): m_ScriptableObjects: Optional[List[PPtr[MonoBehaviour]]] = None m_SpriteAtlas: Optional[PPtr[SpriteAtlas]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteAtlas(NamedObject): m_IsVariant: bool m_Name: str @@ -4364,7 +4701,8 @@ class SpriteAtlas(NamedObject): m_RenderDataMap: List[Tuple[Tuple[GUID, int], SpriteAtlasData]] m_Tag: str -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteAtlasAsset(NamedObject): m_ImporterData: Union[SpriteAtlasEditorData, SpriteAtlasAssetData] m_IsVariant: bool @@ -4372,12 +4710,14 @@ class SpriteAtlasAsset(NamedObject): m_Name: str m_ScriptablePacker: Optional[PPtr[Object]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SubstanceArchive(NamedObject): m_Name: str m_PackageData: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TerrainData(NamedObject): m_DetailDatabase: DetailDatabase m_Heightmap: Heightmap @@ -4385,7 +4725,8 @@ class TerrainData(NamedObject): m_SplatDatabase: SplatDatabase m_PreloadShaders: Optional[List[PPtr[Shader]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TerrainLayer(NamedObject): m_DiffuseRemapMax: Vector4f m_DiffuseRemapMin: Vector4f @@ -4403,23 +4744,27 @@ class TerrainLayer(NamedObject): m_TileSize: Vector2f m_SmoothnessSource: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TextAsset(NamedObject): m_Name: str m_Script: str m_PathName: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AssemblyDefinitionAsset(TextAsset): m_Name: str m_Script: str -@define(kw_only=True, slots=False) + +@unitypy_define class AssemblyDefinitionReferenceAsset(TextAsset): m_Name: str m_Script: str -@define(kw_only=True, slots=False) + +@unitypy_define class MonoScript(TextAsset): m_AssemblyName: str m_ClassName: str @@ -4429,37 +4774,44 @@ class MonoScript(TextAsset): m_PropertiesHash: Union[Hash128, int] m_IsEditorScript: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PackageManifest(TextAsset): m_Name: str m_Script: str -@define(kw_only=True, slots=False) + +@unitypy_define class RuleSetFileAsset(TextAsset): m_Name: str m_Script: str -@define(kw_only=True, slots=False) + +@unitypy_define class ShaderInclude(TextAsset): m_Name: str m_Script: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Texture(NamedObject, ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class BaseVideoTexture(Texture, ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class WebCamTexture(BaseVideoTexture): m_Name: str m_DownscaleFallback: Optional[bool] = None m_ForcedFallbackFormat: Optional[int] = None m_IsAlphaChannelOptional: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class CubemapArray(Texture): image_data: bytes m_ColorSpace: int @@ -4477,14 +4829,16 @@ class CubemapArray(Texture): m_StreamData: Optional[StreamingInfo] = None m_UsageMode: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LowerResBlitTexture(Texture): m_Name: str m_DownscaleFallback: Optional[bool] = None m_ForcedFallbackFormat: Optional[int] = None m_IsAlphaChannelOptional: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MovieTexture(Texture): m_Name: str m_AudioClip: Optional[PPtr[AudioClip]] = None @@ -4495,7 +4849,8 @@ class MovieTexture(Texture): m_Loop: Optional[bool] = None m_MovieData: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ProceduralTexture(Texture): m_Name: str AlphaSource: Optional[int] = None @@ -4517,7 +4872,8 @@ class ProceduralTexture(Texture): m_TextureParameters: Optional[TextureParameters] = None m_TextureSettings: Optional[GLTextureSettings] = None -@define(kw_only=True, slots=False) + +@unitypy_define class RenderTexture(Texture): m_ColorFormat: int m_Height: int @@ -4545,7 +4901,8 @@ class RenderTexture(Texture): m_UseDynamicScaleExplicit: Optional[bool] = None m_VolumeDepth: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class CustomRenderTexture(RenderTexture): m_AntiAliasing: int m_ColorFormat: int @@ -4586,7 +4943,8 @@ class CustomRenderTexture(RenderTexture): m_UseDynamicScale: Optional[bool] = None m_UseDynamicScaleExplicit: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SparseTexture(Texture): m_ColorSpace: int m_Format: int @@ -4599,7 +4957,8 @@ class SparseTexture(Texture): m_ForcedFallbackFormat: Optional[int] = None m_IsAlphaChannelOptional: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Texture2D(Texture): image_data: bytes m_CompleteImageSize: int @@ -4629,7 +4988,8 @@ class Texture2D(Texture): m_StreamingMipmaps: Optional[bool] = None m_StreamingMipmapsPriority: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Cubemap(Texture2D): image_data: bytes m_CompleteImageSize: int @@ -4660,7 +5020,8 @@ class Cubemap(Texture2D): m_StreamingMipmaps: Optional[bool] = None m_StreamingMipmapsPriority: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Texture2DArray(Texture): image_data: bytes m_ColorSpace: int @@ -4682,7 +5043,8 @@ class Texture2DArray(Texture): m_StreamData: Optional[StreamingInfo] = None m_UsageMode: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Texture3D(Texture): image_data: bytes m_Height: int @@ -4708,7 +5070,8 @@ class Texture3D(Texture): m_TextureFormat: Optional[int] = None m_UsageMode: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VideoClip(NamedObject): Height: int Width: int @@ -4729,29 +5092,35 @@ class VideoClip(NamedObject): m_VideoShaders: Optional[List[PPtr[Shader]]] = None m_sRGB: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VisualEffectObject(NamedObject, ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class VisualEffectAsset(VisualEffectObject): m_Infos: VisualEffectInfo m_Name: str m_Systems: List[VFXSystemDesc] -@define(kw_only=True, slots=False) + +@unitypy_define class VisualEffectSubgraph(VisualEffectObject, ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class VisualEffectSubgraphBlock(VisualEffectSubgraph): m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class VisualEffectSubgraphOperator(VisualEffectSubgraph): m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class VisualEffectResource(NamedObject): m_Graph: PPtr[MonoBehaviour] m_Infos: Union[VisualEffectSettings, VisualEffectInfo] @@ -4759,7 +5128,8 @@ class VisualEffectResource(NamedObject): m_ShaderSources: Optional[List[VFXShaderSourceDesc]] = None m_Systems: Optional[List[VFXEditorSystemDesc]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class EditorExtensionImpl(Object): gFlattenedTypeTree: Optional[List[int]] = None m_DataTemplate: Optional[PPtr[DataTemplate]] = None @@ -4767,7 +5137,8 @@ class EditorExtensionImpl(Object): m_OverrideVariable: Optional[bitset] = None m_TemplateFather: Optional[PPtr[EditorExtensionImpl]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class EditorSettings(Object): m_AssetNamingUsesSpace: Optional[bool] = None m_AssetPipelineMode: Optional[int] = None @@ -4821,7 +5192,8 @@ class EditorSettings(Object): m_WebSecurityEmulationEnabled: Optional[int] = None m_WebSecurityEmulationHostUrl: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class EditorUserBuildSettings(Object): m_ActiveBuildTarget: int m_AllowDebugging: bool @@ -4967,7 +5339,8 @@ class EditorUserBuildSettings(Object): m_XboxOneUsername: Optional[str] = None m_macosXcodeBuildConfig: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class EditorUserSettings(Object): m_VCAutomaticAdd: bool m_VCDebugCmd: bool @@ -4998,27 +5371,33 @@ class EditorUserSettings(Object): m_VCUserName: Optional[str] = None m_VCWorkspace: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class EmptyObject(Object): pass -@define(kw_only=True, slots=False) + +@unitypy_define class GUIDSerializer(Object): guidToPath: List[Tuple[GUID, str]] -@define(kw_only=True, slots=False) + +@unitypy_define class GameManager(Object, ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class GlobalGameManager(GameManager, ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class AnimationManager(GlobalGameManager): pass -@define(kw_only=True, slots=False) + +@unitypy_define class AudioManager(GlobalGameManager): Default_Speaker_Mode: int Doppler_Factor: float @@ -5035,7 +5414,8 @@ class AudioManager(GlobalGameManager): m_VirtualVoiceCount: Optional[int] = None m_VirtualizeEffects: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BuildSettings(GlobalGameManager): enableDynamicBatching: bool hasAdvancedVersion: bool @@ -5063,28 +5443,35 @@ class BuildSettings(GlobalGameManager): m_AuthToken: Optional[str] = None m_GraphicsAPIs: Optional[List[int]] = None preloadedPlugins: Optional[List[str]] = None - runtimeClassHashes: Optional[Union[List[Tuple[int, int]], List[Tuple[int, Hash128]]]] = None + runtimeClassHashes: Optional[ + Union[List[Tuple[int, int]], List[Tuple[int, Hash128]]] + ] = None scenes: Optional[List[str]] = None scriptHashes: Optional[List[Tuple[Hash128, Hash128]]] = None usesOnMouseEvents: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class CloudWebServicesManager(GlobalGameManager): pass -@define(kw_only=True, slots=False) + +@unitypy_define class ClusterInputManager(GlobalGameManager): m_Inputs: List[ClusterInput] -@define(kw_only=True, slots=False) + +@unitypy_define class CrashReportManager(GlobalGameManager): pass -@define(kw_only=True, slots=False) + +@unitypy_define class DelayedCallManager(GlobalGameManager): pass -@define(kw_only=True, slots=False) + +@unitypy_define class GraphicsSettings(GlobalGameManager): m_AlwaysIncludedShaders: List[PPtr[Shader]] m_AllowEnlightenSupportForUpgradedProject: Optional[bool] = None @@ -5122,16 +5509,19 @@ class GraphicsSettings(GlobalGameManager): m_TransparencySortMode: Optional[int] = None m_VideoShadersIncludeMode: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class InputManager(GlobalGameManager): m_Axes: List[InputAxis] m_UsePhysicalKeys: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MasterServerInterface(GlobalGameManager): pass -@define(kw_only=True, slots=False) + +@unitypy_define class MonoManager(GlobalGameManager): m_Scripts: List[PPtr[MonoScript]] m_AssemblyNames: Optional[List[str]] = None @@ -5139,33 +5529,39 @@ class MonoManager(GlobalGameManager): m_RuntimeClassHashes: Optional[List[Tuple[int, Hash128]]] = None m_ScriptHashes: Optional[List[Tuple[Hash128, Hash128]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MultiplayerManager(GlobalGameManager): m_ActiveMultiplayerRole: Optional[int] = None m_ActiveMultiplayerRoles: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class NavMeshProjectSettings(GlobalGameManager): areas: List[NavMeshAreaData] m_LastAgentTypeID: Optional[int] = None m_SettingNames: Optional[List[str]] = None m_Settings: Optional[List[NavMeshBuildSettings]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class NetworkManager(GlobalGameManager): m_AssetToPrefab: List[Tuple[GUID, PPtr[GameObject]]] m_DebugLevel: int m_Sendrate: float -@define(kw_only=True, slots=False) + +@unitypy_define class NotificationManager(GlobalGameManager): pass -@define(kw_only=True, slots=False) + +@unitypy_define class PerformanceReportingManager(GlobalGameManager): pass -@define(kw_only=True, slots=False) + +@unitypy_define class Physics2DSettings(GlobalGameManager): m_DefaultMaterial: PPtr[PhysicsMaterial2D] m_Gravity: Vector2f @@ -5204,7 +5600,8 @@ class Physics2DSettings(GlobalGameManager): m_UseSubStepping: Optional[bool] = None m_VelocityThreshold: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PhysicsManager(GlobalGameManager): m_BounceThreshold: float m_DefaultMaterial: Union[PPtr[PhysicMaterial], PPtr[PhysicsMaterial]] @@ -5251,7 +5648,8 @@ class PhysicsManager(GlobalGameManager): m_WorldBounds: Optional[AABB] = None m_WorldSubdivisions: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PlayerSettings(GlobalGameManager): AndroidProfiler: bool allowedAutorotateToLandscapeLeft: bool @@ -5500,7 +5898,8 @@ class PlayerSettings(GlobalGameManager): xboxSkinOnGPU: Optional[bool] = None xboxSpeechDB: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class QualitySettings(GlobalGameManager): Beautiful: Optional[QualitySetting] = None Fantastic: Optional[QualitySetting] = None @@ -5517,12 +5916,14 @@ class QualitySettings(GlobalGameManager): m_StrippedMaximumLODLevel: Optional[int] = None m_TextureMipmapLimitGroupNames: Optional[List[str]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ResourceManager(GlobalGameManager): m_Container: List[Tuple[str, PPtr[Object]]] m_DependentAssets: Optional[List[ResourceManager_Dependency]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class RuntimeInitializeOnLoadManager(GlobalGameManager): m_AfterAssembliesLoadedMethodExecutionOrders: Optional[List[int]] = None m_AfterAssembliesLoadedUnityMethodExecutionOrders: Optional[List[int]] = None @@ -5541,16 +5942,19 @@ class RuntimeInitializeOnLoadManager(GlobalGameManager): m_SubsystemRegistrationUnityMethodExecutionOrders: Optional[List[int]] = None m_UnityMethodExecutionOrders: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ShaderNameRegistry(GlobalGameManager): m_PreloadShaders: bool m_Shaders: NameToObjectMap -@define(kw_only=True, slots=False) + +@unitypy_define class StreamingManager(GlobalGameManager): pass -@define(kw_only=True, slots=False) + +@unitypy_define class TagManager(GlobalGameManager): tags: List[str] Builtin_Layer_0: Optional[str] = None @@ -5589,18 +5993,21 @@ class TagManager(GlobalGameManager): m_RenderingLayers: Optional[List[str]] = None m_SortingLayers: Optional[List[SortingLayerEntry]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TimeManager(GlobalGameManager): Fixed_Timestep: Union[RationalTime, float] Maximum_Allowed_Timestep: float m_TimeScale: float Maximum_Particle_Timestep: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class UnityAdsManager(GlobalGameManager): pass -@define(kw_only=True, slots=False) + +@unitypy_define class UnityAnalyticsManager(GlobalGameManager): m_Enabled: Optional[bool] = None m_InitializeOnStartup: Optional[bool] = None @@ -5608,7 +6015,8 @@ class UnityAnalyticsManager(GlobalGameManager): m_TestEventUrl: Optional[str] = None m_TestMode: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class UnityConnectSettings(GlobalGameManager): UnityAnalyticsSettings: UnityAnalyticsSettings UnityPurchasingSettings: UnityPurchasingSettings @@ -5625,7 +6033,8 @@ class UnityConnectSettings(GlobalGameManager): m_TestInitMode: Optional[int] = None m_TestMode: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VFXManager(GlobalGameManager): m_CopyBufferShader: PPtr[ComputeShader] m_FixedTimeStep: float @@ -5642,15 +6051,18 @@ class VFXManager(GlobalGameManager): m_RuntimeVersion: Optional[int] = None m_StripUpdateShader: Optional[PPtr[ComputeShader]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LevelGameManager(GameManager, ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class HaloManager(LevelGameManager): pass -@define(kw_only=True, slots=False) + +@unitypy_define class LightmapSettings(LevelGameManager): m_Lightmaps: List[LightmapData] m_LightmapsMode: int @@ -5664,19 +6076,22 @@ class LightmapSettings(LevelGameManager): m_UseDualLightmapsInForward: Optional[bool] = None m_UseShadowmask: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class NavMeshSettings(LevelGameManager): m_NavMesh: Optional[PPtr[NavMesh]] = None m_NavMeshData: Optional[PPtr[NavMeshData]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class OcclusionCullingSettings(LevelGameManager): m_OcclusionCullingData: PPtr[OcclusionCullingData] m_Portals: List[PPtr[OcclusionPortal]] m_SceneGUID: GUID m_StaticRenderers: List[PPtr[Renderer]] -@define(kw_only=True, slots=False) + +@unitypy_define class RenderSettings(LevelGameManager): m_FlareStrength: float m_Fog: bool @@ -5709,7 +6124,8 @@ class RenderSettings(LevelGameManager): m_Sun: Optional[PPtr[Light]] = None m_UseRadianceAmbientProbe: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class HierarchyState(Object): expanded: List[PPtr[Object]] selection: List[PPtr[Object]] @@ -5718,43 +6134,52 @@ class HierarchyState(Object): scrollposition_y: Optional[float] = None scrollposition_y: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class InspectorExpandedState(Object): m_ExpandedData: List[ExpandedData] -@define(kw_only=True, slots=False) + +@unitypy_define class MarshallingTestObject(Object): m_Prop: int -@define(kw_only=True, slots=False) + +@unitypy_define class MemorySettings(Object): pass -@define(kw_only=True, slots=False) + +@unitypy_define class NScreenBridge(Object): pass -@define(kw_only=True, slots=False) + +@unitypy_define class NativeObjectType(Object): m_Inner: NativeType -@define(kw_only=True, slots=False) + +@unitypy_define class PackedAssets(Object): m_Contents: List[BuildReportPackedAssetInfo] m_Overhead: int m_ShortPath: str m_File: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PlatformModuleSetup(Object): modules: List[Module] -@define(kw_only=True, slots=False) + +@unitypy_define class PluginBuildInfo(Object): m_EditorPlugins: List[str] m_RuntimePlugins: List[str] -@define(kw_only=True, slots=False) + +@unitypy_define class Prefab(Object): m_RootGameObject: PPtr[GameObject] m_ContainsMissingSerializeReferenceTypes: Optional[bool] = None @@ -5766,18 +6191,21 @@ class Prefab(Object): m_ParentPrefab: Optional[PPtr[Prefab]] = None m_SourcePrefab: Optional[PPtr[Prefab]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PrefabInstance(Object): m_Modification: PrefabModification m_RootGameObject: PPtr[GameObject] m_SourcePrefab: PPtr[Prefab] -@define(kw_only=True, slots=False) + +@unitypy_define class PresetManager(Object): m_DefaultList: Optional[List[DefaultPresetList]] = None m_DefaultPresets: Optional[List[Tuple[PresetType, List[DefaultPreset]]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PropertyModificationsTargetTestObject(Object): m_Array: List[PropertyModificationsTargetTestNativeObject] m_Data: PropertyModificationsTargetTestNativeObject @@ -5787,15 +6215,18 @@ class PropertyModificationsTargetTestObject(Object): m_BytesSize: Optional[int] = None m_Floats: Optional[List[float]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class RenderPassAttachment(Object): pass -@define(kw_only=True, slots=False) + +@unitypy_define class SceneRoots(Object): m_Roots: List[PPtr[Object]] -@define(kw_only=True, slots=False) + +@unitypy_define class SceneVisibilityState(Object): m_IsolationMode: Optional[bool] = None m_MainStageIsolated: Optional[bool] = None @@ -5805,99 +6236,119 @@ class SceneVisibilityState(Object): m_SceneVisibilityData: Optional[SceneDataContainer] = None m_SceneVisibilityDataIsolated: Optional[SceneDataContainer] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ScenesUsingAssets(Object): m_ListOfScenesUsingEachAsset: List[Tuple[str, List[str]]] m_ScenesUsingAssets: List[BuildReportScenesUsingAsset] -@define(kw_only=True, slots=False) + +@unitypy_define class SerializableManagedHost(Object): m_Script: PPtr[MonoScript] -@define(kw_only=True, slots=False) + +@unitypy_define class SerializableManagedRefTestClass(Object): m_Script: PPtr[MonoScript] -@define(kw_only=True, slots=False) + +@unitypy_define class ShaderContainer(Object): pass -@define(kw_only=True, slots=False) + +@unitypy_define class SiblingDerived(Object): pass -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteAtlasDatabase(Object): pass -@define(kw_only=True, slots=False) + +@unitypy_define class TestObjectVectorPairStringBool(Object): m_Map: List[Tuple[str, bool]] m_String: str -@define(kw_only=True, slots=False) + +@unitypy_define class TestObjectWithSerializedAnimationCurve(Object): m_Curve: AnimationCurve -@define(kw_only=True, slots=False) + +@unitypy_define class TestObjectWithSerializedArray(Object): m_ClampTestValue: float m_IntegerArray: List[int] -@define(kw_only=True, slots=False) + +@unitypy_define class TestObjectWithSerializedMapStringBool(Object): m_Map: List[Tuple[str, bool]] m_String: str -@define(kw_only=True, slots=False) + +@unitypy_define class TestObjectWithSerializedMapStringNonAlignedStruct(Object): m_Map: List[Tuple[str, NonAlignedStruct]] m_String: str -@define(kw_only=True, slots=False) + +@unitypy_define class TestObjectWithSpecialLayoutOne(Object): differentLayout: LayoutDataOne sameLayout: LayoutDataOne -@define(kw_only=True, slots=False) + +@unitypy_define class TestObjectWithSpecialLayoutTwo(Object): differentLayout: LayoutDataTwo sameLayout: LayoutDataThree -@define(kw_only=True, slots=False) + +@unitypy_define class TilemapEditorUserSettings(Object): m_FocusMode: int m_LastUsedPalette: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class VersionControlSettings(Object): m_Mode: str m_CollabEditorSettings: Optional[CollabEditorSettings] = None m_TrackPackagesOutsideProject: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VideoBuildInfo(Object): m_IsVideoModuleDisabled: bool m_VideoClipCount: int -@define(kw_only=True, slots=False) + +@unitypy_define class AABB: m_Center: Vector3f m_Extent: Vector3f -@define(kw_only=True, slots=False) + +@unitypy_define class AddedComponent: addedObject: PPtr[Component] insertIndex: int targetCorrespondingSourceObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class AddedGameObject: addedObject: PPtr[Transform] insertIndex: int targetCorrespondingSourceObject: PPtr[Transform] -@define(kw_only=True, slots=False) + +@unitypy_define class AndroidDeviceFilterData: androidOsVersionString: str brandName: str @@ -5907,24 +6358,28 @@ class AndroidDeviceFilterData: vendorName: str vulkanApiVersionString: str -@define(kw_only=True, slots=False) + +@unitypy_define class AnimationClipBindingConstant: genericBindings: List[GenericBinding] pptrCurveMapping: List[PPtr[Object]] -@define(kw_only=True, slots=False) + +@unitypy_define class AnimationClipOverride: m_OriginalClip: PPtr[AnimationClip] m_OverrideClip: PPtr[AnimationClip] -@define(kw_only=True, slots=False) + +@unitypy_define class AnimationCurve: m_Curve: List[Keyframe] m_PostInfinity: int m_PreInfinity: int m_RotationOrder: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AnimationEvent: data: str floatParameter: float @@ -5934,13 +6389,15 @@ class AnimationEvent: objectReferenceParameter: PPtr[Object] time: float -@define(kw_only=True, slots=False) + +@unitypy_define class AnimatorCondition: m_ConditionEvent: str m_ConditionMode: int m_EventTreshold: float -@define(kw_only=True, slots=False) + +@unitypy_define class Annotation: m_ClassID: int m_Flags: int @@ -5948,7 +6405,8 @@ class Annotation: m_IconEnabled: bool m_ScriptClass: str -@define(kw_only=True, slots=False) + +@unitypy_define class ArticulationDrive: damping: float forceLimit: float @@ -5959,7 +6417,8 @@ class ArticulationDrive: upperLimit: float driveType: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AspectRatios: Others: bool x16_10: bool @@ -5967,13 +6426,15 @@ class AspectRatios: x4_3: bool x5_4: bool -@define(kw_only=True, slots=False) + +@unitypy_define class AssemblyJsonAsset(TextAsset): m_Name: str m_Script: str m_PathName: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AssemblyJsonImporter(AssetImporter): m_AssetBundleName: str m_AssetBundleVariant: str @@ -5981,7 +6442,8 @@ class AssemblyJsonImporter(AssetImporter): m_UserData: str m_ExternalObjects: Optional[List[Tuple[SourceAssetIdentifier, PPtr[Object]]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Asset: children: List[GUID] labels: AssetLabels @@ -5991,7 +6453,9 @@ class Asset: type: int assetBundleIndex: Optional[int] = None digest: Optional[MdFour] = None - guidOfPathLocationDependencies: Optional[Union[List[Tuple[str, GUID]], List[Tuple[GUID, str]]]] = None + guidOfPathLocationDependencies: Optional[ + Union[List[Tuple[str, GUID]], List[Tuple[GUID, str]]] + ] = None hash: Optional[Union[Hash128, MdFour]] = None hashOfImportedAssetDependencies: Optional[List[GUID]] = None hashOfSourceAssetDependencies: Optional[List[GUID]] = None @@ -6003,24 +6467,28 @@ class Asset: modificationDate_1_: Optional[int] = None scriptedImporterClassID: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AssetBundleFullName: m_AssetBundleName: str m_AssetBundleVariant: str -@define(kw_only=True, slots=False) + +@unitypy_define class AssetBundleInfo: AssetBundleDependencies: List[int] AssetBundleHash: Hash128 -@define(kw_only=True, slots=False) + +@unitypy_define class AssetBundleScriptInfo: assemblyName: str className: str hash: int nameSpace: str -@define(kw_only=True, slots=False) + +@unitypy_define class AssetDatabase(Object): m_Assets: List[Tuple[GUID, Asset]] m_AssetBundleNames: Optional[List[Tuple[int, AssetBundleFullName]]] = None @@ -6029,23 +6497,27 @@ class AssetDatabase(Object): m_UnityShadersVersion: Optional[int] = None m_lastValidVersionHashes: Optional[List[Tuple[int, int]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AssetDatabaseMetrics: totalAssetCount: int nonProAssetCount: Optional[int] = None nonProAssetsCreatedAfterProLicense: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AssetImporterHashKey: ScriptClass: str type: int -@define(kw_only=True, slots=False) + +@unitypy_define class AssetImporterLog(NamedObject): m_Logs: List[AssetImporter_ImportError] m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class AssetImporter_ImportError: error: str file: str @@ -6053,34 +6525,40 @@ class AssetImporter_ImportError: mode: int object: PPtr[Object] -@define(kw_only=True, slots=False) + +@unitypy_define class AssetInfo: asset: PPtr[Object] preloadIndex: int preloadSize: int -@define(kw_only=True, slots=False) + +@unitypy_define class AssetLabels: m_Labels: List[str] -@define(kw_only=True, slots=False) + +@unitypy_define class AssetTimeStamp: metaModificationDate_0_: int metaModificationDate_1_: int modificationDate_0_: int modificationDate_1_: int -@define(kw_only=True, slots=False) + +@unitypy_define class AttachmentIndexArray: activeAttachments: int attachments: List[int] -@define(kw_only=True, slots=False) + +@unitypy_define class AttachmentInfo: format: int needsResolve: bool -@define(kw_only=True, slots=False) + +@unitypy_define class AudioImporterOutput: editorOutputContainerFormat: int editorOutputSettings: SampleSettings @@ -6088,7 +6566,8 @@ class AudioImporterOutput: outputSettings: SampleSettings playerResource: Optional[StreamedResource] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AudioMixerConstant: effectGUIDs: List[GUID] effects: List[EffectConstant] @@ -6104,15 +6583,18 @@ class AudioMixerConstant: snapshots: List[SnapshotConstant] groupConnections: Optional[List[GroupConnection]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AudioMixerLiveUpdateBool(ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class AudioMixerLiveUpdateFloat(ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class AutoOffMeshLinkData: m_Area: int m_End: Vector3f @@ -6121,12 +6603,14 @@ class AutoOffMeshLinkData: m_Radius: float m_Start: Vector3f -@define(kw_only=True, slots=False) + +@unitypy_define class AvatarBodyMask(NamedObject): m_Mask: List[int] m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class AvatarConstant: m_Human: OffsetPtr m_HumanSkeletonIndexArray: List[int] @@ -6143,12 +6627,14 @@ class AvatarConstant: m_SkeletonNameIDArray: Optional[List[int]] = None m_SkeletonPose: Optional[OffsetPtr] = None -@define(kw_only=True, slots=False) + +@unitypy_define class AvatarSkeletonMaskElement: path: str weight: float -@define(kw_only=True, slots=False) + +@unitypy_define class Axes: m_Length: float m_Limit: Limit @@ -6157,15 +6643,18 @@ class Axes: m_Sgn: Union[float3, float4] m_Type: int -@define(kw_only=True, slots=False) + +@unitypy_define class BitField: m_Bits: int -@define(kw_only=True, slots=False) + +@unitypy_define class Blend1dDataConstant: m_ChildThresholdArray: List[float] -@define(kw_only=True, slots=False) + +@unitypy_define class Blend2dDataConstant: m_ChildMagnitudeArray: Optional[List[float]] = None m_ChildNeighborListArray: Optional[List[MotionNeighborList]] = None @@ -6174,31 +6663,36 @@ class Blend2dDataConstant: m_ChildPositionArray: Optional[List[Vector2f]] = None m_ChildThresholdArray: Optional[List[float]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BlendDirectDataConstant: m_ChildBlendEventIDArray: List[int] m_NormalizedBlendValues: bool -@define(kw_only=True, slots=False) + +@unitypy_define class BlendShapeData: channels: List[MeshBlendShapeChannel] fullWeights: List[float] shapes: List[MeshBlendShape] vertices: List[BlendShapeVertex] -@define(kw_only=True, slots=False) + +@unitypy_define class BlendShapeVertex: index: int normal: Vector3f tangent: Vector3f vertex: Vector3f -@define(kw_only=True, slots=False) + +@unitypy_define class BlendTreeConstant: m_NodeArray: List[OffsetPtr] m_BlendEventArrayConstant: Optional[OffsetPtr] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BlendTreeNodeConstant: m_BlendEventID: int m_ChildIndices: List[int] @@ -6214,7 +6708,8 @@ class BlendTreeNodeConstant: m_CycleOffset: Optional[float] = None m_Mirror: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BoneInfluence: boneIndex_0_: int boneIndex_1_: int @@ -6225,7 +6720,8 @@ class BoneInfluence: weight_2_: float weight_3_: float -@define(kw_only=True, slots=False) + +@unitypy_define class BoneWeights4: boneIndex_0_: int boneIndex_1_: int @@ -6236,7 +6732,8 @@ class BoneWeights4: weight_2_: float weight_3_: float -@define(kw_only=True, slots=False) + +@unitypy_define class BranchWindLevel: m_afBend_0: float m_afBend_1: float @@ -6340,20 +6837,23 @@ class BranchWindLevel: m_afTurbulence_9: float m_fIndependence: float -@define(kw_only=True, slots=False) + +@unitypy_define class BufferBinding: m_Index: int m_NameIndex: int m_ArraySize: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BuildReportFile: id: int path: str role: str totalSize: int -@define(kw_only=True, slots=False) + +@unitypy_define class BuildReportPackedAssetInfo: classID: int fileID: int @@ -6362,12 +6862,14 @@ class BuildReportPackedAssetInfo: buildTimeAssetPath: Optional[str] = None offset: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BuildReportScenesUsingAsset: assetPath: str scenePaths: List[str] -@define(kw_only=True, slots=False) + +@unitypy_define class BuildStepInfo: messages: List[BuildStepMessage] stepName: str @@ -6375,12 +6877,14 @@ class BuildStepInfo: duration: Optional[int] = None durationTicks: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BuildStepMessage: content: str type: int -@define(kw_only=True, slots=False) + +@unitypy_define class BuildSummary: assetBundleOptions: int crc: int @@ -6402,7 +6906,8 @@ class BuildSummary: totalTimeMS: Optional[int] = None totalTimeTicks: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BuildTargetSettings: m_BuildTarget: str m_TextureFormat: int @@ -6413,29 +6918,34 @@ class BuildTargetSettings: m_TextureHeight: Optional[int] = None m_TextureWidth: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class BuildTextureStackReference: groupName: str itemName: str -@define(kw_only=True, slots=False) + +@unitypy_define class BuiltAssetBundleInfo: bundleArchiveFile: int bundleName: str packagedFileIndices: List[int] -@define(kw_only=True, slots=False) + +@unitypy_define class BuiltinShaderSettings: m_Mode: int m_Shader: PPtr[Shader] -@define(kw_only=True, slots=False) + +@unitypy_define class CGProgram(TextAsset): m_Name: str m_Script: str m_PathName: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class CachedAssetMetaData: guid: GUID originalChangeset: int @@ -6444,20 +6954,23 @@ class CachedAssetMetaData: originalParent: GUID pathName: str -@define(kw_only=True, slots=False) + +@unitypy_define class Channel: attributeName: str byteOffset: int curve: AnimationCurve -@define(kw_only=True, slots=False) + +@unitypy_define class ChannelInfo: dimension: int format: int offset: int stream: int -@define(kw_only=True, slots=False) + +@unitypy_define class CharacterInfo: index: int uv: Rectf @@ -6466,7 +6979,8 @@ class CharacterInfo: flipped: Optional[bool] = None width: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Child: m_IsAnim: bool m_Motion: PPtr[Motion] @@ -6476,17 +6990,20 @@ class Child: m_Mirror: Optional[bool] = None m_Position: Optional[Vector2f] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ChildAnimatorState: m_Position: Vector3f m_State: PPtr[AnimatorState] -@define(kw_only=True, slots=False) + +@unitypy_define class ChildAnimatorStateMachine: m_Position: Vector3f m_StateMachine: PPtr[AnimatorStateMachine] -@define(kw_only=True, slots=False) + +@unitypy_define class ChildMotion: m_CycleOffset: float m_DirectBlendParameter: str @@ -6496,7 +7013,8 @@ class ChildMotion: m_Threshold: float m_TimeScale: float -@define(kw_only=True, slots=False) + +@unitypy_define class ClampVelocityModule: dampen: float enabled: bool @@ -6510,7 +7028,8 @@ class ClampVelocityModule: multiplyDragByParticleSize: Optional[bool] = None multiplyDragByParticleVelocity: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ClassInfo: m_AssemblyNameIndex: int m_ClassName: str @@ -6520,20 +7039,23 @@ class ClassInfo: m_NumOfMethods: int m_NamespaceName: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ClassMethodInfo: m_ClassIndex: int m_MethodName: str m_OrderNumber: int -@define(kw_only=True, slots=False) + +@unitypy_define class Clip: m_DenseClip: DenseClip m_StreamedClip: StreamedClip m_Binding: Optional[OffsetPtr] = None m_ConstantClip: Optional[ConstantClip] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ClipAnimationInfo: firstFrame: Union[int, float] lastFrame: Union[int, float] @@ -6566,12 +7088,14 @@ class ClipAnimationInfo: takeName: Optional[str] = None transformMask: Optional[List[TransformMaskElement]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ClipAnimationInfoCurve: curve: AnimationCurve name: str -@define(kw_only=True, slots=False) + +@unitypy_define class ClipMuscleConstant: m_AverageAngularSpeed: float m_AverageSpeed: Union[float3, float4] @@ -6604,25 +7128,29 @@ class ClipMuscleConstant: m_StopX: Optional[xform] = None m_ValueArrayReferencePose: Optional[List[float]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ClothAttachment: m_Collider: PPtr[Collider] m_Tearable: bool m_TwoWayInteraction: bool -@define(kw_only=True, slots=False) + +@unitypy_define class ClothConstrainCoefficients: collisionSphereDistance: float maxDistance: float collisionSphereRadius: Optional[float] = None maxDistanceBias: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ClothSphereColliderPair: first: PPtr[SphereCollider] second: PPtr[SphereCollider] -@define(kw_only=True, slots=False) + +@unitypy_define class ClusterInput: m_DeviceName: str m_Index: int @@ -6630,19 +7158,23 @@ class ClusterInput: m_ServerUrl: str m_Type: int -@define(kw_only=True, slots=False) + +@unitypy_define class CollabEditorSettings: inProgressEnabled: bool -@define(kw_only=True, slots=False) + +@unitypy_define class Collision(ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class Collision2D(ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class CollisionModule: enabled: bool minKillSpeed: float @@ -6676,22 +7208,26 @@ class CollisionModule: radiusScale: Optional[float] = None voxelSize: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ColorBySpeedModule: enabled: bool gradient: MinMaxGradient range: Vector2f -@define(kw_only=True, slots=False) + +@unitypy_define class ColorModule: enabled: bool gradient: MinMaxGradient -@define(kw_only=True, slots=False) + +@unitypy_define class ComponentPair: component: PPtr[Component] -@define(kw_only=True, slots=False) + +@unitypy_define class CompressedAnimationCurve: m_Path: str m_PostInfinity: int @@ -6700,7 +7236,8 @@ class CompressedAnimationCurve: m_Times: PackedBitVector m_Values: PackedBitVector -@define(kw_only=True, slots=False) + +@unitypy_define class CompressedMesh: m_BoneIndices: PackedBitVector m_NormalSigns: PackedBitVector @@ -6716,23 +7253,27 @@ class CompressedMesh: m_FloatColors: Optional[PackedBitVector] = None m_UVInfo: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ComputeBufferCounter: bindpoint: int offset: int -@define(kw_only=True, slots=False) + +@unitypy_define class ComputeShaderBuiltinSampler: bindPoint: int sampler: int -@define(kw_only=True, slots=False) + +@unitypy_define class ComputeShaderCB: byteSize: int name: Union[FastPropertyName, str] params: List[ComputeShaderParam] -@define(kw_only=True, slots=False) + +@unitypy_define class ComputeShaderKernel: builtinSamplers: List[ComputeShaderBuiltinSampler] cbs: List[ComputeShaderResource] @@ -6745,7 +7286,8 @@ class ComputeShaderKernel: requirements: Optional[int] = None threadGroupSize: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ComputeShaderKernelParent: name: str dynamicKeywords: Optional[List[str]] = None @@ -6756,7 +7298,8 @@ class ComputeShaderKernelParent: variantIndices: Optional[List[Tuple[str, int]]] = None variantMap: Optional[List[Tuple[str, ComputeShaderKernel]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ComputeShaderParam: arraySize: int colCount: int @@ -6765,7 +7308,8 @@ class ComputeShaderParam: rowCount: int type: int -@define(kw_only=True, slots=False) + +@unitypy_define class ComputeShaderPlatformVariant: constantBuffers: List[ComputeShaderCB] kernels: List[ComputeShaderKernelParent] @@ -6773,7 +7317,8 @@ class ComputeShaderPlatformVariant: targetLevel: int targetRenderer: int -@define(kw_only=True, slots=False) + +@unitypy_define class ComputeShaderResource: bindPoint: int name: Union[FastPropertyName, str] @@ -6783,7 +7328,8 @@ class ComputeShaderResource: secondaryBindPoint: Optional[int] = None texDimension: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ComputeShaderVariant: constantBuffers: List[ComputeShaderCB] kernels: List[ComputeShaderKernel] @@ -6791,26 +7337,30 @@ class ComputeShaderVariant: targetRenderer: int resourcesResolved: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Condition: m_ConditionEvent: str m_ConditionMode: int m_EventTreshold: float m_ExitTime: float -@define(kw_only=True, slots=False) + +@unitypy_define class ConditionConstant: m_ConditionMode: int m_EventID: int m_EventThreshold: float m_ExitTime: float -@define(kw_only=True, slots=False) + +@unitypy_define class ConfigSetting: flags: int value: str -@define(kw_only=True, slots=False) + +@unitypy_define class ConstantBuffer: m_MatrixParams: List[MatrixParameter] m_NameIndex: int @@ -6819,16 +7369,19 @@ class ConstantBuffer: m_IsPartialCB: Optional[bool] = None m_StructParams: Optional[List[StructParameter]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ConstantClip: data: List[float] -@define(kw_only=True, slots=False) + +@unitypy_define class ConstraintSource: sourceTransform: PPtr[Transform] weight: float -@define(kw_only=True, slots=False) + +@unitypy_define class ControllerConstant: m_DefaultValues: OffsetPtr m_StateMachineArray: List[OffsetPtr] @@ -6836,14 +7389,16 @@ class ControllerConstant: m_HumanLayerArray: Optional[List[OffsetPtr]] = None m_LayerArray: Optional[List[OffsetPtr]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class CrashReportingSettings: m_Enabled: bool m_EventUrl: str m_LogBufferSize: Optional[int] = None m_NativeEventUrl: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class CustomDataModule: color0: MinMaxGradient color1: MinMaxGradient @@ -6861,7 +7416,8 @@ class CustomDataModule: vectorComponentCount0: int vectorComponentCount1: int -@define(kw_only=True, slots=False) + +@unitypy_define class DataTemplate(NamedObject): m_Father: PPtr[DataTemplate] m_IsDataTemplate: bool @@ -6869,22 +7425,26 @@ class DataTemplate(NamedObject): m_Name: str m_Objects: List[PPtr[EditorExtension]] -@define(kw_only=True, slots=False) + +@unitypy_define class DateTime: ticks: int -@define(kw_only=True, slots=False) + +@unitypy_define class DefaultPreset: m_Preset: PPtr[Preset] m_Disabled: Optional[bool] = None m_Filter: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class DefaultPresetList: defaultPresets: List[DefaultPreset] type: PresetType -@define(kw_only=True, slots=False) + +@unitypy_define class DeletedItem: changeset: int digest: Union[Hash128, MdFour] @@ -6893,7 +7453,8 @@ class DeletedItem: parent: GUID type: int -@define(kw_only=True, slots=False) + +@unitypy_define class DenseClip: m_BeginTime: float m_CurveCount: int @@ -6901,7 +7462,8 @@ class DenseClip: m_SampleArray: List[float] m_SampleRate: float -@define(kw_only=True, slots=False) + +@unitypy_define class DetailDatabase: WavingGrassTint: ColorRGBA m_DetailPrototypes: List[DetailPrototype] @@ -6923,14 +7485,16 @@ class DetailDatabase: m_DetailScatterMode: Optional[int] = None m_RandomRotations: Optional[List[Vector3f]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class DetailPatch: layerIndices: List[int] bounds: Optional[AABB] = None coverage: Optional[List[int]] = None numberOfObjects: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class DetailPrototype: dryColor: ColorRGBA healthyColor: ColorRGBA @@ -6955,20 +7519,24 @@ class DetailPrototype: useDensityScaling: Optional[int] = None useInstancing: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class DeviceNone: pass -@define(kw_only=True, slots=False) + +@unitypy_define class DirectorGenericBinding: key: PPtr[Object] value: PPtr[Object] -@define(kw_only=True, slots=False) + +@unitypy_define class DirectorPlayer(Behaviour): m_GameObject: PPtr[GameObject] -@define(kw_only=True, slots=False) + +@unitypy_define class EffectConstant: bypass: bool groupConstantIndex: int @@ -6978,12 +7546,14 @@ class EffectConstant: type: int wetMixLevelIndex: int -@define(kw_only=True, slots=False) + +@unitypy_define class EmbeddedNativeType: m_FloatArray: List[float] m_String: str -@define(kw_only=True, slots=False) + +@unitypy_define class EmissionModule: enabled: bool m_BurstCount: int @@ -7005,14 +7575,16 @@ class EmissionModule: time2: Optional[float] = None time3: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class EnlightenRendererInformation: dynamicLightmapSTInSystem: Vector4f instanceHash: Hash128 renderer: PPtr[Object] systemId: int -@define(kw_only=True, slots=False) + +@unitypy_define class EnlightenSceneMapping: m_Renderers: List[EnlightenRendererInformation] m_SystemAtlases: List[EnlightenSystemAtlasInformation] @@ -7020,13 +7592,15 @@ class EnlightenSceneMapping: m_TerrainChunks: List[EnlightenTerrainChunksInformation] m_Probesets: Optional[List[Hash128]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class EnlightenSystemAtlasInformation: atlasHash: Hash128 atlasSize: int firstSystemId: int -@define(kw_only=True, slots=False) + +@unitypy_define class EnlightenSystemInformation: atlasIndex: int atlasOffsetX: int @@ -7036,24 +7610,28 @@ class EnlightenSystemInformation: rendererIndex: int rendererSize: int -@define(kw_only=True, slots=False) + +@unitypy_define class EnlightenTerrainChunksInformation: firstSystemId: int numChunksInX: int numChunksInY: int -@define(kw_only=True, slots=False) + +@unitypy_define class ExpandedData: m_ClassID: int m_ExpandedProperties: List[str] m_InspectorExpanded: bool m_ScriptClass: str -@define(kw_only=True, slots=False) + +@unitypy_define class ExposedReferenceTable: m_References: List[Tuple[str, PPtr[Object]]] -@define(kw_only=True, slots=False) + +@unitypy_define class Expression: data_0_: int data_1_: int @@ -7062,14 +7640,16 @@ class Expression: op: int valueIndex: int -@define(kw_only=True, slots=False) + +@unitypy_define class ExtensionPropertyValue: extensionName: str pluginName: str propertyName: str propertyValue: float -@define(kw_only=True, slots=False) + +@unitypy_define class ExternalForcesModule: enabled: bool influenceFilter: Optional[int] = None @@ -7078,7 +7658,8 @@ class ExternalForcesModule: multiplier: Optional[float] = None multiplierCurve: Optional[MinMaxCurve] = None -@define(kw_only=True, slots=False) + +@unitypy_define class FalloffTable: m_Table_0_: float m_Table_10_: float @@ -7094,11 +7675,13 @@ class FalloffTable: m_Table_8_: float m_Table_9_: float -@define(kw_only=True, slots=False) + +@unitypy_define class FastPropertyName: name: str -@define(kw_only=True, slots=False) + +@unitypy_define class FlareElement: m_Color: ColorRGBA m_Fade: bool @@ -7109,7 +7692,8 @@ class FlareElement: m_UseLightColor: bool m_Zoom: bool -@define(kw_only=True, slots=False) + +@unitypy_define class FloatCurve: attribute: str classID: int @@ -7118,7 +7702,8 @@ class FloatCurve: script: PPtr[MonoScript] flags: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ForceModule: enabled: bool inWorldSpace: bool @@ -7127,7 +7712,8 @@ class ForceModule: y: MinMaxCurve z: MinMaxCurve -@define(kw_only=True, slots=False) + +@unitypy_define class GISettings: m_AlbedoBoost: float m_BounceScale: float @@ -7137,7 +7723,8 @@ class GISettings: m_IndirectOutputScale: float m_TemporalCoherenceThreshold: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class GLTextureSettings: m_Aniso: int m_FilterMode: int @@ -7147,14 +7734,16 @@ class GLTextureSettings: m_WrapV: Optional[int] = None m_WrapW: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class GUID: data_0_: int data_1_: int data_2_: int data_3_: int -@define(kw_only=True, slots=False) + +@unitypy_define class GenericBinding: attribute: int customType: int @@ -7166,18 +7755,21 @@ class GenericBinding: isSerializeReferenceCurve: Optional[int] = None typeID: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class GfxBlendState: alphaToMask: int rt: List[GfxRenderTargetBlendState] separateMRTBlend: int -@define(kw_only=True, slots=False) + +@unitypy_define class GfxDepthState: depthFunc: int depthWrite: int -@define(kw_only=True, slots=False) + +@unitypy_define class GfxRasterState: conservative: int cullMode: int @@ -7185,7 +7777,8 @@ class GfxRasterState: depthClip: int slopeScaledDepthBias: float -@define(kw_only=True, slots=False) + +@unitypy_define class GfxRenderTargetBlendState: blendOp: int blendOpAlpha: int @@ -7195,7 +7788,8 @@ class GfxRenderTargetBlendState: srcBlendAlpha: int writeMask: int -@define(kw_only=True, slots=False) + +@unitypy_define class GfxStencilState: padding: int readMask: int @@ -7210,7 +7804,8 @@ class GfxStencilState: stencilZFailOpFront: int writeMask: int -@define(kw_only=True, slots=False) + +@unitypy_define class Google: depthFormat: int enableTransitionView: Optional[bool] = None @@ -7220,7 +7815,8 @@ class Google: useProtectedVideoMemory: Optional[bool] = None useSustainedPerformanceMode: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Gradient: atime0: Optional[int] = None atime1: Optional[int] = None @@ -7256,7 +7852,8 @@ class Gradient: m_NumAlphaKeys: Optional[int] = None m_NumColorKeys: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class GradientNEW: atime0: int atime1: int @@ -7285,7 +7882,8 @@ class GradientNEW: m_NumAlphaKeys: int m_NumColorKeys: int -@define(kw_only=True, slots=False) + +@unitypy_define class GraphicsStateInfo: appBackface: bool depthBias: float @@ -7300,13 +7898,15 @@ class GraphicsStateInfo: vertexLayout: int wireframe: bool -@define(kw_only=True, slots=False) + +@unitypy_define class GroupConnection: sendEffectIndex: int sourceGroupIndex: int targetGroupIndex: int -@define(kw_only=True, slots=False) + +@unitypy_define class GroupConstant: bypassEffects: bool mute: bool @@ -7316,11 +7916,13 @@ class GroupConstant: volumeIndex: int sendIndex: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Hand: m_HandBoneIndex: List[int] -@define(kw_only=True, slots=False) + +@unitypy_define class HandPose: m_CloseOpen: float m_DoFArray: List[float] @@ -7329,13 +7931,15 @@ class HandPose: m_InOut: float m_Override: float -@define(kw_only=True, slots=False) + +@unitypy_define class Handle: m_ID: int m_ParentHumanIndex: int m_X: xform -@define(kw_only=True, slots=False) + +@unitypy_define class Hash128: bytes_0_: int bytes_10_: int @@ -7354,21 +7958,24 @@ class Hash128: bytes_8_: int bytes_9_: int -@define(kw_only=True, slots=False) + +@unitypy_define class HeightMeshBVNode: i: int max: Vector3f min: Vector3f n: int -@define(kw_only=True, slots=False) + +@unitypy_define class HeightMeshData: m_Bounds: AABB m_Indices: List[int] m_Nodes: List[HeightMeshBVNode] m_Vertices: List[Vector3f] -@define(kw_only=True, slots=False) + +@unitypy_define class Heightmap: m_Heights: List[int] m_Levels: int @@ -7387,23 +7994,27 @@ class Heightmap: m_Thickness: Optional[float] = None m_Width: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class HeightmapData: terrainData: PPtr[Object] isRotated: Optional[bool] = None position: Optional[Vector3f] = None surfaceToTerrain: Optional[Matrix4x4f] = None -@define(kw_only=True, slots=False) + +@unitypy_define class HierarchicalSceneData: m_SceneGUID: GUID -@define(kw_only=True, slots=False) + +@unitypy_define class HoloLens: depthFormat: int depthBufferSharingEnabled: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Human: m_ArmStretch: float m_ArmTwist: float @@ -7427,13 +8038,15 @@ class Human: m_Handles: Optional[List[Handle]] = None m_HasTDoF: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class HumanBone: m_BoneName: str m_HumanName: str m_Limit: SkeletonBoneLimit -@define(kw_only=True, slots=False) + +@unitypy_define class HumanDescription: m_ArmStretch: float m_ArmTwist: float @@ -7452,7 +8065,8 @@ class HumanDescription: m_RootMotionBoneRotation: Optional[Quaternionf] = None m_SkeletonHasParents: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class HumanGoal: m_WeightR: float m_WeightT: float @@ -7460,7 +8074,8 @@ class HumanGoal: m_HintT: Optional[Union[float3, float4]] = None m_HintWeightT: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class HumanHandle: m_BoneName: str m_LookAt: bool @@ -7469,7 +8084,8 @@ class HumanHandle: m_Rotation: Quaternionf m_Scale: Vector3f -@define(kw_only=True, slots=False) + +@unitypy_define class HumanLayerConstant: m_Binding: int m_BodyMask: HumanPoseMask @@ -7481,7 +8097,8 @@ class HumanLayerConstant: m_DefaultWeight: Optional[float] = None m_SyncedLayerAffectsTiming: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class HumanPose: m_DoFArray: List[float] m_GoalArray: List[HumanGoal] @@ -7492,13 +8109,15 @@ class HumanPose: m_RootX: xform m_TDoFArray: Optional[Union[List[float4], List[float3]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class HumanPoseMask: word0: int word1: int word2: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Image: image_data: bytes m_Format: int @@ -7506,7 +8125,8 @@ class Image: m_RowBytes: int m_Width: int -@define(kw_only=True, slots=False) + +@unitypy_define class ImportLog_ImportLogEntry: file: str line: int @@ -7514,13 +8134,15 @@ class ImportLog_ImportLogEntry: mode: int object: PPtr[Object] -@define(kw_only=True, slots=False) + +@unitypy_define class InheritVelocityModule: enabled: bool m_Curve: MinMaxCurve m_Mode: int -@define(kw_only=True, slots=False) + +@unitypy_define class InitialModule: enabled: bool gravityModifier: Union[MinMaxCurve, float] @@ -7541,7 +8163,8 @@ class InitialModule: startSizeY: Optional[MinMaxCurve] = None startSizeZ: Optional[MinMaxCurve] = None -@define(kw_only=True, slots=False) + +@unitypy_define class InputAxis: altNegativeButton: str altPositiveButton: str @@ -7559,7 +8182,8 @@ class InputAxis: snap: bool type: int -@define(kw_only=True, slots=False) + +@unitypy_define class InputImportSettings: name: str alphaSource: Optional[int] = None @@ -7568,12 +8192,14 @@ class InputImportSettings: value: Optional[SubstanceValue] = None wrapMode: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class IntPoint: X: int Y: int -@define(kw_only=True, slots=False) + +@unitypy_define class Item: changeFlags: Optional[int] = None changeset: Optional[int] = None @@ -7589,17 +8215,20 @@ class Item: parentFolderID: Optional[int] = None type: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class JointAngleLimit2D: m_LowerAngle: float m_UpperAngle: float -@define(kw_only=True, slots=False) + +@unitypy_define class JointAngleLimits2D: m_LowerAngle: float m_UpperAngle: float -@define(kw_only=True, slots=False) + +@unitypy_define class JointDrive: maximumForce: float positionDamper: float @@ -7607,7 +8236,8 @@ class JointDrive: mode: Optional[int] = None useAcceleration: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class JointLimits: max: float min: float @@ -7617,35 +8247,41 @@ class JointLimits: maxBounce: Optional[float] = None minBounce: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class JointMotor: force: float freeSpin: int targetVelocity: float -@define(kw_only=True, slots=False) + +@unitypy_define class JointMotor2D: m_MaximumMotorForce: float m_MotorSpeed: float -@define(kw_only=True, slots=False) + +@unitypy_define class JointSpring: damper: float spring: float targetPosition: float -@define(kw_only=True, slots=False) + +@unitypy_define class JointSuspension2D: m_Angle: float m_DampingRatio: float m_Frequency: float -@define(kw_only=True, slots=False) + +@unitypy_define class JointTranslationLimits2D: m_LowerTranslation: float m_UpperTranslation: float -@define(kw_only=True, slots=False) + +@unitypy_define class Keyframe: inSlope: Union[Quaternionf, float, Vector3f] outSlope: Union[Quaternionf, float, Vector3f] @@ -7655,18 +8291,21 @@ class Keyframe: outWeight: Optional[Union[Quaternionf, float, Vector3f]] = None weightedMode: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LOD: renderers: List[LODRenderer] screenRelativeHeight: float fadeMode: Optional[int] = None fadeTransitionWidth: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LODRenderer: renderer: PPtr[Renderer] -@define(kw_only=True, slots=False) + +@unitypy_define class LayerConstant: m_Binding: int m_BodyMask: HumanPoseMask @@ -7679,25 +8318,30 @@ class LayerConstant: m_StateMachineMotionSetIndex: Optional[int] = None m_StateMachineSynchronizedLayerIndex: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LayoutDataOne: m_FloatArray: List[float] -@define(kw_only=True, slots=False) + +@unitypy_define class LayoutDataThree: m_AnotherFloatArray: List[float] -@define(kw_only=True, slots=False) + +@unitypy_define class LayoutDataTwo: m_FloatValue: float m_IntegerValue: int -@define(kw_only=True, slots=False) + +@unitypy_define class LeafInfoConstant: m_IDArray: List[int] m_IndexOffset: int -@define(kw_only=True, slots=False) + +@unitypy_define class LibraryRepresentation: name: str scriptClassName: str @@ -7709,13 +8353,15 @@ class LibraryRepresentation: object: Optional[Union[PPtr[EditorExtension], PPtr[Object]]] = None path: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LifetimeByEmitterSpeedModule: enabled: bool m_Curve: MinMaxCurve m_Range: Vector2f -@define(kw_only=True, slots=False) + +@unitypy_define class LightBakingOutput: probeOcclusionLightIndex: int isBaked: Optional[bool] = None @@ -7724,14 +8370,16 @@ class LightBakingOutput: occlusionMaskChannel: Optional[int] = None shadowMaskChannel: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LightProbeData: m_NonTetrahedralizedProbeSetIndexMap: List[Tuple[Hash128, int]] m_Positions: List[Vector3f] m_ProbeSets: List[ProbeSetIndex] m_Tetrahedralization: ProbeSetTetrahedralization -@define(kw_only=True, slots=False) + +@unitypy_define class LightProbeOcclusion: m_Occlusion: List[float] m_BakedLightIndex: Optional[List[int]] = None @@ -7739,12 +8387,14 @@ class LightProbeOcclusion: m_ProbeOcclusionLightIndex: Optional[List[int]] = None m_ShadowMaskChannel: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LightmapBakeMode: lightmapBakeType: int mixedLightingMode: int -@define(kw_only=True, slots=False) + +@unitypy_define class LightmapData: m_DirLightmap: Optional[PPtr[Texture2D]] = None m_IndirectLightmap: Optional[PPtr[Texture2D]] = None @@ -7778,7 +8428,8 @@ class LightmapData: sh_8_: Optional[float] = None sh_9_: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LightmapSnapshot(NamedObject): m_BakedReflectionProbeCubemaps: List[PPtr[Texture]] m_BakedReflectionProbes: List[SceneObjectIdentifier] @@ -7798,7 +8449,8 @@ class LightmapSnapshot(NamedObject): m_BakedSkyboxProbeCubemaps: Optional[List[PPtr[Texture]]] = None m_SceneGUID: Optional[GUID] = None -@define(kw_only=True, slots=False) + +@unitypy_define class LightsModule: color: bool enabled: bool @@ -7811,12 +8463,14 @@ class LightsModule: rangeCurve: MinMaxCurve ratio: float -@define(kw_only=True, slots=False) + +@unitypy_define class Limit: m_Max: Union[float3, float4] m_Min: Union[float3, float4] -@define(kw_only=True, slots=False) + +@unitypy_define class LineParameters: alignment: Optional[int] = None colorGradient: Optional[Gradient] = None @@ -7833,7 +8487,8 @@ class LineParameters: widthCurve: Optional[AnimationCurve] = None widthMultiplier: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Lumin: depthFormat: int enableGLCache: bool @@ -7841,12 +8496,14 @@ class Lumin: glCacheMaxBlobSize: int glCacheMaxFileSize: int -@define(kw_only=True, slots=False) + +@unitypy_define class MaterialImportOutput: baked: int currentSettings: BuildTargetSettings -@define(kw_only=True, slots=False) + +@unitypy_define class MaterialInstanceSettings: buildTargetSettings: List[BuildTargetSettings] inputs: List[InputImportSettings] @@ -7862,7 +8519,8 @@ class MaterialInstanceSettings: shaderName: Optional[str] = None textureAssignments: Optional[List[ProceduralTextureAssignment]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MatrixParameter: m_ArraySize: int m_Index: int @@ -7870,11 +8528,13 @@ class MatrixParameter: m_RowCount: int m_Type: int -@define(kw_only=True, slots=False) + +@unitypy_define class MdFour: md4_hash: bytes -@define(kw_only=True, slots=False) + +@unitypy_define class MeshBlendShape: firstVertex: int hasNormals: bool @@ -7884,26 +8544,30 @@ class MeshBlendShape: aabbMinDelta: Optional[Vector3f] = None name: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MeshBlendShapeChannel: frameCount: int frameIndex: int name: str nameHash: int -@define(kw_only=True, slots=False) + +@unitypy_define class MeshBlendShapeVertex: index: int normal: Vector3f tangent: Vector3f vertex: Vector3f -@define(kw_only=True, slots=False) + +@unitypy_define class MinMaxAABB: m_Max: Vector3f m_Min: Vector3f -@define(kw_only=True, slots=False) + +@unitypy_define class MinMaxCurve: maxCurve: AnimationCurve minCurve: AnimationCurve @@ -7911,7 +8575,8 @@ class MinMaxCurve: scalar: float minScalar: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MinMaxGradient: maxColor: ColorRGBA maxGradient: Union[GradientNEW, Gradient] @@ -7919,19 +8584,22 @@ class MinMaxGradient: minGradient: Union[GradientNEW, Gradient] minMaxState: int -@define(kw_only=True, slots=False) + +@unitypy_define class MipmapLimitSettings: limitBias: int limitBiasMode: int -@define(kw_only=True, slots=False) + +@unitypy_define class Module: dependencies: List[str] name: str strippable: bool controlledByBuiltinPackage: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MonoAssemblyImporter(AssetImporter): m_ExecutionOrder: List[Tuple[str, int]] m_IconMap: List[Tuple[str, PPtr[Texture2D]]] @@ -7941,51 +8609,61 @@ class MonoAssemblyImporter(AssetImporter): m_OldHashIdentity: Optional[MdFour] = None m_UserData: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class MonoObject(ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class MotionNeighborList: m_NeighborArray: List[int] -@define(kw_only=True, slots=False) + +@unitypy_define class MultiModeParameter: mode: int speed: MinMaxCurve spread: float value: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class NameToObjectMap: m_ObjectToName: List[Tuple[PPtr[Shader], str]] -@define(kw_only=True, slots=False) + +@unitypy_define class NativeType: a: int b: float embedded: EmbeddedNativeType -@define(kw_only=True, slots=False) + +@unitypy_define class NavMesh(NamedObject): m_Heightmaps: List[HeightmapData] m_MeshData: List[int] m_Name: str -@define(kw_only=True, slots=False) + +@unitypy_define class NavMeshAreaData: cost: float name: str -@define(kw_only=True, slots=False) + +@unitypy_define class NavMeshAreas(GlobalGameManager): areas: List[NavMeshAreaData] -@define(kw_only=True, slots=False) + +@unitypy_define class NavMeshBuildDebugSettings: m_Flags: int -@define(kw_only=True, slots=False) + +@unitypy_define class NavMeshBuildSettings: agentClimb: float agentHeight: float @@ -8006,13 +8684,15 @@ class NavMeshBuildSettings: maxJobWorkers: Optional[int] = None preserveTilesOutsideBounds: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class NavMeshLayerData: cost: float editType: int name: str -@define(kw_only=True, slots=False) + +@unitypy_define class NavMeshLayers(GlobalGameManager): Built_in_Layer_0: NavMeshLayerData Built_in_Layer_1: NavMeshLayerData @@ -8047,7 +8727,8 @@ class NavMeshLayers(GlobalGameManager): User_Layer_8: NavMeshLayerData User_Layer_9: NavMeshLayerData -@define(kw_only=True, slots=False) + +@unitypy_define class NavMeshParams: cellSize: float tileSize: float @@ -8055,22 +8736,26 @@ class NavMeshParams: walkableHeight: float walkableRadius: float -@define(kw_only=True, slots=False) + +@unitypy_define class NavMeshTileData: m_MeshData: List[int] m_Hash: Optional[Hash128] = None -@define(kw_only=True, slots=False) + +@unitypy_define class NetworkViewID: m_ID: int m_Type: int -@define(kw_only=True, slots=False) + +@unitypy_define class Node: m_AxesId: int m_ParentId: int -@define(kw_only=True, slots=False) + +@unitypy_define class NoiseModule: damping: bool enabled: bool @@ -8092,16 +8777,19 @@ class NoiseModule: rotationAmount: Optional[MinMaxCurve] = None sizeAmount: Optional[MinMaxCurve] = None -@define(kw_only=True, slots=False) + +@unitypy_define class NonAlignedStruct: m_Bool: bool -@define(kw_only=True, slots=False) + +@unitypy_define class ObjectRolePair: m_Object: PPtr[Object] m_RolesMask: int -@define(kw_only=True, slots=False) + +@unitypy_define class OcclusionScene: indexPortals: int indexRenderers: int @@ -8109,7 +8797,8 @@ class OcclusionScene: sizePortals: int sizeRenderers: int -@define(kw_only=True, slots=False) + +@unitypy_define class Oculus: dashSupport: bool sharedDepthBuffer: bool @@ -8117,17 +8806,42 @@ class Oculus: protectedContext: Optional[bool] = None v2Signing: Optional[bool] = None -@define(kw_only=True, slots=False) -class OffsetPtr: - data: Union[SkeletonMask, SkeletonPose, Blend2dDataConstant, Blend1dDataConstant, BlendTreeConstant, Skeleton, Clip, SelectorTransitionConstant, LayerConstant, ValueArray, SelectorStateConstant, ConditionConstant, Human, HumanLayerConstant, Hand, StateConstant, StateMachineConstant, BlendTreeNodeConstant, BlendDirectDataConstant, ValueArrayConstant, TransitionConstant] -@define(kw_only=True, slots=False) +@unitypy_define +class OffsetPtr: + data: Union[ + SkeletonMask, + SkeletonPose, + Blend2dDataConstant, + Blend1dDataConstant, + BlendTreeConstant, + Skeleton, + Clip, + SelectorTransitionConstant, + LayerConstant, + ValueArray, + SelectorStateConstant, + ConditionConstant, + Human, + HumanLayerConstant, + Hand, + StateConstant, + StateMachineConstant, + BlendTreeNodeConstant, + BlendDirectDataConstant, + ValueArrayConstant, + TransitionConstant, + ] + + +@unitypy_define class Output: hasEmptyFontData: Optional[bool] = None importedType: Optional[int] = None previewData: Optional[List[float]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PPtrCurve: attribute: str classID: int @@ -8136,12 +8850,14 @@ class PPtrCurve: script: PPtr[MonoScript] flags: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PPtrKeyframe: time: float value: PPtr[Object] -@define(kw_only=True, slots=False) + +@unitypy_define class PackedBitVector: m_Data: List[int] m_NumItems: int @@ -8149,7 +8865,8 @@ class PackedBitVector: m_Range: Optional[float] = None m_Start: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PackingSettings: allowAlphaSplitting: bool blockOffset: int @@ -8158,17 +8875,20 @@ class PackingSettings: padding: int enableAlphaDilation: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Parameter: m_GUID: GUID m_ParameterName: str -@define(kw_only=True, slots=False) + +@unitypy_define class ParserBindChannels: m_Channels: List[ShaderBindChannel] m_SourceMap: int -@define(kw_only=True, slots=False) + +@unitypy_define class ParticleSystemEmissionBurst: cycleCount: int repeatInterval: float @@ -8178,7 +8898,8 @@ class ParticleSystemEmissionBurst: minCount: Optional[int] = None probability: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ParticleSystemForceFieldParameters: m_DirectionCurveX: MinMaxCurve m_DirectionCurveY: MinMaxCurve @@ -8199,7 +8920,8 @@ class ParticleSystemForceFieldParameters: m_VectorFieldAttractionCurve: MinMaxCurve m_VectorFieldSpeedCurve: MinMaxCurve -@define(kw_only=True, slots=False) + +@unitypy_define class PerLODSettings: castShadows: bool enableBump: bool @@ -8212,11 +8934,13 @@ class PerLODSettings: enableSettingOverride: Optional[bool] = None enableSubsurface: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PerformanceReportingSettings: m_Enabled: bool -@define(kw_only=True, slots=False) + +@unitypy_define class PhysicMaterial(NamedObject): bounceCombine: int bounciness: float @@ -8228,7 +8952,8 @@ class PhysicMaterial(NamedObject): frictionDirection2: Optional[Vector3f] = None staticFriction2: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PhysicsJobOptions2D: m_ClearBodyForcesPerJob: int m_ClearFlagsPerJob: int @@ -8250,7 +8975,8 @@ class PhysicsJobOptions2D: useConsistencySorting: Optional[bool] = None useMultithreading: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PhysicsShape: m_AdjacentEnd: Vector2f m_AdjacentStart: Vector2f @@ -8261,12 +8987,14 @@ class PhysicsShape: m_VertexCount: int m_VertexStartIndex: int -@define(kw_only=True, slots=False) + +@unitypy_define class PhysicsShapeGroup2D: m_Shapes: List[PhysicsShape] m_Vertices: List[Vector2f] -@define(kw_only=True, slots=False) + +@unitypy_define class PlatformSettings: m_AllowsAlphaSplitting: bool m_BuildTarget: str @@ -8278,34 +9006,40 @@ class PlatformSettings: m_TextureFormat: int m_ResizeAlgorithm: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PlatformSettingsData: settings: List[Tuple[str, str]] enabled: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PlatformShaderDefines: defines_Tier1: List[int] defines_Tier2: List[int] defines_Tier3: List[int] shaderPlatform: int -@define(kw_only=True, slots=False) + +@unitypy_define class PlatformShaderSettings: useCascadedShadowMaps: Optional[bool] = None useScreenSpaceShadows: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PluginImportOutput: dllType: Optional[int] = None pluginType: Optional[int] = None scriptingRuntimeVersion: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Polygon2D(ABC): m_Paths: Optional[List[List[Vector2f]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PrefabModification: m_Modifications: List[PropertyModification] m_RemovedComponents: Union[List[PPtr[Object]], List[PPtr[Component]]] @@ -8314,30 +9048,35 @@ class PrefabModification: m_AddedGameObjects: Optional[List[AddedGameObject]] = None m_RemovedGameObjects: Optional[List[PPtr[GameObject]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class PresetType: m_ManagedTypeFallback: str m_ManagedTypePPtr: PPtr[MonoScript] m_NativeTypeID: int -@define(kw_only=True, slots=False) + +@unitypy_define class PreviewData: m_CompSize: int m_OrigSize: int m_PreviewData: List[float] -@define(kw_only=True, slots=False) + +@unitypy_define class ProbeSetIndex: m_Hash: Hash128 m_Offset: int m_Size: int -@define(kw_only=True, slots=False) + +@unitypy_define class ProbeSetTetrahedralization: m_HullRays: List[Vector3f] m_Tetrahedra: List[Tetrahedron] -@define(kw_only=True, slots=False) + +@unitypy_define class ProceduralMaterialInformation: m_Offset: Vector2f m_Scale: Vector2f @@ -8346,25 +9085,29 @@ class ProceduralMaterialInformation: m_GenerateMipmaps: Optional[bool] = None m_GeneratedAtLoading: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ProceduralTextureAssignment: baseUID: int material: PPtr[ProceduralMaterial] shaderProp: Union[FastPropertyName, str] -@define(kw_only=True, slots=False) + +@unitypy_define class PropertyModification: objectReference: PPtr[Object] propertyPath: str target: PPtr[Object] value: str -@define(kw_only=True, slots=False) + +@unitypy_define class PropertyModificationsTargetTestNativeObject: m_FloatValue: float m_IntegerValue: int -@define(kw_only=True, slots=False) + +@unitypy_define class QualitySetting: anisotropicTextures: int antiAliasing: int @@ -8419,40 +9162,47 @@ class QualitySetting: textureQuality: Optional[int] = None useLegacyDetailDistribution: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class QuaternionCurve: curve: AnimationCurve path: str -@define(kw_only=True, slots=False) + +@unitypy_define class RationalTime: m_Count: int m_Rate: TicksPerSecond -@define(kw_only=True, slots=False) + +@unitypy_define class RayTracingShaderBuiltinSampler: bindPoint: int sampler: int -@define(kw_only=True, slots=False) + +@unitypy_define class RayTracingShaderConstantBuffer: byteSize: int name: str params: List[RayTracingShaderParam] hash: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class RayTracingShaderFunctionDesc: attributeSizeInBytes: int identifier: RayTracingShaderID payloadSizeInBytes: int -@define(kw_only=True, slots=False) + +@unitypy_define class RayTracingShaderID: name: str type: int -@define(kw_only=True, slots=False) + +@unitypy_define class RayTracingShaderParam: arraySize: int colCount: int @@ -8464,7 +9214,8 @@ class RayTracingShaderParam: propertySheetType: Optional[int] = None type: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class RayTracingShaderReflectionData: code: List[int] functions: List[RayTracingShaderFunctionDesc] @@ -8474,7 +9225,8 @@ class RayTracingShaderReflectionData: precompiled: Optional[List[int]] = None requirements: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class RayTracingShaderResource: bindPoint: int name: str @@ -8484,7 +9236,8 @@ class RayTracingShaderResource: arraySize: Optional[int] = None multisampled: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class RayTracingShaderResources: builtinSamplers: List[RayTracingShaderBuiltinSampler] constantBuffers: List[RayTracingShaderResource] @@ -8493,23 +9246,27 @@ class RayTracingShaderResources: outputBuffers: List[RayTracingShaderResource] textures: List[RayTracingShaderResource] -@define(kw_only=True, slots=False) + +@unitypy_define class RayTracingShaderVariant: resourceReflectionData: RayTracingShaderReflectionData targetRenderer: int -@define(kw_only=True, slots=False) + +@unitypy_define class Rectf: height: float width: float x: float y: float -@define(kw_only=True, slots=False) + +@unitypy_define class RenderManager(GlobalGameManager): pass -@define(kw_only=True, slots=False) + +@unitypy_define class RenderPassInfo: attachmentCount: int attachments: List[AttachmentInfo] @@ -8520,7 +9277,8 @@ class RenderPassInfo: subPassCount: int subPasses: List[SubPassDescriptor] -@define(kw_only=True, slots=False) + +@unitypy_define class RenderStateBlock: blendState: GfxBlendState depthState: GfxDepthState @@ -8529,11 +9287,13 @@ class RenderStateBlock: stencilRef: int stencilState: GfxStencilState -@define(kw_only=True, slots=False) + +@unitypy_define class RenderStateInfo: renderState: RenderStateBlock -@define(kw_only=True, slots=False) + +@unitypy_define class RendererData: lightmapIndex: int lightmapIndexDynamic: int @@ -8544,12 +9304,14 @@ class RendererData: uvMesh: PPtr[Mesh] explicitProbeSetHash: Optional[Hash128] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ResourceManager_Dependency: m_Dependencies: List[PPtr[Object]] m_Object: PPtr[Object] -@define(kw_only=True, slots=False) + +@unitypy_define class RippleGroup: m_afDirectional_0: float m_afDirectional_1: float @@ -8634,11 +9396,13 @@ class RippleGroup: m_fIndependence: float m_fShimmer: float -@define(kw_only=True, slots=False) + +@unitypy_define class RootMotionData(ABC): pass -@define(kw_only=True, slots=False) + +@unitypy_define class RotationBySpeedModule: curve: MinMaxCurve enabled: bool @@ -8647,7 +9411,8 @@ class RotationBySpeedModule: x: Optional[MinMaxCurve] = None y: Optional[MinMaxCurve] = None -@define(kw_only=True, slots=False) + +@unitypy_define class RotationModule: curve: MinMaxCurve enabled: bool @@ -8655,7 +9420,8 @@ class RotationModule: x: Optional[MinMaxCurve] = None y: Optional[MinMaxCurve] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SBranchWindLevel: m_afDirectionAdherence_0: float m_afDirectionAdherence_1: float @@ -8691,7 +9457,8 @@ class SBranchWindLevel: m_fTwitch: float m_fTwitchFreqScale: float -@define(kw_only=True, slots=False) + +@unitypy_define class SParams: BranchLevel1: SBranchWindLevel BranchLevel2: SBranchWindLevel @@ -8853,7 +9620,8 @@ class SParams: m_fRollingNoiseTwist: float m_fStrengthResponse: float -@define(kw_only=True, slots=False) + +@unitypy_define class SWindGroup: m_afRippleDistance_0: float m_afRippleDistance_1: float @@ -8912,7 +9680,8 @@ class SWindGroup: m_fRollSpeed: float m_fTwitchSharpness: float -@define(kw_only=True, slots=False) + +@unitypy_define class SampleSettings: compressionFormat: int conversionMode: int @@ -8922,12 +9691,14 @@ class SampleSettings: sampleRateSetting: int preloadAudioData: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SamplerParameter: bindPoint: int sampler: int -@define(kw_only=True, slots=False) + +@unitypy_define class Scene(LevelGameManager): enabled: Optional[bool] = None guid: Optional[GUID] = None @@ -8937,63 +9708,75 @@ class Scene(LevelGameManager): m_QueryMode: Optional[int] = None path: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SceneDataContainer: m_SceneData: List[Tuple[SceneIdentifier, HierarchicalSceneData]] -@define(kw_only=True, slots=False) + +@unitypy_define class SceneIdentifier: guid: GUID handle: int -@define(kw_only=True, slots=False) + +@unitypy_define class SceneObjectIdentifier: targetObject: int targetPrefab: int -@define(kw_only=True, slots=False) + +@unitypy_define class SceneSettings(LevelGameManager): m_PVSData: List[int] m_PVSObjectsArray: List[PPtr[Renderer]] m_PVSPortalsArray: List[PPtr[OcclusionPortal]] m_QueryMode: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SceneVisibilityData: m_SceneGUID: GUID -@define(kw_only=True, slots=False) + +@unitypy_define class ScriptMapper(GlobalGameManager): m_Shaders: NameToObjectMap m_PreloadShaders: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SecondarySpriteTexture: name: str texture: PPtr[Texture2D] -@define(kw_only=True, slots=False) + +@unitypy_define class SecondaryTextureSettings: platformSettings: List[TextureImporterPlatformSettings] sRGB: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SelectorStateConstant: m_FullPathID: int m_IsEntry: bool m_TransitionConstantArray: List[OffsetPtr] -@define(kw_only=True, slots=False) + +@unitypy_define class SelectorTransitionConstant: m_ConditionConstantArray: List[OffsetPtr] m_Destination: int -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedCustomEditorForRenderPipeline: customEditorName: str renderPipelineType: str -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedPass: m_HasInstancingVariant: bool m_Name: str @@ -9017,14 +9800,16 @@ class SerializedPass: m_SerializedKeywordStateMask: Optional[List[int]] = None progRayTracing: Optional[SerializedProgram] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedPlayerSubProgram: m_BlobIndex: int m_GpuProgramType: int m_KeywordIndices: List[int] m_ShaderRequirements: int -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedProgram: m_SubPrograms: List[SerializedSubProgram] m_CommonParameters: Optional[SerializedProgramParameters] = None @@ -9032,7 +9817,8 @@ class SerializedProgram: m_PlayerSubPrograms: Optional[List[List[SerializedPlayerSubProgram]]] = None m_SerializedKeywordStateMask: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedProgramParameters: m_BufferParams: List[BufferBinding] m_ConstantBufferBindings: List[BufferBinding] @@ -9043,11 +9829,13 @@ class SerializedProgramParameters: m_UAVParams: List[UAVParameter] m_VectorParams: List[VectorParameter] -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedProperties: m_Props: List[SerializedProperty] -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedProperty: m_Attributes: List[str] m_DefTexture: SerializedTextureProperty @@ -9060,7 +9848,8 @@ class SerializedProperty: m_Name: str m_Type: int -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedShader: m_CustomEditorName: str m_Dependencies: List[SerializedShaderDependency] @@ -9069,21 +9858,26 @@ class SerializedShader: m_Name: str m_PropInfo: SerializedProperties m_SubShaders: List[SerializedSubShader] - m_CustomEditorForRenderPipelines: Optional[List[SerializedCustomEditorForRenderPipeline]] = None + m_CustomEditorForRenderPipelines: Optional[ + List[SerializedCustomEditorForRenderPipeline] + ] = None m_KeywordFlags: Optional[List[int]] = None m_KeywordNames: Optional[List[str]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedShaderDependency: from_: str to: str -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedShaderFloatValue: name: Union[FastPropertyName, str] val: float -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedShaderRTBlendState: blendOp: SerializedShaderFloatValue blendOpAlpha: SerializedShaderFloatValue @@ -9093,7 +9887,8 @@ class SerializedShaderRTBlendState: srcBlend: SerializedShaderFloatValue srcBlendAlpha: SerializedShaderFloatValue -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedShaderState: alphaToMask: SerializedShaderFloatValue culling: SerializedShaderFloatValue @@ -9129,7 +9924,8 @@ class SerializedShaderState: conservative: Optional[SerializedShaderFloatValue] = None zClip: Optional[SerializedShaderFloatValue] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedShaderVectorValue: name: Union[FastPropertyName, str] w: SerializedShaderFloatValue @@ -9137,14 +9933,16 @@ class SerializedShaderVectorValue: y: SerializedShaderFloatValue z: SerializedShaderFloatValue -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedStencilOp: comp: SerializedShaderFloatValue fail: SerializedShaderFloatValue pass_: SerializedShaderFloatValue zFail: SerializedShaderFloatValue -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedSubProgram: m_BlobIndex: int m_Channels: ParserBindChannels @@ -9164,31 +9962,37 @@ class SerializedSubProgram: m_UAVParams: Optional[List[UAVParameter]] = None m_VectorParams: Optional[List[VectorParameter]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedSubShader: m_LOD: int m_Passes: List[SerializedPass] m_Tags: SerializedTagMap -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedTagMap: tags: List[Tuple[str, str]] -@define(kw_only=True, slots=False) + +@unitypy_define class SerializedTextureProperty: m_DefaultName: str m_TexDim: int -@define(kw_only=True, slots=False) + +@unitypy_define class ShaderBindChannel: source: int target: int -@define(kw_only=True, slots=False) + +@unitypy_define class ShaderInfo: variants: List[VariantInfo] -@define(kw_only=True, slots=False) + +@unitypy_define class ShadowSettings: m_Bias: float m_Resolution: int @@ -9202,7 +10006,8 @@ class ShadowSettings: m_SoftnessFade: Optional[float] = None m_UseCullingMatrixOverride: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ShapeModule: angle: float enabled: bool @@ -9244,7 +10049,8 @@ class ShapeModule: randomPositionAmount: Optional[float] = None sphericalDirectionAmount: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SizeBySpeedModule: curve: MinMaxCurve enabled: bool @@ -9253,7 +10059,8 @@ class SizeBySpeedModule: y: Optional[MinMaxCurve] = None z: Optional[MinMaxCurve] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SizeModule: curve: MinMaxCurve enabled: bool @@ -9261,13 +10068,15 @@ class SizeModule: y: Optional[MinMaxCurve] = None z: Optional[MinMaxCurve] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Skeleton: m_AxesArray: List[Axes] m_ID: List[int] m_Node: List[Node] -@define(kw_only=True, slots=False) + +@unitypy_define class SkeletonBone: m_Name: str m_Position: Vector3f @@ -9276,7 +10085,8 @@ class SkeletonBone: m_ParentName: Optional[str] = None m_TransformModified: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SkeletonBoneLimit: m_Length: float m_Max: Vector3f @@ -9286,21 +10096,25 @@ class SkeletonBoneLimit: m_PostQ: Optional[Quaternionf] = None m_PreQ: Optional[Quaternionf] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SkeletonMask: m_Data: List[SkeletonMaskElement] -@define(kw_only=True, slots=False) + +@unitypy_define class SkeletonMaskElement: m_Weight: float m_Index: Optional[int] = None m_PathHash: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SkeletonPose: m_X: List[xform] -@define(kw_only=True, slots=False) + +@unitypy_define class SketchUpImportCamera: aspectRatio: float fov: float @@ -9312,24 +10126,28 @@ class SketchUpImportCamera: farPlane: Optional[float] = None nearPlane: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SketchUpImportData: defaultCamera: SketchUpImportCamera scenes: List[SketchUpImportScene] -@define(kw_only=True, slots=False) + +@unitypy_define class SketchUpImportScene: camera: SketchUpImportCamera name: str -@define(kw_only=True, slots=False) + +@unitypy_define class SnapshotConstant: nameHash: int transitionIndices: List[int] transitionTypes: List[int] values: List[float] -@define(kw_only=True, slots=False) + +@unitypy_define class SoftJointLimit: bounciness: float limit: float @@ -9337,24 +10155,28 @@ class SoftJointLimit: damper: Optional[float] = None spring: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SoftJointLimitSpring: damper: float spring: float -@define(kw_only=True, slots=False) + +@unitypy_define class SortingLayerEntry: name: str uniqueID: int userID: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SourceAssetIdentifier: assembly: str name: str type: str -@define(kw_only=True, slots=False) + +@unitypy_define class SourceTextureInformation: doesTextureContainAlpha: bool height: int @@ -9362,7 +10184,8 @@ class SourceTextureInformation: doesTextureContainColor: Optional[bool] = None sourceWasHDR: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpeedTreeWind: BRANCH_DIRECTIONAL_1: bool BRANCH_DIRECTIONAL_2: bool @@ -9398,7 +10221,8 @@ class SpeedTreeWind: m_fMaxBranchLevel1Length: float m_sParams: SParams -@define(kw_only=True, slots=False) + +@unitypy_define class SpeedTreeWindConfig8: BRANCH_DIRECTIONAL_1: bool BRANCH_DIRECTIONAL_2: bool @@ -9592,7 +10416,8 @@ class SpeedTreeWindConfig8: m_fRollingNoiseTwist: float m_fStrengthResponse: float -@define(kw_only=True, slots=False) + +@unitypy_define class SpeedTreeWindConfig9: m_bDoBranch1: int m_bDoBranch2: int @@ -9621,7 +10446,8 @@ class SpeedTreeWindConfig9: m_fImportScaling: Optional[float] = None pad: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SphericalHarmonicsL2: sh_10_: float sh_11_: float @@ -9651,12 +10477,14 @@ class SphericalHarmonicsL2: sh__8_: float sh__9_: float -@define(kw_only=True, slots=False) + +@unitypy_define class SplashScreenLogo: duration: float logo: PPtr[Sprite] -@define(kw_only=True, slots=False) + +@unitypy_define class SplatDatabase: m_AlphaTextures: List[PPtr[Texture2D]] m_AlphamapResolution: int @@ -9667,7 +10495,8 @@ class SplatDatabase: m_Splats: Optional[List[SplatPrototype]] = None m_TerrainLayers: Optional[List[PPtr[TerrainLayer]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SplatPrototype: texture: PPtr[Texture2D] tileOffset: Vector2f @@ -9676,11 +10505,13 @@ class SplatPrototype: smoothness: Optional[float] = None specularMetallic: Optional[Vector4f] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteAtlasAssetData: packables: List[PPtr[Object]] -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteAtlasData: alphaTexture: PPtr[Texture2D] downscaleMultiplier: float @@ -9692,7 +10523,8 @@ class SpriteAtlasData: atlasRectOffset: Optional[Vector2f] = None secondaryTextures: Optional[List[SecondarySpriteTexture]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteAtlasEditorData: bindAsDefault: bool cachedData: PPtr[CachedSpriteAtlasRuntimeData] @@ -9702,11 +10534,14 @@ class SpriteAtlasEditorData: platformSettings: List[TextureImporterPlatformSettings] textureSettings: TextureSettings variantMultiplier: float - secondaryTextureSettings: Optional[List[Tuple[str, SecondaryTextureSettings]]] = None + secondaryTextureSettings: Optional[List[Tuple[str, SecondaryTextureSettings]]] = ( + None + ) storedHash: Optional[Hash128] = None totalSpriteSurfaceArea: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteBone: length: float name: str @@ -9716,20 +10551,24 @@ class SpriteBone: color: Optional[ColorRGBA] = None guid: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteCustomDataEntry: m_Key: str m_Value: str -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteCustomMetadata: m_Entries: List[SpriteCustomDataEntry] -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteData: sprite: PPtr[Object] -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteMetaData: m_Alignment: int m_Name: str @@ -9748,7 +10587,8 @@ class SpriteMetaData: m_Vertices: Optional[List[Vector2f]] = None m_Weights: Optional[List[BoneWeights4]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteRenderData: settingsRaw: int texture: PPtr[Texture2D] @@ -9767,7 +10607,8 @@ class SpriteRenderData: uvTransform: Optional[Vector4f] = None vertices: Optional[List[SpriteVertex]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteSheetMetaData: m_Sprites: List[SpriteMetaData] m_Bones: Optional[List[SpriteBone]] = None @@ -9784,7 +10625,8 @@ class SpriteSheetMetaData: m_Vertices: Optional[List[Vector2f]] = None m_Weights: Optional[List[BoneWeights4]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteTilingProperty: adaptiveTiling: bool adaptiveTilingThreshold: float @@ -9794,12 +10636,14 @@ class SpriteTilingProperty: oldSize: Vector2f pivot: Vector2f -@define(kw_only=True, slots=False) + +@unitypy_define class SpriteVertex: pos: Vector3f uv: Optional[Vector2f] = None -@define(kw_only=True, slots=False) + +@unitypy_define class State(NamedObject): m_IKOnFeet: bool m_Motions: List[PPtr[Motion]] @@ -9811,7 +10655,8 @@ class State(NamedObject): m_CycleOffset: Optional[float] = None m_Mirror: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class StateConstant: m_BlendTreeConstantArray: List[OffsetPtr] m_BlendTreeConstantIndexArray: List[int] @@ -9833,12 +10678,14 @@ class StateConstant: m_TimeParamID: Optional[int] = None m_WriteDefaultValues: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class StateKey: m_LayerIndex: int m_StateID: int -@define(kw_only=True, slots=False) + +@unitypy_define class StateMachine(NamedObject): m_AnyStatePosition: Vector3f m_ChildStateMachine: List[PPtr[StateMachine]] @@ -9849,14 +10696,18 @@ class StateMachine(NamedObject): m_OrderedTransitions: List[Tuple[PPtr[State], List[PPtr[Transition]]]] m_ParentStateMachinePosition: Vector3f m_States: List[PPtr[State]] - m_LocalTransitions: Optional[List[Tuple[PPtr[State], List[PPtr[Transition]]]]] = None + m_LocalTransitions: Optional[List[Tuple[PPtr[State], List[PPtr[Transition]]]]] = ( + None + ) + -@define(kw_only=True, slots=False) +@unitypy_define class StateMachineBehaviourVectorDescription: m_StateMachineBehaviourIndices: List[int] m_StateMachineBehaviourRanges: List[Tuple[StateKey, StateRange]] -@define(kw_only=True, slots=False) + +@unitypy_define class StateMachineConstant: m_AnyStateTransitionConstantArray: List[OffsetPtr] m_DefaultState: int @@ -9865,17 +10716,20 @@ class StateMachineConstant: m_SelectorStateConstantArray: Optional[List[OffsetPtr]] = None m_SynchronizedLayerCount: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class StateRange: m_Count: int m_StartIndex: int -@define(kw_only=True, slots=False) + +@unitypy_define class StaticBatchInfo: firstSubMesh: int subMeshCount: int -@define(kw_only=True, slots=False) + +@unitypy_define class StreamInfo: channelMask: int offset: int @@ -9884,25 +10738,29 @@ class StreamInfo: dividerOp: Optional[int] = None frequency: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class StreamedClip: curveCount: int data: List[int] discreteCurveCount: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class StreamedResource: m_Offset: int m_Size: int m_Source: str -@define(kw_only=True, slots=False) + +@unitypy_define class StreamingInfo: offset: int path: str size: int -@define(kw_only=True, slots=False) + +@unitypy_define class StructParameter: m_ArraySize: int m_Index: int @@ -9911,19 +10769,22 @@ class StructParameter: m_StructSize: int m_VectorMembers: List[VectorParameter] -@define(kw_only=True, slots=False) + +@unitypy_define class SubCollider: m_Collider: PPtr[Collider2D] m_ColliderPaths: List[List[IntPoint]] -@define(kw_only=True, slots=False) + +@unitypy_define class SubEmitterData: emitter: PPtr[ParticleSystem] properties: int type: int emitProbability: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SubMesh: firstByte: int firstVertex: int @@ -9935,7 +10796,8 @@ class SubMesh: topology: Optional[int] = None triangleCount: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SubModule: enabled: bool subEmitterBirth: Optional[PPtr[ParticleSystem]] = None @@ -9946,18 +10808,21 @@ class SubModule: subEmitterDeath1: Optional[PPtr[ParticleSystem]] = None subEmitters: Optional[List[SubEmitterData]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SubPassDescriptor: colorOutputs: AttachmentIndexArray flags: int inputs: AttachmentIndexArray -@define(kw_only=True, slots=False) + +@unitypy_define class SubstanceEnumItem: text: str value: int -@define(kw_only=True, slots=False) + +@unitypy_define class SubstanceInput: alteredTexturesUID: List[int] enumValues: List[SubstanceEnumItem] @@ -9976,7 +10841,8 @@ class SubstanceInput: label: Optional[str] = None visibleIf: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class SubstanceValue: scalar_0_: float scalar_1_: float @@ -9985,7 +10851,8 @@ class SubstanceValue: texture: PPtr[Texture2D] stringvalue: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TakeInfo: bakeStartTime: float bakeStopTime: float @@ -9997,7 +10864,8 @@ class TakeInfo: stopTime: float internalID: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Tetrahedron: indices_0_: int indices_1_: int @@ -10009,7 +10877,8 @@ class Tetrahedron: neighbors_2_: int neighbors_3_: int -@define(kw_only=True, slots=False) + +@unitypy_define class TextureImportInstructions: colorSpace: int compressedFormat: int @@ -10028,13 +10897,15 @@ class TextureImportInstructions: recommendedFormat: Optional[int] = None vtOnly: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TextureImportOutput: sourceTextureInformation: SourceTextureInformation textureImportInstructions: TextureImportInstructions importInspectorWarnings: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TextureImporterPlatformSettings: m_AllowsAlphaSplitting: bool m_AndroidETC2FallbackOverride: int @@ -10049,7 +10920,8 @@ class TextureImporterPlatformSettings: m_ForceMaximumCompressionQuality_BC6H_BC7: Optional[bool] = None m_IgnorePlatformSupport: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TextureParameter: m_Dim: int m_Index: int @@ -10057,14 +10929,16 @@ class TextureParameter: m_SamplerIndex: int m_MultiSampled: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TextureParameters: height: int mipLevels: int textureFormat: int width: int -@define(kw_only=True, slots=False) + +@unitypy_define class TextureSettings: anisoLevel: int compressionQuality: int @@ -10076,12 +10950,14 @@ class TextureSettings: sRGB: bool textureCompression: int -@define(kw_only=True, slots=False) + +@unitypy_define class TicksPerSecond: m_Denominator: int m_Numerator: int -@define(kw_only=True, slots=False) + +@unitypy_define class TierGraphicsSettings: renderingPath: int useCascadedShadowMaps: bool @@ -10091,7 +10967,8 @@ class TierGraphicsSettings: realtimeGICPUUsage: Optional[int] = None useHDR: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Tile: m_TileColorIndex: int m_TileIndex: int @@ -10104,7 +10981,8 @@ class Tile: m_TileFlags: Optional[int] = None m_TileObjectToInstantiateIndex: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TileAnimationData: m_AnimatedSprites: List[PPtr[Sprite]] m_AnimationSpeed: float @@ -10112,12 +10990,14 @@ class TileAnimationData: m_Flags: Optional[int] = None m_IsLooping: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TilemapRefCountedData: m_Data: Union[PPtr[GameObject], ColorRGBA, PPtr[Object], Matrix4x4f, PPtr[Sprite]] m_RefCount: int -@define(kw_only=True, slots=False) + +@unitypy_define class TrailModule: colorOverLifetime: MinMaxGradient colorOverTrail: MinMaxGradient @@ -10140,12 +11020,14 @@ class TrailModule: splitSubEmitterRibbons: Optional[bool] = None textureScale: Optional[Vector2f] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TransformMaskElement: m_Path: str m_Weight: float -@define(kw_only=True, slots=False) + +@unitypy_define class Transition(NamedObject): m_Atomic: bool m_Conditions: List[Condition] @@ -10158,7 +11040,8 @@ class Transition(NamedObject): m_TransitionOffset: float m_CanTransitionToSelf: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TransitionConstant: m_ConditionConstantArray: List[OffsetPtr] m_DestinationState: int @@ -10175,7 +11058,8 @@ class TransitionConstant: m_InterruptionSource: Optional[int] = None m_OrderedInterruption: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TreeInstance: color: ColorRGBA heightScale: float @@ -10185,13 +11069,15 @@ class TreeInstance: widthScale: float rotation: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TreePrototype: bendFactor: float prefab: PPtr[GameObject] navMeshLod: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class TriggerModule: enabled: bool enter: int @@ -10208,19 +11094,22 @@ class TriggerModule: collisionShape5: Optional[PPtr[Component]] = None primitives: Optional[List[PPtr[Component]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class UAVParameter: m_Index: int m_NameIndex: int m_OriginalIndex: int -@define(kw_only=True, slots=False) + +@unitypy_define class UVAnimation: cycles: float x_Tile: int y_Tile: int -@define(kw_only=True, slots=False) + +@unitypy_define class UVModule: animationType: int cycles: float @@ -10241,7 +11130,8 @@ class UVModule: timeMode: Optional[int] = None uvChannelMask: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class UnityAdsSettings(GlobalGameManager): m_Enabled: bool m_InitializeOnStartup: bool @@ -10251,7 +11141,8 @@ class UnityAdsSettings(GlobalGameManager): m_GameId: Optional[str] = None m_IosGameId: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class UnityAnalyticsSettings: m_Enabled: bool m_InitializeOnStartup: bool @@ -10260,25 +11151,33 @@ class UnityAnalyticsSettings: m_TestConfigUrl: Optional[str] = None m_TestEventUrl: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class UnityPropertySheet: - m_Colors: Union[List[Tuple[FastPropertyName, ColorRGBA]], List[Tuple[str, ColorRGBA]]] + m_Colors: Union[ + List[Tuple[FastPropertyName, ColorRGBA]], List[Tuple[str, ColorRGBA]] + ] m_Floats: Union[List[Tuple[FastPropertyName, float]], List[Tuple[str, float]]] - m_TexEnvs: Union[List[Tuple[FastPropertyName, UnityTexEnv]], List[Tuple[str, UnityTexEnv]]] + m_TexEnvs: Union[ + List[Tuple[FastPropertyName, UnityTexEnv]], List[Tuple[str, UnityTexEnv]] + ] m_Ints: Optional[List[Tuple[str, int]]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class UnityPurchasingSettings: m_Enabled: bool m_TestMode: bool -@define(kw_only=True, slots=False) + +@unitypy_define class UnityTexEnv: m_Offset: Vector2f m_Scale: Vector2f m_Texture: PPtr[Texture] -@define(kw_only=True, slots=False) + +@unitypy_define class UpdateZoneInfo: needSwap: bool passIndex: int @@ -10286,18 +11185,21 @@ class UpdateZoneInfo: updateZoneCenter: Vector3f updateZoneSize: Vector3f -@define(kw_only=True, slots=False) + +@unitypy_define class VFXCPUBufferData: data: List[int] -@define(kw_only=True, slots=False) + +@unitypy_define class VFXCPUBufferDesc: capacity: int initialData: VFXCPUBufferData layout: List[VFXLayoutElementDesc] stride: int -@define(kw_only=True, slots=False) + +@unitypy_define class VFXEditorSystemDesc: buffers: List[VFXMapping] capacity: int @@ -10308,7 +11210,8 @@ class VFXEditorSystemDesc: values: List[VFXMapping] name: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VFXEditorTaskDesc: buffers: List[VFXMapping] params: List[VFXMapping] @@ -10318,30 +11221,59 @@ class VFXEditorTaskDesc: values: List[VFXMapping] temporaryBuffers: Optional[List[VFXMappingTemporary]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VFXEntryExposed: m_Name: str m_Overridden: bool - m_Value: Union[Gradient, Vector3f, float, PPtr[NamedObject], Vector4f, AnimationCurve, PPtr[Object], int, Vector2f, bool, Matrix4x4f] - -@define(kw_only=True, slots=False) + m_Value: Union[ + Gradient, + Vector3f, + float, + PPtr[NamedObject], + Vector4f, + AnimationCurve, + PPtr[Object], + int, + Vector2f, + bool, + Matrix4x4f, + ] + + +@unitypy_define class VFXEntryExpressionValue: m_ExpressionIndex: int - m_Value: Union[Gradient, Vector3f, float, PPtr[NamedObject], Vector4f, AnimationCurve, PPtr[Object], int, Vector2f, bool, Matrix4x4f] - -@define(kw_only=True, slots=False) + m_Value: Union[ + Gradient, + Vector3f, + float, + PPtr[NamedObject], + Vector4f, + AnimationCurve, + PPtr[Object], + int, + Vector2f, + bool, + Matrix4x4f, + ] + + +@unitypy_define class VFXEventDesc: name: str playSystems: List[int] stopSystems: List[int] initSystems: Optional[List[int]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VFXExposedMapping: mapping: VFXMapping space: int -@define(kw_only=True, slots=False) + +@unitypy_define class VFXExpressionContainer: m_Expressions: List[Expression] m_NeedsLocalToWorld: bool @@ -10354,11 +11286,13 @@ class VFXExpressionContainer: m_NeededMainCameraBuffers: Optional[int] = None m_NeedsMainCamera: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VFXField: m_Array: Union[List[VFXEntryExpressionValue], List[VFXEntryExposed]] -@define(kw_only=True, slots=False) + +@unitypy_define class VFXGPUBufferDesc: capacity: int layout: List[VFXLayoutElementDesc] @@ -10368,34 +11302,40 @@ class VFXGPUBufferDesc: target: Optional[int] = None type: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VFXInstanceSplitDesc: values: List[int] -@define(kw_only=True, slots=False) + +@unitypy_define class VFXLayoutElementDesc: name: str offset: VFXLayoutOffset type: int -@define(kw_only=True, slots=False) + +@unitypy_define class VFXLayoutOffset: bucket: int element: int structure: int -@define(kw_only=True, slots=False) + +@unitypy_define class VFXMapping: index: int nameId: str -@define(kw_only=True, slots=False) + +@unitypy_define class VFXMappingTemporary: mapping: VFXMapping pastFrameIndex: int perCameraBuffer: bool -@define(kw_only=True, slots=False) + +@unitypy_define class VFXPropertySheetSerializedBase: m_AnimationCurve: VFXField m_Bool: VFXField @@ -10409,7 +11349,8 @@ class VFXPropertySheetSerializedBase: m_Vector3f: VFXField m_Vector4f: VFXField -@define(kw_only=True, slots=False) + +@unitypy_define class VFXRendererSettings: lightProbeUsage: int motionVectorGenerationMode: int @@ -10418,13 +11359,15 @@ class VFXRendererSettings: shadowCastingMode: int rayTracingMode: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VFXShaderSourceDesc: compute: bool name: str source: str -@define(kw_only=True, slots=False) + +@unitypy_define class VFXSystemDesc: buffers: List[VFXMapping] capacity: int @@ -10436,7 +11379,8 @@ class VFXSystemDesc: instanceSplitDescs: Optional[List[VFXInstanceSplitDesc]] = None name: Optional[str] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VFXTaskDesc: buffers: List[VFXMapping] params: List[VFXMapping] @@ -10446,7 +11390,8 @@ class VFXTaskDesc: instanceSplitIndex: Optional[int] = None temporaryBuffers: Optional[List[VFXMappingTemporary]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VFXTemplate: category: str description: str @@ -10454,12 +11399,14 @@ class VFXTemplate: name: str thumbnail: PPtr[Texture2D] -@define(kw_only=True, slots=False) + +@unitypy_define class VFXTemporaryGPUBufferDesc: desc: VFXGPUBufferDesc frameCount: int -@define(kw_only=True, slots=False) + +@unitypy_define class VRSettings: cardboard: Optional[Google] = None daydream: Optional[Google] = None @@ -10469,7 +11416,8 @@ class VRSettings: none: Optional[DeviceNone] = None oculus: Optional[Oculus] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ValueArray: m_BoolValues: List[bool] m_FloatValues: List[float] @@ -10479,27 +11427,32 @@ class ValueArray: m_ScaleValues: Optional[Union[List[float4], List[float3]]] = None m_VectorValues: Optional[List[float4]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ValueArrayConstant: m_ValueArray: List[ValueConstant] -@define(kw_only=True, slots=False) + +@unitypy_define class ValueConstant: m_ID: int m_Index: int m_Type: int m_TypeID: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class ValueDelta: m_Start: float m_Stop: float -@define(kw_only=True, slots=False) + +@unitypy_define class VariableBoneCountWeights: m_Data: List[int] -@define(kw_only=True, slots=False) + +@unitypy_define class VariantInfo: graphicsStateInfoSet: Optional[List[GraphicsStateInfo]] = None keywordNames: Optional[str] = None @@ -10511,12 +11464,14 @@ class VariantInfo: shaderName: Optional[str] = None subShaderIndex: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class Vector3Curve: curve: AnimationCurve path: str -@define(kw_only=True, slots=False) + +@unitypy_define class VectorParameter: m_ArraySize: int m_Dim: int @@ -10524,7 +11479,8 @@ class VectorParameter: m_NameIndex: int m_Type: int -@define(kw_only=True, slots=False) + +@unitypy_define class VelocityModule: enabled: bool inWorldSpace: bool @@ -10540,7 +11496,8 @@ class VelocityModule: radial: Optional[MinMaxCurve] = None speedModifier: Optional[MinMaxCurve] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VertexData: m_DataSize: bytes m_VertexCount: int @@ -10552,13 +11509,15 @@ class VertexData: m_Streams_2_: Optional[StreamInfo] = None m_Streams_3_: Optional[StreamInfo] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VertexLayoutInfo: vertexChannelsInfo: List[ChannelInfo] vertexStreamCount: int vertexStrides: List[int] -@define(kw_only=True, slots=False) + +@unitypy_define class VideoClipImporterOutput: encodedEndFrame: Optional[int] = None encodedHeight: Optional[int] = None @@ -10580,7 +11539,8 @@ class VideoClipImporterOutput: streamedResource: Optional[StreamedResource] = None transcodeSkipped: Optional[bool] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VideoClipImporterTargetSettings: aspectRatio: int bitrateMode: int @@ -10591,7 +11551,8 @@ class VideoClipImporterTargetSettings: resizeFormat: int spatialQuality: int -@define(kw_only=True, slots=False) + +@unitypy_define class VisualEffectInfo: m_Buffers: List[VFXGPUBufferDesc] m_CPUBuffers: List[VFXCPUBufferDesc] @@ -10612,7 +11573,8 @@ class VisualEffectInfo: m_RuntimeVersion: Optional[int] = None m_TemporaryBuffers: Optional[List[VFXTemporaryGPUBufferDesc]] = None -@define(kw_only=True, slots=False) + +@unitypy_define class VisualEffectSettings: m_CullingFlags: int m_InitialEventName: str @@ -10624,7 +11586,8 @@ class VisualEffectSettings: m_InstancingDisabledReason: Optional[int] = None m_InstancingMode: Optional[int] = None -@define(kw_only=True, slots=False) + +@unitypy_define class WheelFrictionCurve: asymptoteSlip: Optional[float] = None asymptoteValue: Optional[float] = None @@ -10637,23 +11600,27 @@ class WheelFrictionCurve: m_Stiffness: Optional[float] = None stiffnessFactor: Optional[float] = None -@define(kw_only=True, slots=False) + +@unitypy_define class bitset: bitCount: int bitblocks: bytes -@define(kw_only=True, slots=False) + +@unitypy_define class int2_storage: x: int y: int -@define(kw_only=True, slots=False) + +@unitypy_define class int3_storage: x: int y: int z: int -@define(kw_only=True, slots=False) + +@unitypy_define class xform: q: float4 s: Union[float3, float4] diff --git a/generators/ClassesGenerator.py b/generators/ClassesGenerator.py index a58578a8..1c9ea09d 100644 --- a/generators/ClassesGenerator.py +++ b/generators/ClassesGenerator.py @@ -40,6 +40,53 @@ "TypelessData": "bytes", } +GENERATED_HEADER = """ +# type: ignore +from __future__ import annotations + +from abc import ABC +from typing import List, Optional, Tuple, TypeVar, Union + +from attrs import define as attrs_define + +from .math import ( + ColorRGBA, + Matrix3x4f, + Matrix4x4f, + Quaternionf, + Vector2f, + Vector3f, + Vector4f, + float3, + float4, +) +from .Object import Object +from .PPtr import PPtr + +T = TypeVar("T") + + +def unitypy_define(cls: T) -> T: + \"\"\" + A hacky solution to bypass multiple problems related to attrs and inheritance. + + The class inheritance is very lax and based on the typetrees. + Some of the child classes might not have the same attributes as the parent class, + which would make type-hinting more tricky, and breaks attrs.define. + + Therefore this function bypasses the issue + by redifining the bases for problematic classes for the attrs.define call. + \"\"\" + bases = cls.__bases__ + if bases[0] in (object, Object, ABC): + cls = attrs_define(cls, slots=True, unsafe_hash=True) + else: + cls.__bases__ = (Object,) + cls = attrs_define(cls, slots=False, unsafe_hash=True) + cls.__bases__ = bases + return cls +"""[0:] + # LIST_BASE_TYPE_MAP = { # "short": "np.int16", # "int": "np.int32", @@ -140,7 +187,7 @@ def generate_str(self) -> str: ) return "\n".join( [ - "@define(kw_only=True, slots=False)", + "@unitypy_define", f"class {self.name}{parentsString}:", *field_strings, ] @@ -318,14 +365,7 @@ def main(): fp = os.path.join(ROOT, "UnityPy", "classes", "generated.py") with open(fp, "wt", encoding="utf8") as f: - f.write("#type: ignore\n") - f.write("from __future__ import annotations\n") - f.write("from abc import ABC\n") - f.write("from attrs import define\n") - f.write("from typing import List, Optional, Tuple, Union\n\n") - f.write(f"from .math import {', '.join(MATH_CLASSES)}\n") - f.write("from .Object import Object\n") - f.write("from .PPtr import PPtr\n") + f.write(GENERATED_HEADER) f.write("\n\n") f.write( From 7e0da84124a13154ce86cfdb7e805dd2264ce320 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 Sep 2024 17:05:59 +0200 Subject: [PATCH 316/599] 1.20.3 version bump --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index bd88b8a9..fff18d2a 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.20.2" +__version__ = "1.20.3" from .environment import Environment as Environment from .helpers.ArchiveStorageManager import ( From 8fcc664d1f5d24d8d5ab8b96e3db50728c0a8bb1 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 30 Sep 2024 17:07:15 +0200 Subject: [PATCH 317/599] publish.yml - use macos-13 instead of 11, remove redundant universal2 wheels --- .github/workflows/publish.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9ac69133..67a99c1c 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -14,7 +14,7 @@ jobs: strategy: fail-fast: true matrix: - os: ["ubuntu-20.04", "windows-2019", "macos-11"] + os: ["ubuntu-20.04", "windows-2019", "macos-13"] cp: ["cp37", "cp38", "cp39", "cp310", "cp311", "cp312", "cp313"] @@ -45,7 +45,7 @@ jobs: uses: pypa/cibuildwheel@v2.20.0 env: CIBW_ARCHS_LINUX: auto aarch64 - CIBW_ARCHS_MACOS: x86_64 arm64 universal2 + CIBW_ARCHS_MACOS: x86_64 arm64 CIBW_BUILD: | ${{ matrix.cp }}-manylinux_x86_64 ${{ matrix.cp }}-manylinux_i686 @@ -54,7 +54,6 @@ jobs: ${{ matrix.cp }}-win32 ${{ matrix.cp }}-macosx_x86_64 ${{ matrix.cp }}-macosx_arm64 - ${{ matrix.cp }}-macosx_universal2 # Disabled repair wheel since the fmob lib is not compatible CIBW_REPAIR_WHEEL_COMMAND: '' CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'mv {wheel} {dest_dir}/"$(basename {wheel} | sed "s/-linux_/-manylinux_2_17_/")"' From 023f3dfd0e0472c485cb9f2d3720db962738a639 Mon Sep 17 00:00:00 2001 From: mos9527 <31397301+mos9527@users.noreply.github.com> Date: Sun, 6 Oct 2024 05:33:14 +0800 Subject: [PATCH 318/599] SerializedType - fix `attrs` accidentally removing default class attributes (#272) --- UnityPy/files/SerializedFile.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index f22e5124..e5ef1d63 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -106,7 +106,7 @@ def IsPatch(self): return self.build_type == "p" -@define(slots=True) +@define(slots=True, init=False) class SerializedType: class_id: int is_stripped_type: Optional[bool] = None @@ -129,6 +129,7 @@ def __init__( ): version = serialized_file.header.version self.class_id = reader.read_int() + self.__attrs_init__(self.class_id) if version >= 16: self.is_stripped_type = reader.read_boolean() From 4f14a3882a7a6f0cbb7a904a824f3b19bdd7ecce Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 6 Oct 2024 00:05:39 +0200 Subject: [PATCH 319/599] 1.20.4 version bump --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index fff18d2a..2f91fef7 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.20.3" +__version__ = "1.20.4" from .environment import Environment as Environment from .helpers.ArchiveStorageManager import ( From edd1df4479f406b216904e74f06b2a506e541824 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 13 Oct 2024 21:59:17 +0200 Subject: [PATCH 320/599] remove legacy C AnimationClip --- UnityPyBoost/AnimationClip.cpp | 150 --------------------------------- UnityPyBoost/AnimationClip.hpp | 5 -- UnityPyBoost/Mesh.hpp | 1 - UnityPyBoost/UnityPyBoost.cpp | 9 -- 4 files changed, 165 deletions(-) delete mode 100644 UnityPyBoost/AnimationClip.cpp delete mode 100644 UnityPyBoost/AnimationClip.hpp diff --git a/UnityPyBoost/AnimationClip.cpp b/UnityPyBoost/AnimationClip.cpp deleted file mode 100644 index 0a447f4d..00000000 --- a/UnityPyBoost/AnimationClip.cpp +++ /dev/null @@ -1,150 +0,0 @@ -#include "AnimationClip.hpp" -#include - -#define MIN(x, y) (((x) < (y)) ? (x) : (y)) - -/* AnimationClip.py */ -static float *UnpackFloats(uint32_t m_NumItems, float m_Range, float m_Start, uint8_t *m_Data, char m_BitSize, int itemCountInChunk, int chunkStride, int start, int numChunks) -{ - int bitPos = m_BitSize * start; - int indexPos = bitPos / 8; - bitPos %= 8; - - float scale = 1.0f / m_Range; - if (numChunks == -1) - numChunks = (int)m_NumItems / itemCountInChunk; - - // TODO: might be better to use ulong instead of uint - uint32_t end = chunkStride * numChunks / 4; - // TODO: check if this is correct - float *data = (float *)malloc(sizeof(float) * numChunks * itemCountInChunk); - float *dataStart = data; - for (uint32_t index = 0; index != end; index += chunkStride / 4) - { - for (int i = 0; i < itemCountInChunk; ++i) - { - uint32_t x = 0; - int bits = 0; - while (bits < m_BitSize) - { - x |= (uint32_t)((m_Data[indexPos] >> bitPos) << bits); - int num = MIN(m_BitSize - bits, 8 - bitPos); - bitPos += num; - bits += num; - if (bitPos == 8) - { - indexPos++; - bitPos = 0; - } - } - x &= (uint32_t)(1 << m_BitSize) - 1u; - *data++ = (x / (scale * ((1 << m_BitSize) - 1)) + m_Start); - } - } - return dataStart; -} - -// TODO: check if bitPos, bits, and num can be reduced to chars -static int *UnpackInts(uint32_t m_NumItems, uint8_t *m_Data, char m_BitSize) -{ - int *data = (int *)malloc(m_NumItems * sizeof(int)); - - int indexPos = 0; - int bitPos = 0; - for (uint32_t i = 0; i < m_NumItems; i++) - { - int bits = 0; - data[i] = 0; - while (bits < m_BitSize) - { - data[i] |= (m_Data[indexPos] >> bitPos) << bits; - int num = MIN(m_BitSize - bits, 8 - bitPos); - bitPos += num; - bits += num; - if (bitPos == 8) - { - indexPos++; - bitPos = 0; - } - } - data[i] &= (1 << m_BitSize) - 1; - } - return data; -} - -// TODO: implement unpack quaternions - -PyObject *unpack_floats(PyObject *self, PyObject *args) -{ - // define vars - uint32_t m_NumItems; - float m_Range; - float m_Start; - uint8_t *m_Data; - char m_BitSize; - int itemCountInChunk; - int chunkStride; - int start; - int numChunks; - Py_ssize_t data_size; - - start = 0; - numChunks = -1; - if (!PyArg_ParseTuple(args, "Iffy#bii|ii", &m_NumItems, &m_Range, &m_Start, &m_Data, &data_size, &m_BitSize, &itemCountInChunk, &chunkStride, &start, &numChunks)) - return NULL; - - // decode - float *array = UnpackFloats(m_NumItems, m_Range, m_Start, m_Data, m_BitSize, itemCountInChunk, chunkStride, start, numChunks); - - if (numChunks == -1) - numChunks = (int)m_NumItems / itemCountInChunk; - Py_ssize_t array_len = numChunks * itemCountInChunk; - // return - PyObject *lst = PyList_New(array_len); - if (!lst) - return NULL; - for (Py_ssize_t i = 0; i < array_len; i++) - { - PyObject *num = PyFloat_FromDouble(array[i]); - if (!num) - { - Py_DECREF(lst); - return NULL; - } - PyList_SET_ITEM(lst, i, num); // reference to num stolen - } - free(array); - return lst; -} - -PyObject *unpack_ints(PyObject *self, PyObject *args) -{ - // define vars - uint32_t m_NumItems; - uint8_t *m_Data; - char m_BitSize; - Py_ssize_t data_size; - - if (!PyArg_ParseTuple(args, "Iy#b", &m_NumItems, &m_Data, &data_size, &m_BitSize)) - return NULL; - - // decode - int *array = UnpackInts(m_NumItems, m_Data, m_BitSize); - - // return - PyObject *lst = PyList_New(m_NumItems); - if (!lst) - return NULL; - for (uint32_t i = 0; i < m_NumItems; i++) - { - PyObject *num = PyLong_FromLong(array[i]); - if (!num) - { - Py_DECREF(lst); - return NULL; - } - PyList_SET_ITEM(lst, i, num); // reference to num stolen - } - free(array); - return lst; -} \ No newline at end of file diff --git a/UnityPyBoost/AnimationClip.hpp b/UnityPyBoost/AnimationClip.hpp deleted file mode 100644 index f231d55f..00000000 --- a/UnityPyBoost/AnimationClip.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#define PY_SSIZE_T_CLEAN -#pragma once -#include -PyObject *unpack_floats(PyObject *self, PyObject *args); -PyObject *unpack_ints(PyObject *self, PyObject *args); \ No newline at end of file diff --git a/UnityPyBoost/Mesh.hpp b/UnityPyBoost/Mesh.hpp index 6f0d87ca..db18f107 100644 --- a/UnityPyBoost/Mesh.hpp +++ b/UnityPyBoost/Mesh.hpp @@ -1,6 +1,5 @@ #define PY_SSIZE_T_CLEAN #pragma once -#include "AnimationClip.hpp" #include PyObject *unpack_vertexdata(PyObject *self, PyObject *args); \ No newline at end of file diff --git a/UnityPyBoost/UnityPyBoost.cpp b/UnityPyBoost/UnityPyBoost.cpp index fab8de5f..366f971a 100644 --- a/UnityPyBoost/UnityPyBoost.cpp +++ b/UnityPyBoost/UnityPyBoost.cpp @@ -1,7 +1,6 @@ #define PY_SSIZE_T_CLEAN #pragma once #include -#include "AnimationClip.hpp" #include "Mesh.hpp" #include "TextureSwizzler.hpp" #include "TypeTreeHelper.hpp" @@ -9,14 +8,6 @@ /* Mesh.py */ static struct PyMethodDef method_table[] = { - {"unpack_floats", - (PyCFunction)unpack_floats, - METH_VARARGS, - "replacement for PackedFloatVector.unpack_floats"}, - {"unpack_ints", - (PyCFunction)unpack_ints, - METH_VARARGS, - "replacement for PackedIntVector.unpack_ints"}, {"unpack_vertexdata", (PyCFunction)unpack_vertexdata, METH_VARARGS, From fa26e22c131305b376586d545d21cdb6502e673c Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 14 Oct 2024 20:36:58 +0200 Subject: [PATCH 321/599] fix Switch texture deswizzling --- README.md | 1 + UnityPy/export/Texture2DConverter.py | 34 ++-- UnityPy/helpers/TextureSwizzler.py | 258 +++++++++++---------------- UnityPyBoost/TextureSwizzler.cpp | 96 ---------- UnityPyBoost/TextureSwizzler.hpp | 5 - UnityPyBoost/UnityPyBoost.cpp | 5 - 6 files changed, 123 insertions(+), 276 deletions(-) delete mode 100644 UnityPyBoost/TextureSwizzler.cpp delete mode 100644 UnityPyBoost/TextureSwizzler.hpp diff --git a/README.md b/README.md index 74c13144..ea0b67b9 100644 --- a/README.md +++ b/README.md @@ -413,3 +413,4 @@ many thanks to: - [Perfare](https://github.com/Perfare) for creating and maintaining and every contributor of [AssetStudio](https://github.com/Perfare/AssetStudio) - [ds5678](https://github.com/ds5678) for the [TypeTreeDumps](https://github.com/AssetRipper/TypeTreeDumps) and the [custom minimal Tpk format](https://github.com/AssetRipper/Tpk) - [Razmoth](https://github.com/Razmoth) for figuring out and sharing Unity CN's AssetBundle decryption ([src](https://github.com/Razmoth/PGRStudio)). +- [nesrak1](https://github.com/nesrak1) for figuring out the [Switch texture swizzling](https://github.com/nesrak1/UABEA/blob/master/TexturePlugin/Texture2DSwitchDeswizzler.cs) \ No newline at end of file diff --git a/UnityPy/export/Texture2DConverter.py b/UnityPy/export/Texture2DConverter.py index 3e731c4e..2fbbbb1e 100644 --- a/UnityPy/export/Texture2DConverter.py +++ b/UnityPy/export/Texture2DConverter.py @@ -150,8 +150,17 @@ def parse_image_data( f"Not implemented texture format: {texture_format.name}" ) - if texture_format in XBOX_SWAP_FORMATS: - image_data = swap_bytes_for_xbox(image_data, platform) + if platform == BuildTarget.XBOX360 and texture_format in XBOX_SWAP_FORMATS: + image_data = swap_bytes_for_xbox(image_data) + elif platform == BuildTarget.Switch and platform_blob is not None: + gobsPerBlock = TextureSwizzler.get_switch_gobs_per_block(platform_blob) + block_size = TextureSwizzler.TEXTUREFORMAT_BLOCK_SIZE_MAP[texture_format] + padded_size = TextureSwizzler.get_padded_texture_size( + width, height, *block_size, gobsPerBlock + ) + image_data = TextureSwizzler.deswizzle( + image_data, *padded_size, *block_size, gobsPerBlock + ) if not isinstance(texture_format, TextureFormat): texture_format = TextureFormat(texture_format) @@ -169,33 +178,18 @@ def parse_image_data( img = selection[0](image_data, width, height, *selection[1:]) - if platform == BuildTarget.Switch and platform_blob is not None: - gobsPerBlock = TextureSwizzler.get_switch_gobs_per_block(platform_blob) - blockSize = TextureSwizzler.TEXTUREFORMAT_BLOCK_SIZE_MAP[texture_format] - img = TextureSwizzler.switch_deswizzle(img, blockSize, gobsPerBlock) - if img and flip: return img.transpose(Image.FLIP_TOP_BOTTOM) return img -def swap_bytes_for_xbox(image_data: bytes, build_target: BuildTarget) -> bytes: +def swap_bytes_for_xbox(image_data: bytes) -> bytes: """swaps the texture bytes This is required for textures deployed on XBOX360. - - :param image_data: texture data - :type image_data: bytes - :param build_target: platform of the asset - :type build_target: BuildTarget - :return: swapped data if platform = XBOX360 else data - :rtype: bytes """ - if ( - build_target == BuildTarget.XBOX360 - ): # swap bytes for Xbox confirmed,PS3 not encountered - for i in range(0, len(image_data), 2): - image_data[i : i + 2] = image_data[i : i + 2][::-1] + for i in range(0, len(image_data), 2): + image_data[i : i + 2] = image_data[i : i + 2][::-1] return image_data diff --git a/UnityPy/helpers/TextureSwizzler.py b/UnityPy/helpers/TextureSwizzler.py index 9f9dafaf..33f64c94 100644 --- a/UnityPy/helpers/TextureSwizzler.py +++ b/UnityPy/helpers/TextureSwizzler.py @@ -1,177 +1,135 @@ # based on https://github.com/nesrak1/UABEA/blob/master/TexturePlugin/Texture2DSwitchDeswizzler.cs from typing import Dict, Tuple -from PIL import Image - from ..enums import TextureFormat -try: - from ..UnityPyBoost import switch_deswizzle as switch_deswizzle_c -except: - switch_deswizzle_c = None - - -GOB_X_BLOCK_COUNT = 4 -GOB_Y_BLOCK_COUNT = 8 -BLOCKS_IN_GOB = GOB_X_BLOCK_COUNT * GOB_Y_BLOCK_COUNT +GOB_X_TEXEL_COUNT = 4 +GOB_Y_TEXEL_COUNT = 8 +TEXEL_BYTE_SIZE = 16 +TEXELS_IN_GOB = GOB_X_TEXEL_COUNT * GOB_Y_TEXEL_COUNT +GOB_MAP = [ + (((l >> 3) & 0b10) | ((l >> 1) & 0b1), ((l >> 1) & 0b110) | (l & 0b1)) + for l in range(TEXELS_IN_GOB) +] def ceil_divide(a: int, b: int) -> int: - return (a + b - 1) / b - - -def switch_deswizzle( - src_image: Image.Image, block_size: Tuple[int, int], gobs_per_block: int -) -> Image.Image: - src_bytes = src_image.tobytes() - pixel_width = len(src_image.mode) - - if switch_deswizzle_c: - dst_bytes = switch_deswizzle_c( - src_bytes, pixel_width, *src_image.size, *block_size, gobs_per_block - ) - return Image.frombytes(src_image.mode, src_image.size, dst_bytes) - - dst_bytes = bytearray(len(src_bytes)) - - width, height = src_image.size - block_width, block_height = block_size - block_count_x = width // block_width - block_count_y = height // block_height - - gob_count_x = block_count_x // GOB_X_BLOCK_COUNT - gob_count_y = block_count_y // GOB_Y_BLOCK_COUNT - - src_x = 0 - src_y = 0 - - block_pixel_width = block_width * pixel_width - row_pixel_width = width * pixel_width - data_size = len(src_bytes) - - GOB_MAP = [ - (((l >> 3) & 0b10) | ((l >> 1) & 0b1), ((l >> 1) & 0b110) | (l & 0b1)) - for l in range(BLOCKS_IN_GOB) - ] - - for y in range(gob_count_y): - for x in range(gob_count_x): - for k in range(gobs_per_block): + return (a + b - 1) // b + + +def deswizzle( + data: bytes, + width: int, + height: int, + block_width: int, + block_height: int, + texels_per_block: int, +) -> bytearray: + block_count_x = ceil_divide(width, block_width) + block_count_y = ceil_divide(height, block_height) + gob_count_x = block_count_x // GOB_X_TEXEL_COUNT + gob_count_y = block_count_y // GOB_Y_TEXEL_COUNT + new_data = bytearray(len(data)) + data_view = memoryview(data) + + for i in range(gob_count_y // texels_per_block): + for j in range(gob_count_x): + base_gob_dst_x = j * 4 + for k in range(texels_per_block): + base_gob_dst_y = (i * texels_per_block + k) * GOB_Y_TEXEL_COUNT for gob_x, gob_y in GOB_MAP: - gob_dst_x = x * GOB_X_BLOCK_COUNT + gob_x - gob_dst_y = (y * gobs_per_block + k) * GOB_Y_BLOCK_COUNT + gob_y - - src_offset = ( - src_x * block_width + (src_y * block_height) * width - ) * pixel_width dst_offset = ( - gob_dst_x * block_width + (gob_dst_y * block_height) * width - ) * pixel_width - - for by in range(block_height): - if dst_offset > data_size or src_offset > data_size: - break - copy_width = block_pixel_width - if (data_size - src_offset) < block_pixel_width: - copy_width = data_size - src_offset - elif (data_size - dst_offset) < block_pixel_width: - copy_width = data_size - dst_offset - - dst_bytes[dst_offset : dst_offset + copy_width] = src_bytes[ - src_offset : src_offset + copy_width - ] - src_offset += row_pixel_width - dst_offset += row_pixel_width - - src_x += 1 - if src_x >= block_count_x: - src_x = 0 - src_y += 1 - - return Image.frombytes(src_image.mode, src_image.size, dst_bytes) - - -def switch_swizzle( - src_image: Image.Image, block_size: Tuple[int, int], gobs_per_block: int -) -> Image.Image: - dstImage = Image.new(src_image.mode, src_image.size) - - blockCountX, blockCountY = map(ceil_divide, zip(src_image.size, block_size)) - - gob_count_x = blockCountX / GOB_X_BLOCK_COUNT - gob_count_y = blockCountY / GOB_Y_BLOCK_COUNT - - dstX = 0 - dstY = 0 - - for i in range(gob_count_y): - for j in range(gob_count_x): - for k in range(gobs_per_block): - for l in range(BLOCKS_IN_GOB): - # todo: use table for speedy boi - gobX = ((l >> 3) & 0b10) | ((l >> 1) & 0b1) - gobY = ((l >> 1) & 0b110) | (l & 0b1) - gobSrcX = j * GOB_X_BLOCK_COUNT + gobX - gobSrcY = (i * gobs_per_block + k) * GOB_Y_BLOCK_COUNT + gobY - CopyBlock( - src_image, dstImage, gobSrcX, gobSrcY, dstX, dstY, *block_size - ) - - dstX += 1 - if dstX >= blockCountX: - dstX = 0 - dstY += 1 - - return dstImage + (base_gob_dst_y + gob_y) * block_count_x + + (base_gob_dst_x + gob_x) + ) * TEXEL_BYTE_SIZE + new_data[dst_offset : dst_offset + TEXEL_BYTE_SIZE] = data_view[ + :TEXEL_BYTE_SIZE + ] + data_view = data_view[TEXEL_BYTE_SIZE:] + return new_data + + +# def switch_swizzle( +# src_image: Image.Image, block_size: Tuple[int, int], texels_per_block: int +# ) -> Image.Image: +# dstImage = Image.new(src_image.mode, src_image.size) + +# blockCountX, blockCountY = map(ceil_divide, zip(src_image.size, block_size)) + +# gob_count_x = blockCountX / GOB_X_BLOCK_COUNT +# gob_count_y = blockCountY / GOB_Y_BLOCK_COUNT + +# dstX = 0 +# dstY = 0 + +# for i in range(gob_count_y): +# for j in range(gob_count_x): +# for k in range(texels_per_block): +# for l in range(BLOCKS_IN_GOB): +# # todo: use table for speedy boi +# gobX = ((l >> 3) & 0b10) | ((l >> 1) & 0b1) +# gobY = ((l >> 1) & 0b110) | (l & 0b1) +# gobSrcX = j * GOB_X_BLOCK_COUNT + gobX +# gobSrcY = (i * texels_per_block + k) * GOB_Y_BLOCK_COUNT + gobY +# CopyBlock( +# src_image, dstImage, gobSrcX, gobSrcY, dstX, dstY, *block_size +# ) + +# dstX += 1 +# if dstX >= blockCountX: +# dstX = 0 +# dstY += 1 + +# return dstImage # this should be the amount of pixels that can fit 16 bytes TEXTUREFORMAT_BLOCK_SIZE_MAP: Dict[TextureFormat, Tuple[int, int]] = { - TextureFormat.Alpha8: [16, 1], # 1 byte per pixel - TextureFormat.ARGB4444: [8, 1], # 2 bytes per pixel - TextureFormat.RGBA32: [4, 1], # 4 bytes per pixel - TextureFormat.ARGB32: [4, 1], # 4 bytes per pixel - TextureFormat.ARGBFloat: [1, 1], # 16 bytes per pixel (?) - TextureFormat.RGB565: [8, 1], # 2 bytes per pixel - TextureFormat.R16: [8, 1], # 2 bytes per pixel - TextureFormat.DXT1: [8, 4], # 8 bytes per 4x4=16 pixels - TextureFormat.DXT5: [4, 4], # 16 bytes per 4x4=16 pixels - TextureFormat.RGBA4444: [8, 1], # 2 bytes per pixel - TextureFormat.BGRA32: [4, 1], # 4 bytes per pixel - TextureFormat.BC6H: [4, 4], # 16 bytes per 4x4=16 pixels - TextureFormat.BC7: [4, 4], # 16 bytes per 4x4=16 pixels - TextureFormat.BC4: [8, 4], # 8 bytes per 4x4=16 pixels - TextureFormat.BC5: [4, 4], # 16 bytes per 4x4=16 pixels - TextureFormat.ASTC_RGB_4x4: [4, 4], # 16 bytes per 4x4=16 pixels - TextureFormat.ASTC_RGB_5x5: [5, 5], # 16 bytes per 5x5=25 pixels - TextureFormat.ASTC_RGB_6x6: [6, 6], # 16 bytes per 6x6=36 pixels - TextureFormat.ASTC_RGB_8x8: [8, 8], # 16 bytes per 8x8=64 pixels - TextureFormat.ASTC_RGB_10x10: [10, 10], # 16 bytes per 10x10=100 pixels - TextureFormat.ASTC_RGB_12x12: [12, 12], # 16 bytes per 12x12=144 pixels - TextureFormat.ASTC_RGBA_4x4: [4, 4], # 16 bytes per 4x4=16 pixels - TextureFormat.ASTC_RGBA_5x5: [5, 5], # 16 bytes per 5x5=25 pixels - TextureFormat.ASTC_RGBA_6x6: [6, 6], # 16 bytes per 6x6=36 pixels - TextureFormat.ASTC_RGBA_8x8: [8, 8], # 16 bytes per 8x8=64 pixels - TextureFormat.ASTC_RGBA_10x10: [10, 10], # 16 bytes per 10x10=100 pixels - TextureFormat.ASTC_RGBA_12x12: [12, 12], # 16 bytes per 12x12=144 pixels - TextureFormat.RG16: [8, 1], # 2 bytes per pixel - TextureFormat.R8: [16, 1], # 1 byte per pixel + TextureFormat.Alpha8: (16, 1), # 1 byte per pixel + TextureFormat.ARGB4444: (8, 1), # 2 bytes per pixel + TextureFormat.RGBA32: (4, 1), # 4 bytes per pixel + TextureFormat.ARGB32: (4, 1), # 4 bytes per pixel + TextureFormat.ARGBFloat: (1, 1), # 16 bytes per pixel (?) + TextureFormat.RGB565: (8, 1), # 2 bytes per pixel + TextureFormat.R16: (8, 1), # 2 bytes per pixel + TextureFormat.DXT1: (8, 4), # 8 bytes per 4x4=16 pixels + TextureFormat.DXT5: (4, 4), # 16 bytes per 4x4=16 pixels + TextureFormat.RGBA4444: (8, 1), # 2 bytes per pixel + TextureFormat.BGRA32: (4, 1), # 4 bytes per pixel + TextureFormat.BC6H: (4, 4), # 16 bytes per 4x4=16 pixels + TextureFormat.BC7: (4, 4), # 16 bytes per 4x4=16 pixels + TextureFormat.BC4: (8, 4), # 8 bytes per 4x4=16 pixels + TextureFormat.BC5: (4, 4), # 16 bytes per 4x4=16 pixels + TextureFormat.ASTC_RGB_4x4: (4, 4), # 16 bytes per 4x4=16 pixels + TextureFormat.ASTC_RGB_5x5: (5, 5), # 16 bytes per 5x5=25 pixels + TextureFormat.ASTC_RGB_6x6: (6, 6), # 16 bytes per 6x6=36 pixels + TextureFormat.ASTC_RGB_8x8: (8, 8), # 16 bytes per 8x8=64 pixels + TextureFormat.ASTC_RGB_10x10: (10, 10), # 16 bytes per 10x10=100 pixels + TextureFormat.ASTC_RGB_12x12: (12, 12), # 16 bytes per 12x12=144 pixels + TextureFormat.ASTC_RGBA_4x4: (4, 4), # 16 bytes per 4x4=16 pixels + TextureFormat.ASTC_RGBA_5x5: (5, 5), # 16 bytes per 5x5=25 pixels + TextureFormat.ASTC_RGBA_6x6: (6, 6), # 16 bytes per 6x6=36 pixels + TextureFormat.ASTC_RGBA_8x8: (8, 8), # 16 bytes per 8x8=64 pixels + TextureFormat.ASTC_RGBA_10x10: (10, 10), # 16 bytes per 10x10=100 pixels + TextureFormat.ASTC_RGBA_12x12: (12, 12), # 16 bytes per 12x12=144 pixels + TextureFormat.RG16: (8, 1), # 2 bytes per pixel + TextureFormat.R8: (16, 1), # 1 byte per pixel } def get_padded_texture_size( - width: int, height: int, block_width: int, block_height: int, gobs_per_block: int + width: int, height: int, block_width: int, block_height: int, texels_per_block: int ): width = ( - ceil_divide(width, block_width * GOB_X_BLOCK_COUNT) + ceil_divide(width, block_width * GOB_X_TEXEL_COUNT) * block_width - * GOB_X_BLOCK_COUNT + * GOB_X_TEXEL_COUNT ) height = ( - ceil_divide(height, block_height * GOB_Y_BLOCK_COUNT * gobs_per_block) + ceil_divide(height, block_height * GOB_Y_TEXEL_COUNT * texels_per_block) * block_height - * GOB_Y_BLOCK_COUNT - * gobs_per_block + * GOB_Y_TEXEL_COUNT + * texels_per_block ) return width, height diff --git a/UnityPyBoost/TextureSwizzler.cpp b/UnityPyBoost/TextureSwizzler.cpp deleted file mode 100644 index 35dff5a9..00000000 --- a/UnityPyBoost/TextureSwizzler.cpp +++ /dev/null @@ -1,96 +0,0 @@ -#include - -const uint32_t GOB_X_BLOCK_COUNT = 4; -const uint32_t GOB_Y_BLOCK_COUNT = 8; -const uint32_t BLOCKS_IN_GOB = 32; // GOB_X_BLOCK_COUNT * GOB_Y_BLOCK_COUNT; - -const uint32_t GOB_MAP[32][2] = {{0, 0}, {0, 1}, {1, 0}, {1, 1}, {0, 2}, {0, 3}, {1, 2}, {1, 3}, {0, 4}, {0, 5}, {1, 4}, {1, 5}, {0, 6}, {0, 7}, {1, 6}, {1, 7}, {2, 0}, {2, 1}, {3, 0}, {3, 1}, {2, 2}, {2, 3}, {3, 2}, {3, 3}, {2, 4}, {2, 5}, {3, 4}, {3, 5}, {2, 6}, {2, 7}, {3, 6}, {3, 7}}; - -PyObject *switch_deswizzle(PyObject *self, PyObject *args) -{ - // define vars - uint8_t *src_data; - Py_ssize_t data_size; - uint32_t pixel_width; - - uint32_t width; - uint32_t height; - uint32_t block_width; - uint32_t block_height; - uint32_t gobs_per_block; - - if (!PyArg_ParseTuple(args, "y#IIIIII", &src_data, &data_size, &pixel_width, &width, &height, &block_width, &block_height, &gobs_per_block)) - return NULL; - - char *dst_data = (char *)malloc(data_size); - - uint32_t block_count_x = width / block_width; - uint32_t block_count_y = height / block_height; - - uint32_t gob_count_x = block_count_x / GOB_X_BLOCK_COUNT; - uint32_t gob_count_y = block_count_y / GOB_Y_BLOCK_COUNT; - - uint32_t src_x = 0; - uint32_t src_y = 0; - - uint32_t block_pixel_width = block_width * pixel_width; - uint32_t row_pixel_width = width * pixel_width; - - uint32_t gob_x, gob_y, gob_dst_x, gob_dst_y, src_offset, dst_offset; - - for (uint32_t y = 0; y < gob_count_y; y++) - { - for (uint32_t x = 0; x < gob_count_x; x++) - { - for (uint32_t k = 0; k < gobs_per_block; k++) - { - for (uint32_t l = 0; l < BLOCKS_IN_GOB; l++) - { - // printf("%d/%d, %d/%d, %d/%d, %d/%d\n", y, gob_count_y, x, gob_count_x, k, gobs_per_block, l, gobs_per_block); - gob_x = ((l >> 3) & 0b10) | ((l >> 1) & 0b1); - gob_y = ((l >> 1) & 0b110) | (l & 0b1); - gob_dst_x = x * GOB_X_BLOCK_COUNT + gob_x; - gob_dst_y = (y * gobs_per_block + k) * GOB_Y_BLOCK_COUNT + gob_y; - - src_offset = (src_x * block_width + (src_y * block_height) * width) * pixel_width; - dst_offset = (gob_dst_x * block_width + (gob_dst_y * block_height) * width) * pixel_width; - - for (uint32_t by = 0; by < block_height; by++) - { - if ((dst_offset > data_size) || (src_offset > data_size)) - { - break; - } - uint32_t copy_width = block_pixel_width; - if ((data_size - src_offset) < block_pixel_width) - { - copy_width = data_size - src_offset; - } - else if ((data_size - dst_offset) < block_pixel_width) - { - copy_width = data_size - dst_offset; - } - - memcpy( - dst_data + dst_offset, - src_data + src_offset, - copy_width); - src_offset += row_pixel_width; - dst_offset += row_pixel_width; - } - src_x += 1; - if (src_x >= block_count_x) - { - src_x = 0; - src_y += 1; - } - } - } - } - } - - PyObject *ret = PyBytes_FromStringAndSize(dst_data, data_size); - free(dst_data); - - return ret; -} diff --git a/UnityPyBoost/TextureSwizzler.hpp b/UnityPyBoost/TextureSwizzler.hpp deleted file mode 100644 index 0df0aa7c..00000000 --- a/UnityPyBoost/TextureSwizzler.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#define PY_SSIZE_T_CLEAN -#pragma once -#include - -PyObject *switch_deswizzle(PyObject *self, PyObject *args); diff --git a/UnityPyBoost/UnityPyBoost.cpp b/UnityPyBoost/UnityPyBoost.cpp index 366f971a..e2dedbca 100644 --- a/UnityPyBoost/UnityPyBoost.cpp +++ b/UnityPyBoost/UnityPyBoost.cpp @@ -2,7 +2,6 @@ #pragma once #include #include "Mesh.hpp" -#include "TextureSwizzler.hpp" #include "TypeTreeHelper.hpp" /* Mesh.py */ @@ -16,10 +15,6 @@ static struct PyMethodDef method_table[] = { (PyCFunction)read_typetree, METH_VARARGS | METH_KEYWORDS, "replacement for TypeTreeHelper.read_typetree"}, - {"switch_deswizzle", - (PyCFunction)switch_deswizzle, - METH_VARARGS, - "replacement for TextureSwizzler.switch_deswizzle"}, {NULL, NULL, 0, From 10fa6415ceeac40b2142830161c2d47cbdea627c Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 14 Oct 2024 20:37:55 +0200 Subject: [PATCH 322/599] SpriteHelper - use Mask for triangle copy and numpy as speedup if available --- UnityPy/export/SpriteHelper.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/UnityPy/export/SpriteHelper.py b/UnityPy/export/SpriteHelper.py index 3a4bee35..8a9d5c84 100644 --- a/UnityPy/export/SpriteHelper.py +++ b/UnityPy/export/SpriteHelper.py @@ -18,6 +18,11 @@ from ..classes import PPtr, Sprite, Texture2D +try: + import numpy as np +except ImportError: + np = None + class SpriteSettings: packed: bool @@ -247,7 +252,7 @@ def copy_triangle( maskdraw.polygon(mask_box, fill=255) # paste triangle into destination image - dst_img.paste(src_part, min(dst_tri)) + dst_img.paste(src_part, min(dst_tri), mask=mask) else: # transform is necessary, use affine transformation # https://stackoverflow.com/a/6959111 @@ -267,8 +272,11 @@ def copy_triangle( # Vector y corresponds to the x coordinates in the source triangle y = [x11, x21, x31, x12, x22, x32] - # np.lingal.solve - obviously way faster, but numpy will only come with 2.0 - A = linalg_solve(M, y) + if np: + A = np.linalg.solve(M, y) + else: + # np.lingal.solve - obviously way faster, but numpy will only come with 2.0 + A = linalg_solve(M, y) transformed = src_img.transform(dst_img.size, Image.AFFINE, A) From 40487fc99f8bdc41e23a6b32cf513da27fb3028b Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 14 Oct 2024 20:53:27 +0200 Subject: [PATCH 323/599] Texture2DConverter - extend compression with BC4, BC5, BC7 and LDR ASTC --- UnityPy/export/Texture2DConverter.py | 61 +++++++++++++++++++++------- pyproject.toml | 1 + 2 files changed, 47 insertions(+), 15 deletions(-) diff --git a/UnityPy/export/Texture2DConverter.py b/UnityPy/export/Texture2DConverter.py index 2fbbbb1e..cf58af23 100644 --- a/UnityPy/export/Texture2DConverter.py +++ b/UnityPy/export/Texture2DConverter.py @@ -31,35 +31,66 @@ def image_to_texture2d( # DXT if target_texture_format in [TF.DXT1, TF.DXT1Crunched]: - raw_img = img.convert("RGBA").tobytes() + raw_img = img.tobytes("raw", "RGBA") enc_img = etcpak.compress_bc1(raw_img, img.width, img.height) tex_format = TF.DXT1 elif target_texture_format in [TF.DXT5, TF.DXT5Crunched]: - raw_img = img.convert("RGBA").tobytes() - enc_img = etcpak.compress_to_dxt5(raw_img, img.width, img.height) + raw_img = img.tobytes("raw", "RGBA") + enc_img = etcpak.compress_bc3(raw_img, img.width, img.height) tex_format = TF.DXT5 + elif target_texture_format in [TF.BC4]: + raw_img = img.tobytes("raw", "RGBA") + enc_img = etcpak.compress_bc4(raw_img, img.width, img.height) + tex_format = TF.BC4 + elif target_texture_format in [TF.BC5]: + raw_img = img.tobytes("raw", "RGBA") + enc_img = etcpak.compress_bc5(raw_img, img.width, img.height) + tex_format = TF.BC5 + elif target_texture_format in [TF.BC7]: + raw_img = img.tobytes("raw", "RGBA") + enc_img = etcpak.compress_bc7(raw_img, img.width, img.height) + tex_format = TF.BC7 # ETC elif target_texture_format in [TF.ETC_RGB4, TF.ETC_RGB4Crunched, TF.ETC_RGB4_3DS]: - img = assert_rgba(img, target_texture_format) - r, g, b, a = img.split() - raw_img = Image.merge("RGBA", (b, g, r, a)).tobytes() - enc_img = etcpak.compress_to_etc1(raw_img, img.width, img.height) + raw_img = img.tobytes("raw", "RGBA") + enc_img = etcpak.compress_etc1_rgb(raw_img, img.width, img.height) tex_format = TF.ETC_RGB4 elif target_texture_format == TF.ETC2_RGB: - img = assert_rgba(img, target_texture_format) - r, g, b, a = img.split() - raw_img = Image.merge("RGBA", (b, g, r, a)).tobytes() - enc_img = etcpak.compress_to_etc2_rgb(raw_img, img.width, img.height) + raw_img = img.tobytes("raw", "RGBA") + enc_img = etcpak.compress_etc2_rgb(raw_img, img.width, img.height) tex_format = TF.ETC2_RGB elif ( target_texture_format in [TF.ETC2_RGBA8, TF.ETC2_RGBA8Crunched, TF.ETC2_RGBA1] or "_RGB_" in target_texture_format.name ): - img = assert_rgba(img, target_texture_format) - r, g, b, a = img.split() - raw_img = Image.merge("RGBA", (b, g, r, a)).tobytes() - enc_img = etcpak.compress_to_etc2_rgba(raw_img, img.width, img.height) + raw_img = img.tobytes("raw", "RGBA") + enc_img = etcpak.compress_etc2_rgba(raw_img, img.width, img.height) tex_format = TF.ETC2_RGBA8 + # ASTC + elif target_texture_format.name.startswith("ASTC"): + import astc_encoder + + raw_img = img.tobytes("raw", "RGBA") + + block_size = tuple( + map(int, target_texture_format.name.rsplit("_", 1)[1].split("x")) + ) + + config = astc_encoder.ASTCConfig( + astc_encoder.ASTCProfile.LDR, *block_size, 1, 100 + ) + context = astc_encoder.ASTCContext(config) + raw_img = astc_encoder.ASTCImage( + astc_encoder.ASTCType.U8, img.width, img.height, 1, raw_img + ) + if img.mode == "RGB": + tex_format = getattr(TF, f"ASTC_RGB_{block_size[0]}x{block_size[1]}") + else: + tex_format = getattr(TF, f"ASTC_RGBA_{block_size[0]}x{block_size[1]}") + + swizzle = astc_encoder.ASTCSwizzle.from_str("RGBA") + enc_img = context.compress(raw_img, swizzle) + tex_format = target_texture_format # A elif target_texture_format == TF.Alpha8: enc_img = img.tobytes("raw", "A") diff --git a/pyproject.toml b/pyproject.toml index 96bc4f86..47868934 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,6 +44,7 @@ dependencies = [ "Pillow", "texture2ddecoder", # texture decompression "etcpak", # ETC & DXT compression + "astc-encoder-py", # ASTC compression # raw typetree dumping "tabulate", # audio extraction From 52ce553ca97c5af2799f375aafaa5a244595b3ec Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 14 Oct 2024 10:00:47 +0200 Subject: [PATCH 324/599] TypeTree - implement ManagedReferencesRegistry reading --- UnityPy/files/SerializedFile.py | 1 + UnityPy/helpers/TypeTreeHelper.py | 125 ++++++++++++++------- UnityPyBoost/TypeTreeHelper.cpp | 174 +++++++++++++++++++++++++++++- UnityPyBoost/TypeTreeHelper.hpp | 7 +- 4 files changed, 262 insertions(+), 45 deletions(-) diff --git a/UnityPy/files/SerializedFile.py b/UnityPy/files/SerializedFile.py index e5ef1d63..7ee9fc93 100644 --- a/UnityPy/files/SerializedFile.py +++ b/UnityPy/files/SerializedFile.py @@ -214,6 +214,7 @@ class SerializedFile(File.File): types: List[SerializedType] script_types: List[LocalSerializedObjectIdentifier] externals: List[FileIdentifier] + ref_types: Optional[List[SerializedType]] objects: Dict[int, ObjectReader] unknown: int header: SerializedFileHeader diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 07a63321..9136a46d 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -1,12 +1,15 @@ from __future__ import annotations + import re -from typing import Optional, Any, Union, TYPE_CHECKING +from copy import copy +from typing import TYPE_CHECKING, Any, Optional, Union -from .TypeTreeNode import TypeTreeNode -from ..streams.EndianBinaryReader import EndianBinaryReader -from ..streams.EndianBinaryWriter import EndianBinaryWriter +from attrs import define from .. import classes +from ..streams.EndianBinaryReader import EndianBinaryReader +from ..streams.EndianBinaryWriter import EndianBinaryWriter +from .TypeTreeNode import TypeTreeNode Object = classes.Object PPtr = classes.PPtr @@ -70,6 +73,38 @@ } +@define(slots=True) +class TypeTreeConfig: + as_dict: bool + assetsfile: "Optional[SerializedFile]" = None + has_registry: bool = False + + +def get_ref_type_node(ref_object: dict, assetfile: SerializedFile) -> TypeTreeNode: + typ = ref_object["type"] + if isinstance(typ, dict): + cls = typ["class"] + ns = typ["ns"] + asm = typ["asm"] + else: + cls = getattr(typ, "class") + ns = typ.ns + asm = typ.asm + + if not assetfile or not assetfile.ref_types: + raise ValueError("SerializedFile has no ref_types") + + for ref_type in assetfile.ref_types: + if ( + cls == ref_type.m_ClassName + and ns == ref_type.m_NameSpace + and asm == ref_type.m_AssemblyName + ): + return ref_type.node + else: + raise ValueError(f"Referenced type not found: {cls} {ns} {asm}") + + def read_typetree( root_node: TypeTreeNode, reader: EndianBinaryReader, @@ -98,7 +133,8 @@ def read_typetree( ) pos = reader.Position - obj = read_value(root_node, reader, as_dict, assetsfile) + config = TypeTreeConfig(as_dict, assetsfile, False) + obj = read_value(root_node, reader, config) read = reader.Position - pos if expected_read is not None and read != expected_read: @@ -131,8 +167,7 @@ def write_typetree( def read_value( node: TypeTreeNode, reader: EndianBinaryReader, - as_dict: bool, - assetsfile: Optional[SerializedFile], + config: TypeTreeConfig, ) -> Any: # print(reader.Position, node.m_Name, node.m_Type, node.m_MetaFlag) align = metaflag_is_aligned(node.m_MetaFlag) @@ -141,9 +176,17 @@ def read_value( if func: value = func(reader) elif node.m_Type == "pair": - first = read_value(node.m_Children[0], reader, as_dict, assetsfile) - second = read_value(node.m_Children[1], reader, as_dict, assetsfile) + first = read_value(node.m_Children[0], reader, config) + second = read_value(node.m_Children[1], reader, config) value = (first, second) + elif node.m_Type == "ReferencedObject": + value = {} + for child in node.m_Children: + if child.m_Type == "ReferencedObjectData": + ref_type_nodes = get_ref_type_node(value, config.assetsfile) + value[child.m_Name] = read_value(ref_type_nodes, reader, config) + else: + value[child.m_Name] = read_value(child, reader, config) # Vector elif node.m_Children and node.m_Children[0].m_Type == "Array": if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): @@ -153,22 +196,25 @@ def read_value( size = reader.read_int() subtype = node.m_Children[0].m_Children[1] if metaflag_is_aligned(subtype.m_MetaFlag): - value = read_value_array(subtype, reader, as_dict, size, assetsfile) + value = read_value_array(subtype, reader, config) else: - value = [ - read_value(subtype, reader, as_dict, assetsfile) for _ in range(size) - ] + value = [read_value(subtype, reader, config) for _ in range(size)] else: # Class - value = { - child.m_Name: read_value(child, reader, as_dict, assetsfile) - for child in node.m_Children - } + value = {} + for child in node.m_Children: + if child.m_Type == "ManagedReferencesRegistry": + if config.has_registry: + continue + else: + config = copy(config) + config.has_registry = True + value[child.m_Name] = read_value(child, reader, config) - if not as_dict: + if not config.as_dict: if node.m_Type.startswith("PPtr<"): value = PPtr[Any]( - assetsfile=assetsfile, + assetsfile=config.assetsfile, m_FileID=value["m_FileID"], m_PathID=value["m_PathID"], ) @@ -198,9 +244,8 @@ def read_value( def read_value_array( node: TypeTreeNode, reader: EndianBinaryReader, - as_dict: bool, + config: TypeTreeConfig, size: int, - assetsfile: Optional[SerializedFile], ) -> Any: align = metaflag_is_aligned(node.m_MetaFlag) @@ -217,13 +262,24 @@ def read_value_array( key_func = FUNCTION_READ_MAP.get( key_node.m_Type, - lambda reader: read_value(key_node, reader, as_dict, assetsfile), + lambda reader: read_value(key_node, reader, config), ) value_func = FUNCTION_READ_MAP.get( value_node.m_Type, - lambda reader: read_value(value_node, reader, as_dict, assetsfile), + lambda reader: read_value(value_node, reader, config), ) value = [(key_func(reader), value_func(reader)) for _ in range(size)] + elif node.m_Type == "ReferencedObject": + value = [None] * size + for i in range(size): + item = {} + for child in node.m_Children: + if child.m_Type == "ReferencedObjectData": + ref_type_nodes = get_ref_type_node(item, config.assetsfile) + item[child.m_Name] = read_value(ref_type_nodes, reader, config) + else: + item[child.m_Name] = read_value(child, reader, config) + value[i] = item # Vector elif node.m_Children and node.m_Children[0].m_Type == "Array": if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): @@ -231,24 +287,19 @@ def read_value_array( subtype = node.m_Children[0].m_Children[1] if metaflag_is_aligned(subtype.m_MetaFlag): value = [ - read_value_array( - subtype, reader, as_dict, reader.read_int(), assetsfile - ) + read_value_array(subtype, reader, config, reader.read_int()) for _ in range(size) ] else: value = [ - [ - read_value(subtype, reader, as_dict, assetsfile) - for _ in range(reader.read_int()) - ] + [read_value(subtype, reader, config) for _ in range(reader.read_int())] for _ in range(size) ] else: # Class - if as_dict: + if config.as_dict: value = [ { - child.m_Name: read_value(child, reader, as_dict, assetsfile) + child.m_Name: read_value(child, reader, config) for child in node.m_Children } for _ in range(size) @@ -257,9 +308,9 @@ def read_value_array( if node.m_Type.startswith("PPtr<"): value = [ PPtr[Any]( - assetsfile=assetsfile, + assetsfile=config.assetsfile, **{ - child.m_Name: read_value(child, reader, as_dict, assetsfile) + child.m_Name: read_value(child, reader, config) for child in node.m_Children }, ) @@ -276,7 +327,7 @@ def read_value_array( value = [ clz( **{ - name: read_value(child, reader, as_dict, assetsfile) + name: read_value(child, reader, config) for name, child in zip(clean_names, node.m_Children) } ) @@ -287,9 +338,7 @@ def read_value_array( value = [None] * size for i in range(size): value_i_d = { - clean_name(child.m_Name): read_value( - child, reader, as_dict, assetsfile - ) + clean_name(child.m_Name): read_value(child, reader, config) for child in node.m_Children } value_i = clz( diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index 4d420a65..29f6165d 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -19,6 +19,7 @@ typedef struct TypeTreeReaderConfig PyObject *classes; PyObject *assetfile; PyObject *clean_name; + bool has_registry; } TypeTreeReaderConfigT; inline void align4(ReaderT *reader) @@ -203,7 +204,7 @@ inline PyObject *parse_class(ReaderT *reader, PyObject *dict, TypeTreeNodeObject PyObject *clz = NULL; // Determine the class based on node's _data_type - if (node->_data_type == NodeDataType::pptr) + if (node->_data_type == NodeDataType::PPtr) { if (PyDict_SetItemString(dict, "assetsfile", config->assetfile) != 0) { @@ -325,6 +326,95 @@ inline PyObject *parse_class(ReaderT *reader, PyObject *dict, TypeTreeNodeObject return instance; } +TypeTreeNodeObject *get_ref_type_node(PyObject *ref_object, PyObject *assetsfile) +{ + if (assetsfile == Py_None) + { + PyErr_SetString(PyExc_ValueError, "No serialized file given!"); + return NULL; + } + PyObject *ref_types = PyObject_GetAttrString(assetsfile, "ref_types"); + if (!ref_types || !PyList_Check(ref_types)) + { + Py_XDECREF(ref_types); + PyErr_SetString(PyExc_ValueError, "No SerializedFile.ref_types"); + return NULL; + } + + PyObject *type = PyDict_GetItemString(ref_object, "type"); + if (!type) + { + Py_DECREF(ref_types); + PyErr_SetString(PyExc_ValueError, "Failed to get 'type'"); + return NULL; + } + + PyObject *cls = NULL; + PyObject *ns = NULL; + PyObject *asm_ = NULL; + if (PyDict_Check(type)) + { + cls = PyDict_GetItemString(type, "class"); + ns = PyDict_GetItemString(type, "ns"); + asm_ = PyDict_GetItemString(type, "asm"); + Py_XINCREF(cls); + Py_XINCREF(ns); + Py_XINCREF(asm_); + } + else + { + cls = PyObject_GetAttrString(type, "class"); + ns = PyObject_GetAttrString(type, "ns"); + asm_ = PyObject_GetAttrString(type, "asm"); + } + + if (!cls || !ns || !asm_) + { + Py_DECREF(ref_types); + Py_XDECREF(cls); + Py_XDECREF(ns); + Py_XDECREF(asm_); + PyErr_SetString(PyExc_ValueError, "Failed to get 'class', 'ns' or 'asm'"); + return NULL; + } + + Py_ssize_t ref_types_len = PyList_Size(ref_types); + TypeTreeNodeObject *ref_type_node = NULL; + for (Py_ssize_t i = 0; i < ref_types_len; i++) + { + PyObject *ref_type = PyList_GetItem(ref_types, i); + PyObject *m_ClassName = PyObject_GetAttrString(ref_type, "m_ClassName"); + PyObject *m_NameSpace = PyObject_GetAttrString(ref_type, "m_NameSpace"); + PyObject *m_AssemblyName = PyObject_GetAttrString(ref_type, "m_AssemblyName"); + if (!m_ClassName || !m_NameSpace || !m_AssemblyName) + { + Py_XDECREF(m_ClassName); + Py_XDECREF(m_NameSpace); + Py_XDECREF(m_AssemblyName); + PyErr_SetString(PyExc_ValueError, "Failed to get 'm_ClassName', 'm_NameSpace' or 'm_AssemblyName'"); + break; + } + + bool compare_cls = PyObject_RichCompareBool(cls, m_ClassName, Py_EQ) && PyObject_RichCompareBool(ns, m_NameSpace, Py_EQ) && PyObject_RichCompareBool(asm_, m_AssemblyName, Py_EQ); + Py_DECREF(m_ClassName); + Py_DECREF(m_NameSpace); + Py_DECREF(m_AssemblyName); + + if (compare_cls) + { + ref_type_node = (TypeTreeNodeObject *)PyObject_GetAttrString(ref_type, "node"); + break; + } + } + + Py_DECREF(ref_types); + Py_XDECREF(cls); + Py_XDECREF(ns); + Py_XDECREF(asm_); + + return ref_type_node; +} + template PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config) { @@ -375,6 +465,58 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre case NodeDataType::pair: value = read_pair(reader, node, config); break; + case NodeDataType::ReferencedObject: + { + value = PyDict_New(); + PyObject *child_value; + for (int i = 0; i < PyList_GET_SIZE(node->m_Children); i++) + { + TypeTreeNodeObject *child = (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, i); + if (child->_data_type == NodeDataType::ReferencedObjectData) + { + TypeTreeNodeObject *ref_node = get_ref_type_node(value, config->assetfile); + if (!ref_node) + { + PyErr_SetString(PyExc_ValueError, "Failed to get ref type node"); + Py_DECREF(value); + return NULL; + } + child_value = read_typetree_value(reader, ref_node, config); + Py_DECREF(ref_node); + } + else + { + child_value = read_typetree_value(reader, child, config); + } + if (!child_value) + { + Py_DECREF(value); + return NULL; + } + if (PyDict_SetItem(value, child->m_Name, child_value)) + { + Py_DECREF(value); + Py_DECREF(child_value); + return NULL; + } + // dict increases ref count, so we need to decref here + Py_DECREF(child_value); + } + PyObject *clz = PyObject_GetAttrString(config->classes, "Object"); + if (clz == NULL) + { + PyErr_SetString(PyExc_ValueError, "Failed to get class"); + Py_DECREF(value); + return NULL; + } + PyObject *args = PyTuple_New(0); + PyObject *instance = PyObject_Call(clz, args, value); + Py_DECREF(clz); + Py_DECREF(args); + Py_DECREF(value); + value = instance; + break; + } default: TypeTreeNodeObject *child = nullptr; if (PyList_GET_SIZE(node->m_Children) > 0) @@ -382,7 +524,7 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre child = (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, 0); } - if (child && child->_data_type == NodeDataType::array) + if (child && child->_data_type == NodeDataType::Array) { // array if (child->_align) @@ -410,10 +552,23 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre else { // class + bool changed_registry = false; value = PyDict_New(); for (int i = 0; i < PyList_GET_SIZE(node->m_Children); i++) { child = (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, i); + if (child->_data_type == NodeDataType::ManagedReferencesRegistry) + { + if (config->has_registry) + { + continue; + } + else + { + changed_registry = true; + config->has_registry = true; + } + } PyObject *child_value = read_typetree_value(reader, child, config); if (!child_value) { @@ -433,6 +588,10 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre { value = parse_class(reader, value, node, config); } + if (changed_registry) + { + config->has_registry = false; + } } } @@ -455,7 +614,9 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) false, Py_None, Py_None, - Py_None}; + Py_None, + false, + }; char endian; bool swap; @@ -582,7 +743,10 @@ static const std::map typeToNodeDataType = { {"string", NodeDataType::str}, {"TypelessData", NodeDataType::bytes}, {"pair", NodeDataType::pair}, - {"Array", NodeDataType::array}, + {"Array", NodeDataType::Array}, + {"ReferencedObject", NodeDataType::ReferencedObject}, + {"ReferencedObjectData", NodeDataType::ReferencedObjectData}, + {"ManagedReferencesRegistry", NodeDataType::ManagedReferencesRegistry}, }; static int TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject *kwargs) @@ -658,7 +822,7 @@ static int TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject self->_data_type = NodeDataType::unk; if (type[0] == 'P' && type[1] == 'P' && type[2] == 't' && type[3] == 'r' && type[4] == '<') { - self->_data_type = NodeDataType::pptr; + self->_data_type = NodeDataType::PPtr; } else { diff --git a/UnityPyBoost/TypeTreeHelper.hpp b/UnityPyBoost/TypeTreeHelper.hpp index 5140910c..15cf0d80 100644 --- a/UnityPyBoost/TypeTreeHelper.hpp +++ b/UnityPyBoost/TypeTreeHelper.hpp @@ -20,8 +20,11 @@ enum NodeDataType str = 11, bytes = 12, pair = 13, - array = 14, - pptr = 15, + Array = 14, + PPtr = 15, + ReferencedObject = 16, + ReferencedObjectData = 17, + ManagedReferencesRegistry = 18, unk = 255 }; From bb6fca1407e21fa5e4597550f930f2829f69f18d Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 14 Oct 2024 10:08:07 +0200 Subject: [PATCH 325/599] TypeTree - implement writing ManagedReferencesRegistry --- UnityPy/files/ObjectReader.py | 2 +- UnityPy/helpers/TypeTreeHelper.py | 32 +++++++++++++++++++++++++++---- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/UnityPy/files/ObjectReader.py b/UnityPy/files/ObjectReader.py index b909a5fa..b3c72a12 100644 --- a/UnityPy/files/ObjectReader.py +++ b/UnityPy/files/ObjectReader.py @@ -226,7 +226,7 @@ def save_typetree( node = self._get_typetree_node(nodes) if not writer: writer = EndianBinaryWriter(endian=self.reader.endian) - TypeTreeHelper.write_typetree(tree, node, writer) + TypeTreeHelper.write_typetree(tree, node, writer, self.assets_file) data = writer.bytes self.set_raw_data(data) return data diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 9136a46d..5e833816 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -149,6 +149,7 @@ def write_typetree( value: Union[dict[str, Any], Object], root_node: TypeTreeNode, writer: EndianBinaryWriter, + assetsfile: Optional[SerializedFile] = None, ) -> None: """Writes the typetree of the object contained in the reader via the node list. @@ -161,7 +162,8 @@ def write_typetree( writer : EndianBinaryWriter Writer of the object to be parsed """ - return write_value(value, root_node, writer) + config = TypeTreeConfig(isinstance(value, dict), assetsfile, False) + return write_value(value, root_node, writer, config) def read_value( @@ -403,6 +405,7 @@ def write_value( value: Any, node: TypeTreeNode, writer: EndianBinaryWriter, + config: TypeTreeConfig, ) -> None: # print(reader.Position, node.m_Name, node.m_Type, node.m_MetaFlag) align = metaflag_is_aligned(node.m_MetaFlag) @@ -413,21 +416,42 @@ def write_value( elif node.m_Type == "pair": write_value(value[0], node.m_Children[0], writer) write_value(value[1], node.m_Children[1], writer) + elif node.m_Type == "ReferencedObject": + for child in node.m_Children: + if child.m_Type == "ReferencedObjectData": + ref_type_nodes = get_ref_type_node(value, config.assetsfile) + write_value(value[child.m_Name], ref_type_nodes, writer, config) + else: + write_value(value[child.m_Name], child, writer, config) elif node.m_Children and node.m_Children[0].m_Type == "Array": if metaflag_is_aligned(node.m_Children[0].m_MetaFlag): align = True writer.write_int(len(value)) subtype = node.m_Children[0].m_Children[1] - [write_value(sub_value, subtype, writer) for sub_value in value] + [write_value(sub_value, subtype, writer, config) for sub_value in value] else: # Class if isinstance(value, dict): for child in node.m_Children: - write_value(value[child.m_Name], child, writer) + if child.m_Type == "ManagedReferencesRegistry": + if config.has_registry: + continue + else: + config = copy(config) + config.has_registry = True + write_value(value[child.m_Name], child, writer, config) else: for child in node.m_Children: - write_value(getattr(value, clean_name(child.m_Name)), child, writer) + if child.m_Type == "ManagedReferencesRegistry": + if config.has_registry: + continue + else: + config = copy(config) + config.has_registry = True + write_value( + getattr(value, clean_name(child.m_Name)), child, writer, config + ) if align: writer.align_stream() From 7095f8664e5c5fc94bda29b030ad6505d0316893 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 14 Oct 2024 11:07:57 +0200 Subject: [PATCH 326/599] C TypeTreeReader - implement faster read_array function --- UnityPyBoost/TypeTreeHelper.cpp | 253 ++++++++++++++++++++++++++++++-- 1 file changed, 244 insertions(+), 9 deletions(-) diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index 29f6165d..886daa20 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -39,6 +39,21 @@ inline PyObject *read_bool(ReaderT *reader) return *reader->ptr++ ? Py_True : Py_False; } +inline PyObject *read_bool_array(ReaderT *reader, int32_t count) +{ + if (reader->ptr + count > reader->end) + { + PyErr_SetString(PyExc_ValueError, "read_bool out of bounds"); + return NULL; + } + PyObject *list = PyList_New(count); + for (auto i = 0; i < count; i++) + { + PyList_SET_ITEM(list, i, *reader->ptr++ ? Py_True : Py_False); + } + return list; +} + inline PyObject *read_u8(ReaderT *reader) { if (reader->ptr + 1 > reader->end) @@ -49,6 +64,21 @@ inline PyObject *read_u8(ReaderT *reader) return PyLong_FromUnsignedLong(*reader->ptr++); } +inline PyObject *read_u8_array(ReaderT *reader, int32_t count) +{ + if (reader->ptr + count > reader->end) + { + PyErr_SetString(PyExc_ValueError, "read_u8 out of bounds"); + return NULL; + } + PyObject *list = PyList_New(count); + for (auto i = 0; i < count; i++) + { + PyList_SET_ITEM(list, i, PyLong_FromUnsignedLong(*reader->ptr++)); + } + return list; +} + inline PyObject *read_s8(ReaderT *reader) { if (reader->ptr + 1 > reader->end) @@ -59,6 +89,23 @@ inline PyObject *read_s8(ReaderT *reader) return PyLong_FromLong((int8_t)*reader->ptr++); } +inline PyObject *read_s8_array(ReaderT *reader, int32_t count) +{ + if (reader->ptr + count > reader->end) + { + PyErr_SetString(PyExc_ValueError, "read_s8 out of bounds"); + return NULL; + } + PyObject *list = PyList_New(count); + int8_t *ptr = (int8_t *)reader->ptr; + for (auto i = 0; i < count; i++) + { + PyList_SET_ITEM(list, i, PyLong_FromLong(*ptr++)); + } + reader->ptr = (uint8_t *)ptr; + return list; +} + template inline PyObject *read_int(ReaderT *reader) { @@ -99,6 +146,52 @@ inline PyObject *read_int(ReaderT *reader) } } +template +inline PyObject *read_int_array(ReaderT *reader, int32_t count) +{ + static_assert(std::is_integral::value, "Unsupported type for read_int_array"); + + if (reader->ptr + sizeof(T) * count > reader->end) + { + PyErr_SetString(PyExc_ValueError, "read_int_array out of bounds"); + return NULL; + } + PyObject *list = PyList_New(count); + T *ptr = (T *)reader->ptr; + for (auto i = 0; i < count; i++) + { + T value = *ptr++; + if constexpr (swap) + { + swap_any_inplace(&value); + } + if constexpr (std::is_signed::value) + { + if constexpr (std::is_same::value) + { + PyList_SET_ITEM(list, i, PyLong_FromLongLong(value)); + } + else + { + PyList_SET_ITEM(list, i, PyLong_FromLong((int32_t)value)); + } + } + else + { + if constexpr (std::is_same::value) + { + PyList_SET_ITEM(list, i, PyLong_FromUnsignedLongLong(value)); + } + else + { + PyList_SET_ITEM(list, i, PyLong_FromUnsignedLong((uint32_t)value)); + } + } + } + reader->ptr = (uint8_t *)ptr; + return list; +} + template inline PyObject *read_float(ReaderT *reader) { @@ -118,6 +211,31 @@ inline PyObject *read_float(ReaderT *reader) return PyFloat_FromDouble(value); } +template +inline PyObject *read_float_array(ReaderT *reader, int32_t count) +{ + static_assert(std::is_floating_point::value, "Unsupported type for read_float_array"); + + if (reader->ptr + sizeof(T) * count > reader->end) + { + PyErr_SetString(PyExc_ValueError, "read_float_array out of bounds"); + return NULL; + } + T *ptr = (T *)reader->ptr; + PyObject *list = PyList_New(count); + for (auto i = 0; i < count; i++) + { + T value = *ptr++; + if constexpr (swap) + { + swap_any_inplace(&value); + } + PyList_SET_ITEM(list, i, PyFloat_FromDouble(value)); + } + reader->ptr = (uint8_t *)ptr; + return list; +} + template inline bool _read_length(ReaderT *reader, int32_t *length) { @@ -148,10 +266,10 @@ inline PyObject *read_str(ReaderT *reader) PyErr_SetString(PyExc_ValueError, "read_str out of bounds"); return NULL; } - PyObject *str = PyUnicode_DecodeUTF8((char *)reader->ptr, length, "surrogateescape"); + PyObject *py_str = PyUnicode_DecodeUTF8((char *)reader->ptr, length, "surrogateescape"); reader->ptr += length; align4(reader); - return str; + return py_str; } template @@ -198,6 +316,42 @@ inline PyObject *read_pair(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeRe return pair; } +template +inline PyObject *read_pair_array(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config, int32_t count) +{ + if (PyList_GET_SIZE(node->m_Children) != 2) + { + PyErr_SetString(PyExc_ValueError, "Pair node must have 2 children"); + return NULL; + } + + TypeTreeNodeObject *first_child = (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, 0); + TypeTreeNodeObject *second_child = (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, 1); + + PyObject *list = PyList_New(count); + for (auto i = 0; i < count; i++) + { + PyObject *first = read_typetree_value(reader, first_child, config); + if (!first) + { + Py_DECREF(list); + return NULL; + } + PyObject *second = read_typetree_value(reader, second_child, config); + if (!second) + { + Py_DECREF(first); + Py_DECREF(list); + return NULL; + } + PyList_SET_ITEM(list, i, PyTuple_Pack(2, first, second)); + Py_DECREF(first); + Py_DECREF(second); + } + + return list; +} + template inline PyObject *parse_class(ReaderT *reader, PyObject *dict, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config) { @@ -415,6 +569,24 @@ TypeTreeNodeObject *get_ref_type_node(PyObject *ref_object, PyObject *assetsfile return ref_type_node; } +template +PyObject *read_typetree_value_array(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config, uint32_t size); + +const NodeDataType SUPPORTED_VALUE_ARRAY_READ_TYPES[] = { + NodeDataType::u8, + NodeDataType::u16, + NodeDataType::u32, + NodeDataType::u64, + NodeDataType::s8, + NodeDataType::s16, + NodeDataType::s32, + NodeDataType::s64, + NodeDataType::f32, + NodeDataType::f64, + NodeDataType::boolean, + NodeDataType::pair, +}; + template PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config) { @@ -536,17 +708,25 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre { return NULL; } - value = PyList_New(length); + child = (TypeTreeNodeObject *)PyList_GET_ITEM(child->m_Children, 1); - for (int i = 0; i < length; i++) + if (std::find(std::begin(SUPPORTED_VALUE_ARRAY_READ_TYPES), std::end(SUPPORTED_VALUE_ARRAY_READ_TYPES), child->_data_type) == std::end(SUPPORTED_VALUE_ARRAY_READ_TYPES)) { - PyObject *item = read_typetree_value(reader, child, config); - if (!item) + value = PyList_New(length); + for (int i = 0; i < length; i++) { - Py_DECREF(value); - return NULL; + PyObject *item = read_typetree_value(reader, child, config); + if (!item) + { + Py_DECREF(value); + return NULL; + } + PyList_SET_ITEM(value, i, item); } - PyList_SET_ITEM(value, i, item); + } + else + { + value = read_typetree_value_array(reader, child, config, length); } } else @@ -603,6 +783,61 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre return value; } +template +PyObject *read_typetree_value_array(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config, int32_t count) +{ + bool align = node->_align; + PyObject *value = nullptr; + + switch (node->_data_type) + { + case NodeDataType::u8: + value = read_u8_array(reader, count); + break; + case NodeDataType::u16: + value = read_int_array(reader, count); + break; + case NodeDataType::u32: + value = read_int_array(reader, count); + break; + case NodeDataType::u64: + value = read_int_array(reader, count); + break; + case NodeDataType::s8: + value = read_s8_array(reader, count); + break; + case NodeDataType::s16: + value = read_int_array(reader, count); + break; + case NodeDataType::s32: + value = read_int_array(reader, count); + break; + case NodeDataType::s64: + value = read_int_array(reader, count); + break; + case NodeDataType::f32: + value = read_float_array(reader, count); + break; + case NodeDataType::f64: + value = read_float_array(reader, count); + break; + case NodeDataType::boolean: + value = read_bool_array(reader, count); + break; + case NodeDataType::pair: + value = read_pair_array(reader, node, config, count); + break; + default: + value = PyErr_Format(PyExc_ValueError, "Unsupported type for read_typetree_value_array: %d", node->_data_type); + } + if (align) + { + align4(reader); + } + + return value; +} + PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) { const char *kwlist[] = {"data", "node", "endian", "as_dict", "assetsfile", "classes", "clean_name", NULL}; From 90b762dd4396b218530c795deca53727c65adbfa Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 14 Oct 2024 11:17:19 +0200 Subject: [PATCH 327/599] TypeTreeHelper - write_value - fix missed config passing for "pair" --- UnityPy/helpers/TypeTreeHelper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 5e833816..306319c2 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -414,8 +414,8 @@ def write_value( if func: value = func(writer, value) elif node.m_Type == "pair": - write_value(value[0], node.m_Children[0], writer) - write_value(value[1], node.m_Children[1], writer) + write_value(value[0], node.m_Children[0], writer, config) + write_value(value[1], node.m_Children[1], writer, config) elif node.m_Type == "ReferencedObject": for child in node.m_Children: if child.m_Type == "ReferencedObjectData": From 35bb1fd5f12176fc7942119c9e029d61674cdf03 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 14 Oct 2024 11:46:22 +0200 Subject: [PATCH 328/599] C TypeTreeHelper - fix find not found - include algorithm --- UnityPyBoost/TypeTreeHelper.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index 886daa20..f9523a2f 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -1,8 +1,10 @@ -#include +#include #include -#include -#include #include +#include + +#include "swap.hpp" +#include "TypeTreeHelper.hpp" // TypeTreeReader - impl From 17551ba807aa8d7b365d2c245dc64a4b04569199 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 15 Oct 2024 12:12:10 +0200 Subject: [PATCH 329/599] TypeTreeHelper Py - fix config copy and skip ref type if cls is empty --- UnityPy/helpers/TypeTreeHelper.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 306319c2..80da9f72 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -1,7 +1,6 @@ from __future__ import annotations import re -from copy import copy from typing import TYPE_CHECKING, Any, Optional, Union from attrs import define @@ -79,6 +78,9 @@ class TypeTreeConfig: assetsfile: "Optional[SerializedFile]" = None has_registry: bool = False + def copy(self) -> TypeTreeConfig: + return TypeTreeConfig(self.as_dict, self.assetsfile, self.has_registry) + def get_ref_type_node(ref_object: dict, assetfile: SerializedFile) -> TypeTreeNode: typ = ref_object["type"] @@ -94,6 +96,9 @@ def get_ref_type_node(ref_object: dict, assetfile: SerializedFile) -> TypeTreeNo if not assetfile or not assetfile.ref_types: raise ValueError("SerializedFile has no ref_types") + if cls == "": + return None + for ref_type in assetfile.ref_types: if ( cls == ref_type.m_ClassName @@ -186,6 +191,8 @@ def read_value( for child in node.m_Children: if child.m_Type == "ReferencedObjectData": ref_type_nodes = get_ref_type_node(value, config.assetsfile) + if ref_type_nodes is None: + continue value[child.m_Name] = read_value(ref_type_nodes, reader, config) else: value[child.m_Name] = read_value(child, reader, config) @@ -209,7 +216,7 @@ def read_value( if config.has_registry: continue else: - config = copy(config) + config = config.copy() config.has_registry = True value[child.m_Name] = read_value(child, reader, config) @@ -438,7 +445,7 @@ def write_value( if config.has_registry: continue else: - config = copy(config) + config = config.copy() config.has_registry = True write_value(value[child.m_Name], child, writer, config) else: @@ -447,7 +454,7 @@ def write_value( if config.has_registry: continue else: - config = copy(config) + config = config.copy() config.has_registry = True write_value( getattr(value, clean_name(child.m_Name)), child, writer, config From 838bf05d92481637a01f2dfd02e55cb4aded7528 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 15 Oct 2024 12:13:28 +0200 Subject: [PATCH 330/599] TypeTreeHelper C - check as_dict for RefObj, check read length, skip reftype if cls is empty --- UnityPyBoost/TypeTreeHelper.cpp | 42 +++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index f9523a2f..08e7262a 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -534,6 +534,15 @@ TypeTreeNodeObject *get_ref_type_node(PyObject *ref_object, PyObject *assetsfile return NULL; } + if (PyUnicode_GET_LENGTH(cls) == 0) + { + Py_DECREF(ref_types); + Py_DECREF(cls); + Py_DECREF(ns); + Py_DECREF(asm_); + return (TypeTreeNodeObject *)Py_None; + } + Py_ssize_t ref_types_len = PyList_Size(ref_types); TypeTreeNodeObject *ref_type_node = NULL; for (Py_ssize_t i = 0; i < ref_types_len; i++) @@ -655,6 +664,10 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre Py_DECREF(value); return NULL; } + else if (ref_node == (TypeTreeNodeObject *)Py_None) + { + continue; + } child_value = read_typetree_value(reader, ref_node, config); Py_DECREF(ref_node); } @@ -676,19 +689,22 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre // dict increases ref count, so we need to decref here Py_DECREF(child_value); } - PyObject *clz = PyObject_GetAttrString(config->classes, "Object"); - if (clz == NULL) + if (!config->as_dict) { - PyErr_SetString(PyExc_ValueError, "Failed to get class"); + PyObject *clz = PyObject_GetAttrString(config->classes, "Object"); + if (clz == NULL) + { + PyErr_SetString(PyExc_ValueError, "Failed to get class"); + Py_DECREF(value); + return NULL; + } + PyObject *args = PyTuple_New(0); + PyObject *instance = PyObject_Call(clz, args, value); + Py_DECREF(clz); + Py_DECREF(args); Py_DECREF(value); - return NULL; + value = instance; } - PyObject *args = PyTuple_New(0); - PyObject *instance = PyObject_Call(clz, args, value); - Py_DECREF(clz); - Py_DECREF(args); - Py_DECREF(value); - value = instance; break; } default: @@ -936,6 +952,12 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) PyBuffer_Release(&view); + if (reader.ptr != reader.end) + { + Py_DecRef(value); + return PyErr_Format(PyExc_ValueError, "Read %ld bytes, %ld remaining", reader.ptr - reader.start, reader.end - reader.ptr); + } + return value; } From 3071c1b802ad548f7a2ea183038c5be7bc0987d7 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 15 Oct 2024 16:58:57 +0200 Subject: [PATCH 331/599] README - add credits for ManagedReferencedObjects --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ea0b67b9..b1fcd123 100644 --- a/README.md +++ b/README.md @@ -413,4 +413,5 @@ many thanks to: - [Perfare](https://github.com/Perfare) for creating and maintaining and every contributor of [AssetStudio](https://github.com/Perfare/AssetStudio) - [ds5678](https://github.com/ds5678) for the [TypeTreeDumps](https://github.com/AssetRipper/TypeTreeDumps) and the [custom minimal Tpk format](https://github.com/AssetRipper/Tpk) - [Razmoth](https://github.com/Razmoth) for figuring out and sharing Unity CN's AssetBundle decryption ([src](https://github.com/Razmoth/PGRStudio)). -- [nesrak1](https://github.com/nesrak1) for figuring out the [Switch texture swizzling](https://github.com/nesrak1/UABEA/blob/master/TexturePlugin/Texture2DSwitchDeswizzler.cs) \ No newline at end of file +- [nesrak1](https://github.com/nesrak1) for figuring out the [Switch texture swizzling](https://github.com/nesrak1/UABEA/blob/master/TexturePlugin/Texture2DSwitchDeswizzler.cs) +- xiop_13690 (discord) for figuring out unsolved issues of the ManagedReferencesRegistry \ No newline at end of file From d38b5f660d1c1f048413cb5dfa0464400f1038be Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 20 Oct 2024 22:40:29 +0200 Subject: [PATCH 332/599] Texture2DConverter - use astc_encoder for astc decoding --- UnityPy/export/Texture2DConverter.py | 25 ++++++++++++++++++++----- pyproject.toml | 2 +- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/UnityPy/export/Texture2DConverter.py b/UnityPy/export/Texture2DConverter.py index cf58af23..8b41ea0c 100644 --- a/UnityPy/export/Texture2DConverter.py +++ b/UnityPy/export/Texture2DConverter.py @@ -3,8 +3,9 @@ import struct from copy import copy from io import BytesIO -from typing import TYPE_CHECKING, Tuple, Union +from typing import TYPE_CHECKING, Dict, Tuple, Union +import astc_encoder import texture2ddecoder from PIL import Image @@ -68,8 +69,6 @@ def image_to_texture2d( tex_format = TF.ETC2_RGBA8 # ASTC elif target_texture_format.name.startswith("ASTC"): - import astc_encoder - raw_img = img.tobytes("raw", "RGBA") block_size = tuple( @@ -253,9 +252,25 @@ def atc(image_data: bytes, width: int, height: int, alpha: bool) -> Image.Image: return Image.frombytes("RGBA", (width, height), image_data, "raw", "BGRA") +ASTC_CONTEXTS: Dict[Tuple[int, int], astc_encoder.ASTCContext] = {} + + def astc(image_data: bytes, width: int, height: int, block_size: tuple) -> Image.Image: - image_data = texture2ddecoder.decode_astc(image_data, width, height, *block_size) - return Image.frombytes("RGBA", (width, height), image_data, "raw", "BGRA") + context = ASTC_CONTEXTS.get(block_size) + if context is None: + config = astc_encoder.ASTCConfig( + astc_encoder.ASTCProfile.LDR, + *block_size, + 1, + 100, + astc_encoder.ASTCConfigFlags.USE_DECODE_UNORM8, + ) + context = ASTC_CONTEXTS[block_size] = astc_encoder.ASTCContext(config) + + image = astc_encoder.ASTCImage(astc_encoder.ASTCType.U8, width, height, 1) + context.decompress(image_data, image, astc_encoder.ASTCSwizzle.from_str("RGBA")) + + return Image.frombytes("RGBA", (width, height), image.data, "raw", "RGBA") def pvrtc(image_data: bytes, width: int, height: int, fmt: bool) -> Image.Image: diff --git a/pyproject.toml b/pyproject.toml index 47868934..0a903794 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,7 +44,7 @@ dependencies = [ "Pillow", "texture2ddecoder", # texture decompression "etcpak", # ETC & DXT compression - "astc-encoder-py", # ASTC compression + "astc-encoder-py >= 0.1.8", # ASTC compression # raw typetree dumping "tabulate", # audio extraction From e7b1bd9723ad9e24abb034eab90d28106841f6b0 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Sun, 20 Oct 2024 23:00:51 +0200 Subject: [PATCH 333/599] 1.20.5 version bump --- UnityPy/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index 2f91fef7..e8f8a5f2 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.20.4" +__version__ = "1.20.5" from .environment import Environment as Environment from .helpers.ArchiveStorageManager import ( From 8bdaaa0e9eaac8c5e41429fa941d503fbd14607f Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Oct 2024 18:16:17 +0200 Subject: [PATCH 334/599] Tpk - cache sub node values --- UnityPy/helpers/Tpk.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/UnityPy/helpers/Tpk.py b/UnityPy/helpers/Tpk.py index 121a9444..547ca09c 100644 --- a/UnityPy/helpers/Tpk.py +++ b/UnityPy/helpers/Tpk.py @@ -9,7 +9,8 @@ from .TypeTreeHelper import TypeTreeNode TPKTYPETREE: TpkTypeTreeBlob = None -NODES_CACHE: dict = {} +CLASSES_CACHE: Dict[Tuple[int, tuple], TypeTreeNode] = {} +NODES_CACHE: Dict[TpkUnityClass, TypeTreeNode] = {} def init(): @@ -22,10 +23,11 @@ def init(): def get_typetree_node(class_id: int, version: tuple): - global NODES_CACHE + global CLASSES_CACHE key = (class_id, version) - if key in NODES_CACHE: - return NODES_CACHE[key] + cached = CLASSES_CACHE.get(key) + if cached: + return cached class_info = TPKTYPETREE.ClassInformation[class_id].getVersionedClass( UnityVersion.fromList(*version) @@ -34,11 +36,16 @@ def get_typetree_node(class_id: int, version: tuple): raise ValueError("Could not find class info for class id {}".format(class_id)) node = generate_node(class_info) - NODES_CACHE[key] = node + CLASSES_CACHE[key] = node return node def generate_node(class_info: TpkUnityClass) -> TypeTreeNode: + global NODES_CACHE + cached = NODES_CACHE.get(class_info) + if cached: + return cached + nodes = [] NODES = TPKTYPETREE.NodeBuffer.Nodes stack = [(class_info.ReleaseRootNode, 0)] @@ -59,7 +66,9 @@ def generate_node(class_info: TpkUnityClass) -> TypeTreeNode: ) stack = [(node_id, level + 1) for node_id in node.SubNodes] + stack index += 1 - return TypeTreeNode.from_list(nodes) + result = TypeTreeNode.from_list(nodes) + NODES_CACHE[class_info] = result + return result ###################################################################################### From 42e13202ff5b5bc265ae52e543fdb6cb65bade11 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Oct 2024 18:20:27 +0200 Subject: [PATCH 335/599] TypeTree - use UnknownObject, move clean_name to TypeTreeNode, cache cleaned type name --- UnityPy/classes/UnknownObject.py | 28 ++ UnityPy/classes/__init__.py | 5 +- UnityPy/helpers/TypeTreeHelper.py | 132 +++++---- UnityPy/helpers/TypeTreeNode.py | 26 +- UnityPyBoost/TypeTreeHelper.cpp | 460 ++++++++++++++++++------------ UnityPyBoost/TypeTreeHelper.hpp | 5 +- generators/ClassesGenerator.py | 2 +- 7 files changed, 406 insertions(+), 252 deletions(-) create mode 100644 UnityPy/classes/UnknownObject.py diff --git a/UnityPy/classes/UnknownObject.py b/UnityPy/classes/UnknownObject.py new file mode 100644 index 00000000..533af2d4 --- /dev/null +++ b/UnityPy/classes/UnknownObject.py @@ -0,0 +1,28 @@ +from typing import Optional + +from ..helpers.TypeTreeNode import TypeTreeNode +from .Object import Object + + +class UnknownObject(Object): + """An object of unknown type that showed up during typetree parsing.""" + + __node__: Optional[TypeTreeNode] + + def __init__(self, __node__: TypeTreeNode = None, **kwargs): + self.__node__ = __node__ + self.__dict__.update(**kwargs) + + def get_type(self): + return self.__node__.m_Type if self.__node__ else None + + def __repr__(self) -> str: + def format_value(v): + vstr = repr(v) + if len(vstr) > 100: + return vstr[:97] + "..." + return vstr + + return f" {', '.join( + f'{k}={format_value(v)}' for k, v in self.__dict__.items() if k != '__node__' + )}>" diff --git a/UnityPy/classes/__init__.py b/UnityPy/classes/__init__.py index f1e0246c..ec2efb29 100644 --- a/UnityPy/classes/__init__.py +++ b/UnityPy/classes/__init__.py @@ -1,4 +1,5 @@ -from .Object import Object as Object -from .PPtr import PPtr as PPtr from .generated import * from .legacy_patch import * +from .Object import Object as Object +from .PPtr import PPtr as PPtr +from .UnknownObject import UnknownObject as UnknownObject diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index 80da9f72..dd55c112 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -11,6 +11,7 @@ from .TypeTreeNode import TypeTreeNode Object = classes.Object +UnknownObject = classes.UnknownObject PPtr = classes.PPtr if TYPE_CHECKING: @@ -134,7 +135,7 @@ def read_typetree( if expected_read and read_typetree_boost: data = reader.read_bytes(expected_read) return read_typetree_boost( - data, root_node, reader.endian, as_dict, assetsfile, classes, clean_name + data, root_node, reader.endian, as_dict, assetsfile, classes ) pos = reader.Position @@ -218,7 +219,9 @@ def read_value( else: config = config.copy() config.has_registry = True - value[child.m_Name] = read_value(child, reader, config) + value[child.m_Name if config.as_dict else child._clean_name] = read_value( + child, reader, config + ) if not config.as_dict: if node.m_Type.startswith("PPtr<"): @@ -228,21 +231,29 @@ def read_value( m_PathID=value["m_PathID"], ) else: - clz = getattr(classes, node.m_Type, Object) - clz_kwargs = {clean_name(key): value for key, value in value.items()} + clz = getattr(classes, node.m_Type, UnknownObject) try: - value = clz(**clz_kwargs) + value = clz(**value) except TypeError: - extra_keys = set(clz_kwargs.keys()) - set(clz.__annotations__) - value = clz( - **{ - key: value - for key, value in clz_kwargs.items() - if key in clz.__annotations__ - } - ) - for key in extra_keys: - setattr(value, key, clz_kwargs[key]) + keys = set(value.keys()) + annotation_keys = set(clz.__annotations__) + missing_keys = annotation_keys - keys + if clz is UnknownObject or missing_keys: + value = UnknownObject(node, **value) + else: + extra_keys = keys - annotation_keys + if extra_keys: + value = clz( + **{ + key: value + for key, value in value.items() + if key in clz.__annotations__ + } + ) + for key in extra_keys: + setattr(value, key, value[key]) + else: + value = UnknownObject(**value) if align: reader.align_stream() @@ -313,53 +324,66 @@ def read_value_array( } for _ in range(size) ] + elif node.m_Type.startswith("PPtr<"): + value = [ + PPtr[Any]( + assetsfile=config.assetsfile, + **{ + child.m_Name: read_value(child, reader, config) + for child in node.m_Children + }, + ) + for _ in range(size) + ] else: - if node.m_Type.startswith("PPtr<"): + clz = getattr( + classes, + node.m_Type, + UnknownObject, + ) + keys = set(child._clean_name for child in node.m_Children) + annotation_keys = set(clz.__annotations__) + missing_keys = annotation_keys - keys + extra_keys = keys - annotation_keys + if missing_keys or clz is UnknownObject: value = [ - PPtr[Any]( - assetsfile=config.assetsfile, + UnknownObject( + node, **{ - child.m_Name: read_value(child, reader, config) + child._clean_name: read_value(child, reader, config) for child in node.m_Children }, ) for _ in range(size) ] + elif extra_keys: + value = [None] * size + for i in range(size): + value_i_d = { + child._clean_name: read_value(child, reader, config) + for child in node.m_Children + } + value_i = clz( + **{ + key: value + for key, value in value_i_d.items() + if key in annotation_keys + } + ) + for key in extra_keys: + setattr(value_i, key, value_i_d[key]) + value[i] = value_i else: - clz = getattr( - classes, - node.m_Type, - Object, - ) - clean_names = [clean_name(child.m_Name) for child in node.m_Children] - if all(name in clz.__annotations__ for name in clean_names): - value = [ - clz( - **{ - name: read_value(child, reader, config) - for name, child in zip(clean_names, node.m_Children) - } - ) - for _ in range(size) - ] - else: - extra_keys = set(clean_names) - set(clz.__annotations__) - value = [None] * size - for i in range(size): - value_i_d = { - clean_name(child.m_Name): read_value(child, reader, config) + value = [ + clz( + **{ + child._clean_name: read_value(child, reader, config) for child in node.m_Children } - value_i = clz( - **{ - key: value - for key, value in value_i_d.items() - if key in clz.__annotations__ - } - ) - for key in extra_keys: - setattr(value_i, key, value_i_d[key]) - value[i] = value_i + ) + for _ in range(size) + ] + if align: reader.align_stream() return value @@ -409,7 +433,7 @@ def clean_name(name: str) -> str: def write_value( - value: Any, + value: Union[dict[str, Any], Object], node: TypeTreeNode, writer: EndianBinaryWriter, config: TypeTreeConfig, @@ -456,9 +480,7 @@ def write_value( else: config = config.copy() config.has_registry = True - write_value( - getattr(value, clean_name(child.m_Name)), child, writer, config - ) + write_value(getattr(value, child._clean_name), child, writer, config) if align: writer.align_stream() diff --git a/UnityPy/helpers/TypeTreeNode.py b/UnityPy/helpers/TypeTreeNode.py index aa02ef4f..89cd8fed 100644 --- a/UnityPy/helpers/TypeTreeNode.py +++ b/UnityPy/helpers/TypeTreeNode.py @@ -1,6 +1,8 @@ from __future__ import annotations + +import re from struct import Struct -from typing import Optional, List, Tuple, TYPE_CHECKING, Dict, Iterator +from typing import TYPE_CHECKING, Dict, Iterator, List, Optional, Tuple from attrs import define, field @@ -27,6 +29,10 @@ class TypeTreeNodeC: m_Index: Optional[int] = None m_MetaFlag: Optional[int] = None m_RefTypeHash: Optional[int] = None + _clean_name: str = field(init=False) + + def __attrs_post_init__(self): + self._clean_name = clean_name(self.m_Name) class TypeTreeNode(TypeTreeNodeC): @@ -41,8 +47,8 @@ def traverse(self) -> Iterator[TypeTreeNode]: def parse(cls, reader: EndianBinaryReader, version: int) -> TypeTreeNode: # stack approach is way faster than recursion # using a fake root node to avoid special case for root node - dummy_node = cls(-1, "", "", 0, 0, 0, []) - dummy_root = cls(-1, "", "", 0, 0, 0, [dummy_node]) + dummy_node = cls(-1, "", "", 0, 0, []) + dummy_root = cls(-1, "", "", 0, 0, [dummy_node]) stack: List[Tuple[TypeTreeNode, int]] = [(dummy_root, 1)] while stack: @@ -262,3 +268,17 @@ def _get_blob_node_struct(endian: str, version: int) -> tuple[Struct, list[str]] keys.append("m_RefTypeHash") return Struct(struct_type), keys + + +def clean_name(name: str) -> str: + # keep in sync with TypeTreeHelper.cpp + if name.startswith("(int&)"): + name = name[6:] + if name.endswith("?"): + name = name[:-1] + name = re.sub(r"[ \.:\-\[\]]", "_", name) + if name in ["pass", "from"]: + name += "_" + if name[0].isdigit(): + name = f"x{name}" + return name diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index 08e7262a..c4facc7b 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -2,6 +2,8 @@ #include #include #include +#include +#include #include "swap.hpp" #include "TypeTreeHelper.hpp" @@ -20,10 +22,44 @@ typedef struct TypeTreeReaderConfig bool as_dict; PyObject *classes; PyObject *assetfile; - PyObject *clean_name; bool has_registry; } TypeTreeReaderConfigT; +std::string clean_name(const std::string &name) +{ + // # keep in sync with TypeTreeNode.py + std::string cleaned_name = name; + + // Remove "(int&)" prefix + if (cleaned_name.substr(0, 6) == "(int&)") + { + cleaned_name = cleaned_name.substr(6); + } + + // Remove trailing "?" + if (!cleaned_name.empty() && cleaned_name.back() == '?') + { + cleaned_name.pop_back(); + } + + // Replace certain characters with "_" + cleaned_name = std::regex_replace(cleaned_name, std::regex("[ \\.:\\-\\[\\]]"), "_"); + + // Append "_" if the name is "pass" or "from" + if (cleaned_name == "pass" || cleaned_name == "from") + { + cleaned_name += "_"; + } + + // Prefix with "x" if the name starts with a digit + if (!cleaned_name.empty() && isdigit(cleaned_name[0])) + { + cleaned_name = "x" + cleaned_name; + } + + return cleaned_name; +} + inline void align4(ReaderT *reader) { size_t offset = (size_t)reader->ptr - (size_t)reader->start; @@ -312,7 +348,9 @@ inline PyObject *read_pair(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeRe Py_DECREF(first); return NULL; } + // PyTuple_Pack creates two strong references PyObject *pair = PyTuple_Pack(2, first, second); + // so we need to decref both values here to bring their ref count back to 1 Py_DECREF(first); Py_DECREF(second); return pair; @@ -354,131 +392,179 @@ inline PyObject *read_pair_array(ReaderT *reader, TypeTreeNodeObject *node, Type return list; } -template -inline PyObject *parse_class(ReaderT *reader, PyObject *dict, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config) +template +inline PyObject *read_class(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config) { - PyObject *clz = NULL; - - // Determine the class based on node's _data_type - if (node->_data_type == NodeDataType::PPtr) + bool changed_registry = false; + PyObject *value = PyDict_New(); + for (int i = 0; i < PyList_GET_SIZE(node->m_Children); i++) { - if (PyDict_SetItemString(dict, "assetsfile", config->assetfile) != 0) + TypeTreeNodeObject *child = (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, i); + if (child->_data_type == NodeDataType::ManagedReferencesRegistry) + { + if (config->has_registry) + { + continue; + } + else + { + changed_registry = true; + config->has_registry = true; + } + } + PyObject *child_value = read_typetree_value(reader, child, config); + if (!child_value) + { + Py_DECREF(value); + return NULL; + } + int set_item_result; + if constexpr (as_dict == true) + { + set_item_result = PyDict_SetItem(value, child->m_Name, child_value); + } + else + { + set_item_result = PyDict_SetItem(value, child->_clean_name, child_value); + } + if (set_item_result != 0) { - PyErr_SetString(PyExc_RuntimeError, "Failed to set 'assetsfile'"); - Py_DECREF(dict); + Py_DECREF(value); + Py_DECREF(child_value); return NULL; } + // PyDict_SetItem increases ref count, so we need to decref here + Py_DECREF(child_value); + } + + if (changed_registry) + { + config->has_registry = false; + } + + return value; +} + +#if PY_VERSION_HEX >= 0x030e0000 +PyObject *get_annotations = nullptr; +#endif + +inline PyObject *get_annotations(PyObject *clz) +{ +#if PY_VERSION_HEX >= 0x030e0000 + if (get_annotations == nullptr) + { + // from annotationlib import get_annotations + PyObject *annotationlib = PyImport_ImportModule("annotationlib"); + get_annotations = PyObject_GetAttrString(annotationlib, "get_annotations"); + Py_DECREF(annotationlib); + } + return PyObject_CallFunctionObjArgs(get_annotations, clz, NULL); +#else + return PyObject_GetAttrString(clz, "__annotations__"); +#endif +} + +inline PyObject *parse_class(PyObject *kwargs, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config) +{ + PyObject *instance = nullptr; + PyObject *clz = nullptr; + PyObject *args = PyTuple_New(0); + PyObject *annotations = nullptr; + PyObject *extras = nullptr; + // dict iterator values + PyObject *key, *value = nullptr; + Py_ssize_t pos; + + if (node->_data_type == NodeDataType::PPtr) + { clz = PyObject_GetAttrString(config->classes, "PPtr"); + if (clz == nullptr) + { + PyErr_SetString(PyExc_ValueError, "Failed to get PPtr class"); + goto PARSE_CLASS_CLEANUP; + } + PyDict_SetItemString(kwargs, "assetsfile", config->assetfile); } else { clz = PyObject_GetAttr(config->classes, node->m_Type); - if (clz == NULL) + if (clz == nullptr) { - clz = PyObject_GetAttrString(config->classes, "Object"); + clz = PyObject_GetAttrString(config->classes, "UnknownObject"); + if (clz == nullptr) + { + PyErr_SetString(PyExc_ValueError, "Failed to get UnknownObject class"); + goto PARSE_CLASS_CLEANUP; + } + PyDict_SetItemString(kwargs, "__node__", node->m_Type); } } - // check if class is found - if (clz == NULL) + instance = PyObject_Call(clz, args, kwargs); + if (instance != nullptr) { - PyErr_SetString(PyExc_ValueError, "Failed to get class"); - Py_DECREF(clz); - Py_DECREF(dict); - return NULL; + goto PARSE_CLASS_CLEANUP; } + PyErr_Clear(); - // try to create class instance - PyObject *args = PyTuple_New(0); - PyObject *instance = PyObject_Call(clz, args, dict); - if (instance != NULL) + // possibly extra fields + annotations = get_annotations(clz); + if (annotations == nullptr) { - // success - // cleanup - Py_DECREF(clz); - Py_DECREF(args); - Py_DECREF(dict); - // return instance - return instance; + PyErr_SetString(PyExc_ValueError, "Failed to get annotations"); + goto PARSE_CLASS_CLEANUP; } - // failed, clear error - PyErr_Clear(); - - // clean key names - PyObject *key = NULL; - PyObject *keys = PyDict_Keys(dict); - PyObject *clean_args = PyTuple_New(1); - for (Py_ssize_t i = 0; i < PyList_GET_SIZE(keys); i++) + extras = PyDict_New(); + for (int i = 0; i < PyList_GET_SIZE(node->m_Children); i++) { - key = PyList_GET_ITEM(keys, i); - PyTuple_SET_ITEM(clean_args, 0, key); - PyObject *clean_key = PyObject_Call(config->clean_name, clean_args, NULL); - if (PyUnicode_Compare(key, clean_key)) + TypeTreeNodeObject *child = (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, i); + if (PyDict_Contains(annotations, child->_clean_name) == 1) { - PyObject *value = PyDict_GetItem(dict, key); - PyDict_SetItem(dict, clean_key, value); - PyDict_DelItem(dict, key); + continue; } - Py_DECREF(clean_key); + PyObject *extra_value = PyDict_GetItem(kwargs, child->_clean_name); // +1 + PyDict_SetItem(extras, child->_clean_name, extra_value); // +1 + PyDict_DelItem(kwargs, child->_clean_name); // -1 + Py_DECREF(extra_value); // -1 } - // increase ref count for key, as PyTuple_SET_ITEM steals reference, so decref there will decref key - Py_INCREF(key); - Py_DECREF(clean_args); - Py_DECREF(keys); - // try to create class instance again with cleaned keys - instance = PyObject_Call(clz, args, dict); - if (instance != NULL) + if (PyDict_Size(extras) == 0) { - // success - // cleanup Py_DECREF(clz); - Py_DECREF(args); - Py_DECREF(dict); - // return instance - return instance; + clz = PyObject_GetAttrString(config->classes, "UnknownObject"); + PyDict_SetItemString(kwargs, "__node__", node->m_Type); } - // failed, clear error - PyErr_Clear(); - // some keys might be extra, check against __annotations__ - PyObject *annonations = PyObject_GetAttrString(clz, "__annotations__"); - PyObject *extras = PyDict_New(); - keys = PyDict_Keys(dict); - for (Py_ssize_t i = 0; i < PyList_Size(keys); i++) + instance = PyObject_Call(clz, args, kwargs); + if (instance != nullptr) { - PyObject *key = PyList_GET_ITEM(keys, i); - if (PyDict_Contains(annonations, key) == 0) + pos = 0; + while (PyDict_Next(extras, &pos, &key, &value)) { - PyObject *value = PyDict_GetItem(dict, key); - PyDict_SetItem(extras, key, value); - PyDict_DelItem(dict, key); + PyObject_SetItem(instance, key, value); } } - Py_DECREF(keys); - Py_DECREF(annonations); + PyErr_Clear(); - // try to create class instance again with cleaned keys - instance = PyObject_Call(clz, args, dict); - if (instance != NULL) + // if we still failed to create an instance, fallback to UnknownObject + Py_DECREF(clz); + clz = PyObject_GetAttrString(config->classes, "UnknownObject"); + PyDict_SetItemString(kwargs, "__node__", node->m_Type); + // merge extras back into kwargs + pos = 0; + while (PyDict_Next(extras, &pos, &key, &value)) { - // success, manually set extra keys - PyObject *items = PyDict_Items(extras); - for (Py_ssize_t i = 0; i < PyList_Size(items); i++) - { - PyObject *item = PyList_GET_ITEM(items, i); - PyObject *key = PyTuple_GetItem(item, 0); - PyObject *value = PyTuple_GetItem(item, 1); - PyObject_SetAttr(instance, key, value); - } - Py_DECREF(items); + PyObject_SetItem(kwargs, key, value); } - // cleanup - Py_DECREF(clz); + instance = PyObject_Call(clz, args, kwargs); + +PARSE_CLASS_CLEANUP: Py_DECREF(args); - Py_DECREF(dict); - Py_DECREF(extras); - // return instance or NULL if failed + Py_DECREF(kwargs); + Py_XDECREF(clz); + Py_XDECREF(annotations); + Py_XDECREF(extras); return instance; } @@ -750,45 +836,14 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre else { // class - bool changed_registry = false; - value = PyDict_New(); - for (int i = 0; i < PyList_GET_SIZE(node->m_Children); i++) + if (config->as_dict) { - child = (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, i); - if (child->_data_type == NodeDataType::ManagedReferencesRegistry) - { - if (config->has_registry) - { - continue; - } - else - { - changed_registry = true; - config->has_registry = true; - } - } - PyObject *child_value = read_typetree_value(reader, child, config); - if (!child_value) - { - Py_DECREF(value); - return NULL; - } - if (PyDict_SetItem(value, child->m_Name, child_value)) - { - Py_DECREF(value); - Py_DECREF(child_value); - return NULL; - } - // dict increases ref count, so we need to decref here - Py_DECREF(child_value); + value = read_class(reader, node, config); } if (!config->as_dict) { - value = parse_class(reader, value, node, config); - } - if (changed_registry) - { - config->has_registry = false; + value = read_class(reader, node, config); + value = parse_class(value, node, config); } } } @@ -858,7 +913,7 @@ PyObject *read_typetree_value_array(ReaderT *reader, TypeTreeNodeObject *node, T PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) { - const char *kwlist[] = {"data", "node", "endian", "as_dict", "assetsfile", "classes", "clean_name", NULL}; + const char *kwlist[] = {"data", "node", "endian", "as_dict", "assetsfile", "classes", NULL}; PyObject *data; PyObject *node; PyObject *as_dict = Py_True; @@ -867,14 +922,13 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) false, Py_None, Py_None, - Py_None, false, }; char endian; bool swap; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOC|OOOO", (char **)kwlist, &data, &node, &endian, &as_dict, &config.assetfile, &config.classes, &config.clean_name)) + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOC|OOO", (char **)kwlist, &data, &node, &endian, &as_dict, &config.assetfile, &config.classes)) { return NULL; } @@ -882,11 +936,6 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) config.as_dict = as_dict == Py_True; if (!config.as_dict) { - if (PyCallable_Check(config.clean_name) == 0) - { - PyErr_SetString(PyExc_ValueError, "clean_name must be callable if not as dict"); - return NULL; - } if (config.assetfile == Py_None) { PyErr_SetString(PyExc_ValueError, "assetsfile must be set if not as dict"); @@ -900,7 +949,6 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) } Py_INCREF(config.assetfile); Py_INCREF(config.classes); - Py_INCREF(config.clean_name); volatile uint16_t bint = 0x0100; volatile bool is_big_endian = ((uint8_t *)&bint)[0] == 1; @@ -928,16 +976,24 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) } break; default: + { + Py_DECREF(config.assetfile); + Py_DECREF(config.classes); PyErr_SetString(PyExc_ValueError, "Invalid endian"); - break; + return NULL; + } } + Py_buffer view; if (PyObject_GetBuffer(data, &view, PyBUF_SIMPLE) == -1) { + Py_DECREF(config.assetfile); + Py_DECREF(config.classes); PyErr_SetString(PyExc_ValueError, "Failed to get buffer"); return NULL; } + ReaderT reader = {static_cast(view.buf), static_cast(view.buf) + view.len, static_cast(view.buf)}; PyObject *value; @@ -951,6 +1007,8 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) } PyBuffer_Release(&view); + Py_DECREF(config.assetfile); + Py_DECREF(config.classes); if (reader.ptr != reader.end) { @@ -1008,6 +1066,40 @@ static const std::map typeToNodeDataType = { {"ManagedReferencesRegistry", NodeDataType::ManagedReferencesRegistry}, }; +static inline NodeDataType get_node_data_type(PyObject *py_type) +{ + if (py_type == Py_None) + { + return NodeDataType::unk; + } + + const char *type = PyUnicode_AsUTF8(py_type); + if (type[0] == 'P' && type[1] == 'P' && type[2] == 't' && type[3] == 'r' && type[4] == '<') + { + return NodeDataType::PPtr; + } + else + { + for (auto it = typeToNodeDataType.begin(); it != typeToNodeDataType.end(); ++it) + { + if (strcmp(it->first, type) == 0) + { + return it->second; + } + } + } + return NodeDataType::unk; +} + +static inline void set_none_if_null_n_incref(PyObject **field) +{ + if (*field == nullptr) + { + *field = Py_None; + } + Py_INCREF(*field); +} + static int TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject *kwargs) { const char *kwlist[] = { @@ -1024,78 +1116,67 @@ static int TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject "m_RefTypeHash", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOOOO|OOOOOO", (char **)kwlist, - &self->m_Level, - &self->m_Type, - &self->m_Name, - &self->m_ByteSize, - &self->m_Version, - &self->m_Children, - &self->m_TypeFlags, - &self->m_VariableCount, - &self->m_Index, - &self->m_MetaFlag, - &self->m_RefTypeHash)) + // ensure all fields are set to 0 + // in case init fails, so that dealloc doesn't segfault + self->m_Level = nullptr; + self->m_Type = nullptr; + self->m_Name = nullptr; + self->m_ByteSize = nullptr; + self->m_TypeFlags = nullptr; + self->m_Version = nullptr; + self->m_Children = nullptr; + self->m_VariableCount = nullptr; + self->m_Index = nullptr; + self->m_MetaFlag = nullptr; + self->m_RefTypeHash = nullptr; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O!O!O!O!|O!O!O!O!O!O!", (char **)kwlist, + // required fields + &PyLong_Type, &self->m_Level, + &PyUnicode_Type, &self->m_Type, + &PyUnicode_Type, &self->m_Name, + &PyLong_Type, &self->m_ByteSize, + &PyLong_Type, &self->m_Version, + // optional fields + &PyList_Type, &self->m_Children, + &PyLong_Type, &self->m_TypeFlags, + &PyLong_Type, &self->m_VariableCount, + &PyLong_Type, &self->m_Index, + &PyLong_Type, &self->m_MetaFlag, + &PyLong_Type, &self->m_RefTypeHash)) { return -1; } + // incref to keep values alive Py_INCREF(self->m_Level); Py_INCREF(self->m_Type); Py_INCREF(self->m_Name); Py_INCREF(self->m_ByteSize); Py_INCREF(self->m_Version); - // optional fields + + // optional values - can still be nullptr if (self->m_Children == nullptr) { self->m_Children = PyList_New(0); } else { - Py_XINCREF(self->m_Children); + Py_INCREF(self->m_Children); } + set_none_if_null_n_incref(&self->m_TypeFlags); + set_none_if_null_n_incref(&self->m_VariableCount); + set_none_if_null_n_incref(&self->m_Index); + set_none_if_null_n_incref(&self->m_MetaFlag); + set_none_if_null_n_incref(&self->m_RefTypeHash); -#define SET_NONE_IF_NULL(field) \ - { \ - if (self->field == nullptr) \ - { \ - self->field = Py_None; \ - } \ - Py_INCREF(self->field); \ - } - - SET_NONE_IF_NULL(m_TypeFlags); - SET_NONE_IF_NULL(m_VariableCount); - SET_NONE_IF_NULL(m_Index); - SET_NONE_IF_NULL(m_MetaFlag); - SET_NONE_IF_NULL(m_RefTypeHash); - - if (self->m_MetaFlag != Py_None && PyLong_AsLong(self->m_MetaFlag) & 0x4000) - { - self->_align = true; - } - - if (self->m_Type != Py_None) - { - const char *type = PyUnicode_AsUTF8(self->m_Type); - self->_data_type = NodeDataType::unk; - if (type[0] == 'P' && type[1] == 'P' && type[2] == 't' && type[3] == 'r' && type[4] == '<') - { - self->_data_type = NodeDataType::PPtr; - } - else - { - for (auto it = typeToNodeDataType.begin(); it != typeToNodeDataType.end(); ++it) - { - if (strcmp(it->first, type) == 0) - { - self->_data_type = it->second; - break; - } - } - } - } + // set private fields required for fast access + self->_data_type = get_node_data_type(self->m_Type); + self->_align = (self->m_MetaFlag != Py_None && PyLong_AsLong(self->m_MetaFlag) & 0x4000); + std::string sname = PyUnicode_AsUTF8(self->m_Name); + std::string sclean_name = clean_name(sname); + self->_clean_name = PyUnicode_FromString(sclean_name.c_str()); return 0; } @@ -1111,6 +1192,7 @@ static PyMemberDef TypeTreeNode_members[] = { {"m_Index", T_OBJECT_EX, offsetof(TypeTreeNodeObject, m_Index), 0, ""}, {"m_MetaFlag", T_OBJECT_EX, offsetof(TypeTreeNodeObject, m_MetaFlag), 0, ""}, {"m_RefTypeHash", T_OBJECT_EX, offsetof(TypeTreeNodeObject, m_RefTypeHash), 0, ""}, + {"_clean_name", T_OBJECT_EX, offsetof(TypeTreeNodeObject, _clean_name), 0, ""}, {NULL} /* Sentinel */ }; diff --git a/UnityPyBoost/TypeTreeHelper.hpp b/UnityPyBoost/TypeTreeHelper.hpp index 15cf0d80..f13578b0 100644 --- a/UnityPyBoost/TypeTreeHelper.hpp +++ b/UnityPyBoost/TypeTreeHelper.hpp @@ -33,9 +33,10 @@ typedef struct TypeTreeNodeObject PyObject_HEAD // helper field - simple hash of type for faster comparison unsigned int _data_type; - bool _align; + bool _align; + PyObject *_clean_name; // used filds for fast access - PyObject* m_Children; + PyObject *m_Children; PyObject *m_Name; // fields not used in C PyObject *m_Level; diff --git a/generators/ClassesGenerator.py b/generators/ClassesGenerator.py index 1c9ea09d..b1c6cf0a 100644 --- a/generators/ClassesGenerator.py +++ b/generators/ClassesGenerator.py @@ -10,7 +10,7 @@ ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(ROOT) from UnityPy.helpers.Tpk import TPKTYPETREE, TpkUnityNode # noqa: E402 -from UnityPy.helpers.TypeTreeHelper import clean_name # noqa: E402 +from UnityPy.helpers.TypeTreeNode import clean_name # noqa: E402 NODES = TPKTYPETREE.NodeBuffer.Nodes STRINGS = TPKTYPETREE.StringBuffer.Strings From 6a0c75323fdcbba607fc42c7af1fa66d886a01cd Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Oct 2024 18:20:45 +0200 Subject: [PATCH 336/599] add UnityPyBoost type stubs --- UnityPy/UnityPyBoost.pyi | 38 ++++++++++++++++++++++++++++++++++++++ UnityPy/py.typed | 0 2 files changed, 38 insertions(+) create mode 100644 UnityPy/UnityPyBoost.pyi create mode 100644 UnityPy/py.typed diff --git a/UnityPy/UnityPyBoost.pyi b/UnityPy/UnityPyBoost.pyi new file mode 100644 index 00000000..da72c632 --- /dev/null +++ b/UnityPy/UnityPyBoost.pyi @@ -0,0 +1,38 @@ +from __future__ import annotations +from typing import Union, TYPE_CHECKING, Literal, Optional, List, Any + +if TYPE_CHECKING: + from .files.SerializedFile import SerializedFile + from .classes import Object + +def unpack_vertexdata( + data: Union[bytes, bytearray], + vertex_count: int, + stream_offset: int, + stream_stride: int, + channel_offset: int, + channel_dimension: int, + swap: bool, +) -> bytes: ... +def read_typetree( + data: Union[bytes, bytearray], + node: TypeTreeNode, + endian: Literal["<", ">"], + as_dict: bool, + assetsfile: SerializedFile, + classes: dict, +) -> Union[dict[str, Any], Object]: ... + +class TypeTreeNode: + m_Level: int + m_Type: str + m_Name: str + m_ByteSize: int + m_Version: int + m_Children: List[TypeTreeNode] + m_TypeFlags: Optional[int] = None + m_VariableCount: Optional[int] = None + m_Index: Optional[int] = None + m_MetaFlag: Optional[int] = None + m_RefTypeHash: Optional[int] = None + _clean_name: str diff --git a/UnityPy/py.typed b/UnityPy/py.typed new file mode 100644 index 00000000..e69de29b From 825f6b63389bb2f11ea35029106cbc7c8c1890b6 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Oct 2024 21:45:50 +0200 Subject: [PATCH 337/599] TypeTreeHelper - Node clear clean_name | add ref count comments --- UnityPyBoost/TypeTreeHelper.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index c4facc7b..5ae008dc 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -384,7 +384,8 @@ inline PyObject *read_pair_array(ReaderT *reader, TypeTreeNodeObject *node, Type Py_DECREF(list); return NULL; } - PyList_SET_ITEM(list, i, PyTuple_Pack(2, first, second)); + PyList_SET_ITEM(list, i, PyTuple_Pack(2, first, second)); // pack creates two strong references + // so we need to decref both values here to bring their ref count back to 1 Py_DECREF(first); Py_DECREF(second); } @@ -396,10 +397,10 @@ template inline PyObject *read_class(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeReaderConfigT *config) { bool changed_registry = false; - PyObject *value = PyDict_New(); + PyObject *value = PyDict_New(); // value: 1 refcount for (int i = 0; i < PyList_GET_SIZE(node->m_Children); i++) { - TypeTreeNodeObject *child = (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, i); + TypeTreeNodeObject *child = (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, i); // no refcount change if (child->_data_type == NodeDataType::ManagedReferencesRegistry) { if (config->has_registry) @@ -412,29 +413,29 @@ inline PyObject *read_class(ReaderT *reader, TypeTreeNodeObject *node, TypeTreeR config->has_registry = true; } } - PyObject *child_value = read_typetree_value(reader, child, config); + PyObject *child_value = read_typetree_value(reader, child, config); // child_value: 1 refcount if (!child_value) { - Py_DECREF(value); + Py_DECREF(value); // value: 0 refcount return NULL; } int set_item_result; if constexpr (as_dict == true) { - set_item_result = PyDict_SetItem(value, child->m_Name, child_value); + set_item_result = PyDict_SetItem(value, child->m_Name, child_value); // child_value: 2 refcount } else { - set_item_result = PyDict_SetItem(value, child->_clean_name, child_value); + set_item_result = PyDict_SetItem(value, child->_clean_name, child_value); // child_value: 2 refcount } if (set_item_result != 0) { - Py_DECREF(value); - Py_DECREF(child_value); + Py_DECREF(value); // value: 0 refcount + Py_DECREF(child_value); // child_value: 0 refcount return NULL; } // PyDict_SetItem increases ref count, so we need to decref here - Py_DECREF(child_value); + Py_DECREF(child_value); // child_value: 1 refcount } if (changed_registry) @@ -1033,6 +1034,7 @@ static void TypeTreeNode_dealloc(TypeTreeNodeObject *self) Py_XDECREF(self->m_MetaFlag); Py_XDECREF(self->m_RefTypeHash); Py_XDECREF(self->m_Children); + Py_XDECREF(self->_clean_name); Py_TYPE(self)->tp_free((PyObject *)self); } @@ -1129,6 +1131,7 @@ static int TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject self->m_Index = nullptr; self->m_MetaFlag = nullptr; self->m_RefTypeHash = nullptr; + self->_clean_name = nullptr; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O!O!O!O!|O!O!O!O!O!O!", (char **)kwlist, // required fields @@ -1176,7 +1179,7 @@ static int TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject std::string sname = PyUnicode_AsUTF8(self->m_Name); std::string sclean_name = clean_name(sname); - self->_clean_name = PyUnicode_FromString(sclean_name.c_str()); + self->_clean_name = PyUnicode_FromString(sclean_name.c_str()); // comes with strong ref return 0; } From 422db659716a852d74a6bff5cd402323168cf488 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Oct 2024 21:46:08 +0200 Subject: [PATCH 338/599] TypeTreeHelper C - FileSignature -> FileSize --- UnityPyBoost/TypeTreeHelper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index 5ae008dc..d1ab3300 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -1055,7 +1055,7 @@ static const std::map typeToNodeDataType = { {"SInt64", NodeDataType::s64}, {"unsigned long long", NodeDataType::u64}, {"UInt64", NodeDataType::u64}, - {"FileSignature", NodeDataType::u64}, + {"FileSize", NodeDataType::u64}, {"float", NodeDataType::f32}, {"double", NodeDataType::f64}, {"bool", NodeDataType::boolean}, From 75ca7add796f6b86c6d4b9bb4ed54d9ed8726178 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Oct 2024 22:09:53 +0200 Subject: [PATCH 339/599] TPK - impl TpkUnityClass.to_dict --- UnityPy/helpers/Tpk.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/UnityPy/helpers/Tpk.py b/UnityPy/helpers/Tpk.py index 547ca09c..a636d7d1 100644 --- a/UnityPy/helpers/Tpk.py +++ b/UnityPy/helpers/Tpk.py @@ -352,12 +352,28 @@ def __init__(self, stream: BytesIO) -> None: if self.Flags & TpkUnityClassFlags.HasReleaseRootNode: (self.ReleaseRootNode,) = UINT16.unpack(stream.read(UINT16.size)) + def to_dict(self) -> Dict[str, Any]: + return { + "Name": self.Name, + "Base": self.Base, + "Flags": self.Flags, + "EditorRootNode": self.EditorRootNode, + "ReleaseRootNode": self.ReleaseRootNode, + } + def __eq__(self, other: TpkUnityClass) -> bool: - return self.__dict__ == other.__dict__ + return self.to_dict() == other.to_dict() def __hash__(self) -> int: - # TODO - return hash(self.__dict__) + return hash( + ( + self.Name, + self.Base, + self.Flags, + self.EditorRootNode, + self.ReleaseRootNode, + ) + ) class TpkClassInformation: From 23fb7dce326d45dd6acff7255278d45f4febb9e4 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Oct 2024 22:15:11 +0200 Subject: [PATCH 340/599] add simple typetree test set --- .github/workflows/publish.yml | 2 +- .github/workflows/test.yml | 2 +- tests/test_typetree.py | 199 ++++++++++++++++++++++++++++++++++ 3 files changed, 201 insertions(+), 2 deletions(-) create mode 100644 tests/test_typetree.py diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 67a99c1c..e8919b0b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -57,7 +57,7 @@ jobs: # Disabled repair wheel since the fmob lib is not compatible CIBW_REPAIR_WHEEL_COMMAND: '' CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'mv {wheel} {dest_dir}/"$(basename {wheel} | sed "s/-linux_/-manylinux_2_17_/")"' - CIBW_TEST_REQUIRES: pytest + CIBW_TEST_REQUIRES: pytest psutil CIBW_TEST_COMMAND: pytest -v -s {package}/tests CIBW_TEST_SKIP: "*-macosx* *-manylinux_i686 *-win32" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index da20ef0d..e8af0ff6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,7 +29,7 @@ jobs: - name: Install Dependencies run: | - python -m pip install --upgrade pip pytest + python -m pip install --upgrade pip pytest psutil - name: Install UnityPy run: | diff --git a/tests/test_typetree.py b/tests/test_typetree.py new file mode 100644 index 00000000..da3653b3 --- /dev/null +++ b/tests/test_typetree.py @@ -0,0 +1,199 @@ +import gc +import math +import os +import random +from typing import List, Literal, Tuple, TypeVar + +import psutil + +from UnityPy.classes.generated import GameObject +from UnityPy.helpers.Tpk import get_typetree_node +from UnityPy.helpers.TypeTreeHelper import read_typetree, write_typetree +from UnityPy.helpers.TypeTreeNode import TypeTreeNode +from UnityPy.streams import EndianBinaryReader, EndianBinaryWriter + +PROCESS = psutil.Process(os.getpid()) + + +def get_memory(): + gc.collect() + return PROCESS.memory_info().rss + + +def check_leak(func): + def wrapper(*args, **kwargs): + mem_0 = get_memory() + func(*args, **kwargs) + mem_1 = get_memory() + diff = mem_1 - mem_0 + if diff != 0: + diff %= 4096 + assert diff == 0, f"Memory leak in {func.__name__}" + + return wrapper + + +TEST_NODE_STR = "TestNode" + + +@check_leak +def test_typetreenode(): + TypeTreeNode( + m_Level=0, m_Type=TEST_NODE_STR, m_Name=TEST_NODE_STR, m_ByteSize=0, m_Version=0 + ) + + +def generate_dummy_node(typ: str, name: str = ""): + return TypeTreeNode(m_Level=0, m_Type=typ, m_Name=name, m_ByteSize=0, m_Version=0) + + +SIMPLE_NODE_SAMPLES = [ + (["SInt8"], int, (-(2**7), 2**7)), + (["SInt16", "short"], int, (-(2**15), 2**15)), + (["SInt32", "int"], int, (-(2**31), 2**31)), + (["SInt64", "long long"], int, (-(2**63), 2**63)), + (["UInt8", "char"], int, (0, 2**8)), + (["UInt16", "unsigned short"], int, (0, 2**16)), + (["UInt32", "unsigned int", "Type*"], int, (0, 2**32)), + (["UInt64", "unsigned long long", "FileSize"], int, (0, 2**64)), + (["float"], float, (-1, 1)), + (["double"], float, (-1, 1)), + (["bool"], bool, (False, True)), +] + +T = TypeVar("T") + +INT_BYTESIZE_MAP = { + 1: "b", + 2: "h", + 4: "i", + 8: "q", +} + + +def generate_sample_data( + u_type: List[str], + py_typ: Literal[int, float, str], + bounds: Tuple[T, T], + count: int = 10, +) -> List[T]: + if py_typ is int: + if bounds[0] < 0: + # signed + byte_size = math.log2(bounds[1]) + 1 + signed = True + elif bounds[0] == 0: + # unsigned + byte_size = math.log2(bounds[1]) + signed = False + + byte_size = round(byte_size / 8) + char = INT_BYTESIZE_MAP[byte_size] + if not signed: + char = char.upper() + + sample_values = [ + bounds[0], + *[random.randint(bounds[0], bounds[1] - 1) for _ in range(count)], + bounds[1] - 1, + ] + # sample_data = pack(f"<{count+2}{char}", *sample_values) + + elif py_typ is float: + sample_values = [ + bounds[0], + *[random.uniform(bounds[0], bounds[1]) for _ in range(count)], + bounds[1], + ] + char = "f" if u_type == "float" else "d" + # sample_data = pack(f"<{count+2}f", *sample_values) + + elif py_typ is bool: + sample_values = [ + bounds[0], + *[random.choice([True, False]) for _ in range(count)], + bounds[1], + ] + # sample_data = pack(f"<{count+2}?", *sample_values) + + elif py_typ is str: + raise NotImplementedError("String generation not implemented") + + elif py_typ is bytes: + raise NotImplementedError("Bytes generation not implemented") + + return sample_values + + +@check_leak +def test_simple_nodes(): + for typs, py_typ, bounds in SIMPLE_NODE_SAMPLES: + values = generate_sample_data(typs, py_typ, bounds) + for typ in typs: + node = generate_dummy_node(typ) + for value in values: + writer = EndianBinaryWriter(b"", "<") + write_typetree(value, node, writer) + raw = writer.bytes + re_value = read_typetree(node, EndianBinaryReader(raw, "<")) + assert ( + abs(value - re_value) < 1e-5 + ), f"Failed on {typ}: {value} != {re_value}" + + +@check_leak +def test_simple_nodes_array(): + def generate_list_node(item_node: TypeTreeNode): + root = generate_dummy_node("root", "root") + array = generate_dummy_node("Array", "Array") + array.m_Children = [None, item_node] + root.m_Children = [array] + return root + + for typs, py_typ, bounds in SIMPLE_NODE_SAMPLES: + values = generate_sample_data(typs, py_typ, bounds) + for typ in typs: + node = generate_dummy_node(typ) + array_node = generate_list_node(node) + writer = EndianBinaryWriter(b"", "<") + write_typetree(values, array_node, writer) + raw = writer.bytes + re_values = read_typetree(array_node, EndianBinaryReader(raw, "<")) + assert all( + (abs(value - re_value) < 1e-5) + for value, re_value in zip(values, re_values) + ), f"Failed on {typ}: {values} != {re_values}" + + +TEST_CLASS_NODE = get_typetree_node(1, (5, 0, 0, 0)) +TEST_CLASS_NODE_OBJ = GameObject( + m_Component=[], m_IsActive=True, m_Layer=0, m_Name="TestObject", m_Tag=0 +) +TEST_CLASS_NODE_DICT = TEST_CLASS_NODE_OBJ.__dict__ + + +def test_class_node_dict(): + writer = EndianBinaryWriter(b"", "<") + write_typetree(TEST_CLASS_NODE_DICT, TEST_CLASS_NODE, writer) + raw = writer.bytes + re_value = read_typetree( + TEST_CLASS_NODE, EndianBinaryReader(raw, "<"), as_dict=True + ) + assert re_value == TEST_CLASS_NODE_DICT + + +def test_class_node_clz(): + writer = EndianBinaryWriter(b"", "<") + write_typetree(TEST_CLASS_NODE_OBJ, TEST_CLASS_NODE, writer) + raw = writer.bytes + re_value = read_typetree( + TEST_CLASS_NODE, EndianBinaryReader(raw, "<"), as_dict=False + ) + assert re_value == TEST_CLASS_NODE_OBJ + + +if __name__ == "__main__": + for x in list(locals()): + if str(x)[:4] == "test": + locals()[x]() + input("All Tests Passed") From 6b8f99df496d3991bb8d3d9ef1238e1df7cf27b3 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Oct 2024 22:18:53 +0200 Subject: [PATCH 341/599] 1.20.6 version bump and minor fixes --- UnityPy/UnityPyBoost.pyi | 7 +-- UnityPy/__init__.py | 2 +- UnityPy/classes/UnknownObject.py | 10 ++-- UnityPyBoost/TypeTreeHelper.cpp | 78 ++++++++++++++------------------ tests/test_typetree.py | 4 +- 5 files changed, 49 insertions(+), 52 deletions(-) diff --git a/UnityPy/UnityPyBoost.pyi b/UnityPy/UnityPyBoost.pyi index da72c632..a87c99b3 100644 --- a/UnityPy/UnityPyBoost.pyi +++ b/UnityPy/UnityPyBoost.pyi @@ -1,9 +1,10 @@ from __future__ import annotations -from typing import Union, TYPE_CHECKING, Literal, Optional, List, Any + +from typing import TYPE_CHECKING, Any, List, Optional, Union if TYPE_CHECKING: - from .files.SerializedFile import SerializedFile from .classes import Object + from .files.SerializedFile import SerializedFile def unpack_vertexdata( data: Union[bytes, bytearray], @@ -17,7 +18,7 @@ def unpack_vertexdata( def read_typetree( data: Union[bytes, bytearray], node: TypeTreeNode, - endian: Literal["<", ">"], + endian: Union["<", ">"], as_dict: bool, assetsfile: SerializedFile, classes: dict, diff --git a/UnityPy/__init__.py b/UnityPy/__init__.py index e8f8a5f2..7ca9f824 100644 --- a/UnityPy/__init__.py +++ b/UnityPy/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.20.5" +__version__ = "1.20.6" from .environment import Environment as Environment from .helpers.ArchiveStorageManager import ( diff --git a/UnityPy/classes/UnknownObject.py b/UnityPy/classes/UnknownObject.py index 533af2d4..b6a3caa4 100644 --- a/UnityPy/classes/UnknownObject.py +++ b/UnityPy/classes/UnknownObject.py @@ -23,6 +23,10 @@ def format_value(v): return vstr[:97] + "..." return vstr - return f" {', '.join( - f'{k}={format_value(v)}' for k, v in self.__dict__.items() if k != '__node__' - )}>" + inner_str = ", ".join( + f"{k}={format_value(v)}" + for k, v in self.__dict__.items() + if k != "__node__" + ) + + return f" {inner_str}>" diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index d1ab3300..34e7de73 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -912,47 +912,59 @@ PyObject *read_typetree_value_array(ReaderT *reader, TypeTreeNodeObject *node, T return value; } +static inline void set_none_if_null_n_incref(PyObject **field) +{ + if (*field == nullptr) + { + *field = Py_None; + } + Py_INCREF(*field); +} + PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) { const char *kwlist[] = {"data", "node", "endian", "as_dict", "assetsfile", "classes", NULL}; - PyObject *data; + Py_buffer view; PyObject *node; - PyObject *as_dict = Py_True; + int as_dict = 1; + PyObject *value = nullptr; + ReaderT reader; + + volatile uint16_t bint = 0x0100; + volatile bool is_big_endian = ((uint8_t *)&bint)[0] == 1; TypeTreeReaderConfigT config = { false, - Py_None, - Py_None, + nullptr, + nullptr, false, }; char endian; bool swap; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOC|OOO", (char **)kwlist, &data, &node, &endian, &as_dict, &config.assetfile, &config.classes)) + int parse_result = PyArg_ParseTupleAndKeywords(args, kwargs, "y*OC|pOO", (char **)kwlist, &view, &node, &endian, &as_dict, &config.assetfile, &config.classes); { - return NULL; + goto READ_TYPETREE_CLEANUP; } - config.as_dict = as_dict == Py_True; + set_none_if_null_n_incref(&config.assetfile); + set_none_if_null_n_incref(&config.classes); + + config.as_dict = as_dict == 1; if (!config.as_dict) { if (config.assetfile == Py_None) { PyErr_SetString(PyExc_ValueError, "assetsfile must be set if not as dict"); - return NULL; + goto READ_TYPETREE_CLEANUP; } if (config.classes == Py_None) { PyErr_SetString(PyExc_ValueError, "classes must be set if not as dict"); - return NULL; + goto READ_TYPETREE_CLEANUP; } } - Py_INCREF(config.assetfile); - Py_INCREF(config.classes); - - volatile uint16_t bint = 0x0100; - volatile bool is_big_endian = ((uint8_t *)&bint)[0] == 1; switch (endian) { @@ -985,19 +997,8 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) } } - Py_buffer view; - - if (PyObject_GetBuffer(data, &view, PyBUF_SIMPLE) == -1) - { - Py_DECREF(config.assetfile); - Py_DECREF(config.classes); - PyErr_SetString(PyExc_ValueError, "Failed to get buffer"); - return NULL; - } - - ReaderT reader = {static_cast(view.buf), static_cast(view.buf) + view.len, static_cast(view.buf)}; + reader = {static_cast(view.buf), static_cast(view.buf) + view.len, static_cast(view.buf)}; - PyObject *value; if (swap) { value = read_typetree_value(&reader, (TypeTreeNodeObject *)node, &config); @@ -1007,21 +1008,22 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) value = read_typetree_value(&reader, (TypeTreeNodeObject *)node, &config); } - PyBuffer_Release(&view); - Py_DECREF(config.assetfile); - Py_DECREF(config.classes); - if (reader.ptr != reader.end) { Py_DecRef(value); - return PyErr_Format(PyExc_ValueError, "Read %ld bytes, %ld remaining", reader.ptr - reader.start, reader.end - reader.ptr); + value = PyErr_Format(PyExc_ValueError, "Read %ld bytes, %ld remaining", reader.ptr - reader.start, reader.end - reader.ptr); } +READ_TYPETREE_CLEANUP: + PyBuffer_Release(&view); + Py_DECREF(config.assetfile); + Py_DECREF(config.classes); + return value; } // TypeTreeNode impl -static void TypeTreeNode_dealloc(TypeTreeNodeObject *self) +static void TypeTreeNode_finalize(TypeTreeNodeObject *self) { Py_XDECREF(self->m_Level); Py_XDECREF(self->m_Type); @@ -1035,7 +1037,6 @@ static void TypeTreeNode_dealloc(TypeTreeNodeObject *self) Py_XDECREF(self->m_RefTypeHash); Py_XDECREF(self->m_Children); Py_XDECREF(self->_clean_name); - Py_TYPE(self)->tp_free((PyObject *)self); } static const std::map typeToNodeDataType = { @@ -1093,15 +1094,6 @@ static inline NodeDataType get_node_data_type(PyObject *py_type) return NodeDataType::unk; } -static inline void set_none_if_null_n_incref(PyObject **field) -{ - if (*field == nullptr) - { - *field = Py_None; - } - Py_INCREF(*field); -} - static int TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject *kwargs) { const char *kwlist[] = { @@ -1209,8 +1201,8 @@ static PyTypeObject TypeTreeNodeType = []() -> PyTypeObject type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE; type.tp_new = PyType_GenericNew; type.tp_init = (initproc)TypeTreeNode_init; - type.tp_dealloc = (destructor)TypeTreeNode_dealloc; type.tp_members = TypeTreeNode_members; + type.tp_finalize = (destructor)TypeTreeNode_finalize; return type; }(); diff --git a/tests/test_typetree.py b/tests/test_typetree.py index da3653b3..6e8a8e6f 100644 --- a/tests/test_typetree.py +++ b/tests/test_typetree.py @@ -2,7 +2,7 @@ import math import os import random -from typing import List, Literal, Tuple, TypeVar +from typing import List, Tuple, TypeVar, Union, Type import psutil @@ -73,7 +73,7 @@ def generate_dummy_node(typ: str, name: str = ""): def generate_sample_data( u_type: List[str], - py_typ: Literal[int, float, str], + py_typ: Type[Union[int, float, str]], bounds: Tuple[T, T], count: int = 10, ) -> List[T]: From 2798fa367cdea33426cfc6dc6b549c9b6c30cda4 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Oct 2024 23:09:21 +0200 Subject: [PATCH 342/599] deprecate manifest.in -> moved into setup.ex_modules[].depends --- manifest.in | 2 -- setup.py | 5 +++++ 2 files changed, 5 insertions(+), 2 deletions(-) delete mode 100644 manifest.in diff --git a/manifest.in b/manifest.in deleted file mode 100644 index 04762de9..00000000 --- a/manifest.in +++ /dev/null @@ -1,2 +0,0 @@ -recursive-include UnityPyBoost *.c -recursive-include UnityPyBoost *.h diff --git a/setup.py b/setup.py index fa37320d..81f8de3f 100644 --- a/setup.py +++ b/setup.py @@ -102,6 +102,11 @@ def get_fmod_library(): for f in os.listdir(UNITYPYBOOST_DIR) if f.endswith(".cpp") ], + depends = [ + f"UnityPyBoost/{f}" + for f in os.listdir(UNITYPYBOOST_DIR) + if f.endswith(".hpp") + ], language="c++", include_dirs=[UNITYPYBOOST_DIR], ) From 0912dbbd602fe0e284d878c4758f9771b0cd2dec Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Oct 2024 23:23:25 +0200 Subject: [PATCH 343/599] update workflows --- .github/workflows/publish.yml | 71 ---------------------------- .github/workflows/release.yml | 88 +++++++++++++++++++++++++++++++++++ .github/workflows/test.yml | 39 ++++++---------- README.md | 2 +- 4 files changed, 102 insertions(+), 98 deletions(-) delete mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index e8919b0b..00000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,71 +0,0 @@ -name: Publish - -on: - workflow_run: - workflows: Test - branches: master - types: completed - -jobs: - publish: - # `if` required because a workflow run is triggered regardless of - # the result of the previous workflow (see the documentation page) - if: ${{ github.event.workflow_run.conclusion == 'success' }} - strategy: - fail-fast: true - matrix: - os: ["ubuntu-20.04", "windows-2019", "macos-13"] - cp: ["cp37", "cp38", "cp39", "cp310", "cp311", "cp312", "cp313"] - - - name: ${{ matrix.os }} - ${{ matrix.cp }} - runs-on: ${{ matrix.os }} - timeout-minutes: 60 - - steps: - - uses: actions/checkout@v3 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: "3.10" - - - name: Install dependencies - run: | - python -m pip install --upgrade pip wheel setuptools - python -m pip install --upgrade twine build - - - name: Set up QEMU - if: runner.os == 'Linux' - uses: docker/setup-qemu-action@v2 - with: - platforms: all - - - name: Build wheels - uses: pypa/cibuildwheel@v2.20.0 - env: - CIBW_ARCHS_LINUX: auto aarch64 - CIBW_ARCHS_MACOS: x86_64 arm64 - CIBW_BUILD: | - ${{ matrix.cp }}-manylinux_x86_64 - ${{ matrix.cp }}-manylinux_i686 - ${{ matrix.cp }}-manylinux_aarch64 - ${{ matrix.cp }}-win_amd64 - ${{ matrix.cp }}-win32 - ${{ matrix.cp }}-macosx_x86_64 - ${{ matrix.cp }}-macosx_arm64 - # Disabled repair wheel since the fmob lib is not compatible - CIBW_REPAIR_WHEEL_COMMAND: '' - CIBW_REPAIR_WHEEL_COMMAND_LINUX: 'mv {wheel} {dest_dir}/"$(basename {wheel} | sed "s/-linux_/-manylinux_2_17_/")"' - CIBW_TEST_REQUIRES: pytest psutil - CIBW_TEST_COMMAND: pytest -v -s {package}/tests - CIBW_TEST_SKIP: "*-macosx* *-manylinux_i686 *-win32" - - - name: Publish to PyPI - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} - run: | - twine upload ./wheelhouse/*.whl --skip-existing - python -m build --sdist - twine upload ./dist/*.tar.gz --skip-existing diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..a608d72d --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,88 @@ +name: Build & Publish wheels +on: + workflow_dispatch + + +jobs: + build_sdist: + name: Build source distribution + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.x' + + - name: Build sdist + run: pipx run build --sdist + + - name: Install sdist + run: pip install dist/*.tar.gz + + - uses: actions/upload-artifact@v3 + with: + path: dist/*.tar.gz + + build_wheels: + name: Build wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + needs: [build_sdist] + strategy: + fail-fast: true + matrix: + os: [windows-latest, macos-latest] + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Build wheels + uses: joerick/cibuildwheel@v2.21.2 + + - uses: actions/upload-artifact@v3 + with: + path: ./wheelhouse/*.whl + + build_wheels_ubuntu: + name: Build x86 manylinux wheels on ubuntu-latest + runs-on: ubuntu-latest + needs: [build_sdist] + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + platforms: all + + - name: Build wheels + uses: joerick/cibuildwheel@v2.21.2 + + - uses: actions/upload-artifact@v3 + with: + path: ./wheelhouse/*.whl + + + upload_pypi: + name: Publish to PyPI + needs: [build_wheels, build_wheels_ubuntu, build_sdist] + runs-on: ubuntu-latest + + permissions: + id-token: write + steps: + - uses: actions/download-artifact@v3 + with: + name: artifact + path: dist + + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e8af0ff6..fe4d0657 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,40 +1,27 @@ name: Test - on: - push: - branches: - - master - pull_request: {} - - + push jobs: - test: + build_wheels: + name: Build wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - os: ["ubuntu-latest", "windows-latest"] - - runs-on: ${{ matrix.os }} - name: ${{ matrix.os }} - timeout-minutes: 10 + os: [ubuntu-latest, windows-latest, macos-latest] steps: - - uses: actions/checkout@v3 - + - uses: actions/checkout@v4 + - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 + if: matrix.os == 'ubuntu-latest' with: - python-version: "3.7" - - - name: Install Dependencies - run: | - python -m pip install --upgrade pip pytest psutil + python-version: '3.7' - - name: Install UnityPy - run: | - pip install . + - name: Install + run: pip install .[tests] - name: Run tests - run: | - pytest -v -s + run: pytest -vs ./tests diff --git a/README.md b/README.md index b1fcd123..cd755f01 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![PyPI supported Python versions](https://img.shields.io/pypi/pyversions/UnityPy.svg)](https://pypi.python.org/pypi/UnityPy) [![Win/Mac/Linux](https://img.shields.io/badge/platform-windows%20%7C%20macos%20%7C%20linux-informational)]() [![MIT](https://img.shields.io/github/license/K0lb3/UnityPy)](https://github.com/K0lb3/UnityPy/blob/master/LICENSE) -![Test and Publish](https://github.com/K0lb3/UnityPy/workflows/Test%20and%20Publish/badge.svg) +![Test](https://github.com/K0lb3/UnityPy/workflows/Test/badge.svg) A Unity asset extractor for Python based on [AssetStudio](https://github.com/Perfare/AssetStudio). From 9326839297329659a1cb847b9d44312be971694f Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Oct 2024 23:28:59 +0200 Subject: [PATCH 344/599] pyproject.toml - add tests deps --- pyproject.toml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 0a903794..86fff0a7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -62,3 +62,13 @@ dynamic = ["version"] [tool.setuptools.dynamic] version = { attr = "UnityPy.__version__" } + +[project.optional-dependencies] +tests = [ + "pytest >= 8", + "pillow >= 9", + "psutil >= 6", +] + +[tool.pytest.ini_options] +testpaths = ["tests"] From ad91a0d7fff8d3a4d92c69add1f6a8feabaf11c2 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Oct 2024 23:29:12 +0200 Subject: [PATCH 345/599] release.yml - skip all tests --- .github/workflows/release.yml | 4 ++++ pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a608d72d..11117e68 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -43,6 +43,8 @@ jobs: - name: Build wheels uses: joerick/cibuildwheel@v2.21.2 + env: + CIBW_TEST_SKIP: "*" - uses: actions/upload-artifact@v3 with: @@ -65,6 +67,8 @@ jobs: - name: Build wheels uses: joerick/cibuildwheel@v2.21.2 + env: + CIBW_TEST_SKIP: "*" - uses: actions/upload-artifact@v3 with: diff --git a/pyproject.toml b/pyproject.toml index 86fff0a7..ac324817 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,7 +66,7 @@ version = { attr = "UnityPy.__version__" } [project.optional-dependencies] tests = [ "pytest >= 8", - "pillow >= 9", + "pillow >= 8", "psutil >= 6", ] From 3104b67f5472de6d6b0ce3258b4a338d5d3f00d3 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Mon, 21 Oct 2024 23:58:40 +0200 Subject: [PATCH 346/599] TypeTreeHelper Py - fix extras handling for clz --- UnityPy/helpers/TypeTreeHelper.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/UnityPy/helpers/TypeTreeHelper.py b/UnityPy/helpers/TypeTreeHelper.py index dd55c112..39203daf 100644 --- a/UnityPy/helpers/TypeTreeHelper.py +++ b/UnityPy/helpers/TypeTreeHelper.py @@ -243,15 +243,12 @@ def read_value( else: extra_keys = keys - annotation_keys if extra_keys: - value = clz( - **{ - key: value - for key, value in value.items() - if key in clz.__annotations__ - } + instance = clz( + **{key: value[key] for key in annotation_keys} ) for key in extra_keys: - setattr(value, key, value[key]) + setattr(instance, key, value[key]) + value = instance else: value = UnknownObject(**value) From 2471db9bcb7ffea58e9fb561a51aa610f2eb400d Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 00:27:51 +0200 Subject: [PATCH 347/599] TypeTreeHelper CPP - fix some issues --- UnityPyBoost/TypeTreeHelper.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index 34e7de73..0e819040 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -543,8 +543,9 @@ inline PyObject *parse_class(PyObject *kwargs, TypeTreeNodeObject *node, TypeTre pos = 0; while (PyDict_Next(extras, &pos, &key, &value)) { - PyObject_SetItem(instance, key, value); + PyObject_GenericSetAttr(instance, key, value); } + goto PARSE_CLASS_CLEANUP; } PyErr_Clear(); @@ -556,7 +557,7 @@ inline PyObject *parse_class(PyObject *kwargs, TypeTreeNodeObject *node, TypeTre pos = 0; while (PyDict_Next(extras, &pos, &key, &value)) { - PyObject_SetItem(kwargs, key, value); + PyDict_SetItem(kwargs, key, value); } instance = PyObject_Call(clz, args, kwargs); @@ -778,14 +779,14 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre } if (!config->as_dict) { - PyObject *clz = PyObject_GetAttrString(config->classes, "Object"); + PyObject *clz = PyObject_GetAttrString(config->classes, "UnknownObject"); if (clz == NULL) { PyErr_SetString(PyExc_ValueError, "Failed to get class"); Py_DECREF(value); return NULL; } - PyObject *args = PyTuple_New(0); + PyObject *args = PyTuple_Pack(1, (PyObject *)node); PyObject *instance = PyObject_Call(clz, args, value); Py_DECREF(clz); Py_DECREF(args); @@ -943,7 +944,7 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) char endian; bool swap; - int parse_result = PyArg_ParseTupleAndKeywords(args, kwargs, "y*OC|pOO", (char **)kwlist, &view, &node, &endian, &as_dict, &config.assetfile, &config.classes); + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*OC|pOO", (char **)kwlist, &view, &node, &endian, &as_dict, &config.assetfile, &config.classes)) { goto READ_TYPETREE_CLEANUP; } @@ -1018,7 +1019,6 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) PyBuffer_Release(&view); Py_DECREF(config.assetfile); Py_DECREF(config.classes); - return value; } From 9a87a4847d9e191135ee0a352d07840fdb56b35c Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 01:11:37 +0200 Subject: [PATCH 348/599] UnityPyBoost.cpp - remove redundant pragma --- UnityPyBoost/UnityPyBoost.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/UnityPyBoost/UnityPyBoost.cpp b/UnityPyBoost/UnityPyBoost.cpp index e2dedbca..1cd2bc4c 100644 --- a/UnityPyBoost/UnityPyBoost.cpp +++ b/UnityPyBoost/UnityPyBoost.cpp @@ -1,5 +1,4 @@ #define PY_SSIZE_T_CLEAN -#pragma once #include #include "Mesh.hpp" #include "TypeTreeHelper.hpp" From 6b9e06aea8fb73649ca4eb0a0863dc0b339cb29a Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 01:12:02 +0200 Subject: [PATCH 349/599] TypeTreeHelper - comment out problematic decref --- UnityPyBoost/TypeTreeHelper.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index 0e819040..02b36325 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -527,7 +527,7 @@ inline PyObject *parse_class(PyObject *kwargs, TypeTreeNodeObject *node, TypeTre PyObject *extra_value = PyDict_GetItem(kwargs, child->_clean_name); // +1 PyDict_SetItem(extras, child->_clean_name, extra_value); // +1 PyDict_DelItem(kwargs, child->_clean_name); // -1 - Py_DECREF(extra_value); // -1 + //Py_DECREF(extra_value); // -1 } if (PyDict_Size(extras) == 0) @@ -926,7 +926,7 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) { const char *kwlist[] = {"data", "node", "endian", "as_dict", "assetsfile", "classes", NULL}; Py_buffer view; - PyObject *node; + PyObject *node = nullptr; int as_dict = 1; PyObject *value = nullptr; ReaderT reader; @@ -1011,14 +1011,14 @@ PyObject *read_typetree(PyObject *self, PyObject *args, PyObject *kwargs) if (reader.ptr != reader.end) { - Py_DecRef(value); + Py_DECREF(value); value = PyErr_Format(PyExc_ValueError, "Read %ld bytes, %ld remaining", reader.ptr - reader.start, reader.end - reader.ptr); } READ_TYPETREE_CLEANUP: PyBuffer_Release(&view); - Py_DECREF(config.assetfile); - Py_DECREF(config.classes); + Py_XDECREF(config.assetfile); + Py_XDECREF(config.classes); return value; } From f04b6323c320aa394245b197e20ff618e0c4ddc5 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 01:12:47 +0200 Subject: [PATCH 350/599] disable AudioClip test --- tests/test_main.py | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/tests/test_main.py b/tests/test_main.py index acd41bbd..45bb5675 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -60,28 +60,28 @@ def test_sprite(): obj.read().image.save(io.BytesIO(), format="PNG") -def test_audioclip(): - # as not platforms are supported by FMOD - # we have to check if the platform is supported first - try: - from UnityPy.export import AudioClipConverter - - AudioClipConverter.import_pyfmodex() - except NotImplementedError: - return - except OSError: - # cibuildwheel doesn't copy the .so files - # so we have to skip the test on it - print("Failed to load the fmod lib for your system.") - print("Skipping the audioclip test.") - return - if AudioClipConverter.pyfmodex is False: - return - env = UnityPy.load(os.path.join(SAMPLES, "char_118_yuki.ab")) - for obj in env.objects: - if obj.type.name == "AudioClip": - clip = obj.read() - assert len(clip.samples) == 1 +# def test_audioclip(): +# # as not platforms are supported by FMOD +# # we have to check if the platform is supported first +# try: +# from UnityPy.export import AudioClipConverter + +# AudioClipConverter.import_pyfmodex() +# except NotImplementedError: +# return +# except OSError: +# # cibuildwheel doesn't copy the .so files +# # so we have to skip the test on it +# print("Failed to load the fmod lib for your system.") +# print("Skipping the audioclip test.") +# return +# if AudioClipConverter.pyfmodex is False: +# return +# env = UnityPy.load(os.path.join(SAMPLES, "char_118_yuki.ab")) +# for obj in env.objects: +# if obj.type.name == "AudioClip": +# clip = obj.read() +# assert len(clip.samples) == 1 def test_mesh(): From 5686079c9e7c92b0b3389ce0cc59979d709ed944 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 01:15:20 +0200 Subject: [PATCH 351/599] pyproject.toml - downgrade pytest to 7 for tests --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ac324817..43f4a69d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,7 +65,7 @@ version = { attr = "UnityPy.__version__" } [project.optional-dependencies] tests = [ - "pytest >= 8", + "pytest >= 7", "pillow >= 8", "psutil >= 6", ] From 3d3f6b73428f5d66730a8b9eca490853272467aa Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 01:21:36 +0200 Subject: [PATCH 352/599] test_main - skip texture2d & sprite on Darwin --- tests/test_main.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/test_main.py b/tests/test_main.py index 45bb5675..d999ccee 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,5 +1,6 @@ import io import os +import platform from PIL import Image @@ -60,6 +61,11 @@ def test_sprite(): obj.read().image.save(io.BytesIO(), format="PNG") +if platform.system() == "Darwin": + # crunch issue on macos leading to segfault + del test_texture2d + del test_sprite + # def test_audioclip(): # # as not platforms are supported by FMOD # # we have to check if the platform is supported first From 4dd282701d6271c75df850878b914d8b386df4f7 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 12:50:37 +0200 Subject: [PATCH 353/599] fix FMOD lib distribution --- UnityPy/lib/FMOD/Darwin/__init__.py | 0 UnityPy/lib/FMOD/Linux/__init__.py | 0 UnityPy/lib/FMOD/Windows/__init__.py | 0 UnityPy/tools/__init__.py | 0 setup.py | 27 +++++++++++++++------------ 5 files changed, 15 insertions(+), 12 deletions(-) create mode 100644 UnityPy/lib/FMOD/Darwin/__init__.py create mode 100644 UnityPy/lib/FMOD/Linux/__init__.py create mode 100644 UnityPy/lib/FMOD/Windows/__init__.py create mode 100644 UnityPy/tools/__init__.py diff --git a/UnityPy/lib/FMOD/Darwin/__init__.py b/UnityPy/lib/FMOD/Darwin/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/UnityPy/lib/FMOD/Linux/__init__.py b/UnityPy/lib/FMOD/Linux/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/UnityPy/lib/FMOD/Windows/__init__.py b/UnityPy/lib/FMOD/Windows/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/UnityPy/tools/__init__.py b/UnityPy/tools/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/setup.py b/setup.py index 81f8de3f..cab05d85 100644 --- a/setup.py +++ b/setup.py @@ -5,6 +5,7 @@ from setuptools import Extension, find_packages, setup from setuptools.command.build_ext import build_ext +from setuptools.command.sdist import sdist INSTALL_DIR = os.path.dirname(os.path.realpath(__file__)) UNITYPYBOOST_DIR = os.path.join(INSTALL_DIR, "UnityPyBoost") @@ -42,6 +43,17 @@ def build_extensions(self): build_ext.build_extensions(self) +class SDist(sdist): + def make_distribution(self) -> None: + # add all fmod libraries to the distribution + for root, dirs, files in os.walk("UnityPy/lib/FMOD"): + for file in files: + fp = f"{root}/{file}" + if fp not in self.filelist.files: + self.filelist.files.append(fp) + return super().make_distribution() + + def get_fmod_library(): # determine system - Windows, Darwin, Linux, Android system = platform.system() @@ -81,18 +93,9 @@ def get_fmod_library(): if fmod_lib is not None: unitypy_package_data.append(fmod_lib) - -# These packages are missing __init__.py so setuptools will warn about unspecified packages -extra_packages = [ - "UnityPy.resources", - "UnityPy.tools", - "UnityPy.tools.libil2cpp_helper", -] - - setup( name="UnityPy", - packages=find_packages() + extra_packages, + packages=find_packages(), package_data={"UnityPy": unitypy_package_data}, ext_modules=[ Extension( @@ -102,7 +105,7 @@ def get_fmod_library(): for f in os.listdir(UNITYPYBOOST_DIR) if f.endswith(".cpp") ], - depends = [ + depends=[ f"UnityPyBoost/{f}" for f in os.listdir(UNITYPYBOOST_DIR) if f.endswith(".hpp") @@ -111,5 +114,5 @@ def get_fmod_library(): include_dirs=[UNITYPYBOOST_DIR], ) ], - cmdclass={"build_ext": BuildExt}, + cmdclass={"build_ext": BuildExt, "sdist": SDist}, ) From 7601f879de3d62a5741d78be19cdbd312ab9068e Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 12:51:12 +0200 Subject: [PATCH 354/599] TypeTreeHelper.cpp - add missing incref for CP314 --- UnityPyBoost/TypeTreeHelper.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index 02b36325..a14d16f2 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -458,6 +458,7 @@ inline PyObject *get_annotations(PyObject *clz) // from annotationlib import get_annotations PyObject *annotationlib = PyImport_ImportModule("annotationlib"); get_annotations = PyObject_GetAttrString(annotationlib, "get_annotations"); + Py_INCREF(get_annotations); Py_DECREF(annotationlib); } return PyObject_CallFunctionObjArgs(get_annotations, clz, NULL); @@ -519,21 +520,20 @@ inline PyObject *parse_class(PyObject *kwargs, TypeTreeNodeObject *node, TypeTre extras = PyDict_New(); for (int i = 0; i < PyList_GET_SIZE(node->m_Children); i++) { - TypeTreeNodeObject *child = (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, i); + TypeTreeNodeObject *child = (TypeTreeNodeObject *)PyList_GET_ITEM(node->m_Children, i); // - borrowed ref +/- 0 if (PyDict_Contains(annotations, child->_clean_name) == 1) { continue; } - PyObject *extra_value = PyDict_GetItem(kwargs, child->_clean_name); // +1 + PyObject *extra_value = PyDict_GetItem(kwargs, child->_clean_name); // - borrowed ref +/- 0 PyDict_SetItem(extras, child->_clean_name, extra_value); // +1 PyDict_DelItem(kwargs, child->_clean_name); // -1 - //Py_DECREF(extra_value); // -1 } if (PyDict_Size(extras) == 0) { - Py_DECREF(clz); - clz = PyObject_GetAttrString(config->classes, "UnknownObject"); + Py_DECREF(clz); // 1->0 + clz = PyObject_GetAttrString(config->classes, "UnknownObject"); // 0->1 PyDict_SetItemString(kwargs, "__node__", node->m_Type); } @@ -754,6 +754,7 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre } else if (ref_node == (TypeTreeNodeObject *)Py_None) { + Py_DECREF(ref_node); continue; } child_value = read_typetree_value(reader, ref_node, config); @@ -763,6 +764,7 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre { child_value = read_typetree_value(reader, child, config); } + if (!child_value) { Py_DECREF(value); From c8fccd4f0de6fcfce2e8b948fda5bf3a62c25ec1 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 12:52:13 +0200 Subject: [PATCH 355/599] pyproject.toml - remove tabulate dependency --- pyproject.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 43f4a69d..011cf226 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,8 +45,6 @@ dependencies = [ "texture2ddecoder", # texture decompression "etcpak", # ETC & DXT compression "astc-encoder-py >= 0.1.8", # ASTC compression - # raw typetree dumping - "tabulate", # audio extraction "pyfmodex >= 0.7.1", # filesystem handling From 412febd840973b3ffaf7571335eb40f185f1c466 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 12:57:21 +0200 Subject: [PATCH 356/599] pyproject.toml - remove test dep version pinning --- pyproject.toml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 011cf226..ccd8bcf8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,9 +42,9 @@ dependencies = [ "brotli", # WebFile compression # Texture & Sprite handling "Pillow", - "texture2ddecoder", # texture decompression - "etcpak", # ETC & DXT compression - "astc-encoder-py >= 0.1.8", # ASTC compression + "texture2ddecoder", # texture decompression + "etcpak", # ETC & DXT compression + "astc-encoder-py >= 0.1.8", # ASTC compression # audio extraction "pyfmodex >= 0.7.1", # filesystem handling @@ -62,11 +62,7 @@ dynamic = ["version"] version = { attr = "UnityPy.__version__" } [project.optional-dependencies] -tests = [ - "pytest >= 7", - "pillow >= 8", - "psutil >= 6", -] +tests = ["pytest", "pillow", "psutil"] [tool.pytest.ini_options] testpaths = ["tests"] From cd89eab5ab05e48aebbcf527be01336bd3c2ca56 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 12:59:44 +0200 Subject: [PATCH 357/599] test.yml - use setup python everywhere and change pytest to python -m python --- .github/workflows/test.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fe4d0657..57ac6fe9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,7 +16,6 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 - if: matrix.os == 'ubuntu-latest' with: python-version: '3.7' @@ -24,4 +23,4 @@ jobs: run: pip install .[tests] - name: Run tests - run: pytest -vs ./tests + run: python -m pytest -vs ./tests From 92dcd550961af8ce3d5efad19a32411b3314cee0 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 13:03:40 +0200 Subject: [PATCH 358/599] update codeql-analysis.yml --- .github/workflows/codeql-analysis.yml | 85 ++++++++++++++++++--------- 1 file changed, 56 insertions(+), 29 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 88ad43f5..c06c9cc8 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -9,59 +9,86 @@ # the `language` matrix defined below to confirm you have the correct set of # supported CodeQL languages. # -name: "CodeQL" +name: "CodeQL Advanced" on: push: - branches: [ master ] + branches: [ "master" ] pull_request: - # The branches below must be a subset of the branches above - branches: [ master ] + branches: [ "master" ] schedule: - - cron: '37 5 * * 5' + - cron: '19 5 * * 0' jobs: analyze: - name: Analyze - runs-on: ubuntu-latest + name: Analyze (${{ matrix.language }}) + # Runner size impacts CodeQL analysis time. To learn more, please see: + # - https://gh.io/recommended-hardware-resources-for-running-codeql + # - https://gh.io/supported-runners-and-hardware-resources + # - https://gh.io/using-larger-runners (GitHub.com only) + # Consider using larger runners or machines with greater resources for possible analysis time improvements. + runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + permissions: + # required for all workflows + security-events: write + + # required to fetch internal or private CodeQL packs + packages: read + + # only required for workflows in private repositories + actions: read + contents: read strategy: fail-fast: false matrix: - language: [ 'python' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] - # Learn more: - # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed - + include: + - language: c-cpp + build-mode: autobuild + - language: python + build-mode: none + # CodeQL supports the following values keywords for 'language': 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' + # Use `c-cpp` to analyze code written in C, C++ or both + # Use 'java-kotlin' to analyze code written in Java, Kotlin or both + # Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both + # To learn more about changing the languages that are analyzed or customizing the build mode for your analysis, + # see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning. + # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how + # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} + build-mode: ${{ matrix.build-mode }} # If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file. # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 + # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + # If the analyze step fails for one of the languages you are analyzing with + # "We were unable to automatically build your code", modify the matrix above + # to set the build mode to "manual" for that language. Then modify this step + # to build your code. # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + - if: matrix.build-mode == 'manual' + shell: bash + run: | + echo 'If you are using a "manual" build mode for one or more of the' \ + 'languages you are analyzing, replace this with the commands to build' \ + 'your code, for example:' + echo ' make bootstrap' + echo ' make release' + exit 1 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v3 + with: + category: "/language:${{matrix.language}}" From c7ee74b691c44f3b08cac37a2b69b7cbba2e7f8f Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 13:05:47 +0200 Subject: [PATCH 359/599] clean_name - check against len 0 --- UnityPy/helpers/TypeTreeNode.py | 2 ++ UnityPyBoost/TypeTreeHelper.cpp | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/UnityPy/helpers/TypeTreeNode.py b/UnityPy/helpers/TypeTreeNode.py index 89cd8fed..f08432e3 100644 --- a/UnityPy/helpers/TypeTreeNode.py +++ b/UnityPy/helpers/TypeTreeNode.py @@ -272,6 +272,8 @@ def _get_blob_node_struct(endian: str, version: int) -> tuple[Struct, list[str]] def clean_name(name: str) -> str: # keep in sync with TypeTreeHelper.cpp + if len(name) == 0: + return name if name.startswith("(int&)"): name = name[6:] if name.endswith("?"): diff --git a/UnityPyBoost/TypeTreeHelper.cpp b/UnityPyBoost/TypeTreeHelper.cpp index a14d16f2..8b23de9e 100644 --- a/UnityPyBoost/TypeTreeHelper.cpp +++ b/UnityPyBoost/TypeTreeHelper.cpp @@ -29,6 +29,10 @@ std::string clean_name(const std::string &name) { // # keep in sync with TypeTreeNode.py std::string cleaned_name = name; + if (cleaned_name.empty()) + { + return cleaned_name; + } // Remove "(int&)" prefix if (cleaned_name.substr(0, 6) == "(int&)") @@ -764,7 +768,7 @@ PyObject *read_typetree_value(ReaderT *reader, TypeTreeNodeObject *node, TypeTre { child_value = read_typetree_value(reader, child, config); } - + if (!child_value) { Py_DECREF(value); From 13b801c9a5787946fc7e23e0a8c661dbe18e9771 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 13:08:32 +0200 Subject: [PATCH 360/599] test.yml - use macos-13 instead of latest for 3.7 support --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 57ac6fe9..a47451c0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,7 +9,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, windows-latest, macos-latest] + os: [ubuntu-latest, windows-latest, macos-13] steps: - uses: actions/checkout@v4 From 12071b17a59f351177096067de24745432cd624c Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 13:12:57 +0200 Subject: [PATCH 361/599] test_main - re-enable audioclip test --- tests/test_main.py | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/tests/test_main.py b/tests/test_main.py index d999ccee..71fc0aa0 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -66,28 +66,28 @@ def test_sprite(): del test_texture2d del test_sprite -# def test_audioclip(): -# # as not platforms are supported by FMOD -# # we have to check if the platform is supported first -# try: -# from UnityPy.export import AudioClipConverter - -# AudioClipConverter.import_pyfmodex() -# except NotImplementedError: -# return -# except OSError: -# # cibuildwheel doesn't copy the .so files -# # so we have to skip the test on it -# print("Failed to load the fmod lib for your system.") -# print("Skipping the audioclip test.") -# return -# if AudioClipConverter.pyfmodex is False: -# return -# env = UnityPy.load(os.path.join(SAMPLES, "char_118_yuki.ab")) -# for obj in env.objects: -# if obj.type.name == "AudioClip": -# clip = obj.read() -# assert len(clip.samples) == 1 +def test_audioclip(): + # as not platforms are supported by FMOD + # we have to check if the platform is supported first + try: + from UnityPy.export import AudioClipConverter + + AudioClipConverter.import_pyfmodex() + except NotImplementedError: + return + except OSError: + # cibuildwheel doesn't copy the .so files + # so we have to skip the test on it + print("Failed to load the fmod lib for your system.") + print("Skipping the audioclip test.") + return + if AudioClipConverter.pyfmodex is False: + return + env = UnityPy.load(os.path.join(SAMPLES, "char_118_yuki.ab")) + for obj in env.objects: + if obj.type.name == "AudioClip": + clip = obj.read() + assert len(clip.samples) == 1 def test_mesh(): From 1a2b5030d7a96e8447d5b2ad12051d31d7880078 Mon Sep 17 00:00:00 2001 From: Rudolf Kolbe Date: Tue, 22 Oct 2024 14:07:52 +0200 Subject: [PATCH 362/599] FMOD - fix packaging issue and update to 2.0.22 --- UnityPy/export/AudioClipConverter.py | 80 +++++++---------- UnityPy/lib/FMOD/Darwin/libfmod.dylib | Bin 0 -> 2430928 bytes UnityPy/lib/FMOD/Darwin/x64/4.x64 | Bin 3263568 -> 0 bytes UnityPy/lib/FMOD/Darwin/x64/4.x86 | Bin 1875536 -> 0 bytes UnityPy/lib/FMOD/Darwin/x64/libfmod.dylib | Bin 2693392 -> 0 bytes UnityPy/lib/FMOD/Linux/arm/libfmod.so | Bin 1210480 -> 1214580 bytes UnityPy/lib/FMOD/Linux/armhf/__init__.py | 0 UnityPy/lib/FMOD/Linux/armhf/libfmod.so | Bin 1206388 -> 0 bytes UnityPy/lib/FMOD/Linux/x86/libfmod.so | Bin 1625248 -> 1625248 bytes UnityPy/lib/FMOD/Linux/x86_64/libfmod.so | Bin 1569064 -> 1569032 bytes .../{Darwin/x64 => Windows/arm}/__init__.py | 0 UnityPy/lib/FMOD/Windows/arm/fmod.dll | Bin 0 -> 1071104 bytes UnityPy/lib/FMOD/Windows/x64/fmod.dll | Bin 1720832 -> 1724416 bytes UnityPy/lib/FMOD/Windows/x86/fmod.dll | Bin 1489920 -> 1491968 bytes setup.py | 84 +++++++++--------- 15 files changed, 76 insertions(+), 88 deletions(-) create mode 100644 UnityPy/lib/FMOD/Darwin/libfmod.dylib delete mode 100644 UnityPy/lib/FMOD/Darwin/x64/4.x64 delete mode 100644 UnityPy/lib/FMOD/Darwin/x64/4.x86 delete mode 100644 UnityPy/lib/FMOD/Darwin/x64/libfmod.dylib delete mode 100644 UnityPy/lib/FMOD/Linux/armhf/__init__.py delete mode 100644 UnityPy/lib/FMOD/Linux/armhf/libfmod.so rename UnityPy/lib/FMOD/{Darwin/x64 => Windows/arm}/__init__.py (100%) create mode 100644 UnityPy/lib/FMOD/Windows/arm/fmod.dll diff --git a/UnityPy/export/AudioClipConverter.py b/UnityPy/export/AudioClipConverter.py index 12fc3a7b..19a788e7 100644 --- a/UnityPy/export/AudioClipConverter.py +++ b/UnityPy/export/AudioClipConverter.py @@ -3,9 +3,7 @@ import ctypes import os import platform -import sys -from importlib.resources import path -from typing import TYPE_CHECKING, Dict +from typing import TYPE_CHECKING, Dict, Union from UnityPy.streams import EndianBinaryWriter @@ -22,6 +20,24 @@ pyfmodex = None +def get_fmod_path( + system: Union["Windows", "Linux", "Darwin"], arch: ["x64", "x86", "arm"] +) -> str: + if system == "Darwin": + # universal dylib + return "lib/FMOD/Darwin/libfmod.dylib" + + if system == "Windows": + return f"lib/FMOD/Windows/{arch}/fmod.dll" + + if system == "Linux": + if arch == "x64": + arch = "x86_64" + return f"lib/FMOD/Linux/{arch}/libfmod.so" + + raise NotImplementedError(f"Unsupported system: {system}") + + def import_pyfmodex(): global pyfmodex if pyfmodex is not None: @@ -29,58 +45,28 @@ def import_pyfmodex(): # determine system - Windows, Darwin, Linux, Android system = platform.system() - if system == "Linux" and "ANDROID_BOOTLOGO" in os.environ: - system = "Android" - # determine architecture - machine = platform.machine() arch = platform.architecture()[0] + machine = platform.machine() - if system in ["Windows", "Darwin"]: - if arch == "32bit": - arch = "x86" - elif arch == "64bit": - arch = "x64" - elif system == "Linux": - # Raspberry Pi and Linux on arm projects - if "arm" in machine: - if arch == "32bit": - arch = "armhf" if machine.endswith("l") else "arm" - elif arch == "64bit": - # Raise an exception for now; Once it gets supported by FMOD we can just modify the code here - pyfmodex = False - raise NotImplementedError( - "ARM64 not supported by FMOD.\nUse a 32bit python version." - ) - elif arch == "32bit": - arch = "x86" - elif arch == "64bit": - arch = "x86_64" - else: - pyfmodex = False - raise NotImplementedError( - "Couldn't find a correct FMOD library for your system ({system} - {arch})." - ) + if "arm" in machine or "aarch64" in machine: + arch = "arm" + elif arch == "32bit": + arch = "x86" + elif arch == "64bit": + arch = "x64" + + fmod_rel_path = get_fmod_path(system, arch) + fmod_path = os.path.join( + os.path.dirname(os.path.dirname(os.path.realpath(__file__))), fmod_rel_path + ) + os.environ["PYFMODEX_DLL_PATH"] = fmod_path # build path and load library # prepare the environment for pyfmodex - if system == "Windows": - libname = "fmod.dll" - else: - ext = "dylib" if system == "Darwin" else "so" - libname = f"libfmod.{ext}" + if system != "Windows": # hotfix ctypes for pyfmodex for non windows systems ctypes.windll = None - lib_path = os.path.join( - os.path.dirname(os.path.dirname(os.path.realpath(__file__))), - "lib", - "FMOD", - system, - arch, - libname - ) - os.environ["PYFMODEX_DLL_PATH"] = lib_path - import pyfmodex diff --git a/UnityPy/lib/FMOD/Darwin/libfmod.dylib b/UnityPy/lib/FMOD/Darwin/libfmod.dylib new file mode 100644 index 0000000000000000000000000000000000000000..f94ced2dfec5560685e11f925d83c60bd544ffcb GIT binary patch literal 2430928 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

!;8`n(sB$Ihy9!=l5f}z*hF?+1Om|k5W7?__D&! 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 z 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®{6y63u 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%0AX@ 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 G6nWMk-X;_~ltrL|W0$3K${ z_cs`(6&a>h3XdqshDlYsC*R#YS(tyO|10gb+NZPLmo7XQ4J#@QKJ|vWdSRzkyQfO( zCoiw}eWrs5Zx)WF>vOESdK|9zSU3<4_dJd@vX7A#7`g=vPZ=SQFE$WKq&<|^1CgZD zOL+r7lgRpv9uZ-$=Akj!CgcrP|^?DECjCF^wekQ-dJ-Pdys_;%oX z-!Dp3#Yr5wmMR}4XWVCZ31?(X(^dK?Zp^(JxL>z#Wu=I$IEB?dl~bdTqjo|?Z9U{@ zAJ|XrkICaw)*A3*ZOwV2;M{^nzvyp~|2_<9@6#*0x8g0ex_aNhb|lGlMK1jK36)(N zs(p%T>+0*rV9Q0WlruNJz_MlimuL7bDO;{*QEhr9ZTaYQ2z&Fbyk##IR_jpD5M>NU z;gs-Ro|DK;8TJ1j9^0~9vQ8l}NoUMo*~=`O2#nDr626nQW|XojbG zpgI*oeWfUAt!a@8*>eL`N_%hQdBXUIi86Mn1MKT+G^(lS>Z>nGYSe0}n^B|kh2iBG z(%BpvHD*7{z>AzP%Ms3pUWBO>H6Jkmc7aNWPcx@tOk&S21X-i+fSv&5fhDvfUj!d) z$N-E9@eBc(@ae;GhnQ<4d}q5u_-2;Vss@G&k8{VVS+529<8Hc&rbHRnQY@LfFfhKX z8#N+}s?qYag0=C{>6oXMOI_?5hV;bodCAnaXr`HbGcLQ+oIzzGU(H<>zYNt>-A+;y zt{Sy?9Tju2;_ku=8#4OUK1B&7qu^Dw@ie;|jvRUcs!|x1nYa1|TU2 z;S`Dr>-=x2b5whGU59nLYY$?8L9iEsevPDavM!{_Y6R)lNxPG@Qh%fpL(dp8xAYy{ z=M84fk|U$J<*%{`-($gNl-ClOSK3g*ac4zjJ7D7->Uw-fSU|2yT85!dHmo7_#xNcY ziKu+)QkfH<#vN+da43dJFhY&-J+htvv@y8JM>0b~XP*51_*N<5S)$#G)Rfqbrq~E4 zzf2K(Alx~Q%qD&qSNjr_|9zmD)L zNpBPckc0EML-8x>zkpw>d4By;;MaI$Q6qk> zeTrY}QN-vp<5%PwWBiJFFs_E@SvT-2@hte2m4g|cUz4NIR}Cyu+DjR~mTBY>Nb2Lu z_%+-Nwz)`t4&Mob@GCMelR9fsQ>l{}Rh_`E6dwwHC8x9!Isv-*H74R*J@UxXcsOW^ z2F1~BMp$eNI0(z84Z*L`H|8#Moh|TdV01JQEtW*@8jxS{nWCNg^DD*%W<~>j!TINp z>(Gi91F}A%#!quQR9}A)O?aEN=ri!E#LK)nM&;e3mp&UZ?)p)HIvmadN}gice<*(b zj~#7beuZ_Zt~G)9)dffle(m-;VM@75MjM@f^F9>6g!aGfUGS?C)`pF~FCReuD%oE@ zjfA-cp(O7fEK%(6Z@aVcD!fHY4mW=H3$3d0mRJj;vsin$u@fF=S#v_>j=}i#j2Pw< z8q}dN9ti#dzq(g89ABbn5W-X!1ehp(Ir@2D75qfz_Tk(J)t2&o#m2voGw zA^4SZvwPW8{*s|2=VsDd9!A$CV|Io*B^B?@DVD3GsU_govQou4F}z-p`}18lUOiQI z6WyZc&aVbr4spqY@oUGA=GT6|cq9Be!mlIzdSh<%Uq<*fP-)UcHff@pG?5eH7Y>K7 z@w3sjjD~*iP4z=Vg0dRBK7A>?~ae_df!YG%W2=w;XF3|$-WPk2xfze0lD03qSo|8{^WyXhal zD>~4$O31y!o|kW!bayNMJr`CMjy27~$`3XeRu&n$w+hF?72!b7=~&O+G9!EVzqolvt zu~j;5q0Rb9A+xOvI5j>&P*0E`9x2OXT_bTi`2xH~170D%b_4=m3khE5Ui~&|e66&o z-Vt^xFrX{h@a|Me8|Q>rQl{n~NGz}2un&6bfU+wHsxP);OC}T6A12wADwTtrKHE^8 z4(hE0S~1<1MAp1z5@FHNF_0WlQxLN1CMNC@a`6&k-m=BEkcJ6W1480q@0j#iEq8FbbO%tJ0T;>ShY?+2breDhTTM)}CccSbDaxf#cQ4hLm zpdR(2D|OI&(G`eG=t?+C=*oKYkX}i#HC@ND@f@eQOQPn1^IbMm z-nX)-GF4Ye#9CQ9RSA82-?XCI3&gRcv-YCw?FpEtYK+JIXkY*h!l114uv^GM4L<0j=du6fPV3v z3_7pR5uCPbqy9mRIGURgKZkqx^M3Ky_;6ap1!6=kWKKY_nrR3+@HNs$qiT3SNdXXB zaA_|>?4?LN7Wc&-cy6~f9&`=%McT9_U%guc@3w#2ryCumH<42K-R~0OFzdeYtDt6= z$Ri-RjsM!zN+kE)q$QC}4-z?UMgAym{^qfVr|favKAHuQA|_o@yhueu8T^O^i<02w z!*fhNgee)KJPCPJjc1bzX@1f3FQ0A6N<%Njla3If2}fZ+_u@Phbm z#(v;D4L%ssAK}`@2Y^TbtcazLf)944XbM*>!w%^4U;)r7*bJaGvbPN~%45wTE?KnM z1sTh&BcxLswnPL?Yv^n%^WwbH*=0t{)0K+ zdth0j2+J@~@PguGW&RNwM(~;)5u0yIS+LLe`4nwFJM-j3qs?re;?4JGp1+wtMp0Oq zubln8yK$v_{Y3s4Uh;^Nd|UZ>u`yhZGq4Rh>1wkdr0ws){J8iP&*Jg0kj#vwvM%>rwBO{R?1kk3bC5 zBB!vmu6(MSRPa^RoFa2#kvW}`=-4x_Fg_dH7NWq=xVZ~V^RMDprFqpyef}*ePjh33 zMH`B)>sHj+7S0^yX3IVY$c=_^MKjOx1#hu|L9BAFc4!Ft!=8Ipi=8V~jX^K(iD=qT z`gYMN8jiVgp=*zfp6Atj7CTj9yY4+_s}?)*Q_~tZbX5A%vb9&fSiWam8>Xfq4Z0nbk&T#&IJH6jb|fuhKMm~VQR^2Td&bkA550S;{OyibOf78t;?q4MTGqQA z@A9?5<9W;W z4`$_8SrK8rNUF-W?of5HP;?cQSA!oP`K|NMoMdN3q0<}As^eD8?nK0XPhmS>@n2Kl$#>PrlDfPJFVWFMsJYE`(+E4HATAh)m2WvSo?VRtWQVBup8Wq<8mqM z(*k6DQe%R(E=rmi(BphxhD=a?u-5U{cy0VVH0W!&{6j-Ro6w)rg=4Olu6abec;8a{ z$H&2P6Lu?ZSS%$f9gl`}p#DIWXbF-+eC&|nk#arfvR5u7)%r&J$qSm^xhOMxwC-~+ zG%a%3Sns1PQeKvw=#b*4Lmgb;T2m3{I6>{4gb%NP6IEK>&Gra6?iX?#K1KFd5;(SF z?hD6yI>}zqqx=?*3Z$;{GyjEL4-ENsF8&F7!hyb?KMwzdd34a{UK=%+Y?9CX*K)1@ zv2aCnthttB;fipe=X0!QKG~5S{NLUJ=mv@I;=kpdFy*nV$1~?R2ac_@y*g@6`RJ?p z-Evo}9ck}P>DWT^LWN*uT2ULw-jB$j() z1Znx=9$&;jyZT|v`XA7RE41cj`rv@*VJu%oBF_AFu+W>9oRtxvtL2&I_^jJbB&k+K-)Bk8ov_OtwdZ7fU7aQgZ8k|on+ zw~_|uXG)qz{aY`@ZQ~OM*6vRwKLF!mCj0YTtX7@lmjQJx{47%W3j7R7)6CurB^0R! zh@a6*#JMtlro?GzNVW_@CL~Shm1L5q#wC7+VoF9_7h+{fngvTP3rqH8{JbCVP6dqM z-=z#+gYt7K$C-|!Zcjse2=boQe5hEkJKt5m)lct~)NW33mfALKL1#&PVq$ASO?L# zIKpYg3{I1{v}W1TkY8KPc=-9zQJywPBjx8@Ww7zsll}hqHS5oejp>m3=1JHS(;1Fm zu4E}UZrruY$*JjC*}3a~WiS>Nmr$n}eM#v1oS@b&+Zd|e`n z^G6;(fPIS1zMG+$!}EYW=8k!!wW0qHzY-z5-U0a3n%xkD#eN_ zohS^JjgG){_nt8-Y;iTv6Gr2TsVz`zC(j>O3z8V(Uxs<+LJ%ErX01vFXmhERD;CoXMnO0x{p2(Sz`{M^VaRK_0EEyCP;^X+M`cX)Gx13Lu?*19|qz$lAkv*6}5F&LjIMb(@^_oQP#pP*CpZ2?ie)A94rx6f*UERaiD(KS`{YZRW zXL3~ddY8d-`J_HQllWR6GZ{IlAvBNU`I;r~hPB#_5`ow7P^DH4#@F&6pid*(I=!-& zuPyp?eUCoAw_n*+GzyFth`gAtw(}+Wb0&UjVgKcv)P@tKY zm`c>P!q)5KS=O1tL$(yL4wxtv+r6+D8AKt_% zS<%QtpK-WRtj+ZGKY^rYt@f{{X8G5Cm@&4^e##O*|656!Guyh%U!n0hM|`j16r9gIl;9XbcUTr|}Yj!9m$Q8a8;_ zOjKJ~pZ7P>z$jy-s~a(&bfNC^MRNX#%=j6;6sr z9$;`=|1zIXOx!=$`mBt2*-2 z@{Q*y`}U?o3tTrA($u{p3p##TcnVX0diS9F#!FbHx9E=sseNV6UBx5#Biy>iEpqog zM^gn`XPVp!=9PVz^rh#nj}?#Rbx*PgbI>38+_FMmq6n$E0!hGXD^e~>528Q;EcN-$ z!4GS8#VQ=6HL(ySX}ras(uTil_lf>1`S&FI@plxvt$OuGB$j7uXwUrq`st6z7Imr7 zqy3skyG41t7T|wFJv(mJym(F6EloV!Fw5Rpb!*+KTji^6C$NcxRTvWODUAly? z0%Oqw`&WS}f{A6MMD2Ah$8Ui?@SJ|`g53G%a-%MoG#8qd3aYy`jdJ5JWV~Nk+}v}!kWXXw z)f<8BcoHC*r0I#eMx0U z<+trY&Xo_U>RjKx@!nR=+tW_fRlH44nmt)p-0op~S9)=GYt`-!|2uWhpV}R0S+A7tz;2%q3}PjZ)K4m)a(-|u#V8#53C9c8x}Jk= zW2aZ-aj)p>e(m3o%6x77Nc|+QMQUj1vq?|m6baO*Y3IL9)}*AMxW)WDO8RPu2tiQ zis~oXbNk&m=W|wGm#n=aEx?PMKkeUgm%hapk^aETE#HtN&CfpDD+UdqU-ydgIM6~@ zEBxbk+w#ramhtmi#`jSY|Ni57JaH^s5e{^9yl^aB5f1d6j`jDS<;Xk#f6@ZD?X0Mj z(?kVx5zn#W-tv-{N|YUehSbGG>QUn*izkw@euEcAs9i$7!HU4K)%GQUFI3t_=Ud|L zu?is=wDBUF2wG7K8NR0>JEF!{+b=Tetmob^`Y2qJEtvp%HsB`=FsWIg8VEQ3BJXUb zbE+ood`_u$F~{AVQ%a(G+Tv>b+LxQ3Jpkj016q-lnhu!lamgB1<&aXpF~|hgJ_?z@ zT&-y1rw!a7(JN`qMMu zai_Q>0Q`&lx`k9>N5?Qv7-_$^M`Ndu=fR&L%qPajRKt1=^#9VD7l?0{Ei-^v$%$?a z?k6X@TNS+pN;(J3CnepM52?oZ>)jTriDn;s;m~pWm!eO8&GA+Yi~tlTt7K*;t&75O zKjNt)JW~-dEj9B*FGujDIzZ)bE?19+=U1?&k4Et+DnONJ&s^f)zzB)LXpl+0P?s0P z=7K_0=-#k+YDy1A`e}^n3yA8y>A@(G5yk+_xdeKspY+fp7raIKDcs(CYZqn3%yiK( ztNR3qkMwb2Or%!F22#4W*4AfWsD_r*)%Ua~3ksli%2_6~ruQW>`lBt!PfSD z)WG#8Ehy=K`&$`c12>3xjvuS#Vcw-1Wrcbv|M^WNaFTTeqgrB&{cPZ{6&K43Ww0Tt zRRtm~s-l^j#E{Y{pMFDA#a!gXSEEW-+kHxVg_;4fskd<@ln%e~N&GMHK_^>-gmV04D^Xt1Vf@p>87$mf&M2*w#tYSj;h;>Ihm; zf64HljewBIj?iMZ0+8+xI`a`?+3`LY(&-(z!RknYXH$5=JW!us0YN=!x@83lIy9M3 zO@iKmfq*2uvMIdaKx$Rbc9GbhuxDPrM`S3U7=gsEd5`&gvs|3K~f$E5b-Zz9s-RmdkQS&oqoA zG?a;h+bRxJWccpaI^lsW=eSKJ4mOTeEg`m?hr}zwiYpks#d+N1kYejm_ddUFizw%v zZj;9~ioK?4MuoNJaxk=)yud+!*S+{+N19>G>62fEpf;33v~84+#L8~k$6ud)XNMeJ$DTuhETyAp+_-j+1#g|RizqyAuiSdULB#}p zoFiv1;jFCK4-p>U__1S?PmULi)LX{G3q!l>(r&NIyS?ts#T5lhPQJPLWC3$67bJ_f z2>-qp%E$H@FDSn!t)A>&{drLJDCX$Jt!2YW9LQ6AKv}yY zzUH-1?SEsW-tx$J!N_>QKe68O{hHdFzjSsIM$-sRtx(aD=5Yt>}iWpy$|MBWBy-nlXdM3v_1!lk0od^qVmB2PSI+ zjTanh9(o~EWR7D8m1^d7;rD@Ne9O8)s4l-U4J!<_B;|1A$#|ze4#tUk$ z8OYHMw2T)3UHj$`#~1<|9bn@HEMqu7Uf_p}YarjU{^JE72;&8C-v3j^3&4Iuju%{b zYP`T1%+xbpKDeGS{N@t z0`cL;3v3bPKj3%)#uyADz%-Q&d$l-Om|E*NNO`d*s}u><#)P*$)7m>UFpvUa8vLmwYq+Kp&zMmB5kBu{NFHA|@Ue}g{fhLEv;_d#oOjOt{WFA!r z7t5!)#ZOE=;PB!kK8gP+g#2Qtio!fdgmYHcP~;{{O=j;|W6xIbVayRM2!x5f`;DdQ zi+BgEz~O`u2TEoJf=9f(Wd#ic@X9dbeT)H+Q0&5ZAMfMM1(+ZUKb-%t572hZ34vK59ytr+Nra8~yAmH`cnN$`_w-|R&gkC=`QEejtX8IKql zj~E$`81XMqI)f4ag3KcnqkCj>g0AmVC8UZm6MfT%5MUzBmUymKBZ{xID^+O=l*NAa^LxH*H7YwHcV1}Gq?2q26WOri%Nk7h{4^rq9`g3G0MVh<+MsRyAP4M=&#p*aXR&*=HyGl zZ0)1dSsyfeeuQ5ZuZ3~Zl`AR(+XJ^&XDH&m+h@gFX6qF3^Wt)s)qZh0>PFtFqkf^~ z^R8jGu4fkK7P0SOJ>ILU)VYMk6=bOT%*Geg{gQw0?%FSN(iU&=-`F!-x@_?lKX^Af zqHdILt$yqhb~~-|=$PBLqT-sjR!<)<%ua~ERbE%?9~Zy43%1zB6XWBXch_fGW^FA$ zj)p_^&C&5`yE85Z05Q%V7iQ})+l1Nv0Lb&$=Sb(Zbuz5l(c_~j-_#0bzeZW6#Vj+} zB1%(@mO~~jj&t(U2C@9Lo`n6$A+UVVk`$E%0XRe?@O zHYSL&v|}a*LX_p|KQ$UIim$K48`2|7sUa54jxVF~ zScH%>07fKX`H-xQ)pTB@EtVr@wzE2uYC5YL!fsOtEwo5=y+)PM z&?+`->JT8jO@?kbO3I40CiQnbRgHy`pLQ*(7z)Z z5NkzDla#%MTI84|)3Jxv8K({!vqODj=-Bxp+8?_5dr@#3z|awN4r!PbD7Xz_az6@l zckMwhn)e)py*f?o;L8$e!n7fNA9cHfZ1)-+J-a2j&I;c;jXmO;S@G)i&cRY-=TiB$ zV%C8Q@=l+z1);lOEA>vHN_l6ItQJMmQHMOCShgPt;#AV+l;Z7#UzrUPv{`(~^?1_96&EIb-3>^*rMR`AAJsEEy4sEBsZH^!q%BcHpQotb}bEz7&z+(~7fi!fH-oL$`l=*J=r;)zWwhw># zRnR-7>L~w-+;W%CIK#>1??1Ai7N*?YW_8fTSoZ2E6c zWE?nIx9i^@=C@4CJ-Z_HyjgSk{``(9vu~z&-`PLmB_u!G%DCP z3=$OcHD0!{9v!<}GKzB+xzuomGuEN!vd4)^BG3EG^zj&fMR{;6Ux;dQiYy}PkZn=X z7u@o-n>>HQA;;SfE<|NdiM%6T9jH(;ubPS|MO^6w$>hr2L97auXy>?6mtEscu5e)j zHR%~D3VEU)RnLQ!CPsJ@{ltae_$?Yg``WCqI1Ra^M)dCy{d>eOKf;^bKT-bTrWc<$eH{22;MJGAM;zt^QIu` zk^S`I47iPH54ZA`xlz4f7VCT5N#M=CWF_kjL-S@}`;GZm`Fg(N!>$SSd|6XM*L=uQdLs@DanOMFdS6&~DF%A!YeeB_E7n(H z4f0I9=}NV8>WDY108m@Nn@VL}Q!RiGfVnN2@n)0wZPniV5~xt5uMx z?(CUmHg%>HHwCTC1aBs0>aTP%-t5{F7tofNc@*4|ig@2WgYl*l&zmuPhxs6l7`9c! zfj7w#dyaUsYY&qE^;c*aJ{4Mq)@HM4ZJI@E)7ysN%^h+i&T{l@0}m*C{p0O}Z1?Nc z=;CicCNm=G$P1u6#+#8x3t|~>Cgu3E{8ESpQcpIPz)IU%VRG>#-t=#)F%>i3Z1gsR zHv!FdHHx?_BNr~H2*e4r}N>OKp^Dlsv|bqZvt<6qL2{M zY$59w@Kd2Q*PxIP<4AH3E2U*U{$P_ucJs#DRNiG81(1|M9`rM2;6-9Cs&=GND~UHT zg&p(*JhlQO7bFIvP8q&8xEM4)z`y4mQu7bwO%>0Z85lcZXYt%$egJQF1lhh^2HvdF z$0$_q>N_wjV$}Q+LpUx-c1FDEjiHQ3vMosJhWjS-D+z8R#+w%oVPxa0cZoOanm*k) z-TS~5HSuQLbhEh=ym?Tg!l1@Kmp3mrwJn{VFE*KoH!sV#Hm0>n9#q{D`@&V7u;jd} z;^LwVDR^@#cr&=xwMM)o(>u2$sr^**2yfyk&^mK#g=s5BooMJxcB+R9(~t#*{_7B3LDDe z18gNQI#YgVdOQ@kstXbCor7KVi_c!L(^c8XhiH%RCjHKajQFjujKpW-MxftMmM&pL z-~8w4o1u+eON}n2IkBos%Ec;a_o0aoq^YjE?&P0$RXZhtH&s$w**o|>aw_%EJ_2tp z?szwMhcx|y{qCoE^Lk+Qg1`7h-`o16zWJB+&^LcLZ!Vk_)>q#|%7#Ar=G0rc@uY8l z!1T>Z-?%|}Q>U2SSKowdl-D=wnZEg0vCg7zGTwZ@3|;@keYK>G3i_rlsj`{%o&E2(+)zKe3IDLGKpl?o}MfiEt zX>mV&Q{c^8&^P`+^zbI>oBen*A?Z>L(>I6V%?PG%@=2l?Z+1(FHzBO4Rb?qK=J}YJ z`UKu2#~zMJn2N47a!c(%zZZNogucmNwm;S1MNVr?JoHVzAb5#+hCz7KNkL>iIB)W`ZFzn3hw-NH4s6_yH*s_Fyh(c@(4#&l z)ll*Ttr2hXYoTR=Hz_<7%b50v6=vFwu_X_pz)JM5*$cRetzcLQQ)zE3EBKXHKN$zQ zC>-cO>}}XR-p1ZRdqM6hb|9=p@h8j4`8~ZawoGNvmyhlJpZg+2&<=ZS zE5kK6XT!De;T_8GvambpXA10ivj{SOFL#P#gI9FZ!AkMaW7iH9YKe$FA9xtAC?jwq zYMu76B3UP{!`N(ljro14JQs4PQ=?);WTLiR-qxWc4?@P}#x98wX}mF{ChM%k_(N{T zqKt+n_soVM`_D3bq)iFhBS9E6E~(3PO@Zw>F>@?F-6WN)vm*2IJd9n$*5%#FaC-Ij zQXKT*$4Qxuot2r#aL`|6Qv^1~@5p_8$9+k0(CrGA&@6SktgTXilqD7a`8juO!>P_m zbVL0?yS=eRZ~{awF=6v(73-ujBQGESeHKfr|Yc}DFPn_UbwXrGaDK^ zFG{9)o83cGMf%v3EVqD&pmf<5N6)j8TL}RL#VMspjxUEsD7Q8kW2E?R07oasb4LAj-6&3EJnyu# zFwx0neEp{ClwdA#>GJb-2B+=YPi!0WFra1hvXAp5Mv0AQVXKvEi6MXd>h+(GU3l_6 zhu|=?Gq1Q>BY7EDI(7iXbproHw=tl6Uh3$=!WAoa9C-iUD6jdc#+tMDZM?(0nHEdv zV=%dVSA zkKap#P-V7#AS-aqFE^g6z<6y;wbs$|!OVl#gSHg!{4m9FcYtE?pXaSB_Izuec(3B2 zSARYB!Z&k?kFPR5hMjji{J#sB{}+55O?=FPhM$P2e8T?=BkLq^#=faV^KS(1uY@)@ z8M8Ed$F-|d@LIrWAH9^U%Y*UCLF;U@B1I1B#YBIf@E z5c{`db}DZNCO(D}78}EPdFtqwXY%GjJ*)1W#SdG=KIR?PRZ3mL0L0*99+%VE>@RB{ zg016sSJ$hT-7fg@m(}nN$HgO&P7bo-e2E|Ej;L#STdNPdgvG=E>v-$d{2Q2k#AfTq z#7~HiTL?1zrska__Y>!NvUWxKXym}iL-IJ8*X+G{tfMYe-n}}f{)digXyu*9%(Q=415gGB|a_=TEHh!J^=r(Sbt>^_!ulqd<--uAclSj z|1b4$(M6|$c=XdT8V@b|Pzz;%3g6l85Wd-w>gd&2b8|e-p`9tywRewK`jRD=)hgHqdYX@MT<;z}-cQ>x45pn*38oq7`mhxO_X2ro1z?&7RmR&E zT18nV2IBnNNca^Xm#whyF;0WT;34?#{zs-F zd-&hd1VXd?fLW_MqhDe$?V?`kmf*hjo`ZOD2{VlAVC|LRh7sqA$UsfTb|Z`i4d7#A z2}qdu7|6RG3BEkx>c<#O;#?Bz>DC2hAE#TK@{JWYP5gj90o?XTFqV(+AMS3X8z&R{ zc+`r*-lw zERnUjXI?qQ89uhR9`0w{r@aAhqbd2?%Zh6xN9EaTiR?{YO@Ho z>+|$F#QKh5*54Us{oOw6ZRz+uY1NdphPz8I!tn=M|B!n~jo<%oG(|{|r!Hz%N`V%-y+o5)V4TfBQl3PAx{q-?J zuWuP#AshJOEW>kY%b-+k!)8{CJk{x{ru?xkVg|B_+U zkZB0-_RxxO+YhrnXV?Gh!Lsz;Abs1_=@!Ta~%Bni4Y;n^J~E8 zD_hSE{(KA>=J{!$^+P;A`#iq~e15X$_wvD?pC{@3hgjb-%=*61-+`WgeV@Mrt!K~Q zyPRb}d2(g{5FR=@cg*VR{!h>$pPwdrz76qwtr%uKLJWs|e-+MX$OmZ6aI1%2kLP>h zP|wE}$D!AAWAMMPhpPTLap?7iiNib}hgr|PIQ096TW=Wd{m=aT4jKCSvi!;C*D%`~ ze&qI5Pi}7*`h0%u_AO8D-(%?K-K&V78}N_5b@U(g^yohX6|ny>HiLVZe&#v$>^{6)~3Cp$kSz|zW#c^jG3>$E{|2d9-XXxMY|>^ z?e*kr-7DEy$+;`mj!IoelNtXh-$`WpS~t8{wp3~hEc7aqNEz9bZHkjV2= zb!#LG^K!HEa{0xpbnDY{B)RE1Y00Vokn>>2dYw);nGViQ=vl6}=L(bc8&>zZzSV11 zr(~_sqUlx&mm~4B*~Cr)32P>(g>$b98HRbh#UP7p@#=A#J%vugle~S>1oj zrxs#MVgCzq*5qaP+j`&?ct?0n+S`-i%+q)DOJit<6+t@X_)w%koHWn89Ni1vF#RdoGq-CWg z>(icCnw*;2uQ7y;ap0J|Rcxl`2)(NYc}HwAUFsk!W0F@rd2Ie5Ldy?u7-7vb-RM0x zpq9V0R?;W0WA`=ZvpO#;tLL7RgeRw_~P&(z2^xk(J!%DW%jr z|0C#fS@SBRW23oPYNt?o3Dc&p;li_$SFgk^7@EE&Cr{7Ct--@_RhnL(yfTf$w=o5e z{xvHk!i}s)o5d>WC60?rUX`7dCRvTIn8Z7kZy%id3f=1DED3%yQrEn(T9UU~C;WXj&6N=|alhF3z@tjb=q8vE8`GAE7w#Lm!K7Gl}zT((l3 zreBknqfOJlvQqy#Zh7I1^fU1Nz@Bq5EzeQOs$_j8-{hUaAMmMXr>$g1e@&hc z#%bgWEH|h+IX6v0Pj%eT&+$vUX64FtYjRR_{DX`2pBAoMDM?_=1 zkIhQnkfqb-O4R5};hV)jn5Tp#YNBVwb4y~QJ*Ti3je0Ss4hxq=;DrlU zMul?wx;R0b(n&K4ln3ym%|6YEY>v!Gy zw6z=_*h;yC9?}2Ow-MOMNT~JV5F!_|U>-Z4V2(9>6dwAT2#y*VC&y`&8l379%Y`lD z!gX0`oJN<6*Qm7BD|6F@$KJvfVXJfT-PUsn`0=BT9{Z5vWHGCz$JQjT?0@IXnvaL^{8=1+@aRWV9;Jwn<`##^)$G?D&BEcytWnEDBe?}( zG3v1AdAhmD{P&HW8PQ4qQ+tjLgTBD)Il2`qSnFu3P!qSvJ6Wu*m6o@cwR?{gR6h<$H@=hvp}qM~){Id3ju zO%{Il=tutlWAAI=tem$0*M9c1&vf$^lF-eON>bDGHY#zanv(Q(Ya~g{do!80<|UPo zB;6$GCP^|#x=BJvl97aN2q8%lk|aq&H$DIF+Iv6eJad}ya?S7exxdfx_x&W@yA7^1R+Azra7J`a&E%Y$F5D7{#Om$RD`SA&qTs+n^C$sDC9OErJ zU}R>S>hTa9<~(HSayZCZP|>NAg~4K*{tJ`m*9xwY`OQO@*|7t+bv6ym9hXHtdZdIe z&nv0 z8mKkrHE?Tezw^k?9mC_d8co?=k0IlBVaP;OT5CPvVkTH?9&a{nNfBnuZ&0GGYqGi8 zJJds|TUlvgc6OMBN;%`GC!8p~I%GuS^_CTLn8RuwL&}JtO&eAKN2vfU2X=YTbs1PU z`~r*psPJEX{R1)h)3MUH(Bi>##9U_`iuETKYgKlb`=eP=aUoo(lB~>g{l0-N%7mlV ztgPTDT70-q8SL_Oy-JnlWMRdE!+_Qn=9`|(!5+?t9IJ|&rRC*uCFjP6Q;;^(E`wTI zhI31x@#3lS2r&z2I2%34N)JK;Gr7Ecv|xe#T8+O@Pw%YkQlodA)9AhMGIo*#@~^i46gv-C8KuHV_%sSS@v z!}MgO&MT6y(4fz>LW|nJ+Qz}GPr)%sNlsy2CUc3AINDg(Mw{>%iY9V}u(7ch6fG1S zR?=+=@vRXakcMd+&cST6!@9JvD9k%=81Na!wuZjL_Uza&hFWA9!VK+`HYPV8>m?H7 z!b%_%$O<(EE;CV&l{#!{+q8g{XAN~uav=|YQ$1WTScolr-uy|xCBkUOTu3i0EGfmp zjR`>mN0niEU`ytj@MT3BC1ZOKdvLi>v+%t87NVKduOtI{Dh%pus%xhLSzpNxT1FXXd=@L#$FT{MuE@37p z-B?|>Yp2(uZkVQ!vR>gLb%c4D&nkw9SPa~8RgKIJMrzbAqZF)~#lr?lDn&v|@TrU* zX{KadpIJFkcy?}{sVyPC4OiAaW>oMfp(t}aIs?Ir5d^0#+ger`BOD#3I(z?I>|~Pu z?=P?z+1gac0pd~VHSNMMgc>e1&Eu_I7+6t z9cCljpZdYKAGJOD3$|!wmSCtN;*x?4oEKtll;)rZA*tf5%(9HE@Hr(=)WuNL=O9rE z)3UO&c@*J^2U2l*9&2%Iw4xVEaGc9jM*%c*IKQYZC&l3#_U56;OU>lsQJtP! z%6=^7RzFO*ytE>+1~tYL2f6jkN!vD+82&|WON+De3-b!kv0O$Q#!TkIAQ=m;dAkF1 z0z-|~pM_|D#DuQdLr@S$#5>X}3>k{6_ z$Fjvo!{?MlOd7iq6cy%;Ey^h@fa}G^eSTp9Rz$Y$vCmzcRT$1H%|JN=voQ3t^09M{ za=8tt4SSr)_khw*vyBB4RmU3Es-U5(vTSBN;G`I19OJb|UZG!RF!~al{b+`Q zkzH|`dUUM6kD`THRk`3b5*;Zw7#S@$7+a}abW)^@s4OEYKc5GH=q=H|I zufzZp*=72~v8JYzIRFIHmvrhhpsb)*VLIiMmKJqt)ym+ZLp3h(BT70UCO=txJgO4XG%){R;}Y(A6L64Os7tW zI<7Vgyk(aWFhWfDl8mt}A=@elKk(6_Hz=0dOd1Rnc3!f;v)U$)d|3g_M& zf}dmj5ahw?qlX53t1`Ys)e>d{IqnD1cp=W6pSZ(!laTA%E;9TBHsxu;$kB5m|*8)Wu_m=Z`Sffj%4a zV{4Rgzfhy-YD8`3!xAkXtEB;5q;JO6P`RaPnb1}>Cui->>Edu@vP;))$=!Qg-1CxN zm-g<{w_pFi4j7nn*`Uh@Uoj*tJp=nOBXV*_UY(a;P*^moxTLgf^fhC~j!S6Wrfs|S ziRX9dcwVcTQRluUPohp_)p&yc&>FXouBe%6j5$6$E1wV6V8uu7ZuTwIxBcwJP0Xym zeCn2!me;bBcRPG?GA3g$8HXpPm8bS~KWSp&05OJTPMYiOHX6~W}d30h(PfI@5m ze8#9{McpU+{-4TeUfSc?W6XX-oxGoipK`>BGzoM*yfu(G~ z+M?K~)c&^(mtJDEX!l$qQf5||WaG{K z2%mjstXiU<69@Zn52JkQ9F-!GGO`H~O&5u(5tUlPGp+_rYux0;G}0>C%<{ne*H?x0 zyC+6Tk)HzcIyweIH#Qt(ZgV1?i8A9STAnrbj!GBF2~qmSQ?w_erB+J|536R8?jOs0vBM6pgjDiR%nZtAPIw@vy=ofRZR3Nm@BNNu8e!hyyb z>+^@yCO)>y&4B4T)=-1#tD*2AN@*7NOci+$%@rI)D$W{##U!iPTwnH?@?()JQn4Qw zGmvxn6#ze<-fD`3%8KACMq7%W!0b=MRs6{NR(?JRp*j-h(pwExkGE=R$k#S`U=^dM ziddZ%{mk}FRsp{s6JV@ua+MUF$IsBE6j~v@3_Ea@bN&Kd=eG;&QG*uOjxe>#O0cj& zgGNWb6%sEBRn2m1GT{D_F94n&!rJbFC(Me~s?bX|~v$nI{S7@ojp%h!)I zBT;MgNM;+SyD}y+ILZQpSZ`%lF4A&lmuM@OKy6hK2H<{QaeCY2NTqyVyfSYb6J!Fz z(bg2ngs47gdZL)qjLJ1dsJh(BG^6E$oTn7BRUauj6Pu?QIl%;c=2IyN28(G1c8GDY zvXrl~`;tN3)za9?3^vTzoxvEL8}DmoR=pYxz&)el%qrHTNWP=yGVTo`3+%B#6aBbC zTo|yumRn-V4h}HWlNZ~qw@6a7-j5qt#e}Yw#`@eRMhXMteq6tdj67H|xKZOXg_`k4#m@N7M7&lR{h|_DhQ9h@~J;#KH-rj>OfB)uW|s%pSdqldlJ_cExbe ziX--I?a9WK7F-6%w-;t`%M{lYu;$=gny*9mPbJO?r-rzsh;+~oSp{WA09W$upjLcA zp(H0OFI%^T*$1n*w2?RVD!$Nd4(ECoUemIOuk^QWgIm#&P@8taP`eHY@omgN(r8ep zjRtjME=bpHvYE&Jh6U;h+3J$83CZ_Pa1L#PH8N)Twlg+EOLNmv&G4*IdXQjc)fdYP z(0x#SJ=i1V%UD{gULEEg(fII{xL}oE(gGK^@=LA?-jQj82wZTqZ!UL_EyTXk?3dCS zskxA&OVP#n*~xz}gDTvN-OZNVJ?9c;F>a#Z8hZ|JM3`}AF3m(@{TreZna>Cn%cpgN9``{17rF5)W;p+VpEe76T$0dta ze9f&is};X~*@jX8HQJf*dDunNHEPqON0($iY%mULjZ}p<2Cy(^4QF%1ycAX=#j*Y9B!pTRnRDMxbFXxu39Z}x>VI5Ma_+K}F*2-5^c5s2;MTWfrN6vwyIF}-`>O>Djdl8*y1 z41_GKsu@{)0?9TEE>mg>inQ_CVhIp9tZ%ql=AwmV7=^)a1#!poie*$FW<>ER}bgJ2Swq4n# zVap~1XP9~#9z`p`-o&{zGxvRdjAr4vsd=i2uCB3yh8qh3rd`B@(sCJqd+m9acCBQYA`HWnt$y6XisaLN5bW93FheUPZ^LhA1`_@r z^EZ&~_Zhr>FdxHZMRwjsxy%p5qk(O81Nna?mURpD#Z%wnwKKgWe5EybO3L!{wUGmF z881b&FmKhs#(|e+-s-Vg!X;VkgOz5%1*&ulnG3?38f+5jH*%or_~ldfxv6_vaUQ

3NlI$_9;7n?3v{l-`>@msKCNWz+ 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 ?+a?y;sliQFN8xg8Je-$w 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

tU(|gyYna&y#E<3s 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

  • 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

    -HKnU6Wro^w?1B4W%AA81R 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⋘@__SflFITW%#pE*9>toqsG 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 |128b7Dz_hN?xPC0~l8!RBgEtF)Z!hcD{wRJs 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

  • j@O6e-rntvuu;L5e#W-r#YT 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 literal 1029887 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

    qSRc%JKBe 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