diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..67b11d7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +new +.idea +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class +TEMP/ +*.pth + +input +output +add \ No newline at end of file diff --git a/README.md b/README.md index 42bc359..a72001c 100644 --- a/README.md +++ b/README.md @@ -3,57 +3,25 @@ Patapon 2 logo

-

Patapon 2 HD

+

Patapon 2 HD AI

-[![Contributors](https://img.shields.io/github/contributors/shockturtle/Patapon2HD)](https://github.com/shockturtle/Patapon2HD/graphs/contributors) -[![Stargazers](https://img.shields.io/github/stars/shockturtle/Patapon2HD)](https://github.com/shockturtle/Patapon2HD/stargazers) -[![Issues](https://img.shields.io/github/issues/shockturtle/Patapon2HD.svg)](https://github.com/shockturtle/Patapon2HD/issues) -[![Pull Requests](https://img.shields.io/github/issues-pr/shockturtle/Patapon2HD.svg)](https://github.com/shockturtle/Patapon2HD/pulls)
--- -Side Project for HD Patapon 2 textures. - -All textures are done entirely by me unless comments in textures.ini state otherwise. - -## 🎈 Usage - -To install, enable Texture Replacement in PPSSPP dev menu (Settings->Tools->Developer Tools). - -Put both the textures folder and textures.ini files in `PPSSPP/memstick/PSP/TEXTURES/%GAME_ID%` - -If the textures folder doesnt exist, make it. - -| Region | Game ID | -| ------: | ----------- | -| EU | `UCES01177` | -| NA | `UCUS98732` | -| JP | `UCJS10089` | -| AS | `UCAS40239` | - - -## 🎉 Acknowledgements -BIG Thank you to - -- [owocek](https://github.com/owocekTV) (Motivation) - -- Xandis/Gat235 (Every single bird and javelin) - -- Iracy (Materials and other items) - -- [RinCasi](https://twitter.com/I26mc) (Various symbols and high-quality resources) - -- [efonte](https://github.com/efonte) (AI Upscaling) - - -Special Thanks to - -- [WallSoGB](https://github.com/WallSoGB) (Leader of the [Patapon3Textures](https://github.com/WallSoGB/Patapon3Textures) project) +AI upscaled Patapon 2 textures. +Contains all exists textures from [Patapon 2 HD](https://github.com/shockturtle/Patapon2HD) repository +If you want generate missing textures, it very easy. +1) Enable saving new nextures in PPSSPP dev settings +2) Copy all yours textures from `new` to `ai_upscale_workdir/input` +3) Press `ai_upscale_workdir/generate_ai_textures.bat` and select models + * `1_4x_FatalPixels_340000_G_4x_Fatality_01_265000_G_interp_05` works very good, but sometimes `1_4x_Loyaldk-SuperPony_500000_V2.0` work better +4) After upscale finish first press `copy.bat`, after `paste.bat` +And it's done, you generated new textures \ No newline at end of file diff --git a/ai_upscale_workdir/README.md b/ai_upscale_workdir/README.md new file mode 100644 index 0000000..8c7ec7f --- /dev/null +++ b/ai_upscale_workdir/README.md @@ -0,0 +1,42 @@ +# Fork of [BlueAmulet's fork](https://github.com/BlueAmulet/ESRGAN) of [ESRGAN by Xinntao](https://github.com/xinntao/ESRGAN) + +This fork ports features over from my ESRGAN-Bot repository and adds a few more. It natively allows: + +* In-memory splitting/merging functionality (fully seamless, recently revamped for the third time and no longer requires tile size) +* Seamless texture preservation (both tiled and mirrored) +* Model chaining +* Transparency preservation (3 different modes) +* 1-bit transparency support (with half transparency as well) +* Both new-arch and old-arch models +* Regular and SPSR models, of any scale or internal model settings +* On-the-fly interpolation + +**Tile size was recently removed! It is no longer needed for split/merge functionality!** + +To set your textures to seamless, use the `--seamless` flag. For regular tiled seamless mode, use `--seamless tile`. For mirrored seamless mode, use `--seamless mirror`. You can also add pixel-replication padding using `--seamless replicate` and alpha padding using `--seamless alpha_pad`. + +To chain models, simply put one model name after another with a `>` in between (you can also use `+` if using bash to avoid issues), such as `1xDeJpeg.pth>4xESRGAN.pth` **note: To use model chaining, model names must be the complete full name without the path included, and the models must be present in your `/models` folder. You can still use full model paths to upscale with a single model.** + +For on-the-fly interpolation, you use this syntax: `:<##>&:<##>`, where the model name is the path to the model and ## is the numerical percentage to interpolate by. For example, `model1:50&model2:50` would interpolate model1 and model2 by 50 each. The numbers should add up to 100. If you have trouble using `:` or `&`, either try putting the interpolation string in quotes or use `@` or `|` respectively (`"model1@50|model2@50"`). + +To use 1 bit binary alpha transparency, set the `--binary-alpha` flag to True. When using `--binary-alpha` transparency, provide the optional `--alpha-threshold` to specify the alpha transparency threshold. 1 bit binary transparency is useful when upscaling images that require that the end result has 1 bit transparency, e.g. PSX games. If you want to include half transparency, use `--ternary-alpha` instead, which allows you to set the `--alpha-boundary-offset` threshold. + +The default alpha mode is now 0 (ignore alpha). There are also now 3 other modes to choose from: + +* `--alpha-mode 1`: Fills the alpha channel with both white and black and extracts the difference from each result. +* `--alpha-mode 2`: Upscales the alpha channel by itself, as a fake 3 channel image (The IEU way) then combines with result. +* `--alpha-mode 3`: Shifts the channels so that it upscales the alpha channel along with other regular channels then combines with result. + +To process images in reverse order, use `--reverse`. If needed, you can also skip existing files by using `--skip-existing`. + +If you're upscaling images of the same size, you can do `--cache-max-split-depth` to only calculate the automatic tile size once to improve performance. + +Examples: + +* `python upscale.py 4xBox.pth --seamless tile` +* `python upscale.py 1xSSAntiAlias9x.pth>4xBox.pth` +* `python upscale.py 4xBox.pth --binary-alpha --alpha-threshold .2` +* `python upscale.py /models/4xBox.pth` +* `python upscale.py "1x_model1.pth@50|1x_model2.pth@50>2x_model3.pth"` + +If you want a GUI for ESRGAN and if you're on Windows, check out [Cupscale](https://github.com/n00mkrad/cupscale/). It implements most of this fork's features as well as other utilities around it. diff --git a/ai_upscale_workdir/generate_ai_textures.bat b/ai_upscale_workdir/generate_ai_textures.bat new file mode 100644 index 0000000..77caea7 --- /dev/null +++ b/ai_upscale_workdir/generate_ai_textures.bat @@ -0,0 +1,2 @@ +py generate_ai_textures.py +PAUSE \ No newline at end of file diff --git a/ai_upscale_workdir/generate_ai_textures.py b/ai_upscale_workdir/generate_ai_textures.py new file mode 100644 index 0000000..074e6a7 --- /dev/null +++ b/ai_upscale_workdir/generate_ai_textures.py @@ -0,0 +1,73 @@ +import os +import shutil +from pathlib import Path + +import upscale + +processAlpha = None + +inputVal=input("Need process alpha channel ? (Y,n)") +if inputVal.lower() == "n": + processAlpha = False +elif inputVal.lower() == "y" or not inputVal: + processAlpha = True +else: + print("Error input") + exit(0) + +print("Select upscale engine, or if you want use multiple, write multiple numbers like 123") + +models = os.listdir("models") + +if len(models) == 0: + print("Download models and place in it models before use") + exit(0) + +for i in range(len(models)): + print(str(i + 1) + ". " + models[i]) + +select = input("Select: ") +if not select.isdigit(): + print("Write digit") + exit(0) + +selectedModels = [] + +for i in select: + num = int(i) - 1 + if num < 0 or num >= len(models): + print("Number bigger of models size or lower 0") + exit(0) + else: + selectedModels.append(models[num]) + +print("Start: " + " -> ".join(selectedModels)) + + +def deleteFolder(path: str): + if os.path.exists(path): + shutil.rmtree(path) + + +tempFolder = "TEMP" +finalOutputFolder = "output" + +deleteFolder(tempFolder) + +inputFolder = "input" + +for i in range(len(selectedModels)): + model = selectedModels[i] + modelResultFolder = "TEMP" + os.sep + str(i + 1) + "(" + model[0:20] + ")" + + upscale.Upscale( + model=model, + input=Path(inputFolder), + output=Path(modelResultFolder), + alpha_mode=upscale.AlphaOptions.alpha_separately if processAlpha else upscale.AlphaOptions.no_alpha + ).run() + + inputFolder = modelResultFolder + +deleteFolder(finalOutputFolder) +shutil.copytree(inputFolder, finalOutputFolder) diff --git a/ai_upscale_workdir/models/README.md b/ai_upscale_workdir/models/README.md new file mode 100644 index 0000000..51b104c --- /dev/null +++ b/ai_upscale_workdir/models/README.md @@ -0,0 +1,7 @@ +Im use next models, you can find it in the internet: +* [4x_FatalPixels_340000_G](https://de-next.owncube.com/index.php/s/gPjswdm6gCegQdz) +* [4x_Loyaldk-SuperPony_500000_V2.0](https://mega.nz/file/IBhElRYJ#C_lVc8Vr2q8X6hEltJKD6I63U7oL_FDLeJgPh72AZmg) +* [1x_NoiseTonerV1_110000_G](https://drive.google.com/drive/u/0/folders/12j6BvuR7SU48ui9DHjBPB1vzPpQri9bD) +* [1x_Fatality_DeBlur_270000_G](https://de-next.owncube.com/index.php/s/aAojXwLTPZto8rP) + +Very cool works Pony model, but some time combine fatalpixel->deblur->noiseToner give also very cool results diff --git a/ai_upscale_workdir/requirements.txt b/ai_upscale_workdir/requirements.txt new file mode 100644 index 0000000..68c2411 --- /dev/null +++ b/ai_upscale_workdir/requirements.txt @@ -0,0 +1,5 @@ +opencv_python +numpy +torch +rich +typer diff --git a/ai_upscale_workdir/upscale.py b/ai_upscale_workdir/upscale.py new file mode 100644 index 0000000..8ccb9cb --- /dev/null +++ b/ai_upscale_workdir/upscale.py @@ -0,0 +1,661 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import logging +import sys +from collections import OrderedDict +from enum import Enum +from pathlib import Path +from typing import List, Optional, Union + +import cv2 +import numpy as np +import torch +import typer +from rich import print +from rich.logging import RichHandler +from rich.progress import ( + BarColumn, + Progress, + # SpinnerColumn, + TaskID, + TimeRemainingColumn, +) + +import utils.architecture as arch +import utils.dataops as ops + + +class SeamlessOptions(str, Enum): + tile = "tile" + mirror = "mirror" + replicate = "replicate" + alpha_pad = "alpha_pad" + + +class AlphaOptions(str, Enum): + no_alpha = "no_alpha" + bas = "bas" + alpha_separately = "alpha_separately" + swapping = "swapping" + + +class Upscale: + model_str: str = None + input: Path = None + output: Path = None + reverse: bool = None + skip_existing: bool = None + delete_input: bool = None + seamless: SeamlessOptions = None + cpu: bool = None + fp16: bool = None + # device_id: int = None + cache_max_split_depth: bool = None + binary_alpha: bool = None + ternary_alpha: bool = None + alpha_threshold: float = None + alpha_boundary_offset: float = None + alpha_mode: AlphaOptions = None + log: logging.Logger = None + + device: torch.device = None + in_nc: int = None + out_nc: int = None + last_model: str = None + last_in_nc: int = None + last_out_nc: int = None + last_nf: int = None + last_nb: int = None + last_scale: int = None + last_kind: str = None + model: Union[arch.nn.Module, arch.RRDBNet, arch.SPSRNet] = None + + def __init__( + self, + model: str, + input: Path, + output: Path, + reverse: bool = False, + skip_existing: bool = False, + delete_input: bool = False, + seamless: Optional[SeamlessOptions] = None, + cpu: bool = False, + fp16: bool = False, + device_id: int = 0, + cache_max_split_depth: bool = False, + binary_alpha: bool = False, + ternary_alpha: bool = False, + alpha_threshold: float = 0.5, + alpha_boundary_offset: float = 0.2, + alpha_mode: Optional[AlphaOptions] = None, + log: logging.Logger = logging.getLogger(), + ) -> None: + self.model_str = model + self.input = input.resolve() + self.output = output.resolve() + self.reverse = reverse + self.skip_existing = skip_existing + self.delete_input = delete_input + self.seamless = seamless + self.cpu = cpu + self.fp16 = fp16 + self.device = torch.device("cpu" if self.cpu else f"cuda:{device_id}") + self.cache_max_split_depth = cache_max_split_depth + self.binary_alpha = binary_alpha + self.ternary_alpha = ternary_alpha + self.alpha_threshold = alpha_threshold + self.alpha_boundary_offset = alpha_boundary_offset + self.alpha_mode = alpha_mode + self.log = log + if self.fp16: + torch.set_default_tensor_type( + torch.HalfTensor if self.cpu else torch.cuda.HalfTensor + ) + + def run(self) -> None: + model_chain = ( + self.model_str.split("+") + if "+" in self.model_str + else self.model_str.split(">") + ) + + for idx, model in enumerate(model_chain): + + interpolations = ( + model.split("|") if "|" in self.model_str else model.split("&") + ) + + if len(interpolations) > 1: + for i, interpolation in enumerate(interpolations): + interp_model, interp_amount = ( + interpolation.split("@") + if "@" in interpolation + else interpolation.split(":") + ) + interp_model = self.__check_model_path(interp_model) + interpolations[i] = f"{interp_model}@{interp_amount}" + model_chain[idx] = "&".join(interpolations) + else: + model_chain[idx] = self.__check_model_path(model) + + if not self.input.exists(): + self.log.error(f'Folder "{self.input}" does not exist.') + sys.exit(1) + elif self.input.is_file(): + self.log.error(f'Folder "{self.input}" is a file.') + sys.exit(1) + elif self.output.is_file(): + self.log.error(f'Folder "{self.output}" is a file.') + sys.exit(1) + elif not self.output.exists(): + self.output.mkdir(parents=True) + + self.in_nc = None + self.out_nc = None + + print( + 'Model{:s}: "{:s}"'.format( + "s" if len(model_chain) > 1 else "", + # ", ".join([Path(x).stem for x in model_chain]), + ", ".join([x for x in model_chain]), + ) + ) + + images: List[Path] = [] + for ext in ["png", "jpg", "jpeg", "gif", "bmp", "tiff", "tga"]: + images.extend(self.input.glob(f"**/*.{ext}")) + + # Store the maximum split depths for each model in the chain + # TODO: there might be a better way of doing this but it's good enough for now + split_depths = {} + + with Progress( + # SpinnerColumn(), + "[progress.description]{task.description}", + BarColumn(), + "[progress.percentage]{task.percentage:>3.0f}%", + TimeRemainingColumn(), + ) as progress: + task_upscaling = progress.add_task("Upscaling", total=len(images)) + for idx, img_path in enumerate(images, 1): + img_input_path_rel = img_path.relative_to(self.input) + output_dir = self.output.joinpath(img_input_path_rel).parent + img_output_path_rel = output_dir.joinpath(f"{img_path.stem}.png") + output_dir.mkdir(parents=True, exist_ok=True) + if len(model_chain) == 1: + self.log.info( + f'Processing {str(idx).zfill(len(str(len(images))))}: "{img_input_path_rel}"' + ) + if self.skip_existing and img_output_path_rel.is_file(): + self.log.warning("Already exists, skipping") + if self.delete_input: + img_path.unlink(missing_ok=True) + progress.advance(task_upscaling) + continue + # read image + img = cv2.imread(str(img_path.absolute()), cv2.IMREAD_UNCHANGED) + if len(img.shape) < 3: + img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) + + # Seamless modes + if self.seamless == SeamlessOptions.tile: + img = cv2.copyMakeBorder(img, 16, 16, 16, 16, cv2.BORDER_WRAP) + elif self.seamless == SeamlessOptions.mirror: + img = cv2.copyMakeBorder( + img, 16, 16, 16, 16, cv2.BORDER_REFLECT_101 + ) + elif self.seamless == SeamlessOptions.replicate: + img = cv2.copyMakeBorder(img, 16, 16, 16, 16, cv2.BORDER_REPLICATE) + elif self.seamless == SeamlessOptions.alpha_pad: + img = cv2.copyMakeBorder( + img, 16, 16, 16, 16, cv2.BORDER_CONSTANT, value=[0, 0, 0, 0] + ) + final_scale: int = 1 + + task_model_chain: TaskID = None + if len(model_chain) > 1: + task_model_chain = progress.add_task( + f'{str(idx).zfill(len(str(len(images))))} - "{img_input_path_rel}"', + total=len(model_chain), + ) + for i, model_path in enumerate(model_chain): + + img_height, img_width = img.shape[:2] + + # Load the model so we can access the scale + self.load_model(model_path) + + if self.cache_max_split_depth and len(split_depths.keys()) > 0: + rlt, depth = ops.auto_split_upscale( + img, + self.upscale, + self.last_scale, + max_depth=split_depths[i], + ) + else: + rlt, depth = ops.auto_split_upscale( + img, self.upscale, self.last_scale + ) + split_depths[i] = depth + + final_scale *= self.last_scale + + # This is for model chaining + img = rlt.astype("uint8") + if len(model_chain) > 1: + progress.advance(task_model_chain) + + if self.seamless: + rlt = self.crop_seamless(rlt, final_scale) + + cv2.imwrite(str(img_output_path_rel.absolute()), rlt) + + if self.delete_input: + img_path.unlink(missing_ok=True) + + progress.advance(task_upscaling) + + def __check_model_path(self, model_path: str) -> str: + if Path(model_path).is_file(): + return model_path + elif Path("./models/").joinpath(model_path).is_file(): + return str(Path("./models/").joinpath(model_path)) + else: + self.log.error(f'Model "{model_path}" does not exist.') + sys.exit(1) + + # This code is a somewhat modified version of BlueAmulet's fork of ESRGAN by Xinntao + def process(self, img: np.ndarray): + """ + Does the processing part of ESRGAN. This method only exists because the same block of code needs to be ran twice for images with transparency. + + Parameters: + img (array): The image to process + + Returns: + rlt (array): The processed image + """ + if img.shape[2] == 3: + img = img[:, :, [2, 1, 0]] + elif img.shape[2] == 4: + img = img[:, :, [2, 1, 0, 3]] + img = torch.from_numpy(np.transpose(img, (2, 0, 1))).float() + if self.fp16: + img = img.half() + img_LR = img.unsqueeze(0) + img_LR = img_LR.to(self.device) + + output = self.model(img_LR).data.squeeze(0).float().cpu().clamp_(0, 1).numpy() + if output.shape[0] == 3: + output = output[[2, 1, 0], :, :] + elif output.shape[0] == 4: + output = output[[2, 1, 0, 3], :, :] + output = np.transpose(output, (1, 2, 0)) + return output + + def load_model(self, model_path: str): + if model_path != self.last_model: + # interpolating OTF, example: 4xBox:25&4xPSNR:75 + if (":" in model_path or "@" in model_path) and ( + "&" in model_path or "|" in model_path + ): + interps = model_path.split("&")[:2] + model_1 = torch.load(interps[0].split("@")[0]) + model_2 = torch.load(interps[1].split("@")[0]) + state_dict = OrderedDict() + f = open("demofile2.txt", "a") + f.write(repr(model_2)) + f.close() + for k, v_1 in model_1.items(): + v_2 = model_2[k] + state_dict[k] = (int(interps[0].split("@")[1]) / 100) * v_1 + ( + int(interps[1].split("@")[1]) / 100 + ) * v_2 + else: + state_dict = torch.load(model_path) + + if "conv_first.weight" in state_dict: + print("Attempting to convert and load a new-format model") + old_net = {} + items = [] + for k, v in state_dict.items(): + items.append(k) + + old_net["model.0.weight"] = state_dict["conv_first.weight"] + old_net["model.0.bias"] = state_dict["conv_first.bias"] + + for k in items.copy(): + if "RDB" in k: + ori_k = k.replace("RRDB_trunk.", "model.1.sub.") + if ".weight" in k: + ori_k = ori_k.replace(".weight", ".0.weight") + elif ".bias" in k: + ori_k = ori_k.replace(".bias", ".0.bias") + old_net[ori_k] = state_dict[k] + items.remove(k) + + old_net["model.1.sub.23.weight"] = state_dict["trunk_conv.weight"] + old_net["model.1.sub.23.bias"] = state_dict["trunk_conv.bias"] + old_net["model.3.weight"] = state_dict["upconv1.weight"] + old_net["model.3.bias"] = state_dict["upconv1.bias"] + old_net["model.6.weight"] = state_dict["upconv2.weight"] + old_net["model.6.bias"] = state_dict["upconv2.bias"] + old_net["model.8.weight"] = state_dict["HRconv.weight"] + old_net["model.8.bias"] = state_dict["HRconv.bias"] + old_net["model.10.weight"] = state_dict["conv_last.weight"] + old_net["model.10.bias"] = state_dict["conv_last.bias"] + state_dict = old_net + + # extract model information + scale2 = 0 + max_part = 0 + plus = False + if "f_HR_conv1.0.weight" in state_dict: + kind = "SPSR" + scalemin = 4 + else: + kind = "ESRGAN" + scalemin = 6 + for part in list(state_dict): + parts = part.split(".") + n_parts = len(parts) + if n_parts == 5 and parts[2] == "sub": + nb = int(parts[3]) + elif n_parts == 3: + part_num = int(parts[1]) + if ( + part_num > scalemin + and parts[0] == "model" + and parts[2] == "weight" + ): + scale2 += 1 + if part_num > max_part: + max_part = part_num + self.out_nc = state_dict[part].shape[0] + if "conv1x1" in part and not plus: + plus = True + + upscale = 2 ** scale2 + self.in_nc = state_dict["model.0.weight"].shape[1] + if kind == "SPSR": + self.out_nc = state_dict["f_HR_conv1.0.weight"].shape[0] + nf = state_dict["model.0.weight"].shape[0] + + if ( + self.in_nc != self.last_in_nc + or self.out_nc != self.last_out_nc + or nf != self.last_nf + or nb != self.last_nb + or upscale != self.last_scale + or kind != self.last_kind + ): + if kind == "ESRGAN": + self.model = arch.RRDBNet( + in_nc=self.in_nc, + out_nc=self.out_nc, + nf=nf, + nb=nb, + gc=32, + upscale=upscale, + norm_type=None, + act_type="leakyrelu", + mode="CNA", + upsample_mode="upconv", + plus=plus, + ) + elif kind == "SPSR": + self.model = arch.SPSRNet( + self.in_nc, + self.out_nc, + nf, + nb, + gc=32, + upscale=upscale, + norm_type=None, + act_type="leakyrelu", + mode="CNA", + upsample_mode="upconv", + ) + self.last_in_nc = self.in_nc + self.last_out_nc = self.out_nc + self.last_nf = nf + self.last_nb = nb + self.last_scale = upscale + self.last_kind = kind + self.last_model = model_path + + self.model.load_state_dict(state_dict, strict=True) + del state_dict + self.model.eval() + for k, v in self.model.named_parameters(): + v.requires_grad = False + self.model = self.model.to(self.device) + self.last_model = model_path + + # This code is a somewhat modified version of BlueAmulet's fork of ESRGAN by Xinntao + def upscale(self, img: np.ndarray) -> np.ndarray: + """ + Upscales the image passed in with the specified model + + Parameters: + img: The image to upscale + model_path (string): The model to use + + Returns: + output: The processed image + """ + + img = img * 1.0 / np.iinfo(img.dtype).max + + if ( + img.ndim == 3 + and img.shape[2] == 4 + and self.last_in_nc == 3 + and self.last_out_nc == 3 + ): + + # Fill alpha with white and with black, remove the difference + if self.alpha_mode == AlphaOptions.bas: + img1 = np.copy(img[:, :, :3]) + img2 = np.copy(img[:, :, :3]) + for c in range(3): + img1[:, :, c] *= img[:, :, 3] + img2[:, :, c] = (img2[:, :, c] - 1) * img[:, :, 3] + 1 + + output1 = self.process(img1) + output2 = self.process(img2) + alpha = 1 - np.mean(output2 - output1, axis=2) + output = np.dstack((output1, alpha)) + output = np.clip(output, 0, 1) + # Upscale the alpha channel itself as its own image + elif self.alpha_mode == AlphaOptions.alpha_separately: + img1 = np.copy(img[:, :, :3]) + img2 = cv2.merge((img[:, :, 3], img[:, :, 3], img[:, :, 3])) + output1 = self.process(img1) + output2 = self.process(img2) + output = cv2.merge( + ( + output1[:, :, 0], + output1[:, :, 1], + output1[:, :, 2], + output2[:, :, 0], + ) + ) + # Use the alpha channel like a regular channel + elif self.alpha_mode == AlphaOptions.swapping: + img1 = cv2.merge((img[:, :, 0], img[:, :, 1], img[:, :, 2])) + img2 = cv2.merge((img[:, :, 1], img[:, :, 2], img[:, :, 3])) + output1 = self.process(img1) + output2 = self.process(img2) + output = cv2.merge( + ( + output1[:, :, 0], + output1[:, :, 1], + output1[:, :, 2], + output2[:, :, 2], + ) + ) + # Remove alpha + else: + img1 = np.copy(img[:, :, :3]) + output = self.process(img1) + output = cv2.cvtColor(output, cv2.COLOR_BGR2BGRA) + + if self.binary_alpha: + alpha = output[:, :, 3] + threshold = self.alpha_threshold + _, alpha = cv2.threshold(alpha, threshold, 1, cv2.THRESH_BINARY) + output[:, :, 3] = alpha + elif self.ternary_alpha: + alpha = output[:, :, 3] + half_transparent_lower_bound = ( + self.alpha_threshold - self.alpha_boundary_offset + ) + half_transparent_upper_bound = ( + self.alpha_threshold + self.alpha_boundary_offset + ) + alpha = np.where( + alpha < half_transparent_lower_bound, + 0, + np.where(alpha <= half_transparent_upper_bound, 0.5, 1), + ) + output[:, :, 3] = alpha + else: + if img.ndim == 2: + img = np.tile( + np.expand_dims(img, axis=2), (1, 1, min(self.last_in_nc, 3)) + ) + if img.shape[2] > self.last_in_nc: # remove extra channels + self.log.warning("Truncating image channels") + img = img[:, :, : self.last_in_nc] + # pad with solid alpha channel + elif img.shape[2] == 3 and self.last_in_nc == 4: + img = np.dstack((img, np.full(img.shape[:-1], 1.0))) + output = self.process(img) + + output = (output * 255.0).round() + + return output + + def crop_seamless(self, img: np.ndarray, scale: int) -> np.ndarray: + img_height, img_width = img.shape[:2] + y, x = 16 * scale, 16 * scale + h, w = img_height - (32 * scale), img_width - (32 * scale) + img = img[y : y + h, x : x + w] + return img + + +app = typer.Typer() + + +@app.command() +def main( + model: str = typer.Argument(...), + input: Path = typer.Option(Path("input"), "--input", "-i", help="Input folder"), + output: Path = typer.Option(Path("output"), "--output", "-o", help="Output folder"), + reverse: bool = typer.Option(False, "--reverse", "-r", help="Reverse Order"), + skip_existing: bool = typer.Option( + False, + "--skip-existing", + "-se", + help="Skip existing output files", + ), + delete_input: bool = typer.Option( + False, + "--delete-input", + "-di", + help="Delete input files after upscaling", + ), + seamless: SeamlessOptions = typer.Option( + None, + "--seamless", + "-s", + case_sensitive=False, + help="Helps seamlessly upscale an image. tile = repeating along edges. mirror = reflected along edges. replicate = extended pixels along edges. alpha_pad = extended alpha border.", + ), + cpu: bool = typer.Option(False, "--cpu", "-c", help="Use CPU instead of CUDA"), + fp16: bool = typer.Option( + False, + "--floating-point-16", + "-fp16", + help="Use FloatingPoint16/Halftensor type for images.", + ), + device_id: int = typer.Option( + 0, "--device-id", "-did", help="The numerical ID of the GPU you want to use." + ), + cache_max_split_depth: bool = typer.Option( + False, + "--cache-max-split-depth", + "-cmsd", + help="Caches the maximum recursion depth used by the split/merge function. Useful only when upscaling images of the same size.", + ), + binary_alpha: bool = typer.Option( + False, + "--binary-alpha", + "-ba", + help="Whether to use a 1 bit alpha transparency channel, Useful for PSX upscaling", + ), + ternary_alpha: bool = typer.Option( + False, + "--ternary-alpha", + "-ta", + help="Whether to use a 2 bit alpha transparency channel, Useful for PSX upscaling", + ), + alpha_threshold: float = typer.Option( + 0.5, + "--alpha-threshold", + "-at", + help="Only used when binary_alpha is supplied. Defines the alpha threshold for binary transparency", + ), + alpha_boundary_offset: float = typer.Option( + 0.2, + "--alpha-boundary-offset", + "-abo", + help="Only used when binary_alpha is supplied. Determines the offset boundary from the alpha threshold for half transparency.", + ), + alpha_mode: AlphaOptions = typer.Option( + None, + "--alpha-mode", + "-am", + help="Type of alpha processing to use. no_alpha = is no alpha processing. bas = is BA's difference method. alpha_separately = is upscaling the alpha channel separately (like IEU). swapping = is swapping an existing channel with the alpha channel.", + ), + verbose: bool = typer.Option( + False, + "--verbose", + "-v", + help="Verbose mode", + ), +): + + logging.basicConfig( + level=logging.DEBUG if verbose else logging.WARNING, + format="%(message)s", + datefmt="[%X]", + handlers=[RichHandler(markup=True)], + # handlers=[RichHandler(markup=True, rich_tracebacks=True)], + ) + + upscale = Upscale( + model=model, + input=input, + output=output, + reverse=reverse, + skip_existing=skip_existing, + delete_input=delete_input, + seamless=seamless, + cpu=cpu, + fp16=fp16, + device_id=device_id, + cache_max_split_depth=cache_max_split_depth, + binary_alpha=binary_alpha, + ternary_alpha=ternary_alpha, + alpha_threshold=alpha_threshold, + alpha_boundary_offset=alpha_boundary_offset, + alpha_mode=alpha_mode, + ) + upscale.run() + + +if __name__ == "__main__": + app() diff --git a/ai_upscale_workdir/utils/architecture.py b/ai_upscale_workdir/utils/architecture.py new file mode 100644 index 0000000..bfc23c9 --- /dev/null +++ b/ai_upscale_workdir/utils/architecture.py @@ -0,0 +1,387 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import math +import torch +import torch.nn as nn +import torch.nn.functional as F +import utils.block as B + + +class Get_gradient_nopadding(nn.Module): + def __init__(self): + super(Get_gradient_nopadding, self).__init__() + kernel_v = [[0, -1, 0], [0, 0, 0], [0, 1, 0]] + kernel_h = [[0, 0, 0], [-1, 0, 1], [0, 0, 0]] + kernel_h = torch.FloatTensor(kernel_h).unsqueeze(0).unsqueeze(0) + kernel_v = torch.FloatTensor(kernel_v).unsqueeze(0).unsqueeze(0) + self.weight_h = nn.Parameter(data=kernel_h, requires_grad=False) + + self.weight_v = nn.Parameter(data=kernel_v, requires_grad=False) + + def forward(self, x): + x_list = [] + for i in range(x.shape[1]): + x_i = x[:, i] + x_i_v = F.conv2d(x_i.unsqueeze(1), self.weight_v, padding=1) + x_i_h = F.conv2d(x_i.unsqueeze(1), self.weight_h, padding=1) + x_i = torch.sqrt(torch.pow(x_i_v, 2) + torch.pow(x_i_h, 2) + 1e-6) + x_list.append(x_i) + + x = torch.cat(x_list, dim=1) + + return x + + +#################### +# Generator +#################### + + +class RRDBNet(nn.Module): + def __init__( + self, + in_nc, + out_nc, + nf, + nb, + gc=32, + upscale=4, + norm_type=None, + act_type="leakyrelu", + mode="CNA", + upsample_mode="upconv", + convtype="Conv2D", + finalact=None, + plus=False, + ): + super(RRDBNet, self).__init__() + n_upscale = int(math.log(upscale, 2)) + if upscale == 3: + n_upscale = 1 + + fea_conv = B.conv_block(in_nc, nf, kernel_size=3, norm_type=None, act_type=None) + rb_blocks = [ + B.RRDB( + nf, + kernel_size=3, + gc=32, + stride=1, + bias=1, + pad_type="zero", + norm_type=norm_type, + act_type=act_type, + mode="CNA", + convtype=convtype, + plus=plus, + ) + for _ in range(nb) + ] + LR_conv = B.conv_block( + nf, nf, kernel_size=3, norm_type=norm_type, act_type=None, mode=mode + ) + + if upsample_mode == "upconv": + upsample_block = B.upconv_block + elif upsample_mode == "pixelshuffle": + upsample_block = B.pixelshuffle_block + else: + raise NotImplementedError( + "upsample mode [{:s}] is not found".format(upsample_mode) + ) + if upscale == 3: + upsampler = upsample_block(nf, nf, 3, act_type=act_type) + else: + upsampler = [ + upsample_block(nf, nf, act_type=act_type) for _ in range(n_upscale) + ] + HR_conv0 = B.conv_block( + nf, nf, kernel_size=3, norm_type=None, act_type=act_type + ) + HR_conv1 = B.conv_block( + nf, out_nc, kernel_size=3, norm_type=None, act_type=None + ) + + # Note: this option adds new parameters to the architecture, another option is to use "outm" in the forward + outact = B.act(finalact) if finalact else None + + self.model = B.sequential( + fea_conv, + B.ShortcutBlock(B.sequential(*rb_blocks, LR_conv)), + *upsampler, + HR_conv0, + HR_conv1, + outact + ) + + def forward(self, x, outm=None): + x = self.model(x) + + if ( + outm == "scaltanh" + ): # limit output range to [-1,1] range with tanh and rescale to [0,1] Idea from: https://github.com/goldhuang/SRGAN-PyTorch/blob/master/model.py + return (torch.tanh(x) + 1.0) / 2.0 + elif outm == "tanh": # limit output to [-1,1] range + return torch.tanh(x) + elif outm == "sigmoid": # limit output to [0,1] range + return torch.sigmoid(x) + elif outm == "clamp": + return torch.clamp(x, min=0.0, max=1.0) + else: # Default, no cap for the output + return x + + +class SPSRNet(nn.Module): + def __init__( + self, + in_nc, + out_nc, + nf, + nb, + gc=32, + upscale=4, + norm_type=None, + act_type="leakyrelu", + mode="CNA", + upsample_mode="upconv", + ): + super(SPSRNet, self).__init__() + + n_upscale = int(math.log(upscale, 2)) + if upscale == 3: + n_upscale = 1 + + fea_conv = B.conv_block(in_nc, nf, kernel_size=3, norm_type=None, act_type=None) + rb_blocks = [ + B.RRDB( + nf, + kernel_size=3, + gc=32, + stride=1, + bias=True, + pad_type="zero", + norm_type=norm_type, + act_type=act_type, + mode="CNA", + ) + for _ in range(nb) + ] + LR_conv = B.conv_block( + nf, nf, kernel_size=3, norm_type=norm_type, act_type=None, mode=mode + ) + + if upsample_mode == "upconv": + upsample_block = B.upconv_blcok + elif upsample_mode == "pixelshuffle": + upsample_block = B.pixelshuffle_block + else: + raise NotImplementedError( + "upsample mode [{:s}] is not found".format(upsample_mode) + ) + if upscale == 3: + upsampler = upsample_block(nf, nf, 3, act_type=act_type) + else: + upsampler = [ + upsample_block(nf, nf, act_type=act_type) for _ in range(n_upscale) + ] + self.HR_conv0_new = B.conv_block( + nf, nf, kernel_size=3, norm_type=None, act_type=act_type + ) + self.HR_conv1_new = B.conv_block( + nf, nf, kernel_size=3, norm_type=None, act_type=None + ) + + self.model = B.sequential( + fea_conv, + B.ShortcutBlockSPSR(B.sequential(*rb_blocks, LR_conv)), + *upsampler, + self.HR_conv0_new + ) + + self.get_g_nopadding = Get_gradient_nopadding() + + self.b_fea_conv = B.conv_block( + in_nc, nf, kernel_size=3, norm_type=None, act_type=None + ) + + self.b_concat_1 = B.conv_block( + 2 * nf, nf, kernel_size=3, norm_type=None, act_type=None + ) + self.b_block_1 = B.RRDB( + nf * 2, + kernel_size=3, + gc=32, + stride=1, + bias=True, + pad_type="zero", + norm_type=norm_type, + act_type=act_type, + mode="CNA", + ) + + self.b_concat_2 = B.conv_block( + 2 * nf, nf, kernel_size=3, norm_type=None, act_type=None + ) + self.b_block_2 = B.RRDB( + nf * 2, + kernel_size=3, + gc=32, + stride=1, + bias=True, + pad_type="zero", + norm_type=norm_type, + act_type=act_type, + mode="CNA", + ) + + self.b_concat_3 = B.conv_block( + 2 * nf, nf, kernel_size=3, norm_type=None, act_type=None + ) + self.b_block_3 = B.RRDB( + nf * 2, + kernel_size=3, + gc=32, + stride=1, + bias=True, + pad_type="zero", + norm_type=norm_type, + act_type=act_type, + mode="CNA", + ) + + self.b_concat_4 = B.conv_block( + 2 * nf, nf, kernel_size=3, norm_type=None, act_type=None + ) + self.b_block_4 = B.RRDB( + nf * 2, + kernel_size=3, + gc=32, + stride=1, + bias=True, + pad_type="zero", + norm_type=norm_type, + act_type=act_type, + mode="CNA", + ) + + self.b_LR_conv = B.conv_block( + nf, nf, kernel_size=3, norm_type=norm_type, act_type=None, mode=mode + ) + + if upsample_mode == "upconv": + upsample_block = B.upconv_blcok + elif upsample_mode == "pixelshuffle": + upsample_block = B.pixelshuffle_block + else: + raise NotImplementedError( + "upsample mode [{:s}] is not found".format(upsample_mode) + ) + if upscale == 3: + b_upsampler = upsample_block(nf, nf, 3, act_type=act_type) + else: + b_upsampler = [ + upsample_block(nf, nf, act_type=act_type) for _ in range(n_upscale) + ] + + b_HR_conv0 = B.conv_block( + nf, nf, kernel_size=3, norm_type=None, act_type=act_type + ) + b_HR_conv1 = B.conv_block(nf, nf, kernel_size=3, norm_type=None, act_type=None) + + self.b_module = B.sequential(*b_upsampler, b_HR_conv0, b_HR_conv1) + + self.conv_w = B.conv_block( + nf, out_nc, kernel_size=1, norm_type=None, act_type=None + ) + + self.f_concat = B.conv_block( + nf * 2, nf, kernel_size=3, norm_type=None, act_type=None + ) + + self.f_block = B.RRDB( + nf * 2, + kernel_size=3, + gc=32, + stride=1, + bias=True, + pad_type="zero", + norm_type=norm_type, + act_type=act_type, + mode="CNA", + ) + + self.f_HR_conv0 = B.conv_block( + nf, nf, kernel_size=3, norm_type=None, act_type=act_type + ) + self.f_HR_conv1 = B.conv_block( + nf, out_nc, kernel_size=3, norm_type=None, act_type=None + ) + + def forward(self, x): + x_grad = self.get_g_nopadding(x) + x = self.model[0](x) + + x, block_list = self.model[1](x) + + x_ori = x + for i in range(5): + x = block_list[i](x) + x_fea1 = x + + for i in range(5): + x = block_list[i + 5](x) + x_fea2 = x + + for i in range(5): + x = block_list[i + 10](x) + x_fea3 = x + + for i in range(5): + x = block_list[i + 15](x) + x_fea4 = x + + x = block_list[20:](x) + # short cut + x = x_ori + x + x = self.model[2:](x) + x = self.HR_conv1_new(x) + + x_b_fea = self.b_fea_conv(x_grad) + x_cat_1 = torch.cat([x_b_fea, x_fea1], dim=1) + + x_cat_1 = self.b_block_1(x_cat_1) + x_cat_1 = self.b_concat_1(x_cat_1) + + x_cat_2 = torch.cat([x_cat_1, x_fea2], dim=1) + + x_cat_2 = self.b_block_2(x_cat_2) + x_cat_2 = self.b_concat_2(x_cat_2) + + x_cat_3 = torch.cat([x_cat_2, x_fea3], dim=1) + + x_cat_3 = self.b_block_3(x_cat_3) + x_cat_3 = self.b_concat_3(x_cat_3) + + x_cat_4 = torch.cat([x_cat_3, x_fea4], dim=1) + + x_cat_4 = self.b_block_4(x_cat_4) + x_cat_4 = self.b_concat_4(x_cat_4) + + x_cat_4 = self.b_LR_conv(x_cat_4) + + # short cut + x_cat_4 = x_cat_4 + x_b_fea + x_branch = self.b_module(x_cat_4) + + # x_out_branch = self.conv_w(x_branch) + ######## + x_branch_d = x_branch + x_f_cat = torch.cat([x_branch_d, x], dim=1) + x_f_cat = self.f_block(x_f_cat) + x_out = self.f_concat(x_f_cat) + x_out = self.f_HR_conv0(x_out) + x_out = self.f_HR_conv1(x_out) + + ######### + # return x_out_branch, x_out, x_grad + return x_out diff --git a/ai_upscale_workdir/utils/block.py b/ai_upscale_workdir/utils/block.py new file mode 100644 index 0000000..73014cb --- /dev/null +++ b/ai_upscale_workdir/utils/block.py @@ -0,0 +1,503 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +from collections import OrderedDict +import torch +import torch.nn as nn + +#################### +# Basic blocks +#################### + + +def act(act_type, inplace=True, neg_slope=0.2, n_prelu=1): + # helper selecting activation + # neg_slope: for leakyrelu and init of prelu + # n_prelu: for p_relu num_parameters + act_type = act_type.lower() + if act_type == "relu": + layer = nn.ReLU(inplace) + elif act_type == "leakyrelu": + layer = nn.LeakyReLU(neg_slope, inplace) + elif act_type == "prelu": + layer = nn.PReLU(num_parameters=n_prelu, init=neg_slope) + else: + raise NotImplementedError( + "activation layer [{:s}] is not found".format(act_type) + ) + return layer + + +def norm(norm_type, nc): + # helper selecting normalization layer + norm_type = norm_type.lower() + if norm_type == "batch": + layer = nn.BatchNorm2d(nc, affine=True) + elif norm_type == "instance": + layer = nn.InstanceNorm2d(nc, affine=False) + else: + raise NotImplementedError( + "normalization layer [{:s}] is not found".format(norm_type) + ) + return layer + + +def pad(pad_type, padding): + # helper selecting padding layer + # if padding is 'zero', do by conv layers + pad_type = pad_type.lower() + if padding == 0: + return None + if pad_type == "reflect": + layer = nn.ReflectionPad2d(padding) + elif pad_type == "replicate": + layer = nn.ReplicationPad2d(padding) + else: + raise NotImplementedError( + "padding layer [{:s}] is not implemented".format(pad_type) + ) + return layer + + +def get_valid_padding(kernel_size, dilation): + kernel_size = kernel_size + (kernel_size - 1) * (dilation - 1) + padding = (kernel_size - 1) // 2 + return padding + + +class ConcatBlock(nn.Module): + # Concat the output of a submodule to its input + def __init__(self, submodule): + super(ConcatBlock, self).__init__() + self.sub = submodule + + def forward(self, x): + output = torch.cat((x, self.sub(x)), dim=1) + return output + + def __repr__(self): + tmpstr = "Identity .. \n|" + modstr = self.sub.__repr__().replace("\n", "\n|") + tmpstr = tmpstr + modstr + return tmpstr + + +class ShortcutBlock(nn.Module): + # Elementwise sum the output of a submodule to its input + def __init__(self, submodule): + super(ShortcutBlock, self).__init__() + self.sub = submodule + + def forward(self, x): + output = x + self.sub(x) + return output + + def __repr__(self): + tmpstr = "Identity + \n|" + modstr = self.sub.__repr__().replace("\n", "\n|") + tmpstr = tmpstr + modstr + return tmpstr + + +class ShortcutBlockSPSR(nn.Module): + # Elementwise sum the output of a submodule to its input + def __init__(self, submodule): + super(ShortcutBlockSPSR, self).__init__() + self.sub = submodule + + def forward(self, x): + return x, self.sub + + def __repr__(self): + tmpstr = "Identity + \n|" + modstr = self.sub.__repr__().replace("\n", "\n|") + tmpstr = tmpstr + modstr + return tmpstr + + +def sequential(*args): + # Flatten Sequential. It unwraps nn.Sequential. + if len(args) == 1: + if isinstance(args[0], OrderedDict): + raise NotImplementedError("sequential does not support OrderedDict input.") + return args[0] # No sequential is needed. + modules = [] + for module in args: + if isinstance(module, nn.Sequential): + for submodule in module.children(): + modules.append(submodule) + elif isinstance(module, nn.Module): + modules.append(module) + return nn.Sequential(*modules) + + +def conv_block( + in_nc, + out_nc, + kernel_size, + stride=1, + dilation=1, + groups=1, + bias=True, + pad_type="zero", + norm_type=None, + act_type="relu", + mode="CNA", +): + """ + Conv layer with padding, normalization, activation + mode: CNA --> Conv -> Norm -> Act + NAC --> Norm -> Act --> Conv (Identity Mappings in Deep Residual Networks, ECCV16) + """ + assert mode in ["CNA", "NAC", "CNAC"], "Wrong conv mode [{:s}]".format(mode) + padding = get_valid_padding(kernel_size, dilation) + p = pad(pad_type, padding) if pad_type and pad_type != "zero" else None + padding = padding if pad_type == "zero" else 0 + + c = nn.Conv2d( + in_nc, + out_nc, + kernel_size=kernel_size, + stride=stride, + padding=padding, + dilation=dilation, + bias=bias, + groups=groups, + ) + a = act(act_type) if act_type else None + if "CNA" in mode: + n = norm(norm_type, out_nc) if norm_type else None + return sequential(p, c, n, a) + elif mode == "NAC": + if norm_type is None and act_type is not None: + a = act(act_type, inplace=False) + # Important! + # input----ReLU(inplace)----Conv--+----output + # |________________________| + # inplace ReLU will modify the input, therefore wrong output + n = norm(norm_type, in_nc) if norm_type else None + return sequential(n, a, p, c) + + +#################### +# Useful blocks +#################### + + +class ResNetBlock(nn.Module): + """ + ResNet Block, 3-3 style + with extra residual scaling used in EDSR + (Enhanced Deep Residual Networks for Single Image Super-Resolution, CVPRW 17) + """ + + def __init__( + self, + in_nc, + mid_nc, + out_nc, + kernel_size=3, + stride=1, + dilation=1, + groups=1, + bias=True, + pad_type="zero", + norm_type=None, + act_type="relu", + mode="CNA", + res_scale=1, + ): + super(ResNetBlock, self).__init__() + conv0 = conv_block( + in_nc, + mid_nc, + kernel_size, + stride, + dilation, + groups, + bias, + pad_type, + norm_type, + act_type, + mode, + ) + if mode == "CNA": + act_type = None + if mode == "CNAC": # Residual path: |-CNAC-| + act_type = None + norm_type = None + conv1 = conv_block( + mid_nc, + out_nc, + kernel_size, + stride, + dilation, + groups, + bias, + pad_type, + norm_type, + act_type, + mode, + ) + # if in_nc != out_nc: + # self.project = conv_block(in_nc, out_nc, 1, stride, dilation, 1, bias, pad_type, \ + # None, None) + # print('Need a projecter in ResNetBlock.') + # else: + # self.project = lambda x:x + self.res = sequential(conv0, conv1) + self.res_scale = res_scale + + def forward(self, x): + res = self.res(x).mul(self.res_scale) + return x + res + + +class RRDB(nn.Module): + """ + Residual in Residual Dense Block + (ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks) + """ + + def __init__( + self, + nf, + kernel_size=3, + gc=32, + stride=1, + bias=1, + pad_type="zero", + norm_type=None, + act_type="leakyrelu", + mode="CNA", + convtype="Conv2D", + spectral_norm=False, + plus=False, + ): + super(RRDB, self).__init__() + self.RDB1 = ResidualDenseBlock_5C( + nf, + kernel_size, + gc, + stride, + bias, + pad_type, + norm_type, + act_type, + mode, + plus=plus, + ) + self.RDB2 = ResidualDenseBlock_5C( + nf, + kernel_size, + gc, + stride, + bias, + pad_type, + norm_type, + act_type, + mode, + plus=plus, + ) + self.RDB3 = ResidualDenseBlock_5C( + nf, + kernel_size, + gc, + stride, + bias, + pad_type, + norm_type, + act_type, + mode, + plus=plus, + ) + + def forward(self, x): + out = self.RDB1(x) + out = self.RDB2(out) + out = self.RDB3(out) + return out * 0.2 + x + + +class ResidualDenseBlock_5C(nn.Module): + """ + Residual Dense Block + style: 5 convs + The core module of paper: (Residual Dense Network for Image Super-Resolution, CVPR 18) + Modified options that can be used: + - "Partial Convolution based Padding" arXiv:1811.11718 + - "Spectral normalization" arXiv:1802.05957 + - "ICASSP 2020 - ESRGAN+ : Further Improving ESRGAN" N. C. + {Rakotonirina} and A. {Rasoanaivo} + + Args: + nf (int): Channel number of intermediate features (num_feat). + gc (int): Channels for each growth (num_grow_ch: growth channel, + i.e. intermediate channels). + convtype (str): the type of convolution to use. Default: 'Conv2D' + gaussian_noise (bool): enable the ESRGAN+ gaussian noise (no new + trainable parameters) + plus (bool): enable the additional residual paths from ESRGAN+ + (adds trainable parameters) + """ + + def __init__( + self, + nf=64, + kernel_size=3, + gc=32, + stride=1, + bias=1, + pad_type="zero", + norm_type=None, + act_type="leakyrelu", + mode="CNA", + plus=False, + ): + super(ResidualDenseBlock_5C, self).__init__() + + ## + + self.conv1x1 = conv1x1(nf, gc) if plus else None + ## + + + self.conv1 = conv_block( + nf, + gc, + kernel_size, + stride, + bias=bias, + pad_type=pad_type, + norm_type=norm_type, + act_type=act_type, + mode=mode, + ) + self.conv2 = conv_block( + nf + gc, + gc, + kernel_size, + stride, + bias=bias, + pad_type=pad_type, + norm_type=norm_type, + act_type=act_type, + mode=mode, + ) + self.conv3 = conv_block( + nf + 2 * gc, + gc, + kernel_size, + stride, + bias=bias, + pad_type=pad_type, + norm_type=norm_type, + act_type=act_type, + mode=mode, + ) + self.conv4 = conv_block( + nf + 3 * gc, + gc, + kernel_size, + stride, + bias=bias, + pad_type=pad_type, + norm_type=norm_type, + act_type=act_type, + mode=mode, + ) + if mode == "CNA": + last_act = None + else: + last_act = act_type + self.conv5 = conv_block( + nf + 4 * gc, + nf, + 3, + stride, + bias=bias, + pad_type=pad_type, + norm_type=norm_type, + act_type=last_act, + mode=mode, + ) + + def forward(self, x): + x1 = self.conv1(x) + x2 = self.conv2(torch.cat((x, x1), 1)) + if self.conv1x1: + x2 = x2 + self.conv1x1(x) # + + x3 = self.conv3(torch.cat((x, x1, x2), 1)) + x4 = self.conv4(torch.cat((x, x1, x2, x3), 1)) + if self.conv1x1: + x4 = x4 + x2 # + + x5 = self.conv5(torch.cat((x, x1, x2, x3, x4), 1)) + return x5 * 0.2 + x + + +def conv1x1(in_planes, out_planes, stride=1): + return nn.Conv2d(in_planes, out_planes, kernel_size=1, stride=stride, bias=False) + + +#################### +# Upsampler +#################### + + +def pixelshuffle_block( + in_nc, + out_nc, + upscale_factor=2, + kernel_size=3, + stride=1, + bias=True, + pad_type="zero", + norm_type=None, + act_type="relu", +): + """ + Pixel shuffle layer + (Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional + Neural Network, CVPR17) + """ + conv = conv_block( + in_nc, + out_nc * (upscale_factor ** 2), + kernel_size, + stride, + bias=bias, + pad_type=pad_type, + norm_type=None, + act_type=None, + ) + pixel_shuffle = nn.PixelShuffle(upscale_factor) + + n = norm(norm_type, out_nc) if norm_type else None + a = act(act_type) if act_type else None + return sequential(conv, pixel_shuffle, n, a) + + +def upconv_block( + in_nc, + out_nc, + upscale_factor=2, + kernel_size=3, + stride=1, + bias=True, + pad_type="zero", + norm_type=None, + act_type="relu", + mode="nearest", +): + # Up conv + # described in https://distill.pub/2016/deconv-checkerboard/ + upsample = nn.Upsample(scale_factor=upscale_factor, mode=mode) + conv = conv_block( + in_nc, + out_nc, + kernel_size, + stride, + bias=bias, + pad_type=pad_type, + norm_type=norm_type, + act_type=act_type, + ) + return sequential(upsample, conv) diff --git a/ai_upscale_workdir/utils/dataops.py b/ai_upscale_workdir/utils/dataops.py new file mode 100644 index 0000000..37dd1df --- /dev/null +++ b/ai_upscale_workdir/utils/dataops.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import numpy as np +import torch +import gc + + +def bgr_to_rgb(image: torch.Tensor) -> torch.Tensor: + # flip image channels + # https://github.com/pytorch/pytorch/issues/229 + out: torch.Tensor = image.flip(-3) + # out: torch.Tensor = image[[2, 1, 0], :, :] #RGB to BGR #may be faster + return out + + +def rgb_to_bgr(image: torch.Tensor) -> torch.Tensor: + # same operation as bgr_to_rgb(), flip image channels + return bgr_to_rgb(image) + + +def bgra_to_rgba(image: torch.Tensor) -> torch.Tensor: + out: torch.Tensor = image[[2, 1, 0, 3], :, :] + return out + + +def rgba_to_bgra(image: torch.Tensor) -> torch.Tensor: + # same operation as bgra_to_rgba(), flip image channels + return bgra_to_rgba(image) + + +def auto_split_upscale( + lr_img: np.ndarray, + upscale_function, + scale: int = 4, + overlap: int = 32, + max_depth: int = None, + current_depth: int = 1, +): + + # Attempt to upscale if unknown depth or if reached known max depth + if max_depth is None or max_depth == current_depth: + try: + result = upscale_function(lr_img) + return result, current_depth + except RuntimeError as e: + # Check to see if its actually the CUDA out of memory error + if "allocate" in str(e): + # Collect garbage (clear VRAM) + torch.cuda.empty_cache() + gc.collect() + # Re-raise the exception if not an OOM error + else: + raise RuntimeError(e) + + h, w, c = lr_img.shape + + # Split image into 4ths + top_left = lr_img[: h // 2 + overlap, : w // 2 + overlap, :] + top_right = lr_img[: h // 2 + overlap, w // 2 - overlap :, :] + bottom_left = lr_img[h // 2 - overlap :, : w // 2 + overlap, :] + bottom_right = lr_img[h // 2 - overlap :, w // 2 - overlap :, :] + + # Recursively upscale the quadrants + # After we go through the top left quadrant, we know the maximum depth and no longer need to test for out-of-memory + top_left_rlt, depth = auto_split_upscale( + top_left, + upscale_function, + scale=scale, + overlap=overlap, + current_depth=current_depth + 1, + ) + top_right_rlt, _ = auto_split_upscale( + top_right, + upscale_function, + scale=scale, + overlap=overlap, + max_depth=depth, + current_depth=current_depth + 1, + ) + bottom_left_rlt, _ = auto_split_upscale( + bottom_left, + upscale_function, + scale=scale, + overlap=overlap, + max_depth=depth, + current_depth=current_depth + 1, + ) + bottom_right_rlt, _ = auto_split_upscale( + bottom_right, + upscale_function, + scale=scale, + overlap=overlap, + max_depth=depth, + current_depth=current_depth + 1, + ) + + # Define output shape + out_h = h * scale + out_w = w * scale + + # Create blank output image + output_img = np.zeros((out_h, out_w, c), np.uint8) + + # Fill output image with tiles, cropping out the overlaps + output_img[: out_h // 2, : out_w // 2, :] = top_left_rlt[ + : out_h // 2, : out_w // 2, : + ] + output_img[: out_h // 2, -out_w // 2 :, :] = top_right_rlt[ + : out_h // 2, -out_w // 2 :, : + ] + output_img[-out_h // 2 :, : out_w // 2, :] = bottom_left_rlt[ + -out_h // 2 :, : out_w // 2, : + ] + output_img[-out_h // 2 :, -out_w // 2 :, :] = bottom_right_rlt[ + -out_h // 2 :, -out_w // 2 :, : + ] + + return output_img, depth diff --git a/ai_upscale_workdir/utils/net_interp.py b/ai_upscale_workdir/utils/net_interp.py new file mode 100644 index 0000000..b746d0a --- /dev/null +++ b/ai_upscale_workdir/utils/net_interp.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import sys +import torch +from collections import OrderedDict + +alpha = float(sys.argv[1]) + +net_PSNR_path = "./models/RRDB_PSNR_x4_old_arch.pth" +net_ESRGAN_path = "./models/RRDB_ESRGAN_x4_old_arch.pth" +net_interp_path = "./models/interp_{:02d}.pth".format(int(alpha * 10)) + +net_PSNR = torch.load(net_PSNR_path) +net_ESRGAN = torch.load(net_ESRGAN_path) +net_interp = OrderedDict() + +print("Interpolating with alpha = ", alpha) + +for k, v_PSNR in net_PSNR.items(): + v_ESRGAN = net_ESRGAN[k] + net_interp[k] = (1 - alpha) * v_PSNR + alpha * v_ESRGAN + +torch.save(net_interp, net_interp_path) diff --git a/copy.bat b/copy.bat new file mode 100644 index 0000000..cb6cdf9 --- /dev/null +++ b/copy.bat @@ -0,0 +1,5 @@ +rmdir /s /q add +md add + +robocopy ai_upscale_workdir/output add /E +PAUSE \ No newline at end of file diff --git a/install_dependency.bat b/install_dependency.bat new file mode 100644 index 0000000..08f5a7e --- /dev/null +++ b/install_dependency.bat @@ -0,0 +1,2 @@ +pip install -r scripts/requirements.txt +PAUSE \ No newline at end of file diff --git a/paste.bat b/paste.bat new file mode 100644 index 0000000..3cac82f --- /dev/null +++ b/paste.bat @@ -0,0 +1,2 @@ +py pasteNew.py +PAUSE \ No newline at end of file diff --git a/pasteNew.py b/pasteNew.py new file mode 100644 index 0000000..65288ab --- /dev/null +++ b/pasteNew.py @@ -0,0 +1,37 @@ +import os +import glob +import shutil + +files = glob.glob('add/*.png') + +toAddLines = [ + file.removesuffix(".png") + " = textures/ai/" + file for file in + [os.path.basename(x) for x in files] +] + +if len(toAddLines) == 0: + print("No new files") + exit(0) + +for file in files: + shutil.move(file, "textures/ai/"+os.path.basename(file)) + + +TEX_INI = "textures.ini" + +fileLines = set() + +with open(TEX_INI) as texIniFile: + for line in texIniFile: + fileLines.add(line.removesuffix("\n")) + + +finalLines = set(toAddLines) - fileLines +if len(finalLines) == 0: + print("No new lines") + exit(0) + +with open(TEX_INI, "a") as texIniFile: + texIniFile.write("\n" + "\n".join(finalLines)) + +print("Added "+str(len(finalLines))+" lines") diff --git a/textures.ini b/textures.ini index e991ab5..58273f3 100644 --- a/textures.ini +++ b/textures.ini @@ -32,9 +32,14 @@ reduceHash = True 00000000cd9d690b35f6db4b = textures/ui/controls.png # uk 000000008c87cfc8451c4217 = textures/ui/controls.png +# rus +000000008c87cfc8b1b5898f = textures/ui/controls.png # jp # nothing here yet # all +# HASH_TO_UPDATE_000000008109e2a8f5401fc2 = textures/ui/classes.png +00000000fe2af173ac228690 = textures/ui/fever.png + # 000000008109e2a832d1b3fc = textures/ui/classes.png 00000000cf992a558bb85222 = textures/ui/L_and_R.png 000000002313f66768274c16 = textures/ui/bubble.png @@ -43,8 +48,13 @@ reduceHash = True 00000000cc46545b7c508ba3 = textures/ui/loadingpon.png 000000008a4bd58439978937 = textures/ui/waitingpon.png 00000000a639241b861a9826 = textures/ui/sharepon.png + +# HASH_TO_UPDATE_00000000a639241b1b1ca9bc = textures/ui/sharepon.png 000000005d8ffc3082e9e25d = textures/ui/immunities.png 00000000ce30d0d7f291e1d5 = textures/ui/drums.png +0000000050efd7a64833058d = textures/ui/snow.png +00000000bbe166ba85f12c74 = textures/ui/snowflake.png +0000000041926bdb97398804 = textures/ui/ui1.png # Worldmap 00000000d94961075040bc83 = textures/map/mission_bubble.png 000000001a4987046ad58204 = textures/map/worldmap.png @@ -53,6 +63,7 @@ reduceHash = True 00000000004dcaa6ceae5e18 = textures/map/mapicon3.png 00000000e89f94ddb891e748 = textures/map/mapicon4.png + # --Title Screen-- # us 000000001297396087eefda2 = textures/titlescreen/sony.png @@ -323,7 +334,6 @@ reduceHash = True # 000000005c59840f5908a93a = textures/eq/helm/ancient_helm.png # 000000009904d3b62a76bb4a = textures/eq/helm/giant_helm.png 0000000025ef11193f7f2d35 = textures/eq/helm/divine_helm.png -000000002825aacdd6824359 = textures/eq/helm/bunny_helm.png 00000000001640d5ab6b8633 = textures/eq/helm/gongs_helm.png # 0000000096df35a9d10a6f31 = textures/eq/helm/fire_helm.png # 00000000cd529f022cdb56bb = textures/eq/helm/thunder_helm.png @@ -353,13 +363,13 @@ reduceHash = True # mega2 # mega3 00000000437f5e9bfab12914 = textures/eq/helm/dark_helmet.png +00000000cd529f022cdb56bb = textures/eq/helm/crown.png # Rarepons # Rabbit 000000001a833827f5ee93f6 = textures/eq/rarepon/pyopyo.png 00000000fa5ef7e6ba9a9e66 = textures/eq/rarepon/pyokora.png 00000000a5924607f47d66ed = textures/eq/rarepon/pyokoran.png -0000000085b6ce9cc84967a8 = textures/eq/rarepon/pyopyo_deka.png 00000000692910113eb73343 = textures/eq/rarepon/pyokora_deka.png 000000007624e9408755b267 = textures/eq/rarepon/pyokoran_deka.png # Frog @@ -377,7 +387,6 @@ reduceHash = True 000000007f591648a1787756 = textures/eq/rarepon/moforu_deka.png 000000000aa05ec1494e3c67 = textures/eq/rarepon/moforumu_deka.png # Porcupine -000000004a56142fb3abfe7e = textures/eq/rarepon/chiku.png 00000000a8ba1fcb99719a2e = textures/eq/rarepon/chikkuri.png 000000006f68046e32475d19 = textures/eq/rarepon/chikurinchi.png 00000000f8874416810f7cb1 = textures/eq/rarepon/chiku_deka.png @@ -398,21 +407,18 @@ reduceHash = True 00000000c881fe59817153ee = textures/eq/rarepon/baasara_deka.png 00000000289c7ae5c12adbfc = textures/eq/rarepon/babassa_deka.png # Pig -00000000c45e425d821f1777 = textures/eq/rarepon/buhyokko.png 000000001f4cdc210c57e374 = textures/eq/rarepon/buhyonku.png 000000005fcae424b3a41089 = textures/eq/rarepon/puuhyonku.png 000000001675e7ea36951277 = textures/eq/rarepon/buhyokko_deka.png 00000000ce0dca387d625c97 = textures/eq/rarepon/buhyonku_deka.png 00000000d5882d2664a6777f = textures/eq/rarepon/puuhyonku_deka.png # Cat -000000005e0dde57677497a6 = textures/eq/rarepon/fumya.png 000000004bba070a05730d87 = textures/eq/rarepon/fumyaaru.png 0000000024c286cc013a148d = textures/eq/rarepon/funmyaga.png 00000000588ff34b28cab18c = textures/eq/rarepon/fumya_deka.png 00000000bc0bb12c943a622b = textures/eq/rarepon/fumyaaru_deka.png 00000000fe1a72467a123dbc = textures/eq/rarepon/funmyaga_deka.png # Dog -000000006455f5d508b6b57e = textures/eq/rarepon/wanda.png 000000006a2b93cf3025b879 = textures/eq/rarepon/wandaba.png 00000000828334727a56ae1f = textures/eq/rarepon/wandabata.png 000000001e7fa6e63b8ba6d3 = textures/eq/rarepon/wanda_deka.png @@ -426,14 +432,12 @@ reduceHash = True 000000000df47f37b24630a2 = textures/eq/rarepon/kisuk_deka.png 0000000056a60bd631ce9cf8 = textures/eq/rarepon/moriussoo_deka.png # Fish -00000000dfb038e980488dde = textures/eq/rarepon/chigyobi.png 0000000098d03a79c8edb0fd = textures/eq/rarepon/gyopicchi.png 000000008ff487c51afaf70b = textures/eq/rarepon/gyogyoppa.png 00000000b857e7937716f818 = textures/eq/rarepon/chigyobi_deka.png 000000007b7defa9d944ac00 = textures/eq/rarepon/gyopicchi_deka.png 00000000537835b3035aca42 = textures/eq/rarepon/gyogyoppa_deka.png # Monkey -000000004d58df85d97d266f = textures/eq/rarepon/uhoho.png 000000002f4a103a2b2cdf9f = textures/eq/rarepon/uuhoho.png 000000002dd6a749c5286e96 = textures/eq/rarepon/uhokkya.png 000000004d974e4875e55cf7 = textures/eq/rarepon/uhoho_deka.png @@ -454,7 +458,6 @@ reduceHash = True 000000000643afe2c670a3c2 = textures/eq/rarepon/suppen_deka.png 00000000776add83e3391b4b = textures/eq/rarepon/supengu_deka.png # Deer -000000004e389abd5652eb56 = textures/eq/rarepon/kanokko.png 00000000d10e151a39b58e7c = textures/eq/rarepon/kanokyon.png 000000003c71007d3bdc95e2 = textures/eq/rarepon/kanodia.png 00000000ca1566ce0956d171 = textures/eq/rarepon/kanokko_deka.png @@ -510,6 +513,8 @@ reduceHash = True 00000000ca8f75c7a50f44b7 = textures/eq/shield/ancient_shield.png 0000000077655588d562b475 = textures/eq/shield/thunder_shield.png 000000004bbe0cb73b8387da = textures/eq/shield/demon_shield.png +000000003fc2006880267cdf = textures/eq/shield/frozen_shield.png +0000000066ddb2aa9840a1cd = textures/eq/shield/magic_shield.png # Bows 00000000dec575bea488b8d3 = textures/eq/bow/wood_bow.png @@ -519,6 +524,8 @@ reduceHash = True 000000001fb682f70dc10043 = textures/eq/bow/arrow.png 00000000ff85f9407a526760 = textures/eq/bow/glowing_arrow.png 0000000058842133cf5efc86 = textures/eq/bow/broken_arrow.png +00000000891f62e9586a93da = textures/eq/bow/electric_bow.png +00000000d13d3f6a15b5b77f = textures/eq/bow/fire_bow.png # Halberds 000000006818e244b882a209 = textures/eq/halberd/wood_halberd.png @@ -714,6 +721,7 @@ reduceHash = True # --Bosses-- 00000000acc729e9b16377e5 = textures/chara/dodonga.png 00000000d0a7960c2cbf694a = textures/chara/majidonga.png +00000000bfc3f7d91a98b05f = textures/chara/mamont.png 00000000141d76b5a696e2d8 = textures/chara/kacchindonga.png # --Trophies-- @@ -790,5 +798,543 @@ reduceHash = True # 0000000030716af40b2fdd71 = textures/gimmick/session_pata.png 0000000069df000e303ed911 = textures/ui/session_drums.png 0000000029f867da900123c4 = textures/ui/session_mystery.png + +000000001ad6e73ede42a951 = textures/ui/miracle/miracle_letters.png +00000000c37e6813debe3812 = textures/ui/miracle/pon_cloud.png +0000000056be494d6cbb91cd = textures/ui/miracle/pata_cloud.png +00000000b252e863b60e45eb = textures/ui/miracle/chaka_cloud.png +# HASH_TO_UPDATE_000000007cb5cee32e42218a = textures/ui/session_marker.png 000000007cb5cee3c5990572 = textures/ui/session_marker.png # 00000000ae8095ec2df8a5ae = textures/ui/session_hit.png + +00000000c9a7b45ed3d33f7f = textures/particles/particles1.png + + +0000000000000000776e3949 = textures/ai/0000000000000000776e3949.png +00000000000008090795005b = textures/ai/00000000000008090795005b.png +00000000000008090c15e274 = textures/ai/00000000000008090c15e274.png +00000000000008090f9deb59 = textures/ai/00000000000008090f9deb59.png +0000000000000809119ce181 = textures/ai/0000000000000809119ce181.png +000000000000080917ed9658 = textures/ai/000000000000080917ed9658.png +000000000000080919e7a8da = textures/ai/000000000000080919e7a8da.png +00000000000008091d859762 = textures/ai/00000000000008091d859762.png +000000000000080923c17032 = textures/ai/000000000000080923c17032.png +00000000000008092e572567 = textures/ai/00000000000008092e572567.png +000000000000080933dcd065 = textures/ai/000000000000080933dcd065.png +000000000000080934b6c121 = textures/ai/000000000000080934b6c121.png +000000000000080942e05b0f = textures/ai/000000000000080942e05b0f.png +000000000000080948c74578 = textures/ai/000000000000080948c74578.png +000000000000080949e595ee = textures/ai/000000000000080949e595ee.png +00000000000008095bbeb89e = textures/ai/00000000000008095bbeb89e.png +00000000000008095d643908 = textures/ai/00000000000008095d643908.png +00000000000008097256f433 = textures/ai/00000000000008097256f433.png +000000000000080974864676 = textures/ai/000000000000080974864676.png +000000000000080978efaca3 = textures/ai/000000000000080978efaca3.png +00000000000008097a3231f1 = textures/ai/00000000000008097a3231f1.png +00000000000008097a62ebde = textures/ai/00000000000008097a62ebde.png +00000000000008097aa31979 = textures/ai/00000000000008097aa31979.png +00000000000008098bd6cc9a = textures/ai/00000000000008098bd6cc9a.png +000000000000080994d96e52 = textures/ai/000000000000080994d96e52.png +00000000000008099516d0ba = textures/ai/00000000000008099516d0ba.png +00000000000008099f465535 = textures/ai/00000000000008099f465535.png +0000000000000809a6286a75 = textures/ai/0000000000000809a6286a75.png +0000000000000809a7c492a0 = textures/ai/0000000000000809a7c492a0.png +0000000000000809a7dd9c04 = textures/ai/0000000000000809a7dd9c04.png +0000000000000809a95ecfb5 = textures/ai/0000000000000809a95ecfb5.png +0000000000000809a9793232 = textures/ai/0000000000000809a9793232.png +0000000000000809ad699add = textures/ai/0000000000000809ad699add.png +0000000000000809ada8c5d3 = textures/ai/0000000000000809ada8c5d3.png +0000000000000809b07a45cc = textures/ai/0000000000000809b07a45cc.png +0000000000000809b876e22d = textures/ai/0000000000000809b876e22d.png +0000000000000809c0b4f61f = textures/ai/0000000000000809c0b4f61f.png +0000000000000809c241b3cc = textures/ai/0000000000000809c241b3cc.png +0000000000000809ca4fb418 = textures/ai/0000000000000809ca4fb418.png +0000000000000809dea9670e = textures/ai/0000000000000809dea9670e.png +0000000000000809e453544e = textures/ai/0000000000000809e453544e.png +0000000000000809e4de2c49 = textures/ai/0000000000000809e4de2c49.png +0000000000000809ede70aa8 = textures/ai/0000000000000809ede70aa8.png +0000000000000809f02bfec1 = textures/ai/0000000000000809f02bfec1.png +0000000000000809f9f51d7e = textures/ai/0000000000000809f9f51d7e.png +0000000000000809fcd1173e = textures/ai/0000000000000809fcd1173e.png +0000000000000809fe4d21c7 = textures/ai/0000000000000809fe4d21c7.png +000000000069d7d86b852041 = textures/ai/000000000069d7d86b852041.png +00000000009051dd56114a3c = textures/ai/00000000009051dd56114a3c.png +000000000147c6d240a4dcb0 = textures/ai/000000000147c6d240a4dcb0.png +00000000017ae89ab07ce243 = textures/ai/00000000017ae89ab07ce243.png +00000000032130dee0af4289 = textures/ai/00000000032130dee0af4289.png +0000000003745e5b416369a7 = textures/ai/0000000003745e5b416369a7.png +0000000003fffd934bbc7897 = textures/ai/0000000003fffd934bbc7897.png +00000000047e6b803215371c = textures/ai/00000000047e6b803215371c.png +0000000004eb50741007643f = textures/ai/0000000004eb50741007643f.png +0000000005553b84909a4c63 = textures/ai/0000000005553b84909a4c63.png +00000000066c8021004acda5 = textures/ai/00000000066c8021004acda5.png +0000000006b4973e8d00abb9 = textures/ai/0000000006b4973e8d00abb9.png +0000000006c8d57f588652ab = textures/ai/0000000006c8d57f588652ab.png +00000000085872784f81efe2 = textures/ai/00000000085872784f81efe2.png +000000000897fbb42d02eff1 = textures/ai/000000000897fbb42d02eff1.png +00000000093d261f6d52eac2 = textures/ai/00000000093d261f6d52eac2.png +00000000098b1cca0ddf97bd = textures/ai/00000000098b1cca0ddf97bd.png +000000000b09dcf0e19c3ca5 = textures/ai/000000000b09dcf0e19c3ca5.png +000000000c038192e9147796 = textures/ai/000000000c038192e9147796.png +000000000e27e8b47a9bc786 = textures/ai/000000000e27e8b47a9bc786.png +000000000e460b2ba3366177 = textures/ai/000000000e460b2ba3366177.png +000000000eff5d3b2e691111 = textures/ai/000000000eff5d3b2e691111.png +000000000fa6f26ceca95ddf = textures/ai/000000000fa6f26ceca95ddf.png +000000000ff7241486bda719 = textures/ai/000000000ff7241486bda719.png +000000001137279ee2e7fd5e = textures/ai/000000001137279ee2e7fd5e.png +000000001251c435ea17b479 = textures/ai/000000001251c435ea17b479.png +0000000012a50eb7db22d091 = textures/ai/0000000012a50eb7db22d091.png +0000000012b42217dcec8699 = textures/ai/0000000012b42217dcec8699.png +00000000137fb05cb1117a5a = textures/ai/00000000137fb05cb1117a5a.png +00000000143115ec76dd762f = textures/ai/00000000143115ec76dd762f.png +00000000158dfd91c05fbc32 = textures/ai/00000000158dfd91c05fbc32.png +0000000015b63cf74dc8ab6f = textures/ai/0000000015b63cf74dc8ab6f.png +0000000016975477ff62bd1f = textures/ai/0000000016975477ff62bd1f.png +00000000170f83dbf2e12cd4 = textures/ai/00000000170f83dbf2e12cd4.png +00000000176e92ed2bcf39bd = textures/ai/00000000176e92ed2bcf39bd.png +00000000181b4554ba8f60c5 = textures/ai/00000000181b4554ba8f60c5.png +0000000018efb83f1a86cc2c = textures/ai/0000000018efb83f1a86cc2c.png +0000000019ab2ecc6d5bf92b = textures/ai/0000000019ab2ecc6d5bf92b.png +0000000019c83cf09ba48917 = textures/ai/0000000019c83cf09ba48917.png +000000001a4987047e7c72f2 = textures/ai/000000001a4987047e7c72f2.png +000000001a5ed37d23bf37d7 = textures/ai/000000001a5ed37d23bf37d7.png +000000001b4f8ae9033cbb2f = textures/ai/000000001b4f8ae9033cbb2f.png +000000001b5077230b221d66 = textures/ai/000000001b5077230b221d66.png +000000001b913fc216e7e159 = textures/ai/000000001b913fc216e7e159.png +000000001bb966776d67daa2 = textures/ai/000000001bb966776d67daa2.png +000000001d6a3105e37f9500 = textures/ai/000000001d6a3105e37f9500.png +000000001e21ee46f0219b7e = textures/ai/000000001e21ee46f0219b7e.png +000000001e4876511b34f248 = textures/ai/000000001e4876511b34f248.png +000000001e8c33d7e9ed9664 = textures/ai/000000001e8c33d7e9ed9664.png +000000001fc0f02841e88ed0 = textures/ai/000000001fc0f02841e88ed0.png +00000000208404af456bc495 = textures/ai/00000000208404af456bc495.png +00000000208990be8fabea75 = textures/ai/00000000208990be8fabea75.png +0000000020b15139ffa44396 = textures/ai/0000000020b15139ffa44396.png +0000000020d652d5ba7093fe = textures/ai/0000000020d652d5ba7093fe.png +00000000226a513a99819fdd = textures/ai/00000000226a513a99819fdd.png +00000000236ceda664478646 = textures/ai/00000000236ceda664478646.png +00000000242cf103aec0aac7 = textures/ai/00000000242cf103aec0aac7.png +00000000242e98bcf76223a6 = textures/ai/00000000242e98bcf76223a6.png +00000000247702c0adbe4300 = textures/ai/00000000247702c0adbe4300.png +0000000024b8066839732777 = textures/ai/0000000024b8066839732777.png +0000000024d2a8261154e9af = textures/ai/0000000024d2a8261154e9af.png +0000000024fa3d666c498ebe = textures/ai/0000000024fa3d666c498ebe.png +000000002575f920a126dd87 = textures/ai/000000002575f920a126dd87.png +0000000026597b73fe6760b2 = textures/ai/0000000026597b73fe6760b2.png +0000000026f17262ae8a073a = textures/ai/0000000026f17262ae8a073a.png +000000002710365acd41c7f9 = textures/ai/000000002710365acd41c7f9.png +00000000282491bd5aa2de87 = textures/ai/00000000282491bd5aa2de87.png +000000002825aacdd6824359 = textures/ai/000000002825aacdd6824359.png +0000000028fceec56ca34be2 = textures/ai/0000000028fceec56ca34be2.png +000000002994557437984084 = textures/ai/000000002994557437984084.png +000000002a3edbc646096aa7 = textures/ai/000000002a3edbc646096aa7.png +000000002a5dec8fe8d716fd = textures/ai/000000002a5dec8fe8d716fd.png +000000002bf72d6204690c48 = textures/ai/000000002bf72d6204690c48.png +000000002c6cac98fd378fb2 = textures/ai/000000002c6cac98fd378fb2.png +000000002ca16b3098118d65 = textures/ai/000000002ca16b3098118d65.png +000000002d841f5f8fab2a49 = textures/ai/000000002d841f5f8fab2a49.png +000000002e01edb636ad7252 = textures/ai/000000002e01edb636ad7252.png +000000002ef22b55128dac38 = textures/ai/000000002ef22b55128dac38.png +00000000305ff6b39e17296a = textures/ai/00000000305ff6b39e17296a.png +0000000030716af40b2fdd71 = textures/ai/0000000030716af40b2fdd71.png +0000000031535f8185a16484 = textures/ai/0000000031535f8185a16484.png +0000000032c8a7e497aef795 = textures/ai/0000000032c8a7e497aef795.png +000000003389b8f557a4cc72 = textures/ai/000000003389b8f557a4cc72.png +0000000034e5aabda56065c8 = textures/ai/0000000034e5aabda56065c8.png +0000000035e9310277e47db6 = textures/ai/0000000035e9310277e47db6.png +0000000036860bb916f22813 = textures/ai/0000000036860bb916f22813.png +0000000036db5d4cf1450651 = textures/ai/0000000036db5d4cf1450651.png +00000000373c0a7b702f11dd = textures/ai/00000000373c0a7b702f11dd.png +0000000039cf6482324c7094 = textures/ai/0000000039cf6482324c7094.png +000000003af5e79efa55d3e8 = textures/ai/000000003af5e79efa55d3e8.png +000000003afe5b9761865966 = textures/ai/000000003afe5b9761865966.png +000000003c623cfac1657ef7 = textures/ai/000000003c623cfac1657ef7.png +000000003cd0b92a1e660ca0 = textures/ai/000000003cd0b92a1e660ca0.png +000000003d5673f66e89e64d = textures/ai/000000003d5673f66e89e64d.png +000000003d70d68c53248483 = textures/ai/000000003d70d68c53248483.png +000000003d73c3e783b3d3a6 = textures/ai/000000003d73c3e783b3d3a6.png +000000003dedd9117b60a908 = textures/ai/000000003dedd9117b60a908.png +000000003e93f77a4b71a2fd = textures/ai/000000003e93f77a4b71a2fd.png +000000003edf9489c5f9caf2 = textures/ai/000000003edf9489c5f9caf2.png +000000003f32e1bf03561d40 = textures/ai/000000003f32e1bf03561d40.png +0000000040aa1d3f2be9fc92 = textures/ai/0000000040aa1d3f2be9fc92.png +0000000040c0fcae2d41e1c7 = textures/ai/0000000040c0fcae2d41e1c7.png +000000004199a765ba8d392b = textures/ai/000000004199a765ba8d392b.png +00000000419f64c00ef39c13 = textures/ai/00000000419f64c00ef39c13.png +0000000043598df51b34f248 = textures/ai/0000000043598df51b34f248.png +000000004481c351f76b5c28 = textures/ai/000000004481c351f76b5c28.png +00000000457c7f6a53cc4214 = textures/ai/00000000457c7f6a53cc4214.png +0000000046c56064040d62d5 = textures/ai/0000000046c56064040d62d5.png +000000004742dcda9a853b1d = textures/ai/000000004742dcda9a853b1d.png +0000000047cf2bc0bb6c8599 = textures/ai/0000000047cf2bc0bb6c8599.png +000000004989a306563de25a = textures/ai/000000004989a306563de25a.png +000000004a12d3fba06d59ac = textures/ai/000000004a12d3fba06d59ac.png +000000004b770f6665756ec5 = textures/ai/000000004b770f6665756ec5.png +000000004b7cd6c6efa1851f = textures/ai/000000004b7cd6c6efa1851f.png +000000004c35e67a7299536c = textures/ai/000000004c35e67a7299536c.png +000000004d58df85d97d266f = textures/ai/000000004d58df85d97d266f.png +000000004e389abd5652eb56 = textures/ai/000000004e389abd5652eb56.png +000000004e40ae74a7e2fffe = textures/ai/000000004e40ae74a7e2fffe.png +000000004e4884a471dea25e = textures/ai/000000004e4884a471dea25e.png +000000004e55002aacad097d = textures/ai/000000004e55002aacad097d.png +000000004f76fd919185971f = textures/ai/000000004f76fd919185971f.png +000000004fdbf4e03c6a1cc3 = textures/ai/000000004fdbf4e03c6a1cc3.png +00000000500d36e008763bea = textures/ai/00000000500d36e008763bea.png +000000005032611fa66402d8 = textures/ai/000000005032611fa66402d8.png +000000005042605462395a90 = textures/ai/000000005042605462395a90.png +00000000506867b535219b85 = textures/ai/00000000506867b535219b85.png +0000000050ce27d36048dc4a = textures/ai/0000000050ce27d36048dc4a.png +00000000514def643340182a = textures/ai/00000000514def643340182a.png +00000000522c5a21e869c062 = textures/ai/00000000522c5a21e869c062.png +0000000054065bb1ef2c7d31 = textures/ai/0000000054065bb1ef2c7d31.png +000000005471deb1deb77817 = textures/ai/000000005471deb1deb77817.png +000000005474830dc33871e3 = textures/ai/000000005474830dc33871e3.png +0000000055c4531e2dfd3073 = textures/ai/0000000055c4531e2dfd3073.png +0000000055d5c9d6a9b388d4 = textures/ai/0000000055d5c9d6a9b388d4.png +00000000569b26a74dc1607c = textures/ai/00000000569b26a74dc1607c.png +00000000569ed47828dd721f = textures/ai/00000000569ed47828dd721f.png +0000000056b9e3e782734b3c = textures/ai/0000000056b9e3e782734b3c.png +0000000056e1a03fd122ddaa = textures/ai/0000000056e1a03fd122ddaa.png +00000000572ee594e9c1fa15 = textures/ai/00000000572ee594e9c1fa15.png +0000000058f686ffd8695da5 = textures/ai/0000000058f686ffd8695da5.png +000000005a2cfd0960aa5a55 = textures/ai/000000005a2cfd0960aa5a55.png +000000005b1788d3388d311e = textures/ai/000000005b1788d3388d311e.png +000000005b78dfab08be8e89 = textures/ai/000000005b78dfab08be8e89.png +000000005c770b975ae161f7 = textures/ai/000000005c770b975ae161f7.png +000000005cd5c6b74543b427 = textures/ai/000000005cd5c6b74543b427.png +000000005cdd0ea1f8f391a0 = textures/ai/000000005cdd0ea1f8f391a0.png +000000005d8fae98afe4c3e7 = textures/ai/000000005d8fae98afe4c3e7.png +000000005dd25a439b63bb0a = textures/ai/000000005dd25a439b63bb0a.png +000000005e0dde57677497a6 = textures/ai/000000005e0dde57677497a6.png +00000000629ab5f00ffd31dd = textures/ai/00000000629ab5f00ffd31dd.png +000000006346aed9def8dd47 = textures/ai/000000006346aed9def8dd47.png +000000006375787bad066a44 = textures/ai/000000006375787bad066a44.png +000000006455f5d508b6b57e = textures/ai/000000006455f5d508b6b57e.png +00000000668c006c9ed1183c = textures/ai/00000000668c006c9ed1183c.png +0000000067d8be291eb8229a = textures/ai/0000000067d8be291eb8229a.png +0000000067f99540c6330186 = textures/ai/0000000067f99540c6330186.png +00000000681b66fda50731bf = textures/ai/00000000681b66fda50731bf.png +00000000684348589235808e = textures/ai/00000000684348589235808e.png +0000000068e03747e5ccc87e = textures/ai/0000000068e03747e5ccc87e.png +00000000693e34d3980253af = textures/ai/00000000693e34d3980253af.png +00000000698ef64be9245e9c = textures/ai/00000000698ef64be9245e9c.png +0000000069bc5fcfb5ec11cd = textures/ai/0000000069bc5fcfb5ec11cd.png +0000000069d422de3f7cf7d7 = textures/ai/0000000069d422de3f7cf7d7.png +0000000069d8a83ec9646f98 = textures/ai/0000000069d8a83ec9646f98.png +000000006a602aa00f9650a6 = textures/ai/000000006a602aa00f9650a6.png +000000006ae2fb2023942ed4 = textures/ai/000000006ae2fb2023942ed4.png +000000006b16c61da35edd07 = textures/ai/000000006b16c61da35edd07.png +000000006d330c53f1332c88 = textures/ai/000000006d330c53f1332c88.png +000000006d51d3716a50d168 = textures/ai/000000006d51d3716a50d168.png +000000006dbe8a9417f01d74 = textures/ai/000000006dbe8a9417f01d74.png +000000006e28ca6e2015e0b4 = textures/ai/000000006e28ca6e2015e0b4.png +000000006e312178e62b52af = textures/ai/000000006e312178e62b52af.png +000000006e8dc22b1d365321 = textures/ai/000000006e8dc22b1d365321.png +000000006ea710ce4ed0cfd2 = textures/ai/000000006ea710ce4ed0cfd2.png +000000006faeba42074c47c7 = textures/ai/000000006faeba42074c47c7.png +0000000070af0d8fe959cf3c = textures/ai/0000000070af0d8fe959cf3c.png +0000000070b572acbb0e132b = textures/ai/0000000070b572acbb0e132b.png +0000000071a1200c0d43c9e3 = textures/ai/0000000071a1200c0d43c9e3.png +0000000071e1c0ede0af4289 = textures/ai/0000000071e1c0ede0af4289.png +00000000724e59a50bc321c2 = textures/ai/00000000724e59a50bc321c2.png +0000000072e7e1b13d3d90f9 = textures/ai/0000000072e7e1b13d3d90f9.png +0000000073486c292692be4d = textures/ai/0000000073486c292692be4d.png +0000000073f2f771ccfe34d5 = textures/ai/0000000073f2f771ccfe34d5.png +000000007427f770a65809db = textures/ai/000000007427f770a65809db.png +000000007484ab6d2d5f2883 = textures/ai/000000007484ab6d2d5f2883.png +000000007778cd0e65636f30 = textures/ai/000000007778cd0e65636f30.png +0000000077b9b304f3cf7ae5 = textures/ai/0000000077b9b304f3cf7ae5.png +000000007841d627df1b8f9a = textures/ai/000000007841d627df1b8f9a.png +00000000787b0dc2da961aaf = textures/ai/00000000787b0dc2da961aaf.png +0000000079b5581d9573d42c = textures/ai/0000000079b5581d9573d42c.png +000000007ad9b99e6315a18a = textures/ai/000000007ad9b99e6315a18a.png +000000007bd7fba4493c28dc = textures/ai/000000007bd7fba4493c28dc.png +000000007c69cf3646e21d9a = textures/ai/000000007c69cf3646e21d9a.png +000000007cd4cf87ca0a82f2 = textures/ai/000000007cd4cf87ca0a82f2.png +000000007cec5de5bf3b9130 = textures/ai/000000007cec5de5bf3b9130.png +000000007d03e6f4ab02d846 = textures/ai/000000007d03e6f4ab02d846.png +000000007d56d6b6422ef5f3 = textures/ai/000000007d56d6b6422ef5f3.png +000000007e32f188fb22d26e = textures/ai/000000007e32f188fb22d26e.png +000000007e3cb2b6d462e10f = textures/ai/000000007e3cb2b6d462e10f.png +000000007f939b25125787cc = textures/ai/000000007f939b25125787cc.png +000000007fad287f3bfae2c5 = textures/ai/000000007fad287f3bfae2c5.png +00000000802fa2106bd6a133 = textures/ai/00000000802fa2106bd6a133.png +000000008109e2a832d1b3fc = textures/ai/000000008109e2a832d1b3fc.png +00000000810f1e548dd54f8c = textures/ai/00000000810f1e548dd54f8c.png +00000000812628d3e12c5b7c = textures/ai/00000000812628d3e12c5b7c.png +00000000818c900965dbd76e = textures/ai/00000000818c900965dbd76e.png +000000008265708d50f00fe4 = textures/ai/000000008265708d50f00fe4.png +0000000085962d2d8f02ca47 = textures/ai/0000000085962d2d8f02ca47.png +0000000085b181cac0c14d49 = textures/ai/0000000085b181cac0c14d49.png +0000000085b6ce9cc84967a8 = textures/ai/0000000085b6ce9cc84967a8.png +0000000085cdd5d977bbc4ff = textures/ai/0000000085cdd5d977bbc4ff.png +000000008614a51d1aa857c8 = textures/ai/000000008614a51d1aa857c8.png +0000000087c4189b7513ed9c = textures/ai/0000000087c4189b7513ed9c.png +0000000087e1d5e61f650ca6 = textures/ai/0000000087e1d5e61f650ca6.png +0000000087f343bd98babb90 = textures/ai/0000000087f343bd98babb90.png +000000008bd70fc9a08daa51 = textures/ai/000000008bd70fc9a08daa51.png +000000008fb5249ac0d5a766 = textures/ai/000000008fb5249ac0d5a766.png +00000000900d8e2e63ecf1c2 = textures/ai/00000000900d8e2e63ecf1c2.png +00000000908b1276ef688760 = textures/ai/00000000908b1276ef688760.png +000000009299ff011016ecef = textures/ai/000000009299ff011016ecef.png +0000000093b7ae5319a93f90 = textures/ai/0000000093b7ae5319a93f90.png +0000000094892a674972ab19 = textures/ai/0000000094892a674972ab19.png +0000000094b210b6fa482992 = textures/ai/0000000094b210b6fa482992.png +0000000094f166664ff4a5e4 = textures/ai/0000000094f166664ff4a5e4.png +0000000094f4438b015e57ef = textures/ai/0000000094f4438b015e57ef.png +00000000950f3488abb49d1a = textures/ai/00000000950f3488abb49d1a.png +00000000955571f3c1ec9a78 = textures/ai/00000000955571f3c1ec9a78.png +0000000095adb5ac23d23683 = textures/ai/0000000095adb5ac23d23683.png +0000000095d8e71dc475789a = textures/ai/0000000095d8e71dc475789a.png +00000000961eedbc291105db = textures/ai/00000000961eedbc291105db.png +00000000964bb186f042014d = textures/ai/00000000964bb186f042014d.png +000000009686b158c271ffbe = textures/ai/000000009686b158c271ffbe.png +0000000096b5cdfe4d0829ac = textures/ai/0000000096b5cdfe4d0829ac.png +0000000096df35a9d10a6f31 = textures/ai/0000000096df35a9d10a6f31.png +000000009707dce79860657f = textures/ai/000000009707dce79860657f.png +0000000097a6245e2dd24d53 = textures/ai/0000000097a6245e2dd24d53.png +0000000097d52b0878f6abdd = textures/ai/0000000097d52b0878f6abdd.png +000000009919c3eed122ddaa = textures/ai/000000009919c3eed122ddaa.png +000000009974bd708f02f500 = textures/ai/000000009974bd708f02f500.png +0000000099a647b7e66a3a8b = textures/ai/0000000099a647b7e66a3a8b.png +0000000099c5faa3def0aabb = textures/ai/0000000099c5faa3def0aabb.png +0000000099eb768205870b73 = textures/ai/0000000099eb768205870b73.png +0000000099ebfc8dd776406a = textures/ai/0000000099ebfc8dd776406a.png +000000009a03d0420545ec80 = textures/ai/000000009a03d0420545ec80.png +000000009a5f2524f8519b21 = textures/ai/000000009a5f2524f8519b21.png +000000009aaf1750c8ce60e9 = textures/ai/000000009aaf1750c8ce60e9.png +000000009b1822f9cd82ccad = textures/ai/000000009b1822f9cd82ccad.png +000000009b1e327db8dafead = textures/ai/000000009b1e327db8dafead.png +000000009bc2a25c9b8f2643 = textures/ai/000000009bc2a25c9b8f2643.png +000000009be760a86da818da = textures/ai/000000009be760a86da818da.png +000000009c105294a47fb6e7 = textures/ai/000000009c105294a47fb6e7.png +000000009c6f6c21813c537d = textures/ai/000000009c6f6c21813c537d.png +000000009cca6d3b900d7d22 = textures/ai/000000009cca6d3b900d7d22.png +000000009d1ad40ac058edc2 = textures/ai/000000009d1ad40ac058edc2.png +000000009d4cb68f1c16605f = textures/ai/000000009d4cb68f1c16605f.png +000000009e645e838d7559fa = textures/ai/000000009e645e838d7559fa.png +000000009f2edecf530e2787 = textures/ai/000000009f2edecf530e2787.png +000000009f3c6ba7cbaab9d3 = textures/ai/000000009f3c6ba7cbaab9d3.png +000000009f9bad9f501302ce = textures/ai/000000009f9bad9f501302ce.png +00000000a0b9fca0e8cb1a9e = textures/ai/00000000a0b9fca0e8cb1a9e.png +00000000a13b781cbd68d0ec = textures/ai/00000000a13b781cbd68d0ec.png +00000000a2438bcc64069a35 = textures/ai/00000000a2438bcc64069a35.png +00000000a24bf9e212531fee = textures/ai/00000000a24bf9e212531fee.png +00000000a2f24ea88597a2ab = textures/ai/00000000a2f24ea88597a2ab.png +00000000a3930fe0cbc52ce7 = textures/ai/00000000a3930fe0cbc52ce7.png +00000000a3bd321cc1657ef7 = textures/ai/00000000a3bd321cc1657ef7.png +00000000a3d7118aac090c40 = textures/ai/00000000a3d7118aac090c40.png +00000000a3feb966906f5d2c = textures/ai/00000000a3feb966906f5d2c.png +00000000a4e87427bc311df4 = textures/ai/00000000a4e87427bc311df4.png +00000000a652f0609d75574c = textures/ai/00000000a652f0609d75574c.png +00000000a6e9ff784f21abe1 = textures/ai/00000000a6e9ff784f21abe1.png +00000000a93e837b50f82427 = textures/ai/00000000a93e837b50f82427.png +00000000a997cfdb3c455271 = textures/ai/00000000a997cfdb3c455271.png +00000000aa1bb46949e88a74 = textures/ai/00000000aa1bb46949e88a74.png +00000000ab5a30e240bbb7e7 = textures/ai/00000000ab5a30e240bbb7e7.png +00000000ab748517eecbbe44 = textures/ai/00000000ab748517eecbbe44.png +00000000acd9b986c041a006 = textures/ai/00000000acd9b986c041a006.png +00000000ad7d67f4687ee31e = textures/ai/00000000ad7d67f4687ee31e.png +00000000ad95b55659400b15 = textures/ai/00000000ad95b55659400b15.png +00000000adedd977c4d7cbb7 = textures/ai/00000000adedd977c4d7cbb7.png +00000000ae8095ec2df8a5ae = textures/ai/00000000ae8095ec2df8a5ae.png +00000000afb59cde34a1e100 = textures/ai/00000000afb59cde34a1e100.png +00000000b2735af6818d7b79 = textures/ai/00000000b2735af6818d7b79.png +00000000b40f390d42be50a4 = textures/ai/00000000b40f390d42be50a4.png +00000000b41948657b48738f = textures/ai/00000000b41948657b48738f.png +00000000b566f3e4f60e2145 = textures/ai/00000000b566f3e4f60e2145.png +00000000b6beb7682dbe4949 = textures/ai/00000000b6beb7682dbe4949.png +00000000b6f2aabf69728b9e = textures/ai/00000000b6f2aabf69728b9e.png +00000000b70bece446bb55b4 = textures/ai/00000000b70bece446bb55b4.png +00000000b834f3519b31317f = textures/ai/00000000b834f3519b31317f.png +00000000b9364c655ac61fba = textures/ai/00000000b9364c655ac61fba.png +00000000bb1b46b2fc33e872 = textures/ai/00000000bb1b46b2fc33e872.png +00000000bb90f77324f9b747 = textures/ai/00000000bb90f77324f9b747.png +00000000bd51e236ec3d80f3 = textures/ai/00000000bd51e236ec3d80f3.png +00000000bd7e8883f996456e = textures/ai/00000000bd7e8883f996456e.png +00000000be01ba7e58aababc = textures/ai/00000000be01ba7e58aababc.png +00000000bf558b0622fb4e28 = textures/ai/00000000bf558b0622fb4e28.png +00000000bffe1ed525f0d73b = textures/ai/00000000bffe1ed525f0d73b.png +00000000c2133582d7928bf5 = textures/ai/00000000c2133582d7928bf5.png +00000000c242e06560d5ebfb = textures/ai/00000000c242e06560d5ebfb.png +00000000c2c3b8a46911eb39 = textures/ai/00000000c2c3b8a46911eb39.png +00000000c2d18ecea5abe3bd = textures/ai/00000000c2d18ecea5abe3bd.png +00000000c304029771d6a5d3 = textures/ai/00000000c304029771d6a5d3.png +00000000c3ed381a2e590b4a = textures/ai/00000000c3ed381a2e590b4a.png +00000000c45e425d821f1777 = textures/ai/00000000c45e425d821f1777.png +00000000c4908f4f30a2d8b3 = textures/ai/00000000c4908f4f30a2d8b3.png +00000000c535ab8f7b1c6b82 = textures/ai/00000000c535ab8f7b1c6b82.png +00000000c6b6dd9143baed15 = textures/ai/00000000c6b6dd9143baed15.png +00000000c7162fa991603046 = textures/ai/00000000c7162fa991603046.png +00000000c84ff0ef0f49b48e = textures/ai/00000000c84ff0ef0f49b48e.png +00000000c863fb3df8d287d8 = textures/ai/00000000c863fb3df8d287d8.png +00000000c99da8f2e03603aa = textures/ai/00000000c99da8f2e03603aa.png +00000000c9a984280f6e9d80 = textures/ai/00000000c9a984280f6e9d80.png +00000000cadccd8bf8b55c42 = textures/ai/00000000cadccd8bf8b55c42.png +00000000cae377cc199ff351 = textures/ai/00000000cae377cc199ff351.png +00000000caf7bcec31b646e2 = textures/ai/00000000caf7bcec31b646e2.png +00000000cb71fab3a2ee5e13 = textures/ai/00000000cb71fab3a2ee5e13.png +00000000ccf8edcba48ba9fb = textures/ai/00000000ccf8edcba48ba9fb.png +00000000cdc9bcd81724bc26 = textures/ai/00000000cdc9bcd81724bc26.png +00000000ce579055bb8f0b85 = textures/ai/00000000ce579055bb8f0b85.png +00000000cea1edabe5a04e42 = textures/ai/00000000cea1edabe5a04e42.png +00000000cf4c4c0225ea42dc = textures/ai/00000000cf4c4c0225ea42dc.png +00000000cf569f90d2342eb5 = textures/ai/00000000cf569f90d2342eb5.png +00000000cf9c5c56f8b55c42 = textures/ai/00000000cf9c5c56f8b55c42.png +00000000d068a06226bb5b9f = textures/ai/00000000d068a06226bb5b9f.png +00000000d1b5f3b0eab19740 = textures/ai/00000000d1b5f3b0eab19740.png +00000000d228aa7283ac12fa = textures/ai/00000000d228aa7283ac12fa.png +00000000d28b8a6ca5743569 = textures/ai/00000000d28b8a6ca5743569.png +00000000d29b6917506724b7 = textures/ai/00000000d29b6917506724b7.png +00000000d349e28fdaed9648 = textures/ai/00000000d349e28fdaed9648.png +00000000d49bbe515b18e84b = textures/ai/00000000d49bbe515b18e84b.png +00000000d4b2661aa8416d51 = textures/ai/00000000d4b2661aa8416d51.png +00000000d5c960b941a3a013 = textures/ai/00000000d5c960b941a3a013.png +00000000d5fa63f3c4773a46 = textures/ai/00000000d5fa63f3c4773a46.png +00000000d60abda2498d5953 = textures/ai/00000000d60abda2498d5953.png +00000000d7f22063d1224871 = textures/ai/00000000d7f22063d1224871.png +00000000d825d37a406402a6 = textures/ai/00000000d825d37a406402a6.png +00000000d976652c8db40b3b = textures/ai/00000000d976652c8db40b3b.png +00000000dad42d5309a564bc = textures/ai/00000000dad42d5309a564bc.png +00000000daf231d0513ab8bb = textures/ai/00000000daf231d0513ab8bb.png +00000000dc63396a2ca3ceac = textures/ai/00000000dc63396a2ca3ceac.png +00000000dc72bd717ad20573 = textures/ai/00000000dc72bd717ad20573.png +00000000dc79a072415cd90d = textures/ai/00000000dc79a072415cd90d.png +00000000dccc0c33827e53e9 = textures/ai/00000000dccc0c33827e53e9.png +00000000dd8f5de075a4cf5b = textures/ai/00000000dd8f5de075a4cf5b.png +00000000de5d63d9b35b8a5a = textures/ai/00000000de5d63d9b35b8a5a.png +00000000dee8157cc44d81d7 = textures/ai/00000000dee8157cc44d81d7.png +00000000df0d5cf286a680f2 = textures/ai/00000000df0d5cf286a680f2.png +00000000dfb038e980488dde = textures/ai/00000000dfb038e980488dde.png +00000000dfd7191be2513223 = textures/ai/00000000dfd7191be2513223.png +00000000e0e171a1c19de9e2 = textures/ai/00000000e0e171a1c19de9e2.png +00000000e125786b09cf7487 = textures/ai/00000000e125786b09cf7487.png +00000000e34c57a7666748df = textures/ai/00000000e34c57a7666748df.png +00000000e53870f98b87929e = textures/ai/00000000e53870f98b87929e.png +00000000e5e0aca1f1f2dd06 = textures/ai/00000000e5e0aca1f1f2dd06.png +00000000e76047872af08cf8 = textures/ai/00000000e76047872af08cf8.png +00000000e7758105626ab17e = textures/ai/00000000e7758105626ab17e.png +00000000e77dfdca1c26fec5 = textures/ai/00000000e77dfdca1c26fec5.png +00000000e7ca54968b675299 = textures/ai/00000000e7ca54968b675299.png +00000000e888c840e23406d1 = textures/ai/00000000e888c840e23406d1.png +00000000e90f79ac9fa4ce88 = textures/ai/00000000e90f79ac9fa4ce88.png +00000000e94d0590d9175a61 = textures/ai/00000000e94d0590d9175a61.png +00000000e98bf3a8c1657ef7 = textures/ai/00000000e98bf3a8c1657ef7.png +00000000ea2b3f7d82da7959 = textures/ai/00000000ea2b3f7d82da7959.png +00000000eafd60f82af63210 = textures/ai/00000000eafd60f82af63210.png +00000000ebfcdf44f3a52036 = textures/ai/00000000ebfcdf44f3a52036.png +00000000ec0e2c3f60d5ebfb = textures/ai/00000000ec0e2c3f60d5ebfb.png +00000000ec16301043880880 = textures/ai/00000000ec16301043880880.png +00000000ecb570c616e85514 = textures/ai/00000000ecb570c616e85514.png +00000000edc0c0bc7c9fa78f = textures/ai/00000000edc0c0bc7c9fa78f.png +00000000edd742f1b587b2a1 = textures/ai/00000000edd742f1b587b2a1.png +00000000ee674fbea0c37003 = textures/ai/00000000ee674fbea0c37003.png +00000000ee759954a5539cce = textures/ai/00000000ee759954a5539cce.png +00000000ef45cf50b58cc2b1 = textures/ai/00000000ef45cf50b58cc2b1.png +00000000ef481e4a85eb40cc = textures/ai/00000000ef481e4a85eb40cc.png +00000000f04731046c9564ed = textures/ai/00000000f04731046c9564ed.png +00000000f077557980805f29 = textures/ai/00000000f077557980805f29.png +00000000f07a4a975a1506f9 = textures/ai/00000000f07a4a975a1506f9.png +00000000f10e68cf4c020528 = textures/ai/00000000f10e68cf4c020528.png +00000000f20e4dfa8a9eab53 = textures/ai/00000000f20e4dfa8a9eab53.png +00000000f25c21136d817a20 = textures/ai/00000000f25c21136d817a20.png +00000000f2868ca16a05ba44 = textures/ai/00000000f2868ca16a05ba44.png +00000000f3541469ecc3e56f = textures/ai/00000000f3541469ecc3e56f.png +00000000f367c1a13fc2a9d0 = textures/ai/00000000f367c1a13fc2a9d0.png +00000000f3e9fcbb3799644c = textures/ai/00000000f3e9fcbb3799644c.png +00000000f49800f4cc580503 = textures/ai/00000000f49800f4cc580503.png +00000000f4c9cb12fed11a3e = textures/ai/00000000f4c9cb12fed11a3e.png +00000000f5205cbc7fb4fef2 = textures/ai/00000000f5205cbc7fb4fef2.png +00000000f6afdc6585dae1d8 = textures/ai/00000000f6afdc6585dae1d8.png +00000000f758e0504c146f69 = textures/ai/00000000f758e0504c146f69.png +00000000f80d9833d6b6ef1d = textures/ai/00000000f80d9833d6b6ef1d.png +00000000f825ea698773cf12 = textures/ai/00000000f825ea698773cf12.png +00000000f9cb9ccfa1aa65df = textures/ai/00000000f9cb9ccfa1aa65df.png +00000000f9da9e616aeeb2b2 = textures/ai/00000000f9da9e616aeeb2b2.png +00000000face9af9abc1d70b = textures/ai/00000000face9af9abc1d70b.png +00000000fb068cfe2b4f8f6e = textures/ai/00000000fb068cfe2b4f8f6e.png +00000000fb2c64d0816c6132 = textures/ai/00000000fb2c64d0816c6132.png +00000000fb73cbd20214960f = textures/ai/00000000fb73cbd20214960f.png +00000000fc455b05158be6b1 = textures/ai/00000000fc455b05158be6b1.png +00000000fc4923bd76370f6d = textures/ai/00000000fc4923bd76370f6d.png +00000000fd8f0b417630f611 = textures/ai/00000000fd8f0b417630f611.png +00000000fed230af1d52b678 = textures/ai/00000000fed230af1d52b678.png +0000000087c9a2ceca9693c1 = textures/ai/0000000087c9a2ceca9693c1.png +0000000066ea9a6bfc504a67 = textures/ai/0000000066ea9a6bfc504a67.png +00000000a6ffedddd122ddaa = textures/ai/00000000a6ffedddd122ddaa.png +000000003af416bd6f5ab6b1 = textures/ai/000000003af416bd6f5ab6b1.png +000000007c210573db67b833 = textures/ai/000000007c210573db67b833.png +000000002920096df215fd95 = textures/ai/000000002920096df215fd95.png +000000005c59840f5908a93a = textures/ai/000000005c59840f5908a93a.png +000000006d298ddec1a97e86 = textures/ai/000000006d298ddec1a97e86.png +00000000ef0f97cb24f55c42 = textures/ai/00000000ef0f97cb24f55c42.png +00000000b7bde1f982ddc30a = textures/ai/00000000b7bde1f982ddc30a.png +000000006bdeda5fd84545d4 = textures/ai/000000006bdeda5fd84545d4.png +000000009a27dfd745f15f7f = textures/ai/000000009a27dfd745f15f7f.png +0000000094a998579c22e17e = textures/ai/0000000094a998579c22e17e.png +00000000e7b6945b426f8fe2 = textures/ai/00000000e7b6945b426f8fe2.png +00000000a2f74a2314287e8f = textures/ai/00000000a2f74a2314287e8f.png +0000000096e59bcf247670b9 = textures/ai/0000000096e59bcf247670b9.png +000000005fe488c639fe38ca = textures/ai/000000005fe488c639fe38ca.png +00000000950d108572c7b7e1 = textures/ai/00000000950d108572c7b7e1.png +000000004f717d5974be0c15 = textures/ai/000000004f717d5974be0c15.png +00000000c73b91a182aaab05 = textures/ai/00000000c73b91a182aaab05.png +0000000044201c38c88bfbd0 = textures/ai/0000000044201c38c88bfbd0.png +000000005a16c1c29cd5bf01 = textures/ai/000000005a16c1c29cd5bf01.png +000000006f6d53075ea88910 = textures/ai/000000006f6d53075ea88910.png +00000000ed6eea3c2ea5003f = textures/ai/00000000ed6eea3c2ea5003f.png +0000000061b0b64e7bea8257 = textures/ai/0000000061b0b64e7bea8257.png +0000000052d2272fb356f9b6 = textures/ai/0000000052d2272fb356f9b6.png +00000000d9a203522c2e6bf7 = textures/ai/00000000d9a203522c2e6bf7.png +00000000514533e92f54377b = textures/ai/00000000514533e92f54377b.png +00000000c0cead2aace29081 = textures/ai/00000000c0cead2aace29081.png +00000000da17e052abd3bdd8 = textures/ai/00000000da17e052abd3bdd8.png +000000004751a562b2b85836 = textures/ai/000000004751a562b2b85836.png +0000000003854aed38611dc6 = textures/ai/0000000003854aed38611dc6.png +000000008731701306f9d3c1 = textures/ai/000000008731701306f9d3c1.png +000000005e99b8a84d41212c = textures/ai/000000005e99b8a84d41212c.png +00000000c7e5e3bc90b0a99f = textures/ai/00000000c7e5e3bc90b0a99f.png +00000000955b93aff92c4d9b = textures/ai/00000000955b93aff92c4d9b.png +00000000dcf8c92abac43890 = textures/ai/00000000dcf8c92abac43890.png +00000000ee0b2d3d35314526 = textures/ai/00000000ee0b2d3d35314526.png +00000000ece43c97e36fda49 = textures/ai/00000000ece43c97e36fda49.png +00000000d60747729dc8fba2 = textures/ai/00000000d60747729dc8fba2.png +000000003230a7581898e35e = textures/ai/000000003230a7581898e35e.png +0000000082179f059008767f = textures/ai/0000000082179f059008767f.png +000000005b9590837f993667 = textures/ai/000000005b9590837f993667.png +000000004960e49b90b33422 = textures/ai/000000004960e49b90b33422.png +000000001bdf381df3e8ff50 = textures/ai/000000001bdf381df3e8ff50.png +00000000d11bcc3045323b2c = textures/ai/00000000d11bcc3045323b2c.png +000000009238db65268fca71 = textures/ai/000000009238db65268fca71.png +00000000f491c15a2f6127b5 = textures/ai/00000000f491c15a2f6127b5.png +00000000e961e0d93f6e7a7a = textures/ai/00000000e961e0d93f6e7a7a.png +0000000007067ccf90c01a14 = textures/ai/0000000007067ccf90c01a14.png +00000000c0feb5ea58391238 = textures/ai/00000000c0feb5ea58391238.png +00000000720d621ec80965d9 = textures/ai/00000000720d621ec80965d9.png +000000002e506b03aa34dd45 = textures/ai/000000002e506b03aa34dd45.png +00000000104fbf99e334c4e2 = textures/ai/00000000104fbf99e334c4e2.png +000000006fcffe782e6f1898 = textures/ai/000000006fcffe782e6f1898.png +000000000000090986707f6c = textures/ai/000000000000090986707f6c.png +00000000a712418b5e92fb67 = textures/ai/00000000a712418b5e92fb67.png +000000002d1a1cd6063e9a38 = textures/ai/000000002d1a1cd6063e9a38.png +00000000d80f435f0abe94c7 = textures/ai/00000000d80f435f0abe94c7.png +00000000c50b789c31367e33 = textures/ai/00000000c50b789c31367e33.png +00000000491e753abf87a3d0 = textures/ai/00000000491e753abf87a3d0.png +00000000fbe0306e44940f9b = textures/ai/00000000fbe0306e44940f9b.png +00000000dd8422d9292e19d1 = textures/ai/00000000dd8422d9292e19d1.png +0000000036541cd1cff11ba6 = textures/ai/0000000036541cd1cff11ba6.png +00000000c5e4f4e384c27183 = textures/ai/00000000c5e4f4e384c27183.png +0000000071fd8307d122ddaa = textures/ai/0000000071fd8307d122ddaa.png +000000009633f07c0932ef4d = textures/ai/000000009633f07c0932ef4d.png +000000007602f52e7a6990d4 = textures/ai/000000007602f52e7a6990d4.png +00000000d74b9b2b3c5ff548 = textures/ai/00000000d74b9b2b3c5ff548.png +0000000085f2d56e2063fe00 = textures/ai/0000000085f2d56e2063fe00.png +000000008cb0e1bff3bea257 = textures/ai/000000008cb0e1bff3bea257.png +000000007e293121ce37467e = textures/ai/000000007e293121ce37467e.png +00000000ec3f40711f75f175 = textures/ai/00000000ec3f40711f75f175.png +0000000052b804486f5e415b = textures/ai/0000000052b804486f5e415b.png +00000000c1eea0957af9ea70 = textures/ai/00000000c1eea0957af9ea70.png +0000000007afc936b19d643e = textures/ai/0000000007afc936b19d643e.png +000000003f4b92554b0d9dbf = textures/ai/000000003f4b92554b0d9dbf.png +000000000b3ae76866601589 = textures/ai/000000000b3ae76866601589.png +000000001409bbc9d49a42f7 = textures/ai/000000001409bbc9d49a42f7.png diff --git a/textures/ai/0000000000000000776e3949.png b/textures/ai/0000000000000000776e3949.png new file mode 100644 index 0000000..4c1915e Binary files /dev/null and b/textures/ai/0000000000000000776e3949.png differ diff --git a/textures/ai/00000000000008090795005b.png b/textures/ai/00000000000008090795005b.png new file mode 100644 index 0000000..ecde4ad Binary files /dev/null and b/textures/ai/00000000000008090795005b.png differ diff --git a/textures/ai/00000000000008090c15e274.png b/textures/ai/00000000000008090c15e274.png new file mode 100644 index 0000000..b91d00c Binary files /dev/null and b/textures/ai/00000000000008090c15e274.png differ diff --git a/textures/ai/00000000000008090f9deb59.png b/textures/ai/00000000000008090f9deb59.png new file mode 100644 index 0000000..2ecfb2a Binary files /dev/null and b/textures/ai/00000000000008090f9deb59.png differ diff --git a/textures/ai/0000000000000809119ce181.png b/textures/ai/0000000000000809119ce181.png new file mode 100644 index 0000000..9eb11de Binary files /dev/null and b/textures/ai/0000000000000809119ce181.png differ diff --git a/textures/ai/000000000000080917ed9658.png b/textures/ai/000000000000080917ed9658.png new file mode 100644 index 0000000..ac7005d Binary files /dev/null and b/textures/ai/000000000000080917ed9658.png differ diff --git a/textures/ai/000000000000080919e7a8da.png b/textures/ai/000000000000080919e7a8da.png new file mode 100644 index 0000000..e9f54a9 Binary files /dev/null and b/textures/ai/000000000000080919e7a8da.png differ diff --git a/textures/ai/00000000000008091d859762.png b/textures/ai/00000000000008091d859762.png new file mode 100644 index 0000000..b6008c1 Binary files /dev/null and b/textures/ai/00000000000008091d859762.png differ diff --git a/textures/ai/000000000000080923c17032.png b/textures/ai/000000000000080923c17032.png new file mode 100644 index 0000000..4f6a543 Binary files /dev/null and b/textures/ai/000000000000080923c17032.png differ diff --git a/textures/ai/00000000000008092e572567.png b/textures/ai/00000000000008092e572567.png new file mode 100644 index 0000000..174818b Binary files /dev/null and b/textures/ai/00000000000008092e572567.png differ diff --git a/textures/ai/000000000000080933dcd065.png b/textures/ai/000000000000080933dcd065.png new file mode 100644 index 0000000..f8f629f Binary files /dev/null and b/textures/ai/000000000000080933dcd065.png differ diff --git a/textures/ai/000000000000080934b6c121.png b/textures/ai/000000000000080934b6c121.png new file mode 100644 index 0000000..aee6c14 Binary files /dev/null and b/textures/ai/000000000000080934b6c121.png differ diff --git a/textures/ai/000000000000080942e05b0f.png b/textures/ai/000000000000080942e05b0f.png new file mode 100644 index 0000000..56dbfc6 Binary files /dev/null and b/textures/ai/000000000000080942e05b0f.png differ diff --git a/textures/ai/000000000000080948c74578.png b/textures/ai/000000000000080948c74578.png new file mode 100644 index 0000000..9f19675 Binary files /dev/null and b/textures/ai/000000000000080948c74578.png differ diff --git a/textures/ai/000000000000080949e595ee.png b/textures/ai/000000000000080949e595ee.png new file mode 100644 index 0000000..848ded4 Binary files /dev/null and b/textures/ai/000000000000080949e595ee.png differ diff --git a/textures/ai/00000000000008095bbeb89e.png b/textures/ai/00000000000008095bbeb89e.png new file mode 100644 index 0000000..48e1973 Binary files /dev/null and b/textures/ai/00000000000008095bbeb89e.png differ diff --git a/textures/ai/00000000000008095d643908.png b/textures/ai/00000000000008095d643908.png new file mode 100644 index 0000000..bf4f81c Binary files /dev/null and b/textures/ai/00000000000008095d643908.png differ diff --git a/textures/ai/00000000000008097256f433.png b/textures/ai/00000000000008097256f433.png new file mode 100644 index 0000000..d249a0e Binary files /dev/null and b/textures/ai/00000000000008097256f433.png differ diff --git a/textures/ai/000000000000080974864676.png b/textures/ai/000000000000080974864676.png new file mode 100644 index 0000000..1ad2dfc Binary files /dev/null and b/textures/ai/000000000000080974864676.png differ diff --git a/textures/ai/000000000000080978efaca3.png b/textures/ai/000000000000080978efaca3.png new file mode 100644 index 0000000..8dfb21e Binary files /dev/null and b/textures/ai/000000000000080978efaca3.png differ diff --git a/textures/ai/00000000000008097a3231f1.png b/textures/ai/00000000000008097a3231f1.png new file mode 100644 index 0000000..85c8d85 Binary files /dev/null and b/textures/ai/00000000000008097a3231f1.png differ diff --git a/textures/ai/00000000000008097a62ebde.png b/textures/ai/00000000000008097a62ebde.png new file mode 100644 index 0000000..2ee1372 Binary files /dev/null and b/textures/ai/00000000000008097a62ebde.png differ diff --git a/textures/ai/00000000000008097aa31979.png b/textures/ai/00000000000008097aa31979.png new file mode 100644 index 0000000..783a7c7 Binary files /dev/null and b/textures/ai/00000000000008097aa31979.png differ diff --git a/textures/ai/00000000000008098bd6cc9a.png b/textures/ai/00000000000008098bd6cc9a.png new file mode 100644 index 0000000..b169ab7 Binary files /dev/null and b/textures/ai/00000000000008098bd6cc9a.png differ diff --git a/textures/ai/000000000000080994d96e52.png b/textures/ai/000000000000080994d96e52.png new file mode 100644 index 0000000..c278568 Binary files /dev/null and b/textures/ai/000000000000080994d96e52.png differ diff --git a/textures/ai/00000000000008099516d0ba.png b/textures/ai/00000000000008099516d0ba.png new file mode 100644 index 0000000..a425d1a Binary files /dev/null and b/textures/ai/00000000000008099516d0ba.png differ diff --git a/textures/ai/00000000000008099f465535.png b/textures/ai/00000000000008099f465535.png new file mode 100644 index 0000000..4fc4b01 Binary files /dev/null and b/textures/ai/00000000000008099f465535.png differ diff --git a/textures/ai/0000000000000809a6286a75.png b/textures/ai/0000000000000809a6286a75.png new file mode 100644 index 0000000..2c25297 Binary files /dev/null and b/textures/ai/0000000000000809a6286a75.png differ diff --git a/textures/ai/0000000000000809a7c492a0.png b/textures/ai/0000000000000809a7c492a0.png new file mode 100644 index 0000000..e7bbdd6 Binary files /dev/null and b/textures/ai/0000000000000809a7c492a0.png differ diff --git a/textures/ai/0000000000000809a7dd9c04.png b/textures/ai/0000000000000809a7dd9c04.png new file mode 100644 index 0000000..9b13b14 Binary files /dev/null and b/textures/ai/0000000000000809a7dd9c04.png differ diff --git a/textures/ai/0000000000000809a95ecfb5.png b/textures/ai/0000000000000809a95ecfb5.png new file mode 100644 index 0000000..bfc7df4 Binary files /dev/null and b/textures/ai/0000000000000809a95ecfb5.png differ diff --git a/textures/ai/0000000000000809a9793232.png b/textures/ai/0000000000000809a9793232.png new file mode 100644 index 0000000..8041feb Binary files /dev/null and b/textures/ai/0000000000000809a9793232.png differ diff --git a/textures/ai/0000000000000809ad699add.png b/textures/ai/0000000000000809ad699add.png new file mode 100644 index 0000000..414a72c Binary files /dev/null and b/textures/ai/0000000000000809ad699add.png differ diff --git a/textures/ai/0000000000000809ada8c5d3.png b/textures/ai/0000000000000809ada8c5d3.png new file mode 100644 index 0000000..619b259 Binary files /dev/null and b/textures/ai/0000000000000809ada8c5d3.png differ diff --git a/textures/ai/0000000000000809b07a45cc.png b/textures/ai/0000000000000809b07a45cc.png new file mode 100644 index 0000000..d4d9145 Binary files /dev/null and b/textures/ai/0000000000000809b07a45cc.png differ diff --git a/textures/ai/0000000000000809b876e22d.png b/textures/ai/0000000000000809b876e22d.png new file mode 100644 index 0000000..2516896 Binary files /dev/null and b/textures/ai/0000000000000809b876e22d.png differ diff --git a/textures/ai/0000000000000809c0b4f61f.png b/textures/ai/0000000000000809c0b4f61f.png new file mode 100644 index 0000000..1c67aef Binary files /dev/null and b/textures/ai/0000000000000809c0b4f61f.png differ diff --git a/textures/ai/0000000000000809c241b3cc.png b/textures/ai/0000000000000809c241b3cc.png new file mode 100644 index 0000000..de323ed Binary files /dev/null and b/textures/ai/0000000000000809c241b3cc.png differ diff --git a/textures/ai/0000000000000809ca4fb418.png b/textures/ai/0000000000000809ca4fb418.png new file mode 100644 index 0000000..44e1017 Binary files /dev/null and b/textures/ai/0000000000000809ca4fb418.png differ diff --git a/textures/ai/0000000000000809dea9670e.png b/textures/ai/0000000000000809dea9670e.png new file mode 100644 index 0000000..0f75706 Binary files /dev/null and b/textures/ai/0000000000000809dea9670e.png differ diff --git a/textures/ai/0000000000000809e453544e.png b/textures/ai/0000000000000809e453544e.png new file mode 100644 index 0000000..c6a85f2 Binary files /dev/null and b/textures/ai/0000000000000809e453544e.png differ diff --git a/textures/ai/0000000000000809e4de2c49.png b/textures/ai/0000000000000809e4de2c49.png new file mode 100644 index 0000000..468b8f7 Binary files /dev/null and b/textures/ai/0000000000000809e4de2c49.png differ diff --git a/textures/ai/0000000000000809ede70aa8.png b/textures/ai/0000000000000809ede70aa8.png new file mode 100644 index 0000000..aaf7f78 Binary files /dev/null and b/textures/ai/0000000000000809ede70aa8.png differ diff --git a/textures/ai/0000000000000809f02bfec1.png b/textures/ai/0000000000000809f02bfec1.png new file mode 100644 index 0000000..80f0c60 Binary files /dev/null and b/textures/ai/0000000000000809f02bfec1.png differ diff --git a/textures/ai/0000000000000809f9f51d7e.png b/textures/ai/0000000000000809f9f51d7e.png new file mode 100644 index 0000000..ab1d2aa Binary files /dev/null and b/textures/ai/0000000000000809f9f51d7e.png differ diff --git a/textures/ai/0000000000000809fcd1173e.png b/textures/ai/0000000000000809fcd1173e.png new file mode 100644 index 0000000..5b64367 Binary files /dev/null and b/textures/ai/0000000000000809fcd1173e.png differ diff --git a/textures/ai/0000000000000809fe4d21c7.png b/textures/ai/0000000000000809fe4d21c7.png new file mode 100644 index 0000000..ad39398 Binary files /dev/null and b/textures/ai/0000000000000809fe4d21c7.png differ diff --git a/textures/ai/000000000000090986707f6c.png b/textures/ai/000000000000090986707f6c.png new file mode 100644 index 0000000..caf6d08 Binary files /dev/null and b/textures/ai/000000000000090986707f6c.png differ diff --git a/textures/ai/000000000069d7d86b852041.png b/textures/ai/000000000069d7d86b852041.png new file mode 100644 index 0000000..37c6517 Binary files /dev/null and b/textures/ai/000000000069d7d86b852041.png differ diff --git a/textures/ai/00000000009051dd56114a3c.png b/textures/ai/00000000009051dd56114a3c.png new file mode 100644 index 0000000..511df82 Binary files /dev/null and b/textures/ai/00000000009051dd56114a3c.png differ diff --git a/textures/ai/000000000147c6d240a4dcb0.png b/textures/ai/000000000147c6d240a4dcb0.png new file mode 100644 index 0000000..38ed062 Binary files /dev/null and b/textures/ai/000000000147c6d240a4dcb0.png differ diff --git a/textures/ai/00000000017ae89ab07ce243.png b/textures/ai/00000000017ae89ab07ce243.png new file mode 100644 index 0000000..6b1a4e9 Binary files /dev/null and b/textures/ai/00000000017ae89ab07ce243.png differ diff --git a/textures/ai/00000000032130dee0af4289.png b/textures/ai/00000000032130dee0af4289.png new file mode 100644 index 0000000..a6052f0 Binary files /dev/null and b/textures/ai/00000000032130dee0af4289.png differ diff --git a/textures/ai/0000000003745e5b416369a7.png b/textures/ai/0000000003745e5b416369a7.png new file mode 100644 index 0000000..6281ea1 Binary files /dev/null and b/textures/ai/0000000003745e5b416369a7.png differ diff --git a/textures/ai/0000000003854aed38611dc6.png b/textures/ai/0000000003854aed38611dc6.png new file mode 100644 index 0000000..dc1d499 Binary files /dev/null and b/textures/ai/0000000003854aed38611dc6.png differ diff --git a/textures/ai/0000000003fffd934bbc7897.png b/textures/ai/0000000003fffd934bbc7897.png new file mode 100644 index 0000000..3ab173c Binary files /dev/null and b/textures/ai/0000000003fffd934bbc7897.png differ diff --git a/textures/ai/00000000047e6b803215371c.png b/textures/ai/00000000047e6b803215371c.png new file mode 100644 index 0000000..7349715 Binary files /dev/null and b/textures/ai/00000000047e6b803215371c.png differ diff --git a/textures/ai/0000000004eb50741007643f.png b/textures/ai/0000000004eb50741007643f.png new file mode 100644 index 0000000..d3bfb91 Binary files /dev/null and b/textures/ai/0000000004eb50741007643f.png differ diff --git a/textures/ai/0000000005553b84909a4c63.png b/textures/ai/0000000005553b84909a4c63.png new file mode 100644 index 0000000..06116c6 Binary files /dev/null and b/textures/ai/0000000005553b84909a4c63.png differ diff --git a/textures/ai/00000000066c8021004acda5.png b/textures/ai/00000000066c8021004acda5.png new file mode 100644 index 0000000..0f47534 Binary files /dev/null and b/textures/ai/00000000066c8021004acda5.png differ diff --git a/textures/ai/0000000006b4973e8d00abb9.png b/textures/ai/0000000006b4973e8d00abb9.png new file mode 100644 index 0000000..fa693a0 Binary files /dev/null and b/textures/ai/0000000006b4973e8d00abb9.png differ diff --git a/textures/ai/0000000006c8d57f588652ab.png b/textures/ai/0000000006c8d57f588652ab.png new file mode 100644 index 0000000..e1b7c3a Binary files /dev/null and b/textures/ai/0000000006c8d57f588652ab.png differ diff --git a/textures/ai/0000000007067ccf90c01a14.png b/textures/ai/0000000007067ccf90c01a14.png new file mode 100644 index 0000000..b41fb0b Binary files /dev/null and b/textures/ai/0000000007067ccf90c01a14.png differ diff --git a/textures/ai/0000000007afc936b19d643e.png b/textures/ai/0000000007afc936b19d643e.png new file mode 100644 index 0000000..959a9a8 Binary files /dev/null and b/textures/ai/0000000007afc936b19d643e.png differ diff --git a/textures/ai/00000000085872784f81efe2.png b/textures/ai/00000000085872784f81efe2.png new file mode 100644 index 0000000..2587e83 Binary files /dev/null and b/textures/ai/00000000085872784f81efe2.png differ diff --git a/textures/ai/000000000897fbb42d02eff1.png b/textures/ai/000000000897fbb42d02eff1.png new file mode 100644 index 0000000..a408eb9 Binary files /dev/null and b/textures/ai/000000000897fbb42d02eff1.png differ diff --git a/textures/ai/00000000093d261f6d52eac2.png b/textures/ai/00000000093d261f6d52eac2.png new file mode 100644 index 0000000..4875d30 Binary files /dev/null and b/textures/ai/00000000093d261f6d52eac2.png differ diff --git a/textures/ai/00000000098b1cca0ddf97bd.png b/textures/ai/00000000098b1cca0ddf97bd.png new file mode 100644 index 0000000..84da772 Binary files /dev/null and b/textures/ai/00000000098b1cca0ddf97bd.png differ diff --git a/textures/ai/000000000b09dcf0e19c3ca5.png b/textures/ai/000000000b09dcf0e19c3ca5.png new file mode 100644 index 0000000..01a0da2 Binary files /dev/null and b/textures/ai/000000000b09dcf0e19c3ca5.png differ diff --git a/textures/ai/000000000b3ae76866601589.png b/textures/ai/000000000b3ae76866601589.png new file mode 100644 index 0000000..5a1445c Binary files /dev/null and b/textures/ai/000000000b3ae76866601589.png differ diff --git a/textures/ai/000000000c038192e9147796.png b/textures/ai/000000000c038192e9147796.png new file mode 100644 index 0000000..4432269 Binary files /dev/null and b/textures/ai/000000000c038192e9147796.png differ diff --git a/textures/ai/000000000e27e8b47a9bc786.png b/textures/ai/000000000e27e8b47a9bc786.png new file mode 100644 index 0000000..47adfc2 Binary files /dev/null and b/textures/ai/000000000e27e8b47a9bc786.png differ diff --git a/textures/ai/000000000e460b2ba3366177.png b/textures/ai/000000000e460b2ba3366177.png new file mode 100644 index 0000000..e0b3a71 Binary files /dev/null and b/textures/ai/000000000e460b2ba3366177.png differ diff --git a/textures/ai/000000000eff5d3b2e691111.png b/textures/ai/000000000eff5d3b2e691111.png new file mode 100644 index 0000000..5a4e835 Binary files /dev/null and b/textures/ai/000000000eff5d3b2e691111.png differ diff --git a/textures/ai/000000000fa6f26ceca95ddf.png b/textures/ai/000000000fa6f26ceca95ddf.png new file mode 100644 index 0000000..d63450c Binary files /dev/null and b/textures/ai/000000000fa6f26ceca95ddf.png differ diff --git a/textures/ai/000000000ff7241486bda719.png b/textures/ai/000000000ff7241486bda719.png new file mode 100644 index 0000000..dfd3bbf Binary files /dev/null and b/textures/ai/000000000ff7241486bda719.png differ diff --git a/textures/ai/00000000104fbf99e334c4e2.png b/textures/ai/00000000104fbf99e334c4e2.png new file mode 100644 index 0000000..ea0ca77 Binary files /dev/null and b/textures/ai/00000000104fbf99e334c4e2.png differ diff --git a/textures/ai/000000001137279ee2e7fd5e.png b/textures/ai/000000001137279ee2e7fd5e.png new file mode 100644 index 0000000..e7705ba Binary files /dev/null and b/textures/ai/000000001137279ee2e7fd5e.png differ diff --git a/textures/ai/000000001251c435ea17b479.png b/textures/ai/000000001251c435ea17b479.png new file mode 100644 index 0000000..81ffd63 Binary files /dev/null and b/textures/ai/000000001251c435ea17b479.png differ diff --git a/textures/ai/0000000012a50eb7db22d091.png b/textures/ai/0000000012a50eb7db22d091.png new file mode 100644 index 0000000..805ad0a Binary files /dev/null and b/textures/ai/0000000012a50eb7db22d091.png differ diff --git a/textures/ai/0000000012b42217dcec8699.png b/textures/ai/0000000012b42217dcec8699.png new file mode 100644 index 0000000..72d840e Binary files /dev/null and b/textures/ai/0000000012b42217dcec8699.png differ diff --git a/textures/ai/00000000137fb05cb1117a5a.png b/textures/ai/00000000137fb05cb1117a5a.png new file mode 100644 index 0000000..c5da55d Binary files /dev/null and b/textures/ai/00000000137fb05cb1117a5a.png differ diff --git a/textures/ai/000000001409bbc9d49a42f7.png b/textures/ai/000000001409bbc9d49a42f7.png new file mode 100644 index 0000000..6e39ac0 Binary files /dev/null and b/textures/ai/000000001409bbc9d49a42f7.png differ diff --git a/textures/ai/00000000143115ec76dd762f.png b/textures/ai/00000000143115ec76dd762f.png new file mode 100644 index 0000000..f39ada1 Binary files /dev/null and b/textures/ai/00000000143115ec76dd762f.png differ diff --git a/textures/ai/00000000158dfd91c05fbc32.png b/textures/ai/00000000158dfd91c05fbc32.png new file mode 100644 index 0000000..3cd3870 Binary files /dev/null and b/textures/ai/00000000158dfd91c05fbc32.png differ diff --git a/textures/ai/0000000015b63cf74dc8ab6f.png b/textures/ai/0000000015b63cf74dc8ab6f.png new file mode 100644 index 0000000..64c1fed Binary files /dev/null and b/textures/ai/0000000015b63cf74dc8ab6f.png differ diff --git a/textures/ai/0000000016975477ff62bd1f.png b/textures/ai/0000000016975477ff62bd1f.png new file mode 100644 index 0000000..b73c1dc Binary files /dev/null and b/textures/ai/0000000016975477ff62bd1f.png differ diff --git a/textures/ai/00000000170f83dbf2e12cd4.png b/textures/ai/00000000170f83dbf2e12cd4.png new file mode 100644 index 0000000..b38582f Binary files /dev/null and b/textures/ai/00000000170f83dbf2e12cd4.png differ diff --git a/textures/ai/00000000176e92ed2bcf39bd.png b/textures/ai/00000000176e92ed2bcf39bd.png new file mode 100644 index 0000000..f9ffd60 Binary files /dev/null and b/textures/ai/00000000176e92ed2bcf39bd.png differ diff --git a/textures/ai/00000000181b4554ba8f60c5.png b/textures/ai/00000000181b4554ba8f60c5.png new file mode 100644 index 0000000..a387383 Binary files /dev/null and b/textures/ai/00000000181b4554ba8f60c5.png differ diff --git a/textures/ai/0000000018efb83f1a86cc2c.png b/textures/ai/0000000018efb83f1a86cc2c.png new file mode 100644 index 0000000..ea326a6 Binary files /dev/null and b/textures/ai/0000000018efb83f1a86cc2c.png differ diff --git a/textures/ai/0000000019ab2ecc6d5bf92b.png b/textures/ai/0000000019ab2ecc6d5bf92b.png new file mode 100644 index 0000000..e864533 Binary files /dev/null and b/textures/ai/0000000019ab2ecc6d5bf92b.png differ diff --git a/textures/ai/0000000019c83cf09ba48917.png b/textures/ai/0000000019c83cf09ba48917.png new file mode 100644 index 0000000..156111f Binary files /dev/null and b/textures/ai/0000000019c83cf09ba48917.png differ diff --git a/textures/ai/000000001a4987047e7c72f2.png b/textures/ai/000000001a4987047e7c72f2.png new file mode 100644 index 0000000..9aa4796 Binary files /dev/null and b/textures/ai/000000001a4987047e7c72f2.png differ diff --git a/textures/ai/000000001a5ed37d23bf37d7.png b/textures/ai/000000001a5ed37d23bf37d7.png new file mode 100644 index 0000000..5c703d5 Binary files /dev/null and b/textures/ai/000000001a5ed37d23bf37d7.png differ diff --git a/textures/ai/000000001b4f8ae9033cbb2f.png b/textures/ai/000000001b4f8ae9033cbb2f.png new file mode 100644 index 0000000..3ea0e10 Binary files /dev/null and b/textures/ai/000000001b4f8ae9033cbb2f.png differ diff --git a/textures/ai/000000001b5077230b221d66.png b/textures/ai/000000001b5077230b221d66.png new file mode 100644 index 0000000..8ab32d1 Binary files /dev/null and b/textures/ai/000000001b5077230b221d66.png differ diff --git a/textures/ai/000000001b913fc216e7e159.png b/textures/ai/000000001b913fc216e7e159.png new file mode 100644 index 0000000..b96b7a8 Binary files /dev/null and b/textures/ai/000000001b913fc216e7e159.png differ diff --git a/textures/ai/000000001bb966776d67daa2.png b/textures/ai/000000001bb966776d67daa2.png new file mode 100644 index 0000000..e454749 Binary files /dev/null and b/textures/ai/000000001bb966776d67daa2.png differ diff --git a/textures/ai/000000001bdf381df3e8ff50.png b/textures/ai/000000001bdf381df3e8ff50.png new file mode 100644 index 0000000..039503c Binary files /dev/null and b/textures/ai/000000001bdf381df3e8ff50.png differ diff --git a/textures/ai/000000001d6a3105e37f9500.png b/textures/ai/000000001d6a3105e37f9500.png new file mode 100644 index 0000000..fb201fd Binary files /dev/null and b/textures/ai/000000001d6a3105e37f9500.png differ diff --git a/textures/ai/000000001e21ee46f0219b7e.png b/textures/ai/000000001e21ee46f0219b7e.png new file mode 100644 index 0000000..16c3f8a Binary files /dev/null and b/textures/ai/000000001e21ee46f0219b7e.png differ diff --git a/textures/ai/000000001e4876511b34f248.png b/textures/ai/000000001e4876511b34f248.png new file mode 100644 index 0000000..9920898 Binary files /dev/null and b/textures/ai/000000001e4876511b34f248.png differ diff --git a/textures/ai/000000001e8c33d7e9ed9664.png b/textures/ai/000000001e8c33d7e9ed9664.png new file mode 100644 index 0000000..1d544df Binary files /dev/null and b/textures/ai/000000001e8c33d7e9ed9664.png differ diff --git a/textures/ai/000000001fc0f02841e88ed0.png b/textures/ai/000000001fc0f02841e88ed0.png new file mode 100644 index 0000000..8fb43c8 Binary files /dev/null and b/textures/ai/000000001fc0f02841e88ed0.png differ diff --git a/textures/ai/00000000208404af456bc495.png b/textures/ai/00000000208404af456bc495.png new file mode 100644 index 0000000..69beb55 Binary files /dev/null and b/textures/ai/00000000208404af456bc495.png differ diff --git a/textures/ai/00000000208990be8fabea75.png b/textures/ai/00000000208990be8fabea75.png new file mode 100644 index 0000000..1737145 Binary files /dev/null and b/textures/ai/00000000208990be8fabea75.png differ diff --git a/textures/ai/0000000020b15139ffa44396.png b/textures/ai/0000000020b15139ffa44396.png new file mode 100644 index 0000000..a21dfb2 Binary files /dev/null and b/textures/ai/0000000020b15139ffa44396.png differ diff --git a/textures/ai/0000000020d652d5ba7093fe.png b/textures/ai/0000000020d652d5ba7093fe.png new file mode 100644 index 0000000..13b554a Binary files /dev/null and b/textures/ai/0000000020d652d5ba7093fe.png differ diff --git a/textures/ai/00000000226a513a99819fdd.png b/textures/ai/00000000226a513a99819fdd.png new file mode 100644 index 0000000..7366149 Binary files /dev/null and b/textures/ai/00000000226a513a99819fdd.png differ diff --git a/textures/ai/00000000236ceda664478646.png b/textures/ai/00000000236ceda664478646.png new file mode 100644 index 0000000..555c4c5 Binary files /dev/null and b/textures/ai/00000000236ceda664478646.png differ diff --git a/textures/ai/00000000242cf103aec0aac7.png b/textures/ai/00000000242cf103aec0aac7.png new file mode 100644 index 0000000..9a736c2 Binary files /dev/null and b/textures/ai/00000000242cf103aec0aac7.png differ diff --git a/textures/ai/00000000242e98bcf76223a6.png b/textures/ai/00000000242e98bcf76223a6.png new file mode 100644 index 0000000..83ec024 Binary files /dev/null and b/textures/ai/00000000242e98bcf76223a6.png differ diff --git a/textures/ai/00000000247702c0adbe4300.png b/textures/ai/00000000247702c0adbe4300.png new file mode 100644 index 0000000..aaefa0c Binary files /dev/null and b/textures/ai/00000000247702c0adbe4300.png differ diff --git a/textures/ai/0000000024b8066839732777.png b/textures/ai/0000000024b8066839732777.png new file mode 100644 index 0000000..ec6c84c Binary files /dev/null and b/textures/ai/0000000024b8066839732777.png differ diff --git a/textures/ai/0000000024d2a8261154e9af.png b/textures/ai/0000000024d2a8261154e9af.png new file mode 100644 index 0000000..1a83e17 Binary files /dev/null and b/textures/ai/0000000024d2a8261154e9af.png differ diff --git a/textures/ai/0000000024fa3d666c498ebe.png b/textures/ai/0000000024fa3d666c498ebe.png new file mode 100644 index 0000000..fd84554 Binary files /dev/null and b/textures/ai/0000000024fa3d666c498ebe.png differ diff --git a/textures/ai/000000002575f920a126dd87.png b/textures/ai/000000002575f920a126dd87.png new file mode 100644 index 0000000..43bbd9c Binary files /dev/null and b/textures/ai/000000002575f920a126dd87.png differ diff --git a/textures/ai/0000000026597b73fe6760b2.png b/textures/ai/0000000026597b73fe6760b2.png new file mode 100644 index 0000000..509deb4 Binary files /dev/null and b/textures/ai/0000000026597b73fe6760b2.png differ diff --git a/textures/ai/0000000026f17262ae8a073a.png b/textures/ai/0000000026f17262ae8a073a.png new file mode 100644 index 0000000..178081f Binary files /dev/null and b/textures/ai/0000000026f17262ae8a073a.png differ diff --git a/textures/ai/000000002710365acd41c7f9.png b/textures/ai/000000002710365acd41c7f9.png new file mode 100644 index 0000000..1506b1e Binary files /dev/null and b/textures/ai/000000002710365acd41c7f9.png differ diff --git a/textures/ai/00000000282491bd5aa2de87.png b/textures/ai/00000000282491bd5aa2de87.png new file mode 100644 index 0000000..f6492fe Binary files /dev/null and b/textures/ai/00000000282491bd5aa2de87.png differ diff --git a/textures/ai/000000002825aacdd6824359.png b/textures/ai/000000002825aacdd6824359.png new file mode 100644 index 0000000..85f078b Binary files /dev/null and b/textures/ai/000000002825aacdd6824359.png differ diff --git a/textures/ai/0000000028fceec56ca34be2.png b/textures/ai/0000000028fceec56ca34be2.png new file mode 100644 index 0000000..16a7586 Binary files /dev/null and b/textures/ai/0000000028fceec56ca34be2.png differ diff --git a/textures/ai/000000002920096df215fd95.png b/textures/ai/000000002920096df215fd95.png new file mode 100644 index 0000000..d942bee Binary files /dev/null and b/textures/ai/000000002920096df215fd95.png differ diff --git a/textures/ai/000000002994557437984084.png b/textures/ai/000000002994557437984084.png new file mode 100644 index 0000000..f6749bd Binary files /dev/null and b/textures/ai/000000002994557437984084.png differ diff --git a/textures/ai/000000002a3edbc646096aa7.png b/textures/ai/000000002a3edbc646096aa7.png new file mode 100644 index 0000000..d1e9a48 Binary files /dev/null and b/textures/ai/000000002a3edbc646096aa7.png differ diff --git a/textures/ai/000000002a5dec8fe8d716fd.png b/textures/ai/000000002a5dec8fe8d716fd.png new file mode 100644 index 0000000..0ba516c Binary files /dev/null and b/textures/ai/000000002a5dec8fe8d716fd.png differ diff --git a/textures/ai/000000002bf72d6204690c48.png b/textures/ai/000000002bf72d6204690c48.png new file mode 100644 index 0000000..cd9d7cd Binary files /dev/null and b/textures/ai/000000002bf72d6204690c48.png differ diff --git a/textures/ai/000000002c6cac98fd378fb2.png b/textures/ai/000000002c6cac98fd378fb2.png new file mode 100644 index 0000000..993e9f9 Binary files /dev/null and b/textures/ai/000000002c6cac98fd378fb2.png differ diff --git a/textures/ai/000000002ca16b3098118d65.png b/textures/ai/000000002ca16b3098118d65.png new file mode 100644 index 0000000..24deda6 Binary files /dev/null and b/textures/ai/000000002ca16b3098118d65.png differ diff --git a/textures/ai/000000002d1a1cd6063e9a38.png b/textures/ai/000000002d1a1cd6063e9a38.png new file mode 100644 index 0000000..9ae2961 Binary files /dev/null and b/textures/ai/000000002d1a1cd6063e9a38.png differ diff --git a/textures/ai/000000002d841f5f8fab2a49.png b/textures/ai/000000002d841f5f8fab2a49.png new file mode 100644 index 0000000..104452f Binary files /dev/null and b/textures/ai/000000002d841f5f8fab2a49.png differ diff --git a/textures/ai/000000002e01edb636ad7252.png b/textures/ai/000000002e01edb636ad7252.png new file mode 100644 index 0000000..9c8ef66 Binary files /dev/null and b/textures/ai/000000002e01edb636ad7252.png differ diff --git a/textures/ai/000000002e506b03aa34dd45.png b/textures/ai/000000002e506b03aa34dd45.png new file mode 100644 index 0000000..9ec17c8 Binary files /dev/null and b/textures/ai/000000002e506b03aa34dd45.png differ diff --git a/textures/ai/000000002ef22b55128dac38.png b/textures/ai/000000002ef22b55128dac38.png new file mode 100644 index 0000000..47a8271 Binary files /dev/null and b/textures/ai/000000002ef22b55128dac38.png differ diff --git a/textures/ai/00000000305ff6b39e17296a.png b/textures/ai/00000000305ff6b39e17296a.png new file mode 100644 index 0000000..203225f Binary files /dev/null and b/textures/ai/00000000305ff6b39e17296a.png differ diff --git a/textures/ai/0000000030716af40b2fdd71.png b/textures/ai/0000000030716af40b2fdd71.png new file mode 100644 index 0000000..01ad008 Binary files /dev/null and b/textures/ai/0000000030716af40b2fdd71.png differ diff --git a/textures/ai/0000000031535f8185a16484.png b/textures/ai/0000000031535f8185a16484.png new file mode 100644 index 0000000..3dd35fc Binary files /dev/null and b/textures/ai/0000000031535f8185a16484.png differ diff --git a/textures/ai/000000003230a7581898e35e.png b/textures/ai/000000003230a7581898e35e.png new file mode 100644 index 0000000..c846b59 Binary files /dev/null and b/textures/ai/000000003230a7581898e35e.png differ diff --git a/textures/ai/0000000032c8a7e497aef795.png b/textures/ai/0000000032c8a7e497aef795.png new file mode 100644 index 0000000..659809d Binary files /dev/null and b/textures/ai/0000000032c8a7e497aef795.png differ diff --git a/textures/ai/000000003389b8f557a4cc72.png b/textures/ai/000000003389b8f557a4cc72.png new file mode 100644 index 0000000..520d04c Binary files /dev/null and b/textures/ai/000000003389b8f557a4cc72.png differ diff --git a/textures/ai/0000000034e5aabda56065c8.png b/textures/ai/0000000034e5aabda56065c8.png new file mode 100644 index 0000000..a4405c0 Binary files /dev/null and b/textures/ai/0000000034e5aabda56065c8.png differ diff --git a/textures/ai/0000000035e9310277e47db6.png b/textures/ai/0000000035e9310277e47db6.png new file mode 100644 index 0000000..7ebf240 Binary files /dev/null and b/textures/ai/0000000035e9310277e47db6.png differ diff --git a/textures/ai/0000000036541cd1cff11ba6.png b/textures/ai/0000000036541cd1cff11ba6.png new file mode 100644 index 0000000..3dcac1c Binary files /dev/null and b/textures/ai/0000000036541cd1cff11ba6.png differ diff --git a/textures/ai/0000000036860bb916f22813.png b/textures/ai/0000000036860bb916f22813.png new file mode 100644 index 0000000..0ddaf48 Binary files /dev/null and b/textures/ai/0000000036860bb916f22813.png differ diff --git a/textures/ai/0000000036db5d4cf1450651.png b/textures/ai/0000000036db5d4cf1450651.png new file mode 100644 index 0000000..62cbab2 Binary files /dev/null and b/textures/ai/0000000036db5d4cf1450651.png differ diff --git a/textures/ai/00000000373c0a7b702f11dd.png b/textures/ai/00000000373c0a7b702f11dd.png new file mode 100644 index 0000000..bba85e4 Binary files /dev/null and b/textures/ai/00000000373c0a7b702f11dd.png differ diff --git a/textures/ai/0000000039cf6482324c7094.png b/textures/ai/0000000039cf6482324c7094.png new file mode 100644 index 0000000..83bde96 Binary files /dev/null and b/textures/ai/0000000039cf6482324c7094.png differ diff --git a/textures/ai/000000003af416bd6f5ab6b1.png b/textures/ai/000000003af416bd6f5ab6b1.png new file mode 100644 index 0000000..544e911 Binary files /dev/null and b/textures/ai/000000003af416bd6f5ab6b1.png differ diff --git a/textures/ai/000000003af5e79efa55d3e8.png b/textures/ai/000000003af5e79efa55d3e8.png new file mode 100644 index 0000000..734f8ef Binary files /dev/null and b/textures/ai/000000003af5e79efa55d3e8.png differ diff --git a/textures/ai/000000003afe5b9761865966.png b/textures/ai/000000003afe5b9761865966.png new file mode 100644 index 0000000..8fd54ed Binary files /dev/null and b/textures/ai/000000003afe5b9761865966.png differ diff --git a/textures/ai/000000003c623cfac1657ef7.png b/textures/ai/000000003c623cfac1657ef7.png new file mode 100644 index 0000000..32c92a6 Binary files /dev/null and b/textures/ai/000000003c623cfac1657ef7.png differ diff --git a/textures/ai/000000003cd0b92a1e660ca0.png b/textures/ai/000000003cd0b92a1e660ca0.png new file mode 100644 index 0000000..e05088e Binary files /dev/null and b/textures/ai/000000003cd0b92a1e660ca0.png differ diff --git a/textures/ai/000000003d5673f66e89e64d.png b/textures/ai/000000003d5673f66e89e64d.png new file mode 100644 index 0000000..eba3305 Binary files /dev/null and b/textures/ai/000000003d5673f66e89e64d.png differ diff --git a/textures/ai/000000003d70d68c53248483.png b/textures/ai/000000003d70d68c53248483.png new file mode 100644 index 0000000..4f98362 Binary files /dev/null and b/textures/ai/000000003d70d68c53248483.png differ diff --git a/textures/ai/000000003d73c3e783b3d3a6.png b/textures/ai/000000003d73c3e783b3d3a6.png new file mode 100644 index 0000000..1a68e24 Binary files /dev/null and b/textures/ai/000000003d73c3e783b3d3a6.png differ diff --git a/textures/ai/000000003dedd9117b60a908.png b/textures/ai/000000003dedd9117b60a908.png new file mode 100644 index 0000000..65ddcfa Binary files /dev/null and b/textures/ai/000000003dedd9117b60a908.png differ diff --git a/textures/ai/000000003e93f77a4b71a2fd.png b/textures/ai/000000003e93f77a4b71a2fd.png new file mode 100644 index 0000000..9cfc9ac Binary files /dev/null and b/textures/ai/000000003e93f77a4b71a2fd.png differ diff --git a/textures/ai/000000003edf9489c5f9caf2.png b/textures/ai/000000003edf9489c5f9caf2.png new file mode 100644 index 0000000..bb4b3fe Binary files /dev/null and b/textures/ai/000000003edf9489c5f9caf2.png differ diff --git a/textures/ai/000000003f32e1bf03561d40.png b/textures/ai/000000003f32e1bf03561d40.png new file mode 100644 index 0000000..f96ec7a Binary files /dev/null and b/textures/ai/000000003f32e1bf03561d40.png differ diff --git a/textures/ai/000000003f4b92554b0d9dbf.png b/textures/ai/000000003f4b92554b0d9dbf.png new file mode 100644 index 0000000..fc94de1 Binary files /dev/null and b/textures/ai/000000003f4b92554b0d9dbf.png differ diff --git a/textures/ai/0000000040aa1d3f2be9fc92.png b/textures/ai/0000000040aa1d3f2be9fc92.png new file mode 100644 index 0000000..6d32b1a Binary files /dev/null and b/textures/ai/0000000040aa1d3f2be9fc92.png differ diff --git a/textures/ai/0000000040c0fcae2d41e1c7.png b/textures/ai/0000000040c0fcae2d41e1c7.png new file mode 100644 index 0000000..dca7152 Binary files /dev/null and b/textures/ai/0000000040c0fcae2d41e1c7.png differ diff --git a/textures/ai/000000004199a765ba8d392b.png b/textures/ai/000000004199a765ba8d392b.png new file mode 100644 index 0000000..16e1c90 Binary files /dev/null and b/textures/ai/000000004199a765ba8d392b.png differ diff --git a/textures/ai/00000000419f64c00ef39c13.png b/textures/ai/00000000419f64c00ef39c13.png new file mode 100644 index 0000000..5a3262b Binary files /dev/null and b/textures/ai/00000000419f64c00ef39c13.png differ diff --git a/textures/ai/0000000043598df51b34f248.png b/textures/ai/0000000043598df51b34f248.png new file mode 100644 index 0000000..1d577a9 Binary files /dev/null and b/textures/ai/0000000043598df51b34f248.png differ diff --git a/textures/ai/0000000044201c38c88bfbd0.png b/textures/ai/0000000044201c38c88bfbd0.png new file mode 100644 index 0000000..c09e725 Binary files /dev/null and b/textures/ai/0000000044201c38c88bfbd0.png differ diff --git a/textures/ai/000000004481c351f76b5c28.png b/textures/ai/000000004481c351f76b5c28.png new file mode 100644 index 0000000..844c285 Binary files /dev/null and b/textures/ai/000000004481c351f76b5c28.png differ diff --git a/textures/ai/00000000457c7f6a53cc4214.png b/textures/ai/00000000457c7f6a53cc4214.png new file mode 100644 index 0000000..5663ecb Binary files /dev/null and b/textures/ai/00000000457c7f6a53cc4214.png differ diff --git a/textures/ai/0000000046c56064040d62d5.png b/textures/ai/0000000046c56064040d62d5.png new file mode 100644 index 0000000..58ea692 Binary files /dev/null and b/textures/ai/0000000046c56064040d62d5.png differ diff --git a/textures/ai/000000004742dcda9a853b1d.png b/textures/ai/000000004742dcda9a853b1d.png new file mode 100644 index 0000000..3e177cb Binary files /dev/null and b/textures/ai/000000004742dcda9a853b1d.png differ diff --git a/textures/ai/000000004751a562b2b85836.png b/textures/ai/000000004751a562b2b85836.png new file mode 100644 index 0000000..9e45038 Binary files /dev/null and b/textures/ai/000000004751a562b2b85836.png differ diff --git a/textures/ai/0000000047cf2bc0bb6c8599.png b/textures/ai/0000000047cf2bc0bb6c8599.png new file mode 100644 index 0000000..1424962 Binary files /dev/null and b/textures/ai/0000000047cf2bc0bb6c8599.png differ diff --git a/textures/ai/00000000491e753abf87a3d0.png b/textures/ai/00000000491e753abf87a3d0.png new file mode 100644 index 0000000..fab1b62 Binary files /dev/null and b/textures/ai/00000000491e753abf87a3d0.png differ diff --git a/textures/ai/000000004960e49b90b33422.png b/textures/ai/000000004960e49b90b33422.png new file mode 100644 index 0000000..b1e5a14 Binary files /dev/null and b/textures/ai/000000004960e49b90b33422.png differ diff --git a/textures/ai/000000004989a306563de25a.png b/textures/ai/000000004989a306563de25a.png new file mode 100644 index 0000000..ae236e7 Binary files /dev/null and b/textures/ai/000000004989a306563de25a.png differ diff --git a/textures/ai/000000004a12d3fba06d59ac.png b/textures/ai/000000004a12d3fba06d59ac.png new file mode 100644 index 0000000..3f9971b Binary files /dev/null and b/textures/ai/000000004a12d3fba06d59ac.png differ diff --git a/textures/ai/000000004b770f6665756ec5.png b/textures/ai/000000004b770f6665756ec5.png new file mode 100644 index 0000000..96395af Binary files /dev/null and b/textures/ai/000000004b770f6665756ec5.png differ diff --git a/textures/ai/000000004b7cd6c6efa1851f.png b/textures/ai/000000004b7cd6c6efa1851f.png new file mode 100644 index 0000000..c07c55b Binary files /dev/null and b/textures/ai/000000004b7cd6c6efa1851f.png differ diff --git a/textures/ai/000000004c35e67a7299536c.png b/textures/ai/000000004c35e67a7299536c.png new file mode 100644 index 0000000..3a7aa12 Binary files /dev/null and b/textures/ai/000000004c35e67a7299536c.png differ diff --git a/textures/ai/000000004d58df85d97d266f.png b/textures/ai/000000004d58df85d97d266f.png new file mode 100644 index 0000000..f41f15b Binary files /dev/null and b/textures/ai/000000004d58df85d97d266f.png differ diff --git a/textures/ai/000000004e389abd5652eb56.png b/textures/ai/000000004e389abd5652eb56.png new file mode 100644 index 0000000..a5dcfe1 Binary files /dev/null and b/textures/ai/000000004e389abd5652eb56.png differ diff --git a/textures/ai/000000004e40ae74a7e2fffe.png b/textures/ai/000000004e40ae74a7e2fffe.png new file mode 100644 index 0000000..b6d82f0 Binary files /dev/null and b/textures/ai/000000004e40ae74a7e2fffe.png differ diff --git a/textures/ai/000000004e4884a471dea25e.png b/textures/ai/000000004e4884a471dea25e.png new file mode 100644 index 0000000..c5348d8 Binary files /dev/null and b/textures/ai/000000004e4884a471dea25e.png differ diff --git a/textures/ai/000000004e55002aacad097d.png b/textures/ai/000000004e55002aacad097d.png new file mode 100644 index 0000000..122202b Binary files /dev/null and b/textures/ai/000000004e55002aacad097d.png differ diff --git a/textures/ai/000000004f717d5974be0c15.png b/textures/ai/000000004f717d5974be0c15.png new file mode 100644 index 0000000..93de598 Binary files /dev/null and b/textures/ai/000000004f717d5974be0c15.png differ diff --git a/textures/ai/000000004f76fd919185971f.png b/textures/ai/000000004f76fd919185971f.png new file mode 100644 index 0000000..a49139b Binary files /dev/null and b/textures/ai/000000004f76fd919185971f.png differ diff --git a/textures/ai/000000004fdbf4e03c6a1cc3.png b/textures/ai/000000004fdbf4e03c6a1cc3.png new file mode 100644 index 0000000..fb0b21a Binary files /dev/null and b/textures/ai/000000004fdbf4e03c6a1cc3.png differ diff --git a/textures/ai/00000000500d36e008763bea.png b/textures/ai/00000000500d36e008763bea.png new file mode 100644 index 0000000..d783071 Binary files /dev/null and b/textures/ai/00000000500d36e008763bea.png differ diff --git a/textures/ai/000000005032611fa66402d8.png b/textures/ai/000000005032611fa66402d8.png new file mode 100644 index 0000000..f807464 Binary files /dev/null and b/textures/ai/000000005032611fa66402d8.png differ diff --git a/textures/ai/000000005042605462395a90.png b/textures/ai/000000005042605462395a90.png new file mode 100644 index 0000000..77e6c7b Binary files /dev/null and b/textures/ai/000000005042605462395a90.png differ diff --git a/textures/ai/00000000506867b535219b85.png b/textures/ai/00000000506867b535219b85.png new file mode 100644 index 0000000..7bd80dc Binary files /dev/null and b/textures/ai/00000000506867b535219b85.png differ diff --git a/textures/ai/0000000050ce27d36048dc4a.png b/textures/ai/0000000050ce27d36048dc4a.png new file mode 100644 index 0000000..e3215ab Binary files /dev/null and b/textures/ai/0000000050ce27d36048dc4a.png differ diff --git a/textures/ai/00000000514533e92f54377b.png b/textures/ai/00000000514533e92f54377b.png new file mode 100644 index 0000000..d143687 Binary files /dev/null and b/textures/ai/00000000514533e92f54377b.png differ diff --git a/textures/ai/00000000514def643340182a.png b/textures/ai/00000000514def643340182a.png new file mode 100644 index 0000000..6e72f9c Binary files /dev/null and b/textures/ai/00000000514def643340182a.png differ diff --git a/textures/ai/00000000522c5a21e869c062.png b/textures/ai/00000000522c5a21e869c062.png new file mode 100644 index 0000000..b610cca Binary files /dev/null and b/textures/ai/00000000522c5a21e869c062.png differ diff --git a/textures/ai/0000000052b804486f5e415b.png b/textures/ai/0000000052b804486f5e415b.png new file mode 100644 index 0000000..53754d6 Binary files /dev/null and b/textures/ai/0000000052b804486f5e415b.png differ diff --git a/textures/ai/0000000052d2272fb356f9b6.png b/textures/ai/0000000052d2272fb356f9b6.png new file mode 100644 index 0000000..f5f44c8 Binary files /dev/null and b/textures/ai/0000000052d2272fb356f9b6.png differ diff --git a/textures/ai/0000000054065bb1ef2c7d31.png b/textures/ai/0000000054065bb1ef2c7d31.png new file mode 100644 index 0000000..78c93c4 Binary files /dev/null and b/textures/ai/0000000054065bb1ef2c7d31.png differ diff --git a/textures/ai/000000005471deb1deb77817.png b/textures/ai/000000005471deb1deb77817.png new file mode 100644 index 0000000..265723c Binary files /dev/null and b/textures/ai/000000005471deb1deb77817.png differ diff --git a/textures/ai/000000005474830dc33871e3.png b/textures/ai/000000005474830dc33871e3.png new file mode 100644 index 0000000..f7683f7 Binary files /dev/null and b/textures/ai/000000005474830dc33871e3.png differ diff --git a/textures/ai/0000000055c4531e2dfd3073.png b/textures/ai/0000000055c4531e2dfd3073.png new file mode 100644 index 0000000..7f8af01 Binary files /dev/null and b/textures/ai/0000000055c4531e2dfd3073.png differ diff --git a/textures/ai/0000000055d5c9d6a9b388d4.png b/textures/ai/0000000055d5c9d6a9b388d4.png new file mode 100644 index 0000000..907239c Binary files /dev/null and b/textures/ai/0000000055d5c9d6a9b388d4.png differ diff --git a/textures/ai/00000000569b26a74dc1607c.png b/textures/ai/00000000569b26a74dc1607c.png new file mode 100644 index 0000000..2fe3b9c Binary files /dev/null and b/textures/ai/00000000569b26a74dc1607c.png differ diff --git a/textures/ai/00000000569ed47828dd721f.png b/textures/ai/00000000569ed47828dd721f.png new file mode 100644 index 0000000..90c2faa Binary files /dev/null and b/textures/ai/00000000569ed47828dd721f.png differ diff --git a/textures/ai/0000000056b9e3e782734b3c.png b/textures/ai/0000000056b9e3e782734b3c.png new file mode 100644 index 0000000..bab6eac Binary files /dev/null and b/textures/ai/0000000056b9e3e782734b3c.png differ diff --git a/textures/ai/0000000056e1a03fd122ddaa.png b/textures/ai/0000000056e1a03fd122ddaa.png new file mode 100644 index 0000000..a5ee796 Binary files /dev/null and b/textures/ai/0000000056e1a03fd122ddaa.png differ diff --git a/textures/ai/00000000572ee594e9c1fa15.png b/textures/ai/00000000572ee594e9c1fa15.png new file mode 100644 index 0000000..7cdc6d7 Binary files /dev/null and b/textures/ai/00000000572ee594e9c1fa15.png differ diff --git a/textures/ai/0000000058f686ffd8695da5.png b/textures/ai/0000000058f686ffd8695da5.png new file mode 100644 index 0000000..0191c6a Binary files /dev/null and b/textures/ai/0000000058f686ffd8695da5.png differ diff --git a/textures/ai/000000005a16c1c29cd5bf01.png b/textures/ai/000000005a16c1c29cd5bf01.png new file mode 100644 index 0000000..8a18765 Binary files /dev/null and b/textures/ai/000000005a16c1c29cd5bf01.png differ diff --git a/textures/ai/000000005a2cfd0960aa5a55.png b/textures/ai/000000005a2cfd0960aa5a55.png new file mode 100644 index 0000000..7e18cdc Binary files /dev/null and b/textures/ai/000000005a2cfd0960aa5a55.png differ diff --git a/textures/ai/000000005b1788d3388d311e.png b/textures/ai/000000005b1788d3388d311e.png new file mode 100644 index 0000000..7ab94fb Binary files /dev/null and b/textures/ai/000000005b1788d3388d311e.png differ diff --git a/textures/ai/000000005b78dfab08be8e89.png b/textures/ai/000000005b78dfab08be8e89.png new file mode 100644 index 0000000..30dd82c Binary files /dev/null and b/textures/ai/000000005b78dfab08be8e89.png differ diff --git a/textures/ai/000000005b9590837f993667.png b/textures/ai/000000005b9590837f993667.png new file mode 100644 index 0000000..36de3ad Binary files /dev/null and b/textures/ai/000000005b9590837f993667.png differ diff --git a/textures/ai/000000005c59840f5908a93a.png b/textures/ai/000000005c59840f5908a93a.png new file mode 100644 index 0000000..eea3cb5 Binary files /dev/null and b/textures/ai/000000005c59840f5908a93a.png differ diff --git a/textures/ai/000000005c770b975ae161f7.png b/textures/ai/000000005c770b975ae161f7.png new file mode 100644 index 0000000..4948378 Binary files /dev/null and b/textures/ai/000000005c770b975ae161f7.png differ diff --git a/textures/ai/000000005cd5c6b74543b427.png b/textures/ai/000000005cd5c6b74543b427.png new file mode 100644 index 0000000..e1cc7bc Binary files /dev/null and b/textures/ai/000000005cd5c6b74543b427.png differ diff --git a/textures/ai/000000005cdd0ea1f8f391a0.png b/textures/ai/000000005cdd0ea1f8f391a0.png new file mode 100644 index 0000000..64e8aab Binary files /dev/null and b/textures/ai/000000005cdd0ea1f8f391a0.png differ diff --git a/textures/ai/000000005d8fae98afe4c3e7.png b/textures/ai/000000005d8fae98afe4c3e7.png new file mode 100644 index 0000000..763266b Binary files /dev/null and b/textures/ai/000000005d8fae98afe4c3e7.png differ diff --git a/textures/ai/000000005dd25a439b63bb0a.png b/textures/ai/000000005dd25a439b63bb0a.png new file mode 100644 index 0000000..c8df8d5 Binary files /dev/null and b/textures/ai/000000005dd25a439b63bb0a.png differ diff --git a/textures/ai/000000005e0dde57677497a6.png b/textures/ai/000000005e0dde57677497a6.png new file mode 100644 index 0000000..0df8f5d Binary files /dev/null and b/textures/ai/000000005e0dde57677497a6.png differ diff --git a/textures/ai/000000005e99b8a84d41212c.png b/textures/ai/000000005e99b8a84d41212c.png new file mode 100644 index 0000000..4596658 Binary files /dev/null and b/textures/ai/000000005e99b8a84d41212c.png differ diff --git a/textures/ai/000000005fe488c639fe38ca.png b/textures/ai/000000005fe488c639fe38ca.png new file mode 100644 index 0000000..99e8484 Binary files /dev/null and b/textures/ai/000000005fe488c639fe38ca.png differ diff --git a/textures/ai/0000000061b0b64e7bea8257.png b/textures/ai/0000000061b0b64e7bea8257.png new file mode 100644 index 0000000..da8003a Binary files /dev/null and b/textures/ai/0000000061b0b64e7bea8257.png differ diff --git a/textures/ai/00000000629ab5f00ffd31dd.png b/textures/ai/00000000629ab5f00ffd31dd.png new file mode 100644 index 0000000..b402193 Binary files /dev/null and b/textures/ai/00000000629ab5f00ffd31dd.png differ diff --git a/textures/ai/000000006346aed9def8dd47.png b/textures/ai/000000006346aed9def8dd47.png new file mode 100644 index 0000000..7eb30d6 Binary files /dev/null and b/textures/ai/000000006346aed9def8dd47.png differ diff --git a/textures/ai/000000006375787bad066a44.png b/textures/ai/000000006375787bad066a44.png new file mode 100644 index 0000000..bbfc773 Binary files /dev/null and b/textures/ai/000000006375787bad066a44.png differ diff --git a/textures/ai/000000006455f5d508b6b57e.png b/textures/ai/000000006455f5d508b6b57e.png new file mode 100644 index 0000000..9316b93 Binary files /dev/null and b/textures/ai/000000006455f5d508b6b57e.png differ diff --git a/textures/ai/00000000668c006c9ed1183c.png b/textures/ai/00000000668c006c9ed1183c.png new file mode 100644 index 0000000..8cf486d Binary files /dev/null and b/textures/ai/00000000668c006c9ed1183c.png differ diff --git a/textures/ai/0000000066ea9a6bfc504a67.png b/textures/ai/0000000066ea9a6bfc504a67.png new file mode 100644 index 0000000..e7abe7a Binary files /dev/null and b/textures/ai/0000000066ea9a6bfc504a67.png differ diff --git a/textures/ai/0000000067d8be291eb8229a.png b/textures/ai/0000000067d8be291eb8229a.png new file mode 100644 index 0000000..8f7e08f Binary files /dev/null and b/textures/ai/0000000067d8be291eb8229a.png differ diff --git a/textures/ai/0000000067f99540c6330186.png b/textures/ai/0000000067f99540c6330186.png new file mode 100644 index 0000000..af891a1 Binary files /dev/null and b/textures/ai/0000000067f99540c6330186.png differ diff --git a/textures/ai/00000000681b66fda50731bf.png b/textures/ai/00000000681b66fda50731bf.png new file mode 100644 index 0000000..1f4d37c Binary files /dev/null and b/textures/ai/00000000681b66fda50731bf.png differ diff --git a/textures/ai/00000000684348589235808e.png b/textures/ai/00000000684348589235808e.png new file mode 100644 index 0000000..c7071cb Binary files /dev/null and b/textures/ai/00000000684348589235808e.png differ diff --git a/textures/ai/0000000068e03747e5ccc87e.png b/textures/ai/0000000068e03747e5ccc87e.png new file mode 100644 index 0000000..4e302db Binary files /dev/null and b/textures/ai/0000000068e03747e5ccc87e.png differ diff --git a/textures/ai/00000000693e34d3980253af.png b/textures/ai/00000000693e34d3980253af.png new file mode 100644 index 0000000..097ddae Binary files /dev/null and b/textures/ai/00000000693e34d3980253af.png differ diff --git a/textures/ai/00000000698ef64be9245e9c.png b/textures/ai/00000000698ef64be9245e9c.png new file mode 100644 index 0000000..0e4713f Binary files /dev/null and b/textures/ai/00000000698ef64be9245e9c.png differ diff --git a/textures/ai/0000000069bc5fcfb5ec11cd.png b/textures/ai/0000000069bc5fcfb5ec11cd.png new file mode 100644 index 0000000..140918b Binary files /dev/null and b/textures/ai/0000000069bc5fcfb5ec11cd.png differ diff --git a/textures/ai/0000000069d422de3f7cf7d7.png b/textures/ai/0000000069d422de3f7cf7d7.png new file mode 100644 index 0000000..1e29201 Binary files /dev/null and b/textures/ai/0000000069d422de3f7cf7d7.png differ diff --git a/textures/ai/0000000069d8a83ec9646f98.png b/textures/ai/0000000069d8a83ec9646f98.png new file mode 100644 index 0000000..122e98d Binary files /dev/null and b/textures/ai/0000000069d8a83ec9646f98.png differ diff --git a/textures/ai/000000006a602aa00f9650a6.png b/textures/ai/000000006a602aa00f9650a6.png new file mode 100644 index 0000000..41cf04e Binary files /dev/null and b/textures/ai/000000006a602aa00f9650a6.png differ diff --git a/textures/ai/000000006ae2fb2023942ed4.png b/textures/ai/000000006ae2fb2023942ed4.png new file mode 100644 index 0000000..e5cbbd9 Binary files /dev/null and b/textures/ai/000000006ae2fb2023942ed4.png differ diff --git a/textures/ai/000000006b16c61da35edd07.png b/textures/ai/000000006b16c61da35edd07.png new file mode 100644 index 0000000..cb79021 Binary files /dev/null and b/textures/ai/000000006b16c61da35edd07.png differ diff --git a/textures/ai/000000006bdeda5fd84545d4.png b/textures/ai/000000006bdeda5fd84545d4.png new file mode 100644 index 0000000..06782f4 Binary files /dev/null and b/textures/ai/000000006bdeda5fd84545d4.png differ diff --git a/textures/ai/000000006d298ddec1a97e86.png b/textures/ai/000000006d298ddec1a97e86.png new file mode 100644 index 0000000..252575a Binary files /dev/null and b/textures/ai/000000006d298ddec1a97e86.png differ diff --git a/textures/ai/000000006d330c53f1332c88.png b/textures/ai/000000006d330c53f1332c88.png new file mode 100644 index 0000000..4a99423 Binary files /dev/null and b/textures/ai/000000006d330c53f1332c88.png differ diff --git a/textures/ai/000000006d51d3716a50d168.png b/textures/ai/000000006d51d3716a50d168.png new file mode 100644 index 0000000..d34fdc2 Binary files /dev/null and b/textures/ai/000000006d51d3716a50d168.png differ diff --git a/textures/ai/000000006dbe8a9417f01d74.png b/textures/ai/000000006dbe8a9417f01d74.png new file mode 100644 index 0000000..893c404 Binary files /dev/null and b/textures/ai/000000006dbe8a9417f01d74.png differ diff --git a/textures/ai/000000006e28ca6e2015e0b4.png b/textures/ai/000000006e28ca6e2015e0b4.png new file mode 100644 index 0000000..828471d Binary files /dev/null and b/textures/ai/000000006e28ca6e2015e0b4.png differ diff --git a/textures/ai/000000006e312178e62b52af.png b/textures/ai/000000006e312178e62b52af.png new file mode 100644 index 0000000..611fe83 Binary files /dev/null and b/textures/ai/000000006e312178e62b52af.png differ diff --git a/textures/ai/000000006e8dc22b1d365321.png b/textures/ai/000000006e8dc22b1d365321.png new file mode 100644 index 0000000..3f85cf9 Binary files /dev/null and b/textures/ai/000000006e8dc22b1d365321.png differ diff --git a/textures/ai/000000006ea710ce4ed0cfd2.png b/textures/ai/000000006ea710ce4ed0cfd2.png new file mode 100644 index 0000000..3d5d6a4 Binary files /dev/null and b/textures/ai/000000006ea710ce4ed0cfd2.png differ diff --git a/textures/ai/000000006f6d53075ea88910.png b/textures/ai/000000006f6d53075ea88910.png new file mode 100644 index 0000000..b7fc0ef Binary files /dev/null and b/textures/ai/000000006f6d53075ea88910.png differ diff --git a/textures/ai/000000006faeba42074c47c7.png b/textures/ai/000000006faeba42074c47c7.png new file mode 100644 index 0000000..c6947bb Binary files /dev/null and b/textures/ai/000000006faeba42074c47c7.png differ diff --git a/textures/ai/000000006fcffe782e6f1898.png b/textures/ai/000000006fcffe782e6f1898.png new file mode 100644 index 0000000..06ffd7b Binary files /dev/null and b/textures/ai/000000006fcffe782e6f1898.png differ diff --git a/textures/ai/0000000070af0d8fe959cf3c.png b/textures/ai/0000000070af0d8fe959cf3c.png new file mode 100644 index 0000000..6a7cf21 Binary files /dev/null and b/textures/ai/0000000070af0d8fe959cf3c.png differ diff --git a/textures/ai/0000000070b572acbb0e132b.png b/textures/ai/0000000070b572acbb0e132b.png new file mode 100644 index 0000000..e3176f3 Binary files /dev/null and b/textures/ai/0000000070b572acbb0e132b.png differ diff --git a/textures/ai/0000000071a1200c0d43c9e3.png b/textures/ai/0000000071a1200c0d43c9e3.png new file mode 100644 index 0000000..ade77ac Binary files /dev/null and b/textures/ai/0000000071a1200c0d43c9e3.png differ diff --git a/textures/ai/0000000071e1c0ede0af4289.png b/textures/ai/0000000071e1c0ede0af4289.png new file mode 100644 index 0000000..81cc651 Binary files /dev/null and b/textures/ai/0000000071e1c0ede0af4289.png differ diff --git a/textures/ai/0000000071fd8307d122ddaa.png b/textures/ai/0000000071fd8307d122ddaa.png new file mode 100644 index 0000000..57e0904 Binary files /dev/null and b/textures/ai/0000000071fd8307d122ddaa.png differ diff --git a/textures/ai/00000000720d621ec80965d9.png b/textures/ai/00000000720d621ec80965d9.png new file mode 100644 index 0000000..617c740 Binary files /dev/null and b/textures/ai/00000000720d621ec80965d9.png differ diff --git a/textures/ai/00000000724e59a50bc321c2.png b/textures/ai/00000000724e59a50bc321c2.png new file mode 100644 index 0000000..e54a57a Binary files /dev/null and b/textures/ai/00000000724e59a50bc321c2.png differ diff --git a/textures/ai/0000000072e7e1b13d3d90f9.png b/textures/ai/0000000072e7e1b13d3d90f9.png new file mode 100644 index 0000000..d0f5f4d Binary files /dev/null and b/textures/ai/0000000072e7e1b13d3d90f9.png differ diff --git a/textures/ai/0000000073486c292692be4d.png b/textures/ai/0000000073486c292692be4d.png new file mode 100644 index 0000000..895f885 Binary files /dev/null and b/textures/ai/0000000073486c292692be4d.png differ diff --git a/textures/ai/0000000073f2f771ccfe34d5.png b/textures/ai/0000000073f2f771ccfe34d5.png new file mode 100644 index 0000000..ae86de7 Binary files /dev/null and b/textures/ai/0000000073f2f771ccfe34d5.png differ diff --git a/textures/ai/000000007427f770a65809db.png b/textures/ai/000000007427f770a65809db.png new file mode 100644 index 0000000..ae201e6 Binary files /dev/null and b/textures/ai/000000007427f770a65809db.png differ diff --git a/textures/ai/000000007484ab6d2d5f2883.png b/textures/ai/000000007484ab6d2d5f2883.png new file mode 100644 index 0000000..8817668 Binary files /dev/null and b/textures/ai/000000007484ab6d2d5f2883.png differ diff --git a/textures/ai/000000007602f52e7a6990d4.png b/textures/ai/000000007602f52e7a6990d4.png new file mode 100644 index 0000000..46d2b6d Binary files /dev/null and b/textures/ai/000000007602f52e7a6990d4.png differ diff --git a/textures/ai/000000007778cd0e65636f30.png b/textures/ai/000000007778cd0e65636f30.png new file mode 100644 index 0000000..6b3dca6 Binary files /dev/null and b/textures/ai/000000007778cd0e65636f30.png differ diff --git a/textures/ai/0000000077b9b304f3cf7ae5.png b/textures/ai/0000000077b9b304f3cf7ae5.png new file mode 100644 index 0000000..50aa96e Binary files /dev/null and b/textures/ai/0000000077b9b304f3cf7ae5.png differ diff --git a/textures/ai/000000007841d627df1b8f9a.png b/textures/ai/000000007841d627df1b8f9a.png new file mode 100644 index 0000000..6da1292 Binary files /dev/null and b/textures/ai/000000007841d627df1b8f9a.png differ diff --git a/textures/ai/00000000787b0dc2da961aaf.png b/textures/ai/00000000787b0dc2da961aaf.png new file mode 100644 index 0000000..08d6963 Binary files /dev/null and b/textures/ai/00000000787b0dc2da961aaf.png differ diff --git a/textures/ai/0000000079b5581d9573d42c.png b/textures/ai/0000000079b5581d9573d42c.png new file mode 100644 index 0000000..b0bcdee Binary files /dev/null and b/textures/ai/0000000079b5581d9573d42c.png differ diff --git a/textures/ai/000000007ad9b99e6315a18a.png b/textures/ai/000000007ad9b99e6315a18a.png new file mode 100644 index 0000000..913b7d5 Binary files /dev/null and b/textures/ai/000000007ad9b99e6315a18a.png differ diff --git a/textures/ai/000000007bd7fba4493c28dc.png b/textures/ai/000000007bd7fba4493c28dc.png new file mode 100644 index 0000000..87ce250 Binary files /dev/null and b/textures/ai/000000007bd7fba4493c28dc.png differ diff --git a/textures/ai/000000007c210573db67b833.png b/textures/ai/000000007c210573db67b833.png new file mode 100644 index 0000000..8860adc Binary files /dev/null and b/textures/ai/000000007c210573db67b833.png differ diff --git a/textures/ai/000000007c69cf3646e21d9a.png b/textures/ai/000000007c69cf3646e21d9a.png new file mode 100644 index 0000000..2b96d1f Binary files /dev/null and b/textures/ai/000000007c69cf3646e21d9a.png differ diff --git a/textures/ai/000000007cd4cf87ca0a82f2.png b/textures/ai/000000007cd4cf87ca0a82f2.png new file mode 100644 index 0000000..9ac7dd0 Binary files /dev/null and b/textures/ai/000000007cd4cf87ca0a82f2.png differ diff --git a/textures/ai/000000007cec5de5bf3b9130.png b/textures/ai/000000007cec5de5bf3b9130.png new file mode 100644 index 0000000..4b32876 Binary files /dev/null and b/textures/ai/000000007cec5de5bf3b9130.png differ diff --git a/textures/ai/000000007d03e6f4ab02d846.png b/textures/ai/000000007d03e6f4ab02d846.png new file mode 100644 index 0000000..1b4e15c Binary files /dev/null and b/textures/ai/000000007d03e6f4ab02d846.png differ diff --git a/textures/ai/000000007d56d6b6422ef5f3.png b/textures/ai/000000007d56d6b6422ef5f3.png new file mode 100644 index 0000000..73d659e Binary files /dev/null and b/textures/ai/000000007d56d6b6422ef5f3.png differ diff --git a/textures/ai/000000007e293121ce37467e.png b/textures/ai/000000007e293121ce37467e.png new file mode 100644 index 0000000..48b8e40 Binary files /dev/null and b/textures/ai/000000007e293121ce37467e.png differ diff --git a/textures/ai/000000007e32f188fb22d26e.png b/textures/ai/000000007e32f188fb22d26e.png new file mode 100644 index 0000000..3e9ea5e Binary files /dev/null and b/textures/ai/000000007e32f188fb22d26e.png differ diff --git a/textures/ai/000000007e3cb2b6d462e10f.png b/textures/ai/000000007e3cb2b6d462e10f.png new file mode 100644 index 0000000..c47d53a Binary files /dev/null and b/textures/ai/000000007e3cb2b6d462e10f.png differ diff --git a/textures/ai/000000007f939b25125787cc.png b/textures/ai/000000007f939b25125787cc.png new file mode 100644 index 0000000..b9c72f1 Binary files /dev/null and b/textures/ai/000000007f939b25125787cc.png differ diff --git a/textures/ai/000000007fad287f3bfae2c5.png b/textures/ai/000000007fad287f3bfae2c5.png new file mode 100644 index 0000000..5e298ed Binary files /dev/null and b/textures/ai/000000007fad287f3bfae2c5.png differ diff --git a/textures/ai/00000000802fa2106bd6a133.png b/textures/ai/00000000802fa2106bd6a133.png new file mode 100644 index 0000000..05d491c Binary files /dev/null and b/textures/ai/00000000802fa2106bd6a133.png differ diff --git a/textures/ai/000000008109e2a832d1b3fc.png b/textures/ai/000000008109e2a832d1b3fc.png new file mode 100644 index 0000000..74ed60d Binary files /dev/null and b/textures/ai/000000008109e2a832d1b3fc.png differ diff --git a/textures/ai/00000000810f1e548dd54f8c.png b/textures/ai/00000000810f1e548dd54f8c.png new file mode 100644 index 0000000..a649678 Binary files /dev/null and b/textures/ai/00000000810f1e548dd54f8c.png differ diff --git a/textures/ai/00000000812628d3e12c5b7c.png b/textures/ai/00000000812628d3e12c5b7c.png new file mode 100644 index 0000000..74f8097 Binary files /dev/null and b/textures/ai/00000000812628d3e12c5b7c.png differ diff --git a/textures/ai/00000000818c900965dbd76e.png b/textures/ai/00000000818c900965dbd76e.png new file mode 100644 index 0000000..e9139b2 Binary files /dev/null and b/textures/ai/00000000818c900965dbd76e.png differ diff --git a/textures/ai/0000000082179f059008767f.png b/textures/ai/0000000082179f059008767f.png new file mode 100644 index 0000000..f39e5a9 Binary files /dev/null and b/textures/ai/0000000082179f059008767f.png differ diff --git a/textures/ai/000000008265708d50f00fe4.png b/textures/ai/000000008265708d50f00fe4.png new file mode 100644 index 0000000..3f2d8bf Binary files /dev/null and b/textures/ai/000000008265708d50f00fe4.png differ diff --git a/textures/ai/0000000085962d2d8f02ca47.png b/textures/ai/0000000085962d2d8f02ca47.png new file mode 100644 index 0000000..0291af0 Binary files /dev/null and b/textures/ai/0000000085962d2d8f02ca47.png differ diff --git a/textures/ai/0000000085b181cac0c14d49.png b/textures/ai/0000000085b181cac0c14d49.png new file mode 100644 index 0000000..cc20e87 Binary files /dev/null and b/textures/ai/0000000085b181cac0c14d49.png differ diff --git a/textures/ai/0000000085b6ce9cc84967a8.png b/textures/ai/0000000085b6ce9cc84967a8.png new file mode 100644 index 0000000..73a7648 Binary files /dev/null and b/textures/ai/0000000085b6ce9cc84967a8.png differ diff --git a/textures/ai/0000000085cdd5d977bbc4ff.png b/textures/ai/0000000085cdd5d977bbc4ff.png new file mode 100644 index 0000000..98f462a Binary files /dev/null and b/textures/ai/0000000085cdd5d977bbc4ff.png differ diff --git a/textures/ai/0000000085f2d56e2063fe00.png b/textures/ai/0000000085f2d56e2063fe00.png new file mode 100644 index 0000000..701a4c9 Binary files /dev/null and b/textures/ai/0000000085f2d56e2063fe00.png differ diff --git a/textures/ai/000000008614a51d1aa857c8.png b/textures/ai/000000008614a51d1aa857c8.png new file mode 100644 index 0000000..b1e203f Binary files /dev/null and b/textures/ai/000000008614a51d1aa857c8.png differ diff --git a/textures/ai/000000008731701306f9d3c1.png b/textures/ai/000000008731701306f9d3c1.png new file mode 100644 index 0000000..05b5693 Binary files /dev/null and b/textures/ai/000000008731701306f9d3c1.png differ diff --git a/textures/ai/0000000087c4189b7513ed9c.png b/textures/ai/0000000087c4189b7513ed9c.png new file mode 100644 index 0000000..ff41d43 Binary files /dev/null and b/textures/ai/0000000087c4189b7513ed9c.png differ diff --git a/textures/ai/0000000087c9a2ceca9693c1.png b/textures/ai/0000000087c9a2ceca9693c1.png new file mode 100644 index 0000000..093f998 Binary files /dev/null and b/textures/ai/0000000087c9a2ceca9693c1.png differ diff --git a/textures/ai/0000000087e1d5e61f650ca6.png b/textures/ai/0000000087e1d5e61f650ca6.png new file mode 100644 index 0000000..7150e3c Binary files /dev/null and b/textures/ai/0000000087e1d5e61f650ca6.png differ diff --git a/textures/ai/0000000087f343bd98babb90.png b/textures/ai/0000000087f343bd98babb90.png new file mode 100644 index 0000000..b4f6090 Binary files /dev/null and b/textures/ai/0000000087f343bd98babb90.png differ diff --git a/textures/ai/000000008bd70fc9a08daa51.png b/textures/ai/000000008bd70fc9a08daa51.png new file mode 100644 index 0000000..761133d Binary files /dev/null and b/textures/ai/000000008bd70fc9a08daa51.png differ diff --git a/textures/ai/000000008cb0e1bff3bea257.png b/textures/ai/000000008cb0e1bff3bea257.png new file mode 100644 index 0000000..ba02d7d Binary files /dev/null and b/textures/ai/000000008cb0e1bff3bea257.png differ diff --git a/textures/ai/000000008fb5249ac0d5a766.png b/textures/ai/000000008fb5249ac0d5a766.png new file mode 100644 index 0000000..7b45bbe Binary files /dev/null and b/textures/ai/000000008fb5249ac0d5a766.png differ diff --git a/textures/ai/00000000900d8e2e63ecf1c2.png b/textures/ai/00000000900d8e2e63ecf1c2.png new file mode 100644 index 0000000..8d41be4 Binary files /dev/null and b/textures/ai/00000000900d8e2e63ecf1c2.png differ diff --git a/textures/ai/00000000908b1276ef688760.png b/textures/ai/00000000908b1276ef688760.png new file mode 100644 index 0000000..e236e80 Binary files /dev/null and b/textures/ai/00000000908b1276ef688760.png differ diff --git a/textures/ai/000000009238db65268fca71.png b/textures/ai/000000009238db65268fca71.png new file mode 100644 index 0000000..3c51d69 Binary files /dev/null and b/textures/ai/000000009238db65268fca71.png differ diff --git a/textures/ai/000000009299ff011016ecef.png b/textures/ai/000000009299ff011016ecef.png new file mode 100644 index 0000000..1e66b5e Binary files /dev/null and b/textures/ai/000000009299ff011016ecef.png differ diff --git a/textures/ai/0000000093b7ae5319a93f90.png b/textures/ai/0000000093b7ae5319a93f90.png new file mode 100644 index 0000000..93e6b27 Binary files /dev/null and b/textures/ai/0000000093b7ae5319a93f90.png differ diff --git a/textures/ai/0000000094892a674972ab19.png b/textures/ai/0000000094892a674972ab19.png new file mode 100644 index 0000000..b44e0a8 Binary files /dev/null and b/textures/ai/0000000094892a674972ab19.png differ diff --git a/textures/ai/0000000094a998579c22e17e.png b/textures/ai/0000000094a998579c22e17e.png new file mode 100644 index 0000000..7ebfef1 Binary files /dev/null and b/textures/ai/0000000094a998579c22e17e.png differ diff --git a/textures/ai/0000000094b210b6fa482992.png b/textures/ai/0000000094b210b6fa482992.png new file mode 100644 index 0000000..5dd87aa Binary files /dev/null and b/textures/ai/0000000094b210b6fa482992.png differ diff --git a/textures/ai/0000000094f166664ff4a5e4.png b/textures/ai/0000000094f166664ff4a5e4.png new file mode 100644 index 0000000..03f4332 Binary files /dev/null and b/textures/ai/0000000094f166664ff4a5e4.png differ diff --git a/textures/ai/0000000094f4438b015e57ef.png b/textures/ai/0000000094f4438b015e57ef.png new file mode 100644 index 0000000..dd050a3 Binary files /dev/null and b/textures/ai/0000000094f4438b015e57ef.png differ diff --git a/textures/ai/00000000950d108572c7b7e1.png b/textures/ai/00000000950d108572c7b7e1.png new file mode 100644 index 0000000..4b70b7f Binary files /dev/null and b/textures/ai/00000000950d108572c7b7e1.png differ diff --git a/textures/ai/00000000950f3488abb49d1a.png b/textures/ai/00000000950f3488abb49d1a.png new file mode 100644 index 0000000..958fc28 Binary files /dev/null and b/textures/ai/00000000950f3488abb49d1a.png differ diff --git a/textures/ai/00000000955571f3c1ec9a78.png b/textures/ai/00000000955571f3c1ec9a78.png new file mode 100644 index 0000000..fc7cf1e Binary files /dev/null and b/textures/ai/00000000955571f3c1ec9a78.png differ diff --git a/textures/ai/00000000955b93aff92c4d9b.png b/textures/ai/00000000955b93aff92c4d9b.png new file mode 100644 index 0000000..c319f4a Binary files /dev/null and b/textures/ai/00000000955b93aff92c4d9b.png differ diff --git a/textures/ai/0000000095adb5ac23d23683.png b/textures/ai/0000000095adb5ac23d23683.png new file mode 100644 index 0000000..cd14faf Binary files /dev/null and b/textures/ai/0000000095adb5ac23d23683.png differ diff --git a/textures/ai/0000000095d8e71dc475789a.png b/textures/ai/0000000095d8e71dc475789a.png new file mode 100644 index 0000000..7bbabf9 Binary files /dev/null and b/textures/ai/0000000095d8e71dc475789a.png differ diff --git a/textures/ai/00000000961eedbc291105db.png b/textures/ai/00000000961eedbc291105db.png new file mode 100644 index 0000000..f2ddf6e Binary files /dev/null and b/textures/ai/00000000961eedbc291105db.png differ diff --git a/textures/ai/000000009633f07c0932ef4d.png b/textures/ai/000000009633f07c0932ef4d.png new file mode 100644 index 0000000..fdfdc69 Binary files /dev/null and b/textures/ai/000000009633f07c0932ef4d.png differ diff --git a/textures/ai/00000000964bb186f042014d.png b/textures/ai/00000000964bb186f042014d.png new file mode 100644 index 0000000..634e293 Binary files /dev/null and b/textures/ai/00000000964bb186f042014d.png differ diff --git a/textures/ai/000000009686b158c271ffbe.png b/textures/ai/000000009686b158c271ffbe.png new file mode 100644 index 0000000..1e34fc8 Binary files /dev/null and b/textures/ai/000000009686b158c271ffbe.png differ diff --git a/textures/ai/0000000096b5cdfe4d0829ac.png b/textures/ai/0000000096b5cdfe4d0829ac.png new file mode 100644 index 0000000..08b3981 Binary files /dev/null and b/textures/ai/0000000096b5cdfe4d0829ac.png differ diff --git a/textures/ai/0000000096df35a9d10a6f31.png b/textures/ai/0000000096df35a9d10a6f31.png new file mode 100644 index 0000000..12fd3c2 Binary files /dev/null and b/textures/ai/0000000096df35a9d10a6f31.png differ diff --git a/textures/ai/0000000096e59bcf247670b9.png b/textures/ai/0000000096e59bcf247670b9.png new file mode 100644 index 0000000..7a0c158 Binary files /dev/null and b/textures/ai/0000000096e59bcf247670b9.png differ diff --git a/textures/ai/000000009707dce79860657f.png b/textures/ai/000000009707dce79860657f.png new file mode 100644 index 0000000..1713f0f Binary files /dev/null and b/textures/ai/000000009707dce79860657f.png differ diff --git a/textures/ai/0000000097a6245e2dd24d53.png b/textures/ai/0000000097a6245e2dd24d53.png new file mode 100644 index 0000000..a45e3a9 Binary files /dev/null and b/textures/ai/0000000097a6245e2dd24d53.png differ diff --git a/textures/ai/0000000097d52b0878f6abdd.png b/textures/ai/0000000097d52b0878f6abdd.png new file mode 100644 index 0000000..c84d3f0 Binary files /dev/null and b/textures/ai/0000000097d52b0878f6abdd.png differ diff --git a/textures/ai/000000009919c3eed122ddaa.png b/textures/ai/000000009919c3eed122ddaa.png new file mode 100644 index 0000000..160a61b Binary files /dev/null and b/textures/ai/000000009919c3eed122ddaa.png differ diff --git a/textures/ai/000000009974bd708f02f500.png b/textures/ai/000000009974bd708f02f500.png new file mode 100644 index 0000000..2ac13bd Binary files /dev/null and b/textures/ai/000000009974bd708f02f500.png differ diff --git a/textures/ai/0000000099a647b7e66a3a8b.png b/textures/ai/0000000099a647b7e66a3a8b.png new file mode 100644 index 0000000..1b1979c Binary files /dev/null and b/textures/ai/0000000099a647b7e66a3a8b.png differ diff --git a/textures/ai/0000000099c5faa3def0aabb.png b/textures/ai/0000000099c5faa3def0aabb.png new file mode 100644 index 0000000..07b11b6 Binary files /dev/null and b/textures/ai/0000000099c5faa3def0aabb.png differ diff --git a/textures/ai/0000000099eb768205870b73.png b/textures/ai/0000000099eb768205870b73.png new file mode 100644 index 0000000..a81250f Binary files /dev/null and b/textures/ai/0000000099eb768205870b73.png differ diff --git a/textures/ai/0000000099ebfc8dd776406a.png b/textures/ai/0000000099ebfc8dd776406a.png new file mode 100644 index 0000000..c0c96eb Binary files /dev/null and b/textures/ai/0000000099ebfc8dd776406a.png differ diff --git a/textures/ai/000000009a03d0420545ec80.png b/textures/ai/000000009a03d0420545ec80.png new file mode 100644 index 0000000..fcec860 Binary files /dev/null and b/textures/ai/000000009a03d0420545ec80.png differ diff --git a/textures/ai/000000009a27dfd745f15f7f.png b/textures/ai/000000009a27dfd745f15f7f.png new file mode 100644 index 0000000..a2dfd4b Binary files /dev/null and b/textures/ai/000000009a27dfd745f15f7f.png differ diff --git a/textures/ai/000000009a5f2524f8519b21.png b/textures/ai/000000009a5f2524f8519b21.png new file mode 100644 index 0000000..1232dae Binary files /dev/null and b/textures/ai/000000009a5f2524f8519b21.png differ diff --git a/textures/ai/000000009aaf1750c8ce60e9.png b/textures/ai/000000009aaf1750c8ce60e9.png new file mode 100644 index 0000000..124a5f4 Binary files /dev/null and b/textures/ai/000000009aaf1750c8ce60e9.png differ diff --git a/textures/ai/000000009b1822f9cd82ccad.png b/textures/ai/000000009b1822f9cd82ccad.png new file mode 100644 index 0000000..3658d47 Binary files /dev/null and b/textures/ai/000000009b1822f9cd82ccad.png differ diff --git a/textures/ai/000000009b1e327db8dafead.png b/textures/ai/000000009b1e327db8dafead.png new file mode 100644 index 0000000..4fb1653 Binary files /dev/null and b/textures/ai/000000009b1e327db8dafead.png differ diff --git a/textures/ai/000000009bc2a25c9b8f2643.png b/textures/ai/000000009bc2a25c9b8f2643.png new file mode 100644 index 0000000..40b5458 Binary files /dev/null and b/textures/ai/000000009bc2a25c9b8f2643.png differ diff --git a/textures/ai/000000009be760a86da818da.png b/textures/ai/000000009be760a86da818da.png new file mode 100644 index 0000000..d78c4fa Binary files /dev/null and b/textures/ai/000000009be760a86da818da.png differ diff --git a/textures/ai/000000009c105294a47fb6e7.png b/textures/ai/000000009c105294a47fb6e7.png new file mode 100644 index 0000000..e03f609 Binary files /dev/null and b/textures/ai/000000009c105294a47fb6e7.png differ diff --git a/textures/ai/000000009c6f6c21813c537d.png b/textures/ai/000000009c6f6c21813c537d.png new file mode 100644 index 0000000..4d0e4a2 Binary files /dev/null and b/textures/ai/000000009c6f6c21813c537d.png differ diff --git a/textures/ai/000000009cca6d3b900d7d22.png b/textures/ai/000000009cca6d3b900d7d22.png new file mode 100644 index 0000000..338c460 Binary files /dev/null and b/textures/ai/000000009cca6d3b900d7d22.png differ diff --git a/textures/ai/000000009d1ad40ac058edc2.png b/textures/ai/000000009d1ad40ac058edc2.png new file mode 100644 index 0000000..0341af4 Binary files /dev/null and b/textures/ai/000000009d1ad40ac058edc2.png differ diff --git a/textures/ai/000000009d4cb68f1c16605f.png b/textures/ai/000000009d4cb68f1c16605f.png new file mode 100644 index 0000000..24d6428 Binary files /dev/null and b/textures/ai/000000009d4cb68f1c16605f.png differ diff --git a/textures/ai/000000009e645e838d7559fa.png b/textures/ai/000000009e645e838d7559fa.png new file mode 100644 index 0000000..3f14b98 Binary files /dev/null and b/textures/ai/000000009e645e838d7559fa.png differ diff --git a/textures/ai/000000009f2edecf530e2787.png b/textures/ai/000000009f2edecf530e2787.png new file mode 100644 index 0000000..a997378 Binary files /dev/null and b/textures/ai/000000009f2edecf530e2787.png differ diff --git a/textures/ai/000000009f3c6ba7cbaab9d3.png b/textures/ai/000000009f3c6ba7cbaab9d3.png new file mode 100644 index 0000000..de42bc5 Binary files /dev/null and b/textures/ai/000000009f3c6ba7cbaab9d3.png differ diff --git a/textures/ai/000000009f9bad9f501302ce.png b/textures/ai/000000009f9bad9f501302ce.png new file mode 100644 index 0000000..e84f4a5 Binary files /dev/null and b/textures/ai/000000009f9bad9f501302ce.png differ diff --git a/textures/ai/00000000a0b9fca0e8cb1a9e.png b/textures/ai/00000000a0b9fca0e8cb1a9e.png new file mode 100644 index 0000000..eb41bc2 Binary files /dev/null and b/textures/ai/00000000a0b9fca0e8cb1a9e.png differ diff --git a/textures/ai/00000000a13b781cbd68d0ec.png b/textures/ai/00000000a13b781cbd68d0ec.png new file mode 100644 index 0000000..36178f0 Binary files /dev/null and b/textures/ai/00000000a13b781cbd68d0ec.png differ diff --git a/textures/ai/00000000a2438bcc64069a35.png b/textures/ai/00000000a2438bcc64069a35.png new file mode 100644 index 0000000..8816d29 Binary files /dev/null and b/textures/ai/00000000a2438bcc64069a35.png differ diff --git a/textures/ai/00000000a24bf9e212531fee.png b/textures/ai/00000000a24bf9e212531fee.png new file mode 100644 index 0000000..b55f82b Binary files /dev/null and b/textures/ai/00000000a24bf9e212531fee.png differ diff --git a/textures/ai/00000000a2f24ea88597a2ab.png b/textures/ai/00000000a2f24ea88597a2ab.png new file mode 100644 index 0000000..27dc87c Binary files /dev/null and b/textures/ai/00000000a2f24ea88597a2ab.png differ diff --git a/textures/ai/00000000a2f74a2314287e8f.png b/textures/ai/00000000a2f74a2314287e8f.png new file mode 100644 index 0000000..af25ed3 Binary files /dev/null and b/textures/ai/00000000a2f74a2314287e8f.png differ diff --git a/textures/ai/00000000a3930fe0cbc52ce7.png b/textures/ai/00000000a3930fe0cbc52ce7.png new file mode 100644 index 0000000..40b6cf8 Binary files /dev/null and b/textures/ai/00000000a3930fe0cbc52ce7.png differ diff --git a/textures/ai/00000000a3bd321cc1657ef7.png b/textures/ai/00000000a3bd321cc1657ef7.png new file mode 100644 index 0000000..b35ea68 Binary files /dev/null and b/textures/ai/00000000a3bd321cc1657ef7.png differ diff --git a/textures/ai/00000000a3d7118aac090c40.png b/textures/ai/00000000a3d7118aac090c40.png new file mode 100644 index 0000000..a1ace41 Binary files /dev/null and b/textures/ai/00000000a3d7118aac090c40.png differ diff --git a/textures/ai/00000000a3feb966906f5d2c.png b/textures/ai/00000000a3feb966906f5d2c.png new file mode 100644 index 0000000..2003ac5 Binary files /dev/null and b/textures/ai/00000000a3feb966906f5d2c.png differ diff --git a/textures/ai/00000000a4e87427bc311df4.png b/textures/ai/00000000a4e87427bc311df4.png new file mode 100644 index 0000000..8aa39d1 Binary files /dev/null and b/textures/ai/00000000a4e87427bc311df4.png differ diff --git a/textures/ai/00000000a652f0609d75574c.png b/textures/ai/00000000a652f0609d75574c.png new file mode 100644 index 0000000..fb5422e Binary files /dev/null and b/textures/ai/00000000a652f0609d75574c.png differ diff --git a/textures/ai/00000000a6e9ff784f21abe1.png b/textures/ai/00000000a6e9ff784f21abe1.png new file mode 100644 index 0000000..1f2cc93 Binary files /dev/null and b/textures/ai/00000000a6e9ff784f21abe1.png differ diff --git a/textures/ai/00000000a6ffedddd122ddaa.png b/textures/ai/00000000a6ffedddd122ddaa.png new file mode 100644 index 0000000..42c2e35 Binary files /dev/null and b/textures/ai/00000000a6ffedddd122ddaa.png differ diff --git a/textures/ai/00000000a712418b5e92fb67.png b/textures/ai/00000000a712418b5e92fb67.png new file mode 100644 index 0000000..60240e5 Binary files /dev/null and b/textures/ai/00000000a712418b5e92fb67.png differ diff --git a/textures/ai/00000000a93e837b50f82427.png b/textures/ai/00000000a93e837b50f82427.png new file mode 100644 index 0000000..0e2f502 Binary files /dev/null and b/textures/ai/00000000a93e837b50f82427.png differ diff --git a/textures/ai/00000000a997cfdb3c455271.png b/textures/ai/00000000a997cfdb3c455271.png new file mode 100644 index 0000000..ffaaf65 Binary files /dev/null and b/textures/ai/00000000a997cfdb3c455271.png differ diff --git a/textures/ai/00000000aa1bb46949e88a74.png b/textures/ai/00000000aa1bb46949e88a74.png new file mode 100644 index 0000000..409a61c Binary files /dev/null and b/textures/ai/00000000aa1bb46949e88a74.png differ diff --git a/textures/ai/00000000ab5a30e240bbb7e7.png b/textures/ai/00000000ab5a30e240bbb7e7.png new file mode 100644 index 0000000..2229508 Binary files /dev/null and b/textures/ai/00000000ab5a30e240bbb7e7.png differ diff --git a/textures/ai/00000000ab748517eecbbe44.png b/textures/ai/00000000ab748517eecbbe44.png new file mode 100644 index 0000000..c9491b9 Binary files /dev/null and b/textures/ai/00000000ab748517eecbbe44.png differ diff --git a/textures/ai/00000000acd9b986c041a006.png b/textures/ai/00000000acd9b986c041a006.png new file mode 100644 index 0000000..3ccbf92 Binary files /dev/null and b/textures/ai/00000000acd9b986c041a006.png differ diff --git a/textures/ai/00000000ad7d67f4687ee31e.png b/textures/ai/00000000ad7d67f4687ee31e.png new file mode 100644 index 0000000..1e0825b Binary files /dev/null and b/textures/ai/00000000ad7d67f4687ee31e.png differ diff --git a/textures/ai/00000000ad95b55659400b15.png b/textures/ai/00000000ad95b55659400b15.png new file mode 100644 index 0000000..19c64c0 Binary files /dev/null and b/textures/ai/00000000ad95b55659400b15.png differ diff --git a/textures/ai/00000000adedd977c4d7cbb7.png b/textures/ai/00000000adedd977c4d7cbb7.png new file mode 100644 index 0000000..04b5afa Binary files /dev/null and b/textures/ai/00000000adedd977c4d7cbb7.png differ diff --git a/textures/ai/00000000ae8095ec2df8a5ae.png b/textures/ai/00000000ae8095ec2df8a5ae.png new file mode 100644 index 0000000..5987faf Binary files /dev/null and b/textures/ai/00000000ae8095ec2df8a5ae.png differ diff --git a/textures/ai/00000000afb59cde34a1e100.png b/textures/ai/00000000afb59cde34a1e100.png new file mode 100644 index 0000000..c2f4584 Binary files /dev/null and b/textures/ai/00000000afb59cde34a1e100.png differ diff --git a/textures/ai/00000000b2735af6818d7b79.png b/textures/ai/00000000b2735af6818d7b79.png new file mode 100644 index 0000000..6de055e Binary files /dev/null and b/textures/ai/00000000b2735af6818d7b79.png differ diff --git a/textures/ai/00000000b40f390d42be50a4.png b/textures/ai/00000000b40f390d42be50a4.png new file mode 100644 index 0000000..0d2a001 Binary files /dev/null and b/textures/ai/00000000b40f390d42be50a4.png differ diff --git a/textures/ai/00000000b41948657b48738f.png b/textures/ai/00000000b41948657b48738f.png new file mode 100644 index 0000000..fb47b41 Binary files /dev/null and b/textures/ai/00000000b41948657b48738f.png differ diff --git a/textures/ai/00000000b566f3e4f60e2145.png b/textures/ai/00000000b566f3e4f60e2145.png new file mode 100644 index 0000000..ceac905 Binary files /dev/null and b/textures/ai/00000000b566f3e4f60e2145.png differ diff --git a/textures/ai/00000000b6beb7682dbe4949.png b/textures/ai/00000000b6beb7682dbe4949.png new file mode 100644 index 0000000..059395b Binary files /dev/null and b/textures/ai/00000000b6beb7682dbe4949.png differ diff --git a/textures/ai/00000000b6f2aabf69728b9e.png b/textures/ai/00000000b6f2aabf69728b9e.png new file mode 100644 index 0000000..9a8f595 Binary files /dev/null and b/textures/ai/00000000b6f2aabf69728b9e.png differ diff --git a/textures/ai/00000000b70bece446bb55b4.png b/textures/ai/00000000b70bece446bb55b4.png new file mode 100644 index 0000000..aebc41d Binary files /dev/null and b/textures/ai/00000000b70bece446bb55b4.png differ diff --git a/textures/ai/00000000b7bde1f982ddc30a.png b/textures/ai/00000000b7bde1f982ddc30a.png new file mode 100644 index 0000000..fa53bc0 Binary files /dev/null and b/textures/ai/00000000b7bde1f982ddc30a.png differ diff --git a/textures/ai/00000000b834f3519b31317f.png b/textures/ai/00000000b834f3519b31317f.png new file mode 100644 index 0000000..664b93f Binary files /dev/null and b/textures/ai/00000000b834f3519b31317f.png differ diff --git a/textures/ai/00000000b9364c655ac61fba.png b/textures/ai/00000000b9364c655ac61fba.png new file mode 100644 index 0000000..3ca1f55 Binary files /dev/null and b/textures/ai/00000000b9364c655ac61fba.png differ diff --git a/textures/ai/00000000bb1b46b2fc33e872.png b/textures/ai/00000000bb1b46b2fc33e872.png new file mode 100644 index 0000000..8e2abd7 Binary files /dev/null and b/textures/ai/00000000bb1b46b2fc33e872.png differ diff --git a/textures/ai/00000000bb90f77324f9b747.png b/textures/ai/00000000bb90f77324f9b747.png new file mode 100644 index 0000000..3b5464c Binary files /dev/null and b/textures/ai/00000000bb90f77324f9b747.png differ diff --git a/textures/ai/00000000bd51e236ec3d80f3.png b/textures/ai/00000000bd51e236ec3d80f3.png new file mode 100644 index 0000000..336f5b0 Binary files /dev/null and b/textures/ai/00000000bd51e236ec3d80f3.png differ diff --git a/textures/ai/00000000bd7e8883f996456e.png b/textures/ai/00000000bd7e8883f996456e.png new file mode 100644 index 0000000..62f6e78 Binary files /dev/null and b/textures/ai/00000000bd7e8883f996456e.png differ diff --git a/textures/ai/00000000be01ba7e58aababc.png b/textures/ai/00000000be01ba7e58aababc.png new file mode 100644 index 0000000..d1d02cd Binary files /dev/null and b/textures/ai/00000000be01ba7e58aababc.png differ diff --git a/textures/ai/00000000bf558b0622fb4e28.png b/textures/ai/00000000bf558b0622fb4e28.png new file mode 100644 index 0000000..20a417c Binary files /dev/null and b/textures/ai/00000000bf558b0622fb4e28.png differ diff --git a/textures/ai/00000000bffe1ed525f0d73b.png b/textures/ai/00000000bffe1ed525f0d73b.png new file mode 100644 index 0000000..2d61c97 Binary files /dev/null and b/textures/ai/00000000bffe1ed525f0d73b.png differ diff --git a/textures/ai/00000000c0cead2aace29081.png b/textures/ai/00000000c0cead2aace29081.png new file mode 100644 index 0000000..a91e278 Binary files /dev/null and b/textures/ai/00000000c0cead2aace29081.png differ diff --git a/textures/ai/00000000c0feb5ea58391238.png b/textures/ai/00000000c0feb5ea58391238.png new file mode 100644 index 0000000..68f3aa3 Binary files /dev/null and b/textures/ai/00000000c0feb5ea58391238.png differ diff --git a/textures/ai/00000000c1eea0957af9ea70.png b/textures/ai/00000000c1eea0957af9ea70.png new file mode 100644 index 0000000..0f99c6b Binary files /dev/null and b/textures/ai/00000000c1eea0957af9ea70.png differ diff --git a/textures/ai/00000000c2133582d7928bf5.png b/textures/ai/00000000c2133582d7928bf5.png new file mode 100644 index 0000000..44a26c6 Binary files /dev/null and b/textures/ai/00000000c2133582d7928bf5.png differ diff --git a/textures/ai/00000000c242e06560d5ebfb.png b/textures/ai/00000000c242e06560d5ebfb.png new file mode 100644 index 0000000..03560d9 Binary files /dev/null and b/textures/ai/00000000c242e06560d5ebfb.png differ diff --git a/textures/ai/00000000c2c3b8a46911eb39.png b/textures/ai/00000000c2c3b8a46911eb39.png new file mode 100644 index 0000000..bf0dd5d Binary files /dev/null and b/textures/ai/00000000c2c3b8a46911eb39.png differ diff --git a/textures/ai/00000000c2d18ecea5abe3bd.png b/textures/ai/00000000c2d18ecea5abe3bd.png new file mode 100644 index 0000000..9b0fa03 Binary files /dev/null and b/textures/ai/00000000c2d18ecea5abe3bd.png differ diff --git a/textures/ai/00000000c304029771d6a5d3.png b/textures/ai/00000000c304029771d6a5d3.png new file mode 100644 index 0000000..0206788 Binary files /dev/null and b/textures/ai/00000000c304029771d6a5d3.png differ diff --git a/textures/ai/00000000c3ed381a2e590b4a.png b/textures/ai/00000000c3ed381a2e590b4a.png new file mode 100644 index 0000000..0c9c4f6 Binary files /dev/null and b/textures/ai/00000000c3ed381a2e590b4a.png differ diff --git a/textures/ai/00000000c45e425d821f1777.png b/textures/ai/00000000c45e425d821f1777.png new file mode 100644 index 0000000..5dc2dd0 Binary files /dev/null and b/textures/ai/00000000c45e425d821f1777.png differ diff --git a/textures/ai/00000000c4908f4f30a2d8b3.png b/textures/ai/00000000c4908f4f30a2d8b3.png new file mode 100644 index 0000000..d08b140 Binary files /dev/null and b/textures/ai/00000000c4908f4f30a2d8b3.png differ diff --git a/textures/ai/00000000c50b789c31367e33.png b/textures/ai/00000000c50b789c31367e33.png new file mode 100644 index 0000000..73b085e Binary files /dev/null and b/textures/ai/00000000c50b789c31367e33.png differ diff --git a/textures/ai/00000000c535ab8f7b1c6b82.png b/textures/ai/00000000c535ab8f7b1c6b82.png new file mode 100644 index 0000000..74a0db0 Binary files /dev/null and b/textures/ai/00000000c535ab8f7b1c6b82.png differ diff --git a/textures/ai/00000000c5e4f4e384c27183.png b/textures/ai/00000000c5e4f4e384c27183.png new file mode 100644 index 0000000..56cddbf Binary files /dev/null and b/textures/ai/00000000c5e4f4e384c27183.png differ diff --git a/textures/ai/00000000c6b6dd9143baed15.png b/textures/ai/00000000c6b6dd9143baed15.png new file mode 100644 index 0000000..bea8970 Binary files /dev/null and b/textures/ai/00000000c6b6dd9143baed15.png differ diff --git a/textures/ai/00000000c7162fa991603046.png b/textures/ai/00000000c7162fa991603046.png new file mode 100644 index 0000000..35be561 Binary files /dev/null and b/textures/ai/00000000c7162fa991603046.png differ diff --git a/textures/ai/00000000c73b91a182aaab05.png b/textures/ai/00000000c73b91a182aaab05.png new file mode 100644 index 0000000..b3c45e6 Binary files /dev/null and b/textures/ai/00000000c73b91a182aaab05.png differ diff --git a/textures/ai/00000000c7e5e3bc90b0a99f.png b/textures/ai/00000000c7e5e3bc90b0a99f.png new file mode 100644 index 0000000..c5fda3e Binary files /dev/null and b/textures/ai/00000000c7e5e3bc90b0a99f.png differ diff --git a/textures/ai/00000000c84ff0ef0f49b48e.png b/textures/ai/00000000c84ff0ef0f49b48e.png new file mode 100644 index 0000000..7616e50 Binary files /dev/null and b/textures/ai/00000000c84ff0ef0f49b48e.png differ diff --git a/textures/ai/00000000c863fb3df8d287d8.png b/textures/ai/00000000c863fb3df8d287d8.png new file mode 100644 index 0000000..7a42d36 Binary files /dev/null and b/textures/ai/00000000c863fb3df8d287d8.png differ diff --git a/textures/ai/00000000c99da8f2e03603aa.png b/textures/ai/00000000c99da8f2e03603aa.png new file mode 100644 index 0000000..59326dd Binary files /dev/null and b/textures/ai/00000000c99da8f2e03603aa.png differ diff --git a/textures/ai/00000000c9a984280f6e9d80.png b/textures/ai/00000000c9a984280f6e9d80.png new file mode 100644 index 0000000..241dca0 Binary files /dev/null and b/textures/ai/00000000c9a984280f6e9d80.png differ diff --git a/textures/ai/00000000cadccd8bf8b55c42.png b/textures/ai/00000000cadccd8bf8b55c42.png new file mode 100644 index 0000000..1e10b74 Binary files /dev/null and b/textures/ai/00000000cadccd8bf8b55c42.png differ diff --git a/textures/ai/00000000cae377cc199ff351.png b/textures/ai/00000000cae377cc199ff351.png new file mode 100644 index 0000000..e1bfd60 Binary files /dev/null and b/textures/ai/00000000cae377cc199ff351.png differ diff --git a/textures/ai/00000000caf7bcec31b646e2.png b/textures/ai/00000000caf7bcec31b646e2.png new file mode 100644 index 0000000..7509ae9 Binary files /dev/null and b/textures/ai/00000000caf7bcec31b646e2.png differ diff --git a/textures/ai/00000000cb71fab3a2ee5e13.png b/textures/ai/00000000cb71fab3a2ee5e13.png new file mode 100644 index 0000000..711cb48 Binary files /dev/null and b/textures/ai/00000000cb71fab3a2ee5e13.png differ diff --git a/textures/ai/00000000ccf8edcba48ba9fb.png b/textures/ai/00000000ccf8edcba48ba9fb.png new file mode 100644 index 0000000..6b4d6f3 Binary files /dev/null and b/textures/ai/00000000ccf8edcba48ba9fb.png differ diff --git a/textures/ai/00000000cdc9bcd81724bc26.png b/textures/ai/00000000cdc9bcd81724bc26.png new file mode 100644 index 0000000..6c1f3a1 Binary files /dev/null and b/textures/ai/00000000cdc9bcd81724bc26.png differ diff --git a/textures/ai/00000000ce579055bb8f0b85.png b/textures/ai/00000000ce579055bb8f0b85.png new file mode 100644 index 0000000..915b6b1 Binary files /dev/null and b/textures/ai/00000000ce579055bb8f0b85.png differ diff --git a/textures/ai/00000000cea1edabe5a04e42.png b/textures/ai/00000000cea1edabe5a04e42.png new file mode 100644 index 0000000..ab06606 Binary files /dev/null and b/textures/ai/00000000cea1edabe5a04e42.png differ diff --git a/textures/ai/00000000cf4c4c0225ea42dc.png b/textures/ai/00000000cf4c4c0225ea42dc.png new file mode 100644 index 0000000..1588bd9 Binary files /dev/null and b/textures/ai/00000000cf4c4c0225ea42dc.png differ diff --git a/textures/ai/00000000cf569f90d2342eb5.png b/textures/ai/00000000cf569f90d2342eb5.png new file mode 100644 index 0000000..881ca64 Binary files /dev/null and b/textures/ai/00000000cf569f90d2342eb5.png differ diff --git a/textures/ai/00000000cf9c5c56f8b55c42.png b/textures/ai/00000000cf9c5c56f8b55c42.png new file mode 100644 index 0000000..5932a6a Binary files /dev/null and b/textures/ai/00000000cf9c5c56f8b55c42.png differ diff --git a/textures/ai/00000000d068a06226bb5b9f.png b/textures/ai/00000000d068a06226bb5b9f.png new file mode 100644 index 0000000..b8eb7e3 Binary files /dev/null and b/textures/ai/00000000d068a06226bb5b9f.png differ diff --git a/textures/ai/00000000d11bcc3045323b2c.png b/textures/ai/00000000d11bcc3045323b2c.png new file mode 100644 index 0000000..e93b7c1 Binary files /dev/null and b/textures/ai/00000000d11bcc3045323b2c.png differ diff --git a/textures/ai/00000000d1b5f3b0eab19740.png b/textures/ai/00000000d1b5f3b0eab19740.png new file mode 100644 index 0000000..13359cb Binary files /dev/null and b/textures/ai/00000000d1b5f3b0eab19740.png differ diff --git a/textures/ai/00000000d228aa7283ac12fa.png b/textures/ai/00000000d228aa7283ac12fa.png new file mode 100644 index 0000000..b18bfb2 Binary files /dev/null and b/textures/ai/00000000d228aa7283ac12fa.png differ diff --git a/textures/ai/00000000d28b8a6ca5743569.png b/textures/ai/00000000d28b8a6ca5743569.png new file mode 100644 index 0000000..595b0b9 Binary files /dev/null and b/textures/ai/00000000d28b8a6ca5743569.png differ diff --git a/textures/ai/00000000d29b6917506724b7.png b/textures/ai/00000000d29b6917506724b7.png new file mode 100644 index 0000000..4a2ccb0 Binary files /dev/null and b/textures/ai/00000000d29b6917506724b7.png differ diff --git a/textures/ai/00000000d349e28fdaed9648.png b/textures/ai/00000000d349e28fdaed9648.png new file mode 100644 index 0000000..7d003bf Binary files /dev/null and b/textures/ai/00000000d349e28fdaed9648.png differ diff --git a/textures/ai/00000000d49bbe515b18e84b.png b/textures/ai/00000000d49bbe515b18e84b.png new file mode 100644 index 0000000..c87cbb5 Binary files /dev/null and b/textures/ai/00000000d49bbe515b18e84b.png differ diff --git a/textures/ai/00000000d4b2661aa8416d51.png b/textures/ai/00000000d4b2661aa8416d51.png new file mode 100644 index 0000000..c5e167e Binary files /dev/null and b/textures/ai/00000000d4b2661aa8416d51.png differ diff --git a/textures/ai/00000000d5c960b941a3a013.png b/textures/ai/00000000d5c960b941a3a013.png new file mode 100644 index 0000000..dae609c Binary files /dev/null and b/textures/ai/00000000d5c960b941a3a013.png differ diff --git a/textures/ai/00000000d5fa63f3c4773a46.png b/textures/ai/00000000d5fa63f3c4773a46.png new file mode 100644 index 0000000..7a22e4d Binary files /dev/null and b/textures/ai/00000000d5fa63f3c4773a46.png differ diff --git a/textures/ai/00000000d60747729dc8fba2.png b/textures/ai/00000000d60747729dc8fba2.png new file mode 100644 index 0000000..570a873 Binary files /dev/null and b/textures/ai/00000000d60747729dc8fba2.png differ diff --git a/textures/ai/00000000d60abda2498d5953.png b/textures/ai/00000000d60abda2498d5953.png new file mode 100644 index 0000000..7914b22 Binary files /dev/null and b/textures/ai/00000000d60abda2498d5953.png differ diff --git a/textures/ai/00000000d74b9b2b3c5ff548.png b/textures/ai/00000000d74b9b2b3c5ff548.png new file mode 100644 index 0000000..4ec0fe0 Binary files /dev/null and b/textures/ai/00000000d74b9b2b3c5ff548.png differ diff --git a/textures/ai/00000000d7f22063d1224871.png b/textures/ai/00000000d7f22063d1224871.png new file mode 100644 index 0000000..978534e Binary files /dev/null and b/textures/ai/00000000d7f22063d1224871.png differ diff --git a/textures/ai/00000000d80f435f0abe94c7.png b/textures/ai/00000000d80f435f0abe94c7.png new file mode 100644 index 0000000..4ac2e47 Binary files /dev/null and b/textures/ai/00000000d80f435f0abe94c7.png differ diff --git a/textures/ai/00000000d825d37a406402a6.png b/textures/ai/00000000d825d37a406402a6.png new file mode 100644 index 0000000..41fac7e Binary files /dev/null and b/textures/ai/00000000d825d37a406402a6.png differ diff --git a/textures/ai/00000000d976652c8db40b3b.png b/textures/ai/00000000d976652c8db40b3b.png new file mode 100644 index 0000000..fc3d533 Binary files /dev/null and b/textures/ai/00000000d976652c8db40b3b.png differ diff --git a/textures/ai/00000000d9a203522c2e6bf7.png b/textures/ai/00000000d9a203522c2e6bf7.png new file mode 100644 index 0000000..3daf119 Binary files /dev/null and b/textures/ai/00000000d9a203522c2e6bf7.png differ diff --git a/textures/ai/00000000da17e052abd3bdd8.png b/textures/ai/00000000da17e052abd3bdd8.png new file mode 100644 index 0000000..26779f1 Binary files /dev/null and b/textures/ai/00000000da17e052abd3bdd8.png differ diff --git a/textures/ai/00000000dad42d5309a564bc.png b/textures/ai/00000000dad42d5309a564bc.png new file mode 100644 index 0000000..5bc967d Binary files /dev/null and b/textures/ai/00000000dad42d5309a564bc.png differ diff --git a/textures/ai/00000000daf231d0513ab8bb.png b/textures/ai/00000000daf231d0513ab8bb.png new file mode 100644 index 0000000..572f0f2 Binary files /dev/null and b/textures/ai/00000000daf231d0513ab8bb.png differ diff --git a/textures/ai/00000000dc63396a2ca3ceac.png b/textures/ai/00000000dc63396a2ca3ceac.png new file mode 100644 index 0000000..58d3025 Binary files /dev/null and b/textures/ai/00000000dc63396a2ca3ceac.png differ diff --git a/textures/ai/00000000dc72bd717ad20573.png b/textures/ai/00000000dc72bd717ad20573.png new file mode 100644 index 0000000..85f8392 Binary files /dev/null and b/textures/ai/00000000dc72bd717ad20573.png differ diff --git a/textures/ai/00000000dc79a072415cd90d.png b/textures/ai/00000000dc79a072415cd90d.png new file mode 100644 index 0000000..f90ded7 Binary files /dev/null and b/textures/ai/00000000dc79a072415cd90d.png differ diff --git a/textures/ai/00000000dccc0c33827e53e9.png b/textures/ai/00000000dccc0c33827e53e9.png new file mode 100644 index 0000000..ff2902e Binary files /dev/null and b/textures/ai/00000000dccc0c33827e53e9.png differ diff --git a/textures/ai/00000000dcf8c92abac43890.png b/textures/ai/00000000dcf8c92abac43890.png new file mode 100644 index 0000000..781ce12 Binary files /dev/null and b/textures/ai/00000000dcf8c92abac43890.png differ diff --git a/textures/ai/00000000dd8422d9292e19d1.png b/textures/ai/00000000dd8422d9292e19d1.png new file mode 100644 index 0000000..fb18927 Binary files /dev/null and b/textures/ai/00000000dd8422d9292e19d1.png differ diff --git a/textures/ai/00000000dd8f5de075a4cf5b.png b/textures/ai/00000000dd8f5de075a4cf5b.png new file mode 100644 index 0000000..6a36e24 Binary files /dev/null and b/textures/ai/00000000dd8f5de075a4cf5b.png differ diff --git a/textures/ai/00000000de5d63d9b35b8a5a.png b/textures/ai/00000000de5d63d9b35b8a5a.png new file mode 100644 index 0000000..68a3e17 Binary files /dev/null and b/textures/ai/00000000de5d63d9b35b8a5a.png differ diff --git a/textures/ai/00000000dee8157cc44d81d7.png b/textures/ai/00000000dee8157cc44d81d7.png new file mode 100644 index 0000000..a892772 Binary files /dev/null and b/textures/ai/00000000dee8157cc44d81d7.png differ diff --git a/textures/ai/00000000df0d5cf286a680f2.png b/textures/ai/00000000df0d5cf286a680f2.png new file mode 100644 index 0000000..a30328d Binary files /dev/null and b/textures/ai/00000000df0d5cf286a680f2.png differ diff --git a/textures/ai/00000000dfb038e980488dde.png b/textures/ai/00000000dfb038e980488dde.png new file mode 100644 index 0000000..bbf01ac Binary files /dev/null and b/textures/ai/00000000dfb038e980488dde.png differ diff --git a/textures/ai/00000000dfd7191be2513223.png b/textures/ai/00000000dfd7191be2513223.png new file mode 100644 index 0000000..6d3d765 Binary files /dev/null and b/textures/ai/00000000dfd7191be2513223.png differ diff --git a/textures/ai/00000000e0e171a1c19de9e2.png b/textures/ai/00000000e0e171a1c19de9e2.png new file mode 100644 index 0000000..f8884ac Binary files /dev/null and b/textures/ai/00000000e0e171a1c19de9e2.png differ diff --git a/textures/ai/00000000e125786b09cf7487.png b/textures/ai/00000000e125786b09cf7487.png new file mode 100644 index 0000000..d3768f8 Binary files /dev/null and b/textures/ai/00000000e125786b09cf7487.png differ diff --git a/textures/ai/00000000e34c57a7666748df.png b/textures/ai/00000000e34c57a7666748df.png new file mode 100644 index 0000000..a46c786 Binary files /dev/null and b/textures/ai/00000000e34c57a7666748df.png differ diff --git a/textures/ai/00000000e53870f98b87929e.png b/textures/ai/00000000e53870f98b87929e.png new file mode 100644 index 0000000..d32a37a Binary files /dev/null and b/textures/ai/00000000e53870f98b87929e.png differ diff --git a/textures/ai/00000000e5e0aca1f1f2dd06.png b/textures/ai/00000000e5e0aca1f1f2dd06.png new file mode 100644 index 0000000..c01f6a6 Binary files /dev/null and b/textures/ai/00000000e5e0aca1f1f2dd06.png differ diff --git a/textures/ai/00000000e76047872af08cf8.png b/textures/ai/00000000e76047872af08cf8.png new file mode 100644 index 0000000..8ddd56b Binary files /dev/null and b/textures/ai/00000000e76047872af08cf8.png differ diff --git a/textures/ai/00000000e7758105626ab17e.png b/textures/ai/00000000e7758105626ab17e.png new file mode 100644 index 0000000..f9882be Binary files /dev/null and b/textures/ai/00000000e7758105626ab17e.png differ diff --git a/textures/ai/00000000e77dfdca1c26fec5.png b/textures/ai/00000000e77dfdca1c26fec5.png new file mode 100644 index 0000000..d4a7b57 Binary files /dev/null and b/textures/ai/00000000e77dfdca1c26fec5.png differ diff --git a/textures/ai/00000000e7b6945b426f8fe2.png b/textures/ai/00000000e7b6945b426f8fe2.png new file mode 100644 index 0000000..887ffbf Binary files /dev/null and b/textures/ai/00000000e7b6945b426f8fe2.png differ diff --git a/textures/ai/00000000e7ca54968b675299.png b/textures/ai/00000000e7ca54968b675299.png new file mode 100644 index 0000000..f1261a4 Binary files /dev/null and b/textures/ai/00000000e7ca54968b675299.png differ diff --git a/textures/ai/00000000e888c840e23406d1.png b/textures/ai/00000000e888c840e23406d1.png new file mode 100644 index 0000000..6971553 Binary files /dev/null and b/textures/ai/00000000e888c840e23406d1.png differ diff --git a/textures/ai/00000000e90f79ac9fa4ce88.png b/textures/ai/00000000e90f79ac9fa4ce88.png new file mode 100644 index 0000000..b24c273 Binary files /dev/null and b/textures/ai/00000000e90f79ac9fa4ce88.png differ diff --git a/textures/ai/00000000e94d0590d9175a61.png b/textures/ai/00000000e94d0590d9175a61.png new file mode 100644 index 0000000..b5cfafb Binary files /dev/null and b/textures/ai/00000000e94d0590d9175a61.png differ diff --git a/textures/ai/00000000e961e0d93f6e7a7a.png b/textures/ai/00000000e961e0d93f6e7a7a.png new file mode 100644 index 0000000..3e80d23 Binary files /dev/null and b/textures/ai/00000000e961e0d93f6e7a7a.png differ diff --git a/textures/ai/00000000e98bf3a8c1657ef7.png b/textures/ai/00000000e98bf3a8c1657ef7.png new file mode 100644 index 0000000..0d27446 Binary files /dev/null and b/textures/ai/00000000e98bf3a8c1657ef7.png differ diff --git a/textures/ai/00000000ea2b3f7d82da7959.png b/textures/ai/00000000ea2b3f7d82da7959.png new file mode 100644 index 0000000..1dee1c8 Binary files /dev/null and b/textures/ai/00000000ea2b3f7d82da7959.png differ diff --git a/textures/ai/00000000eafd60f82af63210.png b/textures/ai/00000000eafd60f82af63210.png new file mode 100644 index 0000000..0536b34 Binary files /dev/null and b/textures/ai/00000000eafd60f82af63210.png differ diff --git a/textures/ai/00000000ebfcdf44f3a52036.png b/textures/ai/00000000ebfcdf44f3a52036.png new file mode 100644 index 0000000..cc93213 Binary files /dev/null and b/textures/ai/00000000ebfcdf44f3a52036.png differ diff --git a/textures/ai/00000000ec0e2c3f60d5ebfb.png b/textures/ai/00000000ec0e2c3f60d5ebfb.png new file mode 100644 index 0000000..163f384 Binary files /dev/null and b/textures/ai/00000000ec0e2c3f60d5ebfb.png differ diff --git a/textures/ai/00000000ec16301043880880.png b/textures/ai/00000000ec16301043880880.png new file mode 100644 index 0000000..a9aa6e5 Binary files /dev/null and b/textures/ai/00000000ec16301043880880.png differ diff --git a/textures/ai/00000000ec3f40711f75f175.png b/textures/ai/00000000ec3f40711f75f175.png new file mode 100644 index 0000000..e7bbcda Binary files /dev/null and b/textures/ai/00000000ec3f40711f75f175.png differ diff --git a/textures/ai/00000000ecb570c616e85514.png b/textures/ai/00000000ecb570c616e85514.png new file mode 100644 index 0000000..be9197a Binary files /dev/null and b/textures/ai/00000000ecb570c616e85514.png differ diff --git a/textures/ai/00000000ece43c97e36fda49.png b/textures/ai/00000000ece43c97e36fda49.png new file mode 100644 index 0000000..dfa4b10 Binary files /dev/null and b/textures/ai/00000000ece43c97e36fda49.png differ diff --git a/textures/ai/00000000ed6eea3c2ea5003f.png b/textures/ai/00000000ed6eea3c2ea5003f.png new file mode 100644 index 0000000..6a36a94 Binary files /dev/null and b/textures/ai/00000000ed6eea3c2ea5003f.png differ diff --git a/textures/ai/00000000edc0c0bc7c9fa78f.png b/textures/ai/00000000edc0c0bc7c9fa78f.png new file mode 100644 index 0000000..99fb76a Binary files /dev/null and b/textures/ai/00000000edc0c0bc7c9fa78f.png differ diff --git a/textures/ai/00000000edd742f1b587b2a1.png b/textures/ai/00000000edd742f1b587b2a1.png new file mode 100644 index 0000000..4baaf3f Binary files /dev/null and b/textures/ai/00000000edd742f1b587b2a1.png differ diff --git a/textures/ai/00000000ee0b2d3d35314526.png b/textures/ai/00000000ee0b2d3d35314526.png new file mode 100644 index 0000000..eb696fe Binary files /dev/null and b/textures/ai/00000000ee0b2d3d35314526.png differ diff --git a/textures/ai/00000000ee674fbea0c37003.png b/textures/ai/00000000ee674fbea0c37003.png new file mode 100644 index 0000000..cba0ff6 Binary files /dev/null and b/textures/ai/00000000ee674fbea0c37003.png differ diff --git a/textures/ai/00000000ee759954a5539cce.png b/textures/ai/00000000ee759954a5539cce.png new file mode 100644 index 0000000..42bcac2 Binary files /dev/null and b/textures/ai/00000000ee759954a5539cce.png differ diff --git a/textures/ai/00000000ef0f97cb24f55c42.png b/textures/ai/00000000ef0f97cb24f55c42.png new file mode 100644 index 0000000..cf48382 Binary files /dev/null and b/textures/ai/00000000ef0f97cb24f55c42.png differ diff --git a/textures/ai/00000000ef45cf50b58cc2b1.png b/textures/ai/00000000ef45cf50b58cc2b1.png new file mode 100644 index 0000000..de1d6d7 Binary files /dev/null and b/textures/ai/00000000ef45cf50b58cc2b1.png differ diff --git a/textures/ai/00000000ef481e4a85eb40cc.png b/textures/ai/00000000ef481e4a85eb40cc.png new file mode 100644 index 0000000..ee603dd Binary files /dev/null and b/textures/ai/00000000ef481e4a85eb40cc.png differ diff --git a/textures/ai/00000000f04731046c9564ed.png b/textures/ai/00000000f04731046c9564ed.png new file mode 100644 index 0000000..66cde6f Binary files /dev/null and b/textures/ai/00000000f04731046c9564ed.png differ diff --git a/textures/ai/00000000f077557980805f29.png b/textures/ai/00000000f077557980805f29.png new file mode 100644 index 0000000..6272481 Binary files /dev/null and b/textures/ai/00000000f077557980805f29.png differ diff --git a/textures/ai/00000000f07a4a975a1506f9.png b/textures/ai/00000000f07a4a975a1506f9.png new file mode 100644 index 0000000..5f38cec Binary files /dev/null and b/textures/ai/00000000f07a4a975a1506f9.png differ diff --git a/textures/ai/00000000f10e68cf4c020528.png b/textures/ai/00000000f10e68cf4c020528.png new file mode 100644 index 0000000..93fe34d Binary files /dev/null and b/textures/ai/00000000f10e68cf4c020528.png differ diff --git a/textures/ai/00000000f20e4dfa8a9eab53.png b/textures/ai/00000000f20e4dfa8a9eab53.png new file mode 100644 index 0000000..f439dc7 Binary files /dev/null and b/textures/ai/00000000f20e4dfa8a9eab53.png differ diff --git a/textures/ai/00000000f25c21136d817a20.png b/textures/ai/00000000f25c21136d817a20.png new file mode 100644 index 0000000..a0fec1c Binary files /dev/null and b/textures/ai/00000000f25c21136d817a20.png differ diff --git a/textures/ai/00000000f2868ca16a05ba44.png b/textures/ai/00000000f2868ca16a05ba44.png new file mode 100644 index 0000000..91b5810 Binary files /dev/null and b/textures/ai/00000000f2868ca16a05ba44.png differ diff --git a/textures/ai/00000000f3541469ecc3e56f.png b/textures/ai/00000000f3541469ecc3e56f.png new file mode 100644 index 0000000..16681c3 Binary files /dev/null and b/textures/ai/00000000f3541469ecc3e56f.png differ diff --git a/textures/ai/00000000f367c1a13fc2a9d0.png b/textures/ai/00000000f367c1a13fc2a9d0.png new file mode 100644 index 0000000..d84911b Binary files /dev/null and b/textures/ai/00000000f367c1a13fc2a9d0.png differ diff --git a/textures/ai/00000000f3e9fcbb3799644c.png b/textures/ai/00000000f3e9fcbb3799644c.png new file mode 100644 index 0000000..9288e64 Binary files /dev/null and b/textures/ai/00000000f3e9fcbb3799644c.png differ diff --git a/textures/ai/00000000f491c15a2f6127b5.png b/textures/ai/00000000f491c15a2f6127b5.png new file mode 100644 index 0000000..ccc7a20 Binary files /dev/null and b/textures/ai/00000000f491c15a2f6127b5.png differ diff --git a/textures/ai/00000000f49800f4cc580503.png b/textures/ai/00000000f49800f4cc580503.png new file mode 100644 index 0000000..dea42c1 Binary files /dev/null and b/textures/ai/00000000f49800f4cc580503.png differ diff --git a/textures/ai/00000000f4c9cb12fed11a3e.png b/textures/ai/00000000f4c9cb12fed11a3e.png new file mode 100644 index 0000000..05ce29a Binary files /dev/null and b/textures/ai/00000000f4c9cb12fed11a3e.png differ diff --git a/textures/ai/00000000f5205cbc7fb4fef2.png b/textures/ai/00000000f5205cbc7fb4fef2.png new file mode 100644 index 0000000..e06393d Binary files /dev/null and b/textures/ai/00000000f5205cbc7fb4fef2.png differ diff --git a/textures/ai/00000000f6afdc6585dae1d8.png b/textures/ai/00000000f6afdc6585dae1d8.png new file mode 100644 index 0000000..9849d78 Binary files /dev/null and b/textures/ai/00000000f6afdc6585dae1d8.png differ diff --git a/textures/ai/00000000f758e0504c146f69.png b/textures/ai/00000000f758e0504c146f69.png new file mode 100644 index 0000000..5e03f7a Binary files /dev/null and b/textures/ai/00000000f758e0504c146f69.png differ diff --git a/textures/ai/00000000f80d9833d6b6ef1d.png b/textures/ai/00000000f80d9833d6b6ef1d.png new file mode 100644 index 0000000..973f9f8 Binary files /dev/null and b/textures/ai/00000000f80d9833d6b6ef1d.png differ diff --git a/textures/ai/00000000f825ea698773cf12.png b/textures/ai/00000000f825ea698773cf12.png new file mode 100644 index 0000000..178258a Binary files /dev/null and b/textures/ai/00000000f825ea698773cf12.png differ diff --git a/textures/ai/00000000f9cb9ccfa1aa65df.png b/textures/ai/00000000f9cb9ccfa1aa65df.png new file mode 100644 index 0000000..a818e29 Binary files /dev/null and b/textures/ai/00000000f9cb9ccfa1aa65df.png differ diff --git a/textures/ai/00000000f9da9e616aeeb2b2.png b/textures/ai/00000000f9da9e616aeeb2b2.png new file mode 100644 index 0000000..6f83913 Binary files /dev/null and b/textures/ai/00000000f9da9e616aeeb2b2.png differ diff --git a/textures/ai/00000000face9af9abc1d70b.png b/textures/ai/00000000face9af9abc1d70b.png new file mode 100644 index 0000000..f5d3082 Binary files /dev/null and b/textures/ai/00000000face9af9abc1d70b.png differ diff --git a/textures/ai/00000000fb068cfe2b4f8f6e.png b/textures/ai/00000000fb068cfe2b4f8f6e.png new file mode 100644 index 0000000..253ad15 Binary files /dev/null and b/textures/ai/00000000fb068cfe2b4f8f6e.png differ diff --git a/textures/ai/00000000fb2c64d0816c6132.png b/textures/ai/00000000fb2c64d0816c6132.png new file mode 100644 index 0000000..a2f62f3 Binary files /dev/null and b/textures/ai/00000000fb2c64d0816c6132.png differ diff --git a/textures/ai/00000000fb73cbd20214960f.png b/textures/ai/00000000fb73cbd20214960f.png new file mode 100644 index 0000000..e5edc6d Binary files /dev/null and b/textures/ai/00000000fb73cbd20214960f.png differ diff --git a/textures/ai/00000000fbe0306e44940f9b.png b/textures/ai/00000000fbe0306e44940f9b.png new file mode 100644 index 0000000..07ad204 Binary files /dev/null and b/textures/ai/00000000fbe0306e44940f9b.png differ diff --git a/textures/ai/00000000fc455b05158be6b1.png b/textures/ai/00000000fc455b05158be6b1.png new file mode 100644 index 0000000..d3dd12e Binary files /dev/null and b/textures/ai/00000000fc455b05158be6b1.png differ diff --git a/textures/ai/00000000fc4923bd76370f6d.png b/textures/ai/00000000fc4923bd76370f6d.png new file mode 100644 index 0000000..001908a Binary files /dev/null and b/textures/ai/00000000fc4923bd76370f6d.png differ diff --git a/textures/ai/00000000fd8f0b417630f611.png b/textures/ai/00000000fd8f0b417630f611.png new file mode 100644 index 0000000..b8d2e43 Binary files /dev/null and b/textures/ai/00000000fd8f0b417630f611.png differ diff --git a/textures/ai/00000000fed230af1d52b678.png b/textures/ai/00000000fed230af1d52b678.png new file mode 100644 index 0000000..977578e Binary files /dev/null and b/textures/ai/00000000fed230af1d52b678.png differ diff --git a/textures/bg/wind_OL_2.png b/textures/bg/wind_OL_2.png new file mode 100644 index 0000000..b111071 Binary files /dev/null and b/textures/bg/wind_OL_2.png differ diff --git a/textures/chara/mamont.png b/textures/chara/mamont.png new file mode 100644 index 0000000..b9ccdaa Binary files /dev/null and b/textures/chara/mamont.png differ diff --git a/textures/chara/trapped_patapon.png b/textures/chara/trapped_patapon.png new file mode 100644 index 0000000..f4262e8 Binary files /dev/null and b/textures/chara/trapped_patapon.png differ diff --git a/textures/eq/bow/electric_bow.png b/textures/eq/bow/electric_bow.png new file mode 100644 index 0000000..8bd6165 Binary files /dev/null and b/textures/eq/bow/electric_bow.png differ diff --git a/textures/eq/bow/fire_bow.png b/textures/eq/bow/fire_bow.png new file mode 100644 index 0000000..68dfaac Binary files /dev/null and b/textures/eq/bow/fire_bow.png differ diff --git a/textures/eq/helm/crown.png b/textures/eq/helm/crown.png new file mode 100644 index 0000000..c4e64c9 Binary files /dev/null and b/textures/eq/helm/crown.png differ diff --git a/textures/eq/rarepon/fumyaaru.png b/textures/eq/rarepon/fumyaaru.png new file mode 100644 index 0000000..eccc321 Binary files /dev/null and b/textures/eq/rarepon/fumyaaru.png differ diff --git a/textures/eq/rarepon/kanokko_deka.png b/textures/eq/rarepon/kanokko_deka.png new file mode 100644 index 0000000..98bc2f9 Binary files /dev/null and b/textures/eq/rarepon/kanokko_deka.png differ diff --git a/textures/eq/rarepon/mashu_deka.png b/textures/eq/rarepon/mashu_deka.png new file mode 100644 index 0000000..c35dfd5 Binary files /dev/null and b/textures/eq/rarepon/mashu_deka.png differ diff --git a/textures/eq/rarepon/menyokki_deka.png b/textures/eq/rarepon/menyokki_deka.png new file mode 100644 index 0000000..48220c4 Binary files /dev/null and b/textures/eq/rarepon/menyokki_deka.png differ diff --git a/textures/eq/rarepon/mofo.png b/textures/eq/rarepon/mofo.png new file mode 100644 index 0000000..64118dc Binary files /dev/null and b/textures/eq/rarepon/mofo.png differ diff --git a/textures/eq/rarepon/mogyu.png b/textures/eq/rarepon/mogyu.png new file mode 100644 index 0000000..b265512 Binary files /dev/null and b/textures/eq/rarepon/mogyu.png differ diff --git a/textures/eq/rarepon/puuhyonku.png b/textures/eq/rarepon/puuhyonku.png new file mode 100644 index 0000000..e2c220a Binary files /dev/null and b/textures/eq/rarepon/puuhyonku.png differ diff --git a/textures/eq/shield/frozen_shield.png b/textures/eq/shield/frozen_shield.png new file mode 100644 index 0000000..d9af372 Binary files /dev/null and b/textures/eq/shield/frozen_shield.png differ diff --git a/textures/eq/shield/magic_shield.png b/textures/eq/shield/magic_shield.png new file mode 100644 index 0000000..213d534 Binary files /dev/null and b/textures/eq/shield/magic_shield.png differ diff --git a/textures/gimmick/cata_rock.png b/textures/gimmick/cata_rock.png new file mode 100644 index 0000000..6e769dd Binary files /dev/null and b/textures/gimmick/cata_rock.png differ diff --git a/textures/gimmick/sokshi_cannonball.png b/textures/gimmick/sokshi_cannonball.png new file mode 100644 index 0000000..6821af5 Binary files /dev/null and b/textures/gimmick/sokshi_cannonball.png differ diff --git a/textures/particles/particles1.png b/textures/particles/particles1.png new file mode 100644 index 0000000..fdb4455 Binary files /dev/null and b/textures/particles/particles1.png differ diff --git a/textures/ui/fever.png b/textures/ui/fever.png new file mode 100644 index 0000000..bc78639 Binary files /dev/null and b/textures/ui/fever.png differ diff --git a/textures/ui/items1.png b/textures/ui/items1.png new file mode 100644 index 0000000..7c250fe Binary files /dev/null and b/textures/ui/items1.png differ diff --git a/textures/ui/items2.png b/textures/ui/items2.png new file mode 100644 index 0000000..5769e1a Binary files /dev/null and b/textures/ui/items2.png differ diff --git a/textures/ui/items3.png b/textures/ui/items3.png new file mode 100644 index 0000000..7ae46fb Binary files /dev/null and b/textures/ui/items3.png differ diff --git a/textures/ui/miracle/chaka_cloud.png b/textures/ui/miracle/chaka_cloud.png new file mode 100644 index 0000000..3090d92 Binary files /dev/null and b/textures/ui/miracle/chaka_cloud.png differ diff --git a/textures/ui/miracle/miracle_letters.png b/textures/ui/miracle/miracle_letters.png new file mode 100644 index 0000000..233b920 Binary files /dev/null and b/textures/ui/miracle/miracle_letters.png differ diff --git a/textures/ui/miracle/pata_cloud.png b/textures/ui/miracle/pata_cloud.png new file mode 100644 index 0000000..7fd9b48 Binary files /dev/null and b/textures/ui/miracle/pata_cloud.png differ diff --git a/textures/ui/miracle/pon_cloud.png b/textures/ui/miracle/pon_cloud.png new file mode 100644 index 0000000..085a846 Binary files /dev/null and b/textures/ui/miracle/pon_cloud.png differ diff --git a/textures/ui/snow.png b/textures/ui/snow.png new file mode 100644 index 0000000..443071b Binary files /dev/null and b/textures/ui/snow.png differ diff --git a/textures/ui/snowflake.png b/textures/ui/snowflake.png new file mode 100644 index 0000000..fcad2f0 Binary files /dev/null and b/textures/ui/snowflake.png differ diff --git a/textures/ui/ui1.png b/textures/ui/ui1.png new file mode 100644 index 0000000..4213bcf Binary files /dev/null and b/textures/ui/ui1.png differ